/* ============================================================
   COLEGIO SAN PABLO
   HEADER / NAVBAR
=============================================================== */


/* ------------------------------------------------------------
   VARIABLES INSTITUCIONALES
--------------------------------------------------------------- */

:root {

    --sp-verde: #006b2d;
    --sp-verde-dark: #004d25;
    --sp-verde-light: #2e9b45;

    --sp-amarillo: #f4c400;
    --sp-amarillo-light: #ffd83d;

    --sp-white: #ffffff;
    --sp-black: #172018;

    --sp-gray: #f5f7f5;
    --sp-gray-border: #e7ebe7;

    --sp-transition: 0.3s ease;

}


/* ------------------------------------------------------------
   RESET BÁSICO
--------------------------------------------------------------- */

* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

body {
    margin: 0;
    font-family: "Poppins", sans-serif;
    color: var(--sp-black);
}


/* ------------------------------------------------------------
   TOPBAR
--------------------------------------------------------------- */

.topbar {
    background: var(--sp-verde-dark);
    color: var(--sp-white);
    font-size: 12px;
    position: relative;
    z-index: 1050;
}

.topbar-content {
    min-height: 36px;

    display: flex;
    align-items: center;
    justify-content: space-between;

    gap: 20px;
}

.topbar-info,
.topbar-links {
    display: flex;
    align-items: center;
    gap: 20px;
}

.topbar-info span,
.topbar-info a,
.topbar-links a {
    color: rgba(255,255,255,0.92);
    text-decoration: none;

    display: inline-flex;
    align-items: center;

    gap: 6px;

    transition: var(--sp-transition);
}

.topbar-info a:hover,
.topbar-links a:hover {
    color: var(--sp-amarillo);
}

.topbar i {
    color: var(--sp-amarillo);
    font-size: 12px;
}


/* ------------------------------------------------------------
   REDES SOCIALES
--------------------------------------------------------------- */

.topbar-social {
    display: flex;
    align-items: center;
    gap: 8px;

    padding-left: 10px;

    border-left: 1px solid rgba(255,255,255,0.25);
}

.topbar-social a {

    width: 27px;
    height: 27px;

    border: 1px solid rgba(255,255,255,0.35);
    border-radius: 50%;

    display: flex;
    align-items: center;
    justify-content: center;

    transition: var(--sp-transition);
}

.topbar-social a:hover {

    background: var(--sp-amarillo);
    border-color: var(--sp-amarillo);



    transform: translateY(-2px);
}
.topbar-social a:hover i{
        color: var(--sp-verde-dark) !important;
}

/* ------------------------------------------------------------
   NAVBAR
--------------------------------------------------------------- */

.navbar-main {

    background: var(--sp-white);

    min-height: 86px;

    padding: 10px 0;

    position: relative;

    transition:
        min-height 0.3s ease,
        box-shadow 0.3s ease,
        background 0.3s ease;
}


/* ------------------------------------------------------------
   HEADER STICKY
--------------------------------------------------------------- */

.site-header {

    position: relative;
    z-index: 1040;

}

.site-header.scrolled .navbar-main {

    min-height: 70px;

    box-shadow:
        0 8px 30px rgba(0,0,0,0.08);

}

.site-header.scrolled .logo-main {

    max-height: 55px;

}


/* ------------------------------------------------------------
   LOGO
--------------------------------------------------------------- */

.logo-main {

    width: auto;
    max-height: 68px;

    display: block;

    transition:
        max-height 0.3s ease,
        transform 0.3s ease;
}

.logo-main:hover {

    transform: scale(1.02);

}


/* ------------------------------------------------------------
   NAVIGATION
--------------------------------------------------------------- */

.navbar-nav {

    gap: 3px;

}

.nav-link {

    position: relative;

    color: var(--sp-black) !important;

    font-size: 13px;
    font-weight: 600;

    text-transform: uppercase;

    padding: 30px 13px !important;

    transition: var(--sp-transition);

}


/* Línea inferior */

.nav-link::after {

    content: "";

    position: absolute;

    left: 13px;
    right: 13px;
    bottom: 17px;

    height: 3px;

    background: var(--sp-verde);

    border-radius: 10px;

    transform: scaleX(0);

    transform-origin: center;

    transition: transform 0.3s ease;

}


.nav-link:hover,
.nav-link.active {

    color: var(--sp-verde) !important;

}


.nav-link:hover::after,
.nav-link.active::after {

    transform: scaleX(1);

}


/* ------------------------------------------------------------
   DROPDOWN
--------------------------------------------------------------- */

.dropdown-menu {

    min-width: 240px;

    margin-top: 0 !important;

    padding: 10px;

    border: 0;

    border-radius: 12px;

    box-shadow:
        0 15px 45px rgba(0,0,0,0.12);

    animation: dropdownIn 0.2s ease;

}

