:root{
  --carbon:#343538;
  --carbon-2:#3f4145;
  --naranjo:#FE630A;
  --naranjo-suave:#FFF1E7;
  --gris:#6F6C6C;
  --gris-linea:#DFDEDC;
  --papel:#F4F5F6;
  --blanco:#FFFFFF;
  --conforme:#2E7D5B;
  --conforme-bg:#E9F3EE;
  --alerta:#B5761F;
  --alerta-bg:#FBF2E2;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --r:6px;
}
*{box-sizing:border-box;margin:0;padding:0}
/* [hidden] con !important (C2, 2026-09-15): sin esto, un elemento con
   hidden pero tambien .rejilla (display:grid) u otra clase con display
   explicito queda visible igual -- empate de especificidad que gana el
   autor, no el atributo. Bug real encontrado en el primer intento de
   colapsar "Distribucion de rezago" (rejilla r2 + hidden). */
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{
  font-family:Arial,Helvetica,sans-serif;
  background:var(--papel);color:var(--carbon);
  font-size:14px;line-height:1.5;
  display:flex;min-height:100vh;
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- Navegación ---------- */
.nav{
  width:236px;flex-shrink:0;background:var(--carbon);color:#C9C8C6;
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh;
}
.marca{padding:22px 20px 18px;border-bottom:1px solid #46484c}
.marca b{color:var(--naranjo);font-size:19px;letter-spacing:.14em;display:block}
.marca span{font-size:10.5px;color:#8B8987;letter-spacing:.06em;display:block;margin-top:4px}
.nav-grupo{padding:16px 12px 4px}
.nav-grupo h4{
  font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;
  color:#78767A;padding:0 8px 7px;font-weight:normal
}
.nav button{
  display:block;width:100%;text-align:left;background:none;border:0;
  color:#C9C8C6;font:inherit;font-size:13px;padding:8px 10px;
  border-radius:var(--r);cursor:pointer;transition:background .12s
}
.nav button:hover{background:#404246;color:#fff}
.nav button:focus-visible{outline:2px solid var(--naranjo);outline-offset:1px}
.nav button[aria-current="page"]{background:var(--naranjo);color:#fff;font-weight:bold}
.nav-pie{margin-top:auto;padding:14px 20px;border-top:1px solid #46484c;font-size:11px;color:#78767A}

/* Hamburguesa y fondo: invisibles por defecto (escritorio). Solo se
   activan dentro del media query de abajo -- en escritorio esto no
   existe, ni siquiera si el JS llegara a correr. */
.nav-hamburguesa{display:none}
.nav-fondo{display:none}
/* Fila de detalle de las tablas colapsadas en móvil (Paso 2): nueva por
   completo, no existía antes -- invisible por defecto por la misma
   razón que la hamburguesa/fondo, se activa solo bajo el breakpoint. */
.fila-detalle-movil{display:none}

/* ---------- Nav colapsable (~700px) ----------
   Todo lo de escritorio (arriba) queda intacto: mismo ancho, mismo
   sticky, mismo layout. Estas reglas solo aplican bajo el breakpoint y
   solo agregan comportamiento nuevo (ocultar/mostrar), nunca cambian
   una regla de escritorio. */
@media(max-width:700px){
  .nav{
    display:none;
    position:fixed;left:0;top:0;z-index:1000;
    /* 100vh no descuenta la barra del navegador en móvil -- eso dejaba
       "Salir" fuera de pantalla sin forma de llegar. dvh sí la
       descuenta; height:100vh queda como fallback para navegadores que
       no entiendan dvh (lo ignoran y se quedan con la declaración
       anterior, no hace falta @supports). */
    height:100vh;
    height:100dvh;
    overflow-y:auto;
    box-shadow:2px 0 16px rgba(0,0,0,.3);
  }
  .nav.nav-abierta{display:flex}

  /* Bloquea el scroll del fondo mientras el nav está abierto -- se
     activa junto con la clase que pone el JS al abrir. Vive acá porque
     solo debe importar bajo este breakpoint (en escritorio el nav
     nunca se "abre", así que esta clase nunca tendría efecto ahí
     igual, pero queda explícito y contenido en el mismo lugar). */
  body.nav-abierta{overflow:hidden}

  .nav-hamburguesa{
    display:flex;align-items:center;justify-content:center;
    position:fixed;top:12px;left:12px;z-index:1001;
    width:40px;height:40px;border:0;border-radius:var(--r);
    background:var(--carbon);color:#fff;font-size:18px;line-height:1;
    cursor:pointer;
  }
  .nav-hamburguesa:focus-visible{outline:2px solid var(--naranjo);outline-offset:1px}

  .nav-fondo.nav-abierta{
    display:block;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:999;
  }

  /* La barra de título no debe quedar tapada por la hamburguesa fija */
  .barra{padding-left:60px}

  /* ---------- Paso 2: 4 tablas colapsadas a columnas imprescindibles +
     fila de detalle ----------
     Ninguna columna se pierde: la que se oculta acá con nth-child se
     repite en la <dl> de la fila de detalle de la misma fila. La regla
     de columnas nunca toca el <td colspan> de .fila-detalle-movil
     porque esa fila solo tiene un td (siempre nth-child(1)). */

  /* Evolución mensual (12→4 visibles: Mes, Vehículos, Hogar, Viajes) */
  #tabla-evolucion-vigentes th:nth-child(2), #tabla-evolucion-vigentes td:nth-child(2),
  #tabla-evolucion-vigentes th:nth-child(3), #tabla-evolucion-vigentes td:nth-child(3),
  #tabla-evolucion-vigentes th:nth-child(4), #tabla-evolucion-vigentes td:nth-child(4),
  #tabla-evolucion-vigentes th:nth-child(5), #tabla-evolucion-vigentes td:nth-child(5),
  #tabla-evolucion-vigentes th:nth-child(6), #tabla-evolucion-vigentes td:nth-child(6),
  #tabla-evolucion-vigentes th:nth-child(7), #tabla-evolucion-vigentes td:nth-child(7),
  #tabla-evolucion-vigentes th:nth-child(10), #tabla-evolucion-vigentes td:nth-child(10),
  #tabla-evolucion-vigentes th:nth-child(12), #tabla-evolucion-vigentes td:nth-child(12){
    display:none;
  }

  /* Últimos archivos (9→3 visibles: Fecha dato, Cartera, Estado) */
  #tabla-archivos-completa th:nth-child(3), #tabla-archivos-completa td:nth-child(3),
  #tabla-archivos-completa th:nth-child(4), #tabla-archivos-completa td:nth-child(4),
  #tabla-archivos-completa th:nth-child(5), #tabla-archivos-completa td:nth-child(5),
  #tabla-archivos-completa th:nth-child(6), #tabla-archivos-completa td:nth-child(6),
  #tabla-archivos-completa th:nth-child(7), #tabla-archivos-completa td:nth-child(7),
  #tabla-archivos-completa th:nth-child(9), #tabla-archivos-completa td:nth-child(9){
    display:none;
  }

  /* Casos abiertos vigencia futura (9→4 visibles: Póliza, Ítem, Familia, Días vigencia restante) */
  #tabla-sv-abiertos-completa th:nth-child(3), #tabla-sv-abiertos-completa td:nth-child(3),
  #tabla-sv-abiertos-completa th:nth-child(4), #tabla-sv-abiertos-completa td:nth-child(4),
  #tabla-sv-abiertos-completa th:nth-child(6), #tabla-sv-abiertos-completa td:nth-child(6),
  #tabla-sv-abiertos-completa th:nth-child(7), #tabla-sv-abiertos-completa td:nth-child(7),
  #tabla-sv-abiertos-completa th:nth-child(8), #tabla-sv-abiertos-completa td:nth-child(8){
    display:none;
  }

  /* Casos cerrados vigencia futura (8→4 visibles: Póliza, Ítem, Estado, Fecha reaparición) */
  #tabla-sv-cerrados-completa th:nth-child(3), #tabla-sv-cerrados-completa td:nth-child(3),
  #tabla-sv-cerrados-completa th:nth-child(4), #tabla-sv-cerrados-completa td:nth-child(4),
  #tabla-sv-cerrados-completa th:nth-child(5), #tabla-sv-cerrados-completa td:nth-child(5),
  #tabla-sv-cerrados-completa th:nth-child(7), #tabla-sv-cerrados-completa td:nth-child(7){
    display:none;
  }

  /* Novedades de referencia (8→3 visibles: Valor, Eslabón faltante, Última cantidad) */
  #tabla-novedades-referencia-completa th:nth-child(1), #tabla-novedades-referencia-completa td:nth-child(1),
  #tabla-novedades-referencia-completa th:nth-child(3), #tabla-novedades-referencia-completa td:nth-child(3),
  #tabla-novedades-referencia-completa th:nth-child(4), #tabla-novedades-referencia-completa td:nth-child(4),
  #tabla-novedades-referencia-completa th:nth-child(6), #tabla-novedades-referencia-completa td:nth-child(6),
  #tabla-novedades-referencia-completa th:nth-child(8), #tabla-novedades-referencia-completa td:nth-child(8){
    display:none;
  }

  /* Costo por concepto (Casos y costos, 2026-09-16): 5→4 visibles
     (Concepto, Tope, Líneas, Total UF; se oculta Tarifa UF) */
  #tabla-costo-concepto th:nth-child(4), #tabla-costo-concepto td:nth-child(4){
    display:none;
  }

  /* Avance por cartera (Encuestas resultados, 2026-09-17): 6→3 visibles
     (Cartera, Encuestables, Efectivas; se ocultan En cola/Sin contacto/
     Por vencer, van en la fila de detalle) */
  #tabla-avance-cartera th:nth-child(3), #tabla-avance-cartera td:nth-child(3),
  #tabla-avance-cartera th:nth-child(5), #tabla-avance-cartera td:nth-child(5),
  #tabla-avance-cartera th:nth-child(6), #tabla-avance-cartera td:nth-child(6){
    display:none;
  }

  /* Productividad por encuestador (Encuestas resultados, 2026-09-17):
     6→4 visibles (Encuestador, Gestionados, Efectivas, Tasa contacto;
     se ocultan Tomas repetidas/Duración mediana, van en la fila de detalle) */
  #tabla-productividad th:nth-child(5), #tabla-productividad td:nth-child(5),
  #tabla-productividad th:nth-child(6), #tabla-productividad td:nth-child(6){
    display:none;
  }

  /* Fila de detalle: visible bajo el breakpoint, con un <summary>
     grande y con color -- nunca un triángulo sutil solo. */
  .fila-detalle-movil{display:table-row}
  .fila-detalle-movil td{padding:0}
  .fila-detalle-movil details{border-top:1px solid var(--gris-linea)}
  .fila-detalle-movil summary{
    padding:10px 14px;font-size:12.5px;font-weight:bold;color:var(--naranjo);
    background:var(--naranjo-suave);cursor:pointer;list-style:none;
  }
  .fila-detalle-movil summary::-webkit-details-marker{display:none}
  .fila-detalle-movil summary::before{content:"▸ "}
  .fila-detalle-movil details[open] summary::before{content:"▾ "}
  .fila-detalle-movil dl{
    padding:10px 14px 14px;margin:0;display:grid;
    grid-template-columns:auto 1fr;gap:6px 12px;font-size:12.5px;
  }
  .fila-detalle-movil dt{color:var(--gris);font-weight:normal}
  .fila-detalle-movil dd{margin:0;font-weight:bold;word-break:break-all}
}

