/* ═══════════════════════════════════════════════════════════════════════════
   aging-v2.css — apartado «Aging» definitivo (09-10-2026), Frontend/vistas/aging/.
   Prefijo PROPIO `agx-`: convive con la hoja del apartado viejo hasta que se borre, y
   con los mismos selectores las dos pelearían y ganaría la última del <head>.
   Nació como copia de aging.css; solo quedan las reglas que usan sus ocho archivos.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════════════════
   proyeccion-lab.css — apartado "Proyección 4 Semanas - Laboratorio" (solo Admin)

   COPIA CONGELADA de `proyeccion.css` del 10-09-2026. No editar.
   Todo el prefijo paso de `pr-` a `agx-`, y NO es cosmetico: con los mismos
   234 selectores las dos hojas pelean y gana la ultima del `<head>` — editar
   una cambiaria la otra, o "no haria nada" segun el orden. Es una de las
   cuatro formas de romper el sistema de hojas sin un solo error en consola.
   ───────────────────────────────────────────────────────────────────────────
   Todo se escribe contra TOKENS, nunca contra un color literal: la aplicación
   tiene dos temas y un valor escrito a mano sirve a uno solo. Es el defecto que
   más veces apareció en este proyecto — ver la sección "Contraste" de CLAUDE.md.

   ⚠ El <link> de este archivo va ÚLTIMO en el <head>, junto a las otras hojas
   de apartado. No es cosmético: el orden decide quién gana los empates de
   especificidad, y una hoja adelantada deja la pantalla torcida en algunos
   elementos y perfecta en el resto — el peor caso para diagnosticar.
   ═══════════════════════════════════════════════════════════════════════════ */

.agx-cont { padding: 0 0 28px; }

/* ── Barra de configuración ────────────────────────────────────────────────
   Es lo que el usuario viene a tocar, así que va arriba y se lee de un vistazo.
   `align-items: flex-end` alinea las etiquetas con sus controles sin importar
   que unas tengan una línea y otras dos. */
.agx-barra {
  display: flex; flex-wrap: wrap; gap: 18px 26px; align-items: flex-end;
  background: var(--navy-2); border: 1px solid var(--border);
  border-radius: 10px; padding: 14px 16px; margin: 4px 0 14px;
}
.agx-grupo { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; }
.agx-grupo > label {
  font-size: 10px; text-transform: uppercase; letter-spacing: .5px;
  color: var(--text-3); font-weight: 600;
}
.agx-grupo select, .agx-grupo input[type="search"], .agx-grupo input[type="number"] {
  background: var(--navy-3); color: var(--text);
  border: 1px solid var(--border-2); border-radius: 6px;
  padding: 6px 9px; font-size: 12px; font-family: var(--font);
}
.agx-grupo input[type="search"] { min-width: 190px; }
.agx-grupo input[type="number"] { width: 108px; }
.agx-check {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: 11.5px; color: var(--text-2); cursor: pointer;
  text-transform: none; letter-spacing: 0; font-weight: 500;
}
.agx-btn {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--navy-3); color: var(--text-2);
  border: 1px solid var(--border-2); border-radius: 6px;
  padding: 6px 11px; font-size: 11.5px; font-family: var(--font);
  cursor: pointer; transition: background .12s, color .12s;
}
.agx-btn:hover { background: var(--navy-4); color: var(--text); }

/* ── Pestañas de moneda ───────────────────────────────────────────────────
   Son dos proyecciones independientes, no dos vistas del mismo número, así que
   la pestaña activa se marca con fuerza: confundirlas sería leer pesos como
   dólares. */
.agx-monedas { display: flex; gap: 6px; margin: 0 0 10px; }
.agx-tab {
  background: transparent; color: var(--text-3);
  border: 1px solid var(--border); border-bottom: 2px solid transparent;
  border-radius: 6px 6px 0 0; padding: 7px 18px;
  font-size: 12.5px; font-weight: 600; font-family: var(--mono);
  cursor: pointer; transition: color .12s, border-color .12s;
}
.agx-tab:hover { color: var(--text-2); }
.agx-tab.on {
  color: var(--text); background: var(--navy-2);
  border-bottom-color: var(--blue-light);
}

/* ── La tabla ─────────────────────────────────────────────────────────────── */
.agx-bloque {
  background: var(--navy-2); border: 1px solid var(--border);
  border-radius: 0 10px 10px 10px; padding: 4px 0 0; margin-bottom: 16px;
  overflow-x: auto;                     /* la tabla scrollea sola, no la página */
}
.agx-tabla { width: 100%; border-collapse: collapse; font-size: 12.5px; min-width: 720px; }
.agx-tabla th, .agx-tabla td { padding: 7px 12px; }
.agx-tabla thead th {
  text-align: right; font-size: 11px; font-weight: 700; color: var(--text-2);
  border-bottom: 1px solid var(--border-2); white-space: nowrap;
}
.agx-tabla thead th span {
  display: block; font-size: 9.5px; font-weight: 500;
  color: var(--text-3); text-transform: none; letter-spacing: 0;
}
.agx-num { text-align: right; font-family: var(--mono); white-space: nowrap; color: var(--text); }

/* ── Aviso de carga incompleta ─────────────────────────────────────────────
   Un origen caído deja los totales bajos, y una proyección baja se parece a una
   proyección de cero: hay que decirlo arriba, no esconderlo en el panel.
   ⚠ El acento va en la LETRA y en el BORDE, y el fondo en la superficie: un
   tinte del propio rojo debajo de un texto rojo no crece nunca en contraste. */
