/* ==========================================
   1. CONFIGURATION GÉNÉRALE & FONT
   ========================================== */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
html, body {
    width: 100%;
    overflow-x: hidden; /* Supprime le scroll horizontal indésirable */
}
body {
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    background-color: #f9fafb;
    color: #1f2937;
    scroll-behavior: smooth;
}

.container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

/* Scrollbar personnalisée (Couleur verte JD Confort) */
::-webkit-scrollbar {
    width: 8px;
}
::-webkit-scrollbar-track {
    background: #f1f1f1;
}
::-webkit-scrollbar-thumb {
    background: #16a34a; 
    border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
    background: #15803d;
}

/* ==========================================
   2. LE MENU DE NAVIGATION (HEADER)
   ========================================== */
header {
    background-color: #fff2f2;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
    position: fixed;    
    top: 0;
    left: 0;
    width: 100%; 
    box-sizing: border-box; 
    z-index: 1000;      
}

.header-container {
    display: flex;
    justify-content: space-between; 
    align-items: center;
    padding: 6px 20px; 
    width: 100%; 
    box-sizing: border-box; 
}

.logo {
    display: flex;
    justify-content: flex-start;
}

.logo img {
    height: 50px;      
    width: auto;
    max-width: 100%;    
}

/* Style du bouton hamburger (Caché sur ordinateur, apparaîtra sur mobile) */
.menu-toggle {
    display: none; 
    background: transparent !important;
    border: none !important;
    cursor: pointer;
    padding: 5px 10px;
    z-index: 1001;
    color: #16a34a !important;
    font-size: 32px !important;
    line-height: 1 !important;
}

.menu-toggle svg, 
.menu-toggle i {
    color: #16a34a !important;   
    stroke: #16a34a !important;  
    width: 32px !important; 
    height: 32px !important;
    display: block;
}

.nav-menu {
    display: flex;
    gap: 30px;
    margin-right: 40px;
}

.nav-menu a {
    text-decoration: none;
    color: #0263ff; /* Bleu JD Confort */
    font-weight: 800;
    padding-bottom: 5px;
    border-bottom: 2px solid transparent;
    transition: all 0.2s ease;
}

.nav-menu a:hover {
    color: #16a34a; /* Passe au vert au survol */
    border-bottom: 2px solid #16a34a;
}

/* ==========================================
   3. LA BANNIÈRE (HERO SECTION - DESKTOP PAR DÉFAUT)
   ========================================== */
.hero-banner {
    height: calc(100vh - 62px); 
    width: 100vw;
    box-sizing: border-box;
    
    background-image: url('images/hero-camion.png'); 
    background-size: cover;
    background-position: center center; /* Centrage propre pour les grands écrans desktop */
    background-repeat: no-repeat;
    
    margin-left: calc(50% - 50vw); 
    margin-top: 62px; 
    
    position: relative;
    display: flex;
    align-items: flex-end;
    justify-content: center;
}

.hero-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.142); 
}

/* Style des boutons sur Desktop */
.button-container {
    position: relative;
    z-index: 10;
    display: flex;
    gap: 20px;
    margin-bottom: 60px; 
    width: 100%;
    justify-content: center;
}

/* ==========================================
   TABLETTE (600px à 1024px)
   ========================================== */
@media (min-width: 600px) and (max-width: 1024px) {
    .hero-banner {
        background-position: 75% 50%; 
    }
}

/* ==========================================
   MOBILE (< 600px)
   ========================================== */
@media (max-width: 640px) {
    .hero-banner {
        width: 100vw;
        margin-left: calc(50% - 50vw);
        height: calc(100vh - 62px);
        min-height: calc(100vh - 62px);
        
        background-size: cover;
        background-position: 80% center !important; 
        background-repeat: no-repeat;
    }

    /* Le conteneur des boutons calé proprement en bas de l'écran sur mobile */
    .button-container {
        position: absolute;
        bottom: 30px;
        left: 0;
        right: 0;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 12px;          
        padding: 0 20px;    
        width: 100%;
        box-sizing: border-box;
        margin-bottom: 0;
    }

    .button-container .btn {
        width: 100vw; 
        max-width: 290px;    
        font-size: 15px;    
        padding: 12px 16px;  
        box-sizing: border-box;
    }
}

.hero-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.142); /* Légèrement assombri pour faire ressortir le camion */
}

.button-container {
    position: relative;
    z-index: 10;
    display: flex;
    gap: 20px;
    margin-bottom: 60px; /* Un peu plus d'espace pour remonter légèrement les boutons du bas */
    width: 100%;
    justify-content: center;
}

/* Style des Boutons */
.btn {
    text-decoration: none;
    font-size: 18px;
    font-weight: bold;
    color: #ffffff; 
    padding: 12px 24px; 
    border-radius: 12px;
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3);
    transition: transform 0.2s ease, background-color 0.2s ease;
    text-align: center;
    display: inline-block; 
}

.btn:hover {
    transform: scale(1.05); 
}

