/* ======================================== VARIABLES GLOBALES ET THÈMES =============================================================== */
/* Assurez-vous que ces variables sont définies UNE FOIS en haut de votre fichier CSS principal */
:root {
    --primary: #007bff;
    --primary-dark: #0056b3;
    --accent: #007bff;
    --text: #1a1a1a; /* Noir pour le mode clair */
    --text-inverse: #ffffff; /* Blanc pour le mode clair */
    --bg: #ffffff;
    --bg-alt: #f8f9fa;
    /* Variables additionnelles pour les popups, pour une meilleure cohérence */
    --modal-text-light: #666666;
    --modal-border-color: #cccccc;
    --modal-input-bg-color: #ffffff;
    --primary-rgb: 0, 123, 255; /* Version RGB de la couleur primaire pour les ombres */
    color-scheme: light;

    /* --- Variables spécifiques à la section Projets (Thème Clair) --- */
    --project-bg-top: var(--bg-alt); /* Haut prend la couleur de votre section supérieure (light) */
    --project-bg-bottom: var(--primary); /* Bas prend la couleur primaire */
    --project-card-bg: rgba(255, 255, 255, 0.95); /* Fond de carte blanc presque opaque */
    --project-text-color: var(--text); /* Utilise la couleur de texte principale */
    --project-title-color: var(--primary); /* Met le titre en couleur primaire */
    --project-button-bg: var(--primary);
    --project-button-hover-bg: var(--primary-dark);
    --project-image-overlay-color: rgba(0, 0, 0, 0.5); /* Légèrement sombre pour la lisibilité */

        /* Default filter for light theme (no change, or slight adjustments if needed) */
    --icon-filter: none;
    /* This filter is applied to icons when the button itself is active or hovered (becomes primary color) */
    --icon-active-hover-filter: invert(1) grayscale(1) brightness(2); /* Makes dark icons white/light */
}

[data-theme="dark"] {
    --primary: #007bff;
    --primary-dark: #0056b3;
    --accent: #007bff;
    --text: #f0f0f0; /* Blanc cassé pour le mode sombre (texte principal sur fonds sombres) */
    --text-inverse: #ffffff; /* MAINTENU BLANC : Utilisé pour le texte sur fonds sombres/images assombries */
    --bg: #121212; /* Fond sombre */
    --bg-alt: #1e1e1e; /* Fond alternatif sombre */
    /* Variables additionnelles pour les popups en mode sombre */
    --modal-text-light: #cccccc;
    --modal-border-color: #555555;
    --modal-input-bg-color: #2a2a2a;

    /* --- Variables spécifiques à la section Projets (Thème Sombre) --- */
    --project-bg-top: var(--bg-alt); /* Haut prend la couleur de votre section supérieure (dark) */
    --project-bg-bottom: var(--primary); /* Bas prend la couleur primaire */
    --project-card-bg: rgba(30, 30, 30, 0.9); /* Fond de carte sombre légèrement transparent */
    --project-text-color: var(--text); /* Utilise la couleur de texte principale du thème sombre */
    --project-title-color: var(--primary); /* Le titre reste en couleur primaire (bleu) */
    --project-button-bg: var(--primary);
    --project-button-hover-bg: var(--primary-dark);
    --project-image-overlay-color: rgba(0, 0, 0, 0.5); /* Plus sombre pour le mode sombre */

    /* === MODIFICATION ICI : L'icône doit TOUJOURS être blanche en mode sombre === */
    --icon-filter: invert(1) grayscale(1) brightness(2); /* Force l'icône à être blanche/claire */
}



/*======================================================PRECHARGEMENT DE LA PAGES ANIMATION ==========================================*/

/* Preloader full-screen */
#preloader {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: #fff;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Circular spinner */
.spinner {
  border: 6px solid #f3f3f3;
  border-top: 6px solid #3498db; /* Change this color to match your brand */
  border-radius: 50%;
  width: 50px;
  height: 50px;
  animation: spin 1s linear infinite;
}

/* Spin animation */
@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}



/* ======================================================================= RESET & BASE =================================================== */
*,
*::before,
*::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: 'Poppins', sans-serif;
    background: var(--bg);
    color: var(--text);
    line-height: 1.6;
    scroll-behavior: smooth;
    overflow-x: hidden; /* Empêche le défilement horizontal */
}

img {
    max-width: 100%;
    display: block;
}

a {
    text-decoration: none;
    color: inherit;
}

section {
    padding: 4rem 1.25rem;
}

/* =============================================================== UTILITAIRES =============================================================== */
.container {
    width: 90%;
    max-width: 1200px;
    margin-inline: auto;
}

.btn {
    display: inline-block;
    padding: .75rem 1.75rem;
    background: var(--primary);
    color: var(--text-inverse);
    border-radius: 9999px;
    font-weight: 600;
    transition: background .25s, transform .25s;
}

.btn:hover {
    background: var(--primary-dark);
    transform: translateY(-3px);
}








/* ===================================================================== NAVIGATION ========================================================= */
nav {
    position: fixed; /* Changé de sticky à fixed pour qu'elle soit toujours en haut et flottante */
    top: 0;
    left: 0;
    width: 100%; /* S'assure qu'elle prend toute la largeur */
    background: transparent; /* Transparent au départ */
    box-shadow: none; /* Pas d'ombre au départ */
    z-index: 1000;
    /* Ajout de transitions pour une animation fluide des changements */
    transition: background 0.4s ease, box-shadow 0.4s ease;
}

/* Nouvelle classe ajoutée par JavaScript quand on scroll */
nav.scrolled {
    background: var(--bg); /* Prend la couleur de fond du thème choisi */
    box-shadow: 0 2px 4px rgba(0, 0, 0, .05); /* Ajoute l'ombre habituelle */
}

.nav-wrapper {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
    gap: 2rem;
}

.logo img {
    height: 35px;
    /* Par défaut, le logo sera le logo blanc pour la nav transparente */
    /*content: url('images/logo_all_white.png');
    transition: content 0.4s ease; /* Transition pour le changement d'image du logo */
}


/* Nouveau conteneur pour aligner liens + bouton thème */
.nav-right {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-right: 1.25rem; /* Cohérent avec le padding du nav-wrapper */
}

.nav-links {
    display: flex;
    gap: 1rem;
    align-items: center;
}

.nav-links a {
    position: relative;
    font-weight: 500;
    /* Couleur des liens en blanc au départ (pour tous les thèmes) */
    color: #ffffff;
    transition: color 0.4s ease; /* Transition pour la couleur du texte */
}

/* Quand la nav est scrollée, les liens prennent la couleur du texte du thème */
nav.scrolled .nav-links a {
    color: var(--text); /* Sera noir en mode clair, blanc cassé en mode sombre */
}

.nav-links a::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: -4px;
    width: 0;
    height: 2px;
    /* Soulignement blanc au départ */
    background: #ffffff;
    transition: width .3s, background 0.4s ease; /* Transition pour la couleur du soulignement */
}

/* Quand la nav est scrollée, le soulignement prend la couleur primaire */
nav.scrolled .nav-links a::after {
    background: var(--primary);
}


.nav-links a:hover::after {
    width: 100%;
}

.nav-link.active {
    font-weight: 700;
    color: var(--primary); /* Le lien actif prend toujours la couleur primaire */
}

.nav-link.active::after {
    width: 100%;
    background: var(--primary); /* Le soulignement du lien actif est TOUJOURS bleu */
}

.toggle-theme {
    border: 2px solid #ffffff; /* Bordure blanche au départ */
    background: none;
    color: #ffffff; /* Texte blanc au départ */
    width: 40px;
    height: 40px;
    border-radius: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 1.1rem;
    cursor: pointer;
    transition: background .3s, color .3s, border-color .3s; /* Ajout de la transition de couleur et bordure */
}

/* Quand la nav est scrollée, le bouton thème prend les couleurs du thème */
nav.scrolled .toggle-theme {
    border-color: var(--primary);
    color: var(--primary);
}

.toggle-theme:hover {
    background: var(--primary);
    color: var(--text-inverse);
}

/* --- Burger --- */
.burger {
    display: none; /* Masqué par défaut, affiché sur mobile */
    flex-direction: column;
    gap: 5px;
    background: none;
    border: none;
    cursor: pointer;
    padding: .5rem;
}

.burger .bar {
    width: 22px;
    height: 2px;
    background: #ffffff; /* Barres du burger blanches au départ */
    transition: transform .3s, opacity .3s, background 0.4s ease; /* Transition pour la couleur */
}

/* Quand la nav est scrollée, les barres du burger prennent la couleur du texte du thème */
nav.scrolled .burger .bar {
    background: var(--text);
}

.burger.open .bar:nth-child(1) {
    transform: translateY(7px) rotate(45deg);
}

.burger.open .bar:nth-child(2) {
    opacity: 0;
}

.burger.open .bar:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg);
}

