/* =====================================================================
   GUÍA DE REGALOS PROMOCIONALES — sistema visual
   Metáfora: mesa editorial de campaña. Papel, tinta, materiales reales
   y fotografía original ordenan el archivo sin convertirlo en catálogo.
   ===================================================================== */

/* ---------------------------------------------------------- Fuentes --- */
/* Self-hosted: el sitio no pide nada a terceros. Archivo (variable 400–700)
   para el texto; Azeret Mono para etiquetas, cifras y veredictos.
   Ambas bajo SIL Open Font License 1.1. Subconjunto latin. */

@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('../fuentes/archivo-variable.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
                 U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F,
                 U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
                 U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Azeret Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fuentes/mono-regular.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
                 U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F,
                 U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
                 U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Azeret Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fuentes/mono-semi.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
                 U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F,
                 U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
                 U+FEFF, U+FFFD;
}

/* ------------------------------------------------------------ Tokens --- */

:root {
  /* Superficies cálidas: el lienzo da aire al portal; el blanco es para fichas. */
  --papel:        #f7f3eb;
  --papel-2:      #eee8dc;
  --papel-3:      #e2dacb;
  --papel-alto:   #fffdf8;

  /* Tinta profunda para navegación, lectura y encabezados. */
  --tinta:        #17231f;
  --tinta-portada: #14231e;
  --tinta-portada-media: #1b3027;
  --tinta-portada-luz: #20382d;
  --tinta-2:      #405049;
  --tinta-3:      #55625a;
  --tinta-4:      #9aa29c;

  /* Identidad del nuevo logotipo. El tono profundo mantiene contraste AA
     en enlaces, etiquetas y foco; el naranja vivo queda para superficies. */
  --marca:          #FBAE03;
  --marca-profundo: #965500;
  --marca-suave:    #FFF0CF;
  --marca-hover:    #FFC44D;
  --acento:         var(--marca);
  --acento-2:       var(--marca-profundo);
  --acento-tenue:   var(--marca-suave);
  --coral:          var(--marca);
  --coral-oscuro:   var(--marca-profundo);
  --verde:        #3e866b;
  --metal:        #d8d0c2;
  --grabado:      #5d675f;
  --marca-punto:  var(--marca);

  /* Semánticos de tabla */
  --ok:           #2f6b46;
  --ok-tenue:     #e0eee4;
  --no:           #9d2f22;
  --no-tenue:     #f6e0dd;
  --mat:          #7a5d0e;
  --mat-tenue:    #f7eecd;

  /* Tablas editoriales: tinta verde, papel claro y guías de lectura suaves. */
  --tabla-cabecera:        var(--tinta);
  --tabla-cabecera-texto:  var(--papel-alto);
  --tabla-borde:           var(--linea);
  --tabla-borde-acento:    var(--acento);
  --tabla-fila-alterna:    var(--papel);
  --tabla-fila-hover:      var(--papel-2);

  /* Retícula */
  --linea:        #d9d1c4;
  --linea-fuerte: #b8b0a1;

  /* Medidas */
  --ancho-max:    80rem;
  --ancho-indice: 18rem;
  --ancho-texto:  46rem;
  --radio:        12px;
  --radio-2:      18px;

  /* Espaciado: escala de 4 */
  --e1: 0.25rem;  --e2: 0.5rem;   --e3: 0.75rem;  --e4: 1rem;
  --e5: 1.5rem;   --e6: 2rem;     --e8: 3rem;     --e10: 4rem;
  --e12: 6rem;

  /* Tipografía */
  --fuente-texto: 'Archivo', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
  --fuente-mono: 'Azeret Mono', ui-monospace, 'SF Mono', Menlo, monospace;
  --fuente-display: 'Archivo', ui-sans-serif, system-ui, sans-serif;

  --s1: 0.8125rem; --s2: 0.9375rem; --s3: 1.0625rem; --s4: 1.25rem;
  --s5: 1.5rem;    --s6: 1.875rem;  --s7: 2.5rem;    --s8: 3.25rem;

  --sombra-ficha: 0 12px 28px rgba(23, 35, 31, .07);
  --sombra-alta:  0 18px 45px rgba(23, 35, 31, .14);
}

/* --------------------------------------------------------- Base ------- */

*, *::before, *::after { box-sizing: border-box; }

html {
  font-size: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: 5rem;
  -webkit-text-size-adjust: 100%;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

body {
  margin: 0;
  background: var(--papel);
  color: var(--tinta);
  font-family: var(--fuente-texto);
  font-size: var(--s3);
  line-height: 1.62;
}

img, svg { max-width: 100%; height: auto; }

a {
  color: var(--tinta);
  text-decoration-color: var(--acento);
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}
a:hover { text-decoration-color: var(--tinta); }

:focus-visible {
  outline: 2px solid var(--acento-2);
  outline-offset: 2px;
  border-radius: var(--radio);
}

/* El destino del enlace «Saltar al contenido» recibe el foco por debajo de
   tab="-1": el anillo alrededor de toda la columna sería ruido, y el aviso
   «saltó al contenido» ya se ve en pantalla. */
main:focus { outline: none; }

h1, h2, h3, h4 {
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -0.015em;
  margin: 0 0 var(--e4);
  text-wrap: balance;
}

p { margin: 0 0 var(--e4); text-wrap: pretty; }

code, .codigo, kbd {
  font-family: var(--fuente-mono);
  font-size: 0.9em;
}

/* --------------------------------------------------------- Utilidades - */

.visualmente-oculto {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.saltar {
  position: absolute;
  top: -100%; left: var(--e4);
  z-index: 100;
  padding: var(--e3) var(--e4);
  background: var(--tinta);
  color: var(--papel-alto);
  font-family: var(--fuente-mono);
  font-size: var(--s1);
  text-decoration: none;
  border-radius: var(--radio);
}
.saltar:focus { top: var(--e4); }

/* ------------------------------------------------------- Botones ------- */

.boton {
  display: inline-flex;
  align-items: center;
  gap: var(--e2);
  padding: var(--e3) var(--e5);
  border: 1px solid var(--tinta);
  border-radius: var(--radio);
  font-family: var(--fuente-mono);
  font-size: var(--s1);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  transition: background 120ms ease, color 120ms ease;
}
.boton-primario { background: var(--tinta); color: var(--papel-alto); }
.boton-primario:hover { background: var(--acento); border-color: var(--acento); }
.boton-linea { background: transparent; color: var(--tinta); }
.boton-linea:hover { background: var(--tinta); color: var(--papel-alto); }
.boton-icono { padding: var(--e2) var(--e3); }
.boton .icono { width: 1.1em; height: 1.1em; }

/* ------------------------------------------------------- Cabecera ----- */

.cabecera {
  position: sticky;
  top: 0;
  z-index: 40;
  background: var(--papel-alto);
  border-bottom: 1px solid var(--linea-fuerte);
}

.cabecera-inner {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--e5);
  max-width: var(--ancho-max);
  margin: 0 auto;
  padding: var(--e3) var(--e5);
}

.marca { display: inline-flex; text-decoration: none; }
.marca-bloque { display: block; width: 11.5rem; line-height: 0; }
.marca-logotipo-marco {
  display: block;
  width: 100%;
}
.marca-logotipo-marco picture { display: block; width: 100%; }
.marca-logotipo { display: block; width: 100%; height: auto; max-width: none; object-fit: contain; object-position: center; }

.menu-btn {
  display: none;
  background: none;
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio);
  padding: var(--e2) var(--e3);
  cursor: pointer;
}
.menu-btn-linea,
.menu-btn-linea::before,
.menu-btn-linea::after {
  display: block;
  width: 1.25rem; height: 1.5px;
  background: var(--tinta);
}
.menu-btn-linea::before,
.menu-btn-linea::after { content: ''; }
.menu-btn-linea::before { transform: translateY(-5px); }
.menu-btn-linea::after  { transform: translateY(3.5px); }

.nav-lista {
  display: flex;
  flex-wrap: wrap;
  gap: var(--e4);
  margin: 0; padding: 0;
  list-style: none;
}
.nav-lista > li { position: relative; }
.nav-lista a {
  display: inline-block;
  padding: var(--e2) 0;
  font-family: var(--fuente-mono);
  font-size: var(--s1);
  letter-spacing: 0.02em;
  text-decoration: none;
  border-bottom: 1px solid transparent;
}
.nav-lista a:hover { border-bottom-color: var(--tinta); }
.nav-lista a[aria-current] { border-bottom-color: var(--acento); color: var(--acento-2); }

.nav-sub {
  position: absolute;
  top: 100%; left: 0;
  z-index: 30;
  min-width: 14rem;
  margin: 0; padding: var(--e2);
  list-style: none;
  background: var(--papel-alto);
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio-2);
  box-shadow: var(--sombra-alta);
  opacity: 0; visibility: hidden;
  transform: translateY(-4px);
  transition: opacity 120ms ease, transform 120ms ease, visibility 120ms;
}
.nav-grupo:hover .nav-sub,
.nav-grupo:focus-within .nav-sub {
  opacity: 1; visibility: visible; transform: translateY(0);
}
.nav-sub a { display: block; padding: var(--e2) var(--e3); border: 0; }
.nav-sub a:hover { background: var(--papel-2); }

.buscador { display: flex; align-items: stretch; gap: 0; }
.buscador input[type="search"] {
  width: 15rem;
  padding: var(--e2) var(--e3);
  font-family: var(--fuente-texto);
  font-size: var(--s2);
  color: var(--tinta);
  background: var(--papel);
  border: 1px solid var(--linea-fuerte);
  border-right: 0;
  border-radius: var(--radio) 0 0 var(--radio);
}
.buscador .boton {
  border-radius: 0 var(--radio) var(--radio) 0;
  background: var(--tinta);
  color: var(--papel-alto);
}
.buscador .boton:hover { background: var(--acento); border-color: var(--acento); }

/* ------------------------------------------------- Índice lateral ------ */

.indice {
  position: sticky;
  top: 4.25rem;
  align-self: start;
  height: calc(100vh - 4.25rem);
  overflow-y: auto;
  border-right: 1px solid var(--linea);
  background: var(--papel-2);
}
.indice-inner { padding: var(--e5) var(--e4) var(--e10); }
.indice-desplegable > summary { display: none; }
.indice-titulo {
  margin: 0 0 var(--e4);
  padding-bottom: var(--e2);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--tinta-3);
  border-bottom: 1px solid var(--linea-fuerte);
}
.indice-lista, .indice-grupo ul, .indice-otros ul {
  margin: 0 0 var(--e6); padding: 0; list-style: none;
}
.indice-grupo-titulo, .indice-otros h2 {
  margin: var(--e5) 0 var(--e2);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--tinta-3);
}
.indice-grupo:first-child .indice-grupo-titulo { margin-top: 0; }
.indice a {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--e2);
  padding: var(--e1) var(--e2);
  font-size: var(--s2);
  text-decoration: none;
  border-left: 2px solid transparent;
}
.indice a:hover { background: var(--papel-3); }
.indice a[aria-current] {
  border-left-color: var(--acento);
  background: var(--papel-alto);
  font-weight: 500;
}
.indice-otros a { color: var(--tinta-2); }

/* ------------------------------------------------- Estructura --------- */

/*
 * El contenedor .disposicion es el grid real: el índice lateral y el
 * contenido son sus dos columnas en escritorio, y se apilan en móvil.
 * Antes esto se intentaba resolver desde main, que no incluye al índice
 * como hijo, así que la columna lateral nunca se ubicaba.
 */
.disposicion {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  max-width: var(--ancho-max);
  margin: 0 auto;
  padding: var(--e6) var(--e5) var(--e12);
}
.disposicion--simple {
  width: min(calc(100% - 3rem), var(--ancho-max));
  max-width: var(--ancho-max);
  margin-inline: auto;
  padding: 0;
}

/* ------------------------------------------------- Colores de registro --- */

/*
 * Cada sección tiene su color de registro (columna secciones.color_registro).
 * El color se aplica con una clase, no con style="--registro: …": la
 * Content-Security-Policy del sitio no permite estilos en línea. Estas 14
 * clases corresponden a los 14 valores de la tabla; la función
 * claseRegistro() de app/helpers/formato.php genera el nombre.
 */
.reg-1f3a34 { --registro: #1f3a34; }
.reg-1f4a5c { --registro: #1f4a5c; }
.reg-2b3a55 { --registro: #2b3a55; }
.reg-2e5c4a { --registro: #2e5c4a; }
.reg-333333 { --registro: #333333; }
.reg-3b3f42 { --registro: #3b3f42; }
.reg-4a4741 { --registro: #4a4741; }
.reg-4b2a5c { --registro: #4b2a5c; }
.reg-5a3d5c { --registro: #5a3d5c; }
.reg-5c2e2e { --registro: #5c2e2e; }
.reg-5c4a2e { --registro: #5c4a2e; }
.reg-6b4f2a { --registro: #6b4f2a; }
.reg-7a2e2e { --registro: #7a2e2e; }
.reg-8a6d1f { --registro: #8a6d1f; }

main { min-width: 0; min-height: 60vh; }

/* Sin columna lateral: el contenido usa todo el ancho disponible. */
body.sin-indice .disposicion {
  grid-template-columns: minmax(0, 1fr);
}

/* ------------------------------------------------- Cabecera de página -- */

.pagina-cabecera {
  max-width: var(--ancho-texto);
  margin-bottom: var(--e6);
  padding-bottom: var(--e4);
  border-bottom: 1px solid var(--linea-fuerte);
}
.ruta-migas {
  margin: 0 0 var(--e4);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--tinta-3);
}
.ruta-migas a { color: var(--tinta-3); text-decoration: none; }
.ruta-migas a:hover { color: var(--tinta); text-decoration: underline; }
.ruta-migas span { margin: 0 var(--e2); }

.pagina-titulo {
  font-size: clamp(1.9rem, 4.5vw, var(--s7));
  letter-spacing: -0.03em;
}
.pagina-bajada {
  font-size: var(--s4);
  color: var(--tinta-2);
  max-width: 38rem;
}
.pagina-lectura {
  padding: var(--e4);
  background: var(--papel-alto);
  border: 1px solid var(--linea-fuerte);
  border-left: 3px solid var(--acento);
  border-radius: var(--radio);
  font-size: var(--s3);
  max-width: 40rem;
}
.lectura-etiqueta {
  display: block;
  margin-bottom: var(--e1);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--acento-2);
}
.pagina-cuenta {
  font-family: var(--fuente-mono);
  font-size: var(--s1);
  color: var(--tinta-3);
}

/* ------------------------------------------------- Portada ------------- */

.portada-banda {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
  gap: var(--e8);
  align-items: center;
  max-width: var(--ancho-max);
  margin: 0 auto;
  padding: var(--e10) var(--e5) var(--e8);
}

/* Macro de superficie en la segunda columna de la banda. 21:9 para que la
   retina del texto no se note: la imagen acompaña, no compite. */
picture.imagen-portada {
  display: block;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  background: var(--papel-3);
  border: 1px solid var(--linea);
  box-shadow: var(--sombra-ficha);
}
picture.imagen-portada img {
  display: block;
  width: 100%; height: 100%;
  object-fit: cover;
}
@media (max-width: 47.99rem) {
  .portada-banda { grid-template-columns: 1fr; }
  picture.imagen-portada { aspect-ratio: 16 / 9; }
}
.portada-titulo {
  font-size: clamp(2.1rem, 5.2vw, 3.6rem);
  line-height: 1.04;
  letter-spacing: -0.038em;
  margin-bottom: var(--e5);
  max-width: 20ch;
}
.portada-bajada {
  font-size: var(--s4);
  color: var(--tinta-2);
  max-width: 34rem;
  margin-bottom: var(--e6);
}
.portada-acciones { display: flex; flex-wrap: wrap; gap: var(--e3); }

.portada-muestra { display: flex; justify-content: center; }
.muestra { width: 100%; max-width: 22rem; }
.muestra-mini,
.muestra-nota {
  font-family: var(--fuente-mono);
  fill: var(--tinta-3);
}
.muestra-mini { font-size: 9px; }
.muestra-nota { font-size: 10px; fill: var(--tinta-2); }
.muestra-guia { stroke-dasharray: 3 5; }
.muestra-grabado {
  font-family: var(--fuente-mono);
  font-size: 15px;
  fill: var(--grabado);
  letter-spacing: 0.1em;
}

.portada-cifras {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  max-width: var(--ancho-max);
  margin: 0 auto var(--e12);
  padding: 0 var(--e5);
}
.portada-cifras > div {
  padding: var(--e5);
  background: var(--papel-alto);
  border: 1px solid var(--linea);
}
.portada-cifras dt {
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--tinta-3);
}
.portada-cifras dd {
  margin: var(--e2) 0 0;
  font-size: var(--s7);
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1;
}
.cifra-nota { font-size: var(--s1); font-weight: 400; color: var(--tinta-3); }

.portada-bloque {
  max-width: var(--ancho-max);
  margin: 0 auto var(--e12);
  padding: 0 var(--e5);
}
.bloque-cabecera { max-width: 40rem; margin-bottom: var(--e5); }
.bloque-cabecera h2 {
  font-size: clamp(1.5rem, 3vw, var(--s6));
  margin-bottom: var(--e2);
}
.bloque-cabecera p { color: var(--tinta-2); margin: 0; }

/* ------------------------------------------------- Secciones ------------ */

.secciones-grilla {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(19rem, 100%), 1fr));
  gap: var(--e6) var(--e8);
}
.secciones-grupo-titulo,
.secciones-bloque h2 {
  margin: 0 0 var(--e3);
  padding-bottom: var(--e2);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--tinta-3);
  border-bottom: 1px solid var(--linea-fuerte);
}
.secciones-lista { margin: 0; padding: 0; list-style: none; }
.secciones-lista li { border-bottom: 1px solid var(--linea); }
.secciones-lista a {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--e3);
  padding: var(--e3) 0;
  text-decoration: none;
}
.secciones-lista a:hover .seccion-nombre { color: var(--acento-2); }
.seccion-ficha,
.tarjeta-sello,
.industria-sello,
.grupo-destacado-sello {
  display: grid;
  place-items: center;
  width: 2.25rem; height: 2.25rem;
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--registro, var(--tinta));
  border: 1px solid currentColor;
  border-radius: var(--radio);
}
.seccion-datos { display: flex; flex-direction: column; gap: var(--e1); }
.seccion-nombre { font-weight: 500; }
.seccion-proposito { font-size: var(--s2); color: var(--tinta-3); }
.seccion-cuenta {
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  color: var(--tinta-3);
}

/* ------------------------------------------------- Tarjetas ------------ */

.tarjetas-grilla {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(17rem, 100%), 1fr));
  gap: var(--e4);
}
.tarjeta {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--e2);
  padding: var(--e4);
  background: var(--papel-alto);
  border: 1px solid var(--linea);
  box-shadow: var(--sombra-ficha);
  transition: border-color 120ms ease, transform 120ms ease;
}
.tarjeta::before {
  content: '';
  position: absolute;
  top: -1px; left: -1px;
  width: 2.25rem; height: 2.25rem;
  border-top: 2px solid var(--registro, var(--tinta));
  border-left: 2px solid var(--registro, var(--tinta));
}
.tarjeta:hover { border-color: var(--linea-fuerte); transform: translateY(-1px); }
.tarjeta-sello {
  align-self: flex-start;
  width: 1.75rem; height: 1.75rem;
  font-size: 0.5625rem;
  border-width: 1px;
}

/* Imagen de la tarjeta: macro de superficie, proporción fija 16:9.
   El sello tipográfico queda como respaldo cuando no hay activo. */
.tarjeta-imagen {
  display: block;
  aspect-ratio: 16 / 9;
  margin: calc(var(--e4) * -1) calc(var(--e4) * -1) 0;
  overflow: hidden;
  background: var(--papel-3);
  border-bottom: 1px solid var(--linea);
}
.tarjeta-imagen-enlace { display: block; overflow: hidden; aspect-ratio: 16 / 9; color: inherit; text-decoration: none; }
.tarjeta-imagen-enlace picture { display: block; width: 100%; height: 100%; }
.tarjeta-imagen-enlace img { display: block; width: 100%; height: 100%; object-fit: cover; }
.tarjeta-imagen-enlace:focus-visible { position: relative; z-index: 1; outline: 3px solid var(--acento-2); outline-offset: -3px; }
.tarjeta-imagen img {
  display: block;
  width: 100%; height: 100%;
  object-fit: cover;
  filter: saturate(0.92);
  transition: transform 200ms ease, filter 200ms ease;
}
.tarjeta:hover .tarjeta-imagen img,
.tarjeta:focus-within .tarjeta-imagen img {
  transform: scale(1.03);
  filter: saturate(1);
}
.tarjeta-con-imagen {
  padding-top: var(--e4);
}
@media (prefers-reduced-motion: reduce) {
  .tarjeta:hover .tarjeta-imagen img,
  .tarjeta:focus-within .tarjeta-imagen img { transform: none; }
}
.tarjeta-seccion {
  display: flex; align-items: center; gap: var(--e2);
  margin: .45rem 0 .25rem;
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: .01em;
  color: var(--tinta-3);
}
.tarjeta-tipo {
  padding: 0 var(--e2);
  border: 1px solid var(--linea-fuerte);
  border-radius: 999px;
  color: var(--tinta-2);
}
.tarjeta-titulo { margin: 0; font-size: var(--s4); }
.tarjeta-titulo a { text-decoration: none; }
.tarjeta-titulo a:hover { color: var(--acento-2); text-decoration: underline; }
.tarjeta-resumen { margin: 0; font-size: var(--s2); color: var(--tinta-2); }
/* ------------------------------------------------- Registro (ficha) ---- */

.ficha { max-width: var(--ancho-texto); }

.registro { margin-bottom: var(--e8); }

/* Imagen de cabecera de ficha: macro de superficie a sangre del contenido,
   16:9 fijo. Es el LCP de la página. */
.registro > picture.imagen-ficha {
  display: block;
  aspect-ratio: 16 / 9;
  margin: 0 0 var(--e5);
  overflow: hidden;
  background: var(--papel-3);
  border: 1px solid var(--linea);
}
.registro > picture.imagen-ficha img {
  display: block;
  width: 100%; height: 100%;
  object-fit: cover;
}

/* Imagen de cabecera de sección: 21:9, más panorámica, también LCP del hub. */
picture.imagen-hub {
  display: block;
  aspect-ratio: 21 / 9;
  margin: 0 0 var(--e6);
  overflow: hidden;
  background: var(--papel-3);
  border: 1px solid var(--linea);
}
picture.imagen-hub img {
  display: block;
  width: 100%; height: 100%;
  object-fit: cover;
}

.registro-ruta {
  margin: 0 0 var(--e4);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--tinta-3);
}
.registro-ruta a { color: var(--tinta-3); text-decoration: none; }
.registro-ruta a:hover { color: var(--tinta); text-decoration: underline; }
.registro-ruta span { margin: 0 var(--e2); }

.registro-cabecera {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--e5);
  align-items: start;
}
.registro-sello { color: var(--registro, var(--tinta)); }
/* Las iniciales van dentro del SVG del sello; el tamaño y el peso se
   declaran aquí porque la CSP no admite atributos style. */
.sello-iniciales {
  font-family: var(--fuente-mono);
  font-size: 15px;
  font-weight: 600;
  fill: currentColor;
}
.sello-svg { width: 4.5rem; height: 4.5rem; }

.registro-titulo {
  font-size: clamp(1.75rem, 4vw, 2.75rem);
  letter-spacing: -0.03em;
  margin-bottom: var(--e3);
  max-width: 22ch;
}
.registro-subtitulo {
  font-size: var(--s4);
  font-style: italic;
  color: var(--tinta-2);
  max-width: 38rem;
}
.registro-resumen { max-width: 40rem; color: var(--tinta-2); }

.registro-meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--e5);
  margin: var(--e4) 0 var(--e2);
  padding-top: var(--e3);
  border-top: 1px solid var(--linea);
}
.registro-meta dt {
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--tinta-3);
}
.registro-meta dd { margin: var(--e1) 0 0; font-size: var(--s2); }

.marca {
  display: inline-flex; align-items: center; gap: var(--e1);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--mat);
}
.pv { color: var(--mat); }
/* ------------------------------------------------- Cuerpo de ficha ----- */

.ficha-cuerpo { max-width: var(--ancho-texto); }

/* El H2 es la sección numerada de la ficha («## 3. Propiedades físicas») y
   lleva la línea de registro que separa una sección de la siguiente. El H3
   («### 3.1 Composiciones») es subsección: sin línea, más cerca del cuerpo. */
.ficha-cuerpo h2 {
  margin-top: var(--e8);
  padding-top: var(--e3);
  font-size: var(--s5);
  border-top: 1px solid var(--linea-fuerte);
  scroll-margin-top: 5rem;
}
.ficha-cuerpo > h2:first-child { margin-top: var(--e6); }
.ficha-cuerpo h3 {
  font-size: var(--s4);
  margin-top: var(--e5);
  scroll-margin-top: 5rem;
}

.ficha-cuerpo ul, .ficha-cuerpo ol { margin: 0 0 var(--e4); padding-left: var(--e5); }
.ficha-cuerpo li { margin-bottom: var(--e2); }
.lista { list-style: square; }
.lista-check { list-style: none; padding-left: 0; }
.lista-check li { position: relative; padding-left: var(--e6); }
.lista-check li::before {
  content: '';
  position: absolute;
  left: var(--e2); top: 0.55em;
  width: 0.5rem; height: 0.5rem;
  border: 1px solid var(--acento);
  border-radius: 1px;
}

.cita {
  margin: var(--e5) 0;
  padding: var(--e4) var(--e5);
  background: var(--papel-2);
  border-left: 3px solid var(--linea-fuerte);
  font-size: var(--s3);
}
.cita p:last-child { margin: 0; }

.codigo {
  margin: var(--e4) 0;
  padding: var(--e4);
  overflow-x: auto;
  background: var(--papel-3);
  border: 1px solid var(--linea);
  font-size: var(--s1);
  line-height: 1.5;
}

.dato { max-width: var(--ancho-texto); }
.dato-etiqueta {
  display: inline-block;
  margin-right: var(--e2);
  padding: 0 var(--e2);
  background: var(--tinta);
  color: var(--papel-alto);
  border-radius: var(--radio);
  font-family: var(--fuente-mono);
  font-size: 0.75em;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.cierre {
  margin: var(--e6) 0;
  padding: var(--e5);
  background: var(--papel-alto);
  border: 1px solid var(--tinta);
  border-left-width: 4px;
  border-radius: var(--radio-2);
}
.cierre-titulo {
  margin: 0 0 var(--e2);
  font-family: var(--fuente-mono);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--acento-2);
}
.cierre p:last-child { margin: 0; }

/* ------------------------------------------------- Tablas de datos ----- */

.tabla-wrap {
  margin: var(--e5) 0;
  overflow-x: auto;
  border: 1px solid var(--tabla-borde);
  border-radius: var(--radio);
  background: var(--papel-alto);
}
.tabla-wrap:focus-visible { outline-offset: 0; }

table.datos {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--s2);
  line-height: 1.45;
}
table.datos caption { caption-side: top; text-align: left; padding: var(--e2) var(--e3); }
table.datos th, table.datos td {
  padding: var(--e2) var(--e3);
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--tabla-borde);
}
table.datos thead th {
  position: sticky;
  top: 0;
  background: var(--tabla-cabecera);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--tabla-cabecera-texto);
  white-space: nowrap;
  border-bottom: 2px solid var(--tabla-borde-acento);
}
table.datos tbody tr:last-child td { border-bottom: 0; }
table.datos tbody tr:nth-child(even) { background: var(--tabla-fila-alterna); }
table.datos tbody tr:hover { background: var(--tabla-fila-hover); }
table.datos td:first-child { font-weight: 500; }
table.datos .num { text-align: right; font-family: var(--fuente-mono); }

/* Veredictos: la celda que decide se ve sin leer */
table.datos td.v-ok  { background: var(--ok-tenue);  color: var(--ok); }
table.datos td.v-no  { background: var(--no-tenue);  color: var(--no); font-weight: 500; }
table.datos td.v-mat { background: var(--mat-tenue); color: var(--mat); }

.tabla-datos {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--s2);
}
.tabla-datos th, .tabla-datos td {
  padding: var(--e2) var(--e3);
  text-align: left;
  border-bottom: 1px solid var(--tabla-borde);
}
.tabla-datos thead th {
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--tabla-cabecera-texto);
  background: var(--tabla-cabecera);
  border-bottom: 2px solid var(--tabla-borde-acento);
}
.tabla-datos tbody tr:nth-child(even) { background: var(--tabla-fila-alterna); }
.tabla-datos tbody tr:hover { background: var(--tabla-fila-hover); }

/* ------------------------------------------------- Relaciones ---------- */

.relaciones { margin-top: var(--e8); }
.relaciones-titulo {
  padding-bottom: var(--e2);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--tinta-3);
  border-bottom: 1px solid var(--linea-fuerte);
}
.relaciones-lista { margin: 0; padding: 0; list-style: none; }
.relaciones-lista li { border-bottom: 1px solid var(--linea); }
.relaciones-lista a {
  display: grid;
  gap: var(--e1);
  padding: var(--e3) 0 var(--e3) var(--e4);
  text-decoration: none;
  border-left: 2px solid transparent;
}
.relaciones-lista a:hover { border-left-color: var(--acento); }
.relacion-nota {
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.04em;
  color: var(--acento-2);
}
.relacion-titulo { font-weight: 500; }
.relacion-seccion {
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  color: var(--tinta-3);
}

/* ------------------------------------------------- Metadatos de ficha --- */

.ficha-tags, .ficha-fuentes { margin-top: var(--e8); }
.ficha-tags h2, .ficha-fuentes h2 {
  padding-bottom: var(--e2);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--tinta-3);
  border-bottom: 1px solid var(--linea-fuerte);
}
.ficha-tags ul { display: flex; flex-wrap: wrap; gap: var(--e2); margin: var(--e3) 0 0; padding: 0; list-style: none; }
.ficha-tags a {
  display: inline-block;
  padding: 0 var(--e3);
  border: 1px solid var(--linea-fuerte);
  border-radius: 999px;
  font-family: var(--fuente-mono);
  font-size: 0.75rem;
  text-decoration: none;
}
.ficha-tags a:hover { background: var(--tinta); color: var(--papel-alto); }
.ficha-fuentes ol { margin: var(--e3) 0 0; padding-left: var(--e5); font-size: var(--s2); }
.ficha-fuentes li { margin-bottom: var(--e2); color: var(--tinta-2); }
.nota-fuentes {
  margin-top: var(--e4);
  padding: var(--e3);
  background: var(--papel-2);
  border-left: 2px solid var(--linea-fuerte);
  font-size: var(--s2);
  color: var(--tinta-3);
}

