/* Estilos base */
html, body {
    overflow-x: hidden;
    position: relative;
    width: 100%;
}

body {
    font-family: 'Outfit', sans-serif;
    color: #374151; /* gray-700 (Default text) */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    background-color: #F9FAFB; /* bg-gray-50 */
    display: flex; /* Para footer pegajoso si el contenido es corto */
    flex-direction: column; /* Para footer pegajoso */
    min-height: 100vh; /* Para footer pegajoso */
}

main { /* Para footer pegajoso */
    flex-grow: 1;
}

h1, h2, h3, h4, h5, h6, .font-poppins {
    font-family: 'Outfit', sans-serif;
    font-weight: 700;
}

.font-montserrat {
    font-family: 'Montserrat', sans-serif;
}

/* Variables de Color */
:root {
    --logo-dark-blue: #005AAB;
    --logo-light-blue: #00AEEF;
    --logo-green: #009A44;   
    --logo-yellow: #FFDD00;  
    --logo-white: #FFFFFF;
    --logo-orange: #895e29; 

    --primary-color: var(--logo-dark-blue);
    --secondary-color: var(--logo-light-blue);
    --accent-color: var(--logo-yellow); 
    --success-color: var(--logo-green);
    --text-on-primary: var(--logo-white);
    --text-dark: #1a2b41; 
    --text-medium: #4A5568; 
    --card-bg: #FFFFFF; 
    --section-bg-light: #F0F8FF; 
	
	/* Colores personalizados para el banner de estado (NUEVA PALETA) */
    --banner-gradient-light-gray: #E5E7EB; /* Tailwind gray-200 */
    --banner-gradient-sand: #F3D9A9;      /* Un color arena suave */
    --banner-gradient-turquoise: #76D7C4; /* Un turquesa suave */
    --banner-text-color: var(--text-dark); /* Texto oscuro para contraste */
	
	 /* Colores para el CTA de Tarifas */
    --cta-tarifas-bg-sand: #F0E68C; /* Arena más claro, tipo Khaki */
    --cta-tarifas-bg-water: #87CEEB; /* Azul cielo / Agua */
    --cta-tarifas-text-dark: var(--text-dark); /* Texto oscuro para contraste */
    --cta-tarifas-icon-bg: var(--primary-color); /* Iconos de fondo en azul oscuro */

    /* Colores para Hero de Accesibilidad */
    --accesibilidad-hero-bg-start: #a0d2eb; /* Azul cielo muy claro */
    --accesibilidad-hero-bg-end: #e0f2f7;   /* Casi blanco con un toque de azul/verde */
    --accesibilidad-icon-bg: var(--secondary-color);
    --accesibilidad-icon-color: var(--logo-white);

    /* Colores para el Hero de Tarifas estilo Ticket */
    --hero-tarifas-bg-start: #2c3e50; 
    --hero-tarifas-bg-end: #3498db;   
    --hero-tarifas-ticket-bg: #fdfdfd; 
    --hero-tarifas-ticket-border-color: #cccccc; 
    --hero-tarifas-ticket-text: var(--text-dark);
    --hero-tarifas-cta-bg: var(--logo-orange);
    --hero-tarifas-cta-text: var(--logo-white);
    --hero-tarifas-cta-hover-bg: var(--accent-color);
    --hero-tarifas-cta-hover-text: var(--primary-color);
    --hero-tarifas-decorative-icon-color: rgba(255, 255, 255, 0.07);
    --hero-tarifas-ticket-accent-bg: var(--secondary-color); 
    --hero-tarifas-ticket-accent-text: var(--logo-white);

    --hero-servicios-overlay-start: rgba(60, 70, 90, 0.6); /* Un gris azulado oscuro semitransparente */
    --hero-servicios-overlay-end: rgba(30, 40, 60, 0.8);   /* Más oscuro */
    --hero-servicios-icon-color: var(--logo-white);

    --hero-plano-overlay-color: var(--primary-color); /* Azul oscuro para el overlay */
    --hero-plano-icon-color: var(--accent-color); /* Amarillo para el icono grande */
    --hero-plano-text-color: var(--logo-white);
    
    --hero-faq-bg-start: #1D2B3E; /* Un azul noche muy oscuro */
    --hero-faq-bg-end: #2C3E50;   /* Un poco más claro */
    --hero-faq-q-mark-main: var(--accent-color); /* Amarillo para el ? principal */
    --hero-faq-q-mark-float: rgba(255, 255, 255, 0.1); /* Para los ? flotantes */
    --hero-faq-text-color: var(--logo-white);
    
    --hero-agua-bg-deep-blue: #0b3d78;  /* Un azul más profundo y oscuro */
    --hero-agua-bg-mid-blue: #1e65b0;   /* Un azul medio */
    --hero-agua-bg-light-accent: var(--logo-light-blue); /* Azul claro del logo para destellos */
    
    --hero-agua-bubble-color1: rgba(173, 216, 230, 0.1); /* Lightblue muy sutil para burbujas */
    --hero-agua-bubble-color2: rgba(200, 230, 255, 0.15); /* Otro tono de azul claro */
    --hero-agua-bubble-highlight: rgba(255, 255, 255, 0.25); /* Pequeño brillo en la burbuja */

    --hero-agua-icon-color: var(--logo-white); 
    --hero-agua-text-color: var(--logo-white);

    --hero-piscinas-overlay-color: rgba(0, 0, 0, 0.4); /* El que ya se usa con bg-black opacity-40 */
    --hero-piscinas-text-color: var(--logo-white);

    /* Colores para el Aviso Importante en Index */    
    --aviso-bg-color: var(--section-bg-light); /* Un fondo claro, como azul pálido */
    --aviso-border-color: var(--secondary-color); /* Un borde con el color secundario */
    --aviso-icon-color: var(--accent-color); /* Icono en amarillo */
    --aviso-title-color: var(--primary-color);
    --aviso-text-color: var(--text-medium);

    /* Colores para CTA Santuario (Servicios) */
    --cta-santuario-overlay-start: rgba(20, 30, 48, 0.7); /* Un azul muy oscuro casi negro */
    --cta-santuario-overlay-end: rgba(36, 59, 85, 0.85); /* Un poco más claro */
    --cta-santuario-text: var(--logo-white);
    --cta-santuario-icon-color: var(--accent-color); /* Amarillo para el icono principal */
    --cta-santuario-button-primary-bg: var(--accent-color);
    --cta-santuario-button-primary-text: var(--primary-color);
    --cta-santuario-button-primary-hover-bg: var(--logo-yellow);
    --cta-santuario-button-secondary-bg: transparent;
    --cta-santuario-button-secondary-text: var(--logo-white);
    --cta-santuario-button-secondary-border: var(--logo-white);
    --cta-santuario-button-secondary-hover-bg: rgba(255, 255, 255, 0.1);

    --cta-faq-bg-start: var(--primary-color); /* Azul oscuro del logo */
    --cta-faq-bg-end: var(--secondary-color); /* Azul claro del logo */
    --cta-faq-shape-color: rgba(255, 255, 255, 0.08); /* Formas de fondo muy sutiles */
    --cta-faq-icon-color: var(--accent-color); /* Amarillo para el icono principal */
    --cta-faq-text-color: var(--logo-white);
    --cta-faq-button-primary-bg: var(--accent-color);
    --cta-faq-button-primary-text: var(--primary-color);
    --cta-faq-button-primary-hover-bg: var(--logo-yellow); /* Amarillo más brillante */
    --cta-faq-button-secondary-bg: transparent;
    --cta-faq-button-secondary-text: var(--logo-white);
    --cta-faq-button-secondary-border: var(--logo-white);
    --cta-faq-button-secondary-hover-bg: rgba(255, 255, 255, 0.1);
    --cta-faq-button-secondary-hover-border: var(--accent-color);

    /* Colores para Hero de Atracciones */
    --hero-atracciones-overlay-start: rgba(0, 60, 120, 0.7); /* Azul oscuro semitransparente */
    --hero-atracciones-overlay-end: rgba(0, 20, 50, 0.9);   /* Más oscuro hacia abajo */
    --hero-atracciones-icon-color: var(--accent-color);
    --hero-atracciones-text-color: var(--logo-white);

    /* Colores para CTA Final de Atracciones */
    --cta-atracciones-final-bg-start: var(--secondary-color); /* Azul claro */
    --cta-atracciones-final-bg-end: var(--primary-color);   /* Azul oscuro */
    --cta-atracciones-final-icon-color: var(--accent-color);
    --cta-atracciones-final-text-color: var(--logo-white);
    --cta-atracciones-button-primary-bg: var(--accent-color);
    --cta-atracciones-button-primary-text: var(--primary-color);
    --cta-atracciones-button-secondary-bg: var(--logo-white);
    --cta-atracciones-button-secondary-text: var(--primary-color);

    /* Colores para Hero de Salón de Relax */
    --hero-salon-overlay-start: rgba(30, 40, 60, 0.7); /* Azul grisáceo oscuro */
    --hero-salon-overlay-end: rgba(10, 20, 30, 0.85);  /* Casi negro */
    --hero-salon-icon-color: var(--logo-white);
    --hero-salon-text-color: var(--logo-white);
    --hero-salon-button-bg: rgba(255, 255, 255, 0.15);
    --hero-salon-button-text: var(--logo-white);
    --hero-salon-button-border: rgba(255, 255, 255, 0.4);
    --hero-salon-button-hover-bg: rgba(255, 255, 255, 0.25);
    --hero-salon-button-hover-border: var(--logo-white);

    /* Colores para CTA Final Salón de Relax */
    --cta-salon-final-overlay-start: rgba(0, 0, 0, 0.5);
    --cta-salon-final-overlay-end: rgba(0, 0, 0, 0.7);
    --cta-salon-final-icon-color: var(--accent-color);
    --cta-salon-final-text-color: var(--logo-white);

    /* Colores para Hero de Gastronomía */
    --hero-gastronomia-overlay-start: rgba(0, 0, 0, 0.3);
    --hero-gastronomia-overlay-end: rgba(0, 0, 0, 0.7);
    --hero-gastronomia-icon-color: var(--accent-color);
    --hero-gastronomia-text-color: var(--logo-white);

    /* Colores para Puntos Gastronómicos */
    --punto-gastronomico-title-underline: var(--secondary-color);

    /* Colores para CTA "Antojo de Diversión" (Gastronomía) */
    /* --cta-antojo-bg-image: url('../images/gastronomia/cta_gastronomia_diversion_bg.jpg');  Se define en el HTML */
    --cta-antojo-overlay-start: rgba(0, 90, 171, 0.85);  /* Azul primario con opacidad */
    --cta-antojo-overlay-middle: rgba(0, 174, 239, 0.75); /* Azul secundario con opacidad */
    --cta-antojo-overlay-end: rgba(0, 90, 171, 0.85);   /* Azul primario con opacidad */
    --cta-antojo-floating-icon-color: rgba(255, 255, 255, 0.12); /* Iconos flotantes más visibles */
    --cta-antojo-icon-color: var(--accent-color);
    --cta-antojo-text-color: var(--logo-white);
    --cta-antojo-button-bg: #f6ce92;
    --cta-antojo-button-hover-bg: #e0b87f; /* una versión un poco más oscura para el hover */
    --cta-antojo-button-text: #a23315;
    --cta-antojo-button-hover-text: #a23315;
    
    /* Colores para CTA "Sumérgete en Bienestar" (Agua Termal) */
    --cta-agua-overlay-start: rgba(10, 60, 100, 0.75); /* Azul profundo semitransparente */
    --cta-agua-overlay-end: rgba(0, 30, 60, 0.9);    /* Más oscuro */
    --cta-agua-floating-drop-color: rgba(173, 216, 230, 0.2); /* Gotas de agua claras */
    --cta-agua-icon-color: var(--logo-light-blue);
    --cta-agua-text-color: var(--logo-white);
    --cta-agua-button-primary-bg: var(--logo-light-blue);
    --cta-agua-button-primary-text: var(--primary-color);
    --cta-agua-button-primary-hover-bg: var(--secondary-color);
    --cta-agua-button-secondary-bg: transparent;
    --cta-agua-button-secondary-text: var(--logo-white);
    --cta-agua-button-secondary-border: var(--logo-light-blue);
    --cta-agua-button-secondary-hover-bg: rgba(0, 174, 239, 0.15);
    --cta-agua-button-secondary-hover-border: var(--logo-white);
    
    /* Colores para CTA Final de Plano del Parque */
    --cta-plano-final-bg-image: url('../images/atracciones/cta_atracciones_bg.jpg'); /* Reutilizar o cambiar */
    --cta-plano-final-overlay-start: rgba(0, 174, 239, 0.85);  /* Azul secundario */
    --cta-plano-final-overlay-middle: rgba(0, 90, 171, 0.8); /* Azul primario */
    --cta-plano-final-overlay-end: rgba(0, 174, 239, 0.85);   /* Azul secundario */
    --cta-plano-final-icon-color: var(--accent-color);
    --cta-plano-final-text-color: var(--logo-white);
    --cta-plano-button-primary-bg: var(--accent-color);
    --cta-plano-button-primary-text: var(--primary-color);
    --cta-plano-button-secondary-bg: var(--logo-white);
    --cta-plano-button-secondary-text: var(--primary-color);
}

/* Clases de utilidad para colores de fondo */
.bg-primary-color { background-color: var(--primary-color); }
.bg-secondary-color { background-color: var(--secondary-color); }
.bg-accent-color { background-color: var(--accent-color); }
.bg-success-color { background-color: var(--success-color); }

.text-text-on-primary { color: var(--text-on-primary) !important; }
.text-text-on-secondary { color: var(--text-on-primary) !important; }

/* --- ESTILOS PARA EL MENÚ DE NAVEGACIÓN MEJORADO --- */



/* --- ESTILOS PARA EL FOOTER OSCURO (CON BORDE DEGRADADO SUPERIOR) --- */
.site-footer {
    /* bg-slate-800 text-slate-300 pt-16 pb-8 ya están en el HTML */
    font-size: 0.9rem; 
    position: relative; /* Necesario para el pseudo-elemento ::before */
    /* El padding-top original (pt-16) se mantiene para el contenido, el borde va encima */
}

.site-footer::before { /* Borde degradado superior */
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px; /* Mismo alto que la barra del header */
    background-image: linear-gradient(to right, var(--logo-light-blue), var(--logo-green), var(--logo-yellow));
    /* Si quieres que sea idéntico al del header, asegúrate que los colores y dirección coincidan */
}

.site-footer .container { /* Asegurar que el contenido del footer esté por encima del borde si es necesario */
    position: relative;
    z-index: 1;
}


.site-footer h4 {
    /* text-lg font-poppins font-semibold text-white mb-4 ya están en el HTML */
}

.footer-link {
    color: var(--slate-300, #cbd5e1); 
    transition: color 0.2s ease-in-out, padding-left 0.2s ease-in-out;
    display: inline-block; 
    position: relative;
}
.footer-link:hover {
    color: var(--secondary-color, #00AEEF); 
    padding-left: 5px; 
}

/* Contenedor principal de las 5 columnas del footer */
.footer-top-section { 
    /* Las clases de grid (grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-x-6 gap-y-10 mb-12 items-start)
       ya están en el HTML de footer.php. Si necesitas más control sobre el ancho de cada una de las 5 columnas
       en 'lg', podrías cambiar lg:grid-cols-5 a lg:grid-cols-12 y luego usar lg:col-span-X en cada .footer-column.
       Por ahora, asumimos que lg:grid-cols-5 distribuye el espacio equitativamente.
    */
}

.footer-column {
    /* Estilos comunes para todas las columnas si son necesarios */
    /* En móvil (debajo de sm), cada columna ocupará el ancho completo y tendrá un gap-y-10 */
}

.footer-column .footer-column-title { /* Títulos "Ubicación", "Contacto", "Síguenos" */
    color: var(--logo-white);
    margin-bottom: 0.75rem; /* mb-3 */
    font-size: 0.95rem; /* Un poco más pequeño que el h4 por defecto del footer anterior */
}

/* Columna 1 y 2: Logos */
.footer-column img.h-20 { /* Logos de Termas y Calidad */
    height: 6rem; /* Aumentado el tamaño (era h-20 = 5rem) */
}
@media (min-width: 768px) { /* md */
    .footer-column img.md\:h-24 {
        height: 6rem; /* Aumentado el tamaño (era md:h-24 = 6rem) */
    }
}


/* Columna 3 y 4: Ubicación y Contacto */
.footer-column p.text-sm { 
    color: var(--slate-300, #cbd5e1);
    line-height: 1.6;
}

.footer-column .footer-link { 
    color: var(--slate-300, #cbd5e1); 
    transition: color 0.2s ease-in-out, padding-left 0.2s ease-in-out;
    display: inline-flex; 
    align-items: center;
    position: relative;
    font-size: 0.875rem; /* text-sm */
}
.footer-column .footer-link:hover {
    color: var(--secondary-color, #00AEEF); 
    padding-left: 4px; 
}
.footer-column .footer-link i.fa-fw { 
    width: 1.4em; 
    text-align: center;
    color: var(--secondary-color); 
    margin-right: 0.35rem; /* Ajustar espacio */
}
/* Centrado en dispositivos móviles */
@media (max-width: 640px) {
    .footer-column {
        text-align: center;
    }

    .footer-column h3,
    .footer-column h4,
    .footer-column p {
        text-align: center;
    }
}

/* Columna 5: Redes Sociales */
.footer-column .flex.space-x-4 { /* Contenedor de iconos sociales */
    /* justify-center sm:justify-start ya están en HTML */
}
.footer-social-icon { 
    color: var(--slate-300, #cbd5e1); 
    font-size: 1.6rem; /* Ligeramente más pequeño que antes para que quepan mejor */
    transition: color 0.2s ease-in-out, transform 0.2s ease-in-out;
}
.footer-social-icon:hover {
    color: var(--secondary-color, #00AEEF); 
    transform: scale(1.1) rotate(-5deg); 
}

.site-footer .border-t.border-slate-700 { /* Línea divisoria antes del copyright */
    border-color: #334155; 
    margin-top: 2.5rem; /* Asegurar que haya espacio si el contenido es poco */
}

.site-footer .text-secondary-color { 
    color: var(--secondary-color, #00AEEF) !important; 
}
.sitios-amigos-section {
    /* border-t border-slate-700 pt-10 mt-10 text-center ya están en el HTML */
    /* Puedes añadir un padding inferior si es necesario antes del copyright */
    /* padding-bottom: 2rem; */
}

.sitios-amigos-section h4 {
    /* text-md font-poppins font-semibold text-white mb-6 uppercase tracking-wider ya están en el HTML */
    color: var(--slate-200, #e2e8f0); /* Un blanco un poco más suave para este título */
}

.sitios-amigos-section .flex { /* El div que contiene los enlaces */
    /* flex flex-wrap justify-center items-center gap-x-6 gap-y-4 ya están en el HTML */
}

.sitio-amigo-link {
    display: inline-block;
    padding: 0.5rem; /* Un pequeño padding alrededor del logo/texto */
    transition: opacity 0.3s ease, transform 0.3s ease;
    opacity: 1; /* Ligeramente transparente por defecto */
}
.sitio-amigo-link:hover {
    opacity: 1;
    transform: translateY(-3px); /* Ligera elevación al hacer hover */
}

.sitio-amigo-link img {
    /* h-10 md:h-12 max-w-[150px] object-contain transition-transform duration-300 group-hover:scale-105 ya están en HTML */
    /* filter: grayscale(20%) brightness(1.5);  Hacer los logos un poco desaturados y brillantes para que se integren con el fondo oscuro */
    transition: filter 0.3s ease;
}
.sitio-amigo-link:hover img {
    filter: grayscale(0%) brightness(1); /* Color completo al hacer hover */
}

.sitio-amigo-link span { /* Para el nombre del sitio si no hay logo */
    color: var(--slate-300, #cbd5e1);
    font-weight: 500;
    font-size: 0.875rem; /* text-sm */
}
.sitio-amigo-link:hover span {
    color: var(--logo-white);
}
/* --- FIN ESTILOS FOOTER OSCURO --- */

/* --- ESTILOS PARA BOTONES EN MENÚ MÓVIL (Tickets y WhatsApp) --- */
#mobile-menu .p-4.space-y-3 { /* Selector más específico */
    display: flex;
    flex-direction: column;
    gap: 0.75rem; /* Tailwind space-y-3 es 0.75rem, esto lo reemplaza para flex-gap */
}

.whatsapp-float-button {
    position: fixed;
    width: 60px;
    height: 60px;
    bottom: 25px; 
    right: 25px;  
    background-color: #25D366; 
    color: #FFF;
    border-radius: 50%;
    text-align: center;
    font-size: 30px; 
    box-shadow: 2px 2px 8px rgba(0,0,0,0.25);
    z-index: 100; 
    display: flex; 
    align-items: center;
    justify-content: center;
    transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
}
.whatsapp-float-button:hover {
    transform: scale(1.1);
    box-shadow: 3px 3px 12px rgba(0,0,0,0.3);
}
.whatsapp-float-button i { }

/* Ocultar botón flotante en pantallas pequeñas (móviles) */
@media (max-width: 1023px) { /* Coincide con el breakpoint 'lg' de Tailwind (1024px) */
    .whatsapp-float-button {
        display: none !important; 
    }
}

/* Hero Section "Portal a la Aventura" */
.hero-atracciones-custom {
    /* relative h-[85vh] min-h-[550px] md:min-h-[650px] bg-gray-700 flex items-center justify-center text-center text-white overflow-hidden ya están en HTML */
    /* El bg-gray-700 es un fallback */
}

.hero-atracciones-background {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    overflow: hidden;
    z-index: 0;
}

.ken-burns-image {
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    animation: kenburns-effect 20s ease-in-out infinite alternate;
    transform-origin: center center; /* Asegurar que el zoom sea desde el centro */
}

@keyframes kenburns-effect {
    0% {
        transform: scale(1) translateX(0) translateY(0);
    }
    25% {
        transform: scale(1.05) translateX(-2%) translateY(1%);
    }
    50% {
        transform: scale(1.1) translateX(0) translateY(0);
    }
    75% {
        transform: scale(1.05) translateX(2%) translateY(-1%);
    }
    100% {
        transform: scale(1) translateX(0) translateY(0);
    }
}

/* El overlay de degradado ya está en el HTML:
   <div class="absolute inset-0 bg-gradient-to-t from-primary-color via-primary-color/70 to-transparent opacity-90 z-10"></div>
   Puedes ajustar la opacidad y los colores en las clases de Tailwind si es necesario.
*/

.hero-atracciones-icon { /* Para el icono fas fa-route */
    /* text-6xl md:text-7xl text-accent-color ya están en HTML */
    text-shadow: 0 0 20px var(--accent-color), 0 0 30px var(--logo-orange);
    animation: hero-icon-float 3s ease-in-out infinite alternate;
}

@keyframes hero-icon-float {
    0% { transform: translateY(0px) scale(1); }
    50% { transform: translateY(-10px) scale(1.05); }
    100% { transform: translateY(0px) scale(1); }
}

#hero-atracciones-portal h1 {
    color: var(--hero-atracciones-text-color);
}
#hero-atracciones-portal p {
    color: var(--slate-100, #f1f5f9);
}
#hero-atracciones-portal .cta-button { /* Botón "Iniciar Exploración" */
    background-color: var(--logo-white);
    color: var(--primary-color);
    /* Otras clases de Tailwind ya aplican el resto */
}
#hero-atracciones-portal .cta-button:hover {
    background-color: var(--section-bg-light); /* Un blanco hueso o gris muy claro */
}

/* --- NUEVOS ESTILOS PARA LA SECCIÓN DE AVISO IMPORTANTE (INDEX.PHP) --- */
.aviso-importante-section {
    background: linear-gradient(145deg, #ffe0e0 0%, #ffb3b3 100%);
    /*border-top: 4px solid var(--aviso-border-color); 
    border-bottom: 4px solid var(--aviso-border-color);*/
    /* padding py-8 md:py-12 ya están en el HTML */
    /* animate-on-scroll ya está en el HTML */
}

.aviso-content-wrapper {
    /* bg-white p-6 sm:p-8 rounded-xl shadow-2xl md:flex md:items-start md:gap-6 ya están en HTML */
    /* Hacemos el fondo del wrapper ligeramente transparente para que se vea el amarillo de la sección */
    background-color: rgba(255, 255, 255, 0.85); /* Blanco con un poco de transparencia */
    backdrop-filter: blur(3px); /* Efecto de vidrio esmerilado si el navegador lo soporta */
    -webkit-backdrop-filter: blur(3px);
    border: 1px solid color-mix(in srgb, var(--aviso-border-color) 40%, transparent); /* Borde sutil con color de acento */
}

.aviso-imagen-container {
    /* Clases de Tailwind ya manejan el layout */
}
.aviso-imagen-container img {
    border: 4px solid var(--logo-white); 
    box-shadow: 0 5px 20px rgba(0,0,0,0.15);
    /* max-h-64 md:max-h-full ya está en HTML, ajusta si es necesario */
}

.aviso-texto-container h2 {
    color: var(--aviso-title-color);
    /* text-shadow: 0 1px 2px rgba(0,0,0,0.1); */ /* Sombra sutil para el título */
}
.aviso-texto-container h2 i {
    color: red;
    animation: aviso-icon-attention 1.8s infinite ease-in-out;
    text-shadow: 0 0 5px rgba(255, 0, 0, 0.4);
}

@keyframes aviso-icon-attention {
    0%, 100% { transform: scale(1) rotate(0deg); }
    10% { transform: scale(1.15) rotate(-8deg); }
    20% { transform: scale(1.15) rotate(8deg); }
    30% { transform: scale(1.15) rotate(-8deg); }
    40% { transform: scale(1.15) rotate(8deg); }
    50% { transform: scale(1) rotate(0deg); }
}

.aviso-texto-container .prose {
    color: var(--aviso-text-color);
}
.aviso-texto-container .prose p {
    margin-bottom: 0.75em; /* Espacio entre párrafos del aviso */
}
.aviso-texto-container .prose strong {
    color: var(--primary-color); /* Resaltar los strong si los usas en el texto del aviso */
}
/* --- FIN ESTILOS SECCIÓN AVISO IMPORTANTE --- */

/* CTA Final en Atracciones.php */
.cta-atracciones-final-custom {
    /* relative py-20 md:py-28 text-center overflow-hidden ya están en HTML */
    /* El fondo se maneja por .cta-atracciones-final-bg-image y el overlay de gradiente */
    background-color: var(--primary-color); /* Fallback */
}

.cta-atracciones-final-bg-image {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    background-size: cover;
    background-position: center;
    z-index: 0;
    filter: brightness(0.6) blur(1px); /* Oscurecer y desenfocar ligeramente la imagen de fondo */
    transform: scale(1.03); /* Para evitar bordes del blur */
}
/* El overlay de degradado ya está en el HTML:
   <div class="absolute inset-0 bg-gradient-to-r from-secondary-color/80 via-primary-color/70 to-secondary-color/80 z-10"></div>
*/

#cta-atracciones-final-v2 .fa-exclamation-circle {
    color: var(--cta-atracciones-final-icon-color);
    text-shadow: 0 0 15px var(--cta-atracciones-final-icon-color);
}

#cta-atracciones-final-v2 h2 {
    color: var(--cta-atracciones-final-text-color);
}
#cta-atracciones-final-v2 p {
    color: var(--slate-100, #f1f5f9);
    line-height: 1.7;
}

.cta-button-atracciones-primary {
    background-color: var(--cta-atracciones-button-primary-bg);
    color: var(--cta-atracciones-button-primary-text);
    font-family: 'Poppins', sans-serif;
    font-weight: 700;
    padding: 0.8rem 2rem; 
    border-radius: 0.5rem; 
    text-transform: uppercase;
    letter-spacing: 0.05em;
    box-shadow: 0 5px 15px rgba(0,0,0,0.2);
    transition: all 0.3s ease;
    border: 2px solid transparent;
}
.cta-button-atracciones-primary:hover {
    background-color: color-mix(in srgb, var(--cta-atracciones-button-primary-bg) 90%, black); /* Ligeramente más oscuro */
    transform: translateY(-3px) scale(1.03);
    box-shadow: 0 8px 20px color-mix(in srgb, var(--cta-atracciones-button-primary-bg) 40%, black);
}

.cta-button-atracciones-secondary {
    background-color: var(--cta-atracciones-button-secondary-bg);
    color: var(--cta-atracciones-button-secondary-text);
    border: 2px solid var(--cta-atracciones-button-secondary-text); /* Borde del color del texto */
    font-family: 'Poppins', sans-serif;
    font-weight: 600;
    padding: 0.8rem 2rem;
    border-radius: 0.5rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    transition: all 0.3s ease;
}
.cta-button-atracciones-secondary:hover {
    background-color: rgba(255, 255, 255, 0.15);
    border-color: var(--accent-color);
    color: var(--accent-color); 
    transform: translateY(-3px);
}

.cta-button-atracciones-primary i,
.cta-button-atracciones-secondary i {
    transition: transform 0.3s ease;
}
.cta-button-atracciones-primary:hover i,
.cta-button-atracciones-secondary:hover i {
    transform: translateX(3px);
}
/* --- FIN ESTILOS HERO Y CTA ATRACCIONES --- */

/* --- NUEVOS ESTILOS PARA CTA "SUMÉRGETE EN BIENESTAR" (AGUA-TERMAL.PHP) --- */
.cta-agua-termal-final-custom {
    /* py-20 md:py-28 relative text-white text-center overflow-hidden ya están en HTML */
    background-color: var(--hero-agua-bg-deep-blue); /* Fallback, un azul oscuro */
    min-height: 55vh;
    display: flex;
    align-items: center;
    justify-content: center;
}

.cta-agua-termal-video-bg-container {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    overflow: hidden; z-index: 0;
}
.cta-agua-termal-video-bg {
    position: absolute; top: 50%; left: 50%;
    min-width: 100%; min-height: 100%;
    width: auto; height: auto;
    transform: translateX(-50%) translateY(-50%);
    object-fit: cover;
    filter: blur(3px) brightness(0.6) saturate(0.8); /* Efecto más etéreo para el video de fondo */
}

/* El overlay de degradado ya está en el HTML:
   <div class="absolute inset-0 bg-gradient-to-t from-blue-900/70 via-blue-700/40 to-transparent z-10"></div>
   Puedes ajustar la opacidad en Tailwind (ej. /70, /40) o definir un degradado más específico aquí si es necesario:
   #cta-sumergete-bienestar .bg-gradient-to-t {
       background-image: linear-gradient(to top, var(--cta-agua-overlay-end), var(--cta-agua-overlay-start), transparent);
       opacity: 1; // La opacidad ya está en las variables RGBA
   }
*/

.cta-agua-floating-elements {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    overflow: hidden;
    pointer-events: none;
    z-index: 5; /* Entre el video/fondo y el overlay de color, o encima del overlay si este es muy opaco */
}
.agua-drop {
    position: absolute;
    background-color: var(--cta-agua-floating-drop-color);
    border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; /* Forma de gota más orgánica */
    animation: float-and-fade 10s linear infinite;
    box-shadow: inset 0 -2px 2px rgba(255,255,255,0.3), 0 0 5px rgba(173,216,230,0.3);
    /* El tamaño, left, top, animation-delay, animation-duration se definen inline en el HTML */
}
.agua-drop:nth-child(even) {
    animation-direction: alternate-reverse;
    animation-duration: 15s; /* Duración diferente para algunas */
}

@keyframes float-and-fade {
    0% {
        transform: translateY(110vh) scale(0.3) rotate(0deg);
        opacity: 0;
    }
    10% {
        opacity: 0.8; /* Aparece */
    }
    90% {
        opacity: 0.1; /* Comienza a desvanecerse */
    }
    100% {
        transform: translateY(-10vh) scale(1) rotate(360deg); /* Sube, rota y desaparece */
        opacity: 0;
    }
}

#cta-sumergete-bienestar .fa-tint {
    color: var(--cta-agua-icon-color);
    text-shadow: 0 0 20px var(--cta-agua-icon-color), 0 0 35px var(--logo-white); /* Resplandor azul claro y blanco */
    animation: icon-subtle-pulse 3s infinite ease-in-out; /* Reutilizar animación o crear una nueva */
}

#cta-sumergete-bienestar h2 {
    color: var(--cta-agua-text-color);
    /* text-shadow ya está en el HTML */
}
#cta-sumergete-bienestar p {
    color: var(--slate-100, #f1f5f9);
    line-height: 1.7;
    /* text-shadow ya está en el HTML */
}

.cta-button-agua-primary {
    background-color: var(--cta-agua-button-primary-bg);
    color: var(--cta-agua-button-primary-text);
    font-family: 'Poppins', sans-serif;
    font-weight: 600;
    padding: 0.85rem 2.2rem; 
    border-radius: 8px; /* Menos redondeado */
    text-transform: uppercase;
    letter-spacing: 0.04em;
    box-shadow: 0 4px 12px rgba(0,0,0,0.2);
    transition: all 0.3s ease;
    border: 1px solid transparent;
}
.cta-button-agua-primary:hover {
    background-color: var(--cta-agua-button-primary-hover-bg);
    color: var(--logo-white);
    transform: translateY(-3px);
    box-shadow: 0 6px 18px rgba(0, 174, 239, 0.4);
}

.cta-button-agua-secondary {
    background-color: var(--cta-agua-button-secondary-bg);
    color: var(--cta-agua-button-secondary-text);
    border: 2px solid var(--cta-agua-button-secondary-border);
    font-family: 'Poppins', sans-serif;
    font-weight: 600;
    padding: 0.85rem 2.2rem;
    border-radius: 8px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    transition: all 0.3s ease;
}
.cta-button-agua-secondary:hover {
    background-color: var(--cta-agua-button-secondary-hover-bg);
    border-color: var(--cta-agua-button-secondary-hover-border);
    color: var(--logo-white); 
    transform: translateY(-3px);
}

.cta-button-agua-primary i,
.cta-button-agua-secondary i {
    transition: transform 0.3s ease;
}
.cta-button-agua-primary:hover i,
.cta-button-agua-secondary:hover i {
    transform: translateX(3px);
}
/* --- FIN ESTILOS CTA AGUA TERMAL --- */

/* --- NUEVOS ESTILOS PARA BOTÓN DE WHATSAPP EN MENÚ MÓVIL --- */
.mobile-nav-whatsapp-button {
    display: flex; 
    align-items: center;
    justify-content: center;
    padding: 0.6rem 1rem; 
    padding-left: 1rem;
    padding-right: 1rem;
    border-radius: 0.5rem; 
    background-color: var(--success-color); 
    color: var(--logo-white);
    font-family: 'Poppins', sans-serif;
    font-weight: 600; 
    font-size: 0.95rem; 
    text-decoration: none;
    transition: background-color 0.2s ease, transform 0.2s ease;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    width: 100%; /* Asegurar que ocupe el ancho si está en un flex-column container */
}
.mobile-nav-whatsapp-button:hover {
    background-color: color-mix(in srgb, var(--success-color) 85%, black); 
    transform: translateY(-1px);
}
.mobile-nav-whatsapp-button i {
    font-size: 1.1em; 
    margin-right: 0.5rem;
}
.main-nav-links {
    position: relative; 
}

/* --- NUEVOS ESTILOS PARA EL CTA "SANTUARIO DE BIENESTAR" (SERVICIOS.PHP) --- */
.cta-santuario-custom {
    /* py-24 md:py-32 relative text-white text-center overflow-hidden ya están en HTML */
    /* El color de fondo se maneja por el video y el overlay */
    min-height: 60vh; /* Altura mínima para que el video se aprecie */
    display: flex;
    align-items: center;
    justify-content: center;
}

.cta-santuario-video-bg-container {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    z-index: 0; /* Detrás del overlay y contenido */
}

.cta-santuario-video-bg {
    position: absolute;
    top: 50%;
    left: 50%;
    min-width: 100%;
    min-height: 100%;
    width: auto;
    height: auto;
    transform: translateX(-50%) translateY(-50%);
    object-fit: cover; /* Asegura que el video cubra el contenedor */
    filter: blur(1px) brightness(0.7); /* Sutil desenfoque y oscurecimiento del video */
}

/* El overlay oscuro ya está definido en el HTML con clases de Tailwind:
   <div class="absolute inset-0 bg-black opacity-60 z-10"></div> 
   Si se necesita un degradado más específico:
.cta-santuario-custom .absolute.inset-0.bg-black {
    background-image: linear-gradient(to bottom, var(--cta-santuario-overlay-start), var(--cta-santuario-overlay-end));
    opacity: 1; // La opacidad ya está en el degradado
}
*/

#cta-santuario-bienestar .container {
    /* position: relative; z-index: 20; ya está en el HTML */
}

#cta-santuario-bienestar .fa-hand-sparkles {
    /* text-5xl md:text-6xl text-accent-color mb-6 animate-on-scroll ya están en HTML */
    color: var(--cta-santuario-icon-color);
    text-shadow: 0 0 15px rgba(255, 221, 0, 0.5); /* Resplandor amarillo */
    animation: icon-subtle-pulse 3s infinite ease-in-out;
}

@keyframes icon-subtle-pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.08); }
}

