@font-face {
    font-family: 'Nasalization';
    src: url('../assets/fonts/Nasalization.otf') format('opentype');
}

*{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

body{
    font-family:'Roboto', sans-serif;
    background:#ffffff;
    color:#111;
}

.container{
    width:90%;
    max-width:1200px;
    margin:auto;
}

.section{
    padding:120px 0;
}

/* HEADER */

header {
    background: white;
    position: fixed;
    top: 0;
    width: 100%;
    transition: transform 0.4s ease, opacity 0.4s ease;
    z-index: 999;
}

header.hide {
    transform: translateY(-100%);
    opacity: 0;
}

.nav{
    display:flex;
    align-items:center;
    justify-content:space-between;
    height: 115px;
}

.logo-container img{
    height:90px;
    transition:0.3s ease;
}

.nav-links{
    display:flex;
    gap:50px;
    list-style:none;
}

.nav-links a{
    text-decoration:none;
    color:#111;
    font-family:'Nasalization';
    font-size:18px;
    position:relative;
    transition:0.3s ease;
}

.nav-links a:hover{
    color:#FFC400;
}

.nav-links a::after{
    content:"";
    position:absolute;
    bottom:-5px;
    left:0;
    width:0;
    height:2px;
    background:#FFC400;
    transition:0.3s ease;
}

.nav-links a:hover::after{
    width:100%;
}

/* HERO */

.hero{
    position:relative;
    height:150vh;
    background:url('../assets/hero.png') center/cover no-repeat;
    display:flex;
    justify-content:center;
    align-items:center;
    text-align:center;
    color:white;
    filter: brightness(1.3);
}

/* Resetear brightness en el contenido para que no afecte al texto */
.hero-content, .overlay {
    filter: brightness(0.77);
}

.overlay{
    position:absolute;
    inset:0;
    background:linear-gradient(to bottom, rgba(0,0,0,0.45), rgba(0,0,0,0.35));
}

.hero-content{
    position:relative;
    z-index:2;
    padding: 0 20px;
}

.hero-title{
    font-family:'Nasalization';
    font-size:70px;
    letter-spacing:4px;
    text-transform:uppercase;
    line-height:1.1;
}

.subtitulo{
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    margin-top: 25px;
}

.subtitulo img{
    width: 40px;
    height: 40px;
    flex-shrink: 0;
}

.hero-tagline{
    font-size:40px;
    color:#FFC400;
    font-weight:500;
    margin-top: 0;
    font-weight: bold;
}

.btn-hero{
    display:inline-block;
    margin-top:35px;
    padding:14px 35px;
    background:#FFC400;
    color:#111;
    text-decoration:none;
    font-weight:600;
    border-radius:50px;
    transition:0.3s ease;
    border:2px solid black;
}

.btn-hero:hover{
    background:white;
    transform:translateY(-3px);
}

/* TITULOS */

.titulo{
    text-align:center;
    font-size:42px;
    margin-bottom:20px;
    position:relative;
}

.titulo::after{
    content:"";
    display:block;
    width:60px;
    height:4px;
    background:#FFC400;
    margin:15px auto 0 auto;
}

.descripcion-seccion{
    text-align:center;
    max-width:800px;
    margin:0 auto 70px auto;
    font-size:18px;
    color:#555;
}

/* SERVICIOS */

#servicios{
    background:linear-gradient(135deg, #151515, #1f1f1f);
    color:white;
}

#servicios .titulo{
    color:white;
}

#servicios .titulo::after{
    background:#FFC400;
}

#servicios .descripcion-seccion{
    color:#ccc;
}

.servicios-grid{
    display:grid;
    grid-template-columns:repeat(3, 1fr);
    gap:40px;
}

.servicio{
    background:#242424;
    border-radius:12px;
    padding:20px;
    display:flex;
    flex-direction:column;
    height:100%;
    transition:0.4s ease;
    box-shadow:0 10px 30px rgba(0,0,0,0.4);
    color: white;
}

