/**
 * 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)
 *   6. Sección 17 (al final): ajustes de la auditoría del 2026-10-06 —
 *      foco visible, carrusel accesible, imágenes reales en el hero,
 *      formulario, política de datos, pantallas pequeñas, impresión.
 *      Se agregaron AL FINAL a propósito (sin reescribir lo anterior)
 *      para que el diseño original quede intacto y los ajustes sean
 *      fáciles de identificar.
 *
 * PANEL DE ACCESIBILIDAD v2 (2026-10-06): todos los font-size pasaron de
 * px a rem (16px = 1rem, se ve idéntico). Antes "Agrandar texto" ponía
 * html{font-size:125%} pero NO agrandaba nada, porque todo el sitio
 * usaba px fijos; con rem el texto escala de verdad (y además respeta
 * el tamaño de letra que la persona configure en su navegador, WCAG
 * 1.4.4).
 * ---------------------------------------------------------------------
 */

/* ======================================================================
   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: 1rem;
	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: 2.875rem; font-weight: 800; }
h2{ font-size: 2.125rem; font-weight: 800; }
h3{ font-size: 1.375rem; 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: 0.875rem;
	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: 1.375rem;
	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: 0.875rem;
	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: 0.875rem;
	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: 0.875rem; }
.hero__titulo{ color: #fff; font-size: 3rem; 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: 0.75rem;
	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/fuc.js (bloque 1) 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: 1.125rem; margin-bottom: 10px; }
.tarjeta p{ font-size: 0.9375rem; 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: 1.125rem; }
.paso p{ font-size: 0.9375rem; 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: 1.75rem; 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: 1.0625rem; margin-bottom: 8px; }
.circulo-item p{ font-size: 0.875rem; 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: 0.9375rem;
	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: 0.9375rem;
}
.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: 1rem; color: #1c1c2e;
}
.acordeon-pregunta::after{
	content: "+"; font-size: 1.375rem; 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: 0.9375rem; 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: 0.875rem; 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: 0.9375rem;
}
.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: 0.875rem; }
.fuc-form-mensaje{ margin-top: 6px; padding: 12px 16px; border-radius: 8px; font-size: 0.875rem; 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: 1.75rem; 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: 1.125rem; 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: 0.9375rem; margin: 18px 0 6px;
}
.footer-grid .etiqueta:first-of-type{ margin-top: 0; }
.footer-grid p{ font-size: 0.875rem; 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: 0.8125rem; 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: 1.125rem;
}
.volver-arriba.visible{ opacity: 1; visibility: visible; transform: translateY(0); }

/* ======================================================================
   13b. BOTÓN Y PANEL DE ACCESIBILIDAD
   Desde el 2026-10-06 (v2 del panel) todos los estilos del botón, del
   panel y de los ajustes que aplica viven en su propio archivo:
   assets/css/accesibilidad.css (se carga después de este).
   ====================================================================== */

/* ======================================================================
   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: 2.25rem; }
	h1{ font-size: 2.125rem; }
	h2{ font-size: 1.625rem; }
}
@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; }
}


/* ======================================================================
   17. AUDITORÍA 2026-10-06 — ACCESIBILIDAD, MULTIDISPOSITIVO Y AJUSTES
   Nada de esta sección cambia colores, textos ni la distribución del
   diseño: solo agrega lo que faltaba para cumplir WCAG 2.1 AA y
   comportarse bien en celulares pequeños, tabletas e impresión.
   ====================================================================== */

