/* =========================================================================================
   ERP SIZU · hoja de estilos única (ver docs/REGLAS_DE_DISENO.md)
   - Tamaños en rem: la letra se ajusta sola al ancho de pantalla (nunca diminuta ni gigante).
   - Tablas sin textos encimados: ancho mínimo por columna, "…" con texto completo al pasar el mouse,
     desplazamiento dentro de su recuadro con encabezado y primera columna fijos.
   ========================================================================================= */
:root {
  --rojo: #CF232D; --rojo-osc: #8B1A1A; --rojo-claro: #FFF0F2;
  --fondo: #F7F8FA; --blanco: #FFFFFF; --borde: #E5E7EB; --borde-fuerte: #D1D5DB;
  --texto: #111827; --texto-2: #6B7280; --texto-3: #9CA3AF;
  --verde: #15803D; --verde-claro: #E9F7EE; --ambar: #B45309; --ambar-claro: #FEF3C7;
  --azul: #1D4ED8; --azul-claro: #E0E7FF; --error: #B42318; --error-claro: #FDECEC;
  --radio: .6rem; --radio-chico: .4rem; --sombra: 0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.08);
  --m: calc(1rem / .9);   /* tamaño anterior al 90%: lo usan el menú lateral y la tabla de Envíos (la medida de referencia) */
  --menu-ancho: calc(16.5 * var(--m)); --barra-alto: calc(3.6 * var(--m));
}
/* Letra base al 90% de la anterior (~13.5px laptop, ~15px monitor grande); el menú lateral conserva su tamaño (var --m) */
html { font-size: clamp(13.5px, 0.315vw + 9.45px, 15.3px); -webkit-text-size-adjust: 100%; }
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  font-size: 1rem; line-height: 1.5; color: var(--texto); background: var(--fondo); -webkit-font-smoothing: antialiased; }
a { color: var(--rojo); text-decoration: none; } a:hover { text-decoration: underline; }
h1, h2, h3 { line-height: 1.25; margin: 0; }
h1 { font-size: 1.45rem; font-weight: 750; color: var(--rojo-osc); }
h2 { font-size: 1.15rem; font-weight: 700; color: var(--rojo-osc); }
h3 { font-size: 1rem; font-weight: 700; }
small, .chico { font-size: .875rem; }
.secundario { color: var(--texto-2); }
.oculto { display: none !important; }
fieldset { min-width: 0; }

/* ---------------------------------------------------------------- estructura */
.app { display: grid; grid-template-columns: var(--menu-ancho) minmax(0, 1fr); min-height: 100vh; }
.menu { font-size: var(--m); background: var(--blanco); border-right: 1px solid var(--borde); position: sticky; top: 0; height: 100vh; overflow-y: auto;
  display: flex; flex-direction: column; }
.menu-logo { display: flex; align-items: center; gap: calc(.6 * var(--m)); padding: 0 calc(1.1 * var(--m)); height: var(--barra-alto); border-bottom: 1px solid var(--borde); flex: none; }
.menu-logo img { height: calc(2.9 * var(--m)); width: auto; }
.menu-logo .marca { font-weight: 800; letter-spacing: .04em; color: var(--rojo-osc); font-size: calc(1.05 * var(--m)); }
.menu nav { padding: calc(.6 * var(--m)) calc(.6 * var(--m)) calc(1.2 * var(--m)); }
.menu-grupo { font-size: calc(.75 * var(--m)); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--texto-3); margin: calc(1 * var(--m)) calc(.6 * var(--m)) calc(.35 * var(--m)); }
.menu-item { display: flex; align-items: center; justify-content: space-between; gap: calc(.5 * var(--m)); padding: calc(.5 * var(--m)) calc(.7 * var(--m)); border-radius: var(--radio-chico);
  color: var(--texto); font-size: calc(.95 * var(--m)); text-decoration: none; }
.menu-item:hover { background: var(--fondo); text-decoration: none; }
.menu-item.activo { background: var(--rojo-claro); color: var(--rojo-osc); font-weight: 650; }
.menu .pend { font-size: calc(.7 * var(--m)); color: var(--texto-3); border: 1px solid var(--borde); border-radius: calc(1 * var(--m)); padding: 0 calc(.45 * var(--m)); white-space: nowrap; }
.principal { min-width: 0; display: flex; flex-direction: column; }
.barra { height: var(--barra-alto); background: var(--blanco); border-bottom: 1px solid var(--borde); display: flex; align-items: center;
  justify-content: space-between; gap: 1rem; padding: 0 clamp(1rem, 2.5vw, 2rem); position: sticky; top: 0; z-index: 20; }
.barra .usuario { display: flex; align-items: center; gap: .9rem; min-width: 0; }
.barra .usuario .nombre { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 16rem; }
.boton-menu { display: none; background: none; border: 1px solid var(--borde); border-radius: var(--radio-chico); padding: calc(.35 * var(--m)) calc(.55 * var(--m)); font-size: calc(1.1 * var(--m)); cursor: pointer; }
.contenido { padding: clamp(.9rem, 1.6vw, 1.5rem); width: 100%; margin: 0; min-width: 0; overflow-x: clip; }   /* usa todo el ancho; nada se sale a la derecha (la barra superior queda fija) */
.encabezado { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.25rem; }
.encabezado p { margin: .25rem 0 0; color: var(--texto-2); }
.encabezado > div:first-child { flex: 1 1 24rem; min-width: 0; } .encabezado > .acciones { flex: none; justify-content: flex-end; }

/* ---------------------------------------------------------------- tarjetas */
.tarjeta { background: var(--blanco); border: 1px solid var(--borde); border-radius: var(--radio); box-shadow: var(--sombra); padding: clamp(1rem, 2vw, 1.5rem); }
.tarjeta + .tarjeta { margin-top: 1rem; }
.rejilla > .tarjeta { margin-top: 0; }
.rejilla { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); }
.indicador .num { font-size: 1.6rem; font-weight: 750; color: var(--rojo-osc); }
.indicador .lbl { color: var(--texto-2); font-size: .9rem; }
.modulo-tarjeta { display: block; color: var(--texto); }
.modulo-tarjeta:hover { text-decoration: none; border-color: var(--rojo); }
.modulo-tarjeta .grupo { font-size: .78rem; color: var(--texto-3); text-transform: uppercase; letter-spacing: .05em; }

/* ---------------------------------------------------------------- botones */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; font: inherit; font-size: .95rem; font-weight: 650;
  border-radius: var(--radio-chico); border: 1px solid transparent; padding: .55rem 1.05rem; cursor: pointer; text-decoration: none; white-space: nowrap; line-height: 1.2; }
.btn:hover { text-decoration: none; }
.btn-primario { background: var(--rojo); color: #fff; } .btn-primario:hover { background: var(--rojo-osc); }
.btn-secundario { background: var(--blanco); color: var(--texto); border-color: var(--borde-fuerte); } .btn-secundario:hover { background: var(--fondo); }
.btn-peligro { background: var(--blanco); color: var(--error); border-color: #F5C2C0; } .btn-peligro:hover { background: var(--error-claro); }
.btn-enlace { background: none; border: none; color: var(--rojo); padding: 0; font-weight: 600; }
.btn-chico { padding: .35rem .7rem; font-size: .875rem; }
.acciones { display: flex; gap: .6rem; flex-wrap: wrap; align-items: center; }

/* ---------------------------------------------------------------- formularios */
.forma { display: grid; gap: 1rem 1.25rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); }
.forma .ancho-total { grid-column: 1 / -1; }
.campo label { display: block; font-size: .85rem; font-weight: 650; color: var(--texto); margin-bottom: .3rem; }
.campo label .req { color: var(--rojo); }
.ayuda { font-size: .8rem; color: var(--texto-2); margin-top: .35rem; }
input[type=text], input[type=email], input[type=password], input[type=number], input[type=search], input[type=date], input[type=month], select, textarea {
  width: 100%; font: inherit; font-size: .95rem; color: var(--texto); background: var(--blanco); border: 1px solid var(--borde-fuerte);
  border-radius: var(--radio-chico); padding: .5rem .7rem; min-height: 2.5rem; }
input:focus, select:focus, textarea:focus { outline: 2px solid rgba(207, 35, 45, .25); border-color: var(--rojo); }
.campo.con-error input, .campo.con-error select { border-color: var(--error); }
.campo .error { color: var(--error); font-size: .82rem; margin-top: .25rem; }
.casilla { display: flex; align-items: center; gap: .5rem; font-size: .95rem; cursor: pointer; }
.campo label.casilla { font-weight: 400; font-size: .95rem; margin: 0; }
.casilla input { width: 1.05rem; height: 1.05rem; accent-color: var(--rojo); }
.lista-casillas { display: grid; gap: .35rem 1rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 13rem), 1fr));
  border: 1px solid var(--borde); border-radius: var(--radio-chico); padding: .75rem; max-height: 16rem; overflow-y: auto; }
.filtros { display: flex; gap: .75rem; flex-wrap: wrap; align-items: flex-end; margin-bottom: 1rem; }
.filtros .campo { min-width: min(100%, 12rem); }
.filtros .campo.ancho { flex: 1 1 16rem; }