#cta-santuario-bienestar h2 {
    /* text-4xl sm:text-5xl font-extrabold mb-6 font-poppins ... text-shadow ya están en HTML */
    color: var(--cta-santuario-text);
}

#cta-santuario-bienestar p {
    /* text-lg sm:text-xl text-gray-200 ... text-shadow ya están en HTML */
    color: var(--slate-100, #f1f5f9);
    line-height: 1.7;
}

.cta-button-santuario {
    padding: 0.85rem 2rem; /* py-3.5 px-8 */
    border-radius: 0.5rem; /* rounded-lg */
    font-family: 'Poppins', sans-serif;
    font-weight: 600; /* semibold */
    text-transform: uppercase;
    letter-spacing: 0.05em;
    transition: all 0.3s ease;
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
    border: 2px solid transparent;
}
.cta-button-santuario:hover {
    transform: translateY(-3px) scale(1.03);
    box-shadow: 0 7px 20px rgba(0,0,0,0.2);
}
.cta-button-santuario i {
    transition: transform 0.3s ease;
}
.cta-button-santuario:hover i {
    transform: rotate(-5deg);
}

.cta-button-santuario.primary {
    background-color: var(--cta-santuario-button-primary-bg);
    color: var(--cta-santuario-button-primary-text);
}
.cta-button-santuario.primary:hover {
    background-color: var(--cta-santuario-button-primary-hover-bg);
    /* color se mantiene o ajusta si es necesario */
}

.cta-button-santuario.secondary {
    background-color: var(--cta-santuario-button-secondary-bg);
    color: var(--cta-santuario-button-secondary-text);
    border-color: var(--cta-santuario-button-secondary-border);
}
.cta-button-santuario.secondary:hover {
    background-color: var(--cta-santuario-button-secondary-hover-bg);
    border-color: var(--logo-white); /* Borde más brillante al hacer hover */
}
/* --- FIN ESTILOS CTA SANTUARIO --- */

/* --- NUEVOS ESTILOS PARA LA PÁGINA DE GASTRONOMÍA (gastronomia.php) --- */
.gastronomia-page {
    /* Estilos generales para la página si son necesarios */
}

/* Hero Section para Gastronomía */
.hero-gastronomia-custom {
    /* py-28 md:py-40 relative flex items-center justify-center text-center overflow-hidden ya están en HTML */
    min-height: 60vh;
    background-color: #4A3B31; /* Un marrón oscuro como fallback */
}

.hero-gastronomia-bg-image {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    background-size: cover;
    background-position: center;
    filter: brightness(0.8) saturate(1.1); /* Ligeramente más oscuro y saturado */
    transform: scale(1.03); /* Para evitar bordes si hay algún efecto */
}
/* El overlay oscuro ya está en el HTML:
   <div class="absolute inset-0 bg-black opacity-50 z-10"></div> 
   Puedes ajustar la opacidad en Tailwind (ej. opacity-60 o opacity-70)
*/

.hero-gastronomia-icon {
    /* text-5xl md:text-6xl text-accent-color mb-6 ya están en HTML */
    color: var(--accent-color);
    text-shadow: 0 0 15px rgba(255, 221, 0, 0.4), 0 0 25px rgba(255, 221, 0, 0.3);
    animation: food-icon-bounce 2.5s infinite ease-in-out;
}

@keyframes food-icon-bounce {
    0%, 100% { transform: translateY(0) scale(1); }
    50% { transform: translateY(-10px) scale(1.08); }
}

#hero-gastronomia h1 {
    /* text-shadow ya está inline en el HTML */
    color: var(--logo-white);
}
#hero-gastronomia p {
    /* text-shadow ya está inline en el HTML */
    color: var(--slate-100, #f1f5f9);
    line-height: 1.7;
}

/* Sección de Puntos Gastronómicos */
#puntos-gastronomicos .section-title-underline-center {
    /* Estilos ya definidos para este tipo de subrayado */
}

.punto-gastronomico-item {
    /* lg:flex items-center gap-8 lg:gap-12 animate-on-scroll ya están en HTML */
    /* Podríamos añadir un borde sutil o un fondo si no es bg-white */
    background-color: var(--card-bg); /* Fondo blanco para cada item */
    padding: 1.5rem; /* p-6 */
    border-radius: 0.75rem; /* rounded-xl */
    box-shadow: 0 8px 25px rgba(0,0,0,0.07);
    margin-bottom: 2.5rem; /* Espacio entre items si no se usa space-y en el contenedor */
}
/* Para la alternancia de imagen/texto */
/* .lg\:flex-row-reverse ya está en el HTML para los items impares */

.punto-gastronomico-item img {
    /* w-full h-auto max-h-[400px] object-cover rounded-xl shadow-xl transform transition-transform duration-500 hover:scale-105 ya están en HTML */
    border: 4px solid white; /* Borde blanco alrededor de la imagen */
}

.punto-gastronomico-item h3 {
    /* text-2xl md:text-3xl font-bold text-primary-color font-poppins mb-3 ya están en HTML */
}

.title-underline-dynamic { /* Para el subrayado debajo del nombre del local */
    display: block;
    width: 70px; 
    height: 3px; 
    background-image: linear-gradient(to right, var(--line-color, var(--secondary-color)), color-mix(in srgb, var(--line-color, var(--secondary-color)) 70%, var(--accent-color)));
    border-radius: 1.5px;
    /* mb-5 ya está en el HTML */
}

.punto-gastronomico-item .text-text-medium { /* Descripción */
    font-size: 0.95rem;
}

.punto-gastronomico-item .text-sm.text-accent-color { /* Notas especiales */
    color: var(--logo-orange); /* Naranja para las notas especiales */
}
.punto-gastronomico-item .text-sm.text-accent-color i {
    color: var(--logo-orange);
}

/* CTA "Antojo de Diversión" (Gastronomía) */
.cta-antojo-custom {
    min-height: 60vh; 
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #a02e13; /* Fallback */
    position: relative;
}
.cta-antojo-bg-image {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    background-size: cover;
    background-position: center center;
    z-index: 0;
    animation: kenburns-effect-cta-gastronomia 25s ease-in-out infinite alternate;
    filter: brightness(0.6) blur(1px); 
}
@keyframes kenburns-effect-cta-gastronomia { 
    0% { transform: scale(1.05) translateX(0%) translateY(0%); }
    50% { transform: scale(1.15) translateX(-1%) translateY(1%); }
    100% { transform: scale(1.05) translateX(0%) translateY(0%); }
}

/* El overlay de degradado ya está en el HTML:
   <div class="absolute inset-0 bg-gradient-to-br from-primary-color/85 via-secondary-color/75 to-primary-color/85 z-10"></div>
   Asegúrate que los colores y opacidades (ej. /85, /75) sean los deseados.
*/

.cta-antojo-floating-icons {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    overflow: hidden;
    pointer-events: none;
    z-index: 1; /* Encima de la imagen de fondo, debajo del overlay de color */
}
.cta-floating-icon { /* Clase para los iconos flotantes en el CTA de gastronomía */
    position: absolute;
    color: var(--cta-antojo-floating-icon-color); /* Blanco muy tenue */
    opacity: 0.6; /* Ligeramente más visibles */
    animation: floating-food-icons 20s ease-in-out infinite;
    /* El tamaño, top, left y animation-delay se definen inline en el HTML */
    text-shadow: 0 0 8px rgba(255,255,255,0.2); /* Pequeño halo */
}
.cta-floating-icon:nth-child(2n) { animation-duration: 25s; animation-direction: alternate-reverse; }
.cta-floating-icon:nth-child(3n) { animation-duration: 18s; opacity: 0.5; }
.cta-floating-icon:nth-child(4n) { animation-duration: 28s; animation-direction: alternate; }

@keyframes floating-food-icons {
    0% { transform: translateY(10px) rotate(0deg) scale(0.9); opacity: 0.1; }
    25% { transform: translateY(-20px) rotate(15deg) scale(1.1); opacity: 0.4; }
    50% { transform: translateY(5px) rotate(-10deg) scale(1); opacity: 0.2; }
    75% { transform: translateY(-15px) rotate(-15deg) scale(1.05); opacity: 0.5; }
    100% { transform: translateY(10px) rotate(0deg) scale(0.9); opacity: 0.1; }
}


#cta-antojo-diversion .container {
    /* position: relative; z-index: 20; ya está en el HTML */
}

#cta-antojo-diversion .fa-shopping-basket {
    color: var(--cta-antojo-icon-color);
    text-shadow: 0 0 20px var(--cta-antojo-icon-color), 0 0 30px var(--logo-orange);
    animation: icon-subtle-pulse 2.5s infinite ease-in-out; 
}

#cta-antojo-diversion h2 {
    color: var(--cta-antojo-text-color);
    /* text-shadow ya está en el HTML */
}
#cta-antojo-diversion p {
    color: var(--slate-100, #f1f5f9);
    line-height: 1.75;
    /* text-shadow ya está en el HTML */
}

.cta-button-antojo {
    background-image: linear-gradient(to right, var(--cta-antojo-button-bg) 0%, var(--cta-antojo-button-hover-bg) 50%, var(--cta-antojo-button-bg) 100%);
    background-size: 200% auto;
    color: var(--cta-antojo-button-text);
    font-family: 'Poppins', sans-serif;
    font-weight: 700;
    padding: 0.9rem 2.5rem; 
    border-radius: 50px; 
    text-transform: uppercase;
    letter-spacing: 0.05em;
    box-shadow: 0 5px 20px rgba(0,0,0,0.25);
    transition: all 0.4s ease-out;
    border: none;
}

.cta-button-antojo:hover {
    background-position: right center; 
    color: var(--cta-antojo-button-hover-text);
    transform: translateY(-4px) scale(1.03);
    box-shadow: 0 8px 25px color-mix(in srgb, var(--cta-antojo-button-hover-bg) 50%, black);
}
.cta-button-antojo i {
    transition: transform 0.3s ease;
}
.cta-button-antojo:hover i {
    transform: rotate(10deg) scale(1.1);
}
/* --- FIN ESTILOS PÁGINA GASTRONOMÍA --- */

/* --- NUEVOS ESTILOS PARA EL CTA "AVENTURA" (PREGUNTAS-FRECUENTES.PHP) --- */
.cta-faq-aventura-custom {
    min-height: 55vh; /* Ajustar altura si es necesario */
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #1A2930; /* Color de fondo oscuro de respaldo */
    /* Degradado personalizado: Verde azulado oscuro a azul medianoche */
    background-image: linear-gradient(135deg, #08415C 0%, #132E32 100%); 
    color: #F0F4F8; /* Texto principal casi blanco */
    position: relative; /* Para los elementos de fondo y el overlay */
    /* py-20 md:py-28 text-white text-center overflow-hidden ya están en HTML */
}

/* El overlay de degradado que ya tienes en el HTML puede ser suficiente, 
   o puedes quitarlo si el fondo principal ya es oscuro y contrastante.
   Si lo mantienes:
   #cta-faq-aventura .absolute.inset-0.bg-gradient-to-br {
       opacity: 0.7; // Ajusta esta opacidad 
   }
*/

.cta-faq-background-shapes {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    overflow: hidden;
    pointer-events: none;
    z-index: 0; 
}

.cta-faq-background-shapes .shape {
    position: absolute;
    background-color: rgba(173, 216, 230, 0.07); /* Azul claro muy tenue para las formas */
    border-radius: 30%; 
    animation: float-shapes 20s ease-in-out infinite alternate;
    will-change: transform, opacity;
}
.cta-faq-background-shapes .shape1 { width: 150px; height: 150px; top: 10%; left: 5%; animation-delay: 0s; }
.cta-faq-background-shapes .shape2 { width: 200px; height: 200px; top: 60%; left: 80%; animation-delay: -4s; background-color: rgba(100, 180, 220, 0.05); }
.cta-faq-background-shapes .shape3 { width: 100px; height: 100px; top: 75%; left: 15%; animation-delay: -8s; }
.cta-faq-background-shapes .shape4 { width: 180px; height: 180px; top: 5%; left: 70%; animation-delay: -12s; background-color: rgba(100, 180, 220, 0.06); }
.cta-faq-background-shapes .shape5 { width: 120px; height: 120px; top: 40%; left: 30%; animation-delay: -16s; }

@keyframes float-shapes {
    0% { transform: translateY(0px) translateX(0px) rotate(0deg) scale(1); opacity: 0.03; }
    25% { transform: translateY(-25px) translateX(20px) rotate(50deg) scale(1.15); opacity: 0.08; }
    50% { transform: translateY(15px) translateX(-25px) rotate(100deg) scale(0.95); opacity: 0.05; }
    75% { transform: translateY(-20px) translateX(15px) rotate(145deg) scale(1.1); opacity: 0.1; }
    100% { transform: translateY(0px) translateX(0px) rotate(180deg) scale(1); opacity: 0.03; }
}

#cta-faq-aventura .container {
    /* position: relative; z-index: 10; (o z-20 si el overlay tiene z-10) */
}

#cta-faq-aventura .fa-compass {
    color: var(--accent-color); /* Amarillo para el icono de la brújula */
    text-shadow: 0 0 20px var(--accent-color), 0 0 30px var(--logo-orange); /* Resplandor más intenso */
    animation: compass-spin-pulse 5s infinite ease-in-out;
}
@keyframes compass-spin-pulse {
    0%, 100% { transform: scale(1) rotate(0deg); opacity: 0.85; }
    25% { transform: scale(1.12) rotate(15deg); opacity: 1; }
    50% { transform: scale(1) rotate(-5deg); opacity: 0.9; }
    75% { transform: scale(1.08) rotate(-15deg); opacity: 1; }
}

#cta-faq-aventura h2 {
    color: var(--logo-white); /* Texto blanco */
    text-shadow: 0 2px 5px rgba(0,0,0,0.5); /* Sombra para destacar */
}

#cta-faq-aventura p {
    color: var(--slate-200, #e2e8f0); /* Un blanco ligeramente grisáceo */
    line-height: 1.75;
    text-shadow: 0 1px 3px rgba(0,0,0,0.4);
}

.cta-button-faq-primary {
    background-color: var(--accent-color); 
    color: #0d3a4c;
    font-family: 'Poppins', sans-serif;
    font-weight: 700;
    padding: 0.9rem 2.2rem; 
    border-radius: 0.5rem; 
    text-transform: uppercase;
    letter-spacing: 0.05em;
    box-shadow: 0 5px 15px rgba(0,0,0,0.25), inset 0 -2px 0px rgba(0,0,0,0.2); /* Sombra y un ligero bisel inferior */
    transition: all 0.3s ease;
    border: none;
}
.cta-button-faq-primary:hover {
    background-color: var(--accent-color); /* Amarillo al pasar el cursor */
    color: #0d3a4c; /* Texto azul oscuro */
    transform: translateY(-4px) scale(1.03);
    box-shadow: 0 8px 25px rgba(255,221,0,0.4), inset 0 -1px 0px rgba(0,0,0,0.1);
}

.cta-button-faq-secondary {
    background-color: transparent;
    color: var(--logo-white);
    border: 2px solid var(--logo-white);
    font-family: 'Poppins', sans-serif;
    font-weight: 600;
    padding: 0.9rem 2.2rem;
    border-radius: 0.5rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    transition: all 0.3s ease;
}
.cta-button-faq-secondary:hover {
    background-color: rgba(255, 255, 255, 0.15);
    border-color: var(--accent-color);
    color: var(--accent-color); 
    transform: translateY(-3px);
}

