/* ===================================================================
 *  CDH83 — actualites.css
 *  Refonte v4.1 : harmonisation, animations, hero bannière
 *
 *  Charte CDH83 :
 *    #dd1a02 (rouge accent) · #cf1d61 (magenta hover)
 *    Typos : montserrat-* (titres) · lora-regular (corps)
 *
 *  Couvre :
 *    1. Section homepage (cards sur fond sombre, anim staggered)
 *    2. Page liste publique (hero banner + corps blanc + footer noir)
 *    3. Page détail (article éditorial, partage social)
 *    4. Transition de page (fondu au noir vers preloader)
 * =================================================================== */


/* ────────────────────────────────────────────────────────────────────
 *  Variables locales scopées
 * ──────────────────────────────────────────────────────────────────── */
.s-actualites,
.s-actualites-liste,
.s-actualite-detail,
.actualites-hero {
    --acc:        #dd1a02;
    --acc-hover:  #cf1d61;
    --card-bg:    #ffffff;
    --card-meta:  #8a8a8a;
    --card-title: #111111;
}


/* ────────────────────────────────────────────────────────────────────
 *  FOOTER — Toujours noir, sur toutes les pages
 *  Le footer du main.css définit la couleur de texte mais pas le fond.
 *  Sur la home, le <body> noir suffit ; sur la page actualités au fond
 *  blanc, il faut forcer le footer en noir pour la cohérence.
 * ──────────────────────────────────────────────────────────────────── */
/* ────────────────────────────────────────────────────────────────────
 *  FOOTER — Toujours dans la couleur de fond du body de la home (#111)
 *  Le footer du main.css définit la couleur de texte mais pas le fond.
 *  Sur la home, le <body> en #111 suffit ; sur la page actualités au
 *  fond blanc, il faut forcer le footer en #111 pour cohérence.
 * ──────────────────────────────────────────────────────────────────── */
footer,
.page-actualites footer,
.page-actualite-detail footer {
    background: #111111;
    color: #ffffff;
}


/* ────────────────────────────────────────────────────────────────────
 *  TRAIT VERTICAL ROUGE entre la section « Nos partenaires » et le
 *  footer noir. Reproduit la décoration .contact__line de la home,
 *  mais sur un conteneur dédié qui se positionne à la jonction des
 *  deux sections. Le trait fait 20.4rem de haut au total, partagé
 *  à 50/50 entre la fin de la section claire et le début du footer.
 * ──────────────────────────────────────────────────────────────────── */
.partners-footer-divider {
    position: relative;
    height: 0;                         /* n'occupe pas de hauteur dans le flow */
    overflow: visible;
    z-index: 5;
    pointer-events: none;
}
.partners-footer-divider::before {
    content: "";
    display: block;
    width: 2px;
    height: 20.4rem;
    background: #cf1d61;
    background: linear-gradient(317deg,
        rgba(207, 29, 97, 1)   0%,
        rgba(253, 29, 29, 1)  50%,
        rgba(247, 0, 119, 1) 100%);
    position: absolute;
    left: 50%;
    top: -10.2rem;                     /* centré sur la jonction des 2 sections */
    margin-left: -1px;
}
@media (max-width: 768px) {
    .partners-footer-divider::before {
        height: 14rem;
        top: -7rem;
    }
}


/* ────────────────────────────────────────────────────────────────────
 *  SCROLL FLUIDE GLOBAL (smooth scroll + léger amorti)
 *  Appliqué à <html> via override dans index/actualites/actualite.
 * ──────────────────────────────────────────────────────────────────── */
html {
    scroll-behavior: smooth;
    /* Pas de scroll-padding fixe pour ne pas casser les ancres existantes,
       mais les pages avec sticky header pourront override en local */
}
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
}


/* ────────────────────────────────────────────────────────────────────
 *  TRANSITION DE PAGE (fondu au noir au clic « Plus d'actualités »)
 * ──────────────────────────────────────────────────────────────────── */
#page-fade-overlay {
    position: fixed;
    inset: 0;
    background: #050505;
    z-index: 9999;
    opacity: 0;
    visibility: hidden;
    transition: opacity .55s cubic-bezier(.4,0,.2,1),
                visibility 0s .55s linear;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3rem;
    pointer-events: none;
}