/* ---------- Estructura ---------- */
.obra{flex:1;min-width:0;display:flex;flex-direction:column}
.barra{
  background:var(--blanco);border-bottom:1px solid var(--gris-linea);
  padding:16px 30px;display:flex;align-items:baseline;gap:14px;flex-wrap:wrap
}
.barra h1{font-size:19px;font-weight:bold}
.barra .ctx{font-size:12px;color:var(--gris)}
.lienzo{padding:26px 30px 60px;max-width:1180px}
.vista{display:none}.vista.on{display:block}

h2{font-size:14px;margin:30px 0 12px;letter-spacing:.01em}
h2:first-child{margin-top:0}
.sub{font-size:12.5px;color:var(--gris);margin-bottom:16px;max-width:70ch}

/* ---------- Tarjetas ---------- */
.tarjeta{background:var(--blanco);border:1px solid var(--gris-linea);border-radius:var(--r);padding:18px 20px}
.rejilla{display:grid;gap:14px}
.r4{grid-template-columns:repeat(4,1fr)}
.r3{grid-template-columns:repeat(3,1fr)}
.r2{grid-template-columns:1fr 1fr}
@media(max-width:900px){.r4,.r3,.r2{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.r4,.r3,.r2{grid-template-columns:1fr}}

.cifra{display:block;font-family:var(--mono);font-size:27px;font-weight:bold;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.cifra small{font-size:12px;font-weight:normal;color:var(--gris);margin-left:5px;font-family:Arial}
.rotulo{display:block;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--gris);margin-bottom:8px}
.pie-tarjeta{font-size:11.5px;color:var(--gris);margin-top:7px}
.acento{color:var(--naranjo)}
.verde{color:var(--conforme)}

/* Tarjeta-botón: mismas tarjetas de cifra, usadas también como control de
   filtro/apertura (p.ej. "Salidas con vigencia futura" -> Cancelaciones).
   border-width fijo en 2px para que activarse (cambio de color) no mueva el
   layout -- nunca 1px inactiva / 2px activa. */
.tarjeta-control{
  position:relative;
  appearance:none;-webkit-appearance:none;display:block;width:100%;
  text-align:left;font:inherit;color:inherit;background:var(--blanco);
  cursor:pointer;border-width:2px;border-style:solid;border-color:var(--gris-linea);
}
.tarjeta-control:focus-visible{outline:2px solid var(--naranjo);outline-offset:2px}
.tarjeta-control[aria-pressed="true"]{
  border-color:var(--naranjo);box-shadow:0 0 0 4px var(--naranjo-suave);
}
.tarjeta-control[aria-pressed="true"] .cifra{color:var(--naranjo)}

/* Chevron: única señal de que la tarjeta es un control (no un dato pasivo).
   Construido con dos bordes rotados, no un carácter unicode, para que no
   dependa de la fuente. Absolute -- nunca ocupa flujo ni mueve el layout. */
.tarjeta-control::after{
  content:"";
  position:absolute;top:20px;right:22px;
  width:8px;height:8px;
  border-style:solid;border-color:var(--gris);border-width:0 2px 2px 0;
  transform:rotate(45deg);
  transition:transform .15s,border-color .15s;
}
.tarjeta-control[aria-pressed="true"]::after{
  border-color:var(--naranjo);
  transform:rotate(225deg);
}
@media(prefers-reduced-motion:reduce){
  .tarjeta-control::after{transition:none}
}

/* Hover solo con puntero real (mouse/trackpad) -- en touch no hay estado
   "encima" persistente, así que no aporta y evitamos dejarlo pegado tras un
   tap. La tarjeta activa nunca pierde su borde naranjo bajo el cursor: la
   segunda regla tiene más especificidad que la del hover solo y gana
   siempre, sin depender del orden. */
@media(hover:hover){
  .tarjeta-control:hover{background:var(--papel);border-color:var(--gris)}
  .tarjeta-control[aria-pressed="true"]:hover{border-color:var(--naranjo)}
}

/* ---------- Ciclo mensual ---------- */
.ciclo{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin:6px 0 4px}
.hito{position:relative;padding:16px 16px 16px 0}
.hito::before{content:"";position:absolute;top:7px;left:0;right:0;height:2px;background:var(--gris-linea)}
.hito.listo::before{background:var(--conforme)}
.hito.curso::before{background:var(--naranjo)}
.punto{
  width:16px;height:16px;border-radius:50%;background:var(--blanco);
  border:2px solid var(--gris-linea);position:absolute;top:0;left:0
}
.hito.listo .punto{background:var(--conforme);border-color:var(--conforme)}
.hito.curso .punto{background:var(--naranjo);border-color:var(--naranjo);box-shadow:0 0 0 4px var(--naranjo-suave)}
.hito b{display:block;font-size:12.5px;margin-bottom:3px}
.hito span{font-size:11.5px;color:var(--gris);display:block}
@media(max-width:760px){.ciclo{grid-template-columns:1fr}.hito{padding:0 0 18px 26px}
  .hito::before{top:0;bottom:0;left:7px;right:auto;width:2px;height:auto}}

/* ---------- Tablas ---------- */
.envoltura{background:var(--blanco);border:1px solid var(--gris-linea);border-radius:var(--r);overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{
  text-align:left;padding:10px 12px;background:#FAFAF9;
  border-bottom:1px solid var(--gris-linea);font-size:10.5px;
  letter-spacing:.08em;text-transform:uppercase;color:var(--gris);white-space:nowrap
}
td{padding:10px 12px;border-bottom:1px solid #EFEEEC;vertical-align:top}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:#FCFBFA}
.num{font-family:var(--mono);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.id{font-family:var(--mono);font-size:11.5px;white-space:nowrap}

/* ---------- Etiquetas ---------- */
.et{display:inline-block;padding:2px 8px;border-radius:11px;font-size:10.5px;white-space:nowrap;font-weight:bold}
.et-ok{background:var(--conforme-bg);color:var(--conforme)}
.et-dif{background:var(--naranjo-suave);color:#C24E08}
.et-esp{background:var(--alerta-bg);color:var(--alerta)}
.et-neu{background:#EEEDEB;color:var(--gris)}

/* ---------- Carril de conciliación (elemento distintivo) ---------- */
.carril{display:flex;align-items:center;gap:0;height:19px;min-width:150px}
.carril i{display:block;height:7px;border-radius:2px}
.carril .base{background:#D6D5D3}
.carril .exc{background:var(--naranjo)}
.carril .fal{background:#9AB8C9}
.carril em{font-family:var(--mono);font-size:11px;font-style:normal;margin-left:8px;color:var(--gris)}

/* ---------- Calendario de recepción ---------- */
.mes{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;max-width:430px}
.mes .dow{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--gris);text-align:center;padding-bottom:3px}
.dia{
  aspect-ratio:1;border:1px solid var(--gris-linea);border-radius:4px;background:var(--blanco);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-size:11px;font-family:var(--mono);position:relative;color:var(--carbon)
}
.dia.vacio{border:0;background:none}
.dia.ok{background:var(--conforme-bg);border-color:#BFDDCD;color:var(--conforme)}
.dia.falta{background:var(--naranjo-suave);border-color:#F6C6A2;color:#C24E08;font-weight:bold}
.dia.tarde{background:var(--alerta-bg);border-color:#EBD5AA;color:var(--alerta)}
.dia.inhabil{background:#F7F7F6;color:#B4B2B0}
.dia.futuro{background:none;color:#B4B2B0;border-style:dashed}
.dia u{position:absolute;bottom:3px;width:5px;height:5px;border-radius:50%;background:currentColor;text-decoration:none}
.leyenda{display:flex;gap:16px;flex-wrap:wrap;font-size:11.5px;color:var(--gris);margin-top:14px}
.leyenda span{display:flex;align-items:center;gap:6px}
.leyenda i{width:11px;height:11px;border-radius:3px;border:1px solid var(--gris-linea);display:block}

/* ---------- Barras de saldo ---------- */
.saldo{height:9px;background:#EAE9E7;border-radius:5px;overflow:hidden;margin:9px 0 6px}
.saldo i{display:block;height:100%;background:var(--naranjo);border-radius:5px}
.saldo i.bajo{background:var(--conforme)}
.saldo i.neutro{background:#D6D5D3}

/* ---------- Formulario ---------- */
.campo{margin-bottom:14px}
.campo label{display:block;font-size:11.5px;color:var(--gris);margin-bottom:5px}
.campo input,.campo select,.campo textarea{
  width:100%;padding:8px 10px;border:1px solid var(--gris-linea);
  border-radius:var(--r);font:inherit;font-size:13px;background:var(--blanco);color:var(--carbon)
}
.campo textarea{min-height:110px;font-family:var(--mono);font-size:11.5px;resize:vertical}
.campo input:focus,.campo select:focus,.campo textarea:focus{outline:2px solid var(--naranjo);outline-offset:-1px;border-color:var(--naranjo)}
.boton{
  background:var(--naranjo);color:#fff;border:0;padding:9px 18px;
  border-radius:var(--r);font:inherit;font-size:13px;font-weight:bold;cursor:pointer
}
.boton:hover{background:#E55806}
.boton.sec{background:var(--blanco);color:var(--carbon);border:1px solid var(--gris-linea)}
.boton:focus-visible{outline:2px solid var(--carbon);outline-offset:2px}

/* ---------- Avisos ---------- */
.aviso{
  border-left:3px solid var(--naranjo);background:var(--naranjo-suave);
  padding:12px 16px;border-radius:0 var(--r) var(--r) 0;font-size:12.5px;margin-bottom:16px
}
.aviso b{display:block;margin-bottom:3px}
.aviso.calma{border-color:var(--gris);background:#EEEDEB;color:var(--carbon)}

/* ---------- Lista de definiciones ---------- */
.dl{display:grid;grid-template-columns:auto 1fr;gap:7px 18px;font-size:12.5px;align-items:baseline}
.dl dt{color:var(--gris);white-space:nowrap}
.dl dd{font-family:var(--mono);font-variant-numeric:tabular-nums}

.nota{font-size:11.5px;color:var(--gris);margin-top:10px}
.filtros{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.filtros button{
  background:var(--blanco);border:1px solid var(--gris-linea);border-radius:14px;
  padding:5px 13px;font:inherit;font-size:12px;cursor:pointer;color:var(--carbon)
}
.filtros button[aria-pressed="true"]{background:var(--carbon);color:#fff;border-color:var(--carbon)}
.filtros button:focus-visible{outline:2px solid var(--naranjo);outline-offset:1px}

.cinta{
  background:var(--carbon);color:#C9C8C6;padding:9px 30px;font-size:11.5px;
  display:flex;gap:10px;align-items:center;flex-wrap:wrap
}
.cinta b{color:var(--naranjo)}

/* ---------- Panel FID (2026-09-01) ---------- */
.boton.principal{background:#FE330A}
.boton.principal:hover{background:#D82A08}
.boton:disabled{opacity:.6;cursor:default}
.spin{
  display:inline-block;width:13px;height:13px;border-radius:50%;
  border:2px solid rgba(255,255,255,.5);border-top-color:#fff;
  animation:girar .7s linear infinite;vertical-align:-2px;margin-right:7px
}
@keyframes girar{to{transform:rotate(360deg)}}

.semaforos{display:flex;gap:14px;flex-wrap:wrap}
.semaforo{
  display:flex;align-items:center;gap:9px;background:var(--blanco);
  border:1px solid var(--gris-linea);border-radius:var(--r);padding:12px 16px;flex:1;min-width:180px
}
.semaforo .luz{width:13px;height:13px;border-radius:50%;flex-shrink:0}
.semaforo .luz.verde{background:var(--conforme)}
.semaforo .luz.ambar{background:var(--alerta)}
.semaforo .luz.rojo{background:#C0392B}
.semaforo .txt b{display:block;font-size:12.5px}
.semaforo .txt span{font-size:11px;color:var(--gris)}

.grafico-envoltura{background:var(--blanco);border:1px solid var(--gris-linea);border-radius:var(--r);padding:16px 18px}
.grafico-envoltura canvas{max-height:280px}

.hash{font-family:var(--mono);font-size:11px}
.copiar{
  background:none;border:0;color:var(--gris);cursor:pointer;font-size:11px;
  margin-left:6px;text-decoration:underline;padding:0
}
.copiar:hover{color:var(--carbon)}

.novedades{list-style:none}
.novedades li{
  padding:9px 12px;border-left:3px solid var(--alerta);background:var(--alerta-bg);
  border-radius:0 var(--r) var(--r) 0;font-size:12.5px;margin-bottom:8px
}
.novedades li.vacio{border-color:var(--conforme);background:var(--conforme-bg);color:var(--conforme)}
.novedades li.critica{border-color:#C0392B;background:#FCEAE8;color:#8E2A20;font-weight:bold}

tr.subtotal td{font-weight:bold;background:#FAFAF9;border-top:1px solid var(--gris-linea)}
tr.total-general td{font-weight:bold;background:#EFEEEC;border-top:2px solid var(--carbon)}
tr.novedad-fila td{color:var(--alerta)}
td.no-cuadra{color:#8E2A20;background:#FCEAE8;font-weight:bold}
tr.fila-expandible{cursor:pointer}
tr.fila-expandible .caret{display:inline-block;width:14px;color:var(--gris)}

.resultado-revision{margin-top:14px;font-size:12.5px}
.resultado-revision .et{margin-right:4px}

/* ---------- Control semanal (2026-09-16) ----------
   Clases nuevas, sin equivalente previo. Los 3 casos donde el prototipo
   colisionaba con algo que ya existia (.envoltura, .et, .marca) o traia
   su propia paleta (azul) NO se replican aca -- ver el mapeo en la
   sesion: .rotulo/.acento ya cubren esos roles, .cabecera usa --carbon
   donde el prototipo tenia --azul, y las alertas/recuadro reusan
   .novedades li / .aviso en vez de clases propias. */
.cabecera{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.acciones{display:flex;gap:8px;flex-wrap:wrap}
.r5{grid-template-columns:repeat(5,1fr)}
.r2b{grid-template-columns:1.25fr 1fr}
@media(max-width:900px){.r5,.r2b{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.r5,.r2b{grid-template-columns:1fr}}

.separa{border-top:1px solid var(--gris-linea);margin-top:12px;padding-top:10px;font-size:12.5px;color:var(--gris)}
.separa b{color:var(--carbon)}
.vacio{display:inline-block;width:42px;height:4px;background:var(--gris-linea);border-radius:2px;margin:12px 0 6px}
.tenue{color:var(--gris)}
.guion{color:#B9BFC6}

.enc-tarjeta{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.enc-tarjeta h2{margin:0}
.formula{color:var(--gris);font-size:12px}

.barra-enc{display:flex;justify-content:space-between;gap:12px;font-size:12.5px;margin-bottom:5px}
.barra-enc .val{font-weight:bold;white-space:nowrap}
.barra-fila{margin-bottom:12px}

/* Trazabilidad de tarifa: codigo FID -> COD_*.docx -> tope -> fila del tarifario */
.cadena{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:14px 0}
.ficha{background:var(--papel);border:1px solid var(--gris-linea);border-radius:6px;padding:7px 12px;font-size:12.5px}
.ficha.dest{background:var(--naranjo-suave);border-color:#F7D8C2}
.flecha{color:var(--gris-linea)}

.caja-vacia{background:var(--papel);border:1px dashed var(--gris-linea);border-radius:6px;padding:30px;text-align:center;color:var(--gris);font-size:13px}
.nota-sep{border-top:1px solid var(--gris-linea);margin-top:14px;padding-top:12px}
.pie-pagina{color:var(--gris);font-size:12px;margin-top:22px;padding-top:14px;border-top:1px solid var(--gris-linea)}

/* Rango de proyeccion con estacionalidad -- neutro (--carbon), sin azul */
.rango{display:flex;align-items:center;gap:10px;margin:8px 0 6px}
.rango-pista{flex:1;height:8px;background:var(--naranjo-suave);border-radius:4px;position:relative}
.marcador{position:absolute;top:-3px;width:4px;height:14px;background:var(--carbon);border-radius:2px}
.rango-lim{font-size:12px;color:var(--gris);white-space:nowrap}

/* Log de carga para AXA en /panel (migracion 135): una tarjeta por archivo. */
.logs-carga-grilla { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.logs-carga-grilla .tarjeta { cursor: default; }
@media (max-width: 700px) { .logs-carga-grilla { grid-template-columns: 1fr; } }