@media (max-width: 768px) {
    .burger {
        display: flex;
    }

    /* Nav-right sur mobile est maintenant dans le menu nav-links */
    .nav-right {
        flex-direction: column;
        align-items: center;
        margin-right: 0;
        width: 100%; /* Occupe toute la largeur pour un meilleur alignement */
    }

    .nav-links {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        flex-direction: column;
        align-items: center;
        background: transparent; /* Rester transparent si on est en haut de page */
        max-height: 0;
        overflow-y: hidden;
        transition: max-height .3s ease, background 0.4s ease; /* Transition pour le fond */
        width: 100vw;
        z-index: 999;
    }

    .nav-links.open {
        max-height: 1000px;
        overflow-y: visible;
        width: 100vw;
        left: 0;
        /* MODIFICATION : Le fond du menu ouvert prend toujours la couleur de fond du thème, qu'on soit scrollé ou non. */
        background: var(--bg);
    }

    /* MODIFICATION : Les liens et le bouton thème DOIVENT prendre les couleurs du thème
    lorsque le menu est ouvert, qu'on soit scrollé ou non. */
    .nav-links.open a,
    .nav-links.open .dropdown-toggle {
        color: var(--text); /* Les liens prennent la couleur du texte du thème */
    }

    .nav-links.open .toggle-theme {
        color: var(--primary); /* Le bouton thème prend la couleur primaire */
        border-color: var(--primary);
    }

    .nav-links.open .burger .bar {
        background: var(--text); /* Les barres du burger prennent la couleur du texte du thème */
    }

    .nav-links a {
        padding: 1rem 0;
        width: 100%;
        text-align: center;
    }

    .nav-links .toggle-theme {
        align-self: center;
        margin: 1rem 0;
        padding: 0.6rem 1rem;
        width: auto;
        border-radius: 9999px;
        font-size: 1rem;
    }
}

/* Ajustements pour le mode sombre */
[data-theme="dark"] nav.scrolled {
    background: var(--bg); /* Fond sombre au scroll */
    box-shadow: 0 2px 4px rgba(255, 255, 255, .05); /* Ombre plus claire */
}

/* Pas besoin de gérer le logo ici, le JS le fera directement */
/* [data-theme="dark"] nav.scrolled .logo img {
    content: url('images/logo_white.png');
} */

/* MODIFICATION : Gardez les liens et dropdown-toggle dans le menu ouvert blancs en mode sombre. */
[data-theme="dark"] .nav-links.open a,
[data-theme="dark"] .nav-links.open .dropdown-toggle {
    color: #ffffff; /* Force les liens à rester blancs quand le menu mobile est ouvert en mode sombre */
}

/* MODIFICATION : Gardez les barres du burger blanches en mode sombre lorsque le menu est ouvert. */
[data-theme="dark"] .nav-links.open .burger .bar {
    background: #ffffff; /* Force les barres du burger à rester blanches quand le menu mobile est ouvert en mode sombre */
}

[data-theme="dark"] nav.scrolled .nav-links a::after,
[data-theme="dark"] nav.scrolled .dropdown-toggle::after {
    background: var(--primary); /* Soulignement de la couleur primaire en mode sombre */
}

[data-theme="dark"] nav.scrolled .toggle-theme {
    border-color: var(--primary);
    color: var(--primary);
}

[data-theme="dark"] .nav-links.open {
    background: var(--bg); /* Le fond du menu mobile ouvert est le fond sombre */
}

/* AJOUT IMPORTANT : Assurez-vous que le soulignement des liens DANS le menu ouvert
reste bleu (primaire) dans TOUS les cas, qu'on soit en mode clair ou sombre. */
.nav-links.open a::after {
    background: var(--primary) !important; /* Le soulignement est toujours bleu (primary) */
}


/* =================================================== MENU DÉROULANT (DROPDOWN) ============================================================*/
/* Dans la section NAVIGATION de votre CSS */

/* Styles pour le bouton de bascule du menu déroulant (dropdown-toggle) */
.dropdown-toggle {
    background: none;
    border: none;
    font: inherit;
    color: #ffffff; /* Blanc au départ */
    padding: 0;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 5px;
    position: relative;
    font-weight: 500;
    transition: color 0.3s;
}

/* Quand la nav est scrollée, le dropdown-toggle prend la couleur du texte du thème */
nav.scrolled .dropdown-toggle {
    color: var(--text);
}

/* Effet de survol et de soulignement pour le bouton dropdown-toggle */
.dropdown-toggle::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: -4px;
    width: 0;
    height: 2px;
    background: #ffffff; /* Soulignement blanc au départ */
    transition: width .3s, background 0.4s ease;
}

/* Quand la nav est scrollée, le soulignement prend la couleur primaire */
nav.scrolled .dropdown-toggle::after {
    background: var(--primary);
}

.dropdown-toggle:hover::after {
    width: 100%;
}

.dropdown-toggle:hover {
    color: var(--primary); /* Change la couleur du texte au survol */
}

/* Styles pour le menu déroulant sur mobile */
@media(max-width: 768px) {
    .dropdown-toggle {
        width: 100%;
        justify-content: center;
        padding: 1rem 0;
    }

    /* Pour le bouton dropdown-toggle en mode mobile, il n'y a pas d'effet de soulignement au survol */
    .dropdown-toggle::after {
        display: none;
    }
}

.dropdown {
    position: relative;
}

.dropdown a {
    display: flex;
    align-items: center;
    gap: 5px;
    cursor: pointer;
}

/* Pour Desktop : afficher au survol */
.dropdown:hover .dropdown-menu {
    display: block;
}

/* Pour Mobile : afficher si .open est activé */
.dropdown.open .dropdown-menu {
    display: block;
}

/* NOUVEAU/MODIFIÉ : Styles pour le contenu du dropdown (non scrollé par défaut) */
.dropdown-menu {
    display: none;
    position: absolute;
    background-color: rgba(255, 255, 255, 0.1); /* Légèrement visible mais transparent */
    backdrop-filter: blur(8px); /* Effet de flou accru pour le dropdown */
    -webkit-backdrop-filter: blur(8px); /* Pour la compatibilité Safari */
    box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.2); /* Garde l'ombre pour la profondeur */

    border-radius: 0.5rem;
    padding: 1rem;
    top: 100%;
    left: 0;
    z-index: 999; /* Assure qu'il est au-dessus du contenu */
    min-width: 200px;

    /* Transitions pour une animation fluide */
    transition: background-color 0.4s ease, backdrop-filter 0.4s ease, color 0.4s ease, box-shadow 0.4s ease;
}

/* NOUVEAU/MODIFIÉ : Styles pour les liens du dropdown quand la nav N'EST PAS scrollée */
.dropdown-menu a {
    display: block;
    padding: 0.25rem 0;
    color: #ffffff; /* Texte des liens blanc par défaut */
    text-decoration: none;
    transition: color 0.4s ease;
}

/* NOUVEAU : Styles pour le dropdown une fois scrollé (la classe 'scrolled' est ajoutée par JS) */
.dropdown-menu.scrolled {
    /* Ces couleurs s'adapteront au thème */
    background-color: var(--bg); /* Prend la couleur de fond du thème (blanc pour light, sombre pour dark) */
    backdrop-filter: none; /* Retire le flou */
    -webkit-backdrop-filter: none;
    box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.2); /* Garde l'ombre, ou tu peux l'ajuster */
}

/* NOUVEAU : Styles pour les liens du dropdown quand la nav EST scrollée */
.dropdown-menu.scrolled a {
    color: var(--text); /* Prend la couleur de texte du thème (noir pour light, blanc cassé pour dark) */
}

/* NOUVEAU/MODIFIÉ : Ajustement pour les titres dans le dropdown (si tu en as) */
.dropdown-menu .dropdown-title {
    font-weight: bold;
    color: #ffffff; /* Blanc par défaut */
    margin-bottom: 0.5rem;
    display: block;
    transition: color 0.4s ease;
}

/* NOUVEAU : Le titre du dropdown prend la couleur du texte du thème une fois scrollé */
.dropdown-menu.scrolled .dropdown-title {
    color: var(--text);
}


/* Pour le menu déroulant mobile */
@media(max-width: 768px) {
    .dropdown:hover .dropdown-menu {
        display: none; /* Masquer au survol pour mobile */
    }

    /* NOUVEAU/MODIFIÉ : Adaptation du dropdown-menu sur mobile */
    .dropdown.open .dropdown-menu {
        display: block;
        position: relative; /* Le faire suivre le flux du document sur mobile */
        top: 0;
        left: 0;
        box-shadow: none;
        background: none; /* Pas de fond distinct en mode mobile car le nav-links.open gère ça */
        padding: 0;
        backdrop-filter: none; /* Pas de flou sur mobile pour le dropdown lui-même */
        -webkit-backdrop-filter: none;
    }

    /* NOUVEAU/MODIFIÉ : Les liens du sous-menu en mode mobile doivent suivre la couleur du texte du thème */
    /* Et quand le nav-links est ouvert, ils doivent tous être var(--text) */
    .nav-links.open .dropdown-menu a {
        color: var(--text); /* Les liens prennent la couleur du texte du thème */
        padding: 1rem 0; /* Rétablir le padding pour chaque lien individuel */
    }

    /* MODIFICATION : Les liens du sous-menu actif doivent également avoir un soulignement bleu. */
    .dropdown-menu a.active::after {
        background: var(--primary) !important;
        width: 100% !important;
    }
}


/* ============================================== STYLE PRESENTATION (Mise à jour complète) ============================================= */


.presentation-section {
    padding: 4rem 1.25rem;
    background: var(--bg-alt); /* Utilise la couleur de fond alternative du thème */
    color: var(--text); /* Utilise la couleur de texte par défaut du thème */
}