/* ────────────────────────────────────────────────────────────────────
 *  LOGO dans le loader
 *  Ajouté à la fois dans #preloader (chargement initial) et
 *  dans #page-fade-overlay (transition entre pages).
 *  Effet : léger pulse pour accompagner l'animation des barres.
 * ──────────────────────────────────────────────────────────────────── */
#preloader .loader-logo,
#page-fade-overlay .loader-logo {
    display: block;
    width: 90px;
    height: auto;
    margin: 0 auto 2.4rem;
    animation: loader-logo-pulse 1.6s ease-in-out infinite;
}

@keyframes loader-logo-pulse {
    0%, 100% { transform: scale(1);    opacity: 1;    }
    50%      { transform: scale(1.06); opacity: 0.85; }
}

/* L'overlay de transition est en flex column → on évite le margin
   en double sur le logo (déjà géré par le gap). */
#page-fade-overlay .loader-logo {
    margin-bottom: 0;
}

@media (prefers-reduced-motion: reduce) {
    #preloader .loader-logo,
    #page-fade-overlay .loader-logo {
        animation: none;
    }
}
#page-fade-overlay.active {
    opacity: 1;
    visibility: visible;
    transition-delay: 0s;
    pointer-events: auto;
}
/* Le loader interne reprend le même style que le #preloader de la home */
#page-fade-overlay .line-scale-pulse-out > div {
    background: #cf1d61;
    background: linear-gradient(317deg,
        rgba(207, 29, 97, 1)   0%,
        rgba(253, 29, 29, 1)  50%,
        rgba(247, 0, 119, 1) 100%);
    width: 4px;
    height: 35px;
    border-radius: 2px;
    margin: 2px;
    display: inline-block;
    animation: line-scale-pulse-out 0.9s -0.6s infinite cubic-bezier(0.85, 0.25, 0.37, 0.85);
    animation-fill-mode: both;
}
#page-fade-overlay .line-scale-pulse-out > div:nth-child(2),
#page-fade-overlay .line-scale-pulse-out > div:nth-child(4) {
    animation-delay: -0.4s !important;
}
#page-fade-overlay .line-scale-pulse-out > div:nth-child(1),
#page-fade-overlay .line-scale-pulse-out > div:nth-child(5) {
    animation-delay: -0.2s !important;
}


/* ====================================================================
 *  1. SECTION HOMEPAGE — « Nos actualités »
 * ==================================================================== */
