/* ==========================================================================
   Portal de prenominados — Premios ITV
   Todo va bajo `.itv-portal` para no pisar los estilos del tema.
   ========================================================================== */

.itv-portal {
  --itv-void: #02040a;
  --itv-cyan: #38bdf8;
  --itv-cyan-soft: #8ed5ff;
  --itv-indigo: #818cf8;
  --itv-texto: #ffffff;
  --itv-suave: #94a3b8;
  --itv-tenue: #7c8ba1;
  --itv-cristal: rgba(255, 255, 255, 0.035);
  --itv-cristal-alto: rgba(255, 255, 255, 0.06);
  --itv-borde: rgba(255, 255, 255, 0.1);
  --itv-borde-suave: rgba(255, 255, 255, 0.06);
  --itv-campo: #141c2b;
  --itv-r: 1rem;
  --itv-ease: cubic-bezier(0.22, 0.61, 0.36, 1);

  position: relative;
  isolation: isolate;
  overflow: hidden; /* el fondo decorativo no debe generar scroll lateral */
  padding: 2.5rem 1.25rem 4.5rem;
  background: var(--itv-void);
  color: var(--itv-texto);
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-size: 16px;
  line-height: 1.6;
}

@media (min-width: 768px) {
  .itv-portal { padding: 4rem 2rem 6.5rem; }
}

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

/* El tema puede no traer esta clase: el portal la define por su cuenta. */
.itv-portal .screen-reader-text {
  position: absolute !important;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.itv-portal :focus-visible {
  outline: 2px solid var(--itv-cyan);
  outline-offset: 3px;
  border-radius: 0.5rem;
}

/* --- Barra de navegación --------------------------------------------------- */

/* No es sticky a propósito: .itv-portal usa overflow:hidden, que anularía
   la adherencia. La navegación del portal ya vive en los botones del hero. */
.itv-barra {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem;
  max-width: 1160px;
  margin: -2.5rem auto 2.75rem;
  padding: 0.6rem 0;
  border-bottom: 1px solid var(--itv-borde-suave);
}

@media (min-width: 768px) {
  .itv-barra { margin: -4rem auto 3.25rem; gap: 1.5rem; }
}

.itv-barra__marca { flex: none; display: flex; align-items: center; }
.itv-barra__marca img { width: auto; height: 32px; }

/* --- Interruptor del menú (sólo en pantallas estrechas) --- */

.itv-barra__interruptor {
  flex: none;
  margin-left: auto;
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 1px solid var(--itv-borde);
  border-radius: 0.75rem;
  background: var(--itv-cristal);
  color: var(--itv-texto);
  cursor: pointer;
}

.itv-hamburguesa,
.itv-hamburguesa::before,
.itv-hamburguesa::after {
  display: block;
  width: 17px;
  height: 2px;
  border-radius: 2px;
  background: currentColor;
  transition: transform .25s var(--itv-ease), background-color .2s var(--itv-ease);
}
.itv-hamburguesa { position: relative; }
.itv-hamburguesa::before,
.itv-hamburguesa::after { content: ''; position: absolute; left: 0; }
.itv-hamburguesa::before { top: -6px; }
.itv-hamburguesa::after { top: 6px; }

.itv-barra__interruptor[aria-expanded='true'] .itv-hamburguesa { background: transparent; }
.itv-barra__interruptor[aria-expanded='true'] .itv-hamburguesa::before { transform: translateY(6px) rotate(45deg); }
.itv-barra__interruptor[aria-expanded='true'] .itv-hamburguesa::after { transform: translateY(-6px) rotate(-45deg); }

/* --- El menú --- */

/* En estrecho el menú arranca plegado; el script lo despliega. Si el script
   no llega a cargar, la regla de más abajo lo deja siempre visible. */
.itv-barra__nav { flex-basis: 100%; }

@media (max-width: 767px) {
  .itv-barra__interruptor[aria-expanded='false'] ~ .itv-barra__nav { display: none; }
}

.itv-portal .itv-menu {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  margin: 0;
  padding: 0.5rem 0 0.75rem;
  list-style: none;
}

.itv-portal .itv-menu li { position: relative; margin: 0; }

.itv-portal .itv-menu a {
  display: block;
  padding: 0.6rem 0.75rem;
  border-radius: 0.6rem;
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--itv-suave);
  transition: color .2s var(--itv-ease), background-color .2s var(--itv-ease);
}

.itv-portal .itv-menu a:hover,
.itv-portal .itv-menu .current-menu-item > a,
.itv-portal .itv-menu .current-menu-ancestor > a {
  color: var(--itv-texto);
  background: rgba(255, 255, 255, 0.07);
}

