@font-face {
    font-family: 'Barbra';
    src: url('../fonts/barbra-regular-webfont.woff2') format('woff2');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

:root {
  --color-primary: #0d6efd;
  --color-secondary: #6c757d;
  --color-bg: #ffffff;
  --color-text: #313233;
}

:root {
  --font-base: 'Poppins', sans-serif;
  --font-weight-base: 300; /* Ajout d'une variable Light */
  --font-heading: 'Poppins', sans-serif;
  --font-titre: 'Barbra', serif;
}

:root {
  --header-height: 70px;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

body {
  font-family: var(--font-base);
  font-weight: 300; 
  color: var(--color-text);
  background-color: var(--color-bg);
}

html, body {
  overflow-x: hidden;
}

img {
  max-width: 100%;
  height: auto;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-base);
}

h1, h2, h4 {
    color: #855895;
}

h2 {
    font-weight: 100;
    font-size: 25px;
}

h3 {
  font-family: var(--font-titre);
  color: #265433;
  font-size: 35px;
}

h4 {
  font-size: 1.2rem;
}

h6{
    font-weight: 100;
}

.cookie-statement h2, .privacy-policy h2, .post-528 h2 {
    font-family: var(--font-titre);
    color: #265433 !important;
    font-size: 35px !important;
}

.cookie-statement h3, .privacy-policy h3, .post-528 h3 {
    font-family: var(--font-base) !important;
    font-size: 25px !important;
    color: #855895 !important;
}

.cookie-statement a, .privacy-policy a, .post-528 a {
    color: #265433 !important;
}

.logo-footer {
    width: 45%;
    margin-bottom: 2em;
}




/* ==========================================================================
   2. ORDINATEUR (Écrans à partir de 992px) : Ton design d'origine complet
   ========================================================================== */
@media (min-width: 992px) {
    h2 {
        font-size: 30px;
    }

    h3 {
        font-size: 50px;
    }
}

/*-------Animations------*/
/* Fade in gauche — colonne image */
.animate-left {
    animation: fadeInLeft 0.8s ease forwards;
}

/* Fade in droite — colonne texte */
.animate-right {
    animation: fadeInRight 0.8s ease 0.3s forwards;
    opacity: 0;
}

@keyframes fadeInLeft {
    from { opacity: 0; transform: translateX(-30px); }
    to   { opacity: 1; transform: translateX(0); }
}

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

@media (max-width: 767px) {
    .animate-left,
    .animate-right {
        animation: none;
        opacity: 1;
    }
}

/* Ken Burns sur l'image */
@media (min-width: 1400px) {
    .animate-kenburns {
        animation: kenBurns 6s ease forwards;
    }
}

@keyframes kenBurns {
    from { transform: scale(1); }
    to   { transform: scale(1.05); }
}

/* Sections suivantes — apparition au scroll */
.scroll-animate {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 1.2s ease, transform 1.2s ease;
}

.scroll-animate.animate {
    opacity: 1;
    transform: translateY(0);
}

.typewriter {
    overflow: hidden;
    white-space: nowrap;
    width: 0;
    transition: width 1s steps(20, end);
}

.typewriter.animate {
    width: 100%;
}

/** MOBILE **/
/* Uniquement pour les écrans mobiles et tablettes */
@media (max-width: 1399px) {

    .typewriter,
    .animate,
    .scroll-animate {
        animation: none !important;
        transition: none !important;
        opacity: 1 !important;
        visibility: visible !important;
        border-right: none !important;
        width: 100% !important;
        
        /* LE FIX : Autorise le titre à revenir à la ligne normalement */
        white-space: normal !important; 
    }

    /* Optionnel : Si le texte reste aligné à droite, on le remet propre */
    h2.text-end, 
    .text-end {
        text-align: right !important;
    }
}

/*-------Menu------*/
.header-nav ul li a {
    text-decoration: none !important;
    color: #265433;
    font-weight: 700;
}

/* Fix pour les boutons */
.header-nav ul li.btn a {
    background-color: #265433 !important;
}

.header-nav ul li a.btn:hover {
    background-color: #22492d !important;
}

/*Menu moyen écran*/
@media (min-width: 992px) and (max-width: 1199px) {
  .header-nav ul {
    gap: 0.5rem !important;
  }

  .header-nav ul li a {
    font-size: 0.7rem;
  }

  .site-header .container {
    padding: 0 !important;
  }
}

@media (min-width: 1200px) and (max-width: 1399px) {
  .header-nav ul {
    gap: 0.5rem !important;
  }

  .header-nav ul li a {
    font-size: 0.85rem;
  }
}

/*-------Menu hamburger------*/
.navbar-toggler-icon {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
    display: inline-block;
    width: 1.5em;
    height: 1.5em;
}

.header-logo img {
    width: 70%;
}

.header-logo {
    width: 13%;
}

/* Uniquement pour le header mobile */
@media (max-width: 991px) {

    .header-logo {
        width: 40%;
    }

    .navbar, 
    nav.navbar,
    header div[class*="container"] {
        display: flex !important;
        flex-direction: row !important; /* Ligne */
        justify-content: space-between !important; /* Logo à gauche, Burger à droite */
        align-items: center !important;
        flex-wrap: wrap !important; /* Permet au menu de glisser en dessous au clic */
        width: 100% !important;
    }

    .navbar-toggler {
        display: block !important;
        visibility: visible !important;
        border: none !important;
        padding: 8px !important;
        margin-right: 2em;
    }

    .navbar-brand img,
    img[src*="logo"] {
        max-width: 80px !important;
        height: auto !important;
        display: block !important;
    }

    .collapse.collapsing {
        display: flex !important;
        flex-direction: column !important;
        flex-basis: 100% !important; /* Force le passage en dessous du logo/burger */
        width: 100% !important;
        gap: 18px !important; /* Espacement entre les liens */
        padding: 20px 0 10px 0 !important;
    }

    .collapse a, .collapsing a {
        color: #1e5937 !important;
        text-decoration: none !important;
        font-weight: 600 !important;
        font-size: 0.95rem !important;
        width: 100% !important;
        display: block !important;
    }

    .collapse ul, .collapsing ul {
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    .collapse .btn, .collapsing .btn {
        background-color: #1e5937 !important;
        color: #ffffff !important;
        text-decoration: none !important;
        font-weight: 600 !important;
        width: 80% !important;
        max-width: 240px !important;
        padding: 10px 16px !important;
        border-radius: 5px !important;
        font-size: 0.9rem !important;
        border: none !important;
        display: block !important;
        margin-top: 20px !important;
    }
}

/*-------Pagination------*/
.pagination {
    font-size: 1.5rem;
    color: #855895;
}

.pagination a {
    color: #855895 !important;
}

/*-------Style boutons------*/
.btn {
    background-color: #855895;
    color: #fff;
}

.btn:hover {
    background-color: #6e4a7d;
    color: #fff;
}

.btn:active {
    background-color: #6e4a7d;
    color: #fff;
}

/*-------Slider avis------*/
.slider-avis .swiper-slide {
    display: flex;
    height: auto; /* Force Swiper à calculer la hauteur sur le slide le plus grand */
}

/* Le conteneur du picto */
    .swiper-pagination-custom .swiper-pagination-bullet {
        background: none !important; /* On enlève le style par défaut */
        width: auto !important;
        height: auto !important;
        opacity: 0.4; /* Image estompée par défaut */
        transition: opacity 0.3s ease;
        cursor: pointer;
        border: none !important;
    }

    /* Le picto quand la slide est active */
    .swiper-pagination-custom .swiper-pagination-bullet-active {
        opacity: 1; /* Image bien visible */
    }

    /* Taille du picto */
    .swiper-pagination-custom .swiper-pagination-bullet img {
        width: 25px; /* Ajuste selon la taille de ton image */
        height: auto;
    }

/*-------Effet sur les card------*/
.translate-hover { transition: transform 0.3s ease; }
.translate-hover:hover { transform: translateY(-5px); }


/*-------Case à cocher "Déjà fait !"------*/
/* Cache l'input par défaut */
.video-check.d-none {
    display: none !important;
}

.video-status-wrapper {
    display: block;
    margin-bottom: 20px;
}

/* Style du bouton "Sexy" */
.custom-check-btn {
    display: inline-flex; /* Empêche de bloquer toute la ligne */
    align-items: center;
    padding: 10px 22px;
    background: #ffffff;
    border: 2px solid #7D528F;
    border-radius: 50px;
    color: #7D528F;
    cursor: pointer;
    font-weight: 600;
    transition: all 0.3s ease;
    user-select: none;
}

/* Le cercle pour l'icône */
.icon-box {
    width: 22px;
    height: 22px;
    border: 1.5px solid #7D528F;
    border-radius: 50%;
    margin-right: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
}

.icon-box i { 
    opacity: 0; 
    transform: scale(0.5); 
    transition: 0.3s; 
}

/* ÉTAT QUAND COCHÉ */
.video-check:checked + .custom-check-btn {
    background-color: #7D528F;
    color: #ffffff;
}

.video-check:checked + .custom-check-btn .icon-box {
    background: #ffffff;
    border-color: #ffffff;
    color: #7D528F;
}

@media (min-width: 1200px) and (max-width: 1400px) {
    .video-check:checked + .custom-check-btn .icon-box {
        width: 22px;
        height: 15px;
    }
}

.video-check:checked + .custom-check-btn .icon-box i {
    opacity: 1;
    transform: scale(1);
}

/* Animation au survol */
.custom-check-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(125, 82, 143, 0.15);
}

@media (min-width: 992px) and (max-width: 1200px) {
    .custom-check-btn {
        padding: 5px 15px;
        font-size: 0.8rem;
    }

    .icon-box {
        width: 11px;
        height: 11px;
        margin-right: 5px;
    }
}



/*-------Coeur "Favoris"------*/
.dbs-actions-container {
    display: flex;
    align-items: center;
    gap: 15px;
    margin: 20px 0;
    width: fit-content; /* Crucial pour ne pas bloquer les boutons à côté */
    position: relative;
    z-index: 5;
}

.dbs-action-unit {
    display: inline-flex;
}

/* On s'assure que le label ne dépasse pas */
.kiff-btn {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    border: 2px solid #ff4d4d;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #ff4d4d;
    cursor: pointer;
    background: white;
    transition: all 0.2s ease;
}

.kiff-check:checked + .kiff-btn {
    background: #ff4d4d;
    color: white;
}

/* Pour être sûr que rien ne dépasse de l'input caché */
.video-check.d-none, .kiff-check.d-none {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

@media (min-width: 992px) and (max-width: 1200px) {
    .kiff-btn {
        width: 32px;
        height: 32px;
    }
}

/*-------Slider AVIS------*/
/* Par défaut, toutes les slides sont transparentes */
.slider-avis .swiper-slide {
    opacity: 0.4;
    transition: opacity 0.5s ease; /* Transition douce pour l'effet de glissement */
}

/* Seule la slide active (au centre) passe à l'opacité 1 */
.slider-avis .swiper-slide-active {
    opacity: 1;
}

/* Optionnel : tu peux aussi ajouter un léger zoom sur celle du centre */
.slider-avis .swiper-slide-active .card-avis {
    transform: scale(1.05);
    transition: transform 0.5s ease;
    border-color: #4CAF50 !important; /* Exemple : accentuer la bordure en vert */
}

/*-------Slider Programmes------*/
/* Force le mouvement linéaire sans saccades */
.slider-marquee-gauche .swiper-wrapper,
.slider-marquee-droite .swiper-wrapper {
    transition-timing-function: linear !important;
}

/* Empêche les images de prendre toute la largeur si le JS met du temps à charger */
.swiper-slide.w-auto {
    width: auto !important;
}

.marquee-double-container img {
    display: block;
    object-fit: cover;
}

/*------Bloc "PRES PLATEFORME"------*/
.pres-plateforme .mockup3 {
    margin-top: 0;
    position: relative;
}

/* ==========================================================================
   2. ORDINATEUR (Écrans à partir de 992px) : Ton design d'origine complet
   ========================================================================== */
@media (min-width: 992px) {
    .pres-plateforme .mockup3 {
        margin-top: 10rem;
    }
}

@media (min-width: 991px) and (max-width: 1200px) {
    .mockups .mockup1, .mockups .mockup2, .mockups .mockup3 {
        transform: none !important;
    }
}

/* ======
   MOBILE
   ====== */
@media (min-width: 768px) and (max-width: 991px) {
     /* 2. On réduit et nettoie chaque mockup */
    .mockups .mockup1 {
        max-width: 50% !important; /* Taille de l'image principale réduite */
        height: auto !important;
        transform: none !important;
        display: block;
        margin: auto;
    }

    .mockups .mockup2 {
        max-width: 25% !important; /* Taille intermédiaire */
        height: auto !important;
        margin-top: 0 !important;    /* Annule la superposition négative */
        position: static !important;  /* Coupe le position relative */
        transform: none !important;
        margin-left: 14em !important;
    }

    .mockups .mockup3 {
        max-width: 10% !important; /* Plus petite image (ex: smartphone) */
        height: auto !important;
        margin-left: 0 !important;   /* Annule la classe ms-5 de Bootstrap */
        position: static !important;  /* Coupe le position relative */
        transform: none !important;
    }
}

@media (max-width: 767px) {

    /* 2. On réduit et nettoie chaque mockup */
    .mockups .mockup1 {
        max-width: 80% !important; /* Taille de l'image principale réduite */
        height: auto !important;
        transform: none !important;
        display: block;
        margin: auto;
    }

    .mockups .mockup2 {
        max-width: 35% !important; /* Taille intermédiaire */
        height: auto !important;
        margin-top: 0 !important;    /* Annule la superposition négative */
        position: static !important;  /* Coupe le position relative */
        transform: none !important;
    }

    .mockups .mockup3 {
        max-width: 20% !important; /* Plus petite image (ex: smartphone) */
        height: auto !important;
        margin-left: 0 !important;   /* Annule la classe ms-5 de Bootstrap */
        position: static !important;  /* Coupe le position relative */
        transform: none !important;
    }
}

/*------Bloc "DBS - C'EST QUOI ?"------*/
/* Sur mobile : comportement classique */
.pres-dbs .overlay-content {
    position: initial;
}

.pres-dbs .titre-survol {
    font-size: 1.5rem;
    text-shadow: none;
    color: #265433 !important;
    font-family: 'Barbra';
}

/*------Bloc "LES PROGRAMMES DBS"------*/
/* Sur mobile : comportement classique */
.pres-prog h5 {
    font-weight: 100;
    color: #855895 !important;
}

/* ==========================================================================
   2. ORDINATEUR (Écrans à partir de 992px) : Ton design d'origine complet
   ========================================================================== */
@media (min-width: 992px) {
    .pres-dbs .overlay-content {
        position: absolute;
    }

    .pres-dbs .titre-survol {
        font-size: 3.5rem;
        text-shadow: 5px 3px rgba(0, 0, 0, 0.4);
        color: #fff !important;
    }
}

/*------Bloc "INSCRITS TOI"------*/
/* Sur mobile : comportement classique */

.inscription .part2 {
    border-radius: 40px;
    padding-left: 0 !important;
}
/* ==========================================================================
   1. TMOBILE
   ========================================================================== */
@media (max-width: 991px) {
    .inscription {
        overflow: hidden;
    }

    .inscription .video-wrapper {
        transform: translateX(0px);
    }

    .inscription .part1 h2 {
        transform: translateX(0px);
    }
}


/* ==========================================================================
   1. TABLETTE (Écrans de 768px à 991px) : Superposition légère
   ========================================================================== */
@media (min-width: 768px) and (max-width: 991px) {
    .inscription {
        overflow: hidden;
    }

    .inscription .video-wrapper {
        transform: translateX(0px);
    }

    .inscription .part1 h2 {
        transform: translateX(0px);
    }
}

/* ==========================================================================
   2. ORDINATEUR (Écrans à partir de 992px) : Ton design d'origine complet
   ========================================================================== */
@media (min-width: 992px) {
    .inscription .video-wrapper {
        transform: translateX(75px) !important; 
    }

    .inscription .part1 h2 {
        transform: translateX(75px) !important;
    }

    .inscription .part2 {
        padding-left: 8em !important; 
        border-radius: 40px 0 0 40px;
    }
}

/*-------FAQ------*/

/* Le bouton de l'accordéon */
.custom-faq-btn {
    background-color: #7D528F !important; /* Ton violet */
    color: white !important;
    border: none;
    padding: 1rem 2rem;
    font-weight: 500;
    transition: all 0.3s ease;
}

/* Enlever l'icône bleue par défaut de Bootstrap ou la styliser */
.custom-faq-btn::after {
    filter: brightness(0) invert(1); /* Rend la flèche blanche */
}

.custom-faq-btn:not(.collapsed) {
    box-shadow: none;
    border-bottom-left-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}

.accordion-item {
    overflow: hidden;
}

/*-------Footer------*/
footer a {
    color : #fff !important;
}




/* ==========================================================================
   2. ORDINATEUR (Écrans à partir de 992px) : Ton design d'origine complet
   ========================================================================== */
@media (min-width: 992px) {
    /*PARTIE DBS C'EST QUOI ?*/
    .overlay-content {
        width: 60% !important;
    }

    /*PARTIE PROGRAMME DU MOMENT*/
    /* 1. On s'assure que le parent sert bien de repère de hauteur */
    .pres-prog-du-moment .col-md-4.position-relative {
        position: relative !important;
    }
    
    /* 2. On plaque le bloc au pixel près tout en bas à droite */
    .pres-prog-du-moment .bloc1 {
        position: absolute !important;
        bottom: 0 !important;
        right: 0 !important; /* On remplace left: 0 par right: 0 */
        width: 100% !important; /* Force le bloc à garder toute sa largeur */
        padding-right: 12px; /* Recrée le petit espace d'air par rapport à la grande photo */
    }
}

/*-------PLATEFORME------*/

.plateforme-hub h2 {
    font-family: var(--font-titre);
    color: #265433;
    font-size: 35px;
}

.plateforme-hub h4 {
    font-weight: 100 !important;
    font-size: 30px;
}

.plateforme-hub h6 {
    font-weight: bold;
    font-size: 20px;
    color: #7D528F;
}

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

    /* Bannières Durée */
.category-banner { background: #000; border: none; }
.category-banner h3 { text-shadow: 2px 2px 8px rgba(0,0,0,0.7); letter-spacing: 1px; }

/* MOBILE */
@media (max-width: 992px) {
    .category-banner h3 {
        text-align: center;
        padding: 1em;
    }
}

    /* Boutons Type */
.type-box { border: 1px solid #eee; transition: all 0.3s ease; }
.type-box:hover { border-color: #7D528F; box-shadow: 0 10px 20px rgba(125,82,143,0.1) !important; }

    /* Ratio spécifique pour les programmes (format portrait) */
.ratio-4x5 { --bs-aspect-ratio: 125%; }

.card-title a {
    color: #7D528F !important;
    text-decoration: none !important;
}

/*-------FLÈCHE RETOUR VERS LE HAUT------*/
.back-to-top {
    position: fixed;
    bottom: 30px;
    right: 30px;
    width: 45px;
    height: 45px;
    background-color: #7D528F;
    color: #fff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 24px;
    text-decoration: none;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
    z-index: 999;
}

.back-to-top.visible {
    opacity: 1;
    visibility: visible;
}

.back-to-top:hover {
    background-color: #6e4a7d;
}

/* responsive image */
@media (min-width: 768px) and (max-width: 991px) {
    .pres-cible .col1 img {
        width: 50% !important;
        margin: auto;
        display: block;
    }

    .pres-prof .col1 img, .pres-prof .col2 img {
        width: 40% !important;
        margin: auto;
        display: block;
    }

    .pres-prog-du-moment .col1 img, .pres-prog-du-moment .col2 img {
        width: 50% !important;
        margin: auto;
        display: block;
    }

    .pres-prog-du-moment .col1 .img1 {
        float: right;
    }

    .pres-prog-du-moment .col1 .img2 {
        float: left;
    }

    .pres-prog-du-moment .col2 img {
        width: 40% !important;
        margin: auto;
        display: block;
    }
}



