:root{--ink:#182a3a;--muted:#687887;--line:#dfe6eb;--bg:#f3f6f8;--brand:#087e79;--nav:#112d3b;--red:#a52e36}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select{font:inherit}button,a,input,select{outline-offset:3px}button{cursor:pointer;border:1px solid var(--line);border-radius:7px;background:white;color:var(--ink);padding:9px 14px;white-space:nowrap}button:hover{border-color:var(--brand);background:#edf7f6}button.primary{background:var(--brand);color:white;border-color:var(--brand)}button.danger{color:var(--red)}button:disabled{opacity:.5;cursor:not-allowed}input,select{width:100%;padding:9px 10px;border:1px solid #cdd8df;border-radius:6px;background:white;color:var(--ink);min-width:0}input[type=checkbox]{width:auto;accent-color:var(--brand)}input:focus,select:focus{outline:2px solid #8cc9c5;border-color:var(--brand)}label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;color:#50616d}small,.muted{color:var(--muted)}h1,h2,h3,p{margin-top:0}h1{font-size:26px;letter-spacing:-.6px;margin-bottom:5px}h2{font-size:18px;margin-bottom:16px}h3{font-size:15px}a{color:var(--brand)}.shell{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--nav);color:#e1edf1;padding:28px 18px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:18px}.brand{font-size:21px;font-weight:700;letter-spacing:-.5px}.brand small{font-size:11px;display:block;color:#9bb6c2;font-weight:400;letter-spacing:1px}.sidebar button{background:transparent;color:#d8e7ee;border-color:#3b5360;text-align:left}.sidebar select{background:#234251;color:white;border-color:#46606b}.sidebar .primary{background:#148f88;border-color:#148f88;color:white}.nav{display:flex;flex-direction:column;gap:5px}.nav button{border:0;padding:11px}.nav button.active{background:#2b4b58;color:white}.sidebar .bottom{margin-top:auto;font-size:12px;color:#9bb6c2}.workspace{min-width:0;padding:30px 36px 60px;max-width:1700px;width:100%;margin:auto}.top{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}.actions{display:flex;gap:8px;flex-wrap:wrap}.card{padding:22px;background:white;border:1px solid var(--line);border-radius:10px;margin-bottom:20px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.kpi{background:white;border:1px solid var(--line);padding:20px;border-radius:10px}.kpi span{color:var(--muted);font-size:12px}.kpi strong{display:block;font-size:23px;letter-spacing:-.6px;margin:6px 0}.kpi small{font-size:11px}.notice{padding:14px 16px;border-radius:8px;background:#e8f4f2;color:#205d57;margin-bottom:20px;border:1px solid #c8e2de}.notice.error{background:#fff1f0;color:var(--red);border-color:#f3c7c7}.notice.warn{background:#fff8e8;color:#805b19;border-color:#eadcb9}.row{display:flex;align-items:end;gap:12px;margin-bottom:12px}.row>*{flex:1}.row>button{flex:0}.card-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}.card-head h2,.card-head h3{margin:0}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:7px;max-height:65vh}table{border-collapse:collapse;width:100%;font-size:12px;white-space:nowrap}th,td{padding:11px 12px;text-align:right;border-bottom:1px solid #e8edf1;font-variant-numeric:tabular-nums}th{position:sticky;top:0;background:#eef3f6;color:#51626f;z-index:1;font-weight:600}td:first-child,th:first-child{text-align:left}tr:nth-child(even){background:#fafcfd}.negative{color:var(--red)}.positive{color:var(--brand)}.badge{border-radius:20px;background:#e6f3ee;color:#276b4a;font-size:11px;padding:4px 10px}.subcard{border:1px solid var(--line);border-radius:7px;padding:16px;margin-top:14px}.chart{width:100%;height:230px;display:block}.chart text{font:11px system-ui;fill:#687887}.legend{display:flex;gap:20px;font-size:12px;margin-top:8px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}.dot.teal{background:#087e79}.dot.blue{background:#698abb}.login{max-width:410px;margin:12vh auto;padding:30px}.login label{margin-bottom:16px}.login button{width:100%}.login .brand{margin-bottom:28px;color:var(--brand)}#toast{position:fixed;bottom:22px;right:22px;background:#173e4a;color:white;padding:12px 20px;border-radius:9px;box-shadow:0 4px 24px #0002;display:none;max-width:500px;z-index:5}.check{flex-direction:row;align-items:center;padding:10px 0}.hint{font-size:12px;color:var(--muted);margin:12px 0 0}.empty{text-align:center;padding:50px;color:var(--muted)}.divider{border-top:1px solid var(--line);margin:18px 0}.section-note{max-width:850px;color:var(--muted);margin-bottom:22px}.footer-note{font-size:11px;color:var(--muted);margin-top:20px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:1100px){.kpis,.grid.four{grid-template-columns:repeat(2,1fr)}.workspace{padding:24px}.grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;padding:16px}.nav{flex-direction:row;overflow:auto}.sidebar .bottom{display:none}.workspace{padding:16px}.top{align-items:start;flex-direction:column}.grid,.grid.two,.grid.four{grid-template-columns:1fr}.row{flex-wrap:wrap}.row>label{flex-basis:40%}.kpi strong{font-size:18px}.card{padding:16px}}

.input-group{display:flex;gap:5px}.input-group input{min-width:0}.input-group button{padding:6px 9px;font-size:12px}.column-picker{margin:12px 0}.column-options{display:flex;flex-wrap:wrap;gap:8px 20px;padding:10px;background:#f5f8fa}.column-options label{font-weight:400}summary{cursor:pointer;font-weight:600;padding:8px 0}details p{margin-top:12px}dt{font-weight:600}dd{margin:4px 0 12px;color:var(--muted)}progress{width:100%;height:12px;accent-color:var(--brand)}[hidden]{display:none!important}input[type=date]{min-width:155px}td:last-child{max-width:420px}.table-wrap td{vertical-align:top}

.column-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));align-items:center}.column-row{display:flex;gap:7px;align-items:center;border:1px solid #dfe6eb;border-radius:6px;padding:4px 8px;background:white}.column-row label{flex:1}.column-row button{padding:2px 8px}.drag-handle{cursor:grab;font-size:22px;color:#687887}th[draggable=true]{cursor:grab}.compact{padding:14px 20px}.mini-stats .kpi strong{font-size:19px}.table-wrap td.pinned-first,.table-wrap td.pinned-second{position:sticky;z-index:2;background:#f6fafb}.pinned-first{left:0;min-width:90px}.pinned-second{left:90px;min-width:100px}.table-wrap th.pinned-first,.table-wrap th.pinned-second{z-index:4;background:#e8f0f4}.current-month td{box-shadow:inset 0 2px #087e79,inset 0 -2px #087e79}.milestone-month td:first-child{border-left:4px solid #c18428}.jump-target td{background:#e3f4ef!important}

:root:not([data-theme=light]){color-scheme:dark;--ink:#dce5ed;--muted:#9eafbf;--line:#344352;--bg:#141c25;--brand:#66c9bc;--nav:#101922;--red:#f49a9d}
:root:not([data-theme=light]) :is(.card,.kpi,.column-row,button,input,select){background:#202b37;color:var(--ink);border-color:var(--line)}
:root:not([data-theme=light]) label{color:#bdcbd8}
:root:not([data-theme=light]) :is(th,.column-options,.table-wrap th.pinned-first,.table-wrap th.pinned-second){background:#2a3948;color:#c5d3df}
:root:not([data-theme=light]) :is(tr:nth-child(even),.table-wrap td.pinned-first,.table-wrap td.pinned-second){background:#24313e}
:root:not([data-theme=light]) :is(td,th){border-color:var(--line)}
:root:not([data-theme=light]) .notice{background:#203d3d;color:#b9e6df;border-color:#41605a}
:root:not([data-theme=light]) .notice.warn{background:#413722;color:#efdbab;border-color:#6a5834}
:root:not([data-theme=light]) .notice.error{background:#442b32;color:#f7b9bd;border-color:#71414b}
:root:not([data-theme=light]) button.primary{background:#217c73;color:white}
:root:not([data-theme=light]) .chart text{fill:#b6c4d1}
:root:not([data-theme=light]) .chart line{stroke:#415363}
:root:not([data-theme=light]) .jump-target td{background:#294d48!important}
.difference{font-weight:600;box-shadow:inset 3px 0 #b08840;background:#b0884014}