/* Astra inyecta su propio interruptor de submenú en cada entrada con hijos.
   Se reaprovecha —ya trae aria-expanded y su texto para lectores de
   pantalla— pero con la apariencia del portal. El span gemelo que mete
   dentro del enlace sobra. */
.itv-portal .itv-menu .dropdown-menu-toggle { display: none; }

.itv-portal .itv-menu .ast-menu-toggle {
  position: absolute;
  top: 0;
  right: 0;
  display: grid;
  place-items: center;
  width: 2.6rem;
  height: 2.6rem;
  padding: 0;
  border: 0;
  background: none;
  color: var(--itv-suave);
  cursor: pointer;
}
.itv-portal .itv-menu .ast-menu-toggle:hover { color: var(--itv-texto); }
.itv-portal .itv-menu .ast-menu-toggle svg {
  width: 11px;
  height: 11px;
  fill: currentColor;
  transition: transform .25s var(--itv-ease);
}
.itv-portal .itv-menu .ast-menu-toggle[aria-expanded='true'] svg { transform: rotate(180deg); }

/* --- Submenús --- */

.itv-portal .itv-menu .sub-menu {
  display: none;
  margin: 0.1rem 0 0.4rem 0.75rem;
  padding: 0 0 0 0.75rem;
  border-left: 1px solid var(--itv-borde);
  list-style: none;
}

.itv-portal .itv-menu .itv-abierto > .sub-menu { display: block; }

.itv-portal .itv-menu .sub-menu a {
  padding: 0.5rem 0.65rem;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.02em;
  text-transform: none;
}

/* --- De 768px en adelante: barra horizontal con desplegables --- */

@media (min-width: 768px) {
  .itv-barra__interruptor { display: none; }

  /* En ancho el menú va siempre desplegado, aunque el script lo hubiera
     plegado antes de redimensionar la ventana. */
  .itv-barra__nav {
    display: block;
    flex: 1 1 0;
    min-width: 0;
  }

  .itv-portal .itv-menu {
    flex-direction: row;
    align-items: center;
    flex-wrap: wrap;
    padding: 0;
  }

  .itv-portal .itv-menu > li > a {
    padding: 0.5rem 0.7rem;
    border-radius: 9999px;
    white-space: nowrap;
  }

  /* Sitio para la flecha del desplegable. */
  .itv-portal .itv-menu > li.menu-item-has-children > a { padding-right: 1.7rem; }

  .itv-portal .itv-menu > li > .ast-menu-toggle {
    top: 50%;
    right: 0.3rem;
    width: 1.1rem;
    height: 1.1rem;
    transform: translateY(-50%);
  }
  .itv-portal .itv-menu > li > .ast-menu-toggle svg { width: 9px; height: 9px; }
  .itv-portal .itv-menu > li > .ast-menu-toggle[aria-expanded='true'] svg { transform: translateY(0) rotate(180deg); }

  .itv-portal .itv-menu > li > .sub-menu {
    position: absolute;
    top: calc(100% + 0.4rem);
    left: 0;
    z-index: 30;
    display: block;
    min-width: 15rem;
    max-width: 21rem;
    margin: 0;
    padding: 0.4rem;
    border: 1px solid var(--itv-borde);
    border-radius: 0.9rem;
    background: rgba(6, 11, 22, 0.97);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    box-shadow: 0 26px 50px -22px rgba(0, 0, 0, 0.95);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-6px);
    transition: opacity .2s var(--itv-ease), transform .2s var(--itv-ease), visibility .2s;
  }

  .itv-portal .itv-menu > li:hover > .sub-menu,
  .itv-portal .itv-menu > li:focus-within > .sub-menu,
  .itv-portal .itv-menu > li.itv-abierto > .sub-menu {
    opacity: 1;
    visibility: visible;
    transform: none;
  }

  /* Los últimos del menú se abrirían fuera de la pantalla. */
  .itv-portal .itv-menu > li:nth-last-child(-n+3) > .sub-menu { left: auto; right: 0; }

  .itv-portal .itv-menu .sub-menu a { border-radius: 0.5rem; }

  /* Un tercer nivel no cabe en una barra así: se despliega hacia abajo,
     dentro del propio panel. */
  .itv-portal .itv-menu .sub-menu .sub-menu {
    position: static;
    display: none;
    opacity: 1;
    visibility: visible;
    transform: none;
    min-width: 0;
    margin: 0.1rem 0 0.3rem 0.6rem;
    padding-left: 0.6rem;
    border: 0;
    border-left: 1px solid var(--itv-borde);
    border-radius: 0;
    background: none;
    box-shadow: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
  .itv-portal .itv-menu .sub-menu .itv-abierto > .sub-menu { display: block; }
}

