:root{--bg: #f4f6f5;--surface: #ffffff;--fg: #1c2422;--muted: #5b6965;--line: #dbe2df;--accent: #2b6a5e;--accent-soft: #dfeee9;--bad: #a3322a;--bad-soft: #fbe5e2;--display: "Fraunces", Georgia, serif;--body: "Figtree", system-ui, -apple-system, sans-serif;--mono: "JetBrains Mono", ui-monospace, Menlo, monospace}@media (prefers-color-scheme: dark){:root{--bg: #121816;--surface: #1a211f;--fg: #e4ebe8;--muted: #98a6a1;--line: #2b3532;--accent: #7dc3b3;--accent-soft: #1d3430;--bad: #f08a80;--bad-soft: #3b1f1c;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--body);font-size:15px;line-height:1.5}.wrap{max-width:1120px;margin:0 auto;padding:20px max(16px,env(safe-area-inset-right)) 40px max(16px,env(safe-area-inset-left))}header.top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}h1{font-family:var(--display);font-weight:600;font-size:25px;margin:0;line-height:1.15}h2{font-family:var(--display);font-weight:500;font-size:22px;margin:0 0 8px}.sub,.hint{color:var(--muted);font-size:14px}.who{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.pill{display:inline-block;font-size:12px;font-weight:600;padding:2px 9px;border-radius:999px;background:var(--accent-soft);color:var(--accent)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:18px}.btn{display:inline-block;font:inherit;font-weight:500;border:1px solid var(--line);background:var(--surface);color:var(--fg);padding:7px 12px;border-radius:6px;text-decoration:none}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--surface)}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.signin{min-height:100vh;display:grid;place-items:center;padding:16px}.signin .panel{width:min(420px,100%);display:grid;gap:12px;text-align:center}.error{background:var(--bad-soft);color:var(--bad);border-radius:6px;padding:8px 12px;font-size:14px;margin:0}:root{--warn: #965610;--warn-soft: #fbeedb;--sunk: #eef2f0}@media (prefers-color-scheme: dark){:root{--warn: #e6b16c;--warn-soft: #382b18;--sunk: #151c1a}}h3{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0;font-weight:600}.group{margin-top:22px}.group-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin-bottom:8px}.count{font-family:var(--mono);font-size:12px;background:var(--sunk);color:var(--fg);border-radius:999px;padding:0 7px}.empty{margin:0}.table-box{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:10px}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:middle}th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;background:var(--sunk)}tr:last-child td{border-bottom:0}tr.is-late td:first-child{box-shadow:inset 3px 0 0 var(--bad)}tr.is-done td{color:var(--muted)}.mono{font-family:var(--mono);font-size:13px;font-variant-numeric:tabular-nums}.pill.late{background:var(--bad-soft);color:var(--bad);margin-left:8px;font-family:var(--body)}.actions{display:flex;flex-wrap:wrap;gap:6px}.btn.ghost{border-color:transparent;background:none;color:var(--accent);cursor:pointer}button.btn{cursor:pointer}select{font:inherit;font-size:14px;padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--fg)}nav.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:20px}nav.tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:10px 14px;font:inherit;font-weight:500;color:var(--muted);cursor:pointer}nav.tabs button[aria-selected=true]{color:var(--accent);border-bottom-color:var(--accent)}.progress{height:8px;background:var(--sunk);border-radius:999px;overflow:hidden;margin:4px 0 12px}.progress i{display:block;height:100%;background:var(--accent)}form.quick{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}form.quick label{display:grid;gap:3px;font-size:12px;color:var(--muted);font-weight:500}form.quick input,form.quick select{font:inherit;font-size:14px;padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--fg);min-width:0}form.quick input:not([type=date]){width:150px}form.quick p{flex-basis:100%;margin:0}.ok{background:var(--accent-soft);color:var(--accent);border-radius:6px;padding:6px 10px;font-size:14px}.search{font:inherit;font-size:14px;padding:6px 10px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--fg);width:min(280px,100%);margin-left:auto}button.link{background:none;border:0;padding:0;font:inherit;font-weight:500;color:var(--fg);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;cursor:pointer;text-align:left}button.link:hover{text-decoration-color:var(--accent)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a141259;z-index:40}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100%);background:var(--surface);z-index:41;overflow-y:auto;padding:20px 22px 32px;box-shadow:-10px 0 30px #00000026;display:grid;gap:14px;align-content:start}.drawer .close{justify-self:end}.drawer h2{margin:0;font-size:26px}.kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 16px;font-size:14px;margin:0}.kv dt{color:var(--muted)}.kv dd{margin:0}ol.tl{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px}ol.tl li{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--line);border-radius:6px;font-size:14px}ol.tl li.state-transmitted{color:var(--muted)}ol.tl li.state-due{border-color:var(--bad)}.tl-right{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.tl-right input{font:inherit;font-size:13px;padding:3px 6px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--fg)}.pill.s-due{background:var(--bad-soft);color:var(--bad)}.pill.s-current{background:var(--warn-soft);color:var(--warn)}.pill.s-upcoming{background:var(--sunk);color:var(--muted)}.pill.s-transmitted,.pill.s-paid{background:var(--accent-soft);color:var(--accent)}.family textarea{width:100%;min-height:120px;font:inherit;font-size:14px;padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--sunk);color:var(--fg);margin:8px 0;resize:vertical}ul.log{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:13px}ul.log li{display:grid;grid-template-columns:84px minmax(0,1fr);gap:8px;color:var(--muted)}ul.log b{color:var(--fg);font-weight:500}.danger{border-top:1px solid var(--line);padding-top:12px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:14px}.danger-link{color:var(--bad)}.btn.danger-btn{background:var(--bad);border-color:var(--bad);color:var(--surface);cursor:pointer}ul.alerts{list-style:none;margin:0;padding:0;display:grid;gap:6px}ul.alerts li{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 12px;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--warn);border-radius:8px;font-size:14px}ul.alerts li.a-late_payment{border-left-color:var(--bad)}ul.alerts li.a-late_payment .pill{background:var(--bad-soft);color:var(--bad)}ul.alerts li.a-prior_approval .pill{background:var(--warn-soft);color:var(--warn)}:root{--k-inter: #7a5bb5;--k-multi: #2b6a5e;--k-ret: #b0742e}@media (prefers-color-scheme: dark){:root{--k-inter: #b39ae6;--k-multi: #7dc3b3;--k-ret: #e2ab6c}}.confirm{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;background:var(--accent-soft);border-radius:8px;margin:10px 0;font-size:14px}.wall-box{overflow-x:auto;padding-bottom:6px;margin-top:12px}.wall{display:grid;grid-template-columns:repeat(12,minmax(130px,1fr));gap:8px;min-width:1600px}.col{background:var(--sunk);border:1px dashed var(--line);border-radius:8px;padding:8px;min-height:280px;display:flex;flex-direction:column;gap:6px}.col.now{border:2px solid var(--accent);background:var(--accent-soft)}.col.over{border-style:solid;border-color:var(--accent)}.col .ch{display:flex;justify-content:space-between;font-weight:600;font-size:13px;text-transform:capitalize;padding-bottom:4px}.col .ch span{font-family:var(--mono);font-weight:400;color:var(--muted)}.tag{text-align:left;font:inherit;font-size:12.5px;line-height:1.3;color:var(--fg);background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--k-multi);border-radius:5px;padding:4px 7px;cursor:grab}.tag small{display:block;color:var(--muted);font-family:var(--mono);font-size:11px}.tag.k-interception{border-left-color:var(--k-inter)}.tag.k-retention{border-left-color:var(--k-ret)}.tag.late{border-color:var(--bad);border-left-color:var(--bad);background:var(--bad-soft)}.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:13px;color:var(--muted);margin-top:10px}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;background:var(--k-multi)}.dot.k-interception{background:var(--k-inter)}.dot.k-retention{background:var(--k-ret)}.dot.late{background:var(--bad)}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:12px 0 16px}.tile{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:grid}.tile b{font-family:var(--mono);font-size:24px;font-weight:500}.tile span{color:var(--muted);font-size:13px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}.bars{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px;height:170px;align-items:end;margin-top:12px}.bar-col{display:grid;grid-template-rows:auto 1fr auto;height:100%;align-items:end;text-align:center;font-size:11px;color:var(--muted)}.bar{background:var(--k-multi);border-radius:3px 3px 0 0;min-height:1px;align-self:end}.bar.b-end{background:var(--k-ret)}.bar-val{font-family:var(--mono)}.hbar{display:grid;grid-template-columns:120px minmax(0,1fr) 36px;gap:10px;align-items:center;font-size:14px;margin-top:10px}.track{background:var(--sunk);border-radius:4px;height:12px;overflow:hidden}.track i{display:block;height:100%;background:var(--accent)}
