/* =====================================================================
   Celera Reporting Engine — Sistema de diseño
   Marca oficial Celera (del brand kit / deck): acento VERDE tricolor.
   Minimalismo ejecutivo · blanco + negro + acento verde · números mono.
   ===================================================================== */

:root {
  /* Acento de marca Celera (verde). Se conservan los nombres --coral* para no
     romper referencias; su VALOR ahora es el verde oficial #439143. */
  --coral:#439143;  --coral-dark:#367433;  --coral-050:#EEF6EE;  --coral-100:#E1EFE1;
  --celera-verde:#439143;  --celera-rojo:#EA2721;  --celera-amarillo:#FFD10A;  --celera-oro:#B37D00;
  --negro:#231F20;  --gris:#4A4A4A;  --gris-2:#9A9A9A;
  --linea:#DCDCDC;  --linea-2:#F1F1F1;  --fila:#F4F4F4;  --blanco:#FFFFFF;
  --verde:#439143;  --verde-bg:#EAF4EA;
  --ambar:#B37D00;  --ambar-bg:#FBF3DA;
  --rojo:#EA2721;   --rojo-bg:#FDF1F0;  --rojo-linea:#F6CFCC;
  --font:'Archivo', Arial, Helvetica, sans-serif;
  --mono:'IBM Plex Mono', Consolas, monospace;
  --rail-w:212px;
}