/* --- Fondo ---------------------------------------------------------------- */

.itv-fondo {
  position: absolute;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
  background:
    radial-gradient(ellipse 120% 60% at 50% -5%, rgba(56, 189, 248, 0.16), transparent 62%),
    radial-gradient(ellipse 90% 50% at 88% 15%, rgba(129, 140, 248, 0.12), transparent 60%),
    linear-gradient(180deg, #050914 0%, #02040a 100%);
}

.itv-haz {
  position: absolute;
  top: -20%;
  width: 45%;
  height: 140%;
  filter: blur(60px);
  opacity: 0.45;
}
.itv-haz--a { left: -10%; background: linear-gradient(172deg, rgba(56,189,248,.28), transparent 70%); transform: rotate(14deg); }
.itv-haz--b { right: -12%; background: linear-gradient(188deg, rgba(129,140,248,.26), transparent 72%); transform: rotate(-16deg); }

/* Líneas curvas luminosas: los barridos de gráfica de televisión. */
.itv-curvas { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .5; }
.itv-curva { fill: none; stroke-linecap: round; animation: itv-destello 14s ease-in-out infinite; }

@keyframes itv-destello {
  0%, 100% { opacity: .35; }
  50% { opacity: .9; }
}

/* Grano sutil, para que los degradados no formen bandas. */
.itv-grano {
  position: absolute;
  inset: 0;
  opacity: .035;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* Viñeta: asienta el contenido sobre el escenario. */
.itv-vineta {
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 85% 70% at 50% 45%, transparent 40%, rgba(2,4,10,.72) 100%);
}

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

/* Anchos del diseño original: las secciones de exploración van holgadas y las
   de lectura —cronograma y formulario— se estrechan para no cansar la vista. */
.itv-seccion {
  max-width: 1160px;
  margin: 0 auto;
  padding-block: 3.5rem;
  scroll-margin-top: 5rem;
}

#itv-inicio,
#itv-fechas,
#itv-nominar { max-width: 900px; }

.itv-portal h2,
.itv-portal h3,
.itv-portal h4 {
  margin: 0;
  font-family: 'Montserrat', 'Helvetica Neue', Arial, sans-serif;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  line-height: 1.15;
  color: var(--itv-texto);
}

.itv-portal p { margin: 0; }
.itv-portal ul,
.itv-portal ol { margin: 0; padding: 0; list-style: none; }
.itv-portal a { color: inherit; text-decoration: none; }

/* Barrido metálico sobre cada título de sección. */
.itv-seccion:not(#itv-inicio) { position: relative; padding-top: 4.75rem; }
.itv-seccion:not(#itv-inicio)::before {
  content: '';
  position: absolute;
  top: 2.5rem;
  left: 0;
  width: min(180px, 45%);
  height: 1px;
  background: linear-gradient(90deg, var(--itv-cyan), rgba(129, 140, 248, 0.3), transparent);
}

.itv-portal .itv-antetitulo {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--itv-suave);
  margin-bottom: 0.6rem;
}

.itv-seccion__titulo { font-size: clamp(28px, 5.2vw, 36px); letter-spacing: 0.05em; }

.itv-portal .itv-lede {
  margin-top: 1.1rem;
  max-width: 64ch;
  color: var(--itv-suave);
  font-size: 16px;
  line-height: 1.7;
}

/* En móvil los rótulos de sección van centrados: el ancho no da para que una
   cabecera alineada a la izquierda se lea como tal. El contenido de cada
   sección —categorías, filas, formulario, cronograma— sigue a la izquierda. */
@media (max-width: 767px) {
  .itv-portal .itv-antetitulo,
  .itv-portal .itv-seccion__titulo,
  .itv-portal .itv-lede {
    text-align: center;
  }

  .itv-portal .itv-lede { margin-inline: auto; }

  /* El filete decorativo se centra con el rótulo y se difumina por los dos
     lados, no sólo por la derecha. */
  .itv-seccion:not(#itv-inicio)::before {
    left: 50%;
    transform: translateX(-50%);
    background: linear-gradient(90deg, transparent, var(--itv-cyan), transparent);
  }
}

/* --- Inicio --------------------------------------------------------------- */

#itv-inicio { position: relative; text-align: center; }

/* Cañón de luz detrás del titular. */
.itv-foco {
  position: absolute;
  top: -8%;
  left: 50%;
  translate: -50% 0;
  width: min(780px, 130%);
  height: 380px;
  pointer-events: none;
  background: radial-gradient(ellipse at 50% 30%, rgba(56,189,248,.22), transparent 68%);
  filter: blur(20px);
}

/* Logotipo oficial: sustituye al titular de texto. */
.itv-logo {
  display: block;
  width: min(230px, 62%);
  height: auto;
  margin: 1.25rem auto 0;
  /* El neón del propio logotipo se refuerza para que respire sobre el negro. */
  filter: drop-shadow(0 0 34px rgba(56, 189, 248, 0.32));
}

@media (max-width: 600px) {
  .itv-logo { width: min(175px, 60%); }
}

.itv-emblema {
  position: relative;
  display: grid;
  place-items: center;
  width: 3.5rem;
  height: 3.5rem;
  margin: 1.75rem auto 0;
  border-radius: var(--itv-r);
  color: var(--itv-cyan);
  background: linear-gradient(150deg, rgba(56,189,248,.18), rgba(129,140,248,.1));
  border: 1px solid rgba(226, 232, 240, 0.22);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.22), 0 0 40px -12px rgba(56,189,248,.7);
}
.itv-emblema svg { width: 24px; height: 24px; }

