/* ==================================================
   RESET
================================================== */

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    overflow-x: hidden;
    width: 100%;
}

body {
    font-family: 'Montserrat', sans-serif;
    background: #ffffff;
    color: #222;
    overflow-x: hidden;
    line-height: 1.6;
    width: 100%;
}

img {
    max-width: 100%;
    display: block;
}

a {
    text-decoration: none;
}

ul {
    list-style: none;
}

button {
    border: none;
    cursor: pointer;
    font-family: inherit;
}

/* ==================================================
   VARIABLES
================================================== */

:root {

    --primary: #0d5db8;
    --primary-dark: #083c78;

    --secondary: #1e73be;

    --dark: #111111;
    --gray: #666666;
    --light: #f5f7fa;
    --white: #ffffff;

    --radius: 18px;

    --shadow:
        0 15px 40px rgba(0,0,0,.12);

    --transition:
        all .35s ease;
}

/* ==================================================
   CONTAINER
================================================== */

.container {
    width: 90%;
    max-width: 1280px;
    margin: auto;
}

/* ==================================================
   HEADER
================================================== */

.header {

    position: fixed;

    top: 0;
    left: 0;

    width: 100%;

    background: #fff;

    z-index: 999;

    box-shadow:
        0 3px 15px rgba(0,0,0,.08);

}

.header-container {

    display: flex;

    align-items: center;

    justify-content: space-between;

    min-height: 90px;

}

.logo img {

    max-height: 72px;

    width: auto;

}

/* ==================================================
   MENU DESKTOP
================================================== */

.nav ul {

    display: flex;

    align-items: center;

    gap: 34px;

}

.nav a {

    color: var(--dark);

    font-size: .95rem;

    font-weight: 600;

    letter-spacing: .4px;

    transition: var(--transition);

    position: relative;

}

.nav a:hover {

    color: var(--primary);

}

.nav a::after {

    content: '';

    position: absolute;

    left: 0;
    bottom: -8px;

    width: 0;

    height: 2px;

    background: var(--primary);

    transition: var(--transition);

}

.nav a:hover::after {

    width: 100%;

}

/* ==================================================
   MENU MOBILE
================================================== */

.hamburger {

    display: none;

    background: transparent;

    font-size: 1.8rem;

    color: var(--dark);

}

/* ==================================================
   HERO
================================================== */

.hero {

    position: relative;

    padding-top: 150px;

    padding-bottom: 100px;

    overflow: hidden;

    background:
        linear-gradient(
            135deg,
            #ffffff 0%,
            #ffffff 55%,
            #f0f5fb 100%
        );

}

/* Diagonal azul mockup */

.hero::before {

    content: '';

    position: absolute;

    right: -180px;

    top: -150px;

    width: 700px;

    height: 700px;

    background:
        linear-gradient(
            135deg,
            var(--primary),
            var(--primary-dark)
        );

    transform: rotate(35deg);

    z-index: 0;

}

.hero-grid {

    position: relative;

    z-index: 2;

    display: grid;

    grid-template-columns:
        1fr
        1fr
        1fr;

    gap: 40px;

    align-items: center;

}

/* ==================================================
   LOGO HERO
================================================== */

.hero-logo {

    display: flex;

    justify-content: center;

}

.hero-logo img {
/*
    max-width: 320px;
*/

    width:100%;
    max-width:600px;
    height:auto;
    display:block;
}


/* ==================================================
   CENTRO HERO
================================================== */

.hero-center {

    text-align: center;

}

.hero-center h1 {

    font-size: 5rem;

    font-weight: 800;

    color: var(--primary);

    line-height: 1;

}

.hero-center h2 {

    font-size: 2rem;

    color: var(--dark);

    letter-spacing: 1px;

    margin-top: 8px;

}

.hero-line {

    width: 90px;

    height: 4px;

    background: var(--primary);

    margin: 20px auto 35px;

    border-radius: 50px;

}

/* ==================================================
   BOTON HERO
================================================== */

.btn-hero {

    display: inline-flex;

    align-items: center;

    gap: 10px;

    background: var(--primary);

    color: white;

    padding: 16px 28px;

    border-radius: 999px;

    font-weight: 700;

    transition: var(--transition);

    box-shadow:
        0 12px 30px rgba(13,93,184,.25);

}

.btn-hero:hover {

    transform: translateY(-4px);

    background: var(--primary-dark);

}

.btn-hero i {

    font-size: 1.2rem;

}

/* ==================================================
   CONTACTO HERO
================================================== */

.hero-contact {

    background: white;

    padding: 30px;

    border-radius: var(--radius);

    box-shadow: var(--shadow);

}

.contact-item {

    display: flex;

    align-items: flex-start;

    gap: 15px;

    margin-bottom: 22px;

}

.contact-item:last-child {

    margin-bottom: 0;

}

.contact-item i {

    font-size: 1.2rem;

    color: var(--primary);

    width: 24px;

}

