:root{--bg:#f4f6fa;--card:#fff;--ink:#1d2433;--mute:#667085;--line:#e3e8f0;--brand:#1f3864;--acc:#e8590c;--ok:#2b8a3e;--bad:#c92a2a;--warn:#f08c00}
*{box-sizing:border-box}
body{margin:0;font:14px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink)}
a{color:var(--brand)}
header.top{background:var(--brand);color:#fff;padding:0 16px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
header.top .brand{font-weight:700;padding:12px 0;letter-spacing:.2px}
header.top nav{display:flex;gap:2px;flex-wrap:wrap;flex:1}
header.top nav a{color:#d6e0f5;text-decoration:none;padding:12px 10px;border-bottom:3px solid transparent}
header.top nav a:hover,header.top nav a.on{color:#fff;border-bottom-color:var(--acc)}
header.top form{margin:0}
main{max-width:1280px;margin:0 auto;padding:18px 16px 60px}
h1{font-size:20px;margin:6px 0 14px}h2{font-size:16px;margin:22px 0 8px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-bottom:16px}
.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.kpi .v{font-size:22px;font-weight:700}.kpi .l{color:var(--mute);font-size:12px}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:12px}.flash.ok{background:#e6f4ea;color:#14532d}.flash.err{background:#fde8e8;color:#7f1d1d}
table{border-collapse:collapse;width:100%}
th,td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{background:#eef2f9;font-size:12px;color:#344054;position:sticky;top:0}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
tr.b td{font-weight:700;background:#f8fafc}tr.h td{background:#e8eefb;font-weight:700}
input,select,button,textarea{font:inherit}
input[type=text],input[type=date],input[type=number],input[type=password],select{padding:6px 8px;border:1px solid #cfd6e4;border-radius:6px;background:#fff;max-width:100%}
.btn{display:inline-block;background:var(--brand);color:#fff;border:0;border-radius:6px;padding:7px 12px;cursor:pointer;text-decoration:none}
.btn.sec{background:#fff;color:var(--brand);border:1px solid var(--brand)}.btn.acc{background:var(--acc)}.btn.sm{padding:4px 8px;font-size:12px}
.badge{display:inline-block;border-radius:10px;padding:1px 8px;font-size:11px;font-weight:600}
.b-imported{background:#e5e7eb;color:#374151}.b-auto{background:#fff3bf;color:#7c5e00}.b-manual{background:#d3f9d8;color:#1b5e20}.b-suspense{background:#ffe3e3;color:#a61e1e}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}.tabs a{padding:5px 11px;border:1px solid var(--line);border-radius:16px;text-decoration:none;background:#fff;color:#344054}
.tabs a.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.mute{color:var(--mute)}.in{color:var(--ok)}.out{color:var(--bad)}.small{font-size:12px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.pv{font-size:12px;color:#475467;margin-top:3px}
.line td{padding-top:9px}
.err-t{color:var(--bad);font-size:12px}
.auth{max-width:380px;margin:12vh auto;padding:0 16px}
label.f{display:block;margin:8px 0 3px;font-size:12px;color:var(--mute)}
@media(max-width:820px){
 header.top{gap:6px;padding:0 10px}header.top nav{flex-wrap:nowrap;overflow-x:auto;flex-basis:100%;order:3}header.top nav a{white-space:nowrap}
 table.cards thead{display:none}table.cards tr{display:block;border:1px solid var(--line);border-radius:8px;margin-bottom:10px;background:#fff;padding:6px 8px}
 table.cards td{display:block;border:0;padding:3px 0}table.cards td.n{text-align:left}
 table.cards td[data-l]::before{content:attr(data-l)": ";color:var(--mute);font-size:11px}
 header.top nav a{padding:9px 8px}
}
@media print{header.top,.noprint{display:none}body{background:#fff}.card{border:0;padding:0}}

/* ---------- Dashboard ---------- */
.dash{--c-inc:#2a78d6;--c-exp:#eb6834;--c-exp2:#f4a582;--c-pro:#1baf7a;--c-pro-t:#0f7a55;--t2:#52514e}
.dh{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:2px 0 14px}
.dh h1{margin:0;font-size:22px}.dh .sub{color:var(--mute);font-size:13px}
.dh form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.hero{display:grid;gap:14px;grid-template-columns:repeat(4,1fr);margin-bottom:14px}
.tile{position:relative;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px 12px;overflow:hidden;box-shadow:0 1px 2px rgba(16,24,40,.04)}
.tile::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--tc,#98a2b3)}
.tile .l{font-size:12px;color:var(--mute);letter-spacing:.2px;text-transform:uppercase;font-weight:600}
.tile .v{font-size:26px;font-weight:750;margin:4px 0 2px;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
.tile .v small{font-size:14px;font-weight:600;color:var(--mute);margin-left:2px}
.tile .d{font-size:12px;color:var(--t2)}
.tile svg.sp{display:block;width:100%;height:34px;margin-top:6px}
.t-inc{--tc:var(--c-inc)}.t-exp{--tc:var(--c-exp)}.t-pro{--tc:var(--c-pro)}.t-cash{--tc:#6250d6}
.pos{color:#006300}.neg{color:#b42318}
.mini{display:grid;gap:12px;grid-template-columns:repeat(6,1fr);margin-bottom:14px}
.mini .tile{padding:11px 14px 10px;border-radius:12px}.mini .tile .v{font-size:17px;margin:2px 0 0}.mini .tile .l{font-size:11px}
.mini .tile::before{width:3px}
.pan{display:grid;gap:14px;grid-template-columns:repeat(12,1fr);margin-bottom:14px}
.pan>.card{margin:0;border-radius:14px;box-shadow:0 1px 2px rgba(16,24,40,.04)}
.s12{grid-column:span 12}.s8{grid-column:span 8}.s7{grid-column:span 7}.s6{grid-column:span 6}.s5{grid-column:span 5}.s4{grid-column:span 4}
.card h3{margin:0 0 2px;font-size:15px}.card .cap{font-size:12px;color:var(--mute);margin-bottom:8px}
.lg{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--t2);margin:2px 0 6px}
.lg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.lg i.ln{height:3px;border-radius:2px;width:14px;vertical-align:3px}
.ch{position:relative;width:100%}.ch svg{display:block;width:100%;height:auto;overflow:visible}
.ch text{font-family:inherit;fill:#667085;font-size:11px}
.tip{position:absolute;pointer-events:none;background:#101828;color:#fff;font-size:12px;border-radius:8px;padding:8px 10px;opacity:0;transition:opacity .08s;z-index:5;min-width:150px;box-shadow:0 6px 20px rgba(16,24,40,.25)}
.tip b{display:block;margin-bottom:3px}.tip div{display:flex;justify-content:space-between;gap:14px;font-variant-numeric:tabular-nums}
.tip i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px}
.hb{display:grid;grid-template-columns:minmax(90px,38%) 1fr auto;gap:4px 10px;align-items:center;font-size:13px}
.hb .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hb .tr{height:12px;background:#eef2f6;border-radius:6px;overflow:hidden}.hb .tr b{display:block;height:100%;border-radius:0 4px 4px 0}
.hb .vl{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.hb .vl em{font-style:normal;color:var(--mute);font-size:11px;margin-left:5px}
.bridge{display:flex;gap:2px;height:38px;margin:10px 0 8px}
.bridge div{border-radius:4px;min-width:3px;display:flex;align-items:center;padding:0 8px;font-size:12px;color:#fff;font-weight:600;overflow:hidden;white-space:nowrap}
.bl{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--t2)}.bl span i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px}
.bl b{color:var(--ink);font-variant-numeric:tabular-nums}
.vt td,.vt th{padding:6px 8px;font-size:13px}
.alert{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.alert a,.alert span{padding:7px 12px;border-radius:20px;font-size:13px;text-decoration:none;border:1px solid var(--line);background:#fff;color:var(--ink)}
.alert .w{background:#fff8e6;border-color:#f5d68a}.alert .e{background:#fde8e8;border-color:#f3b3b3}.alert .g{background:#e8f6ec;border-color:#b6dfc2}
details.tv summary{cursor:pointer;color:var(--brand);font-size:13px}
@media(max-width:1100px){.hero{grid-template-columns:repeat(2,1fr)}.mini{grid-template-columns:repeat(3,1fr)}.s8,.s7,.s6,.s5,.s4{grid-column:span 12}}
@media(max-width:560px){.hero{gap:10px}.tile .v{font-size:21px}.mini{grid-template-columns:repeat(2,1fr)}.hb{grid-template-columns:minmax(80px,45%) 1fr auto}}
.tile.nb{box-shadow:none;border:0;padding:0}.tile.nb::before{display:none}
@media(max-width:560px){.hero{grid-template-columns:1fr}.tile .v{font-size:24px}.mini .tile .v{font-size:15px}.pan>.card{overflow-x:auto;padding:12px}.vt td,.vt th{padding:5px 5px;font-size:12px}}