/* 17.1 Texto solo para lectores de pantalla (invisible en pantalla). */
.sr-only{
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* 17.2 Foco visible al navegar con teclado (WCAG 2.4.7). Antes el
   sitio no definía ningún estilo de foco propio y en varios botones el
   navegador no mostraba nada. :focus-visible solo se activa con
   teclado, no al hacer clic con el mouse, así que no altera el diseño. */
:focus-visible{
	outline: 3px solid var(--color-primario);
	outline-offset: 3px;
	border-radius: 4px;
}
/* Sobre fondos azules u oscuros el contorno azul no se vería: blanco. */
.hero :focus-visible,
.seccion-destacada :focus-visible,
.site-footer :focus-visible,
.accesibilidad-panel__header :focus-visible,
.video-modal :focus-visible,
.accesibilidad-btn:focus-visible,
.volver-arriba:focus-visible{
	outline-color: #fff;
	box-shadow: 0 0 0 6px rgba(28,35,64,.6);
}
/* El <main> recibe el foco al usar "Saltar al contenido": sin contorno. */
#contenido:focus{ outline: none; }

/* 17.3 Hero: imágenes reales (<picture>) en lugar de fondo CSS. Con
   object-fit: cover se ven exactamente igual que el background-size:
   cover anterior. El degradado azul (::before) queda encima de la foto
   y el texto encima de ambos. */
.hero__fondo,
.hero__fondo img{
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	object-fit: cover; object-position: center;
	max-width: none;
}
.hero__fondo{ z-index: 0; }
.hero__slide::before{ z-index: 1; }

/* 17.4 Controles del carrusel: botón de pausa junto a los puntos
   (WCAG 2.2.2 — todo contenido que se mueve solo por más de 5 s debe
   poder pausarse). Mismo estilo de borde blanco que los puntos. */
.hero__controles{
	position: absolute; bottom: 20px; left: 0; right: 0; z-index: 3;
	display: flex; align-items: center; justify-content: center; gap: 14px;
}
.hero__controles .hero__dots{ position: static; }
.hero__pausa{
	width: 30px; height: 30px; border-radius: 50%;
	border: 2px solid #fff; background: transparent; color: #fff;
	display: inline-flex; align-items: center; justify-content: center;
	cursor: pointer; padding: 0;
}
.hero__pausa svg{ width: 14px; height: 14px; fill: #fff; }
.hero__pausa-icono--play{ display: none; }
.hero__pausa[aria-pressed="true"] .hero__pausa-icono--pausa{ display: none; }
.hero__pausa[aria-pressed="true"] .hero__pausa-icono--play{ display: block; }
/* Área táctil ampliada de los puntos (mín. 24×24 px, WCAG 2.5.8) sin
   cambiar su tamaño visual de 11 px. */
.hero__dots button{ position: relative; }
.hero__dots button::after{ content: ""; position: absolute; inset: -8px; }

/* 17.5 Títulos del pie y del panel de accesibilidad: pasaron de <h4> a
   <h2> por jerarquía correcta; aquí se les devuelve el tamaño de antes. */
.site-footer .site-footer__titulo{
	color: #fff; font-size: 1.125rem; font-weight: 700;
	margin-bottom: 18px; display: flex; align-items: center; gap: 8px;
}
.site-footer__contacto{ font-style: normal; } /* <address> va en cursiva por defecto */
.site-footer__copy a{ text-decoration: underline; text-underline-offset: 2px; }

/* 17.6 Acordeón: el <h3> que envuelve cada botón no debe cambiar su
   apariencia; los paneles cerrados quedan ocultos también para
   lectores de pantalla (antes solo tenían altura 0). */
.acordeon-titulo{ margin: 0; font-size: inherit; line-height: inherit; }
.acordeon-respuesta{ visibility: hidden; transition: max-height .25s ease, visibility 0s linear .25s; }
.acordeon-item.abierto .acordeon-respuesta{ visibility: visible; transition: max-height .25s ease, visibility 0s; }

/* 17.7 Formulario */
.campo-grupo{ border: 0; padding: 0; margin: 0; min-width: 0; }
.campo-grupo legend{ display: block; font-weight: 700; font-size: 0.875rem; margin-bottom: 6px; padding: 0; }
.campo-consentimiento label{
	display: flex; align-items: flex-start; gap: 10px;
	font-weight: 500; font-size: 0.875rem; line-height: 1.5;
}
.campo-consentimiento input{ margin-top: 4px; flex: 0 0 auto; width: 18px; height: 18px; }
.campo-consentimiento a{ color: var(--color-primario); text-decoration: underline; }
.campo-radio input{ width: 18px; height: 18px; flex: 0 0 auto; }
/* Campo trampa anti-robots: fuera de la pantalla (no display:none,
   porque algunos robots detectan y saltan los campos ocultos). */
.campo-trampa{ position: absolute !important; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }
/* La región de estado siempre existe (para lectores de pantalla) pero
   no ocupa espacio mientras está vacía. */
.fuc-form-mensaje:empty{ padding: 0; margin: 0; border: 0; }
.form-contacto{ position: relative; }
.form-contacto input:focus-visible,
.form-contacto textarea:focus-visible{ outline-offset: 1px; }
/* Campo marcado como inválido tras intentar enviar (lo pone el JS). */
.campo [aria-invalid="true"]{ border-color: #c0392b; }

/* 17.8 Página de Política de datos */
.texto-legal h2{ font-size: 1.375rem; margin-top: 34px; }
.texto-legal p, .texto-legal li{ font-size: 1rem; }
.texto-legal a{ color: var(--color-primario); text-decoration: underline; }
.lista-legal{ list-style: disc; padding-left: 22px; margin: 0 0 16px; }
.lista-legal li{ margin-bottom: 8px; }

/* 17.9 Menú móvil cerrado: además de altura 0, oculto para teclado y
   lectores de pantalla (antes el Tab entraba en enlaces invisibles). */
@media (max-width: 700px){
	.nav-principal{ visibility: hidden; transition: max-height .25s ease, visibility 0s linear .25s; }
	.nav-principal.abierto{ visibility: visible; transition: max-height .25s ease, visibility 0s; }
	/* Botón hamburguesa con área táctil cómoda (44×44 px). */
	.nav-toggle{ width: 44px; height: 44px; }
	.site-header__logo img{ height: 48px; }
	/* La línea que une los 3 círculos no tiene sentido cuando se apilan. */
	.circulo-item:not(:last-child)::after{ display: none; }
	.circulo-item{ flex-basis: 100%; max-width: 320px; margin-bottom: 26px; }
	.bloque-servicio{ flex-basis: 100%; max-width: 100%; }
	.mapa-contacto{ min-height: 300px !important; }
	.hero{ min-height: 500px; }
	.hero__contenido{ padding: 50px 20px 80px; }
	.seccion-destacada__cinta{ width: 160px; right: -30px; bottom: -20px; opacity: .5; }
	.volver-arriba{ right: 16px; bottom: 16px; }
	.footer-grid{ text-align: left; }
}

/* 17.10 Celulares pequeños (≤ 480 px, p. ej. 360×640). */
@media (max-width: 480px){
	.contenedor{ padding: 0 18px; }
	h1{ font-size: 1.75rem; }
	h2{ font-size: 1.4375rem; }
	h3{ font-size: 1.1875rem; }
	.hero__titulo{ font-size: 1.8125rem; }
	.boton{ padding: 14px 26px; }
	.seccion{ padding: 40px 0; }
	.linea-estrategica{ gap: 14px; }
	.linea-estrategica__numero{ font-size: 1.5rem; width: 32px; }
	.campo-radio{ flex-direction: column; gap: 10px; }
	.video-modal{ padding: 12px; }
	.video-modal__cerrar{ top: -44px; right: 4px; font-size: 2rem; }
}

/* 17.11 Tabletas en horizontal (701–1024 px): 5 tarjetas en 3 columnas
   en vez de 2 apretadas o 5 diminutas. */
@media (min-width: 701px) and (max-width: 1024px){
	.grid--5{ grid-template-columns: repeat(3, 1fr); }
	.nav-principal a{ padding: 8px 10px; font-size: 0.8125rem; }
}

/* 17.12 Pantallas muy anchas: el hero no se estira de forma exagerada. */
@media (min-width: 1600px){
	.hero{ min-height: 640px; }
}

/* 17.13 Movimiento reducido (preferencia del sistema operativo o el
   ajuste "Detener animaciones" del panel): sin transiciones del
   carrusel, sin desplazamiento suave y sin saltos al pasar el mouse. */
@media (prefers-reduced-motion: reduce){
	html{ scroll-behavior: auto; }
	.hero__slide, .boton, .tarjeta, .volver-arriba, .acordeon-respuesta, .nav-principal{ transition: none !important; }
	.boton:hover, .tarjeta:hover{ transform: none; }
}

/* 17.14 Impresión: sin menú, botones flotantes, mapa ni formulario. */
@media print{
	.site-header, .nav-toggle, .accesibilidad-btn, .accesibilidad-panel,
	.volver-arriba, .hero__controles, .video-disparador, .video-modal,
	#contacto, .skip-link{ display: none !important; }
	body{ color: #000; font-size: 12pt; }
	.aparecer{ opacity: 1 !important; transform: none !important; }
	.hero{ min-height: 0; }
	.hero__slide:not(.activo){ display: none; }
	.seccion{ padding: 18px 0; }
	a[href^="http"]::after{ content: " (" attr(href) ")"; font-size: 10pt; }
}

/* 17.15 Modo "Contraste alto" del panel: corrige los colores de marca
   que, por defecto, no alcanzan el contraste mínimo WCAG 4.5:1 (medido
   en la auditoría: blanco sobre naranja #F79633 = 2.24:1, blanco sobre
   verde #98C748 = 1.98:1, blanco sobre salmón #EC6463 = 3.2:1, naranja
   sobre blanco = 2.24:1). Los colores normales del diseño NO se tocan:
   esto solo aplica cuando la persona activa el modo desde el panel. */
html.a11y-contraste .eyebrow,
html.a11y-contraste .hero__eyebrow,
html.a11y-contraste .footer-grid .etiqueta{ color: #ffd166; }
html.a11y-contraste .boton--secundario,
html.a11y-contraste .boton--primario,
html.a11y-contraste .bloque-servicio,
html.a11y-contraste .paso__numero,
html.a11y-contraste .volver-arriba,
html.a11y-contraste .site-footer__copy{ background: #000 !important; color: #fff !important; border: 2px solid #ffd166; }
html.a11y-contraste .seccion--claro,
html.a11y-contraste .seccion-destacada,
html.a11y-contraste .site-footer,
html.a11y-contraste .hero__slide::before{ background: #000; }
html.a11y-contraste h1, html.a11y-contraste h2, html.a11y-contraste h3,
html.a11y-contraste .tarjeta p, html.a11y-contraste .paso p,
html.a11y-contraste .circulo-item p, html.a11y-contraste .acordeon-pregunta,
html.a11y-contraste .acordeon-respuesta, html.a11y-contraste .aviso-recaptcha,
html.a11y-contraste .aviso-recaptcha a{ color: #fff !important; }
html.a11y-contraste .campo input, html.a11y-contraste .campo textarea{ background: #000; color: #fff; border-color: #fff; }

/* 17.16 (2026-10-06b) Cinta decorativa de la sección azul como fondo CSS
   (antes <img alt="">). Mismo tamaño y posición que la regla original
   .seccion-destacada__cinta de la sección 6b; aspect-ratio = 822×1024
   (proporción del archivo). image-set: WebP liviano y PNG de respaldo. */
.seccion-destacada__cinta{
	display: block;
	aspect-ratio: 822 / 1024;
	background: url('/assets/img/2026/01/Icono-Lazo_naranja-822x1024.png') center / contain no-repeat;
	background-image: image-set(url('/assets/img/opt/lazo-naranja-520.webp') type('image/webp'), url('/assets/img/2026/01/Icono-Lazo_naranja-822x1024.png') type('image/png'));
}
html.a11y-sin-imagenes .seccion-destacada__cinta{ display: none; }

/* 17.17 (2026-10-06d) Selector de idioma ES | EN — mismo lenguaje visual
   que el menú: mayúsculas, azul institucional, separador "|" naranja y
   subrayado naranja en el idioma activo. Va junto a las redes sociales;
   en celular se queda visible al lado del botón del menú. */
.site-header__acciones{ display: flex; align-items: center; gap: 14px; }
.selector-idioma{
	display: flex; align-items: center; gap: 6px;
	font-family: var(--fuente-texto); font-weight: 700; font-size: 0.8125rem; letter-spacing: .5px;
}
.selector-idioma__icono{ width: 17px; height: 17px; fill: none; stroke: var(--color-primario); stroke-width: 1.7; }
.selector-idioma a{
	position: relative; color: var(--color-primario); padding: 6px 4px; min-width: 28px; text-align: center;
	text-decoration: none;
}
.selector-idioma a::after{
	content: ""; position: absolute; left: 4px; right: 4px; bottom: 1px; height: 2px;
	background: var(--color-secundario); transform: scaleX(0); transition: transform .15s ease;
}
.selector-idioma a:hover::after,
.selector-idioma a[aria-current="true"]::after{ transform: scaleX(1); }
.selector-idioma a[aria-current="true"]{ color: var(--color-secundario); }
.selector-idioma__sep{ color: var(--color-secundario); font-weight: 400; }
@media (max-width: 700px){
	.site-header__acciones{ order: 2; margin-left: auto; }
	.nav-toggle{ order: 3; }
	.selector-idioma a{ padding: 10px 6px; } /* área táctil cómoda */
}
@media (min-width: 701px) and (max-width: 1024px){
	.site-header__redes{ display: none; } /* en tableta se prioriza el selector */
}
@media print{ .selector-idioma{ display: none; } }