.agx-error {
  background: var(--navy-2);
  border: 1px solid color-mix(in srgb, var(--red, #ef4444) 40%, transparent);
  border-left: 3px solid var(--red-txt, var(--red));
  border-radius: 6px; padding: 11px 14px; margin: 0 0 14px;
  font-size: 12px; color: var(--red-txt, var(--red)); line-height: 1.6;
}
.agx-error b { color: var(--text); }
.agx-error .mx-ico { width: 1.2em; height: 1.2em; vertical-align: -.24em; }

@media (max-width: 900px) {
  .agx-barra { gap: 12px 16px; }
  .agx-grupo input[type="search"] { min-width: 140px; }
}

/* ── Las pestañas de vista, separadas de las de moneda ─────────────────────
   Son dos preguntas distintas —QUÉ se mira y EN QUÉ MONEDA— y por eso son dos
   filas. Con todo en una sola, un clic en "CLP" parece del mismo grupo que uno en
   "Facturas de compra" y no lo es. */
.agx-vistas { margin-bottom: 4px; }
.agx-vistas .agx-tab { display: inline-flex; align-items: center; gap: 7px; font-family: var(--font); }
.agx-vistas .agx-tab .mx-ico { width: 1.2em; height: 1.2em; vertical-align: -.22em; }
.agx-barra-filtros { margin-top: 0; border-radius: 0 10px 0 0; }

/* ── La tabla de una base ──────────────────────────────────────────────────── */
.agx-base { font-size: 12px; min-width: 900px; }
.agx-base thead th {
  text-align: left; position: sticky; top: 0; z-index: 1;
  background: var(--navy-2);
}
/* La alineación se decide por lo que la columna ES, no por dónde quedó: el encabezado
   lleva la misma clase que sus celdas. Hasta el 21-08-2026 esto contaba POSICIONES
   (`nth-child(n+6)`), y hubo que corregir el número dos veces en un día —al agregar el
   numerador y al agregar la cuenta—; olvidarse dejaba los montos alineados a la izquierda
   sin ningún error. Un selector que no cuenta no puede quedar viejo. */
.agx-base thead th.agx-num, .agx-base thead th.agx-n { text-align: right; }
.agx-base tbody tr:hover { background: var(--navy-3); }
/* El encabezado que ordena. Tiene que VERSE clicable: un encabezado que ordena y parece
   texto no se toca nunca. Y la flecha va dentro del propio <th>, no en un pseudo-elemento:
   asi el ancho de la columna ya la contempla y la tabla no salta al ordenar. */
.agx-th-ord { cursor: pointer; user-select: none; }
.agx-th-ord:hover { color: var(--text); text-decoration: underline; text-underline-offset: 3px; }
.agx-th-ord.on { color: var(--blue-light-txt, var(--blue-light)); }
.agx-base td { border-bottom: 1px solid var(--border); color: var(--text-2); }
.agx-mono { font-family: var(--mono); white-space: nowrap; color: var(--text-3); }
.agx-vacio { text-align: center; padding: 28px 20px; color: var(--text-3); }

/* El balde: es el dato que conecta la fila con la columna de la proyección, así que
   se distingue de un vistazo. Cada uno lleva su PALABRA además del color — el color
   solo no alcanza para quien no lo distingue. */
.agx-b-venc  { color: var(--red-txt, var(--red));  font-weight: 600; }
.agx-b-sem   { color: var(--green); font-weight: 600; font-family: var(--mono); }
.agx-b-fuera { color: var(--text-3); font-style: italic; }

/* ── El pie que dice cuántas pasan el filtro ───────────────────────────────
   No es informativo: es la única forma de saber que el filtro hizo lo que uno creía.
   Un filtro mal tipeado deja cero filas, y una proyección en cero se parece
   demasiado a un error de carga. */
.agx-base-cab {
  border-top: none; border-bottom: 1px solid var(--border);
  display: flex; flex-wrap: wrap; align-items: center; gap: 5px;
}
.agx-base-cab b { color: var(--text); font-family: var(--mono); }
.agx-base-cab .mx-ico { width: 1.2em; height: 1.2em; vertical-align: -.22em; }
/* El botón de Excel va a la DERECHA de la línea que cuenta las filas, no al lado del
   número: la frase se lee de corrido y el botón es una acción, no parte del dato. Y con
   `order` en vez de moverlo en el marcado, porque el orden de lectura para un lector de
   pantalla conviene que siga siendo el número primero y la acción después. */
.agx-base-xls { margin-left: auto; order: 9; font-size: 11px; padding: 5px 9px; flex: none; }
.agx-base-xls .mx-ico { width: 1.1em; height: 1.1em; }
.agx-btn-mini { padding: 4px 8px; font-size: 10.5px; }

/* ── El encabezado con el tramo completo ───────────────────────────────────
   Dos fechas y dos nombres de día no caben en el ancho de una columna de monto,
   así que el subtítulo respira y no se corta. */
.agx-tabla thead th span { line-height: 1.5; white-space: nowrap; }

/* Las filas de cada bloque heredan una franja más tenue, para que el grupo se
   lea como un grupo hasta que empieza el siguiente. */
.agx-tabla tbody tr td:first-child { border-left: 3px solid transparent; }

/* En pantallas angostas las franjas de 3px comen ancho útil de la primera
   columna, que es la que lleva los rótulos largos. */
@media (max-width: 820px) {
  .agx-tabla tbody tr td:first-child{ border-left-width: 2px; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   Quinta tanda (19-08-2026): los desplegables con CASILLAS y los rangos de
   fecha de las dos pestañas de bases.
   ───────────────────────────────────────────────────────────────────────────
   Pedido del usuario, textual: "que todos los drop-down que están en las tabs
   de FACTURAS DE COMPRA Y VENTA sean drop-down pero con checkbox", más un
   desplegable propio para los bloqueos de pago y el filtro por fecha de emisión
   y de vencimiento.

   ⚠ Tres reglas que se respetan en todo este bloque:
     1. Ningún color literal. El acento va en la LETRA y en el BORDE; el fondo
        sale de una superficie neutra que el tema invierte. Un tinte del mismo
        acento debajo de su propio texto no gana contraste nunca — es el patrón
        que más veces falló en este proyecto.
     2. Las casillas son `<input type="checkbox">` NATIVOS con `accent-color`.
        Una palomita dibujada a mano ya se perdió acá por cascada (Gestión de
        Roles, tema claro): la nativa no tiene marca que pisar.
     3. El panel se oculta con el atributo `hidden`, así que su `[hidden]` va
        explícito: declara `display: flex`, y CUALQUIER regla que declare
        `display` pisa a `hidden`. Sin esa línea el panel se vería siempre.
   ═══════════════════════════════════════════════════════════════════════════ */

.agx-dd { position: relative; display: inline-block; }

/* El disparador: dice qué hay marcado sin abrirse. Cuando hay algo marcado se
   enciende —letra y borde del acento— para que se vea de un vistazo cuáles de
   los filtros están puestos; el fondo NO se tiñe del acento, por la regla 1. */
.agx-dd-btn {
  display: inline-flex; align-items: center; gap: 8px; max-width: 240px;
  background: var(--navy-3); color: var(--text);
  border: 1px solid var(--border-2); border-radius: 6px;
  padding: 6px 9px; font-size: 12px; font-family: var(--font);
  cursor: pointer; transition: border-color .12s, color .12s;
}
.agx-dd-btn:hover { border-color: var(--blue-light); }
.agx-dd-btn.on {
  color: var(--blue-light-txt, var(--blue-light));
  border-color: var(--blue-light);
  font-weight: 600;
}
.agx-dd-btn:focus-visible { outline: 2px solid var(--blue-light); outline-offset: 1px; }
.agx-dd-lbl {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0;
}
/* La flecha no compite con el rótulo: es la parte que menos información lleva. */
.agx-dd-car { font-size: 9px; color: var(--text-3); margin-left: auto; }

/* El panel. `position: fixed` para poder salir del `overflow` de la barra y de
   la tabla; lo ubica `_ddUbicar` después de abrirlo. */
.agx-dd-panel {
  position: fixed; z-index: 10050; max-width: 340px;
  display: flex; flex-direction: column;
  background: var(--navy-2); border: 1px solid var(--border-2); border-radius: 10px;
  box-shadow: 0 14px 36px var(--sombra); overflow: hidden;
}
/* ⚠ Sin esta línea el `hidden` del panel no hace nada: lo pisa el `display` de
   arriba. Es un defecto que este proyecto ya tuvo, y no da ningún error — se ve
   el panel abierto y el DOM dice que está oculto. */
.agx-dd-panel[hidden] { display: none; }

.agx-dd-fijo { padding: 8px; border-bottom: 1px solid var(--border-2); flex: none; }
.agx-dd-buscar {
  width: 100%; background: var(--navy-4); border: 1px solid var(--border-2);
  border-radius: 7px; padding: 6px 9px; color: var(--text); font-size: 12px;
  font-family: var(--font);
}
.agx-dd-buscar:focus-visible { outline: 2px solid var(--blue-light); outline-offset: -1px; }
.agx-dd-scroll {
  max-height: 260px; overflow-y: auto; padding: 5px; scrollbar-width: thin;
}
.agx-dd-item {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 8px; border-radius: 7px;
  color: var(--text-2); font-size: 12px; cursor: pointer;
  text-transform: none; letter-spacing: 0; font-weight: 500;
}
.agx-dd-item:hover { background: var(--navy-4); color: var(--text); }
.agx-dd-item input { accent-color: var(--blue); width: 14px; height: 14px; cursor: pointer; flex: none; }
.agx-dd-item input:focus-visible { outline: 2px solid var(--blue-light); outline-offset: 2px; }
.agx-dd-item span { overflow: hidden; text-overflow: ellipsis; }
/* La casilla de encabezado actúa sobre lo que se VE, y su rótulo lo dice cuando
   hay un filtro de búsqueda puesto. Va destacada porque no es una opción más. */
.agx-dd-cab { color: var(--text); font-weight: 600; padding: 2px 8px; }

/* Las dos sub-pestañas de "Facturas de venta". Reusan `.agx-tab` —el mismo botón que las
   pestañas de arriba— porque son la misma clase de control; lo único propio es que van
   un poco más juntas y sin el margen inferior, para que se lean como un segundo nivel y
   no como otra fila de pestañas principales. */
.agx-subventa { margin: 2px 0 10px; gap: 3px; }
.agx-subventa .agx-tab { font-size: 12px; padding: 5px 12px; }

/* Cada sub-pestaña con su casilla: la casilla decide si esa tabla SUMA a la proyección,
   el botón decide cuál se está mirando. Son dos cosas distintas y por eso son dos
   controles — una sola pestaña que hiciera las dos obligaría a mirar una tabla para
   poder excluirla. */
.agx-subventa { display: flex; align-items: center; gap: 10px; margin: 2px 0 10px; flex-wrap: wrap; }
.agx-sv { display: inline-flex; align-items: center; gap: 5px; }
/* La casilla de la BASE del Aging (09-10-2026): exclusiva entre las dos sub-pestañas. */
.agx-sv-chk { display: inline-flex; align-items: center; cursor: pointer; padding: 2px; }
.agx-sv-chk input { width: 14px; height: 14px; accent-color: var(--blue-light); cursor: pointer; }
.agx-subventa .agx-tab { font-size: 12px; padding: 5px 12px; }
/* El cartel de los MONTOS CAMBIADOS A MANO (23-09-2026). Es el tercero de la familia y
   el tono lo separa de sus dos hermanos a propósito: ámbar = «esta tabla se ve y no
   suma», rojo = «el total está inflado», azul = «la proyección está corriendo sobre un
   supuesto». Tres carteles con el mismo tono se leen como el mismo aviso.
   ⚠ Y este NO se puede quitar: retocar un monto es el único mecanismo del apartado que
     mueve el total sin que se vea, así que el cartel es la defensa — no un adorno.
   ⚠ Mismo patrón que los otros dos: tinte al 5% con `color-mix` sobre el TOKEN, acento
     en la LÍNEA y en el ÍCONO, y el texto en el token neutro. El acento como texto
     sobre un tinte de sí mismo es lo que falló cuatro veces en esta aplicación. */
.agx-nota-mano {
  display: flex; align-items: flex-start; gap: 8px;
  margin: 0 0 12px; padding: 9px 12px;
  background: color-mix(in srgb, var(--blue) 5%, var(--navy-3));
  border: 1px solid var(--border-2); border-left: 3px solid var(--blue);
  border-radius: 6px; font-size: 12px; color: var(--text-2); line-height: 1.6;
}
.agx-nota-mano b { color: var(--text); }
.agx-nota-mano svg { flex: none; margin-top: 2px; color: var(--blue-txt, var(--blue)); }
/* El botón de restaurar, dentro del cartel: separado del texto para que no se lea como
   parte de la frase. */
.agx-nota-mano .agx-btn { margin-left: 8px; vertical-align: middle; }
/* El campo editable del monto, en la tabla de la base. Hereda la forma del campo de días
   del modal de plazos —son el mismo gesto— y solo cambia el ancho: acá entra una cifra
   de millones con dos decimales.
   ⚠ `text-align: right` y `tabular-nums` por lo mismo que el resto de la columna: una
     columna de plata se lee comparando las unidades, y sin ancho fijo de dígito los
     números no se alinean aunque estén a la derecha.
   ⚠ Y se le sacan las flechitas de incremento: son 300 filas, ocupan ancho en cada una,
     y nadie ajusta un monto de seis cifras de a un centavo por clic. */
.agx-usd-mano {
  width: 108px; text-align: right;
  background: var(--navy-3); color: var(--text);
  border: 1px solid var(--border-2); border-radius: 5px;
  padding: 3px 6px; font-family: var(--mono); font-size: 12px; font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.agx-usd-mano::-webkit-outer-spin-button,
.agx-usd-mano::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.agx-usd-mano { -moz-appearance: textfield; appearance: textfield; }
.agx-usd-mano:focus { outline: 2px solid var(--blue-light); outline-offset: 1px; }
/* Cambiado a mano: acento en la LETRA y en el BORDE, fondo neutro — igual que el campo
   de días, y por el mismo motivo de contraste. */
.agx-usd-mano.mano { color: var(--amber); border-color: var(--amber); }
/* La cabecera del panel con un atajo al lado de "Todos" (hoy solo Empresa relacionada).
   `flex` en vez de dejar el botón en flujo: sin esto la casilla y el botón caen en dos
   renglones y el panel crece de alto sin motivo. */
.agx-dd-acc { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.agx-dd-std {
  flex: none; background: var(--navy-3); color: var(--text-2);
  border: 1px solid var(--border-2); border-radius: 5px;
  padding: 3px 9px; font-size: 10.5px; font-weight: 600;
  font-family: inherit; cursor: pointer; white-space: nowrap;
  transition: background .12s ease, color .12s ease;
}
.agx-dd-std:hover { background: var(--navy-4); color: var(--text); }
.agx-dd-std:focus-visible { outline: 2px solid var(--blue-light); outline-offset: 1px; }
.agx-dd-vacio { padding: 9px 10px; font-size: 11.5px; color: var(--text-3); font-style: italic; }
.agx-dd-item[hidden] { display: none; }
.agx-dd-vacio[hidden] { display: none; }

/* ── Los rangos de fecha ───────────────────────────────────────────────────
   Dos campos y una flecha entre ellos: la flecha dice que es un rango sin
   necesidad de las palabras "desde" y "hasta", que los dos `aria-label` sí
   llevan para quien navegue con lector de pantalla. */
.agx-grupo-rangos { flex-direction: column; align-items: flex-start; gap: 8px; }
.agx-rango { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; }
.agx-rango > label {
  font-size: 10px; text-transform: uppercase; letter-spacing: .5px;
  color: var(--text-3); font-weight: 600; min-width: 82px;
}
.agx-rango-par { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.agx-rango input[type="date"] {
  background: var(--navy-3); color: var(--text);
  border: 1px solid var(--border-2); border-radius: 6px;
  padding: 5px 8px; font-size: 12px; font-family: var(--mono);
}
.agx-rango-sep { color: var(--text-3); font-size: 12px; }

/* El rango invertido: se avisa en vez de corregirlo solo. El ámbar va en la
   LETRA y en el BORDE del aviso, no como tinte de fondo bajo su propio texto. */
.agx-rango-mal input[type="date"] { border-color: var(--amber); }
.agx-rango-aviso {
  display: block; width: 100%;
  font-size: 11.5px; line-height: 1.5; color: var(--amber);
  border-left: 3px solid var(--amber); padding-left: 9px;
}
.agx-rango-aviso b { font-family: var(--mono); }

/* En pantallas angostas el rótulo del rango se va arriba: dos campos de fecha
   más un rótulo de 82px no caben en una columna de barra estrecha. */
@media (max-width: 900px) {
  .agx-rango { flex-direction: column; align-items: flex-start; gap: 4px; }
  .agx-rango > label { min-width: 0; }
}

/* ── La factura sin plazo de pago medido ───────────────────────────────────
   Se VE en la tabla y NO suma a la proyección. Es la segunda diferencia
   deliberada entre lo que se muestra y lo que se cuenta (la primera es la
   casilla de las sub-pestañas), así que la fila lo dice sola: sin este color
   habría filas que el total ignora y nada que lo explique.

   El acento va en la LETRA y en la LÍNEA del borde, y el fondo se queda en un
   7% — un tinte del propio rojo debajo de texto rojo es el patrón de contraste
   que ya falló cuatro veces en este proyecto, porque los dos se mueven juntos
   y la diferencia entre ellos no crece nunca. */
.agx-base tbody tr.agx-sin-plazo { background: color-mix(in srgb, var(--red) 7%, transparent); }
.agx-base tbody tr.agx-sin-plazo:hover { background: color-mix(in srgb, var(--red) 13%, var(--navy-3)); }
/* La línea del borde va como sombra interior de la primera celda: un `border-left`
   sobre el <tr> no se dibuja con el modelo de tabla colapsado. */
.agx-base tbody tr.agx-sin-plazo td:first-child { box-shadow: inset 3px 0 0 var(--red-txt, var(--red)); }
/* El numerador de fila. Es contexto, no dato: se lee cuando hace falta y no compite
   con lo que importa. Tabular para que las unidades queden en columna. */
.agx-n {
  color: var(--text-3); font-family: var(--mono); font-size: 10.5px;
  text-align: right; width: 1%; white-space: nowrap;
  font-variant-numeric: tabular-nums; user-select: none;
}
.agx-sp-n { color: var(--red-txt, var(--red)); font-family: var(--mono); }

/* ── El modal de plazos de pago ────────────────────────────────────────────
   Vive dentro del contenedor de la vista pero se pinta sobre toda la pantalla:
   `position: fixed` para que no lo recorte ningún `overflow` de los de arriba. */
.agx-btn-plz { margin-left: auto; }
.agx-btn-plz .mx-ico { width: 1.15em; height: 1.15em; }

.agx-plz-ov {
  position: fixed; inset: 0; z-index: 10040;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
  background: rgba(2, 6, 23, .62);
  animation: prPlzEntra .14s ease-out;
}
.agx-plz {
  display: flex; flex-direction: column;
  width: min(1040px, 100%); max-height: 100%;
  background: var(--navy-2); border: 1px solid var(--border-2);
  border-radius: 10px; overflow: hidden;
  box-shadow: 0 18px 48px rgba(0, 0, 0, .45);
}
@keyframes prPlzEntra { from { opacity: 0 } to { opacity: 1 } }

.agx-plz-cab {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 14px;
  padding: 14px 16px 12px; border-bottom: 1px solid var(--border);
}
.agx-plz-tit { font-size: 14px; font-weight: 700; color: var(--text); }
.agx-plz-tit .mx-ico { width: 1.15em; height: 1.15em; vertical-align: -.18em; color: var(--blue-light-txt, var(--blue-light)); }
.agx-plz-sub { margin-top: 3px; font-size: 11.5px; color: var(--text-3); line-height: 1.6; max-width: 74ch; }
.agx-plz-sub b { color: var(--text-2); }
.agx-plz-x {
  flex: none; background: none; border: 1px solid var(--border-2); border-radius: 6px;
  color: var(--text-3); cursor: pointer; font-size: 13px; line-height: 1;
  padding: 6px 9px; transition: color .12s, border-color .12s;
}
.agx-plz-x:hover { color: var(--text); border-color: var(--text-3); }

/* Los dos números que resumen el estado del dato. El del que falta lleva el rojo en la
   LETRA y la separación la da el borde, no un tinte del mismo rojo debajo. */
.agx-plz-kpis {
  display: flex; flex-wrap: wrap; gap: 8px 20px;
  padding: 10px 16px; font-size: 11.5px; color: var(--text-3);
  border-bottom: 1px solid var(--border);
}
.agx-plz-kpis b { font-family: var(--mono); color: var(--text-2); }
.agx-plz-mal { color: var(--red-txt, var(--red)); }
.agx-plz-mal b { color: var(--red-txt, var(--red)); }

.agx-plz-tools {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  padding: 10px 16px; border-bottom: 1px solid var(--border);
}
.agx-plz-busca {
  flex: 1 1 260px; min-width: 200px;
  background: var(--navy-3); color: var(--text);
  border: 1px solid var(--border-2); border-radius: 6px;
  padding: 7px 10px; font-size: 12px; font-family: var(--font);
}
.agx-plz-busca::placeholder { color: var(--text-3); }
.agx-plz-chk {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 11.5px; color: var(--text-2); cursor: pointer; white-space: nowrap;
}
.agx-plz-chk input { width: 14px; height: 14px; accent-color: var(--blue-light); cursor: pointer; }

.agx-plz-cuerpo { overflow: auto; }
.agx-plz-tabla { min-width: 760px; }
/* La columna que gobierna la fecha de pago se distingue: es la única de las tres que
   entra al cálculo, y sin marcarla las otras dos parecen alternativas equivalentes. */
.agx-plz-tabla th.agx-plz-p8 { color: var(--blue-light-txt, var(--blue-light)); }
.agx-plz-tabla td.agx-plz-p8 { color: var(--text); font-weight: 600; }
/* Los días son editables, y tiene que verse que lo son: un número que se puede cambiar
   y parece texto no se toca nunca. De ahí el borde y el fondo propio.
   ⚠ Y el ancho es fijo: sin él la columna se estira con el control de las flechas del
   navegador y corre las tres de la derecha. */
.agx-plz-dias {
  width: 64px; text-align: right;
  background: var(--navy-3); color: var(--text);
  border: 1px solid var(--border-2); border-radius: 5px;
  padding: 3px 6px; font-family: var(--mono); font-size: 12px; font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.agx-plz-dias:focus { outline: 2px solid var(--blue-light); outline-offset: 1px; }
/* Cambiado a mano: el acento va en la LETRA y en el BORDE, y el fondo se queda neutro.
   Un tinte del mismo ámbar debajo de texto ámbar no separa nada — es el patrón de
   contraste que ya falló cuatro veces en este proyecto. */
.agx-plz-dias.mano {
  color: var(--amber); border-color: var(--amber);
}
.agx-plz-mano-n { color: var(--amber); }
.agx-plz-mano-n b { color: var(--amber); font-family: var(--mono); }
/* El plazo PRESTADO de otro código del mismo cliente. Mismo criterio que el ámbar de
   arriba: el acento va en la LETRA y en el BORDE y el fondo se queda neutro — un tinte
   del mismo azul debajo de texto azul no separa nada, y los dos se mueven juntos. */
.agx-plz-dias.prestado {
  color: var(--blue-txt, var(--blue)); border-color: var(--blue-txt, var(--blue));
}
.agx-plz-prest {
  display: inline-block; margin-left: 6px; padding: 1px 6px;
  border: 1px solid var(--blue-txt, var(--blue)); border-radius: 4px;
  color: var(--blue-txt, var(--blue));
  font-size: 10px; font-weight: 700; white-space: nowrap; cursor: help;
  font-family: var(--mono);
}
.agx-plz-prest-n { color: var(--blue-txt, var(--blue)); }
.agx-plz-prest-n b { color: var(--blue-txt, var(--blue)); font-family: var(--mono); }
.agx-plz-rest, .agx-plz-xls { flex: none; font-size: 11px; padding: 5px 9px; }
.agx-plz-xls .mx-ico { width: 1.1em; height: 1.1em; }
.agx-plz-rest .mx-ico { width: 1.1em; height: 1.1em; }
.agx-plz-tabla th:nth-child(n+4) { text-align: right; }   /* el modal tiene sus columnas fijas */
.agx-plz-nom { white-space: normal; min-width: 220px; }
.agx-plz-nd { color: var(--red-txt, var(--red)); }
.agx-plz-recorte { padding: 10px 16px; font-size: 11px; color: var(--text-3); line-height: 1.6; }
.agx-plz-cargando { padding: 12px 16px; font-size: 12px; color: var(--text-3); }
.agx-plz-cargando .mx-ico { width: 1.2em; height: 1.2em; vertical-align: -.24em; }

/* La tabla del modal lleva también la clase de la tabla base, así que hereda su regla de
   alineación por clase. Las columnas de días no la tienen, y por eso el modal conserva su
   propia regla contando posiciones: sus columnas son fijas y no crecen.
   ⚠ Acá NO se transcribe el selector de la tabla base: hay una invariante que prohíbe que
   vuelva a contar posiciones, y busca en el archivo entero. Un comentario que copia lo que
   su propio test prohíbe pone el test en rojo sobre código sano — y un test que falla sin
   defecto termina "arreglándose" debilitándolo. Se nombra en prosa. */

/* La casilla de las facturas sin fecha de pago: va pegada a su rango, y cuando el rango
   está vacío se atenúa porque no cambia nada. Se atenúa y NO se esconde: un control que
   aparece y desaparece según el estado de otro se lee como un error de la pantalla.
   El atenuado usa opacidad sobre el rótulo y no un color propio — WCAG exime el texto de
   los componentes inactivos, y así no hay un token nuevo que mantener en dos temas. */
.agx-chk-sinfecha { margin-left: 2px; white-space: nowrap; }
.agx-chk-inerte { opacity: .62; }

/* ══ El anticipo: el punto de color de la celda «Pagado» y su leyenda ══════════
   (16-09-2026)

   ⚠ El punto lo DIBUJA el CSS y no es un emoji ni un `<svg>`: así sigue al tema sin
     una línea de JavaScript, igual que el punto de prioridad de Proveedores Críticos.
   ⚠ Va acompañado de la PALABRA en el marcado. El color solo es información que se
     pierde para quien no lo distingue, y en un monitor malo el azul y el verde se
     parecen. La palabra es la que lleva el dato; el punto lo hace encontrable de un
     vistazo.
   ⚠ Los tonos salen de los TOKENS y no de literales: en tema claro `--blue` y
     `--green` son otros valores, y un `#2563eb` escrito a mano pintaría el punto del
     tema equivocado — que es el defecto que este apartado ya tuvo con el índigo. */
.agx-ant { display: inline-flex; align-items: center; gap: 6px; justify-content: flex-end; }
/* `flex: none` para que el punto no se achique cuando la celda se estrecha: un punto
   ovalado se lee como un defecto de dibujo. */
.agx-ant-pt { flex: none; width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.agx-ant-sap { background: var(--blue); }
.agx-ant-xls { background: var(--green); }
/* El origen que NO está en `ANT_ORIGEN`. Existe para que un valor nuevo de Snowflake se
   VEA en vez de desaparecer: un punto gris con su texto crudo pide que alguien lo
   agregue, y una celda sin punto es indistinguible de «sin anticipo». */
.agx-ant-otro { background: var(--text-3); }

.agx-leyenda {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px;
  margin: 0 0 12px; padding: 8px 12px;
  background: var(--navy-3); border: 1px solid var(--border-2);
  border-radius: 6px; font-size: 12px; color: var(--text-2);
}
.agx-leg-it { display: inline-flex; align-items: center; gap: 7px; }
/* La nota del saldo se separa de los dos puntos con una línea, no con más espacio:
   explica otra cosa —qué número suma la proyección— y pegada a ellos se lee como si
   fuera un tercer color. */
.agx-leg-nota { padding-left: 18px; border-left: 1px solid var(--border-2); color: var(--text-3); }
@media (max-width: 900px) {
  .agx-leg-nota { padding-left: 0; border-left: 0; }
}


/* ── Seguros Cliente: el modal y sus dos zonas de arrastre ──────────────────
   Mismo esqueleto que el modal de plazos —`fixed` para que no lo recorte ningún
   `overflow` de los de arriba— y los mismos tokens, así que el tema lo invierte
   solo. Lo propio de acá son las dos zonas y el bloque de resultado.

   ⚠ El estado de resaltado es `.sobre` y NO `:hover`: lo pone el `dragover`, y un
     `:hover` se encendería al pasar el mouse sin ningún archivo — prometiendo que
     algo va a pasar cuando no hay nada que soltar.
   ⚠ Y el acento de cada resultado va en el BORDE IZQUIERDO y en la LETRA, con el
     fondo en la superficie neutra. Un tinte del propio acento debajo de su texto es
     el patrón que más veces falló en esta aplicación. */
.agx-seg-ov {
  position: fixed; inset: 0; z-index: 10040;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
  background: rgba(2, 6, 23, .62);
  animation: prPlzEntra .14s ease-out;
}
.agx-seg {
  display: flex; flex-direction: column;
  width: min(980px, 100%); max-height: 100%;
  background: var(--navy-2); border: 1px solid var(--border-2);
  border-radius: 10px; overflow: hidden;
  box-shadow: 0 18px 48px rgba(0, 0, 0, .45);
}
.agx-seg-cab {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 14px;
  padding: 14px 16px 12px; border-bottom: 1px solid var(--border);
}
.agx-seg-tit { font-size: 14px; font-weight: 700; color: var(--text); }
.agx-seg-tit .mx-ico {
  width: 1.15em; height: 1.15em; vertical-align: -.18em;
  color: var(--blue-light-txt, var(--blue-light));
}
.agx-seg-sub {
  margin-top: 3px; font-size: 11.5px; color: var(--text-3);
  line-height: 1.6; max-width: 78ch;
}
.agx-seg-sub b { color: var(--text-2); }
.agx-seg-x {
  flex: none; background: none; border: 1px solid var(--border-2); border-radius: 6px;
  color: var(--text-3); cursor: pointer; font-size: 13px; line-height: 1;
  padding: 6px 9px; transition: color .12s, border-color .12s;
}
.agx-seg-x:hover { color: var(--text); border-color: var(--text-3); }

.agx-seg-cuerpo { overflow: auto; padding: 14px 16px 16px; }

/* Las dos zonas, lado a lado y del mismo ancho: una más grande que la otra se lee
   como que una es la principal, y son dos universos independientes. */
.agx-seg-zonas {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px;
}
@media (max-width: 820px) {
  .agx-seg-zonas { grid-template-columns: minmax(0, 1fr); }
}

.agx-seg-zona {
  border: 1px solid var(--border-2); border-radius: 8px;
  background: var(--navy-3); padding: 12px 13px 13px;
  transition: border-color .12s, background .12s;
}
.agx-seg-zona.sobre {
  border-color: var(--blue-light);
  background: color-mix(in srgb, var(--blue-light) 6%, var(--navy-3));
}
.agx-seg-zona-tit { font-size: 12.5px; font-weight: 700; color: var(--text); }
.agx-seg-zona-tit .mx-ico {
  width: 1.1em; height: 1.1em; vertical-align: -.18em;
  color: var(--blue-light-txt, var(--blue-light));
}
.agx-seg-zona-sub {
  margin-top: 3px; font-size: 11px; color: var(--text-3); line-height: 1.55;
  min-height: 2.6em;
}
.agx-seg-zona-caja {
  margin-top: 10px; padding: 16px 12px;
  border: 1px dashed var(--border-2); border-radius: 7px;
  display: flex; flex-direction: column; align-items: center; gap: 9px;
  text-align: center;
}
.agx-seg-zona.sobre .agx-seg-zona-caja { border-color: var(--blue-light); }
.agx-seg-zona-arr { font-size: 11.5px; color: var(--text-3); }
.agx-seg-zona-arr .mx-ico {
  width: 1.15em; height: 1.15em; vertical-align: -.2em; margin-right: 3px;
}

/* El resultado de esa zona. El color lo pone el JS en el borde izquierdo, porque
   depende del tono (esperando / bien / hay algo que mirar / no se cargó). */
.agx-seg-res {
  margin-top: 11px; padding: 10px 12px;
  background: var(--navy-2); border: 1px solid var(--border);
  border-left: 3px solid var(--text-3); border-radius: 6px;
  font-size: 11.5px; color: var(--text-2); line-height: 1.6;
}
.agx-seg-res-tit { color: var(--text); font-size: 12px; }
.agx-seg-res-tit .mx-ico { width: 1.15em; height: 1.15em; vertical-align: -.22em; margin-right: 3px; }
.agx-seg-msg { margin-top: 5px; color: var(--text-3); }
.agx-seg-msg b { color: var(--text-2); font-family: var(--mono); }
.agx-seg-alerta { color: var(--amber); }

.agx-seg-lista {
  margin-top: 6px; padding-left: 9px; font-size: 11px; color: var(--text-3);
  border-left: 2px solid var(--border-2); line-height: 1.55;
}
.agx-seg-lista b { color: var(--text-2); }
.agx-seg-lista.alta { border-left-color: var(--green); }
.agx-seg-lista.baja { border-left-color: var(--red-txt, var(--red)); }
.agx-seg-lista.ojo { border-left-color: var(--amber); }

.agx-seg-acc { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 8px; }
/* El botón que autoriza las bajas lleva el ámbar en la LETRA y en el BORDE: es la
   única acción de esta pantalla que puede hacer desaparecer clientes. */
.agx-seg-si {
  color: var(--amber) !important;
  border-color: color-mix(in srgb, var(--amber) 55%, transparent) !important;
}

.agx-seg-pie {
  margin-top: 14px; padding-top: 11px; border-top: 1px solid var(--border);
  font-size: 11px; color: var(--text-3); line-height: 1.7;
}
.agx-seg-pie b { color: var(--text-2); }


/* ── La pestaña «Seguros»: barra, números y tabla ───────────────────────────
   Reusa `.agx-tabla.agx-base` para la forma de la tabla y le agrega lo propio:
   el chip del ámbito, el realce de las columnas que se completan a mano, y la
   fila de detalle.

   ⚠ Los acentos van en la LETRA y en la LÍNEA, con el fondo en la superficie
     neutra. Un tinte del propio acento debajo de su propio texto es el patrón
     que más veces falló en esta aplicación. */
.agx-seg-barra {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 10px 12px; margin: 0 0 12px;
  background: var(--navy-2); border: 1px solid var(--border);
  border-radius: 8px;
}
.agx-seg-busca {
  flex: 1 1 280px; min-width: 200px;
  background: var(--navy-3); color: var(--text);
  border: 1px solid var(--border-2); border-radius: 6px;
  padding: 7px 10px; font-size: 12px; font-family: var(--font);
}
.agx-seg-busca::placeholder { color: var(--text-3); }
.agx-seg-amb-sel { display: inline-flex; gap: 4px; }
.agx-seg-chk {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 11.5px; color: var(--text-2); cursor: pointer; white-space: nowrap;
}
.agx-seg-chk input { width: 14px; height: 14px; accent-color: var(--blue-light); cursor: pointer; }

.agx-seg-kpis {
  display: flex; flex-wrap: wrap; gap: 8px 22px;
  padding: 0 2px 10px; font-size: 11.5px; color: var(--text-3);
}
.agx-seg-kpis b { font-family: var(--mono); color: var(--text-2); }
/* El número que dice cuánto trabajo queda. Ámbar en la LETRA, sin tinte. */
.agx-seg-mal, .agx-seg-mal b { color: var(--amber); }

.agx-seg-tabla { min-width: 1040px; }

/* El chip del tipo de cliente. Dos tonos que se distinguen además por el TEXTO:
   un color solo es información que se pierde para quien no lo distingue. */
.agx-seg-chip {
  display: inline-block; padding: 1px 7px; border-radius: 10px;
  font-size: 10.5px; font-weight: 700; letter-spacing: .02em;
  border: 1px solid currentColor; white-space: nowrap;
}
.agx-seg-chip.ext { color: var(--blue-light-txt, var(--blue-light)); }
.agx-seg-chip.nac { color: var(--green); }

/* ⚠ El tope del nombre está MEDIDO: con 280 px la tabla pide 1.313 y el área útil
   a 1440 es 1.154, así que las columnas que se vienen a completar quedaban fuera de
   la pantalla. El nombre entero sigue en el `title` de la celda. */
.agx-seg-cliente { max-width: 230px; overflow: hidden; text-overflow: ellipsis; }
.agx-seg-amb { white-space: nowrap; }

/* Las cuatro columnas que se completan a mano: se separan del resto con una
   línea, no con un fondo. Así se ven como un grupo sin bajar el contraste. */
.agx-seg-man { border-left: 1px solid var(--border-2); }
.agx-seg-falta {
  font-size: 10.5px; font-style: italic;
  color: var(--amber);
}
.agx-seg-nd { color: var(--text-3); }

.agx-seg-fila { cursor: pointer; }
.agx-seg-fila:hover > td { background: var(--navy-3); }
/* ⚠ El realce de «algo sin completar» es un tinte al 5%, MEDIDO en otro trabajo
   de este apartado: al 12% el texto de la fila cae por debajo de 4,5:1. */
.agx-seg-fila.falta > td {
  background: color-mix(in srgb, var(--amber) 5%, transparent);
}
.agx-seg-fila.falta:hover > td {
  background: color-mix(in srgb, var(--amber) 9%, var(--navy-3));
}

/* ⚠ La fila de detalle se muestra con `table-row` y se oculta con una CLASE.
   Dentro de una tabla el atributo `hidden` lo pisa cualquier regla que declare
   `display`, así que se vería ignorado sin dar ningún error. */
.agx-seg-det { display: table-row; }
.agx-seg-det.oculta { display: none; }
.agx-seg-det > td {
  background: var(--navy-3);
  border-top: 1px solid var(--border);
  padding: 10px 14px !important;
  white-space: normal;
}
.agx-seg-det-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
  gap: 7px 22px; font-size: 11.5px; color: var(--text-2);
}
.agx-seg-det-grid > div { display: flex; flex-direction: column; gap: 1px; }
.agx-seg-det-grid span {
  font-size: 10px; text-transform: uppercase; letter-spacing: .04em;
  color: var(--text-3);
}


/* ── Los cuatro campos que escribe una persona (24-09-2026) ─────────────────
   ⚠ El campo VACIO se marca con el ambar en la LETRA del placeholder y un borde
     punteado, no con un tinte de fondo: un tinte del propio acento debajo de su
     propio texto es el patron que mas veces fallo en esta aplicacion. Y el borde
     punteado dice "aca falta algo" sin depender del color, que es lo que hace que
     se lea igual en un monitor malo. */
.agx-seg-inp {
  width: 100%; box-sizing: border-box;
  background: var(--navy-3); color: var(--text);
  border: 1px solid var(--border-2); border-radius: 5px;
  padding: 3px 6px; font-size: 11.5px;
  font-family: var(--mono); text-align: right;
}
.agx-seg-tabla td.agx-seg-man:first-of-type .agx-seg-inp { text-align: left; }
.agx-seg-inp:hover { border-color: var(--text-3); }
.agx-seg-inp:focus {
  outline: 2px solid var(--blue-light); outline-offset: 1px;
  border-color: var(--blue-light);
}
.agx-seg-inp.vacio { border-style: dashed; border-color: var(--amber); }
.agx-seg-inp::placeholder { color: var(--amber); font-style: italic; opacity: 1; }
/* Mientras viaja: el campo se apaga y lo dice. Sin esto, dos ENTER seguidos mandan
   dos escrituras y la segunda pisa el sello de la primera. */
.agx-seg-inp.guardando { opacity: .55; cursor: progress; }
.agx-seg-inp:disabled { cursor: progress; }

/* ── Las filas agregadas a mano  (24-09-2026) ───────────────────────────────
   ⚠ El chip del origen es el TERCERO de la familia `.agx-seg-chip` y lleva su
     propia PALABRA, no solo un tono: un color solo es información que se pierde
     para quien no lo distingue. Y el violeta separa «de dónde salió» de «qué tipo
     es» — el azul y el verde ya están tomados por los dos ámbitos. */
.agx-seg-chip.mano { color: var(--purple-txt, var(--purple)); }

/* Las dos acciones viven DENTRO del detalle: así no cuestan un píxel de ancho de
   tabla, que es lo que decidió ponerlas ahí. */
.agx-seg-det-acc {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin-top: 10px; padding-top: 9px;
  border-top: 1px dashed var(--border-2);
  font-size: 11.5px; color: var(--text-2);
}
.agx-seg-det-acc > span { flex: 1 1 260px; }
/* ⚠ El acento va en la LETRA y en el BORDE, con el fondo neutro: un tinte del
     propio acento debajo de su propio texto es el patrón que más veces falló en
     esta aplicación, y no hay proporción que lo arregle. */
.agx-seg-borrar {
  color: var(--red-txt, var(--red));
  border-color: var(--red-txt, var(--red));
}

/* ── El formulario de alta ──────────────────────────────────────────────────
   ⚠ Tiene sus PROPIAS clases y no reusa ninguna `agx-peg-*`: aquéllas son del
     bloque temporal del pegado, que se borra entero cuando el usuario lo pida —y
     este modal es permanente. Apoyarse en ellas lo dejaría sin forma ese día, sin
     un solo error. */
.agx-alta-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(215px, 1fr));
  gap: 12px 16px;
}
/* El cliente y las observaciones toman la fila entera: son los dos campos donde se
   escribe una frase, y en una celda angosta hay que leerlos de a pedazos. */
.agx-alta-ancho { grid-column: 1 / -1; }
.agx-alta-campo { display: flex; flex-direction: column; gap: 3px; }
.agx-alta-campo > span {
  font-size: 10px; text-transform: uppercase; letter-spacing: .04em;
  color: var(--text-3);
}
.agx-alta-campo > em { font-size: 10.5px; font-style: normal; color: var(--text-3); }
.agx-alta-inp {
  width: 100%; box-sizing: border-box;
  background: var(--navy-3); color: var(--text);
  border: 1px solid var(--border-2); border-radius: 5px;
  padding: 5px 8px; font-size: 12.5px; font-family: inherit;
}
.agx-alta-inp:hover { border-color: var(--text-3); }
.agx-alta-inp:focus {
  outline: 2px solid var(--blue-light); outline-offset: 1px;
  border-color: var(--blue-light);
}
.agx-alta-inp:disabled { opacity: .55; cursor: progress; }
textarea.agx-alta-inp { resize: vertical; min-height: 34px; font-family: inherit; }
.agx-alta-acc {
  display: flex; align-items: center; gap: 10px; margin-top: 14px; flex-wrap: wrap;
}
.agx-alta-go { border-color: var(--green); color: var(--green); }
.agx-alta-prog { font-size: 12.5px; color: var(--text-2); }
/* El motivo del rechazo, arriba de los botones y no en un toast que se va solo:
   es lo que hay que leer para corregir el campo que está mal. */
.agx-alta-mal {
  margin-top: 12px; padding: 8px 11px; font-size: 12.5px;
  border-left: 3px solid var(--red-txt, var(--red));
  background: color-mix(in srgb, var(--red) 5%, transparent);
  color: var(--text-2);
}

/* ══ El vencimiento que corrigió Tesorería con «Días a pagar» (25-09-2026) ═════
   ⚠ El punto lo DIBUJA el CSS y no es un emoji: sigue al tema sin una línea de
     JavaScript, igual que el del anticipo y el de prioridad de Proveedores Críticos.
   ⚠ Es `--cyan` porque es el MISMO color con el que «Facturas de venta» marca esta
     misma corrección (`.dias-marca`): dos pantallas que muestran el mismo hecho con
     colores distintos se leen como dos hechos distintos.
   ⚠ Y el punto va DESPUÉS del texto, con `nowrap`, para que no quede solo al final de
     una línea partida — un punto suelto en una tabla de fechas no se puede interpretar. */
.agx-venc-mano { white-space: nowrap; cursor: help; }
.agx-venc-punto {
  display: inline-block; width: 6px; height: 6px; margin-left: 5px;
  border-radius: 50%; background: var(--cyan); vertical-align: middle;
}

/* ══ El modal «Días a pagar por cliente» (25-09-2026) ══════════════════════════
   Reusa el overlay y el panel de Seguros (`.agx-seg-ov` / `.agx-seg`): son el mismo
   objeto —un cuadro modal con cabecera, cuerpo y pie— y una segunda copia de esas
   reglas es una que queda vieja el día que se ajuste la otra. */
.agx-dias-busca {
  width: 100%; box-sizing: border-box; margin: 0 0 10px;
  padding: 8px 10px; font-size: 13px;
  background: var(--navy-3); color: var(--text-1);
  border: 1px solid var(--border-2); border-radius: 8px;
}
.agx-dias-cab, .agx-dias-fila {
  display: grid; grid-template-columns: 96px 1fr 76px 88px; gap: 10px; align-items: center;
}
.agx-dias-cab {
  padding: 0 4px 6px; font-size: 11px; letter-spacing: .04em;
  text-transform: uppercase; color: var(--text-3);
  border-bottom: 1px solid var(--border-2);
}
.agx-dias-cab > div:nth-child(3), .agx-dias-cab > div:nth-child(4),
.agx-dias-fila > .agx-dias-n, .agx-dias-fila > .agx-dias-in { text-align: right; }
.agx-dias-lista { max-height: 46vh; overflow: auto; }
.agx-dias-fila { padding: 6px 4px; border-bottom: 1px solid var(--border-3, var(--border-2)); }
.agx-dias-cta { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 12px; color: var(--text-2); }
.agx-dias-cli { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.agx-dias-n { font-size: 12px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.agx-dias-in input {
  width: 72px; text-align: right; padding: 5px 8px; font-size: 13px;
  background: var(--navy-3); color: var(--text-1);
  border: 1px solid var(--border-2); border-radius: 6px;
  font-variant-numeric: tabular-nums;
}
/* El campo VACÍO es el que lleva información —«esta cuenta usa el plazo de SAP»— así que
   su borde no se realza: lo corregido es la excepción, y es lo que tiene que saltar. */
.agx-dias-in input:not(:placeholder-shown) { border-color: var(--cyan); }
.agx-dias-sin { color: var(--text-3); font-size: 12px; }
.agx-dias-vacio { padding: 20px; text-align: center; color: var(--text-3); }
.agx-dias-pie {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 16px; border-top: 1px solid var(--border-2);
}
.agx-dias-nota { flex: 1; font-size: 12px; color: var(--text-3); }

/* ── El DESCARTE a mano en el Laboratorio (01-10-2026) ────────────────────────
   Traído de la beta (`.pr-fila-descartada` / `.pr-desc-btn`) con el prefijo `agx-`.
   ⚠ Va ANTES del bloque temporal del pegado de Seguros: ese bloque se borra entero el
     día que se retire, y lo que quede adentro se iría con él. Y este comentario NO
     repite la marca de ese bloque: su test la busca para saber dónde empieza. */
.agx-fila-descartada td {
  opacity: .5;
  text-decoration: line-through;
  text-decoration-color: var(--red-txt, var(--red));
}
/* La celda del botón NO se tacha ni se atenúa: es el control para volver atrás, y un
   control tachado se lee como deshabilitado. */
.agx-fila-descartada td.agx-acc { opacity: 1; text-decoration: none; }
.agx-acc { width: 34px; text-align: center; padding-left: 4px; padding-right: 4px; }
/* Fijado al borde derecho, con fondo OPACO: con translúcido las celdas que se corren
   pasan por debajo y los montos quedan escritos encima del botón. */
.agx-base th.agx-acc, .agx-base td.agx-acc {
  position: sticky; right: 0;
  background: var(--navy-2);
  box-shadow: inset 1px 0 0 var(--border-2);
}
.agx-base th.agx-acc { z-index: 2; }
.agx-base tbody tr:hover td.agx-acc { background: var(--navy-3); }
.agx-desc-btn {
  width: 22px; height: 22px; padding: 0; line-height: 1;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 15px; font-weight: 700; font-family: var(--font);
  /* Acento en la LETRA y en el BORDE, fondo neutro: la regla de contraste del proyecto. */
  color: var(--red-txt, var(--red));
  background: var(--navy-3); border: 1px solid var(--border-2);
  border-radius: 5px; cursor: pointer;
}
.agx-desc-btn:hover:not(:disabled) { border-color: var(--red-txt, var(--red)); }
/* Restaurar es verde: acciones OPUESTAS con el mismo color obligan a leer el signo. */
.agx-desc-on { color: var(--green); }
.agx-desc-on:hover:not(:disabled) { border-color: var(--green); }

/* Filas que se MUESTRAN y NO suman (06-10-2026, semanal de Tesorería): nota de crédito ya
   aplicada a su factura, o saldo cero. En el gris terciario —no con `opacity`, que baja el
   contraste por debajo del mínimo— y en cursiva, sin tachar: tachado es
   «descartada a mano», que es otra cosa. El motivo va en el `title` de la fila. */
.agx-base tr.agx-fila-nosuma td { color: var(--text-3); font-style: italic; }
/* El switch «Aplicar notas de crédito» de la cabecera de la tabla. */
.agx-sw-nc { display: inline-flex; align-items: center; gap: 6px; margin-left: 10px;
  font-size: 12px; color: var(--text-2); cursor: pointer; user-select: none; }
.agx-sw-nc input { accent-color: var(--blue); cursor: pointer; }

/* ╔══════════════════════════════════════════════════════════════════════════════
   ║  PEGADO TEMPORAL · el cuadro para pegar los Cód SAP  (24-09-2026)
   ╚══════════════════════════════════════════════════════════════════════════════
   ⚠ SE BORRA ENTERO cuando se retire la funcionalidad — es lo único de esta hoja
     con el prefijo `agx-peg-`. El modal reusa `.agx-seg-ov` / `.agx-seg`, que son
     del modal de carga y NO se tocan acá.
   ⚠ Los colores salen de los tokens y NUNCA de un `-txt` como fondo: ese es el tono
     claro del acento y como fondo da lo contrario de lo que hace falta. */

.agx-peg-ta {
  width: 100%; box-sizing: border-box; resize: vertical;
  font-family: ui-monospace, "Cascadia Code", Consolas, monospace;
  font-size: 12.5px; line-height: 1.5;
  padding: 10px 12px; border-radius: 8px;
  border: 1px solid var(--border-color, rgba(148,163,184,.35));
  background: var(--navy-3, #fff); color: var(--text-1, #0f172a);
}
.agx-peg-ta:focus { outline: 2px solid var(--blue-txt, #60a5fa); outline-offset: 1px; }

.agx-peg-tmp {
  font-size: 10px; text-transform: uppercase; letter-spacing: .06em;
  padding: 2px 6px; border-radius: 999px; vertical-align: middle;
  border: 1px solid var(--amber, #d97706); color: var(--amber, #d97706);
}

.agx-peg-acc { display: flex; align-items: center; gap: 10px; margin-top: 12px; flex-wrap: wrap; }
.agx-peg-prog { font-size: 12.5px; color: var(--text-2, #475569); }
.agx-peg-go { border-color: var(--green, #16a34a); color: var(--green, #16a34a); }

.agx-peg-res { margin-top: 14px; font-size: 13px; }
.agx-peg-cuenta { display: flex; flex-wrap: wrap; gap: 8px 18px; margin-bottom: 10px; }
.agx-peg-n { color: var(--text-2, #475569); }
.agx-peg-n b { color: var(--text-1, #0f172a); font-size: 15px; }
.agx-peg-si b { color: var(--green, #16a34a); }
.agx-peg-ojo b { color: var(--amber, #d97706); }

/* El detalle arranca PLEGADO: son listas de hasta 130 líneas y, abiertas, empujan el
   botón de escribir fuera de la pantalla — o sea esconden la acción que se vino a hacer. */
.agx-peg-det { margin: 6px 0; }
.agx-peg-det > summary {
  cursor: pointer; padding: 5px 0; color: var(--text-2, #475569);
  font-weight: 600;
}
.agx-peg-ul { margin: 4px 0 8px; padding-left: 20px; max-height: 220px; overflow-y: auto; }
.agx-peg-ul li { margin: 3px 0; color: var(--text-2, #475569); }
.agx-peg-ul code {
  font-family: ui-monospace, Consolas, monospace; font-size: 12px;
  padding: 1px 5px; border-radius: 4px;
  background: color-mix(in srgb, var(--text-3, #64748b) 12%, transparent);
}

.agx-peg-ok { color: var(--green, #16a34a); font-weight: 600; font-size: 14px; }
.agx-peg-mal { color: var(--red-txt, var(--red, #dc2626)); font-weight: 600; margin-top: 10px; }
.agx-peg-nota, .agx-peg-pie {
  margin-top: 10px; font-size: 12.5px; color: var(--text-3, #64748b);
}

/* ╚══ PEGADO TEMPORAL ══════════════════════════════════════════════ FIN ══════ */

/* ═══ La pestaña «Aging» (08-10-2026): las hojas del Excel «Aging Week NN» ═══ */
.agx-ag-acc { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.agx-ag-aviso { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 0 0 10px;
  padding: 8px 12px; border: 1px solid var(--border); border-left: 3px solid var(--amber);
  background: var(--navy-3); color: var(--text-2); font-size: 12.5px; border-radius: 6px; }
.agx-ag-aviso .mx-ico { color: var(--amber); }
.agx-ag-card { padding: 12px 14px; }
.agx-ag-sub { font-size: 12.5px; font-weight: 700; color: var(--text); margin: 14px 0 6px; }
.agx-ag-sub:first-child { margin-top: 0; }
.agx-ag-nota { font-size: 11.5px; color: var(--text-3); margin: 6px 0 4px; line-height: 1.5; }
.agx-ag-wrap { overflow-x: auto; }
.agx-ag-tabla { width: 100%; border-collapse: collapse; font-size: 12px; font-variant-numeric: tabular-nums; }
.agx-ag-tabla th { position: sticky; top: 0; background: var(--navy-2); color: var(--text-2);
  font-weight: 600; text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--border); white-space: nowrap; }
.agx-ag-tabla td { padding: 4px 8px; border-bottom: 1px solid var(--border); color: var(--text); }
.agx-ag-tabla .agx-num { text-align: right; white-space: nowrap; }
.agx-ag-tabla .agx-ag-cl { max-width: 340px; overflow: hidden; text-overflow: ellipsis; }
.agx-ag-tabla tr.agx-ag-n0 td { font-weight: 700; background: color-mix(in srgb, var(--blue) 5%, var(--navy-3)); }
.agx-ag-tabla tr.agx-ag-n1 td { font-weight: 600; }
.agx-ag-tabla tr.agx-ag-hoja td { font-weight: 400; }
.agx-ag-tabla .agx-ag-tot { font-weight: 700; }
.agx-ag-tabla tfoot td { font-weight: 700; border-top: 2px solid var(--border); background: var(--navy-3); }
.agx-ag-tabla tr.agx-ag-pct td { font-weight: 400; color: var(--text-2); }
.agx-ag-angosta { width: auto; min-width: 420px; }
.agx-ag-vacio { text-align: center; color: var(--text-3); padding: 14px; }
.agx-ag-tg { border: 0; background: none; color: var(--text-2); cursor: pointer; padding: 0 4px 0 0; font-size: 11px; }
.agx-ag-tg:focus-visible { outline: 2px solid var(--blue); outline-offset: 1px; }
.agx-ag-modal { width: min(980px, calc(100vw - 32px)); }
.agx-ag-sinlista { max-height: 160px; overflow: auto; margin: 8px 0; padding: 8px 10px;
  border: 1px solid var(--border); border-left: 3px solid var(--amber); border-radius: 6px; font-size: 12px; }
.agx-ag-sin { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 10px; align-items: center; padding: 2px 0; }
.agx-ag-sin > span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.agx-ag-form { display: grid; grid-template-columns: 2fr 1fr 1.2fr 1fr 1fr 1.4fr auto auto; gap: 6px; margin: 8px 0; }
.agx-ag-form input, .agx-ag-busca { padding: 6px 8px; font-size: 12px; border: 1px solid var(--border);
  border-radius: 6px; background: var(--navy-3); color: var(--text); min-width: 0; }
.agx-ag-busca { width: 100%; margin: 4px 0 6px; }
.agx-ag-reglas { max-height: 46vh; overflow: auto; font-size: 12px; }
.agx-ag-regla { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1.4fr) minmax(0, 1fr) auto auto;
  gap: 8px; align-items: center; padding: 4px 2px; border-bottom: 1px solid var(--border); }
.agx-ag-rcli, .agx-ag-rexc { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.agx-ag-rexc { color: var(--text-3); }
.agx-ag-reje { font-weight: 600; }

/* ── Descarte por lista (08-10-2026) ─────────────────────────────────────── */
.agx-desc-modal { width: min(760px, calc(100vw - 32px)); }
.agx-desc-txt, .agx-desc-mot { width: 100%; box-sizing: border-box; padding: 6px 8px; font-size: 12px;
  border: 1px solid var(--border); border-radius: 6px; background: var(--navy-3); color: var(--text); margin-top: 8px; }
.agx-desc-txt { font-family: ui-monospace, Consolas, monospace; resize: vertical; }
.agx-desc-res { margin-top: 8px; font-size: 12px; color: var(--text-2); }
.agx-desc-nofeed { margin-top: 4px; color: var(--amber); }
.agx-desc-acc { display: flex; justify-content: flex-end; margin: 8px 0; }
/* La marca de la fila descartada por lista: acento en la LETRA y el BORDE, fondo neutro. */
.agx-desc-lista { display: inline-block; padding: 1px 6px; font-size: 11px; border-radius: 4px;
  border: 1px solid var(--amber); color: var(--amber); }

/* ═══ La pestaña «Aging», rediseño (09-10-2026) ═════════════════════════════════
   Encabezado con la semana · cuatro tarjetas · sub-pestañas con el color de su
   pestaña en el Excel · tablas que se desplazan dentro de su tarjeta con la primera
   columna y el encabezado fijos. */
.agx-ag-head { display: flex; flex-wrap: wrap; gap: 12px 20px; align-items: flex-end;
  justify-content: space-between; margin: 6px 0 14px; }
.agx-ag-titulo h2 { margin: 0; font-size: 22px; font-weight: 800; letter-spacing: .02em; color: var(--text); }
.agx-ag-titulo h2 span { font-weight: 600; color: var(--text-2); margin-left: 6px; font-size: 18px; }
.agx-ag-titulo p { margin: 4px 0 0; font-size: 12px; color: var(--text-2); max-width: 760px; line-height: 1.45; }
.agx-ag-segs { display: inline-flex; align-items: center; border: 1px solid var(--border);
  border-radius: 8px; overflow: hidden; background: var(--navy-2); }
.agx-ag-segs > span { font-size: 12px; color: var(--text-2); padding: 0 10px; }
.agx-ag-seg { border: 0; border-left: 1px solid var(--border); background: transparent; color: var(--text-2);
  font: inherit; font-size: 12.5px; padding: 7px 12px; cursor: pointer; }
.agx-ag-seg.on { background: color-mix(in srgb, var(--blue) 14%, var(--navy-2)); color: var(--text); font-weight: 700; }
.agx-ag-seg:hover:not(.on) { color: var(--text); }
.agx-ag-seg:focus-visible, .agx-ag-hoja-tab:focus-visible, .agx-ag-kpi:focus-visible { outline: 2px solid var(--blue); outline-offset: 1px; }
.agx-ag-primario { background: var(--blue); border-color: var(--blue); color: #fff; font-weight: 700; }
.agx-ag-primario:hover:not(:disabled) { background: color-mix(in srgb, var(--blue) 85%, black); color: #fff; }

.agx-ag-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 0 0 14px; }
@media (max-width: 1100px) { .agx-ag-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.agx-ag-kpi { display: flex; flex-direction: column; gap: 4px; text-align: left; font: inherit;
  padding: 12px 14px; border: 1px solid var(--border); border-left: 4px solid var(--blue);
  border-radius: 8px; background: var(--navy-2); color: var(--text); }
.agx-ag-kpi > span { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--text-2); }
.agx-ag-kpi > b { font-size: 20px; font-weight: 800; font-variant-numeric: tabular-nums; }
.agx-ag-kpi > small { font-size: 12px; color: var(--text-2); }
.agx-ag-kpi-rojo { border-left-color: var(--red); }
.agx-ag-kpi-rojo > b { color: var(--red-txt, var(--red)); }
.agx-ag-kpi-verde, .agx-ag-kpi-ok { border-left-color: var(--green); }
.agx-ag-kpi-alerta { border-left-color: var(--amber); cursor: pointer; }
.agx-ag-kpi-alerta:hover { border-color: var(--amber); }
.agx-ag-kpi-alerta > b { color: var(--amber); }

.agx-ag-hojas { display: flex; gap: 6px; overflow-x: auto; padding: 2px 2px 8px; margin: 0 0 4px; scrollbar-width: thin; }
.agx-ag-hoja-tab { display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; flex: 0 0 auto;
  font: inherit; font-size: 12.5px; padding: 7px 12px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--border); background: var(--navy-2); color: var(--text-2); }
.agx-ag-hoja-tab:hover { color: var(--text); }
.agx-ag-hoja-tab.on { color: var(--text); font-weight: 700; border-color: var(--blue);
  background: color-mix(in srgb, var(--blue) 10%, var(--navy-2)); }
/* El punto lleva el color de la pestaña del Excel. El aro lo separa del fondo en los
   dos temas: #002060 sobre el navy oscuro, solo, no se ve. */
.agx-ag-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--c); flex: 0 0 auto;
  box-shadow: 0 0 0 1.5px var(--navy-2), 0 0 0 2.5px var(--text-3); }

.agx-ag-card { padding: 14px 16px; }
.agx-ag-sec { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin: 18px 0 8px; }
.agx-ag-card > .agx-ag-sec:first-child, .agx-ag-grid2 > div > .agx-ag-sec:first-child { margin-top: 0; }
.agx-ag-sec h3 { margin: 0; font-size: 14px; font-weight: 800; color: var(--text); }
.agx-ag-sec span { font-size: 12px; color: var(--text-2); }
.agx-ag-pie { font-size: 11.5px; color: var(--text-2); margin: 6px 0 2px; line-height: 1.5; }
.agx-ag-pie .mx-ico { color: var(--amber); }
.agx-ag-grid2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 20px; align-items: start; margin-top: 18px; }
.agx-ag-grid2-ancho { grid-template-columns: minmax(0, 2fr) minmax(300px, 1fr); margin-top: 0; }
@media (max-width: 1200px) { .agx-ag-grid2, .agx-ag-grid2-ancho { grid-template-columns: 1fr; } }

/* Tablas: se desplazan DENTRO de la tarjeta, con encabezado y primera columna fijos. */
.agx-ag-card .agx-ag-wrap { max-height: 68vh; overflow: auto; border: 1px solid var(--border); border-radius: 6px; }
.agx-ag-card .agx-ag-tabla th { z-index: 2; }
.agx-ag-card .agx-ag-tabla th:first-child, .agx-ag-card .agx-ag-tabla td:first-child {
  position: sticky; left: 0; z-index: 1; background: var(--navy-3); }
.agx-ag-card .agx-ag-tabla thead th:first-child { z-index: 3; }
.agx-ag-card .agx-ag-tabla tr.agx-ag-n0 td:first-child { background: color-mix(in srgb, var(--blue) 5%, var(--navy-3)); }
.agx-ag-card .agx-ag-tabla tfoot td { position: sticky; bottom: 0; }
.agx-ag-card .agx-ag-tabla tfoot td:first-child { z-index: 2; background: var(--navy-3); }
.agx-ag-card .agx-ag-tabla tbody tr:hover td { background: color-mix(in srgb, var(--blue) 6%, var(--navy-3)); }
.agx-ag-tabla .agx-ag-venc7 { color: var(--red-txt, var(--red)); }
.agx-ag-tabla .agx-ag-neg { color: var(--red-txt, var(--red)); font-weight: 700; }

/* La barra del % vencido: el acento en la BARRA, el número sobre la superficie. */
.agx-ag-pctbar { display: inline-block; min-width: 90px; padding: 1px 6px; text-align: right; border-radius: 3px;
  background: linear-gradient(90deg, color-mix(in srgb, var(--amber) 32%, transparent) var(--p), transparent var(--p)); }
/* Días vencidos, como el formato condicional del Excel: acento en la letra y la línea. */
.agx-ag-dias { display: inline-block; min-width: 34px; padding: 0 6px; border-radius: 4px; text-align: right;
  border: 1px solid transparent; font-weight: 600; }
.agx-ag-dias-alto { color: var(--red-txt, var(--red)); border-color: var(--red); }
.agx-ag-dias-medio { color: var(--amber); border-color: var(--amber); }
.agx-ag-chip { display: inline-block; padding: 0 6px; margin-left: 4px; font-size: 10.5px; border-radius: 4px; border: 1px solid; }
.agx-ag-chip-rojo { color: var(--red-txt, var(--red)); border-color: var(--red); }

/* El gráfico del histórico semanal (CxC Chile). */
.agx-ag-hist { border: 1px solid var(--border); border-radius: 8px; padding: 12px 14px; margin: 0 0 6px; }
.agx-ag-hist-cab { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.agx-ag-hist-cab h3 { margin: 0; font-size: 14px; font-weight: 800; color: var(--text); }
.agx-ag-hist-cab span { font-size: 12px; color: var(--text-2); }
.agx-ag-hist-box { position: relative; height: 300px; margin-top: 10px; }

/* ═══ Lo nuevo del apartado definitivo (09-10-2026) ═══════════════════════════════ */

/* Las acciones del encabezado (los botones de carga y «Recargar datos»): un contenedor
   propio, porque page-header reparte título y acciones a los extremos y un hermano
   suelto le robaría el espacio al subtítulo. */
.agx-head-acc { display: flex; gap: 8px; align-items: flex-start; flex-wrap: wrap; }

/* El cartel de cambios SOLO de esta sesión. Es el que impide leer un ejercicio como el
   dato oficial, así que va en ÁMBAR —el tono de «ojo»— y no en el azul de los carteles
   que solo explican. ⚠ El acento en la LÍNEA y en el ÍCONO, el texto sobre superficie
   neutra con un tinte al 5%: el tinte del propio acento debajo de su texto es el
   patrón de contraste que más veces falló en esta aplicación. */
.agx-nota-sesion {
  display: flex; align-items: flex-start; gap: 8px;
  margin: 0 0 12px; padding: 9px 12px;
  background: color-mix(in srgb, var(--amber) 5%, var(--navy-3));
  border: 1px solid var(--border-2); border-left: 3px solid var(--amber);
  border-radius: 6px; font-size: 12px; color: var(--text-2); line-height: 1.6;
}
.agx-nota-sesion b { color: var(--text); }
.agx-nota-sesion svg { flex: none; margin-top: 2px; color: var(--amber); }
.agx-nota-sesion .agx-btn { margin-left: 8px; vertical-align: middle; }

/* La celda de Seguros cambiada SOLO en la sesión: el borde ámbar lleno la distingue de
   la vacía (ámbar punteado, «falta») y de la guardada (gris). */
.agx-seg-inp.agx-seg-sesion { border-color: var(--amber); border-style: solid; }

/* La regla de asignación y la factura de la lista que viven solo en la sesión. */
.agx-ag-rses {
  font-size: 10.5px; font-weight: 600; padding: 1px 6px; border-radius: 4px;
  color: var(--amber); border: 1px solid var(--amber); white-space: nowrap;
}
.agx-desc-ses td { color: var(--text-2); }

/* La aclaración del pie de la tabla: los filtros no tocan el Aging. */
.agx-base-nota { display: block; margin-top: 2px; color: var(--text-3); font-size: 11.5px; }