.itv-pildora {
  display: inline-flex;
  align-items: center;
  padding: 0.375rem 0.85rem;
  border-radius: 9999px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid var(--itv-borde);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--itv-suave);
}

.itv-portal .itv-pildora--sobria { margin-top: 2rem; }

.itv-pildora--acento {
  background: linear-gradient(135deg, rgba(56,189,248,.18), rgba(129,140,248,.18));
  border-color: rgba(56, 189, 248, 0.5);
  color: var(--itv-cyan-soft);
}

.itv-titular {
  margin-top: 1.5rem;
  font-size: clamp(32px, 9vw, 60px);
  font-weight: 900;
  letter-spacing: 0.06em;
  line-height: 1;
}

.itv-titular__marca {
  background: linear-gradient(120deg, var(--itv-cyan), var(--itv-indigo));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  filter: drop-shadow(0 0 26px rgba(56, 189, 248, 0.4));
}

.itv-titular__edicion {
  display: block;
  margin-top: 0.35rem;
  letter-spacing: 0.1em;
  text-shadow: 0 0 30px rgba(226, 232, 240, 0.28);
}

.itv-portal .itv-entradilla {
  max-width: 48ch;
  margin: 1.7rem auto 0;
  color: var(--itv-suave);
  font-size: 17px;
  line-height: 1.75;
}

.itv-portal .itv-aviso {
  display: inline-block;
  margin-top: 1.4rem;
  padding: 0.55rem 1rem;
  border-radius: 9999px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--itv-borde-suave);
  color: var(--itv-tenue);
  font-size: 13px;
}

/* --- Llamadas a la acción -------------------------------------------------- */

.itv-acciones {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.9rem;
  margin-top: 2.5rem;
}

.itv-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.875rem 1.5rem;
  border-radius: 9999px;
  font-family: 'Montserrat', sans-serif;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  transition: transform .25s var(--itv-ease), box-shadow .25s var(--itv-ease), border-color .25s var(--itv-ease);
}
.itv-cta svg { width: 16px; height: 16px; }

.itv-cta--primario {
  background: linear-gradient(135deg, var(--itv-cyan) 0%, var(--itv-indigo) 100%);
  color: var(--itv-void) !important;
  box-shadow: 0 0 28px -8px rgba(56, 189, 248, 0.7);
}
.itv-cta--primario:hover { transform: translateY(-2px); box-shadow: 0 0 40px -6px rgba(56,189,248,.85); }

.itv-cta--fantasma {
  background: var(--itv-cristal);
  border: 1px solid rgba(226, 232, 240, 0.28);
  color: var(--itv-texto) !important;
}
.itv-cta--fantasma:hover { border-color: rgba(56,189,248,.4); box-shadow: 0 0 24px -8px rgba(56,189,248,.5); }

/* Separador metálico. */
.itv-filete {
  width: 100%;
  max-width: 22rem;
  height: 1px;
  border: 0;
  margin: 3.75rem auto 0;
  background: linear-gradient(90deg, transparent, rgba(56, 189, 248, 0.55), transparent);
}

.itv-cifras {
  display: flex;
  justify-content: center;
  max-width: 28rem;
  margin: 2.75rem auto 0;
  border-radius: var(--itv-r);
  background: var(--itv-cristal);
  border: 1px solid var(--itv-borde);
}

.itv-cifras > div { flex: 1; padding: 1.2rem 0.6rem; }
.itv-cifras > div + div { border-left: 1px solid var(--itv-borde-suave); }
.itv-cifras dd {
  margin: 0;
  font-family: 'Montserrat', sans-serif;
  font-size: 30px;
  font-weight: 900;
}
.itv-cifras dt {
  margin-top: 0.15rem;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--itv-tenue);
}

/* --- Buscador ------------------------------------------------------------- */

