/*
 * LIMS: interfaz.
 * Armazón al estilo de GaSS-IA (menú lateral suave, Montserrat, controles redondeados) y contenido al estilo de la
 * plataforma (tarjetas, barras de listado, tablas con cabecera discreta, formularios con foco marcado).
 * El color de la puerta y sus tonos (oscuro, suave, tinte, borde) llegan calculados desde app/vistas/marca.php; los de
 * :root son los de por defecto. No se usa color-mix(): hay navegadores en uso que no lo tienen.
 * Todo cuelga de body.lims (con sesión) o de body.lims-entrada (entrar y código de verificación).
 */
:root {
  --lims-marca: #216999;
  --lims-marca-rgb: 33, 105, 153;
  --lims-marca-oscuro: #1a5277;
  --lims-marca-suave: #eff5f8;
  --lims-marca-tinte: #e0eaf1;
  --lims-marca-borde: #b8cfde;
  --lims-tinta: #0d161f;
  --lims-texto: #334155;
  --lims-apagado: #667085;
  --lims-linea: #e5e7eb;
  --lims-linea-suave: #eef0f3;
  --lims-lado: #f4f6fb;
  --lims-relleno: #f1f3f7;
  --lims-relleno-fuerte: #e6e9ef;
  --lims-radio: 14px;
  --lims-radio-control: 10px;
  --lims-sombra: 0 1px 2px rgba(15, 23, 42, .04), 0 6px 18px rgba(15, 23, 42, .05);
  --lims-sombra-alta: 0 12px 32px rgba(15, 23, 42, .14), 0 2px 6px rgba(15, 23, 42, .06);
  --lims-ok: #15803d;
  --lims-ok-suave: #e7f7ed;
  --lims-aviso: #915e03;
  --lims-aviso-suave: #fdf3d3;
  --lims-ko: #b42318;
  --lims-ko-suave: #fde8e8;
  --lims-ancho-lado: 264px;
  --lims-letra: Montserrat, Inter, "Segoe UI", system-ui, -apple-system, Roboto, sans-serif;
}