.servicio img{
    width:100%;
    height:220px;
    object-fit:cover;
    border-radius:10px;
    margin-bottom:15px;
}

.servicio h3{
    margin:15px 0 10px 0;
}

.servicio p{
    flex-grow:1;
    font-size:15px;
    line-height:1.6;
    color:#cfcfcf;
}

.servicio:hover{
    transform:translateY(-8px);
    box-shadow:0 20px 50px rgba(0,0,0,0.6);
}

/* COBERTURA */

.cobertura{
    background:#f8f9fb;
    padding: 120px 0;
}

.cobertura .container{
    display:flex;
    align-items:center;
    gap:80px;
}

.cobertura-texto{
    flex:1;
}

.cobertura-texto .titulo{
    text-align:left;
}

.cobertura-texto .titulo::after{
    margin:15px 0 0 0;
}

.cobertura-img{
    flex:1;
}

.cobertura-img img{
    width:100%;
    border-radius:12px;
    box-shadow:0 15px 40px rgba(0,0,0,0.15);
}

.cobertura-items{
    margin-top:40px;
}

.cobertura-item{
    display:flex;
    align-items:flex-start;
    gap:18px;
    margin-bottom:30px;
}

.cobertura-item img{
    width:28px;
    height:28px;
    object-fit:contain;
    flex-shrink: 0;
}

.cobertura-item h4{
    font-size:18px;
    margin-bottom:6px;
}

.cobertura-item p{
    font-size:15px;
    line-height:1.6;
    color:#555;
    max-width:450px;
}

/* INSTALACIONES */

#instalaciones{
    background:linear-gradient(135deg, #0f0f0f, #1c1c1c);
    color:white;
    padding:120px 0;
}

#instalaciones .titulo{
    color:white;
}

#instalaciones .titulo::after{
    background:#FFC400;
}

#instalaciones .swiper-slide{
    aspect-ratio:16/9;
}

#instalaciones .swiper-slide img{
    width:100%;
    height:100%;
    object-fit:cover;
    border-radius:12px;
    box-shadow:0 20px 50px rgba(0,0,0,0.5);
    transition:0.4s ease;
}

#instalaciones .swiper-slide img:hover{
    transform:scale(1.03);
}

/* Flechas del swiper */
#instalaciones .swiper-button-next,
#instalaciones .swiper-button-prev {
    color: #FFC400;
    background: rgba(0,0,0,0.5);
    width: 44px;
    height: 44px;
    border-radius: 50%;
    backdrop-filter: blur(4px);
    transition: 0.3s ease;
}

#instalaciones .swiper-button-next:hover,
#instalaciones .swiper-button-prev:hover {
    background: #FFC400;
    color: #111;
}

#instalaciones .swiper-button-next::after,
#instalaciones .swiper-button-prev::after {
    font-size: 16px;
    font-weight: 700;
}

/* CONTACTO */

.contacto {
    background: #0d0d0d;
    color: #fff;
    padding: 100px 0;
    font-family: 'Roboto', sans-serif;
}

.contacto .titulo {
    color: white;
    margin-bottom: 60px;
}

/* Layout principal: datos izq | logo der */
.contacto-inner {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 80px;
    flex-direction: row-reverse; /* logo a la derecha */
}

