:root{--bg:#f6f7f9;--surface:#fff;--text:#1c2330;--muted:#5f6b7a;--border:#d9dee5;--accent:#2f6fdf;--accent-text:#fff;--late:#b3261e;--late-bg:#fdecea;--soon:#8a5a00;--soon-bg:#fff4dc;--ok-bg:#e8f5ec;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#12161c;--surface:#1b2129;--text:#e6eaf0;--muted:#9aa6b4;--border:#2e3742;--accent:#6c9cff;--accent-text:#0d1117;--late:#ff8a80;--late-bg:#3a1d1b;--soon:#fc6;--soon-bg:#362a12;--ok-bg:#16301f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#12161c;--surface:#1b2129;--text:#e6eaf0;--muted:#9aa6b4;--border:#2e3742;--accent:#6c9cff;--accent-text:#0d1117;--late:#ff8a80;--late-bg:#3a1d1b;--soon:#fc6;--soon-bg:#362a12;--ok-bg:#16301f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:16px/1.45 system-ui,-apple-system,Segoe UI,sans-serif}main{margin:0 auto;padding:16px}h1{margin:0;font-size:1.4rem}h2{margin:28px 0 8px;font-size:1.1rem}.muted{color:var(--muted)}.error{color:var(--late)}header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}button,a.button{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;padding:8px 14px;text-decoration:none;display:inline-block}button.primary,a.button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}button:disabled{opacity:.5;cursor:default}button.link{color:var(--accent);text-align:left;background:0 0;border:none;padding:0}input,select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;width:100%;padding:8px 10px}label{margin:12px 0 4px;font-weight:600;display:block}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px}.login{max-width:380px;margin:12vh auto 0}.login .row{gap:8px;margin-top:12px;display:flex}.code{letter-spacing:.1em;margin:12px 0;font:700 2rem/1.2 ui-monospace,monospace}pre{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px;overflow-x:auto}.scroll{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 10px}tr:last-child td{border-bottom:none}th{color:var(--muted);font-size:.85rem;font-weight:600}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}td.wrap{white-space:normal;min-width:14rem}.detail{color:var(--muted);font-size:.9rem}.badge{border-radius:999px;padding:1px 8px;font-size:.85rem;display:inline-block}.late{background:var(--late-bg);color:var(--late)}.soon{background:var(--soon-bg);color:var(--soon)}.later{background:var(--ok-bg)}dialog{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:12px;width:min(440px,100vw - 32px);padding:20px}dialog::backdrop{background:#00000073}dialog h3{margin:0 0 8px}dialog ul{padding-left:1.2rem}.actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.choices{flex-wrap:wrap;gap:8px;display:flex}.choices label{align-items:center;gap:6px;margin:0;font-weight:400;display:flex}.choices input{width:auto}nav a.button{padding:6px 12px}.controls{align-items:center;margin:16px 0 12px}.controls select,.controls input{width:auto}table.report th[scope=row]{color:var(--text);background:var(--surface);font-size:1rem;font-weight:400;position:sticky;left:0}table.report tbody+tbody tr:first-child th,table.report tbody+tbody tr:first-child td{border-top:2px solid var(--border)}table.report tr:last-child td{border-bottom:1px solid var(--border)}table.report tbody:last-child tr:last-child td{border-bottom:none}table.report tr.total th[scope=row],table.report tr.total td{font-weight:600}table.report td.sum{background:var(--bg)}td.neg{color:var(--late)}.drop-hint{margin:16px 0}.drop-hint p{margin:0}ul.results{margin:8px 0}.actions.start{justify-content:flex-start;align-items:center}.soon-text{color:var(--soon)}td select{width:auto}.drop-overlay{color:#fff;pointer-events:none;z-index:10;background:#0000008c;justify-content:center;align-items:center;font-size:1.6rem;font-weight:600;display:flex;position:fixed;inset:0}.drop-overlay[hidden]{display:none}.drop-overlay p{border:3px dashed #fff;border-radius:16px;padding:48px 64px}:root{--chart-surface:#fcfcfb;--s1:#2a78d6;--s2:#eb6834;--s3:#1baf7a;--s4:#eda100;--s5:#e87ba4;--s6:#008300;--s7:#6250d6;--s8:#e34948;--chart-muted:#898781;--gain:#0ca30c;--loss:#d03b3b;--gridline:#e1e0d9;--baseline:#c3c2b7}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--chart-surface:#1a1a19;--s1:#3987e5;--s2:#d95926;--s3:#199e70;--s4:#c98500;--s5:#d55181;--s6:#008300;--s7:#9085e9;--s8:#e66767;--gridline:#2c2c2a;--baseline:#383835}}:root[data-theme=dark]{--chart-surface:#1a1a19;--s1:#3987e5;--s2:#d95926;--s3:#199e70;--s4:#c98500;--s5:#d55181;--s6:#008300;--s7:#9085e9;--s8:#e66767;--gridline:#2c2c2a;--baseline:#383835}.fill-s1{fill:var(--s1);background:var(--s1)}.fill-s2{fill:var(--s2);background:var(--s2)}.fill-s3{fill:var(--s3);background:var(--s3)}.fill-s4{fill:var(--s4);background:var(--s4)}.fill-s5{fill:var(--s5);background:var(--s5)}.fill-s6{fill:var(--s6);background:var(--s6)}.fill-s7{fill:var(--s7);background:var(--s7)}.fill-s8{fill:var(--s8);background:var(--s8)}.fill-muted{fill:var(--chart-muted);background:var(--chart-muted)}.fill-gain{fill:var(--gain);background:var(--gain)}.fill-loss{fill:var(--loss);background:var(--loss)}table.report th button.link{color:inherit;font:inherit}table.report th button.link:hover{color:var(--accent);text-decoration:underline}table.report th.selected,table.report th.selected button.link{color:var(--accent);font-weight:700}.charts{flex-wrap:wrap;gap:16px;margin-top:20px;display:flex}figure.chart{background:var(--chart-surface);border:1px solid var(--border);border-radius:12px;flex:340px;max-width:520px;margin:0;padding:16px}figure.chart.wide{flex-basis:100%;max-width:none}figure.chart figcaption{margin-bottom:12px;font-weight:600}svg.pie{width:100%;max-width:220px;margin:0 auto 12px;display:block}svg.pie .slice{stroke:var(--chart-surface);stroke-width:2px}svg.bars{max-width:100%;height:auto;display:block}svg.bars .grid{stroke:var(--gridline);stroke-width:1px}svg.bars .axis{stroke:var(--baseline);stroke-width:1px}svg.bars .tick{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}svg.bars .missing{fill:none;stroke:var(--baseline);stroke-dasharray:4 4}ul.legend{grid-template-columns:auto 1fr auto auto;align-items:center;gap:4px 10px;margin:0;padding:0;font-size:.9rem;list-style:none;display:grid}ul.legend li{display:contents}.swatch{border-radius:3px;width:12px;height:12px;display:inline-block}svg .sd-band{fill:var(--text);opacity:.07}svg .mean{stroke:var(--text);stroke-width:1.5px;stroke-dasharray:6 4;opacity:.7}svg .trend{stroke:var(--s2);stroke-width:2px}ul.legend.lines{grid-template-columns:auto auto auto;justify-content:start;margin-top:8px}.line-sample{display:block}table.bank th.section,table.bank td.section{border-left:2px solid var(--border)}table.bank tr.sections th{color:var(--text);border-bottom:none;padding-bottom:0;font-size:.9rem}:root{--age-green:#006300;--age-green-bg:#e3f4e3;--age-yellow:#7a5a00;--age-yellow-bg:#fff2cc;--age-orange:#9a3d12;--age-orange-bg:#fde3d6;--age-red:#b3261e;--age-red-bg:#fdecea}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--age-green:#6fd66f;--age-green-bg:#16301f;--age-yellow:#fc6;--age-yellow-bg:#362a12;--age-orange:#f5a37f;--age-orange-bg:#3a2216;--age-red:#ff8a80;--age-red-bg:#3a1d1b}}:root[data-theme=dark]{--age-green:#6fd66f;--age-green-bg:#16301f;--age-yellow:#fc6;--age-yellow-bg:#362a12;--age-orange:#f5a37f;--age-orange-bg:#3a2216;--age-red:#ff8a80;--age-red-bg:#3a1d1b}.age-green{color:var(--age-green);background:var(--age-green-bg)}.age-yellow{color:var(--age-yellow);background:var(--age-yellow-bg)}.age-orange{color:var(--age-orange);background:var(--age-orange-bg)}.age-red{color:var(--age-red);background:var(--age-red-bg)}section>.scroll:first-child{margin-top:16px}.editable{align-items:center;gap:6px;display:inline-flex}.editable input{width:12rem;padding:4px 8px}button.edit{color:var(--muted);padding:0 4px}button.edit:hover{color:var(--accent)}button.small{padding:4px 10px;font-size:.9rem}
