/* --- Variables de Color y Tipografía (Paleta KidZania) --- */
:root {
    --primary-blue: #002d72; /* Azul KidZania Base */
    --accent-orange: #ff5000; /* Naranja Brillante de Acento */
    --accent-red: #d50032; /* Rojo para alertas/destacados */
    --light-blue: #e6f0f9;
    --text-dark: #333333;
    --text-light: #666666;
    --white: #ffffff;
    --body-bg: #f8f9fb;
    
    --font-main: 'Montserrat', sans-serif;
    --transition: all 0.3s ease;

    /* WhatsApp (marca) */
    --wa-green: #25d366;
    --wa-green-hover: #20bd5a;
    --wa-teal: #128c7e;
    --wa-icon: #ffffff;

    --nav-glass: rgba(255, 255, 255, 0.78);
    --nav-glass-border: rgba(0, 45, 114, 0.1);
    --nav-pill-shadow: 0 4px 16px rgba(0, 45, 114, 0.08);
    --nav-pill-shadow-hover: 0 10px 28px rgba(0, 45, 114, 0.14), 0 0 24px rgba(255, 80, 0, 0.12);

    /* Gadget redes (pestaña) */
    --social-gadget-top: 108px;
    --social-gadget-tab-w: 48px;

    /* Misma caja que toolbar y secciones (no usar padding shorthand en .navbar que lo pise) */
    --editorial-pad-x: clamp(12px, 2vw, 20px);

    /* Barra superior (toolbar) */
    --toolbar-bg: #00259a;

    /* Botón Inscripciones (top bar / toolbar) */
    --btn-inscripciones: #c5299b;
    --btn-inscripciones-hover: #9e1f7c;
}

@keyframes nav-shine-sweep {
    from { transform: translateX(-130%) skewX(-15deg); }
    to { transform: translateX(130%) skewX(-15deg); }
}
@keyframes nav-border-flow {
    0% { background-position: 0% 50%; }
    100% { background-position: 200% 50%; }
}
@keyframes nav-search-icon-pop {
    0% { transform: scale(1) rotate(0deg); }
    40% { transform: scale(1.2) rotate(-8deg); }
    70% { transform: scale(1.08) rotate(6deg); }
    100% { transform: scale(1) rotate(0deg); }
}
@keyframes nav-search-glow {
    0%, 100% { box-shadow: var(--nav-pill-shadow), 0 0 0 0 rgba(255, 80, 0, 0.2); }
    50% { box-shadow: var(--nav-pill-shadow), 0 0 20px 2px rgba(255, 80, 0, 0.12); }
}

/* --- Reseteo y Estilos Base --- */
* {
    margin: 0; padding: 0; box-sizing: border-box;
}

html {
    scrollbar-gutter: stable;
}

body {
    font-family: var(--font-main);
    background-color: var(--body-bg);
    color: var(--text-dark);
    line-height: 1.6;
    overflow-x: hidden;
}

/* Saltar al contenido: visible solo al enfocar con teclado (WCAG 2.4.1) */
.skip-link {
    position: absolute;
    top: -120px;
    left: 12px;
    z-index: 10050;
    padding: 12px 18px;
    background: var(--primary-blue);
    color: var(--white);
    font-weight: 700;
    font-size: 0.9rem;
    text-decoration: none;
    border-radius: 8px;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.22);
    transition: top 0.2s ease, box-shadow 0.2s ease;
}
.skip-link:hover {
    color: var(--white);
    background: #001f52;
}
.skip-link:focus {
    top: 12px;
    outline: 3px solid var(--accent-orange);
    outline-offset: 3px;
}
@media (prefers-reduced-motion: reduce) {
    .skip-link {
        transition: none;
    }
}

/* Foco visible al llegar desde «Saltar al contenido» */
#main-content:focus {
    outline: none;
}
#main-content:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: 4px;
}

/* Contenido por debajo del header sticky (submenús deben verse encima) */
#main-content {
    position: relative;
    z-index: 0;
}

/* Caja editorial + alineación con cabecera y pie: 80 % del ancho de pantalla */
.container {
    width: 80%;
    max-width: 100%;
    margin-left: auto;
    margin-right: auto;
    padding: 0 var(--editorial-pad-x);
    box-sizing: border-box;
}

a { text-decoration: none; color: inherit; transition: var(--transition); }
ul { list-style: none; }
h1, h2, h3, h4 { font-weight: 800; text-transform: uppercase; letter-spacing: -0.5px; }

/* --- Botones Universales (Estilo Redondeado KidZania) --- */
.btn-main, .btn-ticket, .btn-apply {
    display: inline-block;
    padding: 12px 30px;
    border-radius: 50px; /* Muy redondeados */
    font-weight: 700;
    text-transform: uppercase;
    font-size: 0.85rem;
    letter-spacing: 1px;
    cursor: pointer;
    border: none;
}

.btn-main { background-color: var(--accent-orange); color: var(--white); }
.btn-main:hover { background-color: var(--primary-blue); transform: scale(1.05); }

.btn-ticket {
    background-color: var(--btn-inscripciones);
    color: var(--white);
    font-size: 0.75rem;
    padding: 8px 20px;
}
.btn-ticket:hover {
    background-color: var(--btn-inscripciones-hover);
    color: var(--white);
}

/* --- Top Bar y Navbar --- */
.top-bar {
    background-color: var(--toolbar-bg);
    color: var(--white);
    font-size: 0.8rem;
    padding: 8px 0;
}
.top-bar .container { display: flex; justify-content: space-between; align-items: center; }
.top-bar-right { display: flex; gap: 20px; align-items: center; }

/* Solo la barra de navegación principal (no <header> dentro de <main>, p. ej. héroes FAQ/videos) */
body > header {
    position: sticky;
    top: 0;
    z-index: 1100;
    padding: 0;
    margin: 0;
    background: var(--white);
    border-bottom: 1px solid rgba(0, 45, 114, 0.07);
    box-shadow: 0 2px 12px rgba(0, 45, 114, 0.04);
    display: flex;
    flex-direction: column;
    align-items: stretch;
    overflow: visible;
}

.header-fuchsia-strip {
    display: block;
    height: 5px;
    width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    line-height: 0;
    font-size: 0;
    background: #ff3300;
    flex-shrink: 0;
    position: relative;
    z-index: 0;
}

.navbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    overflow: visible;
}

/* Solo padding vertical: el horizontal lo aporta .container (si usáramos padding en .navbar,
   el shorthand anularía el padding lateral y desalinearía toolbar vs header). */
.navbar.container {
    position: relative;
    z-index: 2;
    padding-block: 14px;
    gap: clamp(10px, 2vw, 22px);
}

/* Logo en barra blanca, a la izquierda del menú principal */
.nav-brand {
    display: flex;
    align-items: center;
    flex-shrink: 0;
    line-height: 0;
    text-decoration: none;
    background: var(--white);
    border-radius: 10px;
    transition: opacity 0.2s ease;
}
.nav-brand:hover {
    opacity: 0.92;
}
.nav-brand:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 3px;
    border-radius: 10px;
}
.nav-brand img {
    display: block;
    height: clamp(48px, 11vw, 72px);
    width: auto;
    max-width: min(260px, 46vw);
    object-fit: contain;
}

.nav-links {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
    overflow: visible;
}

.nav-links > li > a {
    position: relative;
    z-index: 0;
    font-weight: 600;
    font-size: 0.875rem;
    color: var(--primary-blue);
    text-transform: none;
    letter-spacing: 0.02em;
    display: inline-flex;
    align-items: center;
    gap: 0.42em;
    padding: 0.55em 0.72em;
    border-radius: 8px;
    border: none;
    background: transparent;
    box-shadow: none;
    text-decoration: none;
    transition: color 0.2s ease, background-color 0.2s ease;
}
.nav-links > li > a::after {
    content: "";
    position: absolute;
    left: 0.65em;
    right: 0.65em;
    bottom: 5px;
    height: 2px;
    background: var(--accent-orange);
    border-radius: 1px;
    opacity: 0;
    transform: scaleX(0);
    transform-origin: center;
    transition: opacity 0.2s ease, transform 0.22s ease;
    pointer-events: none;
}
.nav-links > li > a:hover {
    color: var(--primary-blue);
    background: rgba(0, 45, 114, 0.06);
}
.nav-links > li > a:hover::after {
    opacity: 1;
    transform: scaleX(1);
}
.nav-links > li > a:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 2px;
}

.nav-link-icon {
    position: relative;
    z-index: 1;
    font-size: 0.9em;
    flex-shrink: 0;
    width: 1.1em;
    text-align: center;
    color: rgba(0, 45, 114, 0.5);
    transition: color 0.2s ease;
}
.nav-links > li > a:hover .nav-link-icon {
    color: var(--accent-orange);
}
.nav-dropdown-btn:hover .nav-link-icon,
.nav-dropdown-btn[aria-expanded="true"] .nav-link-icon {
    color: var(--accent-orange);
}

.nav-item.nav-dropdown {
    position: relative;
    z-index: 1;
}
.nav-item.nav-dropdown:hover,
.nav-item.nav-dropdown:focus-within,
.nav-item.nav-dropdown.is-open {
    z-index: 500;
}

.nav-dropdown-btn {
    position: relative;
    z-index: 0;
    background: transparent;
    border: none;
    font-family: inherit;
    font-weight: 600;
    font-size: 0.875rem;
    color: var(--primary-blue);
    text-transform: none;
    letter-spacing: 0.02em;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.38em;
    padding: 0.55em 0.72em;
    border-radius: 8px;
    white-space: nowrap;
    box-shadow: none;
    transition: color 0.2s ease, background-color 0.2s ease;
}
.nav-dropdown-btn:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 2px;
}
.nav-dropdown-btn:hover,
.nav-dropdown-btn[aria-expanded="true"] {
    background: rgba(0, 45, 114, 0.06);
    color: var(--primary-blue);
}
.nav-dropdown-btn .nav-link-icon {
    position: relative;
    z-index: 2;
}
.nav-dropdown-btn .nav-chevron {
    position: relative;
    z-index: 2;
}

/* Escritorio: una sola línea (tipografía y espacio compactos) */
@media (min-width: 769px) {
    body > header {
        padding: 0;
    }

    .navbar.container {
        flex-wrap: nowrap;
        gap: clamp(12px, 1.8vw, 22px);
        padding-block: 12px;
    }

    .nav-links {
        flex-wrap: nowrap;
        flex: 1 1 auto;
        justify-content: center;
        gap: clamp(4px, 0.5vw, 12px);
        min-width: 0;
        margin: 0;
    }

    .nav-links > li {
        flex-shrink: 0;
    }

    .nav-links > li > a,
    .nav-dropdown-btn {
        font-size: clamp(0.78rem, 0.35vw + 0.7rem, 0.875rem);
        font-weight: 600;
        letter-spacing: 0.02em;
        white-space: nowrap;
        padding: 0.48em 0.6em;
    }

    .nav-dropdown-btn {
        gap: 0.35em;
    }

    .nav-link-icon {
        font-size: 0.95em;
        width: 1em;
    }

    .nav-chevron {
        font-size: 0.48rem;
        opacity: 0.88;
    }
}

.nav-chevron { font-size: 0.6rem; transition: transform 0.2s ease; }
.nav-dropdown:hover .nav-chevron,
.nav-dropdown:focus-within .nav-chevron,
.nav-dropdown.is-open .nav-chevron { transform: rotate(180deg); }

.nav-dropdown-panel {
    position: absolute;
    top: 100%;
    left: 0;
    margin-top: 8px;
    padding: 6px 0;
    min-width: 220px;
    background: var(--white);
    border-radius: 10px;
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 12px 40px rgba(0, 45, 114, 0.12), 0 2px 8px rgba(0, 45, 114, 0.06);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-6px);
    transform-origin: top left;
    transition:
        opacity 0.2s ease,
        transform 0.2s ease,
        visibility 0.2s;
    z-index: 600;
}
.nav-dropdown-panel::before {
    display: none;
}
.nav-dropdown-panel li a {
    display: block;
    padding: 10px 18px;
    font-weight: 600;
    font-size: 0.84rem;
    color: var(--primary-blue);
    text-transform: none;
    letter-spacing: 0.02em;
    border-radius: 0;
    transition: background-color 0.18s ease, color 0.18s ease;
}
.nav-dropdown-panel li a:hover {
    background: var(--light-blue);
    color: var(--primary-blue);
}

/* Megamenú Grupos (GP Currícula / GP Libre) */
.nav-dropdown--mega .nav-mega-panel {
    left: 50%;
    right: auto;
    min-width: min(520px, calc(100vw - 28px));
    max-width: calc(100vw - 28px);
    padding: 14px;
    margin-top: 6px;
    transform: translateX(-50%) translateY(-6px);
    transform-origin: top center;
}
.nav-mega-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}
.nav-mega-card {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
    padding: 14px 14px 16px;
    border-radius: 14px;
    text-decoration: none;
    color: var(--primary-blue);
    border: 1px solid rgba(0, 45, 114, 0.1);
    background: var(--white);
    box-shadow: 0 4px 18px rgba(0, 45, 114, 0.06);
    transition:
        border-color 0.2s ease,
        box-shadow 0.2s ease,
        transform 0.2s ease;
}
.nav-mega-card:hover {
    border-color: rgba(255, 80, 0, 0.35);
    box-shadow: 0 10px 28px rgba(255, 80, 0, 0.12);
    transform: translateY(-2px);
    color: var(--primary-blue);
}
.nav-mega-card:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: 2px;
}
.nav-mega-card__visual {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 72px;
    border-radius: 12px;
    font-size: 2rem;
    color: var(--white);
}
.nav-mega-card--curricula .nav-mega-card__visual {
    background: linear-gradient(135deg, var(--primary-blue) 0%, #1a4a8c 100%);
}
.nav-mega-card--curricula .nav-mega-card__visual i {
    opacity: 0.95;
}
.nav-mega-card--libre .nav-mega-card__visual {
    background: linear-gradient(135deg, #0d7a6b 0%, var(--wa-teal) 55%, #0a5c52 100%);
}
.nav-mega-card--libre .nav-mega-card__visual i {
    opacity: 0.95;
}
.nav-mega-card__text {
    display: flex;
    flex-direction: column;
    gap: 4px;
    text-align: left;
}
.nav-mega-card__tag {
    font-size: 0.62rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--accent-orange);
}
.nav-mega-card__title {
    font-size: 0.95rem;
    font-weight: 800;
    letter-spacing: -0.02em;
    line-height: 1.25;
    color: var(--primary-blue);
}
.nav-mega-card__desc {
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.45;
    color: var(--text-light);
}
.nav-mega-gallery {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-top: 12px;
    padding: 9px 14px;
    border-radius: 999px;
    font-size: clamp(0.78rem, 0.75vw + 0.55rem, 0.95rem);
    font-weight: 800;
    letter-spacing: 0.015em;
    line-height: 1.2;
    color: var(--primary-blue);
    background: #ebf2fa;
    border: 1px solid rgba(0, 45, 114, 0.28);
    text-decoration: none;
    white-space: nowrap;
    max-width: 100%;
    box-sizing: border-box;
    transition:
        background 0.2s ease,
        color 0.2s ease,
        border-color 0.2s ease;
}
.nav-mega-gallery .fa-images {
    font-size: 0.95em;
    flex-shrink: 0;
}
.nav-mega-gallery:hover {
    color: var(--primary-blue);
    border-color: rgba(0, 45, 114, 0.42);
    background: #d9e8f5;
}
.nav-mega-gallery:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: 2px;
}
.nav-mega-gallery__arrow {
    font-size: 0.75em;
    opacity: 0.88;
    flex-shrink: 0;
}
.nav-mega-gallery + .nav-mega-gallery {
    margin-top: 10px;
}

