/*1. Selector Universal*/
* {
    padding: 0;
    margin: 0;
    box-sizing: border-box; /*clave para responsividad*/
}
html {
    scroll-padding-top: 80px; /* Al clickear un link, frena 80px antes */
}
/* 2. ESTILOS GLOBALES */
:root {    
    --color-principal: #0084CA; 
    --color-secundario: #f8f9fa; 
    --color-texto: #333333;    
    --color-opcional: #1B91FB;
    --color-liviano:#ADEBFF;
}
body {
    min-height: 100vh;
    font-family:'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; /* Elegimos una fuente limpia y legible */
    line-height: 1.6; /*Legibilidad del texto */    
    background-image: url(assets/waves.webp) ;
    background-position: center center;    
    background-size:cover;
    background-repeat: no-repeat;
    background-attachment: fixed;
    scroll-behavior: smooth; /*Navegación 'one-page' más agradable */
    text-align: center;
    width: 100%;
    overflow-x: hidden; /* Esto prohíbe el desplazamiento lateral*/
}
img {
    max-width: 100%; /* Clave de la responsividad */
    height: auto;    /* Proporción de la imagen */
}
h1, h2 {
    color: var(--color-texto); 
    margin-bottom: 0.5em; /* Espaciado debajo de los títulos */
    font-family: "Kumbh Sans", sans-serif;
    font-weight: bold;    
}
a {
    color: var(--color-principal); 
    text-decoration: none; 
}
a:hover {
    color: var(--color-acento);
}
/* Para que el padding superior no oculte el título */
section:not(:first-of-type) {
    padding: 40px 0; /* Agrega espacio vertical entre secciones */
}


/* 3. ESTILOS DE BARRA DE NAVEGACIÓN */
/* 3.1. Reducir la altura total de la barra con padding más ajustado */
.navbar {
    padding-top: 0; 
    padding-bottom: 0;      
}
.custom-nav {
    background-color: var(--color-secundario)!important;
    box-shadow: 0 2px 10px rgba(0,0,0,0.3);  
    position: fixed !important;
    top: 0;
    width: 100%;    
    z-index: 2000; /* Prioridad máxima sobre el contenido */ 
}
.sticky-top {
    position: -webkit-sticky; /* Soporte por Safari */
    position: sticky;
    top: 0;
}
.my-toggler {
    border-color: var(--color-texto) !important; /* Borde del cuadradito */    
}

.my-toggler .navbar-toggler-icon {    
    /* Control sobre color sin filtros */
    background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(51, 51, 51, 1)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");
}

/* 3.2. Ajustar el espaciado de la barra  */
.navbar-brand img {
    height: 60px; /* Altura */
    width: auto; 
}
.navbar-brand {
    font-size: 1.25rem;    
}
.navbar-brand, .navbar-nav .nav-link {
    color: var(--color-texto) !important; 
    font-weight: bold;
}
.navbar-nav .nav-link:hover {
    color: var(--color-opcional) !important;
}


/* 4. ESTILOS DE ENCABEZADO Y CARRUSEL */
/* 4.1. Sección de Título */
#titulo {      
    min-height: 60vh; 
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;    
    padding: 100px 20px 60px 20px;
    text-align: center;       
}
#titulo img{
    height:auto;
    max-width: 100%;
}
#titulo h1 {  
  
    margin: 0; 
    font-size: clamp(3rem, 10vw, 6rem); /* Se adapta al tamaño de la pantalla */
    letter-spacing: -2px;
    line-height: 1;
    margin-bottom: 20px;    
    font-family: 'Kumbh Sans', sans-serif;
    font-weight: 900;
    font-size: clamp(2.5rem, 8vw, 5rem); /* Grande y legible */
    color: var(--color-texto);
    margin: 0;
    line-height: 1.1;
    letter-spacing: -1px;
}
/* 4.2. Mejoras del Carrusel */
/* Imágenes tengan una altura fija y uniforme */
.carousel-inner img {    
    height: 450px;
    object-fit: cover;
    width: 100%;
}
/* Estilo para las leyendas dentro del carrusel */
.carousel-caption {
    background-color: rgba(19, 19, 19, 0.5); /*Fondo semitransparente */
    padding: 15px;
    border-radius: 5px;
}
.carousel-caption p {
    color: white;
    font-size: 2rem; 
    font-weight: 600;   
}
/* 4.3. Limitar el tamaño del carrusel */
.carousel {   
    max-width: 1000px; 
    margin: 0 auto;    
    overflow: hidden; /* Asegura que las imágenes no se salgan de las esquinas */
    
}
/*4.4. Whatsapp*/
.bnt-float{
    position: fixed; /* Flotante */
    z-index: 100;
    bottom: 30px;
    right: 40px;
    width: 55px;
    height: 55px;  
    background-size: cover; 
}
@keyframes latido {
    /* Movimientos en X e Y */
    0%   { transform: translate(1px, 1px) rotate(0deg); }
    25%  { transform: translate(-1px, -1px) rotate(-0.5deg); }
    50%  { transform: translate(1px, -1px) rotate(0.5deg); }
    75%  { transform: translate(-1px, 1px) rotate(-0.5deg); }
    100% { transform: translate(1px, 1px) rotate(0deg); }
}
.animar-vibracion{
    animation: latido 2s infinite;
}
/* 5. ESTILOS DE SECCIÓN DE CONTENIDO (Quienes Somos, Misión) */
#contenedor-mision{   
    min-height: auto;
    padding: 0;
}
.contenido-principal{    
    max-width: 1200px;   
    margin: 0 auto;    
    padding: 0 15px; 
    text-align: center;   
    font-size: 2rem;
    font-weight: 600; 
    color: var(--color-texto);
    width: 80%;          
}
.contenido-principal, .contenido-trabajos {
    padding-top: 5px;
    padding-bottom: 3px;    
}
.contenido-trabajos {
    text-align: center;
}
.contenido-mision{
    max-width: 1200px;
    width: 80%;
    margin: 0 auto;
    padding: 0 auto;
    text-align: center;
    color: var(--color-texto);
    font-size: 2rem;
    font-weight: 600;
    background-color: var(--color-secundario);    
}
.contenido-somos {
    background-color: var(--color-secundario);   
}
#mision {
    text-align: center;
    scroll-margin-top: 120px;
}
#nosotros {
    text-align: center;
    scroll-margin-top: 120px;
}