/* Logo */
.contacto-logo {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.logo-footer {
    height: 130px;
    object-fit: contain;
}

/* Grilla 2x2 de datos */
.contacto-datos {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 28px 48px;
}

/* Copyright */
.contacto-copyright {
    text-align: center;
    margin-top: 60px;
    padding-top: 24px;
    border-top: 1px solid rgba(255,255,255,0.1);
    color: #555;
    font-size: 13px;
    letter-spacing: 0.5px;
}

/* Cada item de contacto */
.contact-item {
    display: flex;
    align-items: center;
    gap: 12px;
    text-decoration: none;
    color: #ccc;
    font-size: 15px;
    transition: color 0.3s ease, background 0.3s ease, transform 0.2s ease;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 10px;
    padding: 12px 16px;
}

.contact-item:hover {
    color: #FFC400;
    background: rgba(255,196,0,0.08);
    border-color: rgba(255,196,0,0.25);
    transform: translateX(4px);
}

.contact-item span {
    color: inherit;
    font-size: 15px;
    font-weight: 400;
    line-height: 1.3;
}

.contact-icon {
    width: 22px;
    height: 22px;
    object-fit: contain;
    flex-shrink: 0;
    /* Tinte amarillo permanente en los íconos */
    filter: brightness(0) saturate(100%) invert(80%) sepia(60%) saturate(500%) hue-rotate(5deg);
}

/* MENU HAMBURGUESA */

.menu-toggle{
    display:none;
    flex-direction:column;
    gap:6px;
    cursor:pointer;
    z-index: 1001;
    padding: 5px;
}

.menu-toggle span{
    width:28px;
    height:3px;
    background:#111;
    border-radius: 2px;
    transition:0.3s;
    display: block;
}

.menu-toggle.active span:nth-child(1){
    transform: translateY(9px) rotate(45deg);
}
.menu-toggle.active span:nth-child(2){
    opacity: 0;
}
.menu-toggle.active span:nth-child(3){
    transform: translateY(-9px) rotate(-45deg);
}


/* =====================
   RESPONSIVE - TABLET
   ===================== */
@media(max-width:992px){
    .servicios-grid{
        grid-template-columns:repeat(2,1fr);
    }
    .contacto-grid{
        gap: 50px;
    }
}


/* =====================
   RESPONSIVE - MOBILE
   ===================== */
@media(max-width:768px){

    /* --- Header & Nav --- */
    .nav {
        height: 70px;
    }

    .logo-container img{
        height:60px;
    }

    .menu-toggle{
        display:flex;
    }

    /* Nav oculto por defecto en mobile — NO hay regla global nav{display:block} */
    nav{
        position: fixed;
        top: 70px;
        left: 0;
        width: 100%;
        background: white;
        display: none;
        padding: 30px 0;
        box-shadow: 0 15px 30px rgba(0,0,0,0.08);
        z-index: 998;
    }

    nav.open {
        display: block;
    }

    .nav-links{
        flex-direction: column;
        align-items: center;
        gap: 30px;
    }

    /* --- Hero: cover normal, el hero es tan alto como la imagen natural --- */
    .hero{
        height: auto;
        /* La imagen dicta la altura; el padding empuja el contenido al centro */
        padding: 90px 20px 60px 20px;
        background-size: cover;
        background-position: center center;
        /* min-height para que nunca sea demasiado chico */
        min-height: 60vw;
    }

    .hero-title{
        font-size: 34px;
        letter-spacing: 2px;
    }

    .subtitulo {
        flex-wrap: wrap;
        gap: 8px;
    }

    .hero-tagline{
        font-size: 17px;
    }

    .subtitulo img {
        width: 26px;
        height: 26px;
    }

    .btn-hero{
        padding:9px 22px;
        font-size:13px;
        margin-top: 24px;
    }

    /* --- Secciones generales --- */
    .section{
        padding: 70px 0;
    }

    .titulo {
        font-size: 28px;
    }

    .descripcion-seccion {
        font-size: 15px;
        margin-bottom: 40px;
    }

    /* --- Servicios --- */
    .servicios-grid{
        grid-template-columns: 1fr;
        gap: 24px;
    }

    .servicio img {
        height: 200px;
    }

    /* --- Cobertura: título → imagen → items --- */
    .cobertura {
        padding: 70px 0;
    }

    .cobertura .container{
        flex-direction: column;
        gap: 30px;
        text-align: center;
    }

    /* orden: titulo (dentro de cobertura-texto) = 1, imagen = 2, items (dentro de cobertura-texto) = 3 */
    /* Separamos visualmente: título arriba, imagen en medio, items abajo */
    .cobertura-texto .titulo {
        text-align: center;
        order: 1;
    }

    .cobertura-texto .titulo::after{
        margin: 15px auto 0 auto;
    }

    /* La imagen va entre el título y los items */
    .cobertura-img {
        order: 2;
    }

    /* El bloque de texto completo va después de la imagen */
    .cobertura-texto {
        order: 3;
        width: 100%;
    }

    /* Ocultamos el titulo dentro de cobertura-texto para reubicarlo */
    /* No podemos mover solo el titulo con CSS puro, así que ponemos la imagen 
       después del container con order en el flex padre */
    /* Solución limpia: imagen entre titulo e items mediante order en el container */
    .cobertura .container {
        display: flex;
        flex-direction: column;
    }

    /* cobertura-texto tiene titulo + items; la imagen la intercalamos visualmente */
    /* Como el HTML es: cobertura-texto (titulo + items), cobertura-img */
    /* Queremos en mobile: titulo, imagen, items */
    /* Separamos cobertura-texto en dos partes visualmente con padding */
    .cobertura-items {
        margin-top: 0;
    }

    .cobertura-item {
        text-align: left;
    }

    /* --- Instalaciones --- */
    #instalaciones {
        padding: 70px 0;
    }

    #instalaciones .swiper-slide {
        aspect-ratio: 4/3;
    }

    #instalaciones .swiper-button-next,
    #instalaciones .swiper-button-prev {
        width: 36px;
        height: 36px;
    }

    #instalaciones .swiper-button-next::after,
    #instalaciones .swiper-button-prev::after {
        font-size: 13px;
    }

    /* --- Contacto mobile: logo arriba centrado, datos en 2 cols abajo --- */
    .contacto {
        padding: 60px 0;
    }

    .contacto .titulo {
        margin-bottom: 36px;
    }

    .contacto-inner {
        flex-direction: column; /* en mobile logo arriba, datos abajo */
        gap: 32px;
        align-items: center;
    }

    .logo-footer {
        height: 90px;
    }

    .contacto-datos {
        grid-template-columns: 1fr;
        gap: 20px;
        width: 100%;
        max-width: 280px;
    }

    .contact-item {
        font-size: 15px;
        gap: 10px;
        padding: 12px 14px;
    }

    .contact-item span {
        font-size: 15px;
        word-break: break-word;
    }

    .contact-icon {
        width: 24px;
        height: 24px;
    }
}