/* Megamenú Calendario (vista, panel lateral, inscripciones) */
.nav-dropdown--calendario .nav-mega-panel {
    min-width: min(680px, calc(100vw - 28px));
}
.nav-calendario-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}
.nav-dropdown--calendario .nav-mega-card--cal {
    padding: 11px 12px 13px;
    gap: 9px;
}
.nav-dropdown--calendario .nav-mega-card--cal .nav-mega-card__visual {
    height: 52px;
    font-size: 1.45rem;
}
.nav-dropdown--calendario .nav-mega-card--cal .nav-mega-card__title {
    font-size: 0.86rem;
}
.nav-dropdown--calendario .nav-mega-card--cal .nav-mega-card__desc {
    font-size: 0.66rem;
    line-height: 1.4;
}
.nav-mega-card--cal-vista .nav-mega-card__visual {
    background: linear-gradient(135deg, #1a4a8c 0%, var(--primary-blue) 45%, #0f6b8a 100%);
}
.nav-mega-card--cal-lateral .nav-mega-card__visual {
    background: linear-gradient(135deg, #5b21b6 0%, #7c3aed 55%, #4c1d95 100%);
}
.nav-mega-card--cal-inscrip .nav-mega-card__visual {
    background: linear-gradient(135deg, #0d7a6b 0%, var(--wa-teal) 55%, #0a5c52 100%);
}
.nav-mega-card--cal.nav-mega-card--current {
    border-color: rgba(255, 80, 0, 0.42);
    box-shadow: 0 6px 22px rgba(255, 80, 0, 0.14);
}

@media (min-width: 769px) and (max-width: 1024px) {
    .nav-calendario-grid {
        grid-template-columns: 1fr;
    }
    .nav-dropdown--calendario .nav-mega-panel {
        min-width: min(400px, calc(100vw - 24px));
    }
}

/* Megamenú Recursos (6 formatos + portal ADQ) */
.nav-dropdown--recursos .nav-mega-panel {
    left: auto;
    right: 0;
    min-width: min(820px, calc(100vw - 24px));
    max-width: calc(100vw - 24px);
    padding: 14px;
    margin-top: 6px;
    transform: translateY(-6px);
    transform-origin: top right;
}
.nav-recursos-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}
.nav-dropdown--recursos .nav-mega-card--rec {
    padding: 11px 12px 13px;
    gap: 9px;
}
.nav-dropdown--recursos .nav-mega-card--rec .nav-mega-card__visual {
    height: 52px;
    font-size: 1.45rem;
}
.nav-dropdown--recursos .nav-mega-card--rec .nav-mega-card__title {
    font-size: 0.86rem;
}
.nav-dropdown--recursos .nav-mega-card--rec .nav-mega-card__desc {
    font-size: 0.66rem;
    line-height: 1.4;
}
.nav-mega-card--rec-libros .nav-mega-card__visual {
    background: linear-gradient(135deg, #7a5c44 0%, #4a3628 100%);
}
.nav-mega-card--rec-audios .nav-mega-card__visual {
    background: linear-gradient(135deg, #5e4a8f 0%, #3a2d5c 100%);
}
.nav-mega-card--rec-videos .nav-mega-card__visual {
    background: linear-gradient(135deg, #c73e2e 0%, #8b2920 100%);
}
.nav-mega-card--rec-apps .nav-mega-card__visual {
    background: linear-gradient(135deg, #1e7a9a 0%, #135066 100%);
}
.nav-mega-card--rec-podcast .nav-mega-card__visual {
    background: linear-gradient(135deg, #c45c12 0%, #8f420d 100%);
}
.nav-mega-card--rec-blog .nav-mega-card__visual {
    background: linear-gradient(135deg, #2f4a5c 0%, #1c2d38 100%);
}
.nav-mega-card--rec.nav-mega-card--current {
    border-color: rgba(255, 80, 0, 0.42);
    box-shadow: 0 6px 22px rgba(255, 80, 0, 0.14);
}

@media (min-width: 769px) and (max-width: 1024px) {
    .nav-recursos-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .nav-dropdown--recursos .nav-mega-panel {
        min-width: min(560px, calc(100vw - 24px));
    }
}

@media (min-width: 769px) {
    .nav-dropdown:hover .nav-dropdown-panel:not(.nav-mega-panel),
    .nav-dropdown:focus-within .nav-dropdown-panel:not(.nav-mega-panel) {
        opacity: 1;
        visibility: visible;
        transform: translateY(0);
    }
    .nav-dropdown:hover .nav-mega-panel,
    .nav-dropdown:focus-within .nav-mega-panel {
        opacity: 1;
        visibility: visible;
        transform: translateX(-50%) translateY(0);
    }
    .nav-dropdown--recursos:hover .nav-mega-panel,
    .nav-dropdown--recursos:focus-within .nav-mega-panel {
        transform: translateY(0);
    }
}

.menu-toggle {
    display: none;
    width: 46px;
    height: 46px;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 5px;
    padding: 0;
    border: 1px solid rgba(0, 45, 114, 0.14);
    border-radius: 10px;
    cursor: pointer;
    background: var(--white);
    box-shadow: 0 1px 4px rgba(0, 45, 114, 0.07);
    transition: border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease;
}
.menu-toggle:hover {
    border-color: rgba(0, 45, 114, 0.28);
    background: rgba(0, 45, 114, 0.03);
    box-shadow: 0 2px 8px rgba(0, 45, 114, 0.1);
}
.menu-toggle:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 2px;
}
.bar {
    display: block;
    width: 20px;
    height: 2px;
    margin: 0;
    border-radius: 1px;
    background: var(--primary-blue);
    transition: transform 0.3s ease, opacity 0.22s ease, width 0.22s ease;
}

@media (prefers-reduced-motion: reduce) {
    .nav-links > li > a,
    .nav-dropdown-btn,
    .nav-dropdown-panel li a {
        transition-duration: 0.01ms !important;
    }
    .nav-links > li > a:hover::after {
        transform: scaleX(1);
    }
    .nav-dropdown-panel {
        transition-duration: 0.15s;
    }
    .nav-search-form {
        transition-duration: 0.2s !important;
    }
    .nav-search.is-open .nav-search-toggle i {
        animation: none !important;
    }
    .nav-search.is-open .nav-search-form {
        animation: none !important;
    }
}

/* --- Buscador en barra (animado) --- */
.nav-tools {
    display: flex;
    align-items: center;
    gap: clamp(8px, 1.2vw, 14px);
    flex-shrink: 0;
}

.nav-search-advanced {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    flex-shrink: 0;
    border-radius: 10px;
    border: 1px solid rgba(0, 45, 114, 0.14);
    background: var(--white);
    box-shadow: 0 1px 4px rgba(0, 45, 114, 0.07);
    color: var(--primary-blue);
    font-size: 1rem;
    text-decoration: none;
    transition: border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, color 0.2s ease;
    -webkit-tap-highlight-color: transparent;
}
.nav-search-advanced:hover {
    border-color: rgba(0, 45, 114, 0.28);
    background: rgba(0, 45, 114, 0.03);
    box-shadow: 0 2px 10px rgba(0, 45, 114, 0.1);
    color: var(--accent-orange);
}
.nav-search-advanced:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 3px;
}
.nav-search-advanced--current,
.nav-search-advanced[aria-current='page'] {
    background: rgba(0, 45, 114, 0.08);
    border-color: rgba(255, 107, 53, 0.45);
    color: var(--accent-orange);
    box-shadow: 0 1px 6px rgba(0, 45, 114, 0.1);
}

.nav-search {
    display: flex;
    align-items: center;
    flex-direction: row-reverse;
    position: relative;
    gap: 8px;
}

.nav-search-toggle {
    width: 46px;
    height: 46px;
    flex-shrink: 0;
    border-radius: 10px;
    border: 1px solid rgba(0, 45, 114, 0.14);
    background: var(--white);
    box-shadow: 0 1px 4px rgba(0, 45, 114, 0.07);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--primary-blue);
    font-size: 1rem;
    padding: 0;
    transition: border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, color 0.2s ease;
    -webkit-tap-highlight-color: transparent;
}
.nav-search-toggle:hover {
    border-color: rgba(0, 45, 114, 0.28);
    background: rgba(0, 45, 114, 0.03);
    box-shadow: 0 2px 10px rgba(0, 45, 114, 0.1);
}
.nav-search-toggle:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 3px;
}
.nav-search.is-open .nav-search-toggle {
    background: rgba(0, 45, 114, 0.06);
    border-color: rgba(0, 45, 114, 0.22);
    color: var(--accent-orange);
    box-shadow: 0 1px 6px rgba(0, 45, 114, 0.1);
}
.nav-search.is-open .nav-search-toggle i {
    animation: nav-search-icon-pop 0.55s cubic-bezier(0.34, 1.35, 0.64, 1);
}

.nav-search-form {
    display: flex;
    align-items: center;
    gap: 4px;
    max-width: 0;
    opacity: 0;
    overflow: hidden;
    padding: 0;
    margin: 0;
    border-radius: 10px;
    border: 1px solid transparent;
    background: var(--white);
    box-shadow: none;
    pointer-events: none;
    transition:
        max-width 0.55s cubic-bezier(0.4, 0, 0.2, 1),
        opacity 0.4s ease 0.06s,
        padding 0.45s cubic-bezier(0.4, 0, 0.2, 1),
        border-color 0.35s ease,
        box-shadow 0.4s ease;
}
.nav-search.is-open .nav-search-form {
    max-width: min(300px, calc(100vw - 288px));
    opacity: 1;
    padding: 5px 6px 5px 16px;
    border-color: rgba(0, 45, 114, 0.14);
    box-shadow: 0 4px 20px rgba(0, 45, 114, 0.1);
    pointer-events: auto;
    animation: nav-search-glow 2s ease-in-out 2;
}
.nav-search.is-open .nav-search-form:focus-within {
    animation: none;
    border-color: rgba(0, 45, 114, 0.28);
    box-shadow: 0 4px 24px rgba(0, 45, 114, 0.12);
}

.nav-search-input {
    flex: 1;
    min-width: 0;
    width: 12rem;
    border: none;
    background: transparent;
    font-family: var(--font-main);
    font-size: 0.84rem;
    font-weight: 600;
    color: var(--primary-blue);
    padding: 8px 6px;
    outline: none;
}
.nav-search-input::placeholder {
    color: rgba(0, 45, 114, 0.42);
    font-weight: 500;
}

.nav-search-close {
    width: 34px;
    height: 34px;
    flex-shrink: 0;
    border-radius: 50%;
    border: none;
    background: rgba(0, 45, 114, 0.07);
    color: var(--primary-blue);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.85rem;
    padding: 0;
    transition: background 0.22s ease, color 0.22s ease, transform 0.35s cubic-bezier(0.34, 1.35, 0.64, 1);
}
.nav-search-close:hover {
    background: rgba(0, 45, 114, 0.1);
    color: var(--primary-blue);
}
.nav-search-close:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 2px;
}

@media (min-width: 769px) {
    .nav-search-toggle {
        width: 42px;
        height: 42px;
        font-size: 0.92rem;
    }
    .nav-search-advanced {
        width: 42px;
        height: 42px;
        font-size: 0.92rem;
    }
}

@media (max-width: 768px) {
    .nav-search.is-open .nav-search-form {
        max-width: min(260px, calc(100vw - 236px));
    }
    .nav-search-input {
        width: 8rem;
        font-size: 0.8rem;
    }
    .nav-tools {
        margin-left: auto;
    }
}

/* --- Gadget retráctil redes (pestaña bajo cabecera) ---
   El panel va anclado a la izquierda de la pestaña (right: 100%), sin translateX
   que empuje contenido fuera del borde derecho: body { overflow-x: hidden }
   recorta position:fixed y el gadget parecía no existir o no recibir clics.
   z-index por encima del header (~1100) para que la pestaña sea clickeable. --- */
.social-gadget {
    position: fixed;
    right: 0;
    top: var(--social-gadget-top);
    z-index: 1200;
    max-width: 100%;
    pointer-events: auto;
}
.social-gadget-inner {
    position: relative;
    display: flex;
    flex-direction: row;
    align-items: stretch;
    width: var(--social-gadget-tab-w);
    filter: drop-shadow(-6px 8px 24px rgba(0, 45, 114, 0.2));
}
.social-gadget.is-open .social-gadget-tab-chevron {
    transform: rotate(180deg);
}

.social-gadget-panel {
    position: absolute;
    z-index: 1;
    right: 100%;
    top: 50%;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 18px;
    background: linear-gradient(135deg, var(--primary-blue) 0%, #001f52 100%);
    border-radius: 14px 0 0 14px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-right: none;
    opacity: 0;
    visibility: hidden;
    /* Centrado vertical con la pestaña; +5px X: menú un poco a la derecha, sin mover la pestaña */
    transform: translateY(-50%) translateX(17px);
    pointer-events: none;
    transition:
        opacity 0.38s cubic-bezier(0.33, 1, 0.68, 1),
        transform 0.38s cubic-bezier(0.33, 1, 0.68, 1),
        visibility 0.38s;
}
.social-gadget.is-open .social-gadget-panel {
    opacity: 1;
    visibility: visible;
    transform: translateY(-50%) translateX(5px);
    pointer-events: auto;
}

.social-gadget-link {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.14);
    color: var(--white);
    font-size: 1.2rem;
    transition: background 0.25s ease, transform 0.25s ease, color 0.25s ease, box-shadow 0.25s ease;
    text-decoration: none;
}
.social-gadget-link:hover {
    background: rgba(255, 255, 255, 0.28);
    color: var(--white);
    transform: scale(1.08);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
}
.social-gadget-link:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 3px;
}

.social-gadget-tab {
    position: relative;
    z-index: 2;
    width: var(--social-gadget-tab-w);
    flex-shrink: 0;
    margin: 0;
    padding: 10px 6px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-right: none;
    border-radius: 12px 0 0 12px;
    background: linear-gradient(180deg, #003380 0%, var(--primary-blue) 100%);
    color: var(--white);
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    font-family: var(--font-main);
    transition: background 0.25s ease, border-color 0.25s ease;
    outline: none;
    -webkit-tap-highlight-color: transparent;
}
.social-gadget-tab:hover {
    background: linear-gradient(180deg, #004099 0%, #002d72 100%);
    border-color: rgba(255, 80, 0, 0.35);
    outline: none;
}
.social-gadget-tab:focus:not(:focus-visible) {
    outline: none;
}
.social-gadget-tab:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 2px;
}
.social-gadget-tab-chevron {
    font-size: 0.85rem;
    transition: transform 0.42s cubic-bezier(0.33, 1, 0.68, 1);
    opacity: 0.95;
}
.social-gadget-tab-label {
    font-size: 0.62rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    line-height: 1;
}

@media (prefers-reduced-motion: reduce) {
    .social-gadget-panel {
        transition-duration: 0.12s;
    }
    .social-gadget-tab-chevron {
        transition-duration: 0.15s;
    }
}

@media (max-width: 768px) {
    .social-gadget-panel {
        gap: 10px;
        padding: 12px 14px;
    }
    .social-gadget-link {
        width: 44px;
        height: 44px;
        font-size: 1.1rem;
    }
    :root {
        --social-gadget-tab-w: 44px;
    }
}

/* --- Hero Section --- */
.hero {
    position: relative;
    min-height: 80vh;
    height: 80vh;
    display: flex;
    align-items: center;
    color: var(--white);
    overflow: hidden;
    padding-bottom: 48px;
    box-sizing: border-box;
}

#hero-video {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: -2;
}

.hero-banner {
    position: absolute;
    inset: 0;
    z-index: -2;
    pointer-events: none;
}
.hero-banner__slides {
    position: absolute;
    inset: 0;
}
.hero-banner__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    transition: opacity 1.1s ease-in-out;
}
.hero-banner__img.is-active {
    opacity: 1;
}
/* foto-principal.png: subir encuadre para que entren las caras del grupo */
.hero-banner__slides .hero-banner__img:nth-child(1) {
    object-position: center 10%;
}
.hero-banner__slides .hero-banner__img:nth-child(2) {
    object-position: center 52%;
}
.hero-banner__dots {
    position: absolute;
    left: 50%;
    bottom: 28px;
    transform: translateX(-50%);
    display: flex;
    gap: 10px;
    z-index: 3;
    pointer-events: auto;
    padding: 8px 12px;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.35);
    backdrop-filter: blur(6px);
}
.hero-banner__dot {
    width: 10px;
    height: 10px;
    padding: 0;
    border: 2px solid rgba(255, 255, 255, 0.75);
    border-radius: 50%;
    background: transparent;
    cursor: pointer;
    transition: background 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
    -webkit-tap-highlight-color: transparent;
}
.hero-banner__dot:hover {
    border-color: var(--white);
    transform: scale(1.1);
}
.hero-banner__dot:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 3px;
}
.hero-banner__dot.is-active {
    background: var(--white);
    border-color: var(--white);
}
@media (prefers-reduced-motion: reduce) {
    .hero-banner__img {
        transition-duration: 0.01ms;
    }
    .hero-banner__dot {
        transition: none;
    }
}

.hero-video-overlay {
    position: absolute; top: 0; left: 0; width: 100%; height: 100%;
    background: linear-gradient(135deg, rgba(0,45,114,0.9) 0%, rgba(0,0,0,0.2) 100%);
    z-index: -1;
}

.hero-content {
    position: relative;
    z-index: 2;
    text-align: center;
    transform: translateY(200px);
}

.hero-aqua-strip {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 10px;
    margin: 0;
    padding: 0;
    border: 0;
    line-height: 0;
    font-size: 0;
    background: #00c8d4;
    z-index: 1;
    pointer-events: none;
}
.hero h1 {
    font-size: 3.5rem;
    line-height: 1.04;
    margin-bottom: 10px;
}
.hero p {
    font-size: 1.2rem;
    max-width: none;
    margin-bottom: 28px;
    font-weight: 400;
    opacity: 0.9;
    white-space: nowrap;
    line-height: 1.32;
}
.hero-btns { display: flex; gap: 20px; align-items: center; justify-content: center; flex-wrap: wrap; }

/* .hero p usa 1.2rem; este bloque debe ganar en especificidad */
.hero .hero-season {
    margin: 14px 0 0;
    font-size: clamp(0.72rem, 1.05vw, 0.82rem);
    font-weight: 700;
    text-transform: none;
    letter-spacing: 0.02em;
    color: var(--accent-orange);
    text-align: center;
    line-height: 1.35;
    max-width: 36rem;
    margin-left: auto;
    margin-right: auto;
    padding: 0 12px;
}
.hero .hero-season time {
    font-weight: 800;
}

/* --- Info Modules --- */
.info-modules {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 30px;
    margin-top: -40px; /* Solapamiento estilo KidZania (20px más abajo que -60px) */
    position: relative; z-index: 10;
    margin-bottom: 80px;
}

.module-card {
    background: var(--white);
    padding: 40px;
    border-radius: 20px;
    text-align: center;
    box-shadow: 0 10px 30px rgba(0,0,0,0.1);
    transition: var(--transition);
}
.module-card:hover { transform: translateY(-10px); }
.module-card.highlight { background-color: var(--accent-orange); color: var(--white); }

.module-icon { font-size: 3rem; color: var(--accent-orange); margin-bottom: 25px; }
.module-card.highlight .module-icon { color: var(--white); }
.module-card h3 { font-size: 1.1rem; margin-bottom: 15px; }
.module-card p { font-size: 0.9rem; color: var(--text-light); }
.module-card.highlight p { color: rgba(255,255,255,0.9); }

/* --- Explora Grupos --- */
.explora-grupos {
    padding: 130px 0 80px;
    background-color: var(--white);
}
.section-header { text-align: center; margin-bottom: 50px; }
.section-header h2 { font-size: 2.5rem; color: var(--primary-blue); margin-bottom: 10px; }
.section-header p { color: var(--accent-orange); font-weight: 700; text-transform: uppercase; letter-spacing: 2px; }
.section-header .explora-grupos__date {
    text-transform: none;
    letter-spacing: 0.03em;
    font-weight: 600;
    font-size: clamp(1.2rem, 2.8vw, 1.55rem);
    color: var(--text-light);
    max-width: 520px;
    margin-left: auto;
    margin-right: auto;
    line-height: 1.45;
}
.section-header .explora-grupos__intro {
    margin-top: 14px;
    text-transform: none;
    letter-spacing: 0.02em;
    font-weight: 600;
    font-size: clamp(0.92rem, 1.8vw, 1.02rem);
    color: var(--text-light);
    max-width: 38em;
    margin-left: auto;
    margin-right: auto;
    line-height: 1.5;
}

/* Buscador avanzado / filtros (portada, sección grupos) */
.groups-advanced-search {
    position: relative;
    max-width: 920px;
    margin: 0 auto 50px;
    padding: 26px 24px 24px;
    border-radius: 22px;
    background: linear-gradient(165deg, rgba(255, 255, 255, 1) 0%, rgba(230, 240, 249, 0.35) 50%, rgba(255, 255, 255, 1) 100%);
    border: 1px solid rgba(0, 45, 114, 0.12);
    box-shadow:
        0 4px 6px rgba(0, 45, 114, 0.04),
        0 18px 40px rgba(0, 45, 114, 0.08);
    overflow: hidden;
}
.groups-advanced-search__head {
    text-align: center;
    margin-bottom: 22px;
}
.groups-advanced-search__title {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin: 0 0 8px;
    font-size: clamp(1.15rem, 2.2vw, 1.35rem);
    font-weight: 800;
    color: var(--primary-blue);
    letter-spacing: 0.06em;
    text-transform: uppercase;
}
.groups-advanced-search__title i {
    color: var(--accent-orange);
    font-size: 1.05em;
}
.groups-advanced-search__lead {
    margin: 0;
    font-size: 0.88rem;
    font-weight: 600;
    line-height: 1.5;
    color: var(--text-light);
    max-width: 36em;
    margin-left: auto;
    margin-right: auto;
}
.groups-advanced-search__ref {
    margin: 12px 0 0;
    text-align: center;
}
.groups-advanced-search__ref-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    font-size: 0.88rem;
    font-weight: 800;
    letter-spacing: 0.02em;
    color: var(--primary-blue);
    text-decoration: none;
    border-bottom: 2px solid rgba(255, 80, 0, 0.45);
    padding-bottom: 2px;
    transition: color 0.2s ease, border-color 0.2s ease;
}
.groups-advanced-search__ref-link:hover {
    color: var(--accent-orange);
    border-bottom-color: var(--accent-orange);
}
.groups-advanced-search__ref-link:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: 4px;
    border-radius: 4px;
}
.groups-advanced-search__ref-link i {
    font-size: 0.75rem;
    opacity: 0.9;
}
.groups-filter-form {
    margin: 0;
}
.groups-filter-search {
    margin-bottom: 18px;
}
.groups-filter-search__label {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin: 0 0 8px;
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--primary-blue);
}
.groups-filter-search__label i {
    color: var(--accent-orange);
}
.groups-filter-search__wrap {
    position: relative;
    max-width: 520px;
    margin: 0 auto;
}
.groups-filter-search__input {
    width: 100%;
    min-height: 48px;
    padding: 12px 16px 12px 44px;
    font-family: inherit;
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--primary-blue);
    background: var(--white);
    border: 1px solid rgba(0, 45, 114, 0.16);
    border-radius: 14px;
    box-shadow: inset 0 1px 2px rgba(0, 45, 114, 0.04);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.groups-filter-search__wrap::before {
    content: '';
    position: absolute;
    left: 16px;
    top: 50%;
    width: 18px;
    height: 18px;
    transform: translateY(-50%);
    background: no-repeat center / contain;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath fill='%23ff5000' d='M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457 404 474.6l-102-102.1c-34.4 25.2-76.8 40-122.7 40C93.1 412 0 318.9 0 208S93.1 4 208 4s208 93.1 208 204zM208 352a144 144 0 1 0 0-288 144 144 0 0 0 0 288z'/%3E%3C/svg%3E");
    pointer-events: none;
    opacity: 0.85;
}
.groups-filter-search__input:hover {
    border-color: rgba(255, 80, 0, 0.35);
}
.groups-filter-search__input:focus {
    outline: none;
    border-color: var(--accent-orange);
    box-shadow: 0 0 0 3px rgba(255, 80, 0, 0.18);
}
.groups-filter-search__hint {
    margin: 8px auto 0;
    max-width: 36em;
    text-align: center;
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.45;
    color: var(--text-light);
}
.groups-filter-chips__label {
    margin: 0 0 10px;
    text-align: center;
    font-size: 0.68rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--text-light);
}
.groups-filter-chips {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
    margin-bottom: 20px;
}
.groups-filter-chip {
    padding: 8px 14px;
    font-family: inherit;
    font-size: 0.76rem;
    font-weight: 700;
    color: var(--primary-blue);
    background: var(--white);
    border: 1px solid rgba(0, 45, 114, 0.16);
    border-radius: 999px;
    cursor: pointer;
    transition:
        background 0.2s ease,
        border-color 0.2s ease,
        color 0.2s ease,
        box-shadow 0.2s ease;
}
.groups-filter-chip:hover {
    border-color: rgba(255, 80, 0, 0.4);
    color: var(--accent-orange);
}
.groups-filter-chip.is-active {
    background: rgba(255, 80, 0, 0.1);
    border-color: var(--accent-orange);
    color: #c43d00;
    box-shadow: 0 2px 8px rgba(255, 80, 0, 0.15);
}
.groups-filter-chip:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: 2px;
}
.groups-filter-fieldset {
    margin: 0;
    padding: 0;
    border: none;
    min-width: 0;
}
.groups-filter-summary {
    margin: 0 0 16px;
    padding: 12px 16px;
    border-radius: 14px;
    font-size: 0.82rem;
    font-weight: 600;
    line-height: 1.5;
    color: var(--primary-blue);
    background: rgba(0, 45, 114, 0.06);
    border: 1px solid rgba(0, 45, 114, 0.08);
}
.groups-filter-summary--warn {
    background: rgba(255, 80, 0, 0.08);
    border-color: rgba(255, 80, 0, 0.22);
    color: #8a3400;
}
.groups-filter-summary--ok {
    background: rgba(0, 45, 114, 0.07);
}
.groups-filter-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px 18px;
}
.groups-filter-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
}
.groups-filter-label {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--primary-blue);
}
.groups-filter-label i {
    color: var(--accent-orange);
    font-size: 0.95rem;
    opacity: 0.9;
}
.groups-filter-select {
    width: 100%;
    min-height: 48px;
    padding: 11px 12px;
    font-family: inherit;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--primary-blue);
    background: var(--white);
    border: 1px solid rgba(0, 45, 114, 0.14);
    border-radius: 12px;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23002d72' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    padding-right: 36px;
}
.groups-filter-select:hover {
    border-color: rgba(255, 80, 0, 0.35);
}
.groups-filter-select:focus {
    outline: none;
    border-color: var(--accent-orange);
    box-shadow: 0 0 0 3px rgba(255, 80, 0, 0.2);
}
.groups-filter-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid rgba(0, 45, 114, 0.08);
}
.groups-filter-toolbar__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 10px;
    flex: 1 1 280px;
}
.btn-filter-oferta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    flex: 1 1 200px;
    min-height: 48px;
    padding: 12px 20px;
    font-family: inherit;
    font-size: 0.78rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--white);
    background: var(--accent-orange);
    border: none;
    border-radius: 999px;
    cursor: pointer;
    box-shadow: 0 4px 14px rgba(255, 80, 0, 0.35);
    transition: background 0.2s ease, box-shadow 0.2s ease, transform 0.15s ease;
}
.btn-filter-oferta:hover {
    background: #e04800;
    box-shadow: 0 6px 20px rgba(255, 80, 0, 0.4);
}
.btn-filter-oferta:active {
    transform: scale(0.98);
}
.btn-filter-oferta:focus-visible {
    outline: 3px solid var(--primary-blue);
    outline-offset: 3px;
}
.btn-filter-reset {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    font-family: inherit;
    font-size: 0.78rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--primary-blue);
    background: var(--white);
    border: 1px solid rgba(0, 45, 114, 0.18);
    border-radius: 999px;
    cursor: pointer;
    transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.btn-filter-reset:hover {
    color: var(--accent-orange);
    border-color: rgba(255, 80, 0, 0.35);
    background: rgba(255, 80, 0, 0.05);
}
.btn-filter-reset:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: 2px;
}
.groups-filter-count {
    margin: 0;
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--text-light);
    text-align: right;
    flex: 1 1 12rem;
}
.groups-grid-empty {
    text-align: center;
    flex-basis: 100%;
    width: 100%;
    color: #666;
    padding: 40px 16px;
    font-size: 0.95rem;
    font-weight: 600;
    line-height: 1.5;
    max-width: 520px;
    margin: 0 auto;
}
@media (max-width: 640px) {
    .groups-filter-grid {
        grid-template-columns: 1fr;
    }
    .groups-filter-toolbar {
        flex-direction: column;
        align-items: stretch;
    }
    .groups-filter-toolbar__actions {
        flex-direction: column;
        width: 100%;
    }
    .groups-filter-toolbar__actions .btn-filter-reset,
    .groups-filter-toolbar__actions .btn-filter-oferta {
        justify-content: center;
        width: 100%;
    }
    .groups-filter-count {
        text-align: center;
    }
}

