/* Quiero ser policía · diseño «Noche táctica» (9/11/2026).
   Traslado a la web SSR del diseño aprobado por Eduardo en el estudio Lovable (libro P1–P24):
   fondo oscuro #090D16, dorado QSP #E8C36A, temas por cuerpo y la línea azul de The Thin Blue Line
   sólo como firma. Hoja única escrita desde cero: sustituye a «Línea de salida» y a sus capas. */

/* ------------------------------------------------------------ Fuentes (OFL, servidas en local) */
@font-face { font-family: "Plus Jakarta Sans"; src: url("/assets/fonts/PlusJakartaSans-VF.woff2") format("woff2"); font-weight: 400 800; font-display: swap; }
@font-face { font-family: "Barlow Condensed"; src: url("/assets/fonts/BarlowCondensed-600.woff2") format("woff2"); font-weight: 600; font-display: swap; }
@font-face { font-family: "Barlow Condensed"; src: url("/assets/fonts/BarlowCondensed-700.woff2") format("woff2"); font-weight: 700; font-display: swap; }
@font-face { font-family: "Barlow Condensed"; src: url("/assets/fonts/BarlowCondensed-800.woff2") format("woff2"); font-weight: 800; font-display: swap; }
@font-face { font-family: "Chakra Petch"; src: url("/assets/fonts/ChakraPetch-600.woff2") format("woff2"); font-weight: 600; font-display: swap; }
@font-face { font-family: "Chakra Petch"; src: url("/assets/fonts/ChakraPetch-700.woff2") format("woff2"); font-weight: 700; font-display: swap; }