/* ───────── Base ───────── */
body.lims, body.lims-entrada {
  --bs-body-font-family: var(--lims-letra);
  --bs-body-font-size: .875rem;
  --bs-body-color: var(--lims-texto);
  --bs-body-bg: #fff;
  --bs-primary: var(--lims-marca);
  --bs-primary-rgb: var(--lims-marca-rgb);
  --bs-link-color: var(--lims-marca-oscuro);
  --bs-link-color-rgb: var(--lims-marca-rgb);
  --bs-link-hover-color: var(--lims-marca-oscuro);
  --bs-link-hover-color-rgb: var(--lims-marca-rgb);
  --bs-border-color: var(--lims-linea);
  --bs-secondary-color: var(--lims-apagado);
  --bs-emphasis-color: var(--lims-tinta);
  font-family: var(--lims-letra);
  font-size: .875rem;
  color: var(--lims-texto);
  font-synthesis: none;
  -webkit-font-smoothing: antialiased;
  font-variant-numeric: tabular-nums;
}
body.lims { height: 100vh; height: 100dvh; margin: 0; display: flex; overflow: hidden; background: #fff; }
/* SweetAlert2 pone el body a altura automática al abrir un diálogo; aquí el body no se desplaza (lo hace .lims-zona) y la
   pantalla saltaba arriba. Además lims.js abre los diálogos con heightAuto: false. */
body.lims.swal2-height-auto { height: 100vh !important; height: 100dvh !important; }
.lims a:not(.btn), .lims-entrada a:not(.btn) { color: var(--lims-marca-oscuro); text-underline-offset: 2px; text-decoration-thickness: 1px; }
.lims .text-muted, .lims-entrada .text-muted { color: var(--lims-apagado) !important; }
/* Texto escrito por una persona con sus saltos de línea (comentario del informe). */
.lims .lims-texto-libre { white-space: pre-line; }
/* Leyenda de las gráficas de estadísticas (mismos colores que sus barras). */
/* Gráficas en SVG (evolución, estadísticas): ocupan el ancho de su tarjeta. */
.lims svg.lims-grafica { max-width: 100%; height: auto; display: block; }
.lims .lims-leyenda { display: inline-block; width: .7rem; height: .7rem; border-radius: 2px; vertical-align: -1px; }
.lims .lims-leyenda-1 { background: #216999; }
.lims .lims-leyenda-2 { background: #9fb4c7; }
.lims :focus-visible, .lims-entrada :focus-visible { outline: 2px solid var(--lims-marca); outline-offset: 2px; }
.lims .form-control:focus-visible, .lims .form-select:focus-visible, .lims-entrada .form-control:focus-visible { outline: 0; }

/* ───────── Menú lateral ───────── */
.lims-lado { width: var(--lims-ancho-lado); flex: none; display: flex; flex-direction: column; min-height: 0; background: var(--lims-lado);
  border-right: 1px solid var(--lims-linea-suave); padding: 1rem .75rem .75rem; gap: .5rem; }
.lims-lado-marca { display: flex; align-items: center; gap: .65rem; padding: .1rem .4rem .45rem; min-height: 2.25rem; text-decoration: none; }
.lims-lado-texto { min-width: 0; display: flex; flex-direction: column; gap: .2rem; }
.lims-logo { width: 2rem; height: 2rem; flex: none; display: grid; place-items: center; border-radius: 10px; color: #fff; font-size: 1.05rem;
  background: linear-gradient(140deg, var(--lims-marca), var(--lims-marca-oscuro)); box-shadow: 0 2px 6px rgba(var(--lims-marca-rgb), .35); }
.lims-lado-nombre { font-size: 1.05rem; font-weight: 800; letter-spacing: -.01em; color: var(--lims-marca); line-height: 1; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; }
.lims-lado-lab { font-size: .7rem; font-weight: 500; line-height: 1.1; color: var(--lims-apagado); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lims-menu { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 1px; margin: 0 -.25rem; padding: 0 .25rem;
  scrollbar-width: thin; scrollbar-color: #d5dae3 transparent; }
.lims-menu-grupo { padding: .7rem .6rem .25rem; font-size: .66rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--lims-apagado); }
.lims-menu-grupo:first-child { padding-top: .25rem; }
.lims-menu a { display: flex; align-items: center; gap: .7rem; padding: .36rem .6rem; border-radius: 9px; color: var(--lims-tinta); font-size: .84rem;
  font-weight: 500; text-decoration: none; line-height: 1.25; }
.lims-menu a i { font-size: 1rem; width: 1.1rem; text-align: center; color: #475467; flex: none; }
.lims-menu a span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lims-menu a:hover { background: #e9ecf2; }
.lims-menu a.activo { background: #e3e7ee; font-weight: 600; }
.lims-menu a.activo i { color: var(--lims-marca); }
.lims-lado-pie .lims-chip { font-size: .62rem; padding: .14rem .5rem; }
.lims-lado-pie { display: flex; align-items: center; gap: .35rem; padding-top: .6rem; border-top: 1px solid var(--lims-linea-suave); }
.lims-usuario { flex: 1; min-width: 0; display: flex; align-items: center; gap: .6rem; padding: .35rem .4rem; border-radius: 10px; text-decoration: none;
  color: var(--lims-tinta) !important; }
.lims-usuario:hover, .lims-usuario.activo { background: #e9ecf2; }
.lims-avatar { width: 2rem; height: 2rem; flex: none; display: grid; place-items: center; border-radius: 50%; background: var(--lims-marca); color: #fff;
  font-size: .72rem; font-weight: 700; letter-spacing: .02em; }
.lims-usuario-texto { min-width: 0; display: flex; flex-direction: column; line-height: 1.2; }
.lims-usuario-texto b { font-size: .8rem; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lims-usuario-texto small { font-size: .7rem; color: var(--lims-apagado); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lims-icono-boton { width: 2.1rem; height: 2.1rem; flex: none; display: inline-grid; place-items: center; border: 0; border-radius: 9px; background: transparent;
  color: #475467; font-size: 1.05rem; }
.lims-icono-boton:hover { background: #e3e7ee; color: var(--lims-tinta); }
.lims-chip { display: inline-flex; align-items: center; gap: .3rem; padding: .2rem .6rem; border-radius: 999px; font-size: .68rem; font-weight: 700;
  letter-spacing: .01em; white-space: nowrap; background: var(--lims-marca-tinte); color: var(--lims-marca-oscuro); }
.lims-chip-aviso { background: var(--lims-aviso-suave); color: #7a4f00; }
.lims-franja-soporte { background: var(--lims-aviso-suave); color: #7a4f00; border-bottom: 1px solid #f1dc9a; padding: .5rem 1rem; font-size: .9rem; }

/* ───────── Zona de trabajo ───────── */
.lims-principal { flex: 1; min-width: 0; display: flex; flex-direction: column; min-height: 0; position: relative; }
.lims-barra-movil { display: none; }
.lims-velo { display: none; }
.lims-progreso { position: absolute; inset: 0 0 auto 0; height: 3px; overflow: hidden; pointer-events: none; opacity: 0; transition: opacity .15s; z-index: 5; }
.lims-progreso::after { content: ""; position: absolute; inset: 0 auto 0 0; width: 35%; border-radius: 3px; background: var(--lims-marca);
  animation: lims-progreso 1s ease-in-out infinite; }
.lims-cargando .lims-progreso { opacity: 1; }
@keyframes lims-progreso { from { transform: translateX(-110%); } to { transform: translateX(320%); } }
.lims-zona { flex: 1; min-height: 0; overflow-y: auto; padding: 1.6rem 2rem 2.5rem; background: #fff; scrollbar-width: thin; scrollbar-color: #d5dae3 transparent; }
.lims-zona > .container-fluid { padding: 0; max-width: 1400px; margin: 0; }

/* Títulos */
.lims-zona h1 { font-size: 1.4rem; font-weight: 700; letter-spacing: -.015em; color: var(--lims-tinta); line-height: 1.25; }
.lims-zona h1 small, .lims-zona h1 .text-muted { font-size: .8rem !important; font-weight: 500; letter-spacing: 0; }
.lims-zona h2 { font-size: .95rem; font-weight: 700; color: var(--lims-tinta); letter-spacing: -.005em; }
.lims-zona > .container-fluid > h2 { margin: 1.5rem 0 .75rem; }
.lims-zona h3 { font-size: .85rem; font-weight: 700; color: var(--lims-tinta); }
.lims-subtitulo { color: var(--lims-apagado); font-size: .84rem; font-weight: 500; }
/* Enlace de vuelta al listado (una flecha a la izquierda delante): discreto, encima del título. */
.lims-zona a:has(> .bi-arrow-left:first-child) { display: inline-flex; align-items: center; gap: .35rem; margin-bottom: .5rem; font-size: .78rem; font-weight: 600;
  color: var(--lims-apagado); text-decoration: none; }
.lims-zona a:has(> .bi-arrow-left:first-child):hover { color: var(--lims-tinta); }
.lims code { padding: .1em .4em; border-radius: 6px; background: var(--lims-relleno); color: var(--lims-tinta); font-size: .8em; word-break: break-all; }
.lims-volver { display: inline-flex; align-items: center; gap: .35rem; margin-bottom: .6rem; font-size: .78rem; font-weight: 600; color: var(--lims-apagado) !important;
  text-decoration: none; }
.lims-volver:hover { color: var(--lims-tinta) !important; }

/* ───────── Tarjetas ───────── */
.lims-tarjeta { background: #fff; border: 1px solid var(--lims-linea); border-radius: var(--lims-radio); padding: 1.1rem 1.25rem; margin-bottom: 1rem;
  box-shadow: var(--lims-sombra); }
/* Una tabla más ancha que la tarjeta se desplaza dentro de ella: nunca se recorta (la última columna suele llevar la acción). */
.lims-tarjeta.p-0 { overflow-x: auto; }
/* Un formulario en rejilla que además es tarjeta: sin los márgenes negativos de .row, que lo sacaban de la columna. */
.lims-tarjeta.row { margin-left: 0; margin-right: 0; padding-left: calc(1.25rem - var(--bs-gutter-x) * .5); padding-right: calc(1.25rem - var(--bs-gutter-x) * .5); }
.lims-tarjeta > h2:first-child, .lims-tarjeta > .lims-tarjeta-titulo { margin: 0 0 .85rem; }
.lims-tarjeta h2 { font-size: .92rem; }
.lims-tarjeta-titulo { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.lims-tarjeta-titulo h2 { margin: 0; margin-right: auto; }
.lims-dato { --bs-gutter-y: .25rem; }
.lims-dato dt { font-size: .68rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--lims-apagado); margin-bottom: .1rem; }
.lims-dato dd { margin-bottom: .7rem; font-size: .9rem; font-weight: 500; color: var(--lims-tinta); }
.lims-codigo { display: inline-block; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 1.5rem; font-weight: 600; letter-spacing: .14em;
  color: var(--lims-tinta); padding: .1rem .7rem; border-radius: 10px; background: var(--lims-marca-suave); border: 1px dashed var(--lims-marca-borde); }

.lims-codigo.fs-6 { font-size: .86rem !important; letter-spacing: .08em; padding: .12rem .5rem; border-style: solid; border-radius: 8px; text-decoration: none; }
a.lims-codigo.fs-6:hover { background: var(--lims-marca-tinte); border-color: var(--lims-marca); }
td.lims-codigo.fs-6 { display: table-cell; background: none; border: 0; border-bottom: 1px solid var(--lims-linea-suave); border-radius: 0; }

/* Tarjetas de trabajo del inicio (como las del panel de la plataforma) */
.lims-saludo { margin-bottom: 1.25rem; }
.lims-saludo h1 { font-weight: 500; margin: 0 0 .15rem; }
.lims-saludo h1 b { font-weight: 700; }
.lims-tareas { display: grid; grid-template-columns: repeat(auto-fill, minmax(17.5rem, 1fr)); gap: 1rem; margin-bottom: 1.25rem; }
.lims-tarea { display: flex; flex-direction: column; gap: .3rem; padding: 1rem 1.15rem 1.05rem; border-radius: var(--lims-radio); border: 1px solid var(--lims-linea);
  background: #fff; box-shadow: var(--lims-sombra); color: var(--lims-texto) !important; text-decoration: none; transition: transform .12s, box-shadow .12s; }
a.lims-tarea:hover { transform: translateY(-1px); box-shadow: 0 2px 4px rgba(15, 23, 42, .05), 0 10px 24px rgba(15, 23, 42, .09); }
.lims-tarea-zona { display: flex; align-items: center; gap: .4rem; font-size: .72rem; font-weight: 600; color: var(--lims-apagado); }
.lims-tarea-zona .bi:last-child { margin-left: auto; font-size: .95rem; }
.lims-tarea-titulo { font-size: .92rem; font-weight: 700; color: var(--lims-tinta); margin-top: .35rem; }
.lims-tarea-cifra { display: flex; align-items: baseline; gap: .45rem; font-size: .8rem; font-weight: 500; }
.lims-tarea-cifra b { font-size: 1.9rem; font-weight: 700; line-height: 1.1; color: var(--lims-marca); letter-spacing: -.02em; }
.lims-tarea-texto { font-size: .78rem; line-height: 1.45; color: var(--lims-apagado); }
.lims-tarea-lista { list-style: none; margin: .2rem 0 0; padding: 0; font-size: .8rem; display: flex; flex-direction: column; gap: .25rem; }
.lims-tarea-lista li { display: flex; align-items: baseline; gap: .4rem; }
.lims-tarea.es-cero .lims-tarea-cifra b { color: #8691a1; }
.lims-tarea.es-aviso { background: var(--lims-aviso-suave); border-color: #f1dc9a; }
.lims-tarea.es-aviso .lims-tarea-cifra b, .lims-tarea.es-aviso .lims-tarea-zona .bi:last-child { color: var(--lims-aviso); }
.lims-tarea.es-ko { background: var(--lims-ko-suave); border-color: #f3c4c4; }
.lims-tarea.es-ko .lims-tarea-cifra b, .lims-tarea.es-ko .lims-tarea-zona .bi:last-child { color: var(--lims-ko); }
.lims-tarea.es-aviso .lims-tarea-texto, .lims-tarea.es-ko .lims-tarea-texto, .lims-tarea.es-aviso .lims-tarea-zona, .lims-tarea.es-ko .lims-tarea-zona { color: #55606e; }

/* ───────── Cabecera de pantalla y barra de listado ───────── */
.lims-cabecera { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin-bottom: 1.1rem; }
.lims-cabecera h1 { margin: 0; margin-right: auto; }
.lims-cabecera-texto { margin-right: auto; min-width: 0; }
.lims-cabecera-texto h1 { margin: 0; }
.lims-barra-lista { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; padding: .6rem .75rem; margin-bottom: .85rem; background: #fff;
  border: 1px solid var(--lims-linea); border-radius: 12px; box-shadow: var(--lims-sombra); }
.lims-contador { display: inline-flex; align-items: center; padding: .25rem .7rem; border-radius: 999px; background: var(--lims-marca-tinte); color: var(--lims-marca-oscuro);
  font-size: .74rem; font-weight: 700; white-space: nowrap; }

/* ───────── Botones ───────── */
.lims .btn, .lims-entrada .btn { --bs-btn-border-radius: 10px; --bs-btn-font-weight: 600; --bs-btn-font-size: .82rem; --bs-btn-padding-x: .95rem;
  --bs-btn-padding-y: .5rem; --bs-btn-focus-shadow-rgb: var(--lims-marca-rgb); display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
  white-space: nowrap; }
.lims .btn-sm { --bs-btn-border-radius: 8px; --bs-btn-padding-x: .65rem; --bs-btn-padding-y: .3rem; --bs-btn-font-size: .76rem; }
.lims .btn-primary, .lims-entrada .btn-primary { --bs-btn-bg: var(--lims-marca); --bs-btn-border-color: var(--lims-marca); --bs-btn-hover-bg: var(--lims-marca-oscuro);
  --bs-btn-hover-border-color: var(--lims-marca-oscuro); --bs-btn-active-bg: var(--lims-marca-oscuro); --bs-btn-active-border-color: var(--lims-marca-oscuro);
  --bs-btn-disabled-bg: var(--lims-marca); --bs-btn-disabled-border-color: var(--lims-marca); box-shadow: 0 1px 2px rgba(var(--lims-marca-rgb), .3); }
.lims .btn-outline-primary { --bs-btn-color: var(--lims-marca-oscuro); --bs-btn-border-color: var(--lims-marca-borde); --bs-btn-bg: #fff;
  --bs-btn-hover-bg: var(--lims-marca-suave); --bs-btn-hover-color: var(--lims-marca-oscuro); --bs-btn-hover-border-color: var(--lims-marca);
  --bs-btn-active-bg: var(--lims-marca-tinte); --bs-btn-active-color: var(--lims-marca-oscuro); --bs-btn-active-border-color: var(--lims-marca);
  --bs-btn-disabled-color: var(--lims-apagado); --bs-btn-disabled-border-color: var(--lims-linea); }
.lims .btn-outline-secondary { --bs-btn-color: #344054; --bs-btn-border-color: #d5dae1; --bs-btn-bg: #fff; --bs-btn-hover-bg: var(--lims-relleno);
  --bs-btn-hover-color: var(--lims-tinta); --bs-btn-hover-border-color: #c4cbd5; --bs-btn-active-bg: var(--lims-relleno-fuerte); --bs-btn-active-color: var(--lims-tinta);
  --bs-btn-active-border-color: #c4cbd5; --bs-btn-disabled-color: #98a2b3; --bs-btn-disabled-border-color: var(--lims-linea); }
.lims .btn-outline-danger { --bs-btn-color: var(--lims-ko); --bs-btn-border-color: #f0b8b4; --bs-btn-bg: #fff; --bs-btn-hover-bg: var(--lims-ko-suave);
  --bs-btn-hover-color: var(--lims-ko); --bs-btn-hover-border-color: var(--lims-ko); --bs-btn-active-bg: var(--lims-ko-suave); --bs-btn-active-color: var(--lims-ko);
  --bs-btn-active-border-color: var(--lims-ko); }
.lims .btn-outline-warning { --bs-btn-color: var(--lims-aviso); --bs-btn-border-color: #ecc871; --bs-btn-bg: #fff; --bs-btn-hover-bg: var(--lims-aviso-suave);
  --bs-btn-hover-color: var(--lims-aviso); --bs-btn-hover-border-color: #d9a938; --bs-btn-active-bg: var(--lims-aviso-suave); --bs-btn-active-color: var(--lims-aviso);
  --bs-btn-active-border-color: #d9a938; }
.lims .btn-outline-success { --bs-btn-color: var(--lims-ok); --bs-btn-border-color: #a6dcb7; --bs-btn-bg: #fff; --bs-btn-hover-bg: var(--lims-ok-suave);
  --bs-btn-hover-color: var(--lims-ok); --bs-btn-hover-border-color: var(--lims-ok); --bs-btn-active-bg: var(--lims-ok-suave); --bs-btn-active-color: var(--lims-ok);
  --bs-btn-active-border-color: var(--lims-ok); }
.lims .btn-success { --bs-btn-bg: var(--lims-ok); --bs-btn-border-color: var(--lims-ok); --bs-btn-hover-bg: #116932; --bs-btn-hover-border-color: #116932;
  --bs-btn-active-bg: #116932; --bs-btn-active-border-color: #116932; --bs-btn-disabled-bg: var(--lims-ok); --bs-btn-disabled-border-color: var(--lims-ok); }
.lims .btn-link { --bs-btn-color: var(--lims-marca-oscuro); --bs-btn-hover-color: var(--lims-marca-oscuro); }

/* ───────── Formularios ───────── */
.lims .form-label, .lims-entrada .form-label { font-size: .76rem; font-weight: 600; color: #475467; margin-bottom: .3rem; }
.lims .form-control, .lims .form-select, .lims-entrada .form-control { border-radius: var(--lims-radio-control); border-color: #d5dae1; font-size: .875rem;
  padding: .5rem .75rem; color: var(--lims-tinta); background-color: #fff; transition: border-color .12s, box-shadow .12s, background-color .12s; }
.lims .form-select { padding-right: 2.1rem; }
.lims .form-control::placeholder, .lims-entrada .form-control::placeholder { color: #98a2b3; }
.lims .form-control:hover:not(:focus):not(:disabled):not([readonly]), .lims .form-select:hover:not(:focus):not(:disabled) { border-color: #b9c1cd; }
.lims .form-control:focus, .lims .form-select:focus, .lims-entrada .form-control:focus { border-color: var(--lims-marca);
  box-shadow: 0 0 0 3px rgba(var(--lims-marca-rgb), .16); }
.lims .form-control:disabled, .lims .form-control[readonly], .lims .form-select:disabled { background-color: #f6f7f9; color: #667085; }
.lims .form-control-sm, .lims .form-select-sm { border-radius: 8px; font-size: .8rem; padding: .3rem .6rem; }
.lims .form-select-sm { padding-right: 1.9rem; }
.lims .form-control.is-invalid { border-color: var(--lims-ko); box-shadow: 0 0 0 3px rgba(180, 35, 24, .12); }
.lims .form-text, .lims-entrada .form-text { font-size: .74rem; color: var(--lims-apagado); }
.lims .form-check-input { border-color: #b9c1cd; }
.lims .form-check-input:checked { background-color: var(--lims-marca); border-color: var(--lims-marca); }
.lims .form-check-input:focus { border-color: var(--lims-marca); box-shadow: 0 0 0 3px rgba(var(--lims-marca-rgb), .16); }
.lims .form-check-label { font-weight: 500; color: var(--lims-tinta); }
.lims .input-group-text { border-color: #d5dae1; background: #f6f7f9; color: var(--lims-apagado); font-size: .82rem; border-radius: var(--lims-radio-control); }
.lims fieldset { border: 1px solid var(--lims-linea) !important; border-radius: 12px !important; padding: .9rem 1rem 1rem !important; margin: 0; min-width: 0; }
.lims fieldset > legend { float: none; width: auto; margin: 0; padding: 0 .4rem; font-size: .68rem !important; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  color: var(--lims-apagado); }
.lims details > summary { cursor: pointer; font-size: .82rem; font-weight: 600; color: var(--lims-marca-oscuro); padding: .25rem 0; }
.lims details[open] > summary { margin-bottom: .35rem; }
/* Buscador: campo relleno y redondo, como los de GaSS-IA */
.lims input[type=search].form-control { border-radius: 999px; border-color: transparent; background-color: var(--lims-relleno); padding-left: 2.25rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23667085' viewBox='0 0 16 16'%3E%3Cpath d='M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398l3.85 3.85a1 1 0 0 0 1.415-1.414zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: .8rem center; background-size: .9rem; }
.lims input[type=search].form-control:hover:not(:focus) { border-color: transparent; background-color: var(--lims-relleno-fuerte); }
.lims input[type=search].form-control:focus { background-color: #fff; border-color: var(--lims-marca); }

/* ───────── Tablas ───────── */
.lims-zona .table { --bs-table-bg: transparent; --bs-table-color: var(--lims-texto); --bs-table-border-color: var(--lims-linea-suave);
  --bs-table-hover-bg: var(--lims-marca-suave); --bs-table-hover-color: var(--lims-tinta); font-size: .84rem; margin-bottom: 0; }
.lims-zona .table > thead > tr > th { padding: .5rem .75rem; font-size: .68rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: #667085;
  background: #f6f7f9; border-bottom: 0; white-space: nowrap; vertical-align: middle; }
.lims-zona .table > thead > tr > th:first-child { border-radius: 8px 0 0 8px; }
.lims-zona .table > thead > tr > th:last-child { border-radius: 0 8px 8px 0; }
.lims-zona .table > tbody > tr > * { padding: .6rem .75rem; vertical-align: middle; }
.lims-zona .table > tbody > tr:last-child > * { border-bottom-width: 0; }
.lims-zona .table > tfoot > tr > * { padding: .6rem .75rem; border-bottom-width: 0; border-top: 1px solid var(--lims-linea); font-weight: 700; color: var(--lims-tinta); }
.lims-zona .table td .form-control-sm, .lims-zona .table td .form-select-sm { min-width: 5rem; }
.lims-tarjeta.p-0 > .table > thead > tr > th, .lims-tarjeta.p-0 > .table-responsive > .table > thead > tr > th { border-radius: 0; border-bottom: 1px solid var(--lims-linea); }
.lims-tarjeta.p-0 > .table > * > tr > :first-child, .lims-tarjeta.p-0 > .table-responsive > .table > * > tr > :first-child { padding-left: 1.1rem; }
.lims-tarjeta.p-0 > .table > * > tr > :last-child, .lims-tarjeta.p-0 > .table-responsive > .table > * > tr > :last-child { padding-right: 1.1rem; }
.lims-zona .table-danger { --bs-table-bg: var(--lims-ko-suave); --bs-table-border-color: #f6d5d5; --bs-table-color: var(--lims-tinta); }
.lims-zona .table-warning { --bs-table-bg: var(--lims-aviso-suave); --bs-table-border-color: #f3e6b5; --bs-table-color: var(--lims-tinta); }
.lims-zona .table-success { --bs-table-bg: var(--lims-ok-suave); --bs-table-border-color: #cdeed8; --bs-table-color: var(--lims-tinta); }
.lims-zona .table-secondary, .lims-zona .table-light { --bs-table-bg: #f6f7f9; --bs-table-border-color: var(--lims-linea-suave); --bs-table-color: var(--lims-texto); }
.lims-fila-enlace { cursor: pointer; }
.lims-valor { font-weight: 700; color: var(--lims-tinta); }

/* Tabulator con el aspecto de los listados de la plataforma */
.lims .tabulator { border: 0; background: #fff; font-family: inherit; font-size: .84rem; margin: 0; }
.lims .tabulator .tabulator-header { background: #f6f7f9; border-bottom: 1px solid var(--lims-linea); color: #667085; font-weight: 700; }
.lims .tabulator .tabulator-header .tabulator-col { background: transparent; border-right: 0; }
.lims .tabulator .tabulator-header .tabulator-col .tabulator-col-content { padding: .6rem .75rem; }
.lims .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { font-size: .68rem; letter-spacing: .05em; text-transform: uppercase; }
.lims .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { background: #eceef2; }
.lims .tabulator .tabulator-tableholder .tabulator-table { background: #fff; color: var(--lims-texto); }
.lims .tabulator-row { border-bottom: 1px solid var(--lims-linea-suave); background: #fff; min-height: 2.75rem; }
.lims .tabulator-row.tabulator-row-even { background: #fcfcfd; }
.lims .tabulator-row .tabulator-cell { padding: .7rem .75rem; border-right: 0; }
.lims .tabulator-row .tabulator-cell:first-child, .lims .tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-content { padding-left: 1.1rem; }
.lims .tabulator-row.tabulator-selectable:hover { background: var(--lims-marca-suave); cursor: pointer; }
.lims .tabulator .tabulator-footer { background: #fff; border-top: 1px solid var(--lims-linea); padding: .5rem .75rem; color: var(--lims-apagado); font-weight: 500; }
.lims .tabulator .tabulator-footer .tabulator-paginator { font-family: inherit; }
.lims .tabulator .tabulator-footer .tabulator-page { min-width: 1.9rem; height: 1.9rem; margin: 0 1px; padding: 0 .45rem; border: 0; border-radius: 8px; background: transparent;
  color: #475467; font-weight: 600; font-size: .8rem; }
.lims .tabulator .tabulator-footer .tabulator-page:not(:disabled):hover { background: var(--lims-relleno); color: var(--lims-tinta); }
.lims .tabulator .tabulator-footer .tabulator-page.active { background: var(--lims-marca); color: #fff; }
.lims .tabulator .tabulator-footer .tabulator-page:disabled { opacity: .35; }
.lims .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { color: var(--lims-apagado); font-size: .875rem; font-weight: 500; }

/* ───────── Estados, etiquetas y avisos ───────── */
.lims .badge { border-radius: 999px; font-weight: 700; font-size: .7rem; padding: .34em .75em; letter-spacing: .01em; vertical-align: middle; }
.lims h1 .badge { font-size: .72rem; margin-left: .35rem; position: relative; top: -.15em; }
.lims .badge.text-bg-success, .lims .badge.bg-success { background: var(--lims-ok-suave) !important; color: #116932 !important; }
.lims .badge.text-bg-warning, .lims .badge.bg-warning { background: var(--lims-aviso-suave) !important; color: #7a4f00 !important; }
.lims .badge.text-bg-danger, .lims .badge.bg-danger { background: var(--lims-ko-suave) !important; color: #991b1b !important; }
.lims .badge.text-bg-secondary, .lims .badge.bg-secondary, .lims .badge.text-bg-light, .lims .badge.bg-light { background: #eceff3 !important; color: #475467 !important; }
.lims .badge.text-bg-primary, .lims .badge.bg-primary, .lims .badge.text-bg-info, .lims .badge.bg-info { background: var(--lims-marca-tinte) !important;
  color: var(--lims-marca-oscuro) !important; }
.lims .badge.text-bg-dark, .lims .badge.bg-dark { background: #1f2a37 !important; color: #fff !important; }
.lims .lims-estado-pendiente { color: var(--lims-aviso); font-weight: 600; }
.lims .lims-estado-ok { color: var(--lims-ok); font-weight: 600; }
.lims .lims-estado-ko { color: var(--lims-ko); font-weight: 600; }
/* Estado de un resultado: un punto de color delante del texto (pendiente, validado por el técnico, por el facultativo, anulado). */
.lims [data-estado-resultado] { font-weight: 600; color: var(--lims-tinta); }
.lims [data-estado-resultado]::before { content: ""; display: inline-block; width: .5rem; height: .5rem; margin-right: .45rem; border-radius: 50%;
  background: #98a2b3; vertical-align: .05em; }
.lims [data-estado-resultado="pendiente"]::before { background: #e0a100; }
.lims [data-estado-resultado="validado_tecnico"]::before { background: var(--lims-marca); }
.lims [data-estado-resultado="validado_facultativo"]::before { background: #22a355; }
.lims [data-estado-resultado=""] { font-weight: 500; color: var(--lims-apagado); }
.lims [data-estado-resultado=""]::before { content: none; }
/* Estado de una muestra: píldora. */
.lims span[data-estado-muestra] { display: inline-flex; align-items: center; padding: .16rem .65rem; border-radius: 999px; font-size: .74rem; font-weight: 700;
  background: #eceff3; color: #475467; }
.lims span[data-estado-muestra="en_curso"] { background: var(--lims-aviso-suave); color: #7a4f00; }
.lims span[data-estado-muestra="validada"] { background: var(--lims-marca-tinte); color: var(--lims-marca-oscuro); }
.lims span[data-estado-muestra="informada"] { background: var(--lims-ok-suave); color: #116932; }
.lims span[data-estado-muestra="anulada"] { background: var(--lims-ko-suave); color: #991b1b; }
.lims .alert, .lims-entrada .alert { border-radius: 12px; border-width: 1px; font-size: .84rem; font-weight: 500; }
.lims .alert-warning, .lims-entrada .alert-warning { background: var(--lims-aviso-suave); border-color: #f1dc9a; color: #6b4500; }
.lims .alert-danger, .lims-entrada .alert-danger { background: var(--lims-ko-suave); border-color: #f3c4c4; color: #8f1d14; }
.lims .alert-info { background: var(--lims-marca-suave); border-color: var(--lims-marca-borde); color: var(--lims-marca-oscuro); }
.lims .alert-success { background: var(--lims-ok-suave); border-color: #b5e2c4; color: #0f5f2c; }
.lims .alert-secondary, .lims .alert-light { background: #f6f7f9; border-color: var(--lims-linea); color: var(--lims-texto); }
.lims-vacio { padding: 2.25rem 1rem; text-align: center; color: var(--lims-apagado); font-weight: 500; }
.lims-vacio .bi { display: block; font-size: 1.8rem; margin-bottom: .5rem; color: var(--lims-marca-borde); }

/* Avisos emergentes y diálogos */
.lims #toast-container > div { border-radius: 12px; box-shadow: var(--lims-sombra-alta); opacity: 1; font-family: var(--lims-letra); font-size: .84rem; font-weight: 500;
  padding-top: .85rem; padding-bottom: .85rem; }
.lims .swal2-popup { border-radius: 18px; font-family: var(--lims-letra); }
.lims .swal2-title { font-size: 1.15rem; font-weight: 700; color: var(--lims-tinta); }
.lims .swal2-styled.swal2-confirm { background: var(--lims-marca); border-radius: 10px; font-weight: 600; }
.lims .swal2-styled.swal2-cancel { border-radius: 10px; font-weight: 600; }
.lims .modal-content { border: 0; border-radius: 18px; box-shadow: var(--lims-sombra-alta); }

/* ───────── Páginas sin sesión (entrar, código de verificación) ───────── */
body.lims-entrada { min-height: 100vh; min-height: 100dvh; margin: 0; display: grid; place-items: center; padding: 1.5rem 1rem;
  background: radial-gradient(60rem 40rem at 85% -10%, var(--lims-marca-tinte), transparent 60%), radial-gradient(50rem 36rem at -10% 110%, var(--lims-marca-suave), transparent 60%), var(--lims-lado); }
.lims-entrada-caja { width: 100%; max-width: 25.5rem; background: #fff; border: 1px solid var(--lims-linea); border-radius: 22px; padding: 2.1rem 2rem 1.9rem;
  box-shadow: var(--lims-sombra-alta); }
.lims-entrada-marca { display: flex; align-items: center; gap: .65rem; margin-bottom: 1.5rem; }
.lims-entrada-marca .lims-logo { width: 2.4rem; height: 2.4rem; font-size: 1.25rem; border-radius: 12px; }
.lims-entrada-marca .lims-lado-nombre { font-size: 1.25rem; }
.lims-entrada-marca .lims-lado-lab { font-size: .68rem; font-weight: 700; letter-spacing: .14em; }
/* El aviso de entorno va en la esquina de la caja, para que el nombre de la puerta no se corte («Laboratoires Gasset»). */
.lims-entrada-caja { position: relative; padding-top: 2.6rem; }
.lims-entrada-marca .lims-chip { position: absolute; top: .85rem; right: 1rem; }
.lims-entrada h1 { font-size: 1.3rem; font-weight: 700; letter-spacing: -.015em; color: var(--lims-tinta); margin: 0 0 .3rem; }
.lims-entrada .lims-subtitulo { margin-bottom: 1.25rem; }
.lims-entrada .form-control { padding: .65rem .85rem; background: var(--lims-relleno); border-color: transparent; }
.lims-entrada .form-control:focus { background: #fff; }
.lims-entrada .btn-primary { --bs-btn-padding-y: .65rem; --bs-btn-font-size: .9rem; width: 100%; }
.lims-entrada-pie { margin-top: 1.25rem; text-align: center; font-size: .74rem; color: var(--lims-apagado); }
.lims-entrada .lims-codigo-2fa { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 1.4rem; letter-spacing: .3em; text-align: center; }

/* ───────── Estrecho: el menú se guarda y aparece una barra arriba ───────── */
@media (max-width: 900px) {
  body.lims { display: block; overflow: hidden; }
  .lims-principal { height: 100vh; height: 100dvh; }
  .lims-barra-movil { display: flex; align-items: center; gap: .5rem; padding: .5rem .75rem; border-bottom: 1px solid var(--lims-linea-suave); background: #fff; flex: none; }
  .lims-barra-movil .lims-logo { width: 1.75rem; height: 1.75rem; font-size: .95rem; border-radius: 8px; }
  .lims-barra-movil .lims-lado-nombre { font-size: 1rem; margin-right: auto; }
  /* Cerrado no solo se aparta: se oculta (visibility), para que sus enlaces no queden en el orden del tabulador ni a la
     vista de un lector de pantalla. El retardo deja terminar el deslizamiento antes de ocultarlo. */
  .lims-lado { position: fixed; inset: 0 auto 0 0; z-index: 1045; width: min(86vw, 19rem); transform: translateX(-102%); visibility: hidden;
    transition: transform .22s cubic-bezier(.2, .8, .2, 1), visibility 0s linear .22s; box-shadow: none; }
  .lims-menu-abierto .lims-lado { transform: none; visibility: visible; transition: transform .22s cubic-bezier(.2, .8, .2, 1), visibility 0s; box-shadow: var(--lims-sombra-alta); }
  .lims-velo { display: block; position: fixed; inset: 0; z-index: 1040; background: rgba(13, 22, 31, .35); opacity: 0; pointer-events: none; transition: opacity .2s; border: 0; }
  .lims-menu-abierto .lims-velo { opacity: 1; pointer-events: auto; }
  .lims-zona { padding: 1rem .9rem 2rem; }
  .lims-zona h1 { font-size: 1.2rem; }
  .lims-tarjeta { padding: .9rem .95rem; border-radius: 12px; }
  .lims-tareas { grid-template-columns: 1fr; }
  .lims-cabecera .btn { flex: 1 1 auto; }
  .lims-entrada-caja { padding: 1.6rem 1.25rem 1.4rem; border-radius: 18px; }
}
@media (prefers-reduced-motion: reduce) {
  .lims-progreso::after { animation: none; width: 100%; }
  .lims-lado, a.lims-tarea { transition: none; }
}
@media print {
  .lims-lado, .lims-barra-movil, .lims-progreso { display: none !important; }
  body.lims { display: block; height: auto; overflow: visible; }
  .lims-principal { display: block; height: auto; }
  .lims-zona { overflow: visible; padding: 0; }
  .lims-tarjeta, .lims-tarjeta.p-0 { box-shadow: none; overflow: visible; }
  .lims-velo { display: none !important; }
}
