/* Intranet de gestión · Cáxar de la Vega
   Colores de marca: verde oscuro #2E4C25, verde #538445, lima #D7E02B.
   OJO: los .otf de Basic Sans son versión DEMO (el "4" sale con marca de agua):
   solo se usan para letras (sin cifras) y en títulos. */

@font-face { font-family: "Basic Sans"; src: url("../fonts/basicsans-regular.otf") format("opentype"); font-weight: 400; font-display: swap; unicode-range: U+0020-002E, U+003A-007E, U+00A0-024F, U+2010-2027; }
@font-face { font-family: "Basic Sans"; src: url("../fonts/basicsans-semibold.otf") format("opentype"); font-weight: 600; font-display: swap; unicode-range: U+0020-002E, U+003A-007E, U+00A0-024F, U+2010-2027; }
@font-face { font-family: "Basic Sans"; src: url("../fonts/basicsans-bold.otf") format("opentype"); font-weight: 700; font-display: swap; unicode-range: U+0020-002E, U+003A-007E, U+00A0-024F, U+2010-2027; }

:root {
  --verde-950: #142310;
  --verde-900: #1f3519;
  --verde-800: #2E4C25;
  --verde-600: #538445;
  --verde-100: #e7efe3;
  --verde-50: #f3f7f1;
  --lima: #D7E02B;

  --fondo: #f4f5f1;
  --superficie: #ffffff;
  --borde: #e1e4db;
  --borde-fuerte: #cdd3c5;
  --texto: #1d2419;
  --texto-suave: #5d6657;
  --peligro: #b3261e;
  --peligro-suave: #fbe9e7;
  --aviso: #8a5a00;
  --aviso-suave: #fff4d6;
  --info-suave: #e6eff8;

  --radio: 12px;
  --radio-peque: 8px;
  --sombra: 0 1px 2px rgba(31, 53, 25, .06), 0 4px 14px rgba(31, 53, 25, .05);
  --lateral: 272px;
  --fuente-titulos: "Basic Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --fuente: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font-family: var(--fuente); font-size: 15px; line-height: 1.5; color: var(--texto); background: var(--fondo); }
img { max-width: 100%; }
a { color: var(--verde-600); }
h1, h2, h3 { line-height: 1.2; margin: 0; font-weight: 700; color: var(--verde-800); font-family: var(--fuente-titulos); }
:focus-visible { outline: 3px solid var(--lima); outline-offset: 2px; }
[hidden] { display: none !important; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.suave { color: var(--texto-suave); margin: 0; }

.icono { width: 1.2em; height: 1.2em; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.icono--grande { width: 48px; height: 48px; color: var(--verde-600); }

.saltar { position: absolute; left: -999px; top: 8px; background: var(--verde-800); color: #fff; padding: 8px 12px; border-radius: var(--radio-peque); z-index: 100; }
.saltar:focus { left: 8px; }

/* ---------- Botones y formularios ---------- */
.boton { display: inline-flex; align-items: center; justify-content: center; gap: .45em; border: 1px solid transparent; border-radius: 999px; padding: .6em 1.2em; font: inherit; font-weight: 600; text-decoration: none; cursor: pointer; white-space: nowrap; transition: background .15s, border-color .15s; }
.boton--primario { background: var(--verde-600); color: #fff; }
.boton--primario:hover { background: var(--verde-800); }
.boton--secundario { background: var(--superficie); color: var(--verde-800); border-color: var(--borde-fuerte); }
.boton--secundario:hover { border-color: var(--verde-600); }
.boton--peque { padding: .35em .85em; font-size: .85rem; }
.boton--ancho { width: 100%; }
.boton-icono { display: inline-grid; place-items: center; width: 38px; height: 38px; border: 0; border-radius: 50%; background: transparent; color: inherit; cursor: pointer; }
.boton-icono:hover { background: rgba(0, 0, 0, .06); }
.enlace { border: 0; background: none; padding: 0; font: inherit; font-size: .85rem; color: var(--verde-600); cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }

.formulario { display: grid; gap: 16px; }
.campo { display: grid; gap: 6px; font-weight: 600; font-size: .85rem; color: var(--verde-800); }
.campo input, .campo select, .campo textarea { font: inherit; font-weight: 400; color: var(--texto); padding: .6em .8em; border: 1px solid var(--borde-fuerte); border-radius: var(--radio-peque); background: #fff; width: 100%; }
.campo input:focus, .campo select:focus, .campo textarea:focus { border-color: var(--verde-600); outline: 3px solid var(--verde-100); }

.aviso { padding: 10px 14px; border-radius: var(--radio-peque); margin-bottom: 16px; border-left: 4px solid; }
.aviso--ok { background: var(--verde-50); border-color: var(--verde-600); color: var(--verde-800); }
.aviso--error { background: var(--peligro-suave); border-color: var(--peligro); color: var(--peligro); }

.tarjeta { background: var(--superficie); border: 1px solid var(--borde); border-radius: var(--radio); box-shadow: var(--sombra); padding: 18px; }
.chip { display: inline-flex; align-items: center; min-width: 26px; justify-content: center; padding: 1px 8px; border-radius: 999px; background: var(--verde-100); color: var(--verde-800); font-size: .75rem; font-weight: 600; }
.chip--apagado { background: #eef0ea; color: #8a9184; }

/* ---------- Acceso ---------- */
.acceso { min-height: 100vh; display: grid; grid-template-columns: minmax(320px, 500px) 1fr; }
.acceso__panel { background: var(--superficie); padding: 48px clamp(24px, 5vw, 64px); display: flex; flex-direction: column; justify-content: center; }
.acceso__logo { width: 260px; margin-bottom: 36px; }
.acceso__zona { margin: 0 0 6px; font-size: .75rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--verde-600); }
.acceso h1 { font-size: 1.7rem; }
.acceso__intro { color: var(--texto-suave); margin: 8px 0 24px; }
.acceso__fondo { color: #fff; display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-end; gap: 12px; padding: clamp(32px, 5vw, 64px);
  background: linear-gradient(to top, rgba(20, 35, 16, .94) 0%, rgba(31, 53, 25, .6) 45%, rgba(31, 53, 25, .15) 75%), url("../img/fachada.jpg") center / cover no-repeat, var(--verde-800);
  background: linear-gradient(to top, rgba(20, 35, 16, .94) 0%, rgba(31, 53, 25, .6) 45%, rgba(31, 53, 25, .15) 75%), image-set(url("../img/fachada.webp") type("image/webp"), url("../img/fachada.jpg") type("image/jpeg")) center / cover no-repeat, var(--verde-800); }
.acceso__fondo img { width: 64px; }
.acceso__fondo p { font-family: var(--fuente-titulos); font-size: 1.7rem; letter-spacing: .08em; text-transform: uppercase; margin: 0; }
.acceso__fondo p::after { content: ""; display: block; width: 56px; height: 4px; border-radius: 2px; background: var(--lima); margin-top: 12px; }
@media (max-width: 760px) {
  .acceso { grid-template-columns: 1fr; }
  .acceso__fondo { display: none; }
}

/* ---------- Errores ---------- */
.error { min-height: 100vh; display: grid; place-items: center; padding: 16px; }
.error__caja { max-width: 460px; text-align: center; padding: 36px 28px; display: grid; gap: 10px; justify-items: center; }
.error__caja p { margin: 0; color: var(--texto-suave); }
.error__codigo { font-size: 2.6rem; font-weight: 800; color: var(--verde-600) !important; line-height: 1; }
.error__caja .boton { margin-top: 10px; }

/* ---------- Estructura del panel ---------- */
.lateral { position: fixed; inset: 0 auto 0 0; width: var(--lateral); background: var(--verde-900); color: #d9e3d3; display: flex; flex-direction: column; z-index: 40; transition: transform .2s ease; }
.lateral__marca { display: flex; align-items: center; justify-content: space-between; padding: 18px 14px 12px 18px; }
.lateral__logo { display: grid; gap: 4px; text-decoration: none; }
.lateral__logo img { width: 200px; display: block; filter: brightness(0) invert(1); }
.lateral__logo span { font-family: var(--fuente-titulos); font-size: .7rem; letter-spacing: .18em; text-transform: uppercase; color: var(--lima); padding-left: 2px; }
.lateral__cerrar { display: none; color: #fff; }
.lateral__buscar { display: flex; align-items: center; gap: 8px; margin: 4px 14px 8px; padding: 0 10px; border-radius: var(--radio-peque); background: rgba(255,255,255,.08); color: #a9bfa0; }
.lateral__buscar:focus-within { background: rgba(255,255,255,.14); }
.lateral__buscar input { flex: 1; min-width: 0; border: 0; background: none; color: #fff; font: inherit; padding: 8px 0; outline: none; }
.lateral__buscar input::placeholder { color: #a9bfa0; }
.lateral__nav { overflow-y: auto; padding: 4px 10px 24px; flex: 1; font-family: var(--fuente-titulos); }
.lateral__nav ul { list-style: none; margin: 0; padding: 0; }
.lateral__nav a, .lateral__grupo summary { display: flex; align-items: center; gap: 11px; padding: 8px 10px; border-radius: var(--radio-peque); color: inherit; text-decoration: none; cursor: pointer; }
.lateral__nav a:hover, .lateral__grupo summary:hover { background: rgba(255, 255, 255, .07); color: #fff; }
.lateral__nav a[aria-current="page"] { background: var(--lima); color: var(--verde-950); font-weight: 600; }
.lateral__grupo summary { list-style: none; }
.lateral__grupo summary span { flex: 1; }
.lateral__grupo summary::-webkit-details-marker { display: none; }
.lateral__flecha { width: 1em; height: 1em; opacity: .6; transition: transform .15s; }
.lateral__grupo[open] .lateral__flecha { transform: rotate(90deg); }
.lateral__grupo ul { padding: 2px 0 6px 21px; margin-left: 10px; border-left: 1px solid rgba(255,255,255,.12); }
.lateral__grupo ul a { font-size: .9rem; padding: 6px 10px; }
.lateral__vacio { padding: 8px 12px; color: #a9bfa0; font-size: .85rem; }

.principal { margin-left: var(--lateral); min-height: 100vh; display: flex; flex-direction: column; }
.barra { position: sticky; top: 0; z-index: 30; display: flex; align-items: center; gap: 12px; padding: 10px clamp(16px, 3vw, 32px); background: rgba(244, 245, 241, .92); backdrop-filter: blur(8px); border-bottom: 1px solid var(--borde); }
.barra__menu { display: none; }
.migas { flex: 1; min-width: 0; display: flex; align-items: center; gap: 6px; font-size: .875rem; color: var(--texto-suave); white-space: nowrap; overflow: hidden; }
.migas a { color: inherit; text-decoration: none; }
.migas a:hover { color: var(--verde-600); }
.migas .icono { width: .9em; height: .9em; opacity: .6; }
.migas [aria-current] { color: var(--texto); font-weight: 600; overflow: hidden; text-overflow: ellipsis; }
.barra__usuario { display: flex; align-items: center; gap: 10px; }
.barra__usuario form { margin: 0; }
.barra__nombre { display: grid; line-height: 1.2; text-align: right; }
.barra__nombre strong { font-size: .875rem; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.barra__nombre small { font-size: .75rem; color: var(--texto-suave); }
.avatar { display: inline-grid; place-items: center; flex: none; width: 34px; height: 34px; border-radius: 50%; background: var(--verde-800); color: var(--lima); font-weight: 700; font-size: .8rem; object-fit: cover; }
.avatar--grande { width: 64px; height: 64px; font-size: 1.3rem; }

.contenido { padding: clamp(16px, 3vw, 32px); width: 100%; max-width: none; }
.cabecera { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }
.cabecera h1 { font-size: 1.5rem; }
.cabecera__acciones { display: flex; gap: 8px; flex-wrap: wrap; }
.velo { display: none; }

@media (max-width: 1024px) {
  .lateral { transform: translateX(-100%); }
  .menu-abierto .lateral { transform: none; box-shadow: 0 0 40px rgba(0,0,0,.3); }
  .menu-abierto .velo { display: block; position: fixed; inset: 0; background: rgba(0,0,0,.35); z-index: 35; }
  .lateral__cerrar, .barra__menu { display: inline-grid; }
  .principal { margin-left: 0; }
}
@media (max-width: 600px) {
  .barra__nombre { display: none; }
}

/* ---------- Inicio ---------- */
.bienvenida { background: var(--verde-800); color: #e6eddf; border-radius: var(--radio); padding: 24px 28px; margin-bottom: 24px; position: relative; overflow: hidden; }
.bienvenida::after { content: ""; position: absolute; right: -40px; top: -40px; width: 180px; height: 180px; border-radius: 50%; background: var(--lima); opacity: .15; }
.bienvenida h2 { color: #fff; font-size: 1.6rem; margin: 2px 0 4px; }
.bienvenida p { margin: 0; }
.bienvenida__fecha { font-size: .8rem; text-transform: uppercase; letter-spacing: .08em; color: var(--lima); }
.areas { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.area { background: var(--superficie); border: 1px solid var(--borde); border-radius: var(--radio); box-shadow: var(--sombra); overflow: hidden; }
.area__cabecera { display: flex; align-items: center; gap: 12px; padding: 16px 18px 10px; }
.area__cabecera h2 { font-size: 1.05rem; }
.area__icono { display: inline-grid; place-items: center; width: 38px; height: 38px; border-radius: 10px; background: var(--verde-100); color: var(--verde-800); }
.area__opciones { list-style: none; margin: 0; padding: 0 8px 10px; }
.area__opciones a { display: flex; justify-content: space-between; align-items: center; padding: 8px 10px; border-radius: var(--radio-peque); color: var(--texto); text-decoration: none; }
.area__opciones a:hover { background: var(--verde-50); color: var(--verde-800); }
.area__opciones .icono { width: 1em; color: var(--texto-suave); }
.vacio { text-align: center; padding: 48px 20px; display: grid; gap: 8px; justify-items: center; }
.vacio p { margin: 0; color: var(--texto-suave); max-width: 420px; }

/* ---------- Listas y filtros ---------- */
.filtro { display: flex; align-items: center; gap: 8px; padding: 0 10px; border: 1px solid var(--borde-fuerte); border-radius: var(--radio-peque); color: var(--texto-suave); background: #fff; }
.filtro:focus-within { border-color: var(--verde-600); outline: 3px solid var(--verde-100); }
.filtro input { flex: 1; min-width: 0; border: 0; font: inherit; padding: 8px 0; outline: none; background: none; }
.lista__titulo { margin: 16px 4px 6px; font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--texto-suave); }
.lista { list-style: none; margin: 0; padding: 0; }
.lista a { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 7px 10px; border-radius: var(--radio-peque); color: var(--texto); text-decoration: none; }
.lista a:hover { background: var(--verde-50); }
.lista a[aria-current] { background: var(--verde-800); color: #fff; }
.lista a[aria-current] small { color: #c9d8c1; }
.lista__texto { display: grid; min-width: 0; line-height: 1.25; }
.lista__texto strong { font-weight: 600; font-size: .9rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lista__texto small { color: var(--texto-suave); font-size: .75rem; }

/* ---------- Permisos ---------- */
.permisos { display: grid; grid-template-columns: 320px 1fr; gap: 20px; align-items: start; }
.permisos__usuarios { position: sticky; top: 76px; max-height: calc(100vh - 100px); overflow-y: auto; padding: 14px; }
.permisos__nuevo { display: grid; gap: 8px; justify-items: start; margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--borde); }
.permisos__nuevo .campo { width: 100%; }
.permisos__cabecera { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; }
.permisos__cabecera h2 { font-size: 1.25rem; }
.permisos__nota { font-size: .85rem; max-width: 340px; }
.grupos { columns: 2 340px; column-gap: 16px; }
.grupo { break-inside: avoid; margin: 0 0 16px; padding: 0; border: 1px solid var(--borde); min-width: 0; }
.grupo__cabecera { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid var(--borde); cursor: pointer; background: var(--verde-50); border-radius: var(--radio) var(--radio) 0 0; }
.grupo__cabecera strong { flex: 1; color: var(--verde-800); font-family: var(--fuente-titulos); }
.grupo__opciones { display: grid; padding: 8px 10px; }
.grupo--apagado .grupo__opciones { opacity: .55; }
.casilla { display: flex; align-items: center; gap: 10px; padding: 5px 6px; border-radius: 6px; cursor: pointer; font-size: .9rem; }
.casilla:hover { background: var(--verde-50); }
input[type="checkbox"] { width: 17px; height: 17px; accent-color: var(--verde-600); flex: none; margin: 0; }
.grupo__pie { display: flex; gap: 14px; padding: 0 16px 12px; }
.barra-guardar { position: sticky; bottom: 0; display: flex; justify-content: flex-end; align-items: center; gap: 10px; padding: 12px 16px; margin-top: 4px; background: rgba(255,255,255,.95); backdrop-filter: blur(6px); border: 1px solid var(--borde); border-radius: var(--radio); box-shadow: 0 -4px 18px rgba(31,53,25,.08); }
.barra-guardar [data-sin-guardar] { margin-right: auto; color: var(--aviso); font-weight: 600; font-size: .875rem; }
@media (max-width: 900px) {
  .permisos { grid-template-columns: 1fr; }
  .permisos__usuarios { position: static; max-height: 360px; }
}

/* ---------- Formularios de ficha ---------- */
.campo textarea { resize: vertical; min-height: 72px; }
.campo--error input, .campo--error select, .campo--error textarea { border-color: var(--peligro); }
.campo__error { color: var(--peligro); font-weight: 500; font-size: .8rem; }
.campo__ayuda { color: var(--texto-suave); font-weight: 400; font-size: .78rem; }
.campo--linea { display: flex; align-items: center; gap: 8px; }
.campo--linea span { white-space: nowrap; }
.rejilla { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 14px 16px; align-items: start; }
.rejilla > .campo { grid-column: span 4; }
.rejilla > .campo--xs { grid-column: span 2; }
.rejilla > .campo--s { grid-column: span 3; }
.rejilla > .campo--m { grid-column: span 4; }
.rejilla > .campo--l { grid-column: span 8; }
.rejilla > .casilla--campo { grid-column: span 6; align-self: end; padding-bottom: 10px; }
@media (max-width: 1200px) {
  .rejilla > .campo, .rejilla > .campo--m { grid-column: span 6; }
  .rejilla > .campo--xs, .rejilla > .campo--s { grid-column: span 3; }
  .rejilla > .campo--l { grid-column: span 12; }
}
@media (max-width: 640px) {
  .rejilla > .campo, .rejilla > .campo--xs, .rejilla > .campo--s, .rejilla > .campo--m, .rejilla > .campo--l, .rejilla > .casilla--campo { grid-column: span 12; }
}
.seccion { margin: 0 0 16px; min-width: 0; }
.seccion legend { float: left; width: 100%; margin-bottom: 14px; font-family: var(--fuente-titulos); font-weight: 700; color: var(--verde-800); font-size: 1.05rem; }
.seccion legend + * { clear: both; }
.seccion__intro { margin: -6px 0 14px; font-size: .875rem; clear: both; }
.formulario--compacto { gap: 10px; margin-bottom: 16px; padding-bottom: 16px; border-bottom: 1px solid var(--borde); justify-items: start; }
.formulario--compacto .campo { width: 100%; }

.ficha { display: grid; gap: 20px; align-items: start; }
.ficha--con-lateral { grid-template-columns: minmax(0, 1fr) 340px; }
.ficha__cabecera { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; }
.ficha__cabecera > div { flex: 1; min-width: 0; }
.ficha__cabecera h2 { font-size: 1.3rem; }
.ficha__lateral { position: sticky; top: 76px; }
.tarjeta__titulo { font-size: 1.05rem; margin-bottom: 12px; }
.observacion { padding: 10px 0; border-top: 1px solid var(--borde); font-size: .9rem; }
.observacion:first-of-type { border-top: 0; }
.observacion time { font-size: .75rem; font-weight: 700; color: var(--verde-600); }
.observacion p { margin: 2px 0; }
@media (max-width: 1100px) {
  .ficha--con-lateral { grid-template-columns: 1fr; }
  .ficha__lateral { position: static; }
}

/* ---------- Listados ---------- */
.filtros { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding: 12px 14px; margin-bottom: 14px; }
.filtros__buscar { flex: 1 1 260px; }
.filtros .campo select { padding: .45em .6em; width: auto; max-width: 240px; }
.pestanas { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 12px; border-bottom: 1px solid var(--borde); }
.pestanas a { display: inline-flex; align-items: center; gap: 8px; padding: 9px 14px; color: var(--texto-suave); text-decoration: none; font-weight: 600; border-bottom: 3px solid transparent; margin-bottom: -1px; }
.pestanas a:hover { color: var(--verde-800); }
.pestanas a[aria-current] { color: var(--verde-800); border-bottom-color: var(--verde-600); }
.tarjeta--tabla { padding: 0; overflow: hidden; }
.tabla-scroll { overflow-x: auto; }
.tabla { width: 100%; border-collapse: collapse; font-size: .9rem; }
.tabla th { text-align: left; font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; color: var(--texto-suave); font-weight: 700; padding: 10px 14px; background: var(--verde-50); border-bottom: 1px solid var(--borde); white-space: nowrap; }
.tabla td { padding: 9px 14px; border-bottom: 1px solid var(--borde); vertical-align: middle; }
.tabla tbody tr:last-child td { border-bottom: 0; }
.tabla tbody tr[data-href] { cursor: pointer; }
.tabla tbody tr:hover { background: #fafbf8; }
.tabla .num { text-align: right; font-variant-numeric: tabular-nums; }
.persona { display: flex; align-items: center; gap: 10px; color: inherit; text-decoration: none; min-width: 220px; }
.persona span { display: grid; line-height: 1.25; }
.persona small { color: var(--texto-suave); font-size: .75rem; }
.persona:hover strong { color: var(--verde-600); }
.contacto { font-size: .85rem; }
.contacto a { display: block; color: var(--texto); text-decoration: none; white-space: nowrap; }
.contacto a:hover { color: var(--verde-600); }
.estado { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: .78rem; font-weight: 600; white-space: nowrap; background: var(--aviso-suave); color: var(--aviso); }
.estado--1 { background: var(--verde-100); color: var(--verde-800); }
.estado--0 { background: #eceee9; color: #6b7366; }
.fila--apagada td { color: #8a9184; }
.estado--boton { border: 0; cursor: pointer; font: inherit; font-size: .78rem; font-weight: 600; }
.estado--boton:hover { outline: 2px solid currentColor; outline-offset: 1px; }
.persona--lista { padding: 7px 0; border-top: 1px solid var(--borde); min-width: 0; }
.persona--lista:first-of-type { border-top: 0; }
.nota { font-size: .85rem; margin-top: 10px; }
.ficha__lateral { display: grid; gap: 16px; }
.contrato-mini { display: grid; padding: 8px 0; border-top: 1px solid var(--borde); color: var(--texto); text-decoration: none; font-size: .875rem; }
.contrato-mini:first-of-type { border-top: 0; }
.contrato-mini small { color: var(--texto-suave); }
a.contrato-mini:hover strong { color: var(--verde-600); }
.tarjeta__pie { display: flex; gap: 14px; margin: 8px 0 0; font-size: .85rem; }
.filtros .campo input[type="date"] { padding: .4em .5em; width: auto; }
.paginacion { display: flex; align-items: center; justify-content: center; gap: 14px; margin-top: 16px; }
.paginacion [aria-disabled] { opacity: .45; pointer-events: none; }
.ficha__cabecera h2 a { color: inherit; text-decoration: none; }
.ficha__cabecera h2 a:hover { color: var(--verde-600); }

/* ---------- Solicitudes ---------- */
.desplegable { padding: 0; margin-bottom: 14px; }
.desplegable > summary { display: flex; align-items: center; gap: 8px; padding: 12px 16px; cursor: pointer; font-weight: 600; color: var(--verde-800); list-style: none; }
.desplegable > summary::-webkit-details-marker { display: none; }
.desplegable[open] > summary { border-bottom: 1px solid var(--borde); }
.desplegable__cuerpo { padding: 16px; }
.rejilla__acciones { grid-column: span 12; display: flex; justify-content: flex-end; }
.chip--aviso { background: var(--aviso-suave); color: var(--aviso); }
.nowrap { white-space: nowrap; }
.texto-largo { min-width: 160px; max-width: 260px; font-size: .85rem; color: var(--texto-suave); }
.estado--paso1 { background: #eef0ea; color: #4f5a49; }
.estado--paso2 { background: var(--info-suave, #e6eff8); color: #285d8f; }
.estado--paso3 { background: var(--aviso-suave); color: var(--aviso); }
.acciones { min-width: 180px; }
.acciones__aprobar { display: flex; align-items: flex-end; gap: 8px; flex-wrap: wrap; }
.campo--mini { gap: 2px; font-size: .72rem; }
.campo--mini input, .campo--mini select { padding: .3em .45em; font-size: .85rem; width: auto; max-width: 160px; }
.campo--mini input[type="number"] { width: 64px; }
.rechazo { margin-top: 6px; }
.rechazo > summary { display: inline; list-style: none; font-size: .8rem; color: var(--peligro); }
.rechazo > summary::-webkit-details-marker { display: none; }
.rechazo form { display: flex; gap: 6px; margin-top: 6px; }
.rechazo input { flex: 1; min-width: 140px; font: inherit; font-size: .85rem; padding: .35em .5em; border: 1px solid var(--borde-fuerte); border-radius: 6px; }
.boton--peligro { background: var(--superficie); color: var(--peligro); border-color: #efc5c1; }
.boton--peligro:hover { background: var(--peligro-suave); }
.bloque { display: block; font-size: .75rem; }
.valor { margin: 0; padding: .6em 0; font-weight: 400; color: var(--texto); }
.cabecera__acciones form { margin: 0; }
.filtros__resumen { margin: 0 0 0 auto; color: var(--texto-suave); }
.filtros__resumen strong { color: var(--verde-800); font-size: 1.1rem; }
.ausentes { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 16px; align-items: start; }
.ausente { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-top: 1px solid var(--borde); font-size: .9rem; }
.ausente:first-of-type { border-top: 0; }
.ausente div { display: grid; min-width: 0; }
.ausente small { color: var(--texto-suave); }
.ausente__fechas { white-space: nowrap; color: var(--texto-suave); font-size: .82rem; }
.aviso__detalle { font-size: .85rem; margin-top: 4px; word-break: break-word; }
.pasos { display: grid; gap: 0; }
.paso-num { display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--verde-800); color: var(--lima); font-size: .75rem; }
.texto-peligro { color: var(--peligro); }
code { font-size: .85em; background: var(--verde-50); padding: 1px 5px; border-radius: 4px; }
.progreso-celda { min-width: 150px; }
.progreso { height: 8px; border-radius: 999px; background: #eceee9; overflow: hidden; margin-bottom: 3px; }
.progreso span { display: block; height: 100%; background: var(--verde-600); border-radius: 999px; }
.progreso-celda small { color: var(--texto-suave); font-size: .78rem; }
.desplegable-mini { margin-top: 10px; } .desplegable-mini > summary { list-style: none; font-size: .85rem; } .desplegable-mini > summary::-webkit-details-marker { display: none; } .desplegable-mini form { margin-top: 8px; }
.importancia { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: .78rem; font-weight: 600; }
.importancia--danger { background: var(--peligro-suave); color: var(--peligro); }
.importancia--warning { background: var(--aviso-suave); color: var(--aviso); }
.importancia--success { background: var(--verde-100); color: var(--verde-800); }
.videos { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.video { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.video__miniatura img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: var(--verde-100); }
.video__texto { padding: 14px 16px; display: grid; gap: 6px; flex: 1; }
.video__texto h2 { font-size: 1rem; }
.video__texto p { margin: 0; font-size: .875rem; }
.video__pie { display: flex; gap: 14px; align-items: center; margin-top: auto; font-size: .85rem; }
.video__pie form { margin: 0; }
.carpeta-item { padding: 6px 0; border-top: 1px solid var(--borde); margin-top: 0; } .carpeta-item:first-of-type { border-top: 0; } .carpeta-item > summary { cursor: pointer; } .carpeta-nueva { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--borde); border-bottom: 0; margin-bottom: 0; padding-bottom: 0; }
.candidatos { max-height: 420px; overflow-y: auto; width: 100%; border: 1px solid var(--borde); border-radius: var(--radio-peque); padding: 4px; }
.factura__mes { font-weight: 700; } .desplegable > summary .factura__importe { margin-left: auto; color: var(--verde-800); } .desplegable > summary .suave { font-weight: 400; font-size: .875rem; }
.titulo-seccion { font-size: 1.1rem; margin: 22px 0 10px; }
.ratio .ratio--total td { background: var(--verde-50); font-weight: 600; }
.ratio .ratio--falta td:last-child { color: var(--peligro); }
.ratio tr:not(.ratio--falta) td:last-child { color: var(--verde-800); }
.nota-calculo { margin-top: 20px; font-size: .9rem; }
.nota-calculo p { margin: 0 0 8px; }
@media print {
  .lateral, .barra, .cabecera__acciones, .nota-calculo, .velo, .saltar { display: none !important; }
  .principal { margin: 0; }
  .contenido { padding: 0; max-width: none; }
  .tarjeta { box-shadow: none; break-inside: avoid; }
  body { background: #fff; font-size: 11px; }
}
.nota-superior { margin: -8px 0 14px; } .acciones-form { display: flex; gap: 12px; align-items: center; }
.menu-grupo { margin-bottom: 14px; }
.menu-grupo__cabecera { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: var(--verde-50); border-bottom: 1px solid var(--borde); }
.menu-grupo__cabecera a { color: var(--verde-800); text-decoration: none; }
.menu-grupo__cabecera form { margin: 0 0 0 auto; }
.mapa { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; align-items: start; }
.mapa__grupo { display: flex; align-items: center; gap: 8px; }
.mapa__lista { list-style: none; margin: 0; padding: 0; font-size: .9rem; }
.mapa__lista li { display: flex; align-items: center; gap: 8px; padding: 4px 0; color: var(--texto-suave); }
.mapa__lista li span { flex: 1; }
.mapa__hecha { color: var(--texto) !important; }
.mapa__hecha .icono { color: var(--verde-600); }
.mapa__punto { flex: none !important; width: 8px; height: 8px; margin: 0 5px; border-radius: 50%; background: var(--borde-fuerte); }
.mapa__resumen { flex: 1; display: grid; gap: 10px; }
.progreso--grande { height: 12px; }

/* ---------- Planillas ---------- */
.turno-chip { display: inline-grid; place-items: center; min-width: 38px; padding: 2px 8px; border-radius: 6px; font-weight: 700; font-size: .82rem; color: var(--texto); text-decoration: none; border: 1px solid rgba(0,0,0,.06); }
.turno--gris { background: #eceeea; }
.turno--verde { background: #e3f1dc; }
.turno--naranja { background: #fde7cf; }
.turno--amarillo { background: #faf5c4; }
.turno--rojo { background: #fbdcd8; }
.turno--azul { background: #dde9f6; }
.pareja { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; width: 100%; }
.borrar-mini { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--borde); }
.ciclo { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 8px; margin-bottom: 14px; }
.ciclo__dia { display: grid; gap: 3px; font-size: .75rem; color: var(--texto-suave); }
.turno-select { font: inherit; font-weight: 700; font-size: .85rem; padding: .35em .4em; border: 1px solid var(--borde-fuerte); border-radius: 6px; }
.acciones-festivo { display: flex; gap: 6px; flex-wrap: wrap; } .acciones-festivo form { margin: 0; }
.planilla-semana { margin-bottom: 14px; }
.planilla { border-collapse: collapse; width: 100%; font-size: .82rem; }
.planilla th, .planilla td { border-bottom: 1px solid var(--borde); padding: 4px; text-align: center; }
.planilla__nombre { text-align: left !important; min-width: 190px; padding-left: 12px !important; font-weight: 600; position: sticky; left: 0; background: var(--superficie); }
.planilla__nombre small { display: block; font-weight: 400; color: var(--texto-suave); font-size: .72rem; }
.planilla thead th { background: var(--verde-50); font-size: .75rem; color: var(--texto-suave); }
.planilla__dia span { display: block; font-weight: 700; color: var(--verde-800); }
.planilla__dia--festivo span, .planilla__dia--festivo { color: var(--peligro) !important; }
.planilla__dia--hoy { box-shadow: inset 0 -3px 0 var(--verde-600); }
.celda { width: 100%; min-width: 46px; padding: 6px 2px; border: 1px solid rgba(0,0,0,.06); border-radius: 6px; font: inherit; font-weight: 700; cursor: pointer; }
.celda:hover { outline: 2px solid var(--verde-600); }
.turno--vacia { background: #fff; color: #b4b9ae; border-style: dashed; }
.dialogo { border: 0; border-radius: var(--radio); padding: 22px; width: min(420px, 92vw); box-shadow: 0 20px 60px rgba(0,0,0,.25); }
.dialogo::backdrop { background: rgba(20, 35, 16, .35); }
.dialogo h2 { font-size: 1.1rem; }
.herramientas-planilla { margin-top: 18px; }
.fila-empleado { display: flex; align-items: center; gap: 8px; padding: 6px 0; border-top: 1px solid var(--borde); flex-wrap: wrap; }
.fila-empleado:first-child { border-top: 0; }
.fila-empleado span { flex: 1; min-width: 200px; font-size: .9rem; }
.fila-empleado input { font: inherit; font-size: .85rem; padding: .35em .5em; border: 1px solid var(--borde-fuerte); border-radius: 6px; width: 130px; }
.fila-empleado input[type="number"] { width: 80px; }
@media print {
  .filtros, .herramientas-planilla, .dialogo { display: none !important; }
  .celda { border: 0; padding: 2px; }
  .planilla-semana { break-inside: avoid; }
}

/* ---------- DataTables (estilo propio) ---------- */
.dt-container { font-size: .9rem; }
.dt-layout-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 14px; flex-wrap: wrap; }
.dt-layout-row.dt-layout-table { padding: 0; display: block; overflow-x: auto; }
.dt-layout-cell { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.dt-search input { font: inherit; padding: .45em .75em; border: 1px solid var(--borde-fuerte); border-radius: var(--radio-peque); min-width: 240px; }
.dt-search input:focus { border-color: var(--verde-600); outline: 3px solid var(--verde-100); }
.dt-length select { font: inherit; padding: .3em .4em; border: 1px solid var(--borde-fuerte); border-radius: 6px; margin-right: 4px; }
.dt-length label, .dt-info { color: var(--texto-suave); font-size: .85rem; }
.dt-buttons { display: flex; gap: 6px; }
.dt-button { font: inherit; font-size: .82rem; font-weight: 600; padding: .35em .9em; border: 1px solid var(--borde-fuerte); border-radius: 999px; background: var(--superficie); color: var(--verde-800); cursor: pointer; }
.dt-button:hover { border-color: var(--verde-600); }
.dt-paging nav { display: flex; gap: 4px; }
.dt-paging-button { font: inherit; font-size: .85rem; min-width: 32px; padding: .3em .6em; border: 1px solid var(--borde); border-radius: 6px; background: var(--superficie); color: var(--texto); cursor: pointer; }
.dt-paging-button.current { background: var(--verde-800); border-color: var(--verde-800); color: #fff; }
.dt-paging-button.disabled { opacity: .4; cursor: default; }
.dt-paging-button:not(.disabled):not(.current):hover { border-color: var(--verde-600); }
table.dataTable thead th { cursor: pointer; position: relative; padding-right: 22px; }
table.dataTable thead th.dt-orderable-none, table.dataTable thead th.no-ordenar { cursor: default; padding-right: 14px; }
table.dataTable thead th .dt-column-order { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); width: 10px; height: 14px; }
table.dataTable thead th.dt-orderable-asc .dt-column-order::before,
table.dataTable thead th.dt-orderable-desc .dt-column-order::after { content: ""; position: absolute; left: 1px; border: 4px solid transparent; opacity: .3; }
table.dataTable thead th.dt-orderable-asc .dt-column-order::before { top: -1px; border-bottom-color: currentColor; }
table.dataTable thead th.dt-orderable-desc .dt-column-order::after { bottom: -1px; border-top-color: currentColor; }
table.dataTable thead th.dt-ordering-asc .dt-column-order::before, table.dataTable thead th.dt-ordering-desc .dt-column-order::after { opacity: 1; }
table.dataTable td.dt-empty { text-align: center; color: var(--texto-suave); padding: 24px; }
.tarjeta--tabla .tabla-scroll { overflow-x: visible; }
@media print { .dt-layout-row:not(.dt-layout-table) { display: none !important; } }
.pago-linea { display: flex; align-items: center; gap: 6px; } .pago-linea input { font: inherit; font-size: .85rem; padding: .3em .45em; border: 1px solid var(--borde-fuerte); border-radius: 6px; } .pago-linea input[type=number] { width: 90px; }

/* Calendario (rh_calendario.php) */
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.calendario-scroll { overflow-x: auto; }
.calendario { width: 100%; min-width: 760px; border-collapse: collapse; table-layout: fixed; }
.calendario th { padding: 8px; font-size: .8rem; text-transform: uppercase; letter-spacing: .03em; color: var(--texto-suave, #5d6657); border-bottom: 1px solid var(--borde); }
.calendario td { vertical-align: top; height: 110px; padding: 4px 5px; border: 1px solid var(--borde); }
.calendario__num { display: block; font-weight: 700; font-size: .85rem; margin-bottom: 3px; }
.calendario--fuera { background: #f7f8f5; color: #b4b9ae; }
.calendario--festivo .calendario__num { color: var(--peligro); }
.calendario--hoy { box-shadow: inset 0 0 0 2px var(--verde-600, #4f7a3a); }
.evento { display: block; margin: 0 0 3px; padding: 2px 6px; border-radius: 5px; font-size: .76rem; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border-left: 3px solid rgba(0,0,0,.25); }
td .evento { max-width: 100%; }
.tabla .evento { display: inline-block; white-space: normal; }
.evento--blue { background: #dde9f6; } .evento--cyan { background: #d6f0f0; } .evento--green { background: #e3f1dc; }
.evento--orange { background: #fde7cf; } .evento--red { background: #fbdcd8; } .evento--purple { background: #ebe0f4; } .evento--grey { background: #eceeea; }
@media print { .calendario td { height: 80px; } .desplegable { display: none !important; } }
.evento-grupo > summary { cursor: pointer; list-style: none; font-weight: 600; }
.evento-grupo > summary::-webkit-details-marker { display: none; }
.evento-grupo > summary::after { content: " ▾"; }
.evento-grupo[open] > summary::after { content: " ▴"; }
.evento-grupo .evento { margin-left: 6px; }
.ausentes__resumen { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 12px; }

/* Residentes */
.foto-subir { margin-top: 4px; font-size: .85rem; }
.aviso-comedor { display: flex; justify-content: space-between; gap: 8px; align-items: center; padding: 6px 10px; margin-bottom: 6px; border-radius: 6px; border-left: 4px solid; font-size: .9rem; }
.aviso-comedor--info { background: #dde9f6; border-color: #3d7cc9; } .aviso-comedor--success { background: #e3f1dc; border-color: #4f7a3a; }
.aviso-comedor--amarillo { background: #faf5c4; border-color: #c9b52a; } .aviso-comedor--naranja { background: #fde7cf; border-color: #e08a2c; }
.aviso-comedor--danger { background: #fbdcd8; border-color: #b3261e; } .aviso-comedor--fucsia { background: #f8dcef; border-color: #c2368f; }
.aviso-comedor--dark { background: #e4e4e4; border-color: #333; } .aviso-comedor--notipo, .aviso-comedor-- { background: #eceeea; border-color: #999; }
.grafico { width: 100%; height: auto; display: block; }
.grafico__guia { stroke: var(--borde); stroke-width: 1; }
.grafico__texto { font-size: 11px; fill: #6b7466; }
.grafico__linea { fill: none; stroke-width: 2.5; stroke-linejoin: round; }
.grafico__linea--1, .grafico__marca--1 { stroke: #4f7a3a; background: #4f7a3a; }
.grafico__linea--2, .grafico__marca--2 { stroke: #e08a2c; background: #e08a2c; }
.grafico__leyenda { font-size: .85rem; display: flex; gap: 6px; align-items: center; margin: 6px 0 0; }
.grafico__marca { display: inline-block; width: 14px; height: 4px; border-radius: 2px; margin-left: 10px; }
.entrada-num { width: 110px; text-align: right; } .tabla--compacta td { padding-top: 4px; padding-bottom: 4px; }
/* Almuerzos: mesas y puestos */
.mesas { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 14px; }
.mesa { padding: 12px; } .mesa--apagada { opacity: .6; }
.mesa__titulo { font-size: .95rem; margin: 0 0 8px; }
.asiento { display: flex; align-items: center; gap: 4px; border-top: 1px solid var(--borde); }
.asiento__boton { flex: 1; display: flex; gap: 8px; align-items: center; text-align: left; background: none; border: 0; padding: 6px 2px; cursor: pointer; font: inherit; color: inherit; min-width: 0; }
.asiento__boton:hover { background: var(--verde-50, #f1f6ee); }
.asiento__num { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: #e3f1dc; font-size: .75rem; font-weight: 700; flex: none; }
.asiento--libre .asiento__num { background: #eceeea; }
.asiento__nombre { display: grid; font-size: .88rem; min-width: 0; } .asiento__nombre small { color: var(--peligro); }
.asiento__quitar { width: 28px; height: 28px; }
@media print { .asiento__quitar, .dialogo { display: none !important; } .mesas { grid-template-columns: repeat(3, 1fr); } }
.obs-linea { display: flex; gap: 6px; } .obs-linea input { flex: 1; min-width: 120px; }
.observacion-mini { font-size: .88rem; margin: 0 0 8px; }
.festivo-mini { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 6px; font-size: .9rem; }
/* Inicio: paneles según el usuario */
.paneles { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; margin-bottom: 22px; align-items: start; }
.paneles:empty { display: none; }
.panel { padding: 16px; } .panel--ancho { grid-column: 1 / -1; }
.panel .tarjeta__titulo { display: flex; align-items: center; gap: 8px; }
.panel__subtitulo { font-size: .9rem; margin: 12px 0 4px; color: var(--texto-suave, #5d6657); }
.panel__linea { margin: 0 0 8px; font-size: .9rem; }
.lista-simple { margin: 0; padding-left: 18px; font-size: .9rem; }
.cumples { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.cumples li { display: flex; gap: 10px; align-items: center; } .cumples span { display: grid; } .cumples small { color: var(--texto-suave, #5d6657); }
.paradas { margin: 0; padding-left: 22px; display: grid; gap: 6px; }
.parada > * { vertical-align: middle; } .parada { padding: 6px 0; border-bottom: 1px solid var(--borde); }
.parada > div { display: grid; } .parada small { color: var(--texto-suave, #5d6657); } .parada form { margin-top: 4px; }
.parada--hecha { opacity: .65; }
.visita { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; padding: 8px 0; border-bottom: 1px solid var(--borde); }
.visita > div { display: grid; } .visita small { color: var(--texto-suave, #5d6657); }
.firma { display: block; width: 100%; max-width: 360px; border: 1px solid var(--borde); border-radius: 8px; background: #fff; touch-action: none; margin: 8px 0; }
.aviso-chip { display: inline-block; padding: 1px 7px; margin: 1px 0; border-radius: 5px; font-size: .78rem; border-left: 3px solid; } .tabla--hoja td, .tabla--hoja th { font-size: .8rem; white-space: nowrap; }
.pestanas--envolver { flex-wrap: wrap; }
/* Registros UED */
.tabla--registros th { font-size: .72rem; white-space: nowrap; } .tabla--registros td { text-align: center; }
.registro__marca { width: 30px; height: 30px; border: 1px solid var(--borde); border-radius: 6px; background: #fff; cursor: pointer; font-weight: 700; color: #4f7a3a; }
.registro__marca--hecha { background: #e3f1dc; border-color: #4f7a3a; }
.registro--valor { display: flex; gap: 2px; } .registro--valor input { width: 110px; font-size: .8rem; }
.tabla--registros td:first-child { white-space: nowrap; text-align: left; }
.en-linea { display: inline; margin-left: 8px; }
.casillas { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 6px 14px; margin: 6px 0 12px; }
.casillas--lista { grid-template-columns: 1fr; }
.seccion__subtitulo { font-size: .9rem; margin: 12px 0 4px; }
/* Cocina: alérgenos */
.alergenos { display: grid; grid-template-columns: repeat(auto-fill, minmax(74px, 1fr)); gap: 6px; }
.alergeno { display: grid; justify-items: center; gap: 2px; width: 100%; padding: 6px 2px; border: 1px solid var(--borde); border-radius: 8px; background: #fff; cursor: pointer; font-size: .72rem; opacity: .45; }
.alergeno img { width: 34px; height: 34px; } .alergeno--si { opacity: 1; border-color: var(--peligro); background: #fbdcd8; font-weight: 600; }
.pareja--envolver { display: grid; grid-template-columns: 1fr 1fr; gap: 0 10px; }
/* Facturación */
.tabla--facturas td, .tabla--facturas th { white-space: nowrap; font-size: .8rem; }
.fila--alta td { background: #e7f8ee; } .fila--baja td { background: #f6f3c8; } .fila--ayuda td:first-child { box-shadow: inset 4px 0 0 #3d7cc9; }

/* Comidas a domicilio */
.calendario--compacto td { height: 74px; }
.calendario--compacto td small { display: block; font-size: .72rem; color: var(--texto-suave); }
.tabla--planilla th, .tabla--planilla td { padding: 4px 5px; }
.tabla--planilla td.num { text-align: center; }

/* Entrega de EPI */
.documento-epi { max-width: 820px; }
.documento-epi__cabecera { display: flex; align-items: center; gap: 16px; margin-bottom: 12px; }
.documento-epi__cabecera img { height: 48px; } .documento-epi__cabecera h2 { margin: 0; font-size: 1.1rem; }
.documento-epi th { width: 220px; font-weight: 600; }
.documento-epi__pie { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin: 16px 0; }
.documento-epi__motivos { list-style: none; padding: 0; margin: 0; }
.documento-epi__firma { max-width: 280px; border: 1px solid var(--borde); }
@media print { .no-imprimir { display: none !important; } }

/* Encuestas */
.encuesta__pregunta { border: 0; border-top: 1px solid var(--borde); margin: 0; padding: 12px 0; }
.encuesta__pregunta legend { font-weight: 600; padding: 0; margin-bottom: 8px; }
.encuesta__pregunta textarea { width: 100%; font: inherit; }
.encuesta__opciones { display: flex; flex-wrap: wrap; gap: 6px; }
.encuesta__opcion { display: inline-flex; align-items: center; gap: 4px; padding: 6px 10px; border: 1px solid var(--borde-fuerte); border-radius: 8px; cursor: pointer; }
.encuesta__opcion:has(input:checked) { background: var(--verde-50); border-color: var(--verde-600); }

/* Zona del empleado (portal) */
.estado--paso0 { background: #eceee9; color: #6b7366; }
.estado--paso8 { background: #fbe3df; color: var(--peligro); }
.estado--paso9 { background: var(--verde-100); color: var(--verde-800); }
.panel--aviso { border-left: 4px solid var(--aviso); }
.panel__pie { margin: 12px 0 0; font-size: .85rem; }
.cambio { padding: 10px 0; border-top: 1px solid var(--borde); } .cambio:first-of-type { border-top: 0; padding-top: 0; }
.cambio__acciones { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.lista-firmas { list-style: none; margin: 0; padding: 0; }
.lista-firmas li { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 8px 0; border-top: 1px solid var(--borde); }
.lista-firmas li:first-child { border-top: 0; }
.lista-firmas__acciones { display: flex; gap: 6px; flex-shrink: 0; }
.mensajes-portal { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.mensaje-portal { border: 1px solid var(--borde); border-left: 4px solid var(--aviso); border-radius: 8px; padding: 10px 12px; font-size: .9rem; }
.mensaje-portal h3 { font-size: 1rem; margin: 0 0 6px; }
.mensaje-portal--danger { border-left-color: var(--peligro); } .mensaje-portal--success { border-left-color: var(--verde-600); }
.turnos-proximos { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.turnos-proximos li { display: grid; grid-template-columns: 78px auto 1fr; gap: 10px; align-items: center; font-size: .88rem; }
.cifra-grande { font-size: 1.8rem; font-weight: 700; margin: 4px 0; color: var(--verde-800); }
.datos-ficha { display: grid; grid-template-columns: max-content 1fr; gap: 6px 16px; margin: 0; font-size: .92rem; }
.datos-ficha dt { color: var(--texto-suave); } .datos-ficha dd { margin: 0; }
.cuadrante { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.cuadrante__cabecera { font-size: .75rem; font-weight: 700; color: var(--texto-suave); text-align: center; }
.cuadrante__dia { border: 1px solid var(--borde); border-radius: 8px; padding: 6px; min-height: 74px; display: grid; align-content: start; gap: 4px; font-size: .78rem; background: var(--superficie); }
.cuadrante__dia--fuera { background: transparent; border-style: dashed; opacity: .45; }
.cuadrante__dia--hoy { outline: 2px solid var(--verde-600); }
.cuadrante__num { font-weight: 700; }
.cuadrante__dia a { font-size: .72rem; }
@media (max-width: 640px) { .cuadrante { grid-template-columns: repeat(7, minmax(40px, 1fr)); gap: 3px; } .cuadrante__dia { padding: 3px; min-height: 58px; } .cuadrante__dia small { display: none; } }
.carpetas { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; margin-bottom: 18px; }
.carpeta { display: grid; gap: 4px; padding: 14px; border: 1px solid var(--borde); border-radius: var(--radio); background: var(--superficie); text-decoration: none; color: var(--texto); }
.carpeta[aria-current] { border-color: var(--verde-600); box-shadow: 0 0 0 2px var(--verde-100); }
.carpeta small { color: var(--texto-suave); }
.videos { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }
.video__marco { position: relative; aspect-ratio: 16 / 9; border-radius: 8px; overflow: hidden; background: #000; }
.video__marco iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.fila-reembolso { padding: 8px 0; border-top: 1px solid var(--borde); flex-wrap: wrap; } .fila-reembolso:first-of-type { border-top: 0; } .fila-reembolso > span { flex: 1 1 260px; }
.fila-reembolso input { flex: 0 0 auto; }
.foto-ficha { display: block; width: 140px; height: 140px; object-fit: cover; border-radius: 50%; margin: 0 auto 12px; }
.cabecera-mes { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; } .cabecera-mes .tarjeta__titulo { margin: 0; }
.texto-aviso { color: var(--aviso); font-weight: 600; }
.lateral__seccion { margin: 14px 10px 4px; font-size: .7rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #a9bfa0; }
.visor-pdf { padding: 0; overflow: hidden; } .visor-pdf iframe { display: block; width: 100%; height: 75vh; border: 0; }
