:root{--bg:#f4f6f9;--card:#fff;--ink:#0f172a;--mut:#64748b;--line:#e2e8f0;--pri:#1d4ed8;--pri2:#dbeafe;
--pos:#15803d;--neg:#b91c1c;--warn:#b45309;--side:#0b1f3a;--r:10px;font-size:14px}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,sans-serif;background:var(--bg);color:var(--ink)}
a{color:var(--pri);text-decoration:none}a:hover{text-decoration:underline}
.side{position:fixed;inset:0 auto 0 0;width:220px;background:var(--side);color:#cbd5e1;display:flex;flex-direction:column;padding:16px 10px}
.brand{color:#fff;font-weight:700;font-size:20px;display:flex;gap:10px;align-items:center;padding:6px 10px 18px}
.brand:hover{text-decoration:none}
.logo{background:#c8102e;color:#fff;border-radius:8px;width:32px;height:32px;display:grid;place-items:center;font-weight:800}
.side nav{display:flex;flex-direction:column;gap:2px}
.side nav a,.side-foot a{color:#cbd5e1;padding:8px 12px;border-radius:8px}
.side nav a:hover,.side-foot a:hover{background:#13315c;text-decoration:none;color:#fff}
.side nav a.on{background:#1e40af;color:#fff}
.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:2px;border-top:1px solid #1e3a5f;padding-top:10px}
.linkbtn{background:none;border:0;color:#94a3b8;cursor:pointer;padding:8px 12px;text-align:left;font:inherit}
.linkbtn:hover{color:#fff}
.main{margin-left:220px;padding:24px 28px;max-width:1500px}
.center{display:grid;place-items:center;min-height:100vh;padding:20px}
h1{font-size:22px;margin:0 0 4px}h2{font-size:16px;margin:0 0 12px}h3{font-size:14px;margin:0 0 8px;color:var(--mut);text-transform:uppercase;letter-spacing:.04em}
.sub{color:var(--mut);margin:0 0 18px}
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;margin-bottom:16px}
.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g3w{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) minmax(0,1fr)}
@media(max-width:1000px){.g2,.g3,.g3w,.g4{grid-template-columns:1fr}.side{position:static;width:auto}.main{margin:0;padding:16px}}
.kpi .v{font-size:24px;font-weight:700;margin-top:4px}.kpi .l{color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.pos{color:var(--pos)}.neg{color:var(--neg)}.mut{color:var(--mut)}.warn{color:var(--warn)}.r{text-align:right}.nowrap{white-space:nowrap}
table{width:100%;border-collapse:collapse}th,td{padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--mut);text-align:left;background:#f8fafc;position:sticky;top:0}
tr:hover td{background:#f8fafc}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tree td.d1{padding-left:24px}.tree td.d2{padding-left:44px}.tree td.d3{padding-left:64px}.tree tr.d0 td{font-weight:700;background:#f1f5f9}
.tree tr.d1 td:first-child{font-weight:600}
.badge{display:inline-block;padding:1px 8px;border-radius:99px;font-size:11px;background:#e2e8f0;color:#334155}
.badge.red{background:#fee2e2;color:#991b1b}.badge.green{background:#dcfce7;color:#166534}.badge.blue{background:var(--pri2);color:#1e3a8a}.badge.amber{background:#fef3c7;color:#92400e}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle}
.btn{display:inline-block;background:var(--pri);color:#fff;border:0;border-radius:8px;padding:8px 14px;cursor:pointer;font:inherit;font-weight:600}
.btn:hover{background:#1e40af;text-decoration:none}.btn.sec{background:#e2e8f0;color:var(--ink)}.btn.sec:hover{background:#cbd5e1}
.btn.danger{background:#dc2626}.btn.sm{padding:4px 10px;font-size:12px}.btn.ghost{background:none;color:var(--pri);padding:4px 6px}
input,select,textarea{font:inherit;padding:7px 9px;border:1px solid #cbd5e1;border-radius:7px;background:#fff;color:var(--ink);max-width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid var(--pri2);border-color:var(--pri)}
label{display:block;font-size:12px;color:var(--mut);margin-bottom:3px;font-weight:600}
.form{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 16px}
.form .full{grid-column:1/-1}.form input,.form select,.form textarea{width:100%}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:12px;background:var(--pri2);color:#1e3a8a}
.flash.error{background:#fee2e2;color:#991b1b}.flash.ok{background:#dcfce7;color:#166534}.flash.warn{background:#fef3c7;color:#92400e}
.bar{height:8px;background:#e2e8f0;border-radius:99px;overflow:hidden;min-width:80px}.bar>i{display:block;height:100%;background:var(--pos)}
.bar>i.over{background:var(--neg)}.bar>i.near{background:#f59e0b}
.chart{position:relative;height:260px}.chart.tall{height:340px}
.acct-list a{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px dashed var(--line);color:var(--ink)}
.acct-list a:hover{text-decoration:none;color:var(--pri)}
.auth{width:100%;max-width:400px}.auth .card{padding:28px}.auth h1{display:flex;gap:10px;align-items:center;margin-bottom:16px}
.auth input{width:100%;margin-bottom:12px}.auth .btn{width:100%}
.qr{display:flex;justify-content:center;margin:12px 0}.qr svg{width:220px;height:220px}
.code{font-family:ui-monospace,Menlo,monospace;background:#f1f5f9;padding:8px;border-radius:6px;word-break:break-all;text-align:center}
.codes{display:grid;grid-template-columns:1fr 1fr;gap:6px;font-family:ui-monospace,Menlo,monospace}
.codes span{background:#f1f5f9;padding:6px;border-radius:6px;text-align:center}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px;flex-wrap:wrap}
.tabs a{padding:8px 14px;border-radius:8px 8px 0 0;color:var(--mut)}.tabs a.on{background:var(--card);border:1px solid var(--line);border-bottom-color:var(--card);color:var(--ink);font-weight:600;margin-bottom:-1px}
.reg-add{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:var(--r);padding:12px;margin-bottom:12px}
.reg-add .row>*{flex:1 1 120px}
.status{border:0;background:none;cursor:pointer;font-weight:700;color:var(--mut);width:22px}
.status.c{color:var(--pos)}.status.R{color:var(--pri)}
.scroll{max-height:620px;overflow:auto}
details summary{cursor:pointer;color:var(--pri);font-weight:600}
.empty{color:var(--mut);text-align:center;padding:24px}
.cat-tree ul{list-style:none;padding-left:18px;margin:2px 0}.cat-tree>ul{padding-left:0}
.cat-tree li{padding:2px 0}.cat-tree .k{font-weight:700}
.alert{border-left:4px solid var(--neg);background:#fef2f2;padding:10px 14px;border-radius:6px;margin-bottom:12px}
.between{justify-content:space-between}.narrow{max-width:520px}
/* Reportes v2 */
.filters input[type=search]{min-width:220px}
.small{font-size:12px}
.pie-card{display:grid;grid-template-columns:220px minmax(0,1fr);gap:16px;align-items:center}
.pie-card .l{color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.pie-card .v{font-size:28px;font-weight:800;margin:4px 0}
.chart.pie{height:250px}
@media (max-width:800px){.pie-card{grid-template-columns:1fr}}
table.flat td{padding-top:7px;padding-bottom:7px}
table.flat tr.tot td,table.xtree tr.tot td{font-weight:700;border-top:2px solid var(--line)}
.nuc{display:inline-block;font-size:10px;font-weight:700;padding:1px 5px;border-radius:4px;background:#e2e8f0;color:#334155;margin-right:4px;letter-spacing:.03em}
.nuc.col{background:#fef9c3;color:#854d0e}.nuc.hon{background:#dbeafe;color:#1e40af}.nuc.neg{background:#ede9fe;color:#5b21b6}.nuc.ing{background:#dcfce7;color:#166534}
table.xtree{width:100%}
table.xtree .w30{width:30%}
table.xtree tr.hide{display:none}
table.xtree tr.cat.has{cursor:pointer}
table.xtree tr.cat.has:hover td{background:#f8fafc}
table.xtree tr.l0 td{font-weight:700;background:#f1f5f9;font-size:15px}
table.xtree tr.l0.has:hover td{background:#e8eef6}
table.xtree tr.l1 td:first-child{font-weight:600}
table.xtree .tg{display:inline-block;width:16px;color:var(--mut);transition:transform .15s ease}
table.xtree tr.open > td .tg{transform:rotate(90deg)}
table.xtree .cnt{font-size:11px;color:var(--mut);background:#eef2f7;border-radius:99px;padding:0 6px;margin-left:4px;font-weight:500}
table.xtree tr.txn td{font-size:12.5px;color:#475569;background:#fcfdff;border-bottom-color:#f1f5f9}
table.xtree tr.txn .dt{display:inline-block;width:78px;color:var(--mut)}
table.xtree td.i1{padding-left:28px}table.xtree td.i2{padding-left:50px}table.xtree td.i3{padding-left:72px}table.xtree td.i4{padding-left:94px}
.bar.thin{height:6px}
.usd{color:var(--mut);font-size:12px;font-weight:500;margin-top:2px}.usd.big{font-size:15px}
.kpi .usd{font-size:13px}