.contact-item strong {

    display: block;

    color: var(--dark);

    font-size: .95rem;

}

.contact-item span {

    color: var(--gray);

    font-size: .88rem;

}

/* ==================================================
   SECCIONES
================================================== */

.section-tag {

    display: inline-block;

    background: rgba(13,93,184,.1);

    color: var(--primary);

    padding: 8px 16px;

    border-radius: 999px;

    font-weight: 700;

    margin-bottom: 15px;

}

.section-title {

    font-size: 2.4rem;

    font-weight: 800;

    margin-bottom: 12px;

}

.section-subtitle {

    color: var(--gray);

    margin-bottom: 50px;

}

/* ==================================================
   SERVICIOS
================================================== */

.services {

    padding: 100px 0;

    text-align: center;

}

.cards {

    display: grid;

    grid-template-columns:
        repeat(2,1fr);

    gap: 30px;

}

.card {

    background: white;

    padding: 40px;

    border-radius: 24px;

    box-shadow: var(--shadow);

    transition: var(--transition);

}

.card:hover {

    transform: translateY(-8px);

}

.card-icon {

    width: 90px;

    height: 90px;

    margin: auto;

    margin-bottom: 25px;

    border-radius: 50%;

    background:
        linear-gradient(
            135deg,
            var(--primary),
            var(--primary-dark)
        );

    display: flex;

    align-items: center;

    justify-content: center;

}

.card-icon i {

    color: white;

    font-size: 2rem;

}

.card h3 {

    font-size: 1.4rem;

    margin-bottom: 15px;

    font-weight: 700;

}

.card p {

    color: var(--gray);

    margin-bottom: 25px;

}

/* ==================================================
   BOTONES GENERALES
================================================== */

.btn-primary {

    display: inline-block;

    background: var(--primary);

    color: white;

    padding: 14px 28px;

    border-radius: 999px;

    font-weight: 700;

    transition: var(--transition);

}

.btn-primary:hover {

    background: var(--primary-dark);

    transform: translateY(-3px);

}
/* ==================================================
   MODAL FORMULARIO
================================================== */

.modal {

    position: fixed;

    inset: 0;

    background: rgba(0,0,0,.75);

    display: none;

    justify-content: center;

    align-items: center;

    z-index: 5000;

    padding: 20px;

}

.modal.active {

    display: flex;

}

.modal-content {

    background: white;

    width: 100%;

    max-width: 550px;

    border-radius: 24px;

    padding: 35px;

    position: relative;

    animation: modalShow .3s ease;

}

@keyframes modalShow {

    from {
        opacity: 0;
        transform: translateY(20px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }

}

.close-modal {

    position: absolute;

    top: 15px;

    right: 15px;

    width: 40px;

    height: 40px;

    border-radius: 50%;

    background: #f0f0f0;

    font-size: 1.5rem;

}

.modal-content h3 {

    margin-bottom: 25px;

    text-align: center;

}

.modal-content form {

    display: flex;

    flex-direction: column;

    gap: 15px;

}

.modal-content input,
.modal-content textarea {

    width: 100%;

    padding: 14px 16px;

    border: 1px solid #ddd;

    border-radius: 12px;

    font-family: inherit;

}

.modal-content textarea {

    resize: vertical;

}

/* ==================================================
   GALERIA
================================================== */

.gallery {

    padding: 100px 0;

    background: #f8fafc;

    text-align: center;

}

.gallery-grid {

    display: grid;

    grid-template-columns: repeat(3,1fr);

    gap: 20px;

}

.gallery-item {

    width: 100%;

    height: 260px;

    object-fit: cover;

    border-radius: 18px;

    cursor: pointer;

    transition: .35s;

    box-shadow: var(--shadow);

}

.gallery-item:hover {

    transform: scale(1.03);

}

/* ==================================================
   LIGHTBOX
================================================== */

.lightbox {

    position: fixed;

    inset: 0;

    background: rgba(0,0,0,.95);

    display: none;

    justify-content: center;

    align-items: center;

    z-index: 6000;

}

.lightbox.active {

    display: flex;

}

#lightboxImage {

    max-width: 90%;

    max-height: 85vh;

    border-radius: 12px;

}

.lightbox-close,
.lightbox-prev,
.lightbox-next {

    position: absolute;

    background: rgba(255,255,255,.15);

    color: white;

    width: 55px;

    height: 55px;

    border-radius: 50%;

    backdrop-filter: blur(10px);

}

.lightbox-close {

    top: 25px;

    right: 25px;

}

.lightbox-prev {

    left: 25px;

    top: 50%;

    transform: translateY(-50%);

}

.lightbox-next {

    right: 25px;

    top: 50%;

    transform: translateY(-50%);

}

/* ==================================================
   NOSOTROS
================================================== */

.about {

    padding: 100px 0;

    text-align: center;

}

