:root{--bg:#f0f4f8;--card:#fff;--text:#14212b;--muted:#5d6f7d;--accent:#1f5f8b;--line:#d5dfe8;--danger:#b3382c;--good:#2e7d4f;--series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0f171d;--card:#172229;--text:#e7eef3;--muted:#93a6b4;--accent:#6bb2e0;--line:#28394a;--danger:#ef7d71;--good:#5fbf88;--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;margin:0;font:16px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}h1{margin:0;font-size:1.5rem}h2{margin:0 0 .6rem;font-size:1.05rem}.muted{color:var(--muted)}.center{place-items:center;min-height:100vh;display:grid}.error{color:var(--danger);margin:.5rem 0}.ok{color:var(--good);margin:.5rem 0}.small{font-size:.85rem}.block{display:block}.center-text{text-align:center}.nomargin{margin-top:0}main.app,main.login{max-width:32rem;padding:max(1rem, env(safe-area-inset-top)) 1rem max(2rem, env(safe-area-inset-bottom));margin:0 auto}main.app{padding-bottom:calc(5.5rem + env(safe-area-inset-bottom))}main.app.wide{max-width:64rem}main.login{padding-top:18vh}main.login form{gap:.9rem;margin-top:1.2rem;display:grid}header{justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.8rem;display:flex}header>div{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.3rem;display:flex}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;margin-bottom:.8rem;padding:.9rem}.card.flush{padding:0;overflow:hidden}.card-top{justify-content:space-between;align-items:baseline;gap:.6rem;display:flex}label{color:var(--muted);gap:.3rem;font-size:.85rem;display:grid}input{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:10px;width:100%;min-height:44px;padding:.7rem .8rem}select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:10px;width:100%;min-height:44px;padding:.7rem .6rem}textarea{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);resize:vertical;border-radius:10px;width:100%;padding:.7rem .8rem}input[type=checkbox]{width:22px;height:22px;min-height:0;accent-color:var(--accent);flex:none;padding:0}button{font:inherit;color:var(--text);cursor:pointer}button:disabled{opacity:.45;cursor:default}button.link{color:var(--accent);background:0 0;border:0;min-height:44px;padding:.4rem}button.link.danger{color:var(--danger);font-weight:600}a.link{color:var(--accent);min-height:44px;padding:.4rem;line-height:36px;text-decoration:none;display:inline-block}a.plain{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:3px}button.primary{background:var(--accent);color:#fff;border:0;border-radius:12px;width:100%;min-height:52px;margin-top:.8rem;font-weight:600}button.primary.alt{background:var(--bg);color:var(--accent);border:1px solid var(--accent)}.btns{align-items:center;gap:.4rem;display:flex}.btns .primary{flex:1;width:auto;margin-top:0}a.linkbtn{text-align:center;background:var(--accent);color:#fff;border-radius:12px;margin-top:.8rem;font-weight:600;line-height:52px;text-decoration:none;display:block}.form{gap:.8rem;display:grid}.row{align-items:end;gap:.8rem;display:flex}.row>label{flex:1}.badge{text-transform:uppercase;letter-spacing:.04em;color:#fff;background:var(--accent);border-radius:10px;padding:.1rem .5rem;font-size:.7rem;font-weight:600}.seg{gap:.4rem;margin-bottom:.8rem;display:flex}.seg button{border:1px solid var(--line);background:var(--bg);border-radius:10px;flex:1;min-height:46px}.seg button.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.chips{gap:.4rem;margin-bottom:.8rem;padding-bottom:.2rem;display:flex;overflow-x:auto}.chips button{border:1px solid var(--line);background:var(--card);white-space:nowrap;border-radius:20px;flex:none;min-height:40px;padding:0 .85rem}.chips button.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.entries{margin:0;padding:0;list-style:none}.entries li{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.6rem;padding:.3rem 0;display:flex}.entries li:first-child{border-top:0}.entries .desc{flex:1;min-width:0}.stats{grid-template-columns:1fr 1fr;gap:.8rem;margin-bottom:.8rem;display:grid}.stats .card{margin:0}.stat{text-align:center;gap:.2rem;display:grid}.stat .label{color:var(--muted);font-size:.8rem}.stat .value{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:700}.shell{grid-template-columns:15rem minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--card);border-right:1px solid var(--line);flex-direction:column;gap:1.5rem;height:100vh;padding:1.4rem 1rem;display:flex;position:sticky;top:0}.brand{color:inherit;align-items:center;gap:.7rem;padding:0 .5rem;font-size:1.1rem;font-weight:700;text-decoration:none;display:flex}.brand-mark{background:var(--accent);color:#fff;border-radius:11px;flex:none;place-items:center;width:36px;height:36px;display:grid}.sidebar nav{gap:.2rem;display:grid}.sidebar nav a{color:var(--muted);border-radius:11px;align-items:center;gap:.75rem;min-width:0;padding:.65rem .8rem;font-weight:550;text-decoration:none;display:flex}.sidebar nav a:hover{background:var(--bg);color:var(--text)}.sidebar nav a.on{background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--accent)}.side-foot{border-top:1px solid var(--line);gap:.3rem;margin-top:auto;padding:.8rem .5rem 0;display:grid}.side-foot .me{font-weight:600}.side-foot button.link,.topbar button.link{justify-self:start;align-items:center;gap:.4rem;padding:.4rem 0;display:inline-flex}.topbar{display:none}.content{min-width:0}@media (width>=901px){main.app{max-width:44rem;padding-bottom:3rem}main.app.wide{max-width:64rem}.content{padding-top:.6rem}}@media (width<=900px){.shell{grid-template-columns:minmax(0,1fr)}.sidebar{z-index:20;height:auto;padding:.3rem .4rem calc(.3rem + env(safe-area-inset-bottom));border-right:0;border-top:1px solid var(--line);flex-direction:row;gap:0;position:fixed;inset:auto 0 0}.sidebar .brand,.side-foot{display:none}.sidebar nav{width:100%;display:flex}.sidebar nav a{flex-direction:column;flex:1;justify-content:center;gap:.1rem;padding:.4rem .2rem;font-size:.68rem}.topbar{max-width:32rem;padding:max(.6rem, env(safe-area-inset-top)) 1rem 0;justify-content:space-between;align-items:center;margin:0 auto;display:flex}.topbar .brand{padding:0;font-size:1rem}.topbar .brand-mark{border-radius:9px;width:28px;height:28px}.topbar button.link{min-height:36px}}.banner{z-index:10;background:var(--accent);color:#fff;justify-content:space-between;align-items:center;padding:.5rem 1rem;display:flex;position:sticky;top:0}.banner button{color:var(--accent);background:#fff;border:0;border-radius:8px;padding:.4rem .8rem}.cols{display:block}.col{min-width:0}@media (width>=901px){.cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:1.2rem;display:grid}}.login-links{gap:.2rem;margin-top:.6rem;display:grid}.login-links .link{justify-self:start;padding-left:0}a.adminlink{color:var(--accent);min-height:44px;padding:.4rem 0;line-height:36px;text-decoration:none;display:inline-block}.topbar .adminlink{margin-left:auto;margin-right:.6rem;padding:0}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.neg{color:var(--danger)}.zero{color:var(--muted);opacity:.7}.bad{color:var(--danger)}.good{color:var(--good)}h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:1rem 0 .3rem;font-size:.8rem}.grow{flex:1;min-width:0}.notice{border:1px solid var(--line);background:var(--card);color:var(--muted);border-radius:10px;margin:0 0 .8rem;padding:.6rem .8rem}.hint{margin:0 0 .5rem}.check-row{color:var(--text);align-items:flex-start;gap:.7rem;font-size:1rem;display:flex}.check-row input{margin-top:.15rem}.check-row>span{flex:1;min-width:0}.with-suffix{align-items:center;gap:.4rem;display:flex}.row>button.primary{flex:none;width:auto;margin:0;padding:0 1.2rem}.row .grow{align-self:center}.tiles{grid-template-columns:1fr 1fr;gap:.7rem;margin-bottom:.8rem;display:grid}.tile{align-content:start;gap:.15rem;margin:0;display:grid}.tile .label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.75rem}.tile .value{font-variant-numeric:tabular-nums;font-size:1.45rem;font-weight:700}@media (width>=760px){.tiles{grid-template-columns:repeat(4,1fr)}}.grid-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}table.grid{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:.9rem}table.grid th,table.grid td{border-bottom:1px solid var(--line);padding:.3rem .55rem}table.grid thead th{background:var(--card);color:var(--muted);text-transform:uppercase;letter-spacing:.03em;z-index:2;font-size:.78rem;font-weight:600;position:sticky;top:0}table.grid th.stick{z-index:1;background:var(--card);text-align:left;border-right:1px solid var(--line);min-width:9.5rem;max-width:11rem;font-weight:500;position:sticky;left:0}table.grid thead th.stick{z-index:3}table.grid .total{border-left:1px solid var(--line);background:color-mix(in srgb, var(--bg) 60%, var(--card));font-weight:600}table.grid tr.picked th.stick,table.grid tr.picked td{background:color-mix(in srgb, var(--accent) 12%, var(--card))}table.grid tbody.summary-rows tr:first-child th,table.grid tbody.summary-rows tr:first-child td{border-top:2px solid var(--line)}table.grid tr.strong th,table.grid tr.strong td{font-weight:700}table.grid td.scen{font-style:italic}button.line-name{text-align:left;min-height:36px;font:inherit;color:var(--text);background:0 0;border:0;flex-wrap:wrap;align-items:center;gap:.4rem;padding:.25rem 0;display:flex}button.cell{min-width:3.6rem;min-height:32px;font:inherit;color:inherit;text-align:right;font-variant-numeric:tabular-nums;background:0 0;border:0;border-radius:6px;padding:.25rem .3rem}button.cell:hover{background:color-mix(in srgb, var(--accent) 12%, transparent)}button.cell .add{color:var(--muted);opacity:.6}input.cell-input{text-align:right;width:6.2rem;min-height:34px;padding:.2rem .4rem}.tag{text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--line);color:var(--muted);border-radius:8px;padding:.05rem .4rem;font-size:.65rem}.tag.alt{border-style:dashed}tr.entry td,tr.entry th{background:color-mix(in srgb, var(--accent) 5%, var(--card))}.scen-row{align-items:center}.scen-row select{width:auto;min-width:8rem}figure.chart{margin:0}figure.chart figcaption{margin-bottom:.3rem;font-weight:600}.legend{color:var(--muted);flex-wrap:wrap;gap:.3rem 1rem;margin:0 0 .4rem;padding:0;font-size:.85rem;list-style:none;display:flex}.legend li{align-items:center;gap:.4rem;display:flex}.legend .swatch{border-radius:3px;width:12px;height:12px}.legend .tickmark{background:var(--text);width:2px;height:14px}figure.chart svg{touch-action:pan-y;width:100%;height:auto;display:block}svg .grid{stroke:var(--line);stroke-width:1px;opacity:.7}svg .axis{stroke:var(--muted);stroke-width:1px}svg .tick{fill:var(--muted);font-size:11px}svg .cross{stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 3}svg .dot,svg .ring{stroke:var(--card);stroke-width:2px}.tip{border:1px solid var(--line);background:var(--bg);border-radius:8px;flex-wrap:wrap;align-items:center;gap:.2rem 1rem;margin-top:.2rem;padding:.4rem .6rem;font-size:.85rem;display:flex}.tip i{border-radius:3px;width:10px;height:10px;margin-right:.35rem;display:inline-block}.chart-table{margin-top:.4rem}.chart-table summary{cursor:pointer;color:var(--muted);align-items:center;min-height:32px;font-size:.85rem;display:flex}details.card.chart-table summary{color:var(--text);font-size:1rem;font-weight:600}.table-wrap{overflow-x:auto}.table-wrap table{border-collapse:collapse;width:100%;font-size:.9rem}.table-wrap th,.table-wrap td{border-top:1px solid var(--line);text-align:left;padding:.35rem .6rem}.table-wrap th.num,.table-wrap td.num{text-align:right}.hbars{gap:.45rem;margin:0;padding:0;list-style:none;display:grid}.hbars li{grid-template-columns:minmax(5rem,9rem) 1fr auto;align-items:center;gap:.6rem;font-size:.9rem;display:grid}.hbars .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hbars .track{background:color-mix(in srgb, var(--line) 55%, transparent);border-radius:4px;height:12px;position:relative}.hbars .fill{background:var(--series-1);border-radius:0 4px 4px 0;position:absolute;top:0;bottom:0;left:0}.hbars .fill.over{background:var(--series-2)}.hbars .budget{background:var(--text);width:2px;position:absolute;top:-3px;bottom:-3px}.hbars .num{white-space:nowrap}.filters{grid-template-columns:1fr 9rem;gap:.5rem;margin-bottom:.6rem;display:grid}.filters .search{margin:0}.tx-list{background:var(--card);border:1px solid var(--line);border-radius:14px;margin:0 0 .8rem;padding:0;list-style:none;overflow:hidden}.tx{border-top:1px solid var(--line)}.tx:first-child{border-top:0}.tx.open{background:color-mix(in srgb, var(--accent) 6%, var(--card))}button.tx-main{text-align:left;width:100%;font:inherit;color:inherit;background:0 0;border:0;justify-content:space-between;gap:.8rem;min-height:52px;padding:.6rem .8rem;display:flex}.tx-text{gap:.1rem;min-width:0;display:grid}.tx-text strong{text-overflow:ellipsis;font-weight:600;overflow:hidden}.tx-side{font-variant-numeric:tabular-nums;flex:none;justify-items:end;gap:.2rem;display:grid}.pill{border:1px solid var(--line);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;border-radius:10px;max-width:9rem;padding:.05rem .5rem;font-size:.72rem;overflow:hidden}.pill.on{background:color-mix(in srgb, var(--accent) 16%, transparent);border-color:var(--accent);color:var(--accent)}.tx-edit{padding:.2rem .8rem .8rem}table.plain-table{border-collapse:collapse;width:100%;font-size:.92rem}table.plain-table th,table.plain-table td{border-top:1px solid var(--line);text-align:left;padding:.45rem .7rem}table.plain-table thead th{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;border-top:0;font-size:.78rem;font-weight:600}table.plain-table th.num,table.plain-table td.num{text-align:right}table.plain-table tfoot th{border-top:2px solid var(--line)}table.plain-table tr.picked th,table.plain-table tr.picked td{background:color-mix(in srgb, var(--accent) 10%, transparent)}.rule-list li{padding:.4rem .8rem}input[type=file]{padding:.5rem}.summary{color:var(--muted);margin:0 0 .6rem;font-size:.9rem}