.itv-campo-busqueda {
  position: relative;
  display: flex;
  align-items: center;
  height: 3.6rem;
  margin-top: 2rem;
  border-radius: 9999px;
  /* Opaco, no translúcido: así el relleno interior del campo y el de la
     sombra que tapa el autorrelleno son exactamente el mismo color y no se
     ve la costura. */
  background: var(--itv-campo);
  border: 1px solid var(--itv-borde);
  transition: border-color .25s var(--itv-ease), box-shadow .25s var(--itv-ease);
}

.itv-campo-busqueda:focus-within {
  border-color: rgba(56, 189, 248, 0.65);
  box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.14);
}

.itv-lupa {
  flex: none;
  width: 20px;
  height: 20px;
  margin-left: 1.1rem;
  color: var(--itv-cyan);
}

.itv-campo-busqueda input {
  flex: 1;
  min-width: 0;
  height: 100%;
  padding: 0 0.85rem;
  background: none;
  border: 0;
  outline: none;
  /* Blanco con algo de opacidad: lo escrito no compite con los titulares.
     Ojo: el color del texto NO se fija aquí con -webkit-text-fill-color. Si
     se fija, y Chrome decide pintar el campo de blanco con su relleno
     automático, queda letra blanca sobre fondo blanco e ilegible. Fijarlo
     sólo dentro de la regla de :-webkit-autofill, que es donde también se
     controla el fondo. */
  color: rgba(255, 255, 255, 0.9);
  caret-color: var(--itv-cyan);
  font-size: 17px;
  font-family: inherit;
}
.itv-campo-busqueda input::placeholder { color: var(--itv-tenue); }

/* Chrome cree que esto es un campo de nombre —lo dice el propio marcador de
   posición— y le aplica su relleno automático: pinta el fondo de blanco. Ese
   fondo no se puede sobrescribir con `background`, sólo taparlo con una
   sombra interior, y la sombra tiene que ser de un color OPACO. Con un blanco
   translúcido, que es como estaba, el blanco de Chrome seguía pasando.
   La transición larguísima evita el parpadeo del primer fotograma. */
.itv-campo-busqueda input:-webkit-autofill,
.itv-campo-busqueda input:-webkit-autofill:hover,
.itv-campo-busqueda input:-webkit-autofill:focus,
.itv-campo-busqueda input:-webkit-autofill:active {
  -webkit-text-fill-color: rgba(255, 255, 255, 0.9) !important;
  -webkit-box-shadow: 0 0 0 100px var(--itv-campo) inset !important;
  box-shadow: 0 0 0 100px var(--itv-campo) inset !important;
  caret-color: var(--itv-cyan);
  transition: background-color 100000s ease-in-out 0s;
}
.itv-campo-busqueda input::selection { background: rgba(56, 189, 248, 0.35); color: #fff; }
.itv-campo-busqueda input::-webkit-search-cancel-button { display: none; }

.itv-limpiar {
  width: 2rem;
  height: 2rem;
  margin-right: 0.7rem;
  border: 0;
  border-radius: 9999px;
  background: rgba(255, 255, 255, 0.08);
  color: var(--itv-suave);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}

.itv-portal .itv-resumen {
  margin-top: 1.5rem;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--itv-tenue);
}
.itv-resumen:empty { display: none; }

.itv-portal .itv-pista {
  margin-top: 1.5rem;
  padding: 2rem 1.5rem;
  border-radius: var(--itv-r);
  background: var(--itv-cristal);
  border: 1px solid var(--itv-borde-suave);
  text-align: center;
  color: var(--itv-suave);
  font-size: 14px;
}

.itv-portal .itv-resultados { margin-top: 1.1rem; border-radius: var(--itv-r); overflow: hidden; }
.itv-portal .itv-resultados:empty { display: none; }

.itv-resultado a {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1.1rem 1.25rem;
  border-bottom: 1px solid var(--itv-borde-suave);
  background: rgba(255, 255, 255, 0.018);
  transition: background-color .2s var(--itv-ease);
}
.itv-resultado a:hover { background: rgba(56, 189, 248, 0.07); }

.itv-resultado__num {
  flex: none;
  width: 2rem;
  font-family: 'Montserrat', sans-serif;
  font-size: 12px;
  font-weight: 700;
  color: var(--itv-tenue);
}
.itv-resultado__nombre {
  display: block;
  font-family: 'Montserrat', sans-serif;
  font-size: 16px;
  font-weight: 700;
  text-transform: uppercase;
  overflow-wrap: anywhere;
}
.itv-resultado__cat { display: block; margin-top: 0.2rem; font-size: 12px; color: var(--itv-suave); }
.itv-resultado__meta {
  display: inline-block;
  margin-top: 0.25rem;
  padding: 0.1rem 0.45rem;
  border-radius: 9999px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid var(--itv-borde-suave);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--itv-tenue);
}

