/* Gestión agropecuaria — interfaz web
 * Fondo gris verdoso frío, texto oliva oscuro. Un solo protagonista:
 * la barra de superficie por actividad, con los mismos colores que los lotes del mapa.
 */
:root {
  --fondo: #e7ebe1;
  --superficie: #fbfcf8;
  --tinta: #262a1d;
  --tinta-suave: #5b6150;
  --linea: #c9cfbd;
  --acento: #2c5a37;
  --acento-tinta: #f4f8ef;
  --alerta: #96361b;
  --alerta-fondo: #f8e6df;
  --ok-fondo: #e3f0dc;
  --foco: #1f6fd1;

  /* Actividades: legibles sobre imagen satelital */
  --cria: #9bd46a;
  --recria: #5cc4cf;   /* celeste agua: se distingue de cría y de engorde sobre la imagen */
  --engorde: #2fa865;
  --feedlot: #f0893b;
  --agricultura: #f2cd3d;
  --no_productivo: #b4b5ab;

  --radio-control: 6px;
  --radio-panel: 10px;
  --fuente: system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", "Helvetica Neue", Arial, sans-serif;
  color-scheme: light;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }   /* que ningún display de componente pise a hidden */
html, body { margin: 0; height: 100%; }
body {
  background: var(--fondo);
  color: var(--tinta);
  font: 15px/1.5 var(--fuente);
  font-variant-numeric: tabular-nums;
}
h1, h2, h3 { margin: 0; line-height: 1.2; }
h1 { font-size: 1.6rem; font-weight: 650; letter-spacing: -0.01em; }
h2 { font-size: 1.15rem; font-weight: 650; }
h3 { font-size: 0.95rem; font-weight: 650; }
p { margin: 0; }
a { color: var(--acento); }
:focus-visible { outline: 3px solid var(--foco); outline-offset: 2px; }
.oculto { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.suave { color: var(--tinta-suave); }
.chico { font-size: 0.85rem; }

/* ---------- controles ---------- */
button, .boton {
  font: inherit; font-weight: 600; cursor: pointer;
  border: 1px solid var(--linea); border-radius: var(--radio-control);
  background: var(--superficie); color: var(--tinta);
  padding: 0.45rem 0.85rem; min-height: 2.25rem;
}
button:hover { border-color: var(--tinta-suave); }
button.primario { background: var(--acento); color: var(--acento-tinta); border-color: var(--acento); }
button.primario:hover { filter: brightness(1.1); }
button.peligro { color: var(--alerta); border-color: #d9b3a6; }
button:disabled { opacity: 0.5; cursor: not-allowed; }
button.activo { background: var(--tinta); color: var(--superficie); border-color: var(--tinta); }
input, select, textarea {
  font: inherit; color: var(--tinta); background: #fff;
  border: 1px solid var(--linea); border-radius: var(--radio-control);
  padding: 0.45rem 0.6rem; width: 100%; min-height: 2.25rem;
}
label { display: grid; gap: 0.25rem; font-weight: 600; font-size: 0.9rem; }
label .ayuda { font-weight: 400; color: var(--tinta-suave); font-size: 0.82rem; }
.campos { display: grid; gap: 0.85rem; }
.fila { display: flex; gap: 0.5rem; align-items: center; flex-wrap: wrap; }
.error-campo { color: var(--alerta); font-weight: 500; font-size: 0.82rem; }

/* ---------- estructura ---------- */
.barra {
  display: flex; align-items: center; gap: 1.25rem;
  padding: 0 1rem; height: 52px;
  background: var(--tinta); color: var(--superficie);
}
.marca { font-weight: 700; white-space: nowrap; }
.marca span { font-weight: 400; opacity: 0.75; margin-left: 0.5rem; }
.barra nav { display: flex; gap: 0.25rem; flex: 1; }
.barra nav a {
  color: var(--superficie); text-decoration: none; padding: 0.35rem 0.7rem;
  border-radius: var(--radio-control); opacity: 0.8;
}
.barra nav a[aria-current="page"] { background: rgba(255,255,255,0.14); opacity: 1; }
.barra .usuario { font-size: 0.85rem; opacity: 0.85; white-space: nowrap; }
.barra button { background: transparent; color: var(--superficie); border-color: rgba(255,255,255,0.35); min-height: 2rem; padding: 0.2rem 0.7rem; }

.pagina { max-width: 72rem; margin: 0 auto; padding: 1.75rem 1rem 3rem; display: grid; gap: 1.5rem; }
.panel { background: var(--superficie); border: 1px solid var(--linea); border-radius: var(--radio-panel); padding: 1.25rem; }

/* ---------- ingreso ---------- */
.ingreso { min-height: 100%; display: grid; place-items: center; padding: 1rem; }
.ingreso .panel { width: min(26rem, 100%); display: grid; gap: 1.25rem; padding: 1.75rem; }
.ingreso h1 { font-size: 1.35rem; }

/* ---------- tablas ---------- */
table { width: 100%; border-collapse: collapse; }
th, td { text-align: left; padding: 0.55rem 0.6rem; border-bottom: 1px solid var(--linea); vertical-align: top; }
th { font-size: 0.82rem; color: var(--tinta-suave); font-weight: 600; }
td.num, th.num { text-align: right; }
tr.clic { cursor: pointer; }
tr.clic:hover td { background: #f1f4ea; }

.tabla-scroll { overflow-x: auto; }
table.tabla-codigos { table-layout: fixed; min-width: 56rem; }
.ganancias label[hidden] { display: none !important; }
.chips { display: flex; flex-wrap: wrap; gap: 0.3rem; }
.chip { display: inline-flex; align-items: center; gap: 0.3rem; padding: 0.05rem 0.5rem 0.05rem 0.35rem; border: 1px solid var(--linea); border-radius: 999px; font-size: 0.8rem; background: var(--superficie); white-space: nowrap; }
.chip button.quitar { border: 0; background: none; min-height: 0; padding: 0 0.15rem; line-height: 1; font-size: 1rem; color: var(--tinta-suave); }
.chip button.quitar:hover { color: var(--alerta); }
.chip .muestra { width: 0.7rem; height: 0.7rem; border-radius: 50%; display: inline-block; }
label.casilla { display: inline-flex; flex-direction: row; gap: 0.35rem; align-items: center; font-weight: 400; }
label.casilla input { width: auto; min-height: 0; }
fieldset[hidden] { display: none !important; }
.solapas { display: flex; gap: 0.25rem; flex-wrap: wrap; border-bottom: 1px solid var(--linea); }
.solapas a { padding: 0.5rem 0.9rem; text-decoration: none; color: var(--tinta-suave); border: 1px solid transparent; border-bottom: 0; border-radius: var(--radio-control) var(--radio-control) 0 0; font-weight: 600; }
.solapas a[aria-selected="true"] { color: var(--tinta); background: var(--superficie); border-color: var(--linea); margin-bottom: -1px; }
.estado { display: inline-block; padding: 0.05rem 0.5rem; border-radius: 999px; font-size: 0.8rem; font-weight: 600; }
.estado.en_alta { background: #fbefc9; color: #6b5200; }
.estado.activo { background: var(--ok-fondo); color: #24502d; }
.estado.baja { background: #e6e6e1; color: #5d5d55; }

/* ---------- editor de campo: mapa + libreta ---------- */
.editor { display: grid; grid-template-columns: 1fr 24rem; height: calc(100vh - 52px); }
.mapa-contenedor { position: relative; min-height: 0; }
#mapa { position: absolute; inset: 0; background: #20241a; }
.herramientas {
  position: absolute; z-index: 500; top: 0.75rem; left: 3.5rem; right: 0.75rem;
  display: flex; gap: 0.4rem; flex-wrap: wrap; pointer-events: none;
}
.herramientas > * { pointer-events: auto; box-shadow: 0 1px 4px rgba(0,0,0,0.35); }
.indicacion {
  position: absolute; z-index: 500; left: 50%; bottom: 1.25rem; transform: translateX(-50%);
  background: rgba(38,42,29,0.92); color: #fff; padding: 0.55rem 0.9rem; border-radius: var(--radio-control);
  display: flex; flex-wrap: wrap; gap: 0.5rem 0.75rem; align-items: center; justify-content: center;
  width: max-content; max-width: calc(100% - 2rem);
}
.indicacion > span { white-space: nowrap; }
.indicacion button { background: #fff; min-height: 1.9rem; padding: 0.15rem 0.6rem; }
.libreta { background: var(--superficie); border-left: 1px solid var(--linea); overflow-y: auto; padding: 1rem; display: grid; gap: 1.25rem; align-content: start; }
.libreta header { display: grid; gap: 0.35rem; }
.libreta header .numero { font-size: 0.9rem; color: var(--tinta-suave); }

/* La barra de superficie: el protagonista */
.superficie { display: grid; gap: 0.6rem; }
.superficie .total { display: flex; align-items: baseline; gap: 0.4rem; }
.superficie .total strong { font-size: 2rem; font-weight: 700; letter-spacing: -0.02em; }
.barra-ha { display: flex; height: 1.75rem; border-radius: 4px; overflow: hidden; background: var(--fondo); border: 1px solid var(--linea); }
.barra-ha > div { height: 100%; min-width: 2px; }
.barra-ha .sin_lotear { background: repeating-linear-gradient(135deg, #e3e6dc 0 6px, #d3d8ca 6px 12px); }
.leyenda { display: grid; gap: 0.3rem; margin: 0; padding: 0; list-style: none; font-size: 0.88rem; }
.leyenda li { display: grid; grid-template-columns: 0.9rem 1fr auto auto; gap: 0.5rem; align-items: center; }
.leyenda .muestra { width: 0.9rem; height: 0.9rem; border-radius: 3px; }
.leyenda .ha { text-align: right; font-weight: 600; }
.leyenda .pct { text-align: right; color: var(--tinta-suave); width: 3rem; }

.faltantes { background: #fbf3dc; border: 1px solid #ecd9a2; border-radius: var(--radio-control); padding: 0.75rem; font-size: 0.88rem; display: grid; gap: 0.35rem; }
.faltantes ul { margin: 0; padding-left: 1.1rem; }

.lotes { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.35rem; }
.lotes li button {
  width: 100%; display: grid; grid-template-columns: 2.2rem 1fr auto; gap: 0.6rem; align-items: center;
  text-align: left; font-weight: 400; padding: 0.4rem 0.6rem;
}
.lotes li button.elegido { border-color: var(--tinta); box-shadow: inset 0 0 0 1px var(--tinta); }
.lotes .nro {
  display: grid; place-items: center; height: 2rem; border-radius: 4px;
  font-weight: 700; color: var(--tinta); border: 2px solid rgba(0,0,0,0.25);
}
.lotes .act { font-size: 0.8rem; color: var(--tinta-suave); }
textarea { resize: vertical; min-height: 4.5rem; line-height: 1.45; }
.lotes .ha { font-weight: 600; }

.importados { display: grid; gap: 0.4rem; }
.importados .item { display: grid; gap: 0.35rem; border: 1px dashed #9b7fd1; border-radius: var(--radio-control); padding: 0.55rem; }

/* Etiquetas de número de lote sobre el mapa */
.etiqueta-lote {
  background: rgba(255,255,255,0.92); border: 0; border-radius: 3px; box-shadow: none;
  font-weight: 700; font-size: 13px; padding: 1px 5px; color: #1d2116;
}
.etiqueta-lote::before { display: none; }
.vertice { background: #fff; border: 2px solid #1d2116; border-radius: 50%; }

/* ---------- avisos ---------- */
#avisos { position: fixed; z-index: 2000; right: 1rem; bottom: 1rem; display: grid; gap: 0.5rem; max-width: min(26rem, calc(100% - 2rem)); }
.aviso { padding: 0.7rem 0.9rem; border-radius: var(--radio-control); background: var(--tinta); color: #fff; box-shadow: 0 2px 10px rgba(0,0,0,0.25); }
.aviso.error { background: var(--alerta); }
.aviso .codigo { display: block; opacity: 0.8; font-size: 0.78rem; margin-top: 0.15rem; }

/* ---------- diálogo ---------- */
dialog { border: 1px solid var(--linea); border-radius: var(--radio-panel); padding: 1.25rem; width: min(28rem, calc(100% - 2rem)); background: var(--superficie); color: var(--tinta); }
dialog::backdrop { background: rgba(20,22,15,0.45); }
dialog form { display: grid; gap: 1rem; }
dialog .acciones { display: flex; justify-content: flex-end; gap: 0.5rem; }

/* ---------- auditoría ---------- */
.evento { display: grid; grid-template-columns: 9.5rem 1fr; gap: 0.75rem; padding: 0.6rem 0; border-bottom: 1px solid var(--linea); font-size: 0.9rem; }
.evento .cuando { color: var(--tinta-suave); }
.cambios { margin: 0.3rem 0 0; padding: 0; list-style: none; font-size: 0.85rem; }
.cambios del { color: var(--alerta); }
.cambios ins { color: #24502d; text-decoration: none; font-weight: 600; }
.sello { padding: 0.75rem 1rem; border-radius: var(--radio-control); font-weight: 600; }
.sello.ok { background: var(--ok-fondo); color: #24502d; }
.sello.mal { background: var(--alerta-fondo); color: var(--alerta); }

@media (max-width: 860px) {
  .editor { grid-template-columns: 1fr; height: auto; }
  .mapa-contenedor { height: 60vh; }
  .libreta { border-left: 0; border-top: 1px solid var(--linea); }
  .barra { height: auto; flex-wrap: wrap; padding: 0.5rem 1rem; gap: 0.5rem; }
  .barra nav { order: 3; flex-basis: 100%; }
  .evento { grid-template-columns: 1fr; gap: 0.2rem; }
}
@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}

/* ---------- inicio: alertas ---------- */
.alertas { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5rem; }
.alerta { display: flex; gap: 0.75rem; align-items: center; flex-wrap: wrap; padding: 0.65rem 0.85rem;
  border: 1px solid var(--linea); border-left-width: 5px; border-radius: var(--radio-control); background: #fff; }
.alerta .nivel { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; }
.alerta .texto { flex: 1 1 16rem; }
.alerta.urgente { border-left-color: var(--alerta); background: var(--alerta-fondo); }
.alerta.urgente .nivel { color: var(--alerta); }
.alerta.advertencia { border-left-color: #c58a00; background: #fdf5dc; }
.alerta.advertencia .nivel { color: #6b5200; }
.alerta.aviso { border-left-color: var(--acento); }
.alerta.aviso .nivel { color: var(--acento); }
a.boton { display: inline-flex; align-items: center; text-decoration: none; color: var(--tinta); }

/* ---------- caravanas ---------- */
.resumen-caravanas { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.cifra { display: grid; min-width: 7.5rem; padding: 0.55rem 0.8rem; border: 1px solid var(--linea); border-radius: var(--radio-control); background: #fff; }
.cifra strong { font-size: 1.35rem; line-height: 1.2; }
.cifra span { font-size: 0.82rem; color: var(--tinta-suave); }
.mono { font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; font-size: 0.9rem; white-space: nowrap; }
td.mono strong { font-weight: 700; }
table.rangos input, table.rangos select { min-width: 9rem; }
table.rangos td { vertical-align: middle; }
button.quitar-linea { min-height: 2rem; padding: 0 0.6rem; font-size: 1.1rem; line-height: 1; }
.documento { display: grid; gap: 0.4rem; padding: 0.75rem; border: 1px dashed var(--linea); border-radius: var(--radio-control); background: #fff; }
.vista-documento { max-width: 100%; max-height: 32rem; border: 1px solid var(--linea); border-radius: var(--radio-control); object-fit: contain; background: #fff; }
.huella { word-break: break-all; font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 0.75rem; }
.aviso-linea { padding: 0.5rem 0.75rem; border-radius: var(--radio-control); background: #fdf5dc; color: #6b5200; }
.aviso-linea.error { background: var(--alerta-fondo); color: var(--alerta); }
dl.datos { display: grid; grid-template-columns: max-content 1fr; gap: 0.3rem 1rem; margin: 0; }
dl.datos dt { font-weight: 600; color: var(--tinta-suave); font-size: 0.88rem; }
dl.datos dd { margin: 0; }
tr.anulada td { color: var(--tinta-suave); text-decoration: line-through; }
details.sueltos summary { cursor: pointer; font-weight: 600; color: var(--acento); }
details.sueltos[open] summary { margin-bottom: 0.6rem; }
.lista-caravanas select { width: auto; min-width: 9rem; }

@media (max-width: 760px) {
  .barra { height: auto; min-height: 52px; flex-wrap: wrap; gap: 0.5rem; padding: 0.4rem 0.75rem; }
  .barra nav { order: 3; flex-basis: 100%; overflow-x: auto; }
  dl.datos { grid-template-columns: 1fr; }
}

/* Lectura automática del documento SENASA: foto y propuesta lado a lado */
.validacion { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1rem; align-items: start; }
.validacion .previa .vista-documento { max-height: 40rem; width: 100%; }
.validacion:not(:has(.propuesta > *)) { grid-template-columns: minmax(0, 1fr); }
.propuesta h3 { margin: 0; }
.rango-leido { border: 1px solid var(--linea); border-radius: var(--radio-control); padding: 0.6rem 0.75rem; display: grid; gap: 0.4rem; background: var(--superficie); }
.chip.aviso { background: #fbefc9; border-color: #e6cf7a; color: #6b5200; }
.chip.dudoso { background: #f6e1dc; border-color: #e3b3a6; color: #7a2e1c; text-decoration: line-through dotted; }
.avisos-lectura { margin: 0; padding-left: 1.1rem; color: var(--tinta-suave); display: grid; gap: 0.2rem; }
.confirmar-lectura { background: #fbefc9; border: 1px solid #e6cf7a; border-radius: var(--radio-control); padding: 0.55rem 0.75rem; font-weight: 600; }
.aviso-linea.lectura { background: var(--ok-fondo); }
@media (max-width: 760px) { .validacion { grid-template-columns: minmax(0, 1fr); } }

/* Stock de hacienda */
.tabla-stock tr.sector th { background: var(--fondo); text-align: left; border-top: 2px solid var(--linea); }
.tabla-stock tr.sector th.num { text-align: right; }
.tabla-movimientos tbody tr { cursor: pointer; }
.tabla-movimientos tbody tr:hover, .tabla-movimientos tbody tr:focus { background: var(--fondo); outline: none; }
.tabla-movimientos tr.anulado td { color: var(--tinta-suave); text-decoration: line-through; }
.tabla-movimientos tr.anulado td:last-child { text-decoration: none; }
.desvio.bueno { color: #24502d; font-weight: 600; }
.desvio.regular { color: #6b5200; font-weight: 600; }
.desvio.malo { color: #8a2a17; font-weight: 600; }
.emision [hidden] { display: none !important; }

/* Precios de mercado */
.grilla-precios { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); gap: 1rem; }
.grilla-precios caption { text-align: left; font-weight: 700; padding: 0.3rem 0; }
.tabla-stock tfoot th { border-top: 2px solid var(--linea); }

/* ---------- campo actual y módulos (menú lateral) ---------- */
.barra .marca { color: var(--superficie); text-decoration: none; }
.campo-actual { display: flex; align-items: baseline; gap: 0.5rem; flex: 1; min-width: 0; }
.campo-actual strong { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.campo-actual .chico { opacity: 0.75; }
.campo-actual a { color: var(--superficie); opacity: 0.85; font-size: 0.85rem; }
.cuerpo { display: grid; grid-template-columns: 15.5rem minmax(0, 1fr); min-height: calc(100vh - 52px); }
.contenido { min-width: 0; }
.modulos { background: var(--superficie); border-right: 1px solid var(--linea); padding: 0.75rem 0.5rem 2rem; display: grid; align-content: start; gap: 0.15rem; }
.modulos a { display: block; color: var(--tinta); text-decoration: none; padding: 0.4rem 0.65rem; border-radius: var(--radio-control); font-size: 0.93rem; }
.modulos a:hover { background: var(--fondo); }
.modulos a[aria-current="page"] { background: var(--acento); color: #fff; }
.modulos a.inicio { font-weight: 700; }
.modulos details summary { cursor: pointer; padding: 0.45rem 0.65rem; font-weight: 700; border-radius: var(--radio-control); list-style: none; display: flex; justify-content: space-between; }
.modulos details summary::-webkit-details-marker { display: none; }
.modulos details summary::after { content: '▸'; opacity: 0.6; transition: transform 0.15s; }
.modulos details[open] summary::after { transform: rotate(90deg); }
.modulos details summary:hover { background: var(--fondo); }
.modulos ul { list-style: none; margin: 0 0 0.35rem; padding: 0 0 0 0.6rem; border-left: 2px solid var(--linea); margin-left: 0.75rem; }
.modulos .proximamente { display: block; padding: 0.35rem 0.65rem; font-size: 0.85rem; color: var(--tinta-suave); }
.editor { height: calc(100vh - 52px); }
.mapa-inicio { height: min(60vh, 34rem); border-radius: var(--radio-control); background: #20241a; }
.inicio-campo .leyenda { display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem; list-style: none; margin: 0; padding: 0; }
.inicio-campo .leyenda li { display: flex; align-items: center; gap: 0.4rem; }
.inicio-campo .muestra { width: 0.9rem; height: 0.9rem; border-radius: 3px; display: inline-block; }
.lista-campos { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); gap: 0.75rem; }
.tarjeta-campo { width: 100%; text-align: left; display: grid; gap: 0.3rem; padding: 0.9rem 1rem; background: var(--superficie); border: 1px solid var(--linea); border-radius: var(--radio-control); cursor: pointer; min-height: 0; }
.tarjeta-campo:hover, .tarjeta-campo:focus-visible { border-color: var(--acento); }
.tarjeta-campo.actual { border: 2px solid var(--acento); }
@media (max-width: 760px) {
  .cuerpo { grid-template-columns: minmax(0, 1fr); }
  .modulos { border-right: 0; border-bottom: 1px solid var(--linea); grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr)); padding: 0.5rem; }
  .modulos a.inicio { grid-column: 1 / -1; }
  .campo-actual { order: 3; flex-basis: 100%; }
  .editor { height: auto; }
}
/* Las alertas de nivel «aviso» no deben tomar el estilo de los avisos flotantes */
.alerta.aviso { color: var(--tinta); background: var(--superficie); box-shadow: none; border-left-color: var(--acento); }
.alerta.aviso .nivel { color: var(--acento); }

/* Consultas */
.tabla-reporte tr.alta td:nth-child(4) { color: #24502d; font-weight: 600; }
.tabla-reporte tr.baja td:nth-child(4) { color: #8a2a17; font-weight: 600; }
.tabla-indicadores { max-width: 34rem; }
.tabla-indicadores th { text-align: left; font-weight: 500; }
.tabla-indicadores td { font-weight: 700; font-size: 1.05rem; }

/* ---------------------------------------------------------------- plan sanitario */
.sanidad-estado { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: 0.7rem; }
.tarjeta-sanidad { display: grid; gap: 0.3rem; padding: 0.7rem 0.85rem; border: 1px solid var(--linea); border-left: 5px solid var(--linea);
  border-radius: var(--radio-control); background: #fff; }
.tarjeta-sanidad h3 { margin: 0; font-size: 1rem; }
.tarjeta-sanidad p { margin: 0; }
.tarjeta-sanidad.cumplida { border-left-color: var(--engorde); }
.tarjeta-sanidad.en_curso, .tarjeta-sanidad.proxima { border-left-color: var(--feedlot); }
.tarjeta-sanidad.incumplida { border-left-color: var(--alerta); background: var(--alerta-fondo); }
.estado-sanidad { font-size: 0.78rem; font-weight: 600; padding: 0.05rem 0.45rem; border-radius: 999px; background: var(--fondo); }
.estado-sanidad.cumplida { background: var(--ok-fondo); color: var(--acento); }
.estado-sanidad.incumplida { background: var(--alerta); color: #fff; }
.progreso { height: 0.45rem; border-radius: 999px; background: var(--fondo); overflow: hidden; }
.progreso span { display: block; height: 100%; background: var(--acento); }
.peligro-texto { color: var(--alerta); font-weight: 600; }
.linea-codigo { align-items: center; gap: 0.6rem; }
.lineas-sanidad .etiqueta { font-weight: 600; font-size: 0.9rem; }
.tabla-sanidad tr.anulado td, .tabla-historia tr.anulado td { color: var(--tinta-suave); text-decoration: line-through; }
.tabla-sanidad tr.anulado td:last-child, .tabla-historia tr.anulado td:last-child { text-decoration: none; }
.lista-caravanas { display: flex; flex-wrap: wrap; gap: 0.3rem 1rem; padding-left: 1.1rem; }

/* ---------------------------------------------------------------- ficha de la caravana */
.ficha-datos .cifra { min-width: 10rem; }
.ficha-datos .cifra strong { font-size: 1.15rem; }
.etiqueta-evento { display: inline-block; font-size: 0.75rem; font-weight: 600; padding: 0 0.4rem; border-radius: 4px;
  background: var(--fondo); color: var(--tinta-suave); }

/* ---------------------------------------------------------------- caravanas internas y lector */
.opciones-modo { border: 0; padding: 0; margin: 0; gap: 1rem; align-items: center; }
.opciones-modo legend { font-weight: 600; font-size: 0.9rem; padding: 0; margin-bottom: 0.25rem; }
.opciones-modo label { gap: 0.35rem; align-items: center; font-weight: 400; }
.tabla-internas tr.anulado td { color: var(--tinta-suave); text-decoration: line-through; }
.tabla-internas tr.anulado td:last-child { text-decoration: none; }
form.asociar { gap: 0.35rem; flex-wrap: nowrap; }
.lector-envoltura { gap: 0.4rem; }
.boton-lector[aria-pressed="true"] { background: var(--acento); color: var(--acento-tinta); border-color: var(--acento); }
.lector { display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; padding: 0.55rem 0.7rem;
  border: 2px dashed var(--acento); border-radius: var(--radio-control); background: var(--ok-fondo); }
.entrada-lector { font-family: ui-monospace, Menlo, monospace; min-width: 14rem; }
.aviso-linea.advertencia { border-left: 4px solid #d9a441; background: #fbf1d9; }
fieldset.prenez { border: 1px solid var(--linea); border-radius: var(--radio-control); padding: 0.5rem 0.75rem; margin: 0; }
fieldset.prenez legend { font-weight: 600; font-size: 0.9rem; padding: 0 0.3rem; }