.cta-button-faq-primary i,
.cta-button-faq-secondary i {
    transition: transform 0.3s ease;
}
.cta-button-faq-primary:hover i,
.cta-button-faq-secondary:hover i {
    transform: translateX(4px) rotate(5deg);
}
/* --- FIN ESTILOS CTA FAQ AVENTURA --- */

/* --- NUEVOS ESTILOS PARA PÁGINA DE ACCESIBILIDAD (accesibilidad.php) --- */
.accesibilidad-page-v2 {
    /* Estilos generales para la página si son necesarios */
}

/* Hero Section Personalizado para Accesibilidad */
.hero-accesibilidad-custom {
    /* py-20 md:py-32 relative text-center animate-fade-in ya están en HTML */
    /* El background-image se define inline en el PHP */
    /* Aquí definimos el degradado que va encima de la imagen de fondo (si la hubiera) o como fondo principal */
}
.hero-accesibilidad-bg-gradient {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image: linear-gradient(135deg, var(--accesibilidad-hero-bg-start) 0%, var(--accesibilidad-hero-bg-end) 100%);
    opacity: 0.85; /* Ajusta la opacidad del degradado si hay una imagen de fondo debajo */
    z-index: 0; /* Detrás del contenido del hero */
}
#hero-accesibilidad .container { /* El div.container dentro del hero */
    /* position: relative; z-index: 10; ya están en el HTML */
}
#hero-accesibilidad img { /* Imagen del símbolo de accesibilidad */
    /* w-24 h-24 md:w-32 md:h-32 mx-auto opacity-90 mb-8 ya están en HTML */
    filter: drop-shadow(0 4px 8px rgba(0,0,0,0.2)); /* Sombra para destacar el símbolo */
}
#hero-accesibilidad h1 {
    /* text-4xl sm:text-5xl md:text-6xl ... text-white style="text-shadow..." ya están en HTML */
    color: var(--primary-color); /* Cambiar color del título principal a azul oscuro */
    text-shadow: 1px 1px 2px rgba(255,255,255,0.5); /* Sombra clara para contraste sobre degradado */
}
#hero-accesibilidad p {
    /* text-lg sm:text-xl md:text-2xl ... text-gray-200 style="text-shadow..." ya están en HTML */
    color: var(--text-dark); /* Párrafo en gris oscuro para legibilidad */
    opacity: 0.9;
    text-shadow: none; /* Quitar sombra si el fondo es claro */
}

/* Contenido de Accesibilidad */
#contenido-accesibilidad .section-title-underline-center,
#contenido-accesibilidad .section-title-underline-left {
    /* Los estilos para estos subrayados ya existen y deberían aplicarse */
}

.accessibility-icon-wrapper {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3rem; /* w-12 */
    height: 3rem; /* h-12 */
    border-radius: 50%; /* rounded-full */
    background-color: var(--accesibilidad-icon-bg); /* Color secundario (azul claro) */
    color: var(--accesibilidad-icon-color); /* Texto/icono blanco */
    margin-bottom: 0.5rem; /* Espacio si el texto va debajo en móvil */
}
/* En la columna derecha, la imagen del símbolo ya tiene clases de Tailwind */
#contenido-accesibilidad .lg\:w-2\/5 img {
    /* w-48 h-48 md:w-64 md:h-64 mx-auto mb-6 object-contain ya están en HTML */
}
#contenido-accesibilidad .lg\:w-2\/5 h3 {
    /* text-xl font-semibold text-primary-color font-poppins mb-2 ya están en HTML */
}
#contenido-accesibilidad .lg\:w-2\/5 p {
    /* text-text-medium font-nunito text-sm ya están en HTML */
}
#contenido-accesibilidad .lg\:w-2\/5 .cta-button {
    /* Clases de Tailwind y .cta-button ya deberían darle estilo */
    font-size: 0.875rem; /* text-sm */
}

/* CTA Final de la página de accesibilidad */
#cta-accesibilidad-final { /* Si decides añadir un ID específico a esa sección CTA */
    /* background-color: var(--primary-color); text-white; ya están en HTML */
}
#cta-accesibilidad-final .cta-button.bg-accent-color {
    /* Estilos específicos si son necesarios */
}
#cta-accesibilidad-final .cta-button.bg-white {
    /* Estilos específicos si son necesarios */
}

/* --- FIN ESTILOS PÁGINA ACCESIBILIDAD --- */

/* --- NUEVOS ESTILOS PARA EL HERO DE AGUA-TERMAL.PHP (EFECTO ACUÁTICO) --- */
.hero-agua-termal-custom {
    background-color: var(--hero-agua-bg-deep-blue); 
    background-image: linear-gradient(to bottom, var(--hero-agua-bg-deep-blue) 0%, var(--hero-agua-bg-mid-blue) 100%); /* Cambiado a linear para un efecto de profundidad más simple */
    min-height: 70vh; 
    position: relative; 
    color: var(--hero-agua-text-color);
}

.hero-agua-termal-animated-bg {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    overflow: hidden; 
    pointer-events: none;
    z-index: 0; 
}

.hero-agua-termal-animated-bg .particle {
    position: absolute;
    background-color: var(--hero-agua-bubble-color1);
    border-radius: 50%;
    animation: rise-bubbles 10s linear infinite;
    opacity: 0; 
    box-shadow: inset -3px -3px 6px var(--hero-agua-bubble-highlight), 
                inset 3px 3px 6px rgba(0,0,0,0.05); /* Ajustado el brillo */
}
.hero-agua-termal-animated-bg .particle:nth-child(5n+1) { width: 15px; height: 15px; animation-duration: 12s; }
.hero-agua-termal-animated-bg .particle:nth-child(5n+2) { width: 25px; height: 25px; background-color: var(--hero-agua-bubble-color2); animation-duration: 18s; animation-delay: -3s; }
.hero-agua-termal-animated-bg .particle:nth-child(5n+3) { width: 10px; height: 10px; animation-duration: 10s; animation-delay: -7s; }
.hero-agua-termal-animated-bg .particle:nth-child(5n+4) { width: 30px; height: 30px; background-color: var(--hero-agua-bubble-color2); animation-duration: 15s; animation-delay: -10s; }
.hero-agua-termal-animated-bg .particle:nth-child(5n+5) { width: 20px; height: 20px; animation-duration: 13s; animation-delay: -5s; }

@keyframes rise-bubbles {
    0% { transform: translateY(100vh) translateX(0px) scale(0.5); opacity: 0; }
    10% { opacity: 0.8; } 
    90% { opacity: 0.4; } 
    100% { transform: translateY(-100px) translateX(20px) scale(1.2); opacity: 0; }
}

#hero-agua-termal-v2 .mb-8.text-center svg { 
    color: var(--hero-agua-icon-color); 
    filter: drop-shadow(0 0 15px color-mix(in srgb, var(--hero-agua-icon-color) 60%, transparent)); 
    animation: svg-icon-pulse 3.5s infinite ease-in-out;
}
@keyframes svg-icon-pulse {
    0%, 100% { transform: scale(1); opacity: 0.7; }
    50% { transform: scale(1.05); opacity: 1; }
}

/* TÍTULO ANIMADO CON EFECTO AGUA */
#hero-agua-termal-v2 h1 {
    color: var(--hero-agua-text-color);
    font-family: 'Poppins', sans-serif; /* Mantenemos Poppins para consistencia, pero más grueso */
    font-weight: 800; /* Extrabold */
    letter-spacing: -0.02em; /* Ligeramente más junto */
    text-shadow: 0 2px 4px rgba(0,0,0,0.3), 0 0 15px rgba(var(--logo-light-blue-rgb, 0, 174, 239), 0.3); /* Sombra y un ligero resplandor azul */
    position: relative; /* Para el pseudo-elemento de la onda */
    display: inline-block; /* Para que el ::after se ajuste al texto */
    padding-bottom: 5px; /* Espacio para la onda */
    /* Animación de onda de texto */
    animation: text-wave 4s ease-in-out infinite alternate;
}

/* Definir --logo-light-blue-rgb si no existe para el text-shadow */
:root {
    --logo-light-blue-rgb: 0, 174, 239; /* Valores RGB de tu --logo-light-blue */
}


/* Animación de onda para el texto */
@keyframes text-wave {
    0% {
        transform: translateY(0px);
        text-shadow: 0 2px 4px rgba(0,0,0,0.3), 0 0 15px rgba(var(--logo-light-blue-rgb), 0.3);
    }
    50% {
        transform: translateY(-3px); /* Sube un poco */
        text-shadow: 0 4px 8px rgba(0,0,0,0.4), 0 0 25px rgba(var(--logo-light-blue-rgb), 0.5); /* Sombra y resplandor más intensos */
    }
    100% {
        transform: translateY(0px);
        text-shadow: 0 2px 4px rgba(0,0,0,0.3), 0 0 15px rgba(var(--logo-light-blue-rgb), 0.3);
    }
}


#hero-agua-termal-v2 p {
    color: var(--slate-100, #f1f5f9); 
    line-height: 1.75;
    font-size: 1.1rem; 
    text-shadow: 0 1px 3px rgba(0,0,0,0.4);
}
/* --- FIN ESTILOS HERO AGUA TERMAL --- */

/* --- CTA SOSTENIBILIDAD --- */
/* Fondo animado tipo burbujas flotantes */
.cta-sostenibilidad-custom {
    background-color: transparent !important;
}
.cta-sostenibilidad-animated-bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 10;
    background: linear-gradient(to bottom right, #e6f5ea, #f0fdf4); /* verde muy claro */
    overflow: hidden;
    pointer-events: none;
}

.cta-sostenibilidad-animated-bg::before,
.cta-sostenibilidad-animated-bg::after {
    content: "";
    position: absolute;
    width: 200%;
    height: 200%;
    background-repeat: no-repeat;
    background-image:
        radial-gradient(circle at 20% 20%, rgba(34,197,94,0.15) 10px, transparent 11px),
        radial-gradient(circle at 70% 30%, rgba(22,163,74,0.2) 15px, transparent 16px),
        radial-gradient(circle at 40% 80%, rgba(21,128,61,0.2) 12px, transparent 13px),
        radial-gradient(circle at 80% 70%, rgba(34,197,94,0.1) 18px, transparent 19px);
    animation: float-bubbles 30s linear infinite;
}

.cta-sostenibilidad-animated-bg::after {
    animation-delay: 15s;
    opacity: 0.6;
}

@keyframes float-bubbles {
    0% {
        transform: translateY(0) rotate(0deg);
    }
    100% {
        transform: translateY(-20%) rotate(360deg);
    }
}

/* Botones */
.cta-button-sostenibilidad.primary {
    background-color: #22c55e; /* Tailwind green-500 */
    color: white;
    font-weight: 600;
    padding: 0.75rem 1.5rem;
    border-radius: 9999px;
    transition: background-color 0.3s ease;
}

.cta-button-sostenibilidad.primary:hover {
    background-color: #16a34a; /* Tailwind green-600 */
}

.cta-button-sostenibilidad.secondary {
    background-color: white;
    color: #16a34a;
    font-weight: 600;
    padding: 0.75rem 1.5rem;
    border: 2px solid #16a34a;
    border-radius: 9999px;
    transition: background-color 0.3s ease, color 0.3s ease;
}

.cta-button-sostenibilidad.secondary:hover {
    background-color: #16a34a;
    color: white;
}

/* Animaciones al hacer scroll (debes activar con JS o IntersectionObserver si lo deseas) */
.animate-on-scroll[data-animation="fade-in-up"] {
    opacity: 0;
    transform: translateY(20px);
    animation: fadeInUp 1s forwards;
}

.animate-on-scroll[data-animation="pop-in"] {
    opacity: 0;
    transform: scale(0.8);
    animation: popIn 1s forwards;
}

@keyframes fadeInUp {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes popIn {
    to {
        opacity: 1;
        transform: scale(1);
    }
}
/* --- FIN CTA SOSTENIBILIDAD --- */

/* --- NUEVOS ESTILOS PARA EL HERO DE FAQS --- */
.hero-faq-custom {
    /* py-28 md:py-40 relative flex items-center justify-center text-center overflow-hidden text-white ya están en HTML */
    background-color: var(--hero-faq-bg-start); /* Fallback */
    background-image: radial-gradient(circle at center, var(--hero-faq-bg-end) 0%, var(--hero-faq-bg-start) 70%);
    min-height: 60vh; /* Altura del hero */
}

.hero-faq-animated-background {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    overflow: hidden;
    pointer-events: none;
    z-index: 0; /* Detrás del contenido principal */
}

.q-mark-float {
    position: absolute;
    font-family: 'Poppins', sans-serif; /* O una fuente más decorativa para los ? */
    color: var(--hero-faq-q-mark-float);
    opacity: 0; /* Inician invisibles, la animación los muestra */
    animation: float-q-mark 15s linear infinite;
    /* El tamaño, top, left y animation-delay se definen inline en el HTML para variedad */
    /* Ejemplo de estilos inline que podrías tener:
       style="top: 10%; left: 15%; font-size: 3rem; animation-delay: 0s;"
    */
}
.q-mark-float.q1 { font-size: 4rem; animation-duration: 18s; }
.q-mark-float.q2 { font-size: 2.5rem; animation-duration: 22s; }
.q-mark-float.q3 { font-size: 5rem; animation-duration: 16s; opacity: 0.05; } /* Más grande, más sutil */
.q-mark-float.q4 { font-size: 3rem; animation-duration: 20s; }
.q-mark-float.q5 { font-size: 4.5rem; animation-duration: 14s; }
.q-mark-float.q6 { font-size: 2rem; animation-duration: 24s; opacity: 0.07;}
.q-mark-float.q7 { font-size: 3.5rem; animation-duration: 19s; }


@keyframes float-q-mark {
    0% { transform: translateY(20px) translateX(0px) rotate(0deg); opacity: 0; }
    10% { opacity: 1; } /* Aparece */
    25% { transform: translateY(-15px) translateX(10px) rotate(15deg); }
    50% { transform: translateY(10px) translateX(-15px) rotate(-10deg); opacity: 0.8; }
    75% { transform: translateY(-10px) translateX(5px) rotate(10deg); }
    90% { opacity: 0.1; } /* Comienza a desaparecer */
    100% { transform: translateY(20px) translateX(0px) rotate(0deg); opacity: 0; }
}

.hero-faq-main-icon-container {
    /* mb-8 animate-on-scroll data-animation="pop-in" ya están en HTML */
    /* Estilos adicionales si son necesarios */
}
.hero-faq-main-q-mark {
    font-family: 'Poppins', serif; /* Una fuente serifada con carácter para el ? principal */
    font-size: 7rem; /* text-8xl o 9xl */
    line-height: 1;
    font-weight: 900; /* extrabold o black */
    color: var(--hero-faq-q-mark-main);
    text-shadow: 0 0 15px color-mix(in srgb, var(--hero-faq-q-mark-main) 50%, transparent),
                 0 0 25px color-mix(in srgb, var(--hero-faq-q-mark-main) 30%, transparent),
                 0 2px 3px rgba(0,0,0,0.3);
    display: inline-block;
    animation: main-q-mark-pulse 3s infinite ease-in-out;
}

@keyframes main-q-mark-pulse {
    0%, 100% { transform: scale(1); opacity: 0.9; }
    50% { transform: scale(1.08); opacity: 1; }
}

#hero-faq-innovative .relative.z-10 h1 {
    /* text-4xl sm:text-5xl md:text-6xl ... text-white ... style="text-shadow..." ya están en HTML */
    color: var(--hero-faq-text-color);
    margin-top: 1rem; /* Espacio después del ? grande */
}

#hero-faq-innovative .relative.z-10 p {
    /* text-lg sm:text-xl md:text-2xl ... text-gray-200 ... style="text-shadow..." ya están en HTML */
    color: var(--slate-200, #e2e8f0); 
    max-width: 600px; /* Limitar ancho del párrafo */
}

/* Animación de entrada para el contenido del hero (si se usa data-animation) */
/* Estas son animaciones de ejemplo, puedes crear las tuyas o usar las de animate.css si la tienes */
[data-animation="pop-in"].is-visible {
    animation: pop-in-effect 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}
@keyframes pop-in-effect {
    0% { opacity: 0; transform: scale(0.5); }
    100% { opacity: 1; transform: scale(1); }
}

[data-animation="fade-in-up"].is-visible {
    animation: fade-in-up-effect 0.8s ease-out forwards;
}
@keyframes fade-in-up-effect {
    0% { opacity: 0; transform: translateY(30px); }
    100% { opacity: 1; transform: translateY(0); }
}
/* --- FIN ESTILOS HERO FAQ --- */

/* --- NUEVOS ESTILOS PARA EL HERO DE PLANO-DEL-PARQUE.PHP --- */
.hero-plano-custom {
    /* py-28 md:py-40 relative flex items-center justify-center text-center overflow-hidden animate-fade-in ya están en HTML */
    min-height: 60vh; /* Altura del hero */
    background-color: #f0f4f8; /* Un color de fondo muy claro por si la imagen no carga */
}

.hero-plano-bg-image-container {
    /* absolute inset-0 z-0 ya están en HTML */
}

.hero-plano-bg-image {
    width: 100%;
    height: 100%;
    object-fit: cover; /* Cubre todo el contenedor */
    filter: blur(8px) grayscale(50%) opacity(0.6); /* Efecto de desenfoque, escala de grises y opacidad */
    transform: scale(1.1); /* Ligero zoom para evitar bordes por el blur */
}

/* El overlay de color primario ya está en el HTML con opacity-80 */
/* #hero-plano-parque .bg-primary-color.opacity-80 { ... } */

.hero-map-icon-container {
    /* mb-8 animate-on-scroll ya están en HTML */
    animation: map-icon-pulse 2.5s infinite ease-in-out;
}

.hero-map-icon-container i {
    /* text-6xl md:text-7xl text-accent-color ya están en HTML */
    text-shadow: 0 0 15px rgba(255, 221, 0, 0.5), 0 0 25px rgba(255, 221, 0, 0.3); /* Resplandor amarillo */
}

@keyframes map-icon-pulse {
    0%, 100% {
        transform: scale(1);
    }
    50% {
        transform: scale(1.1);
    }
}

#hero-plano-parque h1 {
    /* text-4xl sm:text-5xl md:text-6xl font-extrabold ... text-white ... style="text-shadow..." ya están en HTML */
    color: var(--hero-plano-text-color);
}

#hero-plano-parque p {
    /* text-lg sm:text-xl md:text-2xl ... text-gray-200 ... style="text-shadow..." ya están en HTML */
    color: var(--slate-100, #f1f5f9); /* Un blanco un poco menos intenso que el título */
}

#hero-plano-parque .cta-button {
    /* bg-accent-color hover:bg-yellow-500 text-primary-color ... ya están en HTML */
    /* Puedes añadir más estilos específicos si es necesario */
    box-shadow: 0 5px 15px rgba(0,0,0,0.2);
}
#hero-plano-parque .cta-button:hover {
    box-shadow: 0 8px 20px rgba(0,0,0,0.3);
}

/* Estilos para el CTA Final de Plano del Parque (reutilizando algunos de atracciones si es similar) */
.cta-plano-custom { /* Para la sección #cta-plano-detallado */
    min-height: 50vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--primary-color); /* Fallback */
    position: relative;
}
.cta-plano-bg-map-image {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    background-size: cover;
    background-position: center center;
    z-index: 0;
    filter: brightness(0.4) blur(3px) grayscale(0.2); /* Oscuro, desenfocado y ligeramente desaturado */
    transform: scale(1.05);
    opacity: 0.7; /* Hacer la imagen de fondo más sutil */
}
/* El overlay de degradado ya está en el HTML:
   <div class="absolute inset-0 bg-gradient-to-br from-primary-color/90 via-secondary-color/80 to-primary-color/90 z-10"></div>
   Asegúrate que la opacidad (ej. /90, /80) sea la deseada.
*/
.cta-plano-floating-icons {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    overflow: hidden;
    pointer-events: none;
    z-index: 5; /* Entre el fondo y el overlay de color */
}
.cta-map-float-icon {
    position: absolute;
    color: var(--logo-white); /* Iconos blancos */
    opacity: 0.1; /* Muy sutiles */
    animation: floating-map-elements 20s linear infinite alternate;
}
.cta-map-float-icon:nth-child(even) {
    animation-duration: 25s;
    animation-direction: alternate-reverse;
}
@keyframes floating-map-elements {
    0% { transform: translateY(5px) translateX(-5px) rotate(-10deg) scale(0.95); opacity: 0.05;}
    50% { transform: translateY(-10px) translateX(10px) rotate(10deg) scale(1.05); opacity: 0.15;}
    100% { transform: translateY(5px) translateX(-5px) rotate(-10deg) scale(0.95); opacity: 0.05;}
}

#cta-plano-detallado .fa-route { /* Icono principal del CTA */
    color: var(--cta-plano-final-icon-color); /* Amarillo */
    text-shadow: 0 0 20px var(--cta-plano-final-icon-color);
}
#cta-plano-detallado h2 {
    color: var(--cta-plano-final-text-color);
}
#cta-plano-detallado p {
    color: var(--slate-100, #f1f5f9);
    line-height: 1.7;
}

.cta-button-plano-primary {
    background-color: var(--cta-plano-button-primary-bg);
    color: var(--cta-plano-button-primary-text);
    /* ... (otros estilos de botón primario como en CTA atracciones) ... */
    padding: 0.8rem 2rem; border-radius: 0.5rem; text-transform: uppercase; letter-spacing: 0.05em;
    font-family: 'Poppins', sans-serif; font-weight: 700; box-shadow: 0 5px 15px rgba(0,0,0,0.2);
    transition: all 0.3s ease; border: 2px solid transparent;
}
.cta-button-plano-primary:hover {
    background-color: color-mix(in srgb, var(--cta-plano-button-primary-bg) 90%, black);
    transform: translateY(-3px) scale(1.03);
    box-shadow: 0 8px 20px color-mix(in srgb, var(--cta-plano-button-primary-bg) 40%, black);
}

.cta-button-plano-secondary {
    background-color: var(--cta-plano-button-secondary-bg);
    color: var(--cta-plano-button-secondary-text);
    border: 2px solid var(--cta-plano-button-secondary-text);
    /* ... (otros estilos de botón secundario como en CTA atracciones) ... */
    padding: 0.8rem 2rem; border-radius: 0.5rem; text-transform: uppercase; letter-spacing: 0.05em;
    font-family: 'Poppins', sans-serif; font-weight: 600; transition: all 0.3s ease;
}
.cta-button-plano-secondary:hover {
    background-color: rgba(255, 255, 255, 0.15);
    border-color: var(--accent-color);
    color: var(--accent-color); 
    transform: translateY(-3px);
}
/* --- FIN ESTILOS HERO PLANO DEL PARQUE --- */