.itv-portal .itv-mas-wrap { text-align: center; margin-top: 1.75rem; }

.itv-boton {
  padding: 0.8rem 1.4rem;
  border-radius: 9999px;
  background: var(--itv-cristal);
  border: 1px solid rgba(226, 232, 240, 0.24);
  color: var(--itv-texto);
  font-family: 'Montserrat', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  cursor: pointer;
  transition: border-color .25s var(--itv-ease), background-color .25s var(--itv-ease);
}
.itv-boton:hover { border-color: rgba(56,189,248,.4); background: var(--itv-cristal-alto); }

/* --- Categorías ----------------------------------------------------------- */

.itv-portal .itv-requisito {
  margin-top: 2rem;
  padding: 1.25rem 1.4rem;
  border-radius: 0.75rem;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid var(--itv-borde-suave);
  border-left: 2px solid rgba(226, 232, 240, 0.35);
  color: var(--itv-suave);
  font-size: 14px;
  line-height: 1.75;
}

.itv-portal .itv-acordeon { display: flex; flex-direction: column; gap: 0.85rem; margin-top: 2.25rem; }

.itv-item {
  border-radius: var(--itv-r);
  background: var(--itv-cristal);
  border: 1px solid var(--itv-borde);
  overflow: hidden;
  transition: border-color .3s var(--itv-ease), background-color .3s var(--itv-ease);
}
.itv-item--abierto {
  border-color: rgba(56, 189, 248, 0.4);
  background: var(--itv-cristal-alto);
  box-shadow: 0 0 30px -12px rgba(56, 189, 248, 0.35);
}

.itv-item__cab { margin: 0; }

.itv-item__icono {
  display: grid;
  place-items: center;
  flex: none;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 0.75rem;
  color: var(--itv-cyan);
  background: linear-gradient(150deg, rgba(56,189,248,.16), rgba(129,140,248,.08));
  border: 1px solid rgba(56, 189, 248, 0.22);
  transition: box-shadow .3s var(--itv-ease);
}
.itv-item__icono svg { width: 18px; height: 18px; }
.itv-disparador:hover .itv-item__icono,
.itv-item--abierto .itv-item__icono { box-shadow: 0 0 22px -6px rgba(56,189,248,.7); }

/* Reflejo especular superior: el canto plateado de las tarjetas. */
.itv-disparador::before {
  content: '';
  position: absolute;
  inset: 0 0 auto 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.22), transparent);
}

.itv-disparador {
  position: relative;
  display: flex;
  align-items: center;
  gap: 1.1rem;
  width: 100%;
  padding: 1.35rem 1.4rem;
  border: 0;
  background: none;
  color: inherit;
  text-align: left;
  font-family: inherit;
  cursor: pointer;
  transition: background-color .25s var(--itv-ease);
}
.itv-disparador:hover { background: rgba(56, 189, 248, 0.06); }

.itv-item__cuerpo { flex: 1; min-width: 0; }
.itv-item__nombre {
  display: block;
  font-family: 'Montserrat', sans-serif;
  font-size: 17px;
  font-weight: 700;
  letter-spacing: 0.035em;
  text-transform: uppercase;
  line-height: 1.3;
}
.itv-item__disciplina {
  display: block;
  margin-top: 0.45rem;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--itv-tenue);
}
.itv-item__conteo b { color: var(--itv-cyan-soft); }

.itv-chevron {
  flex: none;
  width: 10px;
  height: 10px;
  border-right: 2px solid var(--itv-tenue);
  border-bottom: 2px solid var(--itv-tenue);
  transform: rotate(45deg) translate(-2px, -2px);
  transition: transform .3s var(--itv-ease), border-color .3s var(--itv-ease);
}
.itv-item--abierto .itv-chevron {
  transform: rotate(225deg) translate(-2px, -2px);
  border-color: var(--itv-cyan);
}

.itv-panel { padding: 0 1.4rem 1.4rem; }

.itv-portal .itv-panel__desc {
  margin-bottom: 1.25rem;
  padding: 1.1rem 1.25rem;
  border-radius: 0.75rem;
  background: rgba(56, 189, 248, 0.05);
  border-left: 2px solid rgba(56, 189, 248, 0.45);
  color: var(--itv-suave);
  font-size: 14px;
  line-height: 1.7;
}

.itv-panel__vacio {
  padding: 1.5rem 1.25rem;
  border-radius: 0.75rem;
  border: 1px dashed var(--itv-borde);
  text-align: center;
  color: var(--itv-tenue);
  font-size: 14px;
}