.groups-grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 30px;
}
/* Ancla #groupsGrid: incluye título + galería; margen para cabecera sticky + top bar */
#groupsGrid.groups-grid-anchor {
    scroll-margin-top: clamp(100px, 11vw + 48px, 148px);
}

.group-card {
    background-color: var(--white);
    border-radius: 15px;
    overflow: hidden;
    box-shadow: 0 5px 15px rgba(0,0,0,0.05);
    border: 1px solid #eee;
    transition: var(--transition);
    display: flex;
    flex-direction: column;
    flex: 0 1 260px;
    min-width: 0;
    max-width: 100%;
}

/* 5 tarjetas por fila; la última fila incompleta queda centrada (justify-content del padre) */
@media (min-width: 1280px) {
    .group-card {
        flex-basis: calc((100% - 120px) / 5);
        max-width: calc((100% - 120px) / 5);
    }
}
.group-card:hover { box-shadow: 0 15px 40px rgba(0,0,0,0.1); }

.group-card-body {
    padding: 25px;
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    text-align: center;
}
.group-type { font-size: 0.7rem; font-weight: 700; text-transform: uppercase; color: var(--accent-orange); letter-spacing: 1px; margin-bottom: 10px; }
.group-card h3 { font-size: 1.25rem; color: var(--primary-blue); margin-bottom: 15px; line-height: 1.2; }
.group-card p { font-size: 0.9rem; color: var(--text-light); margin-bottom: 16px; flex-grow: 1; }

/* Carrusel cuadrado de fotos por tarjeta de grupo */
.group-card-slider {
    position: relative;
    width: 100%;
    margin-top: 4px;
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid rgba(0, 45, 114, 0.12);
    background: var(--light-blue);
    outline: none;
}
.group-card-slider-viewport {
    aspect-ratio: 1 / 1;
    width: 100%;
    overflow: hidden;
    touch-action: pan-y;
}
.group-card-slider-viewport:focus-visible {
    box-shadow: 0 0 0 2px var(--white), 0 0 0 4px var(--accent-orange);
}
.group-card-slider-track {
    display: flex;
    height: 100%;
    transition: transform 0.35s ease;
    will-change: transform;
}
.group-card-slider-slide {
    flex: 0 0 100%;
    width: 100%;
    min-width: 0;
    height: 100%;
}
.group-card-slider-img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.group-card-slider-btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 2;
    width: 38px;
    height: 38px;
    border: none;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--primary-blue);
    background: rgba(255, 255, 255, 0.92);
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.12);
    transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease;
}
.group-card-slider-btn:hover {
    background: var(--white);
    color: var(--accent-orange);
}
.group-card-slider-btn--prev { left: 8px; }
.group-card-slider-btn--next { right: 8px; }
.group-card-slider-zoom {
    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 3;
    width: 40px;
    height: 40px;
    border: none;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 1rem;
    color: var(--primary-blue);
    background: rgba(255, 255, 255, 0.94);
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.12);
    transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease;
}
.group-card-slider-zoom:hover {
    background: var(--white);
    color: var(--accent-orange);
}
.group-card-slider-zoom:focus-visible {
    box-shadow: 0 0 0 2px var(--white), 0 0 0 4px var(--accent-orange);
}
.group-card-slider--single .group-card-slider-btn,
.group-card-slider--single .group-card-slider-dots { display: none; }
.group-card-slider-dots {
    position: absolute;
    left: 50%;
    bottom: 10px;
    transform: translateX(-50%);
    z-index: 2;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px;
    max-width: calc(100% - 24px);
    pointer-events: auto;
}
.group-card-slider-dot {
    width: 8px;
    height: 8px;
    padding: 0;
    border: none;
    border-radius: 50%;
    cursor: pointer;
    background: rgba(255, 255, 255, 0.55);
    box-shadow: 0 0 0 1px rgba(0, 45, 114, 0.25);
    transition: transform 0.2s ease, background 0.2s ease;
}
.group-card-slider-dot:hover { transform: scale(1.15); }
.group-card-slider-dot.is-active {
    background: var(--accent-orange);
    box-shadow: 0 0 0 1px rgba(255, 80, 0, 0.45);
    transform: scale(1.2);
}
@media (prefers-reduced-motion: reduce) {
    .group-card-slider-track { transition: none; }
    .group-card-slider-dot { transition: none; }
}

/* Modal: ampliar foto del slider (lupa) */
.photo-zoom-modal[hidden] {
    display: none !important;
}
.photo-zoom-modal:not([hidden]) {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: flex !important;
    align-items: center;
    justify-content: center;
    padding: 12px;
    box-sizing: border-box;
}
.photo-zoom-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.88);
    cursor: pointer;
}
.photo-zoom-panel {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    max-width: min(96vw, 1200px);
    max-height: 96vh;
    width: 100%;
    background: #111;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 24px 64px rgba(0, 0, 0, 0.45);
}
.photo-zoom-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 12px 14px;
    background: #1a1a1a;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.photo-zoom-caption {
    margin: 0;
    font-size: 0.9rem;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.92);
    flex: 1 1 160px;
    line-height: 1.3;
}
.photo-zoom-tools {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
}
.photo-zoom-tool {
    min-width: 40px;
    height: 40px;
    padding: 0 12px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.08);
    color: var(--white);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: inherit;
    transition: background 0.2s ease, border-color 0.2s ease;
}
.photo-zoom-tool:hover {
    background: rgba(255, 255, 255, 0.14);
    border-color: rgba(255, 255, 255, 0.35);
}
.photo-zoom-tool--close {
    min-width: 44px;
    background: rgba(255, 80, 0, 0.2);
    border-color: rgba(255, 80, 0, 0.5);
    color: #fff;
}
.photo-zoom-tool--close:hover {
    background: rgba(255, 80, 0, 0.35);
}
.photo-zoom-body {
    display: flex;
    flex-direction: row;
    align-items: center;
    flex: 1 1 auto;
    min-height: 0;
    gap: 6px;
}
.photo-zoom-nav {
    flex: 0 0 auto;
    width: 44px;
    height: 44px;
    padding: 0;
    border: none;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--primary-blue);
    background: rgba(255, 255, 255, 0.92);
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
    transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease;
}
.photo-zoom-nav:hover {
    background: var(--white);
    color: var(--accent-orange);
}
.photo-zoom-nav:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 2px;
}
.photo-zoom-nav[hidden] {
    display: none !important;
}
.photo-zoom-stage {
    overflow: auto;
    flex: 1 1 auto;
    min-width: 0;
    min-height: 200px;
    max-height: calc(96vh - 72px);
    -webkit-overflow-scrolling: touch;
    padding: 16px;
    text-align: center;
    background: #0d0d0d;
}
.photo-zoom-img {
    display: inline-block;
    max-width: 100%;
    width: auto;
    height: auto;
    vertical-align: middle;
    transform-origin: center center;
    transition: transform 0.2s ease;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
    border-radius: 4px;
}
@media (prefers-reduced-motion: reduce) {
    .photo-zoom-img { transition: none; }
}

.group-card-footer {
    padding: 15px 25px;
    background-color: var(--light-blue);
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px 20px;
    text-align: center;
}
.group-meta { font-size: 0.8rem; font-weight: 600; color: var(--primary-blue); }
.group-meta i { margin-right: 5px; color: var(--accent-orange); }

/* --- Contacto (formulario) --- */
.contact-section {
    padding: 88px 0 96px;
    background:
        radial-gradient(ellipse 120% 80% at 10% 20%, rgba(0, 45, 114, 0.06) 0%, transparent 55%),
        radial-gradient(ellipse 90% 70% at 95% 60%, rgba(255, 80, 0, 0.07) 0%, transparent 50%),
        linear-gradient(180deg, #f0f4fb 0%, var(--body-bg) 45%, var(--white) 100%);
}

.contact-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
    gap: clamp(32px, 5vw, 56px);
    align-items: start;
}

.contact-kicker {
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.22em;
    color: var(--accent-orange);
    margin: 0 0 12px;
}

.contact-title {
    font-size: clamp(1.85rem, 3vw + 1rem, 2.65rem);
    color: var(--primary-blue);
    margin: 0 0 16px;
    line-height: 1.12;
    letter-spacing: -0.02em;
}

.contact-lead {
    margin: 0 0 28px;
    font-size: 1rem;
    line-height: 1.65;
    color: var(--text-light);
    max-width: 34rem;
}

.contact-back {
    margin-top: 1.5rem;
}
.contact-back-link {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    font-weight: 700;
    font-size: 0.88rem;
    text-transform: none;
    letter-spacing: 0.02em;
    color: var(--primary-blue);
    text-decoration: none;
    transition: color 0.2s ease;
}
.contact-back-link:hover {
    color: var(--accent-orange);
}

.footer-logo-link {
    display: inline-flex;
    line-height: 0;
    border-radius: 8px;
}
.footer-logo-link:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 3px;
}

.nav-links > li > a[aria-current="page"] {
    background: rgba(0, 45, 114, 0.07);
    color: var(--primary-blue);
}
.nav-links > li > a[aria-current="page"]::after {
    opacity: 1;
    transform: scaleX(1);
}

.contact-chips {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.contact-chip {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 16px 18px;
    border-radius: 16px;
    text-decoration: none;
    color: inherit;
    background: var(--white);
    border: 1px solid rgba(0, 45, 114, 0.08);
    box-shadow: 0 4px 20px rgba(0, 45, 114, 0.06);
    transition: border-color 0.25s ease, box-shadow 0.25s ease, transform 0.25s ease;
}
a.contact-chip:hover {
    border-color: rgba(255, 80, 0, 0.35);
    box-shadow: 0 10px 32px rgba(0, 45, 114, 0.1);
    transform: translateY(-2px);
    color: inherit;
}
.contact-chip-static {
    cursor: default;
}
.contact-chip-icon {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    background: linear-gradient(145deg, rgba(0, 45, 114, 0.08) 0%, rgba(255, 80, 0, 0.08) 100%);
    color: var(--primary-blue);
    font-size: 1rem;
}
.contact-chip-label {
    display: block;
    font-size: 0.65rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: rgba(0, 45, 114, 0.55);
    margin-bottom: 4px;
}
.contact-chip-value {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--primary-blue);
    line-height: 1.35;
}

.contact-form-shell {
    position: relative;
    border-radius: 22px;
    padding: 1px;
    background: linear-gradient(
        135deg,
        rgba(255, 80, 0, 0.35) 0%,
        rgba(0, 45, 114, 0.2) 40%,
        rgba(255, 80, 0, 0.2) 100%
    );
    box-shadow:
        0 24px 60px rgba(0, 45, 114, 0.12),
        0 4px 16px rgba(0, 0, 0, 0.04);
}
.contact-form-shell::before {
    content: "";
    position: absolute;
    inset: 1px;
    border-radius: 21px;
    background: linear-gradient(
        165deg,
        rgba(255, 255, 255, 0.98) 0%,
        rgba(248, 250, 255, 0.96) 50%,
        rgba(255, 255, 255, 0.99) 100%
    );
    backdrop-filter: blur(20px) saturate(150%);
    -webkit-backdrop-filter: blur(20px) saturate(150%);
    z-index: 0;
    pointer-events: none;
}

.contact-form {
    position: relative;
    z-index: 1;
    padding: clamp(24px, 4vw, 36px);
}

.contact-honeypot {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
    margin: 0;
}

.contact-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px 20px;
}

.contact-field-full {
    grid-column: 1 / -1;
}

.contact-field label {
    display: block;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--primary-blue);
    margin-bottom: 8px;
}

.contact-req { color: var(--accent-orange); font-weight: 800; }
.contact-opt {
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0;
    color: rgba(0, 45, 114, 0.45);
    font-size: 0.72rem;
}

.contact-field input,
.contact-field select,
.contact-field textarea {
    width: 100%;
    font-family: var(--font-main);
    font-size: 0.95rem;
    font-weight: 500;
    color: var(--text-dark);
    padding: 14px 16px;
    border-radius: 12px;
    border: 1.5px solid rgba(0, 45, 114, 0.12);
    background: rgba(255, 255, 255, 0.92);
    transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
    box-sizing: border-box;
}
.contact-field textarea {
    resize: vertical;
    min-height: 120px;
    line-height: 1.5;
}
.contact-field input::placeholder,
.contact-field textarea::placeholder {
    color: rgba(51, 51, 51, 0.38);
}
.contact-field input:hover,
.contact-field select:hover,
.contact-field textarea:hover {
    border-color: rgba(0, 45, 114, 0.22);
}
.contact-field input:focus,
.contact-field select:focus,
.contact-field textarea:focus {
    outline: none;
    border-color: rgba(255, 80, 0, 0.55);
    box-shadow: 0 0 0 3px rgba(255, 80, 0, 0.12);
    background: var(--white);
}
.contact-field input.contact-input-invalid,
.contact-field select.contact-input-invalid,
.contact-field textarea.contact-input-invalid {
    border-color: rgba(213, 0, 50, 0.55);
    box-shadow: 0 0 0 2px rgba(213, 0, 50, 0.1);
}

.contact-hint {
    display: block;
    margin-top: 6px;
    font-size: 0.75rem;
    color: rgba(0, 45, 114, 0.45);
}

.contact-consent {
    margin-top: 22px;
    display: flex;
    gap: 12px;
    align-items: flex-start;
}
.contact-consent input[type="checkbox"] {
    width: 18px;
    height: 18px;
    margin-top: 3px;
    flex-shrink: 0;
    accent-color: var(--accent-orange);
    cursor: pointer;
}
.contact-consent label {
    font-size: 0.82rem;
    line-height: 1.5;
    color: var(--text-light);
    font-weight: 500;
    text-transform: none;
    letter-spacing: 0;
    margin: 0;
    cursor: pointer;
}
.contact-inline-link {
    color: var(--primary-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.contact-inline-link:hover {
    color: var(--accent-orange);
}

.contact-actions {
    margin-top: 26px;
}
.contact-submit {
    min-width: 200px;
    border: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 14px 32px;
    font-size: 0.82rem;
}
.contact-submit:disabled {
    opacity: 0.65;
    cursor: not-allowed;
    transform: none;
}

.contact-feedback {
    margin-top: 20px;
    min-height: 1.5em;
    font-size: 0.88rem;
    font-weight: 600;
    line-height: 1.45;
}
.contact-feedback.is-success {
    color: #0d6b3a;
}
.contact-feedback.is-error {
    color: var(--accent-red);
}

.contact-form-note {
    margin-top: 14px;
    font-size: 0.75rem;
    color: rgba(0, 45, 114, 0.42);
    line-height: 1.4;
}

@media (max-width: 900px) {
    .contact-layout {
        grid-template-columns: 1fr;
    }
    .contact-intro {
        max-width: 40rem;
    }
}

@media (max-width: 600px) {
    .contact-form-grid {
        grid-template-columns: 1fr;
    }
    .contact-field-full {
        grid-column: 1;
    }
    .contact-section {
        padding: 64px 0 72px;
    }
}

@media (prefers-reduced-motion: reduce) {
    a.contact-chip,
    .contact-field input,
    .contact-field select,
    .contact-field textarea {
        transition-duration: 0.01ms;
    }
    a.contact-chip:hover {
        transform: none;
    }
}

/* --- Página Inscripciones / Oferta temporada --- */
.offer-main {
    background: linear-gradient(180deg, var(--body-bg) 0%, var(--white) 18%);
}

.offer-hero {
    position: relative;
    padding: clamp(48px, 8vw, 88px) 0 clamp(40px, 6vw, 64px);
    color: var(--white);
    overflow: hidden;
}
.offer-hero__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    background-color: #001a52;
    background-image:
        linear-gradient(
            100deg,
            rgba(0, 21, 65, 0.94) 0%,
            rgba(0, 37, 114, 0.82) 42%,
            rgba(0, 45, 114, 0.42) 68%,
            rgba(0, 18, 48, 0.62) 100%
        ),
        radial-gradient(ellipse 70% 60% at 18% 22%, rgba(255, 80, 0, 0.14) 0%, transparent 52%),
        url('images/foto-principal-3.png');
    background-size: cover, cover, cover;
    background-position: center, center, right center;
    background-repeat: no-repeat;
}
.offer-hero__inner {
    position: relative;
    z-index: 1;
    max-width: 820px;
}
.offer-hero__kicker {
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    opacity: 0.92;
    margin: 0 0 14px;
}
.offer-hero__title {
    font-size: clamp(1.85rem, 4vw + 1rem, 2.65rem);
    line-height: 1.12;
    margin: 0 0 14px;
    font-weight: 800;
    letter-spacing: -0.02em;
    text-transform: none;
}
.offer-hero__dates {
    margin: 0 0 18px;
    font-size: 1.05rem;
    font-weight: 600;
    opacity: 0.95;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
.offer-hero__lead {
    margin: 0 0 24px;
    font-size: 1.02rem;
    line-height: 1.65;
    opacity: 0.93;
    max-width: 640px;
}
.offer-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 14px;
    align-items: center;
    margin-bottom: 18px;
}
.offer-hero__btn-portal {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}
.offer-hero__btn-secondary {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 11px 20px;
    border-radius: 50px;
    font-weight: 700;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--white);
    background: rgba(255, 255, 255, 0.14);
    border: 1.5px solid rgba(255, 255, 255, 0.38);
    transition: var(--transition);
}
.offer-hero__btn-secondary:hover {
    background: rgba(255, 255, 255, 0.24);
    border-color: rgba(255, 255, 255, 0.55);
    color: var(--white);
    transform: translateY(-1px);
}
.offer-hero__note {
    margin: 0;
    font-size: 0.82rem;
    opacity: 0.78;
    max-width: 560px;
    line-height: 1.5;
}