/* --- ESTILOS PARA EL HERO DE TARIFAS.PHP (ESTILO TICKET MEJORADO) --- */
.hero-tarifas-ticket-custom {
    background-color: var(--hero-tarifas-bg-start, #2c3e50); 
    background-image: linear-gradient(145deg, var(--hero-tarifas-bg-start, #2c3e50) 0%, var(--hero-tarifas-bg-end, #3498db) 100%);
    min-height: auto; /* Se ajustará al contenido en móvil */
    padding: 2rem 1rem; /* Padding para móviles */
    display: flex; 
    align-items: center; 
    justify-content: center; 
}
@media (min-width: 768px) { /* md breakpoint */
    .hero-tarifas-ticket-custom {
        min-height: 70vh; 
        padding-top: 3rem; 
        padding-bottom: 3rem;
    }
}
@media (min-width: 1024px) { /* lg breakpoint */
    .hero-tarifas-ticket-custom {
        padding-top: 4rem; 
        padding-bottom: 4rem;
    }
}

.hero-tarifas-bg-elements { 
    position: absolute; top: 0; left: 0; width: 100%; height: 100%;
    overflow: hidden; pointer-events: none; z-index: 0; 
}
.bg-icon-float { 
    position: absolute; color: var(--hero-tarifas-decorative-icon-color, rgba(255,255,255,0.07)); 
    opacity: 0.5; animation: floating-promo-icons 20s ease-in-out infinite alternate;
}
.bg-icon-float:nth-child(odd) { animation-direction: alternate-reverse; }
@keyframes floating-promo-icons { 
    0% { transform: translateY(0px) translateX(0px) rotate(-5deg) scale(0.9); opacity: 0.3; }
    25% { transform: translateY(-20px) translateX(15px) rotate(3deg) scale(1); opacity: 0.6; }
    50% { transform: translateY(15px) translateX(-15px) rotate(8deg) scale(0.95); opacity: 0.4; }
    75% { transform: translateY(-15px) translateX(20px) rotate(-6deg) scale(1.05); opacity: 0.7; }
    100% { transform: translateY(0px) translateX(0px) rotate(-5deg) scale(0.9); opacity: 0.3; }
}

.ticket-container {
    display: flex; 
    flex-direction: column; /* Por defecto apilado para móviles */
    background-color: var(--hero-tarifas-ticket-bg, #fdfdfd);
    color: var(--hero-tarifas-ticket-text, #1a2b41);
    border-radius: 16px;
    box-shadow: 0 10px 30px rgba(0,0,0,0.15), 0 0 0 1px rgba(0,0,0,0.05); 
    max-width: 720px; 
    width: 95%; /* Ocupa casi todo el ancho en móvil, pero permite centrado */
    margin: 1rem auto; /* Centrado y con margen vertical */
    overflow: hidden; 
    position: relative; 
}

/* Muescas semicirculares (solo para desktop) */
.ticket-container::before,
.ticket-container::after {
    content: '';
    position: absolute;
    background-color: var(--hero-tarifas-bg-start); /* Color del fondo de la sección hero */
    width: 24px; 
    height: 24px;
    border-radius: 50%;
    z-index: 1; 
    display: none; /* Oculto por defecto, se muestra en desktop */
}

.ticket-left-panel {
    padding: 1.5rem; 
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    width: 100%; 
    border-bottom: 2px dashed var(--hero-tarifas-ticket-border-color, #cccccc); /* Línea divisoria abajo en móvil */
}
.ticket-right-panel {
    background-color: var(--hero-tarifas-ticket-accent-bg, #00AEEF); 
    color: var(--hero-tarifas-ticket-accent-text, #FFFFFF); 
    padding: 1.5rem;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: space-around; 
    text-align: center;
    width: 100%; 
    min-height: 200px; /* Altura mínima para la parte celeste en móvil */
}

/* Estilos para Desktop (md y superior) */
@media (min-width: 768px) { 
    .ticket-container {
        flex-direction: row; /* Lado a lado en desktop */
        width: 100%; /* Ocupa el max-width: 720px */
    }
    .ticket-container::before, /* Mostrar muescas en desktop */
    .ticket-container::after {
        display: block; 
    }
    .ticket-container::before { 
        top: -12px; 
        left: calc(65% - 12px); /* Ajustado al ancho del panel izquierdo */
    }
    .ticket-container::after { 
        bottom: -12px;
        left: calc(65% - 12px); /* Ajustado al ancho del panel izquierdo */
    }

    .ticket-left-panel {
        width: 65%;
        padding: 2rem; 
        border-right: 2px dashed var(--hero-tarifas-ticket-border-color, #cccccc); 
        border-bottom: none; 
        text-align: left; 
    }
    .ticket-right-panel {
        width: 35%;
        padding: 2rem 1.5rem;
        border-top: none; 
        min-height: auto; /* Resetear min-height */
    }
    .ticket-header-main { text-align: left; }
    .ticket-header-main img { margin-left: 0; }
    .ticket-body-main { text-align: left; }
    .ticket-cta-button { align-self: flex-start; }
    .ticket-title-main { font-size: 2rem; }
    .ticket-description-main { font-size: 0.95rem; }
    .ticket-icon-placeholder i { font-size: 3rem; margin-bottom: 0;}
    .ticket-barcode-placeholder { height: 50px; margin-top: auto; margin-bottom: 0.5rem; }
    .ticket-info-block.hide-on-mobile {
        display: block; 
    }
}

.ticket-body-main { 
    flex-grow: 1; display: flex; flex-direction: column; text-align: center; 
}
.ticket-title-main { 
    color: var(--primary-color); font-size: 1.8rem; 
    line-height: 1.2; margin-bottom: 0.75rem; 
}
.ticket-description-main { 
    font-size: 0.9rem; 
    line-height: 1.6;
    color: var(--text-medium); margin-bottom: 1.5rem; 
    flex-grow: 1; 
}

.ticket-cta-button { 
    background-color: var(--hero-tarifas-cta-hover-bg);
    color: var(--hero-tarifas-cta-hover-text);
    font-family: 'Poppins', sans-serif; font-weight: 600;
    padding: 0.7rem 1.25rem; 
    border-radius: 0.375rem; 
    text-transform: uppercase; letter-spacing: 0.05em;
    font-size: 0.9rem; box-shadow: 0 3px 8px rgba(0,0,0,0.1);
    transition: all 0.25s ease; border: none;
    align-self: center; 
}
.ticket-cta-button:hover {
    background-color: var(--hero-tarifas-cta-hover-bg);
    color: var(--hero-tarifas-cta-hover-text);
    transform: translateY(-2px);
    box-shadow: 0 5px 12px rgba(0,0,0,0.15);
}
.ticket-cta-button i { transition: transform 0.25s ease; margin-right: 0.5rem;}
.ticket-cta-button:hover i { transform: translateX(3px); }

.ticket-icon-placeholder i { color: var(--hero-tarifas-ticket-accent-text); opacity: 0.8; font-size: 2.5rem; margin-bottom: 1rem;}
.ticket-info-block { margin-bottom: 1rem; }
.ticket-info-block:last-child { margin-bottom: 0; }
.ticket-info-label {
    display: block; font-size: 0.7rem; text-transform: uppercase;
    letter-spacing: 0.075em; opacity: 0.7; margin-bottom: 0.1rem;
}
.ticket-info-value { display: block; font-size: 1.1rem; font-weight: 700; }
.ticket-barcode-placeholder { 
    width: 80%; height: 40px; 
    background: repeating-linear-gradient( to right, 
        var(--hero-tarifas-ticket-accent-text) 0, 
        var(--hero-tarifas-ticket-accent-text) 1.5px, 
        transparent 1.5px, 
        transparent 3px 
    );
    opacity: 0.6; margin-top: 1rem; margin-bottom: 1rem;
}
.ticket-info-block.hide-on-mobile { 
    display: none;
}
/* --- FIN ESTILOS HERO TARIFAS --- */

/* --- NUEVOS ESTILOS PARA EL HERO DE CONTACTO.PHP --- */
.hero-contacto-custom {
    /* py-28 md:py-40 relative flex items-center justify-center text-white animate-fade-in overflow-hidden ya están en HTML */
    min-height: 60vh; /* Altura mínima para el hero */
    background-color: var(--primary-color); /* Color de fondo base si el degradado no se ve o mientras carga */
}

.hero-contacto-animated-bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden; /* Importante para que las burbujas no causen scroll */
    z-index: 0; /* Detrás del overlay de degradado y del contenido */
}

/* Estilos para las burbujas animadas */
.hero-contacto-animated-bg .bubble {
    position: absolute;
    background-color: rgba(255, 255, 255, 0.1); /* Color de las burbujas, muy sutil */
    border-radius: 50%;
    animation: hero-bubbles-float 20s linear infinite;
    /* El tamaño y la posición inicial se establecen con JS */
}

.hero-contacto-animated-bg .bubble:nth-child(2n) {
    animation-duration: 25s;
    background-color: rgba(255, 255, 255, 0.08);
}
.hero-contacto-animated-bg .bubble:nth-child(3n) {
    animation-duration: 15s;
    animation-direction: alternate;
}
.hero-contacto-animated-bg .bubble:nth-child(4n) {
    background-color: rgba(var(--logo-yellow-rgb, 255, 221, 0), 0.1); /* Usar variable si existe, o color directo */
}


@keyframes hero-bubbles-float {
    0% {
        transform: translateY(0) translateX(0) scale(1);
        opacity: 0;
    }
    25% {
        opacity: 1;
    }
    50% {
        transform: translateY(-30px) translateX(20px) scale(1.1);
        opacity: 0.8;
    }
    75% {
        opacity: 0.5;
    }
    100% {
        transform: translateY(30px) translateX(-20px) scale(0.9);
        opacity: 0;
    }
}

/* El div con la clase .absolute.inset-0.bg-gradient-to-br... ya está en el HTML para el overlay */
/* Asegurarse que el z-index del contenido sea mayor que el del fondo animado y el overlay */
#hero-contacto .relative.z-10 { 
    /* Las clases de Tailwind ya manejan esto, pero podrías forzarlo si es necesario */
    /* z-index: 10; */
}

#hero-contacto .fa-headset {
    /* text-5xl md:text-6xl text-accent-color mb-6 ya están en HTML */
    /* Podríamos añadirle una animación sutil de "pulso" o "brillo" también */
    animation: icon-pulse 2.5s infinite ease-in-out;
}

@keyframes icon-pulse {
    0%, 100% { transform: scale(1); opacity: 0.8; }
    50% { transform: scale(1.1); opacity: 1; }
}


#hero-contacto h1 {
    /* text-shadow ya está inline */
}
#hero-contacto p {
    /* text-shadow ya está inline */
}

.hero-contact-icon-link {
    display: inline-flex;
    align-items: center;
    padding: 0.75rem 1.5rem; /* py-3 px-6 */
    background-color: rgba(255, 255, 255, 0.15); /* Fondo semitransparente */
    color: var(--logo-white);
    border: 1px solid rgba(255, 255, 255, 0.3);
    border-radius: 0.5rem; /* rounded-lg */
    font-family: 'Poppins', sans-serif;
    font-weight: 500;
    font-size: 0.95rem;
    text-decoration: none;
    transition: background-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
}
.hero-contact-icon-link:hover {
    background-color: rgba(255, 255, 255, 0.25);
    border-color: rgba(255, 255, 255, 0.5);
    transform: translateY(-2px);
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
}
.hero-contact-icon-link i {
    margin-right: 0.6rem; /* Espacio entre icono y texto */
    font-size: 1.1em;
}
/* --- FIN ESTILOS HERO CONTACTO --- */

/* --- NUEVOS ESTILOS PARA LA SECCIÓN CTA EN TARIFAS.PHP (#cta-compra-tarifas) --- */
#cta-compra-tarifas {
    background-color: var(--cta-tarifas-bg-sand); /* Fallback */
    background-image: 
        repeating-linear-gradient( /* Patrón de líneas sutil */
            45deg,
            transparent,
            transparent 12px,
            rgba(0, 0, 0, 0.015) 12px, /* Líneas oscuras muy sutiles */
            rgba(0, 0, 0, 0.015) 14px 
        ),
        linear-gradient( /* Degradado principal de izquierda a derecha */
            100deg, /* Ángulo del degradado */
            var(--cta-tarifas-bg-sand) 0%, 
            var(--cta-tarifas-bg-water) 100%
        );
    color: var(--cta-tarifas-text-dark); /* Texto principal oscuro para contraste */
    position: relative; 
    overflow: hidden; /* Para los iconos de fondo */
    padding-top: 4rem; /* Ajustar padding si es necesario */
    padding-bottom: 4rem;
    border-top: 1px solid #D1D5DB; 
    border-bottom: 1px solid #D1D5DB;
}

.promo-bg-icons-container { 
    position: absolute; top: 0; left: 0;
    width: 100%; height: 100%;
    overflow: hidden; pointer-events: none; z-index: 0; 
}

.promo-bg-icon { 
    position: absolute;
    color: var(--cta-tarifas-icon-bg); /* Iconos de fondo en azul oscuro */
    opacity: 0.06; /* Aún más sutiles para no competir con el texto */
    animation: floating-promo-icons 18s ease-in-out infinite alternate;
}
.promo-bg-icon:nth-child(2n) { animation-duration: 22s; opacity: 0.05; }
.promo-bg-icon:nth-child(3n) { animation-duration: 15s; opacity: 0.07; }
.promo-bg-icon:nth-child(4n) { animation-duration: 25s; opacity: 0.04; }

@keyframes floating-promo-icons { 
    0% { transform: translateY(0px) translateX(0px) rotate(-5deg) scale(0.9); }
    25% { transform: translateY(-15px) translateX(10px) rotate(0deg) scale(1); }
    50% { transform: translateY(10px) translateX(-10px) rotate(5deg) scale(0.95); }
    75% { transform: translateY(-10px) translateX(15px) rotate(-2deg) scale(1.05); }
    100% { transform: translateY(0px) translateX(0px) rotate(-5deg) scale(0.9); }
}

#cta-compra-tarifas .container {
    position: relative; /* Para que el contenido esté sobre los iconos de fondo */
    z-index: 1;
}

#cta-compra-tarifas h2 {
    color: var(--accent-color); 
    text-shadow: 1px 1px 1px rgba(255,255,255,0.3); /* Sombra clara para destacar sobre degradado */
}

#cta-compra-tarifas p {
    line-height: 1.75;
    color: var(--text-dark); /* Párrafo en un gris oscuro, legible */
    opacity: 0.9;
}

.cta-button-tarifas { 
    background-color: var(--primary-color); /* Botón naranja vibrante */
    color: var(--logo-white); /* Texto blanco */
    font-family: 'Poppins', sans-serif;
    font-weight: 700; 
    padding: 0.85rem 2rem; 
    border-radius: 0.75rem; 
    text-transform: uppercase;
    letter-spacing: 0.05em;
    box-shadow: 0 5px 15px rgba(0,0,0,0.15);
    transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275), box-shadow 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); 
    border: 2px solid transparent; /* Para un posible efecto de borde en hover */
}
.cta-button-tarifas:hover {
    /* Mantenemos el mismo color de fondo y texto, solo efecto de transformación y sombra */
    background-color: var(--primary-color); 
    color: var(--logo-white);
    transform: translateY(-4px) scale(1.05);
    box-shadow: 0 8px 10px rgba(247, 148, 30, 0.5); /* Sombra más pronunciada con el color del botón */
    /* border-color: var(--logo-white); /* Opcional: un borde sutil en hover */
}
.cta-button-tarifas i {
    transition: transform 0.3s ease;
}
.cta-button-tarifas:hover i {
    transform: rotate(-10deg) scale(1.1);
}
/* --- FIN ESTILOS CTA TARIFAS --- */

/* --- NUEVOS ESTILOS PARA EL BANNER DE ESTADO DEL PARQUE EN INDEX.PHP --- */
#estado-parque-banner {
    background-color: var(--banner-gradient-sand); /* Fallback */
    background-image: 
        repeating-linear-gradient( /* Patrón de líneas sutil */
            135deg, /* Ángulo diferente para el patrón */
            transparent,
            transparent 10px,
            rgba(0, 0, 0, 0.01) 10px, /* Líneas oscuras muy sutiles sobre fondo claro */
            rgba(0, 0, 0, 0.01) 11px 
        ),
        linear-gradient( /* Degradado principal de izquierda a derecha */
            to right, 
            var(--banner-gradient-light-gray) 0%, 
            var(--banner-gradient-sand) 50%,
            var(--banner-gradient-turquoise) 100%
        );
    color: var(--banner-text-color); /* Texto principal oscuro */
    position: relative; 
    border-top: 1px solid #D1D5DB; /* Tailwind gray-300 */
    border-bottom: 1px solid #D1D5DB;
    /* py-6 md:py-8 shadow-lg ya están en el HTML */
}

#estado-parque-banner .estado-parque-content .text-sm.font-nunito { /* Para la fecha */
    color: var(--text-medium); /* Un gris medio para la fecha */
    opacity: 0.9;
    font-weight: 500;
}

#estado-parque-banner .estado-parque-content .text-2xl.font-poppins.font-bold { /* Para "ABIERTO HOY" / "CERRADO HOY" */
    line-height: 1.2;
    /* El color se define dinámicamente en el PHP. 
       Asegurarse que .text-success-color y .text-red-500 tengan buen contraste.
       .text-primary-color para "CONSULTAR" también debe contrastar. */
}
/* Colores de estado sobre el nuevo fondo claro */
#estado-parque-banner .text-success-color { color: var(--success-color); } /* Verde */
#estado-parque-banner .text-red-500 { color: var(--error-color); } /* Rojo */
#estado-parque-banner .text-primary-color { color: var(--primary-color); } /* Azul oscuro para "CONSULTAR" */


#estado-parque-banner .estado-parque-content .text-md.font-nunito { /* Para el horario */
    color: var(--text-dark); /* Texto del horario más oscuro */
    font-size: 1.1rem; 
    font-weight: 600; /* Más peso para el horario */
}

/* Estilos para el botón del banner */
#estado-parque-banner .cta-button {
    text-transform: uppercase;
    letter-spacing: 0.05em;
    transition: all 0.3s ease, transform 0.2s cubic-bezier(0.25, 0.8, 0.25, 1); 
    box-shadow: 0 3px 8px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.08);
    border: none; 
}
#estado-parque-banner .cta-button:hover {
    transform: translateY(-3px) scale(1.03); 
    box-shadow: 0 6px 12px rgba(0,0,0,0.15), 0 2px 4px rgba(0,0,0,0.1);
}

/* Botón para "ABIERTO HOY" */
#estado-parque-banner .cta-button.bg-accent-color { 
    background-color: var(--logo-green); /* Botón verde */
    color: var(--logo-white); 
}
#estado-parque-banner .cta-button.bg-accent-color:hover {
    background-color: color-mix(in srgb, var(--logo-green) 85%, black); 
    box-shadow: 0 7px 14px rgba(0, 154, 68, 0.25), 0 3px 6px rgba(0, 154, 68, 0.2);
}

/* Botón para "CERRADO HOY" */
#estado-parque-banner .cta-button.bg-gray-500 { 
    background-color: var(--text-medium); 
    color: var(--logo-white);
}
#estado-parque-banner .cta-button.bg-gray-500:hover {
    background-color: var(--text-dark); 
}
/* Botón para "CONSULTAR HORARIOS" */
#estado-parque-banner .cta-button.bg-secondary-color { 
    background-color: var(--secondary-color); /* Azul claro */
    color: var(--logo-white);
}
#estado-parque-banner .cta-button.bg-secondary-color:hover {
    background-color: color-mix(in srgb, var(--secondary-color) 85%, black);
}

/* --- FIN ESTILOS BANNER ESTADO PARQUE --- */

/* --- ESTILOS PARA EL HERO DE INDEX.PHP (DESKTOP Y MÓVIL) --- */
#inicio-hero {
    /* relative h-[calc(100vh-96px)] min-h-[500px] md:min-h-[600px] bg-cover bg-center flex items-center justify-center text-white animate-fade-in overflow-hidden 
       YA ESTÁN EN EL HTML Y SON BUENOS ESTILOS BASE PARA LA SECCIÓN HERO.
       El bg-cover bg-center en la sección principal puede actuar como fallback si los divs internos no tienen fondo.
       Podemos añadir un color de fondo de fallback aquí también.
    */
    background-color: var(--primary-color); /* Fallback si no hay imagen/video */
}

/* Contenedor para el fondo de video de YouTube (común para desktop y fallback móvil) */
.youtube-video-background-container { 
    position: absolute; top: 0; left: 0; width: 100%; height: 100%;
    overflow: hidden; z-index: 0; 
    background-color: #000; /* Fondo negro mientras carga el video */
}
.youtube-hero-iframe { 
    position: absolute; top: 50%; left: 50%;
    width: 100%; height: 100%; 
    transform: translate(-50%, -50%);
    pointer-events: none; 
    min-width: 177.77vh; /* (100vh * 16/9) para cubrir en portrait */
    min-height: 100vw;   /* Para cubrir en landscape */
    /* Si el video no es 16:9, estos valores podrían necesitar ajuste o usar la técnica de aspect-ratio de Tailwind */
}

/* Contenedor para imagen de fondo estática (común para desktop y móvil si se usa imagen) */
.index-hero-image-bg {
    /* absolute inset-0 z-0 bg-cover bg-center ya están en el HTML y son manejados por Tailwind */
    /* No se necesitan estilos adicionales aquí a menos que quieras un filtro específico */
}

/* Estilos específicos para el video local (desktop y móvil) */
#inicio-hero video { /* Apunta a cualquier video dentro del hero */
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover; /* Asegura que el video cubra todo el contenedor */
    z-index: 0;
}

/* Estilos específicos para la imagen del hero móvil (si se usa una imagen vertical) */
.hero-mobile-image {
    /* background-position: center center; */ /* Podrías querer ajustar esto para imágenes verticales */
    /* background-size: cover; ya está */
}

/* El overlay oscuro y el contenido textual ya tienen clases de Tailwind y estilos inline
   para text-shadow que deberían funcionar bien.
   El div.hero-content-desktop tiene 'hidden lg:block'
   El div.hero-content-mobile tiene 'block lg:hidden'
   El div.hero-content-desktop-responsive-fallback tiene 'lg:hidden'
   Estas clases de Tailwind manejan la visibilidad.
*/

/* Asegurar que el contenido textual esté por encima del fondo y el overlay */
#inicio-hero .relative.z-20 {
    /* Las clases de Tailwind ya manejan esto, pero si hay problemas de solapamiento: */
    /* z-index: 20; podría ser necesario si el overlay tiene z-index: 10 */
}

/* --- FIN ESTILOS HERO INDEX --- */


/* --- ESTILOS PARA BANNER PROMOCIONAL (INDEX.PHP) --- */
.promo-banner-section {
    /* Sin estilos específicos aquí por ahora, la imagen ocupa el ancho completo */
    /* Podrías añadir un margen superior/inferior si es necesario */
    /* margin-top: 1rem; */
    /* margin-bottom: 1rem; */
    line-height: 0; /* Para evitar espacio extra debajo de la imagen si es un enlace */
}
.promo-banner-section img {
    /* w-full h-auto block ya están en el HTML */
    /* Podrías añadir un max-height si quieres limitar su altura */
    /* max-height: 250px; */
    /* object-fit: cover; */ /* Si usas max-height */
}
/* --- FIN ESTILOS BANNER PROMOCIONAL --- */

.header-main {
    position: sticky; 
    top: 0;
    z-index: 40; 
    background-color: rgba(255, 255, 255, 0.98); /* Ligeramente translúcido */
    backdrop-filter: blur(10px); /* Efecto moderno de vidrio */
    box-shadow: 0 4px 20px -5px rgba(0,0,0,0.05); /* Sombra más suave y difusa */
    transition: all 0.3s ease;
}

.header-bottom-gradient-bar { 
    height: 3px; 
    width: 100%;
    background-image: linear-gradient(to right, var(--logo-light-blue), var(--logo-green), var(--logo-yellow));
}

/* --- Ítems de Navegación Superiores --- */
header nav a.nav-item, 
header nav button.nav-button-style {
    font-family: 'Poppins', sans-serif; 
    font-size: 0.95rem; 
    font-weight: 600; /* Un poco más de peso para legibilidad */
    color: var(--text-dark); 
    padding: 0.6rem 1rem; 
    border-radius: 9999px; /* Pill shape completo es más moderno que cuadrado */
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    display: inline-flex; 
    align-items: center;
    position: relative; 
    background-color: transparent;
}

/* Efecto Hover en Nav Items Superiores */
header nav a.nav-item:hover, 
header nav button.nav-button-style:hover,
.group:hover > .nav-button-style {
    color: var(--primary-color);
    background-color: #F0F9FF; /* Fondo muy sutil al hacer hover (azul muy claro) */
}

/* Indicador de Activo (Punto en lugar de línea) */
header nav a.nav-item::after, 
header nav button.nav-button-style::after {
    content: ''; 
    position: absolute; 
    bottom: 6px; 
    left: 50%;
    width: 4px; 
    height: 4px; 
    background-color: var(--accent-color); 
    border-radius: 50%;
    transform: translateX(-50%) scale(0);
    transition: transform 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
    opacity: 0;
}

header nav a.nav-item.active::after, 
header nav button.nav-button-style.active::after {
    transform: translateX(-50%) scale(1);
    opacity: 1;
    bottom: 8px;
}

/* Rotación del Chevron */
.nav-button-style i {
    transition: transform 0.3s ease;
}
.group:hover .nav-button-style i {
    transform: rotate(180deg);
    color: var(--accent-color);
}


/* --- MEGA MENÚ Y DROPDOWNS MODERNIZADOS --- */

.has-mega-menu { 
    position: relative;
    height: 100%;
    display: flex;
    align-items: center;
}

.mega-menu, .simple-dropdown {
    display: none; 
    position: absolute; 
    left: 50%; /* Centrado respecto al padre */
    transform: translateX(-50%) translateY(15px); /* Centrado + desplazamiento inicial */
    top: 100%; 
    width: auto; 
    background-color: #ffffff;
    /* Sombra moderna: suave, grande y difusa */
    box-shadow: 0 20px 40px -10px rgba(0,0,0,0.15), 0 0 10px rgba(0,0,0,0.05); 
    z-index: 50; 
    border-radius: 16px; /* Bordes mucho más redondeados */
    padding: 1.5rem; 
    border: 1px solid rgba(0,0,0,0.04); /* Borde sutilisimo */
    
    opacity: 0;
    visibility: hidden;
    transition: all 0.2s cubic-bezier(0.165, 0.84, 0.44, 1);
}

/* Ajustes específicos de ancho */
.mega-menu { min-width: 600px; max-width: 800px; }
.simple-dropdown { width: 260px; padding: 0.75rem; left: 0; transform: translateY(15px); } /* Alineado a la izquierda para dropdowns simples */

/* Barra superior decorativa del menú */
.mega-menu::before, .simple-dropdown::before { 
    content: ''; 
    position: absolute; 
    top: 0; 
    left: 16px; 
    right: 16px;
    height: 3px; 
    background-image: linear-gradient(to right, var(--logo-light-blue), var(--logo-green));
    border-radius: 0 0 4px 4px;
    opacity: 0.7;
}

/* Mostrar Menú al Hover */
.has-mega-menu:hover .mega-menu,
.group:hover .simple-dropdown {
    display: grid; /* O block para simple */
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0); /* Movimiento suave hacia arriba */
}
.group:hover .simple-dropdown {
    transform: translateY(0); /* Sin translateX para el simple alineado a izq */
    display: block;
}


/* --- Enlaces dentro del Menú (Lo más importante para el look moderno) --- */
.mega-menu-link { 
    display: flex;
    align-items: center;
    padding: 0.75rem 1rem; 
    color: var(--text-medium); 
    border-radius: 8px; /* Botones redondeados */
    transition: all 0.2s ease;
    font-weight: 500; 
    font-size: 0.95rem; 
    border-bottom: none; /* ADIÓS BORDES */
    position: relative;
}

/* Efecto Hover en Sub-enlaces */
.mega-menu-link:hover {
    background-color: #F3F4F6; /* Gris muy claro */
    color: var(--primary-color); 
    padding-left: 1.25rem; /* Desplazamiento sutil a la derecha */
}

/* Icono o indicador al hacer hover (opcional, añade un toque pro) */
.mega-menu-link:hover::before {
    content: '';
    position: absolute;
    left: 0.4rem;
    top: 50%;
    transform: translateY(-50%);
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background-color: var(--accent-color);
}

.mega-menu-link.active-sublink { 
    color: var(--primary-color);
    font-weight: 700; 
    background-color: #EFF6FF; /* Azul muy muy claro */
}


/* Columnas y Grid */
.mega-menu-columns-2 {
    grid-template-columns: 1.5fr 1fr; 
    gap: 2rem; 
}
.mega-menu-columns-3 {
    grid-template-columns: 1fr 1fr 1.2fr;
    gap: 2rem; 
    min-width: 700px;
}