.presentation-container {
    display: flex;
    flex-wrap: nowrap; /* Empêche le wrapping sur desktop */
    gap: 2rem;
    align-items: flex-start; /* Align les éléments en haut */
    justify-content: center;
    max-width: 1200px;
    margin-inline: auto;
    padding-left: 1.5rem;
    overflow: hidden; /* Important pour les animations de glissement */
}

/* Le bloc vidéo sur desktop - RESTE CARRÉE (1:1) */
.presentation-video {
    flex: 1 1 400px; /* Prend de l'espace sur desktop */
    max-width: 620px;
    aspect-ratio: 1 / 1; /* REND LA VIDÉO CARRÉE (1:1) */
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
    /* Animation pour l'apparition */
    transform: translateX(-100%); /* Commence hors de l'écran à GAUCHE */
    opacity: 0;
    transition: transform 0.8s ease-out, opacity 0.8s ease-out;
}

/* JavaScript class to activate video animation */
.presentation-video.animate-in {
    transform: translateX(0); /* Glisse vers la droite (position normale) */
    opacity: 1;
}

.presentation-video iframe {
    width: 100%;
    height: 100%;
    border: none;
}

/* Le bloc de contenu (titre, desc, boutons) sur desktop - PAS DE CHANGEMENT */
.presentation-content {
    flex: 1 1 280px; /* Prend de l'espace sur desktop */
    max-width: 400px;
    margin-right: 1rem;
    display: flex;
    flex-direction: column; /* Titre, desc et boutons empilés sur desktop */
    gap: 1.5rem;
    /* Animation pour l'apparition du texte et des boutons */
    opacity: 0;
    transform: translateY(20px); /* Commence légèrement en dessous */
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
    transition-delay: 0.2s; /* Délai pour que la vidéo commence à apparaître en premier */
}

/* JavaScript class to activate content animation */
.presentation-content.animate-in {
    opacity: 1;
    transform: translateY(0);
}

.presentation-title {
    margin-bottom: 0; /* Géré par le gap du conteneur parent */
    color: var(--primary); /* Utilise la couleur primaire du thème */
    font-size: 2.2rem;
    line-height: 1.2;
}

.presentation-desc {
    margin-bottom: 0; /* Géré par le gap du conteneur parent */
    line-height: 1.5;
    font-size: 1.1rem;
    color: var(--text); /* Utilise la couleur de texte par défaut du thème */
}

/* Le conteneur des boutons - RESTE VERTICAL SUR DESKTOP */
.presentation-buttons {
    display: flex;
    flex-direction: column; /* Boutons empilés verticalement sur desktop */
    gap: 1rem;
}

.presentation-btn {
    padding: 1rem;
    border-radius: 12px; /* Coins arrondis par défaut pour desktop */
    border: 1px solid var(--primary);
    background: transparent;
    color: var(--primary);
    cursor: pointer;
    font-weight: 600;
    display: flex;
    flex-direction: row; /* Icône et texte côte-à-côte à l'intérieur du bouton */
    align-items: center;
    gap: 0.75rem;
    transition: background 0.3s, color 0.3s, border-color 0.3s, transform 0.2s, box-shadow 0.3s;
    text-align: left;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
}

.presentation-btn.active {
    background: var(--primary);
    color: var(--text-inverse);
    border-color: var(--primary);
    box-shadow: 0 5px 15px rgba(var(--primary-rgb), 0.2);
    transform: translateY(-2px);
}

.presentation-btn:hover:not(.active) {
    background: var(--primary);
    color: var(--text-inverse);
    border-color: var(--primary);
    opacity: 1;
    transform: translateY(-2px);
    box-shadow: 0 5px 15px rgba(var(--primary-rgb), 0.15);
}

/* Adjustments for dark mode for non-active buttons */
[data-theme="dark"] .presentation-btn:not(.active) {
    border-color: var(--modal-border-color);
    color: var(--text);
    background: var(--bg-alt);
    box-shadow: 0 2px 8px rgba(255, 255, 255, 0.03);
}

/* Adjustments for dark mode for non-active buttons on hover */
[data-theme="dark"] .presentation-btn:hover:not(.active) {
    background: var(--primary);
    color: var(--text-inverse);
    border-color: var(--primary);
    box-shadow: 0 5px 15px rgba(var(--primary-rgb), 0.2);
}

/* --- MODIFICATION ICI POUR L'ICÔNE --- */
.btn-icon {
    width: 24px;
    height: 24px;
    object-fit: contain;
    /* This line applies the filter based on the --icon-filter variable */
    filter: var(--icon-filter);
    transition: filter 0.3s ease;
    align-self: flex-start;
    margin-top: 0.2rem;
}

/* When the button is active or hovered, ensure the icon color matches the text-inverse */
.presentation-btn.active .btn-icon,
.presentation-btn:hover:not(.active) .btn-icon {
    /* When the button background changes to primary, the icon should typically invert/change to match text-inverse */
    /* This filter assumes original icons are dark and need to become light for inverse text */
    filter: invert(1) grayscale(1) brightness(2); /* Makes dark icons white/light */
}

/* Specific rule for dark theme, non-active buttons, on hover to ensure icon is primary color */
[data-theme="dark"] .presentation-btn:hover:not(.active) .btn-icon {
    /* If your icons are originally light, they might need to be darkened for dark theme hover */
    /* If they are dark and you want them to be primary color, you'll need to adjust filter */
    filter: var(--icon-light-mode-filter); /* or a specific filter to make it primary color */
}
/* --- FIN DE LA MODIFICATION --- */


.btn-content-wrapper {
    display: flex;
    flex-direction: column; /* Titre et description empilés verticalement */
    flex-grow: 1;
    text-align: left;
}

.btn-title {
    font-size: 1.25rem;
    color: inherit;
    line-height: 1.2;
    margin-bottom: 0.2rem;
}

.btn-desc {
    font-weight: 400;
    font-size: 0.9rem;
    color: inherit;
    opacity: 0.8;
    line-height: 1.3;
}


/* ============ RESPONSIVE (Mise à jour complète) ============ */
/* Keyframe pour l'animation du contenu mobile (texte et boutons) */
@keyframes fadeInSlideUpMobile {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}


/* ============ RESPONSIVE (Mise à jour complète) ============ */
@media (max-width: 768px) {
    .presentation-container {
        flex-direction: column; /* Empile les éléments verticalement sur mobile */
        align-items: center; /* Centre les éléments */
        padding-left: 1rem;
        padding-right: 1rem;
        gap: 2rem; /* Espace entre les blocs empilés */
    }

    /* Ordre des éléments sur mobile : Titre, Description, Boutons, Vidéo */
    .presentation-content {
        order: 0; /* Le bloc de contenu (titre, desc, boutons) vient en premier */
        width: 100%;
        max-width: 100%; /* Prend toute la largeur disponible */
        margin-right: 0;
        text-align: center; /* Centre le texte */
        /* Applique l'animation des keyframes pour un déclenchement automatique au chargement */
        animation: fadeInSlideUpMobile 0.6s ease-out forwards;
        animation-delay: 0.2s; /* Même délai que pour le contenu desktop */
        /* Assurez-vous que ces propriétés ne sont plus définies ici pour ne pas annuler l'animation */
        /* opacity: 1; */
        /* transform: translateY(0); */
        /* transition: none; */
    }

    .presentation-title,
    .presentation-desc {
        text-align: center; /* S'assure que le texte est centré */
    }

    /* Le conteneur des boutons - MAINTENANT EN CARROUSEL HORIZONTAL SANS BARRE DE DÉFILEMENT */
    .presentation-buttons {
        flex-direction: row; /* Les boutons restent horizontaux */
        flex-wrap: nowrap; /* Empêche le wrapping, force le défilement */
        overflow-x: auto; /* Active le défilement horizontal */
        justify-content: flex-start; /* Aligne les boutons au début du défilement */
        gap: 1rem;
        margin-top: 1.5rem; /* Espace entre la description et les boutons */
        padding-bottom: 10px; /* Pour éviter que la barre de défilement ne masque le contenu (ou pour un espace visuel) */

        /* Masque la barre de défilement pour Firefox */
        scrollbar-width: none;
        /* Masque la barre de défilement pour Edge, Chrome, Safari */
        -ms-overflow-style: none; /* IE and Edge */
        -webkit-overflow-scrolling: touch; /* Pour un défilement fluide sur iOS */
    }

    /* Masque la barre de défilement pour Webkit (Chrome, Safari, Edge) */
    .presentation-buttons::-webkit-scrollbar {
        display: none;
    }

    .presentation-btn {
        /* REND LE BOUTON CARRÉ (1:1) ET INCLUS DANS LE CARROUSEL */
        aspect-ratio: 1 / 1; /* Assure que les côtés sont égaux */
        flex-shrink: 0; /* Empêche les boutons de rétrécir et assure le défilement */
        min-width: 140px; /* Largeur minimale pour le contenu dans un bouton carré de carrousel */
        max-width: 180px; /* Largeur maximale pour les rendre ni trop grands, ni trop petits */
        padding: 0.75rem; /* Ajuste le padding pour le contenu */

        /* Disposition interne du bouton */
        flex-direction: column; /* L'icône et le texte s'empilent */
        align-items: center; /* Centre le contenu du bouton */
        justify-content: center; /* Centre verticalement le contenu du bouton */
        gap: 0.5rem; /* Espace entre l'icône et le contenu texte */
    }

    .btn-icon {
        width: 40px; /* Taille de l'icône */
        height: 40px;
        margin-top: 0;
        align-self: center; /* CENTRE L'ICÔNE DU BOUTON EN MODE MOBILE */
    }

    .btn-content-wrapper {
        text-align: center; /* Centre le texte à l'intérieur du bouton */
    }

    .presentation-btn .btn-title {
        font-size: 1rem; /* Taille du titre */
        margin-bottom: 0.2rem; /* Espace entre titre et description */
        line-height: 1.2;
    }

    .presentation-btn .btn-desc {
        display: block; /* AFFICHE LA DESCRIPTION */
        font-size: 0.8rem; /* Taille de la description */
        line-height: 1.2;
        opacity: 0.9;
    }

    .presentation-video {
        order: 1; /* La vidéo vient après le bloc de contenu (titre, desc, boutons) */
        width: 100%;
        max-width: 100%;
        /* L'animation de la vidéo reste gérée par les règles globales et la classe .animate-in (via JS) */
        /* transform: translateX(0); */
        /* opacity: 1; */
        /* transition: none; */
        aspect-ratio: 1 / 1; /* LA VIDÉO RESTE CARRÉE SUR MOBILE */
        margin-top: 2rem; /* Ajoute de l'espace au-dessus de la vidéo */
    }

}