.offer-toolbar {
    position: sticky;
    top: calc(env(safe-area-inset-top, 0px) + 72px);
    z-index: 50;
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 6px 24px rgba(0, 45, 114, 0.06);
}
.offer-toolbar__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 16px 20px;
    padding: clamp(24px, 3.6vw, 40px) 0;
}
.offer-toolbar__search {
    flex: 1 1 220px;
    position: relative;
    min-width: 0;
}
.offer-toolbar__search-icon {
    position: absolute;
    left: 16px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--text-light);
    font-size: 0.95rem;
    pointer-events: none;
}
.offer-toolbar__input {
    width: 100%;
    padding: 15px 16px 15px 44px;
    border: 1px solid rgba(0, 45, 114, 0.15);
    border-radius: 14px;
    font-family: var(--font-main);
    font-size: 0.92rem;
    background: var(--white);
    min-height: 52px;
    box-sizing: border-box;
}
.offer-toolbar__input:focus {
    outline: 2px solid var(--accent-orange);
    outline-offset: 1px;
    border-color: transparent;
}
.offer-toolbar__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-left: auto;
}
.offer-chip {
    padding: 11px 18px;
    min-height: 44px;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    border: 1.5px solid rgba(0, 45, 114, 0.18);
    background: var(--white);
    font-family: var(--font-main);
    font-size: 0.76rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--primary-blue);
    cursor: pointer;
    transition: var(--transition);
}
.offer-chip:hover {
    border-color: var(--accent-orange);
    color: var(--accent-orange);
}
.offer-chip.is-active {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: var(--white);
}
.offer-list-wrap {
    padding-bottom: 80px;
}
.offer-block {
    padding: 48px 0 20px;
}
.offer-block--libre {
    padding-top: 32px;
}
.offer-block__head {
    margin-bottom: 28px;
}
.offer-block__title {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 1.65rem;
    margin: 0 0 8px;
    color: var(--primary-blue);
    text-transform: none;
    letter-spacing: normal;
}
.offer-block__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: var(--light-blue);
    color: var(--accent-orange);
    font-size: 1.1rem;
}
.offer-block--libre .offer-block__icon {
    color: var(--accent-orange);
}
.offer-block__sub {
    margin: 0;
    color: var(--text-light);
    font-size: 0.95rem;
}

.offer-grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 22px;
}

/* Tarjetas visibles por fila; última fila incompleta centrada en cada .offer-grid (currícula / libre) */
.offer-card {
    background: var(--white);
    border-radius: 16px;
    padding: 22px 22px 18px;
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 6px 22px rgba(0, 45, 114, 0.06);
    transition: box-shadow 0.25s ease, transform 0.25s ease;
    flex: 0 1 260px;
    min-width: 0;
    max-width: 100%;
}

@media (min-width: 1280px) {
    .offer-card {
        flex-basis: calc((100% - 88px) / 5);
        max-width: calc((100% - 88px) / 5);
    }
}
.offer-card:hover {
    box-shadow: 0 14px 36px rgba(0, 45, 114, 0.1);
    transform: translateY(-2px);
}
.offer-card__thumb-wrap {
    width: 100%;
    max-width: 288px;
    aspect-ratio: 1;
    height: auto;
    border-radius: 50%;
    overflow: hidden;
    margin: 0 auto 14px;
    flex-shrink: 0;
    border: 3px solid rgba(0, 45, 114, 0.12);
    box-shadow: 0 4px 14px rgba(0, 45, 114, 0.1);
}
.offer-card__thumb {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.offer-card__cta {
    margin: 0 0 14px;
    text-align: center;
}
.offer-card__btn-wa {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    box-sizing: border-box;
    padding: 11px 16px;
    border-radius: 12px;
    font-family: var(--font-main);
    font-weight: 700;
    font-size: 0.82rem;
    text-decoration: none;
    color: #fff !important;
    background: #25d366;
    border: none;
    box-shadow: 0 4px 14px rgba(37, 211, 102, 0.35);
    transition: background 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}
.offer-card__btn-wa:hover {
    background: #20bd5a;
    color: #fff !important;
    box-shadow: 0 6px 20px rgba(37, 211, 102, 0.45);
    transform: translateY(-1px);
}
.offer-card__btn-wa:focus-visible {
    outline: 3px solid rgba(0, 45, 114, 0.45);
    outline-offset: 2px;
}
.offer-badge {
    display: inline-block;
    font-size: 0.6rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    padding: 4px 10px;
    border-radius: 999px;
    margin-bottom: 12px;
}
.offer-badge--curricula {
    background: rgba(0, 45, 114, 0.1);
    color: var(--primary-blue);
}
.offer-badge--libre {
    background: rgba(255, 80, 0, 0.12);
    color: #c2410c;
}
.offer-card__title {
    font-size: 1.02rem;
    margin: 0 0 12px;
    line-height: 1.28;
    color: var(--primary-blue);
    text-transform: none;
    letter-spacing: normal;
    text-align: center;
}
.offer-facts {
    list-style: none;
    margin: 0 0 12px;
    padding: 0;
    font-size: 0.82rem;
    color: var(--text-light);
    line-height: 1.45;
}
.offer-facts li {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-bottom: 8px;
}
.offer-facts li:last-child {
    margin-bottom: 0;
}
.offer-facts__ico {
    flex-shrink: 0;
    width: 1.15em;
    color: var(--accent-orange);
    text-align: center;
}
.offer-details {
    border-top: 1px solid rgba(0, 45, 114, 0.08);
    padding-top: 12px;
    margin-top: 4px;
}
.offer-details summary {
    cursor: pointer;
    font-weight: 700;
    font-size: 0.76rem;
    color: var(--accent-orange);
    list-style: none;
    display: flex;
    align-items: center;
    gap: 8px;
}
.offer-details summary::-webkit-details-marker {
    display: none;
}
.offer-details summary::before {
    content: "\f054";
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    font-size: 0.65em;
    transition: transform 0.2s ease;
}
.offer-details[open] summary::before {
    transform: rotate(90deg);
}
.offer-details p {
    margin: 12px 0 0;
    font-size: 0.82rem;
    color: var(--text-dark);
    line-height: 1.55;
}

.offer-cta-bottom {
    margin-top: 48px;
    padding: 40px 24px;
    border-radius: 20px;
    background: linear-gradient(135deg, var(--light-blue) 0%, var(--white) 100%);
    border: 1px solid rgba(0, 45, 114, 0.1);
    text-align: center;
}
.offer-cta-bottom__title {
    font-size: 1.5rem;
    margin: 0 0 10px;
    color: var(--primary-blue);
    text-transform: none;
    letter-spacing: normal;
}
.offer-cta-bottom__text {
    margin: 0 auto 22px;
    max-width: 520px;
    color: var(--text-light);
    font-size: 0.95rem;
}
.offer-cta-bottom__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 14px;
    justify-content: center;
    align-items: center;
}
.offer-cta-bottom__btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.offer-cta-bottom__btn--secondary {
    background: var(--primary-blue);
    box-shadow: 0 4px 18px rgba(0, 45, 114, 0.22);
}
.offer-cta-bottom__btn--secondary:hover {
    filter: brightness(1.06);
}

@media (max-width: 768px) {
    .offer-toolbar {
        top: calc(env(safe-area-inset-top, 0px) + 58px);
    }
}

/* --- Página Nosotros --- */
.nosotros-page .faq-standalone {
    background: linear-gradient(180deg, var(--body-bg) 0%, var(--white) 24%);
    padding-bottom: 72px;
}
.nosotros-contact-list {
    list-style: none;
    margin: 0 0 18px;
    padding: 0;
    font-size: 0.98rem;
    line-height: 1.65;
    color: var(--text-dark);
}
.nosotros-contact-list li {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-bottom: 10px;
}
.nosotros-contact-list li:last-child {
    margin-bottom: 0;
}
.nosotros-contact-list .fa-map-marker-alt,
.nosotros-contact-list .fa-phone,
.nosotros-contact-list .fa-envelope {
    margin-top: 3px;
    color: var(--accent-orange);
    flex-shrink: 0;
    width: 1.1em;
    text-align: center;
}
.nosotros-social-label {
    font-weight: 800;
    color: var(--primary-blue);
    margin: 18px 0 10px;
    font-size: 1rem;
}
.nosotros-social-links {
    margin-bottom: 8px;
}
.nosotros-hero-photo {
    padding: 50px 0 12px;
}
.nosotros-hero-img {
    display: block;
    width: 100%;
    max-width: min(700px, 100%);
    margin: 0 auto;
    height: auto;
    border-radius: 14px;
    box-shadow: 0 12px 40px rgba(0, 45, 114, 0.12);
}

/* --- Página Preguntas frecuentes (independiente) --- */
.faq-standalone-page .faq-standalone {
    background: linear-gradient(180deg, var(--body-bg) 0%, var(--white) 24%);
    padding-bottom: 72px;
}
.faq-standalone-hero {
    position: relative;
    z-index: 0;
    padding: clamp(40px, 6vw, 72px) 0 28px;
    border-bottom: 1px solid rgba(0, 45, 114, 0.1);
    background: var(--white);
}
.faq-standalone-hero__inner {
    max-width: 780px;
}
.faq-standalone-hero__kicker {
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--accent-orange);
    margin: 0 0 12px;
}
.faq-standalone-hero__title {
    font-size: clamp(1.85rem, 3vw + 1rem, 2.45rem);
    margin: 0 0 16px;
    color: var(--primary-blue);
    line-height: 1.15;
    text-transform: none;
    letter-spacing: -0.02em;
}
.faq-standalone-hero__lead {
    margin: 0 0 22px;
    font-size: 1.02rem;
    line-height: 1.65;
    color: var(--text-light);
    max-width: 640px;
}
.faq-standalone-hero__lead a {
    color: var(--accent-orange);
    font-weight: 700;
}
.faq-standalone-hero__lead a:hover {
    color: var(--primary-blue);
}
.buscador-avanzado-main {
    padding-bottom: clamp(48px, 6vw, 80px);
}
.buscador-avanzado-gallery-link {
    margin: 0;
    font-size: 0.98rem;
}
.buscador-avanzado-gallery-link a {
    color: var(--accent-orange);
    font-weight: 700;
    text-decoration: none;
}
.buscador-avanzado-gallery-link a:hover {
    color: var(--primary-blue);
    text-decoration: underline;
}
.buscador-avanzado-gallery-link i {
    margin-right: 0.35em;
}
.buscador-avanzado-form-wrap {
    padding-top: 8px;
}
.faq-standalone-toc {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 14px;
}
.faq-standalone-toc a {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 8px 14px;
    border-radius: 999px;
    background: var(--light-blue);
    color: var(--primary-blue);
    border: 1px solid rgba(0, 45, 114, 0.12);
}
.faq-standalone-toc a:hover {
    border-color: var(--accent-orange);
    color: var(--accent-orange);
}
.faq-standalone-list {
    padding-top: 32px;
    max-width: 800px;
}
.faq-standalone-item {
    scroll-margin-top: 100px;
    padding: 28px 0 32px;
    border-bottom: 1px solid rgba(0, 45, 114, 0.1);
}
.faq-standalone-item:last-child {
    border-bottom: none;
}
.faq-standalone-item__q {
    font-size: 1.2rem;
    margin: 0 0 14px;
    color: var(--primary-blue);
    line-height: 1.3;
    text-transform: none;
    letter-spacing: normal;
    font-weight: 800;
}
.faq-standalone-item__a p {
    margin: 0 0 14px;
    font-size: 0.98rem;
    line-height: 1.65;
    color: var(--text-dark);
}
.faq-standalone-item__a p:last-child {
    margin-bottom: 0;
}
.faq-standalone-inline-link {
    font-weight: 700;
    color: var(--accent-orange);
}
.faq-standalone-inline-link:hover {
    color: var(--primary-blue);
}
.faq-standalone-cta {
    margin-top: 8px;
    display: inline-flex;
}

/* --- Preguntas frecuentes (versión profesional, solo esta página) --- */
.preguntas-frecuentes-page .faq-standalone {
    background: linear-gradient(180deg, #f0f4fa 0%, var(--body-bg) 18%, var(--white) 45%);
    padding-bottom: 0;
}
.preguntas-frecuentes-page .faq-page-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(44px, 7vw, 80px) 0 clamp(32px, 5vw, 48px);
    border-bottom: none;
    background: linear-gradient(145deg, var(--white) 0%, rgba(230, 240, 249, 0.85) 48%, var(--white) 100%);
}
.preguntas-frecuentes-page .faq-page-hero__glow {
    position: absolute;
    top: -40%;
    right: -8%;
    width: min(520px, 70vw);
    height: min(520px, 70vw);
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 80, 0, 0.12) 0%, transparent 68%);
    pointer-events: none;
    z-index: 0;
}
.preguntas-frecuentes-page .faq-page-hero__inner {
    position: relative;
    z-index: 1;
    max-width: 960px;
}
.preguntas-frecuentes-page .faq-page-hero__kicker {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}
.preguntas-frecuentes-page .faq-page-hero__kicker i {
    font-size: 1rem;
    color: var(--accent-orange);
}
.preguntas-frecuentes-page .faq-page-hero__lead {
    max-width: 52rem;
    font-size: 1.05rem;
    line-height: 1.7;
}
.preguntas-frecuentes-page .faq-page-hero__stats {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 14px;
    margin: 24px 0 28px;
    padding: 0;
    list-style: none;
}
.preguntas-frecuentes-page .faq-page-hero__stats li {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    padding: 9px 14px;
    border-radius: 999px;
    font-size: 0.74rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--primary-blue);
    background: rgba(255, 255, 255, 0.92);
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 2px 12px rgba(0, 45, 114, 0.06);
}
.preguntas-frecuentes-page .faq-page-hero__stats li i {
    color: var(--accent-orange);
    font-size: 0.88rem;
}
.preguntas-frecuentes-page .faq-page-toc {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(158px, 1fr));
    gap: 12px;
}
@media (min-width: 900px) {
    .preguntas-frecuentes-page .faq-page-toc {
        grid-template-columns: repeat(5, 1fr);
        gap: 14px;
    }
}
.preguntas-frecuentes-page .faq-page-toc__card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    padding: 16px 14px;
    border-radius: 14px;
    text-decoration: none;
    color: var(--primary-blue);
    background: var(--white);
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 4px 20px rgba(0, 45, 114, 0.07);
    transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}
.preguntas-frecuentes-page .faq-page-toc__card:hover {
    border-color: rgba(255, 80, 0, 0.45);
    box-shadow: 0 10px 32px rgba(255, 80, 0, 0.12);
    transform: translateY(-2px);
}
.preguntas-frecuentes-page .faq-page-toc__card:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: 3px;
}
.preguntas-frecuentes-page .faq-page-toc__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: var(--light-blue);
    color: var(--accent-orange);
    font-size: 1.05rem;
}
.preguntas-frecuentes-page .faq-page-toc__label {
    font-size: 0.82rem;
    font-weight: 800;
    letter-spacing: 0.02em;
    line-height: 1.25;
}
.preguntas-frecuentes-page .faq-page-toc__hint {
    font-size: 0.68rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-light);
    line-height: 1.3;
}
.preguntas-frecuentes-page .faq-page-answers {
    padding: clamp(36px, 5vw, 56px) 0 clamp(48px, 6vw, 72px);
    background: var(--white);
}
.preguntas-frecuentes-page .faq-page-answers__inner {
    max-width: 800px;
}
.preguntas-frecuentes-page .faq-page-answers__intro {
    margin-bottom: 28px;
    padding-bottom: 22px;
    border-bottom: 1px solid rgba(0, 45, 114, 0.1);
}
.preguntas-frecuentes-page .faq-page-answers__title {
    margin: 0 0 8px;
    font-size: clamp(1.15rem, 2vw, 1.35rem);
    font-weight: 800;
    color: var(--primary-blue);
    letter-spacing: -0.02em;
}
.preguntas-frecuentes-page .faq-page-answers__subtitle {
    margin: 0;
    font-size: 0.94rem;
    line-height: 1.55;
    color: var(--text-light);
}
.preguntas-frecuentes-page .faq-page-list.faq-standalone-list {
    padding-top: 0;
    max-width: none;
    display: flex;
    flex-direction: column;
    gap: 20px;
}
.preguntas-frecuentes-page details.faq-page-card.faq-standalone-item {
    scroll-margin-top: 100px;
    padding: 0;
    border-bottom: none;
    border-radius: 16px;
    background: var(--white);
    border: 1px solid rgba(0, 45, 114, 0.08);
    box-shadow: 0 8px 32px rgba(0, 45, 114, 0.08);
    overflow: hidden;
    position: relative;
}
.preguntas-frecuentes-page details.faq-page-card.faq-standalone-item::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 4px;
    background: linear-gradient(180deg, var(--accent-orange) 0%, rgba(255, 80, 0, 0.45) 100%);
    border-radius: 4px 0 0 4px;
}
.preguntas-frecuentes-page .faq-page-accordion__summary {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    padding: 22px 20px 22px 26px;
    cursor: pointer;
    list-style: none;
}
.preguntas-frecuentes-page .faq-page-accordion__summary::-webkit-details-marker {
    display: none;
}
.preguntas-frecuentes-page .faq-page-accordion__summary::marker {
    content: '';
}
.preguntas-frecuentes-page .faq-page-accordion__summary:hover {
    background: rgba(230, 240, 249, 0.4);
}
.preguntas-frecuentes-page .faq-page-accordion__summary:focus {
    outline: none;
}
.preguntas-frecuentes-page .faq-page-accordion__summary:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: -6px;
    z-index: 1;
    position: relative;
}
.preguntas-frecuentes-page details.faq-page-accordion[open] > .faq-page-accordion__summary {
    border-bottom: 1px solid rgba(0, 45, 114, 0.08);
}
.preguntas-frecuentes-page .faq-page-card__head {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    padding: 0;
    flex: 1;
    min-width: 0;
}
.preguntas-frecuentes-page .faq-page-accordion__chevron {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.35rem;
    height: 2.35rem;
    margin-top: 2px;
    border-radius: 10px;
    background: var(--light-blue);
    color: var(--primary-blue);
    font-size: 0.8rem;
    transition: transform 0.28s ease, color 0.2s ease, background 0.2s ease;
}
.preguntas-frecuentes-page details.faq-page-accordion[open] .faq-page-accordion__chevron {
    transform: rotate(180deg);
    color: var(--accent-orange);
    background: rgba(255, 80, 0, 0.1);
}
.preguntas-frecuentes-page .faq-page-card__num {
    flex-shrink: 0;
    min-width: 2.5rem;
    padding: 6px 0;
    font-size: 0.75rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    color: var(--accent-orange);
    border-bottom: 2px solid rgba(255, 80, 0, 0.35);
    text-align: center;
}
.preguntas-frecuentes-page .faq-page-card__q.faq-standalone-item__q {
    margin: 0;
    padding: 0 0 4px;
    font-size: clamp(1.05rem, 1.5vw, 1.22rem);
    line-height: 1.35;
}
.preguntas-frecuentes-page .faq-page-accordion__panel.faq-page-card__body.faq-standalone-item__a {
    padding: 18px 22px 24px 26px;
    border-top: 1px solid rgba(0, 45, 114, 0.06);
}
.preguntas-frecuentes-page .faq-page-accordion__panel.faq-page-card__body.faq-standalone-item__a p {
    font-size: 0.98rem;
    line-height: 1.68;
    color: var(--text-dark);
}
.preguntas-frecuentes-page .faq-page-card__links {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 10px;
}
.preguntas-frecuentes-page .faq-page-card__links-sep {
    color: rgba(0, 45, 114, 0.25);
    font-weight: 700;
}
.preguntas-frecuentes-page .faq-page-card__mailto {
    font-weight: 700;
    color: var(--primary-blue);
    text-decoration: underline;
    text-underline-offset: 3px;
}
.preguntas-frecuentes-page .faq-page-card__mailto:hover {
    color: var(--accent-orange);
}
.preguntas-frecuentes-page .faq-page-card__cta {
    margin-top: 4px;
}
.preguntas-frecuentes-page .faq-page-cta-band {
    padding: clamp(36px, 5vw, 52px) 0 clamp(48px, 7vw, 80px);
    background: linear-gradient(135deg, var(--primary-blue) 0%, #001a4a 55%, #0a2a6e 100%);
    color: var(--white);
}
.preguntas-frecuentes-page .faq-page-cta-band__inner {
    max-width: 920px;
    display: flex;
    flex-direction: column;
    gap: 22px;
    align-items: flex-start;
}
@media (min-width: 720px) {
    .preguntas-frecuentes-page .faq-page-cta-band__inner {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        gap: 32px;
    }
}
.preguntas-frecuentes-page .faq-page-cta-band__title {
    margin: 0 0 10px;
    font-size: clamp(1.2rem, 2vw, 1.5rem);
    font-weight: 800;
    line-height: 1.25;
    letter-spacing: -0.02em;
}
.preguntas-frecuentes-page .faq-page-cta-band__text {
    margin: 0;
    font-size: 0.95rem;
    line-height: 1.6;
    opacity: 0.92;
    max-width: 36rem;
}
.preguntas-frecuentes-page .faq-page-cta-band__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    flex-shrink: 0;
}
.preguntas-frecuentes-page .faq-page-cta-band__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 14px 22px;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    text-decoration: none;
    border: 2px solid transparent;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, color 0.2s ease;
}
.preguntas-frecuentes-page .faq-page-cta-band__btn--wa {
    background: var(--wa-green);
    color: var(--wa-icon);
    border-color: rgba(255, 255, 255, 0.2);
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.2);
}
.preguntas-frecuentes-page .faq-page-cta-band__btn--wa:hover {
    background: var(--wa-green-hover);
    transform: translateY(-2px);
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.25);
}
.preguntas-frecuentes-page .faq-page-cta-band__btn--outline {
    background: transparent;
    color: var(--white);
    border-color: rgba(255, 255, 255, 0.45);
}
.preguntas-frecuentes-page .faq-page-cta-band__btn--outline:hover {
    background: rgba(255, 255, 255, 0.12);
    border-color: rgba(255, 255, 255, 0.75);
}
.preguntas-frecuentes-page .faq-page-cta-band__btn .fab {
    font-size: 1.25rem;
}
@media (prefers-reduced-motion: reduce) {
    .preguntas-frecuentes-page .faq-page-toc__card:hover,
    .preguntas-frecuentes-page .faq-page-cta-band__btn--wa:hover {
        transform: none;
    }
    .preguntas-frecuentes-page .faq-page-accordion__chevron {
        transition: none;
    }
}
@media (prefers-reduced-motion: no-preference) {
    html:has(body.preguntas-frecuentes-page) {
        scroll-behavior: smooth;
    }
}