.btn-urgence {
    background-color: #ea5a0c; 
}
.btn-urgence:hover {
    background-color: #c20c0c;
}

.btn-devis {
    background-color: #16a34a; 
}
.btn-devis:hover {
    background-color: #073b8e;
}

.btn-urgence {
    background-color: #ea5a0c; /* Orange urgence */
}
.btn-urgence:hover {
    background-color: #c20c0c;
}

.btn-devis {
    background-color: #16a34a; /* Vert devis */
}
.btn-devis:hover {
    background-color: #073b8e;
}
/* --- Style du Popup d'Urgence --- */
.modal-overlay {
    display: none; /* Caché par défaut */
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.6);
    z-index: 1000;
    justify-content: center;
    align-items: center;
    backdrop-filter: blur(3px);
}

.modal-content {
    background: #ffffff;
    padding: 30px;
    border-radius: 12px;
    max-width: 420px;
    width: 90%;
    text-align: center;
    box-shadow: 0 10px 25px rgba(0,0,0,0.3);
    position: relative;
    animation: modalScale 0.3s ease-in-out;
}

@keyframes modalScale {
    from { transform: scale(0.8); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}

.modal-close {
    position: absolute;
    top: 10px;
    right: 15px;
    font-size: 28px;
    font-weight: bold;
    color: #aaa;
    cursor: pointer;
    transition: color 0.2s;
}

.modal-close:hover {
    color: #000;
}

.modal-icon {
    font-size: 40px;
    margin-bottom: 10px;
}

.modal-content h3 {
    color: #ea5a0c;
    margin-bottom: 10px;
    font-size: 22px;
}

.modal-content p {
    color: #4b5563;
    font-size: 15px;
    line-height: 1.5;
    margin-bottom: 20px;
}

.modal-phone-number {
    display: inline-block;
    background-color: #ea5a0c;
    color: white;
    font-size: 24px;
    font-weight: bold;
    text-decoration: none;
    padding: 12px 25px;
    border-radius: 8px;
    margin-bottom: 15px;
    box-shadow: 0 4px 10px rgba(234, 90, 12, 0.3);
    transition: background-color 0.2s;
}

.modal-phone-number:hover {
    background-color: #c20c0c;
    color: white;
}

.modal-subtext {
    font-size: 13px;
    color: #9ca3af;
    margin-bottom: 0 !important;
}
/* ==========================================================================
   SECTION NOS PRESTATIONS (STYLE INTERNE & AUTONOME)
   ========================================================================== */

.services-section {
    background-color: #f9fafb; /* Fond gris très clair pour faire ressortir les blocs */
    padding: 60px 0;
    width: 100%;
    box-sizing: border-box;
}

/* Conteneur principal en 2 colonnes (PC) */
.prestations-layout {
    display: grid;
    grid-template-columns: 1.1fr 0.9fr; /* Colonne gauche un peu plus large pour l'image */
    gap: 40px;
    align-items: start;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
    box-sizing: border-box;
}

/* --------------------------------------------------------------------------
   COLONNE GAUCHE : TEXTE D'INTRO & GRANDE IMAGE
   -------------------------------------------------------------------------- */
.prestations-intro .services-title {
    color: #2563eb; /* Le beau bleu vif royal */
    font-size: 32px;
    font-weight: 800;
    line-height: 1.25;
    margin-top: 0;
    margin-bottom: 20px;
}

.prestations-intro .intro-text {
    font-size: 16px;
    line-height: 1.6;
    color: #1f2937; /* Gris foncé textuel très lisible */
    margin-bottom: 25px;
}

.prestations-intro .intro-text strong {
    color: #111827;
    font-weight: 700;
}

/* Conteneur de la grande photo */
.intro-image-container {
    width: 100%;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}

.intro-image {
    width: 100%;
    height: auto;
    display: block;
    object-fit: cover;
}

/* --------------------------------------------------------------------------
   COLONNE DROITE : GRILLE 2X2 & CARTES COMPACTES
   -------------------------------------------------------------------------- */
.services-grid-2x2 {
    display: grid;
    grid-template-columns: repeat(2, 1fr); /* Grille de 2 colonnes égales */
    gap: 20px;
}

/* Style de chaque carte de prestation (Image 2) */
.service-card-compact {
    background-color: #a7bbc7; /* Le fond bleu-gris ardoise doux */
    border-radius: 16px;       /* Beaux angles arrondis */
    padding: 24px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
    box-sizing: border-box;
    
    /* Transition ultra fluide pour l'ombre, le zoom et le déplacement */
    transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1), 
                box-shadow 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

/* L'EFFET DE SOULEVEMENT ET D'OMBRE PORTÉE ORANGE DE LA VIDÉO (Déclenché par le JS) */
.service-card-compact.is-hovered {
    /* !important est là pour gagner le combat contre l'animation de scroll */
    transform: translateY(-12px) scale(1.03) !important; 
    box-shadow: 0 20px 35px rgba(234, 90, 12, 0.35); /* Superbe lueur orange claire diffuse */
}

/* Aligne le carré de l'icône et le titre H3 sur la même ligne */
.card-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
}