.vecinas {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(14rem, 100%), 1fr));
  gap: var(--e3);
  margin-top: var(--e8);
  padding-top: var(--e4);
  border-top: 1px solid var(--linea-fuerte);
}
.vecina {
  display: grid; gap: var(--e1);
  padding: var(--e3);
  text-decoration: none;
  border: 1px solid var(--linea);
  border-radius: var(--radio);
}
.vecina:hover { border-color: var(--tinta); }
.vecina--siguiente { text-align: right; }
.vecina-dir {
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--tinta-3);
}
.vecina-titulo { font-size: var(--s2); }

/* ------------------------------------------------- Filtros ------------- */

.filtros {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(11rem, 100%), 1fr));
  gap: var(--e4);
  align-items: end;
  max-width: var(--ancho-texto);
  margin-bottom: var(--e6);
  padding: var(--e4);
  background: var(--papel-alto);
  border: 1px solid var(--linea);
}
.filtro { display: grid; gap: var(--e1); }
.filtro label {
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--tinta-3);
}
.filtro select, .buscador-grande input {
  padding: var(--e2) var(--e3);
  font-family: var(--fuente-texto);
  font-size: var(--s2);
  color: var(--tinta);
  background: var(--papel);
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio);
}
/* Un <select> no se encoge por debajo del ancho de su opción más larga:
   min-width:0 le permite ocupar la columna de la rejilla en móvil. */
.filtro select { min-width: 0; width: 100%; }
.filtro-acciones { display: flex; flex-wrap: wrap; gap: var(--e2); }
.filtro-activo {
  max-width: var(--ancho-texto);
  padding: var(--e3);
  background: var(--mat-tenue);
  border-left: 3px solid var(--mat);
  font-size: var(--s2);
}

.buscador-grande {
  display: flex;
  gap: var(--e2);
  max-width: var(--ancho-texto);
  margin-bottom: var(--e6);
}
.buscador-grande input { flex: 1; padding: var(--e3); font-size: var(--s3); }

/* ------------------------------------------------- Paginación ----------- */

.paginacion {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--e4);
  margin-top: var(--e8);
  padding-top: var(--e4);
  border-top: 1px solid var(--linea);
}
.pagina-lista { display: flex; gap: var(--e1); margin: 0; padding: 0; list-style: none; }
.pagina {
  display: grid;
  place-items: center;
  min-width: 2.25rem;
  padding: var(--e1) var(--e2);
  font-family: var(--fuente-mono);
  font-size: var(--s1);
  text-decoration: none;
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio);
}
.pagina:hover { background: var(--papel-3); }
.pagina.actual { background: var(--tinta); color: var(--papel-alto); border-color: var(--tinta); }
.pagina-flecha { font-family: var(--fuente-mono); font-size: var(--s1); text-decoration: none; }
.pagina-flecha:hover { text-decoration: underline; }

/* ------------------------------------------------- Buscar -------------- */

.resultados-cuenta {
  max-width: var(--ancho-texto);
  font-family: var(--fuente-mono);
  font-size: var(--s1);
  color: var(--tinta-3);
}
.resultados { max-width: var(--ancho-texto); margin: var(--e4) 0 0; padding: 0; list-style: none; counter-reset: r; }
.resultado {
  padding: var(--e4) 0;
  border-bottom: 1px solid var(--linea);
}
.resultado-seccion {
  margin: 0 0 var(--e1);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--tinta-3);
}
.resultado h2 { margin: 0 0 var(--e2); font-size: var(--s4); }
.resultado h2 a { text-decoration: none; }
.resultado h2 a:hover { color: var(--acento-2); text-decoration: underline; }
.resultado p:last-child { margin: 0; font-size: var(--s2); color: var(--tinta-2); }
.vacio {
  max-width: var(--ancho-texto);
  padding: var(--e5);
  background: var(--papel-2);
  border: 1px dashed var(--linea-fuerte);
  color: var(--tinta-2);
}

/* ------------------------------------------------- Temas --------------- */

.temas-nube, .temas-fila ul {
  display: flex; flex-wrap: wrap; gap: var(--e2);
  margin: 0; padding: 0; list-style: none;
}
/* min-height mantiene el objetivo táctil en 24px (WCAG 2.5.8) aun con
   padding vertical cero; las píldoras se alinean por su centro. */
.temas-nube a, .temas-fila a {
  display: inline-flex; align-items: center; gap: var(--e1);
  min-height: 1.5rem;
  padding: 0 var(--e3);
  border: 1px solid var(--linea-fuerte);
  border-radius: 999px;
  font-family: var(--fuente-mono);
  font-size: 0.75rem;
  text-decoration: none;
}
.temas-nube a:hover, .temas-fila a:hover { background: var(--tinta); color: var(--papel-alto); }
.temas-nube span { font-size: 0.625rem; color: var(--tinta-3); }
.temas-fila {
  display: grid;
  grid-template-columns: 5.75rem minmax(0, 1fr);
  align-items: start;
  column-gap: var(--e4);
  width: 100%;
  max-width: var(--ancho-max);
  box-sizing: border-box;
  margin: 0 auto var(--e6);
  padding: 0 var(--e5) var(--e4);
  border-bottom: 1px solid var(--linea);
}
.temas-fila ul { min-width: 0; }
.temas-fila-etiqueta {
  padding-top: .35rem;
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--tinta-3);
}

.temas-lista {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(15rem, 100%), 1fr));
  gap: 1px;
  max-width: var(--ancho-max);
  margin: var(--e6) auto 0;
  padding: 0 var(--e5);
  list-style: none;
}
.temas-lista a {
  display: flex; align-items: baseline; justify-content: flex-start; gap: var(--e2);
  padding: var(--e3);
  background: var(--papel-alto);
  border: 1px solid var(--linea);
  text-decoration: none;
}
.temas-lista a:hover { background: var(--papel-2); }
.tema-nombre { font-size: var(--s2); }

/* ------------------------------------------------- Industrias ----------- */

.industrias-lista { max-width: var(--ancho-max); margin: 0 auto; padding: 0; list-style: none; }
.industrias-lista a {
  display: grid; gap: var(--e1);
  padding: var(--e4) 0;
  border-bottom: 1px solid var(--linea);
  text-decoration: none;
}
.industrias-lista a:hover .industria-nombre { color: var(--acento-2); }
.industria-nombre { font-size: var(--s4); font-weight: 500; }
.industria-definicion { font-size: var(--s2); color: var(--tinta-2); }
.industrias-lista--completa a {
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: var(--e3);
}
.industrias-lista--completa .industria-definicion,
.industrias-lista--completa .industria-leer { grid-column: 2; }
.industria-leer {
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--acento-2);
}
.industria-volver { margin-top: var(--e8); padding-top: var(--e4); border-top: 1px solid var(--linea); }
.industria-ficha .ficha-cuerpo { max-width: var(--ancho-texto); }

/* ------------------------------------------------- Grupos -------------- */

.grupo-seccion {
  max-width: var(--ancho-max);
  margin: 0 auto var(--e8);
  padding: var(--e5);
  background: var(--papel-alto);
  border: 1px solid var(--linea);
  border-left: 3px solid var(--registro, var(--tinta));
}
.grupo-cabecera h2 { margin: 0 0 var(--e2); font-size: var(--s5); }
.grupo-cabecera h2 a { text-decoration: none; }
.grupo-cabecera p { margin: 0 0 var(--e2); color: var(--tinta-2); max-width: 40rem; }
.grupo-cuenta { font-family: var(--fuente-mono); font-size: var(--s1); color: var(--tinta-3); }
.grupo-destacado {
  margin-top: var(--e4);
  padding: var(--e4);
  background: var(--papel-2);
  border: 1px solid var(--linea);
}
.grupo-destacado h3 { margin: var(--e2) 0; font-size: var(--s4); }
.grupo-destacado h3 a { text-decoration: none; }
.grupo-destacado p:last-child { margin: 0; font-size: var(--s2); color: var(--tinta-2); }
.grupo-destacado-sello { margin: 0; width: 1.75rem; height: 1.75rem; font-size: 0.5625rem; }

/* ------------------------------------------------- Método / legal ------ */

.metodo-bloque {
  max-width: var(--ancho-texto);
  margin-bottom: var(--e8);
}
.metodo-bloque h2 {
  padding-bottom: var(--e2);
  font-size: var(--s5);
  border-bottom: 1px solid var(--linea-fuerte);
}
.lista-numerada { counter-reset: n; list-style: none; padding-left: 0; }
.lista-numerada li {
  position: relative;
  margin-bottom: var(--e5);
  padding-left: var(--e8);
  counter-increment: n;
}
.lista-numerada li::before {
  content: counter(n);
  position: absolute;
  left: 0; top: 0.1em;
  display: grid; place-items: center;
  width: 1.75rem; height: 1.75rem;
  background: var(--tinta);
  color: var(--papel-alto);
  border-radius: var(--radio);
  font-family: var(--fuente-mono);
  font-size: 0.75rem;
}
.lista-no { list-style: none; padding-left: 0; }
.lista-no li { position: relative; padding-left: var(--e5); margin-bottom: var(--e2); }
.lista-no li::before {
  position: absolute; left: 0;
  width: 1.1rem; height: 1.1rem;
  content: '';
  color: var(--no);
  background: url('../svg/editorial/no.svg') center / contain no-repeat;
}

.fuentes-bloque { max-width: 60rem; margin-bottom: var(--e8); }
.fuentes-bloque h2 { font-size: var(--s5); margin-bottom: var(--e3); }
.lista-enlace { margin: 0; padding: 0; list-style: none; }
.lista-enlace li {
  display: flex; justify-content: space-between; gap: var(--e3);
  padding: var(--e2) 0;
  border-bottom: 1px solid var(--linea);
  font-size: var(--s2);
}
.lista-enlace span { font-family: var(--fuente-mono); font-size: 0.6875rem; color: var(--tinta-3); }

/* ------------------------------------------------- Pie ----------------- */

.pie {
  margin-top: var(--e12);
  padding: var(--e8) var(--e5) var(--e5);
  background: var(--papel-2);
  border-top: 1px solid var(--linea-fuerte);
}
.pie-inner {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(15rem, 100%), 1fr));
  gap: var(--e6) var(--e8);
  max-width: var(--ancho-max);
  margin: 0 auto;
}
.pie h2 {
  margin: 0 0 var(--e3);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--tinta-3);
}
.pie-desc { font-size: var(--s2); color: var(--tinta-2); max-width: 24rem; }
.pie-nav ul { margin: 0; padding: 0; list-style: none; }
.pie-grupo {
  display: block;
  margin: var(--e3) 0 var(--e1);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--acento-2);
}
.pie-nav ul ul { padding-left: var(--e3); border-left: 1px solid var(--linea); }
.pie-nav a, .pie-lista a {
  display: inline-block;
  padding: var(--e1) 0;
  font-size: var(--s2);
  text-decoration: none;
  color: var(--tinta-2);
}
.pie-nav a:hover, .pie-lista a:hover { color: var(--tinta); text-decoration: underline; }
.pie-lista { margin: 0; padding: 0; list-style: none; }
.pie-legal {
  max-width: var(--ancho-max);
  margin: var(--e8) auto 0;
  padding-top: var(--e4);
  border-top: 1px solid var(--linea);
  font-family: var(--fuente-mono);
  font-size: 0.6875rem;
  line-height: 1.6;
  color: var(--tinta-3);
}

/* ------------------------------------------------- Responsivo ---------- */

/* En escritorio el índice va a la izquierda y el contenido a la derecha,
   con el índice fijo mientras se recorre la página. */
@media (min-width: 64rem) {
  body:not(.sin-indice) .disposicion {
    grid-template-columns: var(--ancho-indice) minmax(0, 1fr);
    gap: var(--e8);
  }
  body:not(.sin-indice) .indice { grid-column: 1; grid-row: 1; }
  body:not(.sin-indice) main     { grid-column: 2; grid-row: 1; }
  .indice-inner {
    position: sticky;
    top: 5rem;
    max-height: calc(100vh - 6rem);
    overflow-y: auto;
    overscroll-behavior: contain;
  }
}

@media (max-width: 63.99rem) {
  .disposicion { padding: var(--e5) var(--e4) var(--e10); }
  .indice {
    position: static;
    height: auto;
    max-height: none;
    border-right: 0;
    border-bottom: 1px solid var(--linea-fuerte);
  }
  .indice-inner { padding: var(--e4) var(--e5); }
  .indice-grupo ul { columns: 2; }
  .indice-desplegable > .indice-resumen {
    display: flex;
    min-height: 3.7rem;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin: 0;
    padding: .65rem 1rem;
    border: 0;
    color: var(--tinta);
    cursor: pointer;
    list-style: none;
  }
  .indice-resumen::-webkit-details-marker { display: none; }
  .indice-resumen > span:first-child { display: grid; gap: .12rem; }
  .indice-resumen strong { font-family: var(--fuente-texto); font-size: .86rem; font-weight: 600; letter-spacing: 0; text-transform: none; }
  .indice-resumen small { color: var(--tinta-3); font-family: var(--fuente-texto); font-size: .72rem; letter-spacing: 0; text-transform: none; }
  .indice-resumen-icono { position: relative; width: 1.8rem; height: 1.8rem; flex: none; border: 1px solid var(--linea-fuerte); border-radius: 50%; }
  .indice-resumen-icono::before, .indice-resumen-icono::after { position: absolute; top: 50%; left: 50%; width: .62rem; height: 1px; content: ''; background: var(--tinta); transform: translate(-50%, -50%); }
  .indice-resumen-icono::after { transform: translate(-50%, -50%) rotate(90deg); transition: transform 160ms ease; }
  .indice-desplegable[open] .indice-resumen-icono::after { transform: translate(-50%, -50%) rotate(0); }
  body.portal .indice-inner { padding: .7rem 1rem 1rem; }
  .indice-inner > .indice-titulo { display: none; }
}

@media (max-width: 52rem) {
  .cabecera-inner {
    grid-template-columns: auto 1fr;
    gap: var(--e3);
    padding: var(--e3) var(--e4);
  }
  /* El índice se aplega solo si hay JavaScript. Sin él, la regla de
     ocultarlo no se aplica y la navegación queda desplegada: esconderla
     detrás de un botón que no responde dejaría el sitio sin menú. Por eso
     el botón también se esconde sin JavaScript: un control muerto es peor
     que un índice largo. */
  .con-js .menu-btn { display: block; justify-self: end; grid-row: 1; grid-column: 2; }
  .buscador { grid-column: 1 / -1; }
  .buscador input[type="search"] { width: 100%; flex: 1; }

  .nav {
    grid-column: 1 / -1;
    padding: var(--e4) 0;
    border-top: 1px solid var(--linea);
  }
  .con-js .nav { display: none; }
  .con-js .nav.abierto { display: block; }
  .nav-lista { flex-direction: column; gap: 0; }
  .nav-lista > li { border-bottom: 1px solid var(--linea); }
  .nav-lista a { display: block; padding: var(--e3) 0; }
  .nav-sub {
    position: static;
    padding-left: var(--e4);
    border: 0;
    box-shadow: none;
    opacity: 1; visibility: visible; transform: none;
    display: block;
  }

  .portada-banda { grid-template-columns: 1fr; padding: var(--e6) var(--e4) var(--e6); gap: var(--e6); }
  .portada-muestra { order: -1; }
  .muestra { max-width: 16rem; }
  .portada-cifras { grid-template-columns: repeat(2, 1fr); padding: 0 var(--e4); }
  .portada-bloque, .secciones-bloque { padding: 0 var(--e4); }
  .registro-cabecera { grid-template-columns: 1fr; gap: var(--e3); }
  .sello-svg { width: 3.5rem; height: 3.5rem; }
  .indice-grupo ul { columns: 1; }
  .pie { padding: var(--e6) var(--e4) var(--e4); }
  .filtros { padding: var(--e3); }
  .buscador-grande { flex-direction: column; }
}

@media (max-width: 32rem) {
  .portada-cifras { grid-template-columns: 1fr; }
  .tarjetas-grilla { grid-template-columns: 1fr; }
  .vecinas { grid-template-columns: 1fr; }
  .vecina--siguiente { text-align: left; }
  .paginacion { flex-wrap: wrap; }
}

/* ------------------------------------------------- Impresión ----------- */