@keyframes dropdownIn {

    from {
        opacity: 0;
        transform: translateY(8px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }

}


.dropdown-item {

    display: flex;

    align-items: center;

    gap: 12px;

    padding: 11px 12px;

    border-radius: 8px;

    color: var(--sp-black);

    font-size: 13px;
    font-weight: 500;

    transition: var(--sp-transition);

}


.dropdown-item i {

    color: var(--sp-verde);

    font-size: 16px;

}


.dropdown-item:hover {

    background: #eef8f0;

    color: var(--sp-verde);

    transform: translateX(3px);

}


/* ------------------------------------------------------------
   BOTÓN ADMISIÓN
--------------------------------------------------------------- */

.btn-admission {

    min-width: 145px;

    height: 48px;

    padding: 0 20px;

    background: var(--sp-verde);

    color: var(--sp-white);

    border: 2px solid var(--sp-amarillo);

    border-radius: 10px;

    text-decoration: none;

    display: inline-flex;

    align-items: center;
    justify-content: center;

    gap: 10px;

    font-size: 12px;
    font-weight: 700;

    text-transform: uppercase;

    transition:
        background 0.3s ease,
        transform 0.3s ease,
        box-shadow 0.3s ease;

}


.btn-admission i {

    color: var(--sp-amarillo);

    transition: transform 0.3s ease;

}


.btn-admission:hover {

    background: var(--sp-verde-dark);

    color: var(--sp-white);

    transform: translateY(-2px);

    box-shadow:
        0 10px 25px rgba(0,107,45,0.25);

}


.btn-admission:hover i {

    transform: translate(3px,-3px);

}


/* ------------------------------------------------------------
   MENÚ HAMBURGUESA
--------------------------------------------------------------- */

.navbar-toggler {

    width: 46px;
    height: 46px;

    border: 1px solid var(--sp-gray-border);

    border-radius: 10px;

    display: flex;

    align-items: center;
    justify-content: center;

}


.navbar-toggler:focus {

    box-shadow:
        0 0 0 3px rgba(0,107,45,0.15);

}


/* ------------------------------------------------------------
   OFFCANVAS MÓVIL
--------------------------------------------------------------- */

.mobile-menu {

    width: min(90%, 390px) !important;

    border: 0;

}


.mobile-menu .offcanvas-header {

    padding: 20px;

    border-bottom: 1px solid var(--sp-gray-border);

}


.mobile-logo {

    width: auto;

    max-height: 58px;

}


.mobile-menu .btn-close {

    box-shadow: none;

}


/* ------------------------------------------------------------
   TÍTULO MENÚ MÓVIL
--------------------------------------------------------------- */

.mobile-menu-title {

    color: var(--sp-verde);

    font-size: 11px;

    font-weight: 700;

    letter-spacing: 1px;

    margin-bottom: 15px;

}


/* ------------------------------------------------------------
   NAV MÓVIL
--------------------------------------------------------------- */

.mobile-nav {

    display: flex;

    flex-direction: column;

    gap: 5px;

}


.mobile-nav-link {

    width: 100%;

    min-height: 48px;

    padding: 10px 12px;

    background: transparent;

    border: 0;

    border-radius: 10px;

    color: var(--sp-black);

    text-decoration: none;

    display: flex;

    align-items: center;

    justify-content: space-between;

    font-size: 14px;

    font-weight: 600;

    text-align: left;

    transition: var(--sp-transition);

}


.mobile-nav-link span {

    display: flex;

    align-items: center;

    gap: 12px;

}


.mobile-nav-link i {

    color: var(--sp-verde);

    font-size: 18px;

}


.mobile-nav-link:hover,
.mobile-nav-link.active {

    background: #eef8f0;

    color: var(--sp-verde);

}


/* ------------------------------------------------------------
   SUBMENÚ MÓVIL
--------------------------------------------------------------- */

.mobile-submenu {

    padding: 5px 0 5px 45px;

}


.mobile-submenu a {

    display: block;

    padding: 9px 10px;

    color: #555;

    text-decoration: none;

    font-size: 13px;

    border-left: 2px solid #dfe9df;

    transition: var(--sp-transition);

}


.mobile-submenu a:hover {

    color: var(--sp-verde);

    border-color: var(--sp-amarillo);

    padding-left: 15px;

}


/* ------------------------------------------------------------
   CTA MÓVIL
--------------------------------------------------------------- */

.mobile-admission {

    margin-top: 30px;

    padding: 20px;

    background: var(--sp-verde);

    border-radius: 14px;

    color: white;

}


.mobile-admission span {

    display: block;

    font-size: 13px;

    font-weight: 600;

    line-height: 1.5;

    margin-bottom: 15px;

}


.mobile-admission a {

    display: flex;

    justify-content: space-between;
    align-items: center;

    padding: 11px 14px;

    background: var(--sp-amarillo);

    color: var(--sp-verde-dark);

    border-radius: 8px;

    text-decoration: none;

    font-size: 12px;

    font-weight: 700;

    text-transform: uppercase;

}


/* ------------------------------------------------------------
   REDES MÓVIL
--------------------------------------------------------------- */

.mobile-social {

    margin-top: 30px;

    padding-top: 20px;

    border-top: 1px solid var(--sp-gray-border);

}


.mobile-social > span {

    display: block;

    margin-bottom: 12px;

    font-size: 12px;

    color: #777;

}


.mobile-social > div {

    display: flex;

    gap: 10px;

}


.mobile-social a {

    width: 40px;
    height: 40px;

    border-radius: 50%;

    background: var(--sp-gray);

    color: var(--sp-verde);

    display: flex;

    align-items: center;
    justify-content: center;

    text-decoration: none;

    transition: var(--sp-transition);

}


.mobile-social a:hover {

    background: var(--sp-verde);

    color: var(--sp-white);

    transform: translateY(-2px);

}


/* ------------------------------------------------------------
   RESPONSIVE
--------------------------------------------------------------- */

@media (max-width: 1199.98px) {

    .nav-link {

        padding-left: 9px !important;
        padding-right: 9px !important;

        font-size: 12px;

    }

    .nav-link::after {

        left: 9px;
        right: 9px;

    }

    .btn-admission {

        min-width: 130px;

        padding: 0 14px;

    }

}


@media (max-width: 991.98px) {

    .topbar {

        display: none;

    }

    .navbar-main {

        min-height: 74px;

        padding: 8px 0;

    }

    .logo-main {

        max-height: 58px;

    }

}


@media (max-width: 575.98px) {

    .navbar-main {

        min-height: 68px;

    }

    .logo-main {

        max-height: 52px;

    }

    .navbar-toggler {

        width: 42px;
        height: 42px;

    }

}



/* ============================================================
   HERO
=============================================================== */

.hero {

    position: relative;

    min-height: 690px;

    display: flex;

    align-items: center;

    overflow: hidden;

    background: var(--sp-verde-dark);

}


/* ------------------------------------------------------------
   FONDO
--------------------------------------------------------------- */

.hero-background {

    position: absolute;

    inset: 0;

    overflow: hidden;

}


.hero-image {

    width: 100%;
    height: 100%;

    object-fit: cover;

    object-position: center;

    transform: scale(1.04);

    animation: heroImageZoom 12s ease-out forwards;

}


@keyframes heroImageZoom {

    from {
        transform: scale(1.08);
    }

    to {
        transform: scale(1);
    }

}


/* ------------------------------------------------------------
   OVERLAY
--------------------------------------------------------------- */

.hero-overlay {

    position: absolute;

    inset: 0;

    background:
        linear-gradient(
            90deg,
            rgba(0, 38, 18, 0.94) 0%,
            rgba(0, 58, 28, 0.82) 34%,
            rgba(0, 60, 30, 0.38) 65%,
            rgba(0, 0, 0, 0.08) 100%
        );

}


/* ------------------------------------------------------------
   CONTENEDOR
--------------------------------------------------------------- */

.hero-container {

    position: relative;

    z-index: 3;

    padding-top: 65px;
    padding-bottom: 160px;

}


/* ------------------------------------------------------------
   CONTENIDO
--------------------------------------------------------------- */

.hero-content {

    max-width: 720px;

}


/* ------------------------------------------------------------
   EYEBROW
--------------------------------------------------------------- */

.hero-eyebrow {

    display: flex;

    align-items: center;

    gap: 12px;

    margin-bottom: 18px;

    color: var(--sp-amarillo);

    font-size: 13px;

    font-weight: 700;

    letter-spacing: 1.5px;

    text-transform: uppercase;

    opacity: 0;

    animation: heroFadeUp 0.8s 0.15s ease forwards;

}


.hero-eyebrow-line {

    width: 38px;

    height: 3px;

    border-radius: 5px;

    background: var(--sp-amarillo);

}


/* ------------------------------------------------------------
   TÍTULO
--------------------------------------------------------------- */

.hero-title {

    margin: 0;

    color: var(--sp-white);

    font-size: clamp(
        3rem,
        5vw,
        5rem
    );

    font-weight: 700;

    line-height: 1.04;

    letter-spacing: -2px;

    opacity: 0;

    animation:
        heroFadeUp
        0.9s
        0.3s
        ease
        forwards;

}


.hero-title span {

    display: inline-block;

}


.hero-title strong {

    display: inline-block;

    color: var(--sp-amarillo);

    font-family: Georgia, serif;

    font-style: italic;

    font-weight: 500;

    margin-left: 5px;

}


/* ------------------------------------------------------------
   DESCRIPCIÓN
--------------------------------------------------------------- */

.hero-description {

    max-width: 570px;

    margin: 25px 0 30px;

    color: rgba(255,255,255,0.92);

    font-size: 17px;

    line-height: 1.7;

    font-weight: 400;

    opacity: 0;

    animation:
        heroFadeUp
        0.8s
        0.5s
        ease
        forwards;

}


/* ------------------------------------------------------------
   BOTONES
--------------------------------------------------------------- */

.hero-actions {

    display: flex;

    flex-wrap: wrap;

    gap: 14px;

    opacity: 0;

    animation:
        heroFadeUp
        0.8s
        0.65s
        ease
        forwards;

}


.btn-hero {

    min-height: 52px;

    padding: 0 24px;

    border-radius: 9px;

    display: inline-flex;

    align-items: center;
    justify-content: center;

    gap: 12px;

    text-decoration: none;

    font-size: 12px;

    font-weight: 700;

    text-transform: uppercase;

    transition:
        transform 0.3s ease,
        background 0.3s ease,
        color 0.3s ease,
        box-shadow 0.3s ease;

}


.btn-hero i {

    transition:
        transform 0.3s ease;

}


/* Principal */

.btn-hero-primary {

    background: var(--sp-verde);

    border: 2px solid var(--sp-verde);

    color: var(--sp-white);

}


.btn-hero-primary:hover {

    background: var(--sp-verde-light);

    color: var(--sp-white);

    transform: translateY(-3px);

    box-shadow:
        0 12px 30px rgba(0,0,0,0.25);

}


.btn-hero-primary:hover i {

    transform: translateX(4px);

}


/* Secundario */

.btn-hero-secondary {

    background: rgba(255,255,255,0.08);

    border: 2px solid rgba(255,255,255,0.8);

    color: var(--sp-white);

    backdrop-filter: blur(5px);

}


.btn-hero-secondary:hover {

    background: var(--sp-white);

    color: var(--sp-verde-dark);

    transform: translateY(-3px);

}


.btn-hero-secondary:hover i {

    transform: translate(3px,-3px);

}


/* ------------------------------------------------------------
   TRUST
--------------------------------------------------------------- */

.hero-trust {

    display: flex;

    align-items: center;

    gap: 8px;

    margin-top: 24px;

    color: rgba(255,255,255,0.78);

    font-size: 12px;

    opacity: 0;

    animation:
        heroFadeUp
        0.8s
        0.8s
        ease
        forwards;

}


.hero-trust i {

    color: var(--sp-amarillo);

}


/* ------------------------------------------------------------
   NIVELES
--------------------------------------------------------------- */

.hero-levels {

    position: absolute;

    z-index: 5;

    left: 50%;

    bottom: 35px;

    transform: translateX(-50%);

    width: min(
        calc(100% - 40px),
        1060px
    );

    min-height: 110px;

    padding: 18px 28px;

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 25px;

    background: rgba(255,255,255,0.98);

    border-radius: 17px;

    box-shadow:
        0 20px 50px rgba(0,0,0,0.20);

    animation:
        heroLevelsIn
        0.9s
        0.8s
        ease
        both;

}


@keyframes heroLevelsIn {

    from {

        opacity: 0;

        transform:
            translate(-50%, 40px);

    }

    to {

        opacity: 1;

        transform:
            translate(-50%, 0);

    }

}


/* ------------------------------------------------------------
   NIVEL INDIVIDUAL
--------------------------------------------------------------- */

.hero-level {

    flex: 1;

    display: flex;

    align-items: center;

    gap: 15px;

}


.hero-level-icon {

    flex: 0 0 52px;

    width: 52px;
    height: 52px;

    border-radius: 14px;

    display: flex;

    align-items: center;
    justify-content: center;

    background: #edf7ef;

    color: var(--sp-verde);

    font-size: 25px;

}


.hero-level-title {

    display: block;

    color: var(--sp-verde-dark);

    font-size: 16px;

    font-weight: 700;

    margin-bottom: 3px;

}


.hero-level-description {

    display: block;

    color: #666;

    font-size: 11px;

    line-height: 1.4;

}


.hero-level-separator {

    width: 1px;

    height: 55px;

    background: #dfe5df;

}


/* ------------------------------------------------------------
   DECORACIÓN
--------------------------------------------------------------- */

.hero-bottom-decoration {

    position: absolute;

    z-index: 2;

    bottom: 0;

    left: 0;

    width: 100%;

    height: 70px;

    overflow: hidden;

}


.hero-green-shape {

    position: absolute;

    left: -3%;

    bottom: -48px;

    width: 106%;

    height: 95px;

    background: var(--sp-verde);

    border-radius: 50% 50% 0 0 / 100% 100% 0 0;

}


.hero-yellow-shape {

    position: absolute;

    left: -3%;

    bottom: -38px;

    width: 106%;

    height: 70px;

    background: var(--sp-amarillo);

    border-radius: 50% 50% 0 0 / 100% 100% 0 0;

}


/* ------------------------------------------------------------
   SCROLL
--------------------------------------------------------------- */

.hero-scroll {

    position: absolute;

    z-index: 6;

    right: 28px;

    bottom: 125px;

    display: flex;

    flex-direction: column;

    align-items: center;

    gap: 7px;

    color: rgba(255,255,255,0.8);

    text-decoration: none;

    font-size: 10px;

    text-transform: uppercase;

    letter-spacing: 1px;

    writing-mode: vertical-rl;

}


.hero-scroll i {

    color: var(--sp-amarillo);

    animation:
        scrollBounce
        1.6s
        infinite;

}


@keyframes scrollBounce {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(7px);
    }

}