/* ---------------------------------------------------------------- tablas (sin textos encimados) */
.tabla-wrap { width: 100%; overflow-x: auto; border: 1px solid var(--borde); border-radius: var(--radio); background: var(--blanco); box-shadow: var(--sombra); }
table.tabla { width: 100%; border-collapse: separate; border-spacing: 0; font-size: .92rem; }
.tabla th, .tabla td { padding: .6rem .8rem; text-align: left; vertical-align: top; border-bottom: 1px solid var(--borde); }
.tabla th { position: sticky; top: 0; z-index: 2; background: #FBF4F5; color: var(--rojo-osc); font-size: .78rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; }
.tabla tr:last-child td { border-bottom: none; }
.tabla tbody tr:hover td { background: #FCFCFD; }
.tabla td.num, .tabla th.num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.tabla td.fecha { white-space: nowrap; }
.tabla .min-chica { min-width: 6.5rem; } .tabla .min-media { min-width: 9rem; } .tabla .min-grande { min-width: 11rem; }
/* texto largo: se corta con "…" y el texto completo aparece al pasar el mouse (atributo title) */
.corta { display: block; max-width: clamp(9rem, 14.5vw, 22rem); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* primera columna fija al desplazar a lo ancho */
.tabla.fija-1 th:first-child, .tabla.fija-1 td:first-child { position: sticky; left: 0; background: var(--blanco); z-index: 1; box-shadow: 1px 0 0 var(--borde); }
.tabla.fija-1 th:first-child { background: #FBF4F5; z-index: 3; }
.tabla a.corta, .tabla td > a { color: var(--texto); } .tabla a.corta:hover, .tabla td > a:hover { color: var(--rojo); }
.vacio { padding: 2.5rem 1rem; text-align: center; color: var(--texto-2); }

/* ---------------------------------------------------------------- etiquetas de estado */
.etq { display: inline-block; font-size: .78rem; font-weight: 650; border-radius: 1rem; padding: .1rem .6rem; white-space: nowrap; }
.etq-verde { background: var(--verde-claro); color: var(--verde); }
.etq-gris { background: #F2F4F7; color: var(--texto-2); }
.etq-ambar { background: var(--ambar-claro); color: var(--ambar); }
.etq-azul { background: var(--azul-claro); color: var(--azul); }
.etq-rojo { background: var(--error-claro); color: var(--error); }
.chip { display: inline-block; font-size: .78rem; background: #F2F4F7; border-radius: 1rem; padding: .05rem .55rem; margin: .1rem .15rem .1rem 0; white-space: nowrap; }

/* ---------------------------------------------------------------- avisos */
.aviso { border-radius: var(--radio-chico); padding: .75rem 1rem; margin-bottom: 1rem; font-size: .95rem; }
.aviso-ok { background: var(--verde-claro); color: var(--verde); border: 1px solid #B7E4C7; }
.aviso-error { background: var(--error-claro); color: var(--error); border: 1px solid #F5C2C0; }
.aviso-info { background: #F0F4FF; color: var(--azul); border: 1px solid #C7D2FE; }
.aviso-ia { background: #FEF3C7; color: #92400E; border: 1px solid #F59E0B; }

/* ---------------------------------------------------------------- paginación */
.paginacion { display: flex; gap: .35rem; flex-wrap: wrap; align-items: center; justify-content: space-between; margin-top: 1rem; font-size: .9rem; color: var(--texto-2); }
.paginacion .pags { display: flex; gap: .35rem; flex-wrap: wrap; }
.paginacion a, .paginacion span.pag { min-width: 2.2rem; text-align: center; padding: .3rem .6rem; border: 1px solid var(--borde); border-radius: var(--radio-chico); background: var(--blanco); color: var(--texto); }
.paginacion span.pag.actual { background: var(--rojo); color: #fff; border-color: var(--rojo); }

/* ---------------------------------------------------------------- matriz de permisos */
.permisos td.chk, .permisos th.chk { text-align: center; width: 6rem; }
.permisos .grupo-fila td { background: var(--fondo); font-weight: 700; color: var(--rojo-osc); font-size: .85rem; text-transform: uppercase; letter-spacing: .04em; }

/* ---------------------------------------------------------------- acceso (login) */
.acceso { min-height: 100vh; display: grid; place-items: center; padding: 1.5rem; background: linear-gradient(160deg, #FFF6F7 0%, var(--fondo) 60%); }
.acceso .caja { width: min(100%, 25rem); }
.acceso .logo { text-align: center; margin-bottom: 1.25rem; }
.acceso .logo img { height: clamp(5rem, 9vw, 7rem); width: auto; max-width: 100%; }
.acceso .logo .marca { font-size: 1.8rem; font-weight: 850; letter-spacing: .06em; color: var(--rojo-osc); }

/* ---------------------------------------------------------------- fueguito de carga */
#carga { position: fixed; inset: 0; display: none; place-items: center; z-index: 1000; pointer-events: none; }
#carga.visible { display: grid; }
#carga .fuego { width: 4.5rem; height: 4.5rem; position: relative; filter: drop-shadow(0 3px 10px rgba(0,0,0,.18)); }
#carga .fuego img, #carga .fuego svg { position: absolute; inset: 0; width: 100%; height: 100%; }
#carga .fuego .base { opacity: .22; filter: grayscale(1); }
#carga .fuego .lleno { clip-path: inset(100% 0 0 0); animation: llenar 1.6s cubic-bezier(.45,0,.55,1) infinite; }
@keyframes llenar { 0% { clip-path: inset(100% 0 0 0); } 45%, 60% { clip-path: inset(0 0 0 0); } 100% { clip-path: inset(100% 0 0 0); } }

/* ---------------------------------------------------------------- pantallas chicas */
@media (max-width: 960px) {
  .app { grid-template-columns: minmax(0, 1fr); }
  .menu { position: fixed; left: 0; top: 0; width: min(85vw, calc(18 * var(--m))); transform: translateX(-100%); transition: transform .2s ease; z-index: 50; box-shadow: 0 10px 30px rgba(0,0,0,.2); }
  .menu.abierto { transform: none; }
  .boton-menu { display: inline-block; }
  .barra .usuario .nombre { max-width: 9rem; }
}
@media (max-width: 640px) {
  /* tablas como tarjetas en celular */
  .tabla.tarjetas-movil thead { display: none; }
  .tabla.tarjetas-movil, .tabla.tarjetas-movil tbody, .tabla.tarjetas-movil tr, .tabla.tarjetas-movil td { display: block; width: 100%; }
  .tabla.tarjetas-movil tr { border-bottom: 1px solid var(--borde); padding: .5rem 0; }
  .tabla.tarjetas-movil td { border: none; padding: .25rem .9rem; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: .25rem 1rem; text-align: right; }
  .barra .titulo-barra { display: none; }
  .tabla.tarjetas-movil td::before { content: attr(data-t); font-size: .78rem; font-weight: 700; color: var(--texto-2); text-transform: uppercase; text-align: left; flex: none; }
  .tabla.tarjetas-movil td.num { text-align: right; }
  .tabla.tarjetas-movil.fija-1 td:first-child { position: static; box-shadow: none; }
  .corta { max-width: 60vw; }
}

/* ---------------------------------------------------------------- secciones dentro de un formulario */
.seccion-forma { font-size: 1.05rem; margin: 1.5rem 0 .75rem; padding-top: 1.1rem; border-top: 1px solid #E5E7EB; color: var(--rojo-oscuro, #8B1A1A); }


/* ---------------------------------------------------------------- regla SIZU: lo capturado se ve en MAYÚSCULAS mientras se escribe
   (el servidor además quita acentos y caracteres especiales; correos y contraseñas no se tocan) */
input[type=text], input[type=search], textarea { text-transform: uppercase; }
input[type=text]::placeholder, input[type=search]::placeholder, textarea::placeholder { text-transform: none; }

/* ---------------------------------------------------------------- lista de datos (etiqueta / valor) */
.datos { display: grid; gap: .9rem 1.5rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); margin: 0; }
.datos dt { font-size: .8rem; color: var(--texto-2); margin-bottom: .15rem; }
.datos dd { margin: 0; font-weight: 600; }

/* ---------------------------------------------------------------- registros inactivos: se ven atenuados en todas las listas */
.tabla tr.fila-inactiva td { background: #FAFAFB; color: var(--texto-2); }
.tabla tr.fila-inactiva td a strong { color: var(--texto-2); font-weight: 600; }
.tabla tr.fila-inactiva .chip { opacity: .65; }

/* ---------------------------------------------------------------- menú lateral: secciones con ícono que se despliegan */
.icono { width: 1.15rem; height: 1.15rem; flex: none; }
.menu-solo, .menu-titulo { display: flex; align-items: center; gap: calc(.65 * var(--m)); padding: calc(.55 * var(--m)) calc(.7 * var(--m)); border-radius: var(--radio-chico); color: var(--texto); font-weight: 600; }
.menu-solo { justify-content: flex-start; margin-bottom: calc(.25 * var(--m)); }
.menu-solo .icono, .menu-titulo .icono { color: var(--texto-2); width: calc(1.15 * var(--m)); height: calc(1.15 * var(--m)); }
.menu-solo.activo .icono, .menu-titulo.con-activo .icono { color: var(--rojo); }
.menu-titulo { cursor: pointer; list-style: none; user-select: none; margin-top: calc(.15 * var(--m)); }
.menu-titulo::-webkit-details-marker { display: none; }
.menu-titulo:hover { background: var(--fondo); }
.menu-titulo .txt, .menu-solo .txt { flex: 1; min-width: 0; }
.menu-titulo.con-activo { color: var(--rojo-osc); }
.menu-titulo .chevron { width: calc(1 * var(--m)); height: calc(1 * var(--m)); transition: transform .18s ease; }
.menu-seccion[open] > .menu-titulo .chevron { transform: rotate(90deg); }
.menu-sub { margin: calc(.1 * var(--m)) 0 calc(.4 * var(--m)) calc(1.45 * var(--m)); padding-left: calc(.55 * var(--m)); border-left: 1px solid var(--borde); }
.menu-sub .menu-item { padding: calc(.42 * var(--m)) calc(.65 * var(--m)); font-size: calc(.93 * var(--m)); }
.menu-titulo .txt, .menu-solo .txt { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: calc(.95 * var(--m)); }
.menu-titulo .pend { font-weight: 400; }

/* ---------------------------------------------------------------- pestañas dentro de un módulo y captura en celdas */
/* Vistas de un módulo: el mismo renglón de botones con ícono en todo el sistema; la vista abierta, en rojo claro (como el menú lateral) */
.pestanas { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 1.1rem; }
.pestanas a { display: inline-flex; align-items: center; gap: .45rem; padding: .55rem 1.05rem; border: 1px solid var(--borde-fuerte); border-radius: var(--radio-chico);
  background: var(--blanco); color: var(--texto); font-size: .95rem; font-weight: 650; line-height: 1.2; white-space: nowrap; text-decoration: none; }
.pestanas a:hover { background: var(--fondo); text-decoration: none; }
.pestanas a .ico { color: var(--texto-2); }
.pestanas a.activa { background: var(--rojo-claro); border-color: var(--rojo); color: var(--rojo-osc); }
.pestanas a.activa .ico { color: var(--rojo); }
.pestanas .etq { margin-left: .1rem; }
.chips-sub { display: flex; flex-wrap: wrap; gap: .4rem; }
.chip-sub { padding: .3rem .8rem; border-radius: 1rem; border: 1px solid var(--borde-fuerte); font-size: .85rem; font-weight: 600; color: var(--texto); background: var(--blanco); }
.chip-sub:hover { text-decoration: none; background: var(--fondo); }
.chip-sub.activa { background: var(--rojo-osc); border-color: var(--rojo-osc); color: #fff; }
.tabla .entrada-celda { width: 100%; min-width: 0; padding: .35rem .5rem; font-size: .9rem; }
.tabla .entrada-num { width: 6.5rem; text-align: right; }
.tabla select.entrada-celda { width: auto; max-width: 12rem; }
.entrada-celda.guardando { border-color: var(--ambar); }
.entrada-celda.guardado { border-color: var(--verde); background: var(--verde-claro); }
.entrada-celda.con-error-celda { border-color: var(--error); background: var(--error-claro); }
.texto-rojo { color: var(--error); font-weight: 600; }
@media (max-width: 600px) { .rejilla:has(> .indicador) { grid-template-columns: 1fr 1fr; } .indicador .num { font-size: 1.4rem; } }

/* ---------------------------------------------------------------- barra de subinventarios (debajo de los filtros) */
.barra-sub { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; margin-bottom: .75rem; }
.crear-sub { display: flex; gap: .5rem; align-items: center; flex: 0 1 22rem; min-width: min(100%, 16rem); }
.crear-sub input { flex: 1; min-width: 0; }
.crear-sub .btn { white-space: nowrap; }

/* ---------------------------------------------------------------- descargas y cargas: mismo color en todo el sistema
   Excel = verde (hoja + flecha abajo) · otras descargas = azul (flecha abajo) · subir archivos = morado (flecha arriba) */
.btn .icono { width: 1.1rem; height: 1.1rem; }
.btn .icono-chico { width: .9rem; height: .9rem; opacity: .85; }
.btn-excel { background: #1D6F42; color: #fff; border-color: #1D6F42; gap: .45rem; }
.btn-excel:hover { background: #185C37; color: #fff; text-decoration: none; }
.btn-descarga { background: #EFF4FF; color: #1E4FBF; border-color: #BFD0F7; gap: .45rem; }
.btn-descarga:hover { background: #E0EAFF; text-decoration: none; }
.btn-subir { background: #6D28D9; color: #fff; border-color: #6D28D9; gap: .45rem; }
.btn-subir:hover { background: #5B21B6; color: #fff; }
.btn-subir-claro { background: #F5F3FF; color: #5B21B6; border: 1.5px dashed #A78BFA; gap: .45rem; cursor: pointer; max-width: 18rem; }
.btn-subir-claro:hover { background: #EDE9FE; }
.btn-subir-claro span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.btn-subir-claro.con-archivo { border-style: solid; }

/* ---------------------------------------------------------------- Registro de Servicio */
.est-pendiente { background: #FEF9C3; color: #92400E; } .est-conciliado { background: #F1F5F9; color: #334155; }
.est-facturado { background: #EDE9FE; color: #6D28D9; } .est-pagado { background: #DBEAFE; color: #1D4ED8; }
.est-real { background: #FED7AA; color: #9A3412; } .est-favor { background: #DCFCE7; color: #15803D; } .est-contra { background: #FEE2E2; color: #991B1B; }
.est-cancelado { background: repeating-linear-gradient(45deg, #fff, #fff 4px, #FECACA 4px, #FECACA 8px); color: #991B1B; border: 1px solid #FCA5A5; }
.tabla tr.fila-cancelada td, .tabla tr.fila-cancelada td a { color: var(--error); }
.tabla tr[data-href] { cursor: pointer; }
.tabla th a { color: inherit; } .tabla th a:hover { text-decoration: none; opacity: .8; }
.tabla .chk { width: 2.4rem; text-align: center; }
.tabla .chk input { width: 1.05rem; height: 1.05rem; accent-color: var(--rojo); }
.tabla tr.seleccionada td { background: #FFF7F7; }
.rejilla-kpi { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 8.5rem), 1fr)); margin-bottom: 1rem; }
.rejilla-kpi .indicador { padding: .8rem 1rem; }
.rejilla-kpi .num { font-size: 1.35rem; }
.rejilla-kpi .monto { font-weight: 700; font-size: .95rem; }
.kpi-pendiente .num { color: #B45309; } .kpi-facturado .num { color: #6D28D9; } .kpi-pagado .num { color: #1D4ED8; } .kpi-cancelado .num { color: var(--error); } .kpi-conciliado .num { color: #334155; }
.kpi-sel { border-style: dashed; }
.barra-seleccion { position: sticky; top: calc(var(--barra-alto) + .25rem); z-index: 5; display: flex; flex-wrap: wrap; gap: .5rem; align-items: center;
  background: #FFF7F7; border: 1px solid #F5C2C0; border-radius: var(--radio); padding: .6rem .8rem; margin-bottom: .75rem; box-shadow: var(--sombra); }
.barra-seleccion .btn { padding: .45rem .8rem; font-size: .88rem; }
.importe-vivo { display: flex; flex-wrap: wrap; gap: .4rem 1.2rem; padding: .55rem .75rem; background: var(--fondo); border-radius: var(--radio-chico); border: 1px solid var(--borde); }
.importe-vivo strong { color: var(--rojo-osc); font-size: 1.05rem; }

/* ---------------------------------------------------------------- menú plegable: solo íconos, con nombre al pasar el mouse */
.menu nav { flex: 1; }
.logo-icono { display: none; }
.menu-plegar { flex: none; display: flex; align-items: center; gap: calc(.6 * var(--m)); margin: calc(.5 * var(--m)) calc(.6 * var(--m)) calc(.8 * var(--m)); padding: calc(.5 * var(--m)) calc(.7 * var(--m)); border: 1px solid var(--borde);
  border-radius: var(--radio-chico); background: var(--blanco); color: var(--texto-2); font: inherit; font-size: calc(.88 * var(--m)); cursor: pointer; }
.menu-plegar:hover { background: var(--fondo); color: var(--texto); }
.menu-plegar .flecha-plegar { transform: rotate(180deg); transition: transform .2s; }
@media (min-width: 961px) {
  .menu-colapsado { --menu-ancho: calc(4.4 * var(--m)); }
  .menu-colapsado .menu { overflow: visible; }
  .menu-colapsado .menu-logo { padding: 0; justify-content: center; }
  .menu-colapsado .logo-completo { display: none; }
  .menu-colapsado .logo-icono { display: block; height: calc(2.2 * var(--m)); }
  .menu-colapsado .menu nav { padding: calc(.6 * var(--m)) calc(.45 * var(--m)); }
  .menu-colapsado .menu-titulo, .menu-colapsado .menu-solo { justify-content: center; padding: calc(.65 * var(--m)) 0; position: relative; }
  .menu-colapsado .menu-titulo .txt, .menu-colapsado .menu-solo .txt, .menu-colapsado .menu-titulo .chevron, .menu-colapsado .menu-solo .pend { display: none; }
  .menu-colapsado .menu-titulo .icono, .menu-colapsado .menu-solo .icono { width: calc(1.35 * var(--m)); height: calc(1.35 * var(--m)); }
  .menu-colapsado .menu-seccion { position: relative; }
  .menu-colapsado .menu-seccion .menu-sub { display: none !important; }
  /* al pasar el mouse: panel flotante con el nombre del módulo y sus apartados */
  .menu-colapsado .menu-seccion:hover .menu-sub, .menu-colapsado .menu-seccion:focus-within .menu-sub {
    display: block !important; position: absolute; left: calc(100% + calc(.35 * var(--m))); top: 0; margin: 0; z-index: 60; min-width: calc(15 * var(--m));
    background: var(--blanco); border: 1px solid var(--borde); border-radius: var(--radio); box-shadow: 0 10px 30px rgba(0,0,0,.15); padding: calc(.4 * var(--m)); }
  .menu-colapsado .menu-seccion:hover .menu-sub::before, .menu-colapsado .menu-seccion:focus-within .menu-sub::before {
    content: attr(data-grupo); display: block; font-size: calc(.75 * var(--m)); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--rojo-osc); padding: calc(.35 * var(--m)) calc(.65 * var(--m)) calc(.4 * var(--m)); }
  .menu-colapsado .menu-seccion:hover .menu-sub::after { content: ''; position: absolute; left: -.5rem; top: 0; width: calc(.5 * var(--m)); height: 100%; }   /* puente para no perder el hover */
  .menu-colapsado .menu-solo:hover::after { content: attr(data-nombre); position: absolute; left: calc(100% + calc(.45 * var(--m))); top: 50%; transform: translateY(-50%); white-space: nowrap;
    background: var(--texto); color: #fff; font-size: calc(.85 * var(--m)); padding: calc(.3 * var(--m)) calc(.6 * var(--m)); border-radius: var(--radio-chico); z-index: 60; }
  .menu-colapsado .menu-plegar { justify-content: center; margin: calc(.5 * var(--m)) calc(.45 * var(--m)) calc(.8 * var(--m)); }
  .menu-colapsado .menu-plegar .txt { display: none; }
  .menu-colapsado .menu-plegar .flecha-plegar { transform: none; }
}
@media (max-width: 960px) { .menu-plegar { display: none; } }

/* ---------------------------------------------------------------- tablas con filtros tipo Excel en el encabezado */
.tabla-alta { max-height: calc(100vh - 13rem); overflow: auto; }
.tabla-alta thead th { position: sticky; top: 0; z-index: 3; }
.tabla-alta .chk { position: sticky; left: 0; z-index: 2; background: inherit; box-shadow: 1px 0 0 var(--borde); }
.tabla-alta thead .chk { z-index: 4; }
.tabla-excel th[data-filtro] { white-space: nowrap; }
.btn-filtro { border: 0; background: transparent; color: inherit; cursor: pointer; padding: .1rem .2rem; margin-left: .2rem; border-radius: 4px; font-size: .8rem; line-height: 1; opacity: .7; }
.btn-filtro:hover { background: rgba(0,0,0,.06); opacity: 1; }
th.filtrado .btn-filtro { background: var(--rojo); color: #fff; opacity: 1; }
th.ordenado-asc .btn-filtro::after { content: ' ▲'; } th.ordenado-desc .btn-filtro::after { content: ' ▼'; }
.dd-filtro { position: absolute; z-index: 80; width: 16rem; background: var(--blanco); border: 1px solid var(--borde-fuerte); border-radius: var(--radio);
  box-shadow: 0 12px 32px rgba(0,0,0,.18); font-size: .88rem; text-transform: none; letter-spacing: 0; color: var(--texto); font-weight: 400; }
.dd-filtro .dd-op { display: block; width: 100%; text-align: left; border: 0; background: none; padding: .5rem .8rem; cursor: pointer; font: inherit; }
.dd-filtro .dd-op:hover { background: var(--fondo); }
.dd-filtro .dd-cuerpo { border-top: 1px solid var(--borde); padding: .6rem .8rem; }
.dd-filtro .dd-lista { max-height: 14rem; overflow: auto; margin-top: .4rem; }
.dd-filtro .dd-lista label { display: flex; gap: .45rem; align-items: center; padding: .18rem 0; cursor: pointer; }
.dd-filtro input[type=text], .dd-filtro input[type=date] { width: 100%; padding: .4rem .55rem; font-size: .88rem; }
.dd-filtro .dd-pie { border-top: 1px solid var(--borde); padding: .5rem .8rem; display: flex; gap: .5rem; justify-content: space-between; }
tr.oculto-filtro { display: none; }

/* columnas del Registro de Servicio */
.tabla-rs td.nw, .tabla-rs th { white-space: nowrap; }
.tabla-rs .centro { text-align: center; }
.tabla-rs th, .tabla-rs td { padding-left: .6rem; padding-right: .6rem; width: 1%; }   /* cada columna mide lo justo de su contenido */
.tabla-rs .col-cliente { width: 8.6rem; min-width: 8.6rem; max-width: 8.6rem; white-space: normal; line-height: 1.3; }   /* cabe "PUBLICO EN GENERAL"; lo más largo baja de renglón */
.tabla-rs .col-sem { width: 1%; text-align: left; }
.tabla-rs .col-estado { width: 1%; max-width: 7.5rem; white-space: normal; }   /* "Cancelado c/sustitución" baja de renglón; no ensancha la columna */
.tabla-rs .col-estado .etq { white-space: normal; line-height: 1.25; display: inline-block; }
.tabla-rs .col-desc { width: auto; min-width: 24rem; white-space: normal; line-height: 1.35; }   /* se lleva el espacio que sobre */
.tabla-rs td { vertical-align: middle; }
.tabla-rs th.num { text-align: right; } .tabla-rs th.centro { text-align: center; }
.tabla-rs .folio { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .82rem; }
.tabla-rs .entrada-fecha { width: 9.5rem; }
.copiar { border: 0; background: none; cursor: pointer; color: var(--texto-3); padding: .15rem; margin-left: .25rem; vertical-align: middle; border-radius: 4px; }
.copiar:hover { color: var(--rojo); background: var(--fondo); }
.copiar .icono { width: .95rem; height: .95rem; }
.copiar.copiado { color: var(--verde); }

/* barra de acciones sobre lo seleccionado: siempre visible, misma altura, botones con el color del estado al que llevan */
.barra-seleccion { flex-wrap: nowrap !important; overflow-x: auto; min-height: 3.4rem; background: var(--blanco) !important; border-color: var(--borde) !important; }
.sel-resumen { flex: none; min-width: 11rem; display: flex; align-items: baseline; gap: .35rem; padding-right: .75rem; border-right: 1px solid var(--borde); margin-right: .25rem; }
.sel-resumen strong { font-size: 1.15rem; color: var(--rojo-osc); min-width: 1.6rem; text-align: right; }
.sel-resumen .sel-monto { margin-left: auto; font-weight: 700; }
.btn-accion { flex: none; white-space: nowrap; gap: .35rem; border-width: 1px; padding: .42rem .7rem !important; font-size: .86rem !important; }
.btn-accion .icono { width: 1rem; height: 1rem; }
.btn-accion:disabled { opacity: .38; cursor: not-allowed; filter: grayscale(.6); }
.acc-factura { background: #EDE9FE; color: #6D28D9; border-color: #C4B5FD; } .acc-factura:not(:disabled):hover { background: #6D28D9; color: #fff; }
.acc-cobro { background: #DBEAFE; color: #1D4ED8; border-color: #93C5FD; } .acc-cobro:not(:disabled):hover { background: #1D4ED8; color: #fff; }
.acc-sinfactura { background: #ECFEFF; color: #0E7490; border-color: #A5F3FC; } .acc-sinfactura:not(:disabled):hover { background: #0E7490; color: #fff; }
.acc-sustituir { background: #fff; color: #991B1B; border-color: #FCA5A5; } .acc-sustituir:not(:disabled):hover { background: #FEE2E2; }
.acc-cancelar { background: #fff; color: var(--error); border-color: #F5C2C0; } .acc-cancelar:not(:disabled):hover { background: var(--error); color: #fff; }
.btn-quitar { flex: none; margin-left: auto; background: none; border: 0; color: var(--texto-2); text-decoration: underline; padding: .4rem .5rem; white-space: nowrap; }
.btn-quitar:disabled { visibility: hidden; }
.tabla-alta tbody .chk { background: var(--blanco); } .tabla-alta tbody tr.seleccionada .chk { background: #FFF7F7; }
[hidden] { display: none !important; }
.menu { z-index: 30; }

/* las 4 primeras columnas del Registro de Servicio, compactas para dar espacio a la descripción */
.tabla-rs td:nth-child(-n+5), .tabla-rs th:nth-child(-n+5) { padding-left: .45rem; padding-right: .45rem; }
.tabla-rs td:nth-child(2), .tabla-rs td:nth-child(3), .tabla-rs td:nth-child(5) { font-size: .88rem; }
.tabla-rs .col-estado .etq { font-size: .72rem; padding: .12rem .45rem; }
.rejilla-kpi > .tarjeta { margin-top: 0; }   /* todas las tarjetas de indicadores del mismo tamaño */
/* casilla "seleccionar todos": fija arriba y a la izquierda, con el mismo fondo rojito del encabezado (nada se ve detrás) */
.tabla-alta thead th.chk { position: sticky; top: 0; left: 0; z-index: 6; background: #FBF4F5; }

/* ===== Recursos Humanos ===== */
.texto-verde { color: var(--verde); }
.titulo-seccion { font-size: 1.05rem; margin: 1.25rem 0 .6rem; }
.rh-kpis .kpi-ancho { grid-column: span 2; }
@media (max-width: 40rem) { .rh-kpis .kpi-ancho { grid-column: 1 / -1; } }
.rh-recordatorios { display: grid; gap: .6rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); margin-bottom: 1rem; }
.recordatorio { border-radius: var(--radio); padding: .7rem 1rem; font-size: .9rem; border: 1px solid; }
.recordatorio strong { display: inline-block; margin-bottom: .2rem; }
.rec-cumple { background: #FFF7ED; border-color: #FDBA74; color: #9A3412; }
.rec-aniv { background: #EFF6FF; border-color: #BFDBFE; color: var(--azul); }
.barra-carga { margin: 0 0 1rem; align-items: center; padding-top: .55rem !important; padding-bottom: .55rem !important; }
.barra-carga .txt-carga { flex: 1; min-width: 12rem; font-size: .8rem; line-height: 1.3; }
.barra-carga .btn { padding-top: .45rem; padding-bottom: .45rem; }
.vac-centros { display: flex; flex-wrap: wrap; gap: .25rem; margin-top: .35rem; } .vac-centros .etq { font-size: .68rem; }
.tabla tr.fila-baja td { color: var(--error); }
.tabla tr.fila-baja td strong { color: var(--error); }
.tabla-personal th, .tabla-personal td { white-space: nowrap; }
.tabla-personal .col-nombre { position: sticky; left: 0; background: var(--blanco); z-index: 2; box-shadow: 1px 0 0 var(--borde); min-width: 14rem; white-space: normal; }
.tabla-personal thead .col-nombre { background: #FBF4F5; z-index: 6; }
.casilla-tabla { width: 1.15rem; height: 1.15rem; accent-color: var(--rojo); cursor: pointer; vertical-align: middle; }
.tabla-compacta th, .tabla-compacta td { padding: .45rem .6rem; vertical-align: middle; }
.fila-form.enc { padding-top: .5rem; padding-bottom: .5rem; background: #FBF4F5; color: var(--rojo-osc); font-size: .74rem; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; border-bottom: 1px solid var(--borde); }
.lista-bloques { border: 1px solid var(--borde); border-radius: var(--radio); overflow: hidden; }
.lista-bloques .fila-form + .fila-form { border-top: 1px solid var(--borde); }
.tabla-uniformes th, .tabla-uniformes td { white-space: nowrap; font-size: .88rem; }
.tabla-uniformes th { font-size: .72rem; }
.celda-entrega { min-width: 6rem; }
details.plegable { padding: .8rem 1rem; margin-bottom: 1rem; }
details.plegable > summary { cursor: pointer; font-weight: 700; color: var(--rojo-osc); list-style: none; display: flex; gap: .5rem; flex-wrap: wrap; align-items: baseline; }
details.plegable > summary::before { content: "▶"; font-size: .75rem; transition: transform .15s; }
details.plegable[open] > summary::before { transform: rotate(90deg); }
details.plegable > summary .secundario { font-weight: 400; }
details.plegable[open] > summary { margin-bottom: .6rem; }
/* plantilla de turnos */
.bloque-turno { margin-bottom: 1rem; }
.bloque-turno-enc { display: flex; justify-content: space-between; align-items: center; margin-bottom: .75rem; color: var(--rojo-osc); }
.dias-chk { display: flex; flex-wrap: wrap; gap: .4rem; }
.dia-chk { display: flex; align-items: center; gap: .35rem; border: 1px solid var(--borde); border-radius: 2rem; padding: .3rem .75rem; cursor: pointer; font-size: .9rem; font-weight: 400 !important; margin: 0 !important; }
.dia-chk.marcado { background: var(--rojo-claro); border-color: #F5B5BA; color: var(--rojo-osc); }
.dia-chk input { accent-color: var(--rojo); }
/* incidencias */
.banner-bloque { margin: 0 0 1rem; padding: .7rem 1rem; border-radius: var(--radio); text-align: center; font-weight: 750; font-size: 1.02rem;
  background: var(--error-claro); border: 1.5px solid var(--rojo); color: var(--rojo-osc); }
.banner-bloque.ok { background: var(--verde-claro); border-color: var(--verde); color: #166534; }
.nav-semana { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.semana-txt { text-align: center; min-width: 11rem; }
.num-semana { font-size: 1.45rem; font-weight: 800; color: var(--rojo-osc); line-height: 1.1; }
.titulo-centro { text-align: center; background: #F3F4F6; border-radius: var(--radio); padding: .5rem 1rem; margin: 1.25rem 0 .6rem; font-size: 1rem; }
.bloque-inc { margin-bottom: 1.25rem; }
.bloque-inc-titulo { background: var(--blanco); border: 1px solid var(--borde); border-bottom: 0; border-radius: var(--radio) var(--radio) 0 0; padding: .55rem .9rem;
  font-weight: 700; color: var(--rojo-osc); display: flex; gap: .5rem; flex-wrap: wrap; align-items: baseline; }
.bloque-inc .tabla-wrap { border-top-left-radius: 0; border-top-right-radius: 0; }
.tabla-inc { table-layout: fixed; width: 134.5rem; min-width: 134.5rem; }   /* mismas columnas en todos los turnos: nunca se recorren */
.tabla-inc .w-puesto { width: 9rem; } .tabla-inc .w-nombre { width: 14rem; } .tabla-inc .w-dinero { width: 7.5rem; } .tabla-inc .w-captura { width: 7rem; }
.tabla-inc .w-total { width: 6.5rem; } .tabla-inc .w-nota { width: 10.5rem; } .tabla-inc .w-faltas { width: 6.5rem; } .tabla-inc .w-dia { width: 7.5rem; }
.tabla-inc th { white-space: normal !important; }
.tabla-inc .c-nombre { overflow-wrap: anywhere; }
.tabla-inc th, .tabla-inc td { padding: .4rem .45rem; font-size: .86rem; vertical-align: middle; }
.tabla-inc th { font-size: .7rem; white-space: nowrap; }
.tabla-inc .c-puesto { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tabla-inc .c-nombre { position: sticky; left: 0; background: var(--blanco); z-index: 1; box-shadow: 1px 0 0 var(--borde); }
.tabla-inc thead .c-nombre { background: #FBF4F5; z-index: 3; }
.tabla-inc th.no-laborable { color: var(--error); }
.tabla-inc th.es-hoy { background: #F5E3E5; }
.tabla-inc .entrada-num { width: 100%; max-width: 6rem; }
.tabla-inc tr.fila-vacante td { background: #FFFBFB; }
.tabla-inc td.celda-sale { background: #FEF2F2; }
.tabla th.centro, .tabla td.centro { text-align: center; }
.tabla-inc .inc-bono, .tabla-inc .inc-desc { display: block; margin: 0 auto; border-width: 1.5px; font-weight: 700; text-align: center; }
.tabla-inc .inc-bono { border-color: var(--verde); color: var(--verde); background: #F6FCF8; }
.tabla-inc .inc-desc { border-color: var(--error); color: var(--error); background: #FFF8F8; }
.tabla-inc .inc-bono:focus { outline: 2px solid rgba(21,128,61,.25); border-color: var(--verde); }
.tabla-inc .inc-desc:focus { outline: 2px solid rgba(180,35,24,.25); border-color: var(--error); }
.dia-inc { display: flex; align-items: center; justify-content: center; gap: .35rem; }
.dia-inc .chk-trabajo { width: 1.25rem; height: 1.25rem; accent-color: var(--verde); cursor: pointer; flex: none; }
.tabla .dia-inc .he { width: 3.4rem; padding: .25rem .3rem; text-align: center; }
.aviso-dia { color: #9A3412; font-weight: 700; font-size: .72rem; }
.badge-sab { font-weight: 700; color: #9A6B00; white-space: nowrap; }
.badge-sab[data-cumple="1"] { color: var(--verde); }
.rejilla-2 { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 30rem), 1fr)); align-items: start; }
.rejilla-2 > .tarjeta { margin-top: 0; }
.fila-form { display: grid; grid-template-columns: minmax(8rem, 1fr) 5.2rem 5.2rem 5.2rem auto 2rem; gap: .4rem; align-items: center; padding: .35rem .6rem; }
.fila-form .entrada-num { width: 100%; }
.fila-nueva { margin-top: .6rem; padding: .6rem; background: #FAFAFB; border-radius: var(--radio); }
.pestanas-chicas { border: 0; margin-bottom: .75rem; gap: .4rem; }
.pestanas-chicas label { padding: .45rem 1rem; border: 1.5px solid var(--borde); border-radius: var(--radio-chico); cursor: pointer; font-weight: 700; color: var(--texto-2); }
.pestanas-chicas label.activa { background: var(--rojo-osc); border-color: var(--rojo-osc); color: #fff; }
.aviso-flotante { position: fixed; right: 1rem; bottom: 1.5rem; z-index: 60; max-width: min(28rem, calc(100vw - 2rem)); background: #FFFBEB; border: 1.5px solid #F59E0B;
  color: #92400E; border-radius: var(--radio); padding: .8rem 1rem; box-shadow: 0 6px 20px rgba(0,0,0,.15); font-size: .92rem; }

/* ===== Control vehicular ===== */
.veh-rejilla { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 24rem), 1fr)); align-items: start; }
.veh-tarjeta { margin-top: 0; padding: 1rem 1.1rem; }
.veh-enc { display: flex; justify-content: space-between; gap: .75rem; align-items: flex-start; margin-bottom: .4rem; }
.veh-nombre { font-size: 1.05rem; font-weight: 800; color: var(--texto); }
.veh-km { text-align: right; white-space: nowrap; flex: none; } .veh-km .lbl { font-size: .7rem; font-weight: 700; color: var(--texto-2); text-transform: uppercase; } .veh-km .num { font-size: 1.3rem; font-weight: 800; }
.veh-fila { display: flex; justify-content: space-between; align-items: center; gap: .5rem; flex-wrap: wrap; padding: .5rem 0; border-top: 1px solid var(--borde); }
.veh-tit { font-size: .7rem; font-weight: 700; color: var(--texto-2); text-transform: uppercase; margin-bottom: .2rem; }
.veh-chip { display: inline-block; padding: .2rem .55rem; border-radius: .4rem; font-size: .84rem; font-weight: 600; }
.veh-vencido { background: #FEF2F2; color: #B91C1C; } .veh-aviso { background: #FFFBEB; color: #B45309; } .veh-ok { background: #F0FDF4; color: var(--verde); } .veh-info { background: #F9FAFB; color: var(--texto-2); }
.veh-mes { font-size: .86rem; color: var(--texto-2); } .veh-mes strong { color: var(--texto); }
.veh-pie { display: flex; gap: .5rem; flex-wrap: wrap; align-items: flex-start; padding-top: .6rem; border-top: 1px solid var(--borde); }
.veh-desplegable { margin: .2rem 0 .4rem; }
.veh-desplegable > summary { list-style: none; display: inline-flex; cursor: pointer; }
.veh-desplegable > summary::-webkit-details-marker { display: none; }
.veh-desplegable[open] { flex-basis: 100%; }
.veh-captura { background: #FAFAFB; border: 1px solid var(--borde); border-radius: var(--radio); padding: .75rem; margin-top: .5rem; }
.forma-chica { grid-template-columns: repeat(auto-fill, minmax(min(100%, 10rem), 1fr)); gap: .6rem .8rem; }
.veh-alertas .veh-alerta { font-size: .92rem; margin: .25rem 0; color: var(--ambar); }
.veh-alertas .veh-alerta.texto-rojo { color: #B91C1C; }
.veh-alertas .veh-alerta a { color: inherit; }
input[type=file] { font: inherit; font-size: .9rem; max-width: 100%; }

/* Control vehicular: un renglón a todo lo ancho por vehículo, con la información siempre en las mismas columnas */
.veh-lista { display: flex; flex-direction: column; gap: .75rem; }
.veh-renglon { display: grid; grid-template-columns: minmax(10rem, 1.3fr) 5.5rem repeat(5, minmax(0, 1fr)) minmax(6.5rem, .8fr); gap: .75rem; align-items: start; }
.veh-renglon > * { min-width: 0; overflow-wrap: anywhere; }
.veh-encabezado { background: #FBF4F5; color: var(--rojo-osc); font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .02em;
  padding: .6rem 1rem; border: 1px solid var(--borde); border-radius: var(--radio); position: sticky; top: var(--barra-alto); z-index: 5; }
.veh-item { background: var(--blanco); border: 1px solid var(--borde); border-radius: var(--radio); box-shadow: var(--sombra); padding: .85rem 1rem .6rem; }
.veh-item .veh-chip { display: block; font-size: .82rem; line-height: 1.35; }
.veh-kmnum { font-size: 1.25rem; font-weight: 800; }
.veh-item .veh-mes { font-size: .88rem; color: var(--texto); font-weight: 600; padding: 0; border: 0; display: block; }
.veh-item .veh-mes div + div { color: var(--texto-2); font-weight: 500; }
.veh-acciones { display: flex; flex-wrap: wrap; gap: .5rem; align-items: flex-start; margin-top: .7rem; padding-top: .6rem; border-top: 1px solid var(--borde); }
.veh-acciones .veh-desplegable[open] { order: 10; }
.veh-col[data-t]::before { display: none; }
@media (max-width: 75rem) {
  .veh-encabezado { display: none; }
  .veh-renglon { grid-template-columns: repeat(auto-fill, minmax(min(100%, 13rem), 1fr)); gap: .75rem; }
  .veh-col[data-t]::before { content: attr(data-t); display: block; font-size: .7rem; font-weight: 700; color: var(--texto-2); text-transform: uppercase; margin-bottom: .2rem; }
  .veh-col.centro { text-align: left; }
}

/* ===== Barras de desplazamiento siempre visibles (regla general del sistema) ===== */
* { scrollbar-color: #C9B9BB transparent; }
::-webkit-scrollbar { width: 12px; height: 12px; }
::-webkit-scrollbar-track { background: #F4EEEF; border-radius: 8px; }
::-webkit-scrollbar-thumb { background: #C9B9BB; border-radius: 8px; border: 3px solid #F4EEEF; }
::-webkit-scrollbar-thumb:hover { background: #A88E92; }
/* barra horizontal flotante: se queda pegada abajo de la pantalla mientras la tabla esté a la vista */
.barra-h { position: sticky; bottom: 0; z-index: 8; overflow-x: auto; overflow-y: hidden; height: 16px; margin-top: -1px; background: #F4EEEF; border: 1px solid var(--borde); border-top: 0; border-radius: 0 0 var(--radio) var(--radio); }
.barra-h > div { height: 1px; }
.tabla-wrap.con-barra-h { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
/* una sola barra horizontal: se oculta la propia de la tabla (en Windows/Edge/Chrome no basta con ::-webkit-scrollbar porque se usa scrollbar-color) */
.tabla-wrap.con-barra-h { scrollbar-width: none; }
.tabla-wrap.con-barra-h::-webkit-scrollbar { height: 0; display: none; }

/* Registro de Servicio: filtros de arriba (año, centro, cliente, semana, estado, buscar) */
.filtros-rs .campo { min-width: min(100%, 10rem); flex: 1 1 10rem; }
.filtros-rs .campo-anio { flex: 0 1 7rem; min-width: 6.5rem; }
.filtros-rs .campo-semana { flex: 0 1 7.5rem; min-width: 6.5rem; }
.filtros-rs .campo.ancho { flex: 2 1 16rem; }
.tabla-rs tr.fila-ligada td { background: #FFFBF5; }
.tabla-rs tr.fila-ligada .chk { background: #FFFBF5; }
.sangria-ligado { color: var(--ambar); font-weight: 800; }

/* Diferencias aplicadas (Registro de Servicio) */
.leyenda-dif { margin-top: .25rem; font-size: .8rem; font-weight: 700; line-height: 1.3; }
.leyenda-dif.favor { color: var(--verde); } .leyenda-dif.contra { color: var(--error); }
.leyenda-dif-grande { border-radius: var(--radio); padding: .8rem 1rem; margin-bottom: 1rem; border: 2px solid; font-size: 1rem; }
.leyenda-dif-grande.favor { background: var(--verde-claro); border-color: var(--verde); color: #14532D; }
.leyenda-dif-grande.contra { background: var(--error-claro); border-color: var(--error); color: #7F1D1D; }
.leyenda-dif-grande .chico { margin-top: .25rem; color: var(--texto-2); }
.tabla tr.fila-dif.elegida td { background: #FFF7E6; }
.comparativo-dif { margin-top: .9rem; border-radius: var(--radio); border: 2px solid; padding: .9rem 1rem; }
.comparativo-dif.favor { background: var(--verde-claro); border-color: var(--verde); }
.comparativo-dif.contra { background: var(--error-claro); border-color: var(--error); }
.comparativo-dif .cd-titulo { font-weight: 800; font-size: 1.05rem; margin-bottom: .5rem; }
.comparativo-dif.favor .cd-titulo, .comparativo-dif.favor .cd-dif { color: var(--verde); }
.comparativo-dif.contra .cd-titulo, .comparativo-dif.contra .cd-dif { color: var(--error); }
.comparativo-dif table { border-collapse: collapse; width: 100%; max-width: 44rem; font-variant-numeric: tabular-nums; }
.comparativo-dif th, .comparativo-dif td { text-align: right; padding: .35rem .8rem; font-size: 1rem; }
.comparativo-dif th:first-child, .comparativo-dif td:first-child { text-align: left; }
.comparativo-dif th { font-size: .75rem; text-transform: uppercase; color: var(--texto-2); }
.comparativo-dif .cd-dif td { font-weight: 700; }
.comparativo-dif .cd-queda td { font-weight: 800; font-size: 1.2rem; border-top: 2px solid currentColor; color: var(--texto); }
.importe-alineado { display: grid; grid-template-columns: auto auto minmax(6.5rem, max-content); gap: .35rem .45rem; align-items: baseline; justify-content: start; }
.importe-alineado b { color: var(--rojo-osc); font-size: 1.05rem; }
.importe-alineado strong { text-align: right; font-variant-numeric: tabular-nums; }
.aviso-elegir-dif { margin: .2rem 0 .75rem; padding: .6rem .9rem; border-radius: var(--radio); background: var(--ambar-claro); color: #92400E; border: 1.5px solid #F59E0B; font-size: .92rem; }
.aviso-elegir-dif.con-error { background: var(--error-claro); color: var(--error); border-color: var(--error); }
.aviso-elegir-dif.resuelto { display: none; }

/* Ventana de aviso al centro de la pantalla */
.modal-fondo { position: fixed; inset: 0; z-index: 100; background: rgba(17, 24, 39, .55); display: flex; align-items: center; justify-content: center; padding: 1rem; }
.modal-fondo[hidden] { display: none !important; }
.modal-caja { background: var(--blanco); border-radius: .9rem; max-width: 32rem; width: 100%; padding: 1.6rem 1.5rem 1.3rem; text-align: center; box-shadow: 0 20px 50px rgba(0,0,0,.3);
  border-top: 6px solid #F59E0B; animation: modal-entra .18s ease-out; }
.modal-icono { font-size: 3.2rem; line-height: 1; margin-bottom: .5rem; }
.modal-caja h2 { color: #92400E; font-size: 1.25rem; margin-bottom: .6rem; }
.modal-caja p { color: var(--texto); margin: 0 0 1.2rem; }
.modal-botones { display: flex; gap: .6rem; justify-content: center; flex-wrap: wrap; }
@keyframes modal-entra { from { transform: scale(.94); opacity: 0; } to { transform: none; opacity: 1; } }
.parpadeo { animation: parpadeo 0.8s ease-in-out 3; }
@keyframes parpadeo { 50% { box-shadow: 0 0 0 4px rgba(245, 158, 11, .7); } }
.aplicar-dif-edicion { display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; margin: 1rem 0 .25rem; padding: .75rem 1rem; border: 1.5px dashed #F59E0B; border-radius: var(--radio); background: #FFFBEB; }
.btn-aplicar-dif { background: #F59E0B; color: #fff; border-color: #F59E0B; font-weight: 700; }
.btn-aplicar-dif:hover { background: #D97706; border-color: #D97706; }

/* ---------------------------------------------------------------- Finanzas · Envíos */
.env-est { display: inline-block; padding: .18rem .6rem; border-radius: 1rem; font-size: .8rem; font-weight: 700; white-space: nowrap; border: 1px solid transparent; }
.env-est-pendiente { background: #FEF9C3; color: #92400E; border-color: #FDE68A; }
.env-est-en-revision { background: #DBEAFE; color: #1D4ED8; border-color: #BFDBFE; }
.env-est-anticipo { background: #FFEDD5; color: #C2410C; border-color: #FED7AA; }
.env-est-pagado { background: #DCFCE7; color: #15803D; border-color: #BBF7D0; }
.env-est-cancelado { background: #FEE2E2; color: #991B1B; border-color: #FECACA; }
.kpi-env-pendiente .num { color: #B45309; } .kpi-env-revision .num { color: #1D4ED8; } .kpi-env-pagado .num { color: var(--verde); } .kpi-env-cancelado .num { color: var(--error); }
.filtros-env .campo[hidden] { display: none; }
.tabla-env td { vertical-align: middle; }
.tabla-env tr.envio-vencido td { background: #FFF1F1; }
.tabla-env tr.envio-vencido td.col-fe { color: var(--error); font-weight: 700; }
.tabla-env tr.seleccionada td { background: #FFF7F7; }
.oc-fila { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin: .12rem 0; }
.oc-chip { display: inline-flex; align-items: center; gap: .25rem; font-size: .78rem; font-weight: 650; background: #EFF4FF; color: #1E4FBF; border: 1px solid #BFD0F7; border-radius: .4rem; padding: .08rem .45rem; white-space: nowrap; }
a.oc-chip:hover { text-decoration: none; background: #DFE8FD; }
.oc-chip.sin-liga { background: #F1F5F9; color: var(--texto-2); border-color: var(--borde); }
.oc-monto { font-size: .8rem; font-weight: 700; color: var(--texto); white-space: nowrap; }
a.oc-monto:hover { color: var(--rojo); }
.sin-oc { font-size: .8rem; color: var(--texto-2); font-style: italic; }
.comp-liga { display: inline-flex; font-size: .95rem; margin-right: .25rem; text-decoration: none; }
.comp-liga sup { font-size: .62rem; font-weight: 700; }
.etq-sf { background: #F1F5F9; color: #334155; border: 1px solid var(--borde); border-radius: 1rem; padding: .1rem .55rem; font-size: .76rem; font-weight: 700; white-space: nowrap; }
.btn-estado-env { background: none; border: 0; padding: 0; cursor: pointer; display: inline-flex; align-items: center; gap: .2rem; }
.btn-estado-env::after { content: '▾'; font-size: .75rem; color: var(--texto-2); }
.menu-estado-env { position: absolute; z-index: 70; background: var(--blanco); border: 1px solid var(--borde); border-radius: var(--radio-chico); box-shadow: 0 10px 30px rgba(0,0,0,.15); padding: .3rem; min-width: 11rem; }
.menu-estado-env button { display: block; width: 100%; text-align: left; background: none; border: 0; padding: .5rem .7rem; border-radius: .35rem; font: inherit; font-size: .9rem; cursor: pointer; }
.menu-estado-env button:hover { background: var(--fondo); }
.btn-anticipo { background: #F59E0B; color: #fff; border-color: #F59E0B; } .btn-anticipo:hover { background: #D97706; color: #fff; }
.modal-ancha { max-width: 44rem; text-align: left; border-top-color: #1D4ED8; max-height: calc(100vh - 2rem); overflow-y: auto; }
.modal-ancha.anticipo { border-top-color: #F59E0B; }
.modal-ancha.rojo { border-top-color: var(--error); }
.modal-ancha h2 { color: #1D4ED8; } .modal-ancha.anticipo h2 { color: #B45309; } .modal-ancha.rojo h2 { color: var(--error); }
.modal-ancha .modal-botones { justify-content: flex-end; margin-top: 1rem; }
.caja-comprobante { border: 2px dashed #BFDBFE; border-radius: .7rem; padding: .9rem; background: #F8FAFF; margin-bottom: .9rem; }
.leidos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); gap: .5rem; margin-top: .7rem; }
.leido { background: #EFF6FF; border: 1px solid #BFDBFE; border-radius: .5rem; padding: .45rem .7rem; }
.leido .t { font-size: .68rem; font-weight: 700; color: #1D4ED8; text-transform: uppercase; }
.leido .v { font-size: .95rem; font-weight: 700; color: #1E40AF; word-break: break-word; }
.leido.grande { grid-column: 1 / -1; } .leido.grande .v { font-size: 1.4rem; }
.checklist-oc { max-height: 16rem; overflow-y: auto; margin-bottom: .6rem; }
.checklist-grupo { border: 1px solid var(--borde); border-radius: .5rem; overflow: hidden; margin-bottom: .55rem; }
.checklist-grupo .cab { background: #F8FAFC; padding: .4rem .7rem; font-size: .8rem; font-weight: 700; color: #334155; }
.checklist-grupo .cab span { font-weight: 400; color: var(--texto-2); word-break: break-all; }
.checklist-oc label { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .45rem .7rem; font-size: .88rem; border-top: 1px solid #F1F5F9; cursor: pointer; margin: 0; }
.checklist-oc label strong { color: #1D4ED8; white-space: nowrap; }
.checklist-oc input { width: 1rem; height: 1rem; accent-color: #1D4ED8; margin-right: .5rem; }
.cotejo-pago { padding: .55rem .8rem; border-radius: .5rem; font-size: .88rem; font-weight: 650; margin-bottom: .6rem; }
.cotejo-pago.ok { background: #DCFCE7; color: #15803D; border: 1px solid #BBF7D0; }
.cotejo-pago.falta { background: #FEF9C3; color: #92400E; border: 1px solid #FDE68A; }
.cotejo-pago.pasa { background: #FEE2E2; color: #991B1B; border: 1px solid #FECACA; }
.total-marcado { background: #EFF6FF; border: 1px solid #BFDBFE; border-radius: .5rem; padding: .6rem .8rem; }
.total-marcado .t { font-size: .75rem; font-weight: 700; color: #1D4ED8; } .total-marcado .v { font-size: 1.35rem; font-weight: 800; color: #1D4ED8; }
.sello-alerta { display: flex; gap: .6rem; align-items: flex-start; background: #FFFBEB; border: 1px solid #FDE68A; color: #92400E; border-radius: var(--radio-chico); padding: .7rem .9rem; margin-bottom: 1rem; }
.detalle-env { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); gap: .8rem 1.2rem; }
.detalle-env .full { grid-column: 1 / -1; }
.detalle-env .t { font-size: .74rem; font-weight: 700; color: var(--texto-2); text-transform: uppercase; letter-spacing: .02em; }
.detalle-env .v { font-weight: 600; word-break: break-word; }

/* Envíos: todo cabe a lo ancho de la pantalla (sin desplazarse a los lados) */
.filtros-env .campo { min-width: min(100%, 9rem); flex: 1 1 9rem; }
.filtros-env .campo.ancho { flex: 1.6 1 12rem; }
@media (min-width: 1100px) {
  .filtros-env { flex-wrap: nowrap; gap: .45rem; }
  .filtros-env .campo { flex: 1 1 0; min-width: 0; }
  .filtros-env .campo.ancho { flex: 1.45 1 0; }
  .filtros-env .campo.campo-periodo { flex: 1.25 1 0; }
  .filtros-env .campo.campo-oc { flex: .8 1 0; }
  .filtros-env .campo.campo-proximos { flex: 2 1 0; }
  .filtros-env label { font-size: .76rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .filtros-env input, .filtros-env select { font-size: .84rem; padding: .4rem .45rem; min-height: 2.25rem; text-overflow: ellipsis; }
  .filtros-env .btn { flex: none; padding: .45rem .7rem; font-size: .86rem; }
}
.tabla-env-wrap { overflow-x: hidden; }
table.tabla-env { table-layout: auto; font-size: calc(.82 * var(--m)); }
.tabla-env th, .tabla-env td { padding: calc(.45 * var(--m)) calc(.32 * var(--m)); }
.tabla-env th { white-space: normal; font-size: calc(.7 * var(--m)); letter-spacing: .02em; line-height: 1.2; vertical-align: middle; }
.tabla-env td.nw { white-space: nowrap; }
.tabla-env .chk { width: calc(2 * var(--m)); }
.tabla-env .col-prov { min-width: calc(6.5 * var(--m)); }
.tabla-env .col-uuid { font-size: calc(.68 * var(--m)); color: var(--texto-2); word-break: break-all; width: calc(9.5 * var(--m)); max-width: calc(9.5 * var(--m)); }
.tabla-env .col-ocs { white-space: nowrap; }
.tabla-env .oc-chip { font-size: calc(.74 * var(--m)); padding: calc(.05 * var(--m)) calc(.35 * var(--m)); }
.tabla-env .oc-monto { font-size: calc(.76 * var(--m)); }
.tabla-env .env-est { font-size: calc(.74 * var(--m)); padding: calc(.15 * var(--m)) calc(.45 * var(--m)); }
.tabla-env .comp-liga { margin-right: calc(.1 * var(--m)); }
@media (max-width: 1099px) { .tabla-env-wrap { overflow-x: auto; } }
.tabla-env .sin-oc { display: block; white-space: nowrap; }
.tabla-env .col-folio { font-size: calc(.8 * var(--m)); max-width: calc(8 * var(--m)); }
.tabla-env .col-fe { max-width: calc(6.5 * var(--m)); }
.tabla-env .col-comp { max-width: calc(5.5 * var(--m)); }

/* ---------------------------------------------------------------- Portal de proveedores */
.toggle-sf { display: flex; gap: .8rem; align-items: center; background: var(--blanco); border: 1.5px dashed var(--borde-fuerte); border-radius: var(--radio); padding: .8rem 1rem; margin-bottom: 1rem; cursor: pointer; }
.toggle-sf input { width: 1.25rem; height: 1.25rem; accent-color: var(--rojo); }
.toggle-sf small { display: block; color: var(--texto-2); font-size: .85rem; }
.toggle-sf:has(input:checked) { border-color: var(--rojo); background: #FFF7F7; }
.titulo-tarjeta { font-size: 1.05rem; margin-bottom: .8rem; }
.oc-lista { display: flex; flex-direction: column; gap: .55rem; margin-bottom: .8rem; }
.oc-renglon { display: grid; grid-template-columns: 9.5rem minmax(0, 1fr) 7.5rem auto auto; gap: .5rem; align-items: center;
  background: var(--fondo); border: 1px solid var(--borde); border-radius: var(--radio-chico); padding: .5rem; }
.oc-renglon .oc-folio { font-weight: 700; letter-spacing: .05em; background: #F1F5F9; color: var(--texto-2); }
.oc-renglon .oc-folio.editable { background: #FEF9C3; border-color: #F59E0B; color: var(--texto); }
.oc-renglon .oc-subir { justify-content: flex-start; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; cursor: pointer; }
.oc-renglon .oc-subir span { overflow: hidden; text-overflow: ellipsis; }
.oc-importe { font-weight: 800; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.oc-importe.leyendo { color: var(--texto-2); font-weight: 600; }
.btn-quitar-oc { border: 0; background: none; color: var(--error); font-size: 1.4rem; line-height: 1; cursor: pointer; padding: 0 .3rem; }
@media (max-width: 700px) { .oc-renglon { grid-template-columns: 1fr 1fr; } .oc-renglon .oc-subir { grid-column: 1 / -1; grid-row: 1; } }
.totales-envio { display: flex; flex-wrap: wrap; gap: 1rem 2rem; background: var(--fondo); border-radius: var(--radio-chico); padding: .7rem 1rem; margin-top: .4rem; }
.totales-envio .t { font-size: .75rem; font-weight: 700; color: var(--texto-2); text-transform: uppercase; }
.totales-envio .v { font-size: 1.25rem; font-weight: 800; } .totales-envio .v.azul { color: var(--azul); }
.cotejo-envio { margin-top: .6rem; padding: .6rem .9rem; border-radius: var(--radio-chico); font-weight: 650; }
.cotejo-envio.ok { background: #DCFCE7; color: #15803D; border: 1px solid #BBF7D0; } .cotejo-envio.mal { background: #FEE2E2; color: #991B1B; border: 1px solid #FECACA; }
.fila-xml { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; }
.xml-info { margin-top: .5rem; font-size: .9rem; color: var(--texto-2); } .xml-info.ok { color: var(--verde); } .xml-info.mal { color: var(--error); font-weight: 600; }

.progreso-envio { margin-top: .8rem; } .progreso-envio .barra { height: .5rem; background: var(--borde); border-radius: 1rem; overflow: hidden; margin-top: .4rem; }
.progreso-envio .barra div { height: 100%; width: 40%; background: var(--rojo); border-radius: 1rem; animation: progreso-ir 1.2s ease-in-out infinite; }
@keyframes progreso-ir { from { transform: translateX(-100%); } to { transform: translateX(260%); } }
.envio-exito { max-width: 34rem; margin: 2rem auto; text-align: center; }
.envio-exito h2 { color: var(--verde); font-size: 1.4rem; margin-bottom: .4rem; }
.folio-exito { display: inline-block; font-size: 1.5rem; font-weight: 800; letter-spacing: .05em; background: var(--fondo); border: 1px dashed var(--borde-fuerte); border-radius: var(--radio-chico); padding: .5rem 1.2rem; margin: .8rem 0 .4rem; }
.filtros-mis .campo { flex: 0 1 13rem; } .filtros-mis .campo.ancho { flex: 1 1 18rem; }
.motivo-cancel { font-size: .72rem; color: var(--error); margin-top: .25rem; max-width: 10rem; margin-inline: auto; white-space: normal; }

/* Nuevo envío: centrado, compacto y con botones de archivo suaves */
.portal-centro { max-width: 52rem; margin: 0 auto; }
.portal-centro .encabezado h1 { font-size: 1.6rem; }
.portal-centro .tarjeta { padding: 1rem 1.15rem; }
.portal-centro .titulo-tarjeta { font-size: 1rem; margin-bottom: .65rem; }
.portal-centro .toggle-sf { padding: .6rem .9rem; font-size: .95rem; }
.portal-centro .sello-alerta { font-size: .9rem; padding: .55rem .8rem; }
.ver-como { display: flex; flex-wrap: wrap; gap: .5rem .8rem; align-items: center; padding: .55rem .85rem; font-size: .9rem; }
.ver-como select { max-width: 20rem; min-height: 2.1rem; padding: .25rem .5rem; font-size: .9rem; width: auto; flex: 1 1 14rem; }
.oc-renglon { padding: .4rem; gap: .45rem; }
.oc-renglon .oc-folio { font-size: .9rem; min-height: 2.3rem; padding: .35rem .55rem; letter-spacing: .02em; }
.oc-renglon .oc-folio::placeholder { font-weight: 500; letter-spacing: 0; }
.btn-archivo { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.3rem; padding: .35rem .8rem; border-radius: var(--radio-chico); cursor: pointer;
  background: #F5F3FF; color: #5B21B6; border: 1.5px dashed #A78BFA; font-weight: 650; font-size: .9rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.btn-archivo:hover { background: #EDE9FE; }
.btn-archivo .ico, .btn-subir-claro .ico { flex: none; }
.btn-archivo span { overflow: hidden; text-overflow: ellipsis; }
.btn-archivo.cargado { background: #ECFDF5; color: #047857; border: 1.5px solid #6EE7B7; }
.portal-centro .oc-importe { font-size: .95rem; }
.portal-centro .btn-agregar-oc { padding: .4rem .9rem; font-size: .9rem; }
.portal-centro .totales-envio .v { font-size: 1.1rem; }
.enviar-centro { display: flex; justify-content: center; margin-top: 1.1rem; }
.btn-enviar-doc { min-width: min(100%, 22rem); justify-content: center; padding: .7rem 1.5rem; font-size: 1rem; }
.filtros-mis .campo.campo-usuario { flex: 0 1 17rem; }

/* Nuevo envío / Nueva comprobación: una columna centrada y compacta (cabe en una pantalla) */
.encabezado-envio { margin-bottom: .7rem; }
.encabezado-envio h1 { font-size: 1.45rem; margin-bottom: .1rem; }
.encabezado-envio p { font-size: .92rem; margin: 0; }
.portal-envio { display: flex; flex-direction: column; gap: .65rem; }
.portal-envio .tarjeta + .tarjeta { margin-top: 0; }
.portal-centro .tarjeta { padding: .8rem 1rem; }
.portal-centro .titulo-tarjeta { font-size: .98rem; margin-bottom: .5rem; }
.envio-top { display: flex; flex-wrap: wrap; gap: .65rem; }
.envio-top .toggle-sf { margin: 0; flex: 1 1 16rem; padding: .45rem .8rem; }
.envio-top .a-nombre { flex: 1 1 16rem; display: flex; align-items: center; gap: .6rem; background: #F0F4FF; border: 1px solid #C7D2FE; border-radius: var(--radio); padding: .45rem .8rem; }
.envio-top .a-nombre label { font-weight: 700; color: var(--azul); white-space: nowrap; font-size: .92rem; margin: 0; }
.envio-top .a-nombre select { min-height: 2.2rem; padding: .25rem .5rem; font-size: .9rem; }
.fila-archivo { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; }
.fila-archivo .titulo-tarjeta { margin: 0; }
.fila-archivo .fila-xml { flex: 0 1 28rem; justify-content: flex-end; }
.fila-xml .btn-archivo { flex: 1 1 auto; min-width: 0; }
.fecha-pago { max-width: 14rem; }
.nota-sat { font-size: .78rem; color: #92400E; margin: .45rem 0 0; }
.portal-centro .enviar-centro { margin-top: .2rem; }
.leidos-gasto { grid-template-columns: repeat(auto-fit, minmax(min(100%, 9rem), 1fr)); }
.leidos-gasto .leido .v { font-size: .9rem; }
.cotejo-envio.anticipo { background: #FEF3C7; color: #92400E; border: 1px solid #FDE68A; }
.leidos-gasto .leido .v { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ---------------------------------------------------------------- Conciliación (pantalla homologada de SIZU CONTROL) */
.conc-sizu { --brand: #C41230; --borde: #E5E7EB; --sub: #6B7280; --gris: #F9FAFB; --txt: #111827; }
.conc-sizu .table-wrap { background: var(--blanco); border: 1px solid var(--borde); border-radius: var(--radio); overflow: hidden; box-shadow: var(--sombra); }
.conc-sizu button:disabled { cursor: not-allowed; }
.conc-periodo { display: flex; align-items: center; gap: .5rem; } .conc-periodo label { font-weight: 650; font-size: .88rem; white-space: nowrap; }
.conc-periodo select { width: auto; min-height: 2.3rem; padding: .3rem .6rem; }
@media (max-width: 760px) { .conc-sizu [style*="grid-template-columns:1fr 1fr 1fr"] { grid-template-columns: 1fr !important; } }
.corte-en-linea { display: flex; align-items: center; gap: .5rem; margin: 0; }
.corte-en-linea label { font-weight: 650; font-size: .9rem; white-space: nowrap; margin: 0; }
.corte-en-linea input { width: auto; }
/* Control vehicular: el estado arriba y la acción (Ver póliza, Marcar verificada, Pagada) siempre abajo, a la misma altura en todo el renglón */
@media (min-width: 75.01rem) {
  .veh-item .veh-renglon { align-items: stretch; }
  .veh-item .veh-col { display: flex; flex-direction: column; }
  .veh-item .veh-col > .veh-chip { min-height: 4.2rem; }
}
.veh-accion { margin-top: auto; padding-top: .45rem; height: 2.55rem; display: flex; align-items: center; box-sizing: border-box; }
.veh-accion .btn { white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.veh-accion > * { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.veh-accion .casilla { white-space: nowrap; }
.oculto-busqueda { display: none !important; }
/* Matriz de permisos: encabezado fijo al bajar (debajo de la barra superior), columna "Todos" y acciones que no existen en gris */
.permisos-wrap { overflow: visible; }
.permisos-wrap .permisos thead th { position: sticky; top: var(--barra-alto); z-index: 5; background: #FBF4F5; box-shadow: 0 1px 0 var(--borde); }
.permisos-wrap .permisos thead th:first-child { border-top-left-radius: var(--radio); } .permisos-wrap .permisos thead th:last-child { border-top-right-radius: var(--radio); }
.permisos th.todos, .permisos td.todos { background: #FDF7F8; border-right: 1px solid var(--borde); }
.permisos thead th.todos { background: #F7E9EB; }
.permisos .todos-enc { display: inline-flex; align-items: center; gap: .35rem; cursor: pointer; font: inherit; color: inherit; margin: 0; }
.permisos input[type=checkbox] { width: 1.1rem; height: 1.1rem; accent-color: var(--rojo); cursor: pointer; }
.permisos .no-aplica { color: #CBBFC1; font-weight: 600; cursor: default; }
.casilla-todos { font-weight: 700; color: var(--rojo-osc); }
/* Íconos del sistema (mismos en todas las pantallas) */
.ico { width: 1.15em; height: 1.15em; display: inline-block; vertical-align: -.2em; flex: none; }
.ico-pdf, .ico-xml { width: 1.35em; height: 1.35em; vertical-align: -.3em; }
.btn .ico { margin-right: 0; }
.btn-icono { display: inline-flex; align-items: center; justify-content: center; width: 2.1rem; height: 2.1rem; padding: 0; border-radius: .55rem; border: 1px solid var(--borde); background: var(--blanco); color: var(--texto, #374151); cursor: pointer; text-decoration: none; }
.btn-icono:hover { background: #FBF4F5; }
.btn-icono.ico-rojo, .btn-icono:has(.ico-borrar) { color: #B91C1C; }
.btn-icono .ico { margin: 0; }
/* Matriz de permisos con íconos: encendido = color, apagado = gris claro */
.permisos .enc-ico { display: inline-flex; flex-direction: column; align-items: center; gap: .15rem; }
.permisos .enc-ico span { font-size: .72rem; }
.ptog { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; border-radius: .5rem; color: #D9CDD0; cursor: pointer; transition: color .12s, transform .12s; }
.ptog input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.ptog .ico { width: 1.35rem; height: 1.35rem; }
.ptog:hover { color: #A88E92; transform: scale(1.12); }
.ptog:has(input:focus-visible) { outline: 2px solid var(--rojo); outline-offset: 1px; }
.ptog-ver:has(input:checked) { color: #2563EB; }
.ptog-crear:has(input:checked) { color: #16A34A; }
.ptog-editar:has(input:checked) { color: #D97706; }
.ptog-borrar:has(input:checked) { color: #DC2626; }
.ptog:has(input:checked) .ico { stroke-width: 2.4; }
.ptog:has(input:disabled) { cursor: default; transform: none; }
.ptog:has(input:disabled) input { cursor: default; }
.permisos .enc-ico.ico-ver { color: #2563EB; } .permisos .enc-ico.ico-crear { color: #16A34A; } .permisos .enc-ico.ico-editar { color: #D97706; } .permisos .enc-ico.ico-borrar { color: #DC2626; }
.permisos .enc-ico span { color: var(--rojo-osc); }
.permisos thead th { vertical-align: middle; }
.permisos td { vertical-align: middle; } .permisos .enc-ico .ico { width: 1.3rem; height: 1.3rem; }
/* Productos */
.alta-rapida { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .75rem; padding: .9rem 1rem; margin-bottom: .9rem; }
.alta-rapida .campo { margin: 0; min-width: 14rem; flex: 0 1 22rem; } .alta-rapida .campo-num { min-width: 10rem; flex: 0 1 12rem; }
.tabla-angosta { max-width: 52rem; }
.acc-col { width: 1%; white-space: nowrap; }
.acciones-icono { display: inline-flex; gap: .3rem; align-items: center; }
.acciones-icono form { display: inline; margin: 0; }
.btn-icono { width: 1.95rem; height: 1.95rem; border: 0; background: transparent; color: #6B7280; }
.btn-icono:has(.ico-ver) { color: #2563EB; } .btn-icono:has(.ico-editar) { color: #D97706; } .btn-icono:has(.ico-borrar) { color: #DC2626; } .btn-icono:has(.ico-copiar) { color: #7C3AED; }
.btn-icono:hover { background: #F3EEEF; }
.btn-icono .ico { width: 1.15rem; height: 1.15rem; }
.edita-renglon { display: flex; gap: .4rem; align-items: center; flex-wrap: wrap; }
.edita-renglon input[type=text] { flex: 1; min-width: 10rem; padding: .35rem .5rem; } .edita-renglon .campo-eq { width: 7rem; padding: .35rem .5rem; }
.carga-excel { display: inline-flex; gap: .4rem; align-items: center; margin: 0; }
.tabla-productos td, .tabla-productos th { font-size: .86rem; }
.tabla-productos th a { color: inherit; text-decoration: none; } .tabla-productos th a.orden-activo { text-decoration: underline; }
.sin-marco { border: 0; padding: 0; margin: 0; min-width: 0; }
.forma-producto .tarjeta { margin-bottom: 1rem; }
.forma-4 { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .75rem 1rem; }
.forma-4 .doble { grid-column: span 2; } .forma-4 .triple { grid-column: span 3; }
.forma-5 { display: grid; grid-template-columns: 2fr 1fr 1.3fr 1fr .8fr; gap: .75rem 1rem; }
@media (max-width: 900px) { .forma-4, .forma-5 { grid-template-columns: 1fr 1fr; } .forma-4 .doble, .forma-4 .triple { grid-column: span 2; } }
.fila-sel td { background: #FFF7E6 !important; }
.interruptor { position: relative; display: inline-block; width: 2.4rem; height: 1.35rem; }
.interruptor input { opacity: 0; width: 0; height: 0; position: absolute; }
.interruptor span { position: absolute; inset: 0; background: #D1D5DB; border-radius: 1rem; transition: .15s; cursor: pointer; }
.interruptor span::before { content: ''; position: absolute; width: 1rem; height: 1rem; left: .18rem; top: .18rem; background: #fff; border-radius: 50%; transition: .15s; box-shadow: 0 1px 2px rgba(0,0,0,.25); }
.interruptor input:checked + span { background: #16A34A; } .interruptor input:checked + span::before { transform: translateX(1.05rem); }
.interruptor input:disabled + span { cursor: default; opacity: .6; }

.filtros-angostos { max-width: 52rem; }
.tabla-simple td, .tabla-productos td { vertical-align: middle; }
.tabla-productos { table-layout: auto; }
.tabla-productos th, .tabla-productos td { padding-left: .55rem; padding-right: .55rem; }
.tabla-productos th { font-size: .72rem; white-space: normal; }
.tabla-productos td.c-nom { min-width: 11rem; }
.tabla-productos .acciones-icono { gap: .1rem; } .tabla-productos .btn-icono { width: 1.75rem; height: 1.75rem; }

/* Acciones alineadas (ver · editar · borrar): cada una tiene su lugar fijo; si no aplica, guion */
.acciones-icono { display: inline-grid; grid-auto-flow: column; grid-auto-columns: 1.95rem; gap: .2rem; align-items: center; justify-items: center; }
.acciones-icono .btn-icono { display: inline-flex; align-items: center; justify-content: center; }
.btn-icono.sin-accion { color: #A8999C; cursor: default; font-weight: 700; font-size: 1.05rem; }
.btn-icono.sin-accion:hover { background: transparent; }
.tabla-productos .acciones-icono { grid-auto-columns: 1.75rem; }
.sin-marco:disabled input, .sin-marco:disabled select { background: #F6F2F3; color: #374151; border-color: #E8DEE0; cursor: default; }
.barra-catalogo { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; margin: .2rem 0 .6rem; }
.barra-catalogo .campo { margin: 0; flex: 1 1 22rem; max-width: 34rem; }
tr.oculto-texto, tr.oculto-cat { display: none; }
.tabla-catalogo-wrap { max-height: calc(100vh - 15rem); }
.tabla-catalogo-wrap thead th { background: #FBF4F5; }
.tabla-productos.tabla-excel th[data-filtro] { white-space: normal; } .tabla-productos .btn-filtro { margin-left: .1rem; padding: .1rem; }
@media (max-width: 1400px) { .tabla-productos td, .tabla-productos th { font-size: .8rem; padding-left: .4rem; padding-right: .4rem; } .tabla-productos td.c-nom { min-width: 9rem; } .tabla-productos .interruptor { width: 2.1rem; } }
.modal-botones-col { flex-direction: column; align-items: stretch; } .modal-botones-col .btn { justify-content: center; }
/* Productos · catálogos simples a todo el ancho */
.alta-rapida { display: grid; align-items: end; gap: .75rem 1rem; }
.alta-rapida .campo { margin: 0; min-width: 0; }
.alta-cat { grid-template-columns: 1fr auto; }
.alta-unidad { grid-template-columns: 2fr 1.3fr 1.2fr auto; }
@media (max-width: 760px) { .alta-cat, .alta-unidad { grid-template-columns: 1fr; } }
.ayuda-unidades { display: flex; gap: 1.25rem; align-items: center; justify-content: space-between; flex-wrap: wrap; padding: .9rem 1.1rem; margin-bottom: .9rem; border-left: 4px solid #2563EB; }
.ayuda-unidades .ayuda-texto { flex: 1 1 26rem; } .ayuda-unidades p { margin: .25rem 0 0; color: #4B5563; font-size: .9rem; }
.ayuda-ejemplos { display: flex; flex-wrap: wrap; gap: .45rem; }
.ayuda-ejemplos .ej { background: #EFF6FF; color: #1E3A8A; border-radius: 999px; padding: .3rem .7rem; font-size: .85rem; white-space: nowrap; }
.edita-renglon .campo-base { width: 5.5rem; padding: .35rem .4rem; }
.tabla-simple .campo-eq { width: 8rem; padding: .35rem .5rem; text-align: right; } .tabla-simple .campo-base { width: 100%; max-width: 11rem; padding: .35rem .4rem; }
.edita-renglon { flex-wrap: nowrap; }

.tabla-pareja { table-layout: fixed; width: 100%; }
.tabla-pareja th.der, .tabla-pareja td.der { text-align: right; }
.tabla-pareja td .edita-renglon input[type=text] { width: 100%; min-width: 0; }
.tabla-pareja .campo-eq { width: 100%; max-width: 9rem; } .tabla-pareja .campo-base { max-width: 12rem; }
.guardar-renglon { display: inline-flex; gap: .35rem; }

/* mientras la página termina de llegar, las tablas grandes no se dibujan a medias (evita el efecto de "lente" que ajusta tamaños) */
html:not(.listo) main .tabla-wrap { visibility: hidden; animation: mostrar-tabla 0s 5s forwards; }
@keyframes mostrar-tabla { to { visibility: visible; } }
/* mientras la pantalla nueva termina de llegar, el fueguito se ve desde el primer momento (nunca pantalla "vacía") */
html:not(.listo) #carga { display: grid; animation: soltar-carga 0s 15s forwards; }
@keyframes soltar-carga { to { visibility: hidden; } }
/* Envíos en pantallas de 1280–1440 con menú abierto: más compacto para que quepa todo (nunca se corta: si no cabe, se desliza) */
.tabla-env-wrap { overflow-x: auto; }
.tabla-env .oc-chip .ico-pdf { width: 1.05em; height: 1.05em; }
.tabla-env .oc-chip { gap: calc(.15 * var(--m)); }
@media (max-width: 1440px) {
  table.tabla-env { font-size: calc(.76 * var(--m)); }
  .tabla-env th { font-size: calc(.63 * var(--m)); }
  .tabla-env th, .tabla-env td { padding: calc(.4 * var(--m)) calc(.2 * var(--m)); }
  .tabla-env .col-uuid { width: calc(7.2 * var(--m)); max-width: calc(7.2 * var(--m)); font-size: calc(.62 * var(--m)); }
  .tabla-env .col-folio { font-size: calc(.72 * var(--m)); }
  .tabla-env .oc-chip { font-size: calc(.7 * var(--m)); padding: calc(.04 * var(--m)) calc(.25 * var(--m)); }
  .tabla-env .oc-monto { font-size: calc(.72 * var(--m)); }
  .tabla-env .env-est { font-size: calc(.68 * var(--m)); padding: calc(.12 * var(--m)) calc(.35 * var(--m)); }
  .tabla-env .col-prov { min-width: calc(5.5 * var(--m)); }
  .tabla-env .chk { width: calc(1.6 * var(--m)); }
}
@media (max-width: 1300px) {
  table.tabla-env { font-size: calc(.72 * var(--m)); } .tabla-env th { font-size: calc(.6 * var(--m)); }
  .tabla-env th, .tabla-env td { padding: calc(.38 * var(--m)) calc(.16 * var(--m)); }
  .tabla-env .col-folio { font-size: calc(.68 * var(--m)); } .tabla-env .oc-chip { font-size: calc(.66 * var(--m)); } .tabla-env .oc-monto { font-size: calc(.68 * var(--m)); }
}
.alta-sel { grid-template-columns: 2fr 2fr auto; } @media (max-width: 760px) { .alta-sel { grid-template-columns: 1fr; } }
.alta-patron { grid-template-columns: 1fr 2.5fr 1.4fr auto; } @media (max-width: 760px) { .alta-patron { grid-template-columns: 1fr; } }
.acciones-alta { display: flex; gap: .4rem; }
.copiar-patron { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; margin-top: .8rem; }
.copiar-patron select { max-width: 18rem; }

.ayuda-familias { border-left-color: #D97706; }
.etq-fam { display: inline-block; border-radius: 999px; padding: .12rem .6rem; font-size: .8rem; font-weight: 700; }
.fam-1 { background: #DBEAFE; color: #1E40AF; } .fam-2 { background: #DCFCE7; color: #166534; } .fam-3 { background: #FEF3C7; color: #92400E; }
.fam-4 { background: #F3E8FF; color: #6B21A8; } .fam-5 { background: #FFE4E6; color: #9F1239; }
.ayuda-familias .ej.fam-1, .ayuda-familias .ej.fam-2, .ayuda-familias .ej.fam-3, .ayuda-familias .ej.fam-4, .ayuda-familias .ej.fam-5 { color: inherit; }
/* Recetas */
.forma-receta { display: grid; grid-template-columns: 1.4fr 2fr .8fr auto auto; gap: .75rem 1rem; align-items: end; }
.forma-receta .campo { margin: 0; } .forma-receta .campo-casilla { padding-bottom: .55rem; }
@media (max-width: 900px) { .forma-receta { grid-template-columns: 1fr 1fr; } }
.alta-ingrediente { grid-template-columns: 2.5fr 1fr auto; margin-bottom: .8rem; padding: 0; box-shadow: none; border: 0; }
.cantidad-unidad { display: flex; align-items: center; gap: .4rem; } .cantidad-unidad input { flex: 1; } .cantidad-unidad span { min-width: 2rem; font-weight: 700; color: var(--texto-2); }
.tabla-ingredientes td, .tabla-ingredientes th { font-size: .85rem; } .tabla-ingredientes tfoot th { background: #FBF4F5; font-weight: 800; }
.fila-alerta td { background: #FFF5F5; }
.etq-rojo { background: #FEE2E2; color: #991B1B; border-radius: 999px; padding: .08rem .5rem; font-size: .72rem; font-weight: 700; margin-left: .3rem; white-space: nowrap; }
.tabla-ingredientes { table-layout: fixed; width: 100%; } .tabla-ingredientes td, .tabla-ingredientes th { font-size: .8rem; padding-left: .4rem; padding-right: .4rem; overflow-wrap: anywhere; } .tabla-ingredientes th { font-size: .68rem; }
.tabla-ingredientes th { white-space: normal; }
.forma-4 .campo-nr { grid-column: span 6; }
.alta-nombre { grid-template-columns: 2.2fr 1.2fr .9fr .7fr .7fr .7fr .7fr auto; } @media (max-width: 900px) { .alta-nombre { grid-template-columns: 1fr 1fr; } }
.plegable { padding: .8rem 1rem; margin-bottom: .9rem; } .plegable summary { cursor: pointer; } .plegable table { margin-top: .7rem; }
.unir-botones { display: inline-flex; gap: .35rem; } .unir-botones form { margin: 0; }
.ej-alerta { background: #FEF3C7 !important; color: #92400E !important; }
.tabla-pareja .campo-nombre { width: 100%; padding: .35rem .5rem; }

/* ---------------------------------------------------------------- recetas por categoría (mosaico) e íconos de comida */
.ico-comida { width: 1.6rem; height: 1.6rem; vertical-align: middle; }
.cat-mini { width: 2.2rem; height: 2.2rem; border-radius: .5rem; object-fit: cover; display: inline-grid; place-items: center; vertical-align: middle; }
.cat-mini .ico-comida { width: 1.9rem; height: 1.9rem; }
.mosaico-cat { display: grid; grid-template-columns: repeat(auto-fill, minmax(10.5rem, 1fr)); gap: .8rem; margin-top: .4rem; }
.mosaico-cat[hidden], .cat-actual[hidden], .tabla-wrap[hidden] { display: none !important; }
.mosaico-tarjeta { display: flex; flex-direction: column; align-items: center; gap: .3rem; padding: 1rem .7rem .9rem; background: var(--blanco); border: 1px solid var(--borde);
  border-radius: .9rem; box-shadow: var(--sombra); cursor: pointer; font: inherit; color: var(--texto); text-align: center; transition: border-color .15s, transform .15s, box-shadow .15s; overflow: hidden; }
.mosaico-tarjeta:hover { border-color: var(--rojo); transform: translateY(-2px); box-shadow: 0 6px 16px rgba(16,24,40,.10); }
.mosaico-ico .ico-comida { width: 3.4rem; height: 3.4rem; }
.mosaico-foto { width: calc(100% + 1.4rem); margin: -1rem -.7rem .2rem; aspect-ratio: 4 / 3; object-fit: cover; }
.mosaico-nombre { font-weight: 700; font-size: .9rem; line-height: 1.2; color: var(--rojo-osc); }
.mosaico-n { font-size: .8rem; color: var(--texto-2); }
.cat-actual { display: flex; align-items: center; gap: .7rem; margin: .2rem 0 .7rem; }
.cat-actual img { width: 2rem; height: 2rem; border-radius: .4rem; object-fit: cover; margin: 0; aspect-ratio: auto; }
.cat-actual strong { color: var(--rojo-osc); font-size: 1.05rem; }
.etiqueta-campo { display: block; font-weight: 600; font-size: .9rem; margin: 1rem 0 .4rem; }
.galeria-iconos { position: relative; border: 1px solid var(--borde); border-radius: var(--radio); padding: .6rem; max-height: 17rem; overflow-y: auto; background: #FAFAFB; }
.galeria-buscar { width: 100%; margin-bottom: .4rem; }
.galeria-grupo[hidden] { display: none; }
.galeria-titulo { font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--texto-2); margin: .5rem 0 .3rem; }
.galeria-rejilla { display: grid; grid-template-columns: repeat(auto-fill, minmax(2.9rem, 1fr)); gap: .3rem; }
.galeria-rejilla label { display: grid; place-items: center; aspect-ratio: 1; border: 2px solid transparent; border-radius: .55rem; cursor: pointer; background: var(--blanco); }
.galeria-rejilla label[hidden] { display: none; }
.galeria-rejilla label:hover { border-color: var(--borde-fuerte); }
.galeria-rejilla label:has(input:checked) { border-color: var(--rojo); background: var(--rojo-claro); }
.galeria-rejilla input { position: absolute; opacity: 0; pointer-events: none; }
.galeria-rejilla img { width: 2rem; height: 2rem; }
.foto-cat { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; }
.foto-cat img { width: 8rem; aspect-ratio: 4 / 3; object-fit: cover; border-radius: .6rem; border: 1px solid var(--borde); }
.foto-cat > div { display: flex; flex-direction: column; gap: .5rem; align-items: flex-start; }
#modal-cat .forma-2 { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
@media (max-width: 640px) { #modal-cat .forma-2 { grid-template-columns: 1fr; } }
#modal-cat .modal-caja { border-top-color: var(--rojo); } #modal-cat h2 { color: var(--rojo-osc); margin-bottom: .6rem; }
.aviso-alerta { background: var(--ambar-claro); color: #92400E; border: 1px solid #F59E0B; }
.franja-estandar { margin-top: .9rem; padding: .65rem .9rem; border-radius: var(--radio); background: #F0F4FF; border: 1px solid #C7D2FE; color: #1E3A8A; font-size: .92rem; }
.franja-estandar strong { font-size: 1.05rem; }
.franja-estandar.libre { background: var(--ambar-claro); border-color: #FCD34D; color: #92400E; }
.franja-estandar[hidden] { display: none; }
#tabla-recetas .etq-ambar { border-radius: 999px; padding: .08rem .5rem; font-size: .72rem; font-weight: 700; margin-left: .3rem; white-space: nowrap; color: #92400E; }
.mosaico-std { font-size: .74rem; font-weight: 600; color: #1D4ED8; background: #F0F4FF; border-radius: 999px; padding: .05rem .55rem; }
.mosaico-alerta { border-color: #F59E0B; background: #FFFBEB; }
.mosaico-alerta .mosaico-nombre { color: #92400E; }
.mosaico-alerta .mosaico-std { color: #92400E; background: var(--ambar-claro); }
input[readonly][data-gramaje] { background: #F3F4F6; font-weight: 700; color: var(--rojo-osc); cursor: not-allowed; }
.ligas-patron { display: grid; grid-template-columns: repeat(auto-fill, minmax(19rem, 1fr)); gap: .8rem; }
.liga-patron { border: 1px solid var(--borde); border-radius: var(--radio); padding: .7rem .8rem; display: flex; flex-wrap: wrap; gap: .35rem; align-content: flex-start; }
.liga-cab { width: 100%; display: flex; justify-content: space-between; align-items: center; color: var(--rojo-osc); margin-bottom: .2rem; }
.chip-cat { display: inline-flex; align-items: center; gap: .3rem; background: #F9FAFB; border: 1px solid var(--borde); border-radius: 999px; padding: .15rem .6rem .15rem .3rem; font-size: .82rem; font-weight: 600; }
.chip-cat .ico-comida { width: 1.2rem; height: 1.2rem; } .chip-cat small { color: var(--texto-2); font-weight: 400; }
.lista-ligar { display: grid; grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); gap: .3rem .8rem; max-height: 55vh; overflow-y: auto; margin: .6rem 0 1rem; }
.lista-ligar label { display: flex; align-items: center; gap: .4rem; padding: .3rem .4rem; border-radius: .4rem; }
.lista-ligar label.es-mia { background: var(--verde-claro); }
.lista-ligar .ico-comida { width: 1.3rem; height: 1.3rem; } .lista-ligar small { margin-left: auto; font-size: .72rem; }
.std-par { display: grid; grid-template-columns: 1fr 1fr; gap: .4rem; }
.modal-std { max-width: 52rem; } .modal-std .tabla { margin: .6rem 0 .4rem; } .modal-std .ico-comida { width: 1.3rem; height: 1.3rem; }
.modal-std .etq-ambar { border-radius: 999px; padding: .08rem .5rem; font-size: .75rem; font-weight: 700; color: #92400E; }
#modal-cat .campo[hidden] { display: none; }
#modal-ligar .modal-caja, .modal-std { border-top-color: var(--rojo); } #modal-ligar h2, .modal-std h2 { color: var(--rojo-osc); }
.chips-fila { display: flex; flex-wrap: wrap; gap: .35rem; }
#modal-tiempo .modal-caja { border-top-color: var(--rojo); } #modal-tiempo h2 { color: var(--rojo-osc); margin-bottom: .6rem; }
.sin-tiempo { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; margin: -.2rem 0 .8rem; padding: .55rem .8rem; border: 1px dashed var(--borde-fuerte); border-radius: var(--radio); background: var(--blanco); }
.barra .acciones { display: flex; align-items: center; gap: .8rem; min-width: 0; }
.btn-volver { white-space: nowrap; font-weight: 600; }
.titulo-con-boton { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.titulo-con-boton .titulo-seccion { margin-bottom: 0; }
.titulo-con-boton { margin: 1.4rem 0 .6rem; }
#modal-ajuste .modal-caja { border-top-color: var(--rojo); } #modal-ajuste h2 { color: var(--rojo-osc); margin-bottom: .4rem; }
.forma-ajuste { display: grid; grid-template-columns: 1.4fr 1fr 1fr .8fr; gap: .7rem; margin: .6rem 0; }
.forma-ajuste .campo[hidden] { display: none; }
@media (max-width: 700px) { .forma-ajuste { grid-template-columns: 1fr 1fr; } }
.alta-patron .campo-cats { grid-column: 1 / -1; }
.cats-renglon { display: flex; flex-wrap: wrap; gap: .4rem; min-height: 2.3rem; align-items: center; }
.chip-elegir { display: inline-flex; align-items: center; gap: .35rem; border: 1px solid var(--borde); border-radius: 999px; padding: .2rem .7rem .2rem .4rem; font-size: .85rem; font-weight: 600; cursor: pointer; background: var(--blanco); }
.chip-elegir[hidden] { display: none; }
.chip-elegir:has(input:checked) { border-color: var(--rojo); background: var(--rojo-claro); color: var(--rojo-osc); }
.chip-elegir.apagada { opacity: .4; cursor: not-allowed; }
.chip-elegir small { color: var(--texto-2); font-weight: 400; } .chip-elegir .ico-comida { width: 1.2rem; height: 1.2rem; }
.alta-patron + .tabla-wrap th { white-space: normal; }
.vacio-cat { text-align: center; padding: 2rem; } .vacio-cat[hidden] { display: none; } .vacio-cat p { color: var(--texto-2); margin: 0 0 1rem; }
.forma-receta { grid-template-columns: 1.3fr 1.8fr .7fr 1fr auto auto; }
.pieza-par { display: flex; gap: .4rem; } .pieza-par select { min-width: 7rem; } .pieza-par input { width: 5rem; } .pieza-par input[hidden] { display: none; }
.alta-ingrediente { grid-template-columns: 2.5fr 1fr auto auto; }
.casillas-ing { display: flex; flex-direction: column; gap: .2rem; justify-content: flex-end; font-size: .88rem; }
.etq-mini { display: inline-block; font-size: .7rem; font-weight: 700; border-radius: 999px; padding: .02rem .45rem; margin-left: .25rem; white-space: nowrap; }
.etq-mini.prot { background: #FDECEC; color: #991B1B; } .etq-mini.fija { background: #EEF2FF; color: #3730A3; }
.nota-pieza { background: var(--ambar-claro); color: #92400E; border: 1px solid #FCD34D; border-radius: var(--radio); padding: .5rem .8rem; font-size: .9rem; margin-bottom: .8rem; }
.casillas-ing .apagada { opacity: .45; cursor: not-allowed; }
.cantidad-unidad .elegir-en { min-width: 8.5rem; font-weight: 700; }
.cantidad-unidad .elegir-en.sin-elegir { border: 2px solid #F59E0B; background: #FFFBEB; color: #92400E; }
.nota-en { color: #1D4ED8; font-weight: 600; }
.campo-tiempos { grid-column: 1 / -1; } .tiempos-elegir { display: flex; flex-wrap: wrap; gap: .35rem; }
.alta-ingrediente { grid-template-columns: minmax(14rem, 2fr) minmax(16rem, 1.4fr) auto auto; }
.alta-ingrediente .nota-en { grid-column: 1 / -1; background: #F0F4FF; border: 1px solid #C7D2FE; border-radius: var(--radio); padding: .45rem .8rem; color: #1E3A8A; font-weight: 600; font-size: .92rem; }
.alta-ingrediente .nota-en[hidden] { display: none; }
.cantidad-unidad input[data-cantidad] { min-width: 6.5rem; font-size: 1.05rem; font-weight: 700; }
.cantidad-unidad .elegir-en { flex: 0 0 9.5rem; min-width: 0; }
@media (max-width: 900px) { .alta-ingrediente { grid-template-columns: 1fr; } }
.nota-dividir { display: flex; gap: .5rem; align-items: center; background: #F0F4FF; border-color: #C7D2FE; color: #1E3A8A; }
.nota-dividir[hidden] { display: none; }
.forma-receta { align-items: end; }
.entrada-dividir { width: 4.5rem; display: inline-block; margin: 0 .3rem; padding: .2rem .4rem; }
div.nota-dividir { display: block; line-height: 2; }
.forma-receta > .campo > label { white-space: nowrap; }
.forma-receta { grid-template-columns: minmax(12rem, 1.3fr) minmax(14rem, 2fr) minmax(7rem, .7fr) minmax(10rem, .9fr) auto auto; }
.forma-receta .campo[hidden] { display: none; }
.nota-dividir input.entrada-dividir { width: 5rem !important; display: inline-block; vertical-align: middle; }

/* ---------------------------------------------------------------- menús semanales */
.forma-2col { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); gap: .8rem 1rem; align-items: end; }
.dias-servicio { display: flex; flex-wrap: wrap; gap: .5rem 1.2rem; margin-bottom: .9rem; }
.nota-menu { background: var(--azul-claro); color: #1E3A8A; border-radius: var(--radio); padding: .6rem .9rem; font-size: .92rem; margin-bottom: .8rem; }
.tabla-menu { table-layout: fixed; min-width: 56rem; }
.tabla-menu th, .tabla-menu td { vertical-align: top; }
.tabla-menu thead th { text-align: center; }
.tabla-menu thead th:first-child { text-align: left; }
.tabla-menu .fecha-dia { font-weight: 500; color: var(--texto-2); text-transform: none; letter-spacing: 0; }
.tabla-menu tbody th, .tabla-menu tfoot th { text-align: left; font-size: .85rem; font-weight: 700; color: var(--texto); background: #FAFAFB; }
.tabla-menu .tiempo-menu { line-height: 1.35; }
.fila-comensales td, .fila-comensales th { background: #fff !important; vertical-align: middle; height: 2.6rem; padding-top: .3rem !important; padding-bottom: .3rem !important; border-bottom: 3px solid var(--rojo-osc) !important; }
.tabla-menu .fila-comensales th { font-size: .78rem; text-transform: uppercase; letter-spacing: .04em; color: var(--rojo-osc); }
/* encabezado de días: rojo sólido, día y fecha en una línea; distinto de la fila de comensales */
.tabla-menu thead .fila-dias th { background: #F7E3E5 !important; color: var(--rojo-osc) !important; border-bottom: 2px solid #E9B9BE !important; height: 2.6rem; padding-top: .3rem; padding-bottom: .3rem; vertical-align: middle; white-space: nowrap; letter-spacing: .05em; border-color: #EFD3D6; }
.tabla-menu thead .fila-dias .fecha-dia { color: #9F4A53; font-weight: 600; margin-left: .3rem; }
.forma-comensales input { width: 100%; max-width: 7rem; text-align: center; font-weight: 700; padding: .2rem .4rem; min-height: 0 !important; height: 1.9rem; }
.celda-menu { padding: .35rem !important; }
.platillo { display: flex; flex-direction: column; gap: .2rem; width: 100%; min-height: 3.6rem; text-align: left; background: #fff; border: 1px solid var(--borde); border-radius: .5rem; padding: .4rem .5rem; cursor: pointer; font: inherit; color: var(--texto); }
.platillo:hover:not(:disabled) { border-color: var(--rojo); box-shadow: 0 0 0 2px #FDE2E2; }
.platillo:disabled { cursor: default; }
.platillo.vacio { border-style: dashed; align-items: center; justify-content: center; background: #FAFAFB; }
.platillo .pl-nombre { font-size: .8rem; font-weight: 650; line-height: 1.25; }
.platillo .pl-nombre .ico-comida { width: 1rem; height: 1rem; vertical-align: -.15rem; }
.platillo .pl-datos { font-size: .75rem; color: var(--texto-2); }
.platillo .pl-elegir { font-size: .8rem; color: var(--rojo); font-weight: 600; }
.platillo.vacio:disabled .pl-elegir { color: var(--texto-2); }
.fila-por-comensal td strong { color: var(--rojo-osc); font-size: 1.02rem; }
.modal-platillo { max-width: 50rem; }
.modal-platillo .nota-escala { margin: 0 0 .6rem; }
.lista-recetas { border: 1px solid var(--borde); border-radius: .5rem; max-height: 42vh; overflow-y: auto; margin: .4rem 0 .6rem; }
.lista-recetas > div { padding: .8rem; }
.lista-recetas .opcion { display: flex; align-items: center; gap: .6rem; width: 100%; border: 0; border-bottom: 1px solid var(--borde); background: #fff; padding: .5rem .7rem; text-align: left; font: inherit; cursor: pointer; color: var(--texto); }
.lista-recetas .opcion:last-child { border-bottom: 0; }
.lista-recetas .opcion:hover { background: #FFF7F7; }
.lista-recetas .opcion.sel { background: #FDECEC; box-shadow: inset 4px 0 0 var(--rojo); }
.lista-recetas .ico-comida { width: 1.6rem; height: 1.6rem; flex: none; }
.lista-recetas .op-nombre { flex: 1; font-weight: 650; font-size: .9rem; }
.lista-recetas .op-nombre small { display: block; font-weight: 500; color: var(--texto-2); font-size: .78rem; }
.lista-recetas .op-costo { text-align: right; font-weight: 750; white-space: nowrap; }
.lista-recetas .op-costo small { display: block; font-weight: 500; color: var(--texto-2); font-size: .72rem; }
.tag-pz { color: #3730A3; } .tag-av { color: #B45309; }
.modal-platillo .elegida { min-height: 1.4rem; margin-bottom: .6rem; font-size: .92rem; }
.campos-platillo { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); gap: .8rem 1rem; align-items: end; }
.campos-platillo [hidden] { display: none; }
.contador { display: flex; gap: .3rem; }
.contador input { text-align: center; font-weight: 700; min-width: 0; }
.contador .btn { padding: .4rem .8rem; }
.aviso-std .casilla { margin-top: .5rem; font-weight: 600; color: #92400E; }
.nota-pieza[hidden] { display: none; } [data-std] :disabled, .std-par :disabled { background: #F3F4F6; color: var(--texto-2); }
.centros-surte { display: flex; flex-wrap: wrap; gap: .45rem; margin: .6rem 0 .5rem; }
.botones-centros { display: flex; gap: .5rem; }
.pct-fila { display: flex; align-items: center; gap: .25rem; margin-top: .3rem; font-size: .78rem; }
.pct-fila input { width: 4.2rem; padding: .2rem .35rem; text-align: right; font-weight: 700; font-size: .85rem; }
.pct-fila input.pct-mal { border-color: var(--error); background: var(--error-claro); }
.fila-familias td { vertical-align: middle; }
.barra-guardar { position: sticky; bottom: .8rem; z-index: 30; display: flex; align-items: center; gap: .8rem; justify-content: flex-end; flex-wrap: wrap;
  background: #FFFBEB; border: 1px solid #F59E0B; border-radius: var(--radio); padding: .6rem .9rem; margin-top: .8rem; box-shadow: 0 6px 18px rgba(0,0,0,.12); font-weight: 600; color: #92400E; }
.barra-guardar span { flex: 1; }
.barra-guardar[hidden] { display: none; }
.barra-guardar.llamar { animation: llamar .6s ease 2; }
@keyframes llamar { 50% { transform: scale(1.02); box-shadow: 0 0 0 4px #FCD34D; } }
.lista-recetas .opcion.usada { opacity: .5; cursor: not-allowed; background: #F9FAFB; }
.tag-usada { color: var(--texto-2); }
/* menús: % compacto, familias enmarcadas, proteínas de color */
.pct-fila { justify-content: center; height: 1.45rem; margin-top: .25rem; gap: .15rem; font-size: .7rem; white-space: nowrap; }
.pct-fila input { width: 2.9rem; height: 1.35rem; padding: 0 .2rem; font-size: .74rem; text-align: center; border-radius: .3rem; }
.pct-fila.pct-fam input { width: 2.6rem; height: 1.2rem; font-size: .68rem; }
.pct-fila.pct-fam { font-size: .64rem; height: 1.3rem; }
.pct-fila input::-webkit-outer-spin-button, .pct-fila input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.pct-fila input[type=number] { -moz-appearance: textfield; appearance: textfield; }
.tabla-menu tr.fb-1 { --fc: #3B82F6; --fb: #F5F9FF; } .tabla-menu tr.fb-2 { --fc: #16A34A; --fb: #F4FBF6; } .tabla-menu tr.fb-3 { --fc: #D97706; --fb: #FFFBF2; }
.tabla-menu tr.fb-4 { --fc: #9333EA; --fb: #FAF5FF; } .tabla-menu tr.fb-5 { --fc: #E11D48; --fb: #FFF5F7; }
.tabla-menu tr.en-familia > td, .tabla-menu tr.en-familia > th { background: var(--fb); }
.tabla-menu tr.en-familia > th:first-child { border-left: 3px solid var(--fc); }
.tabla-menu tr.en-familia > td:last-child { border-right: 3px solid var(--fc); }
.tabla-menu tr.fb-ini > td, .tabla-menu tr.fb-ini > th { border-top: 3px solid var(--fc); }
.tabla-menu tr.fb-fin > td, .tabla-menu tr.fb-fin > th { border-bottom: 3px solid var(--fc); }
.tabla-menu tbody tr.en-familia:hover td { background: var(--fb); }
.prot-cerdo { --pb: #FDF0F7; --pl: #EC4899; --pt: #9D174D; } .prot-res { --pb: #FDE2E0; --pl: #B91C1C; --pt: #7F1D1D; }
.prot-pollo { --pb: #FFF8D6; --pl: #EAB308; --pt: #854D0E; } .prot-pescado { --pb: #E6F0FF; --pl: #2563EB; --pt: #1E40AF; }
.platillo.prot-cerdo, .platillo.prot-res, .platillo.prot-pollo, .platillo.prot-pescado { border-left: 6px solid var(--pl); }
.platillo .aporta { color: var(--texto); font-weight: 700; }
.platillo.prot-cerdo, .platillo.prot-res, .platillo.prot-pollo, .platillo.prot-pescado { background: var(--pb); border-color: var(--pl); }
.lista-recetas .opcion.prot-cerdo, .lista-recetas .opcion.prot-res, .lista-recetas .opcion.prot-pollo, .lista-recetas .opcion.prot-pescado { box-shadow: inset 5px 0 0 var(--pl); }
.lista-recetas .opcion.sel { box-shadow: inset 5px 0 0 var(--rojo); }
.etq-prot { display: inline-block; border-radius: 999px; padding: .1rem .55rem; font-size: .75rem; font-weight: 700; background: var(--pb); color: var(--pt); border: 1px solid var(--pl); }
.leyenda-prot { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-bottom: .6rem; }
.tabla-menu .pct-fila input[type=number] { min-height: 0; height: 1.35rem; width: 2.9rem; padding: 0 .15rem; font-size: .74rem; line-height: 1; }
.tabla-menu .pct-fila.pct-fam input[type=number] { height: 1.2rem; width: 2.5rem; font-size: .68rem; }
.fila-suma-fam th, .fila-suma-fam td { padding-top: .3rem !important; padding-bottom: .3rem !important; vertical-align: middle !important; }
.fila-suma-fam th { font-size: .74rem; color: var(--fc) !important; }
.suma-fam { display: inline-block; min-width: 4.2rem; border-radius: 999px; padding: .1rem .6rem; font-weight: 800; font-size: .82rem; background: #FEF3C7; color: #92400E; border: 1px solid #FCD34D; }
.suma-fam.ok { background: #DCFCE7; color: #166534; border-color: #86EFAC; }
.btn-pdf { background: #D93025; color: #fff; border-color: #D93025; gap: .45rem; }
.btn-pdf:hover { background: #B3261E; color: #fff; text-decoration: none; }
.logo-centro { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.logo-vista { width: 12rem; height: 5rem; border: 1px dashed var(--borde); border-radius: var(--radio); display: flex; align-items: center; justify-content: center; background: #fff; padding: .4rem; }
.logo-vista img { max-width: 100%; max-height: 100%; object-fit: contain; }
.titulo-centro { display: flex; align-items: center; justify-content: center; gap: .7rem; font-size: 1.15rem; }
.titulo-centro .logo-cliente { height: 2.4rem; max-width: 9rem; object-fit: contain; }
.bloque-inc-titulo .logo-mini { height: 1.3rem; max-width: 4rem; object-fit: contain; vertical-align: middle; margin-right: .45rem; }
.kpi-nomina { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; align-items: center; gap: .6rem 1rem; margin-bottom: 1rem; padding: .9rem 1.2rem; }
.kpi-nomina .lbl { color: var(--texto-2); font-size: .82rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; }
.kpi-nomina .num { font-size: 1.55rem; font-weight: 800; color: var(--rojo-osc); }
.kpi-nomina .kn-signo { font-size: 1.2rem; font-weight: 800; color: var(--texto-2); }
@media (max-width: 760px) { .kpi-nomina { grid-template-columns: 1fr; } .kpi-nomina .kn-signo { display: none; } }
.btn .ico-pdf-doc { width: 1.5rem; height: 1.75rem; flex: none; margin: -.2rem 0; }

/* KPIs compactos en todo el sistema: se ven, pero dejan el espacio a la captura */
.indicador .num, .rejilla-kpi .num { font-size: 1.12rem; line-height: 1.2; }
.indicador .lbl { font-size: .74rem; line-height: 1.25; }
.rejilla-kpi { gap: .5rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 7.2rem), 1fr)); margin-bottom: .7rem; }
.rejilla-kpi .indicador { padding: .45rem .75rem; box-shadow: none; }
.rejilla-kpi .monto { font-size: .8rem; }
.rejilla > .tarjeta.indicador { padding: .55rem .85rem; }
.kpi-nomina { padding: .45rem .9rem; gap: .2rem .8rem; margin-bottom: .7rem; box-shadow: none; }
.kpi-nomina .lbl { font-size: .68rem; }
.kpi-nomina .num { font-size: 1.12rem; line-height: 1.2; }
.kpi-nomina .kn-signo { font-size: .95rem; }
.kpi-nomina .secundario.chico { font-size: .68rem; }
@media (max-width: 600px) { .indicador .num { font-size: 1.05rem; } }
/* Ayuda */
.btn-ayuda { gap: .35rem; }
.ayuda-ico { display: inline-flex; align-items: center; justify-content: center; width: 1.1rem; height: 1.1rem; border-radius: 50%; background: var(--rojo); color: #fff; font-size: .72rem; font-weight: 800; }
.ayuda-fondo { position: fixed; inset: 0; z-index: 80; background: rgba(15, 23, 42, .25); }
.ayuda-fondo[hidden] { display: none; }
.ayuda-panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(100%, 30rem); background: var(--blanco); box-shadow: -10px 0 30px rgba(0,0,0,.15); display: flex; flex-direction: column; padding: 1rem 1.1rem; gap: .7rem; }
.ayuda-enc { display: flex; align-items: center; justify-content: space-between; font-size: 1.15rem; color: var(--rojo-osc); }
.ayuda-cuerpo { overflow-y: auto; flex: 1; padding-right: .2rem; }
.ayuda-sec { font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--texto-2); margin: .6rem 0 .35rem; }
.ayuda-art { border: 1px solid var(--borde); border-radius: var(--radio); margin-bottom: .45rem; background: #fff; }
.ayuda-art summary { cursor: pointer; padding: .55rem .75rem; font-weight: 700; font-size: .92rem; list-style: none; }
.ayuda-art summary::-webkit-details-marker { display: none; }
.ayuda-art summary::before { content: '▸ '; color: var(--rojo); }
.ayuda-art[open] summary::before { content: '▾ '; }
.ayuda-grupo { display: inline-block; font-size: .66rem; font-weight: 700; color: var(--texto-2); background: #F3F4F6; border-radius: 999px; padding: .05rem .45rem; margin-right: .4rem; vertical-align: middle; }
.ayuda-texto { padding: 0 .9rem .7rem; font-size: .88rem; color: #374151; line-height: 1.45; }
.ayuda-texto ul, .ayuda-texto ol { padding-left: 1.1rem; margin: .3rem 0; }
.ayuda-texto li { margin: .2rem 0; }
.ayuda-texto p { margin: .3rem 0; }
@media (max-width: 760px) { .btn-ayuda { padding: .3rem .5rem; } }
.resumen-familias { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .7rem; font-size: .82rem; }
.resumen-familias .ej { background: #F3F4F6; border-radius: 999px; padding: .15rem .65rem; }

/* ciclos de menú: semanas agrupadas como una familia (marco de color a la izquierda) */
.etq-ciclo { display: inline-block; font-size: .72rem; font-weight: 800; letter-spacing: .04em; padding: .08rem .5rem; border-radius: 999px; background: #EEF2FF; color: #3730A3; }
.tabla .fila-ciclo td { background: var(--cc-f) !important; border-top: 2px solid var(--cc) !important; padding-top: .45rem; padding-bottom: .45rem; }
.tabla .fila-ciclo td:first-child, .tabla .en-ciclo td:first-child { box-shadow: inset 4px 0 0 var(--cc); }
.tabla .fila-ciclo .etq-ciclo { background: var(--cc); color: #fff; }
.tabla .en-ciclo td { background: var(--cc-s); }
.cc-1 { --cc: #2F6FED; --cc-f: #E8EFFE; --cc-s: #F7F9FF; } .cc-2 { --cc: #13A26B; --cc-f: #E3F6EE; --cc-s: #F6FCF9; }
.cc-3 { --cc: #F08C00; --cc-f: #FEF0DC; --cc-s: #FFFBF4; } .cc-4 { --cc: #8B5CF6; --cc-f: #EFE8FE; --cc-s: #FAF8FF; } .cc-5 { --cc: #E64980; --cc-f: #FCE4EE; --cc-s: #FFF7FA; }
.lista-ciclo { display: flex; flex-direction: column; gap: .35rem; max-height: 18rem; overflow: auto; border: 1px solid var(--borde); border-radius: var(--radio); padding: .6rem .8rem; margin-bottom: 1rem; }
.lista-ciclo .casilla.deshabilitada { color: #9CA3AF; }
/* incidencias de administrativos (quincenal): una casilla por día, lunes a sábado */
.tabla-inc .w-dia-q { width: 3.6rem; }
.tabla-inc td.c-dia > .chk-trabajo { width: 1.25rem; height: 1.25rem; accent-color: var(--verde); cursor: pointer; }
.tabla-inc td.c-dia > .chk-trabajo:not(:checked):not(.chk-descanso) { outline: 2px solid #FCA5A5; outline-offset: 1px; }

/* formularios: la etiqueta va en una sola línea para que todas las casillas de un renglón queden alineadas */
#form-personal .forma .campo > label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ajuste de inventario de uniformes: una prenda arriba, conteo completo abajo */
.modal-inventario { max-width: 52rem; }
.modal-inventario .sub-modal { font-size: 1rem; color: var(--rojo-osc); margin: .4rem 0 .2rem; }
.modal-inventario .forma-conteo { border-top: 1px solid var(--borde); margin-top: 1rem; padding-top: .6rem; }
.modal-inventario .tabla-conteo { max-height: 18rem; overflow-y: auto; }
.aj-hoy { background: #F3F4F6; border-radius: .4rem; padding: .35rem .7rem; margin: -.2rem 0 .6rem; font-size: .9rem; }
#form-personal .forma .campo > label .etq { padding: 0 .4rem; line-height: 1.15; font-size: .68rem; vertical-align: 1px; }
.tabla-inc td.c-dia.no-laborable { background: #F9FAFB; }

.tabla-puestos td { vertical-align: middle; } .tabla-puestos .entrada-celda { width: 100%; }
.tabla-puestos { table-layout: fixed; } .tabla-puestos .acciones-icono { gap: .5rem; flex-wrap: nowrap; justify-content: flex-end; }
.tabla-unif .entrada-num { max-width: 5rem; }
.unif-grid .unif-plantillas { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; margin: .3rem 0 .5rem; }
.unif-grid .tabla-unif th:first-child { white-space: nowrap; text-align: left; }
.unif-grid .tabla-unif td .entrada-num { width: 100%; max-width: 4.5rem; }
.unif-grid .unif-ciclos { display: grid; grid-template-columns: repeat(2, minmax(0, 16rem)); gap: .8rem; margin-top: .6rem; }
.modal-unif { max-width: 62rem; }

/* RH: plantilla autorizada vs activos y rotación */
.kpi-plantilla .num .de { font-size: .85rem; color: var(--texto-2); font-weight: 600; }
.kpi-plantilla .kpi-general { background: #FBF4F5; }
.rot-columnas { display: flex; flex-direction: column; gap: 1rem; }
/* Reportes de RH: tablas tipo tablero (mismo marcado que el PDF) */
.rep-seccion { margin-bottom: 1.6rem; }
.rep-tabla { width: 100%; border-collapse: collapse; background: #fff; font-size: .86rem; }
.rep-tabla th { background: #FBF4F5; color: var(--rojo-osc); font-size: .74rem; text-transform: uppercase; letter-spacing: .03em; padding: .55rem .4rem; text-align: center; border-bottom: 1px solid var(--borde); }
.rep-tabla td { padding: .45rem .4rem; text-align: center; border-bottom: 1px solid #F0F0F2; }
.rep-tabla .izq { text-align: left; padding-left: .8rem; font-weight: 600; }
.rep-tabla tfoot td { background: #F3F4F6; font-weight: 800; border-top: 2px solid #D1D5DB; }
.rep-tabla .pct { font-weight: 700; } .rep-tabla .sub { display: block; font-size: .68rem; font-weight: 500; color: var(--texto-2); }
.rep-tabla .c-verde { background: #DCFCE7; color: #166534; } .rep-tabla .c-ambar { background: #FEF3C7; color: #92400E; } .rep-tabla .c-rojo { background: #FEE2E2; color: #991B1B; }
.rep-tabla .t-rojo { color: var(--error); font-weight: 700; } .rep-tabla .t-verde { color: var(--verde); font-weight: 700; } .rep-tabla .vacia { background: #FAFAFB; }
.rep-tabla .ini-trim { border-left: 2px solid #9CA3AF; } .rep-tabla .col-anual { background: #F9FAFB; }
.rep-tabla th.trim { background: #F7E3E5; }
.rep-operativa { table-layout: fixed; font-size: .8rem; }
.rep-operativa col.c-centro { width: 11%; } .rep-operativa col.c-num { width: 5%; } .rep-operativa col.c-ini { width: 4.3%; } .rep-operativa col.c-mes { width: 3.3%; } .rep-operativa col.c-cierre { width: 5.6%; }
.rep-operativa td, .rep-operativa th { padding-left: .15rem; padding-right: .15rem; } .rep-operativa th { font-size: .66rem; letter-spacing: 0; }
.rep-operativa .izq { padding-left: .6rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rep-operativa .t-ini { color: var(--texto-2); font-weight: 600; } .rep-operativa .t-baja { font-weight: 700; } .rep-operativa .cero { color: #D1D5DB; font-weight: 500; }
.badge-prima { display: inline-block; margin-top: .2rem; background: #FEF3C7; color: #92400E; border: 1px solid #FCD34D; border-radius: 999px; padding: 0 .5rem; font-weight: 700; white-space: normal; line-height: 1.3; }
.sub-seccion { font-size: 1rem; color: var(--rojo-osc); margin: 0; }
.rep-tabla .sub-sem { display: block; font-size: .6rem; font-weight: 500; color: var(--texto-2); letter-spacing: 0; text-transform: none; }
.rep-tabla td.izq .sub { font-weight: 500; }

/* RH › Reportes: franja de cierre mensual */
.cierres-mes { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .35rem; margin: -.2rem 0 1rem; font-size: .8rem; }
.cierres-tit { font-weight: 700; color: var(--texto-sec, #6B7280); margin-right: .3rem; }
.cierre-chip { padding: .12rem .55rem; border-radius: 1rem; border: 1px solid var(--borde, #E5E7EB); background: #fff; color: #6B7280; white-space: nowrap; cursor: default; }
.cierre-chip.ci-cerrado { background: #ECFDF3; border-color: #ABEFC6; color: #067647; font-weight: 600; }
.cierre-chip.ci-reabierto { background: #FFFAEB; border-color: #FEDF89; color: #B54708; font-weight: 600; }
.cierre-chip.ci-abierto { border-color: #9CA3AF; color: #374151; font-weight: 600; }
.cierre-chip.ci-futuro, .cierre-chip.ci-sin { opacity: .55; }
.cierre-accion { display: inline-flex; gap: .3rem; align-items: center; margin-left: .4rem; }
.cierre-accion select { padding: .2rem 1.6rem .2rem .45rem; font-size: .8rem; height: auto; min-height: 0; width: auto; }

/* Finanzas › Presupuestos */
.tabla-pres td, .tabla-pres th { vertical-align: middle; }
.tabla-pres .pres-celda { text-align: center; min-width: 8.5rem; }
.pres-asig { font-weight: 800; font-variant-numeric: tabular-nums; }
.pres-barra { height: .5rem; background: #E5E7EB; border-radius: 1rem; overflow: hidden; margin: .3rem auto .15rem; max-width: 9.5rem; box-shadow: inset 0 0 0 1px rgba(0,0,0,.04); }
.pres-pct { font-size: .7rem; font-weight: 700; margin-bottom: .15rem; }
.pres-barra span { display: block; height: 100%; border-radius: 1rem; }
.pres-barra .b-verde { background: #16A34A; } .pres-barra .b-ambar { background: #F59E0B; } .pres-barra .b-rojo { background: #DC2626; }
.pres-sub { font-size: .74rem; color: var(--texto-2, #6B7280); font-variant-numeric: tabular-nums; white-space: nowrap; }
.pres-disp { font-weight: 700; } .pres-disp.t-verde { color: #15803D; } .pres-disp.t-ambar { color: #B45309; } .pres-disp.t-rojo { color: #B91C1C; }
.tabla-pres tfoot td { background: #F7F7F8; }
.indicador .pres-barra { margin: .4rem 0 .2rem; max-width: none; }
.pres-total { font-size: 1.35rem; font-weight: 800; padding: .45rem 0; font-variant-numeric: tabular-nums; }
.sem-nav { display: flex; gap: .3rem; align-items: center; } .sem-nav select { min-width: 13rem; }
.tab-sueldo { display: flex; align-items: center; gap: .3rem; margin: .1rem 0; } .tab-sueldo label { font-size: .72rem; color: var(--texto-2, #6B7280); width: 2.2rem; font-weight: 600; } .tab-sueldo .entrada-num { flex: 1; min-width: 0; max-width: 8rem; }
.tabla-puestos select.entrada-celda, .tabla-puestos input.entrada-celda { width: 100%; min-width: 0; box-sizing: border-box; }
.tabla-puestos .acciones-icono { display: inline-flex; grid-auto-columns: auto; }
/* Presupuestos: división clara entre centros de costo y el renglón resaltado al pasar el mouse */
.tabla-pres tbody tr td { border-bottom: 2px solid #CBD2DC; }
.tabla-pres tbody tr:nth-child(even) td { background: #FAFBFC; }
.tabla-pres tbody tr:hover td { background: #FFF4E5; }
.tabla-pres tbody tr:hover td:first-child { box-shadow: inset 4px 0 0 var(--rojo, #C41230); }
.tabla-pres td + td { border-left: 1px solid #EEF0F3; }
.tabla-pres tfoot td { border-top: 3px solid #9CA3AF; }
.forma-pres { grid-template-columns: repeat(3, minmax(0, 1fr)); } .forma-pres .campo-ancho { grid-column: span 2; }
@media (max-width: 700px) { .forma-pres { grid-template-columns: 1fr; } .forma-pres .campo-ancho { grid-column: auto; } }
.pres-disponible { font-size: 1.2rem; font-weight: 800; padding: .45rem 0; font-variant-numeric: tabular-nums; } .pres-disponible.t-verde { color: #15803D; } .pres-disponible.t-rojo { color: #B91C1C; }
.gasto-modo { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; margin: 0 0 .9rem; }
.gasto-op { display: flex; gap: .6rem; align-items: center; padding: .7rem .9rem; border: 2px solid var(--borde, #E5E7EB); border-radius: .7rem; background: #fff; cursor: pointer; }
.gasto-op span { display: flex; flex-direction: column; } .gasto-op small { color: var(--texto-2, #6B7280); font-size: .78rem; }
.gasto-op:has(input:checked) { border-color: var(--rojo, #C41230); background: #FFF5F6; }
.gasto-op input { accent-color: var(--rojo, #C41230); width: 1.1rem; height: 1.1rem; }
.campo-cuenta { display: flex; align-items: center; gap: .5rem; margin-left: auto; } .campo-cuenta label { margin: 0; white-space: nowrap; font-weight: 700; } .campo-cuenta select { min-width: 12rem; }
@media (max-width: 700px) { .gasto-modo { grid-template-columns: 1fr; } }
.fila-cuenta { display: flex; align-items: center; justify-content: space-between; gap: .5rem 1rem; flex-wrap: wrap; } .fila-cuenta .titulo-tarjeta { margin: 0; } .fila-cuenta select { min-width: 16rem; }
.reparto { margin-top: .6rem; } .tabla-reparto { width: 100%; margin-bottom: .5rem; } .tabla-reparto td, .tabla-reparto th { padding: .35rem .5rem; } .tabla-reparto select { width: 100%; } .tabla-reparto input { width: 9rem; text-align: right; }
.tabla-reparto td.t-verde { color: #15803D; font-weight: 700; } .tabla-reparto td.t-rojo { color: #B91C1C; font-weight: 700; }
.reparto-resumen { margin-top: .5rem; font-weight: 800; font-size: 1rem; } .reparto-resumen.t-verde { color: #15803D; } .reparto-resumen.t-rojo { color: #B91C1C; }

/* Finanzas › Gastos: secciones numeradas a todo el ancho, mismas columnas y alturas */
.gasto-form { display: flex; flex-direction: column; gap: 1rem; }
.gasto-form .tarjeta { margin: 0; padding: 1.1rem 1.35rem; }
.g-tit { display: flex; align-items: center; gap: .55rem; font-size: 1.05rem; font-weight: 800; color: var(--rojo-osc, #8B0D22); margin: 0 0 .9rem; }
.g-num { display: inline-flex; align-items: center; justify-content: center; width: 1.6rem; height: 1.6rem; border-radius: 50%; background: var(--rojo, #C41230); color: #fff; font-size: .85rem; font-weight: 800; }
.g-enc { display: flex; justify-content: space-between; align-items: center; margin-bottom: .9rem; } .g-enc .g-tit { margin: 0; }
.g-grid { display: grid; gap: .85rem 1.1rem; align-items: end; }
.g-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.g-span-2 { grid-column: span 2; } .g-span-4 { grid-column: 1 / -1; }
.g-grid .campo { margin: 0; min-width: 0; } .g-grid .campo label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.g-grid select, .g-grid input[type=text], .g-grid input[type=number], .g-grid input[type=date] { width: 100%; height: 2.6rem; }
.g-nota { margin: .7rem 0 0; font-size: .85rem; color: var(--texto-2, #6B7280); }
.seg { display: flex; height: 2.6rem; border: 1.5px solid var(--borde-fuerte, #D0D5DD); border-radius: .55rem; overflow: hidden; background: #fff; }
.seg label { flex: 1; margin: 0; cursor: pointer; display: flex; }
.seg input { position: absolute; opacity: 0; pointer-events: none; }
.seg span { flex: 1; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: .92rem; color: var(--texto-2, #6B7280); white-space: nowrap; }
.seg label + label span { border-left: 1.5px solid var(--borde-fuerte, #D0D5DD); }
.seg input:checked + span { background: var(--rojo, #C41230); color: #fff; }
.seg input:focus-visible + span { outline: 2px solid var(--rojo-osc, #8B0D22); outline-offset: -2px; }
/* documentos: una tabla con las mismas columnas para OC, factura y comprobante */
.g-docs { --g-cols: 15rem minmax(0, 1fr) 9.5rem 2.4rem; border: 1px solid var(--borde, #E5E7EB); border-radius: .6rem; overflow: hidden; }
.g-docs-enc { display: grid; grid-template-columns: var(--g-cols); gap: .9rem; padding: .5rem .9rem; background: #FAF5F6; font-size: .72rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--rojo-osc, #8B0D22); }
.g-docs .num { text-align: right; }
.g-doc, .g-ocs .oc-renglon { display: grid; grid-template-columns: var(--g-cols); gap: .4rem .9rem; align-items: center; padding: .7rem .9rem; border-top: 1px solid var(--borde, #E5E7EB); background: #fff; border-radius: 0; margin: 0; }
.g-ocs { display: block; }
.g-ocs .oc-renglon > input[type=hidden] { display: none; }
.g-ocs .oc-renglon .oc-folio { height: 2.5rem; width: 100%; }
.g-doc-nom { display: flex; flex-direction: column; line-height: 1.25; } .g-doc-nom b { font-size: .95rem; color: var(--texto, #111827); } .g-doc-nom small { font-size: .76rem; color: var(--texto-2, #6B7280); }
.g-docs .btn-archivo { height: 2.5rem; min-height: 0; width: 100%; min-width: 0; justify-content: flex-start; white-space: nowrap; overflow: hidden; }
.g-imp, .g-ocs .oc-importe { text-align: right; font-weight: 800; font-variant-numeric: tabular-nums; font-size: 1rem; }
.g-doc-info { grid-column: 2 / -1; margin: 0; }
.g-doc .leidos { margin-top: .15rem; }
.btn-x { width: 2.4rem; height: 2.4rem; border-radius: .5rem; border: 1px solid var(--borde, #E5E7EB); background: #fff; color: #B91C1C; font-size: 1.2rem; line-height: 1; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.btn-x:hover { background: #FEF2F2; border-color: #FECACA; }
/* cargo a centro de costo */
.g-rep-enc { display: flex; align-items: center; justify-content: space-between; gap: .5rem 1rem; flex-wrap: wrap; margin-top: .9rem; padding-top: .8rem; border-top: 1px dashed var(--borde, #E5E7EB); }
.g-rep-enc .casilla { margin: 0; font-weight: 600; } .g-rep-enc .g-nota { margin: 0; }
.gasto-form .reparto { margin-top: .6rem; }
.gasto-form .tabla-reparto select, .gasto-form .tabla-reparto input { height: 2.5rem; }
.gasto-form .tabla-reparto th:last-child, .gasto-form .tabla-reparto td:last-child { width: 3.2rem; }
.reparto-pie { display: flex; justify-content: space-between; align-items: center; gap: .5rem 1rem; flex-wrap: wrap; margin-top: .3rem; }
.reparto-pie .reparto-resumen { margin: 0; font-size: .95rem; }
.gasto-form .pres-disponible { height: 2.6rem; display: flex; align-items: center; padding: 0; font-size: 1.25rem; }
/* pie: totales · cotejo · registrar */
.g-pie { display: grid; grid-template-columns: auto minmax(0, 1fr) 16rem; gap: .8rem 1.4rem; align-items: center; }
.g-totales { display: flex; gap: 1.6rem; }
.g-totales > div { display: flex; flex-direction: column; } .g-totales span { font-size: .72rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--texto-2, #6B7280); }
.g-totales b { font-size: 1.2rem; font-variant-numeric: tabular-nums; }
.g-cotejo .cotejo-envio { margin: 0; } .g-cotejo .totales-envio { display: none !important; }
.g-pie .btn-enviar-doc { width: 100%; height: 2.9rem; margin: 0; font-size: 1rem; }
.g-prog { grid-column: 1 / -1; }
@media (max-width: 1100px) { .g-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .g-pie { grid-template-columns: 1fr; } .g-docs { --g-cols: 11rem minmax(0, 1fr) 7rem 2.4rem; } }
@media (max-width: 700px) { .g-grid-4 { grid-template-columns: 1fr; } .g-span-2, .g-span-4 { grid-column: auto; } .g-docs { --g-cols: 1fr 2.4rem; } .g-docs-enc { display: none; } .g-docs .g-doc > .btn-archivo, .g-docs .g-imp { grid-column: 1; } .g-doc-info { grid-column: 1 / -1; } }
.tabla-reparto td { vertical-align: middle; }
.gasto-form .tabla-reparto { table-layout: fixed; } .gasto-form .tabla-reparto th:first-child { width: 50%; } .gasto-form .tabla-reparto input { width: 100%; }
/* Gastos compacto: todo cabe en la pantalla */
.g-encabezado { margin-bottom: .6rem !important; align-items: center; } .g-encabezado h1 { margin: 0; }
.gasto-form { gap: .7rem; }
.gasto-form .tarjeta { padding: .8rem 1.1rem; }
.g-tit { margin: 0 0 .55rem; font-size: 1rem; } .g-num { width: 1.45rem; height: 1.45rem; font-size: .8rem; }
.g-enc { margin-bottom: .55rem; gap: .5rem 1rem; flex-wrap: wrap; } .g-enc .g-nota { margin: 0; font-size: .82rem; }
.g-enc-der { display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap; } .g-enc-der .casilla { margin: 0; font-weight: 600; white-space: nowrap; }
.g-fila { display: flex; gap: .8rem; align-items: flex-end; }
.g-fila > .campo { flex: 1 1 0; min-width: 0; margin: 0; } .g-fila > .g-f2 { flex: 2 1 0; } .g-fila > .g-disp { flex: .8 1 0; }
.g-fila > .campo[hidden] { display: none; }
.g-fila .campo label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: .25rem; }
.g-fila select, .g-fila input[type=text], .g-fila input[type=number], .g-fila input[type=date] { width: 100%; height: 2.45rem; }
.seg { height: 2.45rem; }
.g-docs-enc { padding: .35rem .9rem; }
.g-doc, .g-ocs .oc-renglon { padding: .45rem .9rem; }
.g-docs .btn-archivo, .g-ocs .oc-renglon .oc-folio { height: 2.3rem; }
.btn-x { width: 2.2rem; height: 2.2rem; }
.g-docs { --g-cols: 15rem minmax(0, 1fr) 9.5rem 2.2rem; }
.gasto-form .pres-disponible { height: 2.45rem; font-size: 1.15rem; }
.g-pie { padding: .65rem 1.1rem !important; } .g-pie .btn-enviar-doc { height: 2.6rem; } .g-totales b { font-size: 1.1rem; }
@media (max-width: 1100px) { .g-fila { flex-wrap: wrap; } .g-fila > .campo { flex: 1 1 14rem; } }
.filtros-env .campo.campo-periodo { flex: 2.3 1 0; } .filtros-env .campo[data-si-periodo] { flex: 1.7 1 0; } .filtros-env .campo.campo-proximos { flex: 1.6 1 0; }
.filtros-env .campo.campo-origen { flex: 1.4 1 0; }

/* Detalle de envío en ventana emergente (v182) */
.env-modal-caja { max-width: 60rem; padding: 0; text-align: left; border-top: 0; overflow: hidden; display: flex; flex-direction: column; max-height: calc(100vh - 2rem); }
.env-modal { display: flex; flex-direction: column; min-height: 0; max-height: inherit; flex: 1; }
.env-modal-cab { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .8rem 1.2rem; border-bottom: 3px solid var(--rojo); }
.env-modal-cab h2 { display: inline; color: var(--rojo-osc); font-size: 1.1rem; margin: 0 .5rem 0 0; }
.env-modal-cab .secundario { font-size: .9rem; margin-right: .3rem; }
.env-modal-x { border: 0; background: #FEE2E2; color: var(--rojo-osc); width: 1.9rem; height: 1.9rem; border-radius: 50%; font-size: 1.2rem; line-height: 1; cursor: pointer; flex: none; }
.env-modal-x:hover { background: #FECACA; }
.env-modal-cuerpo { overflow-y: auto; padding: .9rem 1.2rem; flex: 1; min-height: 0; }
.env-modal-pie { display: flex; justify-content: flex-end; gap: .6rem; padding: .7rem 1.2rem; border-top: 1px solid var(--borde); background: #FAFAFB; }
.env-modal-cargando { padding: 3rem; text-align: center; color: var(--texto-2); }
.env-modal .sello-alerta { font-size: .85rem; padding: .45rem .7rem; margin-bottom: .8rem; }
.env-datos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .55rem 1.2rem; }
.env-datos .full { grid-column: 1 / -1; }
.env-datos .env-span2 { grid-column: span 2; }
.env-datos .t, .env-bloque > .t { font-size: .68rem; font-weight: 700; color: var(--texto-2); text-transform: uppercase; letter-spacing: .02em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.env-datos .v { font-weight: 600; font-size: .9rem; word-break: break-word; }
.env-datos .v small { font-weight: 500; color: var(--texto-2); font-size: .76rem; margin-left: .25rem; }
.env-datos .v.num { font-variant-numeric: tabular-nums; }
.env-uuid { font-size: .78rem !important; font-family: ui-monospace, Menlo, monospace; }
.env-archivos { display: flex; gap: .4rem; flex-wrap: wrap; }
.env-bloque { margin-top: .9rem; }
.env-bloque > .t { margin-bottom: .25rem; }
.tabla-oc { width: auto; min-width: 26rem; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.tabla-oc th { font-size: .68rem; font-weight: 700; color: var(--texto-2); text-transform: uppercase; text-align: left; padding: .25rem .6rem; border-bottom: 1px solid var(--borde); }
.tabla-oc td { padding: .22rem .6rem; border-bottom: 1px solid #F1F2F4; vertical-align: middle; white-space: nowrap; font-size: .85rem; }
.tabla-oc td:first-child { padding-left: 0; } .tabla-oc th:first-child { padding-left: 0; }
.tabla-oc .num { text-align: right; } .tabla-oc td.num { font-weight: 700; min-width: 7rem; }
.tabla-oc td.accion { text-align: left; font-size: .82rem; }
.tabla-oc tr.esta td { background: #FFF7F7; }
.tabla-oc tfoot td { border-bottom: none; border-top: 2px solid var(--borde); font-weight: 700; }
.tabla-oc .env-est { font-size: .72rem; padding: .1rem .5rem; }
.env-revision { display: grid; grid-template-columns: 16rem minmax(0, 1fr); gap: .5rem 1rem; margin-top: 1rem; padding-top: .8rem; border-top: 1px solid var(--borde); }
.env-revision .campo { margin: 0; }
.env-revision .env-motivo { grid-column: 1 / -1; }
.env-pagina .env-modal { max-width: 60rem; margin: 0 auto; background: var(--blanco); border-radius: .9rem; box-shadow: var(--sombra, 0 1px 3px rgba(0,0,0,.08)); overflow: hidden; }
.env-pagina .env-modal-cuerpo { overflow: visible; }
@media (max-width: 760px) { .env-datos { grid-template-columns: repeat(2, minmax(0, 1fr)); } .env-revision { grid-template-columns: 1fr; } .tabla-oc { min-width: 0; width: 100%; } }
.env-ocs-lista { max-height: 14.5rem; overflow-y: auto; display: inline-block; padding-right: .6rem; border-bottom: 1px solid var(--borde); }
.env-ocs-lista tfoot td { position: sticky; bottom: 0; background: var(--blanco); }
.env-pagina .env-ocs-lista { max-height: none; overflow: visible; }

/* Bancos (v183) */
.tabla-bancos .fila-banco td { background: #FBF4F5; border-top: 2px solid var(--borde); }
.tabla-bancos td.sangria { padding-left: 2rem; }
.tabla-bancos tbody tr[data-href] { cursor: pointer; }
.tabla-bancos .t-verde, .tabla-edocta .t-verde, .indicador .t-verde { color: #15803D; }
.tabla-bancos .t-rojo, .tabla-edocta .t-rojo, .indicador .t-rojo { color: #B91C1C; }
.tabla-edocta td { padding-top: .45rem; padding-bottom: .45rem; }
.tabla-edocta .fila-saldo td { background: #F8FAFC; }
.tabla-edocta tfoot td { border-top: 2px solid var(--borde); background: #FAFAFB; }
.cuenta-pago { display: flex; gap: .8rem 1.2rem; align-items: flex-start; flex-wrap: wrap; margin: .2rem 0 1rem; padding: .7rem .9rem; border: 1px solid #BFD0F7; background: #F5F8FF; border-radius: var(--radio-chico); }
.cuenta-pago .campo { margin: 0; flex: 1 1 14rem; } .cuenta-pago label { font-weight: 700; color: #1D4ED8; white-space: nowrap; }
.cuenta-pago .cp-cuenta { flex: 0 1 24rem; } .cuenta-pago .cp-ref { flex: 0 1 16rem; } .cuenta-pago .cp-fecha { flex: 0 1 11rem; }
.cuenta-pago .ayuda { font-size: .78rem; }
.env-pago-cuenta { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: .5rem 1rem; padding: .6rem .8rem; background: #F5F8FF; border: 1px solid #BFD0F7; border-radius: var(--radio-chico); }
.env-pago-cuenta[hidden] { display: none; }

/* Órdenes de compra (v186) */
.oc-est { display: inline-block; padding: .16rem .6rem; border-radius: 1rem; font-size: .78rem; font-weight: 700; white-space: nowrap; background: #F1F5F9; color: #475569; }
.oc-est-sin-envio { background: #FEF3C7; color: #92400E; } .oc-est-pendiente, .oc-est-en-revision { background: #DBEAFE; color: #1E40AF; }
.oc-est-anticipo { background: #FFEDD5; color: #C2410C; } .oc-est-pagado { background: #DCFCE7; color: #166534; } .oc-est-cancelada { background: #FEE2E2; color: #991B1B; }
.tabla-oc-lista tbody tr[data-href] { cursor: pointer; }
.tabla-partidas { width: 100%; border-collapse: collapse; }
.tabla-partidas th { font-size: .72rem; font-weight: 700; color: var(--rojo-osc); text-transform: uppercase; text-align: left; padding: .35rem .45rem; border-bottom: 2px solid var(--borde); background: #FBF4F5; }
.tabla-partidas td { padding: .3rem .45rem; border-bottom: 1px solid #F1F2F4; vertical-align: middle; }
.tabla-partidas .num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.tabla-partidas input, .tabla-partidas select { width: 100%; padding: .38rem .5rem; font-size: .9rem; }
.tabla-partidas .c-cant { width: 7.5rem; } .tabla-partidas .c-costo { width: 8.5rem; } .tabla-partidas .c-iva { width: 5.5rem; } .tabla-partidas .c-imp { width: 9rem; } .tabla-partidas .c-x { width: 2.2rem; }
.tabla-partidas .c-pres { width: 9rem; color: var(--texto-2); font-size: .85rem; }
.tabla-partidas tfoot td { border-bottom: 0; font-weight: 700; }
.oc-totales { display: flex; gap: 1.6rem; justify-content: flex-end; align-items: baseline; font-variant-numeric: tabular-nums; }
.oc-totales span { color: var(--texto-2); font-size: .82rem; margin-right: .35rem; } .oc-totales b { font-size: 1.05rem; } .oc-totales .grande b { font-size: 1.35rem; color: var(--rojo-osc); }
.oc-pres { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; }
.oc-aviso-pres { font-weight: 700; font-size: .9rem; } .oc-aviso-pres.t-verde { color: #15803D; } .oc-aviso-pres.t-rojo { color: #B91C1C; }
#filtros-oc { display: flex; flex-wrap: wrap; gap: .6rem; margin-bottom: 1rem; } #filtros-oc .campo { margin: 0; flex: 1 1 8rem; min-width: 0; }
#filtros-oc .campo-periodo { flex: 1.6 1 15rem; } #filtros-oc .campo[hidden] { display: none; }
#filtros-oc .campo select, #filtros-oc .campo input { width: 100% !important; }
.oc-panel-campo { flex: 1.3 1 15rem; } .oc-panel { border: 1px solid var(--borde); border-radius: var(--radio-chico); padding: .3rem .6rem; background: #FAFAFB; font-variant-numeric: tabular-nums; min-height: 2.6rem; display: flex; flex-direction: column; justify-content: center; }
.oc-p-fila { display: flex; justify-content: space-between; gap: .6rem; font-size: .82rem; line-height: 1.3; } .oc-p-fila span { color: var(--texto-2); } .oc-p-fila b { font-size: .9rem; }
.oc-p-barra { height: .38rem; background: #E5E7EB; border-radius: 1rem; overflow: hidden; margin-top: .2rem; } .oc-p-barra div { height: 100%; transition: width .2s; }
.g-fila > .oc-panel-campo { flex: 1.9 1 0; } .oc-p-fila b { font-size: 1.05rem; } .oc-p-sub { font-size: .72rem; color: var(--texto-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.btn:disabled, .btn[disabled] { opacity: .45; cursor: not-allowed; filter: grayscale(.4); }

/* OC como documento (v188): se llena sobre la hoja, con el presupuesto a un lado */
.oc-doc { display: grid; grid-template-columns: minmax(0, 1fr) 17rem; gap: 1.2rem; align-items: start; }
.oc-hoja { background: #fff; border: 1px solid var(--borde); border-radius: .6rem; box-shadow: 0 4px 18px rgba(17,24,39,.07); padding: 1.6rem 1.9rem 1.3rem; }
.oc-h-enc { display: grid; grid-template-columns: 9rem minmax(0, 1fr) auto; gap: 1rem; align-items: center; padding-bottom: .9rem; border-bottom: 3px solid #8B1E2D; }
.oc-h-logo img { height: 2.8rem; } .oc-h-titulo { font-size: 1.35rem; font-weight: 800; color: #8B1E2D; letter-spacing: .02em; } .oc-h-tit div:last-child { font-size: .85rem; color: var(--texto-2); }
.oc-h-folio { text-align: right; font-weight: 800; font-size: 1.05rem; } .oc-h-folio small { display: block; font-weight: 500; font-size: .75rem; color: var(--texto-2); }
.oc-h-caja { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem 1.6rem; margin-top: 1rem; padding: .9rem 1rem; border: 1px solid var(--borde); border-radius: .45rem; }
.oc-h-campo .t, .oc-h-obs .t, .oc-lado-caja > .t { font-size: .68rem; font-weight: 700; color: #6B7280; text-transform: uppercase; letter-spacing: .03em; margin-bottom: .2rem; display: flex; justify-content: space-between; align-items: center; gap: .5rem; }
.oc-h-campo select, .oc-h-campo input { width: 100%; }
.oc-h-v { font-weight: 600; padding: .45rem 0; }
.oc-h-rep { margin: 0; font-size: .75rem; text-transform: none; font-weight: 600; color: var(--texto); }
.oc-h-reparto { margin-top: .8rem; }
.oc-h-partidas { margin-top: 1rem; } .oc-h-partidas th { background: #8B1E2D; color: #fff; border-bottom: 0; }
.oc-h-agregar { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; padding: .6rem 0; border-bottom: 1px solid var(--borde); }
.oc-h-pie { display: grid; grid-template-columns: minmax(0, 1fr) 17rem; gap: 1.5rem; margin-top: .9rem; align-items: start; }
.oc-h-obs textarea { width: 100%; resize: vertical; }
.oc-h-tot { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; } .oc-h-tot td { padding: .25rem .2rem; font-size: .9rem; } .oc-h-tot td:first-child { color: var(--texto-2); font-weight: 700; font-size: .78rem; }
.oc-h-tot .num { text-align: right; font-weight: 700; } .oc-h-tot .gran td { border-top: 2px solid #8B1E2D; font-size: 1.15rem; color: #8B1E2D; padding-top: .45rem; } .oc-h-tot .gran td:first-child { font-size: .95rem; color: #8B1E2D; }
.oc-h-leyenda { margin-top: 1.1rem; font-size: .72rem; color: var(--texto-2); }
.oc-lado { position: sticky; top: 4.8rem; } .oc-lado-caja { display: flex; flex-direction: column; gap: .7rem; padding: 1rem; }
.oc-lado-caja .oc-panel { min-height: 3.4rem; } .oc-lado-caja .btn { width: 100%; justify-content: center; } .oc-lado-caja .btn-enviar-doc { height: 2.9rem; font-size: 1rem; margin: 0; }
.oc-lado-caja .oc-aviso-pres:empty { display: none; }
@media (max-width: 1100px) { .oc-doc { grid-template-columns: 1fr; } .oc-lado { position: static; } .oc-h-caja, .oc-h-pie { grid-template-columns: 1fr; } }
.oc-h-campo .t, .oc-h-obs .t { display: block; } .oc-h-campo .t .oc-h-rep { float: right; }
.oc-h-rep input { margin-right: .25rem; vertical-align: -1px; }
.oc-doc { grid-template-columns: minmax(0, 1fr) 15.5rem; }
.oc-h-partidas th.c-pres { color: #fff; } .oc-h-partidas td.c-pres { width: 7.5rem; font-size: .8rem; }
.oc-h-partidas .c-cant { width: 5.8rem; } .oc-h-partidas .c-costo { width: 7rem; } .oc-h-partidas .c-iva { width: 4.6rem; } .oc-h-partidas .c-imp { width: 7.6rem; } .oc-h-partidas .c-x { width: 2rem; }
.oc-h-partidas th { white-space: nowrap; font-size: .66rem; }
.oc-lado-caja .oc-p-sub { white-space: normal; }
.oc-h-partidas th.c-pres { font-size: .66rem; } .oc-h-partidas .c-iva { width: 5.6rem; } .oc-h-partidas .c-costo { width: 6.8rem; }
.oc-lado-caja .btn-enviar-doc { font-size: .92rem; padding-left: .5rem; padding-right: .5rem; white-space: nowrap; }
/* con mes, semana, rango de semanas o fechas a la vista, los filtros de Envíos pasan a dos renglones en vez de apretarse */
.filtros-env:has(.campo[data-si-periodo]:not([hidden])) { flex-wrap: wrap; }
.filtros-env:has(.campo[data-si-periodo]:not([hidden])) .campo { flex: 1 1 9rem; min-width: 8.5rem; }
.filtros-env:has(.campo[data-si-periodo]:not([hidden])) .campo.campo-periodo, .filtros-env:has(.campo[data-si-periodo]:not([hidden])) .campo.campo-proximos { flex: 1.6 1 13rem; }

/* OC v190: presupuesto arriba, buscador de productos, botones abajo */
.oc-doc { grid-template-columns: minmax(0, 1fr); max-width: 72rem; margin: 0 auto; }
.oc-pres-barra { display: grid; grid-template-columns: minmax(0, 1.6fr) repeat(4, minmax(0, 1fr)); gap: .3rem 1.2rem; align-items: center; background: #fff; border: 1px solid var(--borde);
  border-left: 6px solid #9CA3AF; border-radius: .6rem; padding: .7rem 1.2rem .55rem; box-shadow: 0 2px 10px rgba(17,24,39,.05); position: sticky; top: 4.4rem; z-index: 20; }
.oc-pres-barra.verde { border-left-color: #16A34A; } .oc-pres-barra.ambar { border-left-color: #F59E0B; } .oc-pres-barra.rojo, .oc-pres-barra.sin { border-left-color: #DC2626; }
.oc-pb-centro { font-weight: 800; font-size: 1.05rem; color: var(--rojo-osc); } .oc-pb-rubro { font-size: .8rem; color: var(--texto-2); }
.oc-pb-num { text-align: center; font-variant-numeric: tabular-nums; } .oc-pb-num span { display: block; font-size: .68rem; font-weight: 700; color: #6B7280; text-transform: uppercase; } .oc-pb-num b { font-size: 1.05rem; }
.oc-pb-queda b { font-size: 1.3rem; } .oc-pres-barra.verde .oc-pb-queda b { color: #15803D; } .oc-pres-barra.ambar .oc-pb-queda b { color: #B45309; } .oc-pres-barra.rojo .oc-pb-queda b, .oc-pres-barra.sin .oc-pb-asignado { color: #B91C1C; }
.oc-pb-barra { grid-column: 1 / -1; height: .4rem; background: #E5E7EB; border-radius: 1rem; overflow: hidden; } .oc-pb-barra div { height: 100%; width: 0; background: #16A34A; transition: width .2s; }
.oc-pres-barra.ambar .oc-pb-barra div { background: #F59E0B; } .oc-pres-barra.rojo .oc-pb-barra div { background: #DC2626; }
.oc-hoja { margin-top: 1rem; }
.oc-h-botones { display: flex; gap: .7rem; align-items: center; justify-content: flex-end; margin-top: 1.2rem; padding-top: 1rem; border-top: 1px solid var(--borde); flex-wrap: wrap; }
.oc-h-botones .oc-aviso-pres { margin-right: auto; } .oc-h-botones .btn { min-width: 10rem; justify-content: center; } .oc-h-botones [data-generar] { min-width: 15rem; height: 2.8rem; font-size: 1rem; }
.oc-borrar-borrador { max-width: 72rem; margin: .5rem auto 0; text-align: right; }
.oc-combo-txt { width: 100%; } .oc-h-partidas td.c-prod { min-width: 16rem; }
#oc-lista { position: absolute; z-index: 200; background: #fff; border: 1px solid var(--borde-fuerte); border-radius: .5rem; box-shadow: 0 12px 30px rgba(17,24,39,.18); overflow: hidden; }
.oc-lista-enc, .oc-lista-op { display: grid; grid-template-columns: minmax(0, 1fr) 8.5rem 7rem 3.2rem; gap: .8rem; padding: .32rem .8rem; align-items: center; }
.oc-lista-enc { background: #8B1E2D; color: #fff; font-size: .68rem; font-weight: 700; text-transform: uppercase; }
.oc-lista-cuerpo { max-height: 22rem; overflow-y: auto; }
.oc-lista-cat { padding: .3rem .8rem .15rem; font-size: .66rem; font-weight: 800; color: #6B7280; text-transform: uppercase; background: #F9FAFB; border-top: 1px solid #F1F2F4; position: sticky; top: 0; }
.oc-lista-op { font-size: .86rem; cursor: pointer; border-top: 1px solid #F6F7F8; } .oc-lista-op span:first-child { font-weight: 600; } .oc-lista-op span:nth-child(2), .oc-lista-op span:nth-child(4) { color: var(--texto-2); }
.oc-lista-op .num, .oc-lista-enc .num { text-align: right; font-variant-numeric: tabular-nums; }
.oc-lista-op:hover, .oc-lista-op.marcado { background: #FEF2F2; } .oc-lista-vacia { padding: .8rem; color: var(--texto-2); }
.oc-est-borrador { background: #E5E7EB; color: #374151; margin-top: .3rem; }
@media (max-width: 1100px) { .oc-pres-barra { grid-template-columns: 1fr 1fr; } }
.oc-est-por-surtir { background: #FEF3C7; color: #92400E; } .oc-est-recibida { background: #E0F2FE; color: #075985; }
.tabla-oc-partidas .input-recibido { width: 7rem; text-align: right; } .tabla-oc-partidas tr.fila-dif td { background: #FFF7ED; }
.oc-recepcion { display: flex; gap: 1rem; align-items: flex-end; margin-top: 1rem; } .oc-recepcion .campo { flex: 1; margin: 0; } .oc-recepcion .btn { height: 2.7rem; min-width: 14rem; justify-content: center; }
.oc-est-madre { background: #EDE9FE; color: #5B21B6; margin-left: .4rem; } .oc-subs { margin-top: 1rem; } .oc-subs h2 { font-size: 1.02rem; margin: 0 0 .3rem; color: var(--rojo-osc); }
.tabla-reparto .input-pct { width: 5.5rem; text-align: right; }
.oc-cuenta { display: inline-block; min-width: 1.3rem; padding: 0 .35rem; margin-left: .35rem; border-radius: 1rem; background: var(--rojo); color: #fff; font-size: .75rem; font-weight: 800; text-align: center; }

/* OC v194: ver como documento, folio en recuadro, columnas centradas */
.oc-ver-barra { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; max-width: 72rem; margin: 0 auto .8rem; }
.oc-ver-estado { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; }
.oc-hoja-ver { max-width: 72rem; margin: 0 auto 1rem; }
.oc-h-folio-caja { border: 2px solid #8B1E2D; border-radius: .45rem; padding: .35rem 1rem; text-align: center; min-width: 11rem; }
.oc-h-folio-caja small { display: block; font-size: .68rem; color: var(--texto-2); font-weight: 700; letter-spacing: .04em; } .oc-h-folio-caja div { font-size: 1.35rem; font-weight: 800; color: #8B1E2D; }
.oc-h-caja-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.oc-ver-partidas th.cen, .oc-ver-partidas td.cen { text-align: center; } .oc-ver-partidas .c-n { width: 2rem; text-align: center; color: var(--texto-2); }
.oc-ver-partidas td { padding: .45rem .5rem; } .oc-ver-partidas tr.fila-dif td { background: #FFF7ED; }
.oc-h-letra { background: #F9FAFB; border: 1px solid var(--borde); border-radius: .4rem; padding: .45rem .7rem; font-size: .85rem; margin-bottom: .5rem; }
.oc-h-prov { margin-top: 1rem; } .oc-hoja-ver .oc-recepcion { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--borde); }
.oc-est-devolucion { background: #FCE7F3; color: #9D174D; }
.oc-h-partidas th.cen, .oc-h-partidas td.c-pres, .oc-h-partidas td.c-cant, .oc-h-partidas th.c-cant, .oc-h-partidas td.c-iva, .oc-h-partidas th.c-iva { text-align: center; }
.oc-h-partidas td.c-cant input { text-align: center; } .oc-h-partidas td.c-costo input { text-align: right; }
@media (max-width: 900px) { .oc-h-caja-3 { grid-template-columns: 1fr 1fr; } }
.oc-ver-partidas .input-recibido { width: 6rem; text-align: center; margin: 0 auto; display: block; }
.oc-ver-barra ~ .aviso { max-width: 72rem; margin-left: auto; margin-right: auto; }
.btn-icono.emoji { font-size: 1rem; text-decoration: none; }
.oc-h-folio-nota { font-size: .72rem; color: var(--texto-2); text-align: center; margin-top: .3rem; }
/* lista de OC: flecha con recepciones y devoluciones */
.tabla-oc-lista .c-flecha { width: 2rem; padding-right: 0; text-align: center; }
.oc-flecha { border: 1px solid var(--borde); background: #fff; border-radius: .35rem; width: 1.6rem; height: 1.6rem; line-height: 1; cursor: pointer; color: var(--rojo-osc); font-size: .9rem; }
.oc-flecha.abierta { background: var(--rojo-claro); }
.tabla-oc-lista tr.oc-movs td { background: #FBFBFC; padding-top: .3rem; padding-bottom: .6rem; }
.oc-movs-tabla { width: 100%; border-collapse: collapse; font-size: .85rem; } .oc-movs-tabla td { padding: .3rem .5rem; border-bottom: 1px solid #EEF0F2; vertical-align: top; background: transparent !important; }
.oc-movs-tabla tr.rec td:first-child { color: #075985; font-weight: 700; } .oc-movs-tabla tr.dev td:first-child { color: #9D174D; font-weight: 700; } .oc-movs-tabla .nw { white-space: nowrap; }
.oc-est-parcial { background: #EDE9FE; color: #5B21B6; }
.oc-ver-partidas .c-sel { width: 5.5rem; text-align: center; } .oc-ver-partidas .c-sel .casilla { margin: 0; color: #fff; font-size: .7rem; justify-content: center; }
.oc-ver-partidas .c-sel input[type=checkbox] { width: 1.15rem; height: 1.15rem; }
.oc-rec { font-size: .78rem; font-weight: 700; padding: .12rem .5rem; border-radius: 1rem; white-space: nowrap; } .oc-rec.si { background: #DCFCE7; color: #166534; } .oc-rec.no { background: #FEF3C7; color: #92400E; }
.oc-ver-partidas tr.fila-pend td { background: #FFFDF5; }
.oc-ancho { max-width: 72rem; margin-left: auto; margin-right: auto; }
.oc-hoja-ver .oc-recepcion { margin: .8rem 0 0; padding: .8rem; border: 1px dashed #F59E0B; border-radius: .5rem; background: #FFFBEB; }
.fila-recibida td { background: #F0FDF4; } .fila-recibida input { background: #F0FDF4 !important; } .fila-recibida select { pointer-events: none; background: #F0FDF4; }
#recepcion { scroll-margin-top: 5rem; }
.btn-icono:has(.ico-recibir), .ico-recibir { color: #16A34A; } .btn-icono:has(.ico-devolver), .ico-devolver { color: #D97706; }
.btn-primario .ico-recibir, .btn-primario .ico-devolver { color: #fff; }
.aviso .ico, .tabla .ico-recibir, .tabla .ico-devolver { vertical-align: -.2em; }
.btn-icono:has(.ico-pdf-linea) { color: #DC2626; }
.tabla tr.oc-cancelada td { background: #FEF2F2; color: #B91C1C; }
.tabla tr.oc-cancelada td a strong, .tabla tr.oc-cancelada td strong { color: #B91C1C; }
.tabla tr.oc-cancelada td.num strong { text-decoration: line-through; }
.tabla tr.oc-cancelada .chip { background: #FEE2E2; color: #991B1B; }
.btn-icono:has(.ico-cancelar), .ico-cancelar { color: #DC2626; }
.encabezado-oc { flex-direction: column; align-items: flex-start; }
.oc-btn-vista { min-width: 13rem; justify-content: center; }
.oc-hueco { visibility: hidden; pointer-events: none; display: inline-flex; }
.encabezado-oc > div:first-child { max-width: 100%; } .encabezado-oc p { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.oc-pres-barra.libre { border-left-color: #9CA3AF; } .oc-pres-barra.libre .oc-pb-asignado { color: var(--texto-2); }
/* Producción e inventario de productos */
.rejilla-kpi-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.prod-dia { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .7rem .9rem; border: 1px solid var(--borde, #E5E7EB); border-radius: .6rem; margin-top: .6rem; }
.prod-dia.hoy { border-color: #8B1E2D; background: #FFF7F7; }
.prod-rejilla { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1rem; margin-top: 1rem; align-items: start; }
.prod-com { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: .6rem; }
.prod-com h2 { margin: 0; } .prod-com .campo { max-width: 15rem; margin: 0; } .prod-com .ayuda { font-size: .72rem; }
.prod-alcance { font-weight: 700; font-size: 1.05rem; }
.tabla-prod td, .tabla-prod th { padding: .4rem .55rem; } .tabla-prod .input-num { width: 6.5rem; text-align: right; } .tabla-prod .input-num.cambio { border-color: #D97706; background: #FFFBEB; }
.tabla-prod-ins { max-height: 32rem; overflow: auto; }
.tabla tr.prod-falta td { background: #FEF2F2; }
.prod-pie { display: flex; align-items: flex-end; gap: 1rem; margin-top: 1rem; } .prod-aviso { max-width: 26rem; font-size: .85rem; font-weight: 600; }
.form-desbloqueo { display: flex; gap: .4rem; } .form-desbloqueo input { min-width: 14rem; flex: 1; }
.tabla-conteo { max-height: 60vh; overflow: auto; } .tabla-conteo .input-num { width: 9rem; text-align: right; }
@media (max-width: 1100px) { .prod-rejilla { grid-template-columns: 1fr; } }
.prod-tiempo { font-size: .68rem; color: var(--texto-2); text-transform: uppercase; letter-spacing: .02em; }
.tabla-prod .input-num { padding: .3rem .45rem; height: auto; }
.tabla-prod td:last-child { white-space: nowrap; }
.alm-centros .chip { margin: .1rem .2rem .1rem 0; display: inline-block; text-decoration: none; }
.cnt-pres { display: inline-flex; align-items: center; gap: .25rem; margin: .15rem .9rem .15rem 0; white-space: nowrap; }
.cnt-pres .input-num { width: 4.2rem; text-align: right; padding: .3rem .4rem; } .cnt-pres select { width: 3.6rem; padding: .3rem .25rem; }
.cnt-nom { font-size: .78rem; font-weight: 600; color: var(--texto-2); }
.cnt-suelto { display: inline-flex; align-items: center; gap: .3rem; white-space: nowrap; } .cnt-suelto .input-num { width: 5.5rem; text-align: right; padding: .3rem .4rem; }
.tabla tr.cnt-cap td { background: #F0FDF4; }
.cnt-linea { display: flex; align-items: center; gap: .35rem; margin: .15rem 0; }
.cnt-linea .input-num { width: 4.5rem; text-align: right; padding: .3rem .4rem; } .cnt-linea select { width: auto; min-width: 8rem; padding: .3rem .4rem; }
.cnt-x { color: var(--texto-2); font-weight: 700; } .cnt-mas { color: #16A34A; }
.tabla-conteo th.cnt-th-comp, .tabla-conteo td.cnt-comp { background: #F8FAFF; } .tabla-conteo th.cnt-th-ab, .tabla-conteo td.cnt-ab { background: #FFFBF2; }
.tabla-conteo th.cnt-th-comp { border-bottom: 2px solid #2563EB; } .tabla-conteo th.cnt-th-ab { border-bottom: 2px solid #D97706; }
.tabla tr.cnt-cap td.cnt-comp, .tabla tr.cnt-cap td.cnt-ab { background: #E7F8EC; }
.tabla-conteo td.cnt-deb { white-space: nowrap; } .tabla-conteo th.cnt-th-deb { white-space: nowrap; }
.cnt-res { display: inline-block; padding: .15rem .55rem; border-radius: 1rem; font-weight: 700; font-size: .82rem; white-space: nowrap; }
.cnt-res.ok { background: #DCFCE7; color: #166534; } .cnt-res.falta { background: #FEE2E2; color: #991B1B; } .cnt-res.sobra { background: #DBEAFE; color: #1E40AF; }
form.en-linea { display: inline; margin: 0; }
.btn-icono:has(.ico-correo), .ico-correo { color: #2563EB; } .btn .ico-correo { color: inherit; }
.btn-icono { position: relative; } .punto-ok { position: absolute; top: .1rem; right: .05rem; width: .45rem; height: .45rem; border-radius: 50%; background: #16A34A; }
.modal-recordatorio { text-align: center; max-width: 30rem; border-top: 4px solid #F59E0B; }
.modal-recordatorio .rec-ico { font-size: 2.6rem; line-height: 1; margin-bottom: .4rem; }
.modal-recordatorio h2 { color: var(--rojo-osc); margin: .2rem 0 .5rem; }
.rec-lista { list-style: none; padding: 0; margin: .8rem 0; text-align: left; }
.rec-lista li { display: flex; align-items: center; gap: .6rem; padding: .5rem .6rem; border: 1px solid var(--borde); border-radius: .5rem; margin-bottom: .4rem; }
.rec-lista li > span:first-child { flex: 1; font-weight: 700; }
.modal-recordatorio .modal-botones { justify-content: center; }
/* Traspasos (productos y equipos): mismo encabezado */
.tras-enc { display: grid; grid-template-columns: minmax(10rem, 14rem) minmax(10rem, 14rem) minmax(10rem, 16rem) minmax(14rem, 1fr); gap: .8rem; align-items: end; margin-bottom: .9rem; }
.tras-enc .campo { margin: 0; }
.tras-pie { display: flex; justify-content: flex-end; align-items: center; gap: 1rem; margin-top: 1rem; }
.tras-vacio { padding: 1.4rem; text-align: center; color: var(--texto-2); border: 1px dashed var(--borde-fuerte); border-radius: var(--radio); }
@media (max-width: 1000px) { .tras-enc { grid-template-columns: 1fr 1fr; } }

/* Conciliación con los mismos componentes del sistema (selector de archivo lila, botón Excel verde, tablas estándar) */
.conc-carga h2, .conc-prev h2 { margin: 0 0 .35rem; font-size: 1.05rem; }
.conc-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin-top: 1rem; }
.conc-banco { display: flex; flex-direction: column; gap: .5rem; } .conc-banco > label:first-child { font-weight: 700; font-size: .9rem; }
.conc-banco .btn { width: 100%; max-width: none; justify-content: center; }
.conc-barra { height: .5rem; background: var(--borde); border-radius: 1rem; overflow: hidden; margin-top: .4rem; } .conc-barra > div { height: 100%; background: var(--rojo); transition: width .3s; }
#conc-progress { margin-top: 1rem; }
.conc-prev { margin-top: 1rem; } .conc-prev-enc { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .6rem; }
.conc-prev-tabla { max-height: 480px; overflow: auto; } .conc-prev-tabla table { table-layout: fixed; }
@media (max-width: 760px) { .conc-grid { grid-template-columns: 1fr; } }
.nom-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.nom-botones { display: flex; gap: .6rem; } .nom-botones .btn-primario { flex: 1; }
/* Conciliación bancaria: banco | sistema lado a lado, conciliados abajo */
.conc-dos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; align-items: start; }
.conc-lado h2 { margin: 0 0 .2rem; font-size: 1.05rem; display: flex; align-items: center; gap: .5rem; } .conc-lado > p { margin: 0 0 .6rem; }
.conc-lado .tabla-wrap { max-height: 34rem; overflow: auto; }
.conc-hechos { margin-top: 1rem; }
.conc-renglon + .conc-renglon { border-top: 1px dashed var(--borde); padding-top: .2rem; margin-top: .2rem; }
.conc-tabla td { vertical-align: top; } .conc-tabla input[type=checkbox] { width: 1.05rem; height: 1.05rem; }
.conc-barra-manual { flex-wrap: wrap !important; align-items: center; gap: .4rem 1.2rem; margin-bottom: 1rem; }
.conc-barra-manual > span:first-child { flex: 1 1 18rem; color: var(--texto-2); font-size: .88rem; }
.conc-aviso { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.conc-cargas { flex: 1 1 24rem; }
@media (max-width: 1100px) { .conc-dos { grid-template-columns: 1fr; } }
/* banco y sistema: misma altura, mismas columnas, un renglón por movimiento, para que cada pareja quede en la misma fila */
.conc-dos > .tarjeta { margin-top: 0; }
.conc-dos .conc-lado > p { min-height: 2.7em; }
.conc-par { table-layout: fixed; width: 100%; }
.conc-par .conc-c-chk { width: 3.2rem; } .conc-par .conc-c-fecha { width: 6.6rem; } .conc-par .conc-c-monto { width: 8.4rem; } .conc-par .conc-c-acc { width: 5.6rem; }
.conc-par tbody td { vertical-align: middle; height: 2.9rem; padding-top: .35rem; padding-bottom: .35rem; }
.conc-par td.conc-concepto { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.conc-par td.conc-concepto .chip { margin-left: .35rem; }
.conc-chk { display: inline-flex; align-items: center; gap: .3rem; cursor: pointer; }
.conc-num { display: inline-block; min-width: 1.15rem; font-size: .72rem; font-weight: 800; color: var(--texto); }
.conc-num-color { color: #fff; border-radius: 1rem; padding: .1rem .45rem; }
.conc-par tr.conc-en-par td { border-bottom-color: #fff; }
.conc-tabla-pares td { vertical-align: top; font-size: .88rem; } .conc-op { display: flex; gap: .35rem; align-items: center; white-space: nowrap; margin: .1rem 0; font-weight: 600; }
.conc-tabla-pares tr.conc-falta td { background: #FEF2F2; }
#modal-parejas .modal-caja { width: min(72rem, 95vw); max-width: none; }
#modal-parejas .conc-tabla-pares th:first-child { width: 2.5rem; } #modal-parejas .conc-tabla-pares th:nth-child(4) { width: 8rem; } #modal-parejas .conc-tabla-pares th:last-child { width: 15rem; }
#modal-parejas .conc-op { white-space: normal; align-items: flex-start; }
#modal-parejas .tabla-wrap { max-height: 60vh; overflow: auto; }
/* barra de "conciliar a mano": siempre en un renglón y cada cosa en su lugar (no se mueve al marcar) */
.conc-barra-manual { display: grid !important; grid-template-columns: minmax(0, 1fr) 15rem 10.5rem 13rem; align-items: center; gap: 1rem; flex-wrap: nowrap !important; overflow: visible; }
.conc-barra-manual .conc-bm-txt { font-size: .88rem; color: var(--texto-2); }
.conc-barra-manual .conc-bm-res { text-align: right; white-space: nowrap; }
.conc-barra-manual .btn { width: 100%; justify-content: center; white-space: nowrap; }
@media (max-width: 900px) { .conc-barra-manual { grid-template-columns: 1fr 1fr; } .conc-barra-manual .conc-bm-txt { grid-column: 1 / -1; } .conc-barra-manual .conc-bm-res { text-align: left; } }
/* Resultados */
.tabla-resultados tfoot td { background: var(--fondo); }
.res-seccion { margin-top: 1rem; } .res-seccion h2 { display: flex; align-items: center; gap: .5rem; font-size: 1.05rem; margin: 0 0 .6rem; } .res-seccion .res-total { margin-left: auto; font-weight: 800; }
.t-ambar { color: #B45309; }
.tabla-resultados th, .tabla-resultados td { padding-left: .55rem; padding-right: .55rem; } .tabla-resultados td:first-child { white-space: nowrap; }
/* OC por autorizar: marca de agua cruzada sobre el documento */
.oc-marca-agua { position: relative; overflow: hidden; }
.oc-marca-agua::after { content: attr(data-marca); position: absolute; left: 50%; top: 45%; transform: translate(-50%, -50%) rotate(-28deg); white-space: nowrap; pointer-events: none;
  font-size: clamp(1.6rem, 3.6vw, 3.4rem); font-weight: 900; letter-spacing: .06em; color: rgba(207, 35, 45, .13); border: .35rem solid rgba(207, 35, 45, .13); padding: .4rem 1.6rem; border-radius: .8rem; z-index: 3; }
.oc-est-autorizar { background: #FEF3C7; color: #92400E; }
/* Resultados: lista desplegable de meses con mes, semanas y fechas en columnas alineadas */
.res-periodo { align-items: flex-end; }
.res-sel { position: relative; }
.res-sel-btn, .res-sel-op { display: grid; grid-template-columns: 7.5rem 4.6rem 7.6rem 1rem; align-items: center; gap: .5rem; text-align: left; }
.res-sel-btn { font: inherit; background: var(--blanco); border: 1px solid var(--borde-fuerte); border-radius: var(--radio-chico); padding: .55rem .75rem; cursor: pointer; color: var(--texto); min-height: 2.6rem; }
.res-sel-btn:hover { border-color: var(--texto-2); }
.res-sel-btn .v { color: var(--texto-2); font-size: .8rem; text-align: right; }
.res-sel .m { font-weight: 650; } .res-sel .s, .res-sel .f { color: var(--texto-2); font-variant-numeric: tabular-nums; font-size: .9rem; }
.res-sel-lista { position: absolute; z-index: 40; top: calc(100% + .25rem); left: 0; min-width: 100%; background: var(--blanco); border: 1px solid var(--borde-fuerte); border-radius: var(--radio-chico);
  box-shadow: 0 12px 30px rgba(17,24,39,.15); padding: .25rem; max-height: 26rem; overflow-y: auto; }
.res-sel-op { padding: .45rem .5rem; border-radius: .3rem; color: var(--texto); text-decoration: none; grid-template-columns: 7.5rem 4.6rem 7.6rem; }
.res-sel-op:hover { background: var(--fondo); text-decoration: none; }
.res-sel-op.activo { background: var(--rojo-claro); color: var(--rojo-osc); } .res-sel-op.activo .s, .res-sel-op.activo .f { color: var(--rojo); }
.res-sel-op.futuro { opacity: .5; }
.rejilla-kpi .num.res-neutro, .num.res-neutro { color: var(--texto); }
/* regla del sistema: entra dinero (venta, abono, ingreso) en verde; sale (gasto, cargo, egreso) en rojo */
.t-verde { color: #15803D; } .t-rojo { color: #B91C1C; }
.rejilla-kpi .num.t-verde, .indicador .num.t-verde { color: #15803D; } .rejilla-kpi .num.t-rojo, .indicador .num.t-rojo { color: #B91C1C; }
/* pendiente (por facturar, por cobrar): ni entró ni salió → ámbar */
.t-ambar, .rejilla-kpi .num.t-ambar, .indicador .num.t-ambar { color: #B45309; }
.res-kpis { grid-template-columns: repeat(7, minmax(0, 1fr)); } @media (max-width: 1100px) { .res-kpis { grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); } }
.tabla-resultados { font-size: .9rem; } .tabla-resultados th, .tabla-resultados td { padding-left: .45rem; padding-right: .45rem; }
.tabla-resultados th { white-space: nowrap; font-size: .7rem; }
/* Resultados · impuestos */
.res-imp { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin-top: 1rem; align-items: start; }
.res-imp > .tarjeta { margin-top: 0; } .res-imp h2 { font-size: 1.02rem; margin: 0 0 .25rem; } .res-imp p { margin: 0 0 .6rem; }
.res-mini td { padding: .45rem .55rem; } .res-mini .etq { margin-left: .3rem; } .res-mini-total td { font-weight: 800; border-top: 2px solid var(--borde-fuerte); }
.res-par { margin-top: 1rem; } .res-par summary { cursor: pointer; }
@media (max-width: 1100px) { .res-imp { grid-template-columns: 1fr; } }
.tabla-resultados th small, .tabla-resultados td small { display: block; font-size: .72rem; font-weight: 500; color: var(--texto-2); text-transform: none; letter-spacing: 0; }
.tabla-resultados th { white-space: normal; vertical-align: bottom; line-height: 1.15; } .tabla-resultados td { line-height: 1.2; vertical-align: top; }
/* Estado de resultados */
.tabla-estado td, .tabla-estado th { white-space: nowrap; } .tabla-estado td:first-child { white-space: normal; min-width: 16rem; }
.tabla-estado .est-sangria { padding-left: 1.6rem; color: var(--texto-2); }
.tabla-estado tr.est-subtotal td { font-weight: 700; border-top: 1px solid var(--borde-fuerte); }
.tabla-estado tr.est-total td { font-weight: 800; background: var(--fondo); border-top: 2px solid var(--texto-2); }
.tabla-estado tr.est-venta td { font-weight: 800; }
.tabla-estado .est-pct { color: var(--texto-2); font-size: .8rem; } .tabla-estado .est-total { background: rgba(207, 35, 45, .03); }
.est-iva { max-width: 36rem; }
/* MATRIZ arriba, distinguida */
.tabla-resultados tr.res-matriz td { background: #FBF7F8; } .tabla-resultados tr.res-matriz td:first-child strong::after { content: ' · oficina central'; font-weight: 500; color: var(--texto-2); font-size: .78rem; }
.tabla-resultados tfoot td small { display: block; font-size: .72rem; color: var(--texto-2); font-weight: 500; }
.tabla-estado { font-size: .88rem; } .tabla-estado th, .tabla-estado td { padding-left: .5rem; padding-right: .5rem; }

/* Finanzas › Impuestos */
.imp-forma { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem 1rem; align-items: end; }
.imp-forma .imp-boton { grid-column: 1 / -1; display: flex; justify-content: flex-end; }
.imp-forma .elegir-archivo { min-height: 2.6rem; }
.imp-forma .elegir-archivo { width: 100%; justify-content: flex-start; }
.res-titulo { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .6rem; } .res-titulo h2 { margin: 0; } .res-titulo .campo { margin: 0; }
@media (max-width: 900px) { .imp-forma { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .imp-forma { grid-template-columns: 1fr; } }
/* Gastos: salida del banco e impuestos */
.g-banco { display: flex; align-items: center; gap: .6rem; margin-bottom: 1rem; } .g-banco span { flex: 1; } .g-banco .ico { flex: none; }
.g-fija { pointer-events: none; background: #F3F4F6; }
.g-imp-sel { display: flex; gap: .4rem; } .g-imp-sel select { flex: 1; min-width: 0; } .g-imp-sel .btn-icono-solo { padding: 0 .65rem; }
.conc-gasto { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .8rem 1rem; margin: .4rem 0 .8rem; background: #FBF4F5; border: 1px solid #F1D5D9; border-radius: var(--radio-chico); }
.conc-gasto .btn { flex: none; }
/* Nómina excedente (Nomitax) */
.exc-forma { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) auto; gap: .75rem 1rem; align-items: end; }
.exc-forma .elegir-archivo, .exc-pago .elegir-archivo { width: 100%; justify-content: flex-start; min-height: 2.6rem; }
.exc-boton { display: flex; justify-content: flex-end; margin-top: 1rem; } .exc-forma .exc-boton { margin-top: 0; }
.exc-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem; }
.exc-pago { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem 1rem; align-items: end; margin-top: 1rem; }
.exc-sedes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem 1rem; }
.exc-detalle { margin-top: .8rem; } .exc-detalle summary { cursor: pointer; font-weight: 600; margin-bottom: .5rem; }
@media (max-width: 900px) { .exc-forma, .exc-pago, .exc-kpis, .exc-sedes { grid-template-columns: 1fr 1fr; } }
.exc-kpis .indicador { margin: 0; }
.exc-faltan { margin-top: 1rem; } .exc-faltan h3 { font-size: .95rem; margin: 0 0 .5rem; }
.exc-forma { grid-template-columns: 17rem repeat(3, minmax(0, 1fr)); }
.exc-forma .exc-boton { grid-column: 4; }
.exc-sel .res-sel-btn, .exc-sel .res-sel-op { grid-template-columns: 8.6rem 9rem 1rem; width: 100%; }
.exc-sel .res-sel-op { grid-template-columns: 8.6rem 9rem; border: 0; background: none; font: inherit; cursor: pointer; width: 100%; }
.exc-sel .res-sel-lista { max-height: 22rem; overflow-y: auto; }
.exc-sel-grupo { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--texto-2); padding: .5rem .5rem .2rem; }
@media (max-width: 900px) { .exc-forma { grid-template-columns: 1fr 1fr; } .exc-forma .exc-boton { grid-column: auto; } }
.exc-forma { grid-template-columns: 21rem repeat(3, minmax(0, 1fr)); }
.exc-sel .res-sel-btn { grid-template-columns: 8rem 9.6rem 1rem; padding: .5rem .75rem; min-height: 2.6rem; }
.exc-sel .res-sel-op { grid-template-columns: 8rem 9.6rem; padding: .45rem .75rem; }
.exc-sel .m, .exc-sel .f { white-space: nowrap; }
.exc-forma { align-items: start; } .exc-forma .exc-boton { align-self: end; }
.exc-forma .elegir-archivo, .exc-forma select, .exc-forma input[type=date] { min-height: 2.6rem; }
.exc-forma { grid-template-columns: 22.5rem repeat(3, minmax(0, 1fr)); }
.exc-sel .res-sel-btn { grid-template-columns: 9rem 9.6rem 1rem; } .exc-sel .res-sel-op { grid-template-columns: 9rem 9.6rem; }
.exc-periodo { display: flex; gap: .5rem; margin-bottom: .4rem; } .exc-periodo .seg { flex: 1; } .exc-periodo select { width: 6.5rem; }
.exc-sel .res-sel-op[hidden] { display: none; }
.exc-forma { grid-template-columns: 22.5rem repeat(3, minmax(0, 1fr)); }
/* Envíos: KPI en una línea (etiqueta y número chicos) y el monto grande */
.rejilla-kpi .env-kpi { padding: .45rem .8rem; }
.env-kpi .env-kpi-enc { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; }
.env-kpi .env-kpi-enc .lbl { font-size: .8rem; color: var(--texto-2); }
.rejilla-kpi .env-kpi .num { font-size: .85rem; font-weight: 700; color: var(--rojo-osc); }
.rejilla-kpi .env-kpi .monto { font-size: 1.15rem; font-weight: 750; line-height: 1.25; color: var(--rojo-osc); }
.kpi-env-pendiente .monto { color: #B45309 !important; } .kpi-env-revision .monto { color: #1D4ED8 !important; } .kpi-env-pagado .monto { color: var(--verde) !important; } .kpi-env-cancelado .monto { color: var(--error) !important; }
.kpi-env-pendiente .num { color: #B45309 !important; } .kpi-env-revision .num { color: #1D4ED8 !important; } .kpi-env-pagado .num { color: var(--verde) !important; } .kpi-env-cancelado .num { color: var(--error) !important; }
/* Envíos: cada KPI con el color de su estado en el recuadro; números en negro */
.rejilla-kpi .env-kpi .num, .rejilla-kpi .env-kpi .monto { color: var(--texto, #111827) !important; }
.rejilla-kpi .env-kpi { border-left-width: 4px; }
.env-kpi.kpi-env-total { background: #F3F4F6; border-color: #D1D5DB; }
.env-kpi.kpi-env-pendiente { background: #FEF9C3; border-color: #FDE68A; border-left-color: #D97706; }
.env-kpi.kpi-env-revision { background: #DBEAFE; border-color: #BFDBFE; border-left-color: #1D4ED8; }
.env-kpi.kpi-env-anticipo { background: #FFEDD5; border-color: #FED7AA; border-left-color: #C2410C; }
.env-kpi.kpi-env-pagado { background: #DCFCE7; border-color: #BBF7D0; border-left-color: #15803D; }
.env-kpi.kpi-env-cancelado { background: #FEE2E2; border-color: #FECACA; border-left-color: #B91C1C; }
.env-kpi.kpi-env-total { border-left-color: #6B7280; }
.env-kpi .env-kpi-enc .lbl { color: #374151; }
/* Envíos KPIs: orilla completa del color del estado (1.5px), fondo claro */
.rejilla-kpi .env-kpi { border-width: 1.5px !important; border-style: solid; }
.env-kpi.kpi-env-total { background: #F9FAFB; border-color: #6B7280 !important; }
.env-kpi.kpi-env-pendiente { background: #FFFBEB; border-color: #D97706 !important; }
.env-kpi.kpi-env-revision { background: #EFF6FF; border-color: #2563EB !important; }
.env-kpi.kpi-env-anticipo { background: #FFF7ED; border-color: #EA580C !important; }
.env-kpi.kpi-env-pagado { background: #F0FDF4; border-color: #16A34A !important; }
.env-kpi.kpi-env-cancelado { background: #FEF2F2; border-color: #DC2626 !important; }
.env-kpi .env-kpi-enc .lbl.env-est { font-size: .82rem; }
.env-est-total { background: #F3F4F6; color: #374151; border-color: #D1D5DB; }
.env-kpi .env-kpi-enc .lbl.env-est-total { color: #374151; } .env-kpi .env-kpi-enc .lbl.env-est-pendiente { color: #92400E; }
.env-kpi .env-kpi-enc .lbl.env-est-en-revision { color: #1D4ED8; } .env-kpi .env-kpi-enc .lbl.env-est-anticipo { color: #C2410C; }
.env-kpi .env-kpi-enc .lbl.env-est-pagado { color: #15803D; } .env-kpi .env-kpi-enc .lbl.env-est-cancelado { color: #991B1B; }
.env-kpi .env-kpi-enc { align-items: center; margin-bottom: .15rem; }
.env-kpi .env-kpi-enc .lbl.env-est { background: none; border: 0; padding: 0; border-radius: 0; }
/* Estado de resultados: cada mes / trimestre / año enmarcado en negro */
.tabla-estado .est-caja-i { border-left: 2px solid #111827 !important; }
.tabla-estado .est-caja-d { border-right: 2px solid #111827 !important; }
.tabla-estado .est-caja { border-left: 2px solid #111827 !important; border-right: 2px solid #111827 !important; }
.tabla-estado .est-caja-top { border-top: 2px solid #111827 !important; }
.tabla-estado .est-caja-bot { border-bottom: 2px solid #111827 !important; }
.tabla-estado tr.est-grupos th { font-size: .95rem; font-weight: 800; color: var(--texto); background: #F3F4F6; letter-spacing: .04em; }
.tabla-estado .est-res { background: #F9FAFB; font-weight: 700; }
.tabla-estado tr.est-margen td { background: #F3F4F6; padding-top: .45rem; padding-bottom: .45rem; }
.tabla-estado.est-anual { font-size: .8rem; } .tabla-estado.est-anual td:first-child { min-width: 13rem; }
.tabla-estado .est-total { background: none; }
/* Estado de resultados (rediseño): sin recuadros negros; línea roja entre grupos, trimestres con encabezado de color,
   el año/acumulado con fondo propio y la columna Concepto fija al recorrer a la derecha */
.tabla-estado .est-caja-i { border-left: 2px solid var(--rojo) !important; }
.tabla-estado .est-caja-d, .tabla-estado .est-caja { border-right: 0 !important; }
.tabla-estado .est-caja-top { border-top: 0 !important; } .tabla-estado .est-caja-bot { border-bottom: 0 !important; }
.tabla-estado tr.est-grupos th { font-size: .85rem; letter-spacing: .06em; }
.tabla-estado tr.est-grupos th.est-q { background: var(--rojo-claro, #FBE9EB); color: var(--rojo-osc); }
.tabla-estado tr.est-grupos th.est-anio-t { background: var(--rojo-osc, #8B1A1A); color: #fff; }
.tabla-estado .est-anio { background: #FBF4F5 !important; }
.tabla-estado tr.est-total td.est-anio { background: #F5E6E8 !important; }
.tabla-estado .est-res { background: #F9FAFB; }
.tabla-estado th:first-child, .tabla-estado td:first-child { position: sticky; left: 0; z-index: 2; background: var(--blanco, #fff); box-shadow: 1px 0 0 var(--borde); }
.tabla-estado thead th:first-child { background: var(--rojo-claro, #FBE9EB); z-index: 3; }
.tabla-estado tr.est-total td:first-child, .tabla-estado tr.est-margen td:first-child { background: var(--fondo, #F6F7F9); }
.tabla-estado tr.est-grupos th:first-child { background: var(--blanco, #fff); }
/* encabezado de columnas todo del mismo color; negativos de utilidad en rojo; holgura para recorrer */
.tabla-estado thead tr:not(.est-grupos) th, .tabla-estado thead tr:not(.est-grupos) th.est-res, .tabla-estado thead tr:not(.est-grupos) th.est-anio, .tabla-estado thead tr:not(.est-grupos) th.est-pct { background: var(--rojo-claro) !important; color: var(--rojo-osc) !important; }
.tabla-estado td.texto-rojo, .tabla-estado tr.est-total td.texto-rojo { color: var(--error, #B91C1C) !important; }
.tabla-estado .est-hueco { padding: 0 !important; border: 0 !important; background: transparent !important; }
.tabla-estado tr.est-grupos th.est-grupos-t { background: var(--rojo-claro) !important; color: var(--rojo-osc); text-align: left; }
.conc-gasto-btns { display: flex; gap: .5rem; flex-wrap: wrap; justify-content: flex-end; }
/* Conciliación › comisiones e intereses del banco detectados: registro en un clic */
.conc-fin { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin: .25rem 0 .75rem; padding: .6rem .8rem;
  border: 1px solid #f3c2c2; background: #fdf3f3; border-radius: 8px; }
.conc-fin .btn { flex-shrink: 0; }
.lista-faltan { text-align: left; margin: .25rem 0 .75rem 1.1rem; padding: 0; max-height: 40vh; overflow: auto; font-size: .9rem; }
.lista-faltan li { margin: .15rem 0; }
/* Lista de compra (Pronóstico) */
.lc-entrega { margin-bottom: 1rem; }
.lc-entrega h2 { font-size: 1.05rem; margin: 0 0 .5rem; }
.lc-tabla tr.lc-prov td { background: var(--rojo-claro, #FDF2F2); }
.lc-tabla tr.lc-quitado td { opacity: .45; text-decoration: line-through; }
.lc-tabla tr.lc-quitado td:last-child { opacity: 1; text-decoration: none; }
.lc-sel { max-width: 34rem; width: 100%; font-size: .85rem; }
.lc-cant { width: 6rem; text-align: right; }
.lc-pie { display: flex; justify-content: flex-end; margin: .5rem 0 2rem; }
.oc-h-caja-4 { grid-template-columns: 1.3fr 1.1fr .8fr 1.1fr; }
.oc-h-fuerte { font-weight: 800; font-size: 1.05rem; }
.oc-h-entrega { background: var(--rojo-claro, #FDF2F2); border-left: 3px solid var(--rojo-osc, #7F1D1D); border-radius: .35rem; padding: .35rem .7rem; grid-row: span 2; align-self: stretch; display: flex; flex-direction: column; justify-content: center; }
.oc-h-entrega .oc-h-v { font-size: 1.35rem; font-weight: 800; color: var(--rojo-osc, #7F1D1D); text-transform: uppercase; }
@media (max-width: 900px) { .oc-h-caja-4 { grid-template-columns: 1fr 1fr; } .oc-h-entrega { grid-row: auto; } }
.lc-ocs { margin-bottom: 1rem; } .lc-ocs h2 { font-size: 1.05rem; margin: 0 0 .5rem; }
.lc-cerrada { display: inline-flex; align-items: center; gap: .35rem; padding: .45rem .8rem; font-size: .9rem; }
.tabla-oc-lista th, .tabla-oc-lista td { padding-left: .55rem; padding-right: .55rem; }
.tabla-oc-lista td:nth-child(2), .tabla-oc-lista td:nth-child(3) { white-space: nowrap; }
.tabla-oc-lista .acciones-icono { gap: .15rem; }
.tabla-oc-lista td:nth-child(6), .tabla-oc-lista td:nth-child(7), .tabla-oc-lista td.num { white-space: nowrap; }
/* lista desplegable con búsqueda */
.buscable { position: relative; display: flex; }
.buscable-txt { flex: 1; min-width: 0; padding-right: 2rem !important; }
.buscable-flecha { position: absolute; right: .25rem; top: 50%; transform: translateY(-50%); border: 0; background: transparent; color: #374151; font-size: .9rem; cursor: pointer; padding: .3rem .4rem; }
.buscable-lista { position: absolute; z-index: 60; top: calc(100% + 2px); left: 0; right: 0; max-height: 18rem; overflow-y: auto; background: #fff; border: 1px solid var(--borde); border-radius: .45rem; box-shadow: 0 8px 24px rgba(0,0,0,.12); }
.buscable-op { padding: .45rem .7rem; cursor: pointer; font-size: .9rem; }
.buscable-op:hover, .buscable-op.activo { background: var(--rojo-claro, #FDF2F2); }
.buscable-op.sel { font-weight: 700; color: var(--rojo-osc, #7F1D1D); }
.buscable-vacio { padding: .5rem .7rem; color: #6B7280; font-size: .85rem; }
#filtros-oc { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .6rem; }
#filtros-oc .campo, #filtros-oc .campo-periodo, #filtros-oc .campo-folio { flex: none; min-width: 0; }
@media (max-width: 1100px) { #filtros-oc { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.tabla-oc-lista th { text-align: center !important; }
.tabla-oc-lista .c-flecha { width: 1.4rem; padding-left: .3rem !important; padding-right: 0 !important; }
.tabla-oc-lista .oc-flecha { width: 1.15rem; height: 1.15rem; font-size: .65rem; border-radius: .25rem; padding: 0; }
.tabla-oc-lista td:nth-child(2) { padding-left: .2rem !important; }
.buscable-txt { text-transform: none !important; }
.lc-proy { font-size: .72rem; color: #6B7280; white-space: nowrap; }
/* Producción del día */
.prod-barra { display: grid; grid-template-columns: 11rem 1.4fr 1fr 1fr auto; gap: 1.2rem; align-items: end; margin-top: 1rem; }
.prod-barra .campo { margin: 0; } .prod-barra .input-num { width: 100%; text-align: right; font-size: 1.15rem; font-weight: 700; }
.prod-dato .t { font-size: .7rem; font-weight: 700; text-transform: uppercase; color: #6B7280; letter-spacing: .03em; }
.prod-dato .v { font-size: 1.05rem; font-weight: 700; padding: .45rem 0; }
.prod-botones { display: flex; gap: .5rem; }
.prod-rejilla { align-items: stretch; }
.prod-col { display: flex; flex-direction: column; } .prod-col h2 { margin: 0 0 .7rem; }
.tabla-prod-scroll { max-height: 34rem; overflow: auto; flex: 1; }
.tabla-prod thead th { position: sticky; top: 0; z-index: 1; }
.tabla-prod tr.prod-grupos + tr th { top: 1.9rem; }
.tabla-prod th.prod-g-pct, .tabla-prod td.prod-g-pct { background: #EFF6FF; }
.tabla-prod th.prod-g-por, .tabla-prod td.prod-g-por { background: #FFF7ED; }
.tabla-prod thead th.prod-g-pct { color: #1D4ED8; } .tabla-prod thead th.prod-g-por { color: #C2410C; }
.prod-in { display: inline-flex; align-items: center; gap: .2rem; } .prod-in span { color: #1D4ED8; font-weight: 700; }
.tabla-prod .prod-in .input-num { width: 4.6rem; }
.tabla-prod .prod-in-por { width: 5.5rem; font-weight: 700; }
.prod-receta { border: 0; background: none; padding: 0; font: inherit; font-weight: 700; color: var(--rojo-osc, #7F1D1D); text-align: left; cursor: pointer; text-decoration: underline dotted; text-underline-offset: 3px; }
.prod-tiempo b { color: #111827; }
@media (max-width: 1100px) { .prod-barra { grid-template-columns: 1fr 1fr; } }
.prod-rejilla > .tarjeta { margin: 0; }
.tabla-prod td { vertical-align: middle; }
.prod-barra .prod-dato .v { min-height: 2.6rem; display: flex; align-items: center; }
.tabla-resultados th.res-adm, .tabla-resultados td.res-adm { background: #FEF2F2; }

/* ---- Asistente IA (SIZU): fijo en la barra de arriba, al centro; se despliega hacia abajo ---- */
.ia-dock { position: relative; flex: 1 1 0; display: flex; justify-content: center; min-width: 0; max-width: 760px; margin: 0 auto; }
.barra > .acciones, .barra > .usuario { flex: none; white-space: nowrap; }
.barra > .acciones { flex-wrap: nowrap; }
.ia-pill { display: flex; align-items: center; gap: .6rem; width: 100%; min-width: 0; height: 2.5rem; padding: 0 .5rem 0 .4rem; cursor: pointer;
  background: linear-gradient(90deg, var(--rojo-claro), #fff 55%); border: 1px solid var(--borde); border-radius: 999px; color: var(--texto); transition: box-shadow .2s, border-color .2s; }
.ia-pill:hover, .ia-pill[aria-expanded="true"] { border-color: var(--rojo); box-shadow: 0 0 0 3px rgba(185, 28, 28, .12); }
.ia-pill-nombre { font-weight: 800; color: var(--rojo-osc); white-space: nowrap; font-size: .9rem; }
.ia-pill-ult { flex: 1; min-width: 0; font-size: .78rem; color: var(--texto-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: left; border-left: 1px solid var(--borde); padding-left: .6rem; }
.ia-pill-flecha { display: grid; place-items: center; width: 1.8rem; height: 1.8rem; border-radius: 50%; background: var(--rojo); color: #fff; flex: none; transition: transform .25s; }
.ia-pill-flecha svg { width: 1rem; height: 1rem; }
.ia-pill[aria-expanded="true"] .ia-pill-flecha { transform: rotate(180deg); }
.ia-fuego { position: relative; width: 1.9rem; height: 1.9rem; flex: none; display: inline-block; }
.ia-fuego.chico { width: 1.25rem; height: 1.25rem; vertical-align: -.25rem; }
.ia-fuego img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
.ia-fuego .base { opacity: .25; filter: grayscale(1); }
.ia-fuego .lleno { clip-path: inset(0 0 0 0); }
.ia-pensando-on .ia-fuego .lleno { animation: llenar 1.6s cubic-bezier(.45,0,.55,1) infinite; }
.ia-pensando-on .ia-pill-ult { color: var(--rojo-osc); font-style: italic; }
.ia-panel { position: absolute; top: calc(100% + .55rem); left: 50%; width: min(860px, calc(100vw - 2rem)); height: min(72vh, 760px); z-index: 61; display: flex; flex-direction: column;
  background: var(--blanco); border: 1px solid var(--borde); border-radius: var(--radio); box-shadow: 0 18px 50px rgba(0,0,0,.22); overflow: hidden;
  transform: translate(-50%, -12px) scaleY(.6); transform-origin: top center; opacity: 0; visibility: hidden; transition: transform .22s ease, opacity .18s ease, visibility 0s .22s; }
.ia-panel.abierto { transform: translate(-50%, 0) scaleY(1); opacity: 1; visibility: visible; transition: transform .22s ease, opacity .18s ease; }
.ia-enc { display: flex; align-items: center; justify-content: space-between; padding: .7rem .9rem; background: var(--rojo); color: #fff; }
.ia-enc strong { display: inline-flex; align-items: center; gap: .45rem; }
.ia-enc svg { width: 1.15rem; height: 1.15rem; }
.ia-enc-btns { display: flex; gap: .2rem; }
.ia-enc .btn-icono { color: #fff; background: transparent; border: 0; padding: .3rem; border-radius: 6px; cursor: pointer; }
.ia-enc .btn-icono:hover { background: rgba(255,255,255,.18); }
.ia-btn-min svg { transform: rotate(180deg); }
.ia-consumo { display: flex; align-items: center; gap: .6rem; justify-content: space-between; padding: .4rem .9rem; font-size: .78rem; color: var(--texto-2); border-bottom: 1px solid var(--borde); min-height: 1.9rem; }
.ia-barra { flex: 0 0 90px; height: 6px; background: var(--borde); border-radius: 99px; overflow: hidden; }
.ia-barra span { display: block; height: 100%; }
.ia-cuerpo { flex: 1; overflow-y: auto; padding: .9rem; display: flex; flex-direction: column; gap: .6rem; background: var(--fondo); }
.ia-msg { max-width: 92%; padding: .6rem .8rem; border-radius: 12px; font-size: .9rem; line-height: 1.45; overflow-wrap: anywhere; }
.ia-msg p { margin: 0 0 .45rem; } .ia-msg p:last-child { margin-bottom: 0; }
.ia-msg ul, .ia-msg ol { margin: .2rem 0 .45rem; padding-left: 1.2rem; }
.ia-msg code { background: rgba(0,0,0,.06); padding: 0 .25rem; border-radius: 4px; font-size: .85em; }
.ia-user { align-self: flex-end; background: var(--rojo); color: #fff; border-bottom-right-radius: 4px; }
.ia-assistant { align-self: flex-start; background: var(--blanco); border: 1px solid var(--borde); border-bottom-left-radius: 4px; }
.ia-error { align-self: stretch; background: var(--error-claro); color: var(--error); border: 1px solid var(--error); }
.ia-tit { font-weight: 800; margin-top: .3rem !important; }
.ia-tabla { overflow-x: auto; margin: .3rem 0 .5rem; }
.ia-tabla table { border-collapse: collapse; font-size: .8rem; width: 100%; }
.ia-tabla th, .ia-tabla td { border: 1px solid var(--borde); padding: .25rem .45rem; text-align: left; white-space: nowrap; }
.ia-tabla th { background: var(--fondo); font-weight: 700; text-align: center; }
.ia-tabla td.num { text-align: right; font-variant-numeric: tabular-nums; }
.ia-sug { display: flex; flex-direction: column; gap: .35rem; margin-top: .6rem; }
.ia-sug button { text-align: left; background: var(--fondo); border: 1px solid var(--borde); border-radius: 8px; padding: .4rem .6rem; font-size: .82rem; cursor: pointer; color: var(--texto); }
.ia-sug button:hover { border-color: var(--rojo); color: var(--rojo); }
.ia-prop { align-self: stretch; background: var(--ambar-claro); border: 1px solid var(--ambar); border-radius: 10px; padding: .6rem .8rem; font-size: .86rem; }
.ia-prop-tit { font-weight: 800; font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; color: var(--ambar); margin-bottom: .2rem; }
.ia-prop-btns { display: flex; gap: .4rem; margin-top: .5rem; }
.ia-prop-est { margin-top: .4rem; font-weight: 700; font-size: .82rem; }
.ia-est-aplicada { color: var(--verde); } .ia-est-descartada { color: var(--texto-3); } .ia-est-error { color: var(--error); }
.ia-conv { display: flex; justify-content: space-between; gap: .6rem; text-align: left; background: var(--blanco); border: 1px solid var(--borde); border-radius: 8px; padding: .5rem .7rem; cursor: pointer; font-size: .85rem; color: var(--texto); }
.ia-conv span { color: var(--texto-3); font-size: .75rem; white-space: nowrap; }
.ia-conv:hover { border-color: var(--rojo); }
.ia-forma { display: flex; gap: .5rem; align-items: flex-end; padding: .6rem .7rem; border-top: 1px solid var(--borde); }
.ia-forma textarea { flex: 1; resize: none; min-height: 2.6rem; max-height: 8rem; font: inherit; font-size: .9rem; padding: .5rem .6rem; border: 1px solid var(--borde-fuerte); border-radius: 8px; }
.ia-forma .btn { padding: .55rem .75rem; }
.ia-pie { font-size: .7rem; color: var(--texto-3); text-align: center; padding: 0 .7rem .5rem; }
.ia-pensando { color: var(--texto-2); font-style: italic; }
.ia-pensando span { animation: ia-punto 1.2s infinite; } .ia-pensando span:nth-child(2) { animation-delay: .2s; } .ia-pensando span:nth-child(3) { animation-delay: .4s; }
@keyframes ia-punto { 0%, 60%, 100% { opacity: .2; } 30% { opacity: 1; } }
.ia-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin-bottom: 1rem; }
.ia-kpis > .tarjeta { margin: 0; }
.ia-kpis .ia-kpi { display: flex; flex-direction: column; gap: .25rem; padding: 1rem 1.2rem; }
.ia-kpis .lbl { color: var(--texto-2); font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; }
.ia-kpis .num { font-size: 1.45rem; font-weight: 800; }
.ia-ok { color: var(--verde); } .ia-no { color: var(--error); }
.ia-config { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.ia-lim { width: 9rem; text-align: right; }
@media (max-width: 900px) { .ia-kpis, .ia-config { grid-template-columns: 1fr 1fr; } }
@media (max-width: 1100px) { .barra .usuario .nombre { display: none; } }
@media (max-width: 900px) { .ia-pill-ult { display: none; } }
@media (max-width: 560px) { .ia-pill-nombre { display: none; } .ia-panel { position: fixed; top: calc(var(--barra-alto) + .4rem); left: 50%; height: calc(100vh - var(--barra-alto) - 1rem); } .ia-kpis, .ia-config { grid-template-columns: 1fr; } }
@media print { .ia-dock { display: none !important; } }
.ia-barra-prop { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; margin: 0 0 1rem; padding: .8rem 1rem; border: 2px solid var(--ambar); background: var(--ambar-claro); border-radius: var(--radio); }
.ia-barra-prop.ia-bp-aplicada { border-color: var(--verde); background: var(--verde-claro); }
.ia-barra-prop.ia-bp-descartada { border-color: var(--borde-fuerte); background: var(--fondo); }
.ia-bp-txt { display: flex; flex-direction: column; gap: .2rem; flex: 1 1 360px; }
.ia-bp-txt > strong { display: inline-flex; align-items: center; gap: .4rem; }
.ia-bp-txt svg { width: 1.1rem; height: 1.1rem; }
.ia-barra-prop .acciones { display: flex; gap: .5rem; flex-wrap: wrap; }
.ia-barra-prop form { margin: 0; }
.platillo.ia-nuevo { outline: 2px solid var(--ambar); background: var(--ambar-claro) !important; }
.ia-oc-datos { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1rem; }
.ia-oc-datos > div { display: flex; flex-direction: column; gap: .15rem; }
.ia-oc-datos .lbl { color: var(--texto-2); font-size: .74rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; }
@media (max-width: 900px) { .ia-oc-datos { grid-template-columns: 1fr 1fr; } }

/* ---- Cambios pendientes (nada se guarda solo) ---- */
.pendiente { background: var(--ambar-claro) !important; outline: 2px solid var(--ambar); outline-offset: -2px; }
.pend-barra { position: fixed; left: 50%; bottom: 1rem; transform: translate(-50%, 150%); z-index: 70; display: flex; align-items: center; gap: 1rem; flex-wrap: wrap;
  padding: .6rem .7rem .6rem 1.1rem; background: var(--texto); color: #fff; border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,.25); transition: transform .2s; max-width: calc(100vw - 2rem); }
.pend-barra.visible { transform: translate(-50%, 0); }
body:has(.chatd-fila > *) .pend-barra { bottom: 4.4rem; }   /* conversaciones del chat abajo: la barra de guardar va encima de ellas */
.pend-txt { font-weight: 700; }
.pend-err { color: #FCA5A5; font-size: .85rem; }
.pend-err:empty { display: none; }
.pend-btns { display: flex; gap: .5rem; }
.pend-barra .btn-secundario { background: transparent; color: #fff; border-color: rgba(255,255,255,.4); }
@media print { .pend-barra { display: none !important; } }

.ia-prop-nota { font-size: .74rem; color: var(--texto-2); margin-top: .35rem; }
.ia-enc .ia-fuego img { filter: brightness(0) invert(1); } .ia-enc .ia-fuego .base { opacity: .35; }

.ia-trabajando { display: flex; align-items: center; gap: .55rem; font-size: .88rem; color: var(--rojo-osc); }
.ia-trabajando .ia-av { font-weight: 700; }
.ia-trabajando .ia-seg { color: var(--texto-3); font-size: .78rem; font-variant-numeric: tabular-nums; margin-left: .2rem; }
.ia-trabajando .btn { margin-left: .4rem; padding: .2rem .6rem; font-size: .75rem; }
.ia-fuego.ia-on .lleno { animation: llenar 1.6s cubic-bezier(.45,0,.55,1) infinite; }
.ia-puntos span { animation: ia-punto 1.2s infinite; } .ia-puntos span:nth-child(2) { animation-delay: .2s; } .ia-puntos span:nth-child(3) { animation-delay: .4s; }
.ia-pill.ia-nueva .ia-pill-flecha { animation: ia-latido 1.4s ease-in-out infinite; }
.ia-pill.ia-nueva .ia-pill-ult { color: var(--texto); font-weight: 700; }
@keyframes ia-latido { 0%, 100% { box-shadow: 0 0 0 0 rgba(185, 28, 28, .45); } 50% { box-shadow: 0 0 0 6px rgba(185, 28, 28, 0); } }
.ia-forma textarea.ia-espera { border-color: var(--ambar); box-shadow: 0 0 0 3px rgba(217,119,6,.2); }

/* ---- Punto de venta ---- */
.pv-filtros { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: .75rem; align-items: end; }
.pv-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin: 1rem 0; }
.pv-kpis > .tarjeta { margin: 0; }
.pv-tiempos { display: flex; flex-wrap: wrap; gap: .3rem .9rem; margin-top: .3rem; font-size: .9rem; }
.pv-terms { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .8rem; }
.pv-terms > .tarjeta { margin: 0; padding: .8rem 1rem; }
.pv-forma { display: grid; grid-template-columns: repeat(2, 1fr); gap: .8rem 1rem; }
.pv-forma .ancho-total { grid-column: 1 / -1; }
.pv-forma textarea { width: 100%; font: inherit; }
.pv-config { border: 0; padding: 0; margin: 0; display: grid; gap: 1rem; }
.pv-config > .tarjeta { margin: 0; }
.pv-tiempos-t input { width: 100%; }
.pv-acceso { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: .7rem; margin-bottom: 1rem; }
.pv-acceso > .tarjeta { margin: 0; padding: .7rem .8rem; display: flex; flex-direction: column; align-items: center; text-align: center; gap: .2rem; }
.pv-acc-logo { height: 30px; display: flex; align-items: center; justify-content: center; }   /* mismo alto con o sin logo: tarjetas parejas */
.pv-acc-logo img { max-height: 30px; max-width: 90px; object-fit: contain; }
.pv-acc-nombre { font-size: .92rem; letter-spacing: .02em; }
.pv-acc .chico { font-size: .72rem; line-height: 1.3; }
.pv-acc .btn { margin-top: .35rem; padding: .3rem .8rem; font-size: .8rem; }
.pv-acc .btn svg { width: .9rem; height: .9rem; }
.pv-ayuda ol { margin: .5rem 0 0; padding-left: 1.2rem; line-height: 1.6; }
.acciones-fila { white-space: nowrap; } .acciones-fila form { display: inline; }
@media (max-width: 900px) { .pv-kpis { grid-template-columns: 1fr 1fr; } .pv-forma { grid-template-columns: 1fr; } }
.pv-forma-3 { grid-template-columns: repeat(3, 1fr); }
.pv-pasos li { margin-bottom: .55rem; }
.pv-copiar { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin: .4rem 0; padding: .5rem .7rem; background: var(--fondo); border: 1px dashed var(--borde-fuerte); border-radius: 8px; }
.pv-copiar code { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.pv-equipo { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.pv-equipo form { margin: 0; }
.pv-destino { margin: .4rem 0; padding: .55rem .7rem; background: #1F2937; color: #E5E7EB; border-radius: 8px; font-size: .82rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.pv-destino b { color: #FCA5A5; }
.pv-pasos ol { margin: .4rem 0 0; padding-left: 1.3rem; }
.aviso-gris { background: var(--fondo); color: var(--texto-2); border: 1px solid var(--borde); }
.pv-poses { width: 100%; text-align: left; }
.pv-poses summary { cursor: pointer; text-align: center; color: var(--primario, #1d4ed8); }
.pv-pos-fila { display: flex; align-items: center; justify-content: space-between; gap: .4rem; padding: .25rem 0; border-top: 1px solid var(--borde, #e5e7eb); }
.pv-pos-fila .chico { line-height: 1.25; }
.pv-pos-fila .btn { margin: 0; padding: .15rem .5rem; font-size: .7rem; }
.vivo-aviso { display: flex; align-items: center; justify-content: space-between; gap: .6rem; position: sticky; top: .5rem; z-index: 30; }
.pv-resumen { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .5rem; font-size: .82rem; margin: .2rem 0 .6rem; }
.pv-resumen .sep { color: var(--gris-300, #cbd5e1); }
.pv-resumen .pv-chip { background: var(--blanco, #fff); border: 1px solid var(--borde, #e5e7eb); border-radius: 999px; padding: .05rem .5rem; font-size: .76rem; }
.pv-resumen .pv-rech { font-size: .72rem; margin-left: .4rem; }
.pv-resumen [data-quitar-filtros] { margin-left: auto; }
/* Filtros de Punto de venta: SIEMPRE en una sola línea, con las mismas proporciones en cualquier pantalla */
.filtros.pv-filtros { display: grid; grid-template-columns: minmax(11rem, 14rem) minmax(8rem, 13rem) minmax(8rem, 11rem) auto; justify-content: start; gap: .5rem; align-items: end; }
.filtros.pv-filtros.pv-filtros-consumos { justify-content: stretch; grid-template-columns: minmax(11.6rem, 1.2fr) minmax(5.5rem, 1.3fr) minmax(8.6rem, 1fr) minmax(7.5rem, 1fr) minmax(7.5rem, 1fr) minmax(5.6rem, .9fr) minmax(5.6rem, .9fr); gap: .5rem; align-items: end; }
.pv-filtros .campo input, .pv-filtros .campo select, .pv-filtros > .btn, .pv-hora { font-size: .86rem; }
.pv-filtros .campo input, .pv-filtros .campo > select { padding-left: .55rem; padding-right: .4rem; }
.pv-filtros .campo > select { padding-right: 1.5rem; }
.pv-filtros .campo { min-width: 0; }
.pv-filtros .campo input, .pv-filtros .campo select { width: 100%; height: 2.45rem; box-sizing: border-box; min-width: 0; }
.pv-filtros .campo label { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.2; margin-bottom: .3rem; }
.pv-filtros select:disabled { -webkit-appearance: none; appearance: none; background-image: none; padding-right: .4rem; color: var(--gris-500, #6b7280); background: var(--gris-50, #f3f4f6); cursor: default; }
/* hora:minutos en una sola casilla, con botón para limpiar */
.pv-hora { display: flex; align-items: center; height: 2.45rem; box-sizing: border-box; border: 1px solid var(--borde, #d1d5db); border-radius: 8px; background: #fff; padding: 0 .25rem; }
.pv-hora:focus-within { border-color: var(--rojo, #b91c1c); box-shadow: 0 0 0 3px rgba(185, 28, 28, .12); }
.pv-hora select { flex: 1 1 0; min-width: 0; width: auto; height: 100%; border: 0; box-shadow: none; background: transparent; -webkit-appearance: none; appearance: none; padding: 0; text-align: center; text-align-last: center; font-variant-numeric: tabular-nums; cursor: pointer; outline: none; }
.pv-hora span { font-weight: 700; padding: 0 .05rem; }
.pv-hora-x { flex: 0 0 auto; border: 0; background: none; color: var(--gris-500, #9ca3af); font-size: 1.15rem; line-height: 1; padding: 0 .2rem; cursor: pointer; visibility: hidden; }
.pv-hora.con-valor .pv-hora-x { visibility: visible; } .pv-hora-x:hover { color: var(--rojo, #b91c1c); }
.pv-filtros > .btn { height: 2.45rem; white-space: nowrap; min-width: 0; padding-left: .4rem; padding-right: .4rem; }
@media (max-width: 760px) { .filtros.pv-filtros { grid-template-columns: 1fr 1fr; } }

.pv-filtros-c { container-type: inline-size; }
@container (max-width: 800px) { .filtros.pv-filtros.pv-filtros-consumos { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.pv-col-x { border: 0; background: none; color: inherit; opacity: .45; cursor: pointer; padding: 0 0 0 .25rem; font-size: 1rem; line-height: 1; }
.pv-col-x:hover { opacity: 1; color: var(--rojo, #b91c1c); }
.tabla th.pv-th-num, .tabla td.pv-th-num { width: 3rem; text-align: center; color: var(--gris-500, #6b7280); }
.pv-sel { width: 6.5rem; }
.pv-sel input[type=checkbox] { width: 1rem; height: 1rem; cursor: pointer; }
.pv-eliminar { display: inline-flex; align-items: center; gap: .5rem; margin-left: auto; font-size: .8rem; }
.pv-eliminar[hidden] { display: none; }
.pv-elim { padding: .8rem 1rem; margin-bottom: .6rem; }
.pv-elim-cab { display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
.pv-elim-cab .acciones { display: flex; gap: .4rem; }
.pv-elim details { margin-top: .4rem; }
/* Notificaciones: campanita con globo rojo y lista desplegable */
.nt { position: relative; }
.nt-btn { position: relative; padding: .3rem .5rem; }
.nt-btn svg { width: 1.05rem; height: 1.05rem; }
.nt-globo { position: absolute; top: -.45rem; right: -.45rem; min-width: 1.15rem; height: 1.15rem; padding: 0 .3rem; border-radius: 999px; background: #DC2626; color: #fff; font-size: .68rem; font-weight: 700; line-height: 1.15rem; text-align: center; box-shadow: 0 0 0 2px #fff; }
.nt-panel { position: absolute; right: 0; top: calc(100% + .45rem); width: 22rem; max-height: 70vh; overflow: auto; background: #fff; border: 1px solid var(--borde, #e5e7eb); border-radius: 12px; box-shadow: 0 12px 32px rgba(0,0,0,.14); z-index: 80; padding: .35rem; text-align: left; }
.nt-cab { display: flex; justify-content: space-between; align-items: center; padding: .35rem .5rem; }
.nt-link { border: 0; background: none; color: var(--rojo, #b91c1c); font-size: .75rem; cursor: pointer; }
.nt-sec { font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--gris-500, #6b7280); padding: .45rem .5rem .2rem; }
.nt-item, .nt-fila { display: flex; gap: .55rem; align-items: flex-start; padding: .45rem .5rem; border-radius: 8px; color: inherit; text-decoration: none; }
.nt-item:hover { background: var(--gris-50, #f9fafb); }
.nt-item svg, .nt-fila svg { width: 1rem; height: 1rem; flex: 0 0 auto; margin-top: .15rem; color: var(--gris-500, #6b7280); }
.nt-pend svg { color: #DC2626; }
.nt-item span, .nt-fila span:first-of-type { display: flex; flex-direction: column; min-width: 0; font-size: .8rem; }
.nt-item small, .nt-fila small { color: var(--gris-500, #6b7280); font-size: .72rem; line-height: 1.3; }
.nt-vacio { padding: .8rem .5rem; font-size: .8rem; color: var(--gris-500, #6b7280); }
.nt-todas { display: block; text-align: center; font-size: .78rem; padding: .45rem; border-top: 1px solid var(--borde, #e5e7eb); margin-top: .3rem; }
.nt-lista { display: flex; flex-direction: column; gap: .4rem; }
.nt-fila { align-items: center; padding: .6rem .8rem; margin: 0; }
.nt-fila span:first-of-type { flex: 1; }
.nt-ir { font-size: .78rem; color: var(--rojo, #b91c1c); white-space: nowrap; }
.nt-leida { opacity: .6; }
/* Configuración del comedor */
.pv-config .tarjeta { margin-bottom: .9rem; }
.pv-campo-medio { max-width: 34rem; }
.pv-campo-num { max-width: 9rem; }
.pv-num { width: 6.5rem !important; }
.pv-switch { display: flex; gap: .6rem; align-items: flex-start; cursor: pointer; margin: .2rem 0 .6rem; }
.pv-switch input { margin-top: .2rem; width: 1.05rem; height: 1.05rem; }
.pv-switch span { display: flex; flex-direction: column; } .pv-switch small { color: var(--gris-500, #6b7280); font-size: .76rem; }
.pv-sin-horarios { display: flex; align-items: flex-end; gap: .8rem; }
.pv-sin-horarios[hidden] { display: none; }
.pv-sub { margin: .4rem 0 .5rem; font-size: .9rem; }
.pv-horarios th { white-space: normal; }
.pv-horarios td { vertical-align: top; }
.pv-horarios input[type=text] { width: 100%; min-width: 9rem; }
.pv-horarios .pv-hora { width: 7.5rem; font-size: .9rem; }
.pv-horarios td:nth-child(2), .pv-horarios td:nth-child(3) { width: 8.5rem; }
.pv-medianoche { display: block; color: var(--ambar, #b45309); font-size: .7rem; margin-top: .2rem; }
.pv-medianoche[hidden] { display: none; }
.pv-plat-cab { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; }
.pv-plat-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .6rem; margin-top: .4rem; }
.pv-plat { display: flex; align-items: center; gap: .55rem; border: 1px solid var(--borde, #e5e7eb); border-radius: 10px; padding: .45rem .55rem; background: #fff; }
.pv-plat-img { width: 2.6rem; height: 2.6rem; flex: 0 0 auto; display: flex; align-items: center; justify-content: center; }
.pv-plat-img img { max-width: 100%; max-height: 100%; object-fit: cover; border-radius: 6px; }
.pv-plat-txt { display: flex; flex-direction: column; flex: 1; min-width: 0; font-size: .8rem; } .pv-plat-txt span { color: var(--gris-500, #6b7280); }
.pv-plat-acc { display: flex; gap: .1rem; }
.menu-item.menu-solo { position: relative; }
.menu-globo { position: static; margin-left: auto; box-shadow: none; }
html.menu-colapsado .menu-globo { position: absolute; top: .15rem; right: .35rem; margin: 0; box-shadow: 0 0 0 2px #fff; }
.nt-cuenta { display: inline-block; min-width: 1.1rem; padding: 0 .3rem; margin-left: .3rem; border-radius: 999px; background: #DC2626; color: #fff; font-size: .68rem; font-weight: 700; line-height: 1.1rem; text-align: center; }
.pv-guardar-cfg { margin: .9rem 0 0; }
.pv-sorteo { border: 0; padding: 0; margin: .4rem 0 0; min-width: 0; }
.pv-sorteo[hidden] { display: none; }
.pv-so-fila { display: flex; flex-wrap: wrap; gap: .8rem 1.6rem; align-items: flex-end; margin-bottom: .6rem; }
.pv-so-fila[hidden] { display: none; }
.pv-opciones { display: flex; flex-wrap: wrap; gap: .3rem .9rem; font-size: .86rem; }
.pv-opciones label { display: inline-flex; align-items: center; gap: .3rem; cursor: pointer; font-weight: 500; }
.pv-opciones label.deshabilitado { opacity: .5; cursor: default; }
.pv-hms { width: 9.5rem; }
.pv-solo-gan { display: inline-flex; align-items: center; gap: .35rem; font-size: .82rem; font-weight: 600; white-space: nowrap; cursor: pointer; padding: .1rem .55rem; border: 1px solid #F59E0B; border-radius: 999px; background: #FFFBEB; }
.pv-chip-gan { background: #FEF3C7 !important; border-color: #F59E0B !important; }
.tabla tr.pv-fila-gan td { background: #FFFBEB; }
.pv-so-pasos { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: .8rem 1.4rem; margin: .4rem 0 .6rem; }
.pv-so-paso { display: flex; gap: .55rem; align-items: flex-start; }
.pv-so-n { flex: 0 0 auto; width: 1.4rem; height: 1.4rem; border-radius: 50%; background: var(--rojo, #b91c1c); color: #fff; font-size: .75rem; font-weight: 700; display: grid; place-items: center; margin-top: .05rem; }
.pv-so-tit { display: block; font-weight: 700; font-size: .85rem; margin-bottom: .3rem; }
.pv-so-cant { display: flex; flex-wrap: wrap; gap: .4rem .8rem; }
.pv-so-c { display: inline-flex; align-items: center; gap: .4rem; font-size: .82rem; }
.pv-so-c .pv-num { width: 4.6rem !important; }
.pv-so-int { display: flex; flex-wrap: wrap; gap: .6rem 1rem; margin-top: .5rem; }
.pv-so-int[hidden] { display: none; }
.pv-so-tabla input[type=text] { width: 100%; }
.pv-so-tabla { table-layout: fixed; width: 100%; }
.pv-so-tabla th, .pv-so-tabla td { vertical-align: middle; }
.pv-so-tabla .so-c-h { width: 9rem; }
.pv-so-tabla .so-c-n { width: 6.5rem; text-align: left; }
.pv-so-tabla .so-c-m { width: 13rem; }
.pv-so-tabla th small { font-weight: 500; text-transform: none; letter-spacing: 0; color: var(--gris-500, #6b7280); }
.pv-so-tabla input[type=text] { width: 100%; }
.pv-so-tabla .so-c-m .pv-num { width: 8rem !important; }
.pv-so-tabla .pv-hms { width: 11rem; }
.pv-so-hoy { margin: .8rem 0 0; padding: .5rem .7rem; background: #FFFBEB; border: 1px solid #FDE68A; border-radius: 8px; font-size: .82rem; }
.pv-so-pasos-4 { grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); }
.pv-so-fecha { width: 11rem; height: 2.3rem; }
.pv-conf-imp { margin: .3rem 0 .3rem 1.1rem; padding: 0; } .pv-conf-imp li { margin: .1rem 0; }

/* Gastos: secciones que se contraen */
.g-plegar { background: none; border: 1px solid var(--borde, #E5E7EB); border-radius: 7px; width: 1.6rem; height: 1.6rem; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; color: var(--texto-2, #4B5563); flex: none; }
.g-plegar .ico { width: 1rem; height: 1rem; transition: transform .15s; transform: rotate(180deg); }
.g-sec [data-plegar].g-tit { user-select: none; }
.g-sec.g-plegada > :not(.g-enc) { display: none !important; }
.g-sec.g-plegada .g-enc { margin-bottom: 0; }
.g-sec.g-plegada .g-plegar .ico { transform: none; }
.g-sec.g-plegada .g-enc-der { display: none; }
/* Plegables (todo el sistema): sin flecha junto al título; la barrita (gris pizarra) siempre va ABAJO de la sección.
   Contraída: flecha hacia abajo, clic en cualquier parte despliega. Desplegada: flecha hacia arriba, clic en la barrita contrae. */
:root { --plg: #64748B; --plg-osc: #334155; --plg-linea: rgba(100,116,139,.55); --plg-fondo: rgba(100,116,139,.08); --plg-fondo-osc: rgba(100,116,139,.16); }
.g-plegar { display: none !important; }
details.plegable > summary::before { display: none; }
.g-sec, details.plegable { position: relative; padding-bottom: 1.7rem !important; }
.g-sec.g-plegada, details.plegable:not([open]) { cursor: pointer; overflow: hidden; }
.g-sec::after, details.plegable::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1.25rem; pointer-events: none; border-radius: 0 0 var(--radio) var(--radio);
  background: linear-gradient(to bottom, rgba(100,116,139,0), var(--plg-fondo)); border-bottom: 3px solid var(--plg-linea); transition: background .15s, border-color .15s; }
.g-sec::before, details.plegable::before { content: ""; position: absolute; left: 50%; bottom: 0; transform: translateX(-50%); width: 2.4rem; height: 1rem; z-index: 1; pointer-events: none;
  border-radius: 8px 8px 0 0; background: var(--plg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 15l6-6 6 6'/%3E%3C/svg%3E") center / .95rem no-repeat; transition: height .15s, background-color .15s; }
.g-sec.g-plegada::before, details.plegable:not([open])::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); }
.g-sec.g-plegada:hover::after, details.plegable:not([open]):hover::after, .g-sec.g-abajo::after, details.plegable.g-abajo::after { background: linear-gradient(to bottom, rgba(100,116,139,0), var(--plg-fondo-osc)); border-color: var(--plg-osc); }
.g-sec.g-plegada:hover::before, details.plegable:not([open]):hover::before, .g-sec.g-abajo::before, details.plegable.g-abajo::before { height: 1.2rem; background-color: var(--plg-osc); }
.g-sec.g-abajo, details.plegable.g-abajo { cursor: pointer; }
@media print { .g-sec::after, .g-sec::before, details.plegable::after, details.plegable::before { display: none; } }

/* Gastos: filtros del mismo ancho (Buscar un poco más ancho) */
@media (min-width: 1100px) {
  .filtros-env.filtros-gas .campo, .filtros-env.filtros-gas .campo.campo-periodo, .filtros-env.filtros-gas .campo.campo-oc,
  .filtros-env.filtros-gas:has(.campo[data-si-periodo]:not([hidden])) .campo { flex: 1 1 0 !important; min-width: 0; }
  .filtros-env.filtros-gas .campo.campo-buscar { flex: 1.5 1 0 !important; }
}

/* Consumo real: mismo naranja que su estatus en la tabla */
.btn-real { background: #FED7AA; color: #9A3412; border: 1px solid #FDBA74; font-weight: 700; }
.btn-real:hover { background: #FDBA74; color: #7C2D12; }
.filtros-cr .campo { flex: 0 1 14rem; }

/* Encabezado con título a la izquierda y botones al centro (p. ej. Registro de Servicio) */
@media (min-width: 900px) { .encabezado.enc-centro { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; }
  .encabezado.enc-centro > .acciones { justify-content: center; } }

/* Nómina: trabajadores que cubre una factura de excedente */
.nom-exc summary { cursor: pointer; font-size: .82rem; color: var(--texto-2, #4B5563); margin-top: .2rem; }
.nom-exc ul { list-style: none; margin: .35rem 0; padding: 0; max-height: 16rem; overflow: auto; font-size: .82rem; }
.nom-exc li { display: grid; grid-template-columns: 1fr auto auto; gap: .6rem; padding: .15rem 0; border-bottom: 1px solid #F3F4F6; }

.tabla-env td.folio-largo { white-space: nowrap; font-size: .76rem; padding-right: 1rem; }

/* Nómina: un pago (mismo comprobante) con varias personas */
.fila-pago-nom td { background: #F8FAFC; border-top: 2px solid #E2E8F0; }
.btn-pago-nom { background: none; border: 0; padding: 0; display: inline-flex; align-items: center; gap: .4rem; cursor: pointer; font: inherit; color: var(--rojo-osc, #8B0D22); }
.btn-pago-nom .ico { width: 1rem; height: 1rem; transform: rotate(-90deg); transition: transform .15s; }
.fila-pago-nom.abierto .btn-pago-nom .ico { transform: none; }
.fila-pago-hijo td:nth-child(2) { padding-left: 1.4rem; }

/* Excedente: cómo se pagó y personas */
.exc-forma .exc-modo, .exc-forma .exc-personas { grid-column: 1 / -1; }
.exc-personas .tabla select, .exc-personas .tabla input { width: 100%; }

.exc-tabla-personas { table-layout: fixed; width: 100%; }

.nom-exc-acc { display: flex; flex-wrap: wrap; gap: .25rem .8rem; margin-top: .25rem; font-size: .8rem; align-items: center; }
.nom-exc-acc form { margin: 0; display: inline; } .nom-exc-acc .btn-enlace { padding: 0; font-size: .8rem; }
/* Bancos › encender: cuentas y saldo inicial */
.act-bancos { table-layout: fixed; width: 100%; }
.act-bancos input:not([type=checkbox]), .act-bancos select { width: 100%; }
.act-bancos tr.fila-inactiva td { color: var(--gris-500, #98A2B3); }
/* Producción pendiente / centro bloqueado: ventana emergente con alarma */
.traba-fondo { position: fixed; inset: 0; z-index: 3000; background: rgba(30, 10, 10, .62); display: flex; align-items: center; justify-content: center; padding: 1rem; backdrop-filter: blur(2px); }
.traba-caja { background: #fff; width: 100%; max-width: 560px; max-height: 92vh; overflow: auto; border-radius: 16px; border-top: 8px solid var(--error, #B42318); box-shadow: 0 24px 60px rgba(0,0,0,.35); padding: 2rem 2rem 1.6rem; text-align: center; }
.traba-ico { width: 112px; height: 112px; margin: 0 auto 1rem; border-radius: 50%; background: #FEE4E2; color: var(--error, #B42318); display: flex; align-items: center; justify-content: center; animation: traba-pulso 1.6s ease-in-out infinite; }
@keyframes traba-pulso { 0%, 100% { box-shadow: 0 0 0 0 rgba(180, 35, 24, .35); } 50% { box-shadow: 0 0 0 14px rgba(180, 35, 24, 0); } }
.traba-caja h2 { margin: 0 0 .8rem; font-size: 1.55rem; color: var(--error, #B42318); }
.traba-caja h3 { margin: .2rem 0 .3rem; font-size: 1.05rem; }
.traba-caja p { margin: 0 0 .8rem; font-size: 1.02rem; line-height: 1.45; color: #3A2A2A; }
.traba-centro + .traba-centro { border-top: 1px solid #EEE3E1; margin-top: 1rem; padding-top: 1rem; }
.traba-dias { list-style: none; margin: 0 0 1rem; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; justify-content: center; }
.traba-dias li { background: #FEF3F2; color: #912018; border: 1px solid #FDA29B; border-radius: 999px; padding: .25rem .7rem; font-size: .88rem; font-weight: 600; }
.traba-ir { display: inline-flex; justify-content: center; min-width: 220px; font-size: 1rem; padding: .7rem 1.4rem; }
.traba-pie { margin-top: 1.2rem; display: flex; justify-content: center; }
.traba-nota { margin: 1rem 0 0 !important; font-size: .9rem !important; color: #6B5858 !important; }
.traba-caja.conf-normal { border-top-color: #16794A; }
.traba-ico.conf-ico { background: #E7F6EE; color: #16794A; animation: none; }
.conf-normal h2 { color: #1F2A24; }
.conf-pie { gap: .6rem; }
.conf-pie .btn { min-width: 150px; justify-content: center; }
.prod-kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 1rem; }
@media (max-width: 800px) { .prod-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* Control de usuarios › Módulos del sistema */
.mod-sis { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
@media (max-width: 900px) { .mod-sis { grid-template-columns: 1fr; } }
.mod-sis-card { display: flex; flex-direction: column; gap: .6rem; }
.mod-sis-enc { display: flex; align-items: center; justify-content: space-between; gap: .8rem; }
.mod-sis-enc h2 { margin: 0; display: flex; align-items: center; gap: .5rem; }
.mod-sis-estado { font-size: .85rem; font-weight: 700; padding: .25rem .8rem; border-radius: 999px; background: #F2F4F7; color: #475467; }
.mod-sis-estado.on { background: #E7F6EE; color: #16794A; }
.mod-sis-lista { margin: 0; padding-left: 1.1rem; display: flex; flex-direction: column; gap: .35rem; color: #475467; font-size: .93rem; }
.mod-sis-pie { margin-top: auto; padding-top: .6rem; display: flex; justify-content: flex-end; }
.mod-sis > .tarjeta { margin: 0; }
.kpi-liga { text-decoration: none; color: inherit; cursor: pointer; }
.kpi-liga:hover { box-shadow: 0 0 0 2px var(--error, #B42318) inset; }
/* Encabezados limpios: sin leyendas explicativas (solo el dato, si lo hay: fecha, semana, centro…) y botones centrados */
.encabezado > div:first-child > p:not(.enc-dato) { display: none; }
@media (min-width: 900px) {
  .encabezado:has(> .acciones):not(.encabezado-oc):not(.encabezado-envio) { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; }
  .encabezado:has(> .acciones):not(.encabezado-oc):not(.encabezado-envio) > .acciones { justify-content: center; }
}
/* ───── Inicio · tablero de dirección ───── */
.tb { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.tb-comidas { grid-column: 1 / -1; }
@media (max-width: 1000px) { .tb { grid-template-columns: 1fr; } }
.tb > .tarjeta { margin: 0; }
.tb-card { display: flex; flex-direction: column; gap: .9rem; }
.tb-enc { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.tb-enc h2 { margin: 0; font-size: 1.1rem; display: flex; align-items: center; gap: .45rem; }
.tb-enc-2 { margin-top: .6rem; padding-top: .9rem; border-top: 1px solid #EEE3E1; }
.tb-sub { font-size: .85rem; color: #6B5858; font-weight: 600; }
.tb-liga { text-decoration: none; color: var(--primario, #B42318); }
.tb-liga:hover { text-decoration: underline; }
.tb-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .7rem; }
.tb-kpis-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 700px) { .tb-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.tb-kpi { background: #FBF7F5; border: 1px solid #F0E4E1; border-radius: 12px; padding: .7rem .9rem; }
.tb-kpi-hoy { background: linear-gradient(135deg, #B42318, #D9442F); border-color: transparent; color: #fff; }
.tb-kpi-hoy .tb-kpi-lbl { color: #FFE4DE; }
.tb-kpi-lbl { font-size: .78rem; font-weight: 600; color: #7A6464; text-transform: uppercase; letter-spacing: .03em; display: flex; align-items: center; gap: .35rem; }
.tb-kpi-num { font-size: 1.7rem; font-weight: 800; line-height: 1.15; margin-top: .15rem; font-variant-numeric: tabular-nums; }
.tb-grande { font-size: 2rem; margin: 0; }
.tb-vivo { width: .55rem; height: .55rem; border-radius: 50%; background: #fff; box-shadow: 0 0 0 0 rgba(255,255,255,.7); animation: tb-pulso 1.6s infinite; }
@keyframes tb-pulso { 0% { box-shadow: 0 0 0 0 rgba(255,255,255,.7); } 70% { box-shadow: 0 0 0 .45rem rgba(255,255,255,0); } 100% { box-shadow: 0 0 0 0 rgba(255,255,255,0); } }
.tb-tabla { width: 100%; border-collapse: collapse; font-size: .92rem; }
.tb-tabla th { text-align: left; font-size: .75rem; color: #7A6464; text-transform: uppercase; letter-spacing: .04em; padding: .35rem .5rem; border-bottom: 1px solid #EEE3E1; }
.tb-tabla td { padding: .45rem .5rem; border-bottom: 1px solid #F5EDEB; font-variant-numeric: tabular-nums; }
.tb-tabla .num { text-align: right; }
.tb-tabla .tb-hoy { color: #B42318; font-weight: 700; }
.tb-col-barra { width: 28%; }
.tb-fuente { display: inline-block; margin-left: .45rem; font-size: .7rem; color: #8A7676; background: #F4EEEC; border-radius: 999px; padding: .05rem .45rem; }
.tb-barra { display: block; height: .55rem; background: #F2E9E7; border-radius: 999px; overflow: hidden; width: 100%; }
.tb-barra > span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, #E8735F, #B42318); }
.tb-barra-verde > span { background: linear-gradient(90deg, #4CC38A, #16794A); }
.tb-barra-ambar > span { background: linear-gradient(90deg, #F5C451, #D18B0B); }
.tb-barra-rojo > span { background: linear-gradient(90deg, #F08A7A, #B42318); }
.tb-rank, .tb-pres-lista { display: flex; flex-direction: column; gap: .2rem; }
.tb-rank-fila, .tb-pres-fila { display: grid; grid-template-columns: 1.6rem minmax(0, 8rem) 1fr 3.6rem 5.2rem; align-items: center; gap: .55rem; padding: .35rem .3rem; border-radius: 8px; color: inherit; text-decoration: none; font-size: .9rem; }
.tb-pres-fila { grid-template-columns: minmax(0, 8rem) 1fr 3rem 8.5rem; }
.tb-rank-fila:hover { background: #FBF4F2; }
.tb-rank-pos { width: 1.5rem; height: 1.5rem; border-radius: 50%; background: #F4EEEC; display: inline-flex; align-items: center; justify-content: center; font-size: .78rem; font-weight: 700; color: #6B5858; }
.tb-rank-fila:nth-child(1) .tb-rank-pos { background: #F5C451; color: #5A3E00; }
.tb-rank-fila:nth-child(2) .tb-rank-pos { background: #D9D9DE; color: #3A3A40; }
.tb-rank-fila:nth-child(3) .tb-rank-pos { background: #E3B08A; color: #4A2A10; }
.tb-rank-nom { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tb-rank-barra { height: .7rem; background: #F2E9E7; border-radius: 999px; overflow: hidden; }
.tb-rank-barra > span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, #4CC38A, #16794A); }
.tb-rank-barra > span.neg { background: linear-gradient(90deg, #F08A7A, #B42318); }
.tb-rank-pct { text-align: right; font-weight: 800; font-variant-numeric: tabular-nums; }
.tb-rank-ut { text-align: right; font-size: .8rem; color: #6B5858; font-variant-numeric: tabular-nums; white-space: nowrap; }
.tb-pres-total { display: flex; align-items: center; gap: 1.2rem; }
.tb-dona { --pct: 0; --c: #16794A; width: 7.5rem; height: 7.5rem; flex: none; border-radius: 50%; background: conic-gradient(var(--c) calc(var(--pct) * 1%), #F2E9E7 0); display: flex; align-items: center; justify-content: center; position: relative; }
.tb-dona::after { content: ''; position: absolute; inset: .9rem; border-radius: 50%; background: #fff; }
.tb-dona > span { position: relative; z-index: 1; font-size: 1.45rem; font-weight: 800; }
.tb-dona[data-color="ambar"] { --c: #D18B0B; } .tb-dona[data-color="rojo"] { --c: #B42318; } .tb-dona[data-color="gris"] { --c: #C9BDBA; }
.tb-pres-cifras { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .6rem; flex: 1; }
.tb-pres-cifras > div { display: flex; flex-direction: column; gap: .1rem; }
.tb-pres-cifras strong { font-size: 1.15rem; font-variant-numeric: tabular-nums; }
.tb-apilada { display: flex; height: 1.1rem; border-radius: 999px; overflow: hidden; background: #F2E9E7; }
.tb-apilada > span { height: 100%; }
.tb-apilada .az, .tb-leyenda i.az { background: #2E6BD8; } .tb-apilada .na, .tb-leyenda i.na { background: #E8892B; }
.tb-apilada .ro, .tb-leyenda i.ro { background: #B42318; } .tb-apilada .gr, .tb-leyenda i.gr { background: #A9B2C0; } .tb-leyenda i.ve { background: #16794A; }
.tb-leyenda { display: flex; flex-wrap: wrap; gap: .4rem 1.1rem; font-size: .85rem; color: #4A3A3A; }
.tb-leyenda span { display: inline-flex; align-items: center; gap: .35rem; }
.tb-leyenda i { width: .7rem; height: .7rem; border-radius: 3px; display: inline-block; }
.tb-vacio { color: #8A7676; font-size: .9rem; margin: .4rem 0; }
/* tablero personalizable: tamaños, listas largas, tareas, configuración */
.tb-grande { grid-column: 1 / -1; } .tb-chico { grid-column: span 1; }
.tb-scroll { max-height: 22rem; overflow-y: auto; }
.tb-buscar { width: 100%; padding: .45rem .7rem; border: 1px solid #E6DAD7; border-radius: 8px; font: inherit; }
.tb-tabla thead th { position: sticky; top: 0; background: #fff; z-index: 1; }
.tb-tabla th[data-orden] { cursor: pointer; user-select: none; } .tb-tabla th[data-dir="asc"]::after { content: ' ▲'; } .tb-tabla th[data-dir="desc"]::after { content: ' ▼'; }
.tb-tabs { display: flex; gap: .3rem; background: #F6EFED; padding: .25rem; border-radius: 10px; width: fit-content; }
.tb-tabs button { border: 0; background: transparent; padding: .3rem .8rem; border-radius: 8px; font: inherit; font-size: .85rem; font-weight: 600; color: #6B5858; cursor: pointer; }
.tb-tabs button.on { background: #fff; color: #B42318; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.tb-apilada .ve { background: #16794A; }
.tb-apilada-chica { height: .7rem; }
.tb-pagar .tb-kpi-num { font-size: 2rem; } .tb-pagar-det { font-size: .82rem; color: #FFE4DE; margin-top: .2rem; }
.tb-fila-total { display: flex; justify-content: space-between; align-items: baseline; font-size: .9rem; color: #4A3A3A; } .tb-fila-total strong { font-size: 1.15rem; }
.tb-lista { display: flex; flex-direction: column; } .tb-lista a { display: flex; justify-content: space-between; gap: .6rem; padding: .45rem .3rem; border-bottom: 1px solid #F5EDEB; color: inherit; text-decoration: none; font-size: .9rem; }
.tb-lista a:hover { background: #FBF4F2; } .tb-lista a span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tb-ok { color: #16794A; font-weight: 600; display: flex; align-items: center; gap: .4rem; margin: .3rem 0; }
.tb-cifra-liga { display: flex; align-items: baseline; gap: .6rem; color: inherit; text-decoration: none; } .tb-cifra-liga:hover span:last-child { text-decoration: underline; }
.tb-tareas { display: flex; flex-direction: column; gap: .35rem; max-height: 16rem; overflow-y: auto; }
.tb-tarea { display: grid; grid-template-columns: auto 1fr auto; gap: .6rem; align-items: center; padding: .45rem .5rem; border: 1px solid #F0E4E1; border-radius: 10px; }
.tb-tarea.vencida { border-color: #FDA29B; background: #FEF3F2; } .tb-tarea.vencida .tb-tarea-cuando { color: #B42318; font-weight: 700; }
.tb-tarea form { margin: 0; }
.tb-check { width: 1.7rem; height: 1.7rem; border-radius: 50%; border: 2px solid #C9BDBA; background: #fff; color: transparent; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; }
.tb-check:hover { border-color: #16794A; color: #16794A; } .tb-check .ico { width: 1rem; height: 1rem; }
.tb-tarea-txt { display: flex; flex-direction: column; min-width: 0; } .tb-tarea-txt span { font-size: .82rem; color: #6B5858; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tb-tarea-cuando { font-size: .82rem; color: #6B5858; white-space: nowrap; font-variant-numeric: tabular-nums; }
.tb-tarea-nueva { display: grid; grid-template-columns: 1fr 1fr; gap: .4rem; }
.tb-tarea-nueva input { padding: .4rem .55rem; border: 1px solid #E6DAD7; border-radius: 8px; font: inherit; font-size: .88rem; min-width: 0; }
.tb-tarea-nueva button { grid-column: 1 / -1; justify-self: end; }
/* accesos rápidos: íconos tipo celular, se agregan, se quitan (×) y se acomodan arrastrando */
.tb-apps { display: grid; grid-template-columns: repeat(auto-fill, minmax(6.2rem, 1fr)); gap: .9rem .5rem; }
.tb-app { position: relative; display: flex; flex-direction: column; align-items: center; min-width: 0; border: 0; background: none; padding: 0; font: inherit; cursor: pointer; }
.tb-app a { display: flex; flex-direction: column; align-items: center; gap: .3rem; width: 100%; color: inherit; text-decoration: none; padding: .2rem 0; }
.tb-app-ico { width: 3.4rem; height: 3.4rem; border-radius: 16px; background: #FBF1EF; border: 1px solid #F0E0DC; color: #8F1D1A; display: flex; align-items: center; justify-content: center; transition: transform .12s, box-shadow .12s; }
.tb-app-ico .icono { width: 1.6rem; height: 1.6rem; }
.tb-app:hover .tb-app-ico { transform: translateY(-2px); box-shadow: 0 6px 14px rgba(143,29,26,.15); border-color: #B42318; }
.tb-app-nom { font-size: .8rem; font-weight: 600; line-height: 1.15; text-align: center; max-width: 100%; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.tb-app-gr { font-size: .66rem; color: #8A7676; text-align: center; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-top: -.15rem; }
.tb-app-quitar { position: absolute; top: -.35rem; left: calc(50% - 2.1rem); width: 1.3rem; height: 1.3rem; border-radius: 50%; border: 0; background: #6B5858; color: #fff; font-size: .9rem; line-height: 1; cursor: pointer; display: none; align-items: center; justify-content: center; padding: 0; }
.tb-app:hover .tb-app-quitar { display: flex; } .tb-app-quitar:hover { background: #B42318; }
@media (hover: none) { .tb-app-quitar { display: flex; } }
.tb-app.arrastrando { opacity: .35; }
.tb-app-mas .tb-app-ico { background: #fff; border: 2px dashed #D9C6C2; color: #B42318; }
.tb-app-mas .tb-app-nom { color: #B42318; }
.tb-acc-lista { max-height: 55vh; overflow-y: auto; margin: .6rem 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .8rem 1.2rem; align-items: start; }
.tb-acc-grupo-tit { display: flex; align-items: center; gap: .35rem; font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: #8F1D1A; margin-bottom: .25rem; }
.tb-acc-grupo-tit .icono { width: 1rem; height: 1rem; }
.tb-acc-op { display: flex; padding: .25rem .2rem; font-size: .9rem; }
.tb-cfg { display: flex; flex-direction: column; gap: .3rem; margin: .8rem 0; max-height: 60vh; overflow-y: auto; }
.tb-cfg-fila { display: grid; grid-template-columns: 1fr 7rem auto auto; gap: .5rem; align-items: center; padding: .4rem .5rem; border: 1px solid #F0E4E1; border-radius: 8px; }
/* aviso de tarea (cualquier pantalla) */
.tarea-aviso { position: fixed; right: 1.2rem; bottom: 5.2rem; z-index: 2900; width: min(24rem, calc(100vw - 2rem)); background: #fff; border-radius: 14px; border-left: 6px solid #B42318; box-shadow: 0 18px 50px rgba(0,0,0,.28); padding: 1rem 1.1rem; animation: tarea-entra .35s ease-out; }
@keyframes tarea-entra { from { transform: translateY(1.5rem); opacity: 0; } to { transform: none; opacity: 1; } }
.tarea-aviso h3 { margin: 0 0 .2rem; font-size: 1rem; display: flex; align-items: center; gap: .4rem; color: #B42318; }
.tarea-aviso p { margin: 0 0 .7rem; font-size: .9rem; color: #3A2A2A; } .tarea-aviso .cuando { font-size: .8rem; color: #6B5858; }
.tarea-aviso .bt { display: flex; gap: .4rem; flex-wrap: wrap; justify-content: flex-end; }
/* Mis tareas: captura en una sola fila arriba (tarea · descripción · fecha · hora · Agregar) y la lista abajo; en tarjeta angosta se acomoda en dos */
.tb-tarea-nueva { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.tb-tarea-nueva [name=titulo] { flex: 1 1 7rem; } .tb-tarea-nueva [name=descripcion] { flex: 2 1 11rem; }
.tb-tarea-nueva [name=fecha] { flex: 0 0 9.5rem; } .tb-tarea-nueva [name=hora] { flex: 0 0 8.2rem; }
.tb-tarea-nueva button { flex: 0 0 auto; white-space: nowrap; }
.tb-tareas { max-height: 22rem; }
/* ───── Chat interno ───── */
.btn-chat { position: relative; display: inline-flex; align-items: center; gap: .3rem; }
.chat-badge { position: absolute; top: -.45rem; right: -.45rem; min-width: 1.15rem; height: 1.15rem; padding: 0 .3rem; border-radius: 999px; background: #B42318; color: #fff; font-size: .7rem; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.chat-contactos { display: flex; flex-direction: column; gap: .6rem; padding: .8rem 1rem; flex: 1; min-height: 0; }
.chat-buscar { width: 100%; padding: .5rem .7rem; border: 1px solid #E6DAD7; border-radius: 8px; font: inherit; }
.chat-lista { overflow-y: auto; display: flex; flex-direction: column; gap: .15rem; }
.chat-contacto { display: flex; align-items: center; gap: .6rem; padding: .55rem .6rem; border: 0; background: transparent; border-radius: 8px; font: inherit; text-align: left; cursor: pointer; }
.chat-contacto:hover { background: #FBF4F2; }
.chat-nom { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-n { min-width: 1.3rem; height: 1.3rem; border-radius: 999px; background: #B42318; color: #fff; font-size: .75rem; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; padding: 0 .35rem; }
.chat-punto { width: .7rem; height: .7rem; border-radius: 50%; flex: none; display: inline-block; }
.chat-punto.on { background: #12B76A; box-shadow: 0 0 0 3px #D1FADF; } .chat-punto.off { background: #D92D20; box-shadow: 0 0 0 3px #FEE4E2; }
.chat-conv { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.chat-mensajes { flex: 1; overflow-y: auto; padding: 1rem; display: flex; flex-direction: column; gap: .5rem; background: #FBF8F7; }
.chat-msg { display: flex; flex-direction: column; max-width: 82%; } .chat-msg.mio { align-self: flex-end; align-items: flex-end; } .chat-msg.otro { align-self: flex-start; }
.chat-burbuja { padding: .5rem .75rem; border-radius: 14px; font-size: .92rem; line-height: 1.35; word-wrap: break-word; }
.chat-msg.mio .chat-burbuja { background: #B42318; color: #fff; border-bottom-right-radius: 4px; } .chat-msg.otro .chat-burbuja { background: #fff; border: 1px solid #EEE3E1; border-bottom-left-radius: 4px; }
.chat-hora { font-size: .7rem; color: #8A7676; margin-top: .15rem; }
.chat-escribir { display: flex; gap: .5rem; padding: .7rem; border-top: 1px solid #EEE3E1; align-items: flex-end; }
.chat-escribir textarea { flex: 1; resize: none; padding: .5rem .6rem; border: 1px solid #E6DAD7; border-radius: 8px; font: inherit; }
/* .chat-aviso (ya no se usa) */ .chat-aviso-viejo { position: fixed; top: 4.5rem; right: 1.2rem; z-index: 2850; background: #fff; border-left: 5px solid #B42318; border-radius: 10px; box-shadow: 0 10px 30px rgba(0,0,0,.2); padding: .7rem 1rem; cursor: pointer; font-weight: 600; animation: tarea-entra .3s ease-out; }
.chat-sonidos { display: flex; flex-direction: column; gap: .45rem; padding: .8rem 1rem; border-bottom: 1px solid #EEE3E1; background: #FBF8F7; }
.chat-son-fila { display: grid; grid-template-columns: 1fr 11rem auto; gap: .5rem; align-items: center; font-size: .9rem; }
.chat-son-fila select { padding: .3rem .4rem; border: 1px solid #E6DAD7; border-radius: 6px; font: inherit; font-size: .85rem; }
.mod-son { display: flex; flex-direction: column; gap: .5rem; }

/* Chat fijo abajo a la derecha: botón con globo de no leídos; las conversaciones abiertas se minimizan a su izquierda y se hacen más chicas si no caben */
.chatd { position: fixed; right: 1rem; bottom: 1rem; z-index: 2800; }
.chatd-btn { position: relative; width: 3.4rem; height: 3.4rem; border-radius: 50%; border: 0; background: #B42318; color: #fff; box-shadow: 0 8px 24px rgba(180,35,24,.35); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.chatd-btn:hover { background: #8F1D1A; } .chatd-btn .icono { width: 1.6rem; height: 1.6rem; }
.chatd-badge { position: absolute; top: -.25rem; right: -.25rem; min-width: 1.35rem; height: 1.35rem; padding: 0 .35rem; border-radius: 999px; background: #fff; color: #B42318; border: 2px solid #B42318; font-size: .75rem; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; }
.chatd-panel { position: fixed; right: 1rem; bottom: 5.1rem; width: min(21rem, calc(100vw - 2rem)); height: min(30rem, calc(100vh - 7rem)); background: #fff; border-radius: 14px; box-shadow: 0 18px 50px rgba(0,0,0,.25); display: flex; flex-direction: column; gap: .5rem; padding: .7rem .8rem; }
.chatd-panel[hidden] { display: none; }
.chatd-enc { display: flex; align-items: center; gap: .4rem; padding: 0 .1rem; } .chatd-enc strong { font-size: 1.05rem; color: #8F1D1A; display: flex; align-items: center; gap: .45rem; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.chatd-x { border: 0; background: transparent; width: 1.8rem; height: 1.8rem; border-radius: 6px; font-size: 1.25rem; line-height: 1; color: #6B5858; cursor: pointer; flex: none; padding: 0; } .chatd-x:hover { background: #F6EFED; color: #B42318; }
.chatd-panel .chat-lista { flex: 1; min-height: 0; }
.chatd-fila { position: fixed; bottom: 1rem; right: 5.2rem; left: calc(var(--menu-ancho) + 1rem); display: flex; flex-direction: row-reverse; align-items: flex-end; gap: .4rem; pointer-events: none; }
.chatd-fila > * { pointer-events: auto; }
.chatd-pila { flex: 0 1 11rem; min-width: 2.4rem; height: 2.6rem; display: flex; align-items: center; gap: .35rem; padding: 0 .3rem 0 .6rem; background: #fff; border: 1px solid #E6DAD7; border-radius: 999px; box-shadow: 0 4px 14px rgba(0,0,0,.14); cursor: pointer; overflow: hidden; font: inherit; font-size: .85rem; font-weight: 600; }
.chatd-pila:hover { border-color: #B42318; }
.chatd-pila .chat-nom { min-width: 0; }
.chatd-pila .chatd-x { width: 1.4rem; height: 1.4rem; font-size: 1rem; }
.chatd-pila .chat-n { flex: none; }
.chatd-pila.nuevo { border-color: #B42318; animation: chatd-late 1.2s ease-in-out 3; }
@keyframes chatd-late { 50% { transform: translateY(-4px); } }
.chatd-ventana { flex: none; width: min(20rem, calc(100vw - 6.5rem)); height: min(26rem, calc(100vh - 6rem)); background: #fff; border-radius: 14px 14px 10px 10px; box-shadow: 0 18px 50px rgba(0,0,0,.25); display: flex; flex-direction: column; overflow: hidden; }
.chatd-ventana .chatd-enc { padding: .55rem .5rem .55rem .8rem; border-bottom: 1px solid #EEE3E1; background: #FBF4F2; }
.chatd-ventana .chat-mensajes { padding: .7rem; }
.chatd-ventana .chat-escribir { padding: .5rem; }
@media (max-width: 960px) { .chatd-fila { left: 1rem; } }
.chatd-nom-c { display: none; font-weight: 700; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chatd-mini .chatd-pila { padding: 0 .4rem; gap: .25rem; }
.chatd-mini .chatd-nom-l, .chatd-mini .chatd-pila .chatd-x { display: none; }
.chatd-mini .chatd-nom-c { display: inline; }

/* Gastos: proveedor exclusivo administración (sin centro de costo ni reparto) */
.g-excl .g-enc-der .casilla { display: none; }
/* OC recién generada, editada o cancelada: su fila se marca un momento al regresar a la lista */
tr.oc-resaltada > td { animation: oc-resalta 2.6s ease-out; }
@keyframes oc-resalta { 0%, 35% { background: #FEF3C7; } 100% { background: transparent; } }
/* lista buscable en columnas (semanas: número · fechas · estado) */
.buscable-op.buscable-cols { display: grid; grid-template-columns: 3rem 9.6rem 5.5rem; gap: .5rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.buscable-lista:has(.buscable-cols) { min-width: 19.5rem; }
.buscable-cols span:nth-child(3) { color: #8A7676; font-size: .82rem; }
/* proveedor: "Exclusivo administración" en la esquina superior derecha */
.prov-casilla { display: flex; align-items: center; min-height: 2.6rem; margin: 0; white-space: nowrap; }
.g-doc .g-monto { width: 100%; height: 2.3rem; text-align: right; }
@media (min-width: 900px) { .forma.prov-fila { grid-template-columns: repeat(3, minmax(0, 1fr)) auto auto; column-gap: 1.6rem; } }
/* RH › méritos */
.merito-n { min-width: 1.9rem; height: 1.9rem; padding: 0 .45rem; border-radius: 999px; border: 0; background: #FEF3C7; color: #92400E; font-weight: 800; cursor: pointer; }
.merito-n:hover { background: #FDE68A; }
.merito-alta { display: flex; gap: .6rem; max-width: 34rem; }
.merito-alta input { flex: 1; min-width: 0; }
.merito-lista { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .6rem; }
.merito-chip { display: inline-flex; align-items: center; gap: .35rem; padding: .25rem .3rem .25rem .7rem; border-radius: 999px; background: #FEF3C7; color: #92400E; font-weight: 700; font-size: .85rem; }
.merito-chip button { border: 0; background: transparent; color: #92400E; font-size: 1rem; line-height: 1; width: 1.3rem; height: 1.3rem; border-radius: 50%; cursor: pointer; padding: 0; }
.merito-chip button:hover { background: #FDE68A; }
/* Incidencias: semana / quincena a la izquierda y el periodo (de–a) a la derecha */
.barra-inc { display: flex; gap: 1rem 2rem; align-items: flex-end; justify-content: flex-start; flex-wrap: wrap; margin-bottom: 1rem; }
.periodo-inc .campo label { display: block; text-align: center; }
.periodo-inc select, .periodo-inc input[type=date] { text-align: center; text-align-last: center; }
.barra-inc > .filtros { margin-bottom: 0; flex-wrap: nowrap; flex: 0 0 auto; }
.barra-inc .nav-semana { flex-wrap: nowrap; }
@media (max-width: 900px) { .barra-inc > .filtros, .barra-inc .nav-semana { flex-wrap: wrap; } }
.periodo-inc { display: flex; gap: .6rem; align-items: flex-end; flex-wrap: wrap; }
.periodo-inc .campo { margin: 0; min-width: 0; } .periodo-inc select, .periodo-inc input[type=date] { height: 2.5rem; }
.periodo-inc .campo[hidden] { display: none; }
tr.fila-aniversario > td { background: #FFFBEB; }
.barra-inc .semana-txt .chico { white-space: nowrap; }
.tb-pend a { display: block; } .tb-pend a span { display: flex; flex-direction: column; white-space: normal !important; } .tb-pend small { color: #8A7676; font-size: .78rem; }
.tb-pend strong { color: #B42318; font-size: .9rem; }
/* aviso de "hay más columnas a la derecha" en tablas que no caben */
.tabla-mas { position: absolute; width: 28px; border: 0; padding: 0; cursor: pointer; z-index: 5; color: #fff; font-size: 1.5rem; font-weight: 800; line-height: 1;
  background: linear-gradient(to right, rgba(100,116,139,0), rgba(100,116,139,.85) 70%); border-radius: 0 10px 10px 0; display: flex; align-items: center; justify-content: flex-end; padding-right: 4px; }
.tabla-mas[hidden] { display: none; } .tabla-mas:hover { background: linear-gradient(to right, rgba(51,65,85,.15), #334155 70%); }
@media print { .tabla-mas { display: none !important; } }
.tb-cobrar { background: linear-gradient(135deg, #116A3E, #1E8A55); } .tb-cobrar .tb-kpi-lbl, .tb-cobrar .tb-pagar-det { color: #D7F5E4; }
.badge-prest { margin-top: .2rem; padding: .1rem .4rem; border-radius: 6px; background: #EEF2FF; color: #3730A3; font-weight: 700; white-space: nowrap; font-size: .72rem; }
/* RH › nombre que abre Editar; préstamos */
.liga-nombre { color: inherit; text-decoration: none; } .liga-nombre:hover strong { color: #B42318; text-decoration: underline; }
.prest-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 1.4rem; margin-top: .6rem; }
@media (max-width: 900px) { .prest-grid { grid-template-columns: 1fr; } }
.prest-reglas-tit { font-weight: 800; font-size: .8rem; text-transform: uppercase; letter-spacing: .03em; color: #8F1D1A; margin-bottom: .3rem; }
.prest-reglas { margin: 0; padding-left: 1.2rem; font-size: .88rem; line-height: 1.45; color: #374151; } .prest-reglas li { margin-bottom: .2rem; }
.prest-alta { display: grid; grid-template-columns: 1fr 1fr auto; gap: .6rem; align-items: end; } .prest-alta .campo { margin: 0; } .prest-nota { grid-column: 1 / -1; }
.prest-vigente { border: 1px solid #FDE68A; background: #FFFBEB; border-radius: 10px; padding: .8rem 1rem; font-size: .9rem; }
.prest-vig-tit { font-weight: 800; color: #92400E; margin-bottom: .2rem; }

/* Usuarios: los inactivos hasta abajo, separados y en rojo */
.tabla tr.fila-sep-inactivos td { background: #FEF2F2; color: #991B1B; font-weight: 800; font-size: .78rem; letter-spacing: .06em; text-transform: uppercase; padding: .45rem .8rem; border-top: 2px solid #FECACA; }
.tabla tr.usr-inactivo td { background: #FFF7F7; }
.tabla tr.usr-inactivo td a strong { color: #B42318; }

/* Asistente: botón de micrófono (dictado por voz) */
.ia-forma .ia-mic { color: var(--texto-2); }
.ia-forma .ia-mic.ia-oyendo { background: #B42318; color: #fff; border-color: #B42318; animation: ia-oye 1.2s ease-in-out infinite; }
@keyframes ia-oye { 0%, 100% { box-shadow: 0 0 0 0 rgba(180,35,24,.45); } 50% { box-shadow: 0 0 0 7px rgba(180,35,24,0); } }