/* Petit carré blanc qui contient ton image PNG */
.service-icon {
    background-color: #ffffff;
    width: 50px;
    height: 50px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    padding: 2px;
    box-sizing: border-box;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}

.service-icon img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.service-card-compact h3 {
    font-size: 18px;
    font-weight: 700;
    color: #111827;
    margin: 0;
}

.service-card-compact p {
    font-size: 15px; /* ✅ Corrigé */
    line-height: 1.5;
    color: #374151;
    margin: 10px 0 20px 0; /* ✅ Corrigé (unité px ajoutée) */
    flex-grow: 1;
}

/* Le lien "En savoir plus" */
.service-card-compact .service-link {
    color: #16a34a;
    text-decoration: none;
    font-weight: 700;
    font-size: 14px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    width: max-content;
}

.service-card-compact .service-link .arrow {
    transition: transform 0.2s ease-in-out;
    display: inline-block;
}

/* Animation de la flèche liée à notre classe de survol */
.service-card-compact.is-hovered .service-link .arrow {
    transform: translateX(6px);
}
/* ==========================================================================
   AJUSTEMENT RESPONSIVE : ALIGNEMENT DES BLOCS GRIS SUR TABLETTE (iPad Pro)
   ========================================================================== */

@media (max-width: 1024px) {
    /* 1. On force les deux colonnes principales à s'étirer à 100% sur la même hauteur */
    .prestations-layout {
        display: grid;
        grid-template-columns: 1.1fr 0.9fr;
        gap: 24px;
        align-items: stretch; /* 🌟 Force la colonne de droite à faire la même hauteur que celle de gauche */
    }

    /* On s'assure que l'intro occupe tout l'espace pour dicter la hauteur via la photo */
    .prestations-intro {
        display: flex;
        flex-direction: column;
        height: 100%;
    }

    .intro-image-container {
        flex-grow: 1; /* Permet à la photo de bien occuper le bas */
    }

    /* 2. On configure la grille de droite pour occuper 100% de la hauteur disponible */
    .services-grid-2x2 {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        grid-auto-rows: 1fr; /* Garde les 4 blocs à la même taille */
        gap: 16px;
        height: 100%; /* 🌟 Remplit l'espace pour s'aligner pile sur le bas de la photo */
    }

    /* Ajustement de confort interne des cartes */
    .service-card-compact {
        height: 100%;
        padding: 20px;
    }

    .service-card-compact p {
        font-size: 14px;
        margin: 8px 0 16px 0;
    }
}

/* --------------------------------------------------------------------------
   NOUVEAU - CONTENEUR ET STYLE DU BOUTON DE DEVIS (ORANGE EN CAPSULE)
   -------------------------------------------------------------------------- */
.cta-container {
    grid-column: 1 / -1;        /* Force le bouton à prendre tout l'écran sur PC */
    display: flex;
    justify-content: center;    /* Centre horizontalement le bouton */
    align-items: center;
    width: 100%;
    margin: 50px 0 20px 0;      
    padding: 0 20px;
    box-sizing: border-box;
}

.btn-commande {
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    background-color: #ea5a0c;   /* Fond orange par défaut */
    border: 2px solid #ea5a0c;   /* Bordure orange qui reste au survol */
    border-radius: 50px;         /* Forme capsule */
    text-decoration: none;
    padding: 0 0 0 35px;         
    overflow: hidden;            
    min-height: 60px;            
    box-sizing: border-box;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
    /* Transition globale pour adoucir le changement de couleur de fond et de bordure */
    transition: background-color 0.3s ease, transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1), box-shadow 0.3s ease;
}

.btn-commande .btn-texte {
    color: #ffffff;              /* Texte blanc par défaut */
    font-size: 17px;             
    font-weight: 700;
    line-height: 1.4;
    margin-right: 30px;
    padding: 12px 0;             
    text-align: center;          
    flex-grow: 1;                
    /* Transition pour que le texte passe du blanc à l'orange en douceur */
    transition: color 0.3s ease;
}

.btn-commande .btn-fleche {
    background-color: #ffffff;   /* Bloc blanc par défaut */
    color: #ea5a0c;              /* Flèche orange par défaut */
    width: 60px;                 
    align-self: stretch;         
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: bold;
    font-size: 20px;             
    border-top-left-radius: 20px;
    border-bottom-left-radius: 20px;
    flex-shrink: 0;              
    /* Transition pour effacer le fond blanc du bloc et changer la couleur de la flèche */
    transition: background-color 0.3s ease, color 0.3s ease, transform 0.3s ease;
}

/* ==========================================================================
   🔥 EFFET AU SURVOL (HOVER) : EFFET DE L'IMAGE "bouton original orange blanc 2.png"
   ========================================================================== */