.itv-portal .itv-filas {
  border-radius: 0.75rem;
  overflow: hidden;
  border: 1px solid var(--itv-borde-suave);
  background: rgba(2, 4, 10, 0.3);
}

.itv-fila {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 0.95rem 1.1rem;
  border-bottom: 1px solid var(--itv-borde-suave);
}
.itv-fila:last-child { border-bottom: 0; }

.itv-fila__num {
  flex: none;
  width: 1.75rem;
  font-family: 'Montserrat', sans-serif;
  font-size: 12px;
  font-weight: 700;
  color: var(--itv-tenue);
  font-variant-numeric: tabular-nums;
}
.itv-fila__nombre {
  display: block;
  font-family: 'Montserrat', sans-serif;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.itv-fila__meta {
  display: inline-block;
  margin-top: 0.25rem;
  padding: 0.1rem 0.45rem;
  border-radius: 9999px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid var(--itv-borde-suave);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--itv-tenue);
}

/* --- Llamada a proponer candidatura ---------------------------------------- */

/* Va entre las categorías y el formulario, que es donde alguien acaba de
   comprobar que su candidato no está en la lista. */
.itv-llamada {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  max-width: 1160px;
  margin: 1rem auto 0;
  padding: 1.75rem 1.9rem;
  border-radius: 1.25rem;
  border: 1px solid rgba(56, 189, 248, 0.28);
  background:
    linear-gradient(135deg, rgba(56, 189, 248, 0.10), rgba(129, 140, 248, 0.07)),
    var(--itv-cristal);
  box-shadow: 0 0 60px -30px rgba(56, 189, 248, 0.8);
}

.itv-portal .itv-llamada__antetitulo {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--itv-cyan-soft);
}

.itv-portal .itv-llamada__titulo {
  margin-top: 0.35rem;
  font-family: 'Montserrat', sans-serif;
  font-size: 24px;
  font-weight: 900;
  letter-spacing: 0.02em;
  color: var(--itv-texto);
}

.itv-portal .itv-llamada__pie {
  margin-top: 0.6rem;
  max-width: 52ch;
  font-size: 14px;
  line-height: 1.7;
  color: var(--itv-suave);
}
.itv-portal .itv-llamada__pie strong { color: var(--itv-texto); font-weight: 600; }

.itv-llamada__boton { flex: none; }

@media (max-width: 767px) {
  .itv-llamada {
    flex-direction: column;
    text-align: center;
    padding: 1.75rem 1.4rem;
  }
  .itv-portal .itv-llamada__pie { margin-inline: auto; }
  .itv-llamada__boton { width: 100%; }
}

/* --- Nominación ----------------------------------------------------------- */

.itv-formulario {
  margin-top: 2rem;
  padding: 2rem 1.75rem;
  border-radius: 1.5rem;
  background: var(--itv-cristal);
  border: 1px solid var(--itv-borde);
}

