:root{
    --contacto-primary:#312782;
    --contacto-primary-dark:#21195F;
    --contacto-primary-light:#5145B5;

    --contacto-bg:#F7F8FC;
    --contacto-white:#FFFFFF;

    --contacto-text:#222126;
    --contacto-text-light:#706E76;

    --contacto-border:rgba(49,39,130,.09);

    --contacto-shadow:
        0 16px 42px rgba(32,27,71,.07);
}

.banner-interno{
    position:relative;

    width:100%;
    min-height:580px;

    display:flex;
    align-items:center;
    justify-content:center;

    padding:155px 0 80px;

    overflow:hidden;

    color:#FFFFFF;

    text-align:center;

    background:
        radial-gradient(
            circle at 50% 42%,
            rgba(110,92,220,.28) 0%,
            rgba(110,92,220,.09) 32%,
            transparent 58%
        ),
        linear-gradient(
            120deg,
            #21195F 0%,
            #312782 52%,
            #5044B2 100%
        );
}

.banner-interno .container{
    position:relative;

    z-index:3;

    width:100%;
    max-width:900px;
}

.banner-interno span{
    display:flex;
    align-items:center;
    justify-content:center;

    gap:12px;

    width:max-content;

    margin:0 auto 23px;

    padding:0;

    border-radius:0;

    background:transparent;

    color:rgba(255,255,255,.72);

    font-size:.7rem;
    font-weight:700;

    letter-spacing:2px;

    text-transform:uppercase;

    backdrop-filter:none;
}


.banner-interno span::before,
.banner-interno span::after{
    content:"";

    width:28px;
    height:1px;

    background:rgba(255,255,255,.55);
}

.banner-interno h1{
    max-width:800px;

    margin:0 auto 22px;

    color:#FFFFFF;

    font-size:4rem;
    font-weight:700;

    line-height:1.07;

    letter-spacing:-2px;
}

.banner-interno p{
    max-width:650px;

    margin:0 auto;

    color:rgba(255,255,255,.72);

    font-size:.96rem;

    line-height:1.8;
}

.banner-interno::before{
    content:"";

    position:absolute;

    width:620px;
    height:620px;

    right:-450px;
    top:-410px;

    border-radius:50%;

    background:transparent;

    border:1px solid rgba(255,255,255,.07);

    box-shadow:
        0 0 0 70px rgba(255,255,255,.013);

    pointer-events:none;
}


.banner-interno::after{
    content:"";

    position:absolute;

    width:520px;
    height:520px;

    left:-390px;
    bottom:-390px;

    border-radius:50%;

    background:transparent;

    border:1px solid rgba(255,255,255,.06);

    box-shadow:
        0 0 0 55px rgba(255,255,255,.01);

    pointer-events:none;
}

@media(max-width:992px){

    .banner-interno{
        min-height:520px;

        padding:145px 0 75px;
    }


    .banner-interno .container{
        max-width:760px;
    }


    .banner-interno h1{
        font-size:3.5rem;
    }


    .banner-interno p{
        max-width:620px;
    }

}

@media(max-width:576px){

    .banner-interno{
        min-height:460px;

        padding:120px 0 65px;
    }


    .banner-interno .container{
        width:90%;
    }


    .banner-interno span{
        gap:8px;

        margin-bottom:18px;

        font-size:.61rem;

        letter-spacing:1.2px;
    }


    .banner-interno span::before,
    .banner-interno span::after{
        width:19px;
    }


    .banner-interno h1{
        margin-bottom:19px;

        font-size:2.4rem;

        line-height:1.1;

        letter-spacing:-1px;
    }


    .banner-interno p{
        width:95%;

        font-size:.87rem;

        line-height:1.7;
    }


    .banner-interno::before{
        width:350px;
        height:350px;

        right:-280px;
        top:-230px;
    }


    .banner-interno::after{
        width:300px;
        height:300px;

        left:-240px;
        bottom:-220px;
    }

}
@media(max-width:430px){

    .banner-interno{
        min-height:430px;

        padding-top:110px;
    }


    .banner-interno h1{
        font-size:2.1rem;
    }


    .banner-interno p{
        font-size:.84rem;
    }

}