.btn-commande:hover {
    background-color: #ffffff;   /* Le fond devient blanc */
    transform: translateY(-3px); /* Légère élévation */
    box-shadow: 0 10px 20px rgba(234, 90, 12, 0.2); /* Lueur orange subtile */
}

/* Au survol, le grand texte passe à l'orange */
.btn-commande:hover .btn-texte {
    color: #ea5a0c; 
}

/* Au survol, le compartiment de la flèche devient transparent et la flèche devient orange */
.btn-commande:hover .btn-fleche {
    background-color: transparent; /* Supprime le bloc blanc à droite */
    color: #ea5a0c;                /* Assure que la flèche reste orange sur fond blanc */
    transform: translateX(-5px) scale(1.1); /* Avance un peu la flèche vers la gauche pour équilibrer */
}
/* ==========================================
   CORRECTION ALIGNEMENT DU BOUTON + TEXTE SOUS LE CTA
   ========================================== */
.cta-container {
    display: flex !important;
    flex-direction: column !important; /* Force le bouton et le texte à se superposer verticalement */
    align-items: center !important;    /* Centre parfaitement le bouton ET le texte horizontalement */
    justify-content: center;
    width: 100%;
    gap: 15px;                         /* Crée automatiquement l'espace de 15px sous le bouton */
    margin: 40px auto 20px auto;       /* Ajuste les marges globales du bloc */
}

.cta-location-text {
    color: #4b5563;             /* Gris neutre et pro, très lisible */
    font-size: 14px;            /* Taille discrète et élégante */
    margin: 0 !important;       /* On laisse le gap du container gérer l'espace */
    text-align: center;         /* Aligne le texte au milieu */
    font-weight: 500;           /* Donne un tout petit peu de présence au texte */
    line-height: 1.5;
    max-width: 650px;           /* Empêche le texte de s'étaler trop largement sur les grands écrans */
}

/* ==========================================================================
   📱 AJUSTEMENT DES BOUTONS SECONDAIRES POUR LE MODE MOBILE
   ========================================================================== */
/* Version mobile pour que le texte et les boutons restent parfaits sur smartphone */
@media (max-width: 600px) {
    /* Ton code d'origine (on le garde intact) */
    .cta-location-text {
        font-size: 13px;        
        padding: 0 20px;        
    }

    /* 🎯 LE RAJOUT : On force le bloc des deux boutons du bas à s'aérer */
    .cta-secondary-buttons {
        display: flex !important;
        flex-direction: column !important; /* Aligne les deux boutons l'un sous l'autre */
        align-items: center !important;
        gap: 15px !important;              /* Crée l'espace de 15px pour éviter qu'ils se collent */
        width: 100% !important;
        padding: 0 20px;                   /* Aligne les boutons sur les mêmes bords que le texte */
        box-sizing: border-box;
    }

    /* Optionnel : Harmonise la largeur des boutons du bas pour un rendu parfait */
    .cta-secondary-buttons .btn-commande {
        width: 100% !important;
        max-width: 400px;                  /* Évite que les boutons soient trop géants */
    }
}
/* ==========================================================================
   SECTION PROCESS (STYLE MAQUETTE - FIDÈLE À L'IMAGE)
   ========================================================================== */
.process-section {
    background-color: #eef6fc; /* Fond bleu très clair de la maquette */
    padding: 80px 0;
    position: relative;
    overflow: hidden; /* Pour contenir les formes décoratives de fond */
    text-align: center;
}

/* Formes décoratives en arrière-plan (les vagues bleues claires) */
.shape-bg {
    position: absolute;
    background-color: #dbeeff;
    border-radius: 50%;
    opacity: 0.7;
    pointer-events: none;
    z-index: 1;
}
.shape-left {
    width: 300px;
    height: 300px;
    bottom: -100px;
    left: -100px;
}
.shape-right {
    width: 400px;
    height: 400px;
    top: -50px;
    right: -100px;
}

.process-section .container {
    position: relative;
    z-index: 2; /* Passe au-dessus des formes décoratives */
}
/* ==========================================================
   LIGNE MULTICOLORE HARMONISÉE (STYLE FIL CONDUCTEUR)
   ========================================================== */
.process-line-color {
    width: 120px;               /* Largeur de la ligne */
    height: 6px;                /* Épaisseur de la ligne */
    margin: 0 auto 30px auto;   /* Centre la ligne et crée l'espace avec le titre */
    border-radius: 10px;        /* Arrondit les deux extrémités de la ligne */
    
    /* Dégradé fluide mélangeant tes 5 couleurs harmonisées de gauche à droite */
    background: linear-gradient(
        to right,
        #0263ff 0%,   /* Bleu JD Confort */
        #16a34a 25%,  /* Vert JD Confort */
        #0f2c59 50%,  /* Bleu Marine Foncé */
        #ea5a0c 75%,  /* Orange Urgence */
        #dc2626 100%  /* Rouge */
    );
}

