:root{--bg:#f6f7f9;--fg:#1b1f24;--card:#fff;--bd:#dde1e6;--ac:#2563eb;--good:#15803d;--bad:#b91c1c;--mut:#6b7280;
--s0:#2563eb;--s1:#ea580c;--s2:#16a34a;--s3:#9333ea;--s4:#0891b2;--s5:#ca8a04}
@media(prefers-color-scheme:dark){:root{--bg:#14171b;--fg:#e6e8eb;--card:#1d2127;--bd:#2f353d;--ac:#6ea0ff;--good:#4ade80;--bad:#f87171;--mut:#9aa3ad}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:14px/1.45 system-ui,sans-serif}
header{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:var(--card);border-bottom:1px solid var(--bd)}
.who{color:var(--mut)}button,select,input{font:inherit;color:inherit;background:var(--card);border:1px solid var(--bd);border-radius:6px;padding:5px 9px}
button{cursor:pointer}
.cabs{display:flex;gap:6px;padding:10px 16px;flex-wrap:wrap}.cab{padding:6px 12px;border:1px solid var(--bd);border-radius:16px;color:var(--fg);text-decoration:none;background:var(--card)}
.cab.on{background:var(--ac);color:#fff;border-color:var(--ac)}
.layout{display:flex;gap:16px;padding:0 16px 24px}nav{width:200px;flex:none}main{flex:1;min-width:0}
.sec{font-weight:600;margin:12px 0 4px;color:var(--mut);text-transform:uppercase;font-size:12px}
.pg{display:block;padding:4px 8px;border-radius:6px;color:var(--fg);text-decoration:none}.pg.on{background:var(--ac);color:#fff}.pg.wip{color:var(--mut)}
.wip-note{display:block;padding:4px 8px;color:var(--mut);font-style:italic}
.period{display:flex;gap:8px;margin:8px 0;flex-wrap:wrap}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin:10px 0}
.tile,.flow,.chart,.tbl{background:var(--card);border:1px solid var(--bd);border-radius:8px;padding:12px;margin:10px 0}.tiles .tile{margin:0}
.tl{color:var(--mut)}.tv{font-size:22px;font-weight:600}.delta{font-size:12px}.delta.good{color:var(--good)}.delta.bad{color:var(--bad)}.delta.flat{color:var(--mut)}
h3{margin:0 0 8px;font-size:15px}
.fr{display:grid;grid-template-columns:160px 1fr 190px;gap:8px;align-items:center;margin:3px 0}.fbg{fill:var(--bd)}.fbar{fill:var(--s1)}.fv{text-align:right}
.chart svg{max-width:760px}.grid{stroke:var(--bd)}.ax{fill:var(--mut);font-size:10px}.line{stroke-width:2}.dot,.bar{stroke:none}
.line.s0,.dot.s0,.bar.s0,.sw.s0{stroke:var(--s0);fill:var(--s0)}.line.s1,.dot.s1,.bar.s1,.sw.s1{stroke:var(--s1);fill:var(--s1)}
.line.s2,.dot.s2,.bar.s2,.sw.s2{stroke:var(--s2);fill:var(--s2)}.line.s3,.dot.s3,.bar.s3,.sw.s3{stroke:var(--s3);fill:var(--s3)}
.line.s4,.dot.s4,.bar.s4,.sw.s4{stroke:var(--s4);fill:var(--s4)}.line.s5,.dot.s5,.bar.s5,.sw.s5{stroke:var(--s5);fill:var(--s5)}
.line{fill:none!important}.sw{display:inline-block;width:10px;height:10px;margin:0 4px 0 10px;border-radius:2px;stroke:none!important}
.fresh{display:inline-block;padding:2px 8px;border-radius:10px;background:var(--card);border:1px solid var(--bd);color:var(--good)}
.fresh.stale{color:var(--bad)}.fresh.none{color:var(--mut)}
.note{padding:8px 12px;margin:8px 0;border-left:4px solid var(--s5);background:var(--card);border-radius:4px}.note.err{border-color:var(--bad)}
.tools{display:flex;gap:8px;align-items:center;margin-bottom:8px}.cnt{color:var(--mut)}.tw{overflow:auto;max-height:560px}
table.dt{border-collapse:collapse;width:100%}.dt th,.dt td{padding:5px 8px;border-bottom:1px solid var(--bd);text-align:left;white-space:nowrap}
.dt th{position:sticky;top:0;background:var(--card);cursor:pointer}.dt .n{text-align:right}.dt th.asc::after{content:" ▲"}.dt th.desc::after{content:" ▼"}
.login{max-width:320px;margin:15vh auto;display:grid;gap:10px;padding:20px}.err{color:var(--bad)}.plain{padding:24px}
@media(max-width:700px){.layout{flex-direction:column}nav{width:auto}.fr{grid-template-columns:1fr}}
.tsub{font-size:12px;color:var(--mut)}