.contacto{
    position:relative;

    padding:110px 0;

    overflow:hidden;

    background:#FFFFFF;
}

.contacto::before{
    content:"";

    position:absolute;

    width:480px;
    height:480px;

    left:-360px;
    top:120px;

    border-radius:50%;

    background:
        radial-gradient(
            circle,
            rgba(49,39,130,.04),
            transparent 68%
        );

    pointer-events:none;
}

.contacto-grid{
    position:relative;
    z-index:2;

    display:grid;

    grid-template-columns:
        minmax(0,.9fr)
        minmax(500px,1.1fr);

    align-items:start;

    gap:75px;
}

.contacto-info{
    position:relative;

    max-width:560px;
}

.contacto-info .section-tag{
    display:flex;
    align-items:center;

    gap:11px;

    width:max-content;

    margin:0 0 18px;

    color:#312782;

    font-size:.7rem;
    font-weight:700;

    letter-spacing:1.8px;

    text-transform:uppercase;
}


.contacto-info .section-tag::before{
    content:"";

    width:28px;
    height:2px;

    border-radius:20px;

    background:#312782;
}

.contacto-info h2{
    margin:0 0 19px;

    color:#222126;

    font-size:2.8rem;
    line-height:1.15;

    letter-spacing:-1px;
}

.contacto-info > p{
    max-width:520px;

    margin:0 0 35px;

    color:#706E76;

    font-size:.92rem;
    line-height:1.8;
}

.info-item{
    position:relative;

    display:flex;
    align-items:center;

    gap:15px;

    min-height:78px;

    margin:0;
    padding:14px 16px;

    border-bottom:
        1px solid rgba(49,39,130,.08);

    background:transparent;

    border-radius:0;

    box-shadow:none;

    transition:
        padding-left .3s ease,
        background .3s ease;
}


.info-item:first-of-type{
    border-top:
        1px solid rgba(49,39,130,.08);
}


.info-item:hover{
    padding-left:21px;

    transform:none;

    background:
        linear-gradient(
            90deg,
            rgba(49,39,130,.035),
            transparent
        );

    box-shadow:none;
}

.info-item i{
    width:45px;
    height:45px;

    flex-shrink:0;

    display:flex;
    align-items:center;
    justify-content:center;

    border-radius:13px;

    background:#EEEAFE;

    color:#312782;

    font-size:1rem;

    transition:
        transform .3s ease,
        background .3s ease,
        color .3s ease;
}


.info-item:hover i{
    transform:translateY(-2px);

    background:#312782;

    color:#FFFFFF;
}

.info-item h3{
    margin:0 0 4px;

    color:#222126;

    font-size:.94rem;
    font-weight:700;
}


.info-item p{
    margin:0;

    color:#77757D;

    font-size:.82rem;

    line-height:1.5;
}

.contacto-form{
    position:relative;

    width:100%;

    padding:38px;

    overflow:hidden;

    border:
        1px solid rgba(49,39,130,.075);

    border-radius:24px;

    background:#F9F9FC;

    box-shadow:
        0 18px 45px rgba(32,27,71,.065);
}

.contacto-form::before{
    content:"";

    position:absolute;

    width:220px;
    height:220px;

    right:-165px;
    top:-165px;

    border-radius:50%;

    border:
        1px solid rgba(49,39,130,.055);

    background:transparent;

    pointer-events:none;
}

.contacto-form form{
    position:relative;

    z-index:2;
}

.campo{
    display:flex;
    flex-direction:column;

    margin:0 0 18px;
}


.campo label{
    margin:0 0 8px;

    color:#3D3B43;

    font-size:.78rem;
    font-weight:600;
}


.campo input,
.campo textarea{
    width:100%;

    border:
        1px solid rgba(49,39,130,.09);

    border-radius:12px;

    outline:0;

    background:#FFFFFF;

    color:#222126;

    font-family:inherit;
    font-size:.86rem;

    transition:
        border-color .3s ease,
        background .3s ease,
        box-shadow .3s ease;
}


.campo input{
    height:49px;

    padding:0 15px;
}


.campo textarea{
    min-height:145px;

    padding:14px 15px;

    resize:vertical;

    line-height:1.6;
}