/* ------------------------------------------------------------
   ANIMACIÓN GENERAL
--------------------------------------------------------------- */

@keyframes heroFadeUp {

    from {

        opacity: 0;

        transform:
            translateY(25px);

    }

    to {

        opacity: 1;

        transform:
            translateY(0);

    }

}


/* ------------------------------------------------------------
   TABLET
--------------------------------------------------------------- */

@media (max-width: 991.98px) {

    .hero {

        min-height: 680px;

    }


    .hero-overlay {

        background:
            linear-gradient(
                90deg,
                rgba(0, 45, 21, 0.94),
                rgba(0, 45, 21, 0.55)
            );

    }


    .hero-container {

        padding-top: 50px;

        padding-bottom: 170px;

    }


    .hero-title {

        font-size: clamp(
            2.8rem,
            7vw,
            4rem
        );

    }


    .hero-levels {

        width: calc(100% - 30px);

        gap: 15px;

        padding: 15px 18px;

    }


    .hero-level-description {

        font-size: 10px;

    }


    .hero-level-icon {

        flex-basis: 45px;

        width: 45px;
        height: 45px;

        font-size: 21px;

    }


    .hero-scroll {

        display: none;

    }

}


/* ------------------------------------------------------------
   MÓVIL
--------------------------------------------------------------- */

@media (max-width: 767.98px) {

    .hero {

        min-height: 760px;

        align-items: flex-start;

    }


    .hero-image {

        object-position: 65% center;

    }


    .hero-overlay {

        background:
            linear-gradient(
                180deg,
                rgba(0, 45, 21, 0.88) 0%,
                rgba(0, 45, 21, 0.75) 50%,
                rgba(0, 45, 21, 0.92) 100%
            );

    }


    .hero-container {

        padding-top: 80px;

        padding-bottom: 260px;

    }


    .hero-content {

        max-width: 100%;

    }


    .hero-eyebrow {

        font-size: 10px;

    }


    .hero-title {

        font-size: clamp(
            2.45rem,
            11vw,
            3.5rem
        );

        letter-spacing: -1.5px;

    }


    .hero-title strong {

        display: block;

        margin-left: 0;

        margin-top: 4px;

    }


    .hero-description {

        font-size: 14px;

        line-height: 1.6;

        margin-top: 20px;

    }


    .hero-actions {

        flex-direction: column;

        align-items: stretch;

    }


    .btn-hero {

        width: 100%;

        min-height: 50px;

    }


    .hero-trust {

        font-size: 10px;

    }


    /* Niveles */

    .hero-levels {

        bottom: 25px;

        width: calc(100% - 30px);

        padding: 8px 15px;

        min-height: auto;

        flex-direction: column;

        align-items: stretch;

        gap: 0;

        border-radius: 15px;

    }


    .hero-level {

        padding: 10px 5px;

        gap: 12px;

    }


    .hero-level-icon {

        width: 42px;
        height: 42px;

        flex-basis: 42px;

        border-radius: 10px;

        font-size: 19px;

    }


    .hero-level-title {

        font-size: 13px;

    }


    .hero-level-description {

        font-size: 10px;

    }


    .hero-level-separator {

        width: 100%;

        height: 1px;

    }


    .hero-bottom-decoration {

        height: 35px;

    }

}


/* ============================================================
   SECCIÓN — NIVELES EDUCATIVOS
============================================================ */

.niveles-section {
    position: relative;
    padding: 110px 0;
    background: var(--sp-gray);
    overflow: hidden;
}


/* ------------------------------------------------------------
   ENCABEZADO
--------------------------------------------------------------- */

.section-heading {
    max-width: 760px;
    margin: 0 auto 60px;
    text-align: center;
}

.section-label {
    display: inline-block;
    margin-bottom: 15px;

    font-size: 0.78rem;
    font-weight: 800;
    letter-spacing: 2px;

    color: var(--sp-verde);
}

.section-heading h2 {
    margin: 0 0 18px;

    font-size: clamp(2rem, 4vw, 3.2rem);
    font-weight: 800;
    line-height: 1.15;

    color: var(--sp-black);
}

.section-heading h2 span {
    color: var(--sp-verde);
}

.section-heading p {
    max-width: 650px;
    margin: 0 auto;

    font-size: 1rem;
    line-height: 1.8;

    color: #667066;
}


/* ------------------------------------------------------------
   TARJETAS
--------------------------------------------------------------- */

.nivel-card {
    position: relative;

    height: 100%;

    background: var(--sp-white);

    border: 1px solid var(--sp-gray-border);
    border-radius: 22px;

    overflow: hidden;

    box-shadow:
        0 10px 30px rgba(0, 77, 37, 0.07);

    transition:
        transform 0.4s ease,
        box-shadow 0.4s ease,
        border-color 0.4s ease;
}


/* Hover */

.nivel-card:hover {

    transform: translateY(-10px);

    border-color: rgba(0, 107, 45, 0.20);

    box-shadow:
        0 20px 45px rgba(0, 77, 37, 0.14);
}


/* ------------------------------------------------------------
   IMAGEN
--------------------------------------------------------------- */

.nivel-image {

    position: relative;

    height: 250px;

    overflow: hidden;
}

.nivel-image::after {

    content: "";

    position: absolute;

    inset: 0;

    background:
        linear-gradient(
            to top,
            rgba(0, 77, 37, 0.35),
            transparent 45%
        );

    pointer-events: none;
}


.nivel-image img {

    width: 100%;
    height: 100%;

    object-fit: cover;

    transition:
        transform 0.6s ease;
}


.nivel-card:hover .nivel-image img {

    transform: scale(1.07);
}


/* ------------------------------------------------------------
   NÚMERO
--------------------------------------------------------------- */

