:root,[data-theme=light]{--bg:#f4f6f9;--fg:#1d2733;--card:#fff;--border:#dde3ea;--th:#eef2f6;--input-bg:#fff;--input-border:#c5ced8;--muted:#5d6b7a;--faint:#9aa;--link:#1F4E78;--header:#1F4E78;--accent:#1F4E78;
--ok-bg:#e3f6e8;--ok-border:#9fd4ad;--bad-bg:#fde8e8;--bad-border:#e5a1a1;--bad-fg:#a40000;--warn-bg:#fff4d6;--warn-border:#e7c86b;--stripe:#f8fafc;
--st-draft:#fde9b6;--st-sent:#cfe3fb;--st-paid:#cfeed6;--st-void:#eee;--st-fg:#1d2733;color-scheme:light}
[data-theme=dark]{--bg:#0f141a;--fg:#dbe3ec;--card:#18202a;--border:#2a3542;--th:#1f2a36;--input-bg:#111820;--input-border:#344252;--muted:#93a1b0;--faint:#5f6d7b;--link:#7fb6ea;--header:#0b2540;--accent:#3a7fc1;
--ok-bg:#13301f;--ok-border:#2d6b45;--bad-bg:#3a1618;--bad-border:#7a2e33;--bad-fg:#ff8a8a;--warn-bg:#3a2f10;--warn-border:#7d6420;--stripe:#1b2430;
--st-draft:#5a4710;--st-sent:#173f66;--st-paid:#18502e;--st-void:#333;--st-fg:#e8eef4;color-scheme:dark}
*{box-sizing:border-box}body{font:14px/1.4 "Segoe UI",system-ui,sans-serif;margin:0;color:var(--fg);background:var(--bg)}
header{display:flex;gap:18px;align-items:center;background:var(--header);color:#fff;padding:8px 18px;flex-wrap:wrap}header a{color:#dce8f5;text-decoration:none}
.brand{font-size:18px;color:#fff}nav a{margin-right:14px}nav a:hover{color:#fff}.who{margin-left:auto;display:flex;gap:10px;align-items:center}
#presence .p{background:#2f6fa6;border-radius:10px;padding:2px 8px;margin-left:4px;font-size:12px}
main{padding:18px;max-width:1400px}h1 small{font-weight:normal;color:var(--muted);font-size:60%}
.card{background:var(--card);border:1px solid var(--border);border-radius:6px;padding:14px;margin:10px 0}.narrow{max-width:420px;margin:40px auto}
label{display:inline-flex;flex-direction:column;margin:4px 10px 4px 0;font-size:12px;color:var(--muted)}input,select,textarea,button{font:inherit;padding:5px 7px;border:1px solid var(--input-border);border-radius:4px}
textarea{width:100%;min-height:60px}button,.btn{background:#1F4E78;color:#fff;border:0;cursor:pointer;padding:6px 12px;border-radius:4px;text-decoration:none;display:inline-block}
button[disabled]{background:#99a}.link{background:none;color:var(--link);padding:2px 4px}header .link{color:#dce8f5}.inline{display:inline}
.grid{border-collapse:collapse;background:var(--card);width:100%;margin:6px 0 14px}.grid th,.grid td{border-bottom:1px solid var(--border);padding:4px 6px;text-align:left}.grid th{background:var(--th);font-size:12px}
.grid.small{width:auto}.num{text-align:right!important;font-variant-numeric:tabular-nums}.b{font-weight:600}.muted td{color:var(--faint)}.notes{font-size:12px;color:var(--muted);max-width:320px}
.wide{min-width:320px}.row{display:flex;flex-wrap:wrap}.totals{margin:8px 0 8px auto}.totals td{padding:2px 10px;text-align:right}
.st{padding:1px 7px;border-radius:9px;font-size:12px;background:#ddd}.st.Draft{background:#fde9b6}.st.Sent{background:#cfe3fb}.st.Paid{background:#cfeed6}.st.Void{background:#eee;color:#888}
.msg{background:var(--ok-bg);border:1px solid var(--ok-border);padding:8px;border-radius:4px}.err{color:var(--bad-fg)}div.err{background:var(--bad-bg);border:1px solid var(--bad-border);padding:8px;border-radius:4px}
.warn,#banner{background:var(--warn-bg);border:1px solid var(--warn-border);padding:8px 18px}.tiles{display:flex;gap:12px;flex-wrap:wrap}.tile{background:var(--card);border:1px solid var(--border);border-radius:6px;padding:12px 16px;min-width:200px;display:flex;flex-direction:column}
.tile b{font-size:22px}.tile span{font-size:12px;color:var(--muted)}.tile.bad{border-color:#d33;background:var(--bad-bg)}.tile.warn{border-color:var(--warn-border)}.bad td{background:var(--bad-bg)}.warnrow td{background:var(--warn-bg)}
.codes{background:var(--th);padding:10px;font-size:15px}.hint{color:var(--muted);font-size:12px}.filters{margin:8px 0}
.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:14px;margin:14px 0}
.chart{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px 14px;min-width:0}.chart.wide2{grid-column:1/-1}
.chart h3{margin:0 0 8px;font-size:15px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.chart h3 select{font-size:12px;padding:2px 4px}
.cv{position:relative;height:300px}.wide2 .cv{height:320px}.empty{color:var(--muted);text-align:center;margin:-180px 0 150px}
.legend{font-weight:normal;font-size:11px;color:var(--muted);margin-left:auto}.lg{display:inline-block;width:10px;height:10px;border-radius:2px;margin:0 3px 0 8px;vertical-align:-1px}
.lg.filed{background:#2e9b5c}.lg.due{background:#e0a526}.lg.over{background:#d33a3a}.lg.open{background:#8fb3d6}
details{margin-top:10px}summary{cursor:pointer;color:var(--link);font-weight:600}
@media (max-width:600px){.charts{grid-template-columns:1fr}.tile{min-width:0;flex:1 1 40%}nav a{white-space:nowrap;display:inline-block}.cv,.wide2 .cv{height:240px}main{padding:10px}nav a{margin-right:8px}}

input,select,textarea{background:var(--input-bg);color:var(--fg)}input[disabled],select[disabled],textarea[disabled]{opacity:.65}
a{color:var(--link)}header a,header .link{color:#dce8f5}button,.btn{background:var(--accent)}
.st{color:var(--st-fg)}.st.Draft{background:var(--st-draft)}.st.Sent{background:var(--st-sent)}.st.Paid{background:var(--st-paid)}.st.Void{background:var(--st-void);color:var(--faint)}
.tile.bad{background:var(--bad-bg)}.bad td{background:var(--bad-bg)}.warnrow td{background:var(--warn-bg)}
.grid tr:hover td{background:var(--stripe)}#themeToggle{font-size:18px;line-height:1}
.grid.lines input.wide{min-width:260px}@media (max-width:600px){.grid{display:block;overflow-x:auto;white-space:nowrap}.wide{min-width:200px}}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:6px}.scroll .grid{min-width:720px;white-space:nowrap}
.rep{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin:14px 0}.rep h2{margin:4px 0 8px;font-size:17px;display:flex;align-items:center;gap:10px}
.csv{font-size:12px;font-weight:normal;border:1px solid var(--border);border-radius:4px;padding:2px 8px;margin-left:auto;text-decoration:none}
.toc{display:flex;gap:6px;flex-wrap:wrap}.toc a{background:var(--th);border:1px solid var(--border);border-radius:14px;padding:3px 10px;font-size:12px;text-decoration:none}
.grid .sel,.grid tr.sel td{background:var(--stripe);font-weight:600}html{scroll-behavior:smooth}
.check{flex-direction:row;align-items:center;gap:6px;font-size:13px;color:var(--fg);margin:8px 0}
