:root{
  --fondo:#F4F6F9; --blanco:#FFFFFF; --tinta:#18233A; --gris:#4A5568; --linea:#E2E7EF;
  --azul:#1F3864; --azul2:#1F4E8C; --amarillo:#F2C200; --amarillo-suave:#FFF4C2;
  --rojo:#B42318; --verde:#1E7B4D;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--fondo);color:var(--tinta);
  font-family:Bahnschrift,'Barlow',system-ui,sans-serif;font-size:16px}
a{color:var(--azul2)}
button,input,select,textarea{font-family:inherit;font-size:15px}
.cargando{padding:60px;text-align:center;color:var(--gris)}

/* Acceso */
.acceso{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
.acceso .caja{background:var(--blanco);border:1px solid var(--linea);border-radius:14px;
  width:100%;max-width:420px;padding:32px 28px;display:flex;flex-direction:column;gap:16px}
.acceso img{height:64px;align-self:center}
.acceso h1{margin:0;font-size:22px;font-weight:600;text-align:center}
.acceso p{margin:0;color:var(--gris);font-size:14px;text-align:center}
label.campo{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--gris)}
input,select,textarea{height:44px;border:1px solid #C2CBDA;border-radius:8px;padding:0 12px;
  color:var(--tinta);background:#fff;width:100%}
textarea{height:auto;padding:10px 12px}
input:focus,select:focus{outline:2px solid var(--amarillo);border-color:var(--amarillo)}
.btn{height:44px;padding:0 20px;border-radius:8px;border:1px solid #C2CBDA;background:#fff;
  color:var(--tinta);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none}
.btn.prim{background:var(--amarillo);border-color:var(--amarillo);font-weight:600}
.btn.osc{background:var(--azul);border-color:var(--azul);color:#fff}
.btn.peq{height:34px;padding:0 12px;font-size:14px}
.btn:disabled{opacity:.6;cursor:default}
.aviso{padding:12px 14px;border-radius:8px;background:#FFF7DB;font-size:14px}
.aviso.error{background:#FDECEA;color:var(--rojo)}
.aviso.ok{background:#E7F5EE;color:var(--verde)}

/* Estructura */
.cab{background:var(--blanco);border-bottom:1px solid var(--linea);display:flex;align-items:center;
  justify-content:space-between;padding:12px 24px;gap:12px;flex-wrap:wrap}
.cab img{height:54px;display:block}
.cab .quien{display:flex;align-items:center;gap:10px;font-size:15px}
.ini{width:36px;height:36px;border-radius:18px;background:var(--azul);color:#fff;display:flex;
  align-items:center;justify-content:center;font-weight:600;font-size:14px}
.ini.adm{background:var(--amarillo);color:var(--tinta)}
.cuerpo{display:flex;min-height:calc(100vh - 80px)}
nav.menu{width:240px;flex:none;background:var(--blanco);border-right:1px solid var(--linea);
  padding:20px 14px;display:flex;flex-direction:column;gap:4px}
nav.menu.adm{background:var(--tinta);border-right:none}
nav.menu a{display:block;padding:12px 14px;border-radius:8px;color:#3D4A63;text-decoration:none;font-size:16px}
nav.menu.adm a{color:#DCE3F0}
nav.menu a.act{background:var(--amarillo-suave);color:var(--tinta);font-weight:600}
nav.menu.adm a.act{background:var(--amarillo);color:var(--tinta)}
nav.menu .esp{flex:1}
main{flex:1;min-width:0;padding:28px;display:flex;flex-direction:column;gap:22px}
h1.tit{margin:0;font-size:28px;font-weight:600}
.sub{margin:0;color:var(--gris);font-size:15px}
.fila{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}
.fila .campo{flex:1 1 180px}
.tarjeta{background:var(--blanco);border:1px solid var(--linea);border-radius:12px;padding:20px;
  display:flex;flex-direction:column;gap:14px}
.tarjeta h2{margin:0;font-size:18px;font-weight:600}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.kpi{background:var(--blanco);border:1px solid var(--linea);border-radius:12px;padding:16px 18px;
  display:flex;flex-direction:column;gap:6px}
.kpi .l{font-size:13px;color:var(--gris)}
.kpi .v{font-size:28px;font-weight:700}
.kpi .s{font-size:13px;color:var(--gris)}
.accesos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.acc{background:var(--blanco);border:1px solid var(--linea);border-radius:12px;padding:22px;
  text-decoration:none;color:var(--tinta);display:flex;flex-direction:column;gap:6px;min-height:130px;justify-content:flex-end}
.acc.osc{background:var(--tinta);color:#fff;border-color:var(--tinta)}
.acc .g{font-size:32px;font-weight:700}
.acc .t{font-size:20px;font-weight:600}
.acc .d{font-size:14px;color:var(--gris)}
.acc.osc .d{color:#C9D3E6}
.tabla{overflow-x:auto;border:1px solid var(--linea);border-radius:10px;background:#fff}
table{width:100%;border-collapse:collapse;font-size:14px}
th{background:var(--azul);color:#fff;text-align:left;padding:10px 12px;font-weight:600;white-space:nowrap}
td{padding:9px 12px;border-top:1px solid #EEF1F6;white-space:nowrap}
td.n,th.n{text-align:right}
td input{height:34px;min-width:80px}
.est{padding:3px 8px;border-radius:6px;font-size:12px;font-weight:600}
.est.pendiente{background:#FFF4C2;color:#8A6A00}
.est.revisar{background:#FDECEA;color:var(--rojo)}
.est.ok,.est.leida{background:#E7F5EE;color:var(--verde)}
.rojo{color:var(--rojo)}
.barras{display:flex;align-items:flex-end;gap:8px;height:190px;border-bottom:1px solid #C2CBDA}
.barras .b{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;height:100%;font-size:11px}
.barras .b div{width:100%;max-width:32px;border-radius:6px 6px 0 0}
.etis{display:flex;gap:8px}.etis span{flex:1;text-align:center;font-size:12px;color:var(--gris)}
.hbar{display:grid;grid-template-columns:110px minmax(0,1fr) 56px;gap:10px;align-items:center;font-size:14px}
.hbar .f{height:12px;background:#EEF1F6;border-radius:6px}.hbar .f div{height:12px;border-radius:6px}
.dos{display:flex;flex-wrap:wrap;gap:20px}.dos>*{flex:1 1 380px}
.zona{border:2px dashed #C2CBDA;border-radius:12px;padding:28px;text-align:center;background:#fff;color:var(--gris)}
.pie{font-size:13px;color:var(--gris)}

@media (max-width:820px){
  .cuerpo{flex-direction:column}
  nav.menu{width:auto;flex-direction:row;overflow-x:auto;padding:8px 10px;border-right:none;border-bottom:1px solid var(--linea)}
  nav.menu a{white-space:nowrap;padding:10px 12px;font-size:15px}
  nav.menu .esp{display:none}
  main{padding:18px 16px}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .accesos{grid-template-columns:1fr}
  .cab{padding:10px 16px}.cab img{height:44px}
  h1.tit{font-size:24px}
}
