[hidden]{display:none!important}
:root{--azul:#1B365D;--fondo:#f5f6f8;--borde:#c9ced6;--texto:#111;--suave:#3d4652;--ok:#1e7a3a;--mal:#b00020;--alerta:#a15c00}
*{box-sizing:border-box}
body{margin:0;font:18px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--texto);background:var(--fondo)}
h1{font-size:1.6rem;margin:.2em 0 .6em;color:var(--azul)}h2{font-size:1.25rem;color:var(--azul)}
.sub,.hint{color:var(--suave)}
header{display:flex;align-items:center;gap:1rem;background:var(--azul);color:#fff;padding:.5rem 1rem;flex-wrap:wrap;position:sticky;top:0;z-index:5}
header .marca{font-size:1.3rem}
nav{display:flex;gap:.25rem;flex-wrap:wrap;flex:1}
nav button{background:transparent;color:#fff;border:0;padding:.5rem .8rem;font-size:1rem;border-radius:6px;cursor:pointer}
nav button.activo,nav button:hover{background:rgba(255,255,255,.18)}
main{padding:1rem 1.25rem;max-width:1400px;margin:auto}
.btn{font-size:1rem;padding:.55rem 1rem;border-radius:8px;border:1px solid var(--borde);background:#fff;cursor:pointer;color:var(--texto)}
.btn.primario{background:var(--azul);color:#fff;border-color:var(--azul)}
.btn.peligro{background:var(--mal);color:#fff;border-color:var(--mal)}
.btn.chico{padding:.3rem .7rem;font-size:.9rem}
.btn:disabled{opacity:.45;cursor:not-allowed}
input,select,textarea{font:inherit;padding:.45rem .6rem;border:1px solid var(--borde);border-radius:8px;width:100%;background:#fff}
label{display:block;margin:.4rem 0;font-weight:600;color:var(--suave)}
.fila{display:flex;gap:.75rem;flex-wrap:wrap;align-items:end}.fila>*{flex:1;min-width:160px}
.panel{background:#fff;border:1px solid var(--borde);border-radius:10px;padding:1rem;margin-bottom:1rem}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{padding:.5rem .6rem;border-bottom:1px solid #e3e6ea;text-align:left;vertical-align:top}
th{background:#eef1f5;position:sticky;top:3.2rem}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}
tr.clic{cursor:pointer}tr.clic:hover{background:#f0f4fa}
.chip{display:inline-block;padding:.1rem .55rem;border-radius:99px;font-size:.85rem;background:#e6e9ee}
.chip.ok{background:#d8f0df;color:var(--ok)}.chip.mal{background:#fbdde2;color:var(--mal)}.chip.alerta{background:#fdebd0;color:var(--alerta)}
.tarjetas{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-bottom:1rem}
.tarjeta{background:#fff;border:1px solid var(--borde);border-radius:10px;padding:1rem}.tarjeta b{display:block;font-size:1.6rem;color:var(--azul)}
.tablero{display:grid;grid-template-columns:repeat(6,minmax(200px,1fr));gap:.75rem;overflow-x:auto}
.columna{background:#e9edf2;border-radius:10px;padding:.5rem;min-height:200px}.columna h3{font-size:1rem;margin:.2rem .3rem .5rem}
.ficha{background:#fff;border-radius:8px;padding:.5rem;margin-bottom:.5rem;border:1px solid var(--borde);font-size:.95rem}
.login{display:flex;align-items:center;justify-content:center;min-height:100vh}
.caja{background:#fff;padding:2rem;border-radius:12px;border:1px solid var(--borde);width:min(520px,94vw)}
.puestos{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.5rem;margin-bottom:1rem}
.puestos button{padding:.8rem;font-size:1rem;border-radius:8px;border:1px solid var(--borde);background:#f4f6f9;cursor:pointer}
.puestos button.sel{background:var(--azul);color:#fff}
.error{color:var(--mal);font-weight:600;min-height:1.4em}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:flex-start;justify-content:center;z-index:20;overflow:auto;padding:2rem 0}
.modal-caja{background:#fff;border-radius:12px;padding:1.25rem;width:min(1100px,96vw)}
#avisos{position:fixed;right:1rem;bottom:1rem;display:flex;flex-direction:column;gap:.5rem;z-index:30}
#avisos div{background:#222;color:#fff;padding:.7rem 1rem;border-radius:8px;max-width:420px}
#avisos div.mal{background:var(--mal)}#avisos div.ok{background:var(--ok)}
.acciones{display:flex;gap:.5rem;flex-wrap:wrap;margin:.75rem 0}
.tabs{display:flex;gap:.25rem;margin-bottom:.75rem;flex-wrap:wrap}.tabs button{border:1px solid var(--borde);background:#fff;border-radius:8px;padding:.4rem .9rem;font-size:1rem;cursor:pointer}.tabs button.activo{background:var(--azul);color:#fff}

.prelim{background:#fff6dc;border:1px solid #e8c766;border-radius:8px;padding:10px 12px;margin:8px 0;color:#5a4500}
.pestanas .btn{margin-bottom:4px}
.desliza{overflow-x:auto}
table.edit input,table.edit select{min-width:70px;padding:4px 6px}
table.edit td{padding:3px 4px}
tr.inactivo{opacity:.5}
ul.pend{list-style:none;padding:0} ul.pend li{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid #eee}
label.chk{display:flex;gap:6px;align-items:center}
.desliza th{position:static}
table.edit input[data-k=nombre],table.edit input[data-k=concepto],table.edit input[data-k=detalle],table.edit input[data-k=oficios]{min-width:140px}
.alerta-paro{background:#fde2e1;border:2px solid #c0392b;color:#7b1d14;border-radius:8px;padding:10px 12px;margin:8px 0}