/* ------------------------------------------------------------ Tokens */
:root {
  color-scheme: dark;
  --fondo: #090D16;
  --fondo-2: #0B1220;
  --tarjeta: #0F1626;
  --tarjeta-2: #141C2E;
  --cristal: rgb(20 28 46 / 0.62);
  --texto: #F4F6FA;
  --texto-2: #B4BCCB;
  --texto-3: #9AA3B5;
  --borde: rgb(255 255 255 / 0.10);
  --borde-fuerte: rgb(255 255 255 / 0.20);
  --qsp: #E8C36A;
  --qsp-hover: #F1D48B;
  --qsp-tinta: #0B0F19;
  --tbl: #1B4DFF;
  --tbl-claro: #6F93FF;
  --enlace: #F1D48B;
  --ok: #4ADE80;
  --aviso: #FBBF24;
  --peligro: #F87171;
  --info: #7DD3FC;
  --sombra: 0 30px 60px -20px rgb(0 0 0 / 0.7), 0 8px 20px -8px rgb(0 0 0 / 0.5);
  --sombra-suave: 0 10px 30px -18px rgb(0 0 0 / 0.8);
  --radio: 14px;
  --radio-g: 22px;
  --radio-p: 8px;
  --f-sans: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --f-titulo: "Barlow Condensed", "Plus Jakarta Sans", system-ui, sans-serif;
  --f-marca: "Chakra Petch", "Plus Jakarta Sans", system-ui, sans-serif;
  --contenedor: 80rem;
  --margen: clamp(1rem, 0.4rem + 2.6vw, 2rem);
  --lectura: 68ch;
  --tactil: 44px;
  --mov: 220ms ease;
  /* Tema por defecto (QSP) */
  --tema-base: #090D16;
  --tema-hondo: #121A33;
  --tema-acento: #E8C36A;
  --tema-indicador: #E8C36A;
  --neon: #E8C36A;
}
.theme-qsp { --tema-base: #090D16; --tema-hondo: #121A33; --tema-acento: #E8C36A; --tema-indicador: #E8C36A; --neon: #E8C36A; }
.theme-pn { --tema-base: #05070D; --tema-hondo: #0B1A3A; --tema-acento: #C9A86A; --tema-indicador: #C9A86A; --neon: #2F6BFF; }
.theme-gc { --tema-base: #050806; --tema-hondo: #0E2A17; --tema-acento: #E8C36A; --tema-indicador: #A3E635; --neon: #A6FF3B; }
.theme-autonomicas { --tema-base: #07070A; --tema-hondo: #1C1F27; --tema-acento: #CBD5E1; --tema-indicador: #E11D48; --neon: #FF3B4E; }
.theme-locales { --tema-base: #050A14; --tema-hondo: #0F2942; --tema-acento: #7DD3FC; --tema-indicador: #38BDF8; --neon: #4FC3F7; }
@media (prefers-reduced-motion: reduce) { :root { --mov: 0ms; } }

/* ------------------------------------------------------------ Base */
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-padding-top: 5.5rem; }
body {
  margin: 0; min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column;
  background: linear-gradient(180deg, var(--fondo), var(--fondo-2)) fixed; color: var(--texto);
  font-family: var(--f-sans); font-size: 1.0625rem; line-height: 1.65; -webkit-font-smoothing: antialiased;
  overflow-wrap: break-word; overflow-x: clip;
}
main { flex: 1 0 auto; }
main:focus { outline: none; }
img, svg { max-width: 100%; }
img { height: auto; }
a { color: var(--enlace); text-decoration-thickness: 1px; text-underline-offset: 0.2em; }
a:hover { color: var(--qsp-hover); text-decoration-thickness: 2px; }
:focus-visible { outline: 2px solid var(--qsp); outline-offset: 3px; border-radius: 6px; }
::selection { background: rgb(232 195 106 / 0.35); color: var(--texto); }
p, ul, ol, dl { margin: 0 0 1em; }
li { margin-bottom: 0.3em; }
strong, b { font-weight: 700; color: var(--texto); }
code { font-size: 0.9em; background: var(--tarjeta-2); padding: 0.1em 0.35em; border-radius: 6px; }
hr { border: 0; border-top: 1px solid var(--borde); margin: 2rem 0; }

h1, h2, h3, h4 { margin: 0; color: var(--texto); text-wrap: balance; }
h1 { font-family: var(--f-titulo); font-weight: 800; font-size: clamp(2.4rem, 1.4rem + 4.2vw, 4.6rem); line-height: 1.0; letter-spacing: 0.005em; text-transform: uppercase; max-width: 22ch; }
h2 { font-family: var(--f-titulo); font-weight: 700; font-size: clamp(1.75rem, 1.2rem + 2vw, 2.6rem); line-height: 1.08; margin: 3rem 0 0.9rem; }
h3 { font-family: var(--f-titulo); font-weight: 700; font-size: clamp(1.3rem, 1.15rem + 0.6vw, 1.6rem); line-height: 1.15; margin: 2rem 0 0.5rem; }
h4 { font-weight: 700; font-size: 1.05rem; line-height: 1.3; color: var(--texto-2); margin: 1.25rem 0 0.35rem; }
h2 a, h3 a { color: inherit; text-decoration: none; }
h2 a:hover, h3 a:hover { color: var(--qsp); }

.contenedor { width: 100%; max-width: calc(var(--contenedor) + 2 * var(--margen)); margin-inline: auto; padding-inline: var(--margen); }
.articulo { padding-bottom: 3rem; }
.articulo > p, .articulo .bloque > p, .articulo .bloque > ul, .articulo .bloque > ol { max-width: var(--lectura); }
.visualmente-oculto { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.sin-corte { white-space: nowrap; }
.titulo-seg { display: inline-block; max-inline-size: 100%; white-space: normal; }
.num { font-variant-numeric: tabular-nums; }
.saltar { position: absolute; left: 1rem; top: -4rem; z-index: 60; background: var(--qsp); color: var(--qsp-tinta); padding: 0.7rem 1rem; border-radius: 0 0 10px 10px; font-weight: 700; text-decoration: none; }
.saltar:focus { top: 0; color: var(--qsp-tinta); }
.aviso-entorno { background: #111a2e; color: var(--texto-2); text-align: center; font-size: 0.8125rem; padding: 0.3rem 1rem; border-bottom: 1px solid var(--borde); }

/* ------------------------------------------------------------ Marca y firma TBL */
.escudo { display: block; width: auto; object-fit: contain; }
.marca { display: inline-flex; align-items: center; gap: 0.7rem; min-height: var(--tactil); color: var(--texto); text-decoration: none; flex: none; }
.marca:hover { color: var(--texto); }
.marca .escudo { height: 3rem; }
.marca__nombre { display: flex; flex-direction: column; font-family: var(--f-marca); font-weight: 700; text-transform: uppercase; line-height: 1; white-space: nowrap; }
.marca__antes { font-size: 0.72rem; letter-spacing: 0.3em; color: var(--texto-3); }
.marca__principal { margin-top: 0.3rem; font-size: 1.55rem; letter-spacing: 0.14em; color: var(--texto); }
.tbl-linea { display: block; height: 2px; background: var(--tbl); box-shadow: 0 0 10px rgb(27 77 255 / 0.55); border: 0; }
.tbl-firma { display: inline-block; text-decoration: none; color: var(--texto); }
.tbl-firma__nombre { display: block; font-family: var(--f-titulo); font-weight: 700; letter-spacing: 0.08em; font-size: 1.5rem; line-height: 1.1; white-space: nowrap; }
.tbl-firma__pais { display: flex; align-items: center; justify-content: flex-end; gap: 0.4rem; margin-top: 0.3rem; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.35em; color: var(--texto-3); }
.tbl-firma .tbl-linea { margin-top: 0.3rem; }

/* ------------------------------------------------------------ Cabecera */
.cabecera { position: sticky; top: 0; z-index: 40; background: rgb(9 13 22 / 0.94); backdrop-filter: blur(16px); border-bottom: 2px solid var(--tbl); box-shadow: 0 6px 14px -10px rgb(27 77 255 / 0.6); }
.cabecera__fila { display: flex; align-items: center; gap: 1rem; min-height: 4.25rem; }
.cabecera__menu { display: flex; align-items: center; gap: 1rem; flex: 1 1 auto; min-width: 0; }
.nav { order: 1; flex: 1 1 auto; min-width: 0; }
.nav__lista { list-style: none; margin: 0; padding: 0; display: flex; gap: 0.15rem; }
.nav__lista li { margin: 0; }
.nav__lista a { display: block; padding: 0.55rem 0.65rem; border-radius: 8px; color: var(--texto-2); text-decoration: none; font-weight: 600; font-size: 0.92rem; white-space: nowrap; transition: color var(--mov); }
.nav__lista a:hover { color: var(--texto); }
.nav__lista a[aria-current="page"], .nav__lista a.nav__seccion { color: var(--texto); box-shadow: inset 0 -2px 0 var(--qsp); border-radius: 8px 8px 0 0; }
.busqueda-cabecera { order: 2; display: flex; align-items: center; margin-left: auto; width: min(100%, 17rem); position: relative; }
.busqueda-cabecera input { width: 100%; height: 2.75rem; border-radius: 999px; padding: 0 2.9rem 0 1.1rem; background: rgb(255 255 255 / 0.06); border: 1px solid var(--borde-fuerte); color: var(--texto); font: inherit; font-size: 0.9rem; }
.busqueda-cabecera input::placeholder { color: var(--texto-3); }
.busqueda-cabecera button { position: absolute; right: 0.25rem; display: grid; place-items: center; height: 2.25rem; width: 2.25rem; padding: 0; border-radius: 999px; border: 0; background: transparent; color: var(--texto-2); font: inherit; font-size: 0.8rem; font-weight: 700; cursor: pointer; }
.busqueda-cabecera button:hover { color: var(--qsp); }
.menu-boton { display: none; margin-left: auto; height: 2.75rem; padding: 0 1rem; border-radius: 999px; border: 1px solid var(--borde-fuerte); background: transparent; color: var(--texto); font: inherit; font-weight: 700; font-size: 0.9rem; cursor: pointer; align-items: center; gap: 0.5rem; }
.menu-boton__actual { color: var(--texto-3); font-weight: 600; }
@media (max-width: 79.99rem) {
  .js .menu-boton:not([hidden]) { display: inline-flex; }
  .js .cabecera__menu { display: none; }
  .js .cabecera--abierta .cabecera__menu { display: flex; flex-direction: column; align-items: stretch; position: absolute; left: 0; right: 0; top: 100%; padding: 1rem var(--margen) 1.25rem; background: rgb(9 13 22 / 0.98); border-bottom: 1px solid var(--borde); }
  .js .cabecera--abierta .busqueda-cabecera { order: 0; width: 100%; margin: 0; }
  .js .cabecera--abierta .nav__lista { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.25rem; margin-top: 0.75rem; }
  .js .cabecera--abierta .nav__lista a { min-height: var(--tactil); display: flex; align-items: center; }
  html:not(.js) .cabecera__fila { flex-wrap: wrap; padding-block: 0.5rem; }
  html:not(.js) .cabecera__menu { flex-wrap: wrap; flex-basis: 100%; }
  html:not(.js) .nav__lista { flex-wrap: wrap; }
}
@media (max-width: 26rem) { .marca__principal { font-size: 1.3rem; } .marca .escudo { height: 2.6rem; } }

/* ------------------------------------------------------------ Pie */
.pie { margin-top: 5rem; background: linear-gradient(180deg, transparent, rgb(20 28 46 / 0.55) 6rem); padding-top: 3rem; }
.pie__rejilla { display: grid; gap: 2.5rem; padding-bottom: 2.5rem; }
@media (min-width: 48rem) { .pie__rejilla { grid-template-columns: 1fr 1fr; } }
.pie__qsp { display: flex; gap: 1.1rem; align-items: center; }
.pie__qsp .escudo { height: 6rem; flex: none; }
.pie__marca { margin: 0; font-family: var(--f-marca); font-weight: 700; text-transform: uppercase; line-height: 1; }
.pie__marca span { display: block; }
.pie__marca .marca__principal { font-size: 2rem; }
.pie__by { margin: 0.6rem 0 0; font-size: 0.66rem; font-weight: 700; letter-spacing: 0.25em; text-transform: uppercase; color: var(--texto-3); }
.pie__nota { margin: 1rem 0 0; font-size: 0.9rem; color: var(--texto-3); }
.pie__tbl p { font-size: 0.92rem; color: var(--texto-3); max-width: 30rem; }
.pie__tbl .pie__tbl-titulo { color: var(--texto); font-weight: 700; margin-bottom: 1rem; }
.pie__enlace-tbl { display: inline-flex; min-height: var(--tactil); align-items: center; font-weight: 700; color: var(--texto); text-decoration: none; }
.pie__enlace-tbl:hover { color: var(--qsp); text-decoration: underline; }
.pie__nav { border-top: 1px solid var(--borde); }
.pie__nav ul { list-style: none; margin-block: 0; padding-block: 0.6rem; display: flex; flex-wrap: wrap; gap: 0 0.5rem; }
.pie__nav li { margin: 0; }
.pie__nav a { display: inline-flex; min-height: var(--tactil); align-items: center; padding: 0 0.5rem; color: var(--texto-3); text-decoration: none; font-size: 0.9rem; }
.pie__nav a:hover { color: var(--texto); }

/* ------------------------------------------------------------ Migas, cabeceras de página */
.migas { margin: 1.5rem 0 0; font-size: 0.875rem; }
.migas ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.25rem 0.5rem; color: var(--texto-3); }
.migas li { margin: 0; }
.migas li + li::before { content: "/"; margin-right: 0.5rem; color: var(--borde-fuerte); }
.migas a { color: var(--texto-2); text-decoration: none; }
.migas a:hover { color: var(--qsp); }
.migas [aria-current] { color: var(--texto); }

.encabezado, .cabecera-pagina, .cabecera-editorial { position: relative; padding: 1.25rem 0 2rem; margin-bottom: 1rem; }
.cabecera-editorial { isolation: isolate; }
.cabecera-editorial::before { content: ""; position: absolute; inset: 0 calc(50% - 50vw); z-index: -1; background: radial-gradient(60% 80% at 15% 0%, color-mix(in srgb, var(--tema-acento) 10%, transparent), transparent 70%), linear-gradient(180deg, var(--tema-base), transparent); }
.encabezado h1, .cabecera-pagina h1, .cabecera-editorial h1 { margin-top: 1.25rem; }
.entradilla { font-size: clamp(1.08rem, 1rem + 0.4vw, 1.3rem); line-height: 1.55; color: var(--texto-2); max-width: 62ch; margin-top: 1rem; }
.cabecera-editorial > .emblema--banda { width: clamp(4rem, 3rem + 4vw, 7rem); margin: 1.5rem 0 -0.5rem; filter: drop-shadow(0 0 18px color-mix(in srgb, var(--neon) 40%, transparent)); }
@media (min-width: 64rem) { .cabecera-editorial > .emblema--banda { position: absolute; right: 0; top: 2.5rem; margin: 0; } .cabecera-editorial .encabezado { padding-right: 9rem; } }

/* ------------------------------------------------------------ Bloques y secciones */
.bloque { margin: 2.5rem 0; }
.bloque > h2:first-child { margin-top: 0; }
.seccion-ficha { position: relative; margin: 3rem 0; padding-top: 2.5rem; border-top: 1px solid var(--borde); scroll-margin-top: 5.5rem; }
.seccion-ficha > h2 { margin-top: 0; display: flex; align-items: baseline; gap: 0.75rem; }
.seccion-ficha__num { font-family: var(--f-marca); font-size: 0.95rem; color: var(--tema-acento); letter-spacing: 0.1em; }
.seccion-ficha p, .seccion-ficha ul, .seccion-ficha ol { max-width: var(--lectura); }
.rejilla-2 { display: grid; gap: 1.5rem; }
@media (min-width: 56rem) { .rejilla-2 { grid-template-columns: 1fr 1fr; } }
.lista-simple { padding-left: 1.2rem; }
.lista-simple li::marker { color: var(--qsp); }
.lista-enlaces { list-style: none; padding: 0; }
.lista-enlaces li { padding: 0.4rem 0; border-bottom: 1px solid var(--borde); }
.nota-clave, .nota-situacion { border-left: 2px solid var(--qsp); padding: 0.25rem 0 0.25rem 1rem; color: var(--texto); font-weight: 600; max-width: var(--lectura); }
.ayuda { font-size: 0.9rem; color: var(--texto-3); }

/* Cristal reutilizable */
.tarjeta, .aviso, .tarjeta-dato, .cta-pdm, .estado-convocatorias, .estado-proceso, .ejemplo-sueldo, .formulario, .resultados, .vacio-comparar, .proceso, .duda, .tarjeta-via, .entrada-atlas, .datos-clave {
  background: var(--cristal); border: 1px solid var(--borde); border-radius: var(--radio); box-shadow: var(--sombra-suave);
}

/* ------------------------------------------------------------ Botones y acciones */
.boton { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; min-height: var(--tactil); padding: 0.6rem 1.4rem; border-radius: 999px; background: var(--qsp); color: var(--qsp-tinta); border: 1px solid var(--qsp); font: inherit; font-weight: 800; font-size: 0.95rem; letter-spacing: 0.02em; text-decoration: none; cursor: pointer; box-shadow: 0 0 20px -8px rgb(232 195 106 / 0.45); transition: background var(--mov), box-shadow var(--mov); }
.boton:hover { background: var(--qsp-hover); color: var(--qsp-tinta); box-shadow: 0 0 26px -6px rgb(232 195 106 / 0.6); }
.boton--secundario, .boton--fantasma { background: transparent; color: var(--texto); border-color: var(--borde-fuerte); box-shadow: none; }
.boton--secundario:hover, .boton--fantasma:hover { background: rgb(255 255 255 / 0.06); color: var(--texto); border-color: var(--texto-2); box-shadow: none; }
.boton--tema { background: var(--tema-acento); border-color: var(--tema-acento); color: #05070D; box-shadow: none; }
.boton--tema:hover { background: color-mix(in srgb, var(--tema-acento) 85%, white); color: #05070D; }
.acciones, .acciones-marco { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: center; margin: 1.25rem 0; }
.enlace-siguiente { display: inline-flex; align-items: center; gap: 0.35rem; min-height: var(--tactil); font-weight: 700; color: var(--texto); text-decoration: none; }
.enlace-siguiente::after { content: "→"; color: var(--qsp); transition: transform var(--mov); }
.enlace-siguiente:hover { color: var(--qsp); }
.enlace-siguiente:hover::after { transform: translateX(3px); }
.boton-favorito { display: inline-flex; align-items: center; gap: 0.4rem; min-height: var(--tactil); padding: 0.4rem 1rem; border-radius: 999px; border: 1px solid var(--borde-fuerte); background: transparent; color: var(--texto-2); font: inherit; font-size: 0.875rem; font-weight: 700; cursor: pointer; }
.boton-favorito[aria-pressed="true"] { color: var(--qsp); border-color: var(--qsp); }

/* ------------------------------------------------------------ Etiquetas, chips, estados */
.etiqueta { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.15rem 0.6rem; border-radius: 999px; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.02em; border: 1px solid var(--borde-fuerte); color: var(--texto-2); background: rgb(255 255 255 / 0.04); white-space: nowrap; }
.etiqueta::before { content: ""; width: 0.45rem; height: 0.45rem; border-radius: 50%; background: currentColor; }
.etiqueta--ok, .etiqueta--fase-plazo-abierto, .etiqueta--sit-plazo-abierto { color: var(--ok); border-color: rgb(74 222 128 / 0.4); }
.etiqueta--fase-en-curso, .etiqueta--sit-en-curso { color: var(--info); border-color: rgb(125 211 252 / 0.4); }
.etiqueta--pendiente, .etiqueta--fase-pendiente-confirmar, .etiqueta--fase-pendiente-anuncio, .etiqueta--sit-pendiente-anuncio { color: var(--aviso); border-color: rgb(251 191 36 / 0.4); }
.etiqueta--fase-cerrado, .etiqueta--sit-cerrado, .etiqueta--neutro { color: var(--texto-3); }
.etiqueta--fuerte { color: var(--qsp); border-color: rgb(232 195 106 / 0.5); }
.chips, .chips-enlace { display: flex; flex-wrap: wrap; gap: 0.5rem; list-style: none; padding: 0; margin: 1rem 0; }
.chips li, .chips-enlace li { margin: 0; }
.chip { display: inline-flex; align-items: center; min-height: 2rem; padding: 0.2rem 0.8rem; border-radius: 999px; border: 1px solid var(--borde-fuerte); font-size: 0.85rem; font-weight: 600; color: var(--texto-2); text-decoration: none; background: rgb(255 255 255 / 0.03); }
a.chip:hover { color: var(--texto); border-color: var(--qsp); }
.chip--marca { color: var(--qsp); border-color: rgb(232 195 106 / 0.45); }
.chip--cambia, .cambia { color: var(--aviso); }

/* ------------------------------------------------------------ Avisos y fuentes */
.aviso { padding: 1rem 1.25rem; margin: 1.5rem 0; border-left: 3px solid var(--qsp); max-width: 52rem; }
.aviso p:last-child { margin-bottom: 0; }
.fuentes-bloque { font-size: 0.82rem; line-height: 1.5; color: var(--texto-3); margin: 0.75rem 0 0; max-width: var(--lectura); }
.fuentes-bloque > span { font-weight: 700; color: var(--texto-2); }
.fuente { color: var(--texto-2); text-decoration-color: rgb(255 255 255 / 0.25); }
.fuente:hover { color: var(--qsp); }
.fuentes-celda { font-size: 0.78rem; color: var(--texto-3); }
.meta { font-size: 0.85rem; color: var(--texto-3); }

/* ------------------------------------------------------------ Índice de página */
.indice { margin: 1.5rem 0 2rem; }
.indice ul, .indice ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.4rem; }
.indice li { margin: 0; }
.indice a { display: inline-flex; align-items: center; min-height: 2.5rem; padding: 0.25rem 0.9rem; border-radius: 999px; border: 1px solid var(--borde); background: rgb(255 255 255 / 0.03); color: var(--texto-2); text-decoration: none; font-size: 0.875rem; font-weight: 600; }
.indice a:hover { color: var(--texto); border-color: var(--tema-acento); }
.indice--ficha { position: sticky; top: 4.4rem; z-index: 20; margin-inline: calc(-1 * var(--margen)); padding: 0.6rem var(--margen); background: rgb(9 13 22 / 0.92); backdrop-filter: blur(12px); border-bottom: 1px solid var(--borde); }
.indice--ficha ul, .indice--ficha ol { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: thin; }
.indice--ficha a { white-space: nowrap; }

/* ------------------------------------------------------------ Tarjetas */
.tarjetas { list-style: none; margin: 1.5rem 0; padding: 0; display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); }
.tarjetas > li { margin: 0; }
.tarjetas--2 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 24rem), 1fr)); }
@media (min-width: 64rem) { .tarjetas--3 { grid-template-columns: repeat(3, 1fr); } .tarjetas--4 { grid-template-columns: repeat(4, 1fr); } }
.tarjeta { padding: 1.4rem; }
.tarjeta h3 { margin-top: 0; }
.tarjeta-enlace { display: flex; flex-direction: column; gap: 0.5rem; height: 100%; padding: 1.4rem; border-radius: var(--radio); background: var(--cristal); border: 1px solid var(--borde); color: var(--texto); text-decoration: none; transition: transform var(--mov), border-color var(--mov); }
.tarjeta-enlace:hover { color: var(--texto); border-color: rgb(232 195 106 / 0.55); transform: translateY(-3px); }
.tarjeta-enlace .icono { color: var(--qsp); width: 1.6rem; height: 1.6rem; }
.tarjeta-enlace__titulo { font-family: var(--f-titulo); font-size: 1.35rem; font-weight: 700; line-height: 1.15; }
.tarjeta-enlace__texto { font-size: 0.95rem; color: var(--texto-2); }
.tarjeta-dato { padding: 1rem 1.2rem; }
/* Tarjetas de cuerpo con foto, escudo y brillo neón (sólo al pasar o pulsar) */
.tarjeta-cuerpo, .tarjeta-ciudad { position: relative; overflow: hidden; border-radius: var(--radio-g); border: 1.5px solid color-mix(in srgb, var(--neon) 70%, transparent); background: linear-gradient(180deg, var(--tema-base), var(--tema-hondo)); box-shadow: var(--sombra); transition: transform var(--mov), box-shadow var(--mov); }
.tarjeta-cuerpo:hover, .tarjeta-cuerpo:focus-within, .tarjeta-ciudad:hover, .tarjeta-ciudad:focus-within { transform: translateY(-2px); box-shadow: var(--sombra), 0 0 24px color-mix(in srgb, var(--neon) 70%, transparent), 0 0 4px var(--neon); }
.tarjeta-cuerpo__cabeza, .tarjeta-ciudad__cabeza { display: flex; align-items: center; gap: 0.8rem; padding: 1.25rem 1.25rem 0; }
.tarjeta-cuerpo__familia, .tarjeta-ciudad__cabeza span { margin: 0; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--texto-3); }
.tarjeta-cuerpo__cuerpo { padding: 0.75rem 1.25rem 1.4rem; }
.tarjeta-cuerpo h3, .tarjeta-ciudad h3 { margin: 0.3rem 0 0.5rem; font-size: 1.5rem; }
.tarjeta-ciudad h3 { padding: 0 1.25rem; }
.tarjeta-ciudad > p { padding: 0 1.25rem 1.25rem; margin: 0; color: var(--texto-2); font-size: 0.95rem; }
.tarjeta-cuerpo h3 a::after, .tarjeta-ciudad h3 a::after { content: ""; position: absolute; inset: 0; }
.tarjeta-cuerpo p { color: var(--texto-2); font-size: 0.95rem; margin-bottom: 0.5rem; }
.tarjeta-cuerpo__extra { font-size: 0.85rem; }
.tarjeta-cuerpo__extra a { position: relative; z-index: 1; }