/* 6. ESTILOS DE SECCIÓN DE CONTACTO */
.contacto-contenedor{
    color: var(--color-secundario);
    background-color: var(--color-principal);
    height: auto;        
    margin-left: auto; 
    margin-right: auto; 
    width: 90%;         
    max-width: 1200px;  /* No deja que se estire infinito */ 
    
}
.contacto-contenido {
    display: flex;
    flex-wrap: wrap; /* Importante para que en móvil se pongan uno abajo del otro */
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    max-width: 1200px;
    margin: 0 auto;
    padding: 20px;
}
/* El Video: ahora es más pequeño (importancia secundaria) */
.contacto-contenido > div {
    flex: 0 1 350px; /* No crece más de 150px */
}
#contacto{
    color: var(--color-texto);
    text-align: center;
    font-size: 2.2rem;
    padding-top: 20px !important; /* El mínimo para que respire un poco */
    margin-top: 0 !important;
}

/* 6.1. Ajuste del Video (iframe) */
.contacto-contenido iframe {
    flex-grow: 1; 
    min-width: 350px; 
    height: 200px;
    padding: 20px;
}
video {
    width: 100%;
    max-width: 400px; 
    height: auto;
    border-radius: 10px;
}
/* 6.2. Estilo para el bloque de dirección (article/address) */
/* Los Datos: tienen más espacio para evitar que el texto escape */
.contacto-contenido article {
    flex: 1 1 500px; /* Crece para ocupar el espacio sobrante */
    text-align: left;
    padding-left: 20px;
    
}
.contacto-contenido address {    
    font-style: normal;
    color: white;
    font-size: 1rem; 
    font-weight: 300;
}
/* 6.3. Estilo para las imágenes como ÍCONOS */
.contacto-contenido img {
    width: 30px; /* Tamaño uniforme para los iconos */
    height: auto;
} 
/* Alinea los elementos de la dirección (ícono y texto) */
.contacto-contenido address br {
    display: none; 
}
.contacto-contenido address {
    /* Flexbox en la dirección para alinear horizontalmente cada línea */
    display: flex;
    flex-direction: column; 
}
/* 6.4. Alineación final de cada línea de contacto */
/* Ajuste específico para los iconos y el texto */
.contacto-contenido address p {
    font-size: 1.1rem;
    display: flex;
    align-items: center;
    gap: 15px;
    word-break: break-word; /* Corta el email si es necesario en pantallas mini */
}
.img-fluid {
    margin-top: 20px;
}

/* 8. ESTILOS DE PIE DE PÁGINA (FOOTER) */
footer {
    background-color: var(--color-texto); 
    color: white; 
    padding: 15px 0;    
    display: flex;
    justify-content: center; 
    align-items: center;     
    font-size: 0.9rem; 
    margin: 0;
}
/* Estilo para el ícono de copyright */
footer img {
    width: 20px; 
    height: 20px;
    margin-right: 8px; /* Espacio entre el ícono y el texto */
}
footer p {
    margin: 0;
}

/* 9. ESTILOS DE TARJETAS */
/* Centra el título de la sección de servicios */
#servicios {
    text-align:center;
    color: var(--color-texto);
    font-size: 2.3rem;
    scroll-margin-top: 100px;     
}
/* 9.1. Asegurar la altura de la imagen */
.card-img-top {
    height: 250px; 
    object-fit: contain; /* Asegura que la imagen completa se muestre */
    width: 100%;
}
/* 9.2. Estilos para la lista de servicios (bullets) */
.card-body ul {
    list-style-type: none; 
    padding-left: 0; 
}
.card-body ul li {
    padding-left: 2.5em; /*Crea espacio para un bullet */
    position: relative; /* Para posicionar el bullet */
    margin-bottom: 8px;
    line-height: 1.4;
    color: var(--color-principal);
}
/* Creamos un bullet o ícono con pseudo-elementos*/
.card-body ul li::before {    
    content: "➢"; 
    color: var(--color-principal); 
    font-size: 1.2em;
    position:absolute;
    left: 0;
}