/* =====================
   RESPONSIVE - SMALL MOBILE
   ===================== */
@media(max-width:400px){
    .hero-title {
        font-size: 26px;
        letter-spacing: 1px;
    }

    .hero-tagline {
        font-size: 15px;
    }

    .servicios-grid {
        gap: 18px;
    }
}

/* =====================
   COBERTURA - imagen duplicada mobile/desktop
   ===================== */

/* En desktop: mostrar solo la imagen de la derecha, ocultar la de mobile */
.cobertura-img-mobile {
    display: none;
}

.cobertura-img-desktop {
    display: block;
}

@media(max-width:768px){
    /* En mobile: mostrar la imagen interna (entre titulo e items), ocultar la de desktop */
    .cobertura-img-mobile {
        display: block;
        width: 100%;
        margin: 24px 0;
    }

    .cobertura-img-mobile img {
        width: 100%;
        border-radius: 12px;
        box-shadow: 0 15px 40px rgba(0,0,0,0.15);
    }

    .cobertura-img-desktop {
        display: none;
    }

    /* El container en mobile vuelve a column simple */
    .cobertura .container {
        flex-direction: column;
    }

    .cobertura-texto {
        width: 100%;
        text-align: center;
        order: unset;
    }

    .cobertura-img {
        order: unset;
    }
}