:root{
  --ink:#1b2b36; --ink2:#4a5b66; --muted:#7a8a94; --line:#dfe3e1; --line2:#eceeeb;
  --paper:#f5f3ee; --card:#fff; --navy:#1f3a4d; --navy2:#2c5068;
  --A:#2a7f62; --Aw:#e3f1eb; --B:#b0741a; --Bw:#f7ecd9;
  --ok:#14632f; --okw:#dcf2e3; --ko:#b42318; --kow:#fde2e0; --warnw:#fff4d6; --warn:#7a5300;
  --r:6px; --font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.45 var(--font)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--navy2);outline-offset:1px}
.num,td.n,th.n{font-variant-numeric:tabular-nums;text-align:right}
a{color:var(--navy2)}

/* Layout */
.top{position:sticky;top:0;z-index:20;background:var(--navy);color:#fff;display:flex;align-items:center;gap:12px;padding:8px 16px;flex-wrap:wrap}
.brand{font-weight:700;letter-spacing:.2px;display:flex;align-items:center;gap:8px;white-space:nowrap}
.brand small{font-weight:400;opacity:.7}
.top .sp{flex:1}
.top select,.top .btn{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.25);color:#fff;border-radius:var(--r);padding:5px 9px}
.top select option{color:var(--ink)}
.top .btn:hover{background:rgba(255,255,255,.2)}
.top .btn.primary{background:#fff;color:var(--navy);border-color:#fff;font-weight:600}
.top .btn.primary:disabled{opacity:.55}
.status{font-size:12px;padding:3px 8px;border-radius:20px;white-space:nowrap}
.status.dirty{background:#f6c75b;color:#3b2a00}.status.clean{background:rgba(255,255,255,.14)}
.status.off{background:var(--ko);color:#fff}
.presence{display:flex;gap:3px}
.av{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;color:#fff;background:#6b7c86;border:2px solid var(--navy)}
.av.A{background:var(--A)}.av.B{background:var(--B)}
.shell{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 50px)}
nav.side{border-right:1px solid var(--line);padding:14px 10px;background:#fbfaf7;position:sticky;top:50px;height:calc(100vh - 50px);overflow:auto}
nav.side button{display:block;width:100%;text-align:left;border:0;background:none;padding:8px 10px;border-radius:var(--r);cursor:pointer;color:var(--ink2)}
nav.side button:hover{background:var(--line2)}
nav.side button[aria-current="page"]{background:var(--navy);color:#fff;font-weight:600}
nav.side .sep{height:1px;background:var(--line);margin:10px 4px}
nav.side .me{font-size:12px;color:var(--muted);padding:6px 10px}
main{padding:20px 24px 80px;min-width:0;max-width:1400px}
h1{font-size:22px;margin:0 0 4px}
h2{font-size:16px;margin:0 0 10px;color:var(--navy)}
h3{font-size:14px;margin:14px 0 6px;color:var(--ink2);text-transform:uppercase;letter-spacing:.5px;font-size:12px}
.lead{color:var(--muted);margin:0 0 18px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:16px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row.end{justify-content:flex-end}
.fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px 14px}
label.f{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--ink2)}
label.f.wide{grid-column:span 2}
.hint{font-size:12px;color:var(--muted)}

/* Inputs */
input.i,select.i,textarea.i{border:1px solid var(--line);background:#fff;border-radius:4px;padding:5px 7px;min-width:0;width:100%}
input.i:hover:not(:disabled),select.i:hover:not(:disabled){border-color:#b8c2c7}
input.i:focus,select.i:focus{border-color:var(--navy2);outline:none;box-shadow:0 0 0 2px rgba(44,80,104,.15)}
input.i:disabled,select.i:disabled{background:transparent;border-color:transparent;color:var(--ink);cursor:default;appearance:none;-webkit-appearance:none}
td input.i,td select.i{padding:3px 5px}
input.i.num{text-align:right}
.btn{border:1px solid var(--line);background:#fff;border-radius:var(--r);padding:6px 11px;cursor:pointer;white-space:nowrap}
.btn:hover:not(:disabled){border-color:#9fb0b9;background:#fafafa}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.primary{background:var(--navy);color:#fff;border-color:var(--navy)}
.btn.primary:hover:not(:disabled){background:var(--navy2)}
.btn.danger{color:var(--ko)}
.btn.sm{padding:2px 7px;font-size:12px}
.ib{border:0;background:none;cursor:pointer;color:var(--muted);padding:2px 5px;border-radius:4px;font-size:14px;line-height:1}
.ib:hover:not(:disabled){background:var(--line2);color:var(--ink)}
.ib:disabled{opacity:.3;cursor:default}
.split-control{min-width:145px}.split-pct{display:flex;align-items:center;gap:4px;margin-top:3px}.split-pct input{width:78px;padding:2px 4px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:#fff}
.seg button{border:0;background:none;padding:5px 11px;cursor:pointer;color:var(--ink2)}
.seg button[aria-pressed="true"]{background:var(--navy);color:#fff}

/* Tables */
.tw{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:#fff}
table.t{border-collapse:collapse;width:100%;font-size:13px}
table.t th{position:sticky;top:0;background:#f1f3f2;font-weight:600;text-align:left;padding:7px 8px;border-bottom:1px solid var(--line);white-space:nowrap;color:var(--ink2);font-size:12px}
table.t td{padding:4px 8px;border-bottom:1px solid var(--line2);vertical-align:middle}
table.t tr:last-child td{border-bottom:0}
table.t tr.sum td{font-weight:700;background:#f8f8f5;border-top:1.5px solid var(--ink2)}
table.t tr.grp td{background:#fbfaf7;font-weight:600;color:var(--navy)}
table.t tr.child td{background:#fcfcfa;font-size:12px}
table.t tr.child td:nth-child(2){padding-left:24px}
table.t td.lbl{color:var(--ink2)}
table.kpi td{padding:7px 10px}
table.kpi td.n{min-width:120px}
th.A,td.A{box-shadow:inset 3px 0 0 var(--A)} th.B,td.B{box-shadow:inset 3px 0 0 var(--B)}
th.A{color:var(--A)}th.B{color:var(--B)}
.neg{color:var(--ko)}
.pill{display:inline-block;border-radius:20px;padding:1px 8px;font-size:11px;font-weight:700}
.pill.A{background:var(--Aw);color:var(--A)}.pill.B{background:var(--Bw);color:var(--B)}
.badge{display:inline-block;padding:2px 9px;border-radius:4px;font-size:12px;font-weight:700}
.badge.ok{background:var(--okw);color:var(--ok)}.badge.ko{background:var(--kow);color:var(--ko)}
.party-sel.A{color:var(--A);font-weight:600}.party-sel.B{color:var(--B);font-weight:600}

/* Split bar - the visual signature: shows cost key vs income share */
.splitbar{position:relative;height:28px;border-radius:4px;overflow:hidden;display:flex;font-size:12px;font-weight:700;color:#fff}
.splitbar .a{background:var(--A);display:flex;align-items:center;padding-left:8px}
.splitbar .b{background:var(--B);flex:1;display:flex;align-items:center;justify-content:flex-end;padding-right:8px}
.splitlbl{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin:8px 0 3px}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-bottom:16px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:10px 12px}
.kpi .k{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.kpi .v{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;margin-top:2px}
.kpi .s{font-size:12px;color:var(--ink2)}
.warns{background:var(--warnw);color:var(--warn);border:1px solid #f0d58c;border-radius:var(--r);padding:8px 12px;margin-bottom:16px}
.warns ul{margin:4px 0 0;padding-left:18px}
.bankcard{border-top:4px solid var(--navy)}
.bankcard.sel{border-top-color:var(--A)}
.bankhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.bankhead input{font-size:16px;font-weight:700;max-width:260px}
.formula{font-size:12px;color:var(--muted);background:#f6f7f5;border-radius:4px;padding:6px 9px;margin:8px 0}
.empty{padding:28px;text-align:center;color:var(--muted)}

/* Login */
.login{min-height:100vh;display:grid;place-items:center;padding:20px}
.login form{background:#fff;border:1px solid var(--line);border-radius:8px;padding:28px;width:min(360px,100%);display:grid;gap:12px;border-top:5px solid var(--navy)}
.login h1{font-size:20px}
.err{color:var(--ko);font-size:13px;min-height:1em}

/* Modal & toast */
dialog{border:0;border-radius:8px;padding:0;max-width:min(680px,94vw);width:100%;box-shadow:0 20px 60px rgba(0,0,0,.25)}
dialog::backdrop{background:rgba(20,30,40,.45)}
dialog .mh{padding:14px 18px;border-bottom:1px solid var(--line);font-weight:700;color:var(--navy)}
dialog .mb{padding:16px 18px;max-height:70vh;overflow:auto}
dialog .mf{padding:12px 18px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}
#toasts{position:fixed;bottom:16px;right:16px;display:grid;gap:8px;z-index:100}
.toast{background:var(--ink);color:#fff;padding:9px 14px;border-radius:var(--r);box-shadow:0 6px 20px rgba(0,0,0,.2);max-width:360px;font-size:13px}
.toast.err{background:var(--ko)}

@media (max-width: 900px){
  .shell{grid-template-columns:1fr}
  nav.side{position:static;height:auto;display:flex;overflow-x:auto;gap:4px;border-right:0;border-bottom:1px solid var(--line);padding:8px}
  nav.side button{white-space:nowrap;width:auto}
  nav.side .sep,nav.side .me{display:none}
  main{padding:14px 12px 60px}
  label.f.wide{grid-column:auto}
}
@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