/* 9.3. ESTILO CLAVE PARA UNIFORMIDAD DE ALTURA DE TODA LA TARJETA */
.card {
    height: 100%;
    width: 100%; /* Las tarjetas deben llenar el 100% de la altura de la columna de la grilla */
    display: flex; 
    flex-direction: column; 
}

/* 9.4. Uniformidad del cuerpo de la tarjeta */
.card-body {
    flex-grow: 1; /* Esto hace que el cuerpo ocupe todo el espacio disponible */
    display: flex;
    flex-direction: column;
    justify-content: flex-start; 
}

/* 9.5. Ajuste del espaciado interno del texto */
.card-body ul {
    margin-bottom: 0; /* Quita el margen inferior de la lista para mejor control */
}
.card h5{
    color: var(--color-principal);
    font-size: 2rem;
}
#card-text{
    color: var(--color-principal);
}
/*NUESTROS DIFERENCIALES*/
.contenido-diferenciales {
    max-width: 1200px;
    margin:  50px 0 50px;
    padding: 0 15px;
    text-align: center;
    color: var(--color-secundario);
    font-size: 2rem;
    font-weight: 600;
    line-height: 1;
    margin-left: auto;  
    margin-right: auto;
    width: 90%;        
}    

/* NUESTROS CLIENTES */
.contenido-clientes {
    max-width: 1200px; 
    margin: 0 auto; 
    padding: 0 15px; /* Evita que se pegue a los bordes en móviles */
    text-align: center; 
    color: var(--color-texto);
    font-size: 2rem;
    font-weight: 700;
    margin-left: auto;  /* Empuja desde la izquierda */
    margin-right: auto; /* Empuja desde la derecha */
    width: 90%;             
}
/* Aseguramos que las imágenes dentro de la grilla de clientes sean responsivas */
.contenido-clientes img {
    max-width: 100%;
    height: auto;
    padding: 10px;
}
#clientes {
    padding-bottom: 0 !important;
    margin-bottom: 0 !important;
}

/*NUESTROS TRABAJOS*/



/* 7. MEDIA QUERIES  */
@media (max-width: 768px) {
    body {
        background-attachment: scroll;
        background-size: cover !important;
        background-position: center center !important;
        background-repeat: repeat-y !important;         
    }
    /* Ajusta el espaciado de las secciones */
    section {
        padding: 30px 15px;
    }
    .col {
        margin-bottom: 20px; /* Separa las tarjetas cuando se apilan */
    }
    
    /* 7.1. APILAR VIDEO Y DATOS DE CONTACTO */    
    .contacto-contenido {
        .contacto-contenido {
        gap: 20px;           /* Menos espacio vertical cuando se apilan */
        padding: 10px;
    }
    }    
    /* Forzamos que el video y el texto ocupen todo el ancho */
    .contacto-contenido iframe, .contacto-contenido article {
        width: 100% !important; 
        min-width: unset;
    }    
    #titulo h1 {
        font-size: 2.2rem;
        text-align: center;
    }
    /* 7.3. Ajuste del espaciado de las secciones */
    section:not(:first-of-type) {
        padding: 40px 0;
    }
    /* 7.4. Texto tamaño cómodo a la vista*/
    h1 {
         font-size: 1.8rem !important; 
        }
    h2 { 
        font-size: 1.6rem !important; 
    }
    p, li {
         font-size: 1rem; 
        }
    .card h5 { font-size: 1.4rem !important; }
    /* 7.5. Botón Whatsapp*/    
    .bnt-float {
        width: 55px; /* Un poco más compacto en móvil */
        height: 55px;
        bottom: 20px; /* Más cerca de la esquina */
        right: 20px;
        padding: 10px;
    }
    .video-trabajos {
        width: 95%;        
    }

}
@media (max-width: 991px) {
    .navbar-collapse {        
        background-color: var(--color-secundario);    
        padding: 1rem;
        border-radius: 0 0 10px 10px;
        margin-top: 5px; 
              
    }    
    .nav-item {
        border-bottom: 1px solid rgba(255,255,255,0.1);
    }
    .carousel-inner img {
        height: 300px; 
    }
    .video-responsive {
        width: 95%; 
    }
}
/* Corregir el salto del ancla para que no tape el contenido */
html {
    scroll-padding-top: 70px; 
}
@media (max-width: 576px) {        
    /* Hacemos que los títulos del carrusel sean legibles en móvil */
    .carousel-caption h2 {
        font-size: 1.2rem;
    }
    .carousel-caption p {
        font-size: 0.9rem !important; 
    }
    .carousel-inner img {
        height: 250px; 
    }
    .carousel {
        margin: 0 10px;
    }
}