/* Emblemas (escudos QSP) */
.emblema { display: block; flex: none; width: 3rem; height: auto; object-fit: contain; color: var(--tema-acento); }
.emblema--marca { width: auto; height: 3rem; }
.emblema--pie { width: auto; height: 6rem; }
.emblema--mini { width: 2.25rem; }
.emblema--tarjeta, .emblema--col { width: 3.5rem; }
.emblema--hero { width: clamp(6rem, 4rem + 8vw, 10rem); filter: drop-shadow(0 0 22px color-mix(in srgb, var(--neon) 45%, transparent)); }
.emblema--cta, .emblema--banda { width: 3.25rem; }
svg.emblema { width: 3rem; height: 3.4rem; }

/* ------------------------------------------------------------ Portada */
.portada-hero { position: relative; isolation: isolate; overflow: hidden; padding: 2.5rem 0 2.5rem; }
@media (min-width: 64rem) { .portada-hero { min-height: calc(100svh - 4.4rem); padding-top: 4rem; } }
.portada-hero__foto { position: absolute; inset: 0 0 0 auto; width: 100%; z-index: -1; -webkit-mask-image: linear-gradient(90deg, transparent 0%, black 60%), linear-gradient(0deg, transparent 0%, black 45%); mask-image: linear-gradient(90deg, transparent 0%, black 60%), linear-gradient(0deg, transparent 0%, black 45%); -webkit-mask-composite: source-in; mask-composite: intersect; }
@media (min-width: 64rem) { .portada-hero__foto { width: 72%; } }
.portada-hero__foto img { width: 100%; height: 100%; object-fit: cover; object-position: 70% center; filter: grayscale(0.75) contrast(1.25) brightness(0.7); opacity: 0.6; }
@media (min-width: 64rem) { .portada-hero__foto img { opacity: 0.9; } }
.portada-hero__foto::after { content: ""; position: absolute; inset: 0; background: oklch(0.45 0.09 250); mix-blend-mode: color; opacity: 0.55; }
.portada-hero__texto { max-width: 42rem; }
.portada-hero h1 { max-width: none; font-size: clamp(2.5rem, 1.1rem + 5vw, 4.6rem); }
.portada-hero__sub { margin: 0.4rem 0 0; font-family: var(--f-titulo); font-weight: 700; text-transform: uppercase; font-size: clamp(1.6rem, 1rem + 2.4vw, 2.6rem); line-height: 1.05; }
.portada-hero__sub span { color: var(--qsp); }
.portada-hero__entradilla { margin-top: 1rem; max-width: 36rem; font-size: clamp(1rem, 0.95rem + 0.3vw, 1.15rem); color: var(--texto-2); }
.portada-hero__lema { margin-top: 1rem; border-left: 2px solid var(--qsp); padding-left: 0.8rem; font-weight: 700; }
.hero__cifras { display: flex; flex-wrap: wrap; gap: 0.5rem 2rem; margin: 1.25rem 0 0.25rem; }
.hero__cifras div { display: flex; flex-direction: row-reverse; align-items: baseline; gap: 0.4rem; }
.hero__cifras dt { font-size: 0.9rem; color: var(--texto-2); }
.hero__cifras dd { margin: 0; font-family: var(--f-marca); font-weight: 700; font-size: clamp(1.6rem, 1.3rem + 1vw, 2rem); font-variant-numeric: tabular-nums; }
.hero__fecha { font-size: 0.78rem; color: var(--texto-3); margin: 0; }
.accesos-cuerpo { list-style: none; margin: 2rem 0 0; padding: 0; display: grid; gap: 0.8rem; grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 64rem) { .accesos-cuerpo { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; } }
.accesos-cuerpo li { margin: 0; }
.acceso-cuerpo { position: relative; display: flex; flex-direction: column; justify-content: flex-end; gap: 0.5rem; aspect-ratio: 4 / 5; padding: 1rem; overflow: hidden; border-radius: var(--radio-g); border: 1.5px solid var(--neon); background: linear-gradient(180deg, var(--tema-base), var(--tema-hondo)); box-shadow: var(--sombra); color: var(--texto); text-decoration: none; transition: transform var(--mov), box-shadow var(--mov); }
@media (min-width: 64rem) { .acceso-cuerpo { aspect-ratio: 5 / 4; padding: 1.25rem; } }
@media (min-width: 80rem) { .acceso-cuerpo { aspect-ratio: 4 / 3; } }
.acceso-cuerpo__foto { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: grayscale(0.15) contrast(1.05) brightness(0.95); opacity: 1; transition: transform 500ms ease; }
.acceso-cuerpo::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(0deg, var(--tema-hondo), color-mix(in srgb, var(--tema-base) 80%, transparent) 22%, transparent 55%); }
.acceso-cuerpo::after { content: ""; position: absolute; inset: 0; z-index: 1; background: radial-gradient(120% 45% at 50% 100%, color-mix(in srgb, var(--neon) 22%, transparent), transparent 70%); opacity: 0; transition: opacity var(--mov); }
.acceso-cuerpo > :not(img.acceso-cuerpo__foto) { position: relative; z-index: 2; }
.acceso-cuerpo .escudo { height: 3.6rem; width: auto; transition: filter var(--mov); }
.acceso-cuerpo__nombre { font-family: var(--f-titulo); font-weight: 700; font-size: clamp(1rem, 0.85rem + 0.7vw, 1.35rem); line-height: 1.1; }
.acceso-cuerpo__linea { display: block; width: 2.5rem; height: 2px; background: var(--tema-indicador); }
.theme-locales .acceso-cuerpo__linea { background: repeating-linear-gradient(90deg, #fff 0 4px, var(--tema-indicador) 4px 8px); }
.acceso-cuerpo:is(:hover, :focus-visible, :active) { transform: translateY(-2px); box-shadow: var(--sombra), 0 0 24px color-mix(in srgb, var(--neon) 75%, transparent), 0 0 4px var(--neon); color: var(--texto); }
.acceso-cuerpo:is(:hover, :focus-visible, :active)::after { opacity: 1; }
.acceso-cuerpo:is(:hover, :focus-visible, :active) .escudo { filter: drop-shadow(0 0 8px color-mix(in srgb, var(--neon) 70%, transparent)); }
.acceso-cuerpo:hover .acceso-cuerpo__foto { transform: scale(1.05); }
.acceso-cuerpo:focus-visible { outline: 2px solid var(--texto); outline-offset: 3px; }

.seccion-portada { padding-block: 3.5rem 1rem; }
.seccion-portada > h2 { margin-top: 0; }
.seccion-portada__intro { color: var(--texto-2); max-width: 60ch; }
.puertas { list-style: none; padding: 0; margin: 1.5rem 0 0; display: grid; gap: 1rem; }
@media (min-width: 48rem) { .puertas { grid-template-columns: repeat(3, 1fr); } }
.puerta { position: relative; display: flex; flex-direction: column; gap: 0.5rem; height: 100%; padding: 1.5rem; border-radius: var(--radio-g); background: var(--cristal); border: 1px solid var(--borde); box-shadow: var(--sombra-suave); color: var(--texto); text-decoration: none; transition: border-color var(--mov), background var(--mov); }
.puerta:hover { color: var(--texto); border-color: rgb(232 195 106 / 0.55); background: rgb(30 40 62 / 0.7); }
.puerta__num { font-family: var(--f-marca); font-size: 0.8rem; color: var(--qsp); }
.puerta .icono { color: var(--qsp); width: 1.6rem; height: 1.6rem; }
.puerta__titulo { font-family: var(--f-titulo); font-weight: 700; font-size: 1.35rem; line-height: 1.15; }
.puerta__texto { font-size: 0.95rem; color: var(--texto-2); }
.puerta__flecha { margin-top: auto; padding-top: 0.75rem; color: var(--qsp); width: 1.25rem; height: 1.25rem; }
.dos-columnas-portada { display: grid; gap: 1rem; padding-block: 1rem; }
@media (min-width: 48rem) { .dos-columnas-portada { grid-template-columns: 1fr 1fr; } }
.panel-portada { position: relative; overflow: hidden; padding: 2rem; border-radius: var(--radio-g); background: var(--cristal); border: 1px solid var(--borde); box-shadow: var(--sombra-suave); }
.panel-portada h2 { margin-top: 0; font-size: clamp(1.6rem, 1.3rem + 1vw, 2rem); }
.panel-portada p { color: var(--texto-2); }
.panel-portada--brillo::before { content: ""; position: absolute; right: -5rem; top: -5rem; width: 16rem; height: 16rem; border-radius: 50%; background: rgb(232 195 106 / 0.1); filter: blur(48px); }
.camino { list-style: none; position: relative; margin: 2.5rem 0 0; padding: 0; display: grid; gap: 2rem; }
.camino::before { content: ""; position: absolute; left: 7px; top: 0.5rem; bottom: 0.5rem; width: 2px; background: var(--tbl); box-shadow: 0 0 10px rgb(27 77 255 / 0.55); }
@media (min-width: 48rem) { .camino { grid-template-columns: repeat(4, 1fr); gap: 1.5rem; } .camino::before { left: 0; right: 0; top: 7px; bottom: auto; width: auto; height: 2px; } }
.camino li { position: relative; margin: 0; padding-left: 2rem; }
@media (min-width: 48rem) { .camino li { padding: 2rem 0 0; } }
.camino li::before { content: ""; position: absolute; left: 0; top: 0.25rem; width: 1rem; height: 1rem; border-radius: 50%; border: 2px solid var(--texto); background: var(--fondo); }
@media (min-width: 48rem) { .camino li::before { top: 0; } }
.camino__cuando { margin: 0; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--texto-3); }
.camino h3 { margin: 0.25rem 0 0; font-size: 1.6rem; }
.camino p { font-size: 0.95rem; color: var(--texto-2); }
.camino__aqui { display: inline-block; margin-top: 0.5rem; border: 1px solid var(--qsp); color: var(--qsp); border-radius: 999px; padding: 0.15rem 0.75rem; font-size: 0.78rem; font-weight: 700; }
.lema-final { margin: 3.5rem 0 0; text-align: center; font-family: var(--f-titulo); font-weight: 700; text-transform: uppercase; font-size: clamp(1.7rem, 1.2rem + 2vw, 2.6rem); line-height: 1.1; }
.procesos-portada { list-style: none; padding: 0; margin: 1rem 0; display: grid; gap: 0.5rem; }
.procesos-portada li { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.9rem; padding: 0.8rem 1rem; border-radius: var(--radio); background: var(--cristal); border: 1px solid var(--borde); }
.procesos-portada a { color: var(--texto); font-weight: 700; text-decoration: none; }
.procesos-portada a:hover { color: var(--qsp); }
.procesos-portada__plazas { margin-left: auto; font-size: 0.85rem; color: var(--texto-3); font-variant-numeric: tabular-nums; }

/* Cita vocacional */
.banda-cita { padding: 3rem 0; }
.cita-estoica { max-width: 56rem; margin: 2.5rem auto; padding: 0 var(--margen); }
.cita-estoica__marca { margin: 0 0 0.9rem; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--texto-3); }
.cita-estoica__texto { margin: 0; border-left: 2px solid var(--tbl); padding-left: 1.4rem; }
.cita-estoica__texto p { margin: 0; font-weight: 700; font-size: clamp(1.35rem, 1rem + 1.6vw, 2.25rem); line-height: 1.3; text-wrap: balance; }
.cita-estoica__pie { margin-top: 0.8rem; padding-left: 1.5rem; font-size: 0.8rem; color: var(--texto-3); }