.nivel-badge {

    position: absolute;

    z-index: 2;

    left: 20px;
    bottom: 20px;

    width: 50px;
    height: 50px;

    display: flex;

    align-items: center;
    justify-content: center;

    border-radius: 50%;

    background: var(--sp-amarillo);

    color: var(--sp-black);

    font-size: 0.85rem;
    font-weight: 900;

    box-shadow:
        0 8px 20px rgba(0, 0, 0, 0.18);

    transition:
        transform 0.3s ease,
        background 0.3s ease;
}


.nivel-card:hover .nivel-badge {

    transform: rotate(8deg) scale(1.08);

    background: var(--sp-amarillo-light);
}


/* ------------------------------------------------------------
   CONTENIDO
--------------------------------------------------------------- */

.nivel-content {

    padding: 30px;
}


.nivel-category {

    display: block;

    margin-bottom: 8px;

    font-size: 0.72rem;
    font-weight: 800;

    letter-spacing: 1.5px;

    color: var(--sp-verde-light);
}


.nivel-content h3 {

    margin-bottom: 14px;

    font-size: 1.65rem;
    font-weight: 800;

    color: var(--sp-verde-dark);
}


.nivel-content p {

    min-height: 92px;

    margin-bottom: 22px;

    font-size: 0.95rem;
    line-height: 1.75;

    color: #667066;
}


/* ------------------------------------------------------------
   BOTÓN / LINK
--------------------------------------------------------------- */

.nivel-link {

    display: inline-flex;

    align-items: center;

    gap: 10px;

    padding: 9px 0;

    text-decoration: none;

    font-size: 0.9rem;
    font-weight: 800;

    color: var(--sp-verde);

    transition:
        gap var(--sp-transition),
        color var(--sp-transition);
}


.nivel-link span {

    font-size: 1.25rem;

    transition:
        transform var(--sp-transition);
}


.nivel-link:hover {

    gap: 14px;

    color: var(--sp-verde-dark);
}


.nivel-link:hover span {

    transform: translateX(5px);
}


/* ------------------------------------------------------------
   ANIMACIÓN REVEAL
--------------------------------------------------------------- */

.reveal {

    opacity: 0;

    transform: translateY(45px);

    transition:
        opacity 0.8s ease,
        transform 0.8s ease;
}


.reveal.active {

    opacity: 1;

    transform: translateY(0);
}


.reveal-delay-1 {

    transition-delay: 0.15s;
}


.reveal-delay-2 {

    transition-delay: 0.30s;
}


/* ------------------------------------------------------------
   RESPONSIVE
--------------------------------------------------------------- */

@media (max-width: 991px) {

    .niveles-section {

        padding: 90px 0;
    }

    .nivel-image {

        height: 230px;
    }

}


@media (max-width: 767px) {

    .niveles-section {

        padding: 75px 0;
    }

    .section-heading {

        margin-bottom: 40px;
    }

    .section-heading h2 {

        font-size: 2rem;
    }

    .section-heading p {

        font-size: 0.95rem;
    }

    .nivel-image {

        height: 220px;
    }

    .nivel-content {

        padding: 25px;
    }

    .nivel-content p {

        min-height: auto;
    }

}


/* ============================================================
   SECCIÓN — ¿POR QUÉ ELEGIRNOS?
============================================================ */

.fortalezas-section {

    position: relative;

    padding: 110px 0;

    background: var(--sp-verde-dark);

    overflow: hidden;
}


/* ------------------------------------------------------------
   DECORACIÓN DE FONDO
--------------------------------------------------------------- */

.fortalezas-section::before {

    content: "";

    position: absolute;

    width: 450px;
    height: 450px;

    top: -250px;
    right: -150px;

    border-radius: 50%;

    background: rgba(46, 155, 69, 0.18);
}


.fortalezas-section::after {

    content: "";

    position: absolute;

    width: 300px;
    height: 300px;

    bottom: -180px;
    left: -100px;

    border-radius: 50%;

    background: rgba(244, 196, 0, 0.10);
}


/* ------------------------------------------------------------
   LABEL
--------------------------------------------------------------- */

.section-label-light {

    color: var(--sp-amarillo);
}


/* ------------------------------------------------------------
   TÍTULO
--------------------------------------------------------------- */

.fortalezas-title {

    max-width: 500px;

    margin: 15px 0 22px;

    font-size: clamp(2.1rem, 4vw, 3.3rem);

    font-weight: 800;

    line-height: 1.15;

    color: var(--sp-white);
}


.fortalezas-title span {

    color: var(--sp-amarillo);
}


/* ------------------------------------------------------------
   DESCRIPCIÓN
--------------------------------------------------------------- */

.fortalezas-description {

    max-width: 500px;

    margin-bottom: 32px;

    font-size: 1rem;

    line-height: 1.8;

    color: rgba(255, 255, 255, 0.78);
}


/* ------------------------------------------------------------
   BOTÓN
--------------------------------------------------------------- */

.btn-sp {

    display: inline-flex;

    align-items: center;

    gap: 12px;

    padding: 13px 22px;

    border-radius: 50px;

    background: var(--sp-amarillo);

    color: var(--sp-black);

    text-decoration: none;

    font-size: 0.9rem;

    font-weight: 800;

    transition:
        transform var(--sp-transition),
        background var(--sp-transition),
        gap var(--sp-transition);
}


.btn-sp span {

    font-size: 1.2rem;

    transition:
        transform var(--sp-transition);
}


.btn-sp:hover {

    transform: translateY(-3px);

    background: var(--sp-amarillo-light);

    color: var(--sp-black);

    gap: 16px;
}


.btn-sp:hover span {

    transform: translateX(4px);
}


/* ------------------------------------------------------------
   TARJETAS
--------------------------------------------------------------- */

.fortaleza-card {

    position: relative;

    height: 100%;

    display: flex;

    gap: 18px;

    padding: 25px;

    border-radius: 18px;

    background: rgba(255, 255, 255, 0.08);

    border: 1px solid rgba(255, 255, 255, 0.10);

    backdrop-filter: blur(8px);

    transition:
        transform 0.35s ease,
        background 0.35s ease,
        border-color 0.35s ease;
}


.fortaleza-card:hover {

    transform: translateY(-6px);

    background: rgba(255, 255, 255, 0.12);

    border-color: rgba(244, 196, 0, 0.35);
}


/* ------------------------------------------------------------
   ICONO
--------------------------------------------------------------- */

.fortaleza-icon {

    flex-shrink: 0;

    width: 50px;
    height: 50px;

    display: flex;

    align-items: center;
    justify-content: center;

    border-radius: 14px;

    background: var(--sp-amarillo);

    color: var(--sp-verde-dark);

    font-size: 1.35rem;

    transition:
        transform 0.35s ease;
}


.fortaleza-card:hover .fortaleza-icon {

    transform: rotate(-5deg) scale(1.08);
}


/* ------------------------------------------------------------
   NÚMERO
--------------------------------------------------------------- */

.fortaleza-number {

    display: block;

    margin-bottom: 3px;

    font-size: 0.68rem;

    font-weight: 800;

    letter-spacing: 1px;

    color: var(--sp-amarillo);
}


/* ------------------------------------------------------------
   TÍTULO
--------------------------------------------------------------- */

.fortaleza-card h3 {

    margin: 0 0 8px;

    font-size: 1.05rem;

    font-weight: 800;

    color: var(--sp-white);
}


/* ------------------------------------------------------------
   TEXTO
--------------------------------------------------------------- */

.fortaleza-card p {

    margin: 0;

    font-size: 0.82rem;

    line-height: 1.65;

    color: rgba(255, 255, 255, 0.68);
}


/* ------------------------------------------------------------
   ANIMACIÓN
--------------------------------------------------------------- */

.reveal-delay-3 {

    transition-delay: 0.45s;
}


/* ------------------------------------------------------------
   RESPONSIVE
--------------------------------------------------------------- */

@media (max-width: 991px) {

    .fortalezas-section {

        padding: 90px 0;
    }

    .fortalezas-title,
    .fortalezas-description {

        max-width: 100%;
    }

}


@media (max-width: 767px) {

    .fortalezas-section {

        padding: 75px 0;
    }

    .fortaleza-card {

        padding: 22px;
    }

}


/* ============================================================
   SECCIÓN — NUESTRA INFRAESTRUCTURA
============================================================ */

.infra-section {

    position: relative;

    padding: 110px 0;

    background: var(--sp-white);

    overflow: hidden;
}


/* ------------------------------------------------------------
   GALERÍA
--------------------------------------------------------------- */