.about-description {

    max-width: 850px;

    margin: auto;

    color: var(--gray);

    margin-bottom: 50px;

    font-size: 1.05rem;

}

/* ==================================================
   CARRUSEL
================================================== */

.carousel {

    position: relative;

    overflow: hidden;

}

.carousel-track {

    display: flex;

    gap: 20px;

    transition: .5s ease;

}

.carousel-track img {

    min-width: calc(33.333% - 14px);

    height: 280px;

    object-fit: cover;

    border-radius: 18px;

    box-shadow: var(--shadow);

}

.carousel-btn {

    position: absolute;

    top: 50%;

    transform: translateY(-50%);

    width: 55px;

    height: 55px;

    border-radius: 50%;

    background:transparent;

    box-shadow: var(--shadow);

    z-index: 5;

}

.carousel-btn.prev {

    left: 10px;

}

.carousel-btn.next {

    right: 10px;

}

/* ==================================================
   CONTACTO
================================================== */

.contact {

    padding: 100px 0;

    background: #f8fafc;

    text-align: center;

}

.contact-image {

    margin-bottom: 50px;

}

.contact-image img {

    width: 100%;

    max-height: 500px;

    object-fit: cover;

    border-radius: 24px;

    box-shadow: var(--shadow);

}

.contact-info {

    display: grid;

    grid-template-columns: repeat(3,1fr);

    gap: 25px;

}

.contact-card {

    background: white;

    padding: 35px;

    border-radius: 20px;

    box-shadow: var(--shadow);

}

.contact-card i {

    font-size: 2rem;

    color: var(--primary);

    margin-bottom: 15px;

}

.contact-card h3 {

    margin-bottom: 10px;

}

/* ==================================================
   FOOTER
================================================== */

.footer {

    background: #0c1118;

    color: white;

    padding: 50px 0;

    text-align: center;

}

.social-links {

    display: flex;

    justify-content: center;

    align-items: center;

    gap: 20px;

    margin-bottom: 25px;

}

.social-circle {

    width: 60px;

    height: 60px;

    border-radius: 50%;

    background: var(--primary);

    color: white;

    display: flex;

    align-items: center;

    justify-content: center;

    font-size: 1.3rem;

    transition: .35s;

}

.social-circle:hover {

    transform: translateY(-5px);

}

/* ==================================================
   WHATSAPP FLOTANTE
================================================== */

.whatsapp-float {

    position: fixed;

    right: 25px;

    bottom: 25px;

    width: 70px;

    height: 70px;

    border-radius: 50%;

    background: #25D366;

    color: white;

    display: flex;

    align-items: center;

    justify-content: center;

    font-size: 2rem;

    z-index: 9000;

    box-shadow:
        0 10px 25px rgba(37,211,102,.4);

    animation: pulse 3s infinite;

}

@keyframes pulse {

    0% {
        transform: scale(1);
    }

    50% {
        transform: scale(1.12);
    }

    100% {
        transform: scale(1);
    }

}

/* ==================================================
   TABLET
================================================== */

@media(max-width:992px){

    .hero-grid{

        grid-template-columns: 1fr;

        text-align:center;

    }

    .cards{

        grid-template-columns:1fr;

    }

    .gallery-grid{

        grid-template-columns:repeat(2,1fr);

    }

    .contact-info{

        grid-template-columns:1fr;

    }

    .carousel-track img{

        min-width:calc(50% - 10px);

    }

}

/* ==================================================
   MOBILE
================================================== */

@media(max-width:768px){

    .header-container{

        min-height:80px;

    }

    .hamburger{

        display:block;

    }

    .nav{

        position:fixed;

        top:80px;

        right:-100%;

        width:280px;

        height:100vh;

        background:white;

        box-shadow:-10px 0 25px rgba(0,0,0,.15);

        transition:.4s;

        padding-top:40px;

    }

    .nav.active{

        right:0;

    }

    .nav ul{

        flex-direction:column;

        gap:25px;

    }

    .hero{

        padding-top:140px;

    }

    .hero::before{

        width:450px;

        height:450px;

        right:-250px;

    }

    .hero-center h1{

        font-size:3.5rem;

    }

    .hero-center h2{

        font-size:1.3rem;

    }

    .section-title{

        font-size:2rem;

    }

    .gallery-grid{

        grid-template-columns:1fr;

    }

    .carousel-track img{

        min-width:100%;

    }

    .contact-card{

        padding:25px;

    }

    .whatsapp-float{

        left:20px;

        right:auto;

        width:65px;

        height:65px;

    }

}

/* ==================================================
   MOBILE PEQUEÑO
================================================== */

@media(max-width:480px){

    .container{

        width:92%;

    }

    .logo img{

        max-height:55px;

    }

    .hero-logo img{

        max-width:240px;

    }

    .card{

        padding:28px;

    }

    .modal-content{

        padding:25px;

    }

    .social-circle{

        width:55px;

        height:55px;

    }

}