/* --- Página Videos (recursos) --- */
.videos-page .videos-portal-note,
.libros-page .libros-portal-note,
.audios-page .audios-portal-note,
.apps-page .apps-portal-note,
.podcast-page .podcast-portal-note {
    margin: 0 0 20px;
    font-size: 0.88rem;
    line-height: 1.55;
    color: var(--text-light);
    max-width: 640px;
}
.videos-page .videos-portal-note a,
.libros-page .libros-portal-note a,
.audios-page .audios-portal-note a,
.apps-page .apps-portal-note a,
.podcast-page .podcast-portal-note a {
    color: var(--accent-orange);
    font-weight: 700;
}
.videos-page .videos-portal-note a:hover,
.libros-page .libros-portal-note a:hover,
.audios-page .audios-portal-note a:hover,
.apps-page .apps-portal-note a:hover,
.podcast-page .podcast-portal-note a:hover {
    color: var(--primary-blue);
}

@media (prefers-reduced-motion: no-preference) {
    html:has(body.videos-page) {
        scroll-behavior: smooth;
    }
}

.videos-hero-enhanced .faq-standalone-hero__inner {
    max-width: 920px;
}

.videos-hero-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 16px;
    margin: 22px 0 20px;
    padding: 0;
    list-style: none;
}
.videos-hero-stats li {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 10px 16px;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.72);
    border: 1px solid rgba(0, 45, 114, 0.1);
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--primary-blue);
    box-shadow: 0 2px 12px rgba(0, 45, 114, 0.05);
}
.videos-hero-stats li i {
    color: var(--accent-orange);
    font-size: 1rem;
    opacity: 0.95;
}

.videos-channel-cta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 16px 24px;
    margin: 8px 0 26px;
    padding: 18px 22px;
    border-radius: 16px;
    background: linear-gradient(135deg, var(--primary-blue) 0%, #001a4a 100%);
    color: #fff;
    box-shadow: 0 12px 40px rgba(0, 45, 114, 0.28);
    border: 1px solid rgba(255, 255, 255, 0.12);
}
.videos-channel-cta__text {
    flex: 1;
    min-width: 200px;
}
.videos-channel-cta__label {
    display: block;
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    opacity: 0.85;
    margin-bottom: 6px;
}
.videos-channel-cta__title {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 800;
    line-height: 1.35;
}
.videos-channel-cta__btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 12px 22px;
    border-radius: 999px;
    font-weight: 800;
    font-size: 0.88rem;
    text-decoration: none;
    background: #ff0000;
    color: #fff !important;
    border: 2px solid rgba(255, 255, 255, 0.35);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);
}
.videos-channel-cta__btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 28px rgba(0, 0, 0, 0.35);
    color: #fff !important;
}

.videos-toc-wrap {
    margin-top: 4px;
}
.videos-toc-label {
    display: block;
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--primary-blue);
    margin-bottom: 12px;
    opacity: 0.85;
}
.videos-toc {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 12px;
}
.videos-toc a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.76rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 10px 16px;
    border-radius: 999px;
    background: var(--light-blue);
    color: var(--primary-blue);
    border: 1px solid rgba(0, 45, 114, 0.12);
    text-decoration: none;
    transition: border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}
.videos-toc a:hover {
    border-color: var(--accent-orange);
    color: var(--accent-orange);
    box-shadow: 0 4px 16px rgba(255, 80, 0, 0.12);
}
.videos-toc a i {
    font-size: 0.85rem;
    opacity: 0.9;
}

.videos-library {
    position: relative;
    z-index: 0;
    padding-top: clamp(20px, 3vw, 32px);
    padding-bottom: 56px;
    max-width: 1140px;
}
.videos-library__intro {
    margin-bottom: 28px;
    padding-bottom: 22px;
    border-bottom: 1px solid rgba(0, 45, 114, 0.1);
    position: static;
    z-index: auto;
}
.videos-library__kicker {
    margin: 0 0 8px;
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--accent-orange);
}
.videos-library__title {
    margin: 0 0 10px;
    font-size: clamp(1.35rem, 2.8vw, 1.65rem);
    font-weight: 800;
    color: var(--primary-blue);
    line-height: 1.2;
}
.videos-library__lead {
    margin: 0;
    max-width: 640px;
    font-size: 0.95rem;
    line-height: 1.65;
    color: var(--text-light);
}

.videos-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 28px;
}
@media (min-width: 900px) {
    .videos-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 28px 26px;
    }
}

.videos-card {
    scroll-margin-top: 96px;
    display: flex;
    flex-direction: column;
    padding: 0;
    background: var(--white);
    border-radius: 20px;
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 10px 36px rgba(0, 45, 114, 0.07);
    overflow: hidden;
    transition: box-shadow 0.3s ease, border-color 0.3s ease;
}
.videos-card:hover {
    box-shadow: 0 16px 48px rgba(0, 45, 114, 0.11);
    border-color: rgba(0, 45, 114, 0.14);
}
.videos-card__top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding: 20px 22px 0;
}
.videos-card__index {
    font-size: 0.75rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    color: rgba(0, 45, 114, 0.35);
}
.videos-card__badge {
    display: inline-block;
    padding: 5px 12px;
    border-radius: 999px;
    font-size: 0.68rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    background: var(--light-blue);
    color: var(--primary-blue);
    border: 1px solid rgba(0, 45, 114, 0.1);
}
.videos-card__badge--creatividad {
    background: rgba(255, 80, 0, 0.1);
    color: #c63d00;
    border-color: rgba(255, 80, 0, 0.2);
}
.videos-card__badge--tiempo {
    background: rgba(0, 45, 114, 0.08);
    color: var(--primary-blue);
}
.videos-card__head {
    padding: 6px 22px 16px;
}
.videos-card__title {
    font-size: 1.12rem;
    margin: 0;
    color: var(--primary-blue);
    line-height: 1.3;
    font-weight: 800;
}
.videos-card__title-main,
.videos-card__title-sub {
    display: block;
}
.videos-card__title-sub {
    font-size: 0.92em;
    font-weight: 700;
    color: var(--accent-orange);
    margin-top: 4px;
}
.videos-card__embed {
    position: relative;
    width: 100%;
    margin: 0;
    padding-bottom: 56.25%;
    height: 0;
    overflow: hidden;
    background: #0c0c14;
    border-top: 1px solid rgba(0, 45, 114, 0.08);
    border-bottom: 1px solid rgba(0, 45, 114, 0.08);
}
.videos-card__embed iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 0;
}
.videos-card__body {
    padding: 18px 22px 20px;
    flex: 1;
}
.videos-card__body p {
    margin: 0;
    font-size: 0.92rem;
    line-height: 1.68;
    color: var(--text-dark);
}
.videos-card__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 16px;
    padding: 14px 22px 20px;
    margin-top: auto;
    border-top: 1px solid rgba(0, 45, 114, 0.07);
    background: linear-gradient(180deg, rgba(230, 240, 249, 0.35) 0%, rgba(255, 255, 255, 0.6) 100%);
}
.videos-card__ext {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.82rem;
    font-weight: 800;
    color: var(--primary-blue);
    text-decoration: none;
    transition: color 0.2s ease;
}
.videos-card__ext:hover {
    color: var(--accent-orange);
}
.videos-card__ext i {
    font-size: 1rem;
}

/* --- Página Audios (recursos) --- */
.audios-list {
    padding-top: 32px;
    padding-bottom: 48px;
    max-width: 720px;
}
.audios-item {
    scroll-margin-top: 100px;
    margin-bottom: 22px;
    padding: 28px 26px;
    background: var(--white);
    border-radius: 18px;
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 8px 28px rgba(0, 45, 114, 0.06);
}
.audios-item__title {
    font-size: 1.18rem;
    margin: 0 0 14px;
    color: var(--primary-blue);
    line-height: 1.25;
    font-weight: 800;
    text-transform: none;
    letter-spacing: normal;
}
.audios-item__cite {
    margin: 0 0 12px;
    padding: 12px 16px 12px 18px;
    border-left: 4px solid var(--accent-orange);
    background: rgba(255, 80, 0, 0.06);
    border-radius: 0 10px 10px 0;
    font-size: 0.95rem;
    line-height: 1.55;
    color: var(--text-dark);
}
.audios-item__cite p {
    margin: 0;
}
.audios-item__link-book {
    margin: 0 0 18px;
    font-size: 0.88rem;
}
.audios-item__link-book a {
    font-weight: 700;
    color: var(--accent-orange);
    text-decoration: none;
}
.audios-item__link-book a:hover {
    color: var(--primary-blue);
    text-decoration: underline;
}
.audios-item__player {
    width: 100%;
    max-width: 100%;
}
.audios-item__audio {
    width: 100%;
    max-width: 100%;
    height: 40px;
    vertical-align: middle;
}

/* --- Página Apps (recursos) --- */
.apps-list {
    padding-top: 28px;
    padding-bottom: 48px;
    max-width: 920px;
}
.apps-item {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
    gap: 28px 32px;
    align-items: start;
    padding: 28px 26px;
    background: var(--white);
    border-radius: 18px;
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 8px 28px rgba(0, 45, 114, 0.06);
    scroll-margin-top: 100px;
}
@media (max-width: 768px) {
    .apps-item {
        grid-template-columns: 1fr;
    }
}
.apps-item__media {
    border-radius: 14px;
    overflow: hidden;
    border: 1px solid rgba(0, 45, 114, 0.08);
    background: var(--light-blue);
    box-shadow: 0 6px 20px rgba(0, 45, 114, 0.08);
}
.apps-item__img {
    display: block;
    width: 100%;
    height: auto;
}
.apps-item__title {
    font-size: 1.25rem;
    margin: 0 0 14px;
    color: var(--primary-blue);
    font-weight: 800;
    line-height: 1.25;
    text-transform: none;
    letter-spacing: normal;
}
.apps-item__text p {
    margin: 0 0 14px;
    font-size: 0.98rem;
    line-height: 1.65;
    color: var(--text-dark);
    text-align: justify;
}
.apps-item__text p:last-child {
    margin-bottom: 0;
}
.apps-item__cta {
    margin: 20px 0 0;
}
.apps-item__btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 12px 22px;
    border-radius: 12px;
    font-family: var(--font-main);
    font-weight: 800;
    font-size: 0.88rem;
    text-decoration: none;
    color: #fff !important;
    background: var(--accent-orange);
    border: none;
    box-shadow: 0 4px 16px rgba(255, 80, 0, 0.35);
    transition: background 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}
.apps-item__btn:hover {
    background: #e04a00;
    color: #fff !important;
    box-shadow: 0 6px 22px rgba(255, 80, 0, 0.45);
    transform: translateY(-1px);
}
.apps-item__btn:focus-visible {
    outline: 3px solid rgba(0, 45, 114, 0.45);
    outline-offset: 2px;
}
.apps-item__media-link {
    display: block;
    line-height: 0;
}
.apps-item__media-link:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: 3px;
    border-radius: 12px;
}
.apps-item__btn--spotify {
    background: #1db954;
    box-shadow: 0 4px 16px rgba(29, 185, 84, 0.35);
}
.apps-item__btn--spotify:hover {
    background: #169c46;
    color: #fff !important;
    box-shadow: 0 6px 22px rgba(29, 185, 84, 0.45);
}

/* --- Página Blog (recursos) --- */
.blog-wrap {
    padding-top: 28px;
    padding-bottom: 56px;
    max-width: 920px;
}
.blog-table-wrap {
    overflow-x: auto;
    border-radius: 16px;
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 8px 28px rgba(0, 45, 114, 0.06);
    background: var(--white);
}
.blog-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.92rem;
}
.blog-table th,
.blog-table td {
    padding: 14px 16px;
    text-align: left;
    border-bottom: 1px solid rgba(0, 45, 114, 0.08);
    vertical-align: top;
}
.blog-table thead th {
    background: var(--light-blue);
    color: var(--primary-blue);
    font-weight: 800;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.blog-table tbody tr:last-child td {
    border-bottom: none;
}
.blog-table tbody td {
    color: var(--text-dark);
    line-height: 1.45;
}
.blog-table a {
    font-weight: 700;
    color: var(--primary-blue);
    text-decoration: none;
}
.blog-table a:hover {
    color: var(--accent-orange);
    text-decoration: underline;
}
.blog-table__date {
    display: inline-block;
    margin-top: 6px;
    font-size: 0.82rem;
    font-weight: 600;
    color: rgba(0, 45, 114, 0.55);
}
.blog-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 16px 24px;
    margin-bottom: 16px;
}
.blog-toolbar__label {
    display: block;
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--primary-blue);
    margin-bottom: 6px;
}
.blog-toolbar__input,
.blog-toolbar__select {
    min-width: 200px;
    padding: 10px 14px;
    border-radius: 10px;
    border: 1px solid rgba(0, 45, 114, 0.18);
    font-family: inherit;
    font-size: 0.92rem;
    background: var(--white);
    color: var(--text-dark);
}
.blog-toolbar__input:focus,
.blog-toolbar__select:focus {
    outline: 2px solid var(--accent-orange);
    outline-offset: 2px;
}
.blog-pager {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 12px 20px;
    margin-bottom: 14px;
    min-height: 2rem;
    font-size: 0.88rem;
    color: rgba(0, 45, 114, 0.75);
}
.blog-pager__btn {
    padding: 8px 16px;
    border-radius: 999px;
    border: 1px solid rgba(0, 45, 114, 0.2);
    background: var(--white);
    font-family: inherit;
    font-weight: 700;
    font-size: 0.82rem;
    color: var(--primary-blue);
    cursor: pointer;
    transition: background 0.2s ease, border-color 0.2s ease;
}
.blog-pager__btn:hover:not(:disabled) {
    background: var(--light-blue);
    border-color: rgba(0, 45, 114, 0.35);
}
.blog-pager__btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
.blog-pager__info {
    font-weight: 600;
}

/* --- Comunidad (hub y galerías) --- */
.comunidad-hub {
    padding: 8px 0 56px;
    max-width: 960px;
}
.comunidad-hub__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 22px;
}
@media (min-width: 720px) {
    .comunidad-hub__grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 26px;
    }
}
.comunidad-hub__card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
    text-decoration: none;
    color: inherit;
    background: var(--white);
    border-radius: 20px;
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 10px 36px rgba(0, 45, 114, 0.07);
    padding: 26px 24px 24px;
    transition: box-shadow 0.3s ease, border-color 0.3s ease, transform 0.25s ease;
}
.comunidad-hub__card:hover {
    box-shadow: 0 16px 48px rgba(0, 45, 114, 0.12);
    border-color: rgba(255, 80, 0, 0.35);
    transform: translateY(-3px);
}
.comunidad-hub__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    border-radius: 14px;
    background: var(--light-blue);
    color: var(--primary-blue);
    font-size: 1.35rem;
    margin-bottom: 16px;
}
.comunidad-hub__title {
    margin: 0 0 10px;
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--primary-blue);
    line-height: 1.25;
    text-transform: none;
    letter-spacing: -0.02em;
}
.comunidad-hub__desc {
    margin: 0 0 18px;
    font-size: 0.92rem;
    line-height: 1.6;
    color: var(--text-light);
    flex: 1;
}
.comunidad-hub__cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.82rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--accent-orange);
}
.comunidad-hub__card:hover .comunidad-hub__cta {
    color: var(--primary-blue);
}

.comunidad-gallery {
    padding: 8px 0 56px;
    max-width: 1200px;
}
.comunidad-gallery__nav {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 20px;
    margin-top: 18px;
}
.comunidad-gallery__nav a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.86rem;
    font-weight: 700;
    color: var(--primary-blue);
    text-decoration: none;
}
.comunidad-gallery__nav a:hover {
    color: var(--accent-orange);
    text-decoration: underline;
}
.comunidad-gallery__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 14px;
    margin-top: 8px;
}
@media (min-width: 600px) {
    .comunidad-gallery__grid {
        grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
        gap: 16px;
    }
}
/* Paginación: el atributo [hidden] debe ocultar aunque .comunidad-gallery__item use display:block */
.comunidad-gallery__grid--pro > a.comunidad-gallery__item[hidden] {
    display: none !important;
}
.comunidad-gallery__item {
    position: relative;
    display: block;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: 14px;
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 6px 20px rgba(0, 45, 114, 0.08);
    background: #0c0c12;
    transition: box-shadow 0.25s ease, transform 0.25s ease;
}
.comunidad-gallery__item:hover {
    box-shadow: 0 12px 32px rgba(0, 45, 114, 0.14);
    transform: translateY(-2px);
}
.comunidad-gallery__item:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: 3px;
}
.comunidad-gallery__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    vertical-align: middle;
}
.comunidad-gallery__zoom {
    position: absolute;
    right: 10px;
    bottom: 10px;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 10px;
    background: rgba(0, 45, 114, 0.82);
    color: #fff;
    font-size: 0.95rem;
    pointer-events: none;
    opacity: 0.92;
}
.comunidad-gallery__credit {
    margin: 28px 0 0;
    font-size: 0.82rem;
    line-height: 1.55;
    color: var(--text-light);
    text-align: center;
    max-width: 640px;
    margin-left: auto;
    margin-right: auto;
}
.comunidad-gallery__credit a {
    color: var(--accent-orange);
    font-weight: 700;
}
.comunidad-gallery__credit a:hover {
    color: var(--primary-blue);
}

