:root{--bg:#f4f6f9;--card:#fff;--ink:#1c2430;--muted:#6b7686;--line:#e3e8ef;--brand:#12507a;--brand-ink:#fff;--ok:#1b7f4b;--okbg:#e4f5ec;--warn:#a15c00;--warnbg:#fff1d6;--bad:#b42318;--badbg:#fde8e6;--side:#0f2a3f}
@media (prefers-color-scheme:dark){:root{--bg:#10151c;--card:#18202a;--ink:#e6ebf2;--muted:#93a0b2;--line:#2a3545;--brand:#4aa3df;--brand-ink:#08121b;--okbg:#12301f;--ok:#58c98a;--warnbg:#3a2b0b;--warn:#f0b34a;--badbg:#3c1714;--bad:#ff8a80;--side:#0b1118}}
*{box-sizing:border-box}html{font-size:15px}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink);display:flex;min-height:100vh}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}
h1{font-size:1.5rem;margin:.2rem 0 1rem}h2{font-size:1.05rem;margin:0 0 .8rem}h1 small,h2 small{font-weight:400;font-size:.8rem}
.muted{color:var(--muted)}.block{display:block}.center{text-align:center}.r{text-align:right}.contents{display:contents}
.side{width:220px;background:var(--side);color:#dbe6f0;display:flex;flex-direction:column;padding:1rem .7rem;position:sticky;top:0;height:100vh;flex:none}
.brand{font-weight:700;font-size:1.15rem;padding:.3rem .6rem 1.1rem;color:#fff}
.side nav{flex:1}.side nav a{display:flex;gap:.6rem;align-items:center;padding:.55rem .7rem;border-radius:8px;color:#c4d3e0;margin-bottom:2px}
.side nav a:hover{background:#ffffff12;text-decoration:none}.side nav a.on{background:#ffffff22;color:#fff}
.who{font-size:.85rem;border-top:1px solid #ffffff22;padding-top:.8rem}.who small{display:block;color:#8fa6ba;text-transform:capitalize}.who a{display:block;color:#9fc3e0;margin-top:.35rem}
.main{flex:1;min-width:0;padding:1.4rem 1.6rem 3rem}.main.center{display:flex;align-items:center;justify-content:center;flex-direction:column}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:1.1rem 1.2rem;margin-bottom:1rem}.card.flush{padding:0;overflow:hidden}.card.narrow,.narrow{max-width:420px;width:100%}
.scroll{overflow-x:auto}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:1rem;align-items:start}.grid2>.card{margin-bottom:0}
.head{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.btn{display:inline-block;font:inherit;padding:.5rem .9rem;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer}.btn:hover{text-decoration:none;border-color:var(--brand)}
.btn.primary{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}.btn.danger{color:var(--bad)}.btn.sm{padding:.25rem .6rem;font-size:.85rem}.btn.block{width:100%;margin-top:.6rem}
.link{background:none;border:0;cursor:pointer;font:inherit;padding:0 .3rem}.link.danger{color:var(--bad)}
form.inline{display:inline}
input,select,textarea{font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:.45rem .6rem;width:100%}
input[type=checkbox]{width:auto}input[type=file]{padding:.3rem;max-width:230px}
label{display:block;font-size:.82rem;color:var(--muted)}label input,label select,label textarea{margin-top:.25rem;color:var(--ink)}
.filters{display:flex;gap:.5rem;margin:.6rem 0 1rem;flex-wrap:wrap;align-items:center}.filters input{flex:1;min-width:220px;width:auto}.filters select{width:auto}
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.8rem}.span2{grid-column:span 2}.chk{display:flex;gap:.4rem;align-items:center;padding-top:1.4rem}
.addrow{display:flex;gap:.6rem;align-items:flex-end;flex-wrap:wrap;margin-top:.9rem;padding-top:.9rem;border-top:1px dashed var(--line)}.addrow label{flex:0 1 150px}.addrow label.grow{flex:1 1 180px}.card.addrow{background:var(--card)}
.login{text-align:left}.login h1{margin-bottom:.2rem}.login label{margin-top:.8rem}
.tbl{width:100%;border-collapse:collapse}.tbl th{font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);text-align:left;padding:.6rem .8rem;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl th.r{text-align:right}.tbl td{padding:.55rem .8rem;border-bottom:1px solid var(--line);vertical-align:top}.tbl.hover tbody tr:hover{background:color-mix(in srgb,var(--brand) 6%,transparent)}
.tbl.compact td,.tbl.compact th{padding:.4rem .55rem;font-size:.86rem;white-space:nowrap}.tbl tr.total td{font-weight:700;border-top:2px solid var(--line)}.tbl tfoot .total td{font-weight:700;border-top:2px solid var(--line)}.tbl tr.dim{opacity:.55}
.badge{display:inline-block;font-size:.72rem;padding:.1rem .5rem;border-radius:99px;font-weight:600;white-space:nowrap}
.badge.ok{background:var(--okbg);color:var(--ok)}.badge.warn{background:var(--warnbg);color:var(--warn)}.badge.bad{background:var(--badbg);color:var(--bad)}.badge.none{background:var(--line);color:var(--muted)}
.warnc{color:var(--warn);font-weight:600}.neg{color:var(--bad);font-weight:600}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.8rem;margin-bottom:1rem}
.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:.8rem 1rem}.stat small{display:block;color:var(--muted);font-size:.78rem}.stat b{font-size:1.45rem}.stat em{display:block;font-style:normal;font-size:.75rem;color:var(--muted)}
.stat.bad{border-color:var(--bad)}.stat.bad b{color:var(--bad)}.stat.warn{border-color:var(--warn)}.stat.warn b{color:var(--warn)}
.flash{padding:.6rem .9rem;border-radius:8px;margin-bottom:.8rem;background:var(--okbg);color:var(--ok)}.flash.err{background:var(--badbg);color:var(--bad)}.flash.warn{background:var(--warnbg);color:var(--warn)}
.profile{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.pinfo{flex:1;min-width:220px}.pinfo h1{margin:0 0 .2rem;font-size:1.35rem}.pinfo p{margin:0}
.avatar{width:72px;height:72px;border-radius:50%;background:var(--brand);color:var(--brand-ink);display:grid;place-items:center;font-size:1.8rem;font-weight:700;overflow:hidden;flex:none}.avatar img{width:100%;height:100%;object-fit:cover}
.tabs{display:flex;gap:.3rem;border-bottom:1px solid var(--line);margin-bottom:1rem;overflow-x:auto}.tabs a{padding:.6rem 1rem;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap}.tabs a.on{color:var(--brand);border-color:var(--brand);font-weight:600}.tabs a:hover{text-decoration:none;color:var(--ink)}
.dl{margin:0}.dl>div{display:grid;grid-template-columns:170px 1fr;gap:.5rem;padding:.4rem 0;border-bottom:1px solid var(--line)}.dl>div:last-child{border:0}.dl dt{color:var(--muted);font-size:.86rem}.dl dd{margin:0;word-break:break-word}
.hint{font-size:.8rem;color:var(--muted);margin:.8rem 0 0}.balance{text-align:right;font-size:1.05rem}
.bar{display:grid;grid-template-columns:minmax(90px,170px) 1fr 28px;gap:.6rem;align-items:center;margin:.35rem 0;font-size:.88rem}.bar .bl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar .bt{background:var(--line);height:10px;border-radius:5px;overflow:hidden}.bar i{display:block;height:100%;background:var(--brand)}.bar b{text-align:right}
@media (max-width:820px){body{flex-direction:column}.side{width:100%;height:auto;position:static;flex-direction:row;flex-wrap:wrap;align-items:center;padding:.6rem}.brand{padding:.2rem .6rem}.side nav{display:flex;flex-wrap:wrap;flex:1}.who{border:0;padding:0;display:flex;gap:.8rem;align-items:center;width:100%}.who small{display:inline;margin-left:.4rem}.who a{margin:0}.main{padding:1rem}.dl>div{grid-template-columns:120px 1fr}.span2{grid-column:auto}}
.nowrap{white-space:nowrap}.small{font-size:.85rem}.up{color:var(--ok);font-weight:600}
.loan.settled{opacity:.8}.lhead{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:flex-start;margin-bottom:.5rem}
.lnums{display:flex;gap:1rem;flex-wrap:wrap;align-items:center;font-size:.9rem}.lnums span{color:var(--muted)}.lnums b{color:var(--ink)}
input[readonly]{opacity:.75}
.chk2{display:flex;gap:.5rem;align-items:flex-start;color:var(--ink);font-size:.9rem}code{background:var(--bg);padding:.2rem .4rem;border-radius:6px;font-size:.82rem;word-break:break-word}