.mega-menu-column.image-column {
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
.mega-menu-columns-2 .image-column img,
.mega-menu-columns-3 .image-column img {
    transition: transform 0.5s ease;
}
.has-mega-menu:hover .image-column img {
    transform: scale(1.05); /* Zoom suave en la imagen al abrir el menú */
}

/* Botón CTA en Nav */
.cta-comprar-tickets {
    background: linear-gradient(135deg, var(--primary-color), #0284c7);
    color: #ffffff !important;
    padding: 0.75rem 1.5rem !important;
    border-radius: 9999px;
    font-weight: 700;
    font-size: 0.95rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    box-shadow: 0 4px 15px rgba(0, 90, 171, 0.4);
    
    /* CORRECCIÓN DE VISIBILIDAD: Oculto por defecto (Móvil) */
    display: none !important; 
    
    align-items: center;
    justify-content: center;
    transition: all 0.3s ease;
    border: none;
    line-height: 1;
    white-space: nowrap;
}

/* MOSTRAR SOLO EN DESKTOP (lg = 1024px) */
@media (min-width: 1024px) {
    .cta-comprar-tickets {
        display: inline-flex !important;
    }
}

.cta-comprar-tickets:hover {
    background: linear-gradient(135deg, #004a8f, #0077b6);
    box-shadow: 0 6px 20px rgba(0, 90, 171, 0.5);
    transform: translateY(-2px);
    color: #ffffff !important;
}

.cta-comprar-tickets i {
    font-size: 1.1rem;
    margin-right: 0.5rem;
}

.cta-comprar-tickets:hover i {
    transform: rotate(-12deg);
}


/* Estilos para el Menú Desplegable Simple (Contingentes) */
.simple-dropdown {
    position: absolute;
    left: 0;
    top: calc(100% - 4px); /* Similar al mega-menu para alinearse con la barra del header */
    margin-top: 0; 
    width: 250px; 
    border-radius: 0 0 0.375rem 0.375rem; 
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -2px rgba(0,0,0,0.05); 
    background-color: var(--card-bg);
    border: 1px solid #e5e7eb; 
    
    opacity: 0;
    visibility: hidden;
    transform: translateY(10px); 
    transition: opacity 0.2s ease-in-out, visibility 0s linear 0.2s, transform 0.2s ease-in-out;
    z-index: 50;
    pointer-events: none;
    overflow: hidden; 
}
/* Si quieres el mismo borde degradado para el simple-dropdown: */
/*
.simple-dropdown::before {
    content: ''; position: absolute; top: 0; left: 0;
    width: 100%; height: 4px;
    background-image: linear-gradient(to right, var(--logo-light-blue), var(--logo-green), var(--logo-yellow));
}
.simple-dropdown .py-1 { // El contenedor de los links dentro del dropdown
    margin-top: 4px;
}
*/

.group:hover .simple-dropdown {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    transition-delay: 0s;
    pointer-events: auto;
}
.simple-dropdown-link {
    display: block; 
    padding: 0.8rem 1.2rem; 
    font-size: 0.95rem; 
    font-weight: 500; 
    color: var(--text-dark); 
    transition: background-color 0.2s ease, color 0.2s ease;
}
.simple-dropdown-link:hover {
    background-color: var(--section-bg-light);
    color: var(--primary-color);
}

/* ... (resto de tus estilos: Menú Móvil, Animaciones, Cards, FAQ, Calendario, Modal, etc. sin cambios) ... */

/* Estilos para Menú Móvil */
.mobile-menu { display: none; border-top: 1px solid #E5E7EB; }
.mobile-menu-link { 
    display: block; padding: 0.9rem 1.25rem; font-size: 1rem;
    font-weight: 600; color: var(--text-dark);
    border-bottom: 1px solid #f3f4f6;
    transition: background-color 0.2s ease, color 0.2s ease;
}
.mobile-menu-link:hover {
    background-color: var(--section-bg-light); color: var(--primary-color);
}
.mobile-menu-button-dropdown { 
    display: flex; justify-content: space-between; align-items: center;
    width: 100%; text-align: left; padding: 0.9rem 1.25rem;
    font-size: 1rem; font-weight: 600; color: var(--text-dark);
    border-bottom: 1px solid #f3f4f6;
    transition: background-color 0.2s ease, color 0.2s ease;
    background-color: transparent; border-top: none; 
    border-left: none; border-right: none;
}
.mobile-menu-button-dropdown:hover {
    background-color: var(--section-bg-light); color: var(--primary-color);
}
.mobile-submenu {
    display: none; padding-left: 1.25rem; background-color: #f9fafb; 
}
.mobile-submenu-link {
    display: block; padding: 0.8rem 1rem; 
    font-size: 0.95rem; 
    font-weight: 500; 
    color: var(--text-medium); 
    border-bottom: 1px solid #e5e7eb;
    transition: background-color 0.2s ease, color 0.2s ease;
}
.mobile-submenu-link:last-child {
    border-bottom: none;
}
.mobile-submenu-link:hover {
    background-color: var(--section-bg-light); color: var(--primary-color);
}

/* Botón CTA en Menú Móvil - MEJORADO */
.cta-comprar-tickets-mobile { 
    display: flex; 
    align-items: center;
    justify-content: center;
    padding: 0.6rem 1rem; 
    padding-left: 1rem;
    padding-right: 1rem;
    border-radius: 0.5rem; 
    background-color: var(--secondary-color); /* O el color que tenías (era accent-color) */
    color: var(--logo-white);
    font-family: 'Poppins', sans-serif;
    font-weight: 600; 
    font-size: 0.95rem; 
    text-decoration: none;
    transition: background-color 0.2s ease, transform 0.2s ease;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    width: 100%; /* Asegurar que ocupe el ancho si está en un flex-column container */
    margin-bottom: 5px;

}
.cta-comprar-tickets-mobile:hover {
    background-color: var(--primary-color); /* O el hover que tenías */
    color: var(--logo-white);
    box-shadow: 0 6px 15px rgba(0, 90, 171, 0.4);
    transform: scale(1.02); 
}
.cta-comprar-tickets-mobile i { 
    font-size: 1.1em; 
    margin-right: 0.5rem;
    transition: transform 0.25s ease;
}
.cta-comprar-tickets-mobile:hover i {
    transform: rotate(-10deg);
}
.cta-comprar-tickets-mobile > div { 
    display: flex;
    flex-direction: column;
    align-items: center; /* Centrar texto si el botón es text-center */
    text-align: center;
}
.cta-comprar-tickets-mobile span { display: block; font-size: 0.75em; line-height: 1.1; font-weight: 500;}
.cta-comprar-tickets-mobile span.font-bold { font-size: 0.95em; font-weight: 700;}



/* --- ESTILOS PARA FAQ ANIDADO --- */
.faq-category-group {
    /* Estilos para el contenedor de cada categoría principal */
    /* El borde degradado se aplicará al summary */
    position: relative; /* Para el pseudo-elemento del borde */
}

.faq-category-summary {
    position: relative; /* Para el pseudo-elemento del borde */
    /* padding-bottom: 1.5rem; /* Espacio para el borde degradado si se pone debajo del texto */
}

/* Borde degradado para las categorías principales */
.faq-category-summary::after {
    content: '';
    position: absolute;
    bottom: 0; /* Lo coloca en el borde inferior del summary */
    left: 0;
    width: 100%;
    height: 4px; /* Grosor del borde degradado */
    background-image: linear-gradient(to right, var(--logo-light-blue), var(--logo-green), var(--logo-yellow));
    opacity: 0; /* Inicialmente oculto */
    transition: opacity 0.3s ease-in-out;
}

details.faq-category-group[open] > summary.faq-category-summary::after {
    opacity: 1; /* Mostrar el borde cuando la categoría está abierta */
}
details.faq-category-group[open] > summary.faq-category-summary h2 {
    color: var(--secondary-color); /* Cambiar color del título de categoría cuando está abierta */
}


.faq-category-content {
    /* Estilos para el contenido desplegable de la categoría */
    /* background-color: #fdfdfd; /* Un fondo ligeramente diferente si se desea */
}

.faq-item-nested {
    /* Estilos para cada pregunta/respuesta individual */
}

.faq-item-nested summary {
    /* Estilos para la pregunta */
    transition: color 0.2s ease;
}
.faq-item-nested[open] summary {
    /* Estilos para la pregunta cuando está abierta */
    color: var(--primary-color);
    font-weight: 700;
}

.faq-answer {
    font-size: 1rem !important; /* Aumentado y con !important para asegurar que se aplique */
    line-height: 1.75 !important; /* Aumentado y con !important */
    color: var(--text-dark) !important; /* Color más oscuro para mejor contraste y con !important */
}
.faq-answer p {
    font-size: 1rem !important; /* Asegurar que los párrafos hereden o tengan este tamaño */
    line-height: 1.75 !important;
    color: var(--text-dark) !important;
    margin-bottom: 1rem; 
}
.faq-answer p:last-child {
    margin-bottom: 0;
}
.faq-answer a { 
    color: var(--secondary-color);
    font-weight: 600;
    text-decoration: underline;
    transition: color 0.2s ease;
}
.faq-answer a:hover {
    color: var(--primary-color);
    text-decoration: none;
}

/* Iconos del acordeón anidado */
.faq-item-nested summary .fa-plus,
.faq-item-nested summary .fa-minus {
    transition: opacity 0.2s ease, transform 0.2s ease;
}
.faq-item-nested[open] summary .fa-plus {
    opacity: 0;
    transform: rotate(90deg);
}
.faq-item-nested[open] summary .fa-minus {
    opacity: 1;
    transform: rotate(0deg);
}
.faq-item-nested summary .fa-minus {
    opacity: 0;
    transform: rotate(-90deg);
}

/* --- ESTILOS PARA EL LAYOUT DE DOS COLUMNAS EN LA PÁGINA DE FAQs --- */

/* El contenedor principal de la sección de FAQs ya usa Tailwind para el layout flex en 'lg':
   En preguntas-frecuentes.php: <div class="lg:flex lg:space-x-12">
   La columna de FAQs: <div class="lg:w-2/3">
   La columna lateral (aside): <aside class="lg:w-1/3 ..."> */

/* Estilos para los títulos de las secciones en la columna lateral (aside) */
aside .text-xl.font-bold.text-primary-color { /* Apunta a los h3 como "No te Pierdas", "Consejos...", etc. */
    /* La clase border-b-2 border-accent-color pb-2 ya está aplicada en el HTML para la línea inferior */
    /* Puedes añadir más estilos aquí si es necesario, por ejemplo, un margen superior si no es el primer elemento */
}

/* Estilos para las tarjetas de "No te Pierdas" en la columna lateral */
aside .block.group.overflow-hidden { /* Apunta a los <a> que envuelven imagen y texto */
    /* Las clases de Tailwind ya manejan el borde, redondeo, hover:shadow-xl y transition */
    /* Puedes añadir estilos adicionales aquí si es necesario */
}
aside .block.group img {
    /* Las clases de Tailwind ya manejan w-full h-40 object-cover transform group-hover:scale-105 transition-transform */
}
aside .block.group .p-4 h4 { /* Título de la tarjeta destacada */
    /* Las clases de Tailwind font-poppins font-semibold text-text-dark group-hover:text-secondary-color ya están */
    font-size: 1.05rem; /* Ligeramente más grande si se desea */
}
aside .block.group .p-4 p { /* Descripción de la tarjeta destacada */
    /* Las clases de Tailwind text-xs text-text-medium mt-1 ya están */
    line-height: 1.5;
}

/* Estilos para la lista de "Consejos para tu Visita" */
aside ul.space-y-3 li.flex { /* Apunta a cada <li> de consejo */
    /* Las clases de Tailwind ya manejan el flex y el espaciado */
}
aside ul.space-y-3 li i { /* Icono del consejo */
    /* Las clases de Tailwind text-lg text-accent-color mr-3 mt-1 fa-fw ya están */
    /* Podrías querer ajustar el tamaño o color si es necesario fuera de Tailwind */
}
aside ul.space-y-3 li span { /* Texto del consejo */
    /* Las clases de Tailwind text-text-medium font-nunito text-sm ya están */
    line-height: 1.6;
}
aside ul.space-y-3 li a { /* Enlaces dentro de los consejos */
    /* Las clases de Tailwind text-secondary-color hover:text-primary-color font-semibold ya están */
    text-decoration: underline;
}
aside ul.space-y-3 li a:hover {
    text-decoration: none;
}

/* --- NUEVOS ESTILOS PARA LA PÁGINA DE SERVICIOS --- */

.service-grid-container {
    /* Las clases de Tailwind grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 lg:gap-10 
       ya manejan el layout principal. */
}

.service-card {
    /* La clase bg-white rounded-xl shadow-lg overflow-hidden flex flex-col 
       de Tailwind ya proporciona la base. */
    /* Añadimos una transición para el hover general de la tarjeta si es necesario */
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.service-card:hover {
    transform: translateY(-5px); /* Ligera elevación al hacer hover */
    /* La clase hover:shadow-2xl de Tailwind ya maneja una sombra más pronunciada */
}

.service-card-image-wrapper {
    /* Contenedor de la imagen, si necesitas estilos específicos para él */
    position: relative;
    overflow: hidden; /* Para el efecto de zoom de la imagen */
}

.service-card-image {
    /* Las clases w-full h-56 object-cover transform group-hover:scale-105 transition-transform 
       de Tailwind ya manejan la imagen y su efecto de zoom.
       Asegúrate de que el div .service-card tenga la clase 'group' si quieres usar group-hover en la imagen.
       Si no, puedes aplicar el hover directamente a la imagen. */
    transition: transform 0.4s ease-out;
}

.service-card:hover .service-card-image {
    transform: scale(1.05); /* Efecto de zoom en la imagen al hacer hover en la tarjeta */
}

.service-card-title {
    /* Las clases text-xl lg:text-2xl font-bold text-primary-color font-poppins mb-1 
       de Tailwind ya dan el estilo base. */
    position: relative; /* Necesario para el pseudo-elemento del subrayado */
    padding-bottom: 0.5rem; /* Espacio para el subrayado */
    /* display: inline-block; Para que el subrayado solo ocupe el ancho del texto si se prefiere */
}

.service-title-underline {
    display: block; /* O inline-block si el título es inline-block */
    width: 60px; /* Ancho del subrayado */
    height: 4px; /* Grosor del subrayado */
    background-image: linear-gradient(to right, var(--logo-light-blue), var(--logo-green), var(--logo-yellow));
    border-radius: 2px;
    margin-top: 0.25rem; /* Espacio entre el título y el subrayado */
    /* Para centrar el subrayado si el título es text-center: margin-left: auto; margin-right: auto; */
}

/* Si el título está centrado, y quieres el subrayado centrado: */
/* .service-card .p-6.text-center .service-title-underline { 
    margin-left: auto;
    margin-right: auto;
} */


/* --- FIN ESTILOS PÁGINA DE SERVICIOS --- */

/* --- NUEVOS ESTILOS PARA LA SECCIÓN CTA REDES SOCIALES (INDEX.PHP) --- */
#cta-redes-sociales {
    background-color: var(--section-bg-light); /* Un fondo claro para la sección */
    /* padding py-16 lg:py-20 ya están en el HTML */
    /* relative overflow-hidden ya están en el HTML para el contenedor de iconos */
    border-top: 1px solid #e5e7eb; 
    border-bottom: 1px solid #e5e7eb;
}

.social-bg-icons-container {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden; /* Asegura que los iconos no se salgan si se mueven mucho */
    pointer-events: none; /* Para que no interfieran con el contenido */
    z-index: 0; /* Detrás del contenido principal de la sección */
}

.social-bg-icon {
    position: absolute;
    color: var(--secondary-color); /* Un color base para los iconos de fondo */
    opacity: 0.08; /* Muy sutiles */
    animation: floating-social-icons 15s ease-in-out infinite alternate;
    /* El tamaño, top, left y animation-delay se definen inline en el HTML */
}

/* Diferentes duraciones o delays para que no se muevan todos igual */
.social-bg-icon:nth-child(2n) {
    animation-duration: 18s;
}
.social-bg-icon:nth-child(3n) {
    animation-duration: 12s;
    opacity: 0.06;
}
.social-bg-icon:nth-child(4n) {
    animation-duration: 20s;
    opacity: 0.1;
}


@keyframes floating-social-icons {
    0% {
        transform: translateY(0px) translateX(0px) rotate(0deg) scale(1);
    }
    25% {
        transform: translateY(-10px) translateX(5px) rotate(5deg) scale(1.05);
    }
    50% {
        transform: translateY(5px) translateX(-5px) rotate(-3deg) scale(1);
    }
    75% {
        transform: translateY(-5px) translateX(10px) rotate(3deg) scale(1.02);
    }
    100% {
        transform: translateY(0px) translateX(0px) rotate(0deg) scale(1);
    }
}


#cta-redes-sociales .container {
    /* position: relative; z-index: 10; ya está en el HTML para el contenido principal */
}

#cta-redes-sociales h2 {
    /* Estilos adicionales si son necesarios */
}

#cta-redes-sociales p {
    line-height: 1.7; 
}

.social-cta-icon {
    display: inline-flex;
    flex-direction: column; 
    align-items: center;
    justify-content: center;
    padding: 1rem 1.25rem; 
    border-radius: 0.75rem; 
    text-decoration: none;
    transition: transform 0.25s ease-out, box-shadow 0.25s ease-out, background-color 0.25s ease-out;
    min-width: 110px; /* Ancho mínimo para cada botón */
    max-width: 140px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
    border: 1px solid transparent; 
    text-align: center;
}

.social-cta-icon i {
    font-size: 2.25rem; /* text-3xl o 4xl */
    margin-bottom: 0.5rem; 
    transition: transform 0.25s ease-out;
}

.social-cta-icon span {
    font-family: 'Poppins', sans-serif;
    font-size: 0.75rem; /* text-xs */
    font-weight: 500; 
    text-transform: uppercase;
    letter-spacing: 0.05em;
    line-height: 1.2;
}

.social-cta-icon:hover {
    transform: translateY(-5px) scale(1.03);
    box-shadow: 0 8px 15px rgba(0,0,0,0.1);
}
.social-cta-icon:hover i {
    transform: scale(1.1);
}

/* Colores específicos para cada red social */
.social-cta-icon.instagram {
    background-color: #FFF0F5; 
    color: #C13584; 
    border-color: #E1306C;
}
.social-cta-icon.instagram:hover {
    background-color: #FCE4EC;
    color: #AD1A7A;
}

.social-cta-icon.facebook {
    background-color: #EBF5FF; 
    color: #1877F2; 
    border-color: #1877F2;
}
.social-cta-icon.facebook:hover {
    background-color: #D6EFFF;
    color: #1062CC;
}

.social-cta-icon.tiktok {
    background-color: #F0F0F0; 
    color: #010101; 
    border-color: #69C9D0; 
}
.social-cta-icon.tiktok:hover {
    background-color: #EAEAEA;
    color: #000000;
    border-color: #EE1D52; 
}
.social-cta-icon.tiktok:hover i { 
    animation: tiktok-pulse 0.8s infinite alternate;
}

@keyframes tiktok-pulse {
    from { transform: scale(1); }
    to { transform: scale(1.15); }
}

.social-cta-icon.youtube {
    background-color: #FFEEEE; 
    color: #FF0000; 
    border-color: #FF0000;
}
.social-cta-icon.youtube:hover {
    background-color: #FFDDDD;
    color: #CC0000;
}

.social-cta-icon.x-twitter {
    background-color: #E7E9EA; /* Un gris claro o el negro de X */
    color: #0F1419; /* Negro de X */
    border-color: #0F1419;
}
.social-cta-icon.x-twitter:hover {
    background-color: #CFD9DE;
    color: #000000;
}
/* --- FIN ESTILOS CTA REDES SOCIALES --- */

/* --- ESTILOS PARA VIDEO HERO DE YOUTUBE (Aplicable a Index y Piscinas) --- */
.youtube-video-background-container { /* Contenedor para el iframe */
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden; 
    z-index: 0; 
    background-color: #333; 
}

.youtube-hero-iframe { /* Clase para los iframes de YouTube en los hero */
    position: absolute;
    top: 50%;
    left: 50%;
    width: 100%; 
    height: 100%; 
    transform: translate(-50%, -50%);
    pointer-events: none; 
    /* Estilos para cubrir y mantener aspect ratio 16:9 */
    min-width: 177.77vh; /* (100vh * 16/9) */
    min-height: 100vw;   /* (100vw * 9/16) pero asegurando que cubra el ancho si es más limitante */
}

/* --- NUEVO ESTILO PARA HERO DE IMAGEN ESTÁTICA EN INDEX.PHP --- */
.index-hero-image-bg {
    /* absolute inset-0 z-0 bg-cover bg-center ya están en el HTML */
    /* No se necesitan estilos adicionales aquí si las clases de Tailwind son suficientes */
    /* Si necesitas forzar algo, como un filtro o un overlay específico para la imagen: */
    /* filter: brightness(0.9); */
}

/* --- ESTILOS PARA VIDEO HERO DE YOUTUBE (MEJORADOS) --- */
#hero-piscinas {
    /* Tailwind: relative h-screen min-h-[500px] md:min-h-[600px] overflow-hidden */
    /* Asegúrate de que el overflow: hidden esté en el contenedor principal del hero */
}

.youtube-video-background-container {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden; 
    z-index: 0; 
    background-color: #333; /* Color de fondo mientras carga o si falla el video */
}

.youtube-hero-iframe { /* Nueva clase para el iframe */
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    pointer-events: none; /* Para que los elementos superpuestos sean clickeables */

    /* Lógica para cubrir manteniendo aspect ratio 16:9 */
    /* Asumimos que el video de YouTube es 16:9 */
    /* Si el alto del contenedor es la dimensión limitante */
    width: calc(100vh * 16 / 9); /* Ancho necesario para cubrir 100vh de alto */
    height: 100vh;

    /* Si el ancho del contenedor es la dimensión limitante */
    /* Estas reglas de min-width/min-height aseguran que se cumpla la otra condición si es necesario */
    min-width: 100vw;
    min-height: calc(100vw * 9 / 16); /* Alto necesario para cubrir 100vw de ancho */

    /* Para asegurar que siempre sea lo suficientemente grande, incluso con barras de scroll o UI del navegador */
    /* Podrías necesitar valores ligeramente mayores si aún ves bordes, ej. 101vh, 101vw */
}
/* --- FIN ESTILOS VIDEO HERO --- */

/* --- ESTILOS PARA PÁGINA DE ATRACCIONES CON PARALLAX --- */
.atracciones-page-main {
    /* Podrías añadir un color de fondo general si las secciones parallax no cubren todo o hay espacios */
}

.parallax-sections-container {
    /* Contenedor de todas las secciones parallax */
}

.parallax-section {
    /* min-h-screen flex items-center relative overflow-hidden ya están en el HTML */
    /* Asegurar que el texto sea legible sobre cualquier fondo */
    color: var(--logo-white); 
}

.parallax-bg {
    /* absolute inset-0 z-0 bg-cover bg-center ya están en el HTML */
    /* El JavaScript ajustará el transform para el efecto parallax */
    will-change: transform; /* Optimización para el navegador */
    transition: transform 0.1s linear; /* Transición suave para el parallax si se actualiza con JS */
}

.parallax-content {
    /* relative z-20 text-white etc. ya están en el HTML */
    /* Añadimos una sombra de texto para mejorar legibilidad */
    text-shadow: 0 1px 3px rgba(0,0,0,0.3);
    opacity: 0; /* Inicialmente oculto para animación de entrada */
    transform: translateY(30px); /* Desplazamiento inicial para animación */
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
    transition-delay: 0.2s; /* Pequeño retraso para que se anime después de que la sección sea visible */
}

.parallax-section.is-visible .parallax-content {
    opacity: 1;
    transform: translateY(0);
}

/* Ajustes de alineación para el contenido de texto (ya manejado con clases de Tailwind en el PHP) */
/* .md\:text-left { text-align: left !important; } */
/* .md\:text-right { text-align: right !important; } */
/* .md\:text-center { text-align: center !important; } */

/* Estilos para los títulos y textos dentro de .parallax-content */
.parallax-content h3 { /* Subtítulo */
    /* text-xl md:text-2xl font-nunito font-semibold mb-2 text-opacity-90 */
    /* color: var(--accent-color); ya está inline */
    text-shadow: 0 1px 2px rgba(0,0,0,0.5); /* Sombra más pronunciada para el subtítulo */
}
.parallax-content h2 { /* Título Principal */
    /* text-3xl md:text-4xl lg:text-5xl font-poppins font-extrabold mb-4 leading-tight */
    text-shadow: 0 2px 4px rgba(0,0,0,0.5); /* Sombra más pronunciada para el título */
}
.parallax-content p { /* Descripción */
    /* text-base md:text-lg font-nunito leading-relaxed mb-6 text-opacity-90 */
    max-width: 600px; /* Limitar ancho de párrafo para mejor lectura */
}
/* Ajustar márgenes si la alineación no es centrada */
.md\:text-left .parallax-content p { margin-right: auto; margin-left: 0; }
.md\:text-right .parallax-content p { margin-left: auto; margin-right: 0; }


/* --- FIN ESTILOS ATRACCIONES PARALLAX --- */

/* --- ESTILOS PARA PÁGINA DE SERVICIOS (SALÓN DE RELAX) --- */
.salon-relax-page { /* Contenedor principal de la página si necesitas estilos específicos */
    /* background-color: #fdfaf6;  Un color de fondo muy sutil si se desea para toda la página */
}

/* Estilo para la galería de imágenes del salón */
#galeria-salon .grid > div { /* Para asegurar que las imágenes dentro del grid de la galería se comporten bien */
    position: relative; /* Necesario para aspect-ratio si se usa padding-top */
}
#galeria-salon .grid img {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}
#galeria-salon .grid img:hover {
    transform: scale(1.03);
}

/* Estilo para los títulos de sección con borde degradado */
.section-title-gradient-border {
    position: relative;
    padding-bottom: 0.75rem; /* Espacio para el borde */
}
.section-title-gradient-border::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 80px; /* Ancho del borde */
    height: 4px;
    background-image: linear-gradient(to right, var(--logo-light-blue), var(--logo-green), var(--logo-yellow));
    border-radius: 2px;
}

/* Estilos para las tarjetas de servicios de relax */
.service-relax-card {
    /* Tailwind: bg-white rounded-xl shadow-lg overflow-hidden flex flex-col hover:shadow-2xl transition-shadow duration-300 */
    /* Puedes añadir más estilos aquí si es necesario */
}
.service-relax-card h4 { /* Título del servicio individual */
    position: relative; /* Para la etiqueta NUEVO */
    /* El mb-1 ya está en el HTML, ajusta si es necesario */
}

/* Etiqueta "NUEVO" */
.service-new-tag {
    display: inline-block;
    background-color: var(--accent-color); /* Amarillo */
    color: var(--primary-color); /* Texto oscuro para contraste */
    font-size: 0.65rem; /* Muy pequeño */
    font-weight: 700; /* Bold */
    padding: 0.15rem 0.4rem;
    border-radius: 0.25rem; /* rounded-sm */
    margin-left: 0.5rem;
    text-transform: uppercase;
    vertical-align: middle; /* Alinear con el texto del título */
    line-height: 1;
}