.s-actualites {
    background: linear-gradient(317deg, #1a1a1a 0%, #0a0a0a 50%, #1a1a1a 100%);
    padding: 10rem 0 12rem;
    position: relative;
}

.s-actualites .intro-wrap         { padding: 0 0 4rem; }
.s-actualites .section-header .subhead { color: var(--acc); }
.s-actualites .display-2          { color: #ffffff; }

.s-actualites .actualites-wrap {
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 4rem;
}
@media (max-width: 1024px) { .s-actualites .actualites-wrap { padding: 0 3rem; } }
@media (max-width: 600px)  { .s-actualites .actualites-wrap { padding: 0 2rem; } }


/* ────────────────────────────────────────────────────────────────────
 *  ANIMATION CARDS — apparition successive (staggered fade-in-up)
 *  Appliquée au chargement initial via la classe .reveal-staggered
 *  ajoutée par JS à la grille (ou directement en CSS pour la home).
 * ──────────────────────────────────────────────────────────────────── */

/* Grille des cards : Flexbox avec alignement à gauche.
   Les cards s'alignent au breadcrumb « Accueil › Actualités » qui est
   lui-même aligné à gauche dans le même conteneur .wrap. */
.actualites-grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: 3rem;
}
.actualites-grid .actualite-card {
    flex: 0 0 calc((100% - 6rem) / 3);   /* 3 colonnes avec 2 gaps de 3rem */
    max-width: calc((100% - 6rem) / 3);
}
@media (max-width: 1024px) {
    .actualites-grid { gap: 2.5rem; }
    .actualites-grid .actualite-card {
        flex: 0 0 calc((100% - 2.5rem) / 2);   /* 2 colonnes */
        max-width: calc((100% - 2.5rem) / 2);
    }
}
@media (max-width: 600px) {
    .actualites-grid { gap: 2rem; }
    .actualites-grid .actualite-card {
        flex: 0 0 100%;                  /* 1 colonne */
        max-width: 100%;
    }
}

/* Cards : invisibles au départ, révélées une par une */
.actualites-grid .actualite-card {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity .9s cubic-bezier(.2,.7,.2,1),
                transform .9s cubic-bezier(.2,.7,.2,1);
}
.actualites-grid.is-revealed .actualite-card {
    opacity: 1;
    transform: translateY(0);
}
/* Délais cumulés (jusqu'à 12 cards par grille). Pour la liste/page,
   les cards au-delà sont gérées par IntersectionObserver côté JS. */
.actualites-grid.is-revealed .actualite-card:nth-child(1)  { transition-delay: 0.00s; }
.actualites-grid.is-revealed .actualite-card:nth-child(2)  { transition-delay: 0.15s; }
.actualites-grid.is-revealed .actualite-card:nth-child(3)  { transition-delay: 0.30s; }
.actualites-grid.is-revealed .actualite-card:nth-child(4)  { transition-delay: 0.45s; }
.actualites-grid.is-revealed .actualite-card:nth-child(5)  { transition-delay: 0.60s; }
.actualites-grid.is-revealed .actualite-card:nth-child(6)  { transition-delay: 0.75s; }
.actualites-grid.is-revealed .actualite-card:nth-child(7)  { transition-delay: 0.90s; }
.actualites-grid.is-revealed .actualite-card:nth-child(8)  { transition-delay: 1.05s; }
.actualites-grid.is-revealed .actualite-card:nth-child(9)  { transition-delay: 1.20s; }
.actualites-grid.is-revealed .actualite-card:nth-child(10) { transition-delay: 1.35s; }
.actualites-grid.is-revealed .actualite-card:nth-child(11) { transition-delay: 1.50s; }
.actualites-grid.is-revealed .actualite-card:nth-child(12) { transition-delay: 1.65s; }

@media (prefers-reduced-motion: reduce) {
    .actualites-grid .actualite-card {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
}


/* ────────────────────────────────────────────────────────────────────
 *  CARDS — design (identique v4.0)
 * ──────────────────────────────────────────────────────────────────── */
.actualite-card {
    background: var(--card-bg);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    box-shadow: 0 4px 20px rgba(0,0,0,.25);
    position: relative;
}
/* Surcharge le transition pour la HOVER : conserve l'effet de levée */
.actualite-card {
    transition: opacity .9s cubic-bezier(.2,.7,.2,1),
                transform .9s cubic-bezier(.2,.7,.2,1),
                box-shadow .35s ease;
}
.actualites-grid.is-revealed .actualite-card:hover,
.actualites-grid.is-revealed .actualite-card:focus-visible {
    transform: translateY(-6px) !important;
    box-shadow: 0 14px 40px rgba(0,0,0,.45);
    color: inherit;
    outline: none;
}

.actualite-card__media {
    position: relative;
    width: 100%;
    aspect-ratio: 3 / 2;
    overflow: hidden;
    background: #ececec;
}
.actualite-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .6s cubic-bezier(.2,.7,.2,1);
}
.actualite-card:hover .actualite-card__media img {
    transform: scale(1.06);
}
.actualite-card__category {
    position: absolute;
    top: 1.6rem;
    left: 1.6rem;
    background: var(--acc);
    color: #fff;
    font-family: "montserrat-semibold", sans-serif;
    font-size: 1.1rem;
    letter-spacing: .12rem;
    text-transform: uppercase;
    padding: .5rem 1.1rem;
    border-radius: 2px;
    line-height: 1;
}
.actualite-card__body {
    padding: 2.4rem 2.4rem 2.6rem;
    display: flex;
    flex-direction: column;
    gap: .8rem;
    flex: 1;
}
.actualite-card__meta {
    font-family: "montserrat-regular", sans-serif;
    font-size: 1.2rem;
    color: var(--card-meta);
    letter-spacing: .05rem;
    margin: 0;
}
.actualite-card__title-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1.6rem;
    margin-top: .4rem;
}
.actualite-card__title {
    font-family: "montserrat-regular", sans-serif;
    font-size: 1.7rem;
    line-height: 1.35;
    color: var(--card-title);
    margin: 0;
    font-weight: 400;
}
.actualite-card__arrow {
    flex-shrink: 0;
    width: 3.2rem;
    height: 3.2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--card-title);
    transition: transform .3s ease, color .3s ease;
    margin-top: .2rem;
}
.actualite-card:hover .actualite-card__arrow,
.actualite-card:focus-visible .actualite-card__arrow {
    color: var(--acc);
    transform: translateX(6px);
}
.actualite-card__arrow svg {
    width: 2.2rem;
    height: 2.2rem;
    display: block;
}
.actualite-card:focus-visible {
    outline: 3px solid var(--acc);
    outline-offset: 4px;
}