.campo input:focus,
.campo textarea:focus{
    border-color:
        rgba(49,39,130,.55);

    background:#FFFFFF;

    box-shadow:
        0 0 0 4px rgba(49,39,130,.065);
}

.contacto-form .btn-primary{
    width:100%;
    min-height:50px;

    display:flex;
    align-items:center;
    justify-content:center;

    margin:4px 0 0;

    padding:13px 22px;

    border:0;
    border-radius:12px;

    background:#312782;

    color:#FFFFFF;

    font-family:inherit;
    font-size:.85rem;
    font-weight:700;

    cursor:pointer;

    box-shadow:
        0 10px 24px rgba(49,39,130,.17);

    transition:
        transform .3s ease,
        background .3s ease,
        box-shadow .3s ease;
}


.contacto-form .btn-primary:hover{
    transform:translateY(-2px);

    background:#241D66;

    box-shadow:
        0 15px 31px rgba(49,39,130,.23);
}

.productos-toast{
    position:fixed;

    top:110px;
    right:28px;

    z-index:99999;

    min-width:300px;
    max-width:390px;

    display:flex;
    align-items:center;

    gap:13px;

    padding:16px 18px;

    border:1px solid rgba(49,39,130,.10);
    border-radius:14px;

    background:#FFFFFF;

    color:#222126;

    box-shadow:
        0 18px 45px rgba(32,27,71,.16);

    opacity:0;
    visibility:hidden;

    transform:
        translateX(35px)
        translateY(-5px);

    pointer-events:none;

    transition:
        opacity .35s ease,
        visibility .35s ease,
        transform .35s ease;
}

.productos-toast i{
    width:38px;
    height:38px;

    flex-shrink:0;

    display:flex;
    align-items:center;
    justify-content:center;

    border-radius:11px;

    background:#E9F8EF;

    color:#269653;

    font-size:1rem;
}

.productos-toast span{
    color:#44424A;

    font-size:.83rem;
    font-weight:600;

    line-height:1.5;
}

.productos-toast.mostrar{
    opacity:1;
    visibility:visible;

    transform:
        translateX(0)
        translateY(0);

    pointer-events:auto;
}

.productos-toast::after{
    content:"";

    position:absolute;

    left:0;
    bottom:0;

    width:100%;
    height:3px;

    border-radius:0 0 14px 14px;

    background:#269653;
}
@media(max-width:992px){

    .contacto{
        padding:90px 0;
    }


    .contacto-grid{
        grid-template-columns:1fr;

        max-width:760px;

        margin:auto;

        gap:45px;
    }


    .contacto-info{
        max-width:650px;

        margin:auto;

        text-align:center;
    }


    .contacto-info .section-tag{
        justify-content:center;

        margin-left:auto;
        margin-right:auto;
    }


    .contacto-info h2,
    .contacto-info > p{
        margin-left:auto;
        margin-right:auto;
    }


    .info-item{
        max-width:650px;

        margin:auto;

        text-align:left;
    }


    .contacto-form{
        max-width:700px;

        margin:auto;
    }

}

@media(max-width:576px){

    .contacto{
        padding:70px 0;
    }


    .contacto .container{
        width:90%;
    }


    .contacto-grid{
        gap:35px;
    }


    .contacto-info .section-tag{
        margin-bottom:15px;

        font-size:.62rem;

        letter-spacing:1.15px;
    }


    .contacto-info .section-tag::before{
        width:21px;
    }


    .contacto-info h2{
        margin-bottom:16px;

        font-size:1.95rem;

        line-height:1.2;
    }


    .contacto-info > p{
        margin-bottom:28px;

        font-size:.87rem;

        line-height:1.7;
    }

    .info-item{
        min-height:70px;

        gap:13px;

        padding:12px 8px;
    }


    .info-item:hover{
        padding-left:8px;
    }


    .info-item i{
        width:42px;
        height:42px;

        border-radius:11px;

        font-size:.92rem;
    }


    .info-item h3{
        font-size:.9rem;
    }


    .info-item p{
        font-size:.78rem;
    }

    .contacto-form{
        padding:25px 22px;

        border-radius:19px;
    }


    .campo{
        margin-bottom:16px;
    }


    .campo label{
        font-size:.75rem;
    }


    .campo input{
        height:47px;

        font-size:.84rem;
    }


    .campo textarea{
        min-height:130px;

        font-size:.84rem;
    }


    .contacto-form .btn-primary{
        min-height:47px;

        font-size:.82rem;
    }

}
@media(max-width:430px){

    .contacto{
        padding:60px 0;
    }


    .contacto-info h2{
        font-size:1.8rem;
    }


    .contacto-form{
        padding:22px 18px;
    }

}