/* Galería comunidad (héroe pro: distancia y presenciales) */
.comunidad-distancia-hero .faq-standalone-hero__inner,
.comunidad-presenciales-hero .faq-standalone-hero__inner {
    max-width: 800px;
}
.comunidad-distancia-hero__lead,
.comunidad-presenciales-hero__lead {
    max-width: 100%;
}
.comunidad-distancia-hero__stats,
.comunidad-presenciales-hero__stats {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 14px;
    margin: 20px 0 22px;
    padding: 0;
    list-style: none;
}
.comunidad-distancia-hero__stats li,
.comunidad-presenciales-hero__stats li {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    padding: 9px 14px;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--primary-blue);
    background: var(--light-blue);
    border: 1px solid rgba(0, 45, 114, 0.1);
}
.comunidad-distancia-hero__stats li i,
.comunidad-presenciales-hero__stats li i {
    color: var(--accent-orange);
    font-size: 0.9rem;
}
.comunidad-distancia-hero__nav,
.comunidad-presenciales-hero__nav {
    margin-top: 6px;
    gap: 10px 12px;
}
.comunidad-distancia-hero__pill,
.comunidad-presenciales-hero__pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    text-decoration: none;
    color: var(--primary-blue);
    background: var(--white);
    border: 1px solid rgba(0, 45, 114, 0.14);
    box-shadow: 0 2px 10px rgba(0, 45, 114, 0.06);
    transition: border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}
.comunidad-distancia-hero__pill:hover,
.comunidad-presenciales-hero__pill:hover {
    border-color: var(--accent-orange);
    color: var(--accent-orange);
    box-shadow: 0 6px 18px rgba(255, 80, 0, 0.12);
}

.comunidad-gallery--pro {
    padding-top: 12px;
    padding-bottom: 64px;
    max-width: 1220px;
}
.comunidad-gallery-pro__head {
    margin-bottom: 14px;
    padding-bottom: 20px;
    border-bottom: 1px solid rgba(0, 45, 114, 0.1);
}
.comunidad-gallery-pro__title {
    margin: 0 0 8px;
    font-size: clamp(1.2rem, 2.2vw, 1.45rem);
    font-weight: 800;
    color: var(--primary-blue);
    text-transform: none;
    letter-spacing: -0.02em;
}
.comunidad-gallery-pro__subtitle {
    margin: 0;
    max-width: 720px;
    font-size: 0.94rem;
    line-height: 1.6;
    color: var(--text-light);
}
.comunidad-gallery-pro__hint {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 0 0 20px;
    padding: 12px 16px;
    border-radius: 12px;
    font-size: 0.84rem;
    line-height: 1.5;
    color: rgba(0, 45, 114, 0.85);
    background: rgba(230, 240, 249, 0.65);
    border: 1px solid rgba(0, 45, 114, 0.1);
}
.comunidad-gallery-pro__hint > i {
    margin-top: 2px;
    color: var(--accent-orange);
    flex-shrink: 0;
}

.comunidad-gallery__grid--pro {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-top: 0;
}
@media (min-width: 520px) {
    .comunidad-gallery__grid--pro {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 16px;
    }
}
@media (min-width: 768px) {
    .comunidad-gallery__grid--pro {
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 18px;
    }
}
@media (min-width: 1024px) {
    .comunidad-gallery__grid--pro {
        grid-template-columns: repeat(5, minmax(0, 1fr));
        gap: 20px;
    }
}

.comunidad-gallery__item--pro {
    border-radius: 16px;
    box-shadow: 0 8px 28px rgba(0, 45, 114, 0.1);
    border: 1px solid rgba(0, 45, 114, 0.08);
}
.comunidad-gallery__item--pro img {
    transition: transform 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.comunidad-gallery__item--pro:hover img {
    transform: scale(1.04);
}

.comunidad-gallery__overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(180deg, transparent 0%, rgba(0, 20, 60, 0.15) 40%, rgba(0, 12, 40, 0.82) 100%);
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
    z-index: 1;
}
.comunidad-gallery__item--pro:hover .comunidad-gallery__overlay,
.comunidad-gallery__item--pro:focus-visible .comunidad-gallery__overlay {
    opacity: 1;
}
.comunidad-gallery__overlay-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 12px 18px;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.96);
    color: var(--primary-blue);
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
    transform: translateY(8px);
    transition: transform 0.3s ease;
}
.comunidad-gallery__item--pro:hover .comunidad-gallery__overlay-inner,
.comunidad-gallery__item--pro:focus-visible .comunidad-gallery__overlay-inner {
    transform: translateY(0);
}
.comunidad-gallery__overlay-inner i {
    font-size: 1.15rem;
    color: var(--accent-orange);
}

.comunidad-gallery__credit--pro {
    margin-top: 32px;
    padding-top: 20px;
    border-top: 1px solid rgba(0, 45, 114, 0.08);
}
.comunidad-gallery__credit--pro .comunidad-gallery__path {
    font-size: 0.82em;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 6px;
    background: rgba(230, 240, 249, 0.9);
    border: 1px solid rgba(0, 45, 114, 0.12);
    word-break: break-all;
}

.comunidad-gallery__pagination {
    margin-top: 28px;
    padding: 20px 0 8px;
    border-top: 1px solid rgba(0, 45, 114, 0.08);
}
.comunidad-gallery__pagination-info {
    margin: 0 0 14px;
    text-align: center;
    font-size: 0.88rem;
    font-weight: 700;
    color: var(--primary-blue);
}
.comunidad-gallery__pagination-buttons {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 10px 12px;
}
.comunidad-gallery__pagination-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    cursor: pointer;
    border: 1px solid rgba(0, 45, 114, 0.16);
    background: var(--white);
    color: var(--primary-blue);
    transition: border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}
.comunidad-gallery__pagination-btn:hover:not(:disabled) {
    border-color: var(--accent-orange);
    color: var(--accent-orange);
    box-shadow: 0 4px 14px rgba(255, 80, 0, 0.12);
}
.comunidad-gallery__pagination-btn:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}
.comunidad-gallery__pagination-pages {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 8px;
}
.comunidad-gallery__pagination-num {
    min-width: 2.35rem;
    height: 2.35rem;
    padding: 0 8px;
    border-radius: 10px;
    font-size: 0.82rem;
    font-weight: 800;
    cursor: pointer;
    border: 1px solid rgba(0, 45, 114, 0.14);
    background: var(--white);
    color: var(--primary-blue);
    transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
}
.comunidad-gallery__pagination-num:hover {
    border-color: var(--accent-orange);
    color: var(--accent-orange);
}
.comunidad-gallery__pagination-num.is-current {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: var(--white);
    pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
    .comunidad-gallery__item--pro img,
    .comunidad-gallery__overlay,
    .comunidad-gallery__overlay-inner {
        transition: none;
    }
    .comunidad-gallery__item--pro:hover img {
        transform: none;
    }
}

/* Artículo del blog (página interna) */
.blog-article-wrap {
    padding-top: 28px;
    padding-bottom: 56px;
    max-width: 720px;
}
.blog-article-back {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 22px;
    font-weight: 700;
    font-size: 0.92rem;
    color: var(--primary-blue);
    text-decoration: none;
}
.blog-article-back:hover {
    color: var(--accent-orange);
    text-decoration: underline;
}
.blog-article {
    background: var(--white);
    border-radius: 16px;
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 8px 28px rgba(0, 45, 114, 0.06);
    padding: 28px 26px 32px;
}
@media (min-width: 640px) {
    .blog-article {
        padding: 36px 40px 40px;
    }
}
.blog-article__meta {
    font-size: 0.88rem;
    color: rgba(0, 45, 114, 0.65);
    margin-bottom: 12px;
    font-weight: 600;
}
.blog-article__title {
    font-size: clamp(1.35rem, 3.5vw, 1.85rem);
    line-height: 1.25;
    color: var(--primary-blue);
    margin: 0 0 22px;
    font-weight: 800;
}
.blog-article__figure {
    margin: 0 0 24px;
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid rgba(0, 45, 114, 0.08);
}
.blog-article__figure img {
    display: block;
    width: 100%;
    height: auto;
    vertical-align: middle;
}
.blog-article__body {
    font-size: 1rem;
    line-height: 1.65;
    color: var(--text-dark);
}
.blog-article__body p {
    margin: 0 0 1em;
}
.blog-article__body h2 {
    font-size: 1.12rem;
    margin: 1.6em 0 0.65em;
    color: var(--primary-blue);
    font-weight: 800;
}
.blog-article__body h2:first-child {
    margin-top: 0;
}
.blog-article__body ul {
    margin: 0 0 1em;
    padding-left: 1.25em;
}
.blog-article__body li {
    margin-bottom: 0.45em;
}
.blog-article__body blockquote {
    margin: 1.25em 0;
    padding: 14px 18px;
    border-left: 4px solid var(--accent-orange);
    background: rgba(0, 45, 114, 0.04);
    border-radius: 0 10px 10px 0;
    font-style: italic;
    color: rgba(0, 45, 114, 0.85);
}

/* --- Página Libros (recursos) --- */
.libros-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 22px;
    padding-top: 28px;
    padding-bottom: 48px;
    max-width: 1100px;
}
.libro-card {
    background: var(--white);
    border-radius: 16px;
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 8px 28px rgba(0, 45, 114, 0.06);
    padding: 22px 20px 24px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    transition: box-shadow 0.25s ease, transform 0.25s ease;
}
.libro-card:hover {
    box-shadow: 0 14px 36px rgba(0, 45, 114, 0.1);
    transform: translateY(-2px);
}
.libro-card__thumb {
    width: 100%;
    max-width: 160px;
    aspect-ratio: 2 / 3;
    margin: 0 auto 18px;
    border-radius: 6px 10px 10px 6px;
    overflow: hidden;
    box-shadow: 0 8px 24px rgba(0, 45, 114, 0.18);
    border: 1px solid rgba(0, 45, 114, 0.12);
    background: linear-gradient(145deg, var(--light-blue) 0%, rgba(0, 45, 114, 0.08) 100%);
}
.libro-card__cover-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.libro-card__title {
    margin: 0 0 10px;
    font-size: 1.05rem;
    font-weight: 800;
    line-height: 1.3;
    color: var(--primary-blue);
    text-transform: none;
    letter-spacing: normal;
}
.libro-card__title-line {
    display: block;
}
.libro-card__title-line + .libro-card__title-line {
    margin-top: 2px;
}
.libro-card__author {
    margin: 0;
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--text-light);
    line-height: 1.4;
}
.libro-card__amazon {
    margin: 14px 0 0;
}
.libro-card__amazon-link {
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--accent-orange);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
}
.libro-card__amazon-link:hover {
    color: var(--primary-blue);
    text-decoration: underline;
}

/* --- Tutorial inscripciones (encima del footer) --- */
.tutorial-inscripciones-banner {
    background-color: var(--white);
    line-height: 0;
    padding-bottom: clamp(40px, 6vw, 72px);
}
.tutorial-inscripciones-link {
    display: block;
    width: 58vw;
    max-width: 100%;
    margin-left: auto;
    margin-right: auto;
    line-height: 0;
    border-radius: 6px;
    transition: opacity 0.2s ease;
}
.tutorial-inscripciones-link:hover {
    opacity: 0.92;
}
.tutorial-inscripciones-link:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: 4px;
}
.tutorial-inscripciones-img {
    display: block;
    width: 100%;
    height: auto;
}

/* --- Footer --- */
footer { background-color: var(--primary-blue); color: var(--white); padding: 80px 0 0 0; font-size: 0.8rem; }
.footer-grid {
    display: grid; grid-template-columns: 2fr repeat(3, 1fr); gap: 50px; margin-bottom: 50px;
}

.footer-logo-row {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 20px;
}
.footer-logo-img {
    display: block;
    max-width: 200px;
    width: auto;
    height: auto;
    max-height: 80px;
    margin: 0;
    object-fit: contain;
    flex-shrink: 0;
}

.footer-brand-lockup {
    display: inline-flex;
    align-items: center;
    gap: 0.4em;
    flex-wrap: nowrap;
}
.footer-adq {
    font-size: clamp(1.05rem, 1.35vw + 0.55rem, 1.5rem);
    font-weight: 800;
    color: var(--white);
    letter-spacing: 0.06em;
    line-height: 1;
}
.footer-brand-sep {
    font-size: clamp(1.05rem, 1.35vw + 0.55rem, 1.5rem);
    font-weight: 800;
    color: var(--white);
    line-height: 1;
    opacity: 0.92;
    user-select: none;
}
.logo-footer {
    font-size: clamp(1.05rem, 1.35vw + 0.55rem, 1.5rem);
    font-weight: 800;
    margin: 0;
    line-height: 1;
    white-space: nowrap;
    color: #ff5000;
    letter-spacing: -0.02em;
}
.footer-brand-lead {
    margin-bottom: 22px;
    font-size: 0.85rem;
    line-height: 1.55;
    opacity: 0.92;
}
.footer-brand-lead > p {
    margin: 0;
}
.footer-brand-tagline {
    opacity: 0.8;
    margin: 0 0 25px;
    line-height: 1.5;
}

.social-links { display: flex; gap: 18px; }
.social-links a {
    width: 48px;
    height: 48px;
    font-size: 1.25rem;
    background-color: rgba(255,255,255,0.1);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: var(--transition);
}
.social-links a:hover { background-color: var(--accent-orange); }

.footer-ssl-badge {
    margin-top: 22px;
    line-height: 0;
}
.footer-ssl-img {
    display: block;
    width: auto;
    max-width: 148px;
    height: auto;
    max-height: 106px;
    object-fit: contain;
    opacity: 0.95;
}

.footer-links h4, .footer-contact h4 { margin-bottom: 25px; font-size: 0.88rem; color: rgba(255,255,255,0.9); }

.footer-links ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
.footer-links ul li {
    position: relative;
    margin-bottom: 12px;
    padding-left: 1.15rem;
}
.footer-links ul li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    width: 7px;
    height: 7px;
    margin-top: -1px;
    border-radius: 50%;
    background: var(--accent-orange);
    transform: translateY(-50%) scale(1);
    transform-origin: center;
    box-shadow: 0 0 0 0 rgba(255, 80, 0, 0.45);
    animation: footer-bullet-glow 2.2s ease-in-out infinite;
}
.footer-links ul li:nth-child(1)::before { animation-delay: 0s; }
.footer-links ul li:nth-child(2)::before { animation-delay: 0.18s; }
.footer-links ul li:nth-child(3)::before { animation-delay: 0.36s; }
.footer-links ul li:nth-child(4)::before { animation-delay: 0.54s; }
.footer-links ul li:nth-child(5)::before { animation-delay: 0.72s; }
.footer-links ul li:nth-child(6)::before { animation-delay: 0.9s; }
.footer-links ul li:nth-child(7)::before { animation-delay: 1.08s; }
.footer-links ul li:nth-child(8)::before { animation-delay: 1.26s; }
.footer-links ul li:nth-child(9)::before { animation-delay: 1.44s; }
.footer-links ul li:nth-child(10)::before { animation-delay: 1.62s; }
.footer-links ul li:nth-child(11)::before { animation-delay: 1.8s; }
.footer-links ul li:nth-child(12)::before { animation-delay: 1.98s; }

.footer-links ul li:hover::before {
    animation: footer-bullet-hover 0.65s ease-in-out infinite;
    box-shadow: 0 0 14px 3px rgba(255, 80, 0, 0.55);
}

.footer-links ul li a { font-size: 0.92em; opacity: 0.7; transition: opacity 0.25s ease, color 0.25s ease, padding-left 0.25s ease; }
.footer-links ul li a:hover { opacity: 1; color: var(--accent-orange); padding-left: 5px; }
.footer-links ul li a[aria-current="page"] {
    opacity: 1;
    color: var(--accent-orange);
    font-weight: 700;
}

@keyframes footer-bullet-glow {
    0%, 100% {
        opacity: 0.55;
        transform: translateY(-50%) scale(1);
        box-shadow: 0 0 0 0 rgba(255, 80, 0, 0.2);
    }
    50% {
        opacity: 1;
        transform: translateY(-50%) scale(1.25);
        box-shadow: 0 0 10px 2px rgba(255, 80, 0, 0.4);
    }
}

@keyframes footer-bullet-hover {
    0%, 100% {
        transform: translateY(-50%) scale(1.35);
        opacity: 1;
    }
    50% {
        transform: translateY(-50%) scale(1.55);
        opacity: 0.92;
    }
}

@media (prefers-reduced-motion: reduce) {
    .footer-links ul li::before {
        animation: none;
        opacity: 0.9;
        transform: translateY(-50%) scale(1);
        box-shadow: none;
    }
    .footer-links ul li:hover::before {
        animation: none;
        transform: translateY(-50%) scale(1.2);
        box-shadow: 0 0 8px rgba(255, 80, 0, 0.4);
    }
}

.footer-contact p { display: flex; gap: 10px; margin-bottom: 15px; font-size: 0.92em; opacity: 0.7; align-items: flex-start; }
.footer-contact p i { color: var(--accent-orange); margin-top: 3px; }

.footer-bottom { background-color: rgba(0,0,0,0.2); padding: 20px 0; font-size: 0.72rem; }
.footer-bottom .container { display: flex; justify-content: space-between; opacity: 0.6; flex-wrap: wrap; gap: 10px; align-items: center; }

.footer-privacy-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    opacity: 1;
    transition: color 0.2s ease, opacity 0.2s ease;
}
.footer-privacy-link:hover {
    color: var(--accent-orange);
    opacity: 1;
}
.footer-privacy-icon {
    width: 18px;
    height: 18px;
    object-fit: contain;
    flex-shrink: 0;
    vertical-align: middle;
}

/* --- Botón volver arriba (encima del gadget WhatsApp) --- */
.scroll-top-btn {
    position: fixed;
    z-index: 10049;
    right: max(35px, calc(env(safe-area-inset-right, 0px) + 15px));
    bottom: max(120px, calc(env(safe-area-inset-bottom, 0px) + 22px + 76px + 12px + 10px));
    width: 48px;
    height: 48px;
    border-radius: 50%;
    border: 2px solid rgba(0, 45, 114, 0.2);
    background: var(--white);
    color: var(--primary-blue);
    box-shadow: 0 4px 16px rgba(0, 45, 114, 0.12);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.1rem;
    padding: 0;
    transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s, background 0.2s, color 0.2s, border-color 0.2s;
    -webkit-tap-highlight-color: transparent;
}
.scroll-top-btn:hover {
    background: var(--primary-blue);
    color: var(--white);
    border-color: var(--primary-blue);
    transform: translateY(-2px);
}
.scroll-top-btn:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: 3px;
}
.scroll-top-btn[hidden] {
    display: none !important;
}
body.gp-faq-open .scroll-top-btn {
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
}
@media (max-width: 768px) {
    .scroll-top-btn {
        bottom: max(114px, calc(env(safe-area-inset-bottom, 0px) + 22px + 70px + 12px + 10px));
        width: 44px;
        height: 44px;
        font-size: 1rem;
    }
}