* { margin:0; padding:0; box-sizing:border-box; }
html { font-size:15px; }
body { font-family:var(--font); color:var(--negro); background:#FAFAFA; -webkit-font-smoothing:antialiased; }
button { font-family:var(--font); cursor:pointer; }
input, select, textarea { font-family:var(--font); font-size:.9rem; color:var(--negro); }
:focus-visible { outline:2px solid var(--coral); outline-offset:1px; }
a { color:var(--negro); text-decoration:none; }
h1,h2,h3,h4 { line-height:1.2; }

/* ---------- Shell ---------- */
.app { display:grid; grid-template-columns:var(--rail-w) 1fr; min-height:100vh;
  background:var(--blanco); max-width:1440px; margin:0 auto;
  border-left:1px solid var(--linea); border-right:1px solid var(--linea); }

.rail { border-right:1px solid var(--linea); padding:1.3rem 0; display:flex; flex-direction:column; gap:.15rem; background:var(--blanco); }
.brand { padding:0 1.3rem 1.2rem; border-bottom:1px solid var(--linea); margin-bottom:1rem; }
.brand .logo { font-weight:800; letter-spacing:.28em; font-size:1.02rem; }
.brand .sub { font-size:.66rem; color:var(--gris-2); letter-spacing:.04em; margin-top:.15rem; }
.nav-item { padding:.62rem 1.3rem; font-size:.88rem; color:var(--gris); border-left:3px solid transparent;
  background:none; border-top:none; border-right:none; border-bottom:none; text-align:left; width:100%; display:block; }
.nav-item:hover { color:var(--negro); text-decoration:none; }
.nav-item.on { color:var(--negro); font-weight:700; border-left-color:var(--coral); background:linear-gradient(90deg,#FDF1EF,transparent 70%); }
.nav-label { font-size:.6rem; letter-spacing:.12em; text-transform:uppercase; color:var(--gris-2); padding:1rem 1.3rem .3rem; font-weight:700; }
.rail .foot { margin-top:auto; padding:1rem 1.3rem; font-size:.74rem; color:var(--gris-2); border-top:1px solid var(--linea); }
.rail .foot form { margin-top:.5rem; }

.main { min-width:0; display:flex; flex-direction:column; }
.content { padding:1.4rem 1.7rem 3rem; min-width:0; }

/* ---------- Encabezado de página ---------- */
.saludo { display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; flex-wrap:wrap; margin-bottom:1.3rem; }
.saludo h1 { font-size:1.45rem; font-weight:800; }
.saludo p { font-size:.82rem; color:var(--gris); margin-top:.25rem; }
.crumbs { font-size:.72rem; color:var(--gris-2); margin-bottom:.35rem; }
.crumbs a { color:var(--gris-2); }
.crumbs a:hover { color:var(--coral); }

/* ---------- Botones ---------- */
.btn { border:1px solid var(--linea); background:var(--blanco); padding:.55rem 1rem; font-size:.84rem; font-weight:600;
  border-radius:6px; color:var(--negro); display:inline-flex; align-items:center; gap:.4rem; line-height:1; }
.btn:hover { border-color:var(--gris-2); text-decoration:none; }
.btn.primario { background:var(--negro); border-color:var(--negro); color:#fff; }
.btn.primario:hover { background:#000; }
.btn.coral { background:var(--coral); border-color:var(--coral); color:#fff; }
.btn.coral:hover { background:var(--coral-dark); border-color:var(--coral-dark); }
.btn.validar { background:var(--coral); border-color:var(--coral); color:#fff; }
.btn.validar[disabled] { background:#F0B7AE; border-color:#F0B7AE; cursor:not-allowed; }
.btn.sm { padding:.4rem .7rem; font-size:.76rem; }
.btn[disabled] { opacity:.6; cursor:not-allowed; }

/* ---------- Stats ---------- */
.stats { display:grid; grid-template-columns:repeat(4,1fr); gap:.9rem; margin-bottom:1.5rem; }
.stat { border:1px solid var(--linea); border-radius:8px; padding:.95rem 1.05rem; background:var(--blanco); }
.stat .n { font-size:1.7rem; font-weight:800; font-variant-numeric:tabular-nums; }
.stat .n.coral { color:var(--coral); }
.stat .n.verde { color:var(--verde); }
.stat .n.rojo { color:var(--rojo); }
.stat .l { font-size:.72rem; font-weight:700; margin-top:.15rem; }
.stat .c { font-size:.66rem; color:var(--gris-2); margin-top:.1rem; }

/* ---------- Alerta de carga ---------- */
.alerta-carga { border:1px solid var(--rojo-linea); background:var(--rojo-bg); border-radius:8px; padding:.8rem 1rem;
  font-size:.8rem; display:flex; gap:.8rem; align-items:center; margin-bottom:1.5rem; flex-wrap:wrap; }
.alerta-carga b { color:var(--coral); }
.alerta-carga .btn { margin-left:auto; font-size:.76rem; padding:.4rem .8rem; }

/* ---------- Filtros ---------- */
.filtros { display:flex; gap:.6rem; margin-bottom:.9rem; flex-wrap:wrap; align-items:center; }
.filtros input[type=search] { border:1px solid var(--linea); border-radius:6px; padding:.5rem .8rem; min-width:220px; }
.filtros select { border:1px solid var(--linea); border-radius:6px; padding:.5rem .6rem; background:var(--blanco); color:var(--gris); }
.filtros .count { margin-left:auto; font-family:var(--mono); font-size:.72rem; color:var(--gris-2); }

/* ---------- Tablas ---------- */
table.data { width:100%; border-collapse:collapse; font-size:.84rem; }
table.data thead th { font-size:.64rem; letter-spacing:.08em; text-transform:uppercase; color:var(--gris-2);
  text-align:left; padding:.5rem .6rem; border-bottom:1px solid var(--linea); font-weight:700; }
table.data tbody td { padding:.68rem .6rem; border-bottom:1px solid var(--linea-2); vertical-align:middle; }
table.data tbody tr:hover { background:#FCFCFC; }
table.data tbody tr.clickable { cursor:pointer; }
.cli { font-weight:700; }
.sub { font-size:.7rem; color:var(--gris-2); font-family:var(--mono); }
.quien { font-size:.74rem; color:var(--gris); }
.cuando { font-size:.68rem; color:var(--gris-2); }
.prog { font-family:var(--mono); font-size:.72rem; color:var(--gris); }
.num { text-align:right; font-family:var(--mono); font-variant-numeric:tabular-nums; }
.accion-fila { font-size:.72rem; font-weight:700; color:var(--coral); background:none; border:none; white-space:nowrap; }
.accion-fila:hover { text-decoration:underline; }

/* ---------- Chips de estado ---------- */
.chip { font-size:.62rem; font-weight:700; letter-spacing:.05em; padding:.24rem .55rem; border-radius:99px;
  text-transform:uppercase; white-space:nowrap; display:inline-block; }
.chip.borrador { background:var(--coral-100); color:var(--coral); }
.chip.revision { background:var(--ambar-bg); color:#9a6a12; }
.chip.devuelto { background:var(--coral-100); color:var(--coral); }
.chip.aprobado { background:var(--verde-bg); color:var(--verde); }
.chip.emitido  { background:var(--fila); color:var(--gris); }
.chip.sinperiodo { background:var(--coral-100); color:var(--coral); }
.chip.validado { background:var(--verde-bg); color:var(--verde); }
.chip.tc { background:var(--fila); color:var(--gris); font-family:var(--mono); }

/* ---------- Semáforo ---------- */
.sem { display:inline-block; width:.72rem; height:.72rem; border-radius:50%; vertical-align:middle; }
.sem.v { background:var(--verde); } .sem.a { background:var(--ambar); }
.sem.r { background:var(--rojo); }  .sem.n { background:var(--linea); }
.sem-pill { display:inline-flex; align-items:center; gap:.4rem; font-size:.72rem; font-weight:700; }

/* ---------- Formularios ---------- */
.field { margin-bottom:1rem; }
.field > label { display:block; font-size:.78rem; font-weight:600; margin-bottom:.35rem; }
.input, .select, .textarea { width:100%; padding:.55rem .7rem; font-size:.9rem; color:var(--negro);
  background:var(--blanco); border:1px solid var(--linea); border-radius:6px; }
.input:focus, .select:focus, .textarea:focus { outline:none; border-color:var(--coral); box-shadow:0 0 0 3px var(--coral-050); }
.textarea { min-height:80px; resize:vertical; }
.ayuda { font-size:.7rem; color:var(--gris-2); margin-top:.3rem; }
.form-row { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:1rem; }
.monto { font-family:var(--mono); text-align:right; border:1px solid var(--linea); border-radius:5px;
  padding:.4rem .6rem; width:100%; font-variant-numeric:tabular-nums; background:var(--blanco); }
.monto:hover { border-color:var(--gris-2); }

/* ---------- Card genérica ---------- */
.card { background:var(--blanco); border:1px solid var(--linea); border-radius:8px; }
.card .card__body { padding:1rem 1.1rem; }
.kv { display:flex; justify-content:space-between; font-size:.8rem; padding:.3rem 0; }
.kv .k { color:var(--gris); } .kv .v { font-family:var(--mono); font-variant-numeric:tabular-nums; font-weight:500; }

/* ---------- Alerts (flash) ---------- */
.alert { padding:.7rem 1rem; border-radius:6px; font-size:.82rem; margin-bottom:1rem; border:1px solid transparent; }
.alert--success { background:var(--verde-bg); color:#14724C; border-color:#BFE7D2; }
.alert--error   { background:var(--rojo-bg); color:#A62E20; border-color:var(--rojo-linea); }
.alert--info    { background:var(--fila); color:var(--gris); border-color:var(--linea); }

/* ---------- Estado vacío ---------- */
.empty { text-align:center; padding:3rem 1.2rem; color:var(--gris-2); }
.empty__icon { font-size:2rem; margin-bottom:.6rem; opacity:.5; }

/* ---------- Login ---------- */
.auth-wrap { min-height:100vh; display:grid; place-items:center; background:#FAFAFA; padding:1.5rem; }
.auth-card { width:100%; max-width:390px; background:var(--blanco); border:1px solid var(--linea);
  border-radius:12px; box-shadow:0 12px 40px rgba(15,15,15,.08); padding:2.2rem 2rem; }
.auth-card .logo { font-weight:800; letter-spacing:.28em; font-size:1.15rem; }
.auth-card .sub { font-size:.68rem; color:var(--gris-2); letter-spacing:.04em; margin:.15rem 0 1.6rem; }

/* ---------- Utilidades ---------- */
.mb-0{margin-bottom:0}.mt-0{margin-top:0}.mb-1{margin-bottom:1rem}.mt-1{margin-top:1rem}.mb-2{margin-bottom:1.5rem}
.text-muted{color:var(--gris-2)} .flex{display:flex} .items-center{align-items:center}
.between{justify-content:space-between} .gap-8{gap:.5rem} .gap-12{gap:.8rem} .wrap{flex-wrap:wrap}
.ann{display:inline-flex;width:1.2rem;height:1.2rem;border-radius:50%;background:var(--coral);color:#fff;
  font-size:.68rem;font-weight:700;align-items:center;justify-content:center;font-family:var(--mono)}

/* =====================================================================
   Carga del periodo (pantalla de captura con cuadre en vivo)
   ===================================================================== */
.ctx { padding:1.1rem 1.7rem .9rem; border-bottom:1px solid var(--linea); display:flex;
  justify-content:space-between; gap:1rem; align-items:flex-start; flex-wrap:wrap; }
.ctx h1 { font-size:1.5rem; font-weight:800; letter-spacing:-.01em; display:flex; align-items:center; gap:.7rem; flex-wrap:wrap; }
.ctx .meta { font-size:.8rem; color:var(--gris); margin-top:.35rem; }
.ctx .acciones { display:flex; gap:.55rem; align-items:center; flex-wrap:wrap; }
.selector { display:flex; align-items:center; gap:.4rem; border:1px solid var(--linea); border-radius:6px; padding:.35rem .6rem; font-size:.84rem; background:var(--blanco); }
.selector select { border:none; background:none; font-weight:600; }
.chip.borrador.grande, .chip.validado.grande { font-size:.66rem; padding:.28rem .6rem; }

/* Pestañas por bloque */
.tabs { display:flex; gap:0; border-bottom:1px solid var(--linea); padding:0 1.7rem; background:var(--blanco); overflow-x:auto; }
.tab { padding:.85rem 1.05rem; font-size:.86rem; color:var(--gris); border:none; background:none;
  border-bottom:3px solid transparent; white-space:nowrap; display:flex; align-items:center; gap:.45rem; text-decoration:none; }
.tab .estado { width:.55rem; height:.55rem; border-radius:50%; background:var(--linea); }
.tab .estado.ok { background:var(--verde); } .tab .estado.warn { background:var(--ambar); }
.tab.on { color:var(--negro); font-weight:700; border-bottom-color:var(--negro); }
.tab:hover { color:var(--negro); }

/* Cuadre en vivo (elemento firma) */
.cuadre { display:flex; align-items:center; gap:1.2rem; padding:.75rem 1.7rem; background:var(--negro); color:#fff;
  font-family:var(--mono); font-size:.8rem; flex-wrap:wrap; }
.cuadre .lado { display:flex; gap:.5rem; align-items:baseline; }
.cuadre .lado .lbl { color:#999; font-size:.68rem; letter-spacing:.06em; }
.cuadre .lado .val { font-size:.95rem; font-weight:600; }
.cuadre .igual { color:#666; }
.cuadre .dif { margin-left:auto; display:flex; align-items:center; gap:.5rem; }
.cuadre .estado-cuadre { font-weight:600; padding:.2rem .6rem; border-radius:4px; font-size:.72rem; }
.cuadre .estado-cuadre.ok { background:var(--verde); color:#fff; }
.cuadre .estado-cuadre.err { background:var(--rojo); color:#fff; }

/* Cuerpo: formulario + panel */
.cuerpo { display:grid; grid-template-columns:1fr 300px; gap:0; flex:1; min-height:0; }
.form-area { padding:1.4rem 1.7rem 3rem; min-width:0; }
.panel { border-left:1px solid var(--linea); padding:1.3rem 1.2rem; background:#FCFCFC; }
.panel h4 { font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; color:var(--gris-2); font-weight:700; margin-bottom:.8rem; }
.panel .card { margin-bottom:1rem; padding:.9rem 1rem; }

.bloque { display:none; } .bloque.on { display:block; }
.bloque > h2 { font-size:1.02rem; font-weight:800; margin-bottom:.2rem; }
.bloque > .desc { font-size:.8rem; color:var(--gris); margin-bottom:1.2rem; max-width:60ch; }
.dos-col { display:grid; grid-template-columns:1fr 1fr; gap:2.2rem; }
.grupo { margin-bottom:1.6rem; }
.grupo > h3 { font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; color:var(--gris-2); font-weight:700;
  padding-bottom:.45rem; border-bottom:1px solid var(--linea); margin-bottom:.2rem; display:flex; justify-content:space-between; }
.grupo > h3 .subtotal { font-family:var(--mono); color:var(--negro); text-transform:none; letter-spacing:0; }
.fila-cuenta { display:grid; grid-template-columns:1fr 170px; gap:.8rem; align-items:center; padding:.42rem 0; border-bottom:1px solid var(--linea-2); font-size:.87rem; }
.fila-cuenta:hover { background:#FCFCFC; }
.fila-cuenta .cod { font-family:var(--mono); font-size:.68rem; color:var(--gris-2); margin-right:.5rem; }

/* EERR */
.fila-eerr { display:grid; grid-template-columns:1fr 150px 170px; gap:.8rem; align-items:center; padding:.42rem 0; border-bottom:1px solid var(--linea-2); font-size:.87rem; }
.fila-eerr select { border:1px solid var(--linea); border-radius:5px; padding:.38rem .4rem; font-size:.8rem; color:var(--gris); background:var(--blanco); width:100%; }
.head-eerr { display:grid; grid-template-columns:1fr 150px 170px; gap:.8rem; font-size:.66rem; letter-spacing:.08em; text-transform:uppercase; color:var(--gris-2); padding-bottom:.4rem; }
.head-eerr span:nth-child(n+2) { text-align:right; }

/* Campos sueltos (planilla) */
.campos { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.1rem 2rem; max-width:640px; }
.campo label { display:block; font-size:.78rem; font-weight:600; margin-bottom:.35rem; }
.campo .monto { max-width:230px; }
.campo.destacado label { color:var(--coral); }
.campo.destacado .monto { border-color:var(--coral); }

/* Ajustes */
table.ajustes { width:100%; border-collapse:collapse; font-size:.84rem; }
table.ajustes th { font-size:.66rem; letter-spacing:.08em; text-transform:uppercase; color:var(--gris-2); text-align:left; padding:.45rem .5rem; border-bottom:1px solid var(--linea); }
table.ajustes td { padding:.5rem; border-bottom:1px solid var(--linea-2); vertical-align:top; }
table.ajustes select, table.ajustes input, table.ajustes textarea { width:100%; border:1px solid var(--linea); border-radius:5px; padding:.4rem .5rem; font-size:.8rem; background:var(--blanco); }
table.ajustes .monto { max-width:140px; }
.add-fila { margin-top:.8rem; border:1px dashed var(--gris-2); background:none; border-radius:6px; padding:.5rem 1rem; font-size:.8rem; color:var(--gris); }
.add-fila:hover { color:var(--negro); border-color:var(--negro); }

/* Panel de validaciones */
.valid { display:flex; gap:.6rem; align-items:flex-start; padding:.5rem 0; border-bottom:1px solid var(--linea-2); font-size:.8rem; }
.valid:last-child { border-bottom:none; }
.valid .dot { width:.65rem; height:.65rem; border-radius:50%; flex-shrink:0; margin-top:.22rem; }
.dot.ok{background:var(--verde)} .dot.warn{background:var(--ambar)} .dot.err{background:var(--rojo)} .dot.off{background:var(--linea)}
.valid .t b { display:block; font-weight:700; }
.valid .t span { color:var(--gris); font-size:.74rem; }
.nota-bloqueo { font-size:.72rem; color:var(--coral); border:1px solid var(--rojo-linea); background:var(--rojo-bg); border-radius:6px; padding:.6rem .7rem; margin-top:.6rem; }

@media (max-width:1020px){ .cuerpo{grid-template-columns:1fr} .panel{border-left:none;border-top:1px solid var(--linea)} .dos-col{grid-template-columns:1fr} .campos{grid-template-columns:1fr} }

/* =====================================================================
   Vista previa del informe (índice · lienzo · editor)
   ===================================================================== */
.prev-app { max-width:1440px; margin:0 auto; background:var(--blanco); border-left:1px solid var(--linea); border-right:1px solid var(--linea); min-height:100vh; display:flex; flex-direction:column; }
.prev-ctx { padding:1rem 1.6rem; border-bottom:1px solid var(--linea); display:flex; justify-content:space-between; gap:1rem; align-items:center; flex-wrap:wrap; }
.prev-ctx h1 { font-size:1.28rem; font-weight:800; display:flex; align-items:center; gap:.7rem; flex-wrap:wrap; }
.cuerpo3 { display:grid; grid-template-columns:250px 1fr 356px; flex:1; min-height:0; }

.indice { border-right:1px solid var(--linea); overflow-y:auto; padding:1rem 0; }
.indice h4 { font-size:.66rem; letter-spacing:.1em; text-transform:uppercase; color:var(--gris-2); font-weight:700; padding:0 1.2rem .6rem; }
.sec { display:flex; align-items:center; gap:.6rem; width:100%; text-align:left; background:none; border:none; border-left:3px solid transparent; padding:.5rem 1.2rem; font-size:.8rem; color:var(--gris); text-decoration:none; }
.sec:hover { color:var(--negro); background:#FCFCFC; text-decoration:none; }
.sec.on { color:var(--negro); font-weight:700; border-left-color:var(--coral); background:linear-gradient(90deg,#FDF1EF,transparent 75%); }
.sec .cod { font-family:var(--mono); font-size:.66rem; color:var(--gris-2); width:2rem; flex-shrink:0; }
.sec .st { width:.55rem; height:.55rem; border-radius:50%; flex-shrink:0; margin-left:auto; }
.st.gen{background:var(--linea)} .st.ed{background:var(--ambar)} .st.ok{background:var(--verde)} .st.warn{background:var(--rojo)}
.sec .toggle { margin-left:.4rem; font-family:var(--mono); font-size:.6rem; border:1px solid var(--linea); border-radius:4px; padding:.1rem .3rem; color:var(--gris-2); flex-shrink:0; background:none; }
.sec .toggle.off { text-decoration:line-through; }
.indice .grupo-lbl { font-size:.6rem; letter-spacing:.08em; color:var(--gris-2); padding:.8rem 1.2rem .3rem; text-transform:uppercase; }
.indice .opc { opacity:.9; }

.lienzo { background:#F1F1F1; padding:1.6rem; overflow-y:auto; display:flex; flex-direction:column; gap:1rem; align-items:center; }
.lienzo .toolbar { display:flex; gap:.6rem; align-items:center; width:100%; max-width:820px; justify-content:space-between; flex-wrap:wrap; }
.lienzo .toolbar .pag { font-family:var(--mono); font-size:.74rem; color:var(--gris); }
.mini-btn { border:1px solid var(--linea); background:var(--blanco); border-radius:5px; padding:.3rem .7rem; font-size:.76rem; text-decoration:none; color:var(--negro); }

.slide { width:100%; max-width:820px; aspect-ratio:16/9; background:var(--blanco); box-shadow:0 2px 14px rgba(0,0,0,.09); padding:2.2rem 2.5rem; position:relative; display:flex; flex-direction:column; overflow:hidden; }
.slide .marca { position:absolute; top:1.4rem; right:2rem; text-align:right; }
.slide .marca .lg { font-weight:800; letter-spacing:.2em; font-size:.72rem; }
.slide .marca .tl { font-size:.5rem; color:var(--gris-2); }
.slide .conf { position:absolute; bottom:1rem; left:2.5rem; font-family:var(--mono); font-size:.55rem; letter-spacing:.14em; color:var(--gris-2); }
.slide h2 { font-size:1.5rem; font-weight:800; letter-spacing:-.01em; }
.slide .slide-sub { font-size:.7rem; color:var(--gris); margin-top:.2rem; margin-bottom:1.2rem; }
.slide .grid2 { display:grid; grid-template-columns:1.1fr 1fr; gap:1.8rem; flex:1; min-height:0; }
.slide .s-stat { margin-bottom:1rem; }
.slide .s-stat .n { font-size:1.7rem; font-weight:800; color:var(--coral); font-variant-numeric:tabular-nums; }
.slide .s-stat .l { font-size:.7rem; font-weight:700; margin-top:.1rem; }
.slide .s-stat .c { font-size:.62rem; color:var(--gris); }
.slide .narr { border-top:1px solid var(--linea); padding-top:.7rem; font-size:.72rem; line-height:1.5; color:#222; max-width:70ch; margin-top:.6rem; }
.slide .narr.editado { background:#FFF8E9; outline:1px dashed var(--ambar); padding:.7rem; border-top:none; }
.dash-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:.7rem 1.2rem; flex:1; align-content:start; }
.dash-cell .n { font-size:1.5rem; font-weight:800; color:var(--coral); font-variant-numeric:tabular-nums; display:flex; align-items:center; gap:.4rem; }
.dash-cell .n .sem { width:.6rem; height:.6rem; }
.dash-cell .l { font-size:.62rem; font-weight:700; color:var(--gris); }

.editor { border-left:1px solid var(--linea); padding:1.2rem; overflow-y:auto; background:#FCFCFC; display:flex; flex-direction:column; gap:1rem; }
.editor h4 { font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; color:var(--gris-2); font-weight:700; }
.gen-txt { font-size:.78rem; color:var(--gris); line-height:1.5; border-left:3px solid var(--linea); padding-left:.7rem; margin-top:.6rem; }
.gen-txt .lbl { font-size:.62rem; letter-spacing:.08em; text-transform:uppercase; color:var(--gris-2); display:block; margin-bottom:.3rem; font-weight:700; }
.ed-area textarea { width:100%; min-height:150px; border:1px solid var(--ambar); border-radius:6px; padding:.7rem; font-size:.8rem; line-height:1.5; background:#FFFDF7; resize:vertical; font-family:var(--font); }

@media (max-width:1100px){
  .cuerpo3 { grid-template-columns:1fr; }
  .indice { display:flex; overflow-x:auto; border-right:none; border-bottom:1px solid var(--linea); }
  .indice h4, .indice .grupo-lbl { display:none; }
  .editor { border-left:none; border-top:1px solid var(--linea); }
  .slide .grid2, .dash-grid { grid-template-columns:1fr 1fr; }
}

/* =====================================================================
   Aprobación del informe (Revisor)
   ===================================================================== */
.estado-global { display:flex; align-items:center; gap:1.4rem; padding:.8rem 1.6rem; background:var(--negro); color:#fff; font-size:.78rem; flex-wrap:wrap; }
.estado-global .semg { display:flex; align-items:center; gap:.5rem; font-weight:700; }
.estado-global .semg .dot { width:.8rem; height:.8rem; border-radius:50%; }
.estado-global .fam { display:flex; gap:.45rem; align-items:baseline; font-family:var(--mono); }
.estado-global .fam .k { color:#999; font-size:.66rem; letter-spacing:.05em; }
.estado-global .prog { margin-left:auto; font-family:var(--mono); font-size:.74rem; color:#ccc; }

.cuerpo-rev { display:grid; grid-template-columns:1fr 372px; flex:1; min-height:0; }
.lista { padding:1.3rem 1.6rem 3rem; overflow-y:auto; }
.lista > h3 { font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; color:var(--gris-2); font-weight:700; margin:1.2rem 0 .5rem; }
.lista > h3:first-child { margin-top:0; }
.rev-row { display:grid; grid-template-columns:2.6rem 1fr auto; gap:.9rem; align-items:start; padding:.75rem .6rem; border-bottom:1px solid var(--linea-2); border-left:3px solid transparent; }
.rev-row.obs { border-left-color:var(--coral); background:#FEFAF9; }
.rev-row .cod { font-family:var(--mono); font-size:.7rem; color:var(--gris-2); padding-top:.15rem; }
.rev-row .tit { font-size:.88rem; font-weight:600; }
.rev-row .detalle { font-size:.74rem; color:var(--gris); margin-top:.15rem; max-width:56ch; }
.rev-row .badges { display:flex; gap:.4rem; margin-top:.35rem; flex-wrap:wrap; }
.badge { font-size:.62rem; font-weight:700; padding:.16rem .5rem; border-radius:4px; letter-spacing:.03em; }
.badge.editada { background:var(--ambar-bg); color:#9a6a12; }
.badge.alerta { background:var(--coral-100); color:var(--coral); }
.badge.gen { background:var(--fila); color:var(--gris); }
.badge.off { background:var(--fila); color:var(--gris-2); text-decoration:line-through; }
.rev-row .ctrl { display:flex; gap:.4rem; align-items:center; }
.seg { display:flex; border:1px solid var(--linea); border-radius:6px; }
.seg button, .seg summary { border:none; background:var(--blanco); padding:.38rem .7rem; font-size:.72rem; font-weight:600; color:var(--gris); cursor:pointer; display:block; }
.seg > *:first-child button { border-radius:5px 0 0 5px; }
.seg summary { border-radius:0 5px 5px 0; list-style:none; user-select:none; }
.seg summary::-webkit-details-marker { display:none; }
.seg summary::marker { content:''; }
.seg button.ok-on { background:var(--verde); color:#fff; }
.seg button.obs-on, .seg summary.obs-on { background:var(--coral); color:#fff; }
.seg details { position:relative; }
.seg details[open] summary { background:var(--fila); color:var(--negro); }
.seg details[open] summary.obs-on { background:var(--coral); color:#fff; }
.obs-pop { position:absolute; right:0; top:calc(100% + 6px); z-index:30; background:#fff; border:1px solid var(--linea); border-radius:8px; padding:.6rem; width:280px; box-shadow:0 10px 30px rgba(0,0,0,.15); }
.ico-btn { border:1px solid var(--linea); background:var(--blanco); border-radius:6px; padding:.38rem .55rem; font-size:.72rem; color:var(--gris); text-decoration:none; }
.comentario { grid-column:2/4; margin-top:.5rem; border:1px solid var(--rojo-linea); background:var(--rojo-bg); border-radius:6px; padding:.7rem .8rem; }
.comentario .quien { font-size:.68rem; color:var(--gris); margin-bottom:.3rem; }
.comentario textarea { width:100%; border:1px solid var(--linea); border-radius:5px; padding:.5rem .6rem; font-size:.78rem; min-height:52px; background:var(--blanco); font-family:var(--font); }
.congelar { font-size:.74rem; color:var(--gris); border:1px solid var(--linea); background:var(--fila); border-radius:6px; padding:.7rem .8rem; line-height:1.5; }
.congelar b { color:var(--negro); }
.btn.devolver { border-color:var(--coral); color:var(--coral); background:var(--blanco); }
.btn.aprobar { background:var(--verde); border-color:var(--verde); color:#fff; }
.btn.aprobar[disabled] { background:#B7DCC6; border-color:#B7DCC6; cursor:not-allowed; }
@media (max-width:1060px){ .cuerpo-rev { grid-template-columns:1fr; } }

/* =====================================================================
   Asistente de importación desde Excel/CSV
   ===================================================================== */
.stepper { display:flex; padding:1.2rem 1.7rem; gap:0; border-bottom:1px solid var(--linea); overflow-x:auto; }
.step { display:flex; align-items:center; gap:.6rem; padding:.4rem .9rem .4rem 0; font-size:.8rem; color:var(--gris-2); white-space:nowrap; }
.step .num { width:1.7rem; height:1.7rem; border-radius:50%; border:2px solid var(--linea); display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.78rem; flex-shrink:0; }
.step.hecho .num { background:var(--verde); border-color:var(--verde); color:#fff; }
.step.hecho { color:var(--gris); }
.step.on { color:var(--negro); font-weight:700; }
.step.on .num { border-color:var(--coral); color:var(--coral); }
.step .sep { width:36px; height:2px; background:var(--linea); margin-left:.9rem; }
.step.hecho .sep { background:var(--verde); }
.paso h2 { font-size:1.05rem; font-weight:800; margin-bottom:.25rem; }
.paso .desc { font-size:.82rem; color:var(--gris); margin-bottom:1.3rem; max-width:70ch; }
.pie-nav { display:flex; justify-content:space-between; margin-top:1.8rem; padding-top:1.2rem; border-top:1px solid var(--linea); gap:.8rem; flex-wrap:wrap; }
.plantilla { display:flex; gap:1rem; margin-bottom:1.3rem; flex-wrap:wrap; }
.card-tpl { border:1px solid var(--linea); border-radius:8px; padding:1rem 1.1rem; font-size:.8rem; flex:1; min-width:260px; background:var(--blanco); }
.card-tpl b { display:block; margin-bottom:.3rem; }
.card-tpl .btn { margin-top:.7rem; font-size:.76rem; padding:.4rem .8rem; }
.drop { border:2px dashed var(--gris-2); border-radius:10px; padding:2.2rem 1.5rem; text-align:center; color:var(--gris); }
.drop input[type=file] { margin-top:1rem; }
.estado-map { font-size:.66rem; font-weight:700; padding:.18rem .5rem; border-radius:4px; white-space:nowrap; }
.estado-map.auto { background:var(--verde-bg); color:var(--verde); }
.estado-map.manual { background:var(--ambar-bg); color:#9a6a12; }
.estado-map.sinmap { background:var(--coral-100); color:var(--coral); }
.estado-map.ignorar { background:var(--fila); color:var(--gris-2); }
.resumen-map { display:flex; gap:1.4rem; font-size:.76rem; color:var(--gris); margin:.9rem 0 0; font-family:var(--mono); flex-wrap:wrap; }
td select.falta { border-color:var(--rojo); background:var(--rojo-bg); }
.tarjetas-val { display:grid; grid-template-columns:repeat(3,1fr); gap:.9rem; margin-bottom:1.3rem; }
.tv { border:1px solid var(--linea); border-radius:8px; padding:.9rem 1rem; background:var(--blanco); }
.tv .n { font-size:1.6rem; font-weight:800; font-variant-numeric:tabular-nums; }
.tv .n.v { color:var(--verde); } .tv .n.a { color:var(--ambar); } .tv .n.r { color:var(--rojo); }
.tv .l { font-size:.72rem; font-weight:700; margin-top:.1rem; }
.tv .c { font-size:.66rem; color:var(--gris-2); }
tr.rechazada { background:var(--rojo-bg); } tr.advertida { background:#FFFBF0; }
.motivo { font-size:.7rem; color:var(--rojo); font-weight:600; } .motivo.amb { color:#9a6a12; }
.conf-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; max-width:760px; }
.conf-card { border:1px solid var(--linea); border-radius:8px; padding:1rem 1.1rem; background:var(--blanco); }
.conf-card h3 { font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; color:var(--gris-2); font-weight:700; margin-bottom:.6rem; }
.cuadre-mini { border-radius:8px; padding:1rem 1.1rem; background:var(--negro); color:#fff; font-family:var(--mono); font-size:.78rem; display:flex; flex-direction:column; gap:.4rem; }
.cuadre-mini .lbl { color:#999; font-size:.62rem; letter-spacing:.06em; }
.cuadre-mini .ok { color:#7BD8A2; font-weight:700; } .cuadre-mini .bad { color:#F08A8A; font-weight:700; }
.aviso-final { border:1px solid var(--linea); background:var(--fila); border-radius:8px; padding:.8rem 1rem; font-size:.76rem; color:var(--gris); margin-top:1rem; max-width:760px; line-height:1.5; }
.aviso-final b { color:var(--negro); }
@media (max-width:820px){ .tarjetas-val{grid-template-columns:1fr} .conf-grid{grid-template-columns:1fr} }

/* ---------- Responsive general ---------- */
@media (max-width:1020px){
  .app{grid-template-columns:1fr}
  .rail{flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid var(--linea);padding:.6rem}
  .brand{border:none;padding:.3rem 1rem;margin:0}
  .rail .foot,.nav-label{display:none}
  .stats{grid-template-columns:repeat(2,1fr)}
  table.data{font-size:.78rem}
  .col-oc{display:none}
}
