/**
 * assets/css/style.css
 * ---------------------------------------------------------------------
 * Hoja de estilos ÚNICA y propia del sitio de la Fundación Uriel
 * Castiblanco. Escrita desde cero (sin Elementor, sin Bootstrap, sin
 * ningún framework ni librería de terceros) a partir de los colores,
 * tipografías y estructura reales del sitio original.
 *
 * Organización del archivo:
 *   1. Variables de marca (colores / tipografías / medidas)
 *   2. Reset básico
 *   3. Utilidades de layout (contenedor, grillas)
 *   4. Componentes: header, footer, botones, tarjetas, formulario,
 *      acordeón, slider del hero, modal de video
 *   5. Media queries (responsive)
 * ---------------------------------------------------------------------
 */

/* ======================================================================
   1. VARIABLES DE MARCA
   Tomadas del kit de diseño real del sitio (colores/tipografías que
   tenía configurados en Elementor): azul institucional, naranja de
   acento, gris de texto, y las 3 familias tipográficas usadas.
   ====================================================================== */
:root{
	--color-primario:   #3053BE; /* azul institucional */
	--color-secundario: #F79633; /* naranja de acento */
	--color-texto:      #444343; /* gris oscuro para párrafos */
	--color-blanco:     #FFFFFF;
	--color-fondo-claro:#F4F6FB;
	/* Paleta ampliada, tomada de los "colores personalizados" reales
	   que tenía configurados el kit de diseño de Elementor (se usan
	   para los íconos circulares y los bloques de "¿Qué hacemos?"). */
	--color-salmon: #EC6463;
	--color-morado: #644D8F;
	--color-verde:  #98C748;
	--color-azul-claro: #3D7FBE;
	--color-crema:  #FEF7EE;
	--color-azul-muy-claro: #EFF6FF;
	--color-borde:      #E3E7F1;

	--fuente-titulos: "Montserrat", Arial, Helvetica, sans-serif;
	--fuente-texto:   "Karla", Arial, Helvetica, sans-serif;

	--contenedor-max: 1170px;
	--radio-borde: 12px;
	--sombra-suave: 0 10px 30px rgba(48, 83, 190, 0.10);
}

/* ======================================================================
   2. RESET BÁSICO
   ====================================================================== */
*, *::before, *::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
	margin: 0;
	font-family: var(--fuente-texto);
	color: var(--color-texto);
	font-size: 16px;
	line-height: 1.7;
	background: var(--color-blanco);
}
img{ max-width: 100%; height: auto; display: block; }
a{ color: inherit; text-decoration: none; }
ul{ margin: 0; padding: 0; list-style: none; }
h1, h2, h3, h4{
	font-family: var(--fuente-titulos);
	color: #1c1c2e;
	line-height: 1.25;
	margin: 0 0 16px;
}
h1{ font-size: 46px; font-weight: 800; }
h2{ font-size: 34px; font-weight: 800; }
h3{ font-size: 22px; font-weight: 700; }
p{ margin: 0 0 16px; }
.skip-link{
	position: absolute; left: -9999px; top: 0; background: var(--color-primario);
	color: #fff; padding: 10px 16px; z-index: 10000;
}
.skip-link:focus{ left: 10px; top: 10px; }

/* ======================================================================
   3. LAYOUT
   ====================================================================== */
.contenedor{
	max-width: var(--contenedor-max);
	margin: 0 auto;
	padding: 0 24px;
}
.seccion{ padding: 56px 0; }
.seccion--claro{ background: var(--color-fondo-claro); }
.texto-centrado{ text-align: center; }
.eyebrow{
	display: inline-block;
	font-family: var(--fuente-texto);
	font-weight: 700;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--color-secundario);
	font-size: 14px;
	margin-bottom: 10px;
}
/* Acento decorativo bajo los títulos principales: 3 puntos + una
   barra corta, tal como se veía en el diseño original. */