/* --- Gadget flotante WhatsApp --- */
.wa-float {
    position: fixed;
    z-index: 10050;
    overflow: visible;
    right: max(20px, env(safe-area-inset-right, 0px));
    bottom: max(22px, env(safe-area-inset-bottom, 0px));
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0;
    width: 76px;
    height: 76px;
    border-radius: 50%;
    background: linear-gradient(145deg, var(--wa-green) 0%, #1ebe57 100%);
    color: var(--wa-icon);
    box-shadow:
        0 4px 14px rgba(37, 211, 102, 0.45),
        0 8px 28px rgba(18, 140, 126, 0.25);
    transition: transform 0.25s ease, box-shadow 0.25s ease, background 0.25s ease, opacity 0.2s ease;
    text-decoration: none;
    border: 3px solid rgba(255, 255, 255, 0.35);
    cursor: pointer;
    font: inherit;
    padding: 0;
    -webkit-tap-highlight-color: transparent;
}
.wa-float.wa-float--panel-open {
    opacity: 0.35;
    pointer-events: none;
    transform: scale(0.92);
}
.wa-float:hover {
    transform: scale(1.06);
    background: linear-gradient(145deg, var(--wa-green-hover) 0%, var(--wa-teal) 100%);
    box-shadow:
        0 6px 22px rgba(37, 211, 102, 0.55),
        0 12px 36px rgba(18, 140, 126, 0.3);
    color: var(--wa-icon);
}
.wa-float:focus-visible {
    outline: 3px solid var(--wa-teal);
    outline-offset: 4px;
}
.wa-float .fab {
    position: relative;
    z-index: 1;
    font-size: 2.85rem;
    line-height: 1;
    margin: 0;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.12));
}
.wa-float__pulse {
    position: absolute;
    z-index: 0;
    inset: -6px;
    border-radius: 50%;
    border: 2px solid var(--wa-green);
    opacity: 0.55;
    animation: wa-pulse 2.2s ease-out infinite;
    pointer-events: none;
}
@keyframes wa-pulse {
    0% { transform: scale(1); opacity: 0.55; }
    100% { transform: scale(1.35); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
    .wa-float__pulse { animation: none; opacity: 0; }
}
.wa-float__tooltip {
    position: absolute;
    z-index: 2;
    right: calc(100% + 14px);
    top: 50%;
    transform: translateY(-50%);
    white-space: nowrap;
    background: #075e54;
    color: #fff;
    font-family: var(--font-main);
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 10px 14px;
    border-radius: 10px;
    box-shadow: 0 4px 16px rgba(7, 94, 84, 0.35);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.2s ease, visibility 0.2s;
    pointer-events: none;
}
.wa-float__tooltip::after {
    content: "";
    position: absolute;
    left: 100%;
    top: 50%;
    transform: translateY(-50%);
    border: 8px solid transparent;
    border-left-color: #075e54;
}
.wa-float:hover .wa-float__tooltip,
.wa-float:focus-visible .wa-float__tooltip {
    opacity: 1;
    visibility: visible;
}
@media (max-width: 768px) {
    .wa-float {
        width: 70px;
        height: 70px;
    }
    .wa-float .fab {
        font-size: 2.5rem;
    }
    .wa-float__tooltip {
        display: none;
    }
}

/* --- Asistente FAQ (gadget) --- */
.visually-hidden,
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}

.faq-bot-backdrop {
    position: fixed;
    inset: 0;
    z-index: 10090;
    background: rgba(7, 94, 84, 0.28);
    backdrop-filter: blur(2px);
}
/* [hidden] debe ocultar aunque el panel use display:flex (si no, el cierre no “funciona”) */
.faq-bot-backdrop[hidden],
.faq-bot-panel[hidden] {
    display: none !important;
}

.faq-bot-panel {
    position: fixed;
    z-index: 10100;
    left: auto;
    right: max(16px, env(safe-area-inset-right, 0px));
    bottom: max(108px, calc(env(safe-area-inset-bottom, 0px) + 96px));
    width: min(420px, calc(100vw - 32px));
    max-height: min(640px, calc(100vh - 120px));
    display: flex;
    flex-direction: column;
    background: var(--white);
    border-radius: 18px;
    box-shadow: 0 16px 48px rgba(0, 45, 114, 0.22);
    border: 1px solid rgba(37, 211, 102, 0.25);
    overflow: hidden;
}

.faq-bot-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 16px;
    background: linear-gradient(135deg, #075e54 0%, #128c7e 45%, #075e54 100%);
    color: var(--white);
    border-bottom: 3px solid var(--wa-green);
}

.faq-bot-header-text {
    flex: 1;
    min-width: 0;
}

.faq-bot-title {
    font-size: 0.95rem;
    font-weight: 700;
    line-height: 1.3;
    text-transform: none;
    letter-spacing: 0;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.faq-bot-header-wa {
    font-size: 1.35rem;
    color: #b8f5c8;
    flex-shrink: 0;
}

.faq-bot-header-sub {
    margin: 6px 0 0;
    font-size: 0.72rem;
    font-weight: 600;
    opacity: 0.92;
    line-height: 1.35;
    text-transform: none;
    letter-spacing: 0.02em;
}

.faq-bot-close {
    flex-shrink: 0;
    width: 38px;
    height: 38px;
    border-radius: 10px;
    border: 1px solid rgba(255, 255, 255, 0.4);
    background: rgba(255, 255, 255, 0.15);
    color: var(--white);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: var(--transition);
    font-size: 1.1rem;
}
.faq-bot-close:hover {
    background: rgba(255, 255, 255, 0.22);
}

.faq-bot-body {
    padding: 16px 18px 18px;
    overflow-y: auto;
    flex: 1;
    min-height: 0;
}

.faq-bot-section-label {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--text-light);
    margin: 0 0 10px;
}

.faq-bot-ext {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 14px;
}

.faq-bot-ext-btn {
    padding: 8px 16px;
    border-radius: 999px;
    border: 2px solid var(--primary-blue);
    background: var(--white);
    color: var(--primary-blue);
    font-family: var(--font-main);
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    cursor: pointer;
    transition: var(--transition);
}
.faq-bot-ext-btn:hover {
    background: var(--light-blue);
}
.faq-bot-ext-btn.is-active {
    background: #e8f4f3;
    border-color: #128c7e;
    color: #075e54;
}

.faq-bot-intro {
    font-size: 0.82rem;
    line-height: 1.5;
    color: var(--text-dark);
    padding: 12px 14px;
    border-radius: 12px;
    border: 1px solid rgba(0, 45, 114, 0.25);
    background: #f3f7fb;
    margin-bottom: 14px;
}

.faq-bot-quick {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 12px;
}

.faq-bot-chip {
    padding: 9px 14px;
    border-radius: 999px;
    border: 1px solid rgba(0, 45, 114, 0.35);
    background: #eef4fa;
    color: var(--primary-blue);
    font-family: var(--font-main);
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.25;
    text-align: left;
    cursor: pointer;
    transition: var(--transition);
}
.faq-bot-chip:hover {
    border-color: var(--accent-orange);
    background: #fff8f5;
    color: var(--accent-orange);
}

.faq-bot-reply {
    font-size: 0.82rem;
    line-height: 1.55;
    color: var(--text-dark);
    padding: 12px 14px;
    border-radius: 12px;
    background: var(--light-blue);
    border: 1px solid rgba(0, 45, 114, 0.12);
    margin-bottom: 12px;
}
.faq-bot-reply strong {
    color: var(--primary-blue);
}

.faq-bot-input-label {
    display: block;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #075e54;
    margin-bottom: 8px;
}

.faq-bot-input {
    width: 100%;
    padding: 12px 14px;
    border-radius: 14px;
    border: 2px solid var(--wa-green);
    font-family: var(--font-main);
    font-size: 0.85rem;
    resize: vertical;
    min-height: 88px;
    margin-bottom: 12px;
    transition: var(--transition);
}
.faq-bot-input:focus {
    outline: none;
    border-color: var(--wa-teal);
    box-shadow: 0 0 0 3px rgba(37, 211, 102, 0.2);
}

.faq-bot-actions {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.faq-bot-btn {
    font-family: var(--font-main);
    font-weight: 700;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 12px 18px;
    border-radius: 999px;
    cursor: pointer;
    border: 2px solid transparent;
    transition: var(--transition);
}
.faq-bot-btn--outline {
    background: var(--white);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}
.faq-bot-btn--outline:hover {
    background: var(--light-blue);
}
.faq-bot-btn--send {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: var(--wa-green);
    border-color: var(--wa-green);
    color: var(--white);
}
.faq-bot-btn--send:hover {
    background: var(--wa-teal);
    border-color: var(--wa-teal);
}
.faq-bot-btn--send .fab {
    font-size: 1.15rem;
}

@media (max-width: 768px) {
    .faq-bot-panel {
        left: 12px;
        right: 12px;
        width: auto;
        bottom: max(100px, calc(env(safe-area-inset-bottom, 0px) + 82px));
        max-height: min(72vh, 520px);
    }
}

/* --- Responsive Media Queries --- */
@media (max-width: 992px) {
    .hero h1 { font-size: 2.8rem; line-height: 1.06; }
    .hero p {
        white-space: normal;
        max-width: 100%;
    }
    .info-modules { grid-template-columns: repeat(2, 1fr); }
    .footer-grid { grid-template-columns: 1fr 1fr; gap: 40px; }
}

@media (max-width: 768px) {
    .top-bar-left { display: none; }
    .menu-toggle {
        display: flex;
    }

    .navbar.container {
        flex-wrap: wrap;
        position: relative;
        padding-block: 10px;
        column-gap: 10px;
        row-gap: 0;
    }

    .navbar.container .nav-tools {
        margin-left: auto;
    }

    .nav-brand img {
        height: clamp(44px, 12vw, 58px);
        max-width: min(200px, 55vw);
    }

    .nav-links {
        display: none;
        order: 4;
        width: 100%;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        padding: 12px 0 20px;
        border-top: 1px solid #eee;
        margin-top: 12px;
    }
    .nav-links.active {
        display: flex;
        background: var(--white);
        border-radius: 0 0 16px 16px;
    }
    .nav-links > li {
        border-bottom: 1px solid rgba(0, 45, 114, 0.06);
    }
    .nav-links > li > a {
        display: flex;
        align-items: center;
        justify-content: flex-start;
        gap: 0.65em;
        width: 100%;
        padding: 14px 14px;
        font-size: 0.85rem;
        border-radius: 12px;
        margin: 2px 0;
    }
    .nav-links > li > a::after {
        display: none;
    }
    .nav-links > li > a:active {
        background: var(--light-blue);
    }
    .nav-dropdown-btn {
        display: flex;
        align-items: center;
        justify-content: flex-start;
        gap: 0.5em;
        width: 100%;
        padding: 14px 14px;
        font-size: 0.85rem;
        border-radius: 12px;
        margin: 2px 0;
    }
    .nav-dropdown-btn:active {
        background: var(--light-blue);
    }
    .nav-dropdown-btn .nav-chevron {
        margin-left: auto;
    }
    .nav-item.nav-dropdown {
        border-bottom: none;
        flex-direction: column;
        align-items: stretch;
    }
    .nav-dropdown-panel {
        position: static;
        opacity: 1;
        visibility: visible;
        transform: none;
        margin-top: 0;
        margin-bottom: 8px;
        margin-left: 8px;
        padding: 4px 0 8px;
        min-width: unset;
        box-shadow: none;
        border: none;
        border-left: 3px solid var(--light-blue);
        border-radius: 0;
        display: none;
    }
    .nav-dropdown.is-open .nav-dropdown-panel {
        display: block;
    }
    .nav-dropdown--mega .nav-mega-panel {
        left: auto;
        transform: none;
        max-width: none;
        min-width: 0;
    }
    .nav-mega-grid {
        grid-template-columns: 1fr;
        gap: 10px;
    }
    .nav-recursos-grid {
        grid-template-columns: 1fr;
        gap: 10px;
    }
    .nav-calendario-grid {
        grid-template-columns: 1fr;
        gap: 10px;
    }
    .nav-mega-card {
        flex-direction: row;
        align-items: center;
        gap: 14px;
        padding: 12px 14px;
    }
    .nav-mega-card:hover {
        transform: none;
    }
    .nav-mega-card__visual {
        width: 56px;
        height: 56px;
        flex-shrink: 0;
        font-size: 1.35rem;
    }
    .nav-mega-gallery {
        margin-top: 10px;
        white-space: normal;
        text-align: center;
        line-height: 1.35;
        font-size: clamp(0.8rem, 2.2vw + 0.5rem, 0.92rem);
        padding: 10px 16px;
    }

    .hero { height: 60vh; text-align: center; }
    .hero-content {
        display: flex;
        flex-direction: column;
        align-items: center;
        transform: translateY(clamp(72px, 18vw, 130px));
    }
    .hero h1 { font-size: 2.2rem; line-height: 1.08; margin-bottom: 8px; }
    .hero-btns { flex-direction: column; gap: 15px; }
    
    .info-modules { grid-template-columns: 1fr; margin-top: 30px; }
    .module-card { padding: 30px; }
    
    .section-header h2 { font-size: 2rem; }
    
    .footer-grid { grid-template-columns: 1fr; gap: 30px; text-align: center; }
    .footer-brand, .footer-contact { display: flex; flex-direction: column; align-items: center; }
    .footer-links { display: flex; flex-direction: column; align-items: center; }
    .footer-links ul { text-align: left; width: max-content; max-width: 100%; }
    .social-links, .footer-contact p { justify-content: center; }
    .footer-bottom .container { justify-content: center; }
}

/* --- Página Calendario (GP ADQ) --- */
.calendario-page .cal-main {
    padding-bottom: 88px;
}
.cal-hero {
    position: relative;
    padding: 56px 0 48px;
    overflow: hidden;
    color: var(--white);
}
.cal-hero__bg {
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, #002d72 0%, #0a3d8a 38%, #011e4a 100%);
    opacity: 1;
}
.cal-hero__bg::after {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 90% 55% at 100% 0%, rgba(255, 120, 40, 0.18), transparent 50%),
        radial-gradient(ellipse 60% 50% at 0% 100%, rgba(0, 200, 212, 0.12), transparent 45%),
        radial-gradient(ellipse 40% 35% at 70% 85%, rgba(255, 255, 255, 0.06), transparent 50%);
    pointer-events: none;
}
.cal-hero__inner {
    position: relative;
    z-index: 1;
    max-width: 40rem;
}
.cal-hero__kicker {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 0.75rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: rgba(255, 255, 255, 0.82);
    margin: 0 0 14px;
}
.cal-hero__title {
    font-size: clamp(2rem, 4.2vw, 2.85rem);
    margin: 0 0 18px;
    line-height: 1.08;
    text-transform: none;
    letter-spacing: -0.035em;
    color: var(--white);
    font-weight: 800;
}
.cal-hero__lead {
    margin: 0;
    font-size: clamp(0.98rem, 1.6vw, 1.08rem);
    line-height: 1.68;
    color: rgba(255, 255, 255, 0.92);
    font-weight: 500;
    max-width: 38em;
}
.cal-hero__lead a {
    color: #ffc9a3;
    font-weight: 700;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 4px;
}
.cal-hero__lead a:hover {
    color: var(--white);
}

.cal-wrap {
    margin-top: -36px;
    position: relative;
    z-index: 2;
}
.cal-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(272px, 340px);
    gap: 28px;
    align-items: start;
}
.cal-layout__aside {
    display: flex;
    flex-direction: column;
    gap: 22px;
    position: sticky;
    top: 96px;
}
.cal-card {
    background: var(--white);
    border-radius: 22px;
    border: 1px solid rgba(0, 45, 114, 0.09);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.85) inset,
        0 22px 48px rgba(0, 45, 114, 0.08),
        0 8px 20px rgba(0, 0, 0, 0.04);
    padding: 0;
    overflow: hidden;
}
/* Acento superior por tipo de tarjeta lateral */
.cal-card--aside.cal-card--collapsible {
    position: relative;
    padding: 0;
    overflow: hidden;
}
.cal-card--aside.cal-card--collapsible::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    border-radius: 22px 22px 0 0;
    pointer-events: none;
    z-index: 1;
}
.cal-card--upcoming::before {
    background: linear-gradient(90deg, #ff6b2c 0%, #ffa64d 100%);
}
.cal-card--legend::before {
    background: linear-gradient(90deg, rgba(0, 45, 114, 0.85) 0%, #00a8b5 100%);
}
.cal-card--detail::before {
    background: linear-gradient(90deg, #002d72 0%, #1e5cb3 55%, #3b7ddd 100%);
}
.cal-card--main {
    padding: 0;
}
.cal-card__mast {
    padding: 22px 24px 18px;
    border-bottom: 1px solid rgba(0, 45, 114, 0.07);
    background: linear-gradient(180deg, rgba(230, 240, 249, 0.45) 0%, rgba(255, 255, 255, 0) 100%);
}
.cal-card__eyebrow {
    margin: 0 0 6px;
    font-size: 0.68rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    color: var(--accent-orange);
}
.cal-card__mast-lead {
    margin: 0;
    font-size: 0.88rem;
    line-height: 1.5;
    color: var(--text-light);
    font-weight: 600;
    max-width: 42em;
}
.cal-card--aside {
    padding: 20px 22px 20px;
    border-radius: 18px;
}
.cal-card--legend:not(.cal-card--collapsible) {
    padding-bottom: 18px;
}
.cal-card--detail:not(.cal-card--collapsible) {
    padding-bottom: 22px;
}
.cal-aside__head {
    border-bottom: 1px solid rgba(0, 45, 114, 0.07);
    background: linear-gradient(180deg, rgba(248, 250, 252, 0.95) 0%, rgba(255, 255, 255, 0.5) 100%);
}
.cal-card--collapsible.is-collapsed .cal-aside__head {
    border-bottom-color: transparent;
    background: linear-gradient(180deg, rgba(248, 250, 252, 0.75) 0%, #fff 100%);
}
.cal-aside__trigger {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 18px 20px 16px;
    margin: 0;
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: var(--font-main);
    text-align: left;
    border-radius: 0;
    transition: background 0.22s ease;
}
.cal-aside__trigger:hover {
    background: rgba(255, 255, 255, 0.65);
}
.cal-aside__trigger:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: -3px;
}
.cal-aside__chev {
    flex-shrink: 0;
    width: 2.25rem;
    height: 2.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.85);
    border: 1px solid rgba(0, 45, 114, 0.1);
    color: var(--primary-blue);
    font-size: 0.75rem;
    box-shadow: 0 1px 3px rgba(0, 45, 114, 0.06);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), background 0.2s ease, color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}
.cal-aside__trigger:hover .cal-aside__chev {
    background: rgba(255, 80, 0, 0.1);
    border-color: rgba(255, 80, 0, 0.22);
    color: var(--accent-orange);
    box-shadow: 0 4px 12px rgba(255, 80, 0, 0.12);
}
.cal-card--collapsible.is-collapsed .cal-aside__chev {
    transform: rotate(-90deg);
}
.cal-aside__panel-wrap {
    display: grid;
    grid-template-rows: 1fr;
    transition: grid-template-rows 0.38s cubic-bezier(0.4, 0, 0.2, 1);
}
.cal-card--collapsible.is-collapsed .cal-aside__panel-wrap {
    grid-template-rows: 0fr;
}
.cal-aside__panel-inner {
    overflow: hidden;
    min-height: 0;
}
.cal-aside__panel-inner--padded {
    padding: 8px 18px 20px;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.4) 0%, rgba(248, 250, 252, 0.35) 100%);
}
.cal-aside__panel-inner--legend {
    padding-bottom: 20px;
}
@media (prefers-reduced-motion: reduce) {
    .cal-aside__panel-wrap,
    .cal-aside__chev {
        transition: none;
    }
    .cal-card--collapsible.is-collapsed .cal-aside__panel-wrap {
        grid-template-rows: 0fr;
    }
}
.cal-card__toolbar {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 18px 22px 16px;
    flex-wrap: wrap;
    border-bottom: 1px solid rgba(0, 45, 114, 0.06);
}
.cal-card__nav {
    display: flex;
    gap: 8px;
}
.cal-nav-btn {
    width: 44px;
    height: 44px;
    border-radius: 14px;
    border: 1px solid rgba(0, 45, 114, 0.12);
    background: linear-gradient(180deg, #fff 0%, #f8fafc 100%);
    color: var(--primary-blue);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, transform 0.15s ease;
}
.cal-nav-btn:hover {
    border-color: rgba(255, 80, 0, 0.45);
    color: var(--accent-orange);
    box-shadow: 0 6px 18px rgba(0, 45, 114, 0.08);
}
.cal-nav-btn:active {
    transform: scale(0.97);
}
.cal-card__month {
    flex: 1;
    min-width: 0;
    text-align: center;
    font-size: clamp(1.15rem, 2.5vw, 1.35rem);
    font-weight: 800;
    text-transform: capitalize;
    color: var(--primary-blue);
    margin: 0;
    letter-spacing: -0.025em;
    line-height: 1.2;
}
.cal-today-btn {
    padding: 11px 20px;
    border-radius: 999px;
    border: none;
    background: linear-gradient(180deg, #ff6a1a 0%, var(--accent-orange) 100%);
    color: var(--white);
    font-family: var(--font-main);
    font-weight: 800;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    cursor: pointer;
    transition: transform 0.15s ease, box-shadow 0.2s ease, filter 0.2s ease;
    box-shadow: 0 4px 14px rgba(255, 80, 0, 0.28);
}
.cal-today-btn:hover {
    filter: brightness(1.05);
    transform: translateY(-1px);
    box-shadow: 0 8px 22px rgba(255, 80, 0, 0.32);
}

.cal-grid-wrap {
    padding: 16px 18px 22px;
}
.cal-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 0;
    margin-bottom: 10px;
    padding: 10px 6px;
    border-radius: 14px;
    background: rgba(0, 45, 114, 0.04);
    border: 1px solid rgba(0, 45, 114, 0.06);
}
.cal-weekdays__d {
    text-align: center;
    font-size: 0.65rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: rgba(0, 45, 114, 0.55);
    padding: 4px 2px;
}

.cal-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 5px;
}
.cal-grid__cell {
    aspect-ratio: 1;
    min-height: 0;
    min-width: 0;
}