/* ======== BONNE PRATIQUE GLOBALE (à mettre au début de votre CSS si ce n'est pas déjà fait) ======== */
*, *::before, *::after {
    box-sizing: border-box; /* Assure que le padding et la bordure sont inclus dans la largeur/hauteur totale */
}


/* ============================================ CARROUSEL : VERSION CORRIGÉE ================================================================ */

.carousel-wrapper {
    position: relative;
    min-height: 400px;
    max-width: 1500px;
    margin: 0 auto 1rem auto;
    /* Retiré overflow: hidden pour que les ombres des cartes ne soient pas coupées */
}



/* Pas de changement pour les boutons sur desktop */
.carousel-wrapper .carousel-btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(255, 255, 255, 0.8); /* Fond plus clair pour un look moderne */
    border: 1px solid #ddd;
    color: #333;
    font-size: 24px;
    width: 45px; /* Taille fixe pour un cercle parfait */
    height: 45px;
    cursor: pointer;
    border-radius: 50%;
    z-index: 20;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}

.carousel-wrapper .carousel-btn:hover {
    background: white;
    transform: translateY(-50%) scale(1.1);
}

.carousel-btn.left { left: -22px; } /* Positionné à moitié à l'extérieur */
.carousel-btn.right { right: -22px; }

.carousel.video-scroll {
    display: flex;
    gap: 16px; /* Espace entre les cartes */
    overflow-x: auto;
    scroll-behavior: smooth;
    padding: 1rem 4px; /* Ajoute un peu d'espace pour que l'ombre portée soit visible */
    margin: 0;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.carousel.video-scroll::-webkit-scrollbar {
    display: none;
}


/* ========= LA CARTE VIDÉO : CORRECTIONS CLÉS ========= */
.carousel-video-card {
    flex: 0 0 320px; /* Largeur sur desktop */
    background: var(--bg-alt, #fff);
    color: var(--text, #333);
    border-radius: 12px; /* Coins plus arrondis */
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
    scroll-snap-align: start;
    display: flex;
    flex-direction: column;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    overflow: hidden; /* TRÈS IMPORTANT: Empêche tout enfant de déborder */
}

.carousel-video-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);
}

/* Conteneur pour l'image ou la vidéo pour bien gérer le border-radius */
.carousel-video-card .media-container {
    width: 100%;
    aspect-ratio: 16 / 9; /* Format 16:9 moderne et responsive */
    margin-bottom: 12px;
    overflow: hidden; /* Assure que l'image à l'intérieur respecte les coins arrondis */
}

.carousel-video-card img,
.carousel-video-card iframe {
    width: 100%;
    height: 100%;
    object-fit: cover; /* Assure que l'image remplit l'espace sans se déformer */
    border: none;
}

/* Conteneur pour le texte pour mieux gérer le padding */
.card-content {
    padding: 0 15px 15px 15px; /* Padding uniquement pour le contenu textuel */
    display: flex;
    flex-direction: column;
    flex-grow: 1; /* Permet au contenu de prendre toute la hauteur restante */
    text-align: center;
}

.carousel-video-card h3,
.carousel-video-card p {
    margin: 0;
    color: var(--text, #333);
    /* SÉCURITÉ ANTI-DÉBORDEMENT TEXTE */
    overflow-wrap: break-word;
    word-break: break-word;
}

.carousel-video-card h3 {
    margin-bottom: 8px;
    font-size: 1.1rem; /* Taille de police légèrement ajustée */
}

.carousel-video-card p {
    font-size: 0.9rem;
    line-height: 1.5;
    flex-grow: 1; /* Fait en sorte que le paragraphe pousse le contenu et occupe l'espace */
    color: var(--text-secondary, #666);
}

/* ========= MEDIA QUERIES : LA SOLUTION MOBILE ========= */

@media (max-width: 768px) {
    .carousel-wrapper {
        margin: 0 auto 2rem auto;
    }

    /* On cache les boutons sur mobile, le "swipe" est plus naturel */
    .carousel-wrapper .carousel-btn {
        display: none;
    }

    .carousel.video-scroll {
        /* On ajoute du padding sur les côtés du conteneur de défilement */
        padding-left: 16px;
        padding-right: 16px;
        /* Fait en sorte que le défilement s'arrête proprement sur chaque carte */
        scroll-snap-type: x mandatory;
        gap: 12px;
    }

    .carousel-video-card {
        /* LA CORRECTION PRINCIPALE : On passe en largeur relative ! */
        flex: 0 0 85%; /* La carte prend 85% de la largeur de l'écran */
        max-width: 300px; /* On peut ajouter un max-width pour ne pas qu'elle soit trop large sur tablette */
    }
}

/* ======================================================================= À PROPOS DE NOUS ===================================================== */
.about-section {
    position: relative;
    color: var(--text-inverse);
    padding: 4rem 1rem;
    overflow: hidden;
}

.about-section::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-image: url('images/about_us_index.jpg');
    background-size: cover;
    background-position: center;
    filter: brightness(0.6);
    z-index: -2;
}

.about-section::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: #007bff76;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    z-index: -1;
    pointer-events: none;
    border-radius: 0;
}

.about-section .container {
    max-width: 1200px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    gap: 2rem;
    flex-wrap: wrap;
    position: relative;
    z-index: 1;
}

.about-image {
    flex: 1 1 300px;
    min-width: 280px;
}

.about-image img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    object-fit: cover;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
}

.about-content {
    flex: 1 1 400px;
    min-width: 280px;
    color: var(--text-inverse);
}

.about-content h2 {
    font-size: 2.5rem;
    margin-bottom: 1rem;
}

.about-content p {
    font-size: 1.2rem;
    line-height: 1.5;
    margin-bottom: 2rem;
}

.btn-primary {
    background-color: var(--text-inverse);
    color: var(--primary);
    border: none;
    padding: 0.75rem 1.75rem;
    border-radius: 9999px;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.3s, color 0.3s;
}

.btn-primary:hover {
    background-color: var(--primary-dark);
    color: var(--text-inverse);
}

/* Responsive */
@media (max-width: 768px) {
    .about-section .container {
        flex-direction: column;
        text-align: center;
    }

    .about-image,
    .about-content {
        min-width: 100%;
    }

    .about-content h2 {
        font-size: 2rem;
    }
}

/* =============================================================== HÉRO (HERO) ============================================================ */
#hero {
    position: relative;
    /* La nav est fixe maintenant, donc le héros commence bien en haut */
    height: 80vh;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    color: #fff;
    /* Pas de padding-top ici, le contenu du hero sera sous la nav transparente */
    padding: 0 2rem; /* Garde le padding horizontal */
}

.carousel {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
}

.carousel-image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    transition: opacity 2s ease-in-out;
}

.carousel-image.active {
    opacity: 1;
    z-index: 1;
}

.carousel-controls {
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    display: flex;
    justify-content: space-between;
    transform: translateY(-50%);
    z-index: 10;
    pointer-events: none;
    padding: 0 10px;
}

.carousel-controls button {
    pointer-events: all;
    background: rgba(0, 0, 0, 0.5);
    border: none;
    color: white;
    font-size: 2rem;
    padding: 0.5em 0.8em;
    cursor: pointer;
    border-radius: 5px;
    transition: background 0.3s;
}

.carousel-controls button:hover {
    background: rgba(0, 0, 0, 0.8);
}

.hero-content {
    position: relative;
    z-index: 2;
    max-width: 700px;
    margin: auto;
    /* Ajoutez un padding-top ici si le contenu du hero ne doit pas être recouvert par la nav */
    /* par exemple, si votre nav fait 60px de haut, un padding-top de 80px pourrait être utile */
    padding-top: 80px; /* Ajustez cette valeur si nécessaire */
}