@media print {
  .cabecera, .indice, .pie, .paginacion, .filtros, .vecinas, .saltar { display: none !important; }
  body { background: #fff; font-size: 10.5pt; }
  .disposicion { display: block; max-width: none; padding: 0; }
  .ficha-cuerpo { max-width: none; }
  a { text-decoration: none; color: #000; }
  a[href^="http"]::after { content: ' (' attr(href) ')'; font-size: 8pt; color: #555; }
  .tabla-wrap { overflow: visible; border-color: #999; }
  table.datos thead th { position: static; background: #eee; }
  h2, h3 { break-after: avoid; }
  .cierre, .tarjeta, table.datos { break-inside: avoid; }
}

/* =====================================================================
   Guía de Regalos Promocionales / regalopro.cl

   Sistema visual del portal. La arquitectura editorial se conserva; la
   presentación comparte una misma firma entre portada, rutas, fichas y agenda.
   Firma: pestañas de agenda + punto de registro coral.
   ===================================================================== */

body.portal {
  background: var(--papel);
  color: var(--tinta);
}

body.portal .cabecera {
  background: var(--tinta);
  border-bottom: 1px solid rgba(255,255,255,.16);
}

body.portal .cabecera-inner {
  max-width: var(--ancho-max);
  padding: .5rem 1.5rem;
}

body.portal .marca { color: var(--papel-alto); }
body.portal .marca-bloque--compacto { width: clamp(8.25rem, 9vw, 9rem); }
body.portal .pie .marca-bloque { width: min(100%, 13rem); }

body.portal .nav-lista { gap: .25rem; }
body.portal .nav-lista a {
  color: rgba(255,255,255,.82);
  border: 0;
  border-radius: 999px;
  padding: .55rem .75rem;
  font-family: var(--fuente-texto);
  font-size: .84rem;
  letter-spacing: 0;
  text-transform: none;
}
body.portal .nav-lista a:hover,
body.portal .nav-lista a[aria-current] {
  color: var(--tinta);
  background: var(--acento);
  border: 0;
}

body.portal .buscador input[type="search"] {
  width: 14rem;
  color: #fff;
  background: rgba(255,255,255,.08);
  border-color: rgba(255,255,255,.22);
  border-right: 0;
  border-radius: 999px 0 0 999px;
}
body.portal .buscador input[type="search"]::placeholder { color: rgba(255,255,255,.56); }
body.portal .buscador .boton {
  color: var(--tinta);
  background: var(--acento);
  border-color: var(--acento);
  border-radius: 0 999px 999px 0;
}
body.portal .buscador .boton:hover { background: var(--marca-hover); border-color: var(--marca-hover); }

body.portal .menu-btn {
  color: #fff;
  border-color: rgba(255,255,255,.32);
}
body.portal .menu-btn-linea,
body.portal .menu-btn-linea::before,
body.portal .menu-btn-linea::after { background: #fff; }

body.portal .disposicion--simple {
  width: min(calc(100% - 3rem), var(--ancho-max));
  max-width: var(--ancho-max);
  margin-inline: auto;
  padding: 0;
}
body.portal main { min-height: 60vh; }

/* Home: una composición editorial con una pieza visual tangible. */
.portal-hero {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, .92fr) minmax(26rem, 1.08fr);
  gap: clamp(2rem, 6vw, 7rem);
  align-items: center;
  min-height: 42rem;
  padding: clamp(4rem, 8vw, 8rem) clamp(1.5rem, 2.4vw, 2rem);
  overflow: hidden;
  color: #fff;
  background: linear-gradient(112deg, var(--tinta-portada) 0%, var(--tinta-portada-media) 58%, var(--tinta-portada-luz) 100%);
}
.portal-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: .22;
  background: url('../branding/plano-activacion.svg') right 5% center / auto 86% no-repeat;
  mask-image: linear-gradient(90deg, transparent 8%, #000 46%, #000 82%, transparent 100%);
}
.portal-hero-copy,
.hero-visual { position: relative; z-index: 1; }
.portal-hero-copy { max-width: 39rem; }
.portal-hero h1 {
  max-width: 10ch;
  margin-bottom: 1.4rem;
  color: #fff;
  font-size: clamp(3.2rem, 7vw, 6.8rem);
  font-weight: 700;
  line-height: .91;
  letter-spacing: -.075em;
}
.hero-bajada { max-width: 33rem; margin-bottom: 2rem; color: rgba(255,255,255,.76); font-size: clamp(1.05rem, 1.5vw, 1.25rem); line-height: 1.52; }
.hero-acciones { display: flex; flex-wrap: wrap; gap: .75rem; }
.portal-hero .boton { min-height: 3rem; border-radius: 999px; padding-inline: 1.15rem; }
.boton-fantasma { color: #fff; border-color: rgba(255,255,255,.32); background: transparent; }
.boton-fantasma:hover { color: var(--tinta); border-color: #fff; background: #fff; }
.hero-nota { margin: 2.4rem 0 0; color: rgba(255,255,255,.5); font-family: var(--fuente-mono); font-size: .68rem; letter-spacing: .03em; }
.hero-nota span { color: var(--acento); font-size: 1rem; vertical-align: -.08em; }
.hero-visual { min-height: 29rem; }
.hero-visual picture.hero-imagen {
  display: block;
  aspect-ratio: 1.06;
  width: min(100%, 38rem);
  margin-left: auto;
  overflow: hidden;
  border: .8rem solid #efe6d7;
  border-radius: 1.35rem;
  box-shadow: 1.5rem 1.5rem 0 rgba(251,174,3,.8), var(--sombra-alta);
  transform: rotate(2.4deg);
}
.hero-visual picture.hero-imagen img { display: block; width: 100%; height: 100%; object-fit: cover; filter: saturate(.82) contrast(1.04); }
.hero-agenda {
  position: absolute;
  right: 4%;
  bottom: 2rem;
  width: min(19rem, 52%);
  padding: 1.2rem;
  color: var(--tinta);
  background: #fffdf8;
  border-radius: .9rem;
  box-shadow: .8rem .8rem 0 rgba(23,35,31,.24);
  transform: rotate(-3.5deg);
}
.agenda-fecha { margin: .55rem 0 .1rem; font-size: 3.2rem; font-weight: 700; letter-spacing: -.08em; line-height: .9; }
.agenda-fecha small { display: inline-block; margin-left: .25rem; color: var(--coral-oscuro); font-family: var(--fuente-mono); font-size: .7rem; letter-spacing: .08em; }
.agenda-titulo { margin: 0 0 .25rem; font-size: 1.1rem; font-weight: 600; }
.agenda-tags { display: flex; flex-wrap: wrap; gap: .35rem; }
.agenda-tags span { padding: .28rem .5rem; color: var(--tinta-2); background: var(--papel-2); border-radius: 999px; font-family: var(--fuente-mono); font-size: .58rem; }
.agenda-linea { display: flex; gap: .3rem; margin: 1.1rem 0 .75rem; }
.agenda-linea span { display: block; height: .3rem; border-radius: 1rem; background: var(--acento); }
.agenda-linea span:nth-child(1) { width: 42%; }.agenda-linea span:nth-child(2) { width: 20%; background: var(--marca); }.agenda-linea span:nth-child(3) { width: 26%; background: var(--marca-profundo); }
.agenda-pie { margin: 0; color: var(--tinta-3); font-size: .71rem; line-height: 1.35; }
.hero-sticker { position: absolute; display: block; padding: .75rem; color: var(--tinta); background: var(--acento); font-family: var(--fuente-mono); font-size: .6rem; letter-spacing: .09em; line-height: 1.25; text-transform: uppercase; }
.hero-sticker--one { top: 6%; left: 1%; transform: rotate(-8deg); }
.hero-sticker--two { right: 0; top: 42%; padding: .55rem .7rem; color: var(--tinta); background: var(--coral); transform: rotate(7deg); }
.hero-visual-fallback { height: 100%; min-height: 29rem; border-radius: 1rem; background: linear-gradient(135deg, #f0e5d2 0 33%, #d3bea1 33% 55%, #859289 55% 72%, #bc714d 72%); }

.portal-metricas {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  max-width: var(--ancho-max);
  margin: 0 auto;
  border-right: 1px solid var(--linea);
  border-bottom: 1px solid var(--linea);
  background: var(--papel-alto);
}
.portal-metricas div { min-height: 8.5rem; padding: 1.5rem; border-left: 1px solid var(--linea); }
.portal-metricas strong { display: block; margin-bottom: .45rem; color: var(--tinta); font-size: clamp(1.7rem, 3vw, 2.6rem); letter-spacing: -.06em; line-height: 1; }
.portal-metricas span { color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .66rem; letter-spacing: .07em; text-transform: uppercase; }

.portal-section { max-width: var(--ancho-max); margin: 0 auto; padding: clamp(4.5rem, 8vw, 8rem) 1.5rem; }
.portal-section--tight { padding-bottom: 5rem; }
.portal-section--guias-destacadas { padding-bottom: clamp(2rem, 3vw, 2.75rem); }
.portal-section--industrias { padding-top: clamp(2rem, 3vw, 2.75rem); }
.portal-section--ink {
  width: min(calc(100% - 2rem), var(--ancho-max));
  max-width: var(--ancho-max);
  padding: clamp(1.5rem, 3vw, 2.5rem);
  overflow: hidden;
  border-radius: 1.25rem;
  color: #fff;
  background: var(--tinta);
}
.portal-section--ink .section-heading { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); align-items: end; gap: 1.5rem; margin-bottom: 1.5rem; }
.portal-section--ink .section-heading h2 { display: flex; max-width: none; align-items: flex-start; gap: 1rem; font-size: clamp(1.8rem, 3vw, 2.8rem); line-height: 1.06; letter-spacing: -.035em; }
.portal-section--ink .section-heading h2 span { max-width: 19ch; }
.portal-section--ink .section-heading > p { max-width: 39ch; margin: 0; color: rgba(255,255,255,.84); font-size: 1rem; line-height: 1.5; }
.portal-section--ink .temporada-icono { width: 2.8rem; height: 2.8rem; color: var(--acento); stroke-width: 3; }
.portal-section--last { padding-bottom: 8rem; }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 2.25rem; }
.section-heading h2 { max-width: 16ch; margin: 0; font-size: clamp(2rem, 4vw, 3.55rem); line-height: .98; letter-spacing: -.065em; }
.section-heading > p { max-width: 27rem; margin: 0; color: var(--tinta-2); }
.section-heading--light > p { color: rgba(255,255,255,.65); }
.section-heading--light h2 { color: #fff; }

.decision-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.decision-card { position: relative; display: flex; min-height: 23rem; flex-direction: column; padding: 1.5rem; overflow: hidden; border-radius: var(--radio-2); color: var(--tinta); text-decoration: none; transition: transform 180ms ease, box-shadow 180ms ease; }
.decision-card:hover, .decision-card:focus-visible { transform: translateY(-.35rem) rotate(-.4deg); box-shadow: var(--sombra-alta); }
.decision-card--gold { background: var(--marca); }.decision-card--coral { color: #fff; background: var(--marca-profundo); }.decision-card--blue { color: #fff; background: var(--tinta); }
.decision-icon { position: absolute; top: 1.1rem; right: 1.3rem; width: 2.5rem; height: 2.5rem; line-height: 1; }
.decision-card h3 { max-width: 9ch; margin: auto 0 .8rem; font-size: clamp(1.8rem, 3vw, 2.6rem); line-height: .96; letter-spacing: -.06em; }
.decision-card p { max-width: 24rem; margin: 0 0 1.5rem; font-size: .97rem; line-height: 1.45; opacity: .82; }
body.portal .decision-card--coral p { opacity: 1; }
.decision-link { margin-top: auto; font-family: var(--fuente-mono); font-size: .68rem; letter-spacing: .08em; text-transform: uppercase; }

.temporada-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.temporada-card { display: flex; min-width: 0; flex-direction: column; overflow: hidden; border: 1px solid rgba(255,255,255,.17); border-radius: .9rem; color: #fff; background: #22332d; text-decoration: none; transition: border-color 180ms ease, transform 180ms ease; }
.temporada-card:hover, .temporada-card:focus-visible { color: #fff; border-color: var(--acento); transform: translateY(-3px); }
.temporada-card:focus-visible { outline: 2px solid var(--acento); outline-offset: 3px; }
.temporada-imagen { display: block; aspect-ratio: 16 / 9; overflow: hidden; background: var(--tinta-2); }
.temporada-imagen img { display: block; width: 100%; height: 100%; object-fit: cover; filter: saturate(.86) contrast(1.04); transition: transform 260ms ease; }
.temporada-card:hover .temporada-imagen img, .temporada-card:focus-visible .temporada-imagen img { transform: scale(1.04); }
.temporada-card-body { display: flex; flex: 1; flex-direction: column; gap: .4rem; padding: 1rem 1.1rem 1.15rem; }
.temporada-card-titulo { display: flex; align-items: center; justify-content: space-between; gap: .65rem; }
.temporada-card-titulo .senal-icono { flex: none; width: 1.1rem; height: 1.1rem; color: var(--acento); }
.temporada-card strong { font-size: clamp(1.15rem, 1.6vw, 1.4rem); line-height: 1.18; letter-spacing: -.025em; }
.temporada-card-body > span:last-child { color: rgba(255,255,255,.82); font-size: .9rem; line-height: 1.45; }
.temporada-card--main { background: #2c433a; border-color: rgba(251,174,3,.45); }

.portal-tarjetas { grid-template-columns: repeat(4, 1fr); gap: .85rem; }
.portal-tarjetas .tarjeta { min-height: 18rem; border: 1px solid var(--linea); border-radius: var(--radio); box-shadow: none; }
.portal-tarjetas .tarjeta::before { display: none; }
.portal-tarjetas .tarjeta:hover { border-color: var(--coral); box-shadow: var(--sombra-ficha); transform: translateY(-.2rem); }
.portal-tarjetas .tarjeta-titulo { font-size: 1.25rem; }.portal-tarjetas .tarjeta-resumen { font-size: .88rem; }.portal-tarjetas .tarjeta-seccion { color: var(--coral-oscuro); }
.texto-link { color: var(--coral-oscuro); font-family: var(--fuente-mono); font-size: .7rem; letter-spacing: .08em; text-decoration: none; text-transform: uppercase; }.texto-link:hover { color: var(--tinta); text-decoration: underline; }
.section-heading--light .texto-link { color: var(--acento); }

.portal-section--split { display: grid; grid-template-columns: 1.1fr .9fr; gap: clamp(3rem, 10vw, 10rem); align-items: center; }
.split-copy { display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; }
.split-copy h2 { max-width: 11ch; margin: 0; font-size: clamp(2.4rem, 5vw, 4.5rem); line-height: .92; letter-spacing: -.075em; }
.split-copy > p { max-width: 36rem; margin: 0; color: var(--tinta-2); font-size: 1.08rem; line-height: 1.55; }
.split-copy .texto-link { display: inline-block; margin-top: 0; }
.industria-rail { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--linea-fuerte); }
.industria-rail li { border-bottom: 1px solid var(--linea); }
.industria-rail a { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.1rem 0; color: var(--tinta); font-size: .875rem; line-height: 1.4; text-decoration: none; }
.industria-rail a:hover { color: var(--coral-oscuro); padding-left: .35rem; }
.industria-rail-label > span { color: var(--coral-oscuro); font-family: var(--fuente-texto); font-size: inherit; font-weight: 600; line-height: inherit; }
.industria-rail a:hover .industria-rail-label > span { color: var(--tinta); }
.industria-rail-flecha { color: var(--coral-oscuro); }

.portal-section--method {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem 2rem;
  padding-block: 1rem;
  border-block: 1px solid var(--linea);
}
.portal-section--method h2 {
  margin: 0;
  font-size: clamp(1rem, 1.5vw, 1.2rem);
  line-height: 1.3;
  letter-spacing: -.02em;
}
.method-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.5rem; }
.method-actions a { color: var(--marca-profundo); font-size: .875rem; font-weight: 600; text-decoration: underline; text-underline-offset: .2em; }
.method-actions a:hover { color: var(--tinta); }
.method-actions a:focus-visible { outline: 2px solid var(--marca-profundo); outline-offset: 3px; }
.portal-tags { display: flex; flex-wrap: wrap; gap: .65rem; margin: 0; padding: 0; list-style: none; }.portal-tags a { display: inline-flex; align-items: center; gap: .6rem; padding: .7rem .9rem; color: var(--tinta-2); background: var(--papel-alto); border: 1px solid var(--linea); border-radius: 999px; font-size: .9rem; text-decoration: none; }.portal-tags a:hover { color: #fff; background: var(--tinta); border-color: var(--tinta); }.portal-tags span { color: var(--coral-oscuro); font-family: var(--fuente-mono); font-size: .66rem; }.portal-tags a:hover span { color: var(--acento); }

/* El resto de páginas conserva su función de lectura, pero comparte el
   lenguaje del portal: superficies claras, radios suaves y datos legibles. */
body.portal:not(.sin-indice) .disposicion { max-width: var(--ancho-max); padding: 0 1.5rem 6rem; }
body.portal .indice { top: 4.25rem; background: #e9e3d8; border-right-color: var(--linea); }
body.portal .indice-inner { padding: 1.5rem 1rem 4rem; }
body.portal .indice a { border-left-width: 3px; border-radius: 0 8px 8px 0; }.portal .indice a:hover { background: rgba(255,255,255,.62); }.portal .indice a[aria-current] { border-left-color: var(--coral); background: var(--papel-alto); }
body.portal .pagina-cabecera { max-width: 54rem; padding-top: 4rem; border-bottom-color: var(--linea); }.portal .pagina-titulo { font-size: clamp(2.6rem, 5vw, 5rem); letter-spacing: -.07em; }.portal .pagina-bajada { max-width: 42rem; font-size: 1.12rem; }
body.portal .pagina-lectura { border-left: 4px solid var(--coral); border-radius: var(--radio); background: var(--papel-alto); }.portal .ruta-migas { color: var(--coral-oscuro); }
body.portal .tarjeta { border-radius: var(--radio); box-shadow: none; }.portal .tarjeta::before { border-radius: 0 0 0 var(--radio); }.portal .tarjeta:hover { box-shadow: var(--sombra-ficha); }
body.portal .registro > picture.imagen-ficha, body.portal picture.imagen-hub { border: 0; border-radius: var(--radio-2); box-shadow: var(--sombra-ficha); }.portal .registro { max-width: 58rem; padding-top: 3rem; }.portal .registro-titulo { font-size: clamp(2.4rem, 5vw, 4.7rem); letter-spacing: -.07em; }.portal .registro-meta { border-color: var(--linea); }.portal .registro-sello { color: var(--marca-profundo); }
body.portal .boton { border-radius: 999px; }.portal .boton-primario { color: var(--tinta); background: var(--acento); border-color: var(--acento); }.portal .boton-primario:hover { color: var(--tinta); background: var(--marca-hover); border-color: var(--marca-hover); }
body.portal .pie { color: rgba(255,255,255,.75); background: var(--tinta); border-top: 0; }.portal .pie h2 { color: #fff; }.portal .pie-desc, .portal .pie-legal, .portal .pie-grupo { color: rgba(255,255,255,.65); }.portal .pie a { color: rgba(255,255,255,.82); text-decoration-color: var(--marca); }.portal .pie a:hover { color: var(--marca); }.portal .pie-nav > ul > li { border-color: rgba(255,255,255,.14); }

@media (max-width: 64rem) {
  .portal-hero { grid-template-columns: minmax(0, 1fr) minmax(22rem, .9fr); gap: 2rem; }
  .portal-tarjetas { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 52rem) {
  body.portal .disposicion--simple { width: 100%; }
  body.portal .cabecera-inner { padding: .8rem 1rem; }
  body.portal .nav { border-top-color: rgba(255,255,255,.16); }
  body.portal .nav-lista a { color: rgba(255,255,255,.82); border-radius: 8px; }
  body.portal .nav-lista a:hover, body.portal .nav-lista a[aria-current] { color: var(--tinta); background: var(--acento); }
  body.portal .buscador { margin-top: .45rem; }
  .portal-hero { grid-template-columns: 1fr; width: calc(100% - 2rem); min-height: auto; margin-inline: auto; padding: 5rem 1.25rem; border-radius: 1rem; }
  .portal-hero h1 { max-width: 12ch; font-size: clamp(3.3rem, 12vw, 5.8rem); }
  .hero-visual { min-height: 25rem; margin-top: 1rem; }.hero-visual picture.hero-imagen { width: 90%; }.hero-agenda { right: 1%; bottom: 1rem; }
  .portal-metricas { grid-template-columns: repeat(2, 1fr); margin-inline: 1rem; }
  .portal-section { padding-inline: 1rem; }.portal-section--ink { padding: 1.25rem; }.portal-section--method { padding-inline: 1rem; }
  .portal-section--ink .section-heading { grid-template-columns: 1fr; gap: .75rem; }
  .portal-section--ink .section-heading h2 { gap: .7rem; }
  .portal-section--ink .temporada-icono { width: 2.4rem; height: 2.4rem; }
  .section-heading { display: block; }.section-heading > p, .section-heading > .texto-link { display: block; margin-top: 1rem; }
  .decision-grid, .temporada-grid { grid-template-columns: 1fr; }.decision-card { min-height: 18rem; }
  .temporada-card { display: grid; grid-template-columns: minmax(8rem, 38%) minmax(0, 1fr); min-height: 9rem; }
  .temporada-imagen { width: 100%; height: 100%; aspect-ratio: auto; }
  .temporada-card-body { justify-content: center; }
  .portal-section--split { grid-template-columns: 1fr; gap: 3rem; }.portal-section--method { flex-wrap: wrap; gap: .5rem 1rem; }
  body.portal:not(.sin-indice) .disposicion { padding-inline: 1rem; }
}

@media (max-width: 32rem) {
  .portal-hero { padding-top: 4rem; }.hero-visual { min-height: 22rem; }.hero-visual picture.hero-imagen { border-width: .45rem; box-shadow: .7rem .7rem 0 rgba(251,174,3,.8); }.hero-agenda { width: 62%; padding: .8rem; }.agenda-fecha { font-size: 2.25rem; }.hero-sticker--one { left: -0.3rem; }.hero-sticker--two { right: -.4rem; }
  .portal-metricas { margin-inline: .5rem; }.portal-metricas div { min-height: 6rem; padding: 1rem; }.portal-metricas strong { font-size: 1.55rem; }.portal-metricas span { font-size: .57rem; }
  .portal-tarjetas { grid-template-columns: 1fr; }.portal-section--last { padding-bottom: 5rem; }
}

@media (prefers-reduced-motion: reduce) {
  .decision-card, .temporada-imagen img { transition: none; }
}

/* =====================================================================
   Guía de Regalos Promocionales — rutas de consulta y calendario vivo
   La firma es una marca de registro que viaja de la agenda al contenido.
   ===================================================================== */

[hidden] { display: none !important; }

body.portal .cabecera-inner { gap: clamp(.75rem, 2vw, 1.5rem); }
body.portal .nav-lista a { white-space: nowrap; }
body.portal .saltar:focus { z-index: 100; }

/* En escritorio, todos los controles principales comparten la misma caja y eje óptico. */
@media (min-width: 74.01rem) {
  body.portal .nav-lista { align-items: center; }
  body.portal .nav-lista > li:not(.nav-explorar) > a {
    display: inline-flex;
    min-height: 2.65rem;
    box-sizing: border-box;
    align-items: center;
  }
}

/* Hubs y secciones: la misma entrada editorial, antes de cualquier listado. */
body.portal .hub-intro {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(17rem, .88fr);
  align-items: center;
  gap: clamp(2rem, 5vw, 5rem);
  max-width: var(--ancho-max);
  min-height: 19rem;
  margin: 0 auto;
  padding: clamp(2.6rem, 5vw, 4.5rem) 1.5rem 2.4rem;
  border-bottom: 1px solid var(--linea);
}
body.portal .hub-intro-copy { max-width: 52rem; }
body.portal .hub-titulo {
  max-width: 19ch;
  margin: 0 0 .9rem;
  color: var(--tinta);
  font-size: clamp(2.35rem, 4vw, 3.65rem);
  font-weight: 700;
  line-height: .98;
  letter-spacing: -.065em;
}
body.portal .hub-bajada { max-width: 42rem; margin: 0; color: var(--tinta-2); font-size: 1.05rem; line-height: 1.5; }
.hub-resumen { display: flex; flex-wrap: wrap; align-items: baseline; gap: .45rem; margin: 1.15rem 0 0; color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .7rem; letter-spacing: .015em; }
.hub-resumen strong { color: var(--tinta); font-family: var(--fuente-texto); font-size: 1.15rem; }
.ruta-migas { margin: .55rem 0 .5rem; font-size: .76rem; }
.hub-intro-visual { position: relative; justify-self: end; width: min(100%, 29rem); }
.hub-intro-imagen { display: block; width: 100%; aspect-ratio: 1.42; overflow: hidden; border: 1px solid rgba(23,35,31,.12); border-radius: 1rem; background: var(--papel-2); box-shadow: .7rem .7rem 0 var(--acento); transform: rotate(1.4deg); }
.hub-intro-imagen img { display: block; width: 100%; height: 100%; object-fit: cover; }
body.portal .hub-intro--seccion { min-height: 18rem; }
.hub-anclas { display: flex; gap: .55rem; max-width: var(--ancho-max); margin: 0 auto; padding: 1rem 1.5rem; overflow-x: auto; scrollbar-width: thin; }
.hub-anclas a { display: inline-flex; min-height: 2.65rem; flex: none; align-items: center; gap: .65rem; padding: .45rem .8rem; border: 1px solid var(--linea); border-radius: 999px; color: var(--tinta-2); background: var(--papel-alto); font-size: .83rem; text-decoration: none; transition: border-color 150ms ease, background 150ms ease, transform 150ms ease; }
.hub-anclas a:hover, .hub-anclas a:focus-visible { border-color: var(--marca-profundo); color: var(--marca-profundo); background: var(--marca-suave); transform: translateY(-1px); }
.hub-secciones { max-width: var(--ancho-max); margin: 0 auto; padding: 0 1.5rem 5rem; }
.hub-tema { padding: 2.3rem 0 2.6rem; border-bottom: 1px solid var(--linea); scroll-margin-top: 5.5rem; }
.hub-tema-cabecera, .secciones-bloque-cabecera { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 1.25rem; }
.hub-tema-cabecera h2, .secciones-bloque-cabecera h2 { margin: 0 0 .35rem; font-size: clamp(1.45rem, 2.5vw, 2.05rem); line-height: 1.05; letter-spacing: -.045em; }
.hub-tema-cabecera h2 a, .secciones-bloque-cabecera h2 a { text-decoration: none; }
.hub-tema-cabecera h2 a:hover, .secciones-bloque-cabecera h2 a:hover { color: var(--coral-oscuro); }
.hub-tema-cabecera p, .secciones-bloque-cabecera p { max-width: 46rem; margin: 0; color: var(--tinta-2); font-size: .94rem; }
.hub-tema-link { display: inline-flex; min-height: 2.75rem; flex: none; align-items: center; gap: .55rem; color: var(--coral-oscuro); font-family: var(--fuente-mono); font-size: .69rem; text-decoration: none; text-transform: uppercase; }
.hub-tema-link:hover { color: var(--tinta); text-decoration: underline; }
.hub-tarjetas { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .85rem; }
.hub-tarjetas .tarjeta { min-height: 17rem; border: 1px solid var(--linea); border-radius: .9rem; box-shadow: none; transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease; }
.hub-tarjetas .tarjeta::before { display: none; }
.hub-tarjetas .tarjeta:hover, .hub-tarjetas .tarjeta:focus-within { border-color: var(--coral); box-shadow: var(--sombra-ficha); transform: translateY(-.18rem); }
.hub-tarjetas .tarjeta-titulo { font-size: 1.18rem; }
.hub-tarjetas .tarjeta-resumen { font-size: .85rem; }
.hub-vacio { padding: 1rem 1.2rem; border-left: 3px solid var(--acento); color: var(--tinta-2); background: var(--papel-alto); }

/* Mapa de temas: fotografías e ilustraciones de las familias del proyecto. */
.indice-grupos { max-width: var(--ancho-max); margin: 0 auto; padding: 0 1.5rem 5rem; }
.secciones-bloque { padding: 2.3rem 0 2.8rem; border-bottom: 1px solid var(--linea); scroll-margin-top: 5.5rem; }
.secciones-bloque-cabecera { margin-bottom: 1.2rem; }
.secciones-bloque-cabecera > div { max-width: 48rem; }
.secciones-lista { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .8rem; margin: 0; padding: 0; list-style: none; }
.seccion-indice-card { display: flex; min-height: 8.5rem; align-items: stretch; gap: 1rem; overflow: hidden; border: 1px solid var(--linea); border-radius: .85rem; color: var(--tinta); background: var(--papel-alto); text-decoration: none; transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease; }
.seccion-indice-card:hover, .seccion-indice-card:focus-visible { border-color: var(--coral); box-shadow: var(--sombra-ficha); transform: translateY(-2px); }
.seccion-indice-visual { position: relative; display: grid; width: 7.4rem; min-width: 7.4rem; min-height: 8.5rem; place-items: center; overflow: hidden; background: var(--papel-2); }
.seccion-ficha-imagen, .seccion-ficha-imagen img { display: block; width: 100%; height: 100%; }
.seccion-ficha-imagen { position: absolute; inset: 0; }
.seccion-ficha-imagen img { object-fit: cover; transition: transform 220ms ease; }
.seccion-indice-card:hover .seccion-ficha-imagen img { transform: scale(1.05); }
.seccion-indice-visual .seccion-ficha { display: grid; width: 3.5rem; height: 3.5rem; place-items: center; border: 1px solid var(--tinta); border-radius: 50%; color: var(--tinta); background: var(--acento); font-family: var(--fuente-mono); font-size: .8rem; }
.seccion-indice-numero { position: absolute; right: .45rem; bottom: .45rem; display: grid; width: 1.7rem; height: 1.7rem; place-items: center; border-radius: 50%; color: #fff; background: var(--tinta); font-family: var(--fuente-mono); font-size: .62rem; }
.seccion-indice-datos { display: flex; flex: 1; flex-direction: column; align-items: start; padding: 1rem .8rem 1rem 0; }
.seccion-indice-datos .seccion-nombre { margin-bottom: .35rem; font-size: 1.06rem; font-weight: 700; letter-spacing: -.025em; }
.seccion-indice-datos .seccion-proposito { display: -webkit-box; overflow: hidden; color: var(--tinta-3); font-size: .78rem; line-height: 1.4; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.seccion-indice-datos .seccion-cuenta { display: flex; gap: .35rem; margin-top: auto; padding-top: .55rem; color: var(--coral-oscuro); font-family: var(--fuente-mono); font-size: .62rem; text-transform: uppercase; }
.indice-marca-visual { position: relative; display: grid; width: min(100%, 26rem); aspect-ratio: 1.55; justify-self: end; place-items: center; overflow: hidden; border-radius: 1rem; background: var(--tinta); box-shadow: .7rem .7rem 0 var(--acento); }
.indice-marca-visual::before, .indice-marca-visual::after { position: absolute; content: ''; border: 1px solid rgba(255,255,255,.2); border-radius: 50%; }
.indice-marca-visual::before { width: 14rem; height: 14rem; }
.indice-marca-visual::after { width: 19rem; height: 19rem; }
.indice-tarjeta { position: absolute; z-index: 1; padding: .65rem .85rem; border: 1px solid var(--tinta); color: var(--tinta); background: var(--papel-alto); box-shadow: .25rem .3rem 0 rgba(0,0,0,.25); font-family: var(--fuente-mono); font-size: .7rem; text-transform: uppercase; }
.indice-tarjeta--a { transform: translate(-4.5rem, -2rem) rotate(-7deg); }
.indice-tarjeta--b { color: var(--tinta); background: var(--coral); transform: translate(3rem, -1.6rem) rotate(5deg); }
.indice-tarjeta--c { background: var(--acento); transform: translate(-.1rem, 2rem) rotate(-2deg); }
.indice-circulo { position: absolute; right: 1.2rem; bottom: 1.2rem; width: .7rem; height: .7rem; border-radius: 50%; background: var(--marca); box-shadow: 0 0 0 .35rem rgba(251,174,3,.18); }

/* Calendario de pared / mesa de planificación: no una tabla de datos. */
.calendario-app { max-width: var(--ancho-max); margin: 0 auto; padding: 2.6rem 1.5rem 3.5rem; scroll-margin-top: 5.4rem; }
.calendario-portada { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 1.2rem; }
.calendario-titulo-bloque { max-width: 49rem; }
.calendario-titulo-bloque h2 { margin: 0 0 .65rem; font-size: clamp(2rem, 3.7vw, 3.05rem); line-height: 1; letter-spacing: -.06em; }
.calendario-titulo-bloque > p:last-child { max-width: 43rem; margin: 0; color: var(--tinta-2); font-size: .98rem; }
.calendario-control-anio { display: flex; flex: none; gap: .2rem; padding: .25rem; border: 1px solid var(--linea); border-radius: 999px; background: var(--papel-2); }
.calendario-control-anio a { display: grid; min-width: 4.3rem; min-height: 2.8rem; place-items: center; border-radius: 999px; color: var(--tinta-2); font-family: var(--fuente-mono); font-size: .75rem; text-decoration: none; transition: background 140ms ease, color 140ms ease; }
.calendario-control-anio a[aria-current], .calendario-control-anio a:hover { color: var(--tinta); background: var(--acento); }
.calendario-meses { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: .35rem; margin: 0 0 .85rem; padding: .45rem; overflow-x: auto; border: 1px solid var(--linea); border-radius: .9rem; background: var(--papel-alto); scrollbar-width: thin; }
.calendario-meses a { position: relative; display: flex; min-width: 2.8rem; min-height: 2.7rem; align-items: center; justify-content: center; gap: .28rem; border-radius: .55rem; color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .7rem; text-decoration: none; text-transform: uppercase; transition: color 130ms ease, background 130ms ease; }
.calendario-meses a:hover { color: var(--tinta); background: var(--papel-2); }
.calendario-meses a[aria-current] { color: var(--tinta); background: var(--acento); font-weight: 600; }
.calendario-mes-punto { display: none; width: .3rem; height: .3rem; border-radius: 50%; background: var(--coral); }
.calendario-marco { overflow: hidden; border: 1px solid rgba(23,35,31,.16); border-radius: 1rem; background: var(--papel-alto); box-shadow: 0 1rem 3rem rgba(23,35,31,.08); }
.calendario-mes-panel { padding: clamp(1rem, 2.4vw, 1.75rem); }
.calendario-mes-entrada { animation: mes-entrada 220ms cubic-bezier(.2,.7,.2,1) both; }
@keyframes mes-entrada { from { opacity: .3; transform: translateY(7px); } to { opacity: 1; transform: translateY(0); } }
.calendario-mes-cabecera { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.calendario-mes-cabecera h3 { margin: 0; font-size: clamp(1.55rem, 3vw, 2.2rem); line-height: 1; letter-spacing: -.05em; text-transform: capitalize; }
.calendario-flechas { display: flex; gap: .4rem; }
.calendario-flechas a, .calendario-flechas span { display: grid; width: 2.75rem; height: 2.75rem; place-items: center; border: 1px solid var(--linea); border-radius: 50%; color: var(--tinta); background: var(--papel-alto); font-size: 1.15rem; text-decoration: none; transition: background 140ms ease, color 140ms ease, transform 140ms ease; }
.calendario-flechas a:hover { color: #fff; background: var(--tinta); transform: translateX(1px); }
.calendario-flechas span { color: var(--tinta-4); }
.calendario-semana, .calendario-cuadricula { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; }
.calendario-semana { border-bottom: 1px solid var(--linea-fuerte); }
.calendario-semana li { padding: .5rem .35rem; color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .61rem; text-align: center; text-transform: uppercase; }
.calendario-semana abbr { text-decoration: none; }
.calendario-dia { position: relative; min-width: 0; min-height: 6.6rem; padding: .45rem; border-right: 1px solid var(--linea); border-bottom: 1px solid var(--linea); background: var(--papel-alto); transition: background 140ms ease; }
.calendario-dia:nth-child(7n) { border-right: 0; }
.calendario-dia--vacio { background: rgba(236,231,220,.47); }
.calendario-numero { display: grid; width: 1.8rem; height: 1.8rem; place-items: center; border-radius: 50%; color: var(--tinta-2); font-family: var(--fuente-mono); font-size: .73rem; }
.calendario-dia--hoy .calendario-numero { color: #fff; background: var(--coral-oscuro); }
.calendario-dia-hitos { display: grid; gap: .2rem; margin: .25rem 0 0; padding: 0; list-style: none; }
.calendario-dia-hitos a { display: flex; max-width: 100%; align-items: center; gap: .3rem; overflow: hidden; padding: .17rem .25rem; border-radius: .25rem; color: var(--tinta); background: rgba(251,174,3,.25); font-size: .62rem; font-weight: 600; line-height: 1.25; text-decoration: none; }
.calendario-dia-hitos a:hover, .calendario-dia-hitos a:focus-visible { outline: 2px solid var(--tinta); outline-offset: 1px; background: var(--acento); }
.calendario-dia-hitos li[data-tipo="feriado"] a { background: rgba(251,174,3,.1); }
.calendario-dia-hitos li[data-tipo="feria"] a { background: rgba(251,174,3,.16); }
.calendario-dia-hitos li[data-tipo="conmemoracion"] a { background: rgba(251,174,3,.16); }
.calendario-dia-hitos a > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.calendario-mini-punto { width: .37rem; height: .37rem; flex: none; border-radius: 50%; background: var(--coral-oscuro); }
.calendario-dia-hitos [data-tipo="feriado"] .calendario-mini-punto { background: var(--marca-profundo); }
.calendario-dia-hitos [data-tipo="feria"] .calendario-mini-punto { background: var(--marca); }
.calendario-agenda { padding-top: 1.4rem; }
.calendario-agenda-titulo { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: .75rem; }
.calendario-agenda-titulo h4 { margin: 0; font-size: 1.13rem; letter-spacing: -.025em; }
.calendario-agenda-titulo > span { color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .63rem; }
.calendario-hitos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .65rem; }
.calendario-hito { display: grid; grid-template-columns: 8.5rem 1fr; gap: .9rem; min-width: 0; padding: .95rem; border: 1px solid var(--linea); border-radius: .75rem; background: #fff; scroll-margin-top: 6rem; }
.calendario-hito:target { border-color: var(--marca); box-shadow: 0 0 0 3px rgba(251,174,3,.14); }
.calendario-hito-fecha { display: flex; align-items: flex-start; gap: .5rem; color: var(--tinta-2); font-family: var(--fuente-mono); font-size: .67rem; line-height: 1.45; }
.calendario-hito-fecha > span { width: .45rem; height: .45rem; flex: none; margin-top: .26rem; border-radius: 50%; background: var(--acento); }
.calendario-hito-cuerpo { min-width: 0; }
.calendario-tipo { margin: .28rem 0 .2rem; color: var(--tinta-3); font-size: .7rem; }
.calendario-tipo--feriado { color: var(--marca-profundo); }
.calendario-tipo--feria, .calendario-tipo--conmemoracion { color: var(--marca-profundo); }
.calendario-hito h5 { margin: 0 0 .35rem; font-size: .99rem; line-height: 1.2; letter-spacing: -.02em; }
.calendario-hito-cuerpo > p:not(.calendario-tipo) { margin: .3rem 0; color: var(--tinta-2); font-size: .8rem; line-height: 1.4; }
.calendario-hito-cuerpo .calendario-hito-nota { color: var(--tinta-3); font-size: .77rem; }
.calendario-fuente { display: inline-block; min-height: 2rem; margin-top: .3rem; padding-top: .35rem; color: var(--coral-oscuro); font-family: var(--fuente-mono); font-size: .59rem; line-height: 1.4; text-decoration: underline; text-underline-offset: 2px; }
.calendario-sin-hitos { margin: 0; padding: 1rem; border-left: 3px solid var(--acento); color: var(--tinta-2); background: var(--papel); font-size: .86rem; }
.calendario-filtros { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; padding: 1rem 0 .4rem; }
.calendario-filtros-label { margin-right: .15rem; color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .65rem; text-transform: uppercase; }
.calendario-filtros a { display: inline-flex; min-height: 2.55rem; align-items: center; padding: .45rem .75rem; border: 1px solid var(--linea); border-radius: 999px; color: var(--tinta-2); background: var(--papel-alto); font-size: .78rem; text-decoration: none; transition: border-color 140ms ease, color 140ms ease, background 140ms ease; }
.calendario-filtros a:hover { border-color: var(--tinta); color: var(--tinta); }
.calendario-filtros a[aria-current] { border-color: var(--tinta); color: #fff; background: var(--tinta); }
.calendario-aviso { margin: .8rem 0 0; color: var(--tinta-3); font-size: .74rem; line-height: 1.45; }
.calendario-estado { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; clip-path: inset(50%); border: 0; }

/* Títulos menos estridentes en el sistema completo, no solo en calendario. */
body.portal .pagina-titulo { font-size: clamp(2.15rem, 4vw, 3.5rem); letter-spacing: -.06em; }
body.portal .registro-titulo { font-size: clamp(2.2rem, 4vw, 3.65rem); line-height: .98; letter-spacing: -.06em; }
body.portal .section-heading h2 { font-size: clamp(1.8rem, 3.2vw, 2.8rem); line-height: 1.02; }
body.portal .split-copy h2 { font-size: clamp(2rem, 3.8vw, 3.35rem); line-height: .98; }

@media (max-width: 66rem) {
  .hub-tarjetas, .secciones-lista { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .calendario-dia { min-height: 5.8rem; }
  .calendario-hito { grid-template-columns: 1fr; gap: .35rem; }
}

@media (max-width: 52rem) {
  body.portal .hub-intro { grid-template-columns: 1fr; gap: 1.3rem; padding: 2rem 1rem 1.6rem; }
  .hub-intro-visual, .indice-marca-visual { justify-self: start; width: min(100%, 34rem); }
  body.portal .hub-titulo { font-size: clamp(2.25rem, 8vw, 3.1rem); }
  .hub-anclas, .hub-secciones, .indice-grupos { padding-right: 1rem; padding-left: 1rem; }
  .temas-fila { grid-template-columns: 1fr; row-gap: .55rem; padding-right: 1rem; padding-left: 1rem; }
  .hub-anclas { position: relative; }
  .hub-tema-cabecera, .secciones-bloque-cabecera { align-items: flex-start; }
  .calendario-app { padding: 2rem 1rem 3rem; }
  .calendario-portada { align-items: flex-start; }
  .calendario-meses { grid-template-columns: repeat(12, 2.9rem); }
  .calendario-dia { min-height: 5rem; padding: .28rem; }
  .calendario-numero { width: 1.55rem; height: 1.55rem; font-size: .66rem; }
  .calendario-dia-hitos a { font-size: .55rem; }
  .calendario-hitos { grid-template-columns: 1fr; }
}

@media (max-width: 36rem) {
  body.portal .buscador { min-width: 0; }
  .hub-intro-visual { width: calc(100% - .5rem); margin-right: .5rem; }
  .hub-tema-cabecera, .secciones-bloque-cabecera { display: block; }
  .hub-tema-link, .secciones-bloque-cabecera .hub-tema-link { margin-top: .7rem; }
  .hub-tarjetas, .secciones-lista { grid-template-columns: 1fr; }
  .hub-tarjetas .tarjeta { min-height: 14rem; }
  .calendario-portada { display: block; }
  .calendario-control-anio { width: fit-content; margin-top: 1rem; }
  .calendario-mes-cabecera { margin-bottom: .7rem; }
  .calendario-dia { min-height: 3.55rem; padding: .14rem; }
  .calendario-semana li { padding: .38rem .1rem; font-size: .55rem; }
  .calendario-numero { width: 1.35rem; height: 1.35rem; font-size: .59rem; }
  .calendario-dia-hitos { margin-top: .08rem; }
  .calendario-dia-hitos a { min-height: .38rem; justify-content: center; padding: .12rem; }
  .calendario-dia-hitos a > span:last-child { display: none; }
  .calendario-mini-punto { width: .34rem; height: .34rem; }
  .calendario-agenda-titulo { align-items: flex-start; }
  .calendario-hito { grid-template-columns: 1fr; padding: .8rem; }
  .calendario-filtros { gap: .35rem; }
  .calendario-filtros a { min-height: 2.3rem; padding: .4rem .6rem; font-size: .7rem; }
  .seccion-indice-card { min-height: 7.8rem; }
  .seccion-indice-visual { width: 6.5rem; min-width: 6.5rem; min-height: 7.8rem; }
}

@media (prefers-reduced-motion: reduce) {
  .calendario-mes-entrada { animation: none; }
  .hub-anclas a, .seccion-indice-card, .hub-tarjetas .tarjeta,
  .calendario-meses a, .calendario-flechas a, .calendario-filtros a { transition: none; }
}

/* Portada: próxima fecha real en lugar de una maqueta estática. */
body.portal .portal-hero { min-height: 37rem; padding-top: clamp(3.8rem, 6vw, 5.5rem); padding-bottom: clamp(3.8rem, 6vw, 5.5rem); }
body.portal .portal-hero h1 { max-width: 14ch; font-size: clamp(2.6rem, 4.2vw, 4rem); line-height: .99; letter-spacing: -.065em; }
.portal-hero .hero-bajada { max-width: 31rem; font-size: 1.08rem; }
.portal-hero .hero-nota { margin-top: 1.4rem; font-family: var(--fuente-texto); font-size: .79rem; letter-spacing: .01em; }
.hero-agenda { bottom: 1rem; padding: 1rem; }
.agenda-fecha { margin-top: .55rem; }
.agenda-pie { margin-top: .2rem; }
.agenda-enlace { display: inline-flex; align-items: center; gap: .45rem; margin-top: .75rem; padding-top: .65rem; border-top: 1px solid var(--linea); color: var(--coral-oscuro); font-family: var(--fuente-mono); font-size: .62rem; text-decoration: none; text-transform: uppercase; }
.agenda-enlace:hover { color: var(--tinta); text-decoration: underline; }
.portal-agenda-proxima { max-width: var(--ancho-max); margin: 0 auto; padding: 2.3rem 1.5rem 2.8rem; border-bottom: 1px solid var(--linea); }
.agenda-proxima-cabecera { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: .9rem; }
.agenda-proxima-cabecera h2 { margin: 0; font-size: 1.48rem; letter-spacing: -.045em; }

/* Rutas del portal: un mapa editorial, no una lista de capítulos. */
.hub-intro--indice { min-height: 18rem; }
.hub-intro--indice .hub-titulo { max-width: 20ch; font-size: clamp(2rem, 3.2vw, 3rem); line-height: 1.04; letter-spacing: -.04em; }
.indice-mosaico {
  position: relative;
  display: grid;
  width: min(100%, 31rem);
  aspect-ratio: 1.32;
  grid-template-columns: 1.25fr .8fr;
  grid-template-rows: 1fr 1fr;
  gap: .65rem;
  justify-self: end;
  padding: .7rem;
  border: 1px solid var(--linea);
  border-radius: var(--radio-2);
  background: var(--papel-2);
  box-shadow: var(--sombra-alta);
  transform: rotate(1deg);
}
.indice-mosaico-pieza { position: relative; min-width: 0; min-height: 0; margin: 0; overflow: hidden; background: var(--papel-3); }
.indice-mosaico-pieza--1 { grid-row: 1 / span 2; }
.indice-mosaico-imagen, .indice-mosaico-imagen img { display: block; width: 100%; height: 100%; }
.indice-mosaico-imagen img { object-fit: cover; }
.indice-mosaico-sello {
  position: absolute;
  right: 1rem;
  bottom: 1rem;
  padding: .4rem .6rem;
  border: 1px solid var(--tinta);
  color: var(--tinta);
  background: var(--acento);
  font-family: var(--fuente-mono);
  font-size: .59rem;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.rutas-portal, .industria-explorador { max-width: var(--ancho-max); margin: 0 auto; padding: 1.5rem 1.5rem 5rem; }
.coleccion-controles {
  display: grid;
  grid-template-columns: minmax(12rem, .72fr) minmax(0, 1.28fr);
  align-items: end;
  gap: .55rem 1.4rem;
  margin: 0 0 .5rem;
  padding: 1rem 1.1rem;
  border: 1px solid var(--linea);
  border-radius: var(--radio-2);
  background: var(--papel-alto);
}
.coleccion-controles label { color: var(--tinta); font-size: .94rem; font-weight: 600; }
.coleccion-busqueda { display: flex; min-width: 0; gap: .5rem; }
.coleccion-busqueda input {
  width: 100%;
  min-height: 2.9rem;
  padding: .55rem .75rem;
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio-2);
  color: var(--tinta);
  background: #fff;
  caret-color: var(--acento-2);
  font: inherit;
}
.coleccion-busqueda input::placeholder { color: var(--tinta-3); opacity: 1; }
.coleccion-busqueda input:focus-visible, .coleccion-busqueda button:focus-visible,
.ruta-editorial a:focus-visible, .industria-tarjeta a:focus-visible {
  outline: 3px solid var(--acento-2);
  outline-offset: 3px;
}
.coleccion-busqueda button {
  flex: none;
  min-height: 2.9rem;
  padding: .5rem .8rem;
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio-2);
  color: var(--tinta);
  background: var(--papel-2);
  font: inherit;
  cursor: pointer;
}
.coleccion-busqueda button:hover { background: var(--papel-3); }
.coleccion-estado { margin: .75rem 0; color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .68rem; }
.coleccion-vacia { margin: 1rem 0; padding: 1rem; border: 1px solid var(--linea); color: var(--tinta-2); background: var(--papel-alto); }
.hub-busqueda { margin-top: 1rem; }
.hub-secciones--ruta > .coleccion-estado { margin: .7rem .15rem; }
.seccion-explorador { max-width: var(--ancho-max); margin: 1rem auto 0; padding: 0 1.5rem 3rem; }
.seccion-explorador .coleccion-estado { margin-inline: .15rem; }
.seccion-explorador .seccion-lecturas { max-width: none; margin: 0; padding: .2rem 0 0; }
.seccion-explorador .coleccion-vacia { margin-top: 1rem; }
.rutas-mosaico {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  align-items: stretch;
}
.ruta-editorial {
  display: grid;
  min-width: 0;
  grid-column: auto;
  grid-template-rows: 10rem 1fr;
  overflow: hidden;
  border: 1px solid var(--linea);
  border-radius: var(--radio-2);
  color: var(--tinta);
  background: var(--papel-alto);
  box-shadow: var(--sombra-ficha);
  transition: border-color 180ms ease, transform 180ms ease, box-shadow 180ms ease;
}
.ruta-editorial:hover, .ruta-editorial:focus-within { border-color: var(--acento); box-shadow: var(--sombra-alta); transform: translateY(-2px); }
.ruta-editorial-arte { display: block; min-width: 0; min-height: 0; overflow: hidden; background: var(--papel-3); }
.ruta-editorial-imagen, .ruta-editorial-imagen img { display: block; width: 100%; height: 100%; }
.ruta-editorial-imagen img { object-fit: cover; transition: transform 240ms ease; }
.ruta-editorial:hover .ruta-editorial-imagen img, .ruta-editorial:focus-within .ruta-editorial-imagen img { transform: scale(1.035); }
.ruta-editorial-contenido { display: flex; min-width: 0; flex-direction: column; align-items: flex-start; padding: 1.05rem 1.1rem 1rem; }
.ruta-editorial h2 { margin: 0 0 .55rem; font-size: clamp(1.22rem, 1.55vw, 1.55rem); line-height: 1.12; letter-spacing: -.03em; }
.ruta-editorial h2 a { text-decoration: none; }
.ruta-editorial h2 a:hover { color: var(--acento-2); }
.ruta-editorial-descripcion { margin: 0; color: var(--tinta-2); font-size: .87rem; line-height: 1.45; }
.ruta-editorial-temas { display: flex; flex-wrap: wrap; gap: .35rem; margin: .9rem 0 .8rem; padding: 0; list-style: none; }
.ruta-editorial-temas a { display: inline-flex; min-height: 2rem; align-items: center; padding: .25rem .55rem; border: 1px solid var(--linea); border-radius: var(--radio-2); color: var(--tinta-2); background: var(--papel); font-size: .7rem; line-height: 1.25; text-decoration: none; }
.ruta-editorial-temas a:hover { border-color: var(--tinta); color: var(--tinta); background: var(--papel-2); }
.ruta-editorial-entrada { display: inline-flex; min-height: 2.4rem; align-items: center; gap: .45rem; margin-top: auto; color: var(--acento-2); font-family: var(--fuente-mono); font-size: .67rem; text-decoration: none; text-transform: uppercase; }
.ruta-editorial-entrada:hover { color: var(--tinta); text-decoration: underline; text-underline-offset: 3px; }
.ruta-editorial-sin-imagen { display: block; width: 100%; height: 100%; background: var(--papel-2); }
.rutas-tecnicas {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 1.2rem 2rem;
  margin-top: 1.2rem;
  padding: 1.25rem 1.4rem;
  border: 1px solid var(--linea);
  border-radius: var(--radio-2);
  background: var(--papel-2);
}
.rutas-tecnicas h2 { margin: 0 0 .25rem; font-size: 1.08rem; letter-spacing: -.02em; }
.rutas-tecnicas p { max-width: 52ch; margin: 0; color: var(--tinta-2); font-size: .83rem; line-height: 1.45; }
.rutas-tecnicas nav { display: flex; flex-wrap: wrap; gap: .5rem; }
.rutas-tecnicas nav a { display: inline-flex; min-height: 2.6rem; align-items: center; gap: .55rem; padding: .45rem .7rem; border: 1px solid var(--linea-fuerte); border-radius: var(--radio-2); color: var(--tinta); background: var(--papel-alto); font-size: .8rem; text-decoration: none; }
.rutas-tecnicas nav a:hover { border-color: var(--tinta); background: var(--papel); }
.rutas-tecnicas nav a:focus-visible { outline: 3px solid var(--acento-2); outline-offset: 3px; }

/* Capítulos: la primera lectura abre la página; las demás la continúan. */
.hub-secciones--ruta .hub-tema { padding-top: 2.8rem; padding-bottom: 3rem; }
.hub-secciones--ruta .hub-tema-cabecera { align-items: end; margin-bottom: 1.4rem; }
.hub-secciones--ruta .hub-tema-cabecera h2 { max-width: 22ch; font-size: clamp(1.8rem, 3vw, 2.45rem); letter-spacing: -.045em; }
.hub-secciones--ruta .hub-tema-cabecera p { max-width: 54rem; font-size: .98rem; }
.hub-tarjetas--editorial { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .9rem; }
.hub-tarjetas--editorial .tarjeta-con-imagen:first-child,
.seccion-lecturas .tarjeta-con-imagen:first-child {
  display: grid;
  grid-column: span 2;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
  grid-template-rows: 1fr;
  align-items: stretch;
  gap: .5rem 1.15rem;
  min-height: 20rem;
  padding: 1rem;
}
.hub-tarjetas--editorial .tarjeta-con-imagen:first-child .tarjeta-imagen-enlace,
.seccion-lecturas .tarjeta-con-imagen:first-child .tarjeta-imagen-enlace {
  grid-column: 1;
  grid-row: 1;
  align-self: stretch;
  min-width: 0;
  min-height: 0;
  aspect-ratio: auto;
  overflow: hidden;
  border: 0;
}
.hub-tarjetas--editorial .tarjeta-con-imagen:first-child .tarjeta-imagen-enlace picture,
.seccion-lecturas .tarjeta-con-imagen:first-child .tarjeta-imagen-enlace picture {
  display: block;
  width: 100%;
  height: 100%;
}
.hub-tarjetas--editorial .tarjeta-con-imagen:first-child .tarjeta-imagen-enlace img,
.seccion-lecturas .tarjeta-con-imagen:first-child .tarjeta-imagen-enlace img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.hub-tarjetas--editorial .tarjeta-con-imagen:first-child .tarjeta-contenido,
.seccion-lecturas .tarjeta-con-imagen:first-child .tarjeta-contenido {
  display: flex;
  grid-column: 2;
  grid-row: 1;
  flex-direction: column;
  justify-content: center;
  gap: .65rem;
  min-width: 0;
}
.hub-tarjetas--editorial .tarjeta-con-imagen:first-child .tarjeta-seccion,
.seccion-lecturas .tarjeta-con-imagen:first-child .tarjeta-seccion { grid-column: auto; }
.hub-tarjetas--editorial .tarjeta-con-imagen:first-child .tarjeta-titulo,
.seccion-lecturas .tarjeta-con-imagen:first-child .tarjeta-titulo { grid-column: auto; font-size: clamp(1.25rem, 1.9vw, 1.7rem); line-height: 1.14; }
.hub-tarjetas--editorial .tarjeta-con-imagen:first-child .tarjeta-resumen,
.seccion-lecturas .tarjeta-con-imagen:first-child .tarjeta-resumen { grid-column: auto; font-size: .9rem; }
.seccion-lecturas { max-width: var(--ancho-max); margin: 0 auto; padding: .5rem 1.5rem 5rem; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .9rem; }

/* Industrias: fotografía de contexto y buscador de rubro. */
.industria-indice-intro { min-height: 22rem; }
.industria-indice-intro .hub-titulo { max-width: 12ch; }
.industria-indice-visual { width: min(100%, 30rem); }
.industria-indice-imagen { aspect-ratio: 1.22; transform: rotate(1deg); }
.industria-indice-imagen img { object-position: center; }
.industria-explorador { padding-top: 1.6rem; }
.industria-mosaico { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: .9rem; margin: 0; padding: 0; list-style: none; }
.industria-mosaico-item { grid-column: span 4; min-width: 0; }
.industria-mosaico-item:nth-child(5n+1) { grid-column: span 5; }
.industria-mosaico-item:nth-child(5n+2) { grid-column: span 7; }
.industria-tarjeta { display: grid; height: 100%; grid-template-rows: auto 1fr; overflow: hidden; border: 1px solid var(--linea); border-radius: var(--radio-2); color: var(--tinta); background: var(--papel-alto); box-shadow: var(--sombra-ficha); transition: border-color 180ms ease, transform 180ms ease, box-shadow 180ms ease; }
.industria-tarjeta:hover, .industria-tarjeta:focus-within { border-color: var(--acento); box-shadow: var(--sombra-alta); transform: translateY(-2px); }
.industria-tarjeta-visual { position: relative; display: block; aspect-ratio: 16 / 9; overflow: hidden; background: var(--papel-3); }
.industria-tarjeta-foto, .industria-tarjeta-foto img { display: block; width: 100%; height: 100%; }
.industria-tarjeta-foto img { object-fit: cover; transition: transform 220ms ease; }
.industria-tarjeta:hover .industria-tarjeta-foto img, .industria-tarjeta:focus-within .industria-tarjeta-foto img { transform: scale(1.035); }
.industria-tarjeta-ver { position: absolute; right: .65rem; bottom: .65rem; padding: .22rem .38rem; border: 1px solid var(--linea-fuerte); border-radius: 4px; color: var(--tinta); background: var(--papel-alto); font-family: var(--fuente-texto); font-size: .6875rem; font-weight: 600; line-height: 1.25; text-transform: none; }
.industria-iniciales { display: grid; width: 100%; height: 100%; place-items: center; color: var(--tinta); background: var(--papel-2); font-size: clamp(2.5rem, 6vw, 5rem); font-weight: 700; letter-spacing: -.05em; }
.industria-tarjeta-cuerpo { display: flex; min-height: 12.5rem; flex-direction: column; align-items: flex-start; padding: 1rem 1.1rem 1.05rem; }
.industria-tarjeta-titulo { margin: 0 0 .45rem; font-size: clamp(1rem, 1.05vw, 1.125rem); line-height: 1.16; letter-spacing: -.02em; }
.industria-tarjeta-titulo a { text-decoration: none; }
.industria-tarjeta-titulo a:hover { color: var(--acento-2); }
.industria-tarjeta-descripcion { margin: 0; color: var(--tinta-2); font-size: .8125rem; line-height: 1.5; }
.industria-tarjeta-enlace { display: inline-flex; min-height: 2.75rem; align-items: center; gap: .35rem; margin-top: auto; padding-top: .55rem; color: var(--coral-oscuro); font-family: var(--fuente-texto); font-size: .75rem; font-weight: 600; line-height: 1.4; text-decoration: none; text-transform: none; }
.industria-tarjeta-enlace:hover { color: var(--tinta); text-decoration: underline; text-underline-offset: 3px; }
.industria-portada { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(19rem, .95fr); align-items: center; gap: clamp(2rem, 5vw, 5rem); max-width: var(--ancho-max); min-height: 26rem; margin: 0 auto; padding: 3.2rem 1.5rem; border-bottom: 1px solid var(--linea); }
.industria-portada-visual { min-width: 0; overflow: hidden; border: 1px solid var(--linea); border-radius: var(--radio-2); background: var(--papel-2); box-shadow: var(--sombra-alta); }
.industria-portada-foto, .industria-portada-foto img { display: block; width: 100%; height: 100%; }
.industria-portada-foto { aspect-ratio: 1.22; }
.industria-portada-foto img { object-fit: cover; }
.industria-portada-copy .pagina-titulo { margin: .5rem 0 1rem; font-size: clamp(2.25rem, 4vw, 3.5rem); line-height: .99; letter-spacing: -.055em; }
.industria-portada-copy .pagina-lectura, .industria-portada-copy .pagina-bajada { max-width: 38rem; margin: 0; color: var(--tinta-2); font-size: 1.05rem; line-height: 1.52; }
.industria-portada-copy .lectura-etiqueta { display: block; margin-bottom: .3rem; color: var(--acento-2); font-family: var(--fuente-mono); font-size: .63rem; letter-spacing: .07em; text-transform: uppercase; }
.industria-portada-copy .industria-volver { display: inline-flex; min-height: 2.65rem; align-items: center; gap: .45rem; margin: 1.2rem 0 0; padding: .35rem 0; border: 0; color: var(--acento-2); font-family: var(--fuente-mono); font-size: .67rem; text-decoration: none; text-transform: uppercase; }
.industria-portada-copy .industria-volver:hover { color: var(--tinta); text-decoration: underline; text-underline-offset: 3px; }
.industria-contenido { max-width: var(--ancho-texto); margin: 0 auto; padding-top: 2.5rem; }

@media (max-width: 66rem) {
  .rutas-mosaico { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ruta-editorial { grid-column: span 1; grid-template-columns: 1fr; grid-template-rows: 9rem 1fr; min-height: 0; }
  .hub-tarjetas--editorial, .seccion-lecturas { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hub-tarjetas--editorial .tarjeta-con-imagen:first-child, .seccion-lecturas .tarjeta-con-imagen:first-child { grid-column: span 2; }
}
@media (max-width: 52rem) {
  .rutas-portal, .industria-explorador, .seccion-lecturas, .seccion-explorador { padding-right: 1rem; padding-left: 1rem; }
  .coleccion-controles { grid-template-columns: 1fr; gap: .4rem; padding: .9rem; }
  .industria-mosaico { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .industria-mosaico-item, .industria-mosaico-item:nth-child(5n+1), .industria-mosaico-item:nth-child(5n+2) { grid-column: span 1; }
  .industria-portada { grid-template-columns: 1fr; gap: 1.4rem; padding: 2rem 1rem 1.7rem; }
  .industria-portada-visual { order: 2; }
  .industria-portada-copy { order: 1; }
}
@media (max-width: 36rem) {
  .indice-mosaico { width: calc(100% - .35rem); margin-right: .35rem; }
  .rutas-mosaico, .industria-mosaico, .hub-tarjetas--editorial, .seccion-lecturas { grid-template-columns: 1fr; }
  .ruta-editorial { grid-column: auto; grid-template-rows: 10rem 1fr; }
  .rutas-tecnicas { grid-template-columns: 1fr; gap: .9rem; padding: 1rem; }
  .hub-tarjetas--editorial .tarjeta-con-imagen:first-child, .seccion-lecturas .tarjeta-con-imagen:first-child { display: flex; grid-column: auto; flex-direction: column; min-height: 0; gap: var(--e2); }
  .hub-tarjetas--editorial .tarjeta-con-imagen:first-child .tarjeta-imagen-enlace,
  .seccion-lecturas .tarjeta-con-imagen:first-child .tarjeta-imagen-enlace { width: 100%; min-height: 0; aspect-ratio: 16 / 9; }
  .hub-tarjetas--editorial .tarjeta-con-imagen:first-child .tarjeta-imagen-enlace picture,
  .seccion-lecturas .tarjeta-con-imagen:first-child .tarjeta-imagen-enlace picture { height: 100%; }
  .hub-tarjetas--editorial .tarjeta-con-imagen:first-child .tarjeta-contenido,
  .seccion-lecturas .tarjeta-con-imagen:first-child .tarjeta-contenido { display: flex; flex-direction: column; gap: var(--e2); }
  .industria-mosaico-item, .industria-mosaico-item:nth-child(5n+1), .industria-mosaico-item:nth-child(5n+2) { grid-column: auto; }
  .industria-tarjeta-cuerpo { min-height: 0; }
}
.agenda-proxima-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .65rem; }
.agenda-proxima-card { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: .8rem; min-width: 0; min-height: 5.5rem; padding: .8rem; border: 1px solid var(--linea); border-radius: .75rem; color: var(--tinta); background: var(--papel-alto); text-decoration: none; transition: transform 150ms ease, box-shadow 150ms ease, border-color 150ms ease; }
.agenda-proxima-card:hover, .agenda-proxima-card:focus-visible { border-color: var(--coral); box-shadow: var(--sombra-ficha); transform: translateY(-2px); }
.agenda-proxima-fecha { display: grid; min-width: 3.7rem; justify-items: center; padding: .4rem .45rem; border-right: 1px solid var(--linea); }
.agenda-proxima-fecha strong { font-size: 1.45rem; line-height: 1; letter-spacing: -.05em; }
.agenda-proxima-fecha > span { color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .56rem; text-transform: uppercase; }
.agenda-proxima-texto { display: grid; min-width: 0; gap: .18rem; }
.agenda-proxima-texto strong { overflow: hidden; font-size: .9rem; line-height: 1.2; text-overflow: ellipsis; }
.agenda-proxima-texto > span { color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .57rem; text-transform: uppercase; }
.agenda-proxima-flecha { align-self: start; color: var(--coral-oscuro); }
body.portal .decision-card--coral { background: var(--coral-oscuro); }

@media (max-width: 52rem) {
  .portal-agenda-proxima { padding: 1.8rem 1rem 2.2rem; }
  .agenda-proxima-grid { grid-template-columns: 1fr; }
  .agenda-proxima-card { min-height: 4.8rem; }
  .hero-agenda { width: min(21rem, 76%); right: 2%; padding: .85rem; }
}
@media (max-width: 36rem) {
  .agenda-proxima-cabecera { display: block; }
  .agenda-proxima-cabecera .texto-link { display: inline-block; margin-top: .7rem; }
  .hero-agenda { width: 78%; right: 0; bottom: .5rem; }
}
@media (prefers-reduced-motion: reduce) {
  .agenda-proxima-card { transition: none; }
}

/* =====================================================================
   Sistema unificado de lectura
   La portada fija la identidad; las fichas, el archivo y las rutas la
   continúan con la misma tinta, agenda, fotografía original y acentos.
   ===================================================================== */

::selection { color: var(--tinta); background: var(--acento); }
input, textarea, select { caret-color: var(--coral-oscuro); }
html { scrollbar-color: var(--coral-oscuro) var(--papel-2); }
::-webkit-scrollbar { width: .7rem; height: .7rem; }
::-webkit-scrollbar-track { background: var(--papel-2); }
::-webkit-scrollbar-thumb { border: 2px solid var(--papel-2); border-radius: 999px; background: var(--tinta-3); }

/* El índice de temas deja de parecer una hoja paralela: funciona como el
   rail de navegación del portal y hereda la tinta de la cabecera principal. */
body.portal .indice {
  border: 0;
  color: rgba(255,255,255,.78);
  background: var(--tinta);
}
body.portal .indice-inner { padding: 1.35rem .9rem 3rem; }
body.portal .indice-inner > .indice-titulo,
body.portal .indice-grupo-titulo,
body.portal .indice-otros h2 {
  color: rgba(255,255,255,.55);
  border-color: rgba(255,255,255,.2);
}
body.portal .indice-grupo-titulo,
body.portal .indice-otros h2 { margin-top: 1.35rem; }
body.portal .indice a {
  min-height: 2.15rem;
  border-radius: 0 .55rem .55rem 0;
  color: rgba(255,255,255,.78);
  transition: color 150ms ease, background 150ms ease;
}
body.portal .indice a:hover,
body.portal .indice a:focus-visible {
  color: #fff;
  background: rgba(255,255,255,.09);
}
body.portal .indice a[aria-current] {
  border-left-color: var(--acento);
  color: var(--tinta);
  background: var(--acento);
}
body.portal .indice-otros a { color: rgba(255,255,255,.76); }
body.portal .indice-otros a:hover { color: var(--acento); background: transparent; }
body.portal .indice-desplegable > .indice-resumen { color: #fff; }
body.portal .indice-resumen-icono { border-color: rgba(255,255,255,.36); }
body.portal .indice-resumen-icono::before,
body.portal .indice-resumen-icono::after { background: #fff; }
body.portal .indice-resumen small { color: rgba(255,255,255,.58); }

/* La barra lateral comparte el mismo orden comercial del menú principal. */
body.portal .indice-rutas,
body.portal .indice-rutas ul,
body.portal .indice-tecnica ul { margin: 0; padding: 0; list-style: none; }
body.portal .indice-rutas { display: grid; gap: .15rem; }
body.portal .indice-ruta { border-bottom: 1px solid rgba(255,255,255,.12); }
body.portal .indice-ruta-detalle > summary,
body.portal .indice-tecnica > summary {
  display: flex;
  min-height: 2.65rem;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding: .55rem .35rem;
  color: rgba(255,255,255,.86);
  font-size: .83rem;
  font-weight: 570;
  line-height: 1.25;
  cursor: pointer;
  list-style: none;
}
body.portal .indice-ruta-detalle > summary::-webkit-details-marker,
body.portal .indice-tecnica > summary::-webkit-details-marker { display: none; }
body.portal .indice-ruta-detalle > summary::after,
body.portal .indice-tecnica > summary::after {
  width: .42rem;
  height: .42rem;
  flex: none;
  border-right: 1.4px solid currentColor;
  border-bottom: 1.4px solid currentColor;
  content: '';
  transform: translateY(-.1rem) rotate(45deg);
  transition: transform 160ms ease;
}
body.portal .indice-ruta-detalle[open] > summary::after,
body.portal .indice-tecnica[open] > summary::after { transform: translateY(.1rem) rotate(225deg); }
body.portal .indice-ruta--actual > .indice-ruta-detalle > summary,
body.portal .indice-ruta-detalle > summary:hover,
body.portal .indice-tecnica > summary:hover { color: var(--acento); }
body.portal .indice-ruta-panel { padding: 0 .25rem .7rem .45rem; }
body.portal .indice-ruta-portada {
  display: flex;
  justify-content: space-between;
  gap: .5rem;
  padding: .55rem .5rem;
  border-radius: .35rem;
  color: var(--acento) !important;
  font-size: .74rem;
  font-weight: 600;
}
body.portal .indice-ruta-panel li a,
body.portal .indice-tecnica li a {
  display: block;
  padding: .45rem .5rem;
  border: 0;
  border-radius: .35rem;
  color: rgba(255,255,255,.72);
  font-size: .74rem;
  line-height: 1.3;
}
body.portal .indice-ruta-panel li a:hover,
body.portal .indice-tecnica li a:hover,
body.portal .indice-ruta-panel li a[aria-current] {
  color: #fff;
  background: rgba(255,255,255,.1);
}
body.portal .indice-tecnica {
  margin-top: 1.2rem;
  padding-top: .65rem;
  border-top: 1px solid rgba(255,255,255,.2);
}
body.portal .indice-tecnica p {
  margin: 0 0 .45rem;
  padding: 0 .4rem;
  color: rgba(255,255,255,.58);
  font-size: .69rem;
  line-height: 1.4;
}
body.portal .indice-metodo { display: flex; flex-wrap: wrap; gap: .2rem .8rem; margin-top: .8rem; }
body.portal .indice-metodo a { padding: .4rem 0; border: 0; color: rgba(255,255,255,.55); font-size: .68rem; }
body.portal .indice-metodo a:hover { color: var(--acento); background: transparent; }

/* Una ficha abre como una pieza editorial del portal, no como una página
   aislada de manual. La lectura conserva una medida cómoda después del hero. */
body.portal .ficha { max-width: none; }
body.portal .ficha-portada {
  position: relative;
  grid-template-columns: minmax(0, 1.12fr) minmax(15rem, .88fr);
  gap: clamp(1.5rem, 3.8vw, 3.5rem);
  max-width: none;
  min-height: 25rem;
  margin: 0 0 2.3rem;
  padding: 3rem;
  overflow: hidden;
  border: 0;
  border-radius: 1.15rem;
  color: #fff;
  background: var(--tinta);
}
body.portal .ficha-portada .hub-intro-copy { max-width: 42rem; }
body.portal .ficha-portada .hub-intro-copy { min-width: 0; }
body.portal .ficha-portada .ruta-migas { color: rgba(255,255,255,.6); }
body.portal .ficha-portada .ruta-migas a { color: rgba(255,255,255,.8); }
body.portal .ficha-portada .ruta-migas a:hover { color: var(--acento); }
body.portal .ficha-portada .ruta-migas span { color: var(--coral); }
body.portal .ficha-portada .registro-titulo {
  max-width: 22ch;
  margin: .65rem 0 .8rem;
  color: #fff;
  font-size: clamp(2.1rem, 3.4vw, 3.1rem);
  line-height: 1.02;
  letter-spacing: -.055em;
}
body.portal .ficha-portada .registro-subtitulo {
  max-width: 37rem;
  margin: 0 0 .75rem;
  color: rgba(255,255,255,.85);
  font-size: clamp(.98rem, 1.2vw, 1.05rem);
  font-style: normal;
  line-height: 1.5;
}
body.portal .ficha-portada .registro-meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .9rem;
  margin: 1.3rem 0 .5rem;
  padding-top: .85rem;
  border-color: rgba(255,255,255,.22);
}
body.portal .ficha-portada .registro-meta dt {
  color: rgba(255,255,255,.57);
  font-size: .59rem;
  letter-spacing: .1em;
}
body.portal .ficha-portada .registro-meta dd {
  color: #fff;
  font-size: .78rem;
  line-height: 1.35;
}
body.portal .ficha-portada-visual {
  width: min(100%, 28rem);
  min-width: 0;
  margin-right: .65rem;
  margin-top: 0;
  margin-bottom: 0;
}
body.portal .ficha-portada-imagen {
  aspect-ratio: 1.24;
  border: .45rem solid var(--papel-alto);
  border-radius: 1rem;
  background: var(--papel-2);
  box-shadow: .65rem .65rem 0 var(--acento);
  transform: rotate(1.1deg);
}
body.portal .ficha-portada-imagen img { object-fit: cover; }
body.portal .ficha-portada-nota {
  margin: .8rem .15rem 0;
  color: rgba(255,255,255,.7);
  font-size: .7rem;
  line-height: 1.45;
}
body.portal .ficha-cuerpo {
  width: calc(100% - 6rem);
  max-width: none;
  margin: 0 0 0 3rem;
  padding: .2rem 0 0;
  font-size: 1.05rem;
  line-height: 1.75;
}
body.portal .ficha-cuerpo h2 {
  margin-top: 3.2rem;
  padding-top: 1rem;
  border-top: 1px solid var(--linea-fuerte);
  font-size: clamp(1.5rem, 2.5vw, 2rem);
  line-height: 1.12;
  letter-spacing: -.035em;
}
body.portal .ficha-cuerpo > h2:first-child { margin-top: 1.5rem; }
body.portal .ficha-cuerpo h3 { margin-top: 1.8rem; font-size: 1.15rem; }
body.portal .ficha-cuerpo p { max-width: none; }
body.portal .ficha-cuerpo table { font-size: .9rem; }
body.portal .ficha-tags,
body.portal .ficha-fuentes,
body.portal .ficha > .relaciones,
body.portal .ficha > .vecinas {
  width: calc(100% - 6rem);
  margin-right: 0;
  margin-left: 3rem;
}
body.portal .ficha-fuentes {
  padding: 1.35rem 1.5rem;
  border: 1px solid var(--linea);
  border-radius: 1rem;
  background: var(--papel-alto);
}
body.portal .industria-ficha > .ficha-fuentes,
body.portal .industria-ficha > .relaciones {
  width: calc(100% - 6rem);
  margin-right: 0;
  margin-left: 3rem;
}
body.portal .ficha-fuentes h2 { color: var(--tinta); letter-spacing: -.02em; }
body.portal .ficha-fuentes .nota-fuentes {
  padding: .8rem 0 0;
  border: 0;
  color: var(--tinta-3);
  background: transparent;
}

/* El archivo comparte la composición de entrada de los hubs; el filtro es
   una herramienta del portal y las fichas heredan el arte editorial local. */
body.portal .hub-intro--archivo { min-height: 19rem; }
body.portal .archivo-portada-visual { width: min(100%, 29rem); }
body.portal .archivo-portada-imagen { aspect-ratio: 1.42; }
body.portal .filtros {
  grid-template-columns: repeat(3, minmax(0, 1fr)) auto;
  align-items: end;
  max-width: none;
  margin: 1.2rem 0 1.5rem;
  padding: 1rem;
  border: 1px solid var(--linea);
  border-radius: 1rem;
  background: var(--papel-2);
}
body.portal .filtro label { color: var(--tinta-2); letter-spacing: .08em; }
body.portal .filtro select {
  min-height: 2.9rem;
  border-color: var(--linea-fuerte);
  border-radius: .65rem;
  background: var(--papel-alto);
}
body.portal .filtros .boton { min-height: 2.9rem; }
body.portal .tarjeta {
  overflow: hidden;
  border: 1px solid var(--linea);
  border-radius: 1rem;
  background: var(--papel-alto);
}
body.portal .tarjeta-con-imagen { padding-top: 0; }
body.portal .tarjeta-imagen {
  aspect-ratio: 1.62;
  border: 0;
  border-radius: 0;
  background: var(--papel-3);
}
body.portal .tarjeta-imagen img { transition: transform 240ms cubic-bezier(.2,.7,.2,1); }
body.portal .tarjeta:hover .tarjeta-imagen img,
body.portal .tarjeta:focus-within .tarjeta-imagen img { transform: scale(1.035); }
body.portal .tarjeta-sello { margin: 1rem 0 .3rem; color: var(--coral-oscuro); }
body.portal .tarjeta-seccion { color: var(--tinta-3); }
body.portal .tarjeta-titulo { font-size: 1.25rem; line-height: 1.12; letter-spacing: -.025em; }
body.portal .tarjeta-resumen { line-height: 1.48; }

@media (max-width: 66rem) {
  body.portal .filtros { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 52rem) {
  body.portal:not(.sin-indice) .disposicion { padding: 1rem 1rem 4rem; }
  body.portal .indice { display: none; }
  body.portal .ficha-portada {
    grid-template-columns: minmax(0, 1fr);
    gap: 1.25rem;
    min-height: 0;
    margin-bottom: 1.5rem;
    padding: 1.2rem;
    border-radius: 1rem;
  }
  body.portal .ficha-portada .registro-titulo { max-width: 24ch; font-size: clamp(2rem, 7.2vw, 2.8rem); }
  body.portal .ficha-portada-visual { justify-self: start; width: 100%; margin: 0; }
  body.portal .ficha-portada-imagen { aspect-ratio: 1.55; border-width: .3rem; }
  body.portal .ficha-portada .registro-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.portal .ficha-cuerpo { width: min(100%, 44rem); font-size: 1rem; }
  body.portal .hub-intro--archivo { grid-template-columns: 1fr; }
  body.portal .archivo-portada-visual { justify-self: start; width: min(100% - .45rem, 33rem); margin-right: .45rem; }
}
@media (max-width: 36rem) {
  body.portal .filtros { grid-template-columns: 1fr; gap: .8rem; }
  body.portal .filtros .boton { justify-content: center; }
  body.portal .ficha-portada { padding: 1.2rem; }
  body.portal .ficha-portada .registro-meta { grid-template-columns: 1fr 1fr; gap: .7rem; }
  body.portal .ficha-portada .registro-meta > div:last-child { grid-column: 1 / -1; }
  body.portal .ficha-fuentes { padding: 1rem; }
}
@media (prefers-reduced-motion: reduce) {
  body.portal .tarjeta-imagen img { transition: none; }
}

/* Navegación editorial desplegable: el mapa de temas viaja dentro del portal. */
body.portal .cabecera-inner { position: relative; }
body.portal .nav-explorar { position: static; }
body.portal .nav-explorar-detalle { position: static; }
body.portal .nav-explorar-resumen {
  display: inline-flex;
  min-height: 2.65rem;
  align-items: center;
  gap: .48rem;
  padding: .55rem .75rem;
  border-radius: 999px;
  color: rgba(255,255,255,.82);
  cursor: pointer;
  font-size: .84rem;
  list-style: none;
  white-space: nowrap;
  transition: color 150ms ease, background-color 150ms ease;
}
body.portal .nav-explorar-resumen::-webkit-details-marker,
body.portal .nav-subcategorias > summary::-webkit-details-marker { display: none; }
body.portal .nav-explorar-resumen::marker,
body.portal .nav-subcategorias > summary::marker { content: ""; }
body.portal .nav-explorar-resumen:hover,
body.portal .nav-explorar-resumen:focus-visible,
body.portal .nav-explorar--actual .nav-explorar-resumen {
  color: var(--tinta);
  background: var(--acento);
}
body.portal .nav-explorar-flecha,
body.portal .nav-subcategorias-flecha {
  width: .42rem;
  height: .42rem;
  flex: none;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: translateY(-.11rem) rotate(45deg);
  transition: transform 180ms cubic-bezier(.16, 1, .3, 1);
}
body.portal .nav-explorar-detalle[open] > .nav-explorar-resumen .nav-explorar-flecha,
body.portal .nav-subcategorias[open] > summary .nav-subcategorias-flecha {
  transform: translateY(.1rem) rotate(225deg);
}
body.portal .nav-explorar-panel {
  position: absolute;
  top: calc(100% + .55rem);
  left: 50%;
  z-index: 50;
  width: min(58rem, calc(100vw - 2rem));
  max-height: min(76vh, 38rem);
  padding: 1.15rem 1.25rem 1.25rem;
  overflow: auto;
  border: 1px solid rgba(23,35,31,.13);
  border-radius: 1.1rem;
  color: var(--tinta);
  background: var(--papel-alto);
  box-shadow: 0 18px 46px rgba(23,35,31,.18), 0 3px 10px rgba(23,35,31,.08);
  translate: -50% 0;
  transform-origin: top center;
  scrollbar-color: var(--tinta-3) var(--papel-2);
  scrollbar-width: thin;
}
body.portal .nav-explorar-detalle[open] > .nav-explorar-panel {
  animation: nav-panel-entrada 240ms cubic-bezier(.16, 1, .3, 1) both;
}
@keyframes nav-panel-entrada {
  from { opacity: 0; transform: translateY(-.45rem) scale(.99); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
body.portal .nav-explorar-cabecera {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 1.5rem;
  padding: .1rem .1rem .9rem;
  border-bottom: 1px solid var(--linea);
}
body.portal .nav-explorar-cabecera h2 {
  margin: 0 0 .28rem;
  color: var(--tinta);
  font-size: 1.08rem;
  font-weight: 650;
  letter-spacing: -.025em;
}
body.portal .nav-explorar-cabecera p {
  max-width: 38rem;
  margin: 0;
  color: var(--tinta-2);
  font-size: .83rem;
  line-height: 1.45;
}
body.portal .nav-explorar-atajos { display: flex; flex: none; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .8rem; }
body.portal .nav-explorar-atajos .nav-explorar-todas { white-space: nowrap; }
body.portal .nav-explorar-atajos .nav-explorar-todas[aria-current="page"] { color: var(--tinta); text-decoration: underline; text-decoration-color: var(--acento-2); text-underline-offset: .25rem; }
body.portal .nav-explorar-todas {
  display: inline-flex;
  min-height: 2.7rem;
  flex: none;
  align-items: center;
  gap: .55rem;
  color: var(--coral-oscuro);
  font-size: .8rem;
  font-weight: 600;
  text-decoration: none;
}
body.portal .nav-explorar-todas span,
body.portal .nav-explorar-titulo a > span {
  width: .43rem;
  height: .43rem;
  flex: none;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
  transform: rotate(45deg);
  transition: transform 160ms ease;
}
body.portal .nav-explorar-todas:hover { color: var(--tinta); }
body.portal .nav-explorar-todas:hover span,
body.portal .nav-explorar-titulo a:hover > span { transform: translateX(2px) rotate(45deg); }
body.portal .nav-explorar-grupos {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .55rem 1.2rem;
  padding-top: .75rem;
}
body.portal .nav-explorar-grupo {
  min-width: 0;
  padding: .45rem .1rem .55rem;
  border-bottom: 1px solid var(--linea);
}
body.portal .nav-explorar-titulo {
  margin: 0;
  font-size: .92rem;
  font-weight: 650;
  line-height: 1.25;
}
body.portal .nav-explorar-titulo a {
  display: inline-flex;
  min-height: 2rem;
  align-items: center;
  gap: .55rem;
  padding: .18rem 0;
  color: var(--tinta);
  text-decoration: none;
  white-space: normal;
}
body.portal .nav-explorar-pregunta {
  max-width: 25ch;
  margin: .1rem 0 .35rem;
  color: var(--tinta-3);
  font-size: .72rem;
  line-height: 1.4;
}
body.portal .nav-explorar-titulo a:hover,
body.portal .nav-explorar-titulo a[aria-current] { color: var(--coral-oscuro); background: transparent; }
body.portal .nav-subcategorias { margin-top: .15rem; }
body.portal .nav-subcategorias > summary {
  display: flex;
  min-height: 2.55rem;
  align-items: center;
  gap: .55rem;
  color: var(--tinta-3);
  cursor: pointer;
  font-size: .75rem;
  list-style: none;
}
body.portal .nav-subcategorias > summary:hover,
body.portal .nav-subcategorias > summary:focus-visible { color: var(--tinta); }
body.portal .nav-subcategorias-cuenta {
  display: inline-grid;
  min-width: 1.35rem;
  height: 1.35rem;
  place-items: center;
  border: 1px solid var(--linea);
  border-radius: 50%;
  color: var(--tinta-2);
  font-family: var(--fuente-mono);
  font-size: .62rem;
  font-variant-numeric: tabular-nums;
}
body.portal .nav-subcategorias-flecha { width: .36rem; height: .36rem; margin-left: auto; }
body.portal .nav-subcategorias > ul {
  display: none;
  margin: 0 0 .35rem .2rem;
  padding: .1rem 0 .1rem .55rem;
  border-left: 1px solid var(--linea-fuerte);
  list-style: none;
}
body.portal .nav-subcategorias[open] > ul {
  display: block;
  animation: nav-subcategorias-entrada 190ms cubic-bezier(.16, 1, .3, 1) both;
}
@keyframes nav-subcategorias-entrada {
  from { opacity: 0; transform: translateY(-.25rem); }
  to { opacity: 1; transform: translateY(0); }
}
body.portal .nav-subcategorias > ul a {
  display: flex;
  min-height: 2.45rem;
  align-items: center;
  padding: .38rem .55rem;
  border-radius: .45rem;
  color: var(--tinta-2);
  font-size: .79rem;
  line-height: 1.3;
  text-decoration: none;
  white-space: normal;
}
body.portal .nav-subcategorias > ul a:hover,
body.portal .nav-subcategorias > ul a:focus-visible,
body.portal .nav-subcategorias > ul a[aria-current] {
  color: var(--tinta);
  background: var(--papel-2);
}
body.portal .nav-explorar a:focus-visible,
body.portal .nav-explorar summary:focus-visible { outline: 2px solid var(--acento-2); outline-offset: 3px; }
body.portal .nav-explorar-tecnica {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: .5rem 1.2rem;
  margin-top: .7rem;
  padding: .85rem .2rem .2rem;
  border-top: 1px solid var(--linea-fuerte);
}
body.portal .nav-explorar-tecnica h3 { margin: 0 0 .2rem; color: var(--tinta-2); font-size: .83rem; font-weight: 650; }
body.portal .nav-explorar-tecnica p { max-width: 45rem; margin: 0; color: var(--tinta-3); font-size: .72rem; line-height: 1.4; }
body.portal .nav-explorar-tecnica ul { display: flex; flex-wrap: wrap; gap: .35rem; margin: 0; padding: 0; list-style: none; }
body.portal .nav-explorar-tecnica a {
  display: inline-flex;
  min-height: 2.4rem;
  align-items: center;
  gap: .45rem;
  padding: .35rem .65rem;
  border: 1px solid var(--linea);
  border-radius: .5rem;
  color: var(--tinta-2);
  background: var(--papel-2);
  font-size: .875rem;
  text-decoration: none;
}
body.portal .nav-explorar-tecnica a:hover,
body.portal .nav-explorar-tecnica a[aria-current] { color: var(--tinta); border-color: var(--linea-fuerte); background: var(--papel); }
body.portal .nav-explorar-pie { display: flex; justify-content: flex-end; gap: 1rem; margin-top: .6rem; padding-top: .65rem; border-top: 1px solid var(--linea); }
body.portal .nav-explorar-pie a { color: var(--tinta-3); font-size: .72rem; text-decoration: none; }
body.portal .nav-explorar-pie a:hover { color: var(--tinta); text-decoration: underline; text-underline-offset: 3px; }

/* Profundidad editorial: el encuadre se mueve, el texto queda quieto. */
body.portal .portal-parallax-img {
  transform: translate3d(0, var(--portal-parallax-y, 0px), 0) scale(1.08);
  transform-origin: 50% 50%;
}
body.portal .portal-parallax-img.portal-parallax-immersive {
  transform: translate3d(0, var(--portal-parallax-y, 0px), 0) scale(1.12);
}
body.portal .hero-agenda { transform: translate3d(0, var(--hero-agenda-y, 0px), 0) rotate(-3.5deg); }

@media (max-width: 52rem) {
  body.portal .nav-explorar-panel {
    position: static;
    width: auto;
    max-height: none;
    margin: .4rem 0 .8rem;
    padding: .9rem;
    border-radius: .8rem;
    translate: none;
    box-shadow: 0 8px 22px rgba(23,35,31,.12);
  }
  body.portal .nav-explorar-cabecera { display: block; }
  body.portal .nav-explorar-todas { min-height: 2.5rem; }
  body.portal .nav-explorar-grupos { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem .8rem; }
  body.portal .nav-explorar-tecnica { grid-template-columns: 1fr; }
  body.portal .nav-explorar-pie { justify-content: flex-start; }
  body.portal .nav-explorar-titulo a { white-space: normal; }
  body.portal .nav-subcategorias > ul a { min-height: 2.65rem; }
  body.portal .portal-parallax-img { transform: translate3d(0, var(--portal-parallax-y, 0px), 0) scale(1.05); }
  body.portal .portal-parallax-img.portal-parallax-immersive { transform: translate3d(0, var(--portal-parallax-y, 0px), 0) scale(1.075); }
}
@media (max-width: 36rem) {
  body.portal .nav-explorar-grupos { grid-template-columns: 1fr; }
  body.portal .nav-explorar-grupo { padding-block: .35rem .5rem; }
  body.portal .nav-explorar-tecnica ul { display: grid; grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  body.portal .nav-explorar-resumen,
  body.portal .nav-explorar-flecha,
  body.portal .nav-subcategorias-flecha,
  body.portal .nav-explorar-todas span,
  body.portal .nav-explorar-titulo a > span { transition: none; }
  body.portal .nav-explorar-detalle[open] > .nav-explorar-panel,
  body.portal .nav-subcategorias[open] > ul { animation: none; }
  body.portal .portal-parallax-img,
  body.portal .portal-parallax-img.portal-parallax-immersive { transform: none; }
  body.portal .hero-agenda { transform: rotate(-3.5deg); }
}

/* Navegación única y compacta para todos los tipos de página. */
body.portal .nav-lista { flex-wrap: nowrap; }
body.portal .nav-lista > li:not(.nav-explorar) > a { padding-inline: .52rem; }
body.portal .nav-lista .nav-explorar-ver-todas {
  display: inline-flex;
  min-height: 2rem;
  align-items: center;
  gap: .4rem;
  margin-top: .15rem;
  color: var(--coral-oscuro);
  font-size: .875rem;
  font-weight: 650;
  text-decoration: underline;
  text-decoration-color: rgba(160, 61, 43, .35);
  text-underline-offset: .18rem;
}
body.portal .nav-lista .nav-explorar-ver-todas:hover,
body.portal .nav-lista .nav-explorar-ver-todas:focus-visible {
  color: var(--tinta);
  background: var(--acento);
  text-decoration-color: currentColor;
}
body.portal .nav-explorar-ver-todas span {
  width: .36rem;
  height: .36rem;
  flex: none;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
  transform: rotate(45deg);
}
body.portal .nav-subcategorias > summary { min-height: 2.75rem; }
body.portal .nav-subcategorias-cuenta { display: none; }

/* Cuatro tareas prioritarias; las fichas quedan legibles sin dominar la página. */
body.portal .decision-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
body.portal .decision-card { min-height: 19rem; padding: 1.25rem; }
body.portal .decision-card h3 {
  max-width: 15ch;
  font-size: clamp(1.3rem, calc(1.16rem + .52vw), 1.75rem);
  line-height: 1.04;
  letter-spacing: -.035em;
}
body.portal .decision-card p { font-size: var(--s2); line-height: 1.48; }
body.portal .decision-link { font-size: .875rem; }
body.portal .decision-card--paper {
  border: 1px solid var(--linea-fuerte);
  color: var(--tinta);
  background: var(--papel-alto);
}
body.portal .decision-card--paper .decision-icon { color: var(--coral-oscuro); }
body.portal .decision-card--paper .decision-link { color: var(--coral-oscuro); }

/* La búsqueda ahora mezcla contenidos y entidades del portal. */
body.portal .resultado-seccion { font-size: .8125rem; letter-spacing: .045em; }
body.portal .resultado-detalle { margin: -.25rem 0 .45rem; color: var(--tinta-3); font-size: var(--s1); }
body.portal .buscar-rutas-sugeridas { display: flex; flex-wrap: wrap; gap: .65rem; max-width: var(--ancho-texto); margin-top: 1rem; }
body.portal .buscar-rutas-sugeridas a {
  display: inline-flex;
  min-height: 2.75rem;
  align-items: center;
  padding: .45rem .85rem;
  border: 1px solid var(--linea-fuerte);
  border-radius: 999px;
  color: var(--tinta);
  background: var(--papel-alto);
  font-size: .875rem;
  font-weight: 600;
  text-decoration: none;
}
body.portal .buscar-rutas-sugeridas a:hover,
body.portal .buscar-rutas-sugeridas a:focus-visible { border-color: var(--acento-2); }

@media (max-width: 74rem) {
  body.portal .cabecera-inner { grid-template-columns: minmax(0, 1fr) auto; gap: .55rem 1rem; }
  body.portal .menu-btn { display: none; grid-column: 2; grid-row: 1; justify-self: end; }
  html.con-js body.portal .menu-btn { display: block; }
  body.portal .nav { grid-column: 1 / -1; grid-row: 3; padding: .7rem 0; border-top: 1px solid rgba(255,255,255,.16); }
  html.con-js body.portal .nav { display: none; }
  html.con-js body.portal .nav.abierto { display: block; }
  body.portal .nav-lista { flex-direction: column; gap: 0; }
  body.portal .nav-lista > li { border-bottom: 1px solid rgba(255,255,255,.14); }
  body.portal .nav-lista > li:not(.nav-explorar) > a {
    display: block;
    min-height: 2.8rem;
    padding: .72rem .55rem;
    border-radius: .5rem;
  }
  body.portal .nav-explorar { width: 100%; }
  body.portal .nav-explorar-resumen { min-height: 2.8rem; }
  body.portal .nav-explorar-panel {
    position: static;
    width: auto;
    max-height: none;
    margin: .35rem 0 .8rem;
    translate: none;
    box-shadow: 0 8px 22px rgba(23,35,31,.12);
  }
  body.portal .nav-explorar-cabecera { display: block; }
  body.portal .nav-explorar-grupos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.portal .nav-explorar-tecnica { grid-template-columns: 1fr; }
  body.portal .nav-explorar-pie { justify-content: flex-start; }
  body.portal .buscador { grid-column: 1 / -1; grid-row: 2; margin-top: .2rem; }
  body.portal .buscador input[type="search"] { width: 100%; flex: 1; }
  body.portal .decision-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 36rem) {
  body.portal .nav-explorar-grupos { grid-template-columns: 1fr; }
  body.portal .decision-grid { grid-template-columns: 1fr; }
  body.portal .decision-card { min-height: 16rem; }
}
@media (prefers-reduced-motion: reduce) {
  body.portal .decision-card { transition: none; }
}

/* ================================================================
   Agenda de ferias — fechas como entrada editorial, no como catálogo.
   El gesto propio es la ficha/ticket de fecha: la agenda se reconoce por
   su perforación, tipografía de datos y código de color por industria.
   ================================================================ */
body.portal .ferias-pagina {
  width: min(100%, 94rem);
  margin: 0 auto;
  padding: clamp(1rem, 3.4vw, 3rem) clamp(1rem, 3vw, 2.5rem) 5rem;
}
body.portal .ferias-masthead {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(17rem, .65fr);
  gap: clamp(1.6rem, 4vw, 4rem);
  align-items: center;
  overflow: hidden;
  padding: clamp(1.5rem, 4.5vw, 4rem);
  border-radius: 1.2rem;
  color: var(--papel-alto);
  background: linear-gradient(112deg, var(--tinta-portada) 0%, var(--tinta-portada-media) 58%, var(--tinta-portada-luz) 100%);
  isolation: isolate;
}
body.portal .ferias-masthead::before {
  position: absolute;
  z-index: -1;
  inset: 0 0 0 auto;
  width: min(66%, 68rem);
  background: url('../branding/plano-activacion.svg') right center / auto 100% no-repeat;
  mask-image: linear-gradient(90deg, transparent 0%, transparent 43%, #000 76%, #000 100%);
  content: "";
  opacity: .68;
  pointer-events: none;
}
body.portal .ferias-masthead-copy { max-width: 53rem; }
body.portal .ferias-masthead h1 { max-width: 15ch; margin: 0; color: var(--papel-alto); font-size: clamp(2.2rem, 4.8vw, 4.1rem); font-weight: 600; line-height: .99; letter-spacing: -.065em; }
body.portal .ferias-intro { max-width: 42rem; margin: 1.15rem 0 0; color: rgba(255,253,248,.75); font-size: clamp(.95rem, 1.35vw, 1.08rem); line-height: 1.56; }
body.portal .ferias-atajos { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.1rem; margin-top: 1.55rem; color: rgba(255,253,248,.57); font-size: .72rem; }
body.portal .ferias-atajos i { padding-inline: .28rem; color: var(--acento); font-style: normal; }
body.portal .ferias-atajo { display: inline-flex; min-height: 2.7rem; align-items: center; gap: .7rem; padding: .55rem .9rem; border: 1px solid rgba(255,253,248,.3); border-radius: 999px; color: var(--papel-alto); font-size: .78rem; text-decoration: none; transition: background .18s ease, color .18s ease, border-color .18s ease; }
body.portal .ferias-atajo--principal { border-color: var(--acento); color: var(--tinta); background: var(--acento); font-weight: 600; }
body.portal .ferias-atajo:hover { border-color: var(--papel-alto); color: var(--tinta); background: var(--papel-alto); }
body.portal .ferias-atajo:focus-visible,
body.portal .feria-card-enlace:focus-visible,
body.portal .ferias-filtros button:focus-visible,
body.portal .feria-link-oficial:focus-visible { outline: 3px solid var(--marca-profundo); outline-offset: 3px; }
body.portal .ferias-siguiente { position: relative; min-height: 17rem; padding: 1.2rem 1.35rem 1.1rem; border-radius: .65rem; color: var(--tinta); background: var(--acento-tenue); box-shadow: .45rem .5rem 0 rgba(0,0,0,.15); transform: rotate(.7deg); }
body.portal .ferias-siguiente::before,
body.portal .feria-ticket::before { position: absolute; top: .7rem; bottom: .7rem; left: -.28rem; width: .56rem; background: radial-gradient(circle, var(--tinta) .22rem, transparent .25rem) 50% 0 / .56rem .95rem repeat-y; content: ""; opacity: .65; }
body.portal .ferias-siguiente-fecha { display: flex; align-items: baseline; gap: .8rem; color: var(--tinta); text-decoration: none; }
body.portal .ferias-siguiente-fecha > span { font-size: clamp(3.3rem, 7vw, 5rem); font-weight: 600; line-height: .92; letter-spacing: -.09em; font-variant-numeric: tabular-nums; }
body.portal .ferias-siguiente-fecha small { font-family: var(--fuente-mono); font-size: .78rem; font-weight: 600; letter-spacing: .05em; }
body.portal .ferias-siguiente-nombre { margin: 0 0 .6rem; font-size: 1.45rem; font-weight: 600; line-height: 1.08; letter-spacing: -.045em; }
body.portal .ferias-siguiente-nombre a { text-decoration: none; }
body.portal .ferias-siguiente-lugar { margin: .4rem 0 0; color: var(--tinta-2); font-size: .74rem; }
body.portal .ferias-siguiente-trazo { display: flex; align-items: center; gap: .35rem; width: 100%; margin-top: 1rem; }
body.portal .ferias-siguiente-trazo i { width: .36rem; height: .36rem; border-radius: 50%; background: var(--coral); }
body.portal .ferias-siguiente-trazo i:first-child { width: 42%; height: 1px; border-radius: 0; background: var(--linea-fuerte); }
body.portal .ferias-siguiente-trazo i:nth-child(2) { background: var(--marca-profundo); }
body.portal .ferias-siguiente-trazo i:nth-child(3) { background: var(--marca); }
body.portal .ferias-siguiente-cierre { margin: .6rem 0 0; color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .55rem; }

body.portal .ferias-listado { padding-top: clamp(2.8rem, 6vw, 5rem); }
body.portal .ferias-seccion-cabecera,
body.portal .ferias-pendientes-cabecera { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 1.3rem; }
body.portal .ferias-seccion-cabecera h2,
body.portal .ferias-pendientes-cabecera h2,
body.portal .feria-respuestas-cabecera h2,
body.portal .ferias-relacionadas > div:first-child h2 { margin: 0; font-size: clamp(1.6rem, 3.3vw, 2.65rem); font-weight: 600; line-height: 1.03; letter-spacing: -.06em; }
body.portal .ferias-seccion-cabecera > p,
body.portal .ferias-pendientes-cabecera > p { max-width: 28rem; margin: 0; color: var(--tinta-2); font-size: .83rem; }
body.portal .ferias-controles { display: grid; gap: .8rem; margin: 1.2rem 0 .45rem; }
body.portal .ferias-busqueda { display: flex; min-height: 3.1rem; align-items: center; gap: .7rem; max-width: 36rem; padding: 0 .9rem; border: 1px solid var(--linea); border-radius: .6rem; background: var(--papel-alto); }
body.portal .ferias-busqueda svg { width: 1.05rem; flex: none; fill: none; stroke: var(--tinta-3); stroke-width: 1.7; }
body.portal .ferias-busqueda input { width: 100%; min-width: 0; padding: .7rem 0; border: 0; outline: 0; color: var(--tinta); background: transparent; font: inherit; font-size: .82rem; }
body.portal .ferias-busqueda:focus-within { border-color: var(--tinta); box-shadow: 0 0 0 3px rgba(251,174,3,.3); }
body.portal .ferias-filtros { display: flex; flex-wrap: wrap; gap: .38rem; }
body.portal .ferias-filtros button { min-height: 2.25rem; padding: .38rem .7rem; border: 1px solid var(--linea); border-radius: 999px; color: var(--tinta-2); background: transparent; font: inherit; font-size: .7rem; cursor: pointer; transition: background .15s ease, color .15s ease, border-color .15s ease; }
body.portal .ferias-filtros button:hover,
body.portal .ferias-filtros button[aria-pressed="true"] { border-color: var(--marca); color: var(--tinta); background: var(--marca); }
body.portal .ferias-resultado { margin: .45rem 0 .75rem; color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .57rem; }
body.portal .ferias-tarjetas { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .65rem; }
body.portal .feria-card { --feria-acento: var(--acento); min-width: 0; border: 1px solid var(--linea); border-top: 3px solid var(--feria-acento); border-radius: .7rem; background: var(--papel-alto); transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
body.portal .feria-card--mineria,
body.portal .feria-card--construccion,
body.portal .feria-card--energia,
body.portal .feria-card--alimentos,
body.portal .feria-card--logistica,
body.portal .feria-card--acuicultura,
body.portal .feria-card--naval,
body.portal .feria-card--aeroespacial,
body.portal .feria-card--automotriz,
body.portal .feria-card--inmobiliario { --feria-acento: var(--marca); }
body.portal .feria-card:hover { z-index: 1; border-color: var(--feria-acento); box-shadow: var(--sombra-ficha); transform: translateY(-3px); }
body.portal .feria-card-enlace { display: flex; min-height: 12.2rem; flex-direction: column; padding: .9rem 1rem .8rem; color: var(--tinta); text-decoration: none; }
body.portal .feria-card-registro { display: flex; justify-content: space-between; gap: .6rem; margin: .22rem 0 .4rem; color: var(--tinta-3); font-size: .64rem; }
body.portal .feria-card-registro span:last-child { color: var(--marca-profundo); font-weight: 600; }
body.portal .feria-card-fecha { display: flex; align-items: baseline; gap: .6rem; margin: .42rem 0 .25rem; }
body.portal .feria-card-fecha strong { color: var(--marca-profundo); font-size: 2rem; font-weight: 600; line-height: .9; letter-spacing: -.075em; font-variant-numeric: tabular-nums; }
body.portal .feria-card-fecha > span { color: var(--tinta-2); font-family: var(--fuente-mono); font-size: .57rem; font-weight: 600; }
body.portal .feria-card-nombre { margin: 0 0 .22rem; font-size: 1.02rem; font-weight: 600; line-height: 1.16; letter-spacing: -.035em; }
body.portal .feria-card-lugar { color: var(--tinta-3); font-size: .68rem; line-height: 1.4; }
body.portal .feria-card-pie { display: flex; justify-content: space-between; gap: .6rem; margin-top: auto; padding-top: .55rem; border-top: 1px solid var(--linea); color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .49rem; }
body.portal .feria-card-pie > span:last-child { color: var(--feria-acento); font-size: .75rem; }
body.portal .ferias-sin-resultados { margin: .6rem 0 0; padding: 1rem; border-left: 3px solid var(--acento); color: var(--tinta-2); background: var(--papel-alto); font-size: .82rem; }
body.portal .ferias-pendientes { margin-top: 3.2rem; padding-top: 2.2rem; border-top: 1px solid var(--linea-fuerte); }
body.portal .ferias-pendientes-cabecera { margin-bottom: 1rem; }
body.portal .ferias-pendientes-lista { border-top: 1px solid var(--linea); }
body.portal .feria-pendiente { display: grid; grid-template-columns: minmax(14rem, 1fr) minmax(9rem, .4fr) auto; gap: 1rem; align-items: center; padding: .9rem .5rem; border-bottom: 1px solid var(--linea); }
body.portal .feria-pendiente-edicion { display: block; margin: .18rem 0 .22rem; color: var(--tinta-3); font-size: .66rem; }
body.portal .feria-pendiente h3 { margin: 0 0 .05rem; font-size: 1.02rem; line-height: 1.2; letter-spacing: -.03em; }
body.portal .feria-pendiente h3 a { text-decoration: none; }
body.portal .feria-pendiente p { margin: 0; color: var(--tinta-3); font-size: .69rem; }
body.portal .feria-pendiente-estado { display: inline-flex; width: fit-content; align-items: center; gap: .4rem; color: var(--mat); font-family: var(--fuente-mono); font-size: .55rem; }
body.portal .feria-pendiente-estado::before { width: .36rem; height: .36rem; border-radius: 50%; background: var(--acento-2); content: ""; }
body.portal .feria-pendiente--alerta .feria-pendiente-estado { color: var(--coral-oscuro); }
body.portal .feria-pendiente--alerta .feria-pendiente-estado::before { background: var(--coral); }
body.portal .feria-pendiente-fuente { color: var(--tinta-2); font-size: .66rem; text-decoration-thickness: 1px; text-underline-offset: 3px; }
body.portal .feria-pendiente-fuente:hover { color: var(--coral-oscuro); }
body.portal .ferias-metodo { display: grid; grid-template-columns: auto 1fr auto; gap: .85rem; align-items: center; margin-top: 1.5rem; padding: .95rem 1rem; border: 1px solid var(--linea); border-radius: .7rem; background: rgba(255,253,248,.68); }
body.portal .ferias-metodo-icono { display: grid; width: 2.1rem; height: 2.1rem; place-items: center; border-radius: 50%; color: var(--ok); background: var(--ok-tenue); font-weight: 700; }
body.portal .ferias-metodo strong { font-size: .76rem; }
body.portal .ferias-metodo p { margin: .12rem 0 0; color: var(--tinta-3); font-size: .66rem; line-height: 1.45; }
body.portal .ferias-metodo > a { color: var(--coral-oscuro); font-size: .69rem; font-weight: 600; white-space: nowrap; }

/* Ficha por feria: respuesta literal arriba, fecha y recinto en un ticket. */
body.portal .feria-hero { --feria-acento: var(--acento); position: relative; display: grid; grid-template-columns: minmax(0, 1.12fr) minmax(19rem, .88fr); gap: clamp(1.2rem, 3.2vw, 2.8rem); align-items: center; overflow: hidden; padding: clamp(1.35rem, 4vw, 3.25rem); border-radius: 1.1rem; color: var(--papel-alto); background: linear-gradient(112deg, var(--tinta-portada) 0%, var(--tinta-portada-media) 59%, var(--tinta-portada-luz) 100%); isolation: isolate; }
body.portal .feria-hero--mineria { --feria-acento: var(--acento); }
body.portal .feria-hero--construccion,
body.portal .feria-hero--energia,
body.portal .feria-hero--alimentos,
body.portal .feria-hero--logistica,
body.portal .feria-hero--acuicultura,
body.portal .feria-hero--naval,
body.portal .feria-hero--aeroespacial { --feria-acento: var(--acento); }
body.portal .feria-hero::after { position: absolute; z-index: -1; inset: 0 0 0 auto; width: min(62%, 54rem); background: url('../branding/plano-activacion.svg') right center / auto 100% no-repeat; content: ""; opacity: .4; pointer-events: none; mask-image: linear-gradient(90deg, transparent 0%, transparent 43%, #000 76%, #000 100%); }
body.portal .feria-hero-copy { position: relative; z-index: 1; min-width: 0; }
body.portal .ferias-ruta { display: flex; flex-wrap: wrap; gap: .45rem; margin: .55rem 0 .2rem; color: rgba(255,253,248,.62); font-size: .68rem; }
body.portal .ferias-ruta a { color: rgba(255,253,248,.72); text-decoration-color: var(--feria-acento); }
body.portal .feria-hero h1 { max-width: 19ch; margin: 0; color: var(--papel-alto); font-size: clamp(2rem, 4vw, 3.35rem); font-weight: 600; line-height: 1; letter-spacing: -.065em; }
body.portal .feria-respuesta-directa { max-width: 52rem; margin: .9rem 0 0; color: rgba(255,253,248,.83); font-size: clamp(.87rem, 1.22vw, 1rem); line-height: 1.55; }
body.portal .feria-link-oficial { display: inline-flex; align-items: center; gap: .5rem; min-height: 2.7rem; margin-top: 1rem; color: var(--feria-acento); font-size: .76rem; font-weight: 600; text-underline-offset: 4px; }
body.portal .feria-hero-visual { display: grid; min-width: 0; grid-template-rows: minmax(0, 1fr) auto; gap: .55rem; align-self: stretch; margin: 0; }
body.portal .feria-hero-media { position: relative; min-width: 0; min-height: 19rem; aspect-ratio: 1.24; overflow: hidden; border: 1px solid rgba(255,253,248,.2); border-radius: .85rem; background: var(--tinta-portada-media); }
body.portal .feria-hero-media::after { position: absolute; z-index: 1; inset: 48% 0 0; background: linear-gradient(180deg, transparent, rgba(12,22,18,.48)); content: ""; pointer-events: none; }
body.portal .feria-hero-media picture { position: absolute; inset: 0; display: block; width: 100%; height: 100%; }
body.portal .feria-hero-media img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
body.portal .feria-hero-visual figcaption { margin: 0; padding: 0 .1rem; color: rgba(255,253,248,.78); font-size: .8125rem; line-height: 1.45; }
body.portal .feria-ticket { position: relative; min-height: 16.5rem; padding: 1.2rem 1.3rem 1.1rem 1.55rem; border-radius: .55rem; color: var(--tinta); background: var(--papel-alto); box-shadow: 0 .6rem 1.5rem rgba(0,0,0,.2); }
body.portal .feria-hero-media .feria-ticket { position: absolute; z-index: 2; bottom: .85rem; left: .85rem; width: min(17rem, calc(100% - 1.7rem)); min-height: 0; padding: .65rem .9rem .7rem; border: 1px solid rgba(255,255,255,.55); border-radius: .55rem; }
body.portal .feria-ticket-dia { display: inline-block; margin: 0; color: var(--feria-acento); font-size: clamp(2.5rem, 4.6vw, 3.45rem); font-weight: 600; line-height: .9; letter-spacing: -.075em; font-variant-numeric: tabular-nums; vertical-align: baseline; }
body.portal .feria-ticket-mes { display: inline-block; margin: 0 0 0 .55rem; color: var(--tinta); font-family: var(--fuente-mono); font-size: .72rem; font-weight: 600; letter-spacing: .04em; }
body.portal .feria-ticket-corte { position: relative; display: flex; align-items: center; gap: .35rem; margin: .48rem -.15rem .42rem; border-top: 1px dashed var(--linea-fuerte); }
body.portal .feria-ticket-corte span { position: absolute; top: -.45rem; left: -.97rem; width: .8rem; height: .8rem; border-radius: 50%; background: var(--tinta); }
body.portal .feria-ticket-corte span:last-child { right: -.95rem; left: auto; }
body.portal .feria-ticket-lugar { max-width: 25rem; margin: .1rem 0 0; color: var(--tinta-2); font-size: .78rem; font-weight: 600; line-height: 1.3; }
body.portal .feria-ticket-aviso { display: inline-flex; margin-top: .42rem; padding: .2rem .4rem; border-radius: .2rem; color: var(--coral-oscuro); background: var(--marca-suave); font-family: var(--fuente-mono); font-size: .7rem; line-height: 1.35; }
body.portal .feria-ficha-meta { display: flex; flex-wrap: wrap; gap: .45rem 1rem; align-items: center; padding: .85rem .15rem; border-bottom: 1px solid var(--linea); color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .8125rem; }
body.portal .feria-ficha-meta > span + span { padding-left: 1rem; border-left: 1px solid var(--linea-fuerte); }
body.portal .feria-meta-sector { display: inline-flex; align-items: center; gap: .35rem; }
body.portal .feria-meta-sector-icono { display: inline-grid; width: 1.15rem; height: 1.15rem; flex: none; place-items: center; color: var(--marca-profundo); }
body.portal .feria-meta-sector-icono svg { display: block; width: 100%; height: 100%; }
body.portal .feria-meta-estado { display: inline-flex; align-items: center; gap: .38rem; color: var(--ok); }
body.portal .feria-meta-estado i { width: .35rem; height: .35rem; border-radius: 50%; background: currentColor; }
body.portal .feria-meta-estado--pendiente { color: var(--mat); }
body.portal .feria-alerta { display: grid; grid-template-columns: auto 1fr; gap: .75rem; margin-top: 1rem; padding: .85rem 1rem; border: 1px solid rgba(251,174,3,.65); border-radius: .6rem; background: var(--marca-suave); }
body.portal .feria-alerta > span { display: grid; width: 1.6rem; height: 1.6rem; place-items: center; border-radius: 50%; color: var(--tinta); background: var(--marca); font-weight: 700; }
body.portal .feria-alerta strong { font-size: .78rem; }
body.portal .feria-alerta p { margin: .15rem 0 0; color: var(--tinta-2); font-size: .73rem; line-height: 1.45; }
body.portal .feria-activacion { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(17rem, .65fr); gap: clamp(1.2rem, 4vw, 3.5rem); align-items: start; padding: clamp(2rem, 5vw, 4rem) 0; }
body.portal .feria-activacion-intro { max-width: 49rem; }
body.portal .feria-activacion-intro h2,
body.portal .feria-audiencia h2 { max-width: 18ch; margin: 0; font-size: clamp(1.65rem, 3.4vw, 2.7rem); font-weight: 600; line-height: 1.02; letter-spacing: -.06em; }
body.portal .feria-activacion-intro > p:last-child,
body.portal .feria-audiencia > div:last-child > p:last-child { margin: .75rem 0 0; color: var(--tinta-2); font-size: .9rem; line-height: 1.6; }
body.portal .feria-plan-panel { padding: 1.1rem 1.15rem; border: 1px solid var(--linea); border-left: 3px solid var(--acento-2); border-radius: .65rem; background: rgba(255,253,248,.68); }
body.portal .feria-plan-panel h3 { margin: 0; font-size: 1rem; line-height: 1.2; letter-spacing: -.03em; }
body.portal .feria-plan-panel > p { margin: .4rem 0 .8rem; color: var(--tinta-2); font-size: .74rem; line-height: 1.5; }
body.portal .feria-plan-panel > a { color: var(--coral-oscuro); font-size: .68rem; font-weight: 600; text-underline-offset: 3px; }
body.portal .feria-plan-panel > a { display: table; margin-top: .42rem; }
body.portal .feria-audiencia { display: grid; grid-template-columns: 5.5rem minmax(0, 1fr); gap: 1.2rem; align-items: center; padding: 1.25rem 0 1.5rem; border-top: 1px solid var(--linea); border-bottom: 1px solid var(--linea); }
body.portal .feria-audiencia-sello { position: relative; display: grid; width: 5rem; aspect-ratio: 1; place-items: center; border: 1px solid var(--linea-fuerte); border-radius: 50%; color: var(--tinta); font-family: var(--fuente-mono); }
body.portal .feria-audiencia-sello::before,
body.portal .feria-audiencia-sello::after { position: absolute; inset: .45rem; border: 1px solid var(--linea); border-radius: 50%; content: ""; }
body.portal .feria-audiencia-sello::after { inset: -.35rem; border-style: dashed; opacity: .7; }
body.portal .feria-audiencia-sello span { z-index: 1; font-size: 1.65rem; font-weight: 600; }
body.portal .feria-audiencia-sello i { position: absolute; top: -.3rem; left: 50%; width: .4rem; height: .4rem; border-radius: 50%; background: var(--coral); }
body.portal .feria-audiencia-sello i:nth-of-type(2) { top: auto; bottom: .1rem; left: -.15rem; background: var(--acento-2); }
body.portal .feria-audiencia-sello i:nth-of-type(3) { top: auto; right: -.1rem; bottom: .65rem; left: auto; background: var(--marca); }
body.portal .feria-audiencia h2 { font-size: clamp(1.35rem, 2.8vw, 2rem); }
body.portal .feria-audiencia > div:last-child > p:last-child { margin-top: .35rem; font-size: .82rem; }
body.portal .feria-respuestas { padding: clamp(2.2rem, 5vw, 4rem) 0; }
body.portal .feria-respuestas-cabecera { margin-bottom: 1rem; }
body.portal .feria-respuestas-cabecera h2 { max-width: 20ch; }
body.portal .feria-respuesta-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .65rem; }
body.portal .feria-respuesta-grid article { padding: 1rem; border: 1px solid var(--linea); border-radius: .65rem; background: var(--papel-alto); }
body.portal .feria-respuesta-grid article > span { display: block; margin: .28rem 0; color: var(--tinta-3); font-size: .67rem; }
body.portal .feria-respuesta-grid h3 { margin: 0; font-size: .96rem; line-height: 1.2; letter-spacing: -.025em; }
body.portal .feria-respuesta-grid p { margin: 0; color: var(--tinta-2); font-size: .72rem; line-height: 1.5; }
body.portal .feria-fuentes { display: grid; grid-template-columns: minmax(14rem, 1fr) auto auto; gap: .5rem 1rem; align-items: center; padding: .9rem 0; border-top: 1px solid var(--linea-fuerte); border-bottom: 1px solid var(--linea-fuerte); }
body.portal .feria-fuentes > div { display: grid; gap: .12rem; }
body.portal .feria-fuentes strong { font-size: .77rem; }
body.portal .feria-fuentes > div > span { color: var(--tinta-3); font-size: .63rem; }
body.portal .feria-fuentes > a { display: inline-flex; min-height: 2.4rem; align-items: center; gap: .35rem; padding: .45rem .65rem; border: 1px solid var(--linea); border-radius: .45rem; color: var(--tinta-2); font-size: .64rem; text-decoration: none; }
body.portal .feria-fuentes > a:hover { border-color: var(--tinta); color: var(--tinta); background: var(--papel-alto); }
body.portal .ferias-relacionadas { display: grid; grid-template-columns: minmax(13rem, .65fr) 1fr; gap: 2rem; align-items: start; padding: 2.5rem 0 1rem; }
body.portal .ferias-relacionadas > div:first-child h2 { font-size: clamp(1.55rem, 3vw, 2.3rem); }
body.portal .ferias-relacionadas-lista { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .5rem; }
body.portal .feria-relacionadas-lista > a,
body.portal .ferias-relacionadas-lista > a { position: relative; display: flex; min-width: 0; flex-direction: column; gap: .22rem; padding: .7rem; border: 1px solid var(--linea); border-radius: .55rem; background: var(--papel-alto); text-decoration: none; }
body.portal .ferias-relacionadas-lista > a:hover { border-color: var(--coral); }
body.portal .ferias-relacionadas-lista > a > span { color: var(--tinta-3); font-size: .65rem; }
body.portal .ferias-relacionadas-lista > a strong { padding-right: .7rem; font-size: .78rem; line-height: 1.15; }
body.portal .ferias-relacionadas-lista > a small { color: var(--tinta-3); font-size: .59rem; line-height: 1.3; }
body.portal .ferias-relacionadas-lista > a i { position: absolute; right: .55rem; bottom: .5rem; color: var(--coral-oscuro); font-size: .8rem; font-style: normal; }
body.portal .feria-volver { margin: 1.2rem 0 0; font-size: .73rem; }
body.portal .feria-volver a { color: var(--tinta-2); text-underline-offset: 3px; }

/* Archivo distinguido: las ediciones pasadas dejan de parecer próximas. */
body.portal .ferias-realizadas { margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--linea-fuerte); }
body.portal .ferias-realizadas-lista { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .55rem; }
body.portal .feria-realizada { display: grid; grid-template-columns: 2rem minmax(0,1fr) auto; gap: .65rem; align-items: center; padding: .75rem; border: 1px solid var(--linea); border-radius: .6rem; background: rgba(255,253,248,.72); }
body.portal .feria-realizada-sello { display: grid; width: 1.75rem; height: 1.75rem; place-items: center; border-radius: 50%; color: #315d45; background: #e0eee4; font-size: .75rem; }
body.portal .feria-realizada > div > p { margin: .2rem 0; color: var(--tinta-3); font-size: .64rem; }
body.portal .feria-realizada h3 { margin: 0; font-size: .84rem; line-height: 1.15; }
body.portal .feria-realizada h3 a { color: var(--tinta); text-decoration: none; }
body.portal .feria-realizada h3 a:hover { text-decoration: underline; text-underline-offset: 2px; }
body.portal .feria-realizada > div > span { color: var(--tinta-3); font-size: .59rem; line-height: 1.3; }
body.portal .feria-realizada-estado { max-width: 9rem; color: #47634f; font-size: .58rem; font-weight: 600; line-height: 1.35; text-decoration: none; }
body.portal .feria-realizada-estado:hover { text-decoration: underline; text-underline-offset: 2px; }

@media (max-width: 58rem) {
  body.portal .ferias-masthead { grid-template-columns: minmax(0, 1fr) minmax(14rem, .6fr); padding: 1.6rem; }
  body.portal .ferias-siguiente { min-height: 15rem; }
  body.portal .ferias-tarjetas { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.portal .ferias-realizadas-lista { grid-template-columns: 1fr; }
  body.portal .feria-hero { grid-template-columns: minmax(0, 1.05fr) minmax(15rem, .95fr); gap: 1.1rem; }
  body.portal .feria-hero-media { min-height: 17rem; aspect-ratio: 1.08; }
  body.portal .feria-activacion { grid-template-columns: minmax(0, 1fr) minmax(15rem, .7fr); gap: 1rem; }
  body.portal .ferias-relacionadas { grid-template-columns: 1fr; gap: 1rem; }
}
@media (max-width: 42rem) {
  body.portal .ferias-pagina { padding-inline: 1rem; }
  body.portal .ferias-masthead { grid-template-columns: 1fr; gap: 1.25rem; padding: 1.35rem; }
  body.portal .ferias-masthead::before { inset: auto 0 0; width: 100%; height: 52%; opacity: .36; background-position: right bottom; }
  body.portal .ferias-masthead h1 { max-width: 13ch; font-size: clamp(2.25rem, 11vw, 3.4rem); }
  body.portal .ferias-siguiente { width: min(100%, 24rem); min-height: 14rem; justify-self: center; }
  body.portal .ferias-seccion-cabecera,
  body.portal .ferias-pendientes-cabecera { display: block; }
  body.portal .ferias-seccion-cabecera > p,
  body.portal .ferias-pendientes-cabecera > p { margin-top: .5rem; }
  body.portal .ferias-tarjetas { gap: .45rem; }
  body.portal .feria-card-enlace { min-height: 11rem; padding: .75rem; }
  body.portal .feria-card-fecha { display: block; margin: .72rem 0 .48rem; }
  body.portal .feria-card-fecha > span { display: block; margin-top: .2rem; }
  body.portal .feria-card-nombre { font-size: .9rem; }
  body.portal .feria-card-lugar { font-size: .62rem; }
  body.portal .feria-card-pie { font-size: .44rem; }
  body.portal .feria-pendiente { grid-template-columns: 1fr auto; gap: .5rem; padding: .8rem .15rem; }
  body.portal .feria-pendiente-estado { grid-column: 2; grid-row: 1; }
  body.portal .feria-pendiente-fuente { grid-column: 1 / -1; }
  body.portal .feria-realizada { grid-template-columns: 1.8rem minmax(0,1fr); }
  body.portal .feria-realizada-estado { grid-column: 2; }
  body.portal .ferias-metodo { grid-template-columns: auto 1fr; }
  body.portal .ferias-metodo > a { grid-column: 2; }
  body.portal .feria-hero { grid-template-columns: 1fr; gap: 1.15rem; padding: 1.3rem; }
  body.portal .feria-hero::after { inset: auto 0 0; width: 100%; height: 46%; background-position: right bottom; opacity: .4; }
  body.portal .ferias-ruta { margin-bottom: 1.2rem; }
  body.portal .feria-hero h1 { font-size: clamp(2.05rem, 9vw, 3.05rem); }
  body.portal .feria-hero-visual { grid-template-rows: auto auto; gap: .5rem; }
  body.portal .feria-hero-media { min-height: 0; aspect-ratio: 1.48; }
  body.portal .feria-hero-media .feria-ticket { bottom: .65rem; left: .65rem; width: min(17rem, calc(100% - 1.3rem)); padding: .55rem .75rem .6rem; }
  body.portal .feria-hero-media .feria-ticket-dia { font-size: clamp(2.1rem, 11vw, 2.7rem); }
  body.portal .feria-hero > .feria-ticket { width: min(100%, 24rem); min-height: 14.7rem; justify-self: center; }
  body.portal .feria-hero > .feria-ticket .feria-ticket-dia { font-size: 4rem; }
  body.portal .feria-ficha-meta { gap: .45rem .7rem; font-size: .8125rem; }
  body.portal .feria-ficha-meta > span + span { padding-left: .7rem; }
  body.portal .feria-activacion { grid-template-columns: 1fr; gap: 1rem; }
  body.portal .feria-audiencia { grid-template-columns: 3.8rem 1fr; gap: .8rem; }
  body.portal .feria-audiencia-sello { width: 3.5rem; }
  body.portal .feria-audiencia-sello span { font-size: 1.3rem; }
  body.portal .feria-respuesta-grid { grid-template-columns: 1fr; }
  body.portal .feria-fuentes { grid-template-columns: 1fr; gap: .35rem; }
  body.portal .feria-fuentes > a { width: fit-content; }
  body.portal .ferias-relacionadas-lista { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 23rem) {
  body.portal .ferias-tarjetas { grid-template-columns: 1fr; }
  body.portal .feria-card-enlace { min-height: 10.5rem; }
  body.portal .feria-card-fecha { display: flex; }
}
@media (prefers-reduced-motion: reduce) {
  body.portal .feria-card,
  body.portal .ferias-atajo,
  body.portal .ferias-filtros button { transition: none; }
  body.portal .ferias-siguiente,
  body.portal .feria-ticket { transform: none; }
}

/* Guías de recintos: una mesa editorial de arquitectura, operación y feria. */
body.portal .recintos-pagina {
  width: min(100%, 94rem);
  margin: 0 auto;
  padding: clamp(1rem, 3.4vw, 3rem) clamp(1rem, 3vw, 2.5rem) 5rem;
  color: var(--tinta);
}
body.portal .recintos-intro,
body.portal .recinto-espacios,
body.portal .recinto-stands,
body.portal .recinto-acceso,
body.portal .recinto-ferias,
body.portal .recinto-preguntas { scroll-margin-top: 7rem; }
body.portal .recintos-portada {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(15rem, .38fr);
  gap: clamp(1.5rem, 6vw, 5rem);
  align-items: center;
  overflow: hidden;
  padding: clamp(1.7rem, 4vw, 3.6rem);
  border-radius: 1.1rem;
  color: var(--papel-alto);
  background: linear-gradient(112deg, var(--tinta-portada) 0%, var(--tinta-portada-media) 58%, var(--tinta-portada-luz) 100%);
  isolation: isolate;
}
body.portal .recintos-portada::after {
  position: absolute;
  z-index: -1;
  inset: 0 0 0 auto;
  width: min(66%, 68rem);
  background: url('../branding/plano-recintos.svg') right center / auto 100% no-repeat;
  content: "";
  opacity: .88;
  pointer-events: none;
  mask-image: linear-gradient(90deg, transparent 0%, transparent 39%, #000 76%, #000 100%);
}
body.portal .recintos-portada-copy { max-width: 48rem; }
body.portal .recintos-portada h1 { max-width: 13ch; margin: 0; color: var(--papel-alto); font-size: clamp(2.25rem, 5vw, 3.8rem); font-weight: 600; line-height: .99; letter-spacing: -.055em; }
body.portal .recintos-portada-copy > p { max-width: 43rem; margin: 1rem 0 1.35rem; color: rgba(255,253,248,.76); font-size: clamp(.92rem, 1.3vw, 1.04rem); line-height: 1.6; }
body.portal .recintos-portada-nota { max-width: 19rem; justify-self: end; padding: 1.25rem 1.35rem; border: 1px solid rgba(23,35,31,.1); border-radius: .75rem; color: var(--tinta); background: var(--papel-alto); box-shadow: 0 .8rem 1.8rem rgba(8,18,14,.18); }
body.portal .recintos-portada-nota svg { display: block; width: 2.5rem; margin-bottom: .85rem; fill: none; stroke: var(--coral-oscuro); stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4; }
body.portal .recintos-portada-nota > span { font-size: 1.12rem; font-weight: 600; letter-spacing: -.025em; }
body.portal .recintos-portada-nota p { margin: .4rem 0 0; color: var(--tinta-2); font-size: .75rem; line-height: 1.5; }
body.portal .recintos-boton { display: inline-flex; min-height: 2.7rem; align-items: center; gap: .8rem; padding: .56rem .9rem; border: 1px solid var(--acento); border-radius: 999px; color: var(--tinta); background: var(--acento); font-size: .76rem; font-weight: 600; text-decoration: none; transition: transform .22s ease, background .22s ease; }
body.portal .recintos-boton:hover { background: var(--marca-hover); transform: translateY(-2px); }
body.portal .recintos-boton:focus-visible,
body.portal .recinto-tarjeta a:focus-visible,
body.portal .recinto-anclas a:focus-visible,
body.portal .recinto-hero a:focus-visible,
body.portal .recinto-evento a:focus-visible,
body.portal .recinto-faq summary:focus-visible,
body.portal .recinto-fuentes a:focus-visible { outline: 3px solid var(--marca-profundo); outline-offset: 3px; }
body.portal .recintos-intro,
body.portal .recinto-ferias-cabecera,
body.portal .recinto-historico-cabecera,
body.portal .recinto-preguntas-cabecera,
body.portal .recinto-seccion-cabecera { display: flex; justify-content: space-between; gap: 2rem; align-items: end; }
body.portal .recintos-intro { padding: clamp(2.8rem, 6vw, 5rem) 0 1.2rem; }
body.portal .recintos-intro h2,
body.portal .recinto-seccion-cabecera h2,
body.portal .recinto-historico h2,
body.portal .recinto-ferias h2,
body.portal .recinto-preguntas h2,
body.portal .recinto-activacion h2 { max-width: 19ch; margin: .32rem 0 0; font-size: clamp(1.55rem, 3vw, 2.35rem); font-weight: 600; line-height: 1.04; letter-spacing: -.05em; }
body.portal .recintos-intro > div { max-width: 39rem; }
body.portal .recintos-intro > div > p { margin: .5rem 0 0; color: var(--tinta-2); font-size: .82rem; line-height: 1.55; }
body.portal .recintos-intro > a,
body.portal .recinto-ferias-cabecera > a { flex: none; color: var(--coral-oscuro); font-size: .7rem; font-weight: 600; text-underline-offset: 4px; }
body.portal .recintos-listado { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.3rem; }
body.portal .recinto-tarjeta { display: grid; min-width: 0; grid-template-rows: auto 1fr; overflow: hidden; border-bottom: 1px solid var(--linea-fuerte); background: transparent; }
body.portal .recinto-tarjeta--destacada { grid-column: 1 / -1; grid-template-columns: minmax(0, 1.12fr) minmax(20rem, .88fr); grid-template-rows: 1fr; border-bottom: 0; border-radius: .9rem; background: var(--papel-alto); box-shadow: var(--sombra-ficha); }
body.portal .recinto-tarjeta-imagen { position: relative; display: block; min-height: 13rem; overflow: hidden; color: white; background: var(--tinta); }
body.portal .recinto-tarjeta--destacada .recinto-tarjeta-imagen { min-height: 24rem; }
body.portal .recinto-tarjeta-imagen picture { display: block; width: 100%; height: 100%; min-height: inherit; }
body.portal .recinto-tarjeta-imagen::after { position: absolute; inset: 35% 0 0; background: linear-gradient(0deg, rgba(15,28,24,.68), transparent); content: ""; }
body.portal .recinto-tarjeta-imagen img { display: block; width: 100%; height: 100%; min-height: inherit; object-fit: cover; transition: transform .7s cubic-bezier(.2,.75,.25,1); }
body.portal .recinto-tarjeta:hover .recinto-tarjeta-imagen img { transform: scale(1.035); }
body.portal .recinto-tarjeta-ciudad { position: absolute; z-index: 1; bottom: .8rem; left: .9rem; color: white; font-family: var(--fuente-mono); font-size: .54rem; letter-spacing: .05em; }
body.portal .recinto-tarjeta-flecha { position: absolute; z-index: 1; top: .75rem; right: .8rem; display: grid; width: 2.2rem; height: 2.2rem; place-items: center; border: 1px solid rgba(255,255,255,.6); border-radius: 50%; color: white; background: rgba(23,35,31,.25); transition: color .2s ease, background .2s ease, transform .2s ease; }
body.portal .recinto-tarjeta:hover .recinto-tarjeta-flecha { color: var(--tinta); background: var(--acento); transform: rotate(45deg); }
body.portal .recinto-tarjeta-cuerpo { display: flex; flex-direction: column; align-items: flex-start; padding: 1.1rem .2rem 1.25rem; }
body.portal .recinto-tarjeta--destacada .recinto-tarjeta-cuerpo { justify-content: center; padding: clamp(1.3rem, 3vw, 2.8rem); }
body.portal .recinto-tarjeta-cuerpo h3 { margin: .45rem 0 .35rem; font-size: clamp(1.25rem, 2.4vw, 1.8rem); font-weight: 600; line-height: 1.05; letter-spacing: -.045em; }
body.portal .recinto-tarjeta-cuerpo h3 a { color: var(--tinta); text-decoration: none; }
body.portal .recinto-tarjeta-tipo { margin: 0 0 .45rem; color: var(--coral-oscuro); font-family: var(--fuente-mono); font-size: .56rem; letter-spacing: .035em; }
body.portal .recinto-tarjeta-cuerpo > p:not(.recinto-tarjeta-tipo) { margin: 0; color: var(--tinta-2); font-size: .78rem; line-height: 1.55; }
body.portal .recinto-tarjeta-dato { display: flex; flex-wrap: wrap; gap: .55rem 1rem; margin-top: 1rem; padding-top: .7rem; border-top: 1px solid var(--linea); color: var(--tinta-3); font-size: .64rem; }
body.portal .recinto-tarjeta-dato strong { color: var(--tinta); font-size: .78rem; font-variant-numeric: tabular-nums; }
body.portal .recinto-tarjeta-enlace { display: inline-flex; gap: .5rem; align-items: center; margin-top: auto; padding-top: 1rem; color: var(--coral-oscuro); font-size: .69rem; font-weight: 600; text-decoration: none; }
body.portal .recinto-tarjeta-enlace span { transition: transform .2s ease; }
body.portal .recinto-tarjeta-enlace:hover span { transform: translateX(4px); }
body.portal .recintos-criterio { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: .9rem; align-items: center; margin-top: 2.2rem; padding: 1rem 0; border-top: 1px solid var(--linea-fuerte); border-bottom: 1px solid var(--linea-fuerte); }
body.portal .recintos-criterio svg { width: 2rem; fill: none; stroke: var(--marca-profundo); stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.6; }
body.portal .recintos-criterio strong { font-size: .78rem; }
body.portal .recintos-criterio p { margin: .17rem 0 0; color: var(--tinta-2); font-size: .67rem; line-height: 1.5; }
body.portal .recintos-criterio > a { color: var(--coral-oscuro); font-size: .68rem; font-weight: 600; white-space: nowrap; }

body.portal .recintos-migas { display: flex; flex-wrap: wrap; gap: .48rem; margin: 0 0 1rem; color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .56rem; }
body.portal .recintos-migas a { color: var(--tinta-2); text-underline-offset: 3px; }
body.portal .recinto-hero { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(18rem, .93fr); gap: clamp(1.5rem, 4vw, 3.5rem); align-items: center; overflow: hidden; isolation: isolate; padding: clamp(1.35rem, 3.5vw, 2.8rem); border-radius: 1rem; color: var(--papel-alto); background: linear-gradient(112deg, var(--tinta-portada) 0%, var(--tinta-portada-media) 59%, var(--tinta-portada-luz) 100%); }
body.portal .recinto-hero::before { position: absolute; z-index: -1; inset: 0 auto 0 0; width: min(57%, 48rem); background: url('../branding/plano-recintos.svg') left center / auto 100% no-repeat; content: ""; opacity: .3; pointer-events: none; mask-image: linear-gradient(90deg, #000 0%, #000 40%, transparent 100%); }
body.portal .recinto-hero-copy { min-width: 0; }
body.portal .recinto-hero h1 { max-width: 15ch; margin: 0; color: var(--papel-alto); font-size: clamp(2rem, 3.55vw, 3.25rem); font-weight: 600; line-height: 1; letter-spacing: -.055em; }
body.portal .recinto-hero-context { margin: .55rem 0 0; color: var(--acento); font-family: var(--fuente-mono); font-size: .61rem; letter-spacing: .035em; }
body.portal .recinto-hero-bajada { max-width: 37rem; margin: .9rem 0 1rem; color: rgba(255,253,248,.79); font-size: .86rem; line-height: 1.6; }
body.portal .recinto-hero-direccion { display: flex; align-items: flex-start; gap: .5rem; margin: 0; color: rgba(255,253,248,.78); font-size: .67rem; line-height: 1.45; }
body.portal .recinto-hero-direccion svg { width: 1rem; flex: none; fill: none; stroke: var(--acento); stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; }
body.portal .recinto-hero-acciones { display: flex; flex-wrap: wrap; gap: .75rem 1rem; align-items: center; margin-top: 1.15rem; }
body.portal .recinto-accion-secundaria { color: var(--papel-alto); font-size: .68rem; text-underline-offset: 4px; text-decoration-color: var(--acento); }
body.portal .recinto-foto { position: relative; min-width: 0; margin: 0; overflow: hidden; border-radius: .68rem; background: #34413a; isolation: isolate; }
body.portal .recinto-foto picture { display: block; }
body.portal .recinto-foto img { display: block; width: 100%; aspect-ratio: 1.25; object-fit: cover; transform: translate3d(0, var(--portal-parallax-y, 0px), 0) scale(1.045); }
body.portal .recinto-foto figcaption { position: absolute; inset: auto 0 0; padding: 2.3rem .75rem .65rem; color: white; background: linear-gradient(0deg, rgba(15,28,24,.72), transparent); font-size: .56rem; line-height: 1.4; }
body.portal .recinto-anclas { display: flex; flex-wrap: wrap; gap: .42rem; padding: 1rem 0; border-bottom: 1px solid var(--linea-fuerte); }
body.portal .recinto-anclas a { padding: .48rem .73rem; border: 1px solid var(--linea); border-radius: 999px; color: var(--tinta-2); background: rgba(255,253,248,.55); font-size: .63rem; text-decoration: none; transition: color .18s ease, border-color .18s ease, background .18s ease; }
body.portal .recinto-anclas a:hover { border-color: var(--tinta); color: var(--papel-alto); background: var(--tinta); }
body.portal .recinto-apertura { display: flex; gap: 2rem; justify-content: space-between; align-items: end; padding: clamp(1.4rem, 3vw, 2.4rem) 0; }
body.portal .recinto-apertura > p { max-width: 68ch; margin: 0; font-size: clamp(.92rem, 1.4vw, 1.1rem); line-height: 1.58; letter-spacing: -.012em; }
body.portal .recinto-revision { flex: none; color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .53rem; }
body.portal .recinto-espacios { padding: 1.8rem 0 2.5rem; }
body.portal .recinto-seccion-cabecera { margin-bottom: 1.1rem; }
body.portal .recinto-seccion-cabecera > p,
body.portal .recinto-historico-cabecera > p,
body.portal .recinto-preguntas-cabecera > p { max-width: 29rem; margin: 0; color: var(--tinta-2); font-size: .75rem; line-height: 1.5; }
body.portal .recinto-medidas { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-auto-rows: minmax(9.5rem, auto); gap: .55rem; }
body.portal .recinto-medida { position: relative; grid-column: span 4; min-width: 0; padding: .85rem .9rem .9rem; border-top: 1px solid var(--linea-fuerte); background: rgba(255,253,248,.55); }
body.portal .recinto-medida--principal { grid-column: span 6; grid-row: span 2; display: flex; flex-direction: column; justify-content: end; padding: clamp(1.1rem, 2.5vw, 2rem); border: 0; border-radius: .7rem; color: var(--papel-alto); background: var(--tinta); }
body.portal .recinto-medida > strong { display: block; color: var(--tinta); font-size: clamp(1.35rem, 2.45vw, 2.15rem); font-weight: 600; line-height: .98; letter-spacing: -.055em; font-variant-numeric: tabular-nums; }
body.portal .recinto-medida--principal > strong { color: var(--papel-alto); font-size: clamp(2.5rem, 6vw, 5rem); }
body.portal .recinto-medida h3 { margin: .35rem 0 .25rem; font-size: .77rem; font-weight: 600; letter-spacing: -.015em; }
body.portal .recinto-medida--principal h3 { margin-top: .6rem; color: var(--marca); font-size: .9rem; }
body.portal .recinto-medida p { max-width: 36ch; margin: 0; color: var(--tinta-2); font-size: .64rem; line-height: 1.45; }
body.portal .recinto-medida--principal p { color: rgba(255,253,248,.7); font-size: .72rem; }
body.portal .recinto-nota-cifras { margin-top: .6rem; border-bottom: 1px solid var(--linea); }
body.portal .recinto-nota-cifras summary { display: flex; min-height: 2.8rem; align-items: center; justify-content: space-between; gap: 1rem; color: var(--tinta-2); font-size: .68rem; font-weight: 600; cursor: pointer; list-style: none; }
body.portal .recinto-nota-cifras summary::-webkit-details-marker,
body.portal .recinto-faq summary::-webkit-details-marker { display: none; }
body.portal .recinto-detalle-signo { position: relative; width: 1.2rem; height: 1.2rem; flex: none; border: 1px solid var(--linea-fuerte); border-radius: 50%; }
body.portal .recinto-detalle-signo::before,
body.portal .recinto-detalle-signo::after { position: absolute; top: 50%; left: 50%; width: .48rem; height: 1px; background: var(--tinta); content: ""; transform: translate(-50%,-50%); transition: transform .2s ease; }
body.portal .recinto-detalle-signo::after { transform: translate(-50%,-50%) rotate(90deg); }
body.portal .recinto-nota-cifras[open] .recinto-detalle-signo::after,
body.portal .recinto-faq details[open] .recinto-detalle-signo::after { transform: translate(-50%,-50%) rotate(0); }
body.portal .recinto-nota-cifras > p { max-width: 78ch; margin: 0; padding: 0 2rem 1rem 0; color: var(--tinta-2); font-size: .73rem; line-height: 1.58; }
body.portal .recinto-stands { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 1.2rem; align-items: center; margin: .2rem 0 3rem; padding: clamp(1rem, 2.5vw, 1.65rem); border-radius: .8rem; color: var(--papel-alto); background: var(--tinta); }
body.portal .recinto-stands-icono svg { display: block; width: clamp(2.5rem, 5vw, 4rem); fill: none; stroke: var(--acento); stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.25; }
body.portal .recinto-stands h2 { margin: .2rem 0 .35rem; color: var(--papel-alto); font-size: clamp(1.3rem, 2.4vw, 1.85rem); line-height: 1.06; letter-spacing: -.04em; }
body.portal .recinto-stands-copy > p:last-child { max-width: 72ch; margin: 0; color: rgba(255,253,248,.77); font-size: .73rem; line-height: 1.55; }
body.portal .recinto-stands > a { color: var(--acento); font-size: .65rem; font-weight: 600; white-space: nowrap; }
body.portal .recinto-acceso { display: grid; grid-template-columns: minmax(15rem, .7fr) minmax(0, 1fr); gap: clamp(1.4rem, 5vw, 4rem); padding: 1rem 0 3rem; }
body.portal .recinto-acceso-cabecera h2 { max-width: 13ch; margin: .35rem 0 .55rem; font-size: clamp(1.75rem, 3.2vw, 2.6rem); font-weight: 600; line-height: 1; letter-spacing: -.05em; }
body.portal .recinto-acceso-cabecera > p { max-width: 42ch; margin: 0; color: var(--tinta-2); font-size: .77rem; line-height: 1.55; }
body.portal .recinto-mapa-enlace { display: inline-block; margin-top: .9rem; color: var(--coral-oscuro); font-size: .68rem; font-weight: 600; text-underline-offset: 4px; }
body.portal .recinto-acceso-lista { margin: 0; padding: 0; border-top: 1px solid var(--linea-fuerte); list-style: none; }
body.portal .recinto-acceso-lista li { display: grid; grid-template-columns: .65rem minmax(0, 1fr); gap: .8rem; padding: .7rem 0; border-bottom: 1px solid var(--linea); }
body.portal .recinto-acceso-punto { width: .42rem; height: .42rem; margin-top: .28rem; border-radius: 50%; background: var(--coral); box-shadow: 0 0 0 .22rem color-mix(in srgb, var(--coral), transparent 84%); }
body.portal .recinto-acceso-lista h3 { margin: 0 0 .17rem; font-size: .79rem; }
body.portal .recinto-acceso-lista p { max-width: 68ch; margin: 0; color: var(--tinta-2); font-size: .68rem; line-height: 1.5; }
body.portal .recinto-acceso-viaje { grid-column: 1 / -1; margin: 0; padding: .8rem 0 0; border-top: 1px solid var(--linea); color: var(--tinta-2); font-size: .9375rem; line-height: 1.5; }
body.portal .recinto-acceso-viaje a { display: inline-flex; min-height: 2.5rem; align-items: center; gap: .35rem; color: var(--marca-profundo); font-weight: 700; text-decoration: underline; text-decoration-color: var(--marca); text-underline-offset: .2em; }
body.portal .recinto-acceso-viaje a:focus-visible { outline: 3px solid var(--marca-profundo); outline-offset: 3px; }
body.portal .recinto-historico { margin: .3rem 0 3rem; padding: 1.5rem 0 1.7rem; border-top: 1px solid var(--linea-fuerte); border-bottom: 1px solid var(--linea-fuerte); }
body.portal .recinto-historico-cabecera { margin-bottom: 1rem; }
body.portal .recinto-historico-lista { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 2rem; }
body.portal .recinto-historico-item { display: grid; grid-template-columns: minmax(5rem, .35fr) minmax(0, 1fr); gap: .8rem; padding-top: .85rem; border-top: 1px solid var(--linea); }
body.portal .recinto-historico-anio { color: var(--coral-oscuro); font-family: var(--fuente-mono); font-size: .58rem; }
body.portal .recinto-historico-item h3 { margin: 0 0 .24rem; font-size: .9rem; letter-spacing: -.02em; }
body.portal .recinto-historico-item h3 a { color: inherit; text-decoration: none; text-underline-offset: 3px; }
body.portal .recinto-historico-item h3 a:hover { color: var(--marca-profundo); text-decoration: underline; }
body.portal .recinto-historico-item p { margin: 0; color: var(--tinta-2); font-size: .7rem; line-height: 1.5; }
body.portal .recinto-historico-item a { display: inline-block; margin-top: .42rem; color: var(--tinta-3); font-size: .59rem; text-underline-offset: 3px; }
body.portal .recinto-ferias { padding: .5rem 0 2.6rem; }
body.portal .recinto-ferias-cabecera { margin-bottom: .9rem; }
body.portal .recinto-eventos { border-top: 1px solid var(--linea-fuerte); }
body.portal .recinto-evento { display: grid; grid-template-columns: minmax(8.5rem, .34fr) minmax(0, 1fr) auto; gap: 1rem; align-items: center; padding: .85rem .1rem; border-bottom: 1px solid var(--linea); }
body.portal .recinto-evento-fecha { display: grid; gap: .18rem; color: var(--tinta-3); font-family: var(--fuente-mono); font-size: .5rem; }
body.portal .recinto-evento-fecha strong { color: var(--tinta); font-size: .66rem; font-weight: 600; }
body.portal .recinto-evento-copy h3 { margin: 0 0 .16rem; font-size: 1rem; letter-spacing: -.025em; }
body.portal .recinto-evento-copy h3 a { color: var(--tinta); text-decoration: none; text-underline-offset: 3px; }
body.portal .recinto-evento-copy h3 a:hover { text-decoration: underline; }
body.portal .recinto-evento-copy p { margin: 0; color: var(--tinta-2); font-size: .66rem; line-height: 1.45; }
body.portal .recinto-evento-estado { display: inline-flex; align-items: center; gap: .35rem; color: var(--verde); font-family: var(--fuente-mono); font-size: .5rem; white-space: nowrap; }
body.portal .recinto-evento-estado::before { width: .35rem; height: .35rem; border-radius: 50%; background: currentColor; content: ""; }
body.portal .recinto-evento--verificar .recinto-evento-estado { color: var(--coral-oscuro); }
body.portal .recinto-discrepancia { display: grid; grid-template-columns: auto 1fr; gap: .65rem; margin-top: .75rem; padding: .8rem; border: 1px solid color-mix(in srgb, var(--coral), transparent 48%); border-radius: .55rem; background: color-mix(in srgb, var(--coral), transparent 93%); }
body.portal .recinto-discrepancia-marca { position: relative; display: block; width: 1.25rem; height: 1.25rem; border: 1px solid var(--coral-oscuro); border-radius: 50%; }
body.portal .recinto-discrepancia-marca::before { position: absolute; top: .25rem; left: .53rem; width: 1px; height: .39rem; background: var(--coral-oscuro); content: ""; }
body.portal .recinto-discrepancia-marca::after { position: absolute; bottom: .23rem; left: .49rem; width: .08rem; height: .08rem; border-radius: 50%; background: var(--coral-oscuro); content: ""; }
body.portal .recinto-discrepancia strong { font-size: .72rem; }
body.portal .recinto-discrepancia p { margin: .15rem 0 0; color: var(--tinta-2); font-size: .65rem; line-height: 1.5; }
body.portal .recinto-discrepancia a { color: var(--tinta); font-weight: 600; text-underline-offset: 3px; }
body.portal .recinto-eventos-nota,
body.portal .recinto-sin-ferias { margin: .65rem 0 0; color: var(--tinta-3); font-size: .61rem; line-height: 1.5; }
body.portal .recinto-activacion { display: grid; grid-template-columns: minmax(12rem, .57fr) minmax(0, 1fr) auto; gap: 1.5rem; align-items: center; margin: 0 0 3rem; padding: 1.15rem 0; border-top: 1px solid var(--linea-fuerte); border-bottom: 1px solid var(--linea-fuerte); }
body.portal .recinto-activacion h2 { font-size: clamp(1.3rem, 2.1vw, 1.8rem); }
body.portal .recinto-activacion > p { max-width: 66ch; margin: 0; color: var(--tinta-2); font-size: .72rem; line-height: 1.56; }
body.portal .recinto-activacion > a { color: var(--coral-oscuro); font-size: .64rem; font-weight: 600; white-space: nowrap; }
body.portal .recinto-preguntas { display: grid; grid-template-columns: minmax(13rem, .6fr) minmax(0, 1fr); gap: 2rem; padding-bottom: 2.8rem; }
body.portal .recinto-preguntas-cabecera { display: block; }
body.portal .recinto-preguntas-cabecera > p { margin-top: .55rem; }
body.portal .recinto-faq { border-top: 1px solid var(--linea-fuerte); }
body.portal .recinto-faq details { border-bottom: 1px solid var(--linea); }
body.portal .recinto-faq summary { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .8rem; align-items: center; min-height: 3.25rem; font-size: .73rem; font-weight: 600; cursor: pointer; list-style: none; }
body.portal .recinto-faq details > p { max-width: 68ch; margin: -.1rem 2.3rem .85rem; color: var(--tinta-2); font-size: .69rem; line-height: 1.55; animation: recinto-respuesta .28s cubic-bezier(.16,1,.3,1) both; }
@keyframes recinto-respuesta { from { opacity: 0; transform: translateY(-5px); } to { opacity: 1; transform: translateY(0); } }
body.portal .recinto-fuentes { display: grid; grid-template-columns: minmax(14rem, .55fr) minmax(0, 1fr); gap: 2rem; padding: 1.2rem 0; border-top: 1px solid var(--linea-fuerte); border-bottom: 1px solid var(--linea-fuerte); }
body.portal .recinto-fuentes h2 { margin: .28rem 0; font-size: 1.15rem; letter-spacing: -.035em; }
body.portal .recinto-fuentes > div > p:last-child { max-width: 38ch; margin: 0; color: var(--tinta-3); font-size: .61rem; line-height: 1.5; }
body.portal .recinto-fuentes ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem 1rem; margin: 0; padding: 0; list-style: none; }
body.portal .recinto-fuentes li { border-bottom: 1px solid var(--linea); }
body.portal .recinto-fuentes li a { display: flex; justify-content: space-between; align-items: center; gap: .5rem; padding: .45rem 0; color: var(--tinta-2); font-size: .61rem; text-decoration: none; }
body.portal .recinto-fuentes li a:hover { color: var(--coral-oscuro); }
body.portal .recinto-volver { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem; margin: 1.25rem 0 0; color: var(--tinta-4); font-size: .65rem; }
body.portal .recinto-volver a { color: var(--tinta-2); text-underline-offset: 3px; }
body.portal .recinto-volver a:first-child { display: inline-flex; align-items: center; gap: .3rem; }
body.portal .recintos-sede-pendiente { margin: 2.4rem 0 1rem; padding-top: 1.45rem; border-top: 1px solid var(--linea-fuerte); }
body.portal .recintos-sede-pendiente .recinto-ferias-cabecera { margin-bottom: .75rem; }
body.portal .recintos-sede-pendiente .recinto-ferias-cabecera h2 { max-width: 18ch; }
body.portal .recintos-pendientes-lista { border-top: 1px solid var(--linea); }
body.portal .recintos-pendientes-lista article { display: grid; grid-template-columns: minmax(11rem, .7fr) minmax(12rem, 1fr) auto; gap: 1rem; align-items: center; padding: .65rem .2rem; border-bottom: 1px solid var(--linea); }
body.portal .recintos-pendientes-lista article > div > span { display: block; margin: .18rem 0; color: var(--tinta-3); font-size: .65rem; }
body.portal .recintos-pendientes-lista h3 { margin: .12rem 0 0; font-size: .78rem; }
body.portal .recintos-pendientes-lista h3 a { color: var(--tinta); text-decoration: none; }
body.portal .recintos-pendientes-lista article > p { margin: 0; color: var(--tinta-2); font-size: .65rem; line-height: 1.4; }
body.portal .recintos-pendientes-estado { color: var(--coral-oscuro); font-size: .62rem; font-weight: 600; white-space: nowrap; }
body.portal .recinto-icono-flecha { display: inline-block; width: .82rem; height: .82rem; flex: none; vertical-align: -.12em; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; transition: transform .2s ease; }
body.portal .recinto-icono-flecha--diagonal { transform: rotate(-45deg); }
body.portal .recinto-icono-flecha--abajo { transform: rotate(90deg); }
body.portal .recinto-icono-flecha--izquierda { transform: rotate(180deg); }
body.portal a:hover .recinto-icono-flecha { transform: translateX(3px); }
body.portal a:hover .recinto-icono-flecha--diagonal { transform: rotate(-45deg) translateX(3px); }
body.portal a:hover .recinto-icono-flecha--abajo { transform: rotate(90deg) translateX(3px); }
body.portal a:hover .recinto-icono-flecha--izquierda { transform: rotate(180deg) translateX(3px); }

/* Búsqueda editorial: resultados visuales, centrados y coherentes con el portal. */
body.portal .busqueda-pagina {
  width: 100%;
  margin-inline: auto;
  padding: clamp(1.8rem, 4vw, 3.6rem) 0 clamp(3rem, 6vw, 5rem);
}
body.portal .busqueda-cabecera {
  max-width: 54rem;
  margin: 0 auto 1.6rem;
  text-align: center;
}
body.portal .busqueda-cabecera .ruta-migas {
  display: flex;
  justify-content: center;
  gap: .55rem;
  margin: 0 0 .9rem;
  color: var(--tinta-3);
  font-family: var(--fuente-mono);
  font-size: .75rem;
  letter-spacing: .045em;
}
body.portal .busqueda-cabecera .ruta-migas a { color: inherit; text-decoration: none; }
body.portal .busqueda-cabecera .ruta-migas a:hover { color: var(--marca-profundo); text-decoration: underline; }
body.portal .busqueda-cabecera h1 {
  max-width: 22ch;
  margin: 0 auto;
  font-size: clamp(2rem, 4vw, 3.5rem);
  line-height: 1.02;
  letter-spacing: -.055em;
  overflow-wrap: anywhere;
}
body.portal .busqueda-bajada {
  max-width: 62ch;
  margin: .8rem auto 0;
  color: var(--tinta-2);
  font-size: clamp(.95rem, 1.35vw, 1.08rem);
  line-height: 1.55;
}
body.portal .busqueda-formulario {
  width: min(100%, 57rem);
  max-width: none;
  margin: 0 auto clamp(2rem, 4vw, 3.2rem);
}
body.portal .busqueda-campo {
  display: flex;
  width: 100%;
  min-width: 0;
  align-items: center;
  gap: .7rem;
  padding: .45rem;
  border: 1px solid var(--linea-fuerte);
  border-radius: 999px;
  background: var(--papel-alto);
  box-shadow: 0 8px 26px rgba(23,35,31,.055);
  transition: border-color .18s ease, box-shadow .18s ease;
}
body.portal .busqueda-campo:focus-within {
  border-color: var(--marca-profundo);
  box-shadow: 0 0 0 3px rgba(251,174,3,.2), 0 10px 30px rgba(23,35,31,.07);
}
body.portal .busqueda-lupa { width: 1.2rem; height: 1.2rem; flex: none; margin-left: .75rem; color: var(--marca-profundo); }
body.portal .busqueda-lupa path,
body.portal .busqueda-lupa circle { vector-effect: non-scaling-stroke; }
body.portal .busqueda-campo input[type="search"] {
  width: 100%;
  min-width: 0;
  flex: 1;
  padding: .72rem .15rem;
  border: 0;
  outline: 0;
  color: var(--tinta);
  background: transparent;
  font: inherit;
  font-size: 1rem;
  box-shadow: none;
}
body.portal .busqueda-campo input::placeholder { color: var(--tinta-3); opacity: 1; }
body.portal .busqueda-campo .boton {
  min-height: 2.8rem;
  flex: none;
  gap: .45rem;
  padding-inline: 1.05rem;
  border-radius: 999px;
  color: var(--tinta);
  background: var(--marca);
  font-size: .9rem;
  font-weight: 700;
}
body.portal .busqueda-campo .boton:hover { background: var(--marca-hover); }
body.portal .busqueda-campo .boton svg { width: 1rem; height: 1rem; }
body.portal .busqueda-resultados { width: 100%; }
body.portal .resultados-cuenta {
  display: flex;
  max-width: none;
  align-items: baseline;
  gap: .55rem;
  margin: 0 0 .95rem;
  color: var(--tinta-2);
  font-family: var(--fuente-texto);
  font-size: .9rem;
}
body.portal .resultados-cuenta-numero {
  color: var(--marca-profundo);
  font-family: var(--fuente-mono);
  font-size: .9rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
body.portal .resultados-cuenta strong { color: var(--tinta); font-weight: 650; }
body.portal .resultados {
  display: grid;
  max-width: none;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
body.portal .resultado {
  display: grid;
  min-width: 0;
  grid-template-columns: minmax(7rem, .38fr) minmax(0, 1fr);
  gap: 1rem;
  align-items: stretch;
  padding: .7rem;
  overflow: hidden;
  border: 1px solid var(--linea);
  border-radius: 1rem;
  background: var(--papel-alto);
  box-shadow: 0 5px 18px rgba(23,35,31,.035);
  transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
body.portal .resultado:hover {
  border-color: color-mix(in srgb, var(--marca-profundo), var(--linea) 48%);
  box-shadow: 0 12px 30px rgba(23,35,31,.09);
  transform: translateY(-2px);
}
body.portal .resultado-imagen {
  position: relative;
  display: block;
  min-width: 0;
  min-height: 9rem;
  overflow: hidden;
  align-self: stretch;
  border-radius: .65rem;
  background: var(--papel-2);
}
body.portal .resultado-imagen picture,
body.portal .resultado-imagen img {
  display: block;
  width: 100%;
  height: 100%;
}
body.portal .resultado-imagen img { position: absolute; inset: 0; object-fit: cover; transition: transform .45s cubic-bezier(.2,.7,.2,1); }
body.portal .resultado:hover .resultado-imagen img { transform: scale(1.035); }
body.portal .resultado-imagen-respaldo {
  display: grid;
  width: 100%;
  height: 100%;
  min-height: 9rem;
  place-items: center;
  color: var(--marca-profundo);
  background: radial-gradient(ellipse at 30% 20%, rgba(251,174,3,.2), transparent 58%), linear-gradient(145deg, var(--papel-2), var(--papel));
}
body.portal .resultado-imagen-respaldo svg { width: 3rem; height: 3rem; }
body.portal .resultado-contenido { display: flex; min-width: 0; flex-direction: column; align-items: flex-start; padding: .2rem .2rem .25rem 0; }
body.portal .resultado-seccion { margin: 0 0 .28rem; color: var(--marca-profundo); font-size: .72rem; font-weight: 650; letter-spacing: .075em; }
body.portal .resultado-detalle { margin: 0 0 .42rem; color: var(--tinta-3); font-size: .8rem; line-height: 1.4; }
body.portal .resultado h2 { margin: 0 0 .42rem; font-size: clamp(1.08rem, 1.45vw, 1.3rem); line-height: 1.13; letter-spacing: -.035em; }
body.portal .resultado h2 a { color: var(--tinta); text-decoration: none; text-decoration-color: var(--marca-profundo); text-underline-offset: .16em; }
body.portal .resultado h2 a:hover { color: var(--marca-profundo); text-decoration: underline; }
body.portal .resultado-resumen { display: -webkit-box; margin: 0; overflow: hidden; color: var(--tinta-2); font-size: .9rem; line-height: 1.48; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
body.portal .resultado-abrir { display: inline-flex; align-items: center; gap: .35rem; margin-top: auto; padding-top: .7rem; color: var(--marca-profundo); font-size: .82rem; font-weight: 700; text-decoration: none; }
body.portal .resultado-abrir:hover { text-decoration: underline; text-underline-offset: .18em; }
body.portal .resultado-abrir svg { width: .95rem; height: .95rem; transition: transform .18s ease; }
body.portal .resultado-abrir:hover svg { transform: translateX(3px); }
body.portal .resultado--principal {
  grid-column: 1 / -1;
  grid-template-columns: minmax(0, 1.04fr) minmax(0, .96fr);
  gap: clamp(1rem, 2.2vw, 2rem);
  padding: .85rem;
  border-color: var(--linea-fuerte);
  background: linear-gradient(115deg, var(--papel-alto), #fff9ec);
}
body.portal .resultado--principal .resultado-imagen { min-height: 19rem; }
body.portal .resultado--principal .resultado-contenido { justify-content: center; padding: clamp(.5rem, 2vw, 1.6rem) clamp(.35rem, 2vw, 1.4rem) clamp(.5rem, 2vw, 1.6rem) 0; }
body.portal .resultado--principal .resultado-seccion { margin-bottom: .45rem; font-size: .77rem; }
body.portal .resultado--principal .resultado-detalle { font-size: .9rem; }
body.portal .resultado--principal h2 { max-width: 23ch; margin-bottom: .65rem; font-size: clamp(1.65rem, 3vw, 2.65rem); line-height: 1.03; letter-spacing: -.05em; }
body.portal .resultado--principal .resultado-resumen { max-width: 56ch; font-size: 1rem; line-height: 1.55; -webkit-line-clamp: 4; }
body.portal .resultado--principal .resultado-abrir { margin-top: 1rem; font-size: .9rem; }
body.portal .busqueda-inicio,
body.portal .busqueda-vacia {
  display: grid;
  grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
  gap: 1.5rem;
  align-items: center;
  padding: clamp(1.2rem, 3vw, 2rem);
  border: 1px solid var(--linea);
  border-radius: 1.1rem;
  background: radial-gradient(ellipse at 92% 8%, rgba(251,174,3,.13), transparent 34%), var(--papel-2);
}
body.portal .busqueda-inicio-copia,
body.portal .busqueda-vacia > div { display: flex; align-items: flex-start; gap: 1rem; }
body.portal .busqueda-inicio-icono {
  display: grid;
  width: 3.5rem;
  height: 3.5rem;
  flex: none;
  place-items: center;
  border: 1px solid rgba(150,85,0,.22);
  border-radius: 1rem;
  color: var(--marca-profundo);
  background: var(--papel-alto);
}
body.portal .busqueda-inicio-icono svg { width: 1.55rem; height: 1.55rem; }
body.portal .busqueda-inicio h2,
body.portal .busqueda-vacia h2 { margin: 0 0 .35rem; font-size: clamp(1.25rem, 2vw, 1.7rem); line-height: 1.1; letter-spacing: -.035em; }
body.portal .busqueda-inicio p,
body.portal .busqueda-vacia p { margin: 0; color: var(--tinta-2); font-size: .95rem; line-height: 1.5; }
body.portal .busqueda-inicio .buscar-rutas-sugeridas { justify-content: flex-end; max-width: none; margin: 0; }
body.portal .busqueda-vacia { grid-template-columns: auto minmax(0, 1fr); margin-top: 1rem; }
body.portal .busqueda-vacia .buscar-rutas-sugeridas { max-width: none; }
body.portal .buscar-rutas-sugeridas { gap: .5rem; }
body.portal .buscar-rutas-sugeridas a { min-height: 2.65rem; border-color: var(--linea-fuerte); font-size: .82rem; }
body.portal .buscar-rutas-sugeridas a:hover,
body.portal .buscar-rutas-sugeridas a:focus-visible { border-color: var(--marca-profundo); background: var(--marca-suave); }
body.portal .busqueda-campo :focus-visible,
body.portal .resultado a:focus-visible,
body.portal .buscar-rutas-sugeridas a:focus-visible { outline: 3px solid var(--marca-profundo); outline-offset: 3px; }

@media (max-width: 58rem) {
  body.portal .busqueda-pagina { width: min(calc(100% - 2rem), 44rem); }
  body.portal .resultados { grid-template-columns: 1fr; }
  body.portal .resultado--principal { grid-column: auto; }
  body.portal .resultado--principal { grid-template-columns: 1fr; gap: .75rem; }
  body.portal .resultado--principal .resultado-imagen { min-height: 17rem; aspect-ratio: 1.9; }
  body.portal .resultado--principal .resultado-contenido { padding: .25rem .55rem .6rem; }
  body.portal .busqueda-inicio,
  body.portal .busqueda-vacia { grid-template-columns: 1fr; }
  body.portal .busqueda-inicio .buscar-rutas-sugeridas { justify-content: flex-start; }
}
@media (max-width: 38rem) {
  body.portal .busqueda-pagina { width: calc(100% - 1.25rem); padding-top: 1.4rem; }
  body.portal .busqueda-cabecera { margin-bottom: 1.2rem; }
  body.portal .busqueda-cabecera h1 { font-size: clamp(1.9rem, 9vw, 2.6rem); }
  body.portal .busqueda-bajada { max-width: 38ch; font-size: .94rem; }
  body.portal .busqueda-formulario { margin-bottom: 1.8rem; }
  body.portal .busqueda-campo { gap: .35rem; padding: .3rem; }
  body.portal .busqueda-lupa { margin-left: .55rem; }
  body.portal .busqueda-campo input[type="search"] { padding-block: .65rem; font-size: .9rem; }
  body.portal .busqueda-campo .boton { min-height: 2.6rem; padding-inline: .8rem; font-size: .82rem; }
  body.portal .resultado { grid-template-columns: 6.6rem minmax(0, 1fr); gap: .75rem; padding: .55rem; border-radius: .8rem; }
  body.portal .resultado-imagen { min-height: 8.4rem; }
  body.portal .resultado-contenido { padding-top: .12rem; }
  body.portal .resultado-seccion { font-size: .68rem; }
  body.portal .resultado-detalle { margin-bottom: .28rem; font-size: .76rem; }
  body.portal .resultado h2 { font-size: 1.04rem; }
  body.portal .resultado-resumen { font-size: .82rem; -webkit-line-clamp: 3; }
  body.portal .resultado-abrir { padding-top: .45rem; font-size: .78rem; }
  body.portal .resultado--principal { grid-template-columns: 1fr; gap: .8rem; padding: .6rem; }
  body.portal .resultado--principal .resultado-imagen { min-height: 13rem; aspect-ratio: 1.65; }
  body.portal .resultado--principal .resultado-contenido { padding: .15rem .4rem .4rem; }
  body.portal .resultado--principal h2 { max-width: none; font-size: clamp(1.55rem, 7vw, 2rem); }
  body.portal .resultado--principal .resultado-resumen { font-size: .9rem; }
  body.portal .busqueda-inicio,
  body.portal .busqueda-vacia { padding: 1rem; }
  body.portal .busqueda-inicio-copia,
  body.portal .busqueda-vacia > div { gap: .7rem; }
  body.portal .busqueda-inicio-icono { width: 2.8rem; height: 2.8rem; border-radius: .8rem; }
  body.portal .buscar-rutas-sugeridas a { min-height: 2.5rem; padding-inline: .72rem; }
}
@media (prefers-reduced-motion: reduce) {
  body.portal .busqueda-campo,
  body.portal .resultado,
  body.portal .resultado-imagen img,
  body.portal .resultado-abrir svg { transition: none; }
  body.portal .resultado:hover { transform: none; }
}

/* Cabecera móvil: marca compacta, navegación al alcance y búsqueda breve. */
@media (max-width: 52rem) {
  body.portal .cabecera-inner {
    grid-template-columns: auto minmax(0, 1fr) auto;
    grid-template-rows: auto;
    align-items: center;
    gap: .45rem;
    padding: .45rem clamp(.65rem, 4vw, .85rem);
  }
  body.portal .marca { grid-column: 1; grid-row: 1; justify-self: start; align-self: center; flex: none; }
  body.portal .marca-bloque--compacto { width: clamp(5.25rem, 25vw, 6.75rem); }
  body.portal .menu-btn,
  html.con-js body.portal .menu-btn {
    display: grid;
    width: 2.75rem;
    height: 2.75rem;
    grid-column: 3;
    grid-row: 1;
    justify-self: end;
    align-content: center;
    justify-items: center;
    padding: 0;
    border: 1px solid rgba(255,255,255,.3);
    border-radius: .7rem;
    background: rgba(255,255,255,.045);
  }
  body.portal .menu-btn:hover,
  body.portal .menu-btn:focus-visible { border-color: var(--marca); background: rgba(255,255,255,.1); }
  body.portal .cabecera-inner > .buscador {
    width: 100%;
    min-width: 0;
    grid-column: 2;
    grid-row: 1;
    align-self: center;
    margin: 0;
  }
  body.portal .buscador input[type="search"] {
    width: 100%;
    min-width: 0;
    min-height: 2.75rem;
    flex: 1;
    padding: .45rem .8rem;
    font-size: .875rem;
  }
  body.portal .buscador .boton {
    display: grid;
    width: 2.75rem;
    min-width: 2.75rem;
    min-height: 2.75rem;
    place-items: center;
    padding: .5rem;
  }
  body.portal .buscador .boton .icono { width: 1.05rem; height: 1.05rem; }
  body.portal .cabecera-inner > .nav { grid-column: 1 / -1; grid-row: 2; }
  body.portal .cabecera-inner :focus-visible { outline-color: var(--marca); outline-offset: 3px; }
}

@media (max-width: 60rem) {
  body.portal .recintos-portada { grid-template-columns: 1fr minmax(13rem, .43fr); }
  body.portal .recinto-tarjeta--destacada { grid-template-columns: minmax(0, 1fr) minmax(17rem, .9fr); }
  body.portal .recinto-acceso { grid-template-columns: minmax(13rem, .62fr) minmax(0, 1fr); }
  body.portal .recinto-activacion { grid-template-columns: minmax(12rem, .55fr) minmax(0, 1fr); }
  body.portal .recinto-activacion > a { grid-column: 2; }
}
@media (max-width: 43rem) {
  body.portal .recintos-pagina { padding-inline: 1rem; }
  body.portal .recintos-portada { grid-template-columns: 1fr; gap: 1.2rem; padding: 1.35rem; }
  body.portal .recintos-portada::after { inset: auto 0 0; width: 100%; height: 42%; opacity: .38; background-position: right center; }
  body.portal .recintos-portada h1 { max-width: 12ch; font-size: clamp(2.25rem, 10vw, 3.3rem); }
  body.portal .recintos-portada-nota { width: min(100%, 22rem); justify-self: start; }
  body.portal .recintos-intro,
  body.portal .recinto-ferias-cabecera,
  body.portal .recinto-historico-cabecera,
  body.portal .recinto-preguntas-cabecera,
  body.portal .recinto-seccion-cabecera { display: block; }
  body.portal .recintos-intro > a,
  body.portal .recinto-ferias-cabecera > a { display: inline-block; margin-top: .65rem; }
  body.portal .recintos-listado { grid-template-columns: 1fr; gap: 1rem; }
  body.portal .recinto-tarjeta--destacada { grid-column: auto; grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
  body.portal .recinto-tarjeta--destacada .recinto-tarjeta-imagen { min-height: 15rem; }
  body.portal .recinto-tarjeta--destacada .recinto-tarjeta-cuerpo { padding: 1rem; }
  body.portal .recintos-criterio { grid-template-columns: auto 1fr; }
  body.portal .recintos-criterio > a { grid-column: 2; }
  body.portal .recintos-sede-pendiente .recinto-ferias-cabecera { display: block; }
  body.portal .recintos-pendientes-lista article { grid-template-columns: 1fr; gap: .25rem; }
  body.portal .recintos-pendientes-estado { white-space: normal; }
  body.portal .recinto-hero { grid-template-columns: 1fr; gap: 1.1rem; padding: 1.2rem; }
  body.portal .recinto-hero::before { inset: 0 0 auto; width: 100%; height: 42%; opacity: .2; background-position: left top; background-size: auto 100%; mask-image: linear-gradient(180deg, #000 0%, transparent 100%); }
  body.portal .recinto-hero h1 { max-width: 14ch; font-size: clamp(2rem, 9vw, 2.9rem); }
  body.portal .recinto-foto img { aspect-ratio: 1.42; }
  body.portal .recinto-anclas { flex-wrap: nowrap; overflow-x: auto; margin-inline: -1rem; padding-inline: 1rem; scrollbar-width: thin; }
  body.portal .recinto-anclas a { flex: none; }
  body.portal .recinto-apertura { display: block; }
  body.portal .recinto-revision { display: inline-block; margin-top: .6rem; }
  body.portal .recinto-seccion-cabecera > p,
  body.portal .recinto-historico-cabecera > p,
  body.portal .recinto-preguntas-cabecera > p { margin-top: .45rem; }
  body.portal .recinto-medidas { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: minmax(9rem, auto); }
  body.portal .recinto-medida { grid-column: span 1; }
  body.portal .recinto-medida--principal { grid-column: 1 / -1; grid-row: auto; min-height: 13rem; }
  body.portal .recinto-medida--principal > strong { font-size: 3.2rem; }
  body.portal .recinto-stands { grid-template-columns: auto minmax(0, 1fr); gap: .8rem; }
  body.portal .recinto-stands > a { grid-column: 2; }
  body.portal .recinto-acceso { grid-template-columns: 1fr; gap: 1.2rem; }
  body.portal .recinto-acceso-cabecera h2 { max-width: 15ch; }
  body.portal .recinto-historico-lista { grid-template-columns: 1fr; gap: .7rem; }
  body.portal .recinto-evento { grid-template-columns: 1fr; gap: .25rem; }
  body.portal .recinto-evento-fecha { display: flex; flex-wrap: wrap; gap: .35rem; align-items: baseline; }
  body.portal .recinto-evento-copy { grid-column: 1; }
  body.portal .recinto-evento-estado { grid-column: 1; }
  body.portal .recinto-activacion { grid-template-columns: 1fr; gap: .65rem; }
  body.portal .recinto-activacion > a { grid-column: auto; }
  body.portal .recinto-preguntas { grid-template-columns: 1fr; gap: 1rem; }
  body.portal .recinto-fuentes { grid-template-columns: 1fr; gap: .8rem; }
  body.portal .recinto-fuentes ul { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  body.portal .recintos-boton,
  body.portal .recinto-tarjeta-imagen img,
  body.portal .recinto-tarjeta-flecha,
  body.portal .recinto-tarjeta-enlace span,
  body.portal .recinto-anclas a,
  body.portal .recinto-detalle-signo::before,
  body.portal .recinto-detalle-signo::after { transition: none; }
  body.portal .recinto-foto img { transform: none; }
  body.portal .recinto-faq details > p { animation: none; }
}

/* Enlace contextual entre la ficha de una feria y la guía de su sede. */
body.portal .feria-recinto-guia { display: grid; grid-template-columns: minmax(8rem, .28fr) minmax(0, 1fr) auto; gap: 1rem; align-items: center; margin: 1rem 0 2rem; padding: .7rem; border: 1px solid var(--linea); border-radius: .7rem; background: var(--papel-alto); }
body.portal .feria-recinto-guia > picture { display: block; width: 100%; height: 6rem; overflow: hidden; border-radius: .42rem; }
body.portal .feria-recinto-guia > picture img { display: block; width: 100%; height: 100%; object-fit: cover; }
body.portal .feria-recinto-guia h2 { margin: .15rem 0 .2rem; font-size: .96rem; line-height: 1.15; letter-spacing: -.025em; }
body.portal .feria-recinto-guia > div > p:last-child { max-width: 62ch; margin: 0; color: var(--tinta-2); font-size: .65rem; line-height: 1.45; }
body.portal .feria-recinto-guia > a { padding: .55rem .7rem; color: var(--coral-oscuro); font-size: .64rem; font-weight: 600; white-space: nowrap; }
@media (max-width: 42rem) {
  body.portal .feria-recinto-guia { grid-template-columns: 4.6rem 1fr; gap: .65rem; }
  body.portal .feria-recinto-guia > picture { height: 4.6rem; }
  body.portal .feria-recinto-guia h2 { font-size: .83rem; }
  body.portal .feria-recinto-guia > div > p:last-child { font-size: .58rem; }
  body.portal .feria-recinto-guia > a { grid-column: 2; padding: .15rem 0 0; white-space: normal; }
}

/* La imagen y su borde se construyen al ritmo del desplazamiento. */
body.portal .motion-frame { position: relative; display: block; }
body.portal .motion-frame::after {
  position: absolute;
  z-index: 2;
  inset: 0;
  border: 1px solid rgba(251,174,3,.7);
  border-radius: inherit;
  content: '';
  pointer-events: none;
  transform: scaleX(var(--motion-progress, 0));
  transform-origin: left center;
}
body.portal .motion-frame--opening::after { transform: scaleX(1); }
body.portal img.motion-build-image {
  /* El movimiento puede vestir el marco, pero nunca recorta ni oculta la foto. */
  clip-path: none;
}
body.portal .portal-scroll-progress {
  position: absolute;
  z-index: 5;
  right: 0;
  bottom: 0;
  left: 0;
  display: block;
  height: 2px;
  background: var(--acento);
  pointer-events: none;
  transform: scaleX(0);
  transform-origin: left center;
}

@media (prefers-reduced-motion: reduce) {
  body.portal img.motion-build-image { clip-path: none; }
  body.portal .motion-frame::after { transform: none; }
  body.portal .portal-scroll-progress { display: none; }
}

/* En móvil, limitar el ancho máximo no basta: si la pantalla es más angosta
   que la columna editorial, el bloque sigue ocupando todo el viewport. Estas
   reglas fijan un margen real y común para lectura, fichas y listados sueltos. */
@media (max-width: 52rem) {
  body.portal .ficha,
  body.portal .industria-ficha {
    width: calc(100% - 2rem);
    margin-right: auto;
    margin-left: auto;
  }

  body.portal .ficha-cuerpo,
  body.portal .ficha-tags,
  body.portal .ficha-fuentes,
  body.portal .ficha > .relaciones,
  body.portal .ficha > .vecinas,
  body.portal .industria-ficha > .ficha-cuerpo,
  body.portal .industria-ficha > .ficha-fuentes,
  body.portal .industria-ficha > .relaciones {
    width: calc(100% - 2.4rem);
    margin-right: 0;
    margin-left: 1.2rem;
  }

  body.portal .disposicion--simple > main > .pagina-cabecera,
  body.portal .disposicion--simple > main > .metodo-bloque,
  body.portal .disposicion--simple > main > .fuentes-bloque,
  body.portal .disposicion--simple > main > .filtros,
  body.portal .disposicion--simple > main > .tarjetas-grilla,
  body.portal .disposicion--simple > main > .hub-vacio,
  body.portal .busqueda-pagina {
    width: calc(100% - 2rem);
    margin-right: auto;
    margin-left: auto;
  }

  body.portal .temas-lista {
    width: calc(100% - 2rem);
    padding-right: 0;
    padding-left: 0;
  }
}

/* Pie del portal: jerarquía por tareas, columnas amplias y acordeones móviles. */
body.portal .pie {
  margin-top: clamp(4rem, 8vw, 7rem);
  padding: clamp(2.5rem, 5vw, 4rem) clamp(1rem, 3vw, 2rem) 1.25rem;
  color: rgba(255,255,255,.82);
  background: var(--tinta-portada);
  border-top: 1px solid rgba(251,174,3,.45);
}
body.portal .pie-inner {
  display: grid;
  grid-template-columns: minmax(12rem, .82fr) minmax(0, 3.18fr);
  align-items: start;
  gap: clamp(2rem, 5vw, 5rem);
  max-width: var(--ancho-max);
}
body.portal .pie-marca { min-width: 0; }
body.portal .pie .marca-bloque { width: min(100%, 10.5rem); }
body.portal .pie-desc {
  max-width: 18rem;
  margin: 1rem 0 0;
  color: rgba(255,255,255,.68);
  font-size: .88rem;
  line-height: 1.55;
}
body.portal .pie-nav {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1.15rem clamp(1rem, 2.2vw, 2rem);
}
body.portal .pie-acordeon { min-width: 0; }
body.portal .pie-acordeon > summary {
  position: relative;
  display: flex;
  min-height: 2.8rem;
  align-items: center;
  justify-content: space-between;
  gap: .65rem;
  padding: .65rem 1.25rem .65rem 0;
  border-top: 1px solid rgba(255,255,255,.2);
  color: #fff;
  font-size: .875rem;
  font-weight: 650;
  line-height: 1.35;
  list-style: none;
  cursor: pointer;
}
body.portal .pie-acordeon > summary::-webkit-details-marker { display: none; }
body.portal .pie-acordeon > summary::after {
  position: absolute;
  right: .15rem;
  width: .42rem;
  height: .42rem;
  border-right: 2px solid var(--marca);
  border-bottom: 2px solid var(--marca);
  content: '';
  transform: rotate(45deg) translateY(-.12rem);
  transition: transform 180ms ease;
}
body.portal .pie-acordeon[open] > summary::after {
  transform: rotate(225deg) translate(-.08rem, -.02rem);
}
body.portal .pie-acordeon > summary:focus-visible {
  outline: 2px solid var(--marca);
  outline-offset: 4px;
}
body.portal .pie-acordeon ul {
  display: grid;
  gap: .08rem;
  margin: .25rem 0 0;
  padding: 0;
  list-style: none;
}
body.portal .pie-acordeon a {
  display: inline-flex;
  align-items: baseline;
  padding: .32rem 0;
  color: rgba(255,255,255,.72);
  font-size: .8125rem;
  line-height: 1.4;
  text-decoration: none;
  text-decoration-color: var(--marca);
  text-underline-offset: .2em;
  overflow-wrap: anywhere;
}
body.portal .pie-acordeon a:hover,
body.portal .pie-acordeon a:focus-visible {
  color: var(--marca);
  text-decoration: underline;
}
body.portal .pie-legal {
  margin-top: clamp(2rem, 4vw, 3.5rem);
  padding-top: 1rem;
  border-top-color: rgba(255,255,255,.16);
  color: rgba(255,255,255,.57);
  font-size: .7rem;
}

@media (max-width: 64rem) {
  body.portal .pie-inner { grid-template-columns: 1fr; gap: 2rem; }
  body.portal .pie-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.portal .pie-marca { display: flex; align-items: center; gap: 1.25rem; }
  body.portal .pie-desc { max-width: 25rem; margin: 0; }
}

@media (max-width: 52rem) {
  body.portal .pie { margin-top: 4rem; padding: 2rem 1rem 1rem; }
  body.portal .pie-inner { gap: 1.75rem; }
  body.portal .pie-marca { display: block; }
  body.portal .pie .marca-bloque { width: min(100%, 8.75rem); }
  body.portal .pie-desc { max-width: 25rem; margin-top: .65rem; font-size: .84rem; }
  body.portal .pie-nav { grid-template-columns: minmax(0, 1fr); gap: 0; }
  body.portal .pie-acordeon > summary { min-height: 3.25rem; padding-block: .8rem; font-size: .86rem; }
  body.portal .pie-acordeon ul { padding: .25rem 0 .8rem .85rem; border-left: 1px solid rgba(251,174,3,.45); }
  body.portal .pie-acordeon a { min-height: 2.45rem; align-items: center; padding: .35rem .2rem; font-size: .87rem; }
  body.portal .pie-legal { margin-top: 1.5rem; font-size: .68rem; }
}

@media (prefers-reduced-motion: reduce) {
  body.portal .pie-acordeon > summary::after { transition: none; }
}

/* Lectura editorial: las fichas comparten señales visuales sin convertirse
   en una sucesión de tarjetas ni perder la lectura continua. */
body.portal .ficha-cuerpo h2 {
  display: grid;
  grid-template-columns: 2.1rem minmax(0, 1fr);
  align-items: start;
  column-gap: .7rem;
  padding-top: 1rem;
  border-top: 0;
  background-image: linear-gradient(to right, var(--marca) 0 2.5rem, var(--linea-fuerte) 2.5rem 100%);
  background-repeat: no-repeat;
  background-position: top left;
  background-size: 100% 1px;
}
body.portal .ficha-cuerpo-icono {
  display: grid;
  width: 2rem;
  height: 2rem;
  margin-top: -.08rem;
  place-items: center;
  color: var(--marca-profundo);
}
body.portal .ficha-cuerpo-icono-svg { display: block; width: 100%; height: 100%; }
body.portal .ficha-cuerpo-titulo { min-width: 0; }
body.portal .ficha-cuerpo strong { color: var(--marca-profundo); font-weight: 650; }
body.portal .ficha-cuerpo > ul.lista > li::marker,
body.portal .ficha-cuerpo > ol > li::marker { color: var(--marca-profundo); }
body.portal .ficha-cuerpo a {
  color: var(--marca-profundo);
  text-decoration-color: var(--marca);
  text-decoration-thickness: 1.5px;
  text-underline-offset: .18em;
}
body.portal .ficha-cuerpo a:hover { color: var(--tinta); }

/* Las listas de cotización son herramientas de trabajo: el check dibujado
   las separa de una lista editorial común y facilita revisar cada punto. */
body.portal .ficha-cuerpo h2[id*="checklist"] + ul.lista {
  display: grid;
  gap: 0;
  margin: 1rem 0 2.4rem;
  padding: .45rem clamp(1rem, 2.4vw, 1.5rem);
  border: 1px solid var(--linea);
  border-radius: .9rem;
  background: var(--papel-alto);
  box-shadow: var(--sombra-ficha);
  list-style: none;
}
body.portal .ficha-cuerpo h2[id*="checklist"] + ul.lista > li {
  position: relative;
  display: grid;
  grid-template-columns: 1.2rem minmax(0, 1fr);
  align-items: start;
  gap: .7rem;
  margin: 0;
  padding: .72rem 0;
  border-bottom: 1px solid var(--linea);
}
body.portal .ficha-cuerpo h2[id*="checklist"] + ul.lista > li:last-child { border-bottom: 0; }
body.portal .ficha-cuerpo h2[id*="checklist"] + ul.lista > li::before {
  width: 1.15rem;
  height: 1.15rem;
  margin-top: .15rem;
  background-color: var(--marca-profundo);
  content: '';
  -webkit-mask: url('../svg/editorial/check.svg') center / contain no-repeat;
  mask: url('../svg/editorial/check.svg') center / contain no-repeat;
}

/* Comparativas y citas reciben una elevación ligera; el resto del texto queda
   sobre el lienzo para conservar respiración y jerarquía. */
body.portal .ficha-cuerpo .tabla-wrap {
  border-color: var(--linea);
  box-shadow: var(--sombra-ficha);
}
body.portal .ficha-cuerpo table.datos thead th {
  font-size: .8125rem;
  white-space: normal;
}
body.portal .ficha-cuerpo blockquote {
  margin: 1.4rem 0 2rem;
  padding: 1.1rem 1.25rem;
  border: 1px solid var(--linea);
  border-radius: .85rem;
  background: var(--marca-suave);
  box-shadow: var(--sombra-ficha);
}
body.portal .ficha-cuerpo blockquote > :last-child { margin-bottom: 0; }

/* Preferencia opcional de analítica; la etiqueta externa solo se incorpora
   después de una aceptación explícita. */
body.portal .consentimiento-analitica[hidden] { display: none; }
body.portal .consentimiento-analitica {
  position: fixed;
  z-index: 1000;
  inset-inline: max(1rem, env(safe-area-inset-left)) max(1rem, env(safe-area-inset-right));
  bottom: max(1rem, env(safe-area-inset-bottom));
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  width: min(100% - 2rem, 58rem);
  margin-inline: auto;
  padding: 1.15rem 1.25rem;
  border: 1px solid rgba(251, 174, 3, .55);
  border-radius: 1rem;
  background: var(--tinta);
  color: var(--papel-alto);
  box-shadow: 0 18px 55px rgba(12, 20, 17, .28);
}
body.portal .consentimiento-analitica-texto { min-width: 0; }
body.portal .consentimiento-analitica-texto p { margin: 0; color: #e7e9e5; font-size: .9rem; line-height: 1.45; }
body.portal .consentimiento-analitica-texto .consentimiento-analitica-titulo {
  margin-bottom: .25rem;
  color: var(--papel-alto);
  font-size: 1rem;
  font-weight: 700;
}
body.portal .consentimiento-analitica-texto a { display: inline-block; margin-top: .4rem; color: #ffd36e; font-size: .84rem; }
body.portal .consentimiento-analitica-acciones { display: flex; flex: 0 0 auto; align-items: center; gap: .65rem; }
body.portal .consentimiento-analitica-acciones button {
  min-height: 2.7rem;
  padding: .55rem .9rem;
  border: 1px solid rgba(255, 253, 248, .48);
  border-radius: 999px;
  background: transparent;
  color: var(--papel-alto);
  font: inherit;
  font-size: .88rem;
  font-weight: 650;
  cursor: pointer;
}
body.portal .consentimiento-analitica-acciones button:hover { border-color: var(--marca); color: #ffd36e; }
body.portal .consentimiento-analitica-acciones button:focus-visible {
  outline: 3px solid var(--papel-alto);
  outline-offset: 3px;
}
body.portal .consentimiento-analitica-acciones .consentimiento-analitica-aceptar {
  border-color: var(--marca);
  background: var(--marca);
  color: var(--tinta);
}
body.portal .consentimiento-analitica-acciones .consentimiento-analitica-aceptar:hover { background: #ffc44d; color: var(--tinta); }

@media (max-width: 42rem) {
  body.portal .consentimiento-analitica {
    inset-inline: max(.7rem, env(safe-area-inset-left)) max(.7rem, env(safe-area-inset-right));
    bottom: max(.7rem, env(safe-area-inset-bottom));
    align-items: center;
    gap: .75rem;
    width: auto;
    padding: .75rem;
  }
  body.portal .consentimiento-analitica-texto { flex: 1 1 auto; }
  body.portal .consentimiento-analitica-texto p { font-size: .875rem; line-height: 1.38; }
  body.portal .consentimiento-analitica-texto .consentimiento-analitica-titulo {
    margin-bottom: .2rem;
    font-size: .875rem;
  }
  body.portal .consentimiento-analitica-texto a { margin-top: .25rem; font-size: .8125rem; }
  body.portal .consentimiento-analitica-acciones {
    flex: 0 0 6.2rem;
    flex-direction: column;
    gap: .4rem;
  }
  body.portal .consentimiento-analitica-acciones button {
    width: 100%;
    min-height: 2.45rem;
    padding: .4rem .35rem;
    font-size: .875rem;
    white-space: nowrap;
  }
}

@media (max-width: 23rem) {
  body.portal .consentimiento-analitica {
    align-items: stretch;
    flex-direction: column;
    gap: .55rem;
  }
  body.portal .consentimiento-analitica-acciones {
    flex: 0 0 auto;
    flex-direction: row;
    justify-content: flex-end;
  }
  body.portal .consentimiento-analitica-acciones button { width: auto; min-width: 6rem; }
}

@media (max-width: 40rem) {
  body.portal .ficha-cuerpo h2 {
    grid-template-columns: 1.75rem minmax(0, 1fr);
    column-gap: .55rem;
    font-size: clamp(1.35rem, 5.4vw, 1.55rem);
  }
  body.portal .ficha-cuerpo-icono { width: 1.65rem; height: 1.65rem; }
  body.portal .ficha-cuerpo h2[id*="checklist"] + ul.lista { padding-inline: .9rem; }
  body.portal .ficha-cuerpo h2[id*="checklist"] + ul.lista > li { gap: .55rem; }
  body.portal .ficha-cuerpo blockquote { padding: .9rem 1rem; }
}