@media(max-width:576px){

    .productos-toast{
        top:90px;

        left:50%;
        right:auto;

        width:calc(100% - 30px);

        min-width:0;
        max-width:420px;

        padding:14px 15px;

        transform:
            translate(-50%,-20px);
    }


    .productos-toast.mostrar{
        transform:
            translate(-50%,0);
    }


    .productos-toast i{
        width:35px;
        height:35px;

        border-radius:10px;

        font-size:.9rem;
    }


    .productos-toast span{
        font-size:.79rem;
    }

}

.ubicacion{
    position:relative;

    padding:110px 0;

    overflow:hidden;

    background:#F7F8FC;
}

.ubicacion .section-title{
    max-width:720px;

    margin:0 auto 50px;

    text-align:center;
}


.ubicacion .section-title > span{
    display:flex;
    align-items:center;
    justify-content:center;

    gap:11px;

    width:max-content;

    margin:0 auto 17px;

    color:#312782;

    font-size:.7rem;
    font-weight:700;

    letter-spacing:1.8px;

    text-transform:uppercase;
}


.ubicacion .section-title > span::before,
.ubicacion .section-title > span::after{
    content:"";

    width:27px;
    height:1px;

    background:rgba(49,39,130,.40);
}


.ubicacion .section-title h2{
    margin:0 0 17px;

    color:#222126;

    font-size:2.8rem;
    line-height:1.17;

    letter-spacing:-1px;
}


.ubicacion .section-title p{
    max-width:630px;

    margin:0 auto;

    color:#706E76;

    font-size:.92rem;
    line-height:1.8;
}

.mapa{
    position:relative;

    width:100%;

    margin:0;

    padding:8px;

    overflow:hidden;

    border:1px solid rgba(49,39,130,.08);
    border-radius:24px;

    background:#FFFFFF;

    box-shadow:
        0 18px 45px rgba(32,27,71,.075);

    transition:
        transform .4s ease,
        box-shadow .4s ease;
}


.mapa:hover{
    transform:translateY(-4px);

    box-shadow:
        0 25px 55px rgba(32,27,71,.11);
}


.mapa iframe{
    display:block;

    width:100%;
    height:450px;

    border:0;

    border-radius:17px;
}
.ubicacion::before{
    content:"";

    position:absolute;

    width:480px;
    height:480px;

    right:-360px;
    bottom:-330px;

    border-radius:50%;

    background:
        radial-gradient(
            circle,
            rgba(49,39,130,.035),
            transparent 68%
        );

    pointer-events:none;
}

@media(max-width:992px){

    .ubicacion{
        padding:90px 0;
    }


    .ubicacion .section-title{
        margin-bottom:42px;
    }


    .ubicacion .section-title h2{
        font-size:2.4rem;
    }


    .mapa iframe{
        height:390px;
    }

}

@media(max-width:576px){

    .ubicacion{
        padding:70px 0;
    }


    .ubicacion .container{
        width:90%;
    }


    .ubicacion .section-title{
        margin-bottom:32px;
    }


    .ubicacion .section-title > span{
        margin-bottom:14px;

        font-size:.62rem;

        letter-spacing:1.15px;
    }


    .ubicacion .section-title > span::before,
    .ubicacion .section-title > span::after{
        width:18px;
    }


    .ubicacion .section-title h2{
        margin-bottom:14px;

        font-size:1.95rem;

        line-height:1.2;
    }


    .ubicacion .section-title p{
        font-size:.87rem;

        line-height:1.7;
    }


    .mapa{
        padding:5px;

        border-radius:18px;
    }


    .mapa iframe{
        height:300px;

        border-radius:14px;
    }


    .mapa:hover{
        transform:none;
    }

}
@media(max-width:430px){

    .ubicacion{
        padding:60px 0;
    }


    .ubicacion .section-title h2{
        font-size:1.8rem;
    }


    .mapa iframe{
        height:260px;
    }

}