/* ────────────────────────────────────────────────────────────────────
 *  BOUTON « Plus d'actualités »
 *  Section homepage (fond noir) : bouton BLANC par défaut, ROUGE au hover.
 *  On surcharge .btn--stroke uniquement dans le contexte .s-actualites,
 *  pour ne pas affecter les autres boutons du site.
 * ──────────────────────────────────────────────────────────────────── */
.actualites-cta {
    margin-top: 5.5rem;
    text-align: center;
}

.s-actualites .actualites-cta .btn,
.s-actualites .actualites-cta .btn--stroke {
    background: transparent;
    border: 0.2rem solid #ffffff;
    color: #ffffff;
}
.s-actualites .actualites-cta .btn:hover,
.s-actualites .actualites-cta .btn:focus,
.s-actualites .actualites-cta .btn--stroke:hover,
.s-actualites .actualites-cta .btn--stroke:focus {
    background: transparent;
    border-color: #dd1a02;
    color: #dd1a02;
}

.actualites-empty {
    text-align: center;
    color: rgba(255,255,255,.6);
    padding: 4rem 0;
    font-style: italic;
}


/* ====================================================================
 *  2. PAGE LISTE PUBLIQUE — /actualites
 *  Structure : hero bannière → texte "X publiées" → corps blanc → footer noir
 * ==================================================================== */
.page-actualites {
    background: #fff;
    color: #2b2b2b;
}

/* ── HERO BANNIÈRE — Vrai effet parallaxe via JS ────────────────────
   Pour avoir un vrai parallaxe (l'image scrolle plus lentement que
   la page), on utilise une approche JS :
   - L'image est placée dans un <div class="actualites-hero__bg">
     qui couvre la section avec position: absolute.
   - Au scroll, on applique transform: translateY(N px) où N varie
     en fonction du scrollY de la fenêtre (effet -0.4× soit 40% plus lent).

   Avantage vs `background-attachment: fixed` :
   - Fonctionne même quand le body a un fond clair (pas de souci de z-index)
   - Fonctionne sur mobile iOS
   - Effet de parallaxe réel (pas juste image fixe) */
.actualites-hero {
    position: relative;
    min-height: 56vh;
    color: #fff;
    display: flex;
    align-items: center;       /* centré verticalement */
    justify-content: flex-start;
    text-align: left;
    overflow: hidden;
    background-color: #050505;  /* fallback couleur si l'image rate */
}

.actualites-hero__bg {
    position: absolute;
    inset: -10% 0;             /* dépassement haut/bas pour éviter les bords blancs */
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    z-index: 0;
    will-change: transform;
    transform: translateZ(0);
}

.actualites-hero__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg,
        rgba(0,0,0,.35) 0%,
        rgba(0,0,0,.55) 60%,
        rgba(0,0,0,.85) 100%);
    z-index: 1;
    pointer-events: none;
}
.actualites-hero__inner {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 1400px;
    margin: 0 auto;
    padding: 14rem 4rem 12rem;
}

/* Accessibilité : pas de parallaxe pour les utilisateurs sensibles */
@media (prefers-reduced-motion: reduce) {
    .actualites-hero__bg {
        transform: none !important;
    }
}