#hero h1 {
  font-size: 2.2rem;          /* Taille fixe, plus petite et stable */
  font-weight: 700;
  margin-bottom: 1rem;
  max-width: 90vw;            /* Ne dépasse jamais 90% de la largeur */
  margin-left: auto;
  margin-right: auto;
  overflow-wrap: break-word;  /* Remplace word-wrap */
  line-height: 1.3;
  color: #fff;
}


#hero p {
    font-size: clamp(1.1rem, 1.8vw + .4rem, 1.3rem);
    max-width: 700px;
    margin-inline: auto;
    margin-bottom: 2.5rem;
}

.hero-button {
    display: inline-block;
    padding: .75rem 1.75rem;
    background-color: rgba(255, 255, 255, 0.35);
    color: #fff;
    border-radius: 9999px;
    font-weight: 600;
    backdrop-filter: blur(2px);
    transition: background-color .3s, transform .25s;
    max-width: 90vw; /* limite largeur du bouton */
    white-space: nowrap; /* empêche retour à la ligne */
    text-align: center;
    box-sizing: border-box;
    overflow: hidden;
    text-overflow: ellipsis;
}

.hero-button:hover {
    background-color: rgba(255, 255, 255, 0.55);
    transform: translateY(-2px);
}

.hero-banner {
    background: url("images/hero_service.jpg") center/cover no-repeat;
    padding: 8rem 1rem 5rem;
    position: relative;
    color: white;
    text-align: center;
}

.hero-banner::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    z-index: 0;
}

.hero-banner .hero-content {
    position: relative;
    z-index: 1;
    max-width: 800px;
    margin: auto;
}

.hero-banner h1 {
    font-size: 3rem;
    margin-bottom: 1rem;
}

.hero-banner p {
    font-size: 1.2rem;
}

/* Responsivité pour mobile */
@media (max-width: 768px) {
    #hero {
        height: 60vh;
        padding: 0 1rem; /* Ajusté pour mobile */
        text-align: center;
    }

    #hero .hero-content {
        max-width: 95%;
        margin: 0 auto;
        padding-top: 60px; /* Ajustez aussi sur mobile pour la nav */
    }

    #hero h1 {
        font-size: clamp(1.8rem, 6vw, 2.5rem);
        margin-bottom: 1rem;
    }

    #hero p {
        font-size: clamp(0.95rem, 4vw, 1.1rem);
        margin-bottom: 2rem;
    }

    .hero-button {
        font-size: 1rem;
        padding: 0.6rem 1.4rem;
        display: inline-block;
        width: auto;
        white-space: nowrap;
        max-width: 95vw; /* limite largeur bouton mobile */
    }

    .carousel-image {
        object-fit: cover;
        height: 100%;
        width: 100%;
    }

    .carousel-controls button {
        font-size: 1.5rem;
        padding: 0.4em 0.6em;
    }
}

/* ========= HERO SLIDESHOW STYLÉ ========== */
.hero-slide {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center;
    opacity: 0;
    transition: opacity 1s ease-in-out;
    z-index: 0;
}

.hero-slide.active {
    opacity: 1;
    z-index: 1;
}

.hero-slide-content {
    position: relative;
    z-index: 2;
    padding: 2rem;
    background-color: rgba(0, 0, 0, 0.4);
    border-radius: 1rem;
    backdrop-filter: blur(6px);
    max-width: 800px;
    margin: auto;
    text-align: center;
    animation: fadeInUp 0.9s ease both;
}

/* Modification taille titre plus petite */
.hero-slide-content h1 {
    font-size: clamp(1.8rem, 4vw, 2.8rem);
    font-weight: 800;
    color: var(--primary-color, #00bcd4);
    margin-bottom: 1rem;
    text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.7);
    line-height: 1.2;
}

/* Paragraphe avec largeur max 90% */
.hero-slide-content p {
    font-size: clamp(1rem, 1.5vw, 1.3rem);
    max-width: 90%;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 1.8rem;
    line-height: 1.5;
    text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.5);
    word-break: break-word;
}

/* Bouton ajusté pour ne pas dépasser */
.hero-slide-content .hero-button {
    font-size: 1rem;
    padding: 0.7rem 1.5rem;
    max-width: 100%;
    white-space: nowrap;
    box-sizing: border-box;
    display: inline-block;
    background-color: var(--primary-color, #00bcd4);
    color: #fff;
    font-weight: 600;
    border-radius: 999px;
    text-decoration: none;
    transition: background-color 0.3s ease;
}

.hero-slide-content .hero-button:hover {
    background-color: #0097a7;
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Applique un overlay sombre sur la section hero */
#hero::before {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.50); /*Rendre l'image de fond plus sombre*/
    z-index: 1;
}

/* Assure que le contenu reste au-dessus de l'overlay */
#hero .hero-content {
    position: relative;
    z-index: 2;
}

/* Responsive spécifique pour les titres et boutons dans hero-slide-content */
@media (max-width: 480px) {
    .hero-slide-content h1 {
        font-size: 2rem;
    }

    .hero-slide-content p {
        font-size: 1rem;
        margin-bottom: 1.5rem;
    }

    .hero-slide-content .hero-button {
        font-size: 0.95rem;
        padding: 0.6rem 1.2rem;
    }
}



.old-price {
    text-decoration: line-through;
    color: #ddd;
    font-size: 0.95em;
    margin-left: 0.4em;
    opacity: 0.6;
}


/* ==================================================================== POPUP VIDÉO =============================================================*/
.video-popup {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: rgba(0, 0, 0, 0.85);
    justify-content: center;
    align-items: center;
    z-index: 1000;
}

.video-popup-content {
    position: relative;
    max-width: 90%;
    width: 800px;
    aspect-ratio: 16/9;
    background: #000;
}

.video-popup-content iframe {
    width: 100%;
    height: 100%;
    border: none;
}

.video-popup .close-btn {
    position: absolute;
    top: -30px;
    right: 0;
    font-size: 2rem;
    color: #fff;
    cursor: pointer;
    background: none;
    border: none;
}

/* =============================================================== CONTACT ======================================================================== */
.contact-container {
    max-width: 600px;
    margin: 0 auto;
    padding: 0rem 0rem;
    text-align: center;
}

.contact-form {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.contact-form input,
.contact-form textarea {
    padding: 0.8rem;
    font-size: 1rem;
    border: 1px solid #ccc;
    border-radius: 8px;
    width: 100%;
    box-sizing: border-box;
}

.contact-form .btn {
    padding: 0.8rem;
    background-color: var(--primary);
    color: white;
    border: none;
    border-radius: 8px;
    cursor: pointer;
}

@media (max-width: 480px) {
    .contact-container {
        padding: 1rem;
    }

    .contact-form input,
    .contact-form textarea {
        font-size: 0.95rem;
    }
}

/* ========================================================================== PIED DE PAGE (FOOTER) ===================================================== */
footer {
    background: var(--bg-alt);
    text-align: center;
    padding: 2rem 1.25rem;
    font-size: .9rem;
    color: var(--text);
    font-family: sans-serif;
}

footer a {
    color: var(--text);
    font-weight: 600;
    text-decoration: none;
    transition: color 0.3s;
}

footer a:hover {
    color: var(--primary);
}


.social-links {
    margin-bottom: 1rem;
}

.social-links a {
    display: inline-block;
    margin: 0 12px;
    font-size: 1.4rem;
    color: var(--text);
    transition: transform 0.3s ease, color 0.3s ease;
}

.social-links a:hover {
    transform: scale(1.3);
    color: var(--primary);
}

/* ========= APPARAÎTRE EN DOUCEUR (FADE-IN) ========= */
.fade-in {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity .75s ease, transform .75s ease;
}

.fade-in.appear {
    opacity: 1;
    transform: translateY(0);
}

/* Sections de services (différentes de la grille de services) */
.service-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    margin: 4rem 0;
    flex-wrap: wrap;
}

.service-text {
    flex: 1 1 300px;
}

.service-text h3 {
    color: var(--primary);
    font-size: 1.8rem;
    margin-bottom: 1rem;
}

.service-text p {
    font-size: 1rem;
    line-height: 1.6;
    margin-bottom: 1.5rem;
}

.service-image {
    flex: 1 1 300px;
    text-align: center;
}

.service-image img {
    max-width: 100%;
    border-radius: 1rem;
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.08);
}


@media screen and (max-width: 768px) {
    .service-row {
        flex-direction: column;
        text-align: center;
    }

    .service-text,
    .service-image {
        flex: 1 1 100%;
    }

    .service-text h3 {
        font-size: 1.5rem;
    }
}

/* ========= SECTIONS DE SERVICES (AJUSTÉ) ========= */
@media (max-width: 992px) {
    .service-section-title {
        font-size: 2.2rem;
        margin-bottom: 2rem;
    }

    .service-row {
        flex-direction: column;
        text-align: center;
        margin-bottom: 3rem;
    }

    .service-row:nth-child(even) {
        flex-direction: column;
    }

    .service-media-container {
        width: 100%;
        margin-top: 1.5rem;
    }

    .service-text-content h3 {
        font-size: 1.8rem;
    }

    .service-text-content p {
        font-size: 1rem;
    }
}


/* ========================================== STYLES DES POPUPS (MODAL & OVERLAY) - SECTION CONSOLIDÉE ET UNIQUE =============================== */

