:root{
  --fondo:#f5f6f8; --papel:#fff; --tinta:#1b2430; --suave:#5d6b7c; --linea:#dde2e8;
  --acento:#1f5fa8; --acento-2:#e8f0fa; --ok:#1e7b4a; --ok-f:#e6f4ec; --mal:#b3261e; --mal-f:#fdecea;
  --atencion:#8a5a00; --atencion-f:#fff4dc; --barra:#1f3a5f; --barra-t:#e9eef5;
  --radio:8px; --sombra:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08);
  color-scheme: light;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --fondo:#11161d; --papel:#19212b; --tinta:#e4e9ef; --suave:#97a3b2; --linea:#2b3542;
  --acento:#6ea8ef; --acento-2:#1d2b3d; --ok:#5cc28c; --ok-f:#173225; --mal:#ff8a80; --mal-f:#3a1d1b;
  --atencion:#f0c060; --atencion-f:#3a2f14; --barra:#0d1a2b; --barra-t:#dbe5f1; color-scheme: dark; }}
:root[data-theme="dark"]{
  --fondo:#11161d; --papel:#19212b; --tinta:#e4e9ef; --suave:#97a3b2; --linea:#2b3542;
  --acento:#6ea8ef; --acento-2:#1d2b3d; --ok:#5cc28c; --ok-f:#173225; --mal:#ff8a80; --mal-f:#3a1d1b;
  --atencion:#f0c060; --atencion-f:#3a2f14; --barra:#0d1a2b; --barra-t:#dbe5f1; color-scheme: dark; }
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--fondo);color:var(--tinta);font:14px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--acento)}
h1{font-size:1.45rem;margin:.2rem 0 .3rem} h2{font-size:1.05rem;margin:0 0 .7rem}
code{font-size:.92em;background:var(--acento-2);padding:0 .3em;border-radius:4px}
code.grande{font-size:1.15em;padding:.15em .5em}
.sub{color:var(--suave);margin:.1rem 0 .6rem}
.barra{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;background:var(--barra);color:var(--barra-t);padding:.55rem 1rem}
.barra a{color:var(--barra-t);text-decoration:none}
.marca{font-weight:700;font-size:1.02rem} .marca span{font-weight:400;opacity:.75}
.barra nav{display:flex;gap:.2rem;flex-wrap:wrap}
.barra nav a{padding:.3rem .65rem;border-radius:6px;opacity:.85} .barra nav a.activo,.barra nav a:hover{background:rgba(255,255,255,.12);opacity:1}
.selector{display:flex;align-items:center;gap:.4rem;margin-left:auto} .selector label{opacity:.8}
.selector select{max-width:280px}
.salir{display:flex;align-items:center;gap:.5rem} .quien{opacity:.8}
button.enlace{background:none;border:0;color:var(--barra-t);text-decoration:underline;cursor:pointer;font:inherit}
main{max-width:1240px;margin:0 auto;padding:1rem 16px 3rem} main.ancho{max-width:none} main.centrado{display:grid;place-items:center;min-height:90vh}
.tarjeta{background:var(--papel);border:1px solid var(--linea);border-radius:var(--radio);box-shadow:var(--sombra);padding:1rem 1.1rem;margin:0 0 1rem;overflow-x:auto}
.login{width:min(380px,100%);display:grid;gap:.75rem} .login h1{margin-bottom:0}
label{display:grid;gap:.25rem;font-weight:500}
input,select,textarea{font:inherit;color:var(--tinta);background:var(--papel);border:1px solid var(--linea);border-radius:6px;padding:.38rem .5rem}
input:focus,select:focus,button:focus-visible{outline:2px solid var(--acento);outline-offset:1px}
.boton,button.primario{display:inline-flex;align-items:center;gap:.3rem;font:inherit;cursor:pointer;border-radius:6px;padding:.38rem .75rem;border:1px solid var(--linea);background:var(--papel);color:var(--tinta);text-decoration:none;white-space:nowrap}
.boton:hover{border-color:var(--acento)} .boton:disabled{opacity:.45;cursor:default}
button.primario{background:var(--acento);border-color:var(--acento);color:#fff;font-weight:600}
.boton.peligro{color:var(--mal)}
.aviso{padding:.6rem .8rem;border-radius:6px;margin:0 0 .8rem;border:1px solid var(--linea)}
.aviso-ok{background:var(--ok-f);border-color:var(--ok)} .aviso-error{background:var(--mal-f);border-color:var(--mal)}
.cabecera-pagina{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin-bottom:.8rem}
.cabecera-pagina.compacta{margin-bottom:.4rem}
.acciones{display:flex;gap:.5rem;flex-wrap:wrap}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.8rem;margin-bottom:1rem}
.kpi{background:var(--papel);border:1px solid var(--linea);border-radius:var(--radio);box-shadow:var(--sombra);padding:.8rem 1rem;display:grid;gap:.15rem}
.kpi span{color:var(--suave);font-size:.85rem} .kpi strong{font-size:1.45rem;font-variant-numeric:tabular-nums} .kpi small{color:var(--suave)}
.rejilla-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:1rem}
@media (max-width:520px){.rejilla-2{grid-template-columns:1fr}}
.tabla{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.tabla th,.tabla td{padding:.35rem .5rem;border-bottom:1px solid var(--linea);text-align:left;vertical-align:top}
.tabla th{font-size:.8rem;color:var(--suave);font-weight:600}
.tabla .n{text-align:right;white-space:nowrap} .tabla tfoot td{font-weight:700;border-top:2px solid var(--linea)}
.tabla tr.apagado td{color:var(--suave)}
.chip{display:inline-block;padding:.05rem .5rem;border-radius:99px;font-size:.78rem;background:var(--acento-2);color:var(--acento);font-weight:600;vertical-align:middle}
.chip-cerrada{background:var(--ok-f);color:var(--ok)} .chip-revision{background:var(--atencion-f);color:var(--atencion)}
.chip-error{background:var(--mal-f);color:var(--mal)} .chip-aviso{background:var(--atencion-f);color:var(--atencion)}
.barras{display:grid;grid-template-columns:repeat(12,1fr);gap:.4rem;height:150px;align-items:end}
.barra-mes{display:grid;grid-template-rows:1fr auto;height:100%;align-items:end;text-align:center;color:var(--suave);font-size:.8rem}
.barra-mes .relleno{background:var(--acento);border-radius:4px 4px 0 0;min-height:2px}
.formulario{display:flex;flex-wrap:wrap;gap:.8rem;align-items:end}
form.en-linea{display:inline-flex;gap:.3rem;align-items:center;margin:.1rem 0}
details.aviso-det{border-bottom:1px solid var(--linea);padding:.45rem 0} details.aviso-det summary{cursor:pointer}
details.aviso-det pre{white-space:pre-wrap;font-size:.8rem;max-height:300px;overflow:auto;background:var(--fondo);padding:.5rem;border-radius:6px}
.herramientas{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:.3rem 0 .6rem}
.herramientas label{display:flex;align-items:center;gap:.3rem;font-weight:400}
.herramientas input[type=search]{min-width:240px}
.separador{flex:1}
.grupos-col{display:flex;gap:.6rem;border:0;padding:0;margin:0;flex-wrap:wrap}
.grupos-col legend{float:left;margin-right:.4rem;color:var(--suave)}
.grupos-col label{font-weight:400}
.totales-vivos{display:flex;gap:1.2rem;font-variant-numeric:tabular-nums;flex-wrap:wrap}
.totales-vivos div{display:grid} .totales-vivos span{font-size:.75rem;color:var(--suave)} .totales-vivos b{font-size:1.05rem}
dialog{border:1px solid var(--linea);border-radius:var(--radio);background:var(--papel);color:var(--tinta);max-width:min(900px,95vw);width:900px}
dialog::backdrop{background:rgba(0,0,0,.35)}
#tabla{border-radius:var(--radio)}
/* Tabulator con los colores de la app (app.css se carga DESPUÉS del CSS de Tabulator) */
.tabulator{background:var(--papel);border:1px solid var(--linea);font-size:13px;color:var(--tinta)}
.tabulator .tabulator-header,.tabulator .tabulator-header .tabulator-col,
.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{background:var(--fondo);color:var(--tinta);border-color:var(--linea)}
.tabulator .tabulator-header .tabulator-col input,.tabulator .tabulator-header .tabulator-col select{padding:2px 4px;font-size:12px;background:var(--papel);color:var(--tinta);border:1px solid var(--linea)}
.tabulator .tabulator-tableholder,.tabulator .tabulator-tableholder .tabulator-table{background:var(--papel);color:var(--tinta)}
.tabulator-row,.tabulator-row.tabulator-row-odd{background:var(--papel);color:var(--tinta);border-color:var(--linea)}
.tabulator-row.tabulator-row-even{background:var(--fondo)}
.tabulator-row.tabulator-selectable:hover{background:var(--acento-2)}
.tabulator-row.tabulator-selected,.tabulator-row.tabulator-selected:hover{background:var(--acento-2)!important}
.tabulator-row .tabulator-cell{border-color:var(--linea)}
.tabulator-row .tabulator-cell.tabulator-frozen{background:var(--papel)}
.tabulator-row.tabulator-row-even .tabulator-cell.tabulator-frozen{background:var(--fondo)}
.tabulator-row.tabulator-selected .tabulator-cell.tabulator-frozen{background:var(--acento-2)}
.tabulator .tabulator-header .tabulator-col.tabulator-frozen{background:var(--fondo)}
.tabulator-row.tabulator-calcs .tabulator-cell.tabulator-frozen{background:var(--acento-2)!important}
.tabulator-row .tabulator-cell.tabulator-editing{background:var(--papel);border:1px solid var(--acento)}
.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing textarea{background:var(--papel);color:var(--tinta)}
.tabulator-row.fila-borrada{opacity:.5;text-decoration:line-through}
.tabulator .tabulator-footer,.tabulator .tabulator-footer .tabulator-calcs-holder,.tabulator .tabulator-calcs-holder,
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row,.tabulator-row.tabulator-calcs,
.tabulator-row.tabulator-calcs .tabulator-cell{background:var(--acento-2)!important;color:var(--tinta);font-weight:700;border-color:var(--linea)}
.tabulator-row.tabulator-group,.tabulator-row.tabulator-group:hover{background:var(--acento-2);color:var(--tinta);border-color:var(--linea)}
.tabulator-row.tabulator-group span{color:var(--suave);margin-left:0}
.tabulator-cell.num{text-align:right;font-variant-numeric:tabular-nums}
.tabulator .tabulator-tableholder .tabulator-placeholder span{color:var(--suave)}
.tabulator-edit-list{background:var(--papel);color:var(--tinta);border-color:var(--linea)}
.tabulator-edit-list .tabulator-edit-list-item{color:var(--tinta)}
.tabulator-edit-list .tabulator-edit-list-item.active,.tabulator-edit-list .tabulator-edit-list-item:hover{background:var(--acento);color:#fff}
.tabulator-popup-container,.tabulator-tooltip{background:var(--papel);color:var(--tinta);border-color:var(--linea)}
/* fases 2-3 */
.mal{color:var(--mal)} .bien{color:var(--ok)}
.pestanas{display:flex;gap:.4rem;flex-wrap:wrap;margin:.2rem 0 1rem}
.pestanas a{padding:.3rem .7rem;border:1px solid var(--linea);border-radius:99px;text-decoration:none;background:var(--papel)}
.barras.doble .pareja{display:flex;gap:2px;align-items:end;height:100%}
.barras.doble .pareja .relleno{flex:1}
.relleno.ppto{background:var(--linea)!important;outline:1px solid var(--suave)}
.relleno.real{background:var(--acento)}
.leyenda{color:var(--suave);font-size:.85rem;display:flex;gap:.6rem;align-items:center}
.muestra{display:inline-block;width:12px;height:12px;border-radius:3px;margin-left:.6rem}
.muestra.ppto{background:var(--linea);outline:1px solid var(--suave)} .muestra.real{background:var(--acento)}
.tabla tr.clic{cursor:pointer} .tabla tr.clic:hover td{background:var(--acento-2)}
.tabla tr.atencion td{background:var(--atencion-f)}
.avance{width:110px;height:8px;border-radius:99px;background:var(--linea);overflow:hidden}
.avance div{height:100%;background:var(--ok)}
a.primario.boton{background:var(--acento);border-color:var(--acento);color:#fff;font-weight:600}
dialog .formulario{margin:.6rem 0}