.infra-gallery {

    display: grid;

    grid-template-columns:
        1.4fr
        0.8fr
        0.8fr;

    grid-template-rows:
        260px
        260px;

    gap: 18px;

    margin-top: 50px;
}


/* ------------------------------------------------------------
   ITEMS
--------------------------------------------------------------- */

.infra-item {

    position: relative;

    overflow: hidden;

    border-radius: 20px;

    background: var(--sp-gray);

    cursor: pointer;
}


/* Imagen */

.infra-item img {

    width: 100%;
    height: 100%;

    display: block;

    object-fit: cover;

    transition:
        transform 0.7s ease;
}


/* Zoom */

.infra-item:hover img {

    transform: scale(1.08);
}


/* ------------------------------------------------------------
   DISTRIBUCIÓN
--------------------------------------------------------------- */

/* Principal */

.infra-main {

    grid-column: 1;

    grid-row: 1 / 3;
}


/* Ciencias */

.infra-item-2 {

    grid-column: 2;

    grid-row: 1;
}


/* Polideportivo */

.infra-item-3 {

    grid-column: 3;

    grid-row: 1;
}


/* Sala */

.infra-item-4 {

    grid-column: 2;

    grid-row: 2;
}


/* Capilla */

.infra-item-5 {

    grid-column: 3;

    grid-row: 2;
}


/* ------------------------------------------------------------
   OVERLAY
--------------------------------------------------------------- */

.infra-overlay {

    position: absolute;

    inset: 0;

    display: flex;

    flex-direction: column;

    justify-content: flex-end;

    padding: 25px;

    background:
        linear-gradient(
            to top,
            rgba(0, 77, 37, 0.90) 0%,
            rgba(0, 77, 37, 0.45) 45%,
            rgba(0, 77, 37, 0) 75%
        );

    color: var(--sp-white);

    opacity: 0.95;

    transition:
        background 0.4s ease;
}


.infra-item:hover .infra-overlay {

    background:
        linear-gradient(
            to top,
            rgba(0, 77, 37, 0.95),
            rgba(0, 77, 37, 0.30)
        );
}


/* Número */

.infra-overlay > span {

    margin-bottom: 7px;

    font-size: 0.72rem;

    font-weight: 900;

    letter-spacing: 1px;

    color: var(--sp-amarillo);
}


/* Título */

.infra-overlay h3 {

    margin: 0 0 6px;

    font-size: 1.15rem;

    font-weight: 800;

    color: var(--sp-white);
}


/* Texto */

.infra-overlay p {

    max-width: 420px;

    margin: 0;

    font-size: 0.82rem;

    line-height: 1.5;

    color: rgba(255, 255, 255, 0.78);
}


/* ------------------------------------------------------------
   FOOTER
--------------------------------------------------------------- */

.infra-footer {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 30px;

    margin-top: 35px;

    padding-top: 25px;

    border-top: 1px solid var(--sp-gray-border);
}


.infra-footer p {

    margin: 0;

    font-size: 0.9rem;

    color: #667066;
}


/* ------------------------------------------------------------
   BOTÓN
--------------------------------------------------------------- */

.infra-button {

    display: inline-flex;

    align-items: center;

    gap: 10px;

    flex-shrink: 0;

    text-decoration: none;

    font-size: 0.9rem;

    font-weight: 800;

    color: var(--sp-verde);

    transition:
        gap var(--sp-transition),
        color var(--sp-transition);
}


.infra-button span {

    font-size: 1.2rem;

    transition:
        transform var(--sp-transition);
}


.infra-button:hover {

    gap: 15px;

    color: var(--sp-verde-dark);
}


.infra-button:hover span {

    transform: translateX(4px);
}


/* ------------------------------------------------------------
   RESPONSIVE TABLET
--------------------------------------------------------------- */

@media (max-width: 991px) {

    .infra-section {

        padding: 90px 0;
    }


    .infra-gallery {

        grid-template-columns:
            1fr
            1fr;

        grid-template-rows:
            300px
            220px
            220px;

    }


    .infra-main {

        grid-column: 1 / 3;

        grid-row: 1;
    }


    .infra-item-2 {

        grid-column: 1;

        grid-row: 2;
    }


    .infra-item-3 {

        grid-column: 2;

        grid-row: 2;
    }


    .infra-item-4 {

        grid-column: 1;

        grid-row: 3;
    }


    .infra-item-5 {

        grid-column: 2;

        grid-row: 3;
    }

}


/* ------------------------------------------------------------
   RESPONSIVE MÓVIL
--------------------------------------------------------------- */

@media (max-width: 575px) {

    .infra-section {

        padding: 75px 0;
    }


    .infra-gallery {

        display: flex;

        flex-direction: column;

        gap: 15px;

        margin-top: 35px;
    }


    .infra-item {

        height: 260px;
    }


    .infra-main {

        height: 300px;
    }


    .infra-footer {

        flex-direction: column;

        align-items: flex-start;

        gap: 18px;
    }

}



/* ============================================================
   LIGHTBOX
============================================================ */

.infra-lightbox {

    position: fixed;

    z-index: 9999;

    inset: 0;

    display: flex;

    align-items: center;

    justify-content: center;

    padding: 25px;

    background: rgba(0, 40, 20, 0.92);

    opacity: 0;

    visibility: hidden;

    transition:
        opacity 0.3s ease,
        visibility 0.3s ease;
}


.infra-lightbox.active {

    opacity: 1;

    visibility: visible;
}


.infra-lightbox-content {

    position: relative;

    max-width: 1000px;

    width: 100%;

    transform: scale(0.9);

    transition:
        transform 0.3s ease;
}


.infra-lightbox.active
.infra-lightbox-content {

    transform: scale(1);
}


.infra-lightbox-content img {

    width: 100%;

    max-height: 75vh;

    object-fit: contain;

    display: block;

    border-radius: 15px;
}


.infra-lightbox-content h3 {

    margin: 15px 0 0;

    text-align: center;

    font-size: 1.1rem;

    color: var(--sp-white);
}


.infra-lightbox-close {

    position: absolute;

    z-index: 2;

    top: -45px;

    right: 0;

    width: 38px;

    height: 38px;

    border: 0;

    border-radius: 50%;

    background: var(--sp-amarillo);

    color: var(--sp-black);

    font-size: 1.7rem;

    line-height: 1;

    cursor: pointer;

    transition:
        transform var(--sp-transition);
}


.infra-lightbox-close:hover {

    transform: rotate(90deg);

    background: var(--sp-amarillo-light);
}


@media (max-width: 575px) {

    .infra-lightbox {

        padding: 15px;
    }

    .infra-lightbox-close {

        top: -45px;

        right: 0;
    }

}


/* ============================================================
   SECCIÓN — VIDA ESCOLAR
============================================================ */

.vida-section {

    position: relative;

    padding: 110px 0;

    background: var(--sp-gray);

    overflow: hidden;
}


/* ------------------------------------------------------------
   TARJETA PRINCIPAL
--------------------------------------------------------------- */

.noticia-card {

    height: 100%;

    background: var(--sp-white);

    border: 1px solid var(--sp-gray-border);

    border-radius: 22px;

    overflow: hidden;

    box-shadow:
        0 10px 30px rgba(0, 77, 37, 0.06);

    transition:
        transform 0.4s ease,
        box-shadow 0.4s ease;
}


.noticia-card:hover {

    transform: translateY(-7px);

    box-shadow:
        0 20px 45px rgba(0, 77, 37, 0.12);
}


/* ------------------------------------------------------------
   IMAGEN PRINCIPAL
--------------------------------------------------------------- */

.noticia-image {

    position: relative;

    height: 330px;

    overflow: hidden;
}


.noticia-image img {

    width: 100%;
    height: 100%;

    object-fit: cover;

    transition:
        transform 0.7s ease;
}


.noticia-card:hover
.noticia-image img {

    transform: scale(1.06);
}


/* Categoría */

.noticia-categoria {

    position: absolute;

    top: 20px;
    left: 20px;

    padding: 7px 13px;

    border-radius: 50px;

    background: var(--sp-amarillo);

    color: var(--sp-black);

    font-size: 0.68rem;

    font-weight: 900;

    letter-spacing: 0.8px;
}


/* ------------------------------------------------------------
   CONTENIDO
--------------------------------------------------------------- */

.noticia-content {

    padding: 28px;
}


/* Meta */

.noticia-meta {

    display: flex;

    align-items: center;

    gap: 20px;

    margin-bottom: 14px;

    font-size: 0.75rem;

    color: #7b857b;
}