/* Le H1 du hero : aligné à gauche, limité en largeur pour la lisibilité */
.actualites-hero .subhead {
    font-family: "montserrat-semibold", sans-serif;
    font-size: 1.3rem;
    text-transform: uppercase;
    letter-spacing: .35rem;
    color: var(--acc);
    margin: 0 0 1.6rem;
}
.actualites-hero h1 {
    font-family: "montserrat-semibold", sans-serif;
    font-size: 5.6rem;
    line-height: 1.05;
    color: #fff;
    margin: 0 0 2rem;
    max-width: 900px;
    letter-spacing: -.02em;
}
.actualites-hero .lead {
    font-family: "lora-regular", serif;
    font-size: 1.9rem;
    color: rgba(255,255,255,.85);
    max-width: 720px;
    margin: 0;
    line-height: 1.5;
}

/* Meta (date + lieu) dans le hero de la page détail */
.actualites-hero__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 2.4rem;
    margin-top: 2rem;
    font-family: "montserrat-regular", sans-serif;
    font-size: 1.4rem;
    color: rgba(255,255,255,.85);
}
.actualites-hero__meta i {
    color: var(--acc);
    margin-right: .6rem;
}

/* ── Sur la page DÉTAIL : le .subhead (catégorie de l'actualité)
   prend la forme d'un badge rouge plein, identique à celui des cards
   « MISE EN LIGNE ». ──────────────────────────────────────────────── */
.actualite-detail-hero .subhead {
    display: inline-block;
    background: var(--acc);
    color: #fff;
    font-family: "montserrat-semibold", sans-serif;
    font-size: 1.2rem;
    letter-spacing: .2rem;
    text-transform: uppercase;
    padding: .7rem 1.4rem;
    border-radius: 2px;
    line-height: 1;
    margin: 0 0 2rem;
}
@media (max-width: 900px) {
    .actualites-hero { min-height: 50vh; }
    .actualites-hero__inner { padding: 12rem 3rem 6rem; }
    .actualites-hero h1 { font-size: 3.8rem; }
    .actualites-hero .lead { font-size: 1.6rem; }
}
@media (max-width: 600px) {
    .actualites-hero { min-height: 44vh; }
    .actualites-hero__inner { padding: 11rem 2rem 5rem; }
    .actualites-hero h1 { font-size: 3rem; }
}

/* ── Compteur sous le hero (point de transition vers corps blanc) ─── */
.actualites-counter {
    background: #fff;
    border-bottom: 1px solid #eee;
    padding: 3rem 0;
}
.actualites-counter__inner {
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 4rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    flex-wrap: wrap;
}
.actualites-counter .count {
    font-family: "montserrat-semibold", sans-serif;
    font-size: 1.4rem;
    color: #222;
    text-transform: uppercase;
    letter-spacing: .25rem;
    margin: 0;
}
.actualites-counter .count strong {
    color: var(--acc);
    font-size: 1.8rem;
    margin-right: .4rem;
}
.actualites-counter .breadcrumb {
    margin: 0;
}
@media (max-width: 600px) {
    .actualites-counter__inner { padding: 0 2rem; }
}


/* ── Filtre catégories (dropdown style btn--stroke, hover rouge) ─────
   Reprend l'aspect du bouton "Toutes les actualités" (pill arrondi
   avec bordure 2px). Hover : passage en rouge sur la bordure et le
   texte. Pas de fond noir. */
.category-filter-dropdown {
    position: relative;
    display: inline-block;
}

.category-filter-toggle {
    display: inline-flex;
    align-items: center;
    gap: 1rem;
    padding: .9rem 2rem;
    background: transparent;
    border: 2px solid #222;
    border-radius: 999px;
    font-family: "montserrat-semibold", sans-serif;
    font-size: 1.2rem;
    letter-spacing: .15rem;
    text-transform: uppercase;
    color: #222;
    cursor: pointer;
    transition: border-color .25s ease, color .25s ease;
    line-height: 1;
    min-width: 240px;
    justify-content: space-between;
}
.category-filter-toggle:hover,
.category-filter-toggle:focus-visible,
.category-filter-toggle[aria-expanded="true"] {
    border-color: var(--acc);
    color: var(--acc);
    outline: none;
}
.category-filter-chevron {
    transition: transform .25s ease;
    flex-shrink: 0;
}
.category-filter-toggle[aria-expanded="true"] .category-filter-chevron {
    transform: rotate(180deg);
}