/* Styles pour l'overlay des popups de formulaire (le fond sombre transparent) */
#popupDevis,
#popupServiceDevis,
#popupInscriptionFormation {
    display: none;
    position: fixed;
    z-index: 10000; /* Assure que le popup est au-dessus de tout */
    inset: 0; /* Prend toute la largeur et hauteur de l'écran */
    background-color: rgba(0, 0, 0, 0.5); /* Fond semi-transparent, toujours le même */
    align-items: center;
    justify-content: center;
    padding: 1rem; /* Padding interne pour les petits écrans */
    box-sizing: border-box;
    overflow-y: auto; /* Permet le défilement si le contenu est trop grand */
}

/* Styles pour la boîte du modal (le conteneur blanc du formulaire) */
#popupDevis .modal,
#popupServiceDevis .modal,
#popupInscriptionFormation .modal {
    background: #ffffff; /* Fond toujours blanc */
    color: #333333; /* Texte toujours gris foncé/noir */
    width: 100%;
    max-width: 600px; /* Largeur maximale pour le desktop */
    padding: 2rem;
    border-radius: 12px;
    box-shadow: 0 5px 25px rgba(0, 0, 0, 0.3);
    position: relative;
    overflow-y: auto; /* Permet le défilement si le contenu du modal est trop grand */
    max-height: 90vh; /* Hauteur maximale pour le modal */
    animation: fadeIn 0.3s ease-in-out; /* Animation d'apparition */
}

/* Styles pour les titres (h1, h2) et les étiquettes (label) à l'intérieur des modales */
#popupDevis .modal h1,
#popupDevis .modal h2,
#popupDevis .modal label,
#popupServiceDevis .modal h1,
#popupServiceDevis .modal h2,
#popupServiceDevis .modal label,
#popupInscriptionFormation .modal h1,
#popupInscriptionFormation .modal h2,
#popupInscriptionFormation .modal label {
    color: #1a1a1a; /* Couleur du texte toujours noir */
}

/* Styles pour le bouton Fermer (le 'X') dans les modales */
#popupDevis .close-btn,
#popupServiceDevis .close-btn,
#popupInscriptionFormation .close-btn {
    position: absolute;
    right: 15px;
    top: 10px;
    font-size: 1.8rem;
    background: none;
    border: none;
    color: #888888; /* Couleur du bouton fermer toujours gris */
    cursor: pointer;
    padding: 0.2em 0.5em;
    transition: color 0.3s ease;
}

#popupDevis .close-btn:hover,
#popupServiceDevis .close-btn:hover,
#popupInscriptionFormation .close-btn:hover {
    color: #007bff; /* Devient bleu au survol (couleur primaire fixe) */
}

/* Styles pour les champs de saisie (input, select, textarea) à l'intérieur des modales */
#popupDevis input,
#popupDevis textarea,
#popupDevis select,
#popupServiceDevis input,
#popupServiceDevis textarea,
#popupServiceDevis select,
#popupInscriptionFormation input,
#popupInscriptionFormation textarea,
#popupInscriptionFormation select {
    padding: 0.8rem;
    font-size: 1rem;
    border: 1px solid #cccccc; /* Couleur de bordure toujours grise claire */
    border-radius: 8px;
    width: 100%;
    box-sizing: border-box;
    background-color: #ffffff; /* Fond des champs toujours blanc */
    color: #333333; /* Couleur du texte dans les champs toujours gris foncé */
    transition: border-color 0.3s ease, background-color 0.3s ease, color 0.3s ease;
}

#popupDevis input:focus,
#popupDevis textarea:focus,
#popupDevis select:focus,
#popupServiceDevis input:focus,
#popupServiceDevis textarea:focus,
#popupServiceDevis select:focus,
#popupInscriptionFormation input:focus,
#popupInscriptionFormation textarea:focus,
#popupInscriptionFormation select:focus {
    border-color: #007bff; /* Bordure toujours bleue au focus (couleur primaire fixe) */
    outline: none;
}

/* Style pour les boutons de soumission dans les modales */
#popupDevis .modal .btn,
#popupServiceDevis .modal .btn,
#popupInscriptionFormation .modal .btn {
    padding: 0.8rem 1.5rem;
    background-color: #007bff; /* Fond du bouton toujours bleu (couleur primaire fixe) */
    color: #ffffff; /* Texte du bouton toujours blanc */
    border: none;
    border-radius: 8px;
    cursor: pointer;
    font-size: 1rem;
    font-weight: 600;
    transition: background-color 0.3s ease, transform 0.2s ease;
    width: auto;
    align-self: center; /* Centrer le bouton si le formulaire est un flex column */
}

#popupDevis .modal .btn:hover,
#popupServiceDevis .modal .btn:hover,
#popupInscriptionFormation .modal .btn:hover {
    background-color: #0056b3; /* Bleu plus foncé au survol (couleur primaire fixe) */
    transform: translateY(-2px);
}

/* Animation d'apparition du modal */
@keyframes fadeIn {
    from { opacity: 0; transform: translateY(-20px); }
    to { opacity: 1; transform: translateY(0); }
}

/* Responsive pour les modales */
@media (max-width: 768px) {
    #popupDevis .modal,
    #popupServiceDevis .modal,
    #popupInscriptionFormation .modal {
        padding: 1.5rem; /* Réduire le padding sur mobile */
        margin: 1rem; /* Ajouter une petite marge sur les côtés */
        max-height: 95vh; /* Ajuster la hauteur max pour laisser de l'espace */
    }

    #popupDevis .modal h1,
    #popupServiceDevis .modal h1,
    #popupInscriptionFormation .modal h1 {
        font-size: 1.8rem; /* Réduire la taille du titre */
        margin-bottom: 1rem;
    }

    #popupDevis .close-btn,
    #popupServiceDevis .close-btn,
    #popupInscriptionFormation .close-btn {
        font-size: 1.5rem; /* Plus petit bouton de fermeture */
        right: 10px;
        top: 5px;
    }
}

/* ===================================================  PAGE APROPOS DE NOUS ========================================================*/

    .section-grid {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 2rem;
      margin: 4rem 0;
    }

    .section-grid.reverse {
      flex-direction: row-reverse;
    }

    .section-background {
      position: relative;
      padding: 6rem 2rem;
      color: white;
      text-align: center;
      background-size: cover;
      background-position: center;
    }

    .section-background::before {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background: rgba(0,0,0,0.4);
      backdrop-filter: blur(4px);
      z-index: 1;
    }

    .section-background .overlay-content {
      position: relative;
      z-index: 2;
      max-width: 800px;
      margin: auto;
    }

    .content-text {
      flex: 1 1 45%;
    }

    .content-text h2 {
      color: var(--primary);
    }

    .content-image {
      flex: 1 1 45%;
    }

    .content-image img {
      width: 100%;
      max-width: 500px;
      border-radius: 12px;
      display: block;
      margin: 0 auto;
    }

    @media (max-width: 768px) {
      .section-grid,
      .section-grid.reverse {
        flex-direction: column !important;
        text-align: center;
      }

      .content-text,
      .content-image {
        flex: 1 1 100%;
      }

      .content-image img {
        max-width: 100%;
      }

      .section-background {
        padding: 4rem 1.5rem;
      }

      .section-background .overlay-content {
        padding: 0 1rem;
      }
    }

    /*-------STYLE BOUTON FILTRE-----  */
/* Par défaut : version mobile */
.filter-carousel-wrapper {
  overflow-x: auto;
  overflow-y: hidden;
  display: flex;
  justify-content: start;
  scrollbar-width: none;
  -ms-overflow-style: none;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
}
.filter-carousel-wrapper::-webkit-scrollbar {
  display: none;
}

.filter-carousel {
  display: flex;
  flex-wrap: nowrap;
  gap: 10px;
  padding: 10px;
}

.filter-carousel .btn {
  padding: 10px 18px;
  border-radius: 30px;
  background-color: #eee;
  color: #333;
  transition: background-color 0.3s;
  font-weight: 500;
  cursor: pointer;
  border: none;
  font-size: 15px;

  width: auto;
  white-space: nowrap;

  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;

  flex-shrink: 0;
}

.filter-carousel .btn:hover {
  background-color: #ccc;
}

.filter-carousel .btn.active {
  background-color: #007BFF;
  color: white;
}


/* ✅ En desktop : on enlève le scroll, on centre tous les boutons */
@media screen and (min-width: 768px) {
  .filter-carousel-wrapper {
    overflow: visible;
    justify-content: center;
  }

  .filter-carousel {
    flex-wrap: wrap; /* en cas de manque d'espace */
    justify-content: center;
  }
}


/* ============ ==============================STYLES GÉNÉRIQUES POUR LES NOUVELLES SECTIONS ============================================= */
.section-title {
    text-align: center;
    font-size: 2.5rem; /* Taille du h2 existant */
    color: var(--primary); /* Couleur principale comme vos titres */
    margin-bottom: 1.5rem;
}

.section-description {
    text-align: center;
    font-size: 1.1rem;
    color: var(--text);
    margin-bottom: 3rem; /* Espace sous la description */
    max-width: 800px;
    margin-inline: auto;
    line-height: 1.6;
}

.section-action {
    text-align: center;
    margin-top: 3rem;
}