/* Typographies de l'intro */
.process-title {
    color: #0f2c59; /* Bleu marine foncé de l'image */
    font-size: 32px;
    font-weight: 800;
    max-width: 900px;
    margin: 0 auto 20px auto;
    line-height: 1.3;
}

.process-subtitle {
    color: #5c728e; /* Couleur de texte secondaire */
    font-size: 16px;
    line-height: 1.6;
    max-width: 850px;
    margin: 0 auto 50px auto;
}

/* Grille des étapes */
.process-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr); /* 3 colonnes sur PC */
    gap: 30px;
}

/* Style des cartes d'étapes */
.process-card {
    background: #ffffff;
    border-radius: 20px;
    padding: 25px 30px;
    display: flex;
    align-items: center;
    gap: 20px;
    box-shadow: 0 10px 30px rgba(15, 44, 89, 0.04); /* Ombre très légère et propre */
    text-align: left;
    transition: transform 0.3s ease;
}

.process-card:hover {
    transform: translateY(-5px);
}

/* Le rond numérique bleu clair */
.process-number {
    background-color: #dbeeff;
    color: #0055b3;
    font-size: 22px;
    font-weight: 800;
    width: 60px;
    height: 60px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

/* Contenu textuel des cartes */
.process-content h3 {
    color: #0f2c59;
    font-size: 18px;
    font-weight: 700;
    margin-bottom: 5px;
}

.process-content p {
    color: #2a7742;
    font-size: 16px;
    line-height: 1.4;
}

/* ==========================================================================
   RESPONSIVE DU PROCESS (POUR LES TABLETTES ET MOBILES)
   ========================================================================== */
@media (max-width: 992px) {
    .process-grid {
        grid-template-columns: 1fr; /* Passe sur 1 seule colonne sur tablette/mobile */
        gap: 20px;
        max-width: 500px;
        margin: 0 auto;
    }
    .process-title {
        font-size: 26px;
    }
}

/* ==========================================================================
   RESPONSIVE (S'ADAPTE AUTOMATIQUEMENT AUX ÉCRANS)
   ========================================================================== */
@media (max-width: 992px) {
    .prestations-layout {
        grid-template-columns: 1fr;
        gap: 40px;
    }
    .prestations-intro .services-title {
        font-size: 28px;
    }
}

@media (max-width: 576px) {
    .services-grid-2x2 {
        grid-template-columns: 1fr;
        gap: 15px;
    }
    .service-card-compact {
        padding: 20px;
    }
}
/* ==========================================================================
   SECTION MARQUES PARTENAIRES (SLIDER INFINI AVEC INTERACTION)
   ========================================================================== */
.partners-section {
    padding: 0px 0;
    background-color: #ffffff;
    text-align: center;
}

.partners-title {
    color: #0066cc; 
    font-size: 28px;
    font-weight: 700;
    margin-bottom: 40px;
}

/* Fenêtre d'affichage du slider */
.partners-slider-container {
    width: 100%;
    overflow: hidden;
    position: relative;
    padding: 10px 0;
    cursor: grab; 
    user-select: none; 
}

.partners-slider-container:active {
    cursor: grabbing;
}

/* Le ruban qui contient tous les logos alignés */
.partners-track {
    display: flex;
    align-items: center;
    gap: 60px; 
    width: max-content;
    animation: scrollInfinite 25s linear infinite; 
}

/* ➡️ La ligne qui mettait en pause au survol a été supprimée ici */

/* Style de chaque logo */
.partner-logo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 220px;       
    height: 110px;      
    padding: 0 10px;    
}

.partner-logo img {
    max-width: 150%;
    max-height: 150%;
    object-fit: contain;
    pointer-events: none;
}

/* L'ANIMATION CSS DU DEFILEMENT INFINI */
@keyframes scrollInfinite {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}
/* ==========================================================================
   SECTION CONTACT & MAP
   ========================================================================== */
.contact-section {
    padding: 60px 0;
    background-color: #ffffff;
}

.contact-container {
    max-width: 1140px;
    margin: 0 auto;
    padding: 0 20px;
}

.contact-main-title {
    color: #0066cc;
    font-size: 32px;
    font-weight: 700;
    text-align: center;
    margin-bottom: 45px;
}

/* Grille principale côte à côte */
.contact-layout {
    display: flex;
    flex-direction: row;
    gap: 40px;
    align-items: stretch;
}

/* Boîtes de contenu à 50% chacune */
.contact-form-box, .contact-info-box {
    flex: 1;
    width: 50%;
}

/* Formulaire */
.contact-form-box {
    background-color: #bed9f453;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid #87acf5;
    box-shadow: 0 1px 3px rgba(0,0,0,0.05);
}