.category-filter-menu {
    position: absolute;
    top: calc(100% + .8rem);
    right: 0;
    min-width: 100%;
    max-width: 360px;
    margin: 0;
    padding: .8rem 0;
    list-style: none;
    background: #fff;
    border: 1px solid #eaeaea;
    border-radius: 1.4rem;
    box-shadow: 0 10px 30px rgba(0,0,0,.12);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-6px);
    transition: opacity .2s ease, transform .2s ease, visibility 0s linear .2s;
    z-index: 100;
}
.category-filter-dropdown.is-open .category-filter-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    transition: opacity .2s ease, transform .2s ease, visibility 0s linear 0s;
}

.category-filter-option {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.2rem;
    padding: 1rem 1.8rem;
    font-family: "montserrat-semibold", sans-serif;
    font-size: 1.2rem;
    letter-spacing: .08rem;
    text-transform: uppercase;
    color: #333;
    text-decoration: none;
    transition: color .2s ease, background .2s ease;
}
.category-filter-option:hover,
.category-filter-option:focus-visible {
    background: rgba(221, 26, 2, .06);
    color: var(--acc);
    outline: none;
}
.category-filter-option.is-selected {
    color: var(--acc);
}
.category-filter-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2rem;
    height: 2rem;
    padding: 0 .6rem;
    border-radius: 999px;
    background: #f0f0f0;
    color: #555;
    font-size: 1rem;
    font-weight: 700;
}
.category-filter-option:hover .category-filter-count,
.category-filter-option.is-selected .category-filter-count {
    background: var(--acc);
    color: #fff;
}

@media (max-width: 700px) {
    .category-filter-toggle {
        min-width: 0;
        width: 100%;
        font-size: 1.1rem;
        padding: .8rem 1.6rem;
    }
    .category-filter-menu {
        left: 0;
        right: 0;
        max-width: none;
    }
}


/* ── CORPS BLANC : grille des cards ────────────────────────────────── */
.s-actualites-liste {
    padding: 6rem 0 9rem;
    background: #fff;
}
.s-actualites-liste .wrap {
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 4rem;
}
@media (max-width: 1024px) { .s-actualites-liste .wrap { padding: 0 3rem; } }
@media (max-width: 600px)  { .s-actualites-liste .wrap { padding: 0 2rem; } }

/* Cards sur fond blanc : ombres plus discrètes + bordure légère */
.page-actualites .actualite-card {
    background: #fff;
    box-shadow: 0 2px 8px rgba(0,0,0,.05);
    border: 1px solid #eee;
}
.page-actualites .actualites-grid.is-revealed .actualite-card:hover,
.page-actualites .actualites-grid.is-revealed .actualite-card:focus-visible {
    box-shadow: 0 12px 30px rgba(0,0,0,.12);
}


/* ── PAGINATION ────────────────────────────────────────────────────── */
.pagination {
    margin-top: 6rem;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: .6rem;
    flex-wrap: wrap;
}
.pagination a,
.pagination span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 4.4rem;
    height: 4.4rem;
    padding: 0 1.2rem;
    font-family: "montserrat-semibold", sans-serif;
    font-size: 1.3rem;
    color: #222;
    background: #fff;
    border: 1px solid #e0e0e0;
    text-decoration: none;
    border-radius: 2px;
    transition: all .25s ease;
}
.pagination a:hover {
    background: var(--acc);
    border-color: var(--acc);
    color: #fff;
}
.pagination .page-current {
    background: var(--acc);
    border-color: var(--acc);
    color: #fff;
    pointer-events: none;
}
.pagination .page-ellipsis {
    border: none;
    background: transparent;
    pointer-events: none;
}


/* ====================================================================
 *  3. PAGE DÉTAIL — /actualite/:slug
 *  (corps blanc, footer noir — préserve la cohérence)
 * ==================================================================== */
.page-actualite-detail {
    background: #fff;
    color: #2b2b2b;
}
.page-actualite-detail .s-actualite-detail { padding: 6rem 0 8rem; }
.page-actualite-detail .wrap {
    max-width: 920px;
    margin: 0 auto;
    padding: 0 4rem;
}
@media (max-width: 600px) {
    .page-actualite-detail .wrap { padding: 0 2rem; }
    .page-actualite-detail .s-actualite-detail { padding: 5rem 0 6rem; }
}