/* Subrayado degradado para títulos de servicios de relax */
.service-title-underline-relax {
    display: block; 
    width: 50px; 
    height: 3px; 
    background-image: linear-gradient(to right, var(--logo-light-blue), var(--logo-green)); /* Un degradado más corto para subtítulos */
    border-radius: 1.5px;
    margin-top: 0.35rem; /* Espacio después del título y la etiqueta NUEVO */
    /* margin-bottom: 0.75rem;  Ya manejado por el mt-3 del párrafo siguiente */
}

.service-relax-card p { /* Descripción del servicio */
    /* Tailwind: text-text-medium font-nunito text-sm leading-relaxed mb-4 flex-grow */
    /* Ajusta el tamaño si es necesario */
    font-size: 0.9rem; /* Ligeramente más grande para legibilidad */
    line-height: 1.65;
}

.service-relax-card .mt-auto span { /* Texto de duración */
    /* Tailwind: text-xs font-semibold text-secondary-color uppercase tracking-wider */
    /* Puedes ajustar el color o tamaño si es necesario */
}
.service-relax-card .mt-auto i.far.fa-clock {
    color: var(--secondary-color); /* Asegurar color del icono */
}
/* ESTILOS PARA LA SECCIÓN DE CONTACTO DEL SALÓN Y SUS BOTONES (MEJORADOS) */
#contacto-salon-relax {
    /* background-color: var(--section-bg-light); /* Un azul muy claro de fondo */
    /* O un degradado sutil */
    background-image: linear-gradient(135deg, var(--section-bg-light) 0%, color-mix(in srgb, var(--secondary-color) 20%, white) 100%);
    padding-top: 3rem; /* Aumentar padding vertical de la sección */
    padding-bottom: 3rem;
}

.salon-contact-box {
    /* Las clases de Tailwind max-w-2xl mx-auto bg-white p-8 rounded-xl shadow-lg 
       ya hacen la mayor parte del trabajo. */
    /* Añadimos una sombra más pronunciada y un borde sutil para destacar más */
    box-shadow: 0 10px 25px rgba(0, 50, 100, 0.1), 0 5px 10px rgba(0,0,0,0.04);
    border: 1px solid #e2e8f0; /* Tailwind slate-200 */
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.salon-contact-box:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 30px rgba(0, 50, 100, 0.12), 0 8px 15px rgba(0,0,0,0.06);
}

.salon-contact-box h3 { /* Título "Conéctate con Nosotros" */
    /* color: var(--primary-color); ya está en el HTML */
    /* Podríamos añadir un subrayado degradado aquí también si se desea */
    position: relative;
    padding-bottom: 0.5rem;
    margin-bottom: 1rem; /* Ajustar margen */
}
.salon-contact-box h3::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 60px;
    height: 3px;
    background-image: linear-gradient(to right, var(--logo-orange), var(--accent-color));
    border-radius: 1.5px;
}


.salon-social-button {
    display: inline-flex; align-items: center; justify-content: center;
    padding: 0.85rem 1.75rem; border-radius: 0.5rem; 
    font-family: 'Poppins', sans-serif; font-weight: 600; 
    font-size: 0.9rem; text-decoration: none;
    transition: all 0.3s ease;
    /* Eliminamos la sombra base aquí para que la del contenedor destaque más */
    /* box-shadow: 0 2px 5px rgba(0,0,0,0.1); */ 
    border: 2px solid transparent; 
}
.salon-social-button:hover {
    transform: translateY(-3px) scale(1.02); 
    box-shadow: 0 5px 12px rgba(0,0,0,0.18); /* Sombra en hover para el botón */
}
.salon-social-button i {
    font-size: 1.3em; 
    margin-right: 0.6rem; 
}

.instagram-button {
    background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%,#d6249f 60%,#285AEB 90%);
    color: white;
}
.instagram-button:hover {
    opacity: 0.9; 
    box-shadow: 0 5px 15px rgba(214, 36, 159, 0.4); 
}

.whatsapp-button {
    background-color: #25D366; 
    color: white;
}
.whatsapp-button:hover {
    background-color: #1DAE52; 
    box-shadow: 0 5px 15px rgba(37, 211, 102, 0.4); 
}

/* --- FIN ESTILOS PÁGINA DE SERVICIOS (SALÓN DE RELAX) --- */

/* Hero Section para Salón de Relax */
.hero-salon-custom-v2 {
    /* h-[75vh] min-h-[500px] md:min-h-[600px] text-white flex items-center justify-center text-center overflow-hidden ya están en HTML */
    background-color: #333; /* Fallback si el video/imagen no carga */
}

.hero-salon-video-background-container {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    overflow: hidden; z-index: 0;
}

.hero-salon-video-bg { /* Para el video de fondo */
    position: absolute;
    top: 50%; left: 50%;
    min-width: 100%; min-height: 100%;
    width: auto; height: auto;
    transform: translateX(-50%) translateY(-50%);
    object-fit: cover;
    filter: brightness(0.6) blur(1px); /* Oscurecer y desenfocar ligeramente el video */
}
.hero-salon-bg-image { /* Para la imagen de fondo si se usa en lugar de video */
    /* absolute inset-0 z-0 ya están en HTML */
    background-size: cover;
    background-position: center;
    filter: blur(2px) brightness(0.7); 
    transform: scale(1.05); 
}


/* El overlay ya está en el HTML:
   <div class="absolute inset-0 bg-gradient-to-t from-black/70 via-black/40 to-transparent z-10"></div> 
   Asegúrate que los colores y la opacidad del degradado sean los deseados.
   Por ejemplo, para usar las variables CSS:
*/
#hero-salon-relax-v2 .bg-gradient-to-t { /* Apuntando al div del overlay */
    background-image: linear-gradient(to top, var(--hero-salon-overlay-end), var(--hero-salon-overlay-start), transparent);
    opacity: 0.9; /* Ajusta la opacidad general del overlay si es necesario */
}


.hero-salon-main-icon {
    /* text-5xl md:text-6xl text-white opacity-80 mb-6 inline-block ya están en HTML */
    color: var(--hero-salon-icon-color);
    text-shadow: 0 0 15px rgba(255, 255, 255, 0.3), 0 0 25px rgba(255, 255, 255, 0.2);
    animation: gentle-icon-float 5s infinite ease-in-out;
}

@keyframes gentle-icon-float {
    0%, 100% { transform: translateY(0) scale(1); }
    50% { transform: translateY(-10px) scale(1.05); }
}

#hero-salon-relax-v2 h1 {
    /* font-serif font-light ya están en HTML */
    color: var(--hero-salon-text-color);
    /* text-shadow ya está inline */
}

#hero-salon-relax-v2 p {
    /* text-gray-200 ya está en HTML */
    color: var(--slate-100, #f1f5f9);
    /* text-shadow ya está inline */
}

.cta-button-hero-salon {
    background-color: var(--hero-salon-button-bg);
    color: var(--hero-salon-button-text);
    border: 1px solid var(--hero-salon-button-border);
    padding: 0.75rem 2rem; /* py-3 px-8 */
    border-radius: 30px; /* Más redondeado */
    font-family: 'Poppins', sans-serif;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    transition: all 0.3s ease;
}
.cta-button-hero-salon:hover {
    background-color: var(--hero-salon-button-hover-bg);
    border-color: var(--hero-salon-button-hover-border);
    transform: translateY(-2px);
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
}

/* CTA Final para Salón de Relax */
/* Estilo principal del contenedor CTA */
.cta-salon-final-custom {
    background: linear-gradient(135deg, #b8e0d2, #d6e4f0, #cce3dc);
    position: relative;
    overflow: hidden;
}

/* Imagen de fondo desenfocada y oscurecida */
.cta-salon-final-bg-image {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    background-size: cover;
    background-position: center;
    z-index: 0;
    filter: brightness(0.5) blur(2px) saturate(1.2);
    transform: scale(1.05);
}

.floating-icon {
  position: absolute;
  font-size: 4rem;
  color: white;
  opacity: 0.12;
  z-index: 15;
  pointer-events: none;
  user-select: none;
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.3);
  animation: float 14s ease-in-out infinite, hueShift 10s linear infinite;
  filter: hue-rotate(0deg);
}

.icon1 { top: 10%; left: 5%; animation-delay: 0s; }
.icon2 { top: 30%; right: 10%; animation-delay: 3s; }
.icon3 { bottom: 15%; left: 25%; animation-delay: 6s; }
.icon4 { bottom: 10%; right: 15%; animation-delay: 9s; }

@keyframes float {
  0%   { transform: translateY(0px) scale(1) rotate(0deg); }
  25%  { transform: translateY(-20px) scale(1.05) rotate(5deg); }
  50%  { transform: translateY(0px) scale(1.1) rotate(-5deg); }
  75%  { transform: translateY(20px) scale(1.05) rotate(5deg); }
  100% { transform: translateY(0px) scale(1) rotate(0deg); }
}

@keyframes hueShift {
  0%   { filter: hue-rotate(0deg); }
  50%  { filter: hue-rotate(180deg); }
  100% { filter: hue-rotate(360deg); }
}

/* Estilos generales del texto */
#cta-salon-final h2 {
    color: var(--cta-salon-final-text-color, white);
    text-shadow: 1px 1px 3px rgba(0,0,0,0.5);
}
#cta-salon-final p {
    color: var(--slate-100, #f1f5f9);
    line-height: 1.7;
    text-shadow: 1px 1px 2px rgba(0,0,0,0.3);
}

/* Botones */
.cta-button-salon-social {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.8rem 1.8rem;
    border-radius: 9999px;
    font-family: 'Poppins', sans-serif;
    font-weight: 600;
    font-size: 0.9rem;
    text-decoration: none;
    transition: all 0.3s ease;
    box-shadow: 0 3px 8px rgba(0,0,0,0.15);
    border: 2px solid transparent;
    min-width: 200px;
}
.cta-button-salon-social:hover {
    transform: translateY(-3px) scale(1.03);
    box-shadow: 0 6px 15px rgba(0,0,0,0.2);
}
.cta-button-salon-social i {
    font-size: 1.2em;
    margin-right: 0.5rem;
}

/* Instagram */
.cta-button-salon-social.instagram {
    background: linear-gradient(135deg, #f6d365 0%, #fda085 100%);
    color: black;
}
.cta-button-salon-social.instagram:hover {
    background: linear-gradient(135deg, #fda085 0%, #f6d365 100%);
}

/* WhatsApp */
.cta-button-salon-social.whatsapp {
    background: #25D366;
    color: black;
}
.cta-button-salon-social.whatsapp:hover {
    background: #1ebe5d;
}
/* --- FIN ESTILOS SALÓN DE RELAX (HERO Y CTA) --- */

/* --- ESTILOS PARA PÁGINA DE ATRACCIONES (EL FARO - PARALLAX Y HAZ DE LUZ) --- */
.atracciones-page-main { /* Contenedor principal de la página de atracciones */
    /* background-color: #e0e7ff; /* Un fondo general si es necesario */
}

.parallax-sections-container {
    /* No necesita estilos específicos si las secciones parallax ocupan todo el ancho */
}

.parallax-section {
    /* min-h-screen flex items-center relative overflow-hidden ya están en el HTML */
    color: var(--logo-white); 
    background-color: #333; /* Color de fondo de respaldo si la imagen no carga */
}

.parallax-bg {
    /* absolute inset-0 z-0 bg-cover bg-center ya están en el HTML */
    will-change: transform; 
    transition: transform 0.1s linear; /* Suaviza el movimiento parallax si el JS actualiza rápido */
    /* Para asegurar que el fondo sea lo suficientemente grande para el parallax: */
    /* Podrías necesitar que sea más alto que la sección, ej. height: 130%; top: -15%; */
    /* Pero con background-size: cover y el ajuste de transform, debería funcionar bien. */
}

.parallax-content {
    text-shadow: 0 1px 4px rgba(0,0,0,0.5);
    opacity: 0; 
    transform: translateY(40px); 
    transition: opacity 0.8s cubic-bezier(0.165, 0.84, 0.44, 1), transform 0.8s cubic-bezier(0.165, 0.84, 0.44, 1);
    transition-delay: 0.1s; 
}

.parallax-section.is-visible .parallax-content {
    opacity: 1;
    transform: translateY(0);
}

.parallax-content h3 { /* Subtítulo */
    text-shadow: 0 1px 3px rgba(0,0,0,0.6); 
}
.parallax-content h2 { /* Título Principal */
    text-shadow: 0 2px 5px rgba(0,0,0,0.6); 
}
.parallax-content p { 
    max-width: 600px; 
}
.md\:text-left .parallax-content p { margin-right: auto; margin-left: 0; }
.md\:text-right .parallax-content p { margin-left: auto; margin-right: 0; }

#galeria-faro-simple .grid {}
.gallery-item-faro { 
    position: relative; 
    overflow: hidden; 
    border-radius: 0.5rem; 
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); 
}
.gallery-item-faro img {
    display: block; 
    width: 100%;
    height: 100%; 
    object-fit: cover; 
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    cursor: pointer;
}
.gallery-item-faro:hover img {
    transform: scale(1.05); 
}

/* Estilo para el título de la galería del faro con subrayado centrado */
.section-title-underline-center {
    position: relative;
    padding-bottom: 0.75rem; /* Espacio para el subrayado */
    display: inline-block; /* Para que el ::after se base en el ancho del texto */
}
.section-title-underline-center::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 80px; /* Ancho del subrayado */
    height: 4px; /* Grosor del subrayado */
    background-image: linear-gradient(to right, var(--logo-orange), var(--accent-color), var(--logo-light-blue)); /* Degradado */
    border-radius: 2px;
}
/* Estilos para los títulos de sección con borde/subrayado degradado a la izquierda */
.section-title-underline-left,
.section-title-underline-left--short {
    position: relative;
    padding-bottom: 0.5rem; /* Espacio para el subrayado */
    display: inline-block; /* Para que el subrayado solo ocupe el ancho del texto */
    margin-bottom: 0.75rem; /* Ajustar el margen inferior del título mismo */
}
.section-title-underline-left::after,
.section-title-underline-left--short::after {
    content: '';
    position: absolute;
    bottom: -2px; /* Ligeramente debajo del texto */
    left: 0;
    width: 100%; /* O un ancho fijo si prefieres, ej. 100px */
    max-width: 200px; /* Evitar que sea demasiado largo en títulos cortos */
    height: 3px; 
    background-image: linear-gradient(to right, var(--logo-light-blue), var(--logo-green), var(--logo-yellow));
    border-radius: 1.5px;
}
.section-title-underline-left--short::after {
    max-width: 120px; /* Subrayado más corto para títulos más pequeños */
}

/* Tabla de Composición Química */
.agua-termal-composition-table {
    width: 100%;
    border-collapse: collapse; /* Para que los bordes se unan bien */
    font-size: 0.875rem; /* text-sm de Tailwind */
}
.agua-termal-composition-table th,
.agua-termal-composition-table td {
    padding: 0.75rem 0.5rem; /* py-3 px-2 */
    text-align: left;
    border-bottom: 1px solid #e5e7eb; /* Tailwind gray-200 */
}
.agua-termal-composition-table th {
    font-family: 'Poppins', sans-serif;
    font-weight: 600; /* semibold */
    color: var(--primary-color);
    background-color: color-mix(in srgb, var(--section-bg-light) 70%, transparent); /* Un fondo muy sutil para los encabezados */
    text-transform: uppercase;
    font-size: 0.75rem; /* text-xs */
}
.agua-termal-composition-table td:nth-child(2), /* Columna de Resultado (1ra) */
.agua-termal-composition-table td:nth-child(4) { /* Columna de Resultado (2da) */
    font-weight: 600; /* semibold */
    color: var(--text-dark);
    text-align: right;
}

/* Visibilidad responsiva para las cabeceras y filas de la tabla */
.agua-termal-table-head-mobile,
.table-row-mobile {
    display: none; /* Oculto por defecto */
}

@media (max-width: 767px) { /* md breakpoint (Tailwind: sm es 640px, md es 768px) */
    .agua-termal-table-head-desktop,
    .table-row-desktop {
        display: none; /* Ocultar la versión de escritorio en móviles */
    }
    .agua-termal-table-head-mobile,
    .table-row-mobile {
        display: table-header-group; /* Para thead */
        /* Para tr, el display por defecto es table-row, así que no necesita cambiarse si está dentro de tbody */
    }
    .table-row-mobile {
        display: table-row; /* Asegurar que se muestre como fila */
    }
    .agua-termal-composition-table th,
    .agua-termal-composition-table td {
        padding: 0.6rem 0.4rem; /* Padding más pequeño en móvil */
        font-size: 0.8rem; /* Ligeramente más pequeño */
    }
     .agua-termal-composition-table th {
        font-size: 0.7rem;
    }
}

#map-container {
    /* position: relative; w-full max-w-5xl mx-auto shadow-2xl rounded-lg ya están en el HTML */
    /* Asegúrate de que la imagen del mapa no cause desbordamiento si es más grande que el contenedor */
    overflow: hidden; 
}

.map-marker {
    position: absolute;
    transform: translate(-50%, -50%); /* Centra el marcador en sus coordenadas top/left */
    background-color: var(--accent-color); /* Amarillo del logo */
    color: var(--primary-color); /* Texto/icono azul oscuro */
    width: 32px; /* Tamaño del marcador */
    height: 32px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid var(--logo-white);
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    cursor: pointer;
    transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
    z-index: 10; /* Para que estén encima de la imagen del mapa */
}
.map-marker:hover {
    transform: translate(-50%, -50%) scale(1.2);
    box-shadow: 0 4px 10px rgba(0,0,0,0.3);
}
.map-marker-icon {
    font-size: 1rem; /* Tamaño del icono interno */
}

/* Efecto de pulso para el marcador */
.map-marker-pulse {
    position: absolute;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    background-color: var(--accent-color);
    opacity: 0.7;
    z-index: -1; /* Detrás del icono */
    animation: pulse-animation 2s infinite ease-out;
    pointer-events: none; /* Para que no interfiera con el clic en el botón principal */
}

@keyframes pulse-animation {
    0% {
        transform: scale(0.8);
        opacity: 0.7;
    }
    70% {
        transform: scale(1.6);
        opacity: 0;
    }
    100% {
        transform: scale(0.8);
        opacity: 0;
    }
}

/* Estilos para el Popover (basado en la estructura de Flowbite/Popper) */
.map-popover {
    /* absolute z-20 invisible inline-block w-64 text-sm ... ya están en el HTML */
    /* La visibilidad se controlará con JS añadiendo/quitando 'invisible' y 'opacity-0' */
    /* Ajustes para el posicionamiento si no se usa Popper.js: */
    /* Por defecto, el JS lo posicionará. Si quieres un posicionamiento CSS básico: */
    /* transform: translate(-50%, -110%); /* Posiciona arriba del marcador, centrado */
    /* bottom: 100%; */
    /* left: 50%; */
    /* margin-bottom: 10px; /* Espacio entre marcador y popover */
    /* Este posicionamiento CSS básico puede no ser ideal para marcadores cerca de los bordes. */
}
.map-popover[data-popper-placement^="top"] > [data-popper-arrow]::before {
    bottom: -4px;
    border-width: 0.5rem 0.5rem 0 0.5rem;
    border-left-color: transparent !important;
    border-right-color: transparent !important;
    border-bottom-color: transparent !important;
}
.map-popover[data-popper-placement^="bottom"] > [data-popper-arrow]::before {
    top: -4px;
    border-width: 0 0.5rem 0.5rem 0.5rem;
    border-left-color: transparent !important;
    border-right-color: transparent !important;
    border-top-color: transparent !important;
}
.map-popover .font-poppins { /* Para el título del popover */
    color: var(--primary-color);
}
.map-popover .text-xs.font-nunito p {
    color: var(--text-medium);
    margin-bottom: 0.5rem;
}
.map-popover .text-xs.font-nunito p:last-child {
    margin-bottom: 0;
}
.map-popover .text-secondary-color { /* Para el enlace "Ver más" */
    color: var(--secondary-color);
}
.map-popover .text-secondary-color:hover {
    color: var(--primary-color);
}

/* Sección de Listado de Piscinas */
/* Sección de Listado de Piscinas */
.piscina-info-block {
    /* lg:flex items-center gap-8 lg:gap-12 animate-on-scroll ya están en HTML */
    padding-bottom: 4rem;
    margin-bottom: 4rem;
    border-bottom: 1px solid #e5e7eb; /* Tailwind gray-200 */
}
.piscina-info-block:last-child {
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0;
}

.piscina-gallery-slider-container {
    /* position: relative; shadow-xl rounded-xl overflow-hidden ya están en HTML */
}
.piscina-gallery-slider {
    height: 450px; /* Altura del slider, ajusta según tus imágenes */
    cursor: grab;
}
.piscina-gallery-slider:active {
    cursor: grabbing;
}
.piscina-gallery-slider .keen-slider__slide img {
    /* w-full h-full object-cover ya están en HTML */
    border-radius: 0.75rem; /* rounded-xl (si el contenedor no tiene overflow:hidden) */
}

.piscina-gallery-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background-color: rgba(0, 0, 0, 0.4);
    color: white;
    border: none;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 50%;
    cursor: pointer;
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background-color 0.2s ease, transform 0.2s ease;
}
.piscina-gallery-arrow:hover {
    background-color: rgba(0, 0, 0, 0.6);
    transform: translateY(-50%) scale(1.1);
}
.piscina-gallery-arrow--left { left: 1rem; }
.piscina-gallery-arrow--right { right: 1rem; }

.piscina-gallery-dots {
    position: absolute;
    bottom: 1rem;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 0.6rem;
    z-index: 10;
}
.piscina-gallery-dots .dot {
    width: 10px; 
    height: 10px;
    background-color: rgba(255, 255, 255, 0.6);
    border-radius: 50%;
    border: 1px solid rgba(0,0,0,0.1);
    padding: 0; 
    cursor: pointer;
    transition: background-color 0.2s ease, transform 0.2s ease;
}
.piscina-gallery-dots .dot.active {
    background-color: var(--logo-white);
    transform: scale(1.2);
}

.piscina-info-block h3 {
    /* text-2xl md:text-3xl font-bold text-primary-color font-poppins mb-2 ya están en HTML */
    position: relative;
    display: inline-block; /* Para que el subrayado se ajuste al texto */
    padding-bottom: 0.5rem; /* Espacio para el subrayado */
}
.piscina-info-block h3::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 70%; /* Ancho del subrayado */
    height: 4px;
    background-image: linear-gradient(to right, var(--logo-light-blue), var(--logo-green), var(--logo-yellow));
    border-radius: 2px;
}
/* Para los títulos en el layout invertido */
.lg\:flex-row-reverse .piscina-info-block h3 {
    /* text-align: right; si quieres que el texto se alinee a la derecha */
}
.lg\:flex-row-reverse .piscina-info-block h3::after {
    left: auto; /* Desactivar left */
    right: 0; /* Alinear a la derecha */
}


.piscina-info-block .text-secondary-color {
    /* text-lg font-semibold font-nunito mb-4 ya están en HTML */
}
.piscina-info-block .prose {
    /* prose max-w-none font-nunito text-text-medium leading-relaxed mb-6 ya están en HTML */
}
.piscina-info-block .grid { /* Para los datos clave */
    /* grid grid-cols-2 gap-4 text-sm font-nunito mb-6 ya están en HTML */
}
.piscina-info-block .grid > div { /* Cada item de dato clave */
    /* flex items-center ya están en HTML */
}
.piscina-info-block .grid > div i {
    /* fa-fw mr-2 text-secondary-color ya están en HTML */
    width: 20px; /* Asegurar alineación */
}
.piscina-info-block .grid > div strong {
    color: var(--text-dark);
}

.piscina-features-list h4 {
    /* text-md font-bold font-poppins mb-2 text-text-dark ya están en HTML */
}
.feature-tag {
    display: inline-flex;
    align-items: center;
    background-color: var(--section-bg-light);
    color: var(--primary-color);
    padding: 0.4rem 0.8rem;
    border-radius: 20px; /* rounded-full */
    font-size: 0.8rem;
    font-weight: 500;
    border: 1px solid #e0e7ff; /* Un borde sutil */
}
.feature-tag i {
    color: var(--secondary-color);
}
/* --- FIN ESTILOS PÁGINA DE PISCINAS --- */