.btn-primary {
    display: inline-block;
    padding: 1rem 2rem;
    background: var(--primary);
    color: var(--text-inverse);
    border-radius: 8px;
    text-decoration: none;
    font-weight: 600;
    transition: background 0.3s ease, transform 0.2s ease;
    border: 2px solid var(--primary); /* Ajout d'une bordure pour la cohérence */
}

.btn-primary:hover {
    background: var(--primary-dark); /* Assurez-vous d'avoir une variable --primary-dark ou ajustez */
    transform: translateY(-2px);
}

.btn-secondary {
    display: inline-block;
    padding: 1rem 2rem;
    background: transparent;
    color: var(--primary);
    border: 2px solid var(--primary);
    border-radius: 8px;
    text-decoration: none;
    font-weight: 600;
    transition: background 0.3s ease, color 0.3s ease, transform 0.2s ease;
}

.btn-secondary:hover {
    background: var(--primary);
    color: var(--text-inverse);
    transform: translateY(-2px);
}

/* ======================================================= SECTION ACTUALITES / BLOG - MODIFICATIONS CARROUSEL =============================== */
.carousel-container {
    max-width: 1200px;
    margin-inline: auto;
    overflow: hidden; /* Ceci est crucial pour masquer les cartes en dehors de la vue */
    position: relative;
    padding: 0 1.25rem; /* Ajoute un rembourrage horizontal par défaut */
    box-sizing: border-box; /* Inclure le rembourrage dans la largeur et la hauteur totales de l'élément */
}

.news-carousel {
    display: flex;
    width: fit-content;
    /* L'animation par défaut pour desktop est ici */
    animation: scrollNews 30s linear infinite; /* Ajustez la durée si nécessaire */
}

/* Mettre l'animation en pause au survol (desktop) */
.news-carousel:hover {
    animation-play-state: paused;
}

.news-card {
    /* Largeur par défaut pour les grands écrans */
    flex: 0 0 350px; /* Définir une largeur fixe pour chaque carte et empêcher le rétrécissement/l'agrandissement */
    margin-right: 2rem; /* Espacement entre les cartes */
    background: var(--bg-alt);
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    scroll-snap-align: start; /* Ajout pour un éventuel défilement "snap" sur mobile */
}

.news-card:last-child {
    margin-right: 0; /* Pas de marge sur la dernière carte */
}

/* Keyframe animation pour un défilement continu */
@keyframes scrollNews {
    0% {
        transform: translateX(0);
    }
    100% {
        transform: translateX(-50%); /* Défilement de la moitié de la largeur du contenu (en supposant un contenu dupliqué) */
    }
}

/* Les styles existants pour .news-blog-section, .news-card img, .news-card .card-content, etc., doivent rester les mêmes */
.news-blog-section {
    padding: 4rem 1.25rem;
    background: var(--bg);
    color: var(--text);
}

.news-card img {
    width: 100%;
    height: 220px; /* Garde la hauteur pour desktop */
    object-fit: cover;
    display: block;
}

.news-card .card-content {
    padding: 1.5rem;
}

.news-card h3 {
    font-size: 1.4rem;
    color: var(--heading);
    margin-bottom: 0.8rem;
    line-height: 1.3;
}

.news-card p {
    font-size: 0.95rem;
    color: var(--text-secondary);
    line-height: 1.5;
    margin-bottom: 1.5rem;
}

.news-card .read-more-btn {
    display: inline-flex;
    align-items: center;
    color: var(--primary);
    text-decoration: none;
    font-weight: 600;
    font-size: 0.9rem;
    transition: color 0.3s ease;
}

.news-card .read-more-btn:hover {
    color: var(--primary-dark);
}

.news-card .read-more-btn .fas {
    margin-left: 0.5rem;
    transition: transform 0.3s ease;
}

.news-card .read-more-btn:hover .fas {
    transform: translateX(5px);
}

/* --- Ajustements Responsifs Spécifiques pour Mobile --- */

/* Pour les tablettes et les écrans plus petits (jusqu'à 992px) */
@media (max-width: 992px) {
    .news-card {
        flex: 0 0 300px; /* Largeur légèrement réduite pour les tablettes */
        margin-right: 1.5rem;
    }
    .news-card img {
        height: 200px; /* Hauteur légèrement réduite de l'image */
    }
}

/* Pour les appareils mobiles (jusqu'à 768px et moins) */
@media (max-width: 768px) {
    .news-blog-section {
        padding: 2rem 0; /* Réduit le padding vertical de la section */
    }

    .carousel-container {
        padding: 0 1rem; /* Padding des côtés pour ne pas coller les bords */
        overflow-x: scroll; /* Permet le défilement manuel horizontal */
        scroll-snap-type: x mandatory; /* Force le snap aux cartes */
        -webkit-overflow-scrolling: touch; /* Améliore le défilement sur iOS */

        /* --- Masquage de la barre de défilement --- */
        -ms-overflow-style: none; /* Pour Internet Explorer et Edge */
        scrollbar-width: none; /* Pour Firefox */
    }

    /* Pour Chrome, Safari et Opera */
    .carousel-container::-webkit-scrollbar {
        display: none;
    }

    .news-carousel {
        width: 100%; /* La largeur est gérée par les flex-basis des cartes */
        animation: none; /* Désactive l'animation de défilement automatique ! */
        -webkit-animation: none;
        justify-content: flex-start; /* Aligne les cartes au début */
    }

    .news-carousel:hover {
        animation-play-state: running; /* Inutile car animation: none, mais bonne pratique */
    }

    .news-card {
        flex: 0 0 calc(100% - 2rem); /* 100% de la largeur du conteneur - 2rem (1rem à gauche, 1rem à droite pour les margins ou padding du container) */
        margin-right: 1rem; /* Marge pour l'espace entre les cartes visibles lors du défilement */
    }

    .news-card:last-child {
        margin-right: 1rem; /* Ajoute aussi une marge à la dernière carte pour éviter qu'elle colle au bord du scroll */
    }

    .news-card img {
        height: 180px; /* Hauteur de l'image ajustée pour mobile */
    }
    .news-card .card-content {
        padding: 1rem; /* Réduit le padding interne de la carte */
    }
    .news-card h3 {
        font-size: 1.15rem; /* Ajuste la taille du titre */
        margin-bottom: 0.6rem;
    }
    .news-card p {
        font-size: 0.9rem; /* Ajuste la taille du paragraphe */
        margin-bottom: 1.2rem;
    }
    .news-card .read-more-btn {
        font-size: 0.85rem; /* Ajuste la taille du bouton "Lire la suite" */
    }
}

/* Pour les très petits mobiles (jusqu'à 480px) */
@media (max-width: 480px) {
    .carousel-container {
        padding: 0 0.5rem; /* Padding encore plus réduit pour les très petits écrans */
    }
    .news-card {
        flex: 0 0 calc(100% - 1rem); /* 100% de la largeur du conteneur - 1rem (0.5rem à gauche, 0.5rem à droite) */
        margin-right: 0.5rem; /* Marge minimale */
    }
    .news-card img {
        height: 150px; /* Hauteur d'image encore plus petite */
    }
    .news-card .card-content {
        padding: 0.8rem; /* Padding interne très réduit */
    }
    .news-card h3 {
        font-size: 1.05rem;
    }
    .news-card p {
        font-size: 0.8rem;
    }
}
/* ========================================================================== SECTION FAQ ================================================== */
.faq-section {
    padding: 4rem 1.25rem;
    background: var(--bg);
    color: var(--text);
}

.faq-list {
    max-width: 800px;
    margin-inline: auto;
}

.faq-item {
    margin-bottom: 1.2rem;
    border: 1px solid var(--border); /* Couleur de bordure pour les éléments */
    border-radius: 8px;
    overflow: hidden;
}

.faq-question {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    padding: 1.2rem 1.5rem;
    background: var(--bg-alt); /* Fond pour la question */
    color: var(--heading);
    font-size: 1.15rem;
    font-weight: 600;
    text-align: left;
    border: none;
    cursor: pointer;
    transition: background 0.3s ease;
}

.faq-question:hover,
.faq-question.active {
    background: var(--primary-light); /* Couleur primaire plus claire au survol/actif */
    color: var(--primary-dark); /* Texte plus foncé sur le fond clair */
}

.faq-question .fas {
    margin-left: 1rem;
    transition: transform 0.3s ease;
}

.faq-question.active .fas {
    transform: rotate(180deg);
}

.faq-answer {
    padding: 0 1.5rem;
    background: var(--bg); /* Fond pour la réponse */
    color: var(--text-secondary);
    max-height: 0; /* Cache la réponse par défaut */
    overflow: hidden;
    transition: max-height 0.4s ease-out, padding 0.4s ease-out;
}

.faq-answer p {
    padding-bottom: 1.2rem; /* Espace sous le paragraphe de la réponse */
    line-height: 1.6;
}

/* JavaScript pour ouvrir/fermer l'accordéon */
.faq-answer.open {
    max-height: 200px; /* Hauteur max arbitraire, ajustez si vos réponses sont très longues */
    padding-top: 1.2rem;
}


/* ===================================================================== SECTION PARTENAIRES ============================================== */
.partners-section {
    padding: 4rem 1.25rem;
    background: var(--bg-alt);
    color: var(--text);
}