.cta-home{
    position:relative;

    padding:100px 0;

    overflow:hidden;

    color:#FFFFFF;

    background:
        radial-gradient(
            circle at 50% 0%,
            rgba(116,99,220,.20),
            transparent 45%
        ),
        linear-gradient(
            120deg,
            #21195F 0%,
            #312782 52%,
            #5044B2 100%
        );
}

.cta-content{
    position:relative;
    z-index:3;

    width:90%;
    max-width:780px;

    margin:0 auto;

    display:flex;
    flex-direction:column;

    align-items:center;

    text-align:center;
}

.cta-content > span{
    display:flex;
    align-items:center;
    justify-content:center;

    gap:11px;

    margin:0 0 20px;

    color:rgba(255,255,255,.72);

    font-size:.68rem;
    font-weight:700;

    letter-spacing:1.8px;

    text-transform:uppercase;
}


.cta-content > span::before,
.cta-content > span::after{
    content:"";

    width:25px;
    height:1px;

    background:rgba(255,255,255,.48);
}

.cta-content h2{
    max-width:700px;

    margin:0 auto 19px;

    color:#FFFFFF;

    font-size:2.8rem;
    font-weight:700;

    line-height:1.16;

    letter-spacing:-1px;
}

.cta-content p{
    max-width:620px;

    margin:0 auto 31px;

    color:rgba(255,255,255,.72);

    font-size:.92rem;

    line-height:1.8;
}

.cta-home .btn-primary{
    min-height:49px;

    display:inline-flex;
    align-items:center;
    justify-content:center;

    padding:13px 27px;

    border:1px solid rgba(255,255,255,.15);
    border-radius:13px;

    background:#FFFFFF;

    color:#312782;

    font-size:.84rem;
    font-weight:700;

    text-decoration:none;

    box-shadow:
        0 12px 28px rgba(17,12,63,.18);

    transition:
        transform .3s ease,
        background .3s ease,
        box-shadow .3s ease;
}


.cta-home .btn-primary:hover{
    transform:translateY(-3px);

    background:#F3F1FC;

    box-shadow:
        0 18px 36px rgba(17,12,63,.25);
}

.cta-home::before{
    content:"";

    position:absolute;

    width:550px;
    height:550px;

    left:-420px;
    bottom:-430px;

    border-radius:50%;

    border:
        1px solid rgba(255,255,255,.065);

    box-shadow:
        0 0 0 60px rgba(255,255,255,.012);

    pointer-events:none;
}


.cta-home::after{
    content:"";

    position:absolute;

    width:600px;
    height:600px;

    right:-460px;
    top:-470px;

    border-radius:50%;

    border:
        1px solid rgba(255,255,255,.06);

    box-shadow:
        0 0 0 70px rgba(255,255,255,.01);

    pointer-events:none;
}

@media(max-width:992px){

    .cta-home{
        padding:85px 0;
    }

    .cta-content h2{
        font-size:2.4rem;
    }

}

@media(max-width:576px){

    .cta-home{
        padding:70px 0;
    }


    .cta-content{
        width:90%;
    }


    .cta-content > span{
        margin-bottom:17px;

        font-size:.6rem;
        letter-spacing:1.15px;
    }


    .cta-content > span::before,
    .cta-content > span::after{
        width:17px;
    }


    .cta-content h2{
        margin-bottom:17px;

        font-size:1.95rem;
        line-height:1.2;
    }


    .cta-content p{
        margin-bottom:26px;

        font-size:.87rem;
        line-height:1.75;
    }


    .cta-home .btn-primary{
        min-height:46px;

        padding:12px 23px;

        font-size:.81rem;
    }


    .cta-home::before{
        width:320px;
        height:320px;

        left:-260px;
        bottom:-260px;
    }


    .cta-home::after{
        width:340px;
        height:340px;

        right:-280px;
        top:-280px;
    }

}
@media(max-width:430px){

    .cta-home{
        padding:60px 0;
    }


    .cta-content h2{
        font-size:1.8rem;
    }

}