/* --- ESTILOS PARA EL MOSAICO Y DETALLES EXPANDIBLES DE PISCINAS --- */
.piscinas-mosaic-grid {
    display: grid;
    grid-template-columns: 1fr; 
    gap: 1.5rem; 
}
@media (min-width: 768px) { 
    .piscinas-mosaic-grid { grid-template-columns: repeat(2, 1fr); }
    .piscina-card-tamano--grande_rect { grid-column: span 2; }
    .piscina-card-tamano--grande_cuad { grid-column: span 1; }
}
@media (min-width: 1024px) { 
    .piscinas-mosaic-grid { grid-template-columns: repeat(3, 1fr); }
    .piscina-card-tamano--grande_rect { grid-column: span 2; }
    .piscina-card-tamano--grande_cuad { grid-column: span 1; }
}
.piscina-card {
    background-color: var(--card-bg, #FFFFFF); border-radius: 0.75rem; 
    box-shadow: 0 4px 12px rgba(0,0,0,0.08); overflow: hidden;
    display: flex; flex-direction: column;
    transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1), box-shadow 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.piscina-card:hover {
    transform: translateY(-8px); box-shadow: 0 12px 24px rgba(0,0,0,0.12); 
}
.piscina-card-image-wrapper {
    position: relative; width: 100%; padding-top: 60%; 
    background-color: #e2e8f0; 
}
.piscina-card-image {
    position: absolute; top: 0; left: 0; width: 100%; height: 100%;
    object-fit: cover; 
    transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.piscina-card:hover .piscina-card-image { transform: scale(1.06); }
.piscina-card-content {
    padding: 1.25rem; display: flex; flex-direction: column;
    flex-grow: 1; background-color: var(--card-bg); 
}
.piscina-card-nombre {
    font-family: 'Poppins', sans-serif; font-size: 1.3rem; 
    font-weight: 700; color: var(--primary-color);
    margin-bottom: 0.35rem; line-height: 1.3;
}
.piscina-card-subtitulo {
    font-family: 'Nunito Sans', sans-serif; font-size: 0.9rem; 
    color: var(--secondary-color); font-weight: 600;
    margin-bottom: 0.75rem; line-height: 1.4;
}
.piscina-card-desc-corta {
    font-family: 'Nunito Sans', sans-serif; font-size: 0.875rem; 
    color: var(--text-medium); line-height: 1.6;
    margin-bottom: 1rem; flex-grow: 1; 
}
.piscina-card-ver-mas-btn {
    display: inline-block; background: none; border: none;
    padding: 0.25rem 0; color: var(--primary-color); 
    font-family: 'Poppins', sans-serif; font-weight: 700; 
    font-size: 0.95rem; text-transform: uppercase;
    letter-spacing: 0.05em; cursor: pointer; position: relative; 
    align-self: flex-start; margin-top: auto; 
    transition: color 0.2s ease;
}
.piscina-card-ver-mas-btn::after {
    content: ''; position: absolute; left: 0; bottom: -2px; 
    width: 100%; height: 3px; 
    background-image: linear-gradient(to right, var(--logo-orange), var(--accent-color), var(--logo-light-blue)); 
    transition: transform 0.3s ease, opacity 0.3s ease;
    transform: scaleX(0); transform-origin: left; opacity: 0.8;
}
.piscina-card:hover .piscina-card-ver-mas-btn::after,
.piscina-card.piscina-card--expanded .piscina-card-ver-mas-btn::after { 
    transform: scaleX(1); opacity: 1;
}
.piscina-card-ver-mas-btn:hover { color: var(--secondary-color); }

/* Estilos para la sección de detalles expandida DENTRO de la tarjeta */
.piscina-card-details-expanded {
    max-height: 0; 
    opacity: 0;
    overflow: hidden;
    transition: max-height 0.5s cubic-bezier(0.25, 0.8, 0.25, 1), opacity 0.4s ease-in-out 0.1s, padding-top 0.3s ease, padding-bottom 0.3s ease;
    padding-top: 0;
    padding-bottom: 0;
    border-top: 1px solid #e5e7eb; 
    margin-top: 1rem; 
}
.piscina-card.piscina-card--expanded .piscina-card-details-expanded {
    opacity: 1;
    padding-top: 1.5rem; 
    padding-bottom: 1.5rem; 
    /* max-height se establece con JS */
}
.piscina-details-slider-container {
    position: relative; background-color: #e2e8f0; 
    height: 300px; max-height: 45vh;
    margin-bottom: 1.5rem; border-radius: 0.5rem; overflow: hidden;
}
.piscina-details-slider-arrow {
    position: absolute; top: 50%; transform: translateY(-50%);
    background-color: rgba(0, 0, 0, 0.4); color: white;
    border: none; padding: 0.6rem; border-radius: 50%;
    cursor: pointer; z-index: 5; transition: background-color 0.2s ease;
}
.piscina-details-slider-arrow:hover { background-color: rgba(0, 0, 0, 0.6); }
.piscina-details-slider-arrow--left { left: 0.5rem; }
.piscina-details-slider-arrow--right { right: 0.5rem; }
.piscina-details-slider-dots {
    position: absolute; bottom: 0.75rem; left: 50%;
    transform: translateX(-50%); display: flex; gap: 0.4rem; z-index: 5;
}
.piscina-details-slider-dots .dot {
    width: 8px; height: 8px; background-color: rgba(255, 255, 255, 0.6);
    border-radius: 50%; border: none; padding: 0; cursor: pointer;
    transition: background-color 0.2s ease;
}
.piscina-details-slider-dots .dot.active { background-color: white; }
.piscina-details-info { padding: 0 1.25rem; } /* Padding solo horizontal para la info */
.piscina-details-nombre { 
    font-size: 1.5rem; color: var(--primary-color); margin-bottom: 0.25rem;
}
.piscina-details-subtitulo {
    font-size: 1rem; color: var(--secondary-color); font-weight: 600; margin-bottom: 1rem;
}
.piscina-details-descripcion {
    font-size: 0.95rem; color: var(--text-medium); line-height: 1.65; margin-bottom: 1.5rem;
}
.piscina-details-descripcion p { margin-bottom: 0.75rem; }
.piscina-details-descripcion p:last-child { margin-bottom: 0; }
.piscina-details-section-title {
    font-family: 'Poppins', sans-serif; font-weight: 600; color: var(--text-dark);
    font-size: 1.1rem; margin-top: 1.5rem; margin-bottom: 0.5rem;
    padding-bottom: 0.25rem; border-bottom: 1px solid #e5e7eb;
}
.piscina-details-datos-clave {
    list-style: none; padding-left: 0; margin-bottom: 1.5rem; font-size: 0.9rem;
}
.piscina-details-datos-clave li { padding: 0.4rem 0; border-bottom: 1px dotted #e0e0e0; }
.piscina-details-datos-clave li:last-child { border-bottom: none; }
.piscina-details-datos-clave strong { color: var(--primary-color); margin-right: 0.5rem; }

.piscina-details-caracteristicas { 
    display: flex; 
    flex-wrap: wrap; /* Permite que los items pasen a la siguiente línea */
    gap: 0.5rem; /* Espacio entre items */
    margin-bottom: 2.5rem; /* Espacio después del contenedor de características */
}
.caracteristica-item-expanded { 
    display: inline-flex; align-items: center;
    background-color: var(--section-bg-light); color: var(--primary-color);
    padding: 0.4rem 0.8rem; border-radius: 9999px; 
    font-size: 0.8rem; font-weight: 500;
    border: 1px solid color-mix(in srgb, var(--secondary-color) 30%, transparent);
    white-space: nowrap; /* Evita que el texto dentro del badge se parta */
}
.caracteristica-item-expanded i { margin-right: 0.4rem; color: var(--secondary-color); }

/* --- FIN ESTILOS MOSAICO Y DETALLES PISCINAS --- */

/* Estilos para el botón "Habla con Nosotros" en la columna lateral */
aside .cta-button.bg-secondary-color { /* Apunta al botón específico */
    /* Las clases de Tailwind ya definen la mayoría de los estilos */
    /* Puedes añadir overrides o ajustes aquí si es necesario */
    padding-top: 0.70rem; /* Ajuste fino del padding si es necesario */
    padding-bottom: 0.70rem;
    font-size: 0.95rem; /* Ajuste fino del tamaño de fuente */
}
aside .cta-button.bg-secondary-color i {
    /* Estilos para el ícono del botón si es necesario */
}

/* Animaciones de Logo y Nav Items */
@keyframes slideInFromLeft {
    from { transform: translateX(-100%); opacity: 0; }
    to { transform: translateX(0); opacity: 1; }
}
@keyframes fallFromTop {
    from { transform: translateY(-50px); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}
.logo-container { 
    animation: slideInFromLeft 0.8s ease-out forwards; 
}
.nav-item { 
    opacity: 0; 
}
.nav-item.fall-in { 
    animation: fallFromTop 0.5s ease-out forwards; 
}


/* --- ESTILOS GENERALES (Placeholder, Animaciones Scroll, Feature Cards, FAQ) --- */
.placeholder-img {
    background-color: color-mix(in srgb, var(--secondary-color) 30%, transparent);
    display: flex; align-items: center; justify-content: center;
    color: var(--primary-color);
    font-weight: bold; border-radius: 0.5rem; font-family: 'Poppins', sans-serif;
}
.animate-on-scroll {
    opacity: 0; transform: translateY(40px);
    transition: opacity 0.65s cubic-bezier(0.68, -0.55, 0.27, 1.55), transform 0.65s cubic-bezier(0.68, -0.55, 0.27, 1.55);
    transition-delay: 0.1s;
}
.animate-on-scroll.is-visible { opacity: 1; transform: translateY(0); }
.animate-fade-in { opacity: 0; transition: opacity 0.8s ease-out; transition-delay: 0.1s; }
.animate-fade-in.is-visible { opacity: 1; }
.feature-card {
    background-color: var(--card-bg); border-radius: 0.75rem; 
    box-shadow: 0 4px 6px rgba(0,0,0,0.05); overflow: hidden;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.feature-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 15px 30px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1);
}
.feature-card .placeholder-img { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.faq-item summary::-webkit-details-marker { display: none; } 
.faq-item summary::marker { display: none; }


/* --- ESTILOS PARA TARIFAS EN MÓVILES --- */
.tarifa-card-mobile {
    background-color: var(--card-bg, #FFFFFF);
    border: 1px solid #e5e7eb; 
    border-radius: 0.75rem; 
    padding: 1rem; 
    margin-bottom: 1rem; 
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); 
}
.tarifa-card-mobile .tarifa-header {
    font-family: 'Poppins', sans-serif; font-size: 1.125rem; font-weight: 600; 
    color: var(--primary-color, #005AAB); margin-bottom: 0.75rem; 
}
.tarifa-card-mobile .tarifa-descripcion {
    font-size: 0.875rem; color: var(--text-medium, #4A5568); margin-bottom: 0.75rem; 
}
.tarifa-card-mobile .tarifa-item {
    display: flex; justify-content: space-between; padding-top: 0.5rem; 
    padding-bottom: 0.5rem; border-bottom: 1px solid #f3f4f6; 
}
.tarifa-card-mobile .tarifa-item:last-child { border-bottom: none; }
.tarifa-card-mobile .tarifa-label {
    font-size: 0.875rem; color: var(--text-dark, #1a2b41); font-weight: 500; 
}
.tarifa-card-mobile .tarifa-value {
    font-size: 0.875rem; color: var(--text-medium, #4A5568); font-weight: 600; 
}
.tarifa-card-mobile .tarifa-value.online-price { color: var(--success-color, #009A44); }

@media (max-width: 767px) { 
    .tabla-tarifas-desktop { display: none; }
    .tarjeta-tarifas-mobile-container { display: block; }
}
@media (min-width: 768px) { 
    .tabla-tarifas-desktop { display: block; } 
    .tarjeta-tarifas-mobile-container { display: none; }
}


/* --- ESTILOS PARA EL CALENDARIO DE HORARIOS --- */
.calendario-horarios-container {
    background-color: var(--card-bg, #FFFFFF); padding: 1rem; /* Reducido padding base para móvil */
    border-radius: 0.75rem; 
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -2px rgba(0,0,0,0.05); 
    margin-top: 1rem; /* Reducido margen superior */
}
@media (min-width: 768px) { /* md breakpoint */
    .calendario-horarios-container {
        padding: 1.5rem; /* Padding original para desktop */
        margin-top: 2rem;
    }
}

.calendario-header {
    display: flex; justify-content: space-between; align-items: center; 
    margin-bottom: 1rem; /* Reducido margen inferior */
}
.calendario-header h3 {
    font-family: 'Poppins', sans-serif; font-size: 1.25rem; /* Reducido en móvil, text-xl */
    font-weight: 700; color: var(--primary-color, #005AAB);
}
@media (min-width: 768px) {
    .calendario-header h3 {
        font-size: 1.5rem; /* text-2xl en desktop */
    }
}

.calendario-nav button, .calendario-nav-btn {
    background-color: var(--secondary-color, #00AEEF); color: var(--logo-white, #FFFFFF);
    border: none; padding: 0.4rem 0.8rem; /* Reducido padding */
    border-radius: 0.375rem; font-weight: 600; 
    cursor: pointer; transition: background-color 0.2s ease, opacity 0.2s ease; 
}
@media (min-width: 768px) {
    .calendario-nav button, .calendario-nav-btn {
        padding: 0.5rem 1rem; /* Padding original para desktop */
    }
}
.calendario-nav button:hover, .calendario-nav-btn:hover {
    background-color: color-mix(in srgb, var(--secondary-color, #00AEEF) 85%, black);
}
.calendario-nav button:disabled { 
    background-color: #9ca3af; cursor: not-allowed; opacity: 0.7;
}

.calendario-grid {
    display: grid; grid-template-columns: repeat(7, 1fr); 
    gap: 2px; /* Reducido el gap entre celdas */
    text-align: center;
}

.calendario-grid .dia-semana {
    font-family: 'Poppins', sans-serif; font-weight: 600; 
    font-size: 0.65rem; /* Más pequeño para móviles */
    color: var(--text-medium, #4A5568); padding-bottom: 0.4rem; 
    text-transform: uppercase;
    word-break: break-all; /* Para que "Mi" no se parta tanto si es necesario */
}
@media (min-width: 768px) {
    .calendario-grid .dia-semana {
        font-size: 0.75rem; /* Tamaño original para desktop */
    }
}

.calendario-grid .dia {
    padding: 0.4rem 0.1rem; /* Reducido padding interno de las celdas */
    border: 1px solid #e5e7eb; border-radius: 0.25rem; /* rounded-sm */
    font-size: 0.75rem; /* Reducido tamaño de fuente base de la celda */
    min-height: 70px; /* Altura mínima para móviles */
    display: flex; flex-direction: column;
    justify-content: flex-start; align-items: center; 
    background-color: #f9fafb; 
    transition: background-color 0.2s ease; position: relative; 
}
@media (min-width: 768px) {
    .calendario-grid .dia {
        padding: 0.75rem 0.25rem; /* Padding original para desktop */
        font-size: 0.875rem;
        min-height: 80px;
    }
}

.calendario-grid .dia.dia-vacio { background-color: transparent; border-color: transparent; }
.calendario-grid .dia .numero-dia { 
    font-weight: 600; 
    font-size: 0.875rem; /* Reducido tamaño del número */
    margin-bottom: 0.2rem; 
}
@media (min-width: 768px) {
    .calendario-grid .dia .numero-dia {
        font-size: 1rem; /* Tamaño original para desktop */
        margin-bottom: 0.25rem;
    }
}

.calendario-grid .dia .horario-dia { 
    font-size: 0.6rem; /* Muy pequeño para que quepa */
    line-height: 1.1; /* Ajustar interlineado */
    color: var(--logo-white); 
    font-weight: 500; padding: 0.1rem 0.2rem; /* Padding más pequeño */
    border-radius: 0.125rem; /* rounded-xs */
    /* Opcional: ocultar en pantallas muy pequeñas si sigue siendo un problema */
    /* display: none; */ 
}
/* @media (min-width: 400px) { /* Mostrar a partir de cierto ancho */
/* .calendario-grid .dia .horario-dia { display: block; } */
/* } */
@media (min-width: 768px) {
    .calendario-grid .dia .horario-dia {
        font-size: 0.65rem; /* Tamaño original para desktop */
        padding: 0.1rem 0.3rem;
        border-radius: 0.25rem;
    }
}

.calendario-grid .dia.hoy { border: 2px solid var(--accent-color, #FFDD00); font-weight: bold; }
.calendario-grid .dia.fuera-mes .numero-dia { color: #9ca3af; }

.calendario-referencias {
    margin-top: 1.5rem; /* Reducido margen */
    padding-top: 1rem; 
    border-top: 1px solid #e5e7eb; 
}
.calendario-referencias h4 {
    font-family: 'Poppins', sans-serif; font-size: 1rem; /* Reducido */
    font-weight: 600; color: var(--primary-color, #005AAB); 
    margin-bottom: 0.75rem; 
}
.lista-referencias { display: flex; flex-wrap: wrap; gap: 0.75rem; } /* Reducido gap */
.lista-referencias .item-referencia {
    display: flex; align-items: center; font-size: 0.8rem; /* Reducido */
    color: var(--text-medium, #4A5568);
}
.lista-referencias .color-muestra {
    width: 0.875rem; height: 0.875rem; /* w-3.5 h-3.5 */
    border-radius: 0.25rem; margin-right: 0.4rem; 
    border: 1px solid rgba(0,0,0,0.1);
}

/* --- NUEVOS ESTILOS PARA EL HERO DE SERVICIOS.PHP --- */
.hero-servicios-custom {
    /* relative h-[65vh] min-h-[450px] md:min-h-[550px] bg-gray-800 flex items-center justify-center text-center text-white overflow-hidden */
    /* El bg-gray-800 es un fallback si la imagen/video no carga */
}

.hero-servicios-bg-image {
    /* absolute inset-0 z-0 style="background-image: url(...)" ya está en HTML */
    background-size: cover;
    background-position: center;
    filter: blur(2px) brightness(0.8); /* Desenfoque y oscurecimiento sutil de la imagen de fondo */
    transform: scale(1.05); /* Ligero zoom para evitar bordes por el blur */
}

.hero-servicios-custom video { /* Estilos para el video de fondo si se usa */
    position: absolute;
    top: 50%;
    left: 50%;
    min-width: 100%;
    min-height: 100%;
    width: auto;
    height: auto;
    z-index: 0;
    transform: translateX(-50%) translateY(-50%);
    opacity: 0.5; /* Opacidad del video */
    object-fit: cover;
}

.hero-servicios-overlay {
    /* absolute inset-0 z-10 ya está en HTML */
    background-image: linear-gradient(to bottom, var(--hero-servicios-overlay-start), var(--hero-servicios-overlay-end));
}

#hero-servicios-v2 .relative.z-20 { /* Contenedor del texto */
    /* p-6 animate-fade-in ya están en HTML */
}

.hero-icon-animate {
    /* text-5xl md:text-6xl text-white opacity-80 mb-6 inline-block ya están en HTML */
    animation: gentle-float 4s ease-in-out infinite;
}

@keyframes gentle-float {
    0%, 100% {
        transform: translateY(0);
        opacity: 0.7;
    }
    50% {
        transform: translateY(-8px);
        opacity: 0.9;
    }
}

#hero-servicios-v2 h1 {
    /* text-4xl sm:text-5xl md:text-6xl font-extrabold mb-4 tracking-tight font-poppins */
    /* style="text-shadow: 1px 1px 3px rgba(0,0,0,0.4);" ya está en HTML */
    /* Puedes usar una fuente serifada aquí si quieres diferenciarla más */
    /* font-family: 'Merriweather', serif;  Asegúrate de importar Merriweather si la usas */
}

#hero-servicios-v2 p {
    /* text-lg sm:text-xl md:text-2xl font-light font-nunito max-w-2xl mx-auto */
    /* style="text-shadow: 1px 1px 2px rgba(0,0,0,0.3);" ya está en HTML */
    color: var(--slate-200, #e2e8f0); /* Un blanco un poco más suave para el párrafo */
}
/* --- FIN ESTILOS HERO SERVICIOS --- */

/* --- ESTILOS PARA LA VENTANA MODAL EMERGENTE --- */
.popup-modal-overlay {
    position: fixed; top: 0; left: 0; width: 100%; height: 100%;
    background-color: rgba(0, 0, 0, 0.6); display: flex;
    justify-content: center; align-items: center; z-index: 1000; 
    opacity: 0; visibility: hidden;
    transition: opacity 0.3s ease, visibility 0s linear 0.3s; 
}
.popup-modal-overlay.modal-visible {
    opacity: 1; visibility: visible;
    transition: opacity 0.3s ease, visibility 0s linear 0s; 
}
.popup-modal-content {
    background-color: var(--card-bg, #FFFFFF); padding: 2rem; 
    border-radius: 0.75rem; 
    box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1), 0 10px 10px -5px rgba(0,0,0,0.04); 
    width: 90%; max-width: 500px; position: relative;
    transform: scale(0.95); transition: transform 0.3s ease;
    text-align: center; 
}
.popup-modal-overlay.modal-visible .popup-modal-content { transform: scale(1); }
.popup-modal-close-btn {
    position: absolute; top: 0.75rem; right: 0.75rem; 
    background-color: transparent; border: none; font-size: 1.5rem; 
    color: var(--text-medium, #6B7280); cursor: pointer;
    padding: 0.25rem; line-height: 1; transition: color 0.2s ease;
}
.popup-modal-close-btn:hover { color: var(--text-dark, #1F2937); }
.popup-modal-image-container {
    margin-bottom: 1rem; max-height: 250px; 
    overflow: hidden; border-radius: 0.5rem; 
}
.popup-modal-image-container img {
    width: 100%; height: 100%; object-fit: contain; 
}
.popup-modal-title {
    font-family: 'Poppins', sans-serif; font-size: 1.5rem; font-weight: 700; 
    color: var(--primary-color, #005AAB); margin-bottom: 0.75rem; 
}
.popup-modal-text {
    font-size: 1rem; color: var(--text-medium, #4A5568); 
    line-height: 1.6; margin-bottom: 1.5rem; text-align: left; 
}
.popup-modal-text p:last-child { margin-bottom: 0; }
@media (max-width: 639px) { 
    .popup-modal-content { padding: 1.5rem; width: 95%; }
    .popup-modal-title { font-size: 1.25rem; }
    .popup-modal-text { font-size: 0.95rem; }
}

/* --- ESTILOS PARA LA PÁGINA DE PROGRAMA EDUCATIVO --- */
.programa-educativo-page {}

#hero-educativo {
  min-height: 70vh; /* o 100vh si quieres pantalla completa */
  display: flex;
  align-items: center;
}

/* Hero Section Personalizado */
.hero-educativo-custom {
    background-color: #E47D3A; /* Fallback */
    background-image: linear-gradient(135deg, #D46A2C 0%, #E47D3A 50%, #F59E4E 100%); /* Degradado de la imagen */
    position: relative;
}
.hero-logo-container {
    max-width: 320px; /* Tamaño del logo */
    margin: 0 auto;
    /*margin-left: auto;
    margin-right: auto;
    background-color: rgba(255,255,255,0.1);
    border-radius: 1%;
    padding: 1rem;
    box-shadow: 0 0 0 10px rgba(255,255,255,0.05);*/
}
@media (min-width: 768px) {
    .hero-logo-container {
        margin: 0; /* quitar auto para alinear a la izquierda */
    }
}
.hero-logo-container img {
    width: 100%;
    height: auto;
    filter: drop-shadow(0 4px 8px rgba(0,0,0,0.3));
}

/* Efecto de borde rasgado */
.torn-paper-divider {
    position: absolute;
    left: 0;
    width: 100%;
    height: 60px; /* Altura del efecto */
    background-color: #fff; /* Debe coincidir con el fondo de la siguiente sección */
    -webkit-mask-image: url('data:image/svg+xml;utf8,<svg width="100%" height="60" viewBox="0 0 100 60" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg"><path d="M0,20 Q2.5,10 5,20 T10,20 T15,20 T20,20 T25,20 T30,20 T35,20 T40,20 T45,20 T50,20 T55,20 T60,20 T65,20 T70,20 T75,20 T80,20 T85,20 T90,20 T95,20 T100,20 L100,60 L0,60 Z" fill="black"/></svg>');
    mask-image: url('data:image/svg+xml;utf8,<svg width="100%" height="60" viewBox="0 0 100 60" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg"><path d="M0,20 Q2.5,10 5,20 T10,20 T15,20 T20,20 T25,20 T30,20 T35,20 T40,20 T45,20 T50,20 T55,20 T60,20 T65,20 T70,20 T75,20 T80,20 T85,20 T90,20 T95,20 T100,20 L100,60 L0,60 Z" fill="black"/></svg>');
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
}
.torn-paper-divider.bottom {
    bottom: -1px; /* Posicionar en la parte inferior del hero */
}

/* Sección de Información General */
.info-card {
    background-color: var(--card-bg, #FFFFFF);
    border: 1px solid #e5e7eb; /* Tailwind gray-200 */
    border-radius: 0.75rem; /* rounded-xl */
    padding: 2rem; /* p-8 */
    text-align: center;
    box-shadow: 0 4px 10px rgba(0,0,0,0.03);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.info-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 20px rgba(0,0,0,0.07);
}
.info-card-icon-wrapper {
    width: 60px;
    height: 60px;
    margin: 0 auto 1.5rem auto; /* Centrado y con margen inferior */
    border-radius: 50%;
    background-image: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
    color: var(--logo-white);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.75rem; /* text-3xl */
}
.info-card-title {
    font-family: 'Poppins', sans-serif;
    font-size: 1.25rem; /* text-xl */
    font-weight: 700;
    color: var(--primary-color);
    margin-bottom: 0.75rem;
}
.info-card-text {
    color: var(--text-medium);
    font-size: 0.95rem;
    line-height: 1.6;
}
.info-card-list {
    list-style: none;
    padding: 0;
    color: var(--text-medium);
    font-size: 0.95rem;
    line-height: 1.7;
}
.info-card-list li {
    padding-left: 1.5rem;
    position: relative;
    text-align: left;
    margin-bottom: 0.5rem;
}
.info-card-list li::before {
    content: '✔';
    position: absolute;
    left: 0;
    color: var(--success-color);
    font-weight: bold;
}

/* Sección de Actividades */
.activity-header {
    display: flex; align-items: center;
    padding-bottom: 0.75rem; margin-bottom: 1.5rem;
    border-bottom: 3px solid;
}
.activity-header.ciencias-naturales { border-color: var(--success-color); }
.activity-header.geografia { border-color: var(--logo-orange); }
.activity-header i { font-size: 1.75rem; margin-right: 1rem; }
.activity-header.ciencias-naturales i { color: var(--success-color); }
.activity-header.geografia i { color: var(--logo-orange); }
.activity-header h3 { color: var(--text-dark); }

.activity-item {
    padding: 1rem;
    border-left: 3px solid var(--secondary-color);
    background-color: rgba(0, 174, 239, 0.05); /* Azul muy claro de fondo */
    border-radius: 0 0.5rem 0.5rem 0;
}
.activity-item h4 { margin-bottom: 0.25rem; }
.activity-item p { font-size: 0.9rem; color: var(--text-medium); }
/* --- FIN ESTILOS PROGRAMA EDUCATIVO --- */

/* --- ESTILOS PARA EL MENÚ DE ACCESOS RÁPIDOS MÓVIL (REPOSICIONADO) --- */
#mobile-quick-access-bar {
    position: fixed;
    bottom: 0;
    right: 1rem; 
    z-index: 1000; 
    display: flex;
    align-items: flex-end; 
    justify-content: flex-end; 
    padding-bottom: 1rem; 
    pointer-events: none; 
}

button.quick-access-toggle-button {
    background-color: var(--primary-color);
    color: var(--logo-white);
    border: 2px solid var(--logo-white);
    border-radius: 50%;
    width: 56px; 
    height: 56px; 
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 10px rgba(0,0,0,0.2);
    cursor: pointer;
    transition: transform 0.3s ease, background-color 0.3s ease;
    pointer-events: all; 
    z-index: 1002;
    position: relative;
    overflow: hidden;
}
button.quick-access-toggle-button:hover {
    transform: scale(1.1);
}

/* ESTADO ACTIVO DEL BOTÓN CORREGIDO Y REFORZADO */
#mobile-quick-access-bar button.quick-access-toggle-button.active {
    background-color: var(--error-color, #EF4444) !important; /* Rojo, !important para asegurar que se aplique */
    color: var(--logo-white) !important; /* Asegurar que el icono sea blanco */
    border-color: var(--logo-white) !important; /* Asegurar que el borde sea blanco */
}

.quick-access-toggle-button i {
    font-size: 1.5rem; 
    transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275), opacity 0.3s ease;
    position: absolute; 
}
/* Estado inicial de los iconos */
.quick-access-toggle-button .icon-open {
    transform: rotate(0deg) scale(1);
    opacity: 1;
}
.quick-access-toggle-button .icon-close {
    transform: rotate(-90deg) scale(0.7);
    opacity: 0;
}
/* Estado cuando el botón está activo */
.quick-access-toggle-button.active .icon-open {
    transform: rotate(90deg) scale(0.7);
    opacity: 0;
}
.quick-access-toggle-button.active .icon-close {
    transform: rotate(0deg) scale(1);
    opacity: 1;
}

.quick-access-content {
    position: absolute;
    bottom: calc(1rem + 56px + 10px); 
    right: 0; 
    display: flex;
    flex-direction: column;
    align-items: flex-end; 
    gap: 0.75rem; 
    opacity: 0;
    transform: translateY(20px);
    visibility: hidden;
    transition: opacity 0.3s ease, transform 0.3s ease, visibility 0s linear 0.3s;
    pointer-events: all; 
    z-index: 1001;
}
#mobile-quick-access-bar.open .quick-access-content {
    opacity: 1;
    transform: translateY(0);
    visibility: visible;
    transition-delay: 0s;
}

.quick-access-link {
    display: flex;
    align-items: center;
    background-color: var(--card-bg);
    color: var(--text-dark);
    padding: 0.75rem 1.5rem;
    border-radius: 30px;
    box-shadow: 0 3px 8px rgba(0,0,0,0.15);
    font-family: 'Poppins', sans-serif;
    font-weight: 600;
    font-size: 0.9rem;
    text-decoration: none;
    transition: transform 0.2s ease, background-color 0.2s ease;
    white-space: nowrap; 
}
.quick-access-link:hover {
    transform: scale(1.05);
    background-color: var(--section-bg-light);
}
.quick-access-link i {
    font-size: 1.2rem;
    color: var(--secondary-color);
    margin-right: 0.75rem;
    width: 20px; 
    text-align: center;
}

/* HERO PROGRAMA ESTUDIANTIL */
:root{
  --hero-pe-base:   #6e89a8;
  --hero-pe-dark:   #5f7893;
  --hero-pe-light:  #cfd9e6;
  --hero-pe-accent: #8fa4bd;
}

.hero-programa-estudiantil{
  position: relative;
  isolation: isolate;
  color: #fff;
  background:
    radial-gradient(1200px 700px at 20% 10%, rgba(255,255,255,0.15), transparent 60%),
    radial-gradient(900px 600px  at 85% 30%, rgba(255,255,255,0.10), transparent 65%),
    linear-gradient(180deg, var(--hero-pe-accent) 0%, var(--hero-pe-base) 42%, var(--hero-pe-dark) 100%);
  background-size: 120% 120%, 120% 120%, 100% 100%;
  animation: peGradientShift 22s ease-in-out infinite alternate;
}

/* Overlay diagonal suave arriba */
.hero-programa-estudiantil::before{
  content:"";
  position:absolute; inset:-10% -10% 35% -10%;
  background: linear-gradient(180deg, rgba(255,255,255,0.10), rgba(255,255,255,0));
  transform: skewY(-3deg);
  pointer-events:none;
  z-index:0;
}

/* Sombra de texto para contraste */
.hero-programa-estudiantil .drop-shadow{
  text-shadow: 0 2px 12px rgba(0,0,0,.28);
}

.hero-programa-estudiantil a.download-pdf-btn {
  border: 1.5px solid rgba(255,255,255,0.7);
  color: #fff;
  background: transparent;
  transition: all 0.3s ease;
}
.hero-programa-estudiantil a.download-pdf-btn:hover {
  background: #fff;
  color: var(--primary-color, #0ea5e9); /* usa el color primario de tu marca */
}
.download-pdf-btn {
  border: 1.5px solid rgba(255,255,255,0.7);
  color: #fff;
  background: transparent;
  transition: all 0.3s ease;
}
.download-pdf-btn:hover {
  background: #fff;
  color: var(--primary-color, #0ea5e9); /* usa tu color primario */
}

@keyframes peGradientShift{
  0%   { background-position: 0% 0%, 100% 20%, 0% 0%; }
  100% { background-position: 10% 8%, 90% 35%, 0% 0%; }
}

@media (max-width: 640px){
  .hero-programa-estudiantil::before{
    inset:-12% -12% 42% -12%;
    transform: skewY(-4deg);
  }
}

/* --- ESTILOS PARA EL TOP INFO BAR --- */
/* Ajuste para el body y el header principal cuando el top bar está presente */
body.has-top-bar {
    /* Padding para compensar la altura del top-bar y el header pegajoso */
    padding-top: calc(40px + 96px); /* Altura del top-bar + altura del header (h-24) */
}
header.header-main {
    /* El header ahora se pega debajo del top bar */
    top: 40px; 
}
.top-info-bar {
    height: 40px;
    color: white;
    position: fixed; /* O 'sticky' si prefieres */
    top: 0;
    left: 0;
    width: 100%;
    z-index: 50; /* Por encima del contenido, debajo del menú principal si se solapan */
    transition: background-image 0.5s ease-in-out;
}
.top-info-bar.abierto {
    background-image: linear-gradient(90deg, #10B981, #34D399); /* Degradado verde para 'abierto' */
}
.top-info-bar.cerrado {
    background-image: linear-gradient(90deg, #6B7280, #4B5563); /* Degradado gris para 'cerrado' */
}
.top-info-bar.consultar {
    background-image: linear-gradient(90deg, var(--secondary-color), var(--primary-color)); /* Degradado azul para 'consultar' */
}

.top-bar-link {
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: 100%;
    width: 100%;
    text-decoration: none;
    color: white;
}

.top-bar-status {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    /* Centrar en móvil */
    margin: 0 auto;
}

.status-indicator {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background-color: white;
    animation: pulse-white 2s infinite;
}
.top-info-bar.cerrado .status-indicator {
    animation: none; /* Sin pulso si está cerrado */
    background-color: rgba(255,255,255,0.5);
}
@keyframes pulse-white {
    0% { box-shadow: 0 0 0 0 rgba(255,255,255, 0.7); }
    70% { box-shadow: 0 0 0 8px rgba(255,255,255, 0); }
    100% { box-shadow: 0 0 0 0 rgba(255,255,255, 0); }
}

.top-bar-cta .fas {
    transition: transform 0.3s ease;
}
.top-bar-link:hover .top-bar-cta .fas {
    transform: translateX(4px);
}

/* Responsividad para el Top Bar */
@media (min-width: 768px) { /* md breakpoint */
    .top-bar-status {
        margin: 0; /* Quitar centrado en desktop */
    }
}
@media (max-width: 767px) { /* Ocultar en móvil */
    .top-info-bar {
        height: 36px;
    }
     body.has-top-bar {
        padding-top: calc(36px + 96px);
    }
    header.header-main {
        top: 36px; 
    }
}
/* --- ESTILOS PARA WIDGET DE ACCESIBILIDAD (CORREGIDOS v2) --- */
#accessibility-widget-container {
    position: fixed;
    bottom: 20px;
    left: 20px;
    z-index: 1050;
}
#acc-toggle-btn {
    width: 50px; 
    height: 50px;
    background-color: var(--primary-color);
    color: white;
    border-radius: 50%;
    border: none;
    display: flex; 
    align-items: center; 
    justify-content: center;
    box-shadow: 0 4px 12px rgba(0,0,0,0.2);
    font-size: 1.5rem;
    cursor: pointer;
    transition: transform 0.2s ease, background-color 0.2s ease;
}
#acc-toggle-btn:hover {
    transform: scale(1.1);
}

#acc-panel {
    position: absolute;
    bottom: 80px;
    left: 0;
    width: 275px; /* Ancho ajustado para 2 columnas */
    max-width: 90vw;
    background-color: white;
    border-radius: 12px;
    box-shadow: 0 8px 30px rgba(0,0,0,0.2);
    border: 1px solid #e5e7eb;
    transform: translateY(20px) scale(0.95);
    opacity: 0;
    visibility: hidden;
    transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1), opacity 0.3s ease, visibility 0s linear 0.3s;
    transform-origin: bottom left;
}
#acc-panel.visible {
    transform: translateY(0) scale(1);
    opacity: 1;
    visibility: visible;
    transition-delay: 0s;
}

#acc-panel .acc-header {
    display: flex; 
    justify-content: space-between; 
    align-items: center;
    padding: 1rem;
    background-color: var(--primary-color);
    color: white;
    border-top-left-radius: 12px;
    border-top-right-radius: 12px;
}
#acc-panel .acc-header h3 {
    margin: 0; 
    font-size: 1rem; 
    font-weight: 600; 
    font-family: 'Poppins', sans-serif;
}
#acc-panel #acc-close-btn {
    background: none; 
    border: none; 
    font-size: 1.5rem; 
    color: white; 
    cursor: pointer; 
    opacity: 0.8;
}
#acc-panel #acc-close-btn:hover { 
    opacity: 1; 
}

#acc-panel .acc-body { 
    padding: 1rem; 
}
#acc-panel .acc-options-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr); /* CORRECCIÓN: 2 columnas */
    gap: 0.75rem;
}
#acc-panel .acc-option-card {
    background-color: #f3f4f6;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    cursor: pointer;
    transition: background-color 0.2s, border-color 0.2s, transform 0.1s;
    min-height: 90px;
}
#acc-panel .acc-option-card:hover { 
    background-color: #e5e7eb; 
}
#acc-panel .acc-option-card:active { 
    transform: scale(0.95); 
}
#acc-panel .acc-option-card.active {
    background-color: var(--secondary-color);
    color: white;
    border-color: var(--primary-color);
}
#acc-panel .acc-option-card.active i { 
    color: white; 
}
#acc-panel .acc-option-card span { 
    font-size: 0.75rem; 
    font-weight: 600; 
    line-height: 1.2; 
}

#acc-panel .acc-option-card i.fas,
#acc-panel .acc-option-card i.fab,
#acc-toggle-btn i.fas {
    font-family: 'Font Awesome 6 Free' !important;
    font-weight: 900;
}
#acc-panel .acc-option-card i {
    font-size: 1.75rem;
    margin-bottom: 0.5rem;
    color: var(--primary-color);
}

/* Opciones ajustables (+/-) */
#acc-panel .acc-option-card.adjustable {
    cursor: default;
    background-color: #f9fafb;
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
}
#acc-panel .acc-option-card.adjustable:hover { 
    background-color: #f9fafb; 
}
#acc-panel .acc-adjustable-label { 
    font-size: 0.7rem; 
    font-weight: 700; 
    margin-bottom: 0.5rem; 
    color: var(--text-dark); 
}
#acc-panel .acc-controls {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
}
#acc-panel .acc-controls button {
    width: 28px; 
    height: 28px;
    border-radius: 50%;
    border: 1px solid #d1d5db;
    background-color: white;
    color: var(--primary-color);
    font-size: 1.2rem;
    font-weight: 600;
    cursor: pointer;
    display: flex; 
    align-items: center; 
    justify-content: center;
    line-height: 1;
}
#acc-panel .acc-controls button:hover { 
    background-color: #f3f4f6; 
}
#acc-panel .acc-controls span { 
    font-size: 0.8rem; 
    font-weight: 700; 
    color: var(--primary-color); 
}

