:root{--page:1720px;--navy:#6437f3;--navy-dark:#3c0991;--tie:#16006d;--ink:#0b0028;--muted:#63669f;--edge:#e7e2f6;--edge-soft:#f0ecfa;--control:#dcd5f2;--bg:#fff;--surface:#fff;--soft:#f7eeff;--head:#fcfaff;--row-hover:#f1eaff;--today:#f3ecff;--ok:#007a6b;--ok-soft:#dcf5f1;--warn:#b13d14;--warn-soft:#fff0ea;--error:#c52d41;--error-soft:#fff1f1;--shadow:0 12px 35px #3c09910f;--font:"Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font:15px/1.5 var(--font);margin:0}h1,h2,h3,h4{margin:0;line-height:1.2}h1{letter-spacing:-.6px;font-size:30px}h2{font-size:17px}h3{font-size:16px}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--navy);outline-offset:1px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--muted);margin:0}.small{font-size:13px}.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.strong{font-weight:700}.empty{text-align:center;padding:28px 16px!important}button{border:1px solid var(--control);background:var(--surface);cursor:pointer;border-radius:9px;padding:8px 13px;font-weight:600;transition:background .15s,border-color .15s,color .15s}button:hover:not(:disabled){background:#faf7ff;border-color:#a18eff}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--navy);border-color:var(--navy);color:#fff;padding:8px 19px}button.primary:hover:not(:disabled){background:var(--navy-dark);border-color:var(--navy-dark);color:#fff}button.subtle{background:var(--soft);color:var(--navy);border-color:#e4d8fd}button.ghost,button.link{color:var(--muted);background:0 0;border-color:#0000}button.ghost:hover:not(:disabled),button.link:hover:not(:disabled){background:var(--soft);color:var(--navy);border-color:#0000}.small-btn{border-radius:7px;margin-left:4px;padding:4px 10px;font-size:13px}input:not([type=checkbox]):not([type=radio]),select,textarea{border:1px solid var(--control);background:var(--surface);border-radius:9px;padding:8px 11px}input:not([type=checkbox]):focus,select:focus,textarea:focus{border-color:var(--navy);outline:0;box-shadow:0 0 0 3px #ece4ff}.app{min-height:100vh}.topbar{background:var(--surface);border-bottom:1px solid var(--edge)}.topbar-inner{max-width:var(--page);justify-content:space-between;align-items:center;gap:16px;height:72px;margin:0 auto;padding:0 32px;display:flex}.brand{align-items:center;gap:11px;font-size:19px;font-weight:700;display:flex}.brand-mark{background:var(--navy);color:#fff;border-radius:9px;place-items:center;width:35px;height:35px;font-size:17px;display:grid}.user{align-items:center;gap:12px;display:flex}.user-name{text-align:right;font-size:14px;line-height:1.3;display:grid}.user-name span{color:var(--muted);font-size:13px}.viewnav{max-width:var(--page);gap:6px;margin:20px auto 0;padding:0 32px;display:flex;overflow-x:auto}.viewtab{color:#5d5f99;white-space:nowrap;background:0 0;border-color:#0000;border-radius:10px;padding:9px 17px}.viewtab:hover:not(:disabled){color:var(--navy);background:#efe8fd;border-color:#0000}.viewtab.active,.viewtab.active:hover:not(:disabled){color:var(--navy);background:var(--soft);border-color:#e4d8fd}.content{max-width:var(--page);margin:0 auto;padding:24px 32px 70px}.dev-bar{background:var(--warn-soft);border-bottom:1px solid #f9cfbf;flex-wrap:wrap;align-items:end;gap:12px;padding:8px 24px;font-size:13px;display:flex}.dev-bar label{color:var(--muted);gap:2px;display:grid}.dev-bar input{min-width:220px;border-radius:6px!important;padding:4px 8px!important}.dev-bar button{padding:5px 12px}.dev-tag{color:var(--warn);align-self:center;font-weight:700}.banner{border:1px solid #0000;border-radius:10px;margin:0 0 16px;padding:11px 14px}.banner.info{background:var(--soft);color:var(--navy);border-color:#e4d8fd}.banner.warn{background:var(--warn-soft);color:var(--warn);border-color:#f9cfbf}.banner.error{background:var(--error-soft);color:var(--error);border-color:#f6cfd5}.banner button{margin-left:8px;padding:3px 10px}.page{gap:16px;display:grid}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 16px;margin-bottom:4px;display:flex}.page-sub{color:var(--muted);margin:5px 0 0}.surface,.panel{background:var(--surface);border:1px solid var(--edge);box-shadow:var(--shadow);border-radius:15px}.surface{gap:16px;padding:20px;display:grid}.notice-panel{gap:10px;max-width:620px;padding:24px;display:grid}.notice-panel h1{font-size:22px}.subtabs{background:#ece6fb;border-radius:12px;flex-wrap:wrap;gap:4px;padding:4px;display:flex}.subtab{color:#5d5f99;background:0 0;border-color:#0000;padding:7px 14px}.subtab:hover:not(:disabled){color:var(--navy);background:#fff9;border-color:#0000}.subtab.active,.subtab.active:hover:not(:disabled){background:var(--surface);color:var(--navy);box-shadow:0 2px 8px #3c09911a}.week-nav{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.week-nav button{min-width:40px}.week-range{background:var(--surface);border:1px solid var(--edge);text-align:center;font-variant-numeric:tabular-nums;border-radius:10px;min-width:200px;padding:8px 15px;font-weight:700}.metrics{flex-wrap:wrap;align-items:center;gap:8px 18px;margin:-4px 0 0;display:flex}.metrics>div{align-items:baseline;gap:8px;display:flex}.metrics>div+div:before{content:"";background:#c0cded;border-radius:50%;align-self:center;width:5px;height:5px;margin-right:10px}.metrics dt{color:var(--muted);font-size:13px}.metrics dd{color:var(--navy);margin:0;font-size:23px;font-weight:700}.metrics .metric-status dd{font-size:13px;font-weight:600}.sheet{background:var(--surface);border:1px solid var(--edge);box-shadow:var(--shadow);border-radius:15px;overflow:hidden}.grid-wrap{overflow-x:auto}.grid{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;min-width:1060px}.grid th,.grid td{border-bottom:1px solid var(--edge-soft);border-right:1px solid var(--edge-soft);background:var(--surface);transition:background .12s}.grid thead th{background:var(--head);color:#5d5f99;text-align:center;border-bottom-color:var(--edge);text-transform:uppercase;letter-spacing:.02em;height:72px;font-size:13px;font-weight:650}.grid thead th.day-col{text-transform:none}.grid .day-num{color:#16006d;margin-top:2px;font-size:19px;font-weight:750;display:block}.grid thead th.today{background:var(--today);color:var(--navy)}.grid thead th.today .day-num{color:var(--navy)}.grid .project-col{text-align:left;z-index:2;border-right-color:var(--edge);width:330px;padding:0 12px 0 18px;position:sticky;left:0}.grid thead .project-col{z-index:3;padding-left:22px}.grid .total-col{text-align:center;width:110px;color:var(--navy);font-weight:750}.grid .clear-col{text-align:center;border-right:0;width:46px}.grid th:last-child,.grid td:last-child{border-right:0}.grid tbody td{height:68px}.grid tbody td.project-col{display:table-cell}.grid tbody td.project-col>*{vertical-align:middle}.project-dot{background:var(--navy);border-radius:3px;width:8px;height:8px;margin-right:8px;display:inline-block}.grid .search-select{width:calc(100% - 18px);display:inline-block}.grid tbody tr:hover>td{background:var(--row-hover)}.grid tbody tr:hover .project-dot{box-shadow:0 0 0 3px #ddd0fd}.cell{text-align:center;padding:0 4px;position:relative}.cell.today{background:#fcf9ff}.cell input{text-align:center;color:#2f3b6f;font-variant-numeric:tabular-nums;width:100%;height:48px;padding:0 20px 0 4px;font-size:17px;font-weight:650;display:block;box-shadow:none!important;background:0 0!important;border:1px solid #0000!important;border-radius:8px!important}.cell input::placeholder{color:#c0bcd9;font-weight:400}.cell input:hover:not(:disabled){background:#efe7ff!important}.cell input:focus{background:#efe7ff!important;border-color:#a18eff!important}.cell.has-value input{background:#f6f0ff!important}.grid tbody tr:hover .cell.has-value input{background:#ebe2ff!important}.cell input:disabled{color:#2f3b6f;cursor:default}.cell.invalid input{color:#bb2339;background:var(--error-soft)!important;border-color:#d74759!important}.note-btn{color:#9a8fd6;opacity:0;background:0 0;border:0;border-radius:5px;width:22px;height:22px;padding:0;font-size:14px;line-height:1;position:absolute;bottom:6px;right:6px}.cell:hover .note-btn,.cell:focus-within .note-btn,.note-btn.has-note,.note-btn.missing{opacity:1}.note-btn:hover:not(:disabled){color:var(--navy);background:#e9dfff}.note-btn.has-note{color:var(--navy)}.note-btn.missing{color:#f15928}.note-tip{z-index:160;color:#fff;text-align:left;white-space:normal;overflow-wrap:anywhere;pointer-events:none;background:#16006d;border-radius:8px;min-width:160px;max-width:320px;padding:9px 12px;font-size:13px;font-weight:400;line-height:1.45;position:fixed;box-shadow:0 10px 24px #0000002e}.note-tip.above{transform:translate(-50%,-100%)}.note-tip.below{transform:translate(-50%)}.clear-btn{color:#9a97c4;background:0 0;border:0;border-radius:7px;width:30px;height:30px;padding:0;font-size:22px;line-height:1}.clear-btn:hover:not(:disabled){color:var(--error);background:#fff0f1}.grid tfoot th,.grid tfoot td{height:62px;color:var(--navy);text-align:center;background:#f6f1ff;border-bottom:0;font-weight:750}.grid tfoot th.project-col{text-align:left;color:var(--ink);text-transform:uppercase;padding-left:22px;font-size:14px}.grid .over{color:var(--error)!important}.sheet-actions{border-top:1px solid var(--edge);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.message{min-height:1.4em;color:var(--ok);margin:-6px 0 0;font-size:14px}.message.error{color:var(--error)}.message:empty{display:none}.hint{color:var(--muted);margin:0;font-size:13px;line-height:1.6}.search-select input{text-overflow:ellipsis;width:100%;min-width:0}.search-select input:disabled{color:var(--ink);cursor:default;background:0 0;border-color:#0000}.search-select input:not(:disabled){background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2363669f' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 10px center;padding-right:28px}.grid .search-select input{background-color:#0000;border-color:#0000;padding-top:9px;padding-bottom:9px;font-weight:600}.grid .search-select input:not(:disabled):hover,.grid .search-select input:focus{border-color:var(--control);background-color:var(--surface)}.grid .search-select input:disabled{padding-left:0}.search-select-list{z-index:150;background:var(--surface);border:1px solid #d6ccf3;border-radius:10px;max-width:480px;max-height:280px;margin:0;padding:5px;list-style:none;overflow-y:auto;box-shadow:0 14px 32px #3c099129}.search-select-list li{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;color:#2f3b6f;border-radius:6px;padding:8px 10px;overflow:hidden}.search-select-list li[aria-selected=true]{background:var(--soft);color:var(--navy)}.search-select-list li.current{font-weight:650}.search-select-list .search-select-note{color:var(--muted);cursor:default;font-size:13px}.overlay{z-index:200;background:#0b002873;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog{background:var(--surface);border-radius:15px;gap:8px;width:min(480px,100%);max-height:calc(100vh - 32px);padding:23px;display:grid;overflow-y:auto;box-shadow:0 25px 80px #0000002e}.dialog h3{font-size:21px}.dialog select,.dialog textarea,.dialog input:not([type=checkbox]){width:100%}.dialog textarea{resize:vertical}.dialog [aria-invalid=true]{border-color:var(--error)}.dialog .actions{justify-content:flex-end;margin-top:8px}.dialog .list{margin:4px 0}.field{gap:4px;display:grid}.field-label{margin-top:4px;font-size:14px;font-weight:600}.field-label span{color:var(--error)}.field-error{color:var(--error);margin:0;font-size:13px}.kpis{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;display:grid}.kpi{background:var(--surface);border:1px solid var(--edge);border-radius:14px;gap:6px;padding:18px 21px;display:grid}.kpi .label{color:var(--muted);font-size:13px}.kpi strong{text-align:left;letter-spacing:-.5px;font-size:31px}.kpi em{color:var(--muted);font-size:13px;font-style:normal}.kpi.feature .label,.kpi.feature strong,.kpi.feature em{color:#fff}.kpi.feature em{opacity:.78}.panels{grid-template-columns:minmax(0,1.5fr) minmax(320px,1fr);gap:16px;display:grid}.panel{padding:22px 24px}.panel-sub{color:var(--muted);margin:4px 0 20px;font-size:13px}.trend{grid-auto-columns:1fr;grid-auto-flow:column;align-items:end;gap:18px;margin:0;padding:0;list-style:none;display:grid}.trend li{justify-items:center;gap:8px;display:grid}.trend-value{color:#2f3b6f;text-align:center;font-size:15px;font-weight:700}.trend-plot{border-bottom:1px solid var(--edge);width:100%;max-width:76px;height:170px;position:relative}.trend-bar{background:#a18eff;border-radius:6px 6px 0 0;position:absolute;bottom:0;left:0;right:0}.trend li.current .trend-bar{background:var(--navy)}.trend-target{opacity:.45;border-top:2px dashed #16006d;position:absolute;left:-6px;right:-6px}.trend-label{color:var(--muted);font-size:13px}.trend-label em{color:var(--warn);font-style:normal}.dist{gap:18px;margin:0;padding:0;list-style:none;display:grid}.dist-caption{justify-content:space-between;gap:10px;margin-bottom:8px;font-size:14px;display:flex}.dist-caption strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dist-caption .num{color:var(--muted)}.dist-track,.bar-track{background:#ede8fb;border-radius:99px;height:9px;display:block;position:relative;overflow:hidden}.dist-fill,.bar{background:var(--navy);border-radius:99px;position:absolute;inset:0 auto 0 0}.list{border-collapse:separate;border-spacing:0;width:100%}.list th,.list td{border-bottom:1px solid var(--edge-soft);text-align:left;vertical-align:middle;padding:12px 14px;transition:background .12s}.list thead th{background:var(--head);color:#5d5f99;text-transform:uppercase;letter-spacing:.02em;border-bottom-color:var(--edge);font-size:13px;font-weight:650}.list thead th.num,.list td.num{text-align:right}.list tbody tr:hover>td{background:var(--row-hover)}.list tbody tr:last-child td{border-bottom:0}.list tfoot th,.list tfoot td{color:var(--navy);border-top:1px solid var(--edge);background:#f6f1ff;border-bottom:0;font-weight:700}.list tr.inactive td{color:var(--muted)}.list .narrow{width:56px}.list code{color:var(--navy);background:var(--soft);border-radius:6px;padding:2px 7px;font-family:inherit;font-size:13px;font-weight:700}.surface .grid-wrap{border:1px solid var(--edge);border-radius:12px}.row-actions{text-align:right;white-space:nowrap}.badge,.pill{white-space:nowrap;color:#5d5f99;background:#f0eef6;border:1px solid #e0dcec;border-radius:999px;align-items:center;gap:6px;padding:3px 11px 3px 9px;font-size:13px;font-weight:600;line-height:1.4;display:inline-flex}.badge:before,.pill:before{content:"";background:currentColor;border-radius:50%;flex-shrink:0;width:7px;height:7px}.badge.ok,.pill.ok{color:#007a6b;background:#dcf5f1;border-color:#a8e3da}.badge.warn,.pill.draft{color:#b13d14;background:#fee9e1;border-color:#f9c3ae}.badge.info{color:var(--navy);background:#ede6ff;border-color:#d5c9fc}.badge.danger,.pill.error{color:#b3203a;background:#fde8eb;border-color:#f6c4cc}.pill.draft:before{animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.pill.draft:before{animation:none}}.negative{color:var(--error)}.admin-section{gap:14px;display:grid}.admin-toolbar{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.admin-toolbar input[type=search]{flex:240px;max-width:340px}.toolbar-actions{flex-wrap:wrap;gap:8px;margin-left:auto;display:flex}.check{color:var(--muted);align-items:center;gap:6px;font-size:14px;display:inline-flex}.report{gap:16px;display:grid}.report-head{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:12px 16px;display:flex}.period-nav{align-items:center;gap:8px;display:flex}.period-label{margin-left:8px;font-size:16px}.date-range{flex-wrap:wrap;align-items:end;gap:8px;display:flex}.date-range label{color:var(--muted);gap:3px;font-size:13px;display:grid}.date-range input{padding:7px 9px!important}.report-filters{flex-wrap:wrap;gap:8px;display:flex}.report-filters .search-select input{min-width:210px}.cards{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;display:grid}.card{background:var(--surface);border:1px solid var(--edge);border-radius:13px;gap:5px;padding:16px 19px;display:grid}.card .label{color:var(--muted);font-size:13px}.card strong{text-align:left;letter-spacing:-.4px;font-size:26px}.card.warn{background:#fff7f3;border-color:#f9cfbf}.card.warn strong{color:var(--warn)}.share-col{width:190px}.share-col .bar-track{vertical-align:middle;width:120px;margin-right:8px;display:inline-block}.list tr.breakdown>td{background:#faf6ff}.breakdown-lists{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;padding:4px 0;display:grid}.breakdown-lists h4{margin:0 0 8px;font-size:14px}.breakdown-lists ul{gap:5px;margin:0;padding:0;list-style:none;display:grid}.breakdown-lists li{justify-content:space-between;gap:12px;display:flex}.list.entries .description{white-space:pre-wrap;max-width:420px}@media (width<=920px){.panels{grid-template-columns:1fr}}@media (width<=700px){.topbar-inner,.viewnav,.content{padding-left:12px;padding-right:12px}.user-name span{display:none}h1{font-size:24px}.content{padding-top:18px}.surface{padding:14px}.sheet-actions{padding:13px}.grid .project-col{width:220px}}.topbar{color:var(--tie);background:linear-gradient(135deg,#f7eeff,#e3d6ff);border-bottom:1px solid #e4dafc}.brand-logo{width:auto;height:30px;display:block}.brand-sep{background:#c9b6ff;width:1px;height:26px;margin:0 5px}@media (width<=700px){.brand-logo{height:24px}.brand{gap:8px;font-size:16px}}.topbar .user-name span{color:var(--muted)}.topbar button.ghost{color:var(--navy-dark)}.topbar button.ghost:hover:not(:disabled){color:var(--navy);background:#fff9}.kpi.feature{background:linear-gradient(135deg, var(--navy-dark), var(--navy));border-color:var(--navy-dark)}.grid thead th.today{box-shadow:inset 0 3px 0 var(--navy)}.trend-target{border-top-color:var(--tie)}input[type=checkbox],input[type=radio]{accent-color:var(--navy)}.dialog.wide{width:min(1000px,100%)}.dialog .actions.start{justify-content:flex-start}.file-button{border:1px solid var(--navy);background:var(--navy);color:#fff;cursor:pointer;border-radius:9px;align-items:center;padding:8px 15px;font-weight:600;display:inline-flex}.file-button:hover{background:var(--navy-dark)}.file-button:focus-within{outline:2px solid var(--navy);outline-offset:2px}.file-button input{opacity:0;width:1px;height:1px;position:absolute}.import-summary{flex-wrap:wrap;gap:8px;display:flex}.import-table{border:1px solid var(--edge);border-radius:12px;max-height:380px;overflow:auto}.import-table thead th{z-index:1;position:sticky;top:0}.import-table .badge{white-space:normal}
