@import "https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css";@import "https://cdn.jsdelivr.net/gh/sunn-us/SUIT/fonts/static/woff2/SUIT.css";*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;padding:0}body{color:#111827;background:#f4f6fb;font-family:Pretendard,sans-serif}button,input,select,textarea{font:inherit}textarea{resize:none}.app-shell{width:100%;height:100vh;display:flex;overflow:hidden}.sidebar{color:#fff;background:linear-gradient(#1f2f58 0%,#1c2745 100%);border-right:1px solid #ffffff14;flex-direction:column;justify-content:space-between;width:180px;min-width:180px;display:flex}.company-logo-box{background:#fff;border:1px solid #d8e0ee;border-radius:8px;justify-content:center;align-items:center;width:100%;height:66px;margin-bottom:10px;padding:8px;display:flex}.company-logo-text{color:#163867;letter-spacing:0;text-shadow:0 1px #ffffffa6;font-family:SUIT,sans-serif;font-size:19px;font-weight:900}.company-logo-img{object-fit:contain;width:100%;max-width:142px;max-height:54px;display:block}.menu{flex-direction:column;gap:8px;display:flex}.menu-btn{color:#fff;cursor:pointer;background:0 0;border:1px solid #ffffff24;border-radius:8px;width:100%;height:38px;font-size:12px;font-weight:600;transition:background .15s,border-color .15s,transform .15s}.menu-btn:hover{background:#ffffff1f;border-color:#ffffff47}.menu-label-strong{text-shadow:0 1px 2px #00000038;font-weight:900}.menu-btn.active{background:#4b8df8;border-color:#dbe9ff;box-shadow:inset 0 0 0 2px #ffffff26}.logout-btn{color:#fff;cursor:pointer;background:#4b8df8;border:none;border-radius:8px;width:100%;height:36px;font-size:12px;font-weight:600}.viewer-badge{color:#eaf2ff;text-align:center;background:#ffffff14;border:1px solid #ffffff2e;border-radius:8px;min-height:28px;margin-bottom:8px;padding:7px 8px;font-size:12px;font-weight:800}.main-area{flex:1;padding:6px 10px 12px;overflow-y:auto}.top-system-bar,.page-title-bar{width:100%;margin-bottom:8px}.top-system-title,.unified-title-bar h1{letter-spacing:0;border-radius:12px;justify-content:center;align-items:center;width:100%;min-height:54px;margin:0;font-family:SUIT,sans-serif;font-size:21px;font-weight:900;display:flex}.top-system-title{color:#0f2e57;background:#f7fbff;border:1px solid #7ca5df;box-shadow:inset 0 -2px #4881cf1f}.unified-title-bar h1{color:#172f52;background:#eef5ff;border:1px solid #9ab7e8}.stat-card{background:#fff;border-radius:14px;width:100%;min-height:500px;padding:16px;box-shadow:0 8px 20px #0f172a0d}.dashboard-year-list{flex-direction:column;gap:12px;display:flex}.dashboard-year-accordion{background:#fcfdff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden}.dashboard-year-summary{cursor:pointer;color:#223b63;background:#f1f6ff;border-bottom:1px solid #d9e5f8;padding:14px 16px;font-family:SUIT,sans-serif;font-size:24px;font-weight:800;list-style:none}.dashboard-year-summary::-webkit-details-marker{display:none}.dashboard-year-cards{grid-template-columns:repeat(4,minmax(180px,1fr));gap:10px;padding:12px;display:grid}.dashboard-year-card{background:#fff;border:1px solid #e3e9f2;border-radius:12px;min-height:144px;padding:12px}.graph-card-title{text-align:center;margin-bottom:8px;font-family:SUIT,sans-serif;font-size:14px;font-weight:800}.contracts-header-actions{flex-wrap:wrap;gap:8px;margin-bottom:10px;display:flex}.primary-btn{color:#fff;cursor:pointer;background:#3b82f6;border:none;border-radius:8px;padding:9px 14px;font-size:13px;font-weight:600;transition:background .15s,box-shadow .15s,transform .15s}.secondary-btn{color:#111827;cursor:pointer;background:#e5e7eb;border:none;border-radius:8px;padding:9px 14px;font-size:13px;font-weight:600;transition:background .15s,box-shadow .15s,transform .15s}.primary-btn:hover,.secondary-btn:hover{transform:translateY(-1px);box-shadow:0 6px 14px #0f172a24}.primary-btn:hover{background:#2563eb}.secondary-btn:hover{background:#dbe3ee}.table-toolbar{align-items:stretch;gap:10px;margin-bottom:10px;display:grid}.table-search-input{background:#fff;border:1px solid #d1d5db;border-radius:9px;width:100%;height:42px;min-height:42px;padding:9px 12px;font-size:13px}.table-summary-box{text-align:right;background:#f8fafc;border:1px solid #d8e0ea;border-radius:9px;flex-direction:column;justify-content:center;height:42px;min-height:42px;padding:7px 12px;display:flex}.table-summary-label{color:#4b5563;font-size:11px}.table-summary-value{color:#1f2937;font-size:15px;font-weight:800}.contract-filter-row{gap:8px;margin-bottom:10px;display:grid}.contract-filter-row.five-only{grid-template-columns:repeat(5,minmax(120px,1fr))}.contract-filter-select{background:#fff;border:1px solid #d1d5db;border-radius:8px;min-height:36px;padding:6px 10px;font-size:12px}.contract-table-panel{width:100%;overflow:hidden}.table-wrap{background:#fff;border:1px solid #d9dee8;border-radius:10px;overflow:auto}.contracts-only-scroll{width:100%;max-width:100%;height:calc(100vh - 310px)}.contract-table{border-collapse:separate;border-spacing:0;table-layout:fixed;background:#fff;width:100%;min-width:1860px}.excel-table thead th{z-index:6;background:linear-gradient(#eef3f9 0%,#e5ebf3 100%);position:sticky;top:0;box-shadow:inset 0 -1px #d8e0ea}.excel-table th,.excel-table td{color:#111827;vertical-align:middle;border-bottom:1px solid #e5e7eb;border-right:1px solid #e5e7eb;height:38px;padding:0}.excel-table th{padding:8px 6px;font-size:12px;font-weight:800}.excel-table td{font-size:12px}.th-align-center,.td-align-center{text-align:center}.th-align-left,.td-align-left{text-align:left}.th-align-right,.td-align-right{text-align:right}.col-action{width:86px}.col-dday{width:74px}.col-year{width:86px}.col-segment{width:80px}.col-ref{width:82px}.col-contractno,.col-client{width:150px}.col-dept{width:130px}.col-method{width:108px}.col-type{width:110px}.col-date{width:112px}.col-project{width:360px}.col-amount{width:126px}.col-owner,.col-pm{width:112px}.col-note{width:190px}.cell-display{white-space:pre-wrap;word-break:keep-all;overflow-wrap:anywhere;align-items:center;min-height:37px;padding:8px 7px;display:flex;overflow:hidden}.td-align-center .cell-display{justify-content:center}.td-align-right .cell-display{justify-content:flex-end}.multiline-cell .cell-display,.note-cell .cell-display{align-items:flex-start;line-height:1.35}.dday-cell{color:#1d4ed8;font-weight:800}.contract-year-row td{background:#f1f6ff;border-bottom:1px solid #ccd9ee;height:42px}.contract-year-toggle{color:#17345f;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:10px;width:100%;height:42px;padding:0 14px;font-family:SUIT,sans-serif;font-size:15px;font-weight:900;display:flex}.contract-year-sign{color:#1d4ed8;background:#fff;border:1px solid #9ab7e8;border-radius:6px;justify-content:center;align-items:center;width:24px;height:24px;font-size:18px;line-height:1;display:inline-flex}.contract-year-count{color:#64748b;font-size:12px;font-weight:800}.inline-row-actions{flex-direction:column;justify-content:center;align-items:center;gap:4px;height:100%;padding:4px;display:flex}.row-delete-btn,.mini-save-btn,.mini-cancel-btn,.delete-btn{cursor:pointer;border:none;border-radius:8px;width:52px;min-width:52px;min-height:26px;padding:5px 8px;font-size:11px;font-weight:600}.row-action-group{justify-content:center;align-items:center;gap:6px;height:100%;display:inline-flex}.row-icon-btn{color:#334155;cursor:pointer;background:#fff;border:1px solid #d5deea;border-radius:8px;justify-content:center;align-items:center;width:30px;height:30px;font-size:17px;font-weight:900;line-height:1;transition:background .15s,border-color .15s,color .15s,transform .15s,box-shadow .15s;display:inline-flex}.row-icon-btn:hover{transform:translateY(-1px);box-shadow:0 6px 12px #0f172a24}.viewer-action-mark{color:#64748b;background:#f1f5f9;border-radius:8px;justify-content:center;align-items:center;min-width:42px;height:24px;font-size:11px;font-weight:800;display:inline-flex}.editable-cell{cursor:text}.row-delete-btn:hover,.delete-btn:hover{color:#7f1d1d;background:#fecaca;border-color:#f87171}.mini-cancel-btn:hover{background:#d1d5db}.row-delete-btn,.delete-btn{color:#991b1b;background:#fee2e2;border:1px solid #fecaca}.mini-save-btn{color:#fff;background:#3b82f6}.mini-cancel-btn{color:#111827;background:#e5e7eb}.cell-inline-editor{width:100%;min-height:36px;box-shadow:none;background:#fff;border:1px solid #d1d5db;border-radius:8px;outline:none;padding:7px 10px;font-size:12px;transition:border-color .15s,box-shadow .15s}.inline-row-editor{width:calc(100% - 8px);height:36px;margin:0 4px}.cell-inline-editor:focus{border-color:#9ab7e8;box-shadow:0 0 0 2px #9ab7e82e}.cell-inline-editor.align-right{text-align:right}.empty-cell,.empty-text{text-align:center;color:#64748b;padding:24px;font-size:13px}.year-card-metric{background:#f8fbff;border:1px solid #e5edf7;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;min-height:34px;padding:7px 10px;font-size:12px;display:flex}.year-card-body{align-items:stretch;gap:8px;display:grid}.year-card-label{color:#64748b;font-weight:700}.calendar-month-bar{justify-content:center;align-items:center;gap:12px;margin-bottom:12px;display:flex}.month-nav-btn{color:#1d4ed8;cursor:pointer;background:#e5efff;border:1px solid #bfdbfe;border-radius:8px;width:38px;height:34px;font-weight:700}.calendar-month-title{text-align:center;color:#1f2937;min-width:170px;font-family:SUIT,sans-serif;font-size:20px;font-weight:800}.calendar-top-bar{grid-template-columns:160px minmax(260px,1fr) 160px 100px;gap:8px;margin-bottom:12px;display:grid}.viewer-only-note{color:#475569;background:#f8fafc;border:1px solid #d8e0ea;border-radius:8px;min-height:38px;margin-bottom:12px;padding:10px 12px;font-size:13px;font-weight:700}.calendar-input,.calendar-search-input{color:#111827;background:#fff;border:1px solid #d1d5db;border-radius:8px;min-height:38px;padding:8px 10px;font-size:13px}.calendar-grid{background:#fff;border-top:1px solid #dbe3ef;border-left:1px solid #dbe3ef;grid-template-columns:repeat(7,minmax(120px,1fr));display:grid}.day-box{background:#fff;border-bottom:1px solid #dbe3ef;border-right:1px solid #dbe3ef;min-height:116px;padding:8px}.day-number{color:#334155;margin-bottom:6px;font-size:12px;font-weight:800}.day-events{flex-direction:column;gap:4px;display:flex}.event-pill{text-align:left;text-overflow:ellipsis;white-space:nowrap;border:1px solid #0000;border-radius:8px;width:100%;min-height:24px;padding:4px 6px;font-size:11px;line-height:1.3;overflow:hidden}.event-pill-button{cursor:pointer}.selected-events-wrap{margin-top:14px}.month-list-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.month-list-header h3{color:#1f2937;margin:0;font-family:SUIT,sans-serif;font-size:17px}.month-list-tools{gap:8px;display:flex}.calendar-filter-select{background:#fff;border:1px solid #d1d5db;border-radius:8px;min-height:36px;padding:6px 10px;font-size:12px}.calendar-search-input{width:260px;min-height:36px;padding:7px 10px;font-size:12px}.selected-event-card{background:#fff;border:1px solid #e1e8f2;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;min-height:54px;margin-bottom:8px;padding:10px 12px;display:flex}.selected-event-card.clickable{cursor:pointer}.selected-event-click{flex:1;min-width:0}.selected-event-title{color:#1f2937;overflow-wrap:anywhere;font-size:13px;font-weight:800;line-height:1.45}.selected-event-memo{color:#64748b;margin-top:4px;font-size:12px;line-height:1.35}.modal-backdrop{z-index:50;background:#0f172a6b;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.detail-modal{background:#fff;border-radius:8px;width:min(860px,100%);max-height:calc(100vh - 48px);overflow-y:auto;box-shadow:0 20px 50px #0f172a40}.detail-modal-header{z-index:2;background:#f8fbff;border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex;position:sticky;top:0}.detail-modal-header h3{color:#1f2937;margin:0;font-family:SUIT,sans-serif;font-size:18px}.modal-close-btn{color:#111827;cursor:pointer;background:#e5e7eb;border:none;border-radius:8px;width:32px;height:32px;font-weight:700}.detail-modal-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:16px;display:grid}.detail-item{background:#fff;border:1px solid #e5e7eb;border-radius:8px;grid-template-columns:112px minmax(0,1fr);min-height:42px;display:grid;overflow:hidden}.detail-item-full{grid-column:1/-1}.detail-label,.detail-value{padding:10px 12px;font-size:13px;line-height:1.45}.detail-label{color:#334155;background:#f1f5f9;align-items:center;font-weight:800;display:flex}.detail-value{color:#111827;overflow-wrap:anywhere}.prewrap{white-space:pre-wrap}@media (width<=1100px){.dashboard-year-cards{grid-template-columns:repeat(2,minmax(180px,1fr))}.calendar-grid{grid-template-columns:repeat(7,minmax(96px,1fr))}.calendar-top-bar{grid-template-columns:150px minmax(220px,1fr) 140px 100px}}:root{--page-bg:#f3f6fa;--panel:#fff;--panel-soft:#f8fafc;--line:#dce3ed;--line-strong:#c7d2e0;--text:#111827;--muted:#64748b;--ink:#202938;--sidebar:#18202c;--sidebar-2:#222c3b;--accent:#2f6bff;--accent-strong:#1f4fd1;--accent-soft:#eaf1ff;--blue:#2563eb;--red:#dc2626;--shadow-sm:0 2px 8px #0f172a0f;--shadow-md:0 10px 28px #0f172a1a;--shadow-lg:0 24px 60px #0f172a33}body{background:linear-gradient(180deg, #ffffffc7 0%, #f3f6faeb 36%), var(--page-bg);color:var(--text);letter-spacing:0}button,input,select,textarea{letter-spacing:0}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #2f6bff2e}.app-shell{background:radial-gradient(circle at 0 0, #2f6bff17, transparent 34%), radial-gradient(circle at 100% 10%, #2563eb14, transparent 30%), var(--page-bg)}.sidebar{background:linear-gradient(180deg, var(--sidebar) 0%, var(--sidebar-2) 100%);border-right:1px solid #ffffff14;width:212px;min-width:212px;box-shadow:10px 0 26px #0f172a1f}.sidebar-top{padding:16px 14px}.company-logo-box{height:76px;box-shadow:var(--shadow-sm);background:linear-gradient(135deg,#fffffff5,#eaf1fff2),#fff;border:1px solid #ffffff29;border-radius:8px;margin-bottom:18px}.company-logo-text{color:#1f4fd1;font-size:21px;font-weight:900}.company-logo-img{filter:none;max-width:152px;max-height:58px}.menu{gap:8px}.menu-btn{color:#dbe5f0;text-align:left;background:#ffffff0a;border:1px solid #0000;border-radius:8px;justify-content:flex-start;height:44px;padding:0 14px;font-size:13px;font-weight:800}.menu-btn:hover{background:#ffffff1a;border-color:#ffffff24;transform:translate(2px)}.menu-btn.active{color:#10201f;background:#fff;border-color:#fff;box-shadow:0 10px 20px #0000001f}.menu-label-strong{text-shadow:none}.sidebar-bottom{padding:14px}.viewer-badge{color:#dff7f3;background:#ffffff12;border-color:#ffffff1f;min-height:34px;box-shadow:inset 0 1px #ffffff0f}.logout-btn{background:var(--accent);color:#fff;height:40px;font-weight:800;transition:background .15s,transform .15s,box-shadow .15s}.logout-btn:hover{background:var(--accent-strong);transform:translateY(-1px);box-shadow:0 10px 20px #2f6bff38}.main-area{padding:18px 20px 22px}.top-system-bar,.page-title-bar{margin-bottom:12px}.top-system-title,.unified-title-bar h1{border-radius:8px;justify-content:flex-start;min-height:58px;padding:0 22px;font-size:22px}.top-system-title{color:var(--ink);box-shadow:var(--shadow-sm);background:linear-gradient(90deg,#fffffff0,#e6f5f2e0),#fff;border:1px solid #c7d2e0e6}.unified-title-bar h1{color:#334155;min-height:50px;box-shadow:var(--shadow-sm);background:#ffffffc2;border:1px solid #dce3edf2;font-size:18px}.stat-card{min-height:calc(100vh - 174px);box-shadow:var(--shadow-md);background:#ffffffeb;border:1px solid #dce3edeb;border-radius:8px;padding:18px}.dashboard-year-list{gap:14px}.dashboard-year-accordion{border-color:var(--line);background:var(--panel);box-shadow:var(--shadow-sm);border-radius:8px}.dashboard-year-summary{background:linear-gradient(90deg, var(--panel-soft), #fff), #fff;border-bottom-color:var(--line);min-height:58px;color:var(--ink);align-items:center;gap:10px;padding:14px 18px;font-size:22px;display:flex;position:relative}.dashboard-year-summary:before{content:"+";background:var(--accent-soft);width:26px;height:26px;color:var(--accent);border-radius:8px;justify-content:center;align-items:center;font-size:18px;line-height:1;display:inline-flex}.dashboard-year-accordion[open] .dashboard-year-summary:before{content:"-"}.dashboard-year-cards{background:#fbfcfe;grid-template-columns:repeat(4,minmax(180px,1fr));gap:14px;padding:16px}.dashboard-year-card{border-color:var(--line);background:#fff;border-radius:8px;min-height:154px;padding:14px;transition:transform .15s,box-shadow .15s,border-color .15s;box-shadow:0 12px 24px #0f172a0f}.dashboard-year-card:hover{border-color:#2f6bff57;transform:translateY(-2px);box-shadow:0 16px 30px #0f172a1a}.graph-card-title{color:var(--ink);margin-bottom:12px;font-size:15px}.year-card-metric{background:#f8fafc;border-color:#e5ebf3;border-radius:8px;min-height:42px}.year-card-label{color:var(--muted)}.year-card-metric strong{color:var(--ink);font-size:14px}.contracts-header-actions{gap:10px;margin-bottom:14px}.primary-btn,.secondary-btn{border-radius:8px;min-height:40px;padding:9px 15px;font-size:13px;font-weight:800}.primary-btn{background:var(--accent)}.primary-btn:hover{background:var(--accent-strong);box-shadow:0 10px 20px #2f6bff2e}.secondary-btn{border:1px solid var(--line);color:var(--ink);background:#fff}.secondary-btn:hover{border-color:var(--line-strong);background:#f8fafc}.table-toolbar{gap:12px;margin-bottom:12px}.contract-toolbar-simple{grid-template-columns:minmax(320px,1fr) 280px}.table-search-input,.contract-filter-select,.calendar-input,.calendar-search-input,.calendar-filter-select{border-color:var(--line);color:var(--ink);background:#fff;border-radius:8px;transition:border-color .15s,box-shadow .15s,background .15s;box-shadow:inset 0 1px #fffc}.table-search-input:focus,.contract-filter-select:focus,.calendar-input:focus,.calendar-search-input:focus,.calendar-filter-select:focus{border-color:#2f6bff80;outline:none;box-shadow:0 0 0 3px #2f6bff1f}.table-search-input{height:44px;padding:10px 14px}.table-summary-box{background:var(--accent-soft);border-color:#2f6bff38;border-radius:8px;height:44px}.table-summary-label{color:#43605d;font-weight:800}.table-summary-value{color:var(--accent-strong)}.contract-filter-row{gap:10px;margin-bottom:14px}.contract-filter-select{min-height:38px;padding:7px 12px;font-weight:700}.contract-table-panel{border-radius:8px}.table-wrap{border-color:var(--line-strong);box-shadow:var(--shadow-sm);background:#fff;border-radius:8px}.contracts-only-scroll{height:calc(100vh - 340px)}.contract-table{min-width:1880px}.excel-table thead th{box-shadow:inset 0 -1px 0 var(--line-strong);color:#334155;letter-spacing:0;background:linear-gradient(#f8fafc 0%,#eef3f8 100%);font-size:12px}.excel-table th,.excel-table td{border-bottom-color:#e6ebf2;border-right-color:#e6ebf2;height:40px}.excel-table td{color:#1f2937}.row-even{background:#fff}.row-odd{background:#fbfdff}.excel-table tbody tr:not(.contract-year-row):hover{background:#f4faf9}.inline-add-row{background:#eefbf7}.cell-display{min-height:39px;padding:8px}.dday-cell{color:var(--blue)}.contract-year-row td{z-index:8;background:#eaf1ff;border-bottom-color:#2f6bff2e;height:46px;position:sticky;top:40px;box-shadow:0 2px #c7d2e0b3}.contract-year-toggle{color:#183b84;height:46px;padding:0 16px;font-size:15px}.contract-year-toggle:hover{background:#dbe7ff}.contract-year-sign{color:var(--accent);background:#fff;border-color:#2f6bff4d}.contract-year-count{color:#4f6ea8}.row-icon-btn{border-color:var(--line);color:#475569;background:#fff;box-shadow:0 1px 2px #0f172a0a}.row-icon-btn.edit:hover{color:var(--accent-strong);background:#eaf1ff;border-color:#2f6bff66}.row-icon-btn.delete:hover{color:var(--red);background:#fff1f2;border-color:#fecdd3}.viewer-action-mark{color:#64748b;background:#eef2f7}.cell-inline-editor{border-color:#2f6bff59;border-radius:8px;box-shadow:0 0 0 3px #2f6bff1a}.mini-save-btn{background:var(--accent)}.mini-save-btn:hover{background:var(--accent-strong)}.mini-cancel-btn{background:#eef2f7}.empty-cell,.empty-text{color:var(--muted);font-weight:700}.calendar-month-bar{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:linear-gradient(90deg,#fff,#f8fafc);border-radius:8px;justify-content:space-between;gap:14px;margin-bottom:16px;padding:12px}.month-nav-btn{background:var(--accent-soft);width:42px;height:38px;color:var(--accent-strong);border-color:#2f6bff47;font-weight:900;transition:background .15s,transform .15s,box-shadow .15s}.month-nav-btn:hover{background:#dbe7ff;transform:translateY(-1px);box-shadow:0 8px 18px #2f6bff24}.calendar-month-title{min-width:0;color:var(--ink);flex:1;font-size:22px}.calendar-top-bar{grid-template-columns:170px minmax(280px,1fr) 170px 110px;gap:10px;margin-bottom:14px}.viewer-only-note{color:#284783;background:#f4f7ff;border-color:#2f6bff33;min-height:42px;margin-bottom:14px;font-weight:800}.calendar-grid{border:1px solid var(--line-strong);box-shadow:var(--shadow-sm);background:#fff;border-radius:8px;overflow:hidden}.day-box{background:#fff;border-bottom-color:#e5ebf3;border-right-color:#e5ebf3;min-height:126px;padding:10px;transition:background .15s}.day-box:hover{background:#f8fbfc}.day-box.empty{background:#f3f6fa}.day-number{color:#334155;background:#f1f5f9;border-radius:8px;justify-content:center;align-items:center;width:28px;height:24px;margin-bottom:8px;display:inline-flex}.day-events{gap:5px}.event-pill{border-radius:8px;min-height:26px;padding:5px 7px;font-weight:800;transition:transform .15s,box-shadow .15s,border-color .15s}.event-pill-button:hover{transform:translateY(-1px);box-shadow:0 6px 14px #0f172a1a}.selected-events-wrap{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;border-radius:8px;margin-top:16px;padding:14px}.calendar-filter-select{min-height:38px;font-weight:800}.calendar-search-input{width:300px;min-height:38px}.selected-event-card{border-color:var(--line);background:#fff;min-height:62px;padding:12px 14px;transition:transform .15s,box-shadow .15s,border-color .15s;box-shadow:0 1px 3px #0f172a0a}.selected-event-card.clickable:hover{border-color:#2f6bff52;transform:translateY(-1px);box-shadow:0 10px 22px #0f172a14}.selected-event-title{color:var(--ink);font-size:13px}.selected-event-memo{color:var(--muted)}.modal-backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f172a80}.detail-modal{width:min(920px,100%);box-shadow:var(--shadow-lg);border:1px solid #ffffff94;border-radius:8px}.detail-modal-header{border-bottom-color:var(--line);background:linear-gradient(90deg,#fff,#f4f7ff);padding:16px 18px}.detail-modal-header h3{color:var(--ink);font-size:19px;font-weight:900}.modal-close-btn{background:#eef2f7;transition:background .15s,transform .15s}.modal-close-btn:hover{background:#e2e8f0;transform:rotate(4deg)}.detail-modal-grid{background:#fbfcfe;gap:10px;padding:18px}.detail-item{border-color:var(--line);background:#fff;border-radius:8px;grid-template-columns:124px minmax(0,1fr);min-height:46px;box-shadow:0 1px 2px #0f172a08}.detail-label{color:#334155;background:#eef3f8}.detail-value{color:var(--text);background:#fff}@media (width<=1100px){.sidebar{width:188px;min-width:188px}.main-area{padding:14px}.contract-toolbar-simple{grid-template-columns:1fr}.contract-filter-row.five-only{grid-template-columns:repeat(2,minmax(150px,1fr))}.calendar-top-bar{grid-template-columns:repeat(2,minmax(160px,1fr))}.calendar-search-input{width:220px}}.dashboard-year-summary{cursor:default;justify-content:space-between}.dashboard-year-summary:before,.dashboard-year-accordion[open] .dashboard-year-summary:before{content:none}.dashboard-year-title{align-items:baseline;gap:12px;min-width:0;display:flex}.dashboard-year-total{color:var(--muted);font-family:Pretendard,sans-serif;font-size:13px;font-weight:800}.panel-toggle-btn{width:30px;min-width:30px;height:30px;color:var(--accent-strong);cursor:pointer;background:#fff;border:1px solid #2f6bff47;border-radius:8px;justify-content:center;align-items:center;font-size:20px;font-weight:900;line-height:1;transition:background .15s,border-color .15s,transform .15s,box-shadow .15s;display:inline-flex}.panel-toggle-btn:hover{background:var(--accent-soft);border-color:#2f6bff73;transform:translateY(-1px);box-shadow:0 8px 16px #2f6bff1f}.dashboard-year-card{flex-direction:column;display:flex}.year-card-body{grid-template-columns:92px minmax(0,1fr);align-items:center;gap:14px;display:grid}.dashboard-donut{background:radial-gradient(circle, #fff 0 52%, transparent 53%), conic-gradient(var(--accent) 0 var(--ratio), #e7edf4 var(--ratio) 100%);border:1px solid #e4ebf3;border-radius:50%;justify-content:center;align-items:center;width:88px;height:88px;display:inline-flex;box-shadow:inset 0 0 0 7px #fff,0 8px 18px #0f172a14}.dashboard-donut span{z-index:1;color:var(--accent-strong);font-family:SUIT,sans-serif;font-size:16px;font-weight:900;position:relative}.year-card-metrics{gap:8px;min-width:0;display:grid}.year-card-metric.ratio{background:#eaf1ff;border-color:#2f6bff38}.year-card-metric.ratio strong{color:var(--accent-strong)}.month-list-title-row{align-items:center;gap:10px;min-width:0;display:inline-flex}.month-event-list{gap:8px;display:grid}@media (width<=1100px){.dashboard-year-title{flex-direction:column;gap:2px}.year-card-body{grid-template-columns:80px minmax(0,1fr)}.dashboard-donut{width:76px;height:76px}}.top-system-title{font-size:18px;font-weight:800}.excel-table thead th,.excel-table thead th.th-align-left,.excel-table thead th.th-align-right,.excel-table thead th.th-align-center{text-align:center;vertical-align:middle;padding-top:8px;padding-bottom:8px;line-height:1.25}.excel-table td.col-client .cell-display,.excel-table td.col-dept .cell-display{align-items:center;padding-top:7px;padding-bottom:7px;line-height:1.32}.event-pill{min-height:28px;padding:6px 8px;font-size:12px;line-height:1.32}.contract-year-row td{z-index:8;background:#eaf1ff padding-box padding-box;position:sticky;top:40px}.dashboard-year-summary,.contract-year-toggle,.month-list-header{letter-spacing:0}.top-system-title{background:#f4f7ff;justify-content:space-between;gap:16px;font-size:18px;font-weight:760}.top-system-subtitle{color:#64748b;white-space:nowrap;margin-left:auto;font-family:Pretendard,sans-serif;font-size:12px;font-weight:700}.unified-title-bar h1{font-size:17px;font-weight:700}.calendar-month-title{font-weight:700}.detail-modal-header{background:#f4f7ff}.detail-modal-header h3{font-weight:800}.detail-item{align-items:stretch;min-height:46px}.detail-label,.detail-value{align-items:center;min-height:46px;padding-top:9px;padding-bottom:9px;line-height:1.35;display:flex}.detail-value{justify-content:flex-start}.detail-value.prewrap{align-items:flex-start}.contract-event{color:#8a5a00;background:#fff7d6;border-color:#f6d56c}.contract-event.event-pill-button:hover{background:#ffefad;border-color:#eab308}.due-event{color:#1f4fd1;background:#eaf1ff;border-color:#bfd0ff}.due-event.event-pill-button:hover{background:#dbe7ff;border-color:#8fabff}.manual-event{color:#166534;background:#eaf8ef;border-color:#b7e4c7}.manual-event.event-pill-button:hover{background:#d8f0e0;border-color:#86cc9d}.page-title-bar{margin-bottom:10px}.calendar-month-bar{gap:10px;margin-top:0;margin-bottom:12px;padding:9px 12px}.month-nav-btn{width:38px;height:34px}.calendar-month-title{font-size:21px;font-weight:700}.calendar-top-bar{gap:10px;margin-bottom:12px}.viewer-only-note{min-height:38px;margin-bottom:12px;padding-top:8px;padding-bottom:8px}.calendar-grid{margin-top:0}.selected-events-wrap{margin-top:12px;padding:12px}.month-list-header{margin-bottom:10px}.month-list-header h3{color:#334155;font-size:17px;font-weight:700}.month-list-tools{gap:8px}.event-pill{font-weight:600}.menu-btn{font-size:13.5px;font-weight:700;line-height:1.25}.menu-btn.active{font-weight:800}.calendar-grid-toggle{margin-left:2px}.month-list-title-row{justify-content:flex-start;width:auto}.month-list-tools{align-items:center}