.noticia-meta span {

    display: flex;

    align-items: center;

    gap: 6px;
}


.noticia-meta i {

    color: var(--sp-verde);
}


/* Título */

.noticia-content h3 {

    margin-bottom: 13px;

    font-size: 1.45rem;

    line-height: 1.35;

    font-weight: 800;

    color: var(--sp-verde-dark);
}


/* Texto */

.noticia-content p {

    margin-bottom: 22px;

    font-size: 0.9rem;

    line-height: 1.75;

    color: #667066;
}


/* ------------------------------------------------------------
   LINK
--------------------------------------------------------------- */

.noticia-link {

    display: inline-flex;

    align-items: center;

    gap: 10px;

    text-decoration: none;

    font-size: 0.88rem;

    font-weight: 800;

    color: var(--sp-verde);

    transition:
        gap var(--sp-transition);
}


.noticia-link span {

    font-size: 1.2rem;

    transition:
        transform var(--sp-transition);
}


.noticia-link:hover {

    gap: 15px;

    color: var(--sp-verde-dark);
}


.noticia-link:hover span {

    transform: translateX(4px);
}


/* ------------------------------------------------------------
   LISTA DE NOTICIAS
--------------------------------------------------------------- */

.noticias-list {

    display: flex;

    flex-direction: column;

    gap: 18px;

    height: 100%;
}


/* ------------------------------------------------------------
   NOTICIA HORIZONTAL
--------------------------------------------------------------- */

.noticia-horizontal {

    display: flex;

    min-height: 170px;

    background: var(--sp-white);

    border: 1px solid var(--sp-gray-border);

    border-radius: 18px;

    overflow: hidden;

    transition:
        transform 0.35s ease,
        box-shadow 0.35s ease;
}


.noticia-horizontal:hover {

    transform: translateX(6px);

    box-shadow:
        0 10px 25px rgba(0, 77, 37, 0.08);
}


/* Imagen */

.noticia-horizontal-image {

    flex: 0 0 190px;

    overflow: hidden;
}


.noticia-horizontal-image img {

    width: 100%;
    height: 100%;

    object-fit: cover;

    transition:
        transform 0.6s ease;
}


.noticia-horizontal:hover
.noticia-horizontal-image img {

    transform: scale(1.08);
}


/* Contenido */

.noticia-horizontal-content {

    display: flex;

    flex-direction: column;

    justify-content: center;

    padding: 20px 22px;
}


.noticia-small-category {

    margin-bottom: 6px;

    font-size: 0.65rem;

    font-weight: 900;

    letter-spacing: 1px;

    color: var(--sp-verde-light);
}


.noticia-horizontal-content h3 {

    margin: 0 0 8px;

    font-size: 0.98rem;

    line-height: 1.4;

    font-weight: 800;

    color: var(--sp-black);
}


.noticia-date {

    margin-bottom: 8px;

    font-size: 0.7rem;

    color: #8a938a;
}


.noticia-horizontal-content a {

    text-decoration: none;

    font-size: 0.78rem;

    font-weight: 800;

    color: var(--sp-verde);

    transition:
        color var(--sp-transition);
}


.noticia-horizontal-content a:hover {

    color: var(--sp-verde-dark);
}


/* ------------------------------------------------------------
   FOOTER
--------------------------------------------------------------- */

.vida-footer {

    display: flex;

    justify-content: center;

    margin-top: 45px;
}


/* ------------------------------------------------------------
   BOTÓN OUTLINE
--------------------------------------------------------------- */

.btn-outline-sp {

    display: inline-flex;

    align-items: center;

    gap: 10px;

    padding: 12px 22px;

    border: 2px solid var(--sp-verde);

    border-radius: 50px;

    text-decoration: none;

    font-size: 0.85rem;

    font-weight: 800;

    color: var(--sp-verde);

    transition:
        background var(--sp-transition),
        color var(--sp-transition),
        gap var(--sp-transition);
}


.btn-outline-sp span {

    font-size: 1.1rem;

    transition:
        transform var(--sp-transition);
}


.btn-outline-sp:hover {

    background: var(--sp-verde);

    color: var(--sp-white);

    gap: 15px;
}


.btn-outline-sp:hover span {

    transform: translateX(4px);
}


/* ------------------------------------------------------------
   RESPONSIVE TABLET
--------------------------------------------------------------- */

@media (max-width: 991px) {

    .vida-section {

        padding: 90px 0;
    }

    .noticia-image {

        height: 300px;
    }

}


/* ------------------------------------------------------------
   RESPONSIVE MÓVIL
--------------------------------------------------------------- */

@media (max-width: 575px) {

    .vida-section {

        padding: 75px 0;
    }


    .noticia-image {

        height: 240px;
    }


    .noticia-content {

        padding: 23px;
    }


    .noticia-content h3 {

        font-size: 1.25rem;
    }


    .noticia-horizontal {

        min-height: 140px;
    }


    .noticia-horizontal-image {

        flex: 0 0 110px;
    }


    .noticia-horizontal-content {

        padding: 15px;
    }


    .noticia-horizontal-content h3 {

        font-size: 0.85rem;
    }


    .noticia-date {

        font-size: 0.65rem;
    }

}


/* ============================================================
   SECCIÓN — COMUNIDAD SAN PABLO
============================================================ */

.comunidad-section {

    position: relative;

    padding: 110px 0;

    background: var(--sp-white);

    overflow: hidden;
}


/* ------------------------------------------------------------
   TARJETAS DE COMUNIDAD
--------------------------------------------------------------- */

.comunidad-grid {

    margin-top: 50px;
}


.comunidad-card {

    height: 100%;

    background: var(--sp-white);

    border: 1px solid var(--sp-gray-border);

    border-radius: 22px;

    overflow: hidden;

    box-shadow:
        0 8px 25px rgba(0, 77, 37, 0.05);

    transition:
        transform 0.4s ease,
        box-shadow 0.4s ease;
}


.comunidad-card:hover {

    transform: translateY(-8px);

    box-shadow:
        0 20px 40px rgba(0, 77, 37, 0.12);
}


/* ------------------------------------------------------------
   IMAGEN
--------------------------------------------------------------- */

.comunidad-image {

    position: relative;

    height: 250px;

    overflow: hidden;
}


.comunidad-image img {

    width: 100%;
    height: 100%;

    object-fit: cover;

    transition:
        transform 0.7s ease;
}


.comunidad-card:hover
.comunidad-image img {

    transform: scale(1.07);
}


/* ------------------------------------------------------------
   ICONO
--------------------------------------------------------------- */

.comunidad-icon {

    position: absolute;

    left: 22px;
    bottom: 20px;

    width: 52px;
    height: 52px;

    display: flex;

    align-items: center;
    justify-content: center;

    border-radius: 15px;

    background: var(--sp-amarillo);

    color: var(--sp-verde-dark);

    font-size: 1.35rem;

    box-shadow:
        0 8px 20px rgba(0, 0, 0, 0.18);

    transition:
        transform 0.35s ease;
}


.comunidad-card:hover
.comunidad-icon {

    transform:
        translateY(-4px)
        rotate(-5deg);
}


/* ------------------------------------------------------------
   CONTENIDO
--------------------------------------------------------------- */

.comunidad-content {

    padding: 27px;
}


.comunidad-content > span {

    display: block;

    margin-bottom: 5px;

    font-size: 0.68rem;

    font-weight: 900;

    letter-spacing: 1px;

    color: var(--sp-verde-light);
}


.comunidad-content h3 {

    margin-bottom: 12px;

    font-size: 1.3rem;

    font-weight: 800;

    color: var(--sp-verde-dark);
}


.comunidad-content p {

    margin: 0;

    font-size: 0.88rem;

    line-height: 1.75;

    color: #667066;
}


/* ============================================================
   TESTIMONIOS
============================================================ */

.testimonios-wrapper {

    margin-top: 110px;

    padding-top: 75px;

    border-top: 1px solid var(--sp-gray-border);
}


.testimonios-heading {

    margin-bottom: 40px;

    text-align: center;
}


.testimonios-heading h3 {

    margin: 12px 0 0;

    font-size: clamp(1.7rem, 3vw, 2.3rem);

    font-weight: 800;

    color: var(--sp-verde-dark);
}


/* ------------------------------------------------------------
   TESTIMONIO
--------------------------------------------------------------- */

.testimonio-card {

    position: relative;

    max-width: 760px;

    margin: 0 auto;

    padding: 45px 70px 55px;

    text-align: center;

    border-radius: 24px;

    background: var(--sp-gray);

    border: 1px solid var(--sp-gray-border);
}