.contact-form {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.form-group {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.form-group label {
    color: #4b5563;
    font-size: 14px;
    font-weight: 500;
}

.form-group input, 
.form-group select, 
.form-group textarea {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    font-size: 15px;
    outline: none;
    background-color: #ffffff;
    box-sizing: border-box;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.form-group input:focus, 
.form-group select:focus, 
.form-group textarea:focus {
    border-color: #0066cc;
    box-shadow: 0 0 0 3px rgba(0, 102, 204, 0.15);
}

/* Alignement horizontal pour les boutons Particulier/Pro */
.form-group-row {
    display: flex;
    flex-direction: row;
    gap: 24px;
    margin-bottom: 5px;
}

.radio-container {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    font-size: 15px;
    font-weight: 500;
    color: #4b5563;
}

.radio-container input[type="radio"] {
    width: 18px;
    height: 18px;
    cursor: pointer;
    accent-color: #0066cc;
}

/* Cache le champ entreprise au chargement initial */
/* Nouvelle méthode de masquage propre et 100% compatible avec le JS */
.company-field-hidden {
    opacity: 0 !important;
    visibility: hidden !important;
    height: 0 !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    overflow: hidden !important;
    transition: all 0.3s ease-in-out; /* En bonus : cela fera une jolie animation fluide à l'apparition ! */
}

/* Grille pour mettre Nom et Prénom côte à côte */
.form-row-two-columns {
    display: flex;
    flex-direction: row;
    gap: 16px;
}

.form-row-two-columns .form-group {
    flex: 1;
}

.btn-submit-contact {
    background-color: #0066cc;
    color: #ffffff;
    font-size: 16px;
    font-weight: 600;
    padding: 12px 20px;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    transition: background-color 0.2s;
    width: 100%;
    margin-top: 10px;
}

.btn-submit-contact:hover {
    background-color: #0052a3;
}

/* page de chargement loading-overlay envoie email */
.loading-overlay {
    display: none; /* Masqué par défaut */
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.85); /* Fond blanc légèrement transparent */
    z-index: 9999; /* S'affiche au-dessus de tout le reste */
    justify-content: center;
    align-items: center;
    flex-direction: column;
}

.loader-content {
    text-align: center;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.spinner {
    width: 50px;
    height: 50px;
    border: 5px solid #e1e8ed;
    border-top: 5px solid #0056b3; /* Couleur de votre thème */
    border-radius: 50%;
    animation: spin 1s linear infinite;
    margin: 0 auto 15px auto;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.loader-content p {
    color: #2c3e50;
    font-weight: 600;
    font-size: 16px;
    margin: 0;
}

/* Bloc d'informations et Carte */
.contact-info-box {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 24px;
}

.map-wrapper {
    width: 100%;
    height: 380px;
    border-radius: 16px;
    overflow: hidden;
    border: 1px solid #f3f4f6;
}

.map-wrapper iframe {
    width: 100%;
    height: 100%;
    display: block;
}

/* Carte d'infos pratiques */
.info-details-card {
    background-color: rgba(0, 102, 204, 0.03);
    border: 1px solid rgba(0, 102, 204, 0.08);
    padding: 20px;
    border-radius: 16px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.info-item {
    display: flex;
    align-items: flex-start;
    gap: 14px;
}

.info-icon {
    background-color: #0066cc;
    color: #ffffff;
    padding: 8px;
    border-radius: 8px;
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.info-label {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #004488;
    margin: 0 0 2px 0;
}

.info-value {
    color: #374151;
    font-size: 14.5px;
    font-weight: 500;
}

/* ===========================
   SECTION COMMENTAIRES
=========================== */

.comment-section {
  padding: 60px 20px 80px 20px; 
  background: linear-gradient(135deg, #0b0b0b, #1a1a1a);
  color: #ffffff;
  text-align: center;
  margin-top: 20px;
}

.comment-title {
  font-size: 2.6rem;
  font-weight: 800;
  margin-top: 0;
  margin-bottom: 40px;
  color: #ffffff;
  background: linear-gradient(90deg, var(--brand, #ffffff), var(--brand-2, #cccccc));
  -webkit-background-clip: text; /* Elle y est déjà */
  background-clip: text;         /* 👈 AJOUTE CETTE LIGNE ICI ! */
  -webkit-text-fill-color: transparent;
}

/* ===========================
   SLIDER HORIZONTAL
=========================== */

.comment-slider {
  display: flex;
  gap: 25px;
  overflow-x: auto;
  scroll-behavior: smooth;
  padding: 20px 10px;
  scrollbar-width: thin;
  -webkit-overflow-scrolling: touch; 
}

.comment-slider::-webkit-scrollbar {
  height: 8px;
}

.comment-slider::-webkit-scrollbar-track {
  background: rgba(149, 9, 9, 0.05);
  border-radius: 10px;
}

.comment-slider::-webkit-scrollbar-thumb {
  background: var(--brand);
  border-radius: 10px;
}


/* ===========================
   CARTE COMMENTAIRE
=========================== */

.comment-card {
  min-width: 320px;
  max-width: 350px;
  flex-shrink: 0; 
  padding: 30px 25px;
  border-radius: 16px;
  
  background: rgba(255, 255, 255, 0.03); 
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  
  border: 1px solid rgba(255, 255, 255, 0.1);
  
  /* FORCE la visibilité de base en blanc pour tout le contenu de la carte */
  color: #ffffff !important; 
  
  transition: transform 0.3s cubic-bezier(0.25, 1, 0.5, 1), box-shadow 0.3s ease, border-color 0.3s ease;
}

/* Effet premium au survol */
.comment-card:hover {
  transform: translateY(-6px);
  border-color: rgba(135, 1, 1, 0.6);
  box-shadow: 0 12px 24px rgba(135, 1, 1, 0.4);
}

/* Avatar rond */
.comment-avatar {
  width: 90px;
  height: 90px;
  border-radius: 50%;
  object-fit: cover;
  margin: 0 auto 15px auto;
  display: block;
  border: 3px solid var(--brand);
  box-shadow: 0 4px 12px rgba(0,0,0,0.35);
  transition: transform 0.3s ease;
}

.comment-card:hover .comment-avatar {
  transform: scale(1.03);
}

/* Étoiles */
.stars {
  font-size: 1.3rem;
  color: #ffcc00;
  margin-bottom: 15px;
}

.comment-text {
  font-size: 1.05rem;
  line-height: 1.6;
  margin-bottom: 20px;
  font-style: italic;
  opacity: 0.9;
  
  /* FORCE le texte de l'avis à s'afficher en blanc pour régler le problème de sélection */
  color: #ffffff !important; 
}

.comment-author {
  font-size: 1rem;
  font-weight: 600;
  color: var(--brand) !important; 
}


/* ===========================
   FLÈCHES DE NAVIGATION
=========================== */

.comment-arrows-container {
  display: flex;
  justify-content: center;
  gap: 20px;
  margin-top: 30px;
}

.comment-arrow {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgb(3, 200, 255);
  color: #ffffff;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  font-size: 1.2rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.comment-arrow:hover {
  background: var(--brand);
  border-color: var(--brand);
  color: #17ff02; /* Gardé intact selon ton code */
  transform: scale(1.1);
}

.comment-arrow:active {
  transform: scale(0.95);
}
/* ===========================
   FOOTER
=========================== */
.footer-jd-confort-energetique {
  background: #0b0b0b;
  padding: 60px 20px 30px;
  color: #dddddd;
  margin-top: 60px;
}

.footer-columns {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 40px;
  max-width: 1200px;
  margin: 0 auto;
}

.footer-block {
  flex: 1;
  min-width: 240px;
}

.footer-block h4 {
  font-size: 1.3rem;
  margin-bottom: 15px;
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--brand);
}

.footer-icon {
  width: 28px;
}

/* Style pour les petites icônes de téléphone fixe et mobile */
.phone-icon {
  width: 18px;
  vertical-align: middle;
  margin-right: 5px;
}

.footer-block ul {
  list-style: none;
  padding: 0;
}

.footer-block ul li {
  margin-bottom: 8px;
}

/* Style de base pour les liens du footer (Rend le lien interactif) */
.footer-block a {
  color: var(--brand-2);
  text-decoration: none;
  display: inline-block; /* Indispensable pour permettre le petit décalage (transform) */
  transition: color 0.2s ease, transform 0.2s ease, text-decoration 0.2s ease;
}

/* Effet dynamique au survol : changement visuel instantané */
.footer-block a:hover {
  color: var(--brand); /* Le lien prend la couleur principale de ta marque au survol */
  text-decoration: underline; /* Ajoute un soulignement propre */
  transform: translateX(4px); /* Fait glisser le texte de 4px vers la droite de façon très fluide */
}

/* ==========================================================================
   AJOUT DES PETITES FLÈCHES DISCRÈTES (SUR TOUS LES ÉLÉMENTS)
   ========================================================================== */

/* 1. Flèche pour les liens classiques dans les listes <ul> <li> */
.footer-block ul li a::before {
  content: "› ";
  margin-right: 6px;
  color: var(--brand); /* Couleur orange/verte de ta marque */
  font-weight: bold;
  display: inline-block;
}

/* 2. Flèche pour le lien Google Maps */
.footer-block a[target="_blank"]::before {
  content: "› ";
  margin-right: 6px;
  color: var(--brand); 
  font-weight: bold;
  display: inline-block;
}

/* 3. 🎯 NOUVEAU : Flèche à l'intérieur du bouton vert CONTACTER PAR E-MAIL */
.contact-btn::before {
  content: "› ";
  margin-right: 8px; /* Un tout petit peu plus d'espace pour le bouton */
  color: #18850e; /* On utilise la même couleur verte que ton texte pour que ce soit raccord */
  font-weight: bold;
  display: inline-block;
}

.contact-btn {
  display: inline-block;
  background: var(--brand);
  color: #18850e !important; /* Force la couleur noire pour assurer la lisibilité sur ton fond orange de marque */
  padding: 10px 18px;
  border-radius: 8px;
  font-weight: 700;
  margin-top: 10px;
  transition: opacity 0.2s ease;
}

.contact-btn:hover {
  opacity: 0.9;
}

.footer-credits-inline {
  margin-top: 20px;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: nowrap;
}

.voiniou-logo-inline {
  width: 40px;
  height: auto;
  display: inline-block;
}

.voiniou-link-inline {
  color: #ffd700;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
  display: inline-block;
  transition: opacity 0.2s ease;
}

.voiniou-link-inline:hover {
  opacity: 0.7;
  text-decoration: underline;
}

.footer-socials {
  text-align: center;
  margin-top: 40px;
}

.footer-socials p {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin-bottom: 15px;
}

.social-icon {
  width: 40px;
  margin: 0 10px;
  transition: transform .2s ease;
}

.social-icon:hover {
  transform: scale(1.15);
}

.footer-bottom {
  text-align: center;
  margin-top: 30px;
  border-top: 1px solid #333333;
  padding-top: 20px;
}

.footer-bottom a {
  color: var(--brand);
  text-decoration: none;
}

.footer-bottom a:hover {
  opacity: 0.7;
}
/* ==========================================================================
   📱 RESPONSIVE GLOBAL (ORDONNÉ DU PLUS GRAND AU PLUS PETIT ÉCRAN)
   ========================================================================== */

/* 1. TABLETTES & GRANDS ÉCRANS MOBILES */
@media (max-width: 992px) {
    .process-grid {
        grid-template-columns: 1fr;
        gap: 20px;
        max-width: 500px;
        margin: 0 auto;
    }
    .process-title {
        font-size: 26px;
    }
    .prestations-layout {
        grid-template-columns: 1fr;
        gap: 40px;
    }
    .prestations-intro .services-title {
        font-size: 28px;
    }
}

/* 2. AJUSTEMENT UNIQUE DU CADRAGE HERO POUR LES TABLETTES (EX: IPAD MINI) */
@media (min-width: 768px) and (max-width: 992px) {
    .hero-banner {
        background-position: 68% 50% !important; 
    }
}

/* 3. MOBILES & PETITES TABLETTES (PORTRAIT) */
@media (max-width: 767px) {
    /* Adaptation de la section Contact pour mobile */
    .contact-layout {
        flex-direction: column;
        gap: 30px;
    }
    .contact-form-box, .contact-info-box {
        width: 100%;
    }
    .map-wrapper {
        height: 300px;
    }

    /* Styles généraux existants */
    .hero-banner {
        background-position: 70% 50%; 
        height: 460px; 
    }

    .nav-menu {
        display: flex !important;
        flex-direction: column;
        position: fixed;
        top: 62px;
        left: 100%; 
        width: 100%;
        height: calc(100vh - 62px);
        background-color: #ffffff;
        padding: 30px 20px;
        box-sizing: border-box;
        gap: 20px;
        transition: left 0.4s ease-in-out; 
        z-index: 999;
    }
    
    .nav-menu.active {
        left: 0; 
    }

    .nav-menu a {
        font-size: 18px;
        padding: 10px 0;
        border-bottom: 1px solid #f3f4f6;
        color: #0066cc !important;
    }
    
    .menu-toggle {
        display: block !important;
        visibility: visible !important;
        opacity: 1 !important;
        color: #16a34a !important;
        font-size: 35px !important;
        line-height: 1 !important;
    }

    .button-container {
        flex-direction: column;
        align-items: center; 
        padding: 0 15px;
        gap: 12px; 
    }

    .btn {
        font-size: 16px; 
        padding: 10px 24px; 
        width: auto; 
        max-width: 90%; 
        box-sizing: border-box;
    }
    
    .services-grid, .testimonials-grid {
        grid-template-columns: 1fr; 
    }

    .btn-commande {
        border-radius: 30px;
        padding: 0 0 0 15px;     
        width: 100%;            
        max-width: 100%;         
        justify-content: center; 
    }
    
    .btn-commande .btn-texte {
        font-size: 14px;         
        margin-right: 10px;
        text-align: center;      
    }
    
    .btn-commande .btn-fleche {
        width: 50px;
    }
}

/* 4. SMARTPHONES TRÈS PETITS ÉCRANS */
@media (max-width: 576px) {
    .form-row-two-columns {
        flex-direction: column;
        gap: 20px;
    }
    .services-grid-2x2 {
        grid-template-columns: 1fr;
        gap: 15px;
    }
    .service-card-compact {
        padding: 20px;
    }
}

body.no-scroll {
    overflow: hidden !important;
    height: 100vh !important;
}

/* ==========================================================================
   ANIMATIONS LOCALES DE DEFILEMENT (SCROLL)
   ========================================================================== */
.fade-in-element {
    opacity: 0;
    transform: translateY(50px);
    transition: opacity 1.6s cubic-bezier(0.215, 0.610, 0.355, 1), 
                transform 1.6s cubic-bezier(0.215, 0.610, 0.355, 1);
    will-change: opacity, transform;
}

.fade-in-element.visible {
    opacity: 1;
    transform: translateY(0);
}