.partners-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 2rem;
    align-items: center;
    justify-items: center; /* Centre les logos dans leur cellule */
    max-width: 1200px;
    margin-inline: auto;
}

.partner-logo {
    padding: 1rem;
    /* Optional: background: var(--bg); */ /* Ajoutez un fond si vous voulez */
    border-radius: 8px;
    transition: transform 0.3s ease;
}

.partner-logo:hover {
    transform: scale(1.05);
}

.partner-logo img {
    max-width: 100%;
    height: auto;
    max-height: 80px; /* Hauteur maximale pour les logos */
    object-fit: contain;
    /* Pour s'adapter aux thèmes sombres si les logos sont clairs */
    filter: var(--partner-logo-filter, none);
}

:root {
    --partner-logo-filter: none;
}

[data-theme="dark"] {
    /* Si vos logos sont clairs et doivent être assombris en mode sombre */
    /* --partner-logo-filter: brightness(0.8) contrast(1.2); */
}


/* ======================================================= SECTION APPEL A L'ACTION / SERVICE PHARE ======================================== */
.cta-service-highlight-section {
    padding: 4rem 1.25rem;
    background: var(--primary); /* Fond avec votre couleur primaire pour un impact maximum */
    color: var(--text-inverse); /* Texte blanc/noir selon le thème inverse */
    text-align: center;
}

.cta-content-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
    max-width: 900px;
    margin-inline: auto;
}

.cta-icon-wrapper {
    font-size: 4rem; /* Grande taille pour l'icône */
    color: var(--text-inverse); /* Couleur de l'icône */
    margin-bottom: 1rem;
}

.cta-icon-wrapper .cta-icon { /* Si vous utilisez une image PNG pour l'icône */
    width: 80px;
    height: 80px;
    object-fit: contain;
    filter: invert(1); /* Pour les icônes blanches sur fond coloré */
}

.cta-title {
    font-size: 2.2rem;
    color: var(--text-inverse);
    margin-bottom: 1rem;
    line-height: 1.2;
}

.cta-description {
    font-size: 1.1rem;
    color: var(--text-inverse);
    opacity: 0.9;
    line-height: 1.6;
    margin-bottom: 2rem;
}

.cta-button {
    background: var(--text-inverse); /* Bouton inversé pour se démarquer */
    color: var(--primary);
    border: 2px solid var(--text-inverse);
    padding: 1rem 2.5rem;
    border-radius: 10px;
    font-size: 1.1rem;
    font-weight: 700;
    transition: background 0.3s ease, color 0.3s ease, transform 0.2s ease;
}

.cta-button:hover {
    background: var(--primary-dark); /* Effet au survol du bouton */
    color: var(--text-inverse);
    transform: translateY(-3px);
}

/* ============ RESPONSIVE AJOUTÉES ============ */
@media (max-width: 768px) {
    .section-title {
        font-size: 2rem;
        margin-bottom: 1rem;
    }

    .section-description {
        font-size: 1rem;
        margin-bottom: 2rem;
    }

    /* Actualités */
    .news-grid {
        grid-template-columns: 1fr; /* Une seule colonne sur mobile */
    }

    /* Projets en cours */
    .projets-grid {
        grid-template-columns: 1fr; /* Une seule colonne sur mobile */
    }

    /* FAQ */
    .faq-question {
        font-size: 1rem;
        padding: 1rem;
    }

    .faq-answer p {
        font-size: 0.9rem;
        padding-bottom: 1rem;
    }

    /* Partenaires */
    .partners-grid {
        grid-template-columns: repeat(2, 1fr); /* Deux colonnes sur mobile */
    }

    /* CTA */
    .cta-title {
        font-size: 1.8rem;
    }

    .cta-description {
        font-size: 1rem;
    }

    .cta-button {
        font-size: 1rem;
        padding: 0.8rem 2rem;
    }
}

@media (max-width: 480px) {
    /* Partenaires */
    .partners-grid {
        grid-template-columns: 1fr; /* Une seule colonne sur très petits écrans */
    }
}


/* ============================================================ SECTION PROJETS EN COURS ================================================= */
.current-project-section {
    position: relative;
    min-height: 80vh;
    display: flex;
    flex-direction: column; /* Permet le placement du titre au-dessus de la carte */
    align-items: center;
    justify-content: center;
    overflow: hidden;
    padding-bottom: 4rem; /* Ajout d'un padding au bas de la section pour l'espace */
    
    /* Marge supérieure réduite et styles d'animation */
    padding-top: 4rem; /* Marge supérieure réduite pour rapprocher la section */
    opacity: 0; /* Commence invisible pour l'animation */
    transform: translateY(30px); /* Commence légèrement décalé vers le bas */
    transition: opacity 1s ease-out, transform 1s ease-out; /* Douceur de l'animation */
}

/* Classe ajoutée par JavaScript lorsque la section est visible */
.current-project-section.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.project-bg-split {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(to bottom, var(--project-bg-top) 50%, var(--project-bg-bottom) 50%);
    z-index: 1;
}

/* --- Style du nouveau titre de section --- */
.section-heading {
    text-align: center;
    font-size: 2.8rem;
    margin-bottom: 3rem; /* Espace sous le titre */
    color: var(--text); /* S'adapte au thème */
    z-index: 2; /* S'assure qu'il est au-dessus du fond */
    position: relative; /* Nécessaire pour z-index */
    padding-top: 0; /* Supprimé le padding ici, il est géré par la section parente */
    width: 100%; /* S'assure qu'il prend toute la largeur pour le centrage */
    max-width: 1200px; /* Aligne avec la largeur max de la carte si désiré */
}

/* Ajustements pour le thème sombre si le texte du titre doit être différent */
[data-theme="dark"] .section-heading {
    color: var(--text); /* Si --text s'adapte déjà, c'est bon */
    /* Alternative si vous voulez une couleur contrastante sur le primary du bas: */
    /* color: var(--text-inverse); */
}
/* --- Fin du style du nouveau titre --- */


.project-content-wrapper {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 1200px; /* Largeur de la carte */
    padding: 0 1rem;
    box-sizing: border-box;
}

.project-card {
    background: var(--project-card-bg);
    border-radius: 15px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
    overflow: hidden;
    color: var(--project-text-color);
    transition: opacity 0.5s ease-in-out, transform 0.5s ease-in-out;
}

.project-card.fade-out {
    opacity: 0;
    transform: translateY(20px);
}
.project-card.fade-in {
    opacity: 1;
    transform: translateY(0);
}

.project-image-overlay {
    flex: 1;
    position: relative;
    overflow: hidden;
    display: block;
    min-height: 500px; /* Hauteur de la carte */

    background-size: cover;
    background-position: center;
    transform: scale(1.05);

    &::after {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: var(--project-image-overlay-color);
        z-index: 1;
    }
}

.project-image-blurred {
    display: none;
}

.project-details {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    padding: 2.5rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    z-index: 2;
    color: var(--text-inverse); /* Ce texte restera blanc grâce à la modification ci-dessus */
}

.project-logo {
    max-width: 80px;
    height: auto;
    margin-bottom: 1.5rem;
}

.project-title {
    font-size: 2.2rem;
    color: var(--text-inverse); /* Ce titre restera blanc */
    margin-bottom: 1rem;
    line-height: 1.2;
}

.project-description {
    font-size: 1.1rem;
    line-height: 1.6;
    margin-bottom: 1.8rem;
    color: var(--text-inverse); /* Cette description restera blanche */
}

.project-learn-more {
    display: inline-block;
    padding: 0.8rem 1.8rem;
    background-color: var(--project-button-bg);
    color: var(--text-inverse); /* Ce bouton texte restera blanc */
    text-decoration: none;
    border-radius: 5px;
    font-weight: 600;
    transition: background-color 0.3s ease;
}

.project-learn-more:hover {
    background-color: var(--project-button-hover-bg);
}


/* --- Ajustements Responsifs --- */
@media (max-width: 768px) {
    .current-project-section {
        min-height: 100vh;
        padding: 3rem 0 2rem 0; /* Haut, Droite, Bas, Gauche */
    }

    .section-heading {
        font-size: 2rem;
        margin-bottom: 2rem;
        padding-top: 0;
    }

    .project-card {
        display: block;
        height: 60vh;
    }

    .project-image-overlay {
        height: 100%;
        width: 100%;
        min-height: unset;
    }

    .project-details {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        padding: 1.5rem;
        align-items: center;
        text-align: center;
        justify-content: center;
        color: var(--text-inverse);
    }

    .project-logo {
        max-width: 60px;
        margin-bottom: 1rem;
    }

    .project-title {
        font-size: 1.8rem;
        margin-bottom: 0.8rem;
    }

    .project-description {
        font-size: 1rem;
        margin-bottom: 1.5rem;
    }

    .project-learn-more {
        padding: 0.7rem 1.5rem;
        font-size: 0.9rem;
    }
}

@media (max-width: 480px) {
    .section-heading {
        font-size: 1.5rem;
        margin-bottom: 1.5rem;
        padding-top: 0;
    }
    .project-card {
        margin: 0 1rem;
        height: 70vh;
    }
    .project-details {
        padding: 1rem;
    }
    .project-title {
        font-size: 1.5rem;
    }
    .project-description {
        font-size: 0.9rem;
    }
}