.linea-decorativa{
	display: flex; align-items: center; gap: 8px; margin: 4px 0 26px;
}
.texto-centrado .linea-decorativa{ justify-content: center; }
.linea-decorativa::before{
	content: "···";
	color: var(--color-primario);
	font-size: 22px;
	letter-spacing: 2px;
	line-height: 1;
}
.linea-decorativa::after{
	content: "";
	width: 46px; height: 4px; border-radius: 4px;
	background: var(--color-primario);
}
.grid{ display: grid; gap: 30px; }
.grid--2{ grid-template-columns: repeat(2, 1fr); }
.grid--3{ grid-template-columns: repeat(3, 1fr); }
.grid--5{ grid-template-columns: repeat(5, 1fr); }
.flex-centro{ display: flex; align-items: center; }
.flex-entre{ display: flex; align-items: center; justify-content: space-between; }

/* ======================================================================
   4. BOTONES
   ====================================================================== */
.boton{
	display: inline-block;
	font-family: var(--fuente-texto);
	font-weight: 700;
	text-transform: uppercase;
	font-size: 14px;
	letter-spacing: 1px;
	padding: 15px 34px;
	border-radius: 30px;
	border: none;
	cursor: pointer;
	transition: transform .15s ease, box-shadow .15s ease, opacity .15s ease;
}
.boton--primario{ background: var(--color-primario); color: #fff; }
.boton--secundario{ background: var(--color-secundario); color: #fff; }
.boton:hover{ transform: translateY(-2px); box-shadow: var(--sombra-suave); opacity: .95; }

/* ======================================================================
   5. HEADER / NAVEGACIÓN
   ====================================================================== */
.site-header{
	position: sticky; top: 0; z-index: 500;
	background: #fff;
	box-shadow: 0 2px 12px rgba(0,0,0,.06);
}
.site-header__barra{
	display: flex; align-items: center; justify-content: space-between;
	max-width: var(--contenedor-max);
	margin: 0 auto;
	padding: 14px 24px;
	gap: 20px;
}
.site-header__logo img{ height: 56px; width: auto; }
.nav-principal{ display: flex; align-items: center; gap: 0; }
.nav-principal a{
	display: inline-block;
	position: relative;
	padding: 8px 14px;
	font-family: var(--fuente-texto);
	font-weight: 700;
	font-size: 14px;
	letter-spacing: .5px;
	text-transform: uppercase;
	color: var(--color-primario);
}
/* Separador "|" entre ítems del menú, como en el diseño original. */
.nav-principal a + a::before{
	content: "|";
	position: absolute; left: -3px; top: 50%; transform: translateY(-50%);
	color: var(--color-secundario); font-weight: 400;
}
.nav-principal a::after{
	content: "";
	position: absolute; left: 14px; right: 14px; bottom: 2px; height: 2px;
	background: var(--color-secundario);
	transform: scaleX(0); transition: transform .15s ease;
}
.nav-principal a:hover::after,
.nav-principal a[aria-current="page"]::after{ transform: scaleX(1); }
.nav-principal a[aria-current="page"]{ color: var(--color-secundario); }
.site-header__redes{ display: flex; gap: 10px; }
.site-header__redes a{
	width: 34px; height: 34px; border-radius: 50%;
	display: flex; align-items: center; justify-content: center;
	color: var(--color-primario);
}
.site-header__redes svg{ width: 17px; height: 17px; fill: var(--color-primario); }
.nav-toggle{
	display: none;
	background: none; border: none; cursor: pointer;
	width: 42px; height: 42px; padding: 8px;
}
.nav-toggle span{
	display: block; height: 3px; background: var(--color-primario);
	border-radius: 3px; margin: 5px 0; transition: transform .2s ease, opacity .2s ease;
}

/* ======================================================================
   6. HERO / SLIDER DE INICIO
   ====================================================================== */
.hero{
	position: relative;
	min-height: 560px;
	display: flex;
	align-items: center;
	overflow: hidden;
	background: linear-gradient(135deg, var(--color-primario), #1d3a94);
}
.hero__slide{
	position: absolute; inset: 0;
	display: flex; align-items: center;
	opacity: 0; visibility: hidden;
	transition: opacity .6s ease;
	background-size: cover; background-position: center;
}
.hero__slide.activo{ opacity: 1; visibility: visible; }
.hero__slide::before{
	content: ""; position: absolute; inset: 0;
	background: linear-gradient(135deg, rgba(29,58,148,.88), rgba(48,83,190,.75));
}
.hero__contenido{ position: relative; z-index: 2; color: #fff; max-width: 640px; padding: 60px 24px; }
.hero__eyebrow{ color: var(--color-secundario); font-weight: 700; letter-spacing: 2px; text-transform: uppercase; font-size: 14px; }
.hero__titulo{ color: #fff; font-size: 48px; margin: 14px 0 26px; }
.hero__dots{ position: absolute; bottom: 24px; left: 0; right: 0; display: flex; justify-content: center; gap: 10px; z-index: 3; }
.hero__dots button{
	width: 11px; height: 11px; border-radius: 50%; border: 2px solid #fff;
	background: transparent; cursor: pointer; padding: 0;
}
.hero__dots button.activo{ background: #fff; }

/* ======================================================================
   6b. SECCIÓN DESTACADA AZUL (con cinta decorativa), como la de
   "Somos el corazón social..." en Inicio.
   ====================================================================== */
.seccion-destacada{
	background: var(--color-primario);
	color: #fff;
	position: relative;
	overflow: hidden;
}
.seccion-destacada h2{ color: #fff; }
.seccion-destacada p{ color: rgba(255,255,255,.9); }
.seccion-destacada .boton--secundario{ background: #fff; color: var(--color-primario); }
.seccion-destacada__cinta{
	position: absolute;
	right: -40px; bottom: -30px;
	width: 260px;
	opacity: .95;
	pointer-events: none;
	z-index: 1;
}
.seccion-destacada .contenedor{ position: relative; z-index: 2; }

/* ======================================================================
   15b. RECAPTCHA — insignia oculta + texto de aviso obligatorio
   Google permite ocultar visualmente el badge flotante de reCAPTCHA v3
   siempre que se muestre en su lugar este aviso con los enlaces a su
   Política de Privacidad y Términos de Servicio (es una condición de
   sus términos de uso, no un adorno opcional).
   ====================================================================== */
.grecaptcha-badge{ visibility: hidden !important; }
.aviso-recaptcha{
	font-size: 12px;
	color: #8a8a8a;
	margin-top: 14px;
	line-height: 1.5;
}
.aviso-recaptcha a{ color: #8a8a8a; text-decoration: underline; }

/* ======================================================================
   16. ANIMACIÓN DE APARICIÓN AL HACER SCROLL
   Se aplica la clase .aparecer a cualquier bloque que deba entrar con
   un ligero desvanecido + desplazamiento; assets/js/main.js agrega
   la clase .visible cuando el bloque entra en pantalla (usando
   IntersectionObserver, sin ninguna librería externa).
   ====================================================================== */
.aparecer{
	opacity: 0;
	transform: translateY(24px);
	transition: opacity .6s ease, transform .6s ease;
}
.aparecer.visible{ opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce){
	.aparecer{ opacity: 1; transform: none; transition: none; }
}
.tarjeta{
	background: #fff;
	border: 1px solid var(--color-borde);
	border-radius: var(--radio-borde);
	padding: 34px 26px;
	text-align: center;
	transition: transform .15s ease, box-shadow .15s ease;
}
.tarjeta:hover{ transform: translateY(-4px); box-shadow: var(--sombra-suave); }
.tarjeta__icono{ width: 64px; height: 64px; margin: 0 auto 18px; }
.tarjeta__icono img{ width: 100%; height: 100%; object-fit: contain; }
/* Algunos íconos del set original vienen en blanco sobre fondo
   transparente (pensados para ir sobre un círculo de color, no sobre
   una tarjeta blanca) — este modificador les da ese fondo para que
   se vean, en vez de quedar "invisibles". */
.tarjeta__icono--fondo{
	background: var(--color-primario);
	border-radius: 50%;
	padding: 15px;
}
.tarjeta h3{ font-size: 18px; margin-bottom: 10px; }
.tarjeta p{ font-size: 15px; color: #6b6b6b; margin: 0; }

.paso{ display: flex; gap: 20px; align-items: flex-start; }
.paso__numero{
	flex: 0 0 auto; width: 48px; height: 48px; border-radius: 50%;
	background: var(--color-secundario); color: #fff; font-family: var(--fuente-titulos);
	font-weight: 800; display: flex; align-items: center; justify-content: center;
}
.paso h3{ margin-bottom: 6px; font-size: 18px; }
.paso p{ font-size: 15px; color: #6b6b6b; margin: 0; }

.linea-estrategica{
	display: flex; gap: 22px; align-items: flex-start;
	padding: 22px 0; border-bottom: 1px solid var(--color-borde);
}
.linea-estrategica:last-child{ border-bottom: none; }
.linea-estrategica__numero{
	flex: 0 0 auto; font-family: var(--fuente-titulos); font-weight: 800;
	font-size: 28px; color: var(--color-primario); width: 46px;
}

/* ======================================================================
   8b. CÍRCULOS DE ÍCONOS CONECTADOS (sección "Educación Virtual con
   Sentido Humano" de Inicio) — círculos de color con línea que los une.
   ====================================================================== */
.circulos-conectados{
	display: flex; justify-content: center; align-items: flex-start;
	gap: 0; flex-wrap: wrap; position: relative;
}
.circulo-item{
	flex: 1 1 220px; max-width: 260px; text-align: center; position: relative; padding: 0 14px;
}
.circulo-item__aro{
	width: 110px; height: 110px; border-radius: 50%;
	margin: 0 auto 18px; display: flex; align-items: center; justify-content: center;
	position: relative; z-index: 2;
}
.circulo-item__aro img{ width: 46px; height: 46px; object-fit: contain; }
/* Línea horizontal que conecta un círculo con el siguiente. */
.circulo-item:not(:last-child)::after{
	content: "";
	position: absolute; top: 55px; left: 60%; right: -40%;
	height: 2px; background: var(--color-borde); z-index: 1;
}
.circulo-item h3{ font-size: 17px; margin-bottom: 8px; }
.circulo-item p{ font-size: 14px; color: #6b6b6b; margin: 0; }

/* ======================================================================
   8c. BLOQUES DE COLOR "¿QUÉ HACEMOS?" (Inicio y página ¿Qué hacemos?)
   Botones/tarjetas rectangulares de color sólido con texto blanco.
   ====================================================================== */
.bloques-servicios{
	display: flex; flex-wrap: wrap; justify-content: center; gap: 18px;
}
.bloque-servicio{
	flex: 1 1 220px; max-width: 260px; min-height: 100px;
	border-radius: 16px; display: flex; align-items: center; justify-content: center;
	text-align: center; padding: 20px; color: #fff;
	font-family: var(--fuente-titulos); font-weight: 800; font-size: 15px;
	text-transform: uppercase; letter-spacing: .3px;
}
.bloque-servicio--primario{ background: var(--color-primario); }
.bloque-servicio--morado{ background: var(--color-morado); }
.bloque-servicio--salmon{ background: var(--color-salmon); }
.bloque-servicio--verde{ background: var(--color-verde); }
.bloque-servicio--azul-claro{ background: var(--color-azul-claro); }

/* ======================================================================
   8. LISTA "¿A QUIÉNES LLEGAMOS?"
   ====================================================================== */
.lista-check{ display: grid; gap: 14px; }
.lista-check li{
	display: flex; align-items: center; gap: 12px;
	font-weight: 600; font-size: 15px;
}
.lista-check li::before{
	content: "";
	flex: 0 0 auto; width: 22px; height: 22px; border-radius: 50%;
	background: var(--color-secundario);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 16.2l-3.5-3.6L4 14.1l5 5 11-11-1.5-1.5z'/%3E%3C/svg%3E") center/contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 16.2l-3.5-3.6L4 14.1l5 5 11-11-1.5-1.5z'/%3E%3C/svg%3E") center/contain no-repeat;
}

/* ======================================================================
   9. ACORDEÓN (página ¿Quiénes somos?)
   ====================================================================== */
.acordeon-item{ border-bottom: 1px solid var(--color-borde); }
.acordeon-pregunta{
	width: 100%; text-align: left; background: none; border: none; cursor: pointer;
	padding: 20px 4px; display: flex; justify-content: space-between; align-items: center;
	font-family: var(--fuente-titulos); font-weight: 700; font-size: 16px; color: #1c1c2e;
}
.acordeon-pregunta::after{
	content: "+"; font-size: 22px; color: var(--color-primario); flex: 0 0 auto; margin-left: 12px;
}
.acordeon-item.abierto .acordeon-pregunta::after{ content: "–"; }
.acordeon-respuesta{
	max-height: 0; overflow: hidden; transition: max-height .25s ease;
	font-size: 15px; color: #6b6b6b;
}
.acordeon-item.abierto .acordeon-respuesta{ max-height: 400px; }
.acordeon-respuesta p{ padding: 0 4px 20px; margin: 0; }

/* ======================================================================
   10. FORMULARIO DE CONTACTO
   ====================================================================== */
.form-contacto{ display: grid; gap: 18px; }
.form-contacto__fila{ display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.campo label{ display: block; font-weight: 700; font-size: 14px; margin-bottom: 6px; }
.campo input[type="text"],
.campo input[type="email"],
.campo input[type="tel"],
.campo textarea{
	width: 100%; padding: 13px 16px; border-radius: 20px; border: 1px solid var(--color-borde);
	background: var(--color-fondo-claro); font-family: var(--fuente-texto); font-size: 15px;
}
.campo textarea{ border-radius: 16px; resize: vertical; min-height: 110px; }
.campo-radio{ display: flex; flex-wrap: wrap; gap: 10px 20px; }
.campo-radio label{ font-weight: 500; display: flex; align-items: center; gap: 8px; font-size: 14px; }
.fuc-form-mensaje{ margin-top: 6px; padding: 12px 16px; border-radius: 8px; font-size: 14px; line-height: 1.4; }
.fuc-form-mensaje--ok{ background: #e6f4ea; color: #1e4620; border: 1px solid #b7dfc0; }
.fuc-form-mensaje--error{ background: #fdecea; color: #611a15; border: 1px solid #f5c6c2; }

/* ======================================================================
   11. VIDEO (modal simple)
   ====================================================================== */
.video-disparador{
	position: relative; display: inline-flex; align-items: center; justify-content: center;
	width: 72px; height: 72px; border-radius: 50%; background: #fff; cursor: pointer;
	box-shadow: var(--sombra-suave); border: none;
}
.video-disparador::after{
	content: ""; width: 0; height: 0;
	border-top: 12px solid transparent; border-bottom: 12px solid transparent;
	border-left: 18px solid var(--color-primario); margin-left: 4px;
}
.video-modal{
	position: fixed; inset: 0; background: rgba(10,15,35,.85);
	display: none; align-items: center; justify-content: center; z-index: 2000; padding: 24px;
}
.video-modal.abierto{ display: flex; }
.video-modal__caja{ width: 100%; max-width: 900px; aspect-ratio: 16/9; position: relative; }
.video-modal__caja video{ width: 100%; height: 100%; border-radius: 10px; background: #000; }
.video-modal__cerrar{
	position: absolute; top: -40px; right: 0; background: none; border: none;
	color: #fff; font-size: 28px; cursor: pointer; line-height: 1;
}

/* ======================================================================
   12. FOOTER
   ====================================================================== */
.site-footer{ background: var(--color-primario); color: #fff; padding: 60px 0 0; }
.site-footer h4{ color: #fff; font-size: 18px; margin-bottom: 18px; display:flex; align-items:center; gap:8px; }
.site-footer a{ color: #fff; }
.site-footer a:hover{ text-decoration: underline; }
.footer-grid{ display: grid; grid-template-columns: 1.4fr 1fr; gap: 40px; padding-bottom: 40px; }
.footer-grid .etiqueta{
	display: block; color: var(--color-secundario); font-weight: 700;
	font-size: 15px; margin: 18px 0 6px;
}
.footer-grid .etiqueta:first-of-type{ margin-top: 0; }
.footer-grid p{ font-size: 14px; margin: 0 0 8px; }
.footer-grid hr{ border: none; border-top: 1px solid rgba(255,255,255,.2); margin: 14px 0; }
.redes-sociales{ display: flex; gap: 12px; margin-top: 10px; }
.redes-sociales a{
	width: 38px; height: 38px; border-radius: 50%; background: #fff;
	display: flex; align-items: center; justify-content: center;
}
.redes-sociales svg{ width: 18px; height: 18px; fill: var(--color-primario); }
.site-footer__mapa iframe{ width: 100%; height: 220px; border: 0; border-radius: 10px; margin-top: 10px; }
.site-footer__copy{
	text-align: center; margin: 0; padding: 18px 20px;
	background: var(--color-secundario); font-size: 13px; color: #fff;
}

/* ======================================================================
   13. BOTÓN "VOLVER ARRIBA"
   ====================================================================== */
.volver-arriba{
	position: fixed; right: 24px; bottom: 24px; width: 46px; height: 46px;
	border-radius: 50%; background: var(--color-secundario); color: #fff; border: none;
	cursor: pointer; display: flex; align-items: center; justify-content: center;
	opacity: 0; visibility: hidden; transform: translateY(10px);
	transition: opacity .2s ease, transform .2s ease, visibility .2s ease;
	z-index: 400; font-size: 18px;
}
.volver-arriba.visible{ opacity: 1; visibility: visible; transform: translateY(0); }

/* ======================================================================
   13b. BOTÓN Y PANEL DE ACCESIBILIDAD
   Widget propio (sin librerías externas ni servicios de terceros) con
   11 ajustes reales de accesibilidad. La preferencia se guarda en
   localStorage (ver assets/js/accesibilidad.js) y se mantiene al
   navegar entre las 5 páginas del sitio.
   ====================================================================== */
.accesibilidad-btn{
	position: fixed; left: 24px; bottom: 24px; z-index: 401;
	width: 50px; height: 50px; border-radius: 50%;
	background: var(--color-primario); color: #fff; border: none;
	display: flex; align-items: center; justify-content: center;
	cursor: pointer; box-shadow: 0 4px 14px rgba(0,0,0,.2);
}
.accesibilidad-btn svg{ width: 26px; height: 26px; fill: #fff; }

.accesibilidad-panel{
	position: fixed; left: 24px; bottom: 84px; z-index: 401;
	width: 380px; max-width: calc(100vw - 32px);
	max-height: min(640px, calc(100vh - 120px));
	background: #fff; border-radius: 16px; box-shadow: 0 16px 44px rgba(0,0,0,.25);
	display: none; flex-direction: column; overflow: hidden;
}
.accesibilidad-panel.abierto{ display: flex; }
.accesibilidad-panel__header{
	background: #1c2340; color: #fff;
	padding: 16px 18px; display: flex; align-items: center; justify-content: space-between;
	flex: 0 0 auto;
}
.accesibilidad-panel__header h4{ margin: 0; font-size: 16px; color: #fff; }
.accesibilidad-panel__cerrar{
	background: rgba(255,255,255,.12); border: none; color: #fff;
	width: 30px; height: 30px; border-radius: 50%; cursor: pointer; font-size: 16px;
	display: flex; align-items: center; justify-content: center;
}
.accesibilidad-panel__body{ padding: 16px; overflow-y: auto; }
.accesibilidad-reset-todo{
	width: 100%; padding: 12px; margin-bottom: 14px;
	border-radius: 10px; border: 1px solid var(--color-borde);
	background: var(--color-fondo-claro); font-weight: 700; font-size: 14px; cursor: pointer;
}
.accesibilidad-grid{ display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.accesibilidad-card{
	border: 1.5px solid var(--color-borde); border-radius: 12px; background: #fff;
	padding: 16px 10px; cursor: pointer; text-align: center;
	display: flex; flex-direction: column; align-items: center; gap: 10px;
	font-size: 13px; font-weight: 600; color: #1c1c2e; line-height: 1.25;
	transition: border-color .15s ease, background .15s ease;
}
.accesibilidad-card:hover{ border-color: var(--color-primario); }
.accesibilidad-card svg{ width: 26px; height: 26px; }
.accesibilidad-card.activo{ border-color: var(--color-primario); background: var(--color-azul-muy-claro); }
.accesibilidad-card__puntos{ display: flex; gap: 4px; margin-top: -4px; }
.accesibilidad-card__puntos span{ width: 5px; height: 5px; border-radius: 50%; background: var(--color-borde); }
.accesibilidad-card__puntos span.lleno{ background: var(--color-primario); }

/* Estados que activa el panel, aplicados en <html> */
html.a11y-contraste{ filter: contrast(1.3) saturate(1.15); }
html.a11y-contraste body{ background: #000; color: #fff; }
html.a11y-contraste .site-header,
html.a11y-contraste .tarjeta,
html.a11y-contraste .form-contacto{ background: #000; color: #fff; }
html.a11y-contraste a{ color: #ffd166; }

html.a11y-grises{ filter: grayscale(1); }
html.a11y-grises.a11y-contraste{ filter: grayscale(1) contrast(1.3); }

html.a11y-subrayado a{ text-decoration: underline !important; text-underline-offset: 3px; }

html.a11y-texto-1{ font-size: 112.5%; }
html.a11y-texto-2{ font-size: 125%; }

html.a11y-espaciado body{ letter-spacing: .05em; line-height: 2; }
html.a11y-espaciado p{ margin-bottom: 22px; }

html.a11y-lectura-facil body{ font-family: Arial, Helvetica, sans-serif; line-height: 1.9; }
html.a11y-lectura-facil h1, html.a11y-lectura-facil h2, html.a11y-lectura-facil h3{ font-family: Arial, Helvetica, sans-serif; }

html.a11y-sin-animaciones *{ animation: none !important; transition: none !important; scroll-behavior: auto !important; }
html.a11y-sin-animaciones .aparecer{ opacity: 1 !important; transform: none !important; }

html.a11y-sin-imagenes img{ display: none !important; }

html.a11y-alinear-izq body,
html.a11y-alinear-izq p,
html.a11y-alinear-izq h1, html.a11y-alinear-izq h2, html.a11y-alinear-izq h3{ text-align: left !important; }

html.a11y-cursor-grande,
html.a11y-cursor-grande *{
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24"><path fill="%231c2340" stroke="white" stroke-width="1" d="M3 2l6 18 2.5-7L19 10z"/></svg>') 2 2, auto !important;
}

html.a11y-leyendo .accesibilidad-card[data-a11y="leer-pagina"]{ border-color: var(--color-secundario); background: #fff7ec; }

/* ======================================================================
   14. RESPONSIVE
   ====================================================================== */
@media (max-width: 900px){
	.grid--2{ grid-template-columns: 1fr; }
	.grid--3{ grid-template-columns: repeat(2, 1fr); }
	.grid--5{ grid-template-columns: repeat(2, 1fr); }
	.footer-grid{ grid-template-columns: 1fr; gap: 30px; }
	.hero__titulo{ font-size: 36px; }
	h1{ font-size: 34px; }
	h2{ font-size: 26px; }
}
@media (max-width: 700px){
	.nav-toggle{ display: block; }
	.site-header__redes{ display: none; }
	.nav-principal a + a::before{ display: none; }
	.nav-principal{
		position: absolute; top: 100%; left: 0; right: 0;
		flex-direction: column; background: #fff; gap: 0;
		box-shadow: 0 10px 20px rgba(0,0,0,.08);
		max-height: 0; overflow: hidden; transition: max-height .25s ease;
	}
	.nav-principal.abierto{ max-height: 320px; padding: 10px 0; }
	.nav-principal a{ border-radius: 0; padding: 14px 24px; }
	.form-contacto__fila{ grid-template-columns: 1fr; }
	.grid--3{ grid-template-columns: 1fr; }
	.grid--5{ grid-template-columns: 1fr; }
	.paso{ flex-direction: column; }
	.seccion{ padding: 46px 0; }
}
