:root{--primary:#5645d4;--primary-pressed:#4534b3;--brand-navy:#0a1530;--canvas:#fff;--surface:#f6f5f4;--surface-soft:#fafaf9;--hairline:#e5e3df;--hairline-strong:#c8c4be;--ink:#1a1a1a;--charcoal:#37352f;--slate:#5d5b54;--steel:#787671;--muted:#a4a097;--success:#1aae39;--error:#e03131;--radius-button:8px;--radius-panel:12px;--shadow-panel:#0f0f0f14 0 4px 12px 0}*{box-sizing:border-box}html,body{min-height:100%}body{background:var(--surface-soft);color:var(--ink);letter-spacing:0;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.62}h1,h2,p{margin:0}.appShell{grid-template-columns:280px minmax(0,1fr);gap:18px;min-height:100vh;padding:18px;display:grid}.appShell[data-nav-collapsed=true]{grid-template-columns:80px minmax(0,1fr)}.sideNav{border:1px solid var(--hairline);border-radius:var(--radius-panel);background:var(--canvas);min-height:calc(100vh - 36px);box-shadow:var(--shadow-panel);grid-template-rows:auto 1fr auto;align-content:stretch;align-self:start;gap:20px;padding:16px;display:grid;position:sticky;top:18px}.brand,.loginBrand{align-items:center;gap:12px;min-width:0;display:flex}.brand{justify-content:space-between}.brandMark{border-radius:var(--radius-button);background:var(--brand-navy);color:#fff;flex:none;place-items:center;width:38px;height:38px;font-size:16px;font-weight:750;display:grid}.brandText{min-width:0}.navToggle{flex:none}.sideNav[data-collapsed=true]{padding:12px}.sideNav[data-collapsed=true] .brand{justify-content:center}.sideNav[data-collapsed=true] .brandText,.sideNav[data-collapsed=true] .navGroup h2,.sideNav[data-collapsed=true] .navButton span,.sideNav[data-collapsed=true] .sideNavFooter span,.sideNav[data-collapsed=true] .brandMark{display:none}.sideNav[data-collapsed=true] .navButton{justify-content:center;min-height:42px;padding:9px}.brand span,.brand small,.loginBrand span,.loginBrand small{display:block}.brand span,.loginBrand span{color:var(--ink);font-size:16px;font-weight:750;line-height:1.2}.brand small,.loginBrand small{color:var(--steel);margin-top:3px;font-size:12px;font-weight:600;line-height:1.25}.navGroups{align-content:start;gap:18px;display:grid}.navGroup{gap:8px;display:grid}.navGroup h2{color:var(--steel);padding:0 8px;font-size:12px;font-weight:750;line-height:1.4}.navGroup div{gap:4px;display:grid}.navButton{border-radius:var(--radius-button);width:100%;min-height:38px;color:var(--charcoal);text-align:left;background:0 0;border:1px solid #0000;justify-content:flex-start;align-items:center;gap:9px;padding:8px 10px;font-size:14px;font-weight:650;line-height:1.3;display:flex}.navButton svg{color:var(--steel);flex:none}.navButton:hover,.navButton:focus-visible,.navButton[data-active=true]{border-color:var(--hairline);background:var(--surface);color:var(--ink);outline:none}.navButton[data-active=true] svg{color:var(--primary)}.sideNavFooter{border:1px solid var(--hairline);border-radius:var(--radius-button);background:var(--surface-soft);min-width:0;color:var(--steel);align-items:center;gap:8px;padding:10px;font-size:12px;font-weight:700;line-height:1.35;display:inline-flex}.sideNavFooter svg{color:var(--primary);flex:none}.sideNav[data-collapsed=true] .sideNavFooter{justify-content:center;padding:9px}.mainWorkspace{align-content:start;gap:16px;min-width:0;display:grid}.topBar,.dataPanel,.setupPanel{border:1px solid var(--hairline);border-radius:var(--radius-panel);background:var(--canvas);box-shadow:var(--shadow-panel)}.topBar{z-index:9;justify-content:space-between;align-items:center;gap:16px;min-width:0;padding:16px;display:flex;position:sticky;top:18px}.pageTitle{min-width:0}.eyebrow{width:fit-content;color:var(--primary);font-size:12px;font-weight:750;line-height:1.4}h1{color:var(--ink);font-size:30px;font-weight:740;line-height:1.12}.pageTitle p,.panelTop p,.modalHeader p,.setupPanel p,.loginCopy p{color:var(--slate);font-size:14px;line-height:1.6}.topActions,.panelTools,.formActions,.rowActions{align-items:center;gap:8px;display:flex}.topActions{flex:none;justify-content:flex-end}.userPill{border-radius:var(--radius-button);color:#14752b;white-space:nowrap;background:#f2fbf4;border:1px solid #1aae393d;align-items:center;gap:7px;min-height:36px;padding:8px 10px;font-size:13px;font-weight:700;display:inline-flex}.iconButton,.primaryButton,.secondaryButton{border-radius:var(--radius-button);justify-content:center;align-items:center;gap:8px;line-height:1.3;display:inline-flex}.iconButton{border:1px solid var(--hairline);background:var(--canvas);width:36px;height:36px;color:var(--charcoal)}.iconButton:hover{background:var(--surface)}.iconButton.danger{color:var(--error)}.primaryButton{background:var(--primary);color:#fff;border:0;min-height:38px;padding:8px 12px;font-size:14px;font-weight:700}.primaryButton:hover{background:var(--primary-pressed)}.secondaryButton{border:1px solid var(--hairline-strong);min-height:38px;color:var(--charcoal);background:0 0;padding:8px 12px;font-size:14px;font-weight:650}.secondaryButton:hover{background:var(--surface)}.toastNotice{z-index:40;border:1px solid var(--hairline);border-radius:var(--radius-button);background:var(--canvas);max-width:min(420px,100vw - 36px);min-height:36px;box-shadow:var(--shadow-panel);color:var(--slate);align-items:center;gap:8px;padding:10px 12px;font-size:14px;font-weight:600;display:inline-flex;position:fixed;top:18px;right:18px}.toastNotice[data-tone=success]{color:#14752b;background:#f2fbf4;border-color:#1aae393d}.toastNotice[data-tone=error]{color:var(--error);background:#fff5f5;border-color:#e0313138}.spinIcon{animation:.85s linear infinite spin}.setupPanel{background:#fff5f5;border-color:#e0313138;padding:18px 20px}.setupPanel h2{color:var(--error);margin-bottom:6px;font-size:18px}.dataPanel{gap:16px;min-width:0;padding:18px;display:grid}.panelTop{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.panelTop h2,.modalHeader h2{color:var(--ink);margin-bottom:5px;font-size:21px;line-height:1.25}.countBadge{border:1px solid var(--hairline);background:var(--surface-soft);min-height:30px;color:var(--charcoal);border-radius:999px;align-items:center;padding:5px 10px;font-size:12px;font-weight:700;display:inline-flex}.tableScroll{border:1px solid var(--hairline);border-radius:var(--radius-panel);overflow:auto}.recordsTable{border-collapse:collapse;background:var(--canvas);width:100%;min-width:960px}.recordsTableWide{min-width:2740px}.recordsTable th,.recordsTable td{border-bottom:1px solid var(--hairline);min-width:150px;color:var(--slate);text-align:left;vertical-align:middle;white-space:nowrap;padding:13px 14px;font-size:14px;line-height:1.38}.recordsTable th{background:var(--surface);color:var(--charcoal);white-space:nowrap;font-size:12px;font-weight:760;position:relative}.recordsTable th[data-freeze],.recordsTable td[data-freeze]{z-index:3;background:var(--canvas);position:sticky}.recordsTable th[data-freeze]{z-index:4;background:var(--surface)}.recordsTable th[data-freeze=first],.recordsTable td[data-freeze=first]{width:220px;min-width:220px;max-width:220px;box-shadow:1px 0 0 var(--hairline);left:0}.recordsTable th[data-freeze=second],.recordsTable td[data-freeze=second]{width:320px;min-width:320px;max-width:320px;box-shadow:1px 0 0 var(--hairline);left:220px}.recordsTable th[data-freeze=actions],.recordsTable td[data-freeze=actions]{text-align:right;width:116px;min-width:116px;max-width:116px;box-shadow:-12px 0 18px -18px #0f0f0fb8, -1px 0 0 var(--hairline);right:0}.recordsTable th[data-freeze=project-axis],.recordsTable td[data-freeze=project-axis]{width:260px;min-width:260px;max-width:260px;box-shadow:1px 0 0 var(--hairline);left:0}.recordsTable tr:last-child td{border-bottom:0}.recordsTable strong,.recordsTable td>span{display:block}.recordsTable strong{color:var(--ink);font-weight:720}.recordsTable td>span{color:var(--steel);white-space:normal;margin-top:4px;font-size:12px}.rowActions{justify-content:flex-end}.tagList{flex-wrap:wrap;gap:6px;min-width:0;display:flex}.optionTag{border:1px solid var(--hairline);background:var(--surface-soft);max-width:100%;min-height:24px;color:var(--slate);white-space:nowrap;border-radius:999px;align-items:center;padding:3px 8px;font-size:12px;font-weight:700;line-height:1.3;display:inline-flex}.optionTag[data-kind=internal]{color:#005bab;background:#eaf4ff;border-color:#0075de2e}.optionTag[data-kind=unsigned]{color:#793400;background:#fff4ea;border-color:#dd5b002e}.optionTag[data-kind=signed]{color:#14752b;background:#eefaf1;border-color:#1aae3933}.optionTag[data-kind=archived]{color:var(--charcoal);background:#f4f3f1;border-color:#78767133}.emptyState{border:1px dashed var(--hairline-strong);border-radius:var(--radius-panel);background:var(--surface-soft);min-height:112px;color:var(--steel);text-align:center;place-items:center;padding:22px;font-size:14px;line-height:1.55;display:grid}.filterControl{flex:0 0 260px;width:min(100%,260px)}.dashboardFilters{flex-basis:520px;grid-template-columns:repeat(2,minmax(180px,1fr));gap:10px;width:min(100%,520px);display:grid}.listFilterBar{border:1px solid var(--hairline);border-radius:var(--radius-button);background:var(--surface-soft);gap:10px;padding:12px;display:grid}.listFilterGrid{grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;display:grid}.listFilterMeta{color:var(--steel);justify-content:space-between;align-items:center;gap:10px;font-size:12px;font-weight:720;display:flex}.summaryStrip{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.summaryItem{border:1px solid var(--hairline);border-radius:var(--radius-button);background:var(--canvas);gap:6px;min-height:76px;padding:12px;display:grid}.summaryItem span{color:var(--steel);font-size:12px;font-weight:740;line-height:1.35}.summaryItem strong{color:var(--ink);font-size:20px;line-height:1.15}.resourcePlannerControls{border:1px solid var(--hairline);border-radius:var(--radius-button);background:var(--canvas);flex-wrap:wrap;align-items:center;gap:12px;padding:12px;display:flex}.segmentedControl{border:1px solid var(--hairline);border-radius:var(--radius-button);background:var(--surface);align-items:center;gap:4px;padding:4px;display:inline-flex}.segmentedControl button{min-height:30px;color:var(--slate);background:0 0;border:0;border-radius:6px;padding:5px 10px;font-size:12px;font-weight:760}.segmentedControl button[data-active=true]{background:var(--canvas);color:var(--ink);box-shadow:0 1px 3px #0f0f0f14}.periodStepper{align-items:center;gap:8px;display:inline-flex}.periodStepper strong{min-width:188px;color:var(--charcoal);text-align:center;font-size:13px;line-height:1.35}.customRangeControls{grid-template-columns:repeat(2,minmax(150px,1fr));gap:10px;width:min(100%,360px);display:grid}.resourcePlanningScroll{max-height:62vh}.resourcePlanningTable{width:max-content;min-width:100%}.resourcePlanningTable th,.resourcePlanningTable td{text-align:center;min-width:72px;padding:11px 10px}.resourcePlanningTable th[data-freeze=project-axis],.resourcePlanningTable td[data-freeze=project-axis]{text-align:left}.resourcePlanningTable th{z-index:2;position:sticky;top:0}.resourcePlanningTable th[data-freeze=project-axis]{z-index:5}.resourcePlanningTable td[data-active=true]{color:var(--primary);background:#f3f1ff;font-weight:780}.resourcePlanningTable th[data-weekend=true],.resourcePlanningTable td[data-weekend=true]{background:var(--surface-soft);color:var(--muted)}.resourcePlanningTotalRow td{color:#005bab;background:#eaf4ff;font-weight:780}.resourcePlanningTotalRow td[data-freeze=project-axis]{background:#eaf4ff}.filterBand{border:1px solid var(--hairline);border-radius:var(--radius-button);background:var(--surface-soft);gap:10px;padding:12px;display:grid}.filterBandHeader{color:var(--charcoal);justify-content:space-between;align-items:center;gap:12px;font-size:13px;font-weight:760;display:flex}.textButton{border-radius:var(--radius-button);min-height:28px;color:var(--primary);background:0 0;border:0;padding:3px 6px;font-size:12px;font-weight:760}.textButton:hover,.textButton:focus-visible{background:#f3f1ff}.metricGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.metricCard{border:1px solid var(--hairline);border-radius:var(--radius-button);background:var(--surface-soft);gap:10px;min-height:132px;padding:16px;display:grid}.metricIcon{border-radius:var(--radius-button);width:34px;height:34px;color:var(--primary);background:#f3f1ff;border:1px solid #5645d42e;place-items:center;display:grid}.metricCard span{color:var(--steel);font-size:13px;font-weight:700}.metricCard strong{color:var(--ink);font-size:28px;line-height:1.08}.chartPanel{border:1px solid var(--hairline);border-radius:var(--radius-button);background:var(--canvas);gap:12px;padding:16px;display:grid}.chartHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.chartHeader h3{color:var(--ink);margin:0 0 5px;font-size:18px;line-height:1.25}.chartHeader p{color:var(--slate);font-size:13px;line-height:1.45}.chartCanvas{border:1px solid var(--hairline);border-radius:var(--radius-button);background:#fff;width:100%;min-height:320px;overflow:hidden}.checkboxGroup{flex-wrap:wrap;gap:10px;display:flex}.checkboxGroup label{border:1px solid var(--hairline);border-radius:var(--radius-button);background:var(--surface-soft);align-items:center;gap:8px;min-height:38px;padding:8px 10px;display:inline-flex}.checkboxGroup input{width:16px;min-height:16px;padding:0}.tagCheckboxGroup{flex-wrap:wrap;gap:8px;display:flex}.statusDraftList{gap:10px;display:grid}.statusDraftRow{grid-template-columns:minmax(0,1.3fr) minmax(150px,.7fr) 36px;align-items:end;gap:10px;display:grid}.fitButton{width:fit-content}.tagCheckboxGroup label{border:1px solid var(--hairline);background:var(--canvas);min-height:32px;color:var(--slate);border-radius:999px;align-items:center;gap:7px;padding:5px 10px;font-size:12px;font-weight:740;line-height:1.3;display:inline-flex}.tagCheckboxGroup label:has(input:checked){color:var(--primary);background:#f3f1ff;border-color:#5645d452}.tagCheckboxGroup input{width:14px;min-height:14px;accent-color:var(--primary);padding:0}.inlineHint{border:1px dashed var(--hairline-strong);border-radius:var(--radius-button);background:var(--surface-soft);color:var(--steel);padding:10px 12px;font-size:13px;font-weight:650;line-height:1.45}.calendarPanel{background:linear-gradient(180deg, #fafaf9eb, #fff 180px), var(--canvas);gap:14px}.calendarScroll{overflow-x:auto}.monthInput{width:150px;min-height:36px}.calendarLegend{flex-wrap:wrap;gap:8px;display:flex}.calendarLegend span{border:1px solid var(--hairline);min-height:28px;color:var(--charcoal);border-radius:999px;align-items:center;padding:5px 9px;font-size:12px;font-weight:700;display:inline-flex}.calendarLegend span[data-kind=weekend],.calendarDay[data-kind=weekend]{background:#f0eeec}.calendarLegend span[data-kind=holiday],.calendarDay[data-kind=holiday]{background:#fff3f8}.calendarLegend span[data-kind=workday],.calendarDay[data-kind=workday]{background:#f0fbf3}.workdayCalendar{border:1px solid var(--hairline);border-radius:var(--radius-button);background:var(--canvas);grid-template-columns:repeat(7,minmax(0,1fr));display:grid;overflow:hidden;box-shadow:0 8px 18px #0f0f0f0a}.weekdayHeader,.calendarDay{border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);min-width:0}.weekdayHeader:nth-child(7n),.calendarDay:nth-child(7n){border-right:0}.weekdayHeader{background:var(--surface);color:var(--charcoal);text-align:center;padding:10px;font-size:12px;font-weight:760}.calendarDay{background:var(--canvas);align-content:start;gap:8px;min-height:118px;padding:10px;display:grid}.calendarDay[data-empty=true]{background:var(--surface-soft)}.calendarDay[data-kind=holiday]{border-color:#ff64c82e}.calendarDay[data-kind=workday]{border-color:#1aae392e}.calendarDay[data-kind=weekend]{color:var(--slate)}.calendarDayTop,.calendarEvent{gap:4px;display:grid}.calendarDayTop strong{color:var(--ink);font-size:15px;line-height:1}.calendarDayTop span,.calendarEvent span{color:var(--steel);font-size:12px;font-weight:650;line-height:1.35}.calendarEvent{border-radius:var(--radius-button);background:#ffffffb3;border:1px solid #ffffffc7;padding:8px;box-shadow:0 4px 10px #0f0f0f0a}.calendarEvent strong{color:var(--charcoal);font-size:13px;line-height:1.35}.calendarEvent .rowActions{justify-content:flex-start;margin-top:3px}.calendarEvent .iconButton{width:30px;height:30px}.modalLayer{z-index:40;background:#0a153061;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.modalPanel{border:1px solid var(--hairline);border-radius:var(--radius-panel);background:var(--canvas);gap:16px;width:min(100%,860px);max-height:calc(100vh - 36px);padding:20px;display:grid;overflow:auto;box-shadow:0 18px 46px #0f0f0f2e}.modalHeader{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.modalForm{gap:14px;display:grid}label,.fieldGroup{gap:7px;display:grid}label span,.fieldGroup>span{color:var(--charcoal);font-size:13px;font-weight:680}input,select,textarea{border:1px solid var(--hairline-strong);border-radius:var(--radius-button);background:var(--surface-soft);width:100%;min-height:42px;color:var(--ink);outline:none;padding:9px 11px;font-size:14px;line-height:1.35}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6L8 10L12 6' stroke='%235d5b54' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 13px center;background-repeat:no-repeat;background-size:16px 16px;padding-right:38px}textarea{resize:vertical}input:focus,select:focus,textarea:focus,button:focus-visible{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #5645d429}.fieldRow{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.fieldRow.three{grid-template-columns:repeat(3,minmax(0,1fr))}.formActions{flex-wrap:wrap;padding-top:4px}.authGate,.loginShell{place-items:center;min-height:100vh;display:grid}.authGate{color:var(--slate);grid-column:1/-1;gap:12px;font-size:15px;font-weight:650}.loginShell{background:linear-gradient(180deg, #0a15300d, #fafaf900 42%), var(--surface-soft);padding:24px}.loginPanel{border:1px solid var(--hairline);border-radius:var(--radius-panel);background:var(--canvas);width:min(100%,430px);box-shadow:var(--shadow-panel);gap:24px;padding:26px;display:grid}.loginCopy{gap:10px;display:grid}.loginCopy svg{color:var(--primary)}.loginCopy h1{font-size:34px}.loginForm{gap:16px;display:grid}.inputWithIcon{position:relative}.inputWithIcon svg{color:var(--steel);pointer-events:none;position:absolute;top:50%;left:11px;transform:translateY(-50%)}.inputWithIcon input{padding-left:38px}.loginError{border-radius:var(--radius-button);color:var(--error);background:#fff5f5;border:1px solid #e0313138;padding:10px 12px;font-size:13px;font-weight:650;line-height:1.45}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:1180px){.appShell{grid-template-columns:240px minmax(0,1fr)}.appShell[data-nav-collapsed=true]{grid-template-columns:80px minmax(0,1fr)}.metricGrid{grid-template-columns:repeat(3,minmax(160px,1fr))}}@media (max-width:860px){.appShell{grid-template-columns:1fr;padding:12px}.appShell[data-nav-collapsed=true]{grid-template-columns:1fr}.sideNav{min-height:auto;position:static}.navGroups{gap:12px}.navGroup div{grid-template-columns:repeat(2,minmax(0,1fr))}.topBar,.panelTop,.statusBar,.chartHeader,.modalHeader{flex-direction:column;align-items:stretch}.topActions,.panelTools{flex-wrap:wrap;justify-content:flex-start}.filterControl{flex:auto;width:100%}.dashboardFilters,.listFilterGrid,.summaryStrip,.customRangeControls{grid-template-columns:1fr}.resourcePlannerControls,.periodStepper{flex-direction:column;align-items:stretch}.periodStepper strong{min-width:0}.metricGrid{grid-template-columns:1fr}.workdayCalendar{min-width:760px}h1{font-size:26px}}@media (max-width:560px){.navGroup div,.fieldRow,.fieldRow.three,.statusDraftRow{grid-template-columns:1fr}.modalPanel,.dataPanel{padding:14px}.topBar{position:static}}