/* WPForms hereda el tema claro: aquí se adapta al fondo oscuro. */
.itv-formulario .wpforms-field-label { color: var(--itv-texto) !important; }
.itv-formulario .wpforms-field-sublabel,
.itv-formulario .wpforms-field-description { color: var(--itv-tenue) !important; }
.itv-formulario input[type='text'],
.itv-formulario input[type='email'],
.itv-formulario select,
.itv-formulario textarea {
  background: var(--itv-campo) !important;
  border: 1px solid var(--itv-borde) !important;
  color: var(--itv-texto) !important;
}
.itv-formulario select option { background: #0e131f; color: #fff; }

/* Mismo problema de autorrelleno que en el buscador (ver más arriba), y aquí
   salta casi siempre porque hay campos de nombre y de correo. */
.itv-formulario input:-webkit-autofill,
.itv-formulario input:-webkit-autofill:hover,
.itv-formulario input:-webkit-autofill:focus,
.itv-formulario input:-webkit-autofill:active,
.itv-formulario textarea:-webkit-autofill,
.itv-formulario select:-webkit-autofill {
  -webkit-text-fill-color: #fff !important;
  -webkit-box-shadow: 0 0 0 100px var(--itv-campo) inset !important;
  box-shadow: 0 0 0 100px var(--itv-campo) inset !important;
  caret-color: var(--itv-cyan);
  transition: background-color 100000s ease-in-out 0s;
}

/* WPForms sirve los campos en tamaño «medium»: aquí se aprovecha el ancho. */
.itv-formulario .wpforms-field-medium,
.itv-formulario .wpforms-field-large,
.itv-formulario .choices { max-width: 100% !important; width: 100% !important; }
.itv-formulario input[type='text'],
.itv-formulario input[type='email'],
.itv-formulario select,
.itv-formulario textarea { padding: 0.7rem 0.9rem !important; }

/* WPForms en estilo «moderno» sustituye el <select> por un widget de Choices.js
   con su propio fondo blanco: hay que teñirlo aparte. */
.itv-formulario .choices__inner,
.itv-formulario .choices__list--dropdown,
.itv-formulario .choices__list[aria-expanded],
.itv-formulario .choices[data-type*='select-one'] .choices__input {
  background: var(--itv-campo) !important;
  border-color: var(--itv-borde) !important;
  color: var(--itv-texto) !important;
}
.itv-formulario .choices__list--dropdown .choices__item { color: var(--itv-texto) !important; }
.itv-formulario .choices__list--dropdown .choices__item--selectable.is-highlighted {
  background: rgba(56, 189, 248, 0.18) !important;
}
.itv-formulario .choices__item--choice,
.itv-formulario .choices__placeholder { color: var(--itv-tenue) !important; }
.itv-formulario .choices__list--multiple .choices__item {
  background: rgba(56, 189, 248, 0.2) !important;
  border-color: rgba(56, 189, 248, 0.4) !important;
}

.itv-portal .itv-plazo { margin-top: 1.2rem; font-size: 13px; color: var(--itv-tenue); }

/* --- Cronograma ----------------------------------------------------------- */

.itv-portal .itv-linea { margin-top: 2.75rem; }

.itv-etapa { position: relative; padding-bottom: 2.75rem; }

.itv-conector {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.25rem;
  margin-top: 0.85rem;
  color: var(--itv-tenue);
}
.itv-conector svg { width: 11px; height: 11px; }
.itv-conector::before,
.itv-conector::after {
  content: '';
  width: 1px;
  height: 0.7rem;
  background: linear-gradient(180deg, rgba(56,189,248,.6), rgba(56,189,248,.06));
}

.itv-etapa__cab { display: flex; align-items: flex-start; gap: 1rem; }

.itv-etapa__num {
  display: grid;
  place-items: center;
  flex: none;
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 0.9rem;
  font-family: 'Montserrat', sans-serif;
  font-size: 17px;
  font-weight: 900;
  color: var(--itv-cyan);
  background: linear-gradient(150deg, rgba(56,189,248,.18), rgba(129,140,248,.08));
  border: 1px solid rgba(56, 189, 248, 0.28);
}

.itv-etapa__titulo { font-size: 21px; letter-spacing: 0.09em; }
.itv-portal .itv-etapa__desc {
  margin-top: 0.55rem;
  max-width: 52ch;
  color: var(--itv-suave);
  font-size: 16px;
  line-height: 1.65;
}

.itv-hitos { display: grid; gap: 1rem; margin: 1.75rem 0 0 4.25rem; }
@media (min-width: 560px) { .itv-hitos { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

.itv-hito {
  padding: 1.25rem 1.4rem;
  border-radius: 0.9rem;
  background: rgba(255, 255, 255, 0.035);
  border: 1px solid var(--itv-borde-suave);
}
.itv-hito__etiqueta {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--itv-tenue);
}
.itv-portal .itv-hito__fecha {
  margin-top: 0.5rem;
  font-family: 'Montserrat', sans-serif;
  font-size: 19px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.itv-portal .itv-hito__fecha--pendiente { color: var(--itv-suave); }
.itv-portal .itv-hito__hora {
  margin-top: 0.2rem;
  font-family: 'Montserrat', sans-serif;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--itv-cyan);
}

@media (prefers-reduced-motion: reduce) {
  .itv-portal * { transition-duration: 0.001ms !important; }
}


/* --- Aparición progresiva ------------------------------------------------- */

@keyframes itv-subir {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: none; }
}

#itv-inicio > .itv-pildora--acento { animation: itv-subir .6s var(--itv-ease) both; }
#itv-inicio > .itv-emblema { animation: itv-subir .6s .05s var(--itv-ease) both; }
#itv-inicio > .itv-titular { animation: itv-subir .7s .1s var(--itv-ease) both; }
#itv-inicio > .itv-pildora--sobria { animation: itv-subir .7s .18s var(--itv-ease) both; }
#itv-inicio > .itv-entradilla { animation: itv-subir .7s .24s var(--itv-ease) both; }
#itv-inicio > .itv-aviso { animation: itv-subir .7s .27s var(--itv-ease) both; }
#itv-inicio > .itv-acciones { animation: itv-subir .7s .3s var(--itv-ease) both; }
#itv-inicio > .itv-cifras { animation: itv-subir .7s .36s var(--itv-ease) both; }

@media (prefers-reduced-motion: reduce) {
  .itv-portal *,
  .itv-curva { animation: none !important; }
}