/* ── Fil d'Ariane ──────────────────────────────────────────────────── */
.breadcrumb {
    font-family: "montserrat-regular", sans-serif;
    font-size: 1.3rem;
    color: #777;
    margin: 0 0 3.6rem;
    padding: 0;
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .6rem;
}
.breadcrumb li {
    display: inline-flex;
    align-items: center;
    gap: .6rem;
}
.breadcrumb a {
    color: #777;
    text-decoration: none;
    transition: color .25s ease;
}
.breadcrumb a:hover { color: var(--acc); }
.breadcrumb .sep { color: #c5c5c5; font-size: 1.1rem; }
.breadcrumb [aria-current="page"] {
    color: #111;
    font-family: "montserrat-semibold", sans-serif;
    max-width: 480px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
@media (max-width: 600px) {
    .breadcrumb [aria-current="page"] { max-width: 220px; }
}

/* ── En-tête article ──────────────────────────────────────────────── */
.article-header { margin-bottom: 4rem; }
.article-header .category {
    display: inline-block;
    background: var(--acc);
    color: #fff;
    font-family: "montserrat-semibold", sans-serif;
    font-size: 1.1rem;
    letter-spacing: .15rem;
    text-transform: uppercase;
    padding: .5rem 1.1rem;
    margin-bottom: 1.8rem;
    border-radius: 2px;
}
.article-header h1 {
    font-family: "montserrat-semibold", sans-serif;
    font-size: 4.2rem;
    line-height: 1.18;
    color: #0f0f0f;
    margin: 0 0 1.8rem;
}
@media (max-width: 600px) { .article-header h1 { font-size: 2.8rem; } }

.article-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 2rem;
    font-family: "montserrat-regular", sans-serif;
    font-size: 1.3rem;
    color: #777;
    margin: 0 0 2.4rem;
}
.article-meta i { color: var(--acc); margin-right: .6rem; }

.article-hero {
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    margin-bottom: 4rem;
    background: #ececec;
}
.article-hero img {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
}

/* ── Corps article ─────────────────────────────────────────────────── */
.article-body {
    font-family: "lora-regular", serif;
    font-size: 1.8rem;
    line-height: 1.75;
    color: #333;
}
.article-body p { margin: 0 0 2rem; }
.article-body h2, .article-body h3, .article-body h4 {
    font-family: "montserrat-semibold", sans-serif;
    color: #0f0f0f;
    margin-top: 4rem;
    margin-bottom: 1.6rem;
}
.article-body h2 { font-size: 2.8rem; line-height: 1.25; }
.article-body h3 { font-size: 2.2rem; line-height: 1.3;  }
.article-body h4 { font-size: 1.9rem; line-height: 1.35; }
.article-body a {
    color: var(--acc);
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color .25s ease;
}
.article-body a:hover { color: var(--acc-hover); }
.article-body ul, .article-body ol {
    margin: 0 0 2.4rem 1.8rem;
    padding-left: 1rem;
}
.article-body li { margin-bottom: .8rem; }
.article-body blockquote {
    border-left: 4px solid var(--acc);
    padding: .6rem 0 .6rem 2.4rem;
    margin: 3rem 0;
    font-style: italic;
    color: #555;
    font-size: 2rem;
}
.article-body img {
    max-width: 100%;
    height: auto;
    margin: 2.4rem 0;
    display: block;
}

/* ── Partage social ────────────────────────────────────────────────── */
.article-share {
    margin: 5rem 0 4rem;
    padding: 3rem 0;
    border-top: 1px solid #e0e0e0;
    border-bottom: 1px solid #e0e0e0;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 1.6rem;
}
.article-share__label {
    font-family: "montserrat-semibold", sans-serif;
    font-size: 1.2rem;
    text-transform: uppercase;
    letter-spacing: .2rem;
    color: #555;
    margin: 0;
}
.share-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: inline-flex;
    flex-wrap: wrap;
    gap: 1rem;
}
.share-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.2rem;
    height: 4.2rem;
    border-radius: 50%;
    background: #fff;
    border: 1px solid #e0e0e0;
    color: #333;
    text-decoration: none;
    transition: all .25s ease;
    font-size: 1.6rem;
}
.share-btn:hover,
.share-btn:focus-visible {
    transform: translateY(-2px);
    outline: none;
}
.share-btn[data-share="facebook"]:hover { background: #1877f2; border-color: #1877f2; color: #fff; }
.share-btn[data-share="twitter"]:hover  { background: #000;    border-color: #000;    color: #fff; }
.share-btn[data-share="email"]:hover    { background: var(--acc); border-color: var(--acc); color: #fff; }

/* ── CTA bas de page (boutons harmonisés btn--stroke) ──────────────── */
.article-footer-cta {
    margin-top: 2rem;
    display: flex;
    flex-wrap: wrap;
    gap: 1.4rem;
}


/* ====================================================================
 *  4. PAGE 404 (dans actualite.php)
 * ==================================================================== */
.actualite-404 {
    text-align: center;
    padding: 6rem 0;
}
.actualite-404 .num {
    font-family: "montserrat-bold", sans-serif;
    font-size: 9rem;
    color: var(--acc);
    line-height: 1;
    margin: 0 0 2rem;
}
.actualite-404 h1 {
    font-family: "montserrat-semibold", sans-serif;
    font-size: 3rem;
    color: #0f0f0f;
    margin: 0 0 1.6rem;
}
.actualite-404 p {
    color: #666;
    font-size: 1.7rem;
    margin: 0 0 3rem;
}



/* ────────────────────────────────────────────────────────────────────


/* ════════════════════════════════════════════════════════════════════
 *  FIX BUG MOBILE — Header transparent superposé aux titres de section
 *
 *  CONTEXTE :
 *   Le .s-header du site est en position:absolute, fond transparent,
 *   z-index:500. Sur mobile (et quand on arrive via un lien #ancre),
 *   il vient se superposer au contenu de la première section visible.
 *
 *  PAGES CONCERNÉES :
 *   - index.php           → hero (.s-home) ET section actualités (.s-actualites)
 *   - actualites.php      → hero (.actualites-hero)
 *   - actualite.php       → hero détail (.actualites-hero.actualite-detail-hero)
 *                          + contenu (.s-actualite-detail)
 *   - Toute liaison vers une ancre interne (#contact, #services, etc.)
 *
 *  SOLUTION :
 *   1. scroll-padding-top global : pour que les liens #ancre laissent
 *      la place au header en haut (110px = hauteur header + air)
 *   2. Padding-top supplémentaire mobile sur les sections "première" :
 *      pousse le contenu sous la zone du header transparent
 *   3. Pour le hero d'accueil .s-home (table-cell + valign:middle),
 *      on bascule vertical-align en top sur mobile pour éviter le
 *      "remonte automatique" qui fait passer le titre sous le logo
 * ══════════════════════════════════════════════════════════════════════ */

html {
    scroll-padding-top: 110px;
}

/* ─── Mobile : pousser le contenu sous la zone du header transparent ─ */
@media (max-width: 768px) {

    /* index.php — Hero d'accueil .s-home :
       sur table-cell+valign:middle, le contenu remonte automatiquement
       et passe sous le logo. On force l'alignement par le haut pour
       que le padding-top contrôle vraiment où démarre le contenu. */
    .s-home .home-content {
        vertical-align: top;
    }
    .s-home .home-content__main {
        padding-top: 22rem !important;
    }

    /* index.php : section actualités quand on arrive via #actualites */
    .s-actualites {
        padding-top: 13rem;
    }

    /* actualites.php : page liste actualités */
    .s-actualites-liste {
        padding-top: 11rem;
    }

    /* actualites.php et actualite.php : hero parallax */
    .actualites-hero {
        padding-top: 8rem;
    }

    /* actualite.php : contenu détail */
    .s-actualite-detail {
        padding-top: 4rem;
    }

    /* Sections internes accessibles via lien #ancre depuis l'extérieur */
    .s-quisommesnous,
    .s-services,
    .s-partenaires,
    .s-contact {
        scroll-margin-top: 110px;
    }
}

/* Plus petits écrans : ajustements fins */
@media (max-width: 600px) {
    .s-home .home-content__main { padding-top: 21rem !important; }
    .s-actualites      { padding-top: 12rem; }
    .actualites-hero   { padding-top: 7rem; }
}

@media (max-width: 400px) {
    .s-home .home-content__main { padding-top: 20rem !important; }
}
