:root{
  --fondo:#f4f6f9; --panel:#ffffff; --texto:#1c2430; --suave:#5d6b7c; --borde:#dde2ea;
  --marca:#1f4fd8; --marca-txt:#ffffff; --ok:#0f7a3b; --ok-fondo:#e3f6ea; --err:#b3261e; --err-fondo:#fdeaea;
  --alerta-fondo:#fff4d6; --anulado:#8a94a3; --barra:#1f4fd8;
}
@media (prefers-color-scheme: dark){
  :root{
    --fondo:#10151c; --panel:#18202b; --texto:#e6ebf2; --suave:#9aa7b8; --borde:#2a3444;
    --marca:#6c8cff; --marca-txt:#0b1020; --ok:#5fd18a; --ok-fondo:#12301f; --err:#ff8a80; --err-fondo:#3a1a18;
    --alerta-fondo:#3a3115; --anulado:#7d8796; --barra:#6c8cff;
  }
}
*{box-sizing:border-box}
body{margin:0;background:var(--fondo);color:var(--texto);font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--marca)}
h1{font-size:1.5rem;margin:0 0 1rem}
h1 span{color:var(--suave);font-weight:400}
h2{font-size:1.1rem;margin:1.6rem 0 .6rem}
.top{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.2rem;background:var(--panel);border-bottom:1px solid var(--borde);padding:.6rem 1rem}
.marca{font-weight:700;letter-spacing:.02em}
.marca span{color:var(--suave);font-weight:400}
.top nav{display:flex;flex-wrap:wrap;gap:.2rem;flex:1}
.top nav a{padding:.35rem .7rem;border-radius:8px;text-decoration:none;color:var(--texto)}
.top nav a:hover{background:var(--fondo)}
.top nav a.act{background:var(--marca);color:var(--marca-txt)}
.usr{color:var(--suave);font-size:.9rem}
main{max-width:1280px;margin:0 auto;padding:1.2rem 1rem 3rem}
footer{text-align:center;color:var(--suave);font-size:.85rem;padding:1rem}
.filtros{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:end;background:var(--panel);border:1px solid var(--borde);border-radius:12px;padding:.8rem 1rem;margin-bottom:1rem}
.filtros label{display:flex;flex-direction:column;font-size:.8rem;color:var(--suave);gap:.2rem}
.filtros label.chk{flex-direction:row;align-items:center;gap:.4rem;padding-bottom:.45rem}
input,select{font:inherit;color:var(--texto);background:var(--fondo);border:1px solid var(--borde);border-radius:8px;padding:.45rem .6rem;min-width:9rem}
input[type=checkbox]{min-width:0}
button,.btn{font:inherit;background:var(--marca);color:var(--marca-txt);border:0;border-radius:8px;padding:.5rem 1rem;cursor:pointer;text-decoration:none;display:inline-block}
button.chico{padding:.25rem .6rem;font-size:.85rem}
.btn{padding:.2rem .7rem;font-size:.85rem}
.tarjetas{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.8rem;margin-bottom:1rem}
.kpi{background:var(--panel);border:1px solid var(--borde);border-radius:12px;padding:1rem}
.kpi span{display:block;color:var(--suave);font-size:.85rem}
.kpi b{display:block;font-size:1.7rem;margin:.2rem 0}
.kpi small{color:var(--suave)}
.kpi.alerta{background:var(--alerta-fondo)}
.scroll{overflow-x:auto;background:var(--panel);border:1px solid var(--borde);border-radius:12px}
table{border-collapse:collapse;width:100%;font-size:.88rem}
th,td{padding:.45rem .65rem;border-bottom:1px solid var(--borde);text-align:left;white-space:nowrap}
th{position:sticky;top:0;background:var(--panel);color:var(--suave);font-weight:600}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
tbody tr:hover{background:var(--fondo)}
tfoot td{font-weight:700;border-top:2px solid var(--borde)}
tr.alerta{background:var(--alerta-fondo)}
tr.anulado td{color:var(--anulado);text-decoration:line-through}
td.vacio{text-align:center;color:var(--suave);padding:1.4rem}
.acc{display:flex;gap:.4rem}
.acc form{margin:0}
.pequeno{color:var(--suave);font-size:.85rem}
.aviso{padding:.7rem 1rem;border-radius:10px;margin:.6rem 0}
.aviso.ok{background:var(--ok-fondo);color:var(--ok)}
.aviso.err{background:var(--err-fondo);color:var(--err)}
.codigo{font:700 1.8rem/1.2 ui-monospace,Consolas,monospace;letter-spacing:.12em;background:var(--panel);border:2px dashed var(--marca);border-radius:12px;padding:.8rem 1rem;display:inline-block}
.grafico{width:100%;max-width:760px;height:auto;background:var(--panel);border:1px solid var(--borde);border-radius:12px;padding:.5rem}
.grafico .barra{fill:var(--barra)}
.grafico .eje{fill:var(--suave);font-size:10px}
.centrado{display:grid;place-items:center;min-height:100vh;padding:1rem}
.tarjeta{background:var(--panel);border:1px solid var(--borde);border-radius:14px;padding:1.6rem;width:100%;max-width:400px}
.tarjeta.fija{max-width:420px}
.tarjeta form,.tarjeta.fija{display:grid;gap:.9rem}
.tarjeta label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:var(--suave)}
.tarjeta input{width:100%}
.panelform{background:var(--panel);border:1px solid var(--borde);border-radius:12px;padding:1rem;margin-bottom:1rem;display:grid;gap:.8rem}
.panelform h2{margin:0}
.panelform .campos{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.8rem}
.panelform label{display:flex;flex-direction:column;font-size:.8rem;color:var(--suave);gap:.2rem}
.panelform label.chk{flex-direction:row;align-items:center;gap:.5rem;font-size:.9rem;color:var(--texto);padding:.15rem 0}
.panelform fieldset{border:1px solid var(--borde);border-radius:10px;padding:.5rem .9rem}
.panelform legend{color:var(--suave);font-size:.85rem;padding:0 .3rem}
.pestanas{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:.8rem}
.pestanas a{padding:.35rem .8rem;border:1px solid var(--borde);border-radius:8px;text-decoration:none;color:var(--texto);background:var(--panel)}
.pestanas a.act{background:var(--marca);color:var(--marca-txt);border-color:var(--marca)}
.panelform select{width:100%}
#abono-facturas[hidden]{display:none}
.panelform td input[type=radio]{min-width:0;width:1.2rem;height:1.2rem}