/* ------------------------------------------------------------ Ficha de cuerpo: hero */
.ficha-cuerpo, .ficha-piloto { position: relative; }
.hero-cuerpo { position: relative; isolation: isolate; overflow: hidden; margin: 0 calc(50% - 50vw); padding: 2rem calc(50vw - 50%) 2.5rem; background: linear-gradient(180deg, var(--tema-base), var(--tema-hondo) 68%, var(--fondo)); }
.hero-cuerpo__foto { position: absolute; inset: 0; z-index: -1; }
.hero-cuerpo__foto img { width: 100%; height: 100%; object-fit: cover; object-position: right center; filter: grayscale(0.6) contrast(1.15) brightness(0.65); }
.hero-cuerpo__foto::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, color-mix(in srgb, var(--tema-base) 98%, transparent), color-mix(in srgb, var(--tema-base) 86%, transparent) 38%, color-mix(in srgb, var(--tema-hondo) 16%, transparent) 85%), linear-gradient(0deg, var(--fondo), transparent 25%); }
.hero-cuerpo__rejilla { display: grid; gap: 2rem; align-items: center; }
@media (min-width: 64rem) { .hero-cuerpo__rejilla { grid-template-columns: minmax(0, 1fr) 20rem; } }
.hero-cuerpo__familia { margin: 1.5rem 0 0.5rem; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--tema-acento); }
.hero-cuerpo h1 { max-width: 20ch; }
.hero-cuerpo__texto .entradilla { color: var(--texto); opacity: 0.9; }
.hero-cuerpo__lateral { display: flex; flex-direction: column; gap: 1rem; align-items: flex-start; }
.hero-cuerpo__emblema { display: flex; }
.datos-clave { list-style: none; margin: 0; padding: 0.4rem 1.1rem; width: 100%; }
.datos-clave li, .datos-clave > div { margin: 0; padding: 0.7rem 0; border-bottom: 1px solid var(--borde); display: flex; flex-direction: column-reverse; gap: 0.15rem; }
.datos-clave li:last-child, .datos-clave > div:last-child { border-bottom: 0; }
.datos-clave strong, .datos-clave dd { font-family: var(--f-marca); font-size: 1.5rem; line-height: 1.1; color: var(--tema-acento); margin: 0; }
.datos-clave span, .datos-clave dt { font-size: 0.85rem; color: var(--texto-2); }
.ficha-cuerpo__cuerpo { padding-top: 0.5rem; }
.puertas-cuerpo { margin: 2.5rem 0; }

/* ------------------------------------------------------------ Datos, escaleras, vías */
.datos { display: grid; gap: 0; margin: 1rem 0 1.5rem; max-width: 56rem; border-top: 1px solid var(--borde); }
.datos > div { display: grid; gap: 0.15rem 1.5rem; padding: 0.75rem 0; border-bottom: 1px solid var(--borde); }
@media (min-width: 40rem) { .datos > div { grid-template-columns: 14rem minmax(0, 1fr); } }
.datos dt { font-weight: 700; color: var(--texto-2); font-size: 0.95rem; }
.datos dd { margin: 0; }
.escalera { list-style: none; padding: 0; margin: 1.5rem 0; display: grid; gap: 0.6rem; max-width: 56rem; }
.escalera li { margin: 0; }
.escalera li { display: grid; grid-template-columns: 3.5rem minmax(0, 1fr); gap: 0.15rem 1rem; align-items: baseline; padding: 0.9rem 1.1rem; border-radius: var(--radio); background: var(--cristal); border: 1px solid var(--borde); border-left: 3px solid var(--tema-acento); }
.escalera__escala { display: block; font-weight: 700; }
.escalera__cat { grid-column: 2; color: var(--texto-2); }
.escalera__grupo { font-family: var(--f-marca); color: var(--tema-acento); font-weight: 700; }
.tarjeta-via { padding: 1.3rem; border-top: 3px solid var(--tema-acento); }
.tarjeta-via__cifra { font-family: var(--f-marca); font-size: 1.8rem; color: var(--tema-acento); line-height: 1; }
.tarjeta-via__enlaces { display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; margin-top: 0.75rem; }
.tarjeta-via__reserva { font-size: 0.85rem; color: var(--texto-3); }
.ascensos { list-style: none; padding: 0; margin: 1rem 0; display: grid; gap: 0.5rem; max-width: 56rem; }
.ascensos li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.5rem; padding: 0.7rem 1rem; border-radius: var(--radio-p); background: var(--cristal); border: 1px solid var(--borde); margin: 0; }
.ascensos__a { font-weight: 700; }
.ascensos__anios { color: var(--texto-3); font-size: 0.9rem; }
.pasos { list-style: none; counter-reset: paso; padding: 0; margin: 1.5rem 0; display: grid; gap: 1rem; }
@media (min-width: 56rem) { .pasos { grid-template-columns: repeat(2, 1fr); } }
.pasos > li { counter-increment: paso; position: relative; margin: 0; padding: 1.3rem 1.3rem 1.3rem 4rem; border-radius: var(--radio); background: var(--cristal); border: 1px solid var(--borde); }
.pasos > li::before { content: counter(paso, decimal-leading-zero); position: absolute; left: 1.2rem; top: 1.25rem; font-family: var(--f-marca); font-weight: 700; color: var(--qsp); }
.pasos h3 { margin: 0 0 0.35rem; font-size: 1.3rem; }
.pasos p { margin: 0; color: var(--texto-2); font-size: 0.95rem; }
.pasos--compactos > li { padding-block: 0.9rem; }

/* Sueldos */
.ejemplos-sueldo { display: grid; gap: 1rem; margin: 1.5rem 0; }
.ejemplo-sueldo { padding: 1.25rem; }
.ejemplo-sueldo__tipo { margin: 0; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--tema-acento); }
.ejemplo-sueldo__cifras { font-family: var(--f-marca); font-size: 1.6rem; margin: 0.4rem 0; }
.ejemplo-sueldo__operacion, .ejemplo-sueldo__supuestos { font-size: 0.9rem; color: var(--texto-2); }

/* ------------------------------------------------------------ Tablas */
.tabla-desplazable { overflow-x: auto; margin: 1rem 0 1.5rem; border-radius: var(--radio); border: 1px solid var(--borde); background: var(--cristal); }
.tabla-desplazable:focus-visible { outline-offset: 2px; }
.tabla { width: 100%; border-collapse: collapse; font-size: 0.92rem; line-height: 1.45; }
.tabla caption { text-align: left; padding: 0.8rem 1rem; font-weight: 700; color: var(--texto); }
.tabla th, .tabla td { text-align: left; vertical-align: top; padding: 0.7rem 1rem; border-bottom: 1px solid var(--borde); }
.tabla thead th { background: rgb(255 255 255 / 0.05); color: var(--texto); font-weight: 700; white-space: nowrap; }
.tabla tbody th { color: var(--texto); font-weight: 600; }
.tabla tbody tr:nth-child(even) { background: rgb(255 255 255 / 0.02); }
.tabla td.num, .tabla th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.tabla--compacta th, .tabla--compacta td { padding: 0.5rem 0.8rem; }
.pista-tabla { margin: 0.5rem 0 -0.5rem; font-size: 0.8rem; color: var(--texto-3); }

/* ------------------------------------------------------------ Dudas y glosario */
.lista-dudas { list-style: none; padding: 0; margin: 1rem 0; display: grid; gap: 0.6rem; max-width: 60rem; }
.lista-dudas > li { margin: 0; }
.duda { padding: 0; }
.duda > summary { cursor: pointer; list-style: none; padding: 1rem 3rem 1rem 1.2rem; font-weight: 700; position: relative; min-height: var(--tactil); }
.duda > summary::-webkit-details-marker { display: none; }
.duda > summary::after { content: "+"; position: absolute; right: 1.2rem; top: 0.85rem; font-size: 1.3rem; color: var(--qsp); }
.duda[open] > summary::after { content: "–"; }
.duda > :not(summary) { padding: 0 1.2rem; }
.duda > :last-child { padding-bottom: 1rem; }
details:not(.duda) > summary { cursor: pointer; font-weight: 700; color: var(--texto); min-height: var(--tactil); display: flex; align-items: center; }
dfn { font-style: normal; font-weight: 700; color: var(--texto); }

/* ------------------------------------------------------------ Procesos y convocatorias */
.lista-procesos { list-style: none; padding: 0; margin: 1rem 0; display: grid; gap: 0.8rem; }
.lista-procesos > li { margin: 0; }
.proceso { padding: 1.2rem 1.3rem; }
.proceso h3 { margin: 0.35rem 0; font-size: 1.35rem; }
.proceso__estado { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.proceso__meta { font-size: 0.875rem; color: var(--texto-3); margin: 0.25rem 0 0; }
.proceso__resumen { color: var(--texto-2); margin: 0.5rem 0 0; }
.ficha-proceso .encabezado h1 { max-width: 30ch; font-size: clamp(2rem, 1.2rem + 3vw, 3.6rem); }
.estado-proceso { padding: 1.2rem; margin: 1.5rem 0; display: grid; gap: 0.8rem; }
@media (min-width: 48rem) { .estado-proceso { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.estado-proceso__celda { padding: 0.25rem 0; }
.estado-proceso__rot { margin: 0; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--texto-3); }
.estado-proceso__dato { margin: 0.2rem 0 0; font-weight: 700; }
.estado-proceso__pie, .estado-proceso__fue, .estado-proceso__det { grid-column: 1 / -1; font-size: 0.85rem; color: var(--texto-3); }
.estado-convocatorias { padding: 1.2rem; margin: 1.5rem 0; }
.estado-convocatorias__titulo { margin: 0 0 0.6rem; font-weight: 700; }
.estado-convocatorias__item { padding: 0.5rem 0; border-top: 1px solid var(--borde); }
.estado-convocatorias__dato { font-size: 0.9rem; color: var(--texto-2); }
.historial { list-style: none; padding: 0; margin: 1rem 0; border-left: 2px solid var(--borde-fuerte); max-width: 56rem; }
.historial li { position: relative; padding: 0 0 1rem 1.2rem; margin: 0; }
.historial li::before { content: ""; position: absolute; left: -6px; top: 0.5rem; width: 10px; height: 10px; border-radius: 50%; background: var(--qsp); }
.historial__fecha { font-family: var(--f-marca); font-size: 0.85rem; color: var(--qsp); display: block; }
.historial__evento { color: var(--texto-2); }

/* CTA Policía de Madrid */
.cta-pdm { display: grid; gap: 1rem; align-items: center; padding: 1.3rem 1.4rem; margin: 2rem 0; border-color: color-mix(in srgb, var(--neon) 50%, transparent); background: linear-gradient(135deg, var(--tema-base), var(--tema-hondo)); }
@media (min-width: 48rem) { .cta-pdm { grid-template-columns: auto minmax(0, 1fr) auto; } }
.cta-pdm__titulo { margin: 0 0 0.25rem; font-family: var(--f-titulo); font-weight: 700; font-size: 1.3rem; color: var(--texto); }
.cta-pdm__texto p:last-child { margin: 0; color: var(--texto-2); font-size: 0.95rem; }
.cta-pdm--compacto { padding: 1rem 1.2rem; }

/* ------------------------------------------------------------ Formularios y herramientas */
.formulario { padding: 1.4rem; margin: 1.5rem 0; max-width: 60rem; }
.campo { display: grid; gap: 0.35rem; margin-bottom: 1rem; }
.campo label, .campo legend, fieldset legend { font-weight: 700; color: var(--texto); }
fieldset { border: 0; padding: 0; margin: 0 0 1rem; min-width: 0; }
input[type="text"], input[type="search"], input[type="number"], input[type="email"], select, textarea {
  width: 100%; min-height: var(--tactil); padding: 0.55rem 0.9rem; border-radius: 10px; border: 1px solid var(--borde-fuerte); background: rgb(255 255 255 / 0.05); color: var(--texto); font: inherit; font-size: 1rem;
}
select { color-scheme: dark; }
input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--qsp); outline-offset: 1px; border-color: var(--qsp); }
.opciones { display: grid; gap: 0.5rem; }
.opciones--rejilla { grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); }
.opcion { display: flex; align-items: flex-start; gap: 0.6rem; min-height: var(--tactil); padding: 0.6rem 0.9rem; border-radius: 10px; border: 1px solid var(--borde); background: rgb(255 255 255 / 0.03); cursor: pointer; }
.opcion:hover { border-color: var(--borde-fuerte); }
.opcion:has(input:checked) { border-color: var(--qsp); background: rgb(232 195 106 / 0.08); }
.opcion input { accent-color: var(--qsp); margin-top: 0.3rem; width: 1.1rem; height: 1.1rem; flex: none; }
.formulario--fila { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: flex-end; }
.formulario--fila .campo { margin: 0; flex: 1 1 14rem; }
.filtros { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: flex-end; }
.resultados { padding: 1.3rem; margin: 1.5rem 0; }
.resultado-via { padding: 1.3rem; margin: 1rem 0; }
.siguiente-pagina { margin-top: 2rem; }
.comparador { margin-block: 1.5rem; }
.vacio-comparar { padding: 1.5rem; text-align: center; }
.vacio-comparar__aviso { color: var(--texto-2); }
.total { font-weight: 800; }

/* ------------------------------------------------------------ Comprobador: resultado por vía */
.resultado { margin-top: 2.5rem; scroll-margin-top: 5rem; }
.resultado:focus { outline: none; }
.resultado > h2:first-child { margin-top: 0; }
.resultado__alcance, .alcance-via { color: var(--texto-2); max-width: var(--lectura); }
.resultado-via { position: relative; padding: 1.3rem 1.4rem; margin: 1rem 0; background: var(--cristal); border: 1px solid var(--borde); border-left: 3px solid var(--texto-3); border-radius: 0 var(--radio) var(--radio) 0; }
.resultado-via > h3 { margin: 0 0 0.5rem; }
.resultado-via--sin-obstaculos-en-datos-verificados { border-left-color: var(--ok); }
.resultado-via--hay-algo-que-comprobar { border-left-color: var(--aviso); }
.resultado-via--no-encaja-con-la-referencia { border-left-color: var(--peligro); }
.resumen { margin: 0 0 0.6rem; }
.resumen strong { display: inline-flex; align-items: center; gap: 0.4em; padding: 0.15rem 0.6rem; border-radius: 999px; font-size: 0.9rem; border: 1px solid currentColor; }
.resultado-via--sin-obstaculos-en-datos-verificados .resumen strong { color: var(--ok); }
.resultado-via--hay-algo-que-comprobar .resumen strong { color: var(--aviso); }
.resultado-via--no-encaja-con-la-referencia .resumen strong { color: var(--peligro); }
.comprobaciones { list-style: none; padding: 0; margin: 0 0 0.9rem; border-top: 1px solid var(--borde); }
.comprobacion { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0.25rem 1.25rem; padding: 0.75rem 0; margin: 0; border-bottom: 1px solid var(--borde); --c: var(--texto-2); --g: var(--texto-3); }
@media (min-width: 40rem) { .comprobacion { grid-template-columns: 13rem minmax(0, 1fr); align-items: start; } }
.comprobacion__cabeza { display: flex; flex-direction: column; align-items: flex-start; gap: 0.15rem; }
.comprobacion__estado { display: inline-flex; align-items: center; gap: 0.45em; font-size: 0.85rem; font-weight: 700; color: var(--c); }
.comprobacion__estado::before { content: ""; flex: none; width: 0.8rem; height: 0.8rem; background: var(--g); }
.comprobacion__concepto { display: block; font-weight: 700; }
.comprobacion__explicacion { display: block; max-width: 62ch; color: var(--texto-2); }
.comprobacion--cumple { --c: var(--ok); --g: var(--ok); }
.comprobacion--cumple .comprobacion__estado::before { clip-path: polygon(0 55%, 15% 40%, 38% 62%, 85% 10%, 100% 25%, 38% 92%); }
.comprobacion--falta { --c: var(--peligro); --g: var(--peligro); }
.comprobacion--falta .comprobacion__estado::before { clip-path: polygon(20% 0, 50% 30%, 80% 0, 100% 20%, 70% 50%, 100% 80%, 80% 100%, 50% 70%, 20% 100%, 0 80%, 30% 50%, 0 20%); }
.comprobacion--comprobar, .comprobacion--diferible { --c: var(--aviso); --g: var(--aviso); }
.comprobacion--comprobar .comprobacion__estado::before, .comprobacion--diferible .comprobacion__estado::before { clip-path: circle(50%); }
.comprobacion--sin-dato .comprobacion__estado::before { height: 2px; }
.enlaces-via { margin: 0; font-weight: 700; }
.marco-comprobacion { margin-top: 2rem; }
.siguiente-paso { margin-top: 2rem; border-top: 1px solid var(--borde); padding-top: 1rem; display: flex; flex-direction: column; align-items: flex-start; gap: 0.5rem; }
.borrado { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 1rem; margin-top: 2rem; padding-top: 1rem; border-top: 1px solid var(--borde); }
.estado-borrado:not(:empty) { font-weight: 700; color: var(--texto); }
.boton--peligro { background: transparent; color: var(--peligro); border-color: rgb(248 113 113 / 0.5); box-shadow: none; }
.boton--peligro:hover { background: rgb(248 113 113 / 0.1); color: var(--peligro); }
.bloque--no-conectado, .nota-practica { background: var(--cristal); border: 1px solid var(--borde); border-left: 3px solid var(--texto-3); border-radius: 0 var(--radio) var(--radio) 0; padding: 1rem 1.25rem; margin: 2rem 0; }
.nota-practica { border-left-color: var(--qsp); }
.bloque--no-conectado > h2:first-child { margin: 0 0 0.5rem; font-size: 1.4rem; }
.bloque--no-conectado > :last-child, .nota-practica > :last-child { margin-bottom: 0; }
.vacio { color: var(--texto-2); border-block: 1px solid var(--borde); padding: 1rem 0; }

/* ------------------------------------------------------------ Comparador */
.formulario--comparar { display: grid; gap: 1rem; }
@media (min-width: 56rem) { .formulario--comparar { grid-template-columns: repeat(3, minmax(0, 1fr)) auto; align-items: end; } .formulario--comparar .campo { margin: 0; } }
.formulario--filtros { display: flex; flex-wrap: wrap; gap: 0.75rem 1rem; align-items: flex-end; }
.cmp-aviso { color: var(--texto-2); font-size: 0.9rem; max-width: 62ch; margin: 0 0 1rem; }
.cmp-eyebrow { margin: 0; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--texto-3); }
.cmp-remite { font-size: 0.85rem; color: var(--texto-3); }
.cmp-cambiar-det { margin: 0 0 1rem; }
.cmp-cambiar-det > summary { display: inline-flex; align-items: center; min-height: var(--tactil); padding: 0.3rem 1rem; border-radius: 999px; border: 1px solid var(--borde-fuerte); font-weight: 700; cursor: pointer; }
.resultado-comparar > h2 { margin: 2rem 0 1rem; }
.cmp-seleccion { list-style: none; padding: 0; margin: 0 0 1.25rem; display: flex; flex-wrap: wrap; gap: 0.6rem; }
.cmp-seleccion li { display: flex; align-items: center; gap: 0.7rem; margin: 0; padding: 0.6rem 1rem; border-radius: var(--radio); background: linear-gradient(135deg, var(--tema-base), var(--tema-hondo)); border: 1px solid color-mix(in srgb, var(--neon) 55%, transparent); }
.cmp-seleccion__texto { display: flex; flex-direction: column; }
.cmp-seleccion a { font-weight: 700; color: var(--texto); }
.cmp-tabla { display: none; }
@media (min-width: 48rem) { .cmp-tabla { display: block; } .cmp-tarjetas { display: none; } }
.tabla--comparar th.cmp-col { min-width: 14rem; background: linear-gradient(180deg, var(--tema-base), var(--tema-hondo)); }
.cmp-col__cabeza { display: flex; align-items: center; gap: 0.6rem; }
.tabla--comparar tr.difiere > th { box-shadow: inset 3px 0 0 var(--qsp); }
.tabla--comparar tr.difiere { background: rgb(232 195 106 / 0.05); }
.cmp-concepto { background: var(--cristal); border: 1px solid var(--borde); border-radius: var(--radio); padding: 1rem 1.1rem; margin-bottom: 0.8rem; }
.cmp-concepto--difiere { border-left: 3px solid var(--qsp); }
.cmp-concepto h3 { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem; margin: 0 0 0.75rem; font-size: 1.25rem; }
.cmp-concepto dl { margin: 0; display: grid; gap: 0.75rem; }
.cmp-concepto__fila { padding-top: 0.75rem; border-top: 1px solid var(--borde); }
.cmp-concepto dt { display: flex; align-items: center; gap: 0.5rem; font-weight: 700; }
.cmp-concepto dd { margin: 0.25rem 0 0; color: var(--texto-2); }
.cmp-concepto dd p, .cmp-concepto dd ul { margin: 0 0 0.25rem; }
.relacionadas--cmp .tarjeta-dato h3 { margin: 0 0 0.5rem; }

/* ------------------------------------------------------------ Guías */
.guia-piloto { position: relative; }
@media (min-width: 72rem) { .guia-piloto { display: grid; grid-template-columns: minmax(0, 1fr) 17rem; column-gap: 3rem; } .guia-piloto > * { grid-column: 1; } .guia-piloto > .indice-pasos { grid-column: 2; grid-row: 2 / span 7; position: sticky; top: 5.5rem; align-self: start; margin-top: 2.5rem; } }
.seccion-guia { padding-top: 2.5rem; scroll-margin-top: 5.5rem; }
.seccion-guia > h2 { display: flex; align-items: center; gap: 0.75rem; margin: 0 0 1rem; }
.seccion-guia__num { flex: none; display: grid; place-items: center; width: 2.6rem; height: 2.6rem; border-radius: 10px; background: rgb(232 195 106 / 0.1); color: var(--qsp); font-family: var(--f-marca); font-size: 1rem; }
.seccion-guia > p, .seccion-guia > ul, .seccion-guia > ol { max-width: var(--lectura); }
.indice-pasos { background: var(--cristal); border: 1px solid var(--borde); border-radius: var(--radio); padding: 1rem 1.25rem; }
.indice-pasos::before { content: "En esta guía" / ""; display: block; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--texto-3); margin-bottom: 0.5rem; }
.indice-pasos ol { margin: 0; padding: 0; list-style: none; counter-reset: ip; }
.indice-pasos li { counter-increment: ip; margin: 0; border-bottom: 1px solid var(--borde); }
.indice-pasos li:last-child { border-bottom: 0; }
.indice-pasos a { display: flex; align-items: center; gap: 0.75rem; min-height: var(--tactil); padding-block: 0.4rem; font-weight: 600; text-decoration: none; color: var(--texto-2); font-size: 0.95rem; }
.indice-pasos a::before { content: counter(ip); flex: none; display: grid; place-items: center; width: 1.7rem; height: 1.7rem; border-radius: 50%; background: rgb(232 195 106 / 0.12); color: var(--qsp); font-weight: 800; font-size: 0.85rem; }
.indice-pasos a:hover { color: var(--texto); }
.recurso { display: grid; gap: 1rem; align-items: center; margin: 1.5rem 0; padding: 1.4rem; border-radius: var(--radio-g); background: linear-gradient(135deg, #121A33, #0B1220); border: 1px solid rgb(232 195 106 / 0.35); }
@media (min-width: 48rem) { .recurso { grid-template-columns: minmax(0, 1fr) auto; } }
.recurso h3 { margin: 0 0 0.4rem; }
.recurso p { margin: 0; color: var(--texto-2); max-width: 60ch; }
.lista-check { list-style: none; padding: 0; margin: 1rem 0; display: grid; gap: 0.7rem; max-width: var(--lectura); }
.lista-check li { position: relative; padding-left: 2rem; margin: 0; }
.lista-check li::before { content: ""; position: absolute; left: 0; top: 0.25rem; width: 1.3rem; height: 1.3rem; border-radius: 50%; background: rgb(232 195 106 / 0.15); border: 1px solid var(--qsp); }
.lista-check li::after { content: ""; position: absolute; left: 0.45rem; top: 0.48rem; width: 0.4rem; height: 0.65rem; border: solid var(--qsp); border-width: 0 2px 2px 0; transform: rotate(45deg); }
.lista-flechas { list-style: none; padding: 0; margin: 1rem 0; max-width: var(--lectura); }
.lista-flechas li { position: relative; padding-left: 1.5rem; }
.lista-flechas li::before { content: "→"; position: absolute; left: 0; color: var(--qsp); }
.guias-requisitos { margin: 1rem 0 1.5rem; }
.enlace-destacado { margin-top: 1.5rem; font-weight: 700; }
.rejilla-3 { display: grid; gap: 1rem; margin: 1rem 0 1.5rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); }
.puerta-cuerpo { margin: 0; padding: 1.2rem; border-radius: var(--radio); background: var(--cristal); border: 1px solid var(--borde); border-top: 3px solid var(--tema-acento); }
.puerta-cuerpo h3 { margin: 0 0 0.4rem; font-size: 1.3rem; }
.puerta-cuerpo p { margin: 0; color: var(--texto-2); font-size: 0.97rem; }
.chips--hero { margin: 0 0 0.5rem; }
.chips--hero .chip { background: transparent; border-color: color-mix(in srgb, var(--tema-acento) 45%, transparent); color: var(--tema-acento); font-size: 0.78rem; letter-spacing: 0.08em; text-transform: uppercase; }
.estado-convocatorias__ver { display: inline-flex; margin-top: 0.5rem; font-weight: 700; }
.cta-pdm__boton { justify-self: start; }

/* ------------------------------------------------------------ Glosario y baremos */
.glosario dt { font-family: var(--f-titulo); font-weight: 700; font-size: 1.35rem; margin-top: 1.5rem; scroll-margin-top: 5.5rem; }
.glosario dd { margin: 0.25rem 0 0; padding-bottom: 0.9rem; border-bottom: 1px solid var(--borde); color: var(--texto-2); max-width: var(--lectura); }
.tabla-desplazable:has(> .baremo) { max-width: 38rem; }
.baremo td { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.baremo tbody th { width: 4.5rem; white-space: nowrap; }
.baremo tr.umbral > th { box-shadow: inset 3px 0 0 var(--qsp); }
.baremo-literal { font-size: 0.875rem; color: var(--texto-2); margin: -0.5rem 0 1rem; }
.baremo-literal summary { min-height: var(--tactil); }
.segmentos { list-style: none; padding: 0; margin: 0; }
.segmentos li { margin: 0 0 0.15rem; }
.tabla--requisitos td, .tabla--requisitos th { min-width: 11rem; }
.via { margin: 1.5rem 0; padding-top: 1rem; border-top: 1px solid var(--borde); scroll-margin-top: 5.5rem; }
.via > h3:first-child { margin-top: 0; }
.tarjetas--ciudades { grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr)); }

/* ------------------------------------------------------------ Atlas y relacionadas */
.entrada-atlas { padding: 1.2rem 1.3rem; }
.entrada-atlas h3 { margin-top: 0; }
.relacionadas { margin: 3rem 0 1rem; padding-top: 2rem; border-top: 1px solid var(--borde); }
.relacionadas h2 { margin-top: 0; font-size: 1.6rem; }
.relacionadas ul { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.relacionadas li { margin: 0; }
.relacionadas a { display: inline-flex; min-height: var(--tactil); align-items: center; padding: 0.3rem 1rem; border-radius: 999px; border: 1px solid var(--borde-fuerte); color: var(--texto); text-decoration: none; font-weight: 600; font-size: 0.92rem; }
.relacionadas a:hover { border-color: var(--qsp); color: var(--qsp); }
.mas-guias { margin-top: 2rem; }
.icono { width: 1.25rem; height: 1.25rem; flex: none; }

/* ------------------------------------------------------------ Movimiento reducido */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; }
  .acceso-cuerpo:hover, .tarjeta-cuerpo:hover, .tarjeta-enlace:hover { transform: none; }
}

/* ------------------------------------------------------------ Correcciones del ui-critic (9/11/2026) */
.estado-convocatorias ul { list-style: none; margin: 0; padding: 0; }
.estado-convocatorias li { margin: 0; }
.estado-convocatorias h2 { margin: 0 0 0.75rem; display: flex; align-items: center; gap: 0.5rem; font-size: 1.6rem; }
.estado-convocatorias__item { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 0.4rem 1rem; padding: 0.8rem 0; color: var(--texto); text-decoration: none; }
.estado-convocatorias__item:hover { color: var(--qsp); }
.estado-convocatorias__item .etiqueta { white-space: normal; }
@media (max-width: 40rem) { .estado-convocatorias__item { grid-template-columns: 1fr; justify-items: start; } }
.estado-convocatorias__titulo { font-weight: 700; margin: 0; }
.estado-convocatorias__ver { margin: 0; gap: 0.35rem; align-items: center; color: var(--qsp); }
a.tarjeta { display: block; color: var(--texto); text-decoration: none; transition: border-color var(--mov); }
a.tarjeta:hover { border-color: rgb(232 195 106 / 0.55); color: var(--texto); }
a.tarjeta h2 { margin-top: 0; font-size: 1.8rem; }
a.tarjeta p { color: var(--texto-2); }
.cabecera-editorial .encabezado, .cabecera-editorial .cabecera-pagina { padding: 0; margin: 0; }
.cabecera-editorial { padding-bottom: 1.5rem; }
:is(.tarjeta-dato, .tarjeta, .proceso, .entrada-atlas, .puerta-cuerpo, .tarjeta-via, .ejemplo-sueldo) > :is(h2, h3, h4):first-child { margin-top: 0; }
.seccion-ficha :is(.tarjetas, .escalera, .pasos, .ascensos, .datos, .rejilla-3, .rejilla-2), .articulo .bloque > :is(.tarjetas, .pasos, .rejilla-3) { max-width: none; }
@media (min-width: 40rem) { .datos:not(:has(> div)) { grid-template-columns: 14rem minmax(0, 1fr); column-gap: 1.5rem; } }
.datos > dt, .datos > dd { padding: 0.75rem 0; border-bottom: 1px solid var(--borde); margin: 0; }
.indice a { gap: 0.45rem; }
.indice--ficha a > span { font-family: var(--f-marca); color: var(--tema-acento); }
.indice--ficha ul, .indice--ficha ol { -webkit-mask-image: linear-gradient(90deg, #000 92%, transparent); mask-image: linear-gradient(90deg, #000 92%, transparent); padding-right: 2rem; }
.indice--ficha + .seccion-ficha { border-top: 0; padding-top: 1rem; }
.vacio-comparar { background: none; border: 0; box-shadow: none; padding: 0; text-align: left; }
.vacio-comparar__aviso { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 0.75rem; padding: 1.5rem; border: 1px dashed var(--borde-fuerte); border-radius: var(--radio); text-align: center; }
.vacio-comparar__aviso p { flex-basis: 100%; margin: 0; }
details.filtros { display: block; margin: 1rem 0; }
details.filtros > summary { display: inline-flex; gap: 0.5rem; padding: 0.3rem 1rem; border: 1px solid var(--borde-fuerte); border-radius: 999px; list-style: none; }
details.filtros > summary::-webkit-details-marker { display: none; }
details.filtros > summary::after { content: "▾"; color: var(--qsp); }
details.filtros[open] > summary { margin-bottom: 1rem; }
.proceso { position: relative; }
.proceso h3 a::after { content: ""; position: absolute; inset: 0; }
.proceso h3 a:hover { color: var(--qsp); }
.proceso .boton-favorito, .proceso a:not(h3 a) { position: relative; z-index: 1; }
.proceso__resumen { max-width: var(--lectura); }
.puertas-cuerpo > ul { list-style: none; padding: 0; display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); }
.puertas-cuerpo > ul > li { margin: 0; }
.acceso-cuerpo .escudo { align-self: flex-start; height: clamp(3.5rem, 3rem + 1vw, 4rem); }
.puerta__flecha { width: 1.1rem; height: 1.1rem; }
.seccion-ficha__num { flex: none; display: grid; place-items: center; width: 2.4rem; height: 2.4rem; border-radius: 10px; background: color-mix(in srgb, var(--tema-acento) 12%, transparent); font-size: 0.95rem; align-self: center; }
.nota-situacion { font-weight: 400; }
.nota-situacion .etiqueta { display: flex; width: fit-content; margin-bottom: 0.4rem; }
fieldset .opciones:not(.opciones--rejilla) { grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr)); }
.estado-proceso .boton-favorito, .estado-proceso > p:last-child { grid-column: 1 / -1; }
@media (max-width: 63.99rem) {
  .hero-cuerpo__lateral { flex-direction: row; flex-wrap: wrap; align-items: center; }
  .hero-cuerpo__lateral .emblema--hero { width: 5rem; }
  .hero-cuerpo__lateral > :not(.hero-cuerpo__emblema) { flex: 1 1 100%; }
  .datos-clave { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.75rem; padding: 0.75rem; }
  .datos-clave li, .datos-clave > div { border-bottom: 0; padding: 0; }
  .datos-clave strong, .datos-clave dd { font-size: 1.25rem; }
  .cabecera-editorial { display: flex; flex-direction: column; }
  .cabecera-editorial > .emblema--banda { order: 2; }
}
.lista-territorios { columns: 3 14rem; list-style: none; padding: 0; }
.parrafo-rotulado { padding-left: 1rem; border-left: 2px solid color-mix(in srgb, var(--tema-acento) 45%, transparent); }
.parrafo-rotulado strong { color: var(--tema-acento); }
.lista-territorios li { margin: 0 0 0.4rem; break-inside: avoid; }
details.cmp-cambiar-det > summary { display: inline-flex; width: fit-content; gap: 0.5rem; }
details.cmp-cambiar-det > summary::after { content: "▾"; color: var(--qsp); }
details.cmp-cambiar-det[open] > summary::after { content: "▴"; }
@media (min-width: 80rem) {
  .cmp-tabla .tabla-desplazable { overflow: visible; }
  .tabla--comparar thead th { position: sticky; top: 4.25rem; z-index: 2; }
  .tabla--comparar thead th:first-child { background: var(--tarjeta); }
}
.tabla--comparar { table-layout: fixed; }
.tabla--comparar th:first-child { width: 9rem; }
.tabla td ul { margin: 0; padding-left: 1.1rem; }
.migas { margin-bottom: 1rem; }
.fuentes-hero { margin: 0.5rem 0 1rem; }
.fuentes-hero .fuentes-bloque { max-width: none; }
.tarjeta-via__cifra { font-family: var(--f-sans); font-size: 0.95rem; color: var(--texto-2); line-height: 1.4; }
.tarjeta-via__cifra strong { display: block; font-family: var(--f-marca); font-size: 2.2rem; line-height: 1; color: var(--tema-acento); }
.datos:not(:has(> div)) { column-gap: 0; }
.datos > dt { padding-right: 1.5rem; }
@media (max-width: 39.99rem) { .datos > dt { border-bottom: 0; padding-bottom: 0; } }
.estado-convocatorias__item .etiqueta { justify-self: start; }
.puerta-cuerpo .fuentes-bloque { font-size: 0.82rem; margin-top: 0.75rem; }
.comparador { margin-top: 0; }
.pie__nav ul { margin-inline: auto; }
.pie__nav li:first-child a { padding-left: 0; }
.proceso h3 a::before { content: "→ "; color: var(--qsp); }
@media (min-width: 48rem) { .vacio-comparar .tarjetas--2 { grid-template-columns: repeat(2, 1fr); } }
.vacio-comparar__aviso .emblema--col { width: 3.5rem; height: 3.5rem; }
.rejilla-2 + p { margin-top: 1.5rem; }
@media (min-width: 40.01rem) { .estado-convocatorias__item { grid-template-columns: auto minmax(0, 1fr) auto auto; } }
/* Ronda 3 del ui-critic */
.tabla--comparar thead th { white-space: normal; }
@media (min-width: 80rem) { .cmp-tabla .pista-tabla { display: none; } }
.estado-convocatorias ul { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; column-gap: 1rem; }
.estado-convocatorias li { display: contents; }
.estado-convocatorias__item { grid-column: 1 / -1; grid-template-columns: subgrid; }
@media (max-width: 40rem) { .estado-convocatorias ul { grid-template-columns: 1fr; } .estado-convocatorias__item { grid-template-columns: 1fr; } }
.tabla .fuentes-celda { display: block; margin-top: 0.3rem; }
.tabla .fecha { white-space: nowrap; font-variant-numeric: tabular-nums; }
.tabla .fecha .meta { display: block; white-space: normal; max-width: 9rem; }
.estado-proceso .boton { border-radius: var(--radio); text-align: left; justify-content: flex-start; max-width: 100%; }
@media (max-width: 40rem) { .estado-proceso .boton { width: 100%; } }
.entrada-atlas .etiqueta { margin-right: 0.5rem; }
.migas li + li::before { content: "›"; }
fieldset > legend { padding: 0; }
.guia-piloto > .indice-pasos { margin-top: 0; }
.guia-piloto .seccion-guia:first-of-type { padding-top: 1rem; }
@media (max-width: 63.99rem) { .cabecera-editorial > .emblema--banda { display: none; } }
.tabla--mapa td:nth-child(2) { min-width: 11rem; }
.tabla--mapa td:nth-child(4) { max-width: 28rem; }
/* Fotos de cabecera (imágenes ilustrativas generadas para QSP) */
.cabecera-editorial--foto { overflow: visible; }
.cabecera-editorial__foto { position: absolute; inset: 0 calc(50% - 50vw); z-index: -1; }
.cabecera-editorial__foto img { width: 100%; height: 100%; object-fit: cover; object-position: right center; filter: grayscale(0.55) contrast(1.15) brightness(0.6); }
.cabecera-editorial__foto::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, color-mix(in srgb, var(--tema-base) 97%, transparent), color-mix(in srgb, var(--tema-base) 82%, transparent) 45%, color-mix(in srgb, var(--tema-hondo) 20%, transparent) 90%), linear-gradient(0deg, var(--fondo), transparent 35%); }
.cabecera-editorial--foto { padding-bottom: 3rem; }
@media (max-width: 47.99rem) { .cabecera-editorial__foto::after, .hero-cuerpo__foto::after { background: linear-gradient(0deg, var(--fondo), color-mix(in srgb, var(--tema-base) 88%, transparent) 55%, color-mix(in srgb, var(--tema-base) 70%, transparent)); } }
.hero-cuerpo { min-height: min(78svh, 46rem); display: flex; align-items: center; }
.hero-cuerpo > .contenedor { width: 100%; }
.tarjeta-ciudad__foto { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; filter: grayscale(0.5) contrast(1.1) brightness(0.7); -webkit-mask-image: linear-gradient(180deg, #000 55%, transparent); mask-image: linear-gradient(180deg, #000 55%, transparent); margin-bottom: -2.5rem; }
.tarjeta-ciudad .tarjeta-ciudad__cabeza { position: relative; }

/* Fichas de cuerpo: tarjetas con foto (actividad y unidades). El texto lleva su propio velo; títulos alineados por fila. */
.galeria-titulo { margin-top: 2.25rem; font-family: var(--f-titulo); font-weight: 700; font-size: 1.75rem; line-height: 1.1; }
.galeria-fotos { list-style: none; padding: 0; margin: 1rem 0 0; display: grid; gap: 0.9rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); }
.galeria-fotos--actividad { grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); }
.galeria-fotos--unidad:has(> li:nth-child(3):last-child), .galeria-fotos--unidad:has(> li:nth-child(6):last-child), .galeria-fotos--unidad:has(> li:nth-child(9):last-child) { grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); }
@media (min-width: 64rem) { .galeria-fotos--unidad:has(> li:nth-child(7):last-child) > li:first-child { grid-column: span 2; } }
.foto-tarjeta { position: relative; display: flex; flex-direction: column; justify-content: flex-end; min-height: 17rem; overflow: hidden; border-radius: var(--radio); border: 1px solid var(--borde); background: var(--tema-hondo, #0b1120); isolation: isolate; }
.galeria-fotos--actividad .foto-tarjeta { min-height: 21rem; }
.foto-tarjeta img { position: absolute; inset: 0; z-index: -1; width: 100%; height: 100%; object-fit: cover; filter: saturate(0.8) brightness(0.85); }
.foto-tarjeta__texto { min-height: 10.25rem; padding: 3rem 1.1rem 1.1rem; background: linear-gradient(0deg, rgb(6 9 16 / 0.95) 0, rgb(6 9 16 / 0.88) calc(100% - 3rem), transparent 100%); }
.galeria-fotos--actividad .foto-tarjeta__texto { min-height: 12.5rem; }
.foto-tarjeta h3, .foto-tarjeta h4 { margin: 0; font-family: var(--f-titulo); font-weight: 700; font-size: 1.3rem; line-height: 1.05; }
.foto-tarjeta p { margin: 0.45rem 0 0; font-size: 0.9rem; line-height: 1.45; color: var(--texto); }
.galeria-nota { margin-top: 0.6rem; }
@media (max-width: 30rem) { .galeria-fotos--actividad .foto-tarjeta { min-height: 16rem; } .foto-tarjeta { min-height: 12.5rem; } }

/* Fuentes al pie de cada página: una sola lista, plegada y discreta. */
.fuentes-pie { margin-top: 3rem; padding-top: 1rem; padding-bottom: 1rem; border-top: 1px solid var(--borde); font-size: 0.8125rem; color: var(--texto-2); }
.fuentes-pie summary { cursor: pointer; min-height: var(--tactil, 2.75rem); display: flex; align-items: center; gap: 0.5rem; width: fit-content; font-weight: 600; }
.fuentes-pie summary::after { content: "▾"; color: var(--qsp, #E8C36A); }
.fuentes-pie details[open] > summary::after { content: "▴"; }
.fuentes-pie ol { margin: 0.5rem 0 0; padding-left: 1.25rem; columns: 2 22rem; column-gap: 2rem; }
.fuentes-pie li { break-inside: avoid; padding: 0.15rem 0; }
.fuentes-pie a { color: var(--texto-2); }