.cal-day {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: 44px;
    border-radius: 12px;
    border: 1px solid rgba(0, 45, 114, 0.07);
    background: #fbfcfe;
    color: var(--primary-blue);
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    padding: 7px 3px 5px;
    gap: 3px;
    font-family: var(--font-main);
    transition: background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, transform 0.15s ease;
}
.cal-day:hover {
    border-color: rgba(255, 80, 0, 0.28);
    background: #fff;
    box-shadow: 0 8px 22px rgba(0, 45, 114, 0.07);
}
.cal-day:focus-visible {
    outline: 3px solid var(--accent-orange);
    outline-offset: 2px;
}
.cal-day--weekend {
    background: rgba(230, 240, 249, 0.5);
}
.cal-day--has-events:not(.is-selected) {
    background: linear-gradient(180deg, #fff 0%, rgba(230, 240, 249, 0.65) 100%);
}
.cal-day--today:not(.is-selected) {
    border-color: rgba(255, 80, 0, 0.55);
    box-shadow: 0 0 0 1px rgba(255, 80, 0, 0.25);
    font-weight: 800;
}
.cal-day.is-selected {
    background: linear-gradient(145deg, #003d8f 0%, var(--primary-blue) 100%);
    color: var(--white);
    border-color: rgba(0, 0, 0, 0.08);
    box-shadow: 0 12px 32px rgba(0, 45, 114, 0.35);
    transform: translateY(-1px);
}
.cal-day.is-selected .cal-day__num {
    color: var(--white);
}
.cal-day.is-selected .cal-dot {
    box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.35);
}
.cal-day.is-selected .cal-day__badge {
    background: rgba(255, 255, 255, 0.22);
    color: var(--white);
    border-color: rgba(255, 255, 255, 0.35);
}
.cal-day--outside {
    visibility: hidden;
    pointer-events: none;
}
.cal-day__num {
    font-size: 0.88rem;
    font-weight: 700;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}
.cal-day__dots {
    display: flex;
    gap: 3px;
    flex-wrap: wrap;
    justify-content: center;
    max-width: 100%;
    min-height: 7px;
    align-items: center;
}
.cal-day__badge {
    position: absolute;
    bottom: 4px;
    right: 4px;
    min-width: 1.15rem;
    height: 1.15rem;
    padding: 0 4px;
    border-radius: 999px;
    font-size: 0.58rem;
    font-weight: 800;
    line-height: 1.15rem;
    text-align: center;
    background: rgba(0, 45, 114, 0.1);
    color: var(--primary-blue);
    border: 1px solid rgba(0, 45, 114, 0.12);
    font-variant-numeric: tabular-nums;
}
.cal-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    flex-shrink: 0;
}
.cal-dot--temporada {
    background: var(--accent-orange);
}
.cal-dot--gp {
    background: var(--primary-blue);
}
.cal-dot--iglesia {
    background: #7c3aed;
}

.cal-aside__title {
    font-size: 0.78rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--primary-blue);
    margin: 0;
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1;
    min-width: 0;
    line-height: 1.35;
}
.cal-aside__trigger .cal-aside__title {
    border: none;
    padding: 0;
}
.cal-aside__title i {
    color: var(--accent-orange);
    font-size: 1.05rem;
    opacity: 0.95;
    flex-shrink: 0;
    width: 2.25rem;
    height: 2.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.9);
    border: 1px solid rgba(0, 45, 114, 0.08);
    box-shadow: 0 2px 8px rgba(0, 45, 114, 0.06);
}

.cal-upcoming {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.cal-upcoming__empty {
    font-size: 0.87rem;
    color: var(--text-light);
    line-height: 1.55;
    padding: 8px 4px 4px;
}
.cal-upcoming__item {
    border-bottom: none;
}
.cal-upcoming__more-li {
    list-style: none;
    margin: 4px 0 0;
    padding: 0;
    border-bottom: none;
}
.cal-upcoming__more-btn {
    width: 100%;
    padding: 11px 16px;
    border-radius: 14px;
    border: 1px dashed rgba(0, 45, 114, 0.2);
    background: rgba(255, 255, 255, 0.8);
    color: var(--primary-blue);
    font-family: var(--font-main);
    font-size: 0.78rem;
    font-weight: 800;
    cursor: pointer;
    transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}
.cal-upcoming__more-btn:hover {
    background: rgba(255, 80, 0, 0.07);
    border-color: rgba(255, 80, 0, 0.35);
    color: #9a3412;
    box-shadow: 0 4px 14px rgba(255, 80, 0, 0.1);
}
.cal-upcoming__more-btn--ghost {
    border-style: solid;
    border-color: rgba(0, 45, 114, 0.12);
    background: rgba(255, 255, 255, 0.6);
    font-weight: 700;
}
.cal-upcoming__more-btn--ghost:hover {
    background: rgba(0, 45, 114, 0.05);
    border-color: rgba(0, 45, 114, 0.2);
    color: var(--primary-blue);
    box-shadow: none;
}
.cal-upcoming__btn {
    width: 100%;
    display: flex;
    gap: 12px;
    align-items: flex-start;
    text-align: left;
    padding: 12px 14px;
    border: 1px solid rgba(0, 45, 114, 0.08);
    background: rgba(255, 255, 255, 0.92);
    cursor: pointer;
    border-radius: 16px;
    font-family: var(--font-main);
    transition: background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, transform 0.15s ease;
    box-shadow: 0 2px 8px rgba(0, 45, 114, 0.04);
}
.cal-upcoming__btn:hover {
    background: #fff;
    border-color: rgba(255, 80, 0, 0.28);
    box-shadow: 0 8px 22px rgba(0, 45, 114, 0.08);
    transform: translateY(-1px);
}
.cal-upcoming__btn:active {
    transform: translateY(0);
}
.cal-upcoming__date {
    flex-shrink: 0;
    font-size: 0.68rem;
    font-weight: 800;
    color: var(--primary-blue);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    min-width: 3.5rem;
    line-height: 1.3;
    padding: 8px 10px;
    font-variant-numeric: tabular-nums;
    text-align: center;
    border-radius: 12px;
    background: linear-gradient(145deg, rgba(230, 240, 249, 0.95) 0%, rgba(255, 255, 255, 0.9) 100%);
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
}
.cal-upcoming__text {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
    padding-top: 2px;
}
.cal-upcoming__title {
    font-size: 0.86rem;
    font-weight: 700;
    color: var(--text-dark);
    line-height: 1.42;
    letter-spacing: -0.01em;
}
.cal-upcoming__cat {
    display: inline-block;
    align-self: flex-start;
    font-size: 0.58rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--text-light);
    padding: 3px 8px;
    border-radius: 999px;
    background: rgba(0, 45, 114, 0.06);
}
.cal-upcoming__cat--temporada {
    color: #9a3412;
    background: rgba(255, 80, 0, 0.12);
}
.cal-upcoming__cat--gp {
    color: #1d4ed8;
    background: rgba(29, 78, 216, 0.1);
}
.cal-upcoming__cat--iglesia {
    color: #5b21b6;
    background: rgba(124, 58, 237, 0.12);
}

.cal-legend {
    list-style: none;
    margin: 0;
    padding: 0;
    font-size: 0.82rem;
    color: var(--text-dark);
    line-height: 1.5;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.cal-legend li {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 0;
    padding: 11px 14px;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.75);
    border: 1px solid rgba(0, 45, 114, 0.08);
    box-shadow: 0 2px 6px rgba(0, 45, 114, 0.04);
    font-weight: 600;
}
.cal-legend li:last-child {
    margin-bottom: 0;
}
.cal-legend .cal-dot {
    width: 10px;
    height: 10px;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.95), 0 0 0 3px rgba(0, 45, 114, 0.12);
}

.cal-selected__modal-hint {
    font-size: 0.82rem;
    color: var(--text-light);
    margin: -8px 0 14px;
    line-height: 1.5;
    padding: 10px 12px;
    border-radius: 12px;
    background: rgba(0, 45, 114, 0.05);
    border: 1px solid rgba(0, 45, 114, 0.08);
}
.cal-selected__modal-hint strong {
    color: var(--text-dark);
    font-weight: 700;
}
.cal-selected__date {
    font-size: 1.02rem;
    font-weight: 800;
    color: var(--primary-blue);
    margin: 0 0 16px;
    text-transform: capitalize;
    letter-spacing: -0.025em;
    line-height: 1.35;
    padding: 12px 16px;
    border-radius: 16px;
    background: linear-gradient(135deg, rgba(230, 240, 249, 0.65) 0%, #fff 55%);
    border: 1px solid rgba(0, 45, 114, 0.1);
    box-shadow: 0 4px 16px rgba(0, 45, 114, 0.06);
}
.cal-selected__empty {
    font-size: 0.87rem;
    color: var(--text-light);
    margin: 0;
    line-height: 1.55;
    padding: 12px 14px;
    border-radius: 14px;
    background: rgba(0, 45, 114, 0.04);
    border: 1px dashed rgba(0, 45, 114, 0.12);
}
.cal-selected__body {
    display: flex;
    flex-direction: column;
    gap: 12px;
    max-height: min(58vh, 520px);
    overflow-y: auto;
    padding: 4px 4px 6px 0;
    scrollbar-gutter: stable;
}
.cal-selected__body::-webkit-scrollbar {
    width: 6px;
}
.cal-selected__body::-webkit-scrollbar-thumb {
    background: rgba(0, 45, 114, 0.22);
    border-radius: 6px;
}
.cal-event-card {
    padding: 15px 16px 14px;
    border-radius: 16px;
    border: 1px solid rgba(0, 45, 114, 0.09);
    background: linear-gradient(180deg, #fff 0%, #fbfcfe 100%);
    box-shadow: 0 4px 14px rgba(0, 45, 114, 0.06);
    transition: box-shadow 0.22s ease, transform 0.18s ease, border-color 0.2s ease;
}
.cal-event-card:hover {
    box-shadow: 0 10px 28px rgba(0, 45, 114, 0.1);
    border-color: rgba(0, 45, 114, 0.14);
    transform: translateY(-2px);
}
@media (prefers-reduced-motion: reduce) {
    .cal-event-card {
        transition: none;
    }
    .cal-event-card:hover {
        transform: none;
    }
}
.cal-event-card--temporada {
    border-left: 4px solid var(--accent-orange);
}
.cal-event-card--gp {
    border-left: 4px solid #1e5cb3;
}
.cal-event-card--iglesia {
    border-left: 4px solid #7c3aed;
}
.cal-event-card__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    margin: 0 0 8px;
    font-size: 0.65rem;
}
.cal-event-card__badge {
    display: inline-block;
    padding: 5px 10px;
    border-radius: 999px;
    background: linear-gradient(180deg, rgba(0, 45, 114, 0.08) 0%, rgba(0, 45, 114, 0.05) 100%);
    border: 1px solid rgba(0, 45, 114, 0.08);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--primary-blue);
}
.cal-event-card__time {
    color: var(--text-dark);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    font-size: 0.78rem;
    padding: 2px 0;
}
.cal-event-card__time i {
    margin-right: 5px;
    color: var(--accent-orange);
    font-size: 0.85em;
}
.cal-event-card__title {
    font-size: 0.98rem;
    font-weight: 800;
    margin: 0 0 8px;
    text-transform: none;
    letter-spacing: -0.02em;
    color: var(--text-dark);
    line-height: 1.3;
}
.cal-event-card__body {
    font-size: 0.83rem;
    color: var(--text-light);
    margin: 0;
    line-height: 1.55;
}
.cal-event-card--compact {
    padding: 12px 14px;
}
.cal-event-card--compact .cal-event-card__title {
    margin-bottom: 0;
}

.cal-day-modal-backdrop {
    position: fixed;
    inset: 0;
    z-index: 1200;
    background: rgba(15, 23, 42, 0.45);
    backdrop-filter: blur(3px);
}
.cal-day-modal-backdrop[hidden] {
    display: none !important;
}
.cal-day-modal {
    position: fixed;
    inset: 0;
    z-index: 1210;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px 16px;
    pointer-events: none;
}
.cal-day-modal[hidden] {
    display: none !important;
}
.cal-day-modal__shell {
    pointer-events: auto;
    width: min(560px, 100%);
    max-height: min(88vh, 720px);
    display: flex;
    flex-direction: column;
    background: #fff;
    border-radius: 20px;
    box-shadow: 0 24px 60px rgba(0, 45, 114, 0.18), 0 0 0 1px rgba(0, 45, 114, 0.08);
    overflow: hidden;
}
.cal-day-modal__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding: 18px 18px 12px;
    border-bottom: 1px solid rgba(0, 45, 114, 0.08);
    background: linear-gradient(180deg, #fbfcfe 0%, #fff 100%);
}
.cal-day-modal__title {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 800;
    color: var(--primary-blue);
    text-transform: capitalize;
    line-height: 1.35;
    padding-right: 8px;
}
.cal-day-modal__close {
    flex-shrink: 0;
    width: 40px;
    height: 40px;
    border: none;
    border-radius: 12px;
    background: rgba(0, 45, 114, 0.06);
    color: var(--primary-blue);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s ease, transform 0.15s ease;
}
.cal-day-modal__close:hover {
    background: rgba(0, 45, 114, 0.12);
}
.cal-day-modal__close:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 2px;
}
.cal-day-modal__body {
    padding: 14px 18px 20px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 14px;
    scrollbar-gutter: stable;
}
.cal-day-modal__empty {
    margin: 0;
    font-size: 0.9rem;
    color: var(--text-light);
    text-align: center;
    padding: 24px 8px;
}
.cal-day-modal__event {
    padding: 14px 16px;
    border-radius: 16px;
    border: 1px solid rgba(0, 45, 114, 0.09);
    background: linear-gradient(180deg, #fff 0%, #fbfcfe 100%);
    box-shadow: 0 4px 14px rgba(0, 45, 114, 0.05);
}
.cal-day-modal__event--temporada {
    border-left: 4px solid var(--accent-orange);
}
.cal-day-modal__event--gp {
    border-left: 4px solid #1e5cb3;
}
.cal-day-modal__event--iglesia {
    border-left: 4px solid #7c3aed;
}
.cal-day-modal__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    margin: 0 0 10px;
    font-size: 0.65rem;
}
.cal-day-modal__badge {
    display: inline-block;
    padding: 5px 10px;
    border-radius: 999px;
    background: linear-gradient(180deg, rgba(0, 45, 114, 0.08) 0%, rgba(0, 45, 114, 0.05) 100%);
    border: 1px solid rgba(0, 45, 114, 0.08);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--primary-blue);
}
.cal-day-modal__time {
    color: var(--text-dark);
    font-weight: 700;
    font-size: 0.78rem;
    font-variant-numeric: tabular-nums;
}
.cal-day-modal__time i {
    margin-right: 5px;
    color: var(--accent-orange);
}
.cal-day-modal__event-title {
    margin: 0 0 8px;
    font-size: 1rem;
    font-weight: 800;
    color: var(--text-dark);
    line-height: 1.3;
}
.cal-day-modal__body {
    margin: 0 0 10px;
    font-size: 0.84rem;
    color: var(--text-light);
    line-height: 1.55;
}
.cal-day-modal__details {
    margin: 0 0 12px;
    border-radius: 12px;
    border: 1px solid rgba(0, 45, 114, 0.1);
    background: rgba(0, 45, 114, 0.03);
    overflow: hidden;
}
.cal-day-modal__details summary {
    cursor: pointer;
    padding: 10px 14px;
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--primary-blue);
    list-style: none;
}
.cal-day-modal__details summary::-webkit-details-marker {
    display: none;
}
.cal-day-modal__details summary::after {
    content: '\f078';
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    float: right;
    font-size: 0.72rem;
    opacity: 0.65;
    transition: transform 0.2s ease;
}
.cal-day-modal__details[open] summary::after {
    transform: rotate(180deg);
}
.cal-day-modal__details-body {
    padding: 0 14px 12px;
    font-size: 0.83rem;
    color: var(--text-dark);
    line-height: 1.55;
}
.cal-day-modal__details-body p {
    margin: 0;
}
.cal-day-modal__cta {
    margin: 0;
}
.cal-day-modal__wa {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    padding: 12px 16px;
    border-radius: 14px;
    font-weight: 800;
    font-size: 0.88rem;
    text-decoration: none;
    color: #fff;
    background: linear-gradient(135deg, #25d366 0%, #128c7e 100%);
    box-shadow: 0 4px 14px rgba(18, 140, 126, 0.35);
    transition: transform 0.15s ease, box-shadow 0.2s ease;
}
.cal-day-modal__wa:hover {
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 8px 22px rgba(18, 140, 126, 0.4);
}
.cal-day-modal__wa:focus-visible {
    outline: 2px solid var(--accent-orange);
    outline-offset: 2px;
}

@media (max-width: 1024px) {
    .cal-layout {
        grid-template-columns: 1fr;
    }
    .cal-layout__aside {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 18px;
        position: static;
    }
    .cal-card--detail {
        grid-column: 1 / -1;
    }
    .cal-selected__body {
        max-height: 40vh;
    }
}
@media (max-width: 640px) {
    .cal-layout__aside {
        grid-template-columns: 1fr;
    }
    .cal-grid-wrap {
        padding: 12px 10px 18px;
    }
    .cal-grid__cell {
        aspect-ratio: auto;
        min-height: 42px;
    }
    .cal-day {
        min-height: 42px;
        padding: 6px 2px 4px;
        border-radius: 10px;
    }
    .cal-day__num {
        font-size: 0.8rem;
    }
    .cal-day__badge {
        bottom: 2px;
        right: 2px;
        transform: scale(0.92);
    }
    .cal-card__month {
        order: 3;
        flex-basis: 100%;
        margin-top: 6px;
    }
    .cal-card__toolbar {
        justify-content: space-between;
    }
    .cal-card__mast {
        padding: 18px 18px 14px;
    }
}

@media print {
    .calendario-page .cal-day-modal,
    .calendario-page .cal-day-modal-backdrop {
        display: none !important;
    }
    .calendario-page .top-bar,
    .calendario-page .social-gadget,
    .calendario-page .wa-float,
    .calendario-page .scroll-top-btn,
    .calendario-page .faq-bot-backdrop,
    .calendario-page .faq-bot-panel {
        display: none !important;
    }
    .cal-hero {
        padding: 24px 0;
        color: #000;
        break-inside: avoid;
    }
    .cal-hero__bg {
        display: none;
    }
    .cal-hero__title,
    .cal-hero__lead,
    .cal-hero__kicker {
        color: #000;
    }
    .cal-card {
        box-shadow: none;
        border: 1px solid #ccc;
    }
    .cal-card--collapsible.is-collapsed .cal-aside__panel-wrap {
        grid-template-rows: 1fr !important;
    }
    .cal-aside__chev {
        display: none !important;
    }
    .cal-aside__trigger {
        padding-bottom: 8px;
        pointer-events: none;
    }
}