/* Footer del widget */
#acc-panel .acc-footer {
    padding: 1rem;
    border-top: 1px solid #e5e7eb;
    text-align: center;
}
#acc-panel #acc-reset-btn {
    background: none;
    border: none;
    color: var(--secondary-color);
    font-weight: 600;
    font-size: 0.8rem;
    cursor: pointer;
    text-decoration: underline;
}
#acc-panel #acc-reset-btn:hover { 
    color: var(--primary-color); 
}

/* --- MÁSCARA DE LECTURA --- */
#acc-reading-mask {
    position: fixed;
    top: 0; 
    left: 0;
    width: 100%; 
    height: 100%;
    pointer-events: none;
    z-index: 2000;
    display: none;
}
.mask-overlay {
    position: absolute;
    left: 0;
    width: 100%;
    background-color: rgba(0,0,0,0.7);
    transition: height 0.05s linear, top 0.05s linear;
}
#acc-reading-mask-top { 
    top: 0; 
}
#acc-reading-mask-bottom { 
    bottom: 0; 
}
body.acc-reading-mask-active #acc-reading-mask {
    display: block;
}


/* --- CLASES DE AYUDA PARA ACCESIBILIDAD --- */

/* ELIMINADO: body.acc-high-contrast */

/* Ocultar Imágenes */
/* Oculta elementos de imagen y multimedia específicos */
body.acc-hide-images img,
body.acc-hide-images video,
body.acc-hide-images svg,
body.acc-hide-images iframe[src*="youtube.com"] {
    display: none !important;
}

/* Elimina las imágenes de fondo de CUALQUIER elemento,
   incluidos los pseudo-elementos ::before y ::after */
body.acc-hide-images *,
body.acc-hide-images *::before,
body.acc-hide-images *::after {
    background-image: none !important;
}

/* Fuente Legible */
body.acc-readable-font *:not(i):not([class*="fa-"]) {
    font-family: 'Arial', 'Helvetica', sans-serif !important;
}

/* Ajustes de Texto */
body p, body div, body span, body a, body li, body td, body th {
    transition: font-size 0.3s ease, line-height 0.3s ease, letter-spacing 0.3s ease;
}

body.acc-font-size-1 p, body.acc-font-size-1 li, body.acc-font-size-1 a, body.acc-font-size-1 span, body.acc-font-size-1 td, body.acc-font-size-1 th { font-size: 1.1em !important; }
body.acc-font-size-2 p, body.acc-font-size-2 li, body.acc-font-size-2 a, body.acc-font-size-2 span, body.acc-font-size-2 td, body.acc-font-size-2 th { font-size: 1.2em !important; }
body.acc-font-size-3 p, body.acc-font-size-3 li, body.acc-font-size-3 a, body.acc-font-size-3 span, body.acc-font-size-3 td, body.acc-font-size-3 th { font-size: 1.3em !important; }
body.acc-font-size-4 p, body.acc-font-size-4 li, body.acc-font-size-4 a, body.acc-font-size-4 span, body.acc-font-size-4 td, body.acc-font-size-4 th { font-size: 1.4em !important; }

body.acc-line-height-1 *, body.acc-line-height-1 { line-height: 1.6 !important; }
body.acc-line-height-2 *, body.acc-line-height-2 { line-height: 1.8 !important; }
body.acc-line-height-3 *, body.acc-line-height-3 { line-height: 2.0 !important; }
body.acc-line-height-4 *, body.acc-line-height-4 { line-height: 2.2 !important; }

body.acc-letter-spacing-1 *, body.acc-letter-spacing-1 { letter-spacing: 0.05em !important; }
body.acc-letter-spacing-2 *, body.acc-letter-spacing-2 { letter-spacing: 0.075em !important; }
body.acc-letter-spacing-3 *, body.acc-letter-spacing-3 { letter-spacing: 0.1em !important; }
body.acc-letter-spacing-4 *, body.acc-letter-spacing-4 { letter-spacing: 0.125em !important; }

/* --- ESTILOS PARA GALERÍA MULTIMEDIA (NUEVO) --- */
.hero-galeria-custom {
    min-height: 400px; /* Ajusta según sea necesario */
}

.hero-galeria-bg-image {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    z-index: 1;
    /* Efecto de zoom sutil al cargar */
    animation: hero-zoom-in 10s ease-out forwards;
}

@keyframes hero-zoom-in {
    from {
        transform: scale(1.1);
        opacity: 0.8;
    }
    to {
        transform: scale(1);
        opacity: 1;
    }
}
.gallery-filter-btn {
    padding: 0.5rem 1.25rem;
    font-size: 0.875rem;
    font-weight: 600;
    font-family: 'Poppins', sans-serif;
    color: var(--text-medium);
    background-color: #f3f4f6;
    border: 1px solid #e5e7eb;
    border-radius: 9999px;
    cursor: pointer;
    transition: all 0.2s ease;
}
.gallery-filter-btn:hover {
    background-color: #e5e7eb;
    color: var(--text-dark);
}
.gallery-filter-btn.active {
    background-color: var(--primary-color);
    color: var(--text-on-primary);
    border-color: var(--primary-color);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}

.gallery-item {
    transition: transform 0.3s ease, opacity 0.3s ease;
    animation: gallery-item-fade-in 0.5s ease;
}
.gallery-item.hidden {
    display: none;
}
@keyframes gallery-item-fade-in {
    from { opacity: 0; transform: scale(0.9); }
    to { opacity: 1; transform: scale(1); }
}

.gallery-item-content {
    position: relative;
    overflow: hidden;
    border-radius: 0.75rem; /* 12px */
    box-shadow: 0 4px 12px rgba(0,0,0,0.08);
    background-color: #e5e7eb; /* Placeholder color */
    aspect-ratio: 4 / 3;
}
.gallery-thumbnail {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.4s ease;
}
.gallery-item:hover .gallery-thumbnail {
    transform: scale(1.1);
}

.gallery-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0,0,0,0) 40%, rgba(0,0,0,0.8) 100%);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 1rem;
    opacity: 1;
    transition: opacity 0.3s ease;
}
.gallery-item:hover .gallery-overlay {
    background: linear-gradient(180deg, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0.8) 100%);
}

.gallery-icon {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(0.8);
    width: 60px;
    height: 60px;
    background-color: rgba(255, 255, 255, 0.9);
    color: var(--primary-color);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.75rem;
    opacity: 0;
    transition: all 0.3s ease;
    box-shadow: 0 4px 10px rgba(0,0,0,0.2);
}
.gallery-item:hover .gallery-icon {
    transform: translate(-50%, -50%) scale(1);
    opacity: 1;
}

.gallery-title {
    color: white;
    font-family: 'Poppins', sans-serif;
    font-weight: 600;
    font-size: 0.875rem;
    transform: translateY(10px);
    opacity: 0;
    transition: all 0.3s ease 0.1s;
}
.gallery-item:hover .gallery-title {
    transform: translateY(0);
    opacity: 1;
}

.gallery-link {
    position: absolute;
    inset: 0;
    z-index: 10;
    cursor: pointer;
}

/* Modal de Video (NUEVO) */
#videoModal {
    z-index: 1001;
}

#mp4Modal {
    z-index: 1001;
}
#mp4Modal video {
    max-height: 90vh; /* Asegurar que no se salga de la pantalla */
}

/* Evitar que el propio widget sea afectado por los ajustes de texto */
#acc-panel *, #acc-toggle-btn * {
    font-family: 'Poppins', sans-serif !important;
    line-height: initial !important;
    letter-spacing: initial !important;
    transform: none !important;
}
#acc-panel h3 { font-size: 1rem !important; }
#acc-panel button span, #acc-panel .acc-adjustable-label { font-size: 0.75rem !important; }
#acc-panel .acc-controls span { font-size: 0.8rem !important; }

/* PARA TITULOS */
/* Clases de utilidad para usar estos colores como background o texto */
.bg-brand-blue { background-color: var(--logo-dark-blue); }
.text-brand-blue { color: var(--logo-dark-blue); }

.bg-brand-green { background-color: var(--logo-green); }
.text-brand-green { color: var(--logo-green); }

.bg-brand-light-blue { background-color: var(--logo-light-blue); }
.text-brand-light-blue { color: var(--logo-light-blue); }

.bg-brand-yellow { background-color: var(--logo-yellow); }
.text-brand-yellow { color: var(--logo-yellow); }


/* =========================================
   2. UTILIDADES DE GRADIENTES Y TEXTO
   ========================================= */

/* Gradiente Tricolor (Celeste -> Verde -> Amarillo) */
.bg-brand-gradient {
    background-image: linear-gradient(to right, var(--logo-light-blue), var(--logo-green), var(--logo-yellow));
}

/* Gradiente para Texto (Celeste -> Verde -> Amarillo) */
.text-brand-gradient {
    background-image: linear-gradient(to right, var(--logo-light-blue), var(--logo-green), var(--logo-yellow));
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent; /* Fallback */
}

/* Gradiente Principal (Azul -> Verde) - Usado en opción "Premium" */
.bg-brand-gradient-main {
    background: linear-gradient(135deg, var(--logo-dark-blue) 0%, var(--logo-green) 100%);
}

/* Texto "Hueco" (Solo borde) */
.text-outline {
    -webkit-text-stroke: 2px var(--logo-light-blue);
    color: transparent;
    opacity: 0.3;
}


/* =========================================
   3. PATRONES DE FONDO (BACKGROUNDS)
   ========================================= */

/* Ondas Blancas (para fondos oscuros/coloreados) */
.bg-pattern-waves {
    background-image: url("data:image/svg+xml,%3Csvg width='100' height='20' viewBox='0 0 100 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.184 20c.357-.13.72-.264 1.088-.402l1.768-.661C33.64 15.347 39.647 14 50 14c10.271 0 15.362 1.222 24.629 4.928.955.383 1.869.74 2.75 1.072h6.225c-2.51-.73-5.139-1.691-8.233-2.928C65.888 12.327 63.71 11 57.5 11c-6.498 0-11.873 1.026-20.043 4.293-5.704 2.281-11.932 3.707-19.457 3.707H1v1h20.184zM0 20h20.184l1.768-.661C33.64 15.347 39.647 14 50 14c10.271 0 15.362 1.222 24.629 4.928C75.806 19.276 77.184 19.754 78.5 20h6.5c-3.197-1.045-6.976-2.37-11.413-4.145l-.587-.235C63.71 12.327 58.5 11 51.5 11c-6.498 0-11.873 1.026-20.043 4.293-5.704 2.281-11.932 3.707-19.457 3.707H0v1zm0 0' fill='%23ffffff' fill-opacity='0.05' fill-rule='evenodd'/%3E%3C/svg%3E");
}

/* Ondas Oscuras (para fondos blancos/claros) */
.bg-pattern-waves-dark {
    background-image: url("data:image/svg+xml,%3Csvg width='100' height='20' viewBox='0 0 100 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.184 20c.357-.13.72-.264 1.088-.402l1.768-.661C33.64 15.347 39.647 14 50 14c10.271 0 15.362 1.222 24.629 4.928.955.383 1.869.74 2.75 1.072h6.225c-2.51-.73-5.139-1.691-8.233-2.928C65.888 12.327 63.71 11 57.5 11c-6.498 0-11.873 1.026-20.043 4.293-5.704 2.281-11.932 3.707-19.457 3.707H1v1h20.184zM0 20h20.184l1.768-.661C33.64 15.347 39.647 14 50 14c10.271 0 15.362 1.222 24.629 4.928C75.806 19.276 77.184 19.754 78.5 20h6.5c-3.197-1.045-6.976-2.37-11.413-4.145l-.587-.235C63.71 12.327 58.5 11 51.5 11c-6.498 0-11.873 1.026-20.043 4.293-5.704 2.281-11.932 3.707-19.457 3.707H0v1zm0 0' fill='%23000000' fill-opacity='0.03' fill-rule='evenodd'/%3E%3C/svg%3E");
}

/* Patrón de Puntos (Dots) */
.bg-pattern-dots {
    background-image: radial-gradient(rgba(255, 255, 255, 0.2) 1px, transparent 1px);
    background-size: 20px 20px;
}

.bg-grid-pattern {
            background-image: linear-gradient(to right, rgba(44, 69, 138, 0.05) 1px, transparent 1px),
                              linear-gradient(to bottom, rgba(44, 69, 138, 0.05) 1px, transparent 1px);
            background-size: 40px 40px;
        }


/* =========================================
   4. ANIMACIONES PERSONALIZADAS
   ========================================= */

/* Animación de Pulso (Anillo expansivo para botones) */
@keyframes pulse-ring {
    0% { box-shadow: 0 0 0 0 rgba(251, 192, 45, 0.7); }
    70% { box-shadow: 0 0 0 10px rgba(251, 192, 45, 0); }
    100% { box-shadow: 0 0 0 0 rgba(251, 192, 45, 0); }
}

.btn-pulse {
    animation: pulse-ring 2s infinite;
}

/* Animación de Flotación (Levitación suave) */
@keyframes float {
    0% { transform: translateY(0px); }
    50% { transform: translateY(-10px); }
    100% { transform: translateY(0px); }
}

.animate-float {
    animation: float 4s ease-in-out infinite;
}

.animate-float-delayed {
    animation: float 4s ease-in-out 2s infinite; 
}

/* Animación de "Burbuja" o Blob (Organic movement) */
@keyframes blob {
    0% { transform: translate(0px, 0px) scale(1); }
    33% { transform: translate(30px, -50px) scale(1.1); }
    66% { transform: translate(-20px, 20px) scale(0.9); }
    100% { transform: translate(0px, 0px) scale(1); }
}

.animate-blob {
    animation: blob 7s infinite;
}

.animation-delay-2000 {
    animation-delay: 2s;
}

.animation-delay-4000 {
    animation-delay: 4s;
}

/* --- ANIMACIONES DE MICRO-INTERACCIÓN PARA ICONOS --- */

@keyframes wiggle {
    0%, 100% { transform: rotate(-8deg); }
    50% { transform: rotate(8deg); }
}

.group:hover .group-hover\:animate-wiggle {
    animation: wiggle 0.5s ease-in-out infinite;
}

@keyframes arrow-nudge {
    0%, 100% { transform: translateX(0); }
    50% { transform: translateX(5px); }
}

.group:hover .group-hover\:animate-arrow-nudge {
    animation: arrow-nudge 0.7s ease-in-out infinite;
}