.testimonio-quote {

    margin-bottom: 5px;

    font-family: Georgia, serif;

    font-size: 5rem;

    line-height: 0.7;

    color: var(--sp-amarillo);
}


.testimonio-card > p {

    margin: 20px auto 30px;

    max-width: 620px;

    font-size: 1.05rem;

    line-height: 1.85;

    font-style: italic;

    color: #526052;
}


/* ------------------------------------------------------------
   PERSONA
--------------------------------------------------------------- */

.testimonio-persona {

    display: flex;

    align-items: center;

    justify-content: center;

    gap: 12px;
}


.testimonio-avatar {

    width: 45px;
    height: 45px;

    display: flex;

    align-items: center;
    justify-content: center;

    border-radius: 50%;

    background: var(--sp-verde);

    color: var(--sp-white);

    font-weight: 800;
}


.testimonio-persona div:last-child {

    display: flex;

    flex-direction: column;

    align-items: flex-start;

    text-align: left;
}


.testimonio-persona strong {

    font-size: 0.85rem;

    color: var(--sp-verde-dark);
}


.testimonio-persona span {

    margin-top: 2px;

    font-size: 0.72rem;

    color: #7b857b;
}


/* ------------------------------------------------------------
   CONTROLES
--------------------------------------------------------------- */

.testimonial-control {

    width: 42px;
    height: 42px;

    top: 50%;

    margin-top: -21px;

    border-radius: 50%;

    background: var(--sp-verde);

    opacity: 1;

    transition:
        background var(--sp-transition),
        transform var(--sp-transition);
}


.testimonial-control:hover {

    background: var(--sp-verde-dark);

    transform: scale(1.08);
}


.carousel-control-prev {

    left: -25px;
}


.carousel-control-next {

    right: -25px;
}


/* ------------------------------------------------------------
   INDICADORES
--------------------------------------------------------------- */

.testimonio-card + .carousel-indicators {

    bottom: -45px;
}


.carousel-indicators [data-bs-target] {

    width: 8px;
    height: 8px;

    margin: 0 5px;

    border: 0;

    border-radius: 50%;

    background: var(--sp-verde);

    opacity: 0.3;
}


.carousel-indicators .active {

    width: 25px;

    border-radius: 10px;

    opacity: 1;
}


/* ------------------------------------------------------------
   RESPONSIVE
--------------------------------------------------------------- */

@media (max-width: 991px) {

    .comunidad-section {

        padding: 90px 0;
    }

    .testimonios-wrapper {

        margin-top: 85px;
    }

}


@media (max-width: 767px) {

    .comunidad-section {

        padding: 75px 0;
    }

    .comunidad-grid {

        margin-top: 35px;
    }

    .comunidad-image {

        height: 220px;
    }

    .testimonios-wrapper {

        margin-top: 70px;

        padding-top: 55px;
    }

    .testimonio-card {

        padding: 35px 35px 50px;
    }

    .testimonio-card > p {

        font-size: 0.92rem;
    }

    .testimonial-control {

        display: none;
    }

}


/* ============================================================
   SECCIÓN — CONTACTO
============================================================ */

.contacto-section {

    position: relative;

    padding: 110px 0;

    background: var(--sp-gray);

    overflow: hidden;
}


/* ============================================================
   CTA
============================================================ */

.contacto-cta {

    position: relative;

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 40px;

    padding: 55px 60px;

    margin-bottom: 90px;

    border-radius: 28px;

    background: var(--sp-verde-dark);

    overflow: hidden;

    box-shadow:
        0 20px 50px rgba(0, 77, 37, 0.15);
}


/* Decoración */

.contacto-cta::before {

    content: "";

    position: absolute;

    width: 300px;
    height: 300px;

    right: -100px;
    top: -160px;

    border-radius: 50%;

    background:
        rgba(46, 155, 69, 0.20);
}


.contacto-cta::after {

    content: "";

    position: absolute;

    width: 180px;
    height: 180px;

    left: 40%;

    bottom: -130px;

    border-radius: 50%;

    background:
        rgba(244, 196, 0, 0.10);
}


/* Contenido */

.contacto-cta-content {

    position: relative;

    z-index: 1;

    max-width: 650px;
}


.contacto-cta h2 {

    margin: 14px 0 18px;

    font-size: clamp(2rem, 4vw, 3rem);

    font-weight: 800;

    line-height: 1.15;

    color: var(--sp-white);
}


.contacto-cta h2 span {

    color: var(--sp-amarillo);
}


.contacto-cta p {

    max-width: 600px;

    margin: 0;

    font-size: 0.95rem;

    line-height: 1.8;

    color:
        rgba(255, 255, 255, 0.75);
}


/* ============================================================
   ACCIONES
============================================================ */

.contacto-cta-actions {

    position: relative;

    z-index: 2;

    display: flex;

    flex-direction: column;

    gap: 12px;

    min-width: 220px;
}


.btn-contacto-outline {

    display: inline-flex;

    align-items: center;

    justify-content: center;

    gap: 10px;

    padding: 12px 20px;

    border: 1px solid
        rgba(255, 255, 255, 0.35);

    border-radius: 50px;

    color: var(--sp-white);

    text-decoration: none;

    font-size: 0.85rem;

    font-weight: 800;

    transition:
        background var(--sp-transition),
        border-color var(--sp-transition);
}


.btn-contacto-outline:hover {

    background:
        rgba(255, 255, 255, 0.10);

    border-color:
        var(--sp-amarillo);

    color: var(--sp-white);
}


/* ============================================================
   CONTENIDO PRINCIPAL
============================================================ */

.contacto-main {

    align-items: stretch;
}


.contacto-title {

    margin: 15px 0;

    font-size: clamp(2rem, 4vw, 2.8rem);

    font-weight: 800;

    line-height: 1.15;

    color: var(--sp-verde-dark);
}


.contacto-title span {

    color: var(--sp-verde);
}


.contacto-text {

    max-width: 500px;

    margin-bottom: 35px;

    font-size: 0.95rem;

    line-height: 1.8;

    color: #667066;
}


/* ============================================================
   DATOS
============================================================ */

.contacto-datos {

    display: flex;

    flex-direction: column;

    gap: 20px;
}


.contacto-item {

    display: flex;

    align-items: center;

    gap: 15px;
}


.contacto-icon {

    flex-shrink: 0;

    width: 48px;
    height: 48px;

    display: flex;

    align-items: center;
    justify-content: center;

    border-radius: 14px;

    background: var(--sp-amarillo);

    color: var(--sp-verde-dark);

    font-size: 1.1rem;
}


.contacto-item div:last-child {

    display: flex;

    flex-direction: column;

    gap: 3px;
}


.contacto-item span {

    font-size: 0.7rem;

    font-weight: 700;

    letter-spacing: 0.5px;

    color: #849084;
}


.contacto-item strong {

    font-size: 0.88rem;

    font-weight: 700;

    color: var(--sp-black);
}


/* ============================================================
   MAPA
============================================================ */

.mapa-container {

    height: 100%;

    min-height: 470px;

    padding: 8px;

    border-radius: 25px;

    background: var(--sp-white);

    border: 1px solid var(--sp-gray-border);

    box-shadow:
        0 10px 30px rgba(0, 77, 37, 0.07);
}


.mapa-placeholder {

    height: 100%;

    min-height: 450px;

    display: flex;

    align-items: center;
    justify-content: center;

    flex-direction: column;

    text-align: center;

    padding: 30px;

    border-radius: 19px;

    background:
        linear-gradient(
            135deg,
            #edf4ed,
            #f8faf8
        );
}


.mapa-icon {

    width: 65px;
    height: 65px;

    display: flex;

    align-items: center;
    justify-content: center;

    margin-bottom: 18px;

    border-radius: 50%;

    background: var(--sp-verde);

    color: var(--sp-white);

    font-size: 1.5rem;

    box-shadow:
        0 10px 25px
        rgba(0, 107, 45, 0.20);
}


.mapa-placeholder h3 {

    margin-bottom: 8px;

    font-size: 1.3rem;

    font-weight: 800;

    color: var(--sp-verde-dark);
}


.mapa-placeholder p {

    max-width: 350px;

    margin-bottom: 20px;

    font-size: 0.85rem;

    line-height: 1.7;

    color: #718071;
}


.btn-map {

    padding: 10px 20px;

    border: 0;

    border-radius: 50px;

    background: var(--sp-verde);

    color: var(--sp-white);

    font-size: 0.8rem;

    font-weight: 800;

    cursor: pointer;

    transition:
        background var(--sp-transition),
        transform var(--sp-transition);
}


.btn-map:hover {

    background: var(--sp-verde-dark);

    transform: translateY(-2px);
}


/* ============================================================
   REDES SOCIALES
============================================================ */

.contacto-social {

    display: flex;

    align-items: center;

    justify-content: center;

    gap: 20px;

    margin-top: 70px;

    padding-top: 30px;

    border-top: 1px solid var(--sp-gray-border);
}


.contacto-social > span {

    font-size: 0.82rem;

    font-weight: 700;

    color: #718071;
}


.social-links {

    display: flex;

    gap: 9px;
}


.social-links a {

    width: 38px;
    height: 38px;

    display: flex;

    align-items: center;
    justify-content: center;

    border-radius: 50%;

    background: var(--sp-white);

    border: 1px solid var(--sp-gray-border);

    color: var(--sp-verde);

    text-decoration: none;

    transition:
        background var(--sp-transition),
        color var(--sp-transition),
        transform var(--sp-transition);
}


.social-links a:hover {

    background: var(--sp-verde);

    color: var(--sp-white);

    transform: translateY(-3px);
}


/* ============================================================
   RESPONSIVE
============================================================ */

@media (max-width: 991px) {

    .contacto-section {

        padding: 90px 0;
    }


    .contacto-cta {

        padding: 45px;

        margin-bottom: 70px;

        flex-direction: column;

        align-items: flex-start;
    }


    .contacto-cta-actions {

        width: 100%;

        flex-direction: row;
    }


    .contacto-cta-actions .btn-sp,
    .contacto-cta-actions .btn-contacto-outline {

        flex: 1;
    }

}


@media (max-width: 575px) {

    .contacto-section {

        padding: 75px 0;
    }


    .contacto-cta {

        padding: 35px 25px;

        border-radius: 22px;
    }


    .contacto-cta-actions {

        flex-direction: column;
    }


    .mapa-container {

        min-height: 380px;
    }


    .mapa-placeholder {

        min-height: 360px;
    }


    .contacto-social {

        flex-direction: column;

        gap: 15px;
    }

}


/* ============================================================
   FOOTER
============================================================ */

.footer-section {

    position: relative;

    padding: 80px 0 25px;

    background: var(--sp-verde-dark);

    color: var(--sp-white);
}


/* ============================================================
   MARCA
============================================================ */

.footer-logo {

    display: inline-flex;

    align-items: center;

    margin-bottom: 20px;
}


.footer-logo img {

    width: 170px;

    height: auto;

    display: block;
}


.footer-brand p {

    max-width: 380px;

    margin: 0 0 25px;

    font-size: 0.85rem;

    line-height: 1.8;

    color:
        rgba(255, 255, 255, 0.68);
}


/* ============================================================
   REDES SOCIALES
============================================================ */

.footer-social {

    display: flex;

    gap: 9px;
}


.footer-social a {

    width: 38px;
    height: 38px;

    display: flex;

    align-items: center;
    justify-content: center;

    border-radius: 50%;

    background:
        rgba(255, 255, 255, 0.08);

    border: 1px solid
        rgba(255, 255, 255, 0.12);

    color: var(--sp-white);

    text-decoration: none;

    transition:
        background var(--sp-transition),
        color var(--sp-transition),
        transform var(--sp-transition);
}


.footer-social a:hover {

    background: var(--sp-amarillo);

    color: var(--sp-verde-dark);

    transform: translateY(-3px);
}


/* ============================================================
   COLUMNAS
============================================================ */

.footer-column h3 {

    margin-bottom: 22px;

    font-size: 0.95rem;

    font-weight: 800;

    color: var(--sp-amarillo);
}


.footer-column ul {

    list-style: none;

    padding: 0;

    margin: 0;
}


.footer-column li {

    margin-bottom: 11px;
}


.footer-column li a {

    text-decoration: none;

    font-size: 0.82rem;

    color:
        rgba(255, 255, 255, 0.68);

    transition:
        color var(--sp-transition),
        padding-left var(--sp-transition);
}


.footer-column li a:hover {

    padding-left: 5px;

    color: var(--sp-white);
}


/* ============================================================
   CONTACTO
============================================================ */

.footer-contact {

    display: flex;

    flex-direction: column;

    gap: 15px;
}


.footer-contact-item {

    display: flex;

    align-items: flex-start;

    gap: 11px;
}


.footer-contact-item i {

    flex-shrink: 0;

    margin-top: 2px;

    font-size: 0.9rem;

    color: var(--sp-amarillo);
}


.footer-contact-item span {

    font-size: 0.8rem;

    line-height: 1.55;

    color:
        rgba(255, 255, 255, 0.68);
}


/* ============================================================
   DIVISOR
============================================================ */

.footer-divider {

    width: 100%;

    height: 1px;

    margin: 55px 0 22px;

    background:
        rgba(255, 255, 255, 0.10);
}


/* ============================================================
   FOOTER INFERIOR
============================================================ */

.footer-bottom {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 20px;
}


.footer-bottom p {

    margin: 0;

    font-size: 0.72rem;

    color:
        rgba(255, 255, 255, 0.50);
}


.footer-legal {

    display: flex;

    gap: 20px;
}


.footer-legal a {

    text-decoration: none;

    font-size: 0.72rem;

    color:
        rgba(255, 255, 255, 0.50);

    transition:
        color var(--sp-transition);
}


.footer-legal a:hover {

    color: var(--sp-white);
}


/* ============================================================
   BOTÓN VOLVER ARRIBA
============================================================ */

.back-to-top {

    position: fixed;

    z-index: 1000;

    right: 25px;
    bottom: 25px;

    width: 45px;
    height: 45px;

    display: flex;

    align-items: center;
    justify-content: center;

    border: none;

    border-radius: 50%;

    background: var(--sp-amarillo);

    color: var(--sp-verde-dark);

    font-size: 1rem;

    cursor: pointer;

    opacity: 0;

    visibility: hidden;

    transform: translateY(15px);

    box-shadow:
        0 8px 25px rgba(0, 0, 0, 0.18);

    transition:
        opacity 0.3s ease,
        visibility 0.3s ease,
        transform 0.3s ease,
        background var(--sp-transition);
}


.back-to-top.show {

    opacity: 1;

    visibility: visible;

    transform: translateY(0);
}


.back-to-top:hover {

    background: var(--sp-amarillo-light);

    transform: translateY(-3px);
}


/* ============================================================
   RESPONSIVE
============================================================ */

@media (max-width: 767px) {

    .footer-section {

        padding: 65px 0 25px;
    }


    .footer-bottom {

        flex-direction: column;

        align-items: flex-start;
    }


    .footer-legal {

        flex-direction: column;

        gap: 8px;
    }


    .footer-divider {

        margin-top: 40px;
    }


    .back-to-top {

        right: 18px;

        bottom: 18px;

        width: 42px;

        height: 42px;
    }

}


/* ============================================================
   MAPA LEAFLET
============================================================ */

#mapa-institucion {

    width: 100%;

    height: 100%;

    min-height: 450px;

    border-radius: 19px;

    overflow: hidden;

}


/* Contenedor */

.mapa-container {

    height: 100%;

    min-height: 470px;

    padding: 8px;

    border-radius: 25px;

    background: var(--sp-white);

    border: 1px solid var(--sp-gray-border);

    box-shadow:
        0 10px 30px rgba(0, 77, 37, 0.07);

    overflow: hidden;

}


/* Popup */

.leaflet-popup-content-wrapper {

    border-radius: 12px;

}


.leaflet-popup-content {

    margin: 15px;

    font-family: inherit;

}


.mapa-popup h3 {

    margin: 0 0 7px;

    color: var(--sp-verde-dark);

    font-size: 1rem;

    font-weight: 800;

}


.mapa-popup p {

    margin: 0;

    color: #667066;

    font-size: 0.8rem;

    line-height: 1.5;

}


/* Botón del popup */

.mapa-popup a {

    display: inline-block;

    margin-top: 10px;

    padding: 7px 12px;

    border-radius: 20px;

    background: var(--sp-verde);

    color: var(--sp-white);

    text-decoration: none;

    font-size: 0.72rem;

    font-weight: 700;

}


.mapa-popup a:hover {

    background: var(--sp-verde-dark);

}


/* Responsive */

@media (max-width: 575px) {

    #mapa-institucion {

        min-height: 350px;

    }

    .mapa-container {

        min-height: 370px;

    }

}