/*
 * Preparador Público · «Oscura y potente» (elegida por Paco el 27-09)
 *
 * Morado noche como escenario, el azul del logo como luz, y cuadros
 * translúcidos para los datos. Las zonas de leer largo —el cuerpo de la ficha,
 * las páginas, el pago y la cuenta— van en claro.
 *
 * Cada servicio tiene su color: azul para oposiciones, oro para la formación
 * baremable, menta para los cursos de preparación. Ver DESIGN.md.
 *
 * Kadence sigue debajo (WooCommerce, blog, 404) y trae estilos propios para
 * botones y títulos: por eso algunos selectores llevan más peso del normal.
 */

:root {
	--noche: #120d3d;
	--noche-hondo: #0b0829;
	--noche-alto: #1b1552;
	--morado: #312783;
	--azul: #009fe3;
	--azul-luz: #5ccbf7;
	--blanco: #ffffff;
	--lavanda: #cdc9f2;
	--lavanda-2: #a39dd9;
	--vidrio: rgba(255, 255, 255, 0.055);
	--vidrio-alto: rgba(255, 255, 255, 0.09);
	--vidrio-borde: rgba(255, 255, 255, 0.13);
	--papel: #f4f3fa;
	--tinta: #17123f;
	--tinta-2: #4c4775;
	--tinta-3: #6a6590;
	--linea: #dcd9ec;
	--oro: #ffb81c;
	--oro-tinta: #6b4500;
	--oro-suave: #fff4d9;
	--menta: #4fe0b0;
	--whatsapp: #1f7a4d;
	--error: #b3261e;

	--letra: "Archivo", system-ui, -apple-system, "Segoe UI", sans-serif;
	--ancho: 76rem;
	--lectura: 46rem;
	--margen: clamp(1rem, 4vw, 2.5rem);
	--bloque: clamp(3.75rem, 9vw, 7rem);
	--salida: cubic-bezier(0.16, 1, 0.3, 1);
	--radio: 14px;
}

*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 5.5rem; }
body {
	margin: 0; background: var(--noche); color: var(--blanco);
	font-family: var(--letra); font-size: 1.0625rem; line-height: 1.6;
	font-variant-numeric: tabular-nums; -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--azul-luz); text-underline-offset: 0.18em; }
a:hover { color: var(--blanco); }
:focus-visible { outline: 2px solid var(--azul-luz); outline-offset: 3px; border-radius: 4px; }
h1, h2, h3, h4 { margin: 0; color: inherit; font-family: var(--letra); font-weight: 800; font-stretch: 118%; letter-spacing: -0.025em; text-wrap: balance; }
p { margin: 0; }
.envoltorio { width: min(100% - 2 * var(--margen), var(--ancho)); margin-inline: auto; }
.envoltorio--lectura { max-width: var(--lectura); }
.oculto { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.oculto--foco:focus { position: fixed; left: 1rem; top: 1rem; z-index: 100; width: auto; height: auto; clip: auto; padding: 0.75rem 1rem; background: var(--blanco); color: var(--tinta); border-radius: 8px; }

/* Zonas claras */
.claro { background: var(--blanco); color: var(--tinta); }
.claro--papel { background: var(--papel); }
.claro a { color: var(--morado); }
.claro a:hover { color: var(--noche); }

/* ---------- Botones ---------- */
.boton, a.boton, button.boton {
	display: inline-flex; align-items: center; justify-content: center; gap: 0.55rem;
	min-height: 3.25rem; padding: 0.8rem 1.5rem; border: 0; border-radius: 10px; cursor: pointer;
	background: var(--azul); color: var(--noche-hondo); text-decoration: none; text-align: center;
	font: 700 0.95rem/1.15 var(--letra); font-stretch: 112%; letter-spacing: 0.04em; text-transform: uppercase;
	transition: transform 0.25s var(--salida), box-shadow 0.25s var(--salida), background-color 0.2s;
}
.boton:hover, a.boton:hover, button.boton:hover { color: var(--noche-hondo); background: var(--azul-luz); transform: translateY(-1px); }
.boton--linea, a.boton--linea, button.boton--linea { background: transparent; color: var(--blanco); box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, 0.5); }
.boton--linea:hover, a.boton--linea:hover, button.boton--linea:hover { background: var(--vidrio-alto); color: var(--blanco); box-shadow: inset 0 0 0 1.5px var(--blanco); }
.claro .boton, .claro a.boton, .claro button.boton { background: var(--morado); color: var(--blanco); box-shadow: 0 10px 24px -14px rgba(49, 39, 131, 0.8); }
.claro .boton:hover, .claro a.boton:hover, .claro button.boton:hover { background: var(--noche); color: var(--blanco); }
.claro .boton--linea, .claro a.boton--linea, .claro button.boton--linea { background: transparent; color: var(--morado); box-shadow: inset 0 0 0 1.5px var(--morado); }
.claro .boton--linea:hover, .claro a.boton--linea:hover, .claro button.boton--linea:hover { background: var(--papel); color: var(--noche); }
.boton--ancho { width: 100%; }
.flecha { font-weight: 700; text-decoration: none; white-space: nowrap; }
.flecha::after { content: "→"; display: inline-block; margin-left: 0.35em; transition: transform 0.25s var(--salida); }
.flecha:hover::after { transform: translateX(0.25em); }

/* ---------- Cuadros translúcidos ---------- */
.cuadro {
	background: var(--vidrio); border: 1px solid var(--vidrio-borde); border-radius: var(--radio);
	/* Sin backdrop-filter (12-10): con 33 recuadros esmerilados en la portada el scroll iba a
	   30 ms por fotograma en el PC de Fran, y debajo casi siempre hay un fondo liso. */
}

/* ---------- Cabecera ---------- */
.cabecera { position: sticky; top: 0; z-index: 20; background: rgba(11, 8, 41, 0.96); border-bottom: 1px solid var(--vidrio-borde); }
.admin-bar .cabecera { top: 32px; }
@media (max-width: 782px) { .admin-bar .cabecera { top: 0; } }
.cabecera__fila { display: flex; align-items: center; gap: 2rem; min-height: 4.5rem; }
.cabecera__logo { flex: none; }
.cabecera__logo img { width: 12.5rem; }
.menu { display: flex; align-items: center; gap: 1.4rem; margin-left: auto; white-space: nowrap; }
.menu ul { list-style: none; display: flex; align-items: center; gap: 1.35rem; margin: 0; padding: 0; }
.menu a, .menu__abrir { color: var(--lavanda); text-decoration: none; font: 500 0.97rem/1.2 var(--letra); background: none; border: 0; padding: 0.4rem 0; cursor: pointer; }
.menu a:hover, .menu__abrir:hover, .menu__abrir[aria-expanded="true"], .menu a[aria-current] { color: var(--blanco); }
.menu__abrir::after { content: ""; display: inline-block; width: 0.4em; height: 0.4em; margin-left: 0.45em; border: solid currentColor; border-width: 0 1.5px 1.5px 0; transform: translateY(-0.2em) rotate(45deg); }
.menu__abrir:hover, .menu__abrir:focus { background: none; color: var(--blanco); }
.menu__desplegable { position: relative; }
.menu__panel { position: absolute; top: calc(100% + 1rem); left: -1.2rem; min-width: 17rem; padding: 0.5rem 0; background: var(--noche-alto); border: 1px solid var(--vidrio-borde); border-radius: 12px; box-shadow: 0 24px 48px -20px rgba(0, 0, 0, 0.7); }
.menu .menu__panel { display: block; }
.menu__panel a { display: flex; justify-content: space-between; gap: 1rem; padding: 0.55rem 1.2rem; }
.menu__panel a:hover { background: var(--vidrio-alto); }
.menu__panel span { color: var(--lavanda-2); font-size: 0.88rem; }
.menu__todas { border-top: 1px solid var(--vidrio-borde); margin-top: 0.35rem; padding-top: 0.35rem; }
.menu__todas a { color: var(--azul-luz); font-weight: 600; }
.menu__acciones { display: flex; align-items: center; gap: 1.1rem; padding-left: 1.4rem; border-left: 1px solid var(--vidrio-borde); }
.menu__acciones .boton { background: var(--azul); min-height: 2.6rem; padding: 0.55rem 1rem; font-size: 0.82rem; color: var(--noche-hondo); }
.menu__acciones .boton:hover { color: var(--noche-hondo); }
.cabecera__movil { display: none; }
@media (min-width: 75rem) and (max-width: 83.99rem) { .cabecera__fila { gap: 1rem; } .menu, .menu ul { gap: 0.8rem; } .menu__acciones { gap: 0.75rem; padding-left: 0.8rem; } .cabecera__logo img { width: 10.5rem; } }
@media (min-width: 75rem) { .menu__solo-movil { display: none; } }
@media (max-width: 74.99rem) {
	.menu { display: none; }
	.cabecera__movil { display: flex; align-items: center; gap: 0.75rem; margin-left: auto; }
	.cabecera__logo img { width: 11rem; }
	.cabecera__movil .boton { min-height: 2.6rem; padding: 0.5rem 0.9rem; font-size: 0.8rem; }
	.boton-menu { display: inline-flex; align-items: center; gap: 0.45rem; min-height: 2.6rem; padding: 0.5rem 0.2rem 0.5rem 0.6rem; background: none; border: 0; color: var(--blanco); font: 600 0.95rem var(--letra); cursor: pointer; }
	.boton-menu:hover, .boton-menu:focus { background: none; color: var(--blanco); }
	.boton-menu i { display: grid; gap: 4px; }
	.boton-menu i::before, .boton-menu i::after { content: ""; display: block; width: 18px; height: 1.5px; background: currentColor; }
	.cabecera.abierta .menu { display: block; position: absolute; inset: 100% 0 auto 0; height: calc(100dvh - 4.5rem); overflow: auto; background: var(--noche-hondo); padding: 0.5rem var(--margen) 2rem; }
	.cabecera.abierta .menu ul { display: block; }
	.cabecera.abierta .menu li { border-bottom: 1px solid var(--vidrio-borde); }
	.cabecera.abierta .menu a, .cabecera.abierta .menu__abrir { display: flex; width: 100%; justify-content: space-between; padding: 1rem 0; font-size: 1.1rem; color: var(--blanco); }
	.cabecera.abierta .menu__panel { position: static; box-shadow: none; border: 0; background: none; padding: 0 0 0.75rem; }
	.cabecera.abierta .menu__panel li { border: 0; }
	.cabecera.abierta .menu__panel a { padding: 0.6rem 0 0.6rem 1rem; font-size: 1rem; color: var(--lavanda); }
	.cabecera.abierta .menu__acciones { display: grid; gap: 0.75rem; border: 0; padding: 1.5rem 0 0; }
	.cabecera.abierta .menu__acciones a:not(.boton) { padding: 0.35rem 0; font-size: 1.05rem; }
	.cabecera.abierta .menu__acciones .boton { min-height: 3.1rem; font-size: 0.92rem; justify-content: center; }
}
@media (max-width: 26rem) { .cabecera__logo img { width: 9.4rem; } .cabecera__movil .boton { display: none; } }

/* ---------- Apertura ---------- */
.apertura { position: relative; overflow: hidden; isolation: isolate; padding: clamp(3rem, 8vw, 6.5rem) 0 clamp(3rem, 7vw, 5.5rem); }
.apertura::before {
	content: ""; position: absolute; inset: 0; z-index: -1;
	background:
		radial-gradient(60% 70% at 78% 30%, rgba(0, 159, 227, 0.32), transparent 70%),
		radial-gradient(45% 55% at 10% 60%, rgba(49, 39, 131, 0.85), transparent 70%),
		linear-gradient(180deg, var(--noche-hondo), var(--noche) 85%);
}
/* El fondo son las convocatorias de verdad: organismo y plazas, desfilando despacio. */
.fondo-conv { position: absolute; inset: 0; z-index: -1; display: grid; align-content: center; gap: 0.2rem; pointer-events: none; transform: rotate(-4deg) scale(1.05); -webkit-mask-image: radial-gradient(48% 85% at 74% 50%, #000 30%, transparent 85%); mask-image: radial-gradient(48% 85% at 74% 50%, #000 30%, transparent 85%); }
.fondo-conv__fila { display: flex; width: max-content; gap: 3rem; padding-left: 1.5rem; white-space: nowrap; animation: desfile 90s linear infinite; font: 800 clamp(1.6rem, 3.2vw, 2.8rem)/1.25 var(--letra); font-stretch: 125%; letter-spacing: -0.02em; color: transparent; -webkit-text-stroke: 1px rgba(160, 200, 255, 0.2); }
.fondo-conv__fila:nth-child(2) { animation-duration: 120s; animation-direction: reverse; }
.fondo-conv__fila:nth-child(3) { animation-duration: 105s; }
.fondo-conv__fila:nth-child(4) { animation-duration: 135s; animation-direction: reverse; }
.fondo-conv__fila b { color: rgba(0, 159, 227, 0.38); -webkit-text-stroke: 0; }
@keyframes desfile { to { transform: translateX(-50%); } }
@media (min-width: 62rem) { .fondo-conv { -webkit-mask-image: radial-gradient(60% 75% at 60% 55%, #000 30%, transparent 85%); mask-image: radial-gradient(60% 75% at 60% 55%, #000 30%, transparent 85%); } }

.apertura__titulo { font-size: clamp(2rem, 5vw, 3.6rem); line-height: 1; font-stretch: 125%; }
.apertura__entrada { max-width: 42em; margin: 1rem 0 0; font-size: clamp(1.05rem, 1.5vw, 1.2rem); color: var(--lavanda); }
.apertura__entrada strong { color: var(--blanco); }

/* Los tres servicios: un cuadro redondeado por sección, cada uno con su color. */
.servicios { list-style: none; margin: clamp(1.75rem, 4vw, 2.75rem) 0 0; padding: 0; display: grid; gap: 0.85rem; }
.servicio {
	--acento: var(--azul-luz);
	position: relative; display: grid; align-content: start; gap: 0.5rem; height: 100%;
	padding: 1.5rem 1.5rem 1.4rem; border-radius: 24px; color: var(--blanco); text-decoration: none;
	border: 1.5px solid rgba(255, 255, 255, 0.85);
	background: radial-gradient(90% 70% at 100% 0%, color-mix(in srgb, var(--acento) 22%, transparent), transparent 70%), rgba(11, 8, 41, 0.92);
	transition: transform 0.35s var(--salida), border-color 0.25s, box-shadow 0.35s var(--salida);
}
.servicio:hover { color: var(--blanco); border-color: var(--blanco); transform: translateY(-4px); box-shadow: 0 24px 50px -28px color-mix(in srgb, var(--acento) 80%, transparent); }
.servicio--baremable { --acento: var(--oro); }
.servicio--cursos { --acento: var(--menta); }
.servicio__num { display: flex; align-items: center; gap: 0.5rem; font: 800 0.95rem/1 var(--letra); font-stretch: 120%; letter-spacing: 0.04em; color: var(--acento); }
.servicio__nombre { font: 800 clamp(1.3rem, 2.2vw, 1.6rem)/1.1 var(--letra); font-stretch: 115%; letter-spacing: -0.015em; padding-right: 2.5rem; }
.servicio__texto { color: var(--lavanda); font-size: 0.98rem; line-height: 1.5; }
.servicio__dato { margin-top: 0.5rem; padding-top: 0.85rem; border-top: 1px solid var(--vidrio-borde); font-size: 0.9rem; color: var(--lavanda-2); }
.servicio__dato b { font: 800 1.35rem/1 var(--letra); font-stretch: 120%; color: var(--acento); margin-right: 0.15rem; }
.servicio__ir { position: absolute; top: 1.25rem; right: 1.25rem; display: grid; place-items: center; width: 2.4rem; height: 2.4rem; border-radius: 50%; background: color-mix(in srgb, var(--acento) 18%, transparent); transition: background-color 0.25s; }
.servicio__ir::before { content: ""; width: 0.5rem; height: 0.5rem; border: solid var(--acento); border-width: 0 1.5px 1.5px 0; transform: translateY(-2px) rotate(45deg); }
.servicio:hover .servicio__ir { background: var(--acento); }
.servicio:hover .servicio__ir::before { border-color: var(--noche-hondo); }
@media (min-width: 56rem) { .servicios { grid-auto-columns: minmax(0, 1fr); grid-auto-flow: column; } }
@media (max-width: 55.99rem) {
	.servicio { padding: 1.1rem 1.2rem; border-radius: 18px; gap: 0.35rem; }
	.servicio__texto { font-size: 0.93rem; }
	.servicio__dato { margin-top: 0.2rem; padding-top: 0.55rem; }
	.servicio__ir { top: 1rem; right: 1rem; width: 2.1rem; height: 2.1rem; }
}

.apertura__que { margin-top: clamp(1.75rem, 4vw, 2.75rem); }
.apertura__acciones { display: flex; flex-wrap: wrap; gap: 0.85rem; margin: 0; }
@media (max-width: 55.99rem) { .apertura__acciones .boton { width: 100%; } }

/* ---------- Convenio con los sindicatos ---------- */
.convenio { padding: 0 0 clamp(1.5rem, 3vw, 2.25rem); }
.convenio__caja { display: grid; gap: 1rem; align-items: center; padding: 1.1rem 1.25rem; }
.convenio__logos, .acceso__logos { display: flex; align-items: center; gap: 0.5rem; }
.convenio__logos span { display: grid; place-items: center; height: 3.25rem; padding: 0 0.8rem; border-radius: 10px; background: var(--blanco); }
/* Igualados por superficie, no por altura: el de UGT es casi tres veces más alargado. */
.convenio__logos img, .acceso__logos img { width: auto; }
.convenio__logos .logo-ccoo { height: 2.25rem; }
.convenio__logos .logo-ugt { height: 1.4rem; }
.acceso__logos { gap: 0.9rem; margin-bottom: 0.55rem; }
.acceso__logos .logo-ccoo { height: 1.6rem; }
.acceso__logos .logo-ugt { height: 1rem; }

/* Quién certifica los baremables: logos en blanco sobre el panel oscuro,
   igualados a ojo (el del Centro Mediterráneo es solo letra y pesa más). */
.certifican { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem 1.1rem; margin-top: 0.4rem; }
.certifican img { width: auto; height: 2.2rem; }
.certifican .logo-centro-mediterraneo { height: 1.75rem; }
.convenio__texto { color: var(--lavanda); }
.convenio__texto strong { color: var(--blanco); }
@media (min-width: 56rem) { .convenio__caja { grid-template-columns: auto minmax(0, 1fr) auto; gap: 1.5rem; } }

/* ---------- Bloques ---------- */
.bloque { padding: var(--bloque) 0; position: relative; }
.bloque h2 { font-size: clamp(1.9rem, 4.2vw, 3.1rem); line-height: 1.02; }
.bloque__cabecera { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 1rem 2rem; margin-bottom: 2.25rem; }
.bloque__entrada { margin-top: 0.9rem; max-width: 38em; color: var(--lavanda); }
.claro .bloque__entrada { color: var(--tinta-2); }

/* ---------- Paneles de sección ---------- */
.bloque--panel { padding: clamp(1rem, 2.5vw, 1.75rem) 0; }
.panel {
	--acento: var(--azul-luz);
	padding: clamp(1.25rem, 4vw, 3rem); border-radius: 28px;
	border: 1.5px solid rgba(255, 255, 255, 0.75);
	background: radial-gradient(55% 45% at 100% 0%, color-mix(in srgb, var(--acento) 13%, transparent), transparent 70%), rgba(255, 255, 255, 0.025);
}
.panel--baremable { --acento: var(--oro); }
.panel--cursos { --acento: var(--menta); }
.panel__etiqueta { display: inline-block; margin-bottom: 1rem; padding: 0.3rem 0.8rem; border-radius: 999px; background: color-mix(in srgb, var(--acento) 16%, transparent); color: var(--acento); font: 800 0.76rem/1.4 var(--letra); font-stretch: 112%; letter-spacing: 0.06em; text-transform: uppercase; }
@media (max-width: 47.99rem) { .panel { border-radius: 20px; } .envoltorio.panel { width: min(100% - 1.25rem, var(--ancho)); } }

/* ---------- Buscador y lista de convocatorias ---------- */
.catalogo-portada { padding-top: 0; }
.buscador { display: grid; gap: 0.9rem; padding: 1rem; margin-bottom: 1.75rem; }
.campo { display: grid; gap: 0.3rem; }
.campo span { font-size: 0.8rem; font-weight: 600; color: var(--lavanda-2); letter-spacing: 0.02em; }
.campo select {
	appearance: none; width: 100%; min-height: 3.25rem; padding: 0.6rem 2.6rem 0.6rem 0.95rem; cursor: pointer;
	font: 600 1.02rem var(--letra); color: var(--blanco); background-color: var(--noche-hondo);
	border: 1px solid var(--vidrio-borde); border-radius: 10px;
	background-image: linear-gradient(45deg, transparent 50%, var(--lavanda) 50%), linear-gradient(135deg, var(--lavanda) 50%, transparent 50%);
	background-position: calc(100% - 1.25rem) 55%, calc(100% - 0.95rem) 55%; background-size: 0.32rem 0.32rem; background-repeat: no-repeat;
}
.campo select:hover { border-color: rgba(255, 255, 255, 0.35); }
.campo select option { color: var(--tinta); background: var(--blanco); }
@media (min-width: 48rem) { .buscador { grid-template-columns: 1fr 1fr auto; align-items: end; padding: 1.1rem; } }

.lista-conv { display: grid; gap: 0.6rem; container-type: inline-size; }
.conv-fila {
	display: grid; grid-template-columns: minmax(0, 1fr) 6rem 9rem 8.5rem 2.2rem; gap: 0.25rem 1.25rem; align-items: center;
	padding: 1.05rem 1.25rem; color: var(--blanco); text-decoration: none;
	transition: background-color 0.25s, border-color 0.25s;
}
.conv-fila:hover { background: var(--vidrio-alto); border-color: rgba(92, 203, 247, 0.45); color: var(--blanco); }
.conv-fila--baremable:hover { border-color: rgba(255, 184, 28, 0.6); }
.conv-fila--plataforma:hover { border-color: color-mix(in srgb, var(--menta) 60%, transparent); }
.conv-fila__que { min-width: 0; }
.conv-fila__org { display: block; font-size: 0.88rem; color: var(--lavanda-2); }
.conv-fila__puesto { display: block; margin-top: 0.1rem; font: 700 1.2rem/1.2 var(--letra); font-stretch: 110%; }
.conv-fila__fecha { display: block; margin-top: 0.15rem; font-size: 0.8rem; color: var(--lavanda-2); }
.conv-fila__estado { display: block; margin-top: 0.3rem; font-size: 0.86rem; color: var(--azul-luz); }

/* Etiqueta de estado de una convocatoria («En trámite»…), junto a quién convoca.
   Neutra salvo «Plazo abierto», que es la que pide actuar. */
.conv-fila__org:has(.etiqueta), .ficha-cabeza__org:has(.etiqueta) { display: flex; flex-wrap: wrap; align-items: center; gap: 0.3rem 0.55rem; }
.etiqueta {
	display: inline-block; padding: 0.1rem 0.55rem;
	border: 1px solid var(--vidrio-borde); border-radius: 99px; background: var(--vidrio-alto);
	font-size: 0.72rem; font-weight: 700; line-height: 1.45; letter-spacing: 0.02em; color: var(--lavanda);
	white-space: nowrap;
}
.etiqueta--plazo, .etiqueta--operativa { border-color: color-mix(in srgb, var(--menta) 45%, transparent); background: color-mix(in srgb, var(--menta) 14%, transparent); color: var(--menta); }
.claro .etiqueta { border-color: var(--linea); background: var(--papel); color: var(--tinta-2); }
.claro .etiqueta--plazo, .claro .etiqueta--operativa { border-color: #9fdcc4; background: #e6f6ef; color: #0f6a4a; }
.cursos__nombre .etiqueta { margin-left: 0.55rem; vertical-align: 0.15em; }
.conv-fila__plazas, .conv-fila__preg, .conv-fila__precio { text-align: right; font-size: 0.95rem; color: var(--lavanda); }
.conv-fila__plazas b { font: 800 1.5rem/1 var(--letra); font-stretch: 120%; color: var(--azul-luz); }
.conv-fila__plazas small, .conv-fila__precio small { display: block; font-size: 0.76rem; color: var(--lavanda-2); }
.conv-fila__plazas .sin { display: block; font-size: 0.8rem; line-height: 1.25; color: var(--lavanda-2); }
.conv-fila__precio b { color: var(--blanco); font-size: 1.05rem; }
.conv-fila--baremable .conv-fila__precio b { color: var(--oro); }
.conv-fila--plataforma .conv-fila__precio b { color: var(--menta); }
.conv-fila__ir { justify-self: end; display: grid; place-items: center; width: 2.2rem; height: 2.2rem; border-radius: 50%; background: var(--vidrio-alto); transition: background-color 0.25s; }
.conv-fila__ir::before { content: ""; width: 0.5rem; height: 0.5rem; border: solid var(--blanco); border-width: 1.5px 1.5px 0 0; transform: translateX(-1px) rotate(45deg); }
.conv-fila:hover .conv-fila__ir { background: var(--azul); }
.conv-fila:hover .conv-fila__ir::before { border-color: var(--noche-hondo); }
.conv-fila--baremable:hover .conv-fila__ir { background: var(--oro); }
.conv-fila--plataforma:hover .conv-fila__ir { background: var(--menta); }
.conv-fila__datos { display: none; }
/* La fila se adapta al hueco que tiene, no a la pantalla: en una página de
   lectura estrecha sobra la columna de preguntas, y por debajo, todo a una línea. */
@container (max-width: 52rem) {
	.conv-fila { grid-template-columns: minmax(0, 1fr) 6rem 8.5rem 2.2rem; }
	.conv-fila__preg { display: none; }
	/* Sin plazas (baremables, cursos), su hueco lo ocupa el dato de al lado. */
	.conv-fila__plazas:empty { display: none; }
	.conv-fila:has(.conv-fila__plazas:empty) .conv-fila__preg { display: block; }
	.conv-fila:has(.conv-fila__plazas:empty) { grid-template-columns: minmax(0, 1fr) 9rem 8.5rem 2.2rem; }
}
@container (max-width: 36rem) {
	/* Con el mismo peso que las reglas :has() de arriba, o las filas sin plazas
	   se quedan con cuatro columnas en el móvil. */
	.conv-fila, .conv-fila:has(.conv-fila__plazas:empty) { grid-template-columns: minmax(0, 1fr) 2.2rem; padding: 1rem; }
	.conv-fila__plazas, .conv-fila__precio, .conv-fila:has(.conv-fila__plazas:empty) .conv-fila__preg { display: none; }
	.conv-fila__datos { display: flex; flex-wrap: wrap; gap: 0.15rem 0.9rem; grid-column: 1; margin-top: 0.4rem; font-size: 0.9rem; color: var(--lavanda); }
	.conv-fila__datos b { color: var(--blanco); }
	.conv-fila__datos .plz b { color: var(--azul-luz); }
	.conv-fila__ir { grid-column: 2; grid-row: 1 / span 2; }
}
@media (max-width: 47.99rem) {
	.conv-fila, .conv-fila:has(.conv-fila__plazas:empty) { grid-template-columns: minmax(0, 1fr) 2.2rem; padding: 1rem; }
	.conv-fila__plazas, .conv-fila__preg, .conv-fila__precio, .conv-fila:has(.conv-fila__plazas:empty) .conv-fila__preg { display: none; }
	.conv-fila__datos { display: flex; flex-wrap: wrap; gap: 0.15rem 0.9rem; grid-column: 1; margin-top: 0.4rem; font-size: 0.9rem; color: var(--lavanda); }
	.conv-fila__datos b { color: var(--blanco); }
	.conv-fila__datos .plz b { color: var(--azul-luz); }
	.conv-fila__ir { grid-column: 2; grid-row: 1 / span 2; }
}
.lista-conv__vacia { padding: 1.75rem 1.25rem; }
.lista-conv__vacia p + p { margin-top: 0.4rem; color: var(--lavanda); }
.lista-conv__pie { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 1.5rem; }
.lista-conv__cuenta { color: var(--lavanda); font-size: 0.95rem; }
.no-esta { margin-top: 1.75rem; color: var(--lavanda); }
.no-esta strong { color: var(--blanco); }

/* Novedades de la portada: las últimas publicadas, como noticia. */
.novedades { padding: 0 0 clamp(1rem, 2.5vw, 1.5rem); }
.novedades__caja { padding: clamp(1rem, 3vw, 1.5rem); border-color: color-mix(in srgb, var(--azul-luz) 45%, transparent); }
.novedades__cabeza { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.9rem; margin-bottom: 1rem; }
.novedades__cabeza h2 { font-size: clamp(1.1rem, 2.2vw, 1.35rem); line-height: 1.2; }
.novedades__cabeza .flecha { margin-left: auto; color: var(--azul-luz); }
.novedades__chapa { padding: 0.25rem 0.7rem; border-radius: 999px; background: var(--azul-luz); color: var(--noche-hondo); font: 800 0.74rem/1.4 var(--letra); font-stretch: 112%; letter-spacing: 0.06em; text-transform: uppercase; }
@media (max-width: 47.99rem) { .novedades__cabeza .flecha { margin-left: 0; } }

/* Bloque 01 de la portada: un cuadrito por provincia con cuántas tiene. */
.provincias { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(8.5rem, 100%), 1fr)); gap: 0.5rem; }
@media (min-width: 48rem) { .provincias { grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); gap: 0.6rem; } }
.provincias a { display: grid; align-content: start; gap: 0.2rem; height: 100%; padding: clamp(0.75rem, 2vw, 0.95rem) clamp(0.85rem, 2vw, 1.1rem); color: var(--blanco); text-decoration: none; transition: background-color 0.2s, border-color 0.2s; }
.provincias a:hover { background: var(--vidrio-alto); border-color: color-mix(in srgb, var(--azul-luz) 60%, transparent); color: var(--blanco); }
.provincias__nombre { font: 700 1.05rem/1.25 var(--letra); font-stretch: 108%; }
.provincias__cuantas { font-size: 0.88rem; color: var(--lavanda); }
.provincias__cuantas b { color: var(--azul-luz); }

/* «Ver todas»: un cuadro por provincia, con sus convocatorias debajo. */
.provincia + .provincia { margin-top: clamp(1.75rem, 4vw, 2.5rem); }
.provincia__cabeza { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.35rem 0.9rem; margin-bottom: 0.9rem; padding-bottom: 0.7rem; border-bottom: 1px solid var(--vidrio-borde); }
.provincia__cabeza h2 { font-size: clamp(1.35rem, 2.8vw, 1.8rem); line-height: 1.1; }
.provincia__cuantas { color: var(--lavanda); font-size: 0.95rem; }
.provincia__cabeza .flecha { margin-left: auto; color: var(--azul-luz); font-size: 0.95rem; }
.provincia--puesto .provincia__cabeza h2, .provincia--puesto .provincia__cabeza .flecha { color: var(--menta); }
.provincia__nota { margin: -0.3rem 0 0.9rem; color: var(--lavanda); font-size: 0.95rem; }

/* La misma lista, dentro de una página clara (los atajos [pp_fichas]). */
.claro .conv-fila { background: var(--blanco); border-color: var(--linea); color: var(--tinta); -webkit-backdrop-filter: none; backdrop-filter: none; }
.claro .conv-fila:hover { background: var(--papel); border-color: var(--lavanda-2); color: var(--tinta); }
.claro .conv-fila__org, .claro .conv-fila__plazas small, .claro .conv-fila__precio small, .claro .conv-fila__plazas .sin { color: var(--tinta-3); }
.claro .conv-fila__plazas, .claro .conv-fila__preg, .claro .conv-fila__precio, .claro .conv-fila__datos { color: var(--tinta-2); }
.claro .conv-fila__plazas b, .claro .conv-fila__estado, .claro .conv-fila__datos .plz b { color: var(--morado); }
.claro .conv-fila__precio b, .claro .conv-fila__datos b { color: var(--tinta); }
.claro .conv-fila--baremable .conv-fila__precio b { color: var(--oro-tinta); }
.claro .conv-fila__ir { background: var(--papel); }
.claro .conv-fila__ir::before { border-color: var(--morado); }
.claro .conv-fila:hover .conv-fila__ir { background: var(--morado); }
.claro .conv-fila:hover .conv-fila__ir::before { border-color: var(--blanco); }

.plataformas { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.75rem; }
.plataformas a { display: grid; gap: 0.35rem; height: 100%; padding: 1.2rem 1.25rem; color: var(--blanco); text-decoration: none; transition: background-color 0.25s, border-color 0.25s; }
.plataformas a:hover { background: var(--vidrio-alto); border-color: color-mix(in srgb, var(--menta) 60%, transparent); color: var(--blanco); }
.panel--cursos .flecha, .panel--cursos .bloque__entrada a { color: var(--menta); }
.plataformas__nombre { font: 700 1.08rem/1.25 var(--letra); font-stretch: 108%; }
.plataformas__preg { font-size: 0.88rem; color: var(--lavanda-2); }
.plataformas__precio { margin-top: 0.4rem; font-size: 0.92rem; color: var(--lavanda); }
.plataformas__precio b { color: var(--menta); }
@media (min-width: 48rem) { .plataformas { grid-template-columns: repeat(3, 1fr); } }

/* ---------- Baremables (cuadro oro) ---------- */
.baremo__rejilla { display: grid; gap: 2.75rem; }
.baremo__hechos { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin: 1.75rem 0 2rem; }
.baremo__hechos div { padding: 0.95rem 1.1rem; background: rgba(255, 184, 28, 0.09); border: 1px solid rgba(255, 184, 28, 0.22); border-radius: 12px; }
.baremo__hechos dt { font-size: 0.82rem; color: var(--oro); font-weight: 600; }
.baremo__hechos dd { margin: 0.15rem 0 0; font: 700 1.08rem/1.25 var(--letra); font-stretch: 108%; }
.baremo .boton, .baremo a.boton { background: var(--oro); color: var(--noche-hondo); }
.baremo .boton:hover, .baremo a.boton:hover { background: #ffcb57; color: var(--noche-hondo); }
.cursos { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.6rem; }
.cursos a { display: grid; grid-template-columns: minmax(0, 1fr) 2.2rem; gap: 0.15rem 1rem; align-items: center; padding: 1rem 1.15rem; border: 1px solid var(--vidrio-borde); border-radius: 12px; background: var(--vidrio); color: var(--blanco); text-decoration: none; transition: border-color 0.25s, background-color 0.25s; }
.cursos a:hover { border-color: rgba(255, 184, 28, 0.6); background: rgba(255, 184, 28, 0.08); color: var(--blanco); }
.cursos__nombre { font: 700 1.05rem/1.25 var(--letra); font-stretch: 106%; }
.cursos__tipo { grid-column: 1; font-size: 0.86rem; color: var(--lavanda-2); }
.cursos__ir { grid-column: 2; grid-row: 1 / span 2; display: grid; place-items: center; width: 2.2rem; height: 2.2rem; border-radius: 50%; background: var(--vidrio-alto); }
.cursos__ir::before { content: ""; width: 0.5rem; height: 0.5rem; border: solid var(--blanco); border-width: 1.5px 1.5px 0 0; transform: translateX(-1px) rotate(45deg); }
.cursos a:hover .cursos__ir { background: var(--oro); }
.cursos a:hover .cursos__ir::before { border-color: var(--noche-hondo); }
@media (min-width: 60rem) { .baremo__rejilla { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 4rem; } }

/* ---------- Razones (noche) ---------- */
.razones { background: radial-gradient(70% 90% at 90% 10%, rgba(0, 159, 227, 0.18), transparent 60%), var(--noche-hondo); }
.razones__rejilla { display: grid; gap: 2rem; }
.razones__lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.85rem; }
.razones__lista li { display: grid; align-content: start; gap: 0.3rem; padding: 1.35rem 1.35rem 1.4rem; }
.razones__lista b { font: 800 clamp(1.7rem, 3vw, 2.2rem)/1 var(--letra); font-stretch: 122%; color: var(--azul-luz); margin-bottom: 0.6rem; }
.razones__lista strong { font: 700 1.1rem/1.25 var(--letra); font-stretch: 108%; }
.razones__lista span { color: var(--lavanda); font-size: 0.97rem; }
@media (min-width: 48rem) { .razones__lista { grid-template-columns: repeat(3, 1fr); } }

/* ---------- El aula (claro) ---------- */
.aula__rejilla { display: grid; gap: 3rem; }
.fases { list-style: none; counter-reset: fase; margin: 2rem 0 2.25rem; padding: 0; display: grid; gap: 0.75rem; }
.fases li { counter-increment: fase; display: grid; grid-template-columns: 3rem minmax(0, 1fr); gap: 0 1rem; align-items: start; margin: 0; padding: 1.1rem 1.2rem; background: var(--blanco); border: 1px solid var(--linea); border-radius: 12px; }
.fases li::before { content: counter(fase); display: grid; place-items: center; width: 3rem; height: 3rem; border-radius: 10px; background: var(--noche); color: var(--azul-luz); font: 800 1.35rem var(--letra); font-stretch: 120%; }
.fases strong { display: block; font: 700 1.08rem/1.3 var(--letra); font-stretch: 108%; }
.fases span { color: var(--tinta-2); }
.aula__acciones { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.75rem; }
.progreso { margin: 0; padding: 0.4rem 0 0.8rem; background: var(--noche); color: var(--blanco); border-radius: 18px; box-shadow: 0 30px 60px -30px rgba(18, 13, 61, 0.7); }
.progreso__cabeza { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.35rem; border-bottom: 1px solid var(--vidrio-borde); }
.progreso__cabeza b { font: 700 1.05rem var(--letra); font-stretch: 110%; }
.chapa-ejemplo { font-size: 0.72rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--lavanda); border: 1px solid var(--vidrio-borde); padding: 0.1rem 0.5rem; border-radius: 5px; }
.progreso ol { list-style: none; margin: 0; padding: 0.3rem 1.35rem 0; }
.progreso li { display: grid; grid-template-columns: 1.4rem minmax(0, 1fr) auto; gap: 0.75rem; align-items: center; margin: 0; padding: 0.72rem 0; border-bottom: 1px solid var(--vidrio-borde); font-size: 0.95rem; color: var(--lavanda); }
.progreso li:last-child { border-bottom: 0; }
.progreso li b { color: var(--blanco); font-weight: 800; }
.progreso li i { width: 1.15rem; height: 1.15rem; border-radius: 50%; border: 1.5px solid var(--vidrio-borde); position: relative; }
.progreso .hecho i { background: var(--azul); border-color: var(--azul); }
.progreso .hecho i::after { content: ""; position: absolute; left: 0.34rem; top: 0.17rem; width: 0.26rem; height: 0.52rem; border: solid var(--noche-hondo); border-width: 0 2px 2px 0; transform: rotate(45deg); }
.progreso .en-curso i { border: 3px solid var(--azul-luz); }
.progreso .cerrado { color: var(--lavanda-2); }
.progreso__barra { grid-column: 2 / -1; height: 4px; border-radius: 2px; background: var(--vidrio-alto); margin-top: -0.15rem; overflow: hidden; }
.progreso__barra span { display: block; height: 100%; width: 74%; background: var(--azul-luz); transform-origin: left; animation: crece 1.6s var(--salida) both 0.3s; }
@keyframes crece { from { transform: scaleX(0); } }
@media (min-width: 60rem) { .aula__rejilla { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: 5rem; align-items: center; } }

/* ---------- Opiniones (reseñas de Google) ---------- */
.opiniones__nota { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.35rem 0.75rem; margin-bottom: 1.5rem; color: var(--lavanda); }
.opiniones__nota b { font: 800 clamp(2.2rem, 4vw, 3rem)/1 var(--letra); font-stretch: 122%; color: var(--blanco); }
.opiniones__nota small { color: var(--lavanda-2); }
.opiniones__estrellas, .opinion__estrellas { color: var(--oro); letter-spacing: 0.12em; }
.opiniones__estrellas { font-size: 1.3rem; }
.opiniones__lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.85rem; }
@media (min-width: 48rem) { .opiniones__lista { grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); } }
.opinion { display: flex; flex-direction: column; gap: 0.75rem; margin: 0; padding: 1.35rem 1.35rem 1.25rem; }
.opinion blockquote { margin: 0; padding: 0; border: 0; flex: 1; }
.opinion blockquote p { font-size: 1.02rem; line-height: 1.55; color: var(--blanco); }
.opinion__quien { font-size: 0.88rem; color: var(--lavanda-2); }
.opiniones__todas { margin-top: 1.5rem; }
.claro .opiniones__nota, .claro .opiniones__nota small { color: var(--tinta-2); }
.claro .opiniones__nota b { color: var(--tinta); }
.claro .opinion { background: var(--papel); border-color: var(--linea); -webkit-backdrop-filter: none; backdrop-filter: none; }
.claro .opinion blockquote p { color: var(--tinta); }
.claro .opinion__quien { color: var(--tinta-3); }
.claro .opiniones__estrellas, .claro .opinion__estrellas { color: #b77900; }
.contenido-editor .opiniones { margin-top: 1.75rem; }

/* ---------- Testimonios (pendientes) ---------- */
.testimonios { background: var(--noche); }
.testimonio { max-width: 46rem; padding: 1.5rem 1.4rem; border-style: dashed; border-color: rgba(255, 255, 255, 0.25); }
.testimonio__cita { font: 600 1.15rem/1.4 var(--letra); color: var(--lavanda); }
.pendiente { display: inline-block; margin-bottom: 0.9rem; padding: 0.15rem 0.55rem; border-radius: 5px; background: rgba(255, 184, 28, 0.14); color: var(--oro); font: 700 0.72rem/1.5 var(--letra); letter-spacing: 0.05em; text-transform: uppercase; }
.testimonios__cierre { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem; margin-top: 2.5rem; padding: 1.5rem 1.6rem; }
.testimonios .envoltorio > .testimonios__cierre:first-child { margin-top: 0; }
.testimonios__cierre p { font: 700 clamp(1.25rem, 2.4vw, 1.6rem)/1.2 var(--letra); font-stretch: 112%; max-width: 22em; }
.testimonios__cierre div { display: flex; flex-wrap: wrap; gap: 0.75rem; }

/* Noticias: los tres últimos titulares del blog, sin fotos, para no alargar la portada (12-10). */
/* Franja de titulares entre la entrada y los servicios (13-10; antes, bloque «Noticias» abajo). */
/* Paco, 22-10: seis titulares en dos filas de tres también en móvil, la etiqueta arriba centrada
 * y «Ver más» debajo centrado. En móvil la fecha va en su línea y el titular, a cuatro. */
.titulares { display: grid; justify-items: center; gap: 0.6rem; margin: 1.5rem 0 0; padding: 0.75rem 0.8rem; border: 1px solid rgba(255, 255, 255, 0.14); border-radius: 14px; background: rgba(11, 8, 41, 0.85); }
.titulares__etiqueta { padding: 0.25rem 0.6rem; border-radius: 99px; background: var(--oro); color: #2a1a00; font-weight: 800; font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; }
.titulares__lista { justify-self: stretch; list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.6rem 0; min-width: 0; }
.titulares__lista li { padding: 0 0.6rem; }
.titulares__lista li:nth-child(3n+1) { padding-left: 0; }
.titulares__lista li:nth-child(3n) { padding-right: 0; }
.titulares__lista li:not(:nth-child(3n+1)) { border-left: 1px solid rgba(255, 255, 255, 0.14); }
.titulares__lista li:nth-child(n+4) { padding-top: 0.6rem; border-top: 1px solid rgba(255, 255, 255, 0.1); }
.titulares__lista a { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden; color: var(--blanco); font-weight: 600; font-size: 0.8rem; line-height: 1.3; text-decoration: none; }
.titulares__lista a:hover { color: var(--azul-luz); }
.titulares__lista time { display: block; color: var(--oro); font-weight: 700; text-transform: lowercase; }
.titulares__todas { color: var(--azul-luz); font-size: 0.85rem; font-weight: 600; }
@media (min-width: 64rem) {
	.titulares { padding: 0.8rem 1rem; }
	.titulares__lista li { padding-inline: 1.25rem; }
	.titulares__lista a { -webkit-line-clamp: 2; font-size: 0.92rem; }
	.titulares__lista time { display: inline; margin-right: 0.2rem; }
}
}

/* ---------- Preguntas (claro) ---------- */
.preguntas-rejilla { display: grid; gap: 2rem; }
@media (min-width: 60rem) { .preguntas-rejilla { grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: 5rem; } }
.preguntas { display: grid; gap: 0.6rem; }
.pregunta { background: var(--blanco); border: 1px solid var(--linea); border-radius: 12px; }
.pregunta summary { display: grid; grid-template-columns: minmax(0, 1fr) 2rem; gap: 1.25rem; align-items: center; padding: 1.05rem 1.2rem; cursor: pointer; list-style: none; font: 700 1.04rem/1.35 var(--letra); font-stretch: 104%; }
.pregunta summary::-webkit-details-marker { display: none; }
.pregunta summary::after { content: ""; width: 2rem; height: 2rem; border-radius: 50%; background: var(--papel) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23312783' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M12 6v12M6 12h12'/%3E%3C/svg%3E") center / 1rem no-repeat; transition: transform 0.35s var(--salida), background-color 0.25s; }
.pregunta[open] summary::after { transform: rotate(45deg); background-color: var(--noche); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235ccbf7' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M12 6v12M6 12h12'/%3E%3C/svg%3E"); }
.pregunta p { padding: 0 1.2rem 1.25rem; color: var(--tinta-2); max-width: 44em; }

/* ---------- Pie ---------- */
.pie { background: var(--noche-hondo); color: var(--lavanda); padding: 3.75rem 0 2rem; font-size: 0.95rem; border-top: 1px solid var(--vidrio-borde); }
.pie__rejilla { display: grid; gap: 2.25rem; }
.pie__logo img { width: 12rem; }
.pie__intro { margin-top: 1rem; max-width: 22em; }
.pie h2 { font: 700 0.95rem var(--letra); font-stretch: 110%; color: var(--blanco); margin-bottom: 0.75rem; letter-spacing: 0; }
.pie ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.45rem; }
.pie a { color: var(--lavanda); text-decoration: none; }
.pie a:hover { color: var(--blanco); text-decoration: underline; }
.pie__base { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.5rem 2rem; margin-top: 3rem; padding-top: 1.25rem; border-top: 1px solid var(--vidrio-borde); color: var(--lavanda-2); font-size: 0.87rem; }
.pie__base a { color: var(--lavanda-2); text-decoration: underline; }
@media (min-width: 48rem) { .pie__rejilla { grid-template-columns: 1.4fr 1fr 1fr 1fr; } }

.whatsapp { position: fixed; right: 1rem; bottom: 1rem; z-index: 30; display: inline-flex; align-items: center; gap: 0.5rem; min-height: 3rem; padding: 0.75rem; background: var(--whatsapp); color: #fff; border-radius: 999px; text-decoration: none; box-shadow: 0 10px 24px -10px rgba(0, 0, 0, 0.6); transition: opacity 0.25s var(--salida), transform 0.25s var(--salida); }
.whatsapp:hover { background: #17633e; color: #fff; }
.whatsapp svg { width: 1.4rem; height: 1.4rem; }
.whatsapp span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.whatsapp.apartado, .menu-abierto .whatsapp { opacity: 0; transform: translateY(1rem); pointer-events: none; }
@media (min-width: 75rem) { .whatsapp { right: max(1rem, calc((100vw - var(--ancho)) / 2 - 4.25rem)); } }

/* Leyenda de la subvención municipal: lo último del pie, discreta y en el tono
   del pie (el escudo se tiñe con currentColor). */
.pie__financia { display: flex; flex-direction: column; align-items: center; gap: 0.9rem; margin-top: 1.5rem; padding-top: 1.75rem; border-top: 1px solid var(--vidrio-borde); color: var(--lavanda-2); font-size: 0.8rem; line-height: 1.55; text-align: center; }
.pie__financia svg { width: 9rem; height: auto; color: var(--lavanda); }
.pie__financia p { margin: 0; max-width: 60ch; text-wrap: balance; }
/* En el móvil, el botón flotante de WhatsApp tapaba la última línea al llegar al final. */
@media (max-width: 47.99rem) { .pie { padding-bottom: 5.5rem; } }

/* ---------- Migas ---------- */
.migas { font-size: 0.9rem; color: var(--lavanda-2); }
.migas ol { list-style: none; display: flex; flex-wrap: wrap; gap: 0.3rem; margin: 0; padding: 0; }
.migas li + li::before { content: "/"; margin-right: 0.3rem; opacity: 0.5; }
.migas a { color: var(--lavanda); text-decoration: none; }
.migas a:hover { color: var(--blanco); text-decoration: underline; }

/* ==========================================================================
   Cabezas oscuras: ficha, listados y páginas
   ========================================================================== */
.ficha-cabeza, .listado-cabeza, .pagina__cabeza { position: relative; overflow: hidden; isolation: isolate; padding: 1.5rem 0 clamp(2.5rem, 6vw, 4rem); }
.ficha-cabeza::before, .listado-cabeza::before, .pagina__cabeza::before { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(55% 90% at 85% 10%, rgba(0, 159, 227, 0.3), transparent 70%), linear-gradient(180deg, var(--noche-hondo), var(--noche)); }
.listado-cabeza h1, .pagina__cabeza h1 { margin-top: clamp(1.5rem, 4vw, 2.5rem); font-size: clamp(2.1rem, 5.5vw, 3.8rem); line-height: 1; max-width: 16em; }
.listado-cabeza__entrada { margin-top: 1rem; max-width: 40em; color: var(--lavanda); font-size: clamp(1.02rem, 1.4vw, 1.12rem); }
.listado-cabeza { padding-bottom: clamp(1.5rem, 4vw, 2.5rem); }
.pagina__cabeza { padding-bottom: clamp(2rem, 5vw, 3rem); }
.pagina--tienda .pagina__cabeza h1 { margin-top: 0.5rem; font-size: clamp(1.9rem, 4.5vw, 3rem); }

/* Pastillas de navegación en los listados. */
.pastillas { margin-top: 1.5rem; }
.pastillas__titulo { font-size: 0.8rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--lavanda-2); margin-bottom: 0.5rem; }
.pastillas ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.45rem; }
.pastillas a { display: inline-block; padding: 0.42rem 0.9rem; border-radius: 999px; border: 1px solid var(--vidrio-borde); background: var(--vidrio); color: var(--lavanda); text-decoration: none; font-size: 0.92rem; font-weight: 600; transition: background-color 0.2s, border-color 0.2s; }
.pastillas a:hover { background: var(--vidrio-alto); border-color: rgba(255, 255, 255, 0.35); color: var(--blanco); }
.pastillas a[aria-current] { background: var(--azul); border-color: var(--azul); color: var(--noche-hondo); }

.catalogo .bloque--panel { padding-bottom: var(--bloque); }
.paginacion { margin-top: 1.5rem; }
.paginacion ul { list-style: none; display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 0; padding: 0; border: 0; }
.paginacion li { border: 0 !important; }
.paginacion a, .paginacion span { display: grid; place-items: center; min-width: 2.6rem; height: 2.6rem; padding: 0 0.6rem; border-radius: 10px; border: 1px solid var(--vidrio-borde); background: var(--vidrio); color: var(--lavanda); text-decoration: none; font-weight: 700; }
.paginacion .current { background: var(--azul); border-color: var(--azul); color: var(--noche-hondo); }
.vacio { padding: 1.5rem 0 0.5rem; }
.vacio h2 { font-size: clamp(1.4rem, 3vw, 2rem); }
.vacio p { margin-top: 0.75rem; max-width: 40em; color: var(--lavanda); }
.vacio__acciones { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem; margin-top: 1.25rem !important; }
.claro .vacio p { color: var(--tinta-2); }

/* ==========================================================================
   Ficha
   ========================================================================== */
.ficha-cabeza__org { margin-top: clamp(1.75rem, 5vw, 3rem); font-weight: 600; color: var(--azul-luz); }
.ficha-cabeza h1 { margin-top: 0.4rem; font-size: clamp(2.1rem, 5.5vw, 4.2rem); line-height: 0.98; max-width: 14em; }
.ficha-cabeza__fecha { margin-top: 0.7rem; font-size: 0.92rem; color: var(--lavanda-2); }
.ficha-cabeza__org .etiqueta { font-size: 0.75rem; }
.ficha-cabeza__datos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.75rem; margin: 2rem 0 0; padding: 0; list-style: none; max-width: 40rem; }
.ficha-cabeza__datos li { margin: 0; padding: 1rem 1.1rem; }
.ficha-cabeza__datos b { display: block; font: 800 clamp(1.6rem, 3.6vw, 2.35rem)/1 var(--letra); font-stretch: 120%; color: var(--azul-luz); }
.ficha-cabeza__datos span { display: block; margin-top: 0.4rem; font-size: 0.85rem; color: var(--lavanda); line-height: 1.3; }
.ficha-cabeza__plazo { margin-top: 1.25rem; max-width: 40rem; color: var(--lavanda); }
.ficha-cabeza__plazo strong { color: var(--oro); }
/* Cada ficha con el color de su servicio: oro los baremables, menta los cursos. */
.ficha-baremable .ficha-cabeza__org, .ficha-baremable .ficha-cabeza__datos b { color: var(--oro); }
.ficha-plataforma .ficha-cabeza__org, .ficha-plataforma .ficha-cabeza__datos b { color: var(--menta); }

.ficha-cuerpo { background: var(--blanco); color: var(--tinta); padding: clamp(2.25rem, 5vw, 3.5rem) 0 var(--bloque); }
.ficha__rejilla { display: grid; row-gap: clamp(2.75rem, 6vw, 4rem); }
@media (min-width: 62rem) {
	.ficha__rejilla { grid-template-columns: minmax(0, 1fr) 23.5rem; column-gap: 5rem; align-items: start; }
	.ficha__rejilla > * { grid-column: 1; }
	.ficha__rejilla > .ficha__compra { grid-column: 2; grid-row: 1 / span 5; position: sticky; top: 6rem; margin-top: -9.5rem; }
	.admin-bar .ficha__rejilla > .ficha__compra { top: calc(6rem + 32px); }
}
.ficha__seccion h2 { font-size: clamp(1.55rem, 3vw, 2.1rem); line-height: 1.05; margin-bottom: 1.25rem; }
.incluye { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.6rem; }
.incluye li { position: relative; margin: 0; padding: 0.95rem 1.1rem 0.95rem 3.1rem; background: var(--papel); border-radius: 12px; }
.incluye li::before { content: ""; position: absolute; left: 1rem; top: 1rem; width: 1.4rem; height: 1.4rem; border-radius: 50%; background: var(--noche) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235ccbf7' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 0.8rem no-repeat; }
.incluye--oro li { background: var(--oro-suave); }
.ficha-cuerpo .fases { margin: 0; }
.ficha__aviso { margin-top: 1rem; color: var(--tinta-2); font-size: 0.95rem; }
.ficha__nota { padding: 1rem 1.2rem; background: var(--papel); border: 1px solid var(--linea); border-radius: 12px; color: var(--tinta); font-weight: 600; }

.hitos { list-style: none; margin: 0; padding: 0; border-left: 2px solid var(--linea); }
.hitos li { position: relative; margin: 0; padding: 0 0 1.1rem 1.4rem; color: var(--tinta-2); }
.hitos li::before { content: ""; position: absolute; left: -0.45rem; top: 0.4rem; width: 0.8rem; height: 0.8rem; border-radius: 50%; background: var(--blanco); border: 2px solid var(--lavanda-2); }
.hitos__ultimo::before { background: var(--azul) !important; border-color: var(--azul) !important; }
.hitos__ultimo { color: var(--tinta) !important; font-weight: 600; }
.hitos time { display: block; font-size: 0.85rem; font-weight: 700; color: var(--tinta-3); }

.temario__bloque { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; margin: 2rem 0 0.75rem; font: 800 1.15rem var(--letra); font-stretch: 112%; }
.temario__bloque:first-of-type { margin-top: 0; }
.temario__bloque span { font: 600 0.85rem var(--letra); color: var(--tinta-3); }
.temas { list-style: none; margin: 0; padding: 0; border: 1px solid var(--linea); border-radius: 12px; overflow: hidden; }
.temas + .temario__bloque { margin-top: 2rem; }
.temas li { display: grid; grid-template-columns: 2.4rem minmax(0, 1fr); gap: 0.6rem; margin: 0; padding: 0.9rem 1.1rem; border-top: 1px solid var(--linea); color: var(--tinta-2); font-size: 0.97rem; line-height: 1.5; }
.temas li:first-child { border-top: 0; }
.temas li b { display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: 8px; background: var(--papel); color: var(--morado); font: 800 0.95rem var(--letra); }
.temario__mas { margin-top: 1.25rem; }

/* El selector de acceso (lo pinta el plugin: pp_selector_de_acceso). */
.acceso { padding: 1.5rem; margin: 0; background: var(--blanco); color: var(--tinta); border: 1px solid var(--linea); border-radius: 18px; box-shadow: 0 30px 70px -30px rgba(11, 8, 41, 0.55); }
.acceso h2 { font-size: 1.45rem; margin-bottom: 0.3rem; }
.acceso__intro { font-size: 0.93rem; color: var(--tinta-2); margin-bottom: 1.1rem; }
.acceso fieldset { border: 0; margin: 0; padding: 0; display: grid; gap: 0.5rem; min-width: 0; }
.opcion { display: grid; grid-template-columns: 1.3rem minmax(0, 1fr) auto; gap: 0.1rem 0.75rem; align-items: center; margin: 0; padding: 0.85rem 0.95rem; border: 1px solid var(--linea); border-radius: 12px; cursor: pointer; transition: border-color 0.2s, background-color 0.2s; }
.opcion:hover { border-color: var(--lavanda-2); }
.opcion input { appearance: none; margin: 0; width: 1.2rem; height: 1.2rem; border: 1.5px solid var(--linea); border-radius: 50%; grid-row: 1 / span 2; cursor: pointer; background: var(--blanco); }
.opcion input:checked { border: 6px solid var(--azul); }
.opcion:has(input:checked) { border-color: var(--noche); background: var(--noche); color: var(--blanco); }
.opcion:has(input:checked) .opcion__detalle { color: var(--lavanda); }
.opcion:has(input:checked) .opcion__mejor { color: var(--azul-luz); }
.opcion:has(input:focus-visible) { outline: 2px solid var(--azul); outline-offset: 2px; }
.opcion__plazo { font-weight: 700; }
.opcion__mejor { display: block; font-size: 0.78rem; font-weight: 700; color: var(--morado); }
.opcion__precio { grid-row: 1; grid-column: 3; font: 800 1.25rem var(--letra); font-stretch: 112%; text-align: right; }
.opcion__detalle { grid-column: 2 / -1; font-size: 0.84rem; color: var(--tinta-2); line-height: 1.4; }
.acceso__aparte { margin-top: 0.6rem; padding-top: 0.85rem; border-top: 1px dashed var(--linea); font-size: 0.82rem; font-weight: 700; color: var(--tinta-3); }
.opcion--anual { border-style: dashed; }
.acceso__unico { display: grid; gap: 0.2rem; margin: 0.6rem 0 0.4rem; }
.acceso__unico .acceso__precio { font: 800 2.2rem/1 var(--letra); font-stretch: 118%; color: var(--tinta); }
.acceso__unico .acceso__detalle { font-size: 0.9rem; color: var(--tinta-2); }
body .acceso button.single_add_to_cart_button.boton, body .acceso a.boton { width: 100%; margin-top: 1.1rem; min-height: 3.25rem; padding: 0.8rem 1.25rem; border: 0; border-radius: 10px; background: var(--azul); color: var(--noche-hondo); box-shadow: none; font: 700 0.95rem/1.15 var(--letra); font-stretch: 112%; letter-spacing: 0.04em; text-transform: uppercase; }
body .acceso button.single_add_to_cart_button.boton:hover, body .acceso a.boton:hover { background: var(--noche); color: var(--blanco); }
.acceso__letra { margin-top: 0.9rem; font-size: 0.85rem; color: var(--tinta-3); line-height: 1.5; }
.acceso__convenio { margin-top: 1rem; padding: 0.85rem 0.95rem; border-radius: 12px; border: 1px solid var(--linea); background: var(--blanco); font-size: 0.88rem; line-height: 1.45; color: var(--tinta-2); }
.acceso__convenio strong { display: block; color: var(--tinta); }
.acceso__ayuda { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--linea); font-size: 0.9rem; color: var(--tinta-2); }
.acceso--cerrada h2 { color: var(--tinta); }
/* La ventana de matrícula de un baremable, dentro de la tarjeta del formulario. */
.acceso__matricula { margin: 0.6rem 0 0.2rem; font-size: 0.95rem; color: var(--tinta); }
.acceso__matricula a { color: var(--morado); }
.acceso__matricula + a.boton { margin-top: 0.7rem; }
.acceso__o { margin: 1.25rem 0 0.35rem; padding-top: 1rem; border-top: 1px dashed var(--linea); font-weight: 700; color: var(--tinta); }
/* Ficha baremable con la matrícula de la universidad abierta: cuenta atrás (15-10). */
.acceso--abierta { position: relative; border-top: 4px solid var(--oro); }
.acceso--abierta #apuntarse { position: absolute; top: -6rem; }
.acceso__estado { display: inline-flex; align-items: center; gap: 0.5rem; margin-bottom: 0.6rem; padding: 0.3rem 0.75rem; border-radius: 99px; background: var(--oro-suave); color: var(--oro-tinta); font: 800 0.78rem/1 var(--letra); letter-spacing: 0.08em; text-transform: uppercase; }
.acceso__estado i { width: 0.55rem; height: 0.55rem; border-radius: 50%; background: #d4231f; box-shadow: 0 0 0 0 rgba(212, 35, 31, 0.5); animation: pp-latido 1.6s ease-out infinite; }
@keyframes pp-latido { 70% { box-shadow: 0 0 0 0.45rem rgba(212, 35, 31, 0); } 100% { box-shadow: 0 0 0 0 rgba(212, 35, 31, 0); } }
@media (prefers-reduced-motion: reduce) { .acceso__estado i { animation: none; } }
.cuenta { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.4rem; margin: 0.9rem 0 0.2rem; }
.cuenta span { display: grid; justify-items: center; gap: 0.15rem; padding: 0.6rem 0.2rem 0.5rem; border-radius: 10px; background: var(--noche); color: var(--blanco); }
.cuenta b { font: 800 1.65rem/1 var(--letra); font-stretch: 112%; font-variant-numeric: tabular-nums; color: var(--oro); }
.cuenta small { font-size: 0.72rem; color: var(--lavanda); text-transform: uppercase; letter-spacing: 0.06em; }
.cuenta--fin { opacity: 0.45; }
.acceso__nota { margin: 0.8rem 0 0; font-size: 0.85rem; }
.acceso__whatsapp { display: inline-block; font-weight: 700; color: var(--whatsapp); }

.cierre { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.25rem; padding: 1.75rem; background: var(--noche); color: var(--blanco); border-radius: 18px; }
.cierre p { font: 700 clamp(1.25rem, 2.4vw, 1.6rem)/1.2 var(--letra); font-stretch: 112%; max-width: 20em; }
.claro .cierre a.boton, .cierre a.boton { background: var(--azul); color: var(--noche-hondo); box-shadow: none; }
.claro .cierre a.boton:hover, .cierre a.boton:hover { background: var(--azul-luz); color: var(--noche-hondo); }

.barra-compra { display: none; }
@media (max-width: 61.99rem) {
	.ficha .cierre { display: none; }
	.ficha__compra { order: -1; }
	.barra-compra { display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 25; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.75rem var(--margen) calc(0.75rem + env(safe-area-inset-bottom)); background: rgba(11, 8, 41, 0.96); border-top: 1px solid var(--vidrio-borde); transform: translateY(110%); transition: transform 0.35s var(--salida); }
	.barra-compra.visible { transform: none; }
	.barra-compra > div { min-width: 0; }
	.barra-compra b { display: block; font: 800 1.05rem var(--letra); font-stretch: 112%; }
	.barra-compra small { display: block; font-size: 0.8rem; color: var(--lavanda); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
	.barra-compra .boton { min-height: 2.9rem; font-size: 0.85rem; flex: none; }
	.single-product .whatsapp { bottom: 5.25rem; }
}
@media (max-width: 30rem) {
	.ficha-cabeza__datos { gap: 0.5rem; }
	.ficha-cabeza__datos li { padding: 0.85rem 0.75rem; }
	.ficha-cabeza__datos b { font-size: 1.25rem; font-stretch: 100%; }
}

/* Avisos de WooCommerce («añadido», errores), sobre la cabeza oscura o en claro. */
.woocommerce-notices-wrapper:empty { display: none; }
.woocommerce-message, .woocommerce-error, .woocommerce-info, .wc-block-components-notice-banner {
	list-style: none; margin: 0 0 1.25rem; padding: 0.9rem 1.1rem; border-radius: 12px; border: 1px solid var(--linea);
	background: var(--blanco); color: var(--tinta); font-size: 0.95rem;
}
.woocommerce-error { border-color: var(--error); background: #fdf1f0; color: var(--error); }
.woocommerce-message::before, .woocommerce-error::before, .woocommerce-info::before { display: none; }
.woocommerce-message a, .woocommerce-error a, .woocommerce-info a { color: var(--morado); }
/* Pantalla de gracias: el aviso de mirar en spam, aparte del texto (matricula.php). */
.aviso-spam { display: block; margin-top: 0.9rem; padding: 0.9rem 1.1rem; border: 1px dashed var(--oro); border-radius: 12px; background: var(--oro-suave); color: var(--oro-tinta); font-size: 0.95rem; }
.aviso-spam strong { color: inherit; }

/* ==========================================================================
   Páginas fijas, blog, cuenta y pago (cuerpo en claro)
   ========================================================================== */
.pagina__cuerpo { padding: clamp(2.25rem, 5vw, 3.5rem) 0 var(--bloque); }
.contenido-editor > * + * { margin-top: 1.1rem; }
.contenido-editor h2 { margin-top: 2.5rem; font-size: clamp(1.45rem, 3vw, 2rem); line-height: 1.1; }
.contenido-editor h3 { margin-top: 2rem; font-size: 1.25rem; }
.contenido-editor > p, .contenido-editor > ul > li, .contenido-editor > ol > li { color: var(--tinta-2); }
.contenido-editor > p strong, .contenido-editor > ul strong, .contenido-editor > ol strong { color: var(--tinta); }
.contenido-editor > ul:not([class]), .contenido-editor > ol:not([class]) { padding-left: 1.3rem; }
.contenido-editor > ul:not([class]) > li + li, .contenido-editor > ol:not([class]) > li + li { margin-top: 0.4rem; }
.contenido-editor > p:first-child { font-size: 1.15rem; color: var(--tinta); }
.contenido-editor .lista-conv { margin-top: 1.5rem; }
/* [pp_aula] dentro de «Cómo funciona»: ya estamos en claro y en su ancho. */
.contenido-editor .aula { margin-inline: calc(50% - 50vw); padding: clamp(2.5rem, 6vw, 4rem) 0; }

/* [pp_metodo]: el método entero, en el ancho de lectura. */
.metodo { margin-top: 2.5rem; }
.metodo > * + * { margin-top: 1.1rem; }
.metodo p { color: var(--tinta-2); }
.metodo p strong { color: var(--tinta); }
.ciclo { list-style: none; margin: 1.75rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; counter-reset: ciclo; }
.ciclo li { counter-increment: ciclo; display: flex; align-items: center; gap: 0.5rem; margin: 0; padding: 0.55rem 0.9rem 0.55rem 0.6rem; border-radius: 999px; background: var(--noche); color: var(--blanco); font: 700 0.92rem/1.2 var(--letra); font-stretch: 108%; }
.ciclo li::before { content: counter(ciclo); display: grid; place-items: center; width: 1.6rem; height: 1.6rem; border-radius: 50%; background: var(--azul); color: var(--noche-hondo); font-size: 0.8rem; font-weight: 800; }
.ciclo li:last-child { background: var(--morado); }
.ciclo li:last-child::before { content: "↻"; background: var(--azul-luz); }
.metodo__fase { margin-top: 2.75rem; padding-top: 2.25rem; border-top: 1px solid var(--linea); }
.metodo__fase > * + * { margin-top: 1rem; }
.metodo .metodo__antetitulo { font: 700 0.8rem/1 var(--letra); font-stretch: 112%; letter-spacing: 0.08em; text-transform: uppercase; color: var(--morado); }
.metodo__fase h3 { margin-top: 0.5rem; font-size: clamp(1.45rem, 3vw, 2rem); line-height: 1.1; }
.pasos { list-style: none; margin: 1.25rem 0 0; padding: 0; counter-reset: paso; display: grid; gap: 0.5rem; }
.pasos li { counter-increment: paso; display: grid; grid-template-columns: 2.1rem minmax(0, 1fr); gap: 0.85rem; align-items: center; margin: 0; padding: 0.6rem 1rem 0.6rem 0.6rem; background: var(--papel); border-radius: 10px; color: var(--tinta); }
.pasos li::before { content: counter(paso); display: grid; place-items: center; width: 2.1rem; height: 2.1rem; border-radius: 8px; background: var(--noche); color: var(--azul-luz); font: 800 0.95rem var(--letra); font-stretch: 120%; }
.metodo .metodo__nota { padding: 1rem 1.2rem; border: 1px solid #f1d38a; border-radius: 12px; background: var(--oro-suave); color: var(--tinta); }
.vueltas { margin: 1.5rem 0 0; padding: 1.25rem 1.25rem 1rem; border: 1px solid var(--linea); border-radius: 14px; }
.vueltas ol { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); align-items: end; gap: 0.5rem; height: 11rem; }
.vueltas li { position: relative; height: var(--alto); margin: 0; border-radius: 8px 8px 4px 4px; background: color-mix(in srgb, var(--azul) calc(var(--alto) * 0.8), var(--lavanda)); }
.vueltas li:last-child { background: var(--noche); }
.vueltas span { position: absolute; left: 0; right: 0; bottom: 0.5rem; text-align: center; font: 700 0.78rem/1.1 var(--letra); color: var(--noche-hondo); }
.vueltas li:last-child span { color: var(--blanco); }
.vueltas figcaption { margin-top: 0.85rem; font-size: 0.92rem; color: var(--tinta-3); }
.metodo .incluye { margin-top: 1.5rem; }
.metodo__cierre { margin-top: 3rem; padding: clamp(1.5rem, 4vw, 2.25rem); border-radius: 18px; background: radial-gradient(70% 120% at 90% 0%, rgba(0, 159, 227, 0.28), transparent 70%), var(--noche); }
.metodo__cierre > * + * { margin-top: 1rem; }
.metodo .metodo__cierre p { color: var(--lavanda); }
.metodo .metodo__lema { font: 800 clamp(1.3rem, 3vw, 1.75rem)/1.15 var(--letra); font-stretch: 112%; letter-spacing: -0.015em; color: var(--blanco); }
.metodo__lema span { color: var(--oro); }
.metodo__acciones { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.75rem; padding-top: 0.5rem; }
.metodo__cierre a.boton { background: var(--azul); color: var(--noche-hondo); box-shadow: none; }
.metodo__cierre a.boton:hover { background: var(--azul-luz); color: var(--noche-hondo); }
.metodo__cierre a.flecha { color: var(--azul-luz); }
.metodo__cierre a.flecha:hover { color: var(--blanco); }
.metodo .metodo__peso { font-size: 0.85rem; color: var(--lavanda-2); }
@media (max-width: 30rem) {
	.vueltas ol { height: 9rem; gap: 0.3rem; }
	.vueltas span { font-size: 0.68rem; }
	.metodo__acciones .boton { width: 100%; }
}
.pendiente-aviso { padding: 0.9rem 1.1rem; border: 1px dashed var(--oro); border-radius: 12px; background: var(--oro-suave); color: var(--oro-tinta); font-size: 0.95rem; }
.pendiente-aviso .pendiente { margin: 0 0.4rem 0 0; background: var(--oro); color: var(--noche-hondo); }

/* Kadence pinta el blog, la 404 y la búsqueda: su zona de contenido va en claro. */
.content-area { margin: 0; padding: clamp(2.25rem, 5vw, 3.5rem) 0 var(--bloque); background: var(--blanco); color: var(--tinta); }
.content-area a { color: var(--morado); }
.content-area .entry-title, .content-area .page-title { color: var(--tinta); }
.content-area .site-container, .content-area .content-container { width: min(100% - 2 * var(--margen), var(--ancho)); max-width: none; margin-inline: auto; padding: 0; }
.content-area .search-form { max-width: 32rem; margin-top: 1rem; }
/* La cabecera de archivo de Kadence (blog), como las nuestras: oscura. */
.entry-hero { background: radial-gradient(55% 90% at 85% 10%, rgba(0, 159, 227, 0.3), transparent 70%), linear-gradient(180deg, var(--noche-hondo), var(--noche)); }
.entry-hero .entry-hero-container-inner { background: transparent; }
.entry-hero .entry-header { min-height: 0; padding: clamp(2rem, 5vw, 3rem) 0; }
.entry-hero .page-title, .entry-hero .entry-title { color: var(--blanco); font-size: clamp(2.1rem, 5.5vw, 3.8rem); text-align: left; }
.entry-hero .site-container { width: min(100% - 2 * var(--margen), var(--ancho)); max-width: none; margin-inline: auto; padding: 0; }

/* Mi cuenta */
.woocommerce-account .woocommerce { display: grid; gap: 2rem; }
.woocommerce-account .woocommerce > * { float: none !important; width: auto !important; margin: 0; }
.woocommerce-account .woocommerce > .woocommerce-notices-wrapper { grid-column: 1 / -1; }
/* El «clearfix» de WooCommerce: en una rejilla, sus pseudoelementos ocupan celda. */
.woocommerce-account .woocommerce::before, .woocommerce-account .woocommerce::after { display: none; }
@media (min-width: 56rem) { .woocommerce-account .woocommerce { grid-template-columns: 15rem minmax(0, 1fr); column-gap: 3rem; align-items: start; } }
.account-navigation-wrap { padding: 0 !important; border: 0 !important; }
.kadence-account-avatar { display: flex; align-items: center; gap: 0.6rem; margin-bottom: 1rem; color: var(--tinta); font-weight: 700; }
.kadence-account-avatar img { border-radius: 50%; }
.woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.3rem; }
.woocommerce-MyAccount-navigation a { display: block; padding: 0.65rem 0.9rem; border-radius: 10px; color: var(--tinta-2) !important; text-decoration: none; font-weight: 600; }
.woocommerce-MyAccount-navigation a:hover { background: var(--papel); color: var(--tinta) !important; }
.woocommerce-MyAccount-navigation .is-active a { background: var(--noche); color: var(--blanco) !important; }
.woocommerce-MyAccount-content { min-width: 0; }
.woocommerce-MyAccount-content > * + * { margin-top: 1rem; }
.pp-saludo { color: var(--tinta-2); }
.pp-aula { margin-top: 1.25rem; padding: 1.5rem; border-radius: 18px; background: var(--noche); color: var(--blanco); }
.pp-aula h2 { font-size: 1.5rem; margin-bottom: 0.5rem; }
.pp-aula p { color: var(--lavanda); }
.pp-aula p + p { margin-top: 0.75rem; }
.pp-aula a { color: var(--azul-luz); }
/* La página es .claro, cuyos enlaces pasan a «noche» al pasar el ratón: el color de esta tarjeta. */
.claro .pp-aula a:not(.button):hover { color: var(--blanco); }
.pp-aula strong { color: var(--blanco); }
.pp-matriculas { list-style: none; margin: 1rem 0; padding: 0; display: grid; gap: 0.5rem; }
.pp-matriculas li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 1rem; padding: 0.9rem 1rem; border: 1px solid var(--vidrio-borde); border-radius: 12px; background: var(--vidrio); }
.pp-matriculas li > a:first-child { font-weight: 700; color: var(--blanco); }
.pp-desde { font-size: 0.88rem; color: var(--lavanda-2); }
.pp-caducada { opacity: 0.8; }
.pp-renovar { margin-left: auto; font-weight: 700; }
.pp-aula .button, .claro .woocommerce .button, .claro .woocommerce button.button, .claro .woocommerce-Button {
	display: inline-flex; align-items: center; justify-content: center; min-height: 3rem; padding: 0.7rem 1.3rem; border: 0; border-radius: 10px;
	background: var(--azul); color: var(--noche-hondo) !important; text-decoration: none; font: 700 0.9rem/1.15 var(--letra); letter-spacing: 0.04em; text-transform: uppercase; cursor: pointer;
}
.claro .woocommerce .button, .claro .woocommerce button.button, .claro .woocommerce-Button { background: var(--morado); color: var(--blanco) !important; }
.claro .woocommerce .button:hover, .claro .woocommerce button.button:hover { background: var(--noche); }
.claro .woocommerce input.input-text, .claro .woocommerce input[type="email"], .claro .woocommerce input[type="password"], .claro .woocommerce input[type="text"] {
	width: 100%; min-height: 3rem; padding: 0.6rem 0.9rem; border: 1px solid var(--linea); border-radius: 10px; background: var(--blanco); color: var(--tinta); font: 500 1rem var(--letra);
}
.claro .woocommerce form .form-row { margin: 0 0 1rem; }
.claro .woocommerce form label { font-weight: 600; color: var(--tinta); }
.claro .woocommerce table.shop_table { border-collapse: collapse; width: 100%; border: 1px solid var(--linea); border-radius: 12px; overflow: hidden; }
.claro .woocommerce table.shop_table th, .claro .woocommerce table.shop_table td { padding: 0.75rem 0.9rem; border-top: 1px solid var(--linea); text-align: left; }
.woocommerce-account .u-columns { display: grid; gap: 2rem; }
@media (min-width: 56rem) { .woocommerce-account .u-columns.col2-set { grid-template-columns: 1fr 1fr; } }
.woocommerce-account:not(.logged-in) .woocommerce { display: block; }
/* Sin sesión: primero el camino al aula (cuenta.php), luego el formulario de la web. */
.woocommerce-account .woocommerce > .pp-aula--entrada { margin: 0 0 2.5rem; }
.woocommerce-account .woocommerce > .woocommerce-notices-wrapper:not(:empty) { margin-bottom: 1.5rem; }
.pp-aula--entrada h2 { margin-top: 0; }
/* En la tarjeta oscura el botón va en azul: el morado general de WooCommerce no se distingue del fondo. */
.claro .woocommerce .pp-aula .button { margin-top: 0.25rem; background: var(--azul); color: var(--noche-hondo) !important; }
.claro .woocommerce .pp-aula .button:hover { background: var(--azul-luz); }
.pp-aula .pp-aula__nota { font-size: 0.92rem; color: var(--lavanda-2); }

/* «Pruébalo gratis» (plugin, prueba-gratis.php). Lo reutiliza el formulario de contacto (contacto.php). */
.prueba { display: grid; gap: 1.1rem; margin: 1.75rem 0; padding: clamp(1.1rem, 3vw, 1.75rem); border: 1px solid var(--linea); border-radius: 16px; background: var(--blanco); }
.prueba__fila { display: grid; gap: 1.1rem; }
@media (min-width: 40rem) { .prueba__fila { grid-template-columns: 1fr 1fr; } }
.prueba__campo { display: grid; gap: 0.35rem; }
.prueba__campo > span { font-weight: 600; color: var(--tinta); }
.prueba__campo em, .prueba__casilla em { font-style: normal; font-weight: 500; color: var(--tinta-3); }
.prueba input[type="text"], .prueba input[type="email"], .prueba input[type="tel"], .prueba select, .prueba textarea {
	width: 100%; min-height: 3rem; padding: 0.6rem 0.9rem; border: 1px solid var(--linea); border-radius: 10px;
	background: var(--blanco); color: var(--tinta); font: 500 1rem var(--letra);
}
.prueba input:focus-visible, .prueba select:focus-visible, .prueba textarea:focus-visible { outline: 2px solid var(--azul); outline-offset: 1px; border-color: var(--azul); }
.prueba [aria-invalid="true"] { border-color: var(--error); }
.prueba__casilla { display: grid; grid-template-columns: auto 1fr; gap: 0.7rem; align-items: start; color: var(--tinta-2); font-size: 0.95rem; line-height: 1.5; cursor: pointer; }
.prueba__casilla input { width: 1.2rem; height: 1.2rem; margin-top: 0.15rem; accent-color: var(--morado); }
.prueba__campo .prueba__nota { font-size: 0.85rem; line-height: 1.4; }
.prueba__error { color: var(--error); font-size: 0.9rem; font-weight: 600; }
.prueba__aviso { margin: 0; padding: 0.9rem 1.1rem; border: 1px solid var(--error); border-radius: 12px; background: #fdf1f0; color: var(--error); }
.prueba textarea { min-height: 9rem; line-height: 1.5; resize: vertical; }
.prueba .cf-turnstile { min-height: 65px; }
.prueba__trampa { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.prueba p { margin: 0; }
.prueba-hecha { margin: 1.75rem 0; padding: clamp(1.1rem, 3vw, 1.75rem); border: 1px solid var(--linea); border-left: 4px solid var(--azul); border-radius: 16px; background: var(--blanco); }
.prueba-hecha h2 { margin-top: 0; }
/* El formulario de apuntarse va dentro de la caja del lateral de la ficha (interesados.php). */
.prueba--lateral { margin: 0; padding: 0; border: 0; gap: 0.9rem; background: none; }
.prueba--lateral .boton { width: 100%; }

/* Pago y carrito (bloques de WooCommerce) */
.pagina--tienda .wp-block-woocommerce-checkout, .pagina--tienda .wp-block-woocommerce-cart { margin-top: 0; }
/* Kadence saca los bloques «anchos» del contenedor con márgenes negativos. */
.pagina__cuerpo .alignwide, .pagina__cuerpo .alignfull { width: auto !important; max-width: 100% !important; margin-left: 0 !important; margin-right: 0 !important; }
.pagina--tienda .wc-block-components-button:not(.is-link) { min-height: 3.25rem; border-radius: 10px; background: var(--morado); color: var(--blanco); font: 700 0.95rem/1.15 var(--letra); letter-spacing: 0.04em; text-transform: uppercase; }
.pagina--tienda .wc-block-components-button:not(.is-link):hover { background: var(--noche); color: var(--blanco); }
.pagina--tienda .wc-block-components-title, .pagina--tienda .wc-block-components-checkout-step__title { font-family: var(--letra); font-weight: 800; color: var(--tinta); }
.pagina--tienda .wc-block-components-text-input input, .pagina--tienda .wc-block-components-combobox input, .pagina--tienda .wc-blocks-components-select select { border-radius: 10px !important; }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}

/* ---------------------------------------------------------------- Blog
 * El artículo es single.php (como page.php). El listado sigue siendo el de
 * Kadence: aquí se le quita la firma, que es el nombre de usuario, y se
 * compacta (Paco, 21-10: «se ve muy grande»; cada noticia ocupaba una pantalla
 * del móvil por la foto vertical). Móvil: lista con miniatura cuadrada, sin
 * extracto. Desde 40rem: tarjetas con la foto apaisada. */
.loop-entry .entry-meta .posted-by { display: none; }
.post-archive .loop-entry .post-thumbnail { display: block; }
.post-archive .loop-entry .post-thumbnail-inner { aspect-ratio: 16 / 9; height: auto !important; overflow: hidden; }
.post-archive .loop-entry .post-thumbnail img { width: 100%; height: 100% !important; object-fit: cover; }
.post-archive .loop-entry .entry-title { font-size: 1.3rem; line-height: 1.3; }
@media (max-width: 39.99rem) {
	.post-archive.grid-cols { gap: 0; }
	.post-archive .loop-entry { display: grid; grid-template-columns: 6rem minmax(0, 1fr); gap: 0.9rem; align-items: start; padding: 1rem 0; border-bottom: 1px solid var(--linea); border-radius: 0; background: transparent; box-shadow: none; }
	.post-archive .entry-list-item:first-child .loop-entry { padding-top: 0; }
	.post-archive .loop-entry .post-thumbnail-inner { aspect-ratio: 1; border-radius: 10px; }
	.post-archive .loop-entry .entry-content-wrap { padding: 0 !important; }
	.post-archive .loop-entry .entry-taxonomies { margin-bottom: 0.15rem; font-size: 0.7rem; }
	.post-archive .loop-entry .entry-title { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; font-size: 1.02rem; }
	.post-archive .loop-entry .entry-meta { margin: 0.25rem 0 0; font-size: 0.8rem; }
	.post-archive .loop-entry .entry-summary, .post-archive .loop-entry .entry-footer { display: none; }
}
.articulo__fecha { margin-top: 1rem; color: var(--lavanda-2); font-size: 0.95rem; }
.articulo__imagen { margin: 0 0 2rem; }
.articulo__imagen img { display: block; width: 100%; height: auto; border-radius: var(--radio); }
.contenido-editor > .articulo__imagen + p { font-size: 1.15rem; color: var(--tinta); }
.contenido-editor table { width: 100%; border-collapse: collapse; font-size: 0.97rem; }
.contenido-editor th, .contenido-editor td { padding: 0.6rem 0.75rem; text-align: left; border-bottom: 1px solid var(--linea); }
.contenido-editor thead th { color: var(--tinta); background: var(--papel); font-weight: 700; }
.contenido-editor td { color: var(--tinta-2); font-variant-numeric: tabular-nums; }
.articulo__otros { display: grid; gap: 0.75rem; margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid var(--linea); }
.articulo__otros a { color: var(--morado); font-weight: 700; text-decoration: none; }
.articulo__otros a::before { content: "→ "; }
.articulo__otros a:hover { color: var(--tinta); text-decoration: underline; }

/* Aviso de cookies (06-10): los tres botones iguales, a propósito (AEPD). */
.avisocookies { position: fixed; left: 1rem; right: 1rem; bottom: 1rem; z-index: 1000; max-width: 40rem; margin-inline: auto; padding: 1rem 1.1rem; border: 1px solid color-mix(in srgb, var(--azul-luz) 45%, transparent); border-radius: 14px; background: var(--noche-alto); color: var(--blanco); box-shadow: 0 10px 30px rgb(0 0 0 / 0.45); font-size: 0.92rem; line-height: 1.45; }
.avisocookies[hidden], .avisocookies [hidden] { display: none; }
.avisocookies__titulo { margin: 0 0 0.3rem; font-weight: 800; }
.avisocookies__texto { margin: 0 0 0.8rem; }
.avisocookies__elegir { display: grid; gap: 0.45rem; margin: 0 0 0.8rem; }
.avisocookies__opcion { display: flex; gap: 0.5rem; align-items: flex-start; }
.avisocookies__opcion input { margin-top: 0.2rem; accent-color: var(--azul-luz); }
.avisocookies__botones { display: grid; grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr)); gap: 0.5rem; }
.avisocookies__boton { padding: 0.6rem 0.8rem; border: 1px solid var(--azul-luz); border-radius: 999px; background: transparent; color: var(--blanco); font: 700 0.92rem/1.2 var(--letra); cursor: pointer; }
.avisocookies__boton:hover { background: var(--azul-luz); color: var(--noche-hondo); }
