/*
Theme Name: ASM × FDHS (classique)
Theme URI: https://associationsaintemarie.fr
Author: Studio Cassette
Author URI: https://studiocassette.com
Description: Thème WordPress hybride classique pour l'Association Sainte-Marie (ASM) et le Fonds de Dotation Handicap Solidarité (FDHS). Structure PHP (header.php/footer.php), menus WordPress et Customizer, contenu éditable en blocs Gutenberg via patterns. Style clair et chaleureux (ASM) ; variation sombre et dorée (FDHS). Deux entités liées par le motif du cœur.
Version: 3.5.4
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: asm-fdhs
*/

/* ============================================================
 * SKIN FDHS — Fonds de Dotation Handicap Solidarité
 * Appliqué via body.fdhs (classe posée selon le domaine, cf. functions.php).
 * Surcharge les variables de couleur du thème → identité crimson/amber claire,
 * sans dupliquer la feuille de style (ASM et FDHS partagent les mêmes fichiers).
 * ============================================================ */
body.fdhs {
  /* Typographie FDHS : Bricolage Grotesque (titres) + Inter (corps), conforme
     à la maquette. Remplace Montserrat/Cormorant/Caveat côté ASM. */
  --wp--preset--font-family--heading: 'Bricolage Grotesque', system-ui, -apple-system, sans-serif;
  --wp--preset--font-family--display: 'Bricolage Grotesque', system-ui, -apple-system, sans-serif;
  --wp--preset--font-family--body: 'Inter', system-ui, -apple-system, sans-serif;
  --wp--preset--color--background: #FFFFFF;
  --wp--preset--color--surface: #F8F4EC;      /* crème (guideline FDHS) */
  --wp--preset--color--subtle: #FBEDE9;       /* voile rouge pâle (labels/pills) */
  --wp--preset--color--ink: #1A1305;          /* Encre — titres (charte) */
  --wp--preset--color--ink-body: #4A3820;     /* Brun — corps (charte) */
  --wp--preset--color--ink-soft: #6A5840;     /* Brun clair — secondaire (charte) */
  --wp--preset--color--brand: #D04838;        /* Crimson 400 — CTA/liens (charte) */
  --wp--preset--color--brand-strong: #A83020; /* Crimson 500 — survol/pressé (charte) */
  --wp--preset--color--brand-deep: #A83020;   /* Crimson 500 (accessible : blanc dessus 6.76:1) */
  --wp--preset--color--accent: #C89A18;       /* or — secondaire */
  --wp--preset--color--accent-strong: #A07610;
  --wp--preset--color--on-brand: #FFFFFF;     /* texte blanc sur boutons rouges */
  --wp--preset--color--border: #EDE5D4;       /* bordure crème (guideline FDHS) */
  --wp--preset--gradient--brand-accent: linear-gradient(135deg, #D04838 0%, #E88C30 100%);
  --wp--preset--gradient--brand-soft: linear-gradient(140deg, #F4C9A0 0%, #A83020 100%);
}
/* Footer FDHS sombre = Sombre #151516 (charte) — l'ASM garde son teal-noir #111E1D */
body.fdhs .site-footer { background: #151516; }

/* ── FDHS home (page d'accueil one-page, conforme maquette) ── */
/* Hero aligné à gauche (le thème ASM centre par défaut) */
body.fdhs .asm-hero.fdhs-hero-left .wp-block-cover__inner-container { text-align: left; }
body.fdhs .asm-hero.fdhs-hero-left .wp-block-buttons { justify-content: flex-start; }
/* Conteneur du hero calé sur le conteneur du site (aligné au logo de l'en-tête,
   texte non rogné sur le bord gauche) */
body.fdhs .asm-hero .wp-block-cover__inner-container { max-width: 1280px; margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; box-sizing: border-box; }
body.fdhs .asm-hero.fdhs-hero-left .fdhs-hero-inner { max-width: 600px; margin-left: 0 !important; margin-right: auto !important; }
/* Rangée de montants de don : pilules compactes qui passent à la ligne */
body.fdhs .don-amounts { flex-wrap: wrap; gap: 0.5rem; }
body.fdhs .don-amounts .wp-block-button__link { padding: 0.5rem 1.15rem; }

/* ── Header FDHS : barre unique blanche, CTA rouge, pilule partenaire ── */
/* Pas de topbar (l'e-mail reste dans le footer) : une seule barre nette. */
body.fdhs .site-topbar { display: none; }
/* CTA « Faire un don » en ROUGE (le thème ASM l'affiche en doré) */
body.fdhs .header-cta { background: var(--wp--preset--color--brand); color: #fff; }
body.fdhs .header-cta:hover { background: var(--wp--preset--color--brand-strong); }
/* Lien partenaire = pilule contour rouge, dans la barre de nav */
body.fdhs .header-partner {
  display: inline-flex; align-items: center; gap: 0.3rem;
  border: 2px solid var(--wp--preset--color--brand);
  color: var(--wp--preset--color--brand);
  border-radius: 9999px; padding: 0.5rem 1.1rem;
  font-family: var(--wp--preset--font-family--body);
  font-weight: 700; font-size: 0.85rem; line-height: 1; text-decoration: none;
  white-space: nowrap; transition: background-color 0.2s ease;
}
body.fdhs .header-partner:hover { background: color-mix(in srgb, var(--wp--preset--color--brand) 10%, transparent); }
/* Navrow TOUJOURS solide blanc sur la home (pas de transparence sur le hero) :
   menu lisible, logo net et non rogné, aussi bien avant qu'après le scroll. */
body.fdhs.home .site-header:not(.hdr-scrolled) .site-navrow {
  background-color: #fff !important;
  box-shadow: 0 2px 14px rgba(0, 0, 0, 0.07);
}
body.fdhs.home .site-header:not(.hdr-scrolled) .site-navrow .asm-logo img { height: 58px; }
/* Hero FDHS : cadrer l'image pour garder les visages visibles (haut de l'image) */
body.fdhs .asm-hero .wp-block-cover__image-background { object-position: center 22%; }
/* Titre du hero contraint à la moitié gauche → 2 lignes, ne recouvre pas les visages */
body.fdhs .asm-hero .fdhs-hero-inner h1 { max-width: 600px; }
@media (max-width: 781px) { body.fdhs .asm-hero .fdhs-hero-inner h1 { max-width: 100%; } }
body.fdhs.home .site-header:not(.hdr-scrolled) .site-navrow .main-nav a { color: var(--wp--preset--color--ink) !important; }
body.fdhs.home .site-header:not(.hdr-scrolled) .nav-toggle span { background: var(--wp--preset--color--ink); }
body.fdhs .site-header.hdr-scrolled .site-navrow .asm-logo img { height: 44px; }
/* Pages internes : même logo réduit qu'en home avant scroll (52px) */
body.fdhs .site-header:not(.hdr-scrolled) .site-navrow .asm-logo img { height: 58px; }
/* La pilule partenaire + le CTA ajoutent de la largeur : on resserre le menu
   pour qu'il tienne sur une seule ligne (sinon « Contact » passe dessous). */
body.fdhs .site-navrow__inner { gap: 1rem; }
body.fdhs .main-nav__list { flex-wrap: nowrap; gap: 1.1rem; }
body.fdhs .main-nav a { font-size: 14px; }
/* (masquage du lien partenaire : géré jusqu'a 900px dans le bloc menu, plus bas) */

/* ── Home, avant scroll : header transparent à 2 niveaux + carte-menu flottante
   (reprise de la maquette Design validée « FDHS Accueil »). Desktop uniquement :
   sur mobile on conserve la barre blanche + le hamburger. La carte est neutre
   (display:contents) dans tous les autres états, donc rien d'autre ne bouge. ── */
.hdr-card { display: contents; }
/* Logo « texte blanc + cœur coloré » : masqué par défaut, montré uniquement
   sur le header transparent au-dessus du hero (voir le bloc desktop ci-dessous). */
.asm-logo__hero { display: none; }

@media (min-width: 901px) {
  /* Barre transparente sur le hero (le menu porte son propre fond blanc) */
  body.fdhs.home .site-header:not(.hdr-scrolled) .site-navrow {
    background-color: transparent !important;
    box-shadow: none !important;
  }
  /* Le conteneur passe sur 2 lignes : (1) logo + CTA, (2) carte-menu */
  body.fdhs.home .site-header:not(.hdr-scrolled) .site-navrow__inner {
    flex-wrap: wrap;
    align-items: center;
    /* Bandeau logo + CTA resserré (106px au lieu de 122) : on ne joue que sur
       les espacements, la hauteur du logo (84px) et du bouton (46px) ne bouge pas. */
    row-gap: 10px;
    padding-top: 12px;
    padding-bottom: 0;
  }
  /* Ligne 1 : logo (84px) à gauche, CTA « Faire un don » à droite */
  body.fdhs.home .site-header:not(.hdr-scrolled) .asm-logo { order: 1; }
  body.fdhs.home .site-header:not(.hdr-scrolled) .asm-logo img { height: 84px !important; }
  /* Bascule sur le logo blanc tant que le header est transparent sur le hero */
  body.fdhs.home .site-header:not(.hdr-scrolled) .asm-logo__default { display: none; }
  body.fdhs.home .site-header:not(.hdr-scrolled) .asm-logo__hero { display: block; }
  body.fdhs.home .site-header:not(.hdr-scrolled) .header-cta { order: 2; margin-left: auto; }
  /* Ligne 2 : carte blanche flottante (menu + lien partenaire), pleine largeur */
  body.fdhs.home .site-header:not(.hdr-scrolled) .hdr-card {
    order: 3;
    flex: 0 0 100%;
    box-sizing: border-box; /* le padding 20px reste DANS les 100% → marges G/D égales */
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 80px;
    padding: 0 20px;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.12);
  }
  /* Liens du menu : capitales compactes, encre foncée (#3A2810) */
  body.fdhs.home .site-header:not(.hdr-scrolled) .hdr-card .main-nav__list { gap: 0; flex-wrap: nowrap; }
  body.fdhs.home .site-header:not(.hdr-scrolled) .hdr-card .main-nav a {
    color: #3A2810 !important;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: 13px;
    font-weight: 700;
    padding: 8px 14px;
  }
  /* Item actif : accent couleur de marque, sans soulignement dans la carte */
  body.fdhs.home .site-header:not(.hdr-scrolled) .hdr-card .main-nav .current-menu-item > a,
  body.fdhs.home .site-header:not(.hdr-scrolled) .hdr-card .main-nav .current-menu-ancestor > a {
    color: var(--wp--preset--color--brand) !important;
    box-shadow: none;
  }
}

/* ============================================================
 * FDHS HOME — sections riches (mission, projets, don, newsletter)
 * Rendues par shortcodes (inc/fdhs-home.php) → markup maîtrisé.
 * ============================================================ */
/* Sortie pleine largeur depuis le contenu contraint de the_content.
   Doit battre `.entry-content > * { max-width: 720px }` (même spécificité) →
   on cible aussi le sélecteur enfant + max-width:none. */
.fdhs-fullbleed,
.entry-content > .fdhs-fullbleed { max-width: none !important; width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
.fdhs-section__inner { max-width: 1160px; margin: 0 auto; padding: clamp(3.5rem, 2rem + 5vw, 6rem) 1.5rem; }
.fdhs-section__title { font-family: var(--wp--preset--font-family--heading); font-weight: 800; letter-spacing: -0.01em; font-size: clamp(2rem, 1.4rem + 2.4vw, 3.1rem); line-height: 1.06; margin: 0.3rem 0 0; }
.fdhs-section__title em { color: var(--wp--preset--color--brand); font-style: italic; }
.fdhs-section__cta { margin-top: 2.5rem; }
.has-text-align-center { text-align: center; }

/* Boutons FDHS (hors Gutenberg) */
.fdhs-btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; border-radius: 9999px; padding: 0.9rem 1.7rem; font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: 1rem; line-height: 1; text-decoration: none; border: 2px solid transparent; cursor: pointer; transition: background-color 0.2s ease, transform 0.2s ease, color 0.2s ease; }
.fdhs-btn--primary { background: var(--wp--preset--color--brand); color: #fff; }
.fdhs-btn--primary:hover { background: var(--wp--preset--color--brand-strong); transform: translateY(-1px); }
.fdhs-btn--outline { background: transparent; border-color: var(--wp--preset--color--brand); color: var(--wp--preset--color--brand); }
.fdhs-btn--outline:hover { background: color-mix(in srgb, var(--wp--preset--color--brand) 10%, transparent); }
.fdhs-btn--accent { background: var(--wp--preset--color--accent); color: var(--wp--preset--color--ink); }
.fdhs-btn--accent:hover { background: var(--wp--preset--color--accent-strong); }
.fdhs-btn--heart::before { content: "\2665"; font-size: 0.95em; line-height: 1; }

/* ── Comment nous soutenir ── */
.fdhs-mission { background: var(--wp--preset--color--background); }
.fdhs-mission__inner { max-width: 1160px; margin: 0 auto; padding: clamp(3.5rem, 2rem + 5vw, 6rem) 1.5rem; display: grid; grid-template-columns: 1.05fr 1fr; gap: clamp(2rem, 1rem + 4vw, 4.5rem); align-items: center; }
.fdhs-mosaic { position: relative; display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 1fr; gap: 1rem; }
.fdhs-mosaic img { width: 100%; height: 100%; object-fit: cover; border-radius: 16px; display: block; }
.fdhs-mosaic__a { aspect-ratio: 4 / 3.4; }
.fdhs-mosaic__b { aspect-ratio: 4 / 3.4; }
.fdhs-mosaic__c { grid-column: 1 / -1; aspect-ratio: 16 / 6.6; }
.fdhs-mosaic__badge { position: absolute; left: 1.2rem; top: 52%; transform: translateY(-50%); background: #fff; border-radius: 18px; padding: 1rem 1.35rem; box-shadow: 0 18px 40px rgba(26,19,5,0.18); text-align: center; font-weight: 600; line-height: 1.15; color: var(--wp--preset--color--ink); }
.fdhs-mosaic__badge strong { display: block; font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: 2.1rem; color: var(--wp--preset--color--brand); }
.fdhs-mission__lead { color: var(--wp--preset--color--ink-soft); font-size: 1.1rem; line-height: 1.7; margin: 1.1rem 0 1.6rem; }
.fdhs-mission__list { list-style: none; margin: 0 0 1.5rem; padding: 0; display: grid; gap: 1.2rem; }
.fdhs-mission__list li { display: flex; gap: 1rem; align-items: flex-start; }
.fdhs-mission__ico { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; background: var(--wp--preset--color--subtle); color: var(--wp--preset--color--brand); }
.fdhs-mission__list strong { display: block; font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: 1.1rem; margin-bottom: 0.15rem; }
.fdhs-mission__list p { margin: 0; color: var(--wp--preset--color--ink-soft); line-height: 1.6; }
.fdhs-mission__checks { list-style: none; margin: 0 0 1.8rem; padding: 0; display: grid; gap: 0.6rem; }
.fdhs-mission__checks li { position: relative; padding-left: 2rem; color: var(--wp--preset--color--ink); font-weight: 500; }
.fdhs-mission__checks li::before { content: ""; position: absolute; left: 0; top: 2px; width: 20px; height: 20px; border-radius: 50%; background: var(--wp--preset--color--brand); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='white' d='M9 16.2l-3.5-3.5L4 14.2l5 5 11-11-1.5-1.5z'/%3E%3C/svg%3E") center / 14px no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='white' d='M9 16.2l-3.5-3.5L4 14.2l5 5 11-11-1.5-1.5z'/%3E%3C/svg%3E") center / 14px no-repeat; }
.fdhs-mission__cta { display: flex; flex-wrap: wrap; gap: 0.8rem; }

/* ── Soutenez nos projets ── */
.fdhs-projets { background: var(--wp--preset--color--surface); }
.fdhs-projets__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; margin-top: 2.5rem; }
.fdhs-projet { background: #fff; border-radius: 18px; overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 10px 30px rgba(26,19,5,0.06); }
.fdhs-projet__media { position: relative; }
.fdhs-projet__media img { width: 100%; height: 210px; object-fit: cover; display: block; }
.fdhs-projet__badge { position: absolute; top: 1rem; left: 1rem; background: #fff; color: var(--wp--preset--color--brand); font-family: var(--wp--preset--font-family--body); font-weight: 700; font-size: 0.7rem; letter-spacing: 0.08em; text-transform: uppercase; padding: 0.35rem 0.85rem; border-radius: 9999px; box-shadow: 0 4px 12px rgba(0,0,0,0.12); }
.fdhs-projet__body { padding: 1.6rem; display: flex; flex-direction: column; flex-grow: 1; }
.fdhs-projet__title { font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: 1.35rem; line-height: 1.15; margin: 0 0 0.6rem; }
/* Espace photo → titre de carte resserré (le titre héritait d'une marge-top
   parasite de 32px, qui s'ajoutait au padding du corps). */
.fdhs-projet__body { padding-top: 1.2rem; }
body.fdhs .fdhs-projet__body > .fdhs-projet__title { margin-top: 0 !important; }
.fdhs-projet__desc { color: var(--wp--preset--color--ink-soft); line-height: 1.6; margin: 0 0 1.3rem; }
.fdhs-projet__stat { margin-top: auto; }
.fdhs-projet__line { margin: 0 0 0.5rem; color: var(--wp--preset--color--ink); font-size: 0.95rem; }
.fdhs-projet__line strong { font-weight: 800; }
.fdhs-projet__line.is-soon { color: var(--wp--preset--color--brand); font-weight: 700; }
.fdhs-projet__bar { height: 7px; border-radius: 9999px; background: var(--wp--preset--color--border); overflow: hidden; }
.fdhs-projet__bar span { display: block; height: 100%; border-radius: 9999px; background: #ed8a09; } /* remplissage ambre (guideline) */
.fdhs-projet__cta { display: inline-flex; align-items: center; justify-content: center; margin-top: 1.4rem; padding: 0.75rem 1.4rem; border-radius: 9999px; border: 2px solid var(--wp--preset--color--ink); color: var(--wp--preset--color--ink); font-family: var(--wp--preset--font-family--heading); font-weight: 700; text-decoration: none; transition: background-color 0.2s ease, color 0.2s ease; }
.fdhs-projet__cta:hover { background: var(--wp--preset--color--ink); color: #fff; }

/* ── Merci à nos parrains ── */
.fdhs-parrains { background: var(--wp--preset--color--background); }
.fdhs-parrains__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2.5rem; margin-top: 2.5rem; }
.fdhs-parrain { text-align: center; }
.fdhs-parrain__media { border-radius: 18px; overflow: hidden; aspect-ratio: 4 / 3.1; box-shadow: 0 14px 34px rgba(26,19,5,0.10); }
.fdhs-parrain__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fdhs-parrain__nom { font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: 1.4rem; margin: 1.3rem 0 0.35rem; }
.fdhs-parrain__role { color: var(--wp--preset--color--brand); font-weight: 700; font-size: 0.9rem; margin: 0 0 1rem; }
/* Deux classes pour un même contenu : `__cit` datait de l'époque où ces encarts
   portaient des citations (d'où l'italique), `__bio` a été introduite avec les
   biographies. Le contenu est aujourd'hui biographique partout — l'italique n'a
   plus lieu d'être et les deux classes partagent le même style. */
.fdhs-parrain__cit,
.fdhs-parrain__bio { color: var(--wp--preset--color--ink-soft); line-height: 1.65; margin: 0; }
@media (max-width: 900px) { .fdhs-parrains__grid { grid-template-columns: 1fr; max-width: 460px; margin-left: auto; margin-right: auto; } }

/* ============================================================
 * FDHS — En-tête de page (bandeau) + contenu des pages satellites
 * ============================================================ */
body.fdhs .fdhs-page-hero {
	position: relative; overflow: hidden;
	background: var(--wp--preset--color--surface);
	border-bottom: 1px solid var(--wp--preset--color--border);
	padding: clamp(1.75rem, 1rem + 2.5vw, 2.75rem) 0 clamp(1.5rem, 0.9rem + 2vw, 2.25rem);
	margin-bottom: clamp(2.5rem, 1.5rem + 4vw, 4rem);
}
body.fdhs .fdhs-page-hero__inner { position: relative; z-index: 2; }
body.fdhs .fdhs-page-hero__crumb { margin-bottom: 1rem; }
body.fdhs .fdhs-page-hero__crumb .asm-breadcrumb { font-size: 0.85rem; padding: 0; background: none; }
body.fdhs .fdhs-page-hero__eyebrow { text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.75rem; font-weight: 700; color: var(--wp--preset--color--brand); margin: 0 0 0.6rem; font-family: var(--wp--preset--font-family--body); }
body.fdhs .fdhs-page-hero__title { font-family: var(--wp--preset--font-family--heading); font-weight: 800; letter-spacing: -0.01em; font-size: clamp(2.2rem, 1.5rem + 2.6vw, 3.4rem); line-height: 1.05; margin: 0; color: var(--wp--preset--color--ink); }
body.fdhs .fdhs-page-hero__intro { font-size: 1.15rem; line-height: 1.7; color: var(--wp--preset--color--ink-soft); margin: 1.1rem 0 0; max-width: none; }
/* Cœur décoratif du hero de page retiré (demande) */
body.fdhs .fdhs-page-hero__heart { display: none; }

/* ── « À propos » — bloc chiffres unifié comme Home : le titre « Le Fonds en
   chiffres » est intégré dans une bande crimson PLEINE LARGEUR (titre + stats
   + séparateurs verticaux légers), au lieu de la bande crème contenue. */
body.fdhs .entry-content h2:has(+ .fdhs-facts) {
  background: var(--wp--preset--color--brand);
  color: #fff !important;
  width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); max-width: none;
  padding: clamp(2rem, 1.5rem + 2vw, 3rem) 1.5rem 0.4rem;
  margin-top: clamp(2rem, 1rem + 3vw, 3.5rem); margin-bottom: 0;
  text-align: center;
}
body.fdhs .entry-content .fdhs-facts {
  background: var(--wp--preset--color--brand) !important;
  width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); max-width: none;
  border-radius: 0 !important; margin-top: 0 !important;
  padding-top: 1.9rem; padding-bottom: 2.6rem;
}
body.fdhs .entry-content .fdhs-facts .wp-block-columns { max-width: 1160px; margin-left: auto !important; margin-right: auto !important; justify-content: center; }
body.fdhs .entry-content .fdhs-facts .fdhs-fact__num { color: #fff; font-size: clamp(2.3rem, 1.6rem + 2vw, 2.9rem); }
body.fdhs .entry-content .fdhs-facts .fdhs-fact__lbl { color: rgba(255, 255, 255, 0.82); margin-top: 1.5rem; }
body.fdhs .entry-content .fdhs-facts .wp-block-columns > .wp-block-column { position: relative; }
body.fdhs .entry-content .fdhs-facts .wp-block-columns > .wp-block-column + .wp-block-column::before {
  content: ""; position: absolute; left: -0.7rem; top: 16%; bottom: 16%;
  width: 1px; background: rgba(255, 255, 255, 0.22);
}

/* Filet de sécurité : si l'éditeur enveloppe le titre + la bande de chiffres
   dans un Groupe « pleine largeur » portant lui aussi le fond de marque (cas de
   la page « À propos »), on se retrouvait avec deux rectangles rouges de
   largeurs différentes — décrochés blancs aux angles — et le 100vw des enfants
   débordait de la largeur utile, provoquant un défilement horizontal sur toute
   la page. Ici le Groupe suffit à porter la bande : on l'étend à la largeur du
   contenu et on remet ses enfants en largeur normale. */
body.fdhs .entry-content > .wp-block-group.has-brand-background-color:has(> h2 + .fdhs-facts) {
  max-width: none !important; width: auto !important;
  margin-left: 0 !important; margin-right: 0 !important; padding: 0 !important;
}
body.fdhs .entry-content > .wp-block-group.has-brand-background-color:has(> h2 + .fdhs-facts) > h2,
body.fdhs .entry-content > .wp-block-group.has-brand-background-color:has(> h2 + .fdhs-facts) > .fdhs-facts {
  width: auto !important; margin-left: 0 !important; margin-right: 0 !important;
}
/* La marge haute du titre servait à décoller la bande du contenu précédent
   quand le titre en formait lui-même le bord supérieur. C'est désormais le
   Groupe qui porte la bande : cette marge ne créait plus qu'un vide rouge. */
body.fdhs .entry-content > .wp-block-group.has-brand-background-color:has(> h2 + .fdhs-facts) > h2 {
  margin-top: 0 !important;
  padding-top: clamp(1.75rem, 1.2rem + 1.6vw, 2.75rem) !important;
}

/* ── « À propos » — bloc parrains unifié comme Home : 3 cartes côte à côte
   (photo au-dessus + nom + rôle crimson + bio), au lieu des lignes horizontales.
   Cartes compactes (pas pleine largeur) et trio centré : on centre le contexte
   des cartes (inline-block) tout en remettant les blocs texte à gauche. */
body.fdhs .entry-content:has(> .fdhs-bio) { text-align: center; }
body.fdhs .entry-content:has(> .fdhs-bio) > *:not(.fdhs-bio):not(.has-text-align-center):not(.fdhs-cta):not(.fdhs-facts) { text-align: start; }
body.fdhs .entry-content .fdhs-bio {
  /* Cartes en inline-block : l'écart horizontal vient des marges latérales, pas
     d'un gap. Réglées à 1,2 % pour obtenir ~32 px, soit le même écart que les
     grilles d'administrateurs plus haut. La largeur est réduite d'autant pour
     que les trois cartes tiennent sur une ligne. */
  display: inline-block !important; width: min(363px, 30.5%) !important; vertical-align: top;
  margin: 1.4rem 1.2% 0 !important; text-align: center; gap: 0 !important;
}
body.fdhs .entry-content .fdhs-bio > .wp-block-column { flex-basis: auto !important; width: 100% !important; }
body.fdhs .entry-content .fdhs-bio .wp-block-image img { aspect-ratio: 4 / 3; width: 100%; object-fit: cover; }
body.fdhs .entry-content .fdhs-bio .fdhs-bio__nom { margin-top: 1rem; font-size: 1.25rem; }
body.fdhs .entry-content .fdhs-bio .fdhs-bio__txt { font-size: 0.92rem; line-height: 1.55; }
/* Texte des fiches parrains aligné à gauche : la carte reste centrée dans la
   rangée, mais des biographies de 6 à 8 lignes centrées sont pénibles à lire
   (bords gauches irréguliers). Le centrage venait de .fdhs-bio et se
   propageait par héritage — d'où l'impossibilité de le corriger au bloc. */
body.fdhs .entry-content .fdhs-bio .fdhs-bio__nom,
body.fdhs .entry-content .fdhs-bio .fdhs-bio__role,
body.fdhs .entry-content .fdhs-bio .fdhs-bio__txt { text-align: left; }
@media (max-width: 781px) {
  body.fdhs .entry-content .fdhs-bio { display: block !important; width: auto !important; max-width: 420px; margin-left: auto !important; margin-right: auto !important; }
}

/* ── « Nos actions » — cartes .card harmonisées comme les cartes projet de Home :
   fond blanc + ombre, badge pilule blanche en overlay sur l'image, bouton outline. */
body.fdhs .card:has(.card-media) {
  background: #fff !important;
  /* Style de carte unifié du site : rayon 16, pas de contour, ombre à 2 couches. */
  box-shadow: 0 1px 3px rgba(26, 19, 5, 0.06), 0 6px 22px rgba(26, 19, 5, 0.11);
  border: 0;
  position: relative; border-radius: 16px;
}
/* Le groupe de contenu interne est en position:relative (WP) → il capterait le
   badge absolu ; on le remet static pour que le badge se cale sur la CARTE (image). */
body.fdhs .card:has(.card-media) > .wp-block-group { position: static !important; }
/* Espaces resserrés comme les cartes projet de Home : image→titre ≈21px
   (le groupe avait 24px de block-gap EN PLUS du padding) et titre→texte ≈10px. */
body.fdhs .card:has(.card-media) > .wp-block-group { margin-top: 0 !important; padding-top: 1.3rem !important; }
body.fdhs .card:has(.card-media) > .wp-block-group > h3 { margin-top: 0 !important; margin-bottom: 0 !important; }
body.fdhs .card:has(.card-media) > .wp-block-group > h3 + p { margin-top: 0.6rem !important; }

/* ── Pages établissements (sous-pages de « Nos actions ») : les boutons de
   contenu (« Découvrir l'établissement… ») s'alignent à GAUCHE avec le texte,
   au lieu du centrage par défaut du thème. Le CTA de bas de page reste centré. */
body.fdhs.parent-pageid-13 .entry-content .wp-block-buttons:not(.is-content-justification-center) {
  justify-content: flex-start;
}
body.fdhs.parent-pageid-13 .entry-content .fdhs-cta .wp-block-buttons {
  justify-content: center;
}

/* ── « Nos réalisations » (Insertion sociale) — cartes uniformisées comme les
   cartes projet de Home : hauteur identique pour toutes, et zone photo 4:3
   réservée en haut avec le badge posé DESSUS. Si la carte n'a pas encore
   d'image, un placeholder 4:3 (crème + cœur) réserve la place. */
body.fdhs .entry-content .fdhs-real > * { margin-top: 0 !important; }   /* block-gap WP qui décalait la 1re carte */
body.fdhs .entry-content .fdhs-real { align-items: stretch; grid-auto-rows: 1fr; }
body.fdhs .entry-content .fdhs-real__item {
  position: relative; overflow: hidden;
  padding: 0 0 1.3rem !important;
}
/* Placeholder 4:3 quand aucune photo n'est encore renseignée */
body.fdhs .entry-content .fdhs-real__item:not(:has(img))::before {
  content: ""; display: block; width: 100%; aspect-ratio: 4 / 3;
  background-color: var(--wp--preset--color--surface);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23D0BFA6' d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: center; background-size: 44px;
  border-bottom: 1px solid var(--wp--preset--color--border);
}
/* Photo réelle : même cadrage 4:3 */
body.fdhs .entry-content .fdhs-real__item img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
/* Badge posé sur la photo (pilule blanche, comme les cartes projet de Home) */
body.fdhs .entry-content .fdhs-real__cat {
  position: absolute !important; top: 0.85rem; left: 0.85rem; z-index: 2;
  background: #fff !important; color: var(--wp--preset--color--brand) !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
}
body.fdhs .entry-content .fdhs-real__item h3 { padding: 0 1.3rem; margin-top: 1.1rem !important; }
body.fdhs .entry-content .fdhs-real__item p:not(.fdhs-real__cat) { padding: 0 1.3rem; }
body.fdhs .card:has(.card-media) .pill-badge {
  position: absolute; top: 1rem; left: 1rem; z-index: 2; margin: 0;
  background: #fff !important; color: var(--wp--preset--color--brand) !important;
  font-weight: 700; font-size: 0.7rem; letter-spacing: 0.08em; text-transform: uppercase;
  padding: 0.35rem 0.85rem; border-radius: 9999px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
}
body.fdhs .card:has(.card-media) .wp-block-button__link {
  background: transparent !important;
  border: 2px solid var(--wp--preset--color--ink) !important;
  color: var(--wp--preset--color--ink) !important;
}
body.fdhs .card:has(.card-media) .wp-block-button__link:hover {
  background: var(--wp--preset--color--ink) !important; color: #fff !important;
}

/* ── « Contact » (et autres cartes claires) — conforme charte + accessibilité :
   ombre portée sur les cartes surface/crème (sans contour), et surtout liens
   LISIBLES (crimson foncé, 6.16:1 sur crème) au lieu du blanc illisible hérité
   de la règle globale entry-content a{color:#fff}. */
/* Ombre retirée sur demande : la carte se distingue déjà par son fond crème. */
body.fdhs .entry-content .wp-block-group.has-surface-background-color.has-global-padding {
  box-shadow: none;
}
/* NB : exclure les BOUTONS (.wp-element-button / .fdhs-btn / CTA) — sinon le
   texte des boutons pleins devient crimson sur crimson (illisible). */
body.fdhs .entry-content .has-surface-background-color a:not(.wp-element-button):not(.wp-block-button__link):not(.fdhs-btn):not(.fdhs-projet__cta),
body.fdhs .entry-content .has-background-background-color a:not(.wp-element-button):not(.wp-block-button__link):not(.fdhs-btn):not(.fdhs-projet__cta) {
  color: var(--wp--preset--color--brand-strong) !important;
  text-decoration: underline;
}
@media (max-width: 781px) { body.fdhs .fdhs-page-hero__heart { display: none; } }

/* Contenu de page : typographie + rythme soignés */
body.fdhs .page-body { padding-bottom: clamp(1.5rem, 1rem + 1.5vw, 2.5rem); }
body.fdhs .entry-content > * + * { margin-top: 1.35rem; }
body.fdhs .entry-content h2 { font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: clamp(1.7rem, 1.2rem + 1.8vw, 2.4rem); line-height: 1.12; letter-spacing: -0.01em; margin-top: 2.8rem; margin-bottom: 0.2rem; }
body.fdhs .entry-content h3 { font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: 1.35rem; line-height: 1.2; margin-top: 2rem; margin-bottom: 0.2rem; }
body.fdhs .entry-content p { line-height: 1.75; }
/* Ancienne règle de chapô retirée : elle n'agissait que si le paragraphe se
   trouvait être enfant DIRECT de .entry-content, ce qui dépend de l'imbrication
   des blocs dans l'éditeur. Résultat : 19 px sur Contact, 16 px partout
   ailleurs, sans raison éditoriale. Le corps de texte suit désormais une
   taille unique. */
body.fdhs .entry-content li { line-height: 1.7; }
body.fdhs .entry-content a:not(.wp-element-button):not(.fdhs-btn):not(.fdhs-projet__cta) {
	color: var(--wp--preset--color--brand); text-decoration: none;
	border-bottom: 1px solid color-mix(in srgb, var(--wp--preset--color--brand) 35%, transparent);
	transition: border-color 0.2s ease;
}
body.fdhs .entry-content a:not(.wp-element-button):not(.fdhs-btn):not(.fdhs-projet__cta):hover { border-bottom-color: var(--wp--preset--color--brand); }
body.fdhs .entry-content > figure:not(.card-media) img, body.fdhs .entry-content .wp-block-image:not(.card-media) img { border-radius: 16px; }
/* Image de carte : pas d'arrondi propre (la carte clippe le haut, le bas est à ras du corps) */
body.fdhs .entry-content .card-media img { border-radius: 0; }
/* Sections Mission/Parrains en blocs dans .entry-content : les classes composant
   doivent l'emporter sur la typo générique du contenu. */
body.fdhs .entry-content .fdhs-parrain__nom { margin: 1.3rem 0 0.35rem; font-size: 1.4rem; }
body.fdhs .entry-content .fdhs-parrain__role { margin: 0 0 1rem; }
body.fdhs .entry-content .fdhs-parrain__cit,
body.fdhs .entry-content .fdhs-parrain__bio { margin: 0; }
body.fdhs .entry-content .fdhs-parrain__media img { border-radius: 0; }
body.fdhs .entry-content .fdhs-section__title { margin-top: 0; }
body.fdhs .entry-content blockquote { border-left: 4px solid var(--wp--preset--color--brand); padding-left: 1.3rem; margin-left: 0; font-style: italic; color: var(--wp--preset--color--ink-soft); }
/* Les sections full-bleed (shortcodes) restent pleine largeur dans le contenu */
body.fdhs .site-main.page-plain > .entry-content { padding-top: 0; }

/* ── Formulaire de contact FDHS (Gravity Forms au design system) ── */
body.fdhs .fdhs-contact-form { margin-top: 1.5rem; }
body.fdhs .fdhs-contact-form .gform_wrapper { margin: 0; }
body.fdhs .fdhs-contact-form .gfield { margin-bottom: 1.4rem !important; }
body.fdhs .fdhs-contact-form .gfield_label { font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: 0.95rem; color: var(--wp--preset--color--ink); margin-bottom: 0.45rem; }
body.fdhs .fdhs-contact-form .gfield_required { color: var(--wp--preset--color--brand); }
body.fdhs .fdhs-contact-form input[type="text"],
body.fdhs .fdhs-contact-form input[type="email"],
body.fdhs .fdhs-contact-form textarea {
	width: 100%; border: 2px solid var(--wp--preset--color--border); border-radius: 12px;
	padding: 0.85rem 1.1rem; font-size: 1rem; font-family: var(--wp--preset--font-family--body);
	background: #fff; color: var(--wp--preset--color--ink); box-sizing: border-box;
}
body.fdhs .fdhs-contact-form input:focus, body.fdhs .fdhs-contact-form textarea:focus { outline: none; border-color: var(--wp--preset--color--brand); }
body.fdhs .fdhs-contact-form textarea { min-height: 150px; resize: vertical; }
/* Sélecteur de profil « Je suis… » en pilules */
body.fdhs .fdhs-contact-form .gfield--type-radio .gfield_radio { display: flex; flex-wrap: wrap; gap: 0.6rem; }
body.fdhs .fdhs-contact-form .gfield--type-radio .gchoice { display: inline-flex; align-items: center; margin: 0; border: 2px solid var(--wp--preset--color--border); border-radius: 9999px; padding: 0.55rem 1.15rem; transition: border-color 0.15s ease, background-color 0.15s ease; cursor: pointer; }
body.fdhs .fdhs-contact-form .gfield--type-radio .gchoice:has(input:checked) { border-color: var(--wp--preset--color--brand); background: var(--wp--preset--color--subtle); }
body.fdhs .fdhs-contact-form .gfield--type-radio .gchoice input { margin: 0 0.5rem 0 0; accent-color: var(--wp--preset--color--brand); }
body.fdhs .fdhs-contact-form .gfield--type-radio .gchoice label { margin: 0; font-weight: 600; }
/* Consentement + upload */
body.fdhs .fdhs-contact-form .gfield--type-checkbox .gchoice { display: flex; gap: 0.6rem; align-items: flex-start; }
body.fdhs .fdhs-contact-form .gfield--type-checkbox input { margin-top: 0.2rem; accent-color: var(--wp--preset--color--brand); }
body.fdhs .fdhs-contact-form .gform_fileupload_rules, body.fdhs .fdhs-contact-form .gfield_description { color: var(--wp--preset--color--ink-soft); font-size: 0.85rem; }
body.fdhs .fdhs-contact-form .gform_footer { margin-top: 0.5rem !important; }
body.fdhs .fdhs-contact-form .gform_confirmation_message { background: var(--wp--preset--color--subtle); border-radius: 14px; padding: 1.5rem; font-weight: 600; color: var(--wp--preset--color--brand-deep); }

/* ── Chaque don change une vie ── */
.fdhs-don { background: #1A1305; color: #fff; }
/* Padding haut réduit (96 → 57,6px en desktop) : l'espace au-dessus du
   surtitre était nettement plus large que sous la carte. Le padding bas est
   conservé, il sépare la section de la suivante. */
.fdhs-don__inner { max-width: 1160px; margin: 0 auto; padding: clamp(3.5rem, 2rem + 5vw, 6rem) 1.5rem; padding-top: clamp(2rem, 1.2rem + 3vw, 3.75rem); }
/* 860px (et non 760) : « Chaque don change une vie concrètement » réclame
   765px sur une ligne, il se coupait en deux pour 20px manquants alors que
   le conteneur parent en offre 1184. */
.fdhs-don__head { max-width: 860px; margin-bottom: 2.5rem; }
.fdhs-don .eyebrow-script { color: var(--wp--preset--color--brand); }
.fdhs-don__head .fdhs-section__title { color: #fff; }
.fdhs-don__grid { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 2rem; align-items: stretch; }
.fdhs-don__card { background: #fff; color: var(--wp--preset--color--ink); border-radius: 22px; padding: clamp(1.5rem, 1rem + 2vw, 2.5rem); }
.fdhs-don__card h3 { font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: 1.5rem; margin: 0 0 0.5rem; }
.fdhs-don__intro { color: var(--wp--preset--color--ink-soft); line-height: 1.6; margin: 0 0 1.5rem; }
.fdhs-don__label { text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.72rem; font-weight: 700; color: var(--wp--preset--color--ink-soft); margin: 0 0 0.7rem; }
.fdhs-don__amounts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.6rem; }
.fdhs-amt { border: 2px solid var(--wp--preset--color--border); background: #fff; color: var(--wp--preset--color--ink); border-radius: 12px; padding: 0.85rem 0.5rem; font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: 1rem; cursor: pointer; transition: all 0.15s ease; }
.fdhs-amt:hover { border-color: var(--wp--preset--color--brand); }
.fdhs-amt.is-active { background: var(--wp--preset--color--brand); border-color: var(--wp--preset--color--brand); color: #fff; }
.fdhs-don__calc { background: var(--wp--preset--color--surface); border-radius: 12px; padding: 0.8rem 1rem; margin: 1rem 0; font-size: 0.95rem; color: var(--wp--preset--color--ink); }
.fdhs-don__calc strong { color: var(--wp--preset--color--brand); font-weight: 800; }
.fdhs-don__input { width: 100%; border: 2px solid var(--wp--preset--color--border); border-radius: 12px; padding: 0.9rem 1.1rem; font-size: 1rem; margin-bottom: 0.7rem; font-family: var(--wp--preset--font-family--body); }
.fdhs-don__input:focus { outline: none; border-color: var(--wp--preset--color--brand); }
/* Montant libre : révélé par le bouton « Autre » du sélecteur de montant. */
.fdhs-don__custom { display: block; margin: 1rem 0 0; }
.fdhs-don__custom[hidden] { display: none; }
.fdhs-don__custom .fdhs-don__label { display: block; }
.fdhs-don__custom .fdhs-don__input { margin-bottom: 0; }
.fdhs-don__submit { display: flex; align-items: center; justify-content: center; gap: 0.5rem; width: 100%; margin-top: 0.5rem; padding: 1rem; border-radius: 9999px; background: var(--wp--preset--color--brand); color: #fff; font-family: var(--wp--preset--font-family--heading); font-weight: 800; text-decoration: none; transition: background-color 0.2s ease; }
.fdhs-don__submit:hover { background: var(--wp--preset--color--brand-strong); }
.fdhs-don__note { text-align: center; color: var(--wp--preset--color--ink-soft); font-size: 0.85rem; margin: 0.9rem 0 0; }
.fdhs-don__media { border-radius: 22px; overflow: hidden; }
.fdhs-don__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* Champs & bouton du don en border-box : width:100% + padding restent DANS le
   padding de la carte (sinon ils débordaient et touchaient presque la photo). */
.fdhs-don__input, .fdhs-don__submit { box-sizing: border-box; }

/* ── « Agir maintenant » : la carte de don traverse la frontière sombre→clair
   (bas de la carte sur fond clair, comme la maquette). Le fond sombre est posé
   en pseudo-élément qui s'arrête avant le bas de la section. ── */
.fdhs-don { background: transparent !important; position: relative; }
.fdhs-don::before { content: ""; position: absolute; left: 0; right: 0; top: 0; bottom: 150px; background: #1A1305; z-index: 0; }
.fdhs-don__inner { position: relative; z-index: 1; }
@media (max-width: 781px) { .fdhs-don::before { bottom: 0; } }

/* ── Cartes stat MÉCÉNAT (66% / 60%) : resserrer l'espace vertical interne
   (le grand nombre avait 24px de marge au-dessus et en dessous). */
body.fdhs .entry-content .wp-block-column.has-background:has(.stat-number) > * { margin-top: 8px !important; margin-bottom: 0 !important; }
body.fdhs .entry-content .wp-block-column.has-background:has(.stat-number) > *:first-child { margin-top: 0 !important; }
body.fdhs .entry-content .wp-block-column.has-background:has(.stat-number) .stat-number { line-height: 1.05 !important; }

/* ── Bande newsletter (au-dessus du footer) ── */
/* Marge haute réduite de moitié : elle s'ajoutait au padding bas de .page-body,
   ce qui produisait 160 px de blanc entre le dernier bloc et la newsletter. */
.fdhs-newsletter { position: relative; z-index: 2; max-width: 1160px; margin: clamp(1.75rem, 1rem + 2vw, 3rem) auto -70px; padding: 0 1.5rem; }
/* Sur la home, la section précédente gère déjà l'espacement → pas de double marge */
body.home .fdhs-newsletter { margin-top: 0; }
.fdhs-newsletter__card { display: grid; grid-template-columns: 1.15fr 0.85fr; border-radius: 24px; overflow: hidden; box-shadow: 0 30px 70px rgba(26,19,5,0.25); }
.fdhs-newsletter__left { background: var(--wp--preset--color--brand); color: #fff; padding: clamp(1.8rem, 1rem + 3vw, 3rem); }
.fdhs-newsletter__eyebrow { text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.72rem; font-weight: 700; margin: 0 0 0.6rem; color: #fff; opacity: 1; }
.fdhs-newsletter__title { font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.1rem); line-height: 1.1; margin: 0; color: #fff; }
.fdhs-newsletter__form { background: #222223; color: #fff; padding: clamp(1.8rem, 1rem + 3vw, 3rem); display: flex; align-items: center; }
.fdhs-newsletter__form .gform_wrapper { margin: 0; width: 100%; }
/* Champ + bouton sur une seule ligne (structure GF 2.5 : form > gform_body + gform_footer) */
.fdhs-newsletter__form .gform_wrapper form { display: flex; flex-wrap: nowrap; gap: 0.6rem; align-items: center; width: 100%; }
.fdhs-newsletter__form .gform_body, .fdhs-newsletter__form .gform-body { flex: 1 1 auto; min-width: 0; margin: 0; }
.fdhs-newsletter__form .gform_fields { display: block; grid-template-columns: none; }
.fdhs-newsletter__form .gfield { margin: 0 !important; width: 100%; }
.fdhs-newsletter__form .gfield_label, .fdhs-newsletter__form .gfield_description, .fdhs-newsletter__form .gform_required_legend { display: none !important; }
.fdhs-newsletter__form .ginput_container { margin: 0 !important; }
.fdhs-newsletter__form input[type=email] { width: 100%; border: none; border-radius: 9999px; padding: 0.95rem 1.3rem; font-size: 1rem; font-family: var(--wp--preset--font-family--body); box-sizing: border-box; }
.fdhs-newsletter__form .gform_footer { margin: 0 !important; padding: 0 !important; flex: 0 0 auto; display: flex; align-items: center; }
.fdhs-newsletter__form input[type=submit] { white-space: nowrap; }
@media (max-width: 520px) { .fdhs-newsletter__form .gform_wrapper form { flex-wrap: wrap; } .fdhs-newsletter__form .gform_footer { width: 100%; } .fdhs-newsletter__form input[type=submit] { width: 100%; } }

/* Boutons Gravity Forms — design system FDHS (pilule crimson, Bricolage).
   Couvre le submit de la newsletter ET du formulaire de contact. */
body.fdhs .gform_wrapper .gform_footer input[type=submit],
body.fdhs .gform_wrapper .gform_footer button,
body.fdhs .gform_wrapper input.gform_button,
body.fdhs .gform_wrapper button.gform_button,
body.fdhs .fdhs-newsletter__form input[type=submit] {
	background: var(--wp--preset--color--brand) !important;
	color: #fff !important;
	border: none !important;
	border-radius: 9999px !important;
	padding: 0.95rem 1.9rem !important;
	font-family: var(--wp--preset--font-family--heading) !important;
	font-weight: 700 !important;
	font-size: 1rem !important;
	line-height: 1.1 !important;
	cursor: pointer;
	box-shadow: none !important;
	transition: background-color 0.2s ease, transform 0.2s ease;
}
body.fdhs .gform_wrapper .gform_footer input[type=submit]:hover,
body.fdhs .gform_wrapper .gform_footer button:hover,
body.fdhs .gform_wrapper input.gform_button:hover,
body.fdhs .fdhs-newsletter__form input[type=submit]:hover {
	background: var(--wp--preset--color--brand-strong) !important;
	transform: translateY(-1px);
}
.fdhs-newsletter__form .gform_validation_errors, .fdhs-newsletter__form .gform_confirmation_message { color: #fff; flex: 1 1 100%; }

/* ── Footer FDHS (4 colonnes) ── */
.fdhs-footer { background: #151516; padding-top: 9rem; }
.fdhs-footer__cols { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1.3fr; gap: 2.5rem; padding: 1rem 0 3rem; }
.fdhs-footer__brand .footer-logo { width: 150px; height: auto; margin-bottom: 1.2rem; }
.fdhs-footer__baseline { color: rgba(255,255,255,0.72); line-height: 1.6; margin: 0 0 1.2rem; }
.fdhs-footer__addr { color: rgba(255,255,255,0.55); font-size: 0.9rem; line-height: 1.6; margin: 0; }
.fdhs-footer .footer-heading { color: #fff; font-family: var(--wp--preset--font-family--heading); font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.78rem; margin: 0 0 1.1rem; }
.fdhs-footer__links { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.7rem; }
.fdhs-footer__links a { color: rgba(255,255,255,0.75); text-decoration: none; transition: color 0.2s ease; }
.fdhs-footer__links a:hover { color: #fff; }
.fdhs-footer__links .fdhs-footer__don { color: var(--wp--preset--color--brand); font-weight: 700; display: inline-flex; align-items: center; gap: 0.4rem; }
.fdhs-footer__links .fdhs-footer__don::before { content: "\2665"; }
.fdhs-footer__contact { color: rgba(255,255,255,0.72); line-height: 1.6; margin: 0 0 0.7rem; }
.fdhs-footer__contact a { color: rgba(255,255,255,0.72); text-decoration: none; }
.fdhs-footer__contact a:hover { color: #fff; }
.fdhs-footer__partner { color: var(--wp--preset--color--brand) !important; font-weight: 600; }
.fdhs-footer .footer-legal { border-top: 1px solid rgba(255,255,255,0.12); }

@media (max-width: 900px) {
	.fdhs-projets__grid { grid-template-columns: 1fr; max-width: 460px; margin-left: auto; margin-right: auto; }
	.fdhs-footer__cols { grid-template-columns: 1fr 1fr; gap: 2rem; }
}
@media (max-width: 781px) {
	.fdhs-mission__inner { grid-template-columns: 1fr; }
	.fdhs-don__grid { grid-template-columns: 1fr; }
	.fdhs-don__media { min-height: 240px; }
	.fdhs-newsletter__card { grid-template-columns: 1fr; }
	.fdhs-footer__cols { grid-template-columns: 1fr; }
}

/* ============================================================
 * Footer margin reset (required for block themes)
 * ============================================================ */
.wp-site-blocks > footer { margin-block-start: 0; }
/* No gap above <main>: lets the hero reach the very top, behind the fixed
   transparent header on the homepage (kills the white strip above the top bar). */
.wp-site-blocks > main { margin-block-start: 0; }

/* ============================================================
 * Script eyebrow — the handwritten "Caveat" accent used above
 * ASM section titles ("Notre histoire", "Actualités"…).
 * ============================================================ */
.eyebrow-script {
  font-family: 'Caveat', ui-rounded, cursive;
  font-size: clamp(1.5rem, 1.2rem + 1vw, 1.9rem);
  font-weight: 600;
  line-height: 1;
  color: var(--wp--preset--color--brand-deep); /* a11y : le teal clair échoue le 3:1 sur blanc/mint */
  margin-bottom: 0.5rem;
}
/* On the FDHS dark style, the script accent becomes an uppercase gold label */
.is-style-fdhs .eyebrow-script,
body.fdhs .eyebrow-script {
  font-family: var(--wp--preset--font-family--body);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--wp--preset--color--brand);
}

/* Small uppercase pill badge (both themes) */
.pill-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  background: var(--wp--preset--color--subtle);
  color: var(--wp--preset--color--brand-deep);
  border-radius: 9999px;
  padding: 0.25rem 0.9rem;
  font-family: var(--wp--preset--font-family--body);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/* ============================================================
 * Buttons — secondary (outline) variant
 * Use the "is-style-outline" core style OR .btn-outline utility
 * ============================================================ */
.wp-block-button.is-style-outline .wp-block-button__link {
  background: transparent;
  color: var(--wp--preset--color--brand-deep);
  border: 2px solid var(--wp--preset--color--brand-deep); /* a11y : bordure lisible (le teal clair échoue le 3:1) */
}
.wp-block-button.is-style-outline .wp-block-button__link:hover,
.wp-block-button.is-style-outline .wp-block-button__link:focus {
  /* a11y : remplissage basé sur la couleur du texte (currentColor) → reste lisible
     aussi bien en contexte clair (texte teal) que sombre (texte blanc). Avant, le
     fond mint fixe rendait le texte blanc des boutons sur fond sombre illisible. */
  background: color-mix(in srgb, currentColor 12%, transparent);
}

/* ============================================================
 * Decorative rounded panels (ASM "Notre histoire" / "Nos
 * établissements" split sections)
 * ============================================================ */
.panel-round-right { border-radius: 0 40px 40px 0; }
.panel-round-left  { border-radius: 40px 0 0 40px; }
@media (max-width: 781px) {
  .panel-round-right, .panel-round-left { border-radius: 24px; }
}

/* Wave divider echoing the ASM logo */
.wave-divider { display: block; width: 160px; height: 36px; color: var(--wp--preset--color--brand); }

/* ============================================================
 * Hero (ASM) — full-viewport image with legibility overlay
 * ============================================================ */
.asm-hero { position: relative; overflow: hidden; }
/* Voile d'assombrissement à 50 % pour la lisibilité du texte blanc sur la photo
   (l'image de fond doit rester visible dessous). */
.asm-hero .wp-block-cover__background { opacity: 0.5; }
/* Contenu du hero entièrement centré (titre, sous-titre, boutons) */
.asm-hero .wp-block-cover__inner-container { text-align: center; }
.asm-hero .wp-block-cover__inner-container .wp-block-buttons { justify-content: center; }
/* Hero eyebrow with short rules on each side: — DEPUIS PLUS DE 100 ANS — */
.hero-eyebrow { display: flex; align-items: center; justify-content: center; gap: 16px; }
.hero-eyebrow::before, .hero-eyebrow::after {
  content: ""; flex: 0 0 40px; width: 40px; height: 1px; background: currentColor; opacity: 0.85;
}
@media (max-width: 781px) {
  .asm-hero { padding-top: 132px !important; min-height: auto !important; }
  /* On mobile the header is not fixed — keep it in flow so content isn't hidden */
  body.home .site-header { position: sticky; }
  body.home .site-header .site-navrow { background-color: #fff; }
  body.home .site-header .site-navrow .wp-block-navigation .wp-block-navigation-item__content { color: var(--wp--preset--color--ink); }
}

/* Stat number (count-up target) */
.stat-number {
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 800;
  line-height: 1;
  letter-spacing: -0.03em;
  font-size: clamp(2.2rem, 1.6rem + 1.5vw, 3rem);
}
.is-style-fdhs .stat-number,
body.fdhs .stat-number {
  font-family: var(--wp--preset--font-family--display);
  font-weight: 600;
}

/* ============================================================
 * Collect gauge (Mon Village 2030 / FDHS projects)
 * ============================================================ */
/* Pourcentage de la jauge de collecte : défini en CSS (une valeur CSS custom
   ne peut pas être un attribut de bloc Gutenberg valide). Mettre à jour ici
   quand la campagne évolue. */
.collect-gauge { --gauge-pct: 46%; }
.collect-gauge__track {
  position: relative;
  height: 10px;
  background: color-mix(in srgb, var(--wp--preset--color--ink) 14%, transparent);
  border-radius: 9999px;
  overflow: hidden;
}
.is-style-fdhs .collect-gauge__track,
body.fdhs .collect-gauge__track {
  background: color-mix(in srgb, var(--wp--preset--color--brand) 14%, transparent);
}
/* La barre de remplissage est un pseudo-élément : pas d'élément vide à gérer,
   donc pas de bloc HTML dans l'éditeur. */
.collect-gauge__track::before {
  content: "";
  display: block;
  height: 100%;
  width: 0;
  border-radius: 9999px;
  background: var(--wp--preset--gradient--brand-accent, linear-gradient(90deg, #3ECAB4, #FCBE00));
  transition: width 1.6s cubic-bezier(0.34, 1.1, 0.64, 1);
}
.collect-gauge.is-visible .collect-gauge__track::before { width: var(--gauge-pct, 0%); }
/* Gold gauge variant (FDHS) */
.collect-gauge.gauge-gold .collect-gauge__track { background: rgba(200, 154, 24, 0.12); }
.collect-gauge.gauge-gold .collect-gauge__track::before { background: linear-gradient(90deg, #C89A18, #E88C30); }

/* Carte du shortcode [asm_collecte] — compteur de dons administrable */
.asm-collecte {
  background: #fff;
  color: var(--wp--preset--color--ink);
  border-radius: 24px;
  padding: clamp(1.5rem, 1rem + 2.5vw, 2.75rem);
  box-shadow: 0 24px 60px rgba(26, 40, 39, 0.12);
  max-width: 620px;
}
.asm-collecte .collect-gauge__head {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: baseline;
  gap: 0.25rem 1rem;
}
.asm-collecte .collect-gauge__amount {
  grid-column: 1; grid-row: 1;
  margin: 0;
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 800;
  font-size: clamp(2.2rem, 1.4rem + 3vw, 3.25rem);
  line-height: 1;
  color: var(--wp--preset--color--ink);
}
.asm-collecte .collect-gauge__pct {
  grid-column: 2; grid-row: 1;
  margin: 0;
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 800;
  font-size: clamp(1.6rem, 1rem + 2vw, 2.4rem);
  color: var(--wp--preset--color--brand-deep);
}
.asm-collecte .collect-gauge__goal {
  grid-column: 1 / -1; grid-row: 2;
  margin: 0;
  color: var(--wp--preset--color--ink-soft);
}
.asm-collecte .collect-gauge__track { margin: 1.35rem 0; }
.asm-collecte .collect-gauge__meta {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  color: var(--wp--preset--color--ink-soft);
  font-size: 0.95rem;
}
.asm-collecte .collect-gauge__btn {
  display: block;
  text-align: center;
  margin-top: 1.5rem;
  padding: 1rem 1.5rem;
  border-radius: 9999px;
  background: var(--wp--preset--color--accent);
  color: var(--wp--preset--color--ink);
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 800;
  text-decoration: none;
  transition: background-color 200ms ease, transform 200ms ease;
}
.asm-collecte .collect-gauge__btn:hover {
  background: var(--wp--preset--color--accent-strong);
  transform: translateY(-1px);
}
/* Variante sombre (sur fond ink / FDHS) */
.asm-collecte.is-style-fdhs {
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: #fff;
  box-shadow: none;
}
.asm-collecte.is-style-fdhs .collect-gauge__amount { color: #fff; }
.asm-collecte.is-style-fdhs .collect-gauge__goal,
.asm-collecte.is-style-fdhs .collect-gauge__meta { color: rgba(255, 255, 255, 0.6); }

/* ============================================================
 * FDHS self-contained one-page section scope
 * Keeps the FDHS prototype dark & gold even on a light (ASM)
 * install; the "FDHS — Sombre & doré" style variation additionally
 * darkens the shared header/footer for the standalone FDHS site.
 * ============================================================ */
.fdhs-scope { background: #18130A; color: #F5EDD8; }
.fdhs-scope :where(h1, h2, h3, h4) { font-family: 'Cormorant Garamond', Georgia, serif; color: #F5EDD8; font-weight: 600; }
.fdhs-scope .heart-watermark {
  position: absolute; pointer-events: none; opacity: 0.06;
  color: #C89A18;
}

/* ============================================================
 * Cards — equal height rows + hover lift
 * ============================================================ */
.equal-cards > .wp-block-column {
  display: flex;
  flex-direction: column;
  flex-grow: 0;
}
.equal-cards > .wp-block-column > .wp-block-group {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
}
.equal-cards .cta-bottom {
  margin-top: auto;
}

.card {
  background: var(--wp--preset--color--background);
  border: 1px solid var(--wp--preset--color--border);
  border-radius: 16px;
  overflow: hidden;
  transition: transform 0.2s ease, box-shadow 0.25s ease;
}
.is-style-fdhs .card,
body.fdhs .card {
  background: var(--wp--preset--color--surface);
}
.hover-lift { transition: transform 0.2s ease, box-shadow 0.25s ease; }
.hover-lift:hover {
  transform: translateY(-4px);
  box-shadow: 0 14px 32px rgba(0, 0, 0, 0.1);
}
.is-style-fdhs .hover-lift:hover,
body.fdhs .hover-lift:hover {
  box-shadow: 0 0 30px rgba(200, 154, 24, 0.2), 0 0 60px rgba(200, 154, 24, 0.08);
}

/* Card imagery utility */
.card-media img { height: 200px; width: 100%; object-fit: cover; }
/* Média de carte en PLEINE LARGEUR, à ras des bords (le padding est porté par
   le groupe de texte interne, pas par la carte elle-même). Corrige l'image
   rétrécie et centrée par le layout « constrained ». */
.card { padding: 0; }
.card > .card-media,
.card > .wp-block-image.card-media {
  margin: 0;
  max-width: none;
  width: 100%;
}
.card > .card-media img { display: block; width: 100%; height: 220px; object-fit: cover; }
/* Même correctif pour le bloc de texte. La carte est un conteneur flex, et le
   layout « constrained » de WordPress pose margin-left/right:auto sur ses
   enfants. En flex, une marge auto absorbe l'espace libre : le bloc se
   rétrécissait à son contenu, donnant des largeurs internes différentes d'une
   carte à l'autre selon la longueur du titre. */
.card > .wp-block-group { margin-left: 0; margin-right: 0; max-width: none; width: 100%; }

/* ── Mobile — mosaïque « Notre mission » en carrousel ──────────────────────
   Les 3 photos s'empilaient verticalement sur 651 px. On les transforme en
   diapositives défilables horizontalement, avec accroche. Pas de JavaScript ni
   de librairie : défilement natif, donc inertie du système, accessible au
   clavier et fonctionnel même si les scripts échouent.
   Les diapositives occupent 86 % de la largeur pour laisser apparaître un bord
   de la suivante — c'est ce qui signale qu'on peut faire défiler, à défaut de
   pastilles de pagination (impossibles sans JS).
   ATTENTION au ciblage : on vise la colonne qui contient RÉELLEMENT la mosaïque
   (une figure + un bloc de colonnes imbriqué), et non une position. L'ordre des
   colonnes change d'une page à l'autre : viser « la première » transformait les
   paragraphes de « À propos » en diapositives de 66 px de large.
   Le ciblage n'est plus limité à #mission : la même mosaïque est reprise dans
   #devenir-mecene et dans les deux blocs établissement de « Actions
   immobilières ». Relevé sur l'ensemble du site : 4 mosaïques, 3 images
   chacune, aucun autre bloc ne répond à cette signature. */
@media (max-width: 600px) {
  body.fdhs .entry-content .wp-block-columns > .wp-block-column:has(> figure.wp-block-image):has(> .wp-block-columns) {
    display: flex;
    gap: 0.7rem;
    margin: 0;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  body.fdhs .entry-content .wp-block-columns > .wp-block-column:has(> figure.wp-block-image):has(> .wp-block-columns)::-webkit-scrollbar { display: none; }
  /* `display: contents` remet les 2 photos du bas au même niveau que la 1re :
     les trois deviennent des diapositives sœurs, sans toucher au contenu. */
  body.fdhs .entry-content .wp-block-columns > .wp-block-column:has(> figure.wp-block-image):has(> .wp-block-columns) > .wp-block-columns { display: contents; }
  /* !important : WordPress impose flex-basis:100% aux colonnes sous 782px. */
  body.fdhs .entry-content .wp-block-columns > .wp-block-column:has(> figure.wp-block-image):has(> .wp-block-columns) > figure,
  body.fdhs .entry-content .wp-block-columns > .wp-block-column:has(> figure.wp-block-image):has(> .wp-block-columns) > .wp-block-columns > .wp-block-column {
    flex: 0 0 100% !important;
    margin: 0 !important;
    display: block;
    scroll-snap-align: center;
  }
  body.fdhs .entry-content .wp-block-columns > .wp-block-column:has(> figure.wp-block-image):has(> .wp-block-columns) > .wp-block-columns > .wp-block-column > figure {
    margin: 0 !important; width: 100%;
  }
  body.fdhs .entry-content .wp-block-columns > .wp-block-column:has(> figure.wp-block-image):has(> .wp-block-columns) img {
    width: 100%; aspect-ratio: 3 / 2; object-fit: cover; display: block; margin: 0;
  }
  /* Pastilles créées par fdhs_carrousel_pastilles(). La zone cliquable fait
     24px (confort tactile) pour un repère visuel de 9px. */
  .fdhs-carrousel__dots {
    display: flex; justify-content: center; gap: 0.35rem;
    flex: 0 0 100%; width: 100%; margin-top: 0.9rem;
  }
  .fdhs-carrousel__dot {
    width: 24px; height: 24px; padding: 0; border: 0; background: none;
    cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
  }
  .fdhs-carrousel__dot::before {
    content: ""; width: 9px; height: 9px; border-radius: 50%;
    background: var(--wp--preset--color--border);
    transition: background-color 0.2s ease, transform 0.2s ease;
  }
  .fdhs-carrousel__dot.is-active::before {
    background: var(--wp--preset--color--brand); transform: scale(1.3);
  }
}

/* ── Tablette (601–781 px) — on conserve la mosaïque du desktop ────────────
   Le carrousel ci-dessus ne concerne que les téléphones. Dans cette plage,
   WordPress empile toutes les colonnes (flex-basis:100% !important sous 782px),
   ce qui aurait remis les 3 photos les unes sous les autres. On rétablit donc
   la rangée des 2 vignettes sous la grande image : la largeur disponible le
   permet sans tasser le contenu. */
@media (min-width: 601px) and (max-width: 781px) {
  body.fdhs .entry-content .wp-block-columns > .wp-block-column:has(> figure.wp-block-image):has(> .wp-block-columns) > .wp-block-columns {
    display: flex !important;
    flex-wrap: nowrap !important;
    gap: 0.8rem;
  }
  body.fdhs .entry-content .wp-block-columns > .wp-block-column:has(> figure.wp-block-image):has(> .wp-block-columns) > .wp-block-columns > .wp-block-column {
    flex: 1 1 0 !important;
  }
}

/* ── Boutons du menu déroulant (tablette + mobile, <=900px) ────────────────
   Le lien partenaire et le CTA « Faire un don » n'ont pas la place de tenir
   dans la barre d'en-tête sous 900px. Ils sont ajoutés en fin de menu par
   fdhs_nav_ajoute_boutons() et n'apparaissent que dans cette plage : sur
   desktop ils restent à leur place habituelle dans l'en-tête.
   Sélecteurs volontairement longs : la règle de couleur du menu sur la home
   (body.fdhs.home .site-header:not(.hdr-scrolled) …) est en (0,6,2) !important
   et écrasait sinon la couleur des boutons, qui ressortaient en encre foncée. */
.menu-item--btn { display: none; }
/* Pastilles du carrousel : mobile uniquement. Media query exclusive plutôt
   qu'un `display:none` global — celui-ci, déclaré après le bloc du carrousel,
   l'emportait par ordre de source et masquait les pastilles sur mobile aussi. */
@media (min-width: 601px) { .fdhs-carrousel__dots { display: none; } }
@media (max-width: 900px) {
  .menu-item--btn { display: block; }
  /* Typographie du menu déroulant : 14px héritait du menu desktop, trop petit
     pour une navigation au doigt. */
  body.fdhs .site-navrow .main-nav__list > li > a { font-size: 17px; }
  /* Écart entre entrées resserré. Il venait du row-gap de la liste (1.1rem,
     hérité du menu desktop horizontal) et non du padding des liens ; le `gap:0`
     du bloc mobile plus bas est trop peu spécifique pour l'emporter. */
  body.fdhs .site-navrow .main-nav__list { row-gap: 0.5rem; }
  /* Respiration sous le dernier bouton, avant le bord du panneau. */
  body.fdhs .site-navrow .main-nav__list { padding-bottom: 2rem; }
  /* Le lien partenaire de la barre est masqué jusqu'à 900px (et non 781px)
     pour ne pas faire doublon avec sa reprise dans le menu. */
  body.fdhs .header-partner { display: none; }

  body.fdhs .site-header .site-navrow .main-nav__list > li.menu-item--btn:first-of-type { margin-top: 0.6rem; }
  body.fdhs .site-header .site-navrow .main-nav__list > li.menu-item--btn + .menu-item--btn { margin-top: 0.6rem; }

  body.fdhs .site-header .site-navrow .main-nav__list > li.menu-item--btn > a.nav-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
    width: 100%; box-sizing: border-box;
    /* Padding latéral resserré et retour à la ligne autorisé : à 17px sur un
       écran de 320px, « l'Association Sainte Marie → » dépassait de 11px avec
       1.4rem de padding et white-space:nowrap. */
    padding: 0.85rem 1rem; border-radius: 9999px;
    font-family: var(--wp--preset--font-family--body);
    font-weight: 700; font-size: 17px; line-height: 1.25;
    text-decoration: none; white-space: normal; text-align: center;
    min-height: 48px;
  }
  body.fdhs .site-header .site-navrow .main-nav__list > li.menu-item--btn > a.nav-btn--partenaire {
    border: 2px solid var(--wp--preset--color--brand);
    color: var(--wp--preset--color--brand) !important;
    background: transparent;
  }
  body.fdhs .site-header .site-navrow .main-nav__list > li.menu-item--btn > a.nav-btn--don {
    background: var(--wp--preset--color--brand);
    color: #fff !important;
    border: 0;
    box-shadow: 0 3px 10px rgba(208, 72, 56, 0.30);
  }
  body.fdhs .site-header .site-navrow .main-nav__list > li.menu-item--btn > a.nav-btn--don::before {
    content: ""; flex: 0 0 auto; width: 16px; height: 16px;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E") center / contain no-repeat;
  }
}

/* ── Mobile/tablette — gouttière manquante sur deux blocs ──────────────────
   Le thème n'a pas de gouttière globale : chaque bloc apporte la sienne. Ces
   deux-là, en alignwide, n'en avaient aucune et leur contenu venait toucher le
   bord de l'écran sous 782px (10 textes sur « Actions immobilières », 24 sur
   « Insertion sociale »). 1.5rem = 24px, la valeur la plus répandue du site. */
@media (max-width: 781px) {
  body.fdhs .entry-content .fdhs-real,
  body.fdhs .entry-content .fdhs-estab,
  /* Blocs de texte enfants directs de .entry-content : ils n'héritent d'aucune
     gouttière (Contact, Demande de soutien). */
  body.fdhs .entry-content > p,
  body.fdhs .entry-content > h1,
  body.fdhs .entry-content > h2,
  body.fdhs .entry-content > h3,
  body.fdhs .entry-content > ul,
  body.fdhs .entry-content > ol,
  /* Groupes alignwide sans fond ni padding propre (section « L'organisation »).
     Les groupes à fond coloré et ceux en has-global-padding sont exclus : ils
     gèrent déjà leur gouttière, les inclure la doublerait. */
  body.fdhs .entry-content > .wp-block-group.alignwide:not(.has-background):not(.has-global-padding) {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    box-sizing: border-box;
  }
}

/* ============================================================
 * Animations
 * ============================================================ */
/* État révélé = état PAR DÉFAUT (visible). L'état masqué initial n'est appliqué
   que lorsque JS est présent (html.js), donc jamais dans l'éditeur de blocs ni
   sans JavaScript → les sections restent visibles et éditables. */
.animate-on-scroll {
  transition: opacity 0.6s ease, transform 0.6s ease;
}
html.js .animate-on-scroll:not(.is-visible) {
  opacity: 0;
  transform: translateY(30px);
}
html.js .is-style-fdhs .animate-on-scroll:not(.is-visible),
html.js body.fdhs .animate-on-scroll:not(.is-visible) {
  transform: translateY(20px) scale(0.98);
}

.stagger-children > * {
  opacity: 0;
  transform: translateY(20px);
  animation: fadeUp 0.5s ease forwards;
}
.stagger-children > *:nth-child(1) { animation-delay: 0.08s; }
.stagger-children > *:nth-child(2) { animation-delay: 0.16s; }
.stagger-children > *:nth-child(3) { animation-delay: 0.24s; }
.stagger-children > *:nth-child(4) { animation-delay: 0.32s; }
@keyframes fadeUp { to { opacity: 1; transform: translateY(0); } }

/* Gold shimmer on FDHS primary CTAs */
.is-style-fdhs .wp-block-button__link:hover {
  box-shadow: 0 0 24px rgba(200, 154, 24, 0.35);
}

/* ============================================================
 * Heart icon on donate buttons (add className "has-heart")
 * Uses a mask so the heart inherits the button text colour.
 * ============================================================ */
.wp-block-button.has-heart .wp-block-button__link::before {
  content: "";
  display: inline-block;
  width: 1em;
  height: 1em;
  margin-right: 0.5em;
  vertical-align: -0.14em;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'/></svg>") center / contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'/></svg>") center / contain no-repeat;
}

/* ============================================================
 * Header / nav
 * ============================================================ */
.wp-block-navigation .wp-block-navigation-item__content {
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 600;
  text-decoration: none;
}
/* Active menu item: teal + underline (on solid / inner-page nav) */
.site-navrow .wp-block-navigation .current-menu-item .wp-block-navigation-item__content {
  color: var(--wp--preset--color--brand-deep);
  box-shadow: inset 0 -3px 0 0 var(--wp--preset--color--brand);
}
.site-topbar { background-color: var(--wp--preset--color--ink); transition: background-color 350ms ease, padding 350ms ease; }
/* Top-bar links inherit their paragraph colour (white email in bold, dimmer FDHS link) */
.site-topbar a { color: inherit !important; text-decoration: none; }
.site-topbar a:hover { opacity: 0.85; }
/* No transparent gap between the top bar and the nav row (flow blockGap) */
.site-header > * { margin-block: 0 !important; }
.site-navrow { background-color: var(--wp--preset--color--background); transition: background-color 350ms ease, box-shadow 350ms ease, padding 350ms ease; }
/* Size the logo by HEIGHT only; width auto keeps the aspect ratio
   (override the inline width WordPress writes on the image).
   flex-shrink:0 stops the nav flex row from squishing it. */
.asm-logo { margin: 0; flex-shrink: 0; }
.asm-logo, .asm-logo img { width: auto !important; max-width: none !important; }
.asm-logo img { border-radius: 8px; height: 88px; transition: height 350ms ease; }

/* --- Inner pages: solid sticky header (default) --- */
.site-header { position: sticky; top: 0; z-index: 100; }

/* --- Homepage: header overlays the hero, transparent at the top --- */
body.home .site-header { position: fixed; left: 0; right: 0; top: 0; }

/* Sit below the WordPress admin bar when logged in (so the top bar shows) */
body.admin-bar .site-header { top: 32px; }
@media screen and (max-width: 782px) { body.admin-bar .site-header { top: 46px; } }

/* Transparent state (home, not yet scrolled): fully transparent header,
   white text over the photo — no scrim, no shadow. */
body.home .site-header:not(.hdr-scrolled) { background: transparent !important; }
body.home .site-header:not(.tb-scrolled) .site-topbar { background-color: transparent !important; }
body.home .site-header:not(.hdr-scrolled) .site-navrow {
  background-color: transparent !important;
  box-shadow: none;
}
body.home .site-header:not(.hdr-scrolled) .site-navrow .asm-logo img { height: 108px; }
body.home .site-header:not(.hdr-scrolled) .site-navrow .wp-block-navigation .wp-block-navigation-item__content {
  color: #fff;
}

/* Scrolled state: dark top bar, white nav, dark links, shrink + shadow */
.site-header.tb-scrolled .site-topbar { background-color: var(--wp--preset--color--ink) !important; }
.site-header.hdr-scrolled .site-navrow {
  background-color: #fff !important;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.07);
}
.site-header.hdr-scrolled .site-navrow .asm-logo img { height: 80px; }
.site-header.hdr-scrolled .site-navrow { padding-top: 0.5rem; padding-bottom: 0.5rem; }
.site-header .site-navrow .wp-block-navigation .wp-block-navigation-item__content { color: var(--wp--preset--color--ink); }

/* Heart motif accent (shared) */
.heart-accent { color: var(--wp--preset--color--accent); }

/* Détails du hero repris en CSS (auparavant en styles inline — retirés pour
   garder des blocs Gutenberg 100% valides et éditables). */
.asm-hero h1 { text-shadow: 0 2px 28px rgba(0, 0, 0, 0.35); }
.asm-hero .wp-block-cover__inner-container p.has-large-font-size {
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
}

/* ============================================================
 * Split sections — dark/teal panel beside content (histoire,
 * établissements). Panel is flush to the viewport edge.
 * ============================================================ */
.asm-split > .wp-block-group { align-items: stretch; gap: 0; }
.asm-panel { align-self: stretch; display: flex; flex-direction: column; justify-content: center; }
.asm-panel--dark { flex: 0 0 42%; position: relative; overflow: hidden; }
.asm-panel--teal { flex: 0 0 44%; position: relative; overflow: hidden; }
.asm-photos-3 { flex: 1 1 0%; min-width: 0; }
.asm-photos-3 .asm-photo { flex: 1 1 0%; min-width: 0; margin: 0; }
.asm-photos-3 .asm-photo--first { margin-left: -56px; z-index: 2; box-shadow: -8px 0 32px rgba(0, 0, 0, 0.25); }
.asm-cards-2 { flex: 1 1 0%; min-width: 0; }
/* « Découvrir → » des cartes établissement (maquette) : pilule vert d'eau pâle,
   texte teal, sans soulignement ; devient teal plein au survol. */
.card-foot a { text-decoration: none; white-space: nowrap; }
.card-foot p:last-child a {
  display: inline-block;
  background: var(--wp--preset--color--subtle);
  color: var(--wp--preset--color--brand-deep);
  font-weight: 700;
  padding: 0.5rem 1.15rem;
  border-radius: 9999px;
  transition: background-color 180ms ease, color 180ms ease, transform 180ms ease;
}
.card-foot p:last-child a:hover { background: var(--wp--preset--color--brand); color: var(--wp--preset--color--on-brand); }
.card.hover-lift:hover .card-foot p:last-child a { transform: translateX(3px); }

/* ============================================================
 * Fil d'ariane (breadcrumb) — présent sur toutes les pages
 * ============================================================ */
.asm-breadcrumb { font-size: 13px; margin-bottom: 1rem; }
/* Barre de fil d'ariane des pages pleine largeur (page-plain) sans breadcrumb intégré */
.asm-breadcrumb-bar { padding-top: 1.5rem; }
.asm-breadcrumb-bar .asm-breadcrumb { margin-bottom: 0; }
.asm-breadcrumb a { text-decoration: underline; color: var(--wp--preset--color--brand-deep); } /* a11y : lien distinguable sans la couleur */
.asm-breadcrumb a:hover { color: var(--wp--preset--color--brand-strong); text-decoration: underline; }
.asm-breadcrumb .sep { opacity: 0.5; padding: 0 0.4rem; }
.asm-breadcrumb .current { color: var(--wp--preset--color--ink-soft); }
/* Variante claire pour les fils d'ariane posés sur un hero sombre / photo */
.asm-breadcrumb.is-light, .asm-breadcrumb.is-light .current { color: #fff; }
.asm-breadcrumb.is-light a { color: rgba(255, 255, 255, 0.75); }
.asm-breadcrumb.is-light a:hover { color: #fff; }

/* ============================================================
 * Page « Faire un don » — pictos des 3 atouts
 * ============================================================ */
.don-ico {
  width: 52px; height: 52px; border-radius: 14px; margin-bottom: 1rem;
  background-color: var(--wp--preset--color--subtle);
  background-repeat: no-repeat; background-position: center; background-size: 26px 26px;
}
.don-ico.wp-block-group { min-height: 52px; }
.don-ico--recu { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6B5C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 2v20l2-1.5L8 22l2-1.5L12 22l2-1.5L16 22l2-1.5L20 22V2l-2 1.5L16 2l-2 1.5L12 2l-2 1.5L8 2 6 3.5 4 2z'/%3E%3Cpath d='M9 8h6M9 12h6'/%3E%3C/svg%3E"); }
.don-ico--secu { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6B5C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z'/%3E%3Cpath d='M9 12l2 2 4-4'/%3E%3C/svg%3E"); }
.don-ico--impact { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6B5C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.7l-1-1.1a5.5 5.5 0 0 0-7.8 7.8l1 1L12 21.2l7.8-7.8 1-1a5.5 5.5 0 0 0 0-7.8z'/%3E%3C/svg%3E"); }
/* Pictos + texte centré des cartes « Autres formes de soutien » */
.don-ico--vie { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6B5C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2v18'/%3E%3Cpath d='M12 20a2.5 2.5 0 0 0 2.5-2.5'/%3E%3Cpath d='M2 12a10 10 0 0 1 20 0z'/%3E%3C/svg%3E"); }
.don-ico--don { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6B5C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 12v9H4v-9'/%3E%3Cpath d='M2 7h20v5H2z'/%3E%3Cpath d='M12 22V7'/%3E%3Cpath d='M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z'/%3E%3Cpath d='M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z'/%3E%3C/svg%3E"); }
.don-ico--legs { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6B5C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z'/%3E%3Cpath d='M14 3v6h6'/%3E%3Cpath d='M9 13h6'/%3E%3Cpath d='M9 17h4'/%3E%3C/svg%3E"); }
.soutien-card { text-align: center; }
.soutien-card .don-ico { margin-left: auto; margin-right: auto; }

/* ============================================================
 * Carte de localisation (pages établissement) — style maison
 * ============================================================ */
.asm-map {
  position: relative; overflow: hidden; border-radius: 20px; min-height: 360px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 14px; padding: 40px; text-align: center;
  background:
    radial-gradient(circle at 30% 30%, rgba(255,255,255,0.35), transparent 60%),
    linear-gradient(145deg, var(--wp--preset--color--subtle), #C8F0EA);
}
.asm-map::before {
  content: ""; position: absolute; inset: 0; opacity: 0.10; pointer-events: none;
  background-image:
    linear-gradient(var(--wp--preset--color--brand-strong) 1px, transparent 1px),
    linear-gradient(90deg, var(--wp--preset--color--brand-strong) 1px, transparent 1px);
  background-size: 26px 26px;
}
.asm-map__pin {
  position: relative; width: 56px; height: 56px; border-radius: 50%;
  background: #fff; display: flex; align-items: center; justify-content: center;
  box-shadow: 0 8px 24px rgba(15, 107, 92, 0.25);
}
.asm-map__pin::before {
  content: ""; width: 28px; height: 28px; background: no-repeat center / contain;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6B5C' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E");
}
.asm-map__title { position: relative; font-family: var(--wp--preset--font-family--heading); font-weight: 700; color: var(--wp--preset--color--brand-deep); }
.asm-map__addr { position: relative; color: var(--wp--preset--color--ink-soft); font-size: 14px; line-height: 1.6; }
.asm-map__btn {
  position: relative; display: inline-flex; align-items: center; gap: 8px; margin-top: 6px;
  background: var(--wp--preset--color--brand); color: var(--wp--preset--color--on-brand);
  font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: 14px;
  text-decoration: none; padding: 0.65rem 1.4rem; border-radius: 9999px;
  transition: background-color 180ms ease, transform 180ms ease;
}
.asm-map__btn:hover { background: var(--wp--preset--color--brand-strong); transform: translateY(-1px); }

@media (max-width: 900px) {
  .asm-split > .wp-block-group { flex-direction: column; }
  .asm-split--reverse > .wp-block-group { flex-direction: column-reverse; }
  .asm-panel { flex-basis: auto !important; width: 100%; border-radius: 24px !important; }
  .asm-photos-3, .asm-cards-2 { width: 100%; }
  .asm-photos-3 .asm-photo--first { margin-left: 0; }
}

/* ============================================================
 * Newsletter form
 * ============================================================ */
.asm-newsletter-form { display: flex; gap: 10px; max-width: 440px; margin: 1.5rem auto 0; }
.asm-newsletter-form input {
  flex: 1; min-width: 0; padding: 13px 18px; border-radius: 9999px;
  border: none; font-size: 15px; font-family: inherit; background: rgba(255, 255, 255, 0.92); color: var(--wp--preset--color--ink);
}
.asm-newsletter-form button {
  padding: 13px 24px; background: var(--wp--preset--color--accent); color: var(--wp--preset--color--ink);
  border: none; border-radius: 9999px; font-weight: 700; font-family: var(--wp--preset--font-family--heading);
  cursor: pointer; white-space: nowrap;
}
@media (max-width: 600px) { .asm-newsletter-form { flex-direction: column; } }

/* Gravity Forms newsletter — inline field + button, centered on the teal band */
.asm-newsletter-gf .gform_wrapper { margin: 0 auto; }
.asm-newsletter-gf .gform_wrapper form {
  display: flex; gap: 12px; align-items: stretch; flex-wrap: wrap;
  max-width: 500px; margin: 0 auto;
}
.asm-newsletter-gf .gform_wrapper .gform_body,
.asm-newsletter-gf .gform_wrapper .gform-body { flex: 1 1 240px; margin: 0; }
.asm-newsletter-gf .gform_wrapper .gform_fields { grid-template-columns: 1fr; gap: 0; }
.asm-newsletter-gf .gform_wrapper .gfield_label,
.asm-newsletter-gf .gform_wrapper .gform_validation_errors,
.asm-newsletter-gf .gform_wrapper .gform_required_legend { display: none; }
.asm-newsletter-gf .gform_wrapper input[type="email"],
.asm-newsletter-gf .gform_wrapper input[type="text"] {
  width: 100%; height: 56px; padding: 0 22px; border-radius: 9999px; border: none;
  font-size: 15px; font-family: inherit; background: var(--wp--preset--color--subtle); color: var(--wp--preset--color--ink);
  box-shadow: none;
}
.asm-newsletter-gf .gform_wrapper input::placeholder { color: #8A948F; opacity: 1; }
.asm-newsletter-gf .gform_wrapper .gform_footer,
.asm-newsletter-gf .gform_wrapper .gform-footer { flex: 0 0 auto; margin: 0; padding: 0; }
.asm-newsletter-gf .gform_wrapper input[type="submit"],
.asm-newsletter-gf .gform_wrapper button.gform_button {
  height: 56px; background: var(--wp--preset--color--accent) !important; color: var(--wp--preset--color--ink) !important;
  border: none !important; border-radius: 9999px !important; padding: 0 40px; font-weight: 800; cursor: pointer;
  font-family: var(--wp--preset--font-family--heading); white-space: nowrap; font-size: 15px; letter-spacing: 0.01em;
  transition: background-color 180ms ease, transform 180ms ease;
}
.asm-newsletter-gf .gform_wrapper input[type="submit"]:hover,
.asm-newsletter-gf .gform_wrapper button.gform_button:hover { background: var(--wp--preset--color--accent-strong) !important; transform: translateY(-1px); }
.asm-newsletter-gf .gform_confirmation_message { color: #fff; font-weight: 600; text-align: center; }
@media (max-width: 600px) {
  .asm-newsletter-gf .gform_wrapper form { flex-direction: column; }
  /* En colonne, la flex-basis de 240px du body devenait une HAUTEUR (gros vide
     sous le champ email) → on laisse le body à sa hauteur naturelle. */
  .asm-newsletter-gf .gform_wrapper .gform_body,
  .asm-newsletter-gf .gform_wrapper .gform-body { flex: 0 0 auto; width: 100%; }
  .asm-newsletter-gf .gform_wrapper .gform_footer,
  .asm-newsletter-gf .gform_wrapper .gform-footer { width: 100%; display: flex; justify-content: center; }
  .asm-newsletter-gf .gform_wrapper .gform_footer input[type="submit"],
  .asm-newsletter-gf .gform_wrapper button.gform_button { width: auto !important; min-width: 200px; }
}

/* ============================================================
 * Contact form (Gravity Forms) — styled to the mockup
 * ============================================================ */
.asm-contact-form .gform_wrapper .gfield_label {
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 600; color: var(--wp--preset--color--ink); font-size: 0.9rem;
}
.asm-contact-form .gform_wrapper .gfield_required,
.asm-contact-form .gform_wrapper .gfield_required_text { color: var(--wp--preset--color--brand-deep); }
.asm-contact-form .gform_wrapper input[type="text"],
.asm-contact-form .gform_wrapper input[type="email"],
.asm-contact-form .gform_wrapper input[type="tel"],
.asm-contact-form .gform_wrapper textarea,
.asm-contact-form .gform_wrapper select {
  width: 100%; padding: 12px 16px; border-radius: 10px; font-family: inherit; font-size: 15px;
  border: 1.5px solid var(--wp--preset--color--border); background: #fff; color: var(--wp--preset--color--ink);
  transition: border-color 150ms ease, box-shadow 150ms ease;
}
.asm-contact-form .gform_wrapper input:focus,
.asm-contact-form .gform_wrapper textarea:focus,
.asm-contact-form .gform_wrapper select:focus {
  outline: none; border-color: var(--wp--preset--color--brand);
  box-shadow: 0 0 0 3px rgba(62, 202, 180, 0.15);
}
.asm-contact-form .gform_wrapper textarea { line-height: 1.6; resize: vertical; }
/* "Je suis…" choices as a responsive grid of cards */
.asm-contact-form .gform_wrapper .gfield--type-radio .gfield_radio {
  display: grid !important; grid-template-columns: repeat(2, 1fr) !important; gap: 12px !important;
}
@media (max-width: 700px) { .asm-contact-form .gform_wrapper .gfield--type-radio .gfield_radio { grid-template-columns: 1fr !important; } }
.asm-contact-form .gform_wrapper .gfield--type-radio .gchoice {
  border: 2px solid var(--wp--preset--color--subtle); background: var(--wp--preset--color--surface);
  border-radius: 12px; padding: 14px 16px; display: flex !important; align-items: center; gap: 12px !important; cursor: pointer;
  margin: 0 !important;
  transition: border-color 150ms ease, background 150ms ease;
}
.asm-contact-form .gform_wrapper .gfield--type-radio .gchoice:hover { border-color: var(--wp--preset--color--border); }
.asm-contact-form .gform_wrapper .gfield--type-radio .gchoice:has(input:checked) {
  border-color: var(--wp--preset--color--brand); background: var(--wp--preset--color--subtle);
}
.asm-contact-form .gform_wrapper .gfield--type-radio .gchoice label { font-weight: 600; font-size: 0.9rem; margin: 0 !important; cursor: pointer; line-height: 1.3; }
/* File upload + consent spacing */
.asm-contact-form .ginput_container_fileupload { border: 1.5px dashed var(--wp--preset--color--border); border-radius: 10px; padding: 16px; background: var(--wp--preset--color--surface); }
.asm-contact-form .gfield--type-checkbox .gfield_label { font-weight: 400; }
.asm-contact-form .gchoice label a { color: var(--wp--preset--color--brand-deep); }
/* Submit button: full-width teal pill */
.asm-contact-form .gform_footer { margin-top: 1.5rem; }
.asm-contact-form .gform_footer input[type="submit"],
.asm-contact-form .gform_wrapper button.gform_button {
  width: auto !important; background: var(--wp--preset--color--brand-deep) !important; color: var(--wp--preset--color--on-brand) !important;
  border: none !important; border-radius: 9999px !important; padding: 0.9rem 2.2rem; font-weight: 700; font-size: 15px;
  font-family: var(--wp--preset--font-family--heading); cursor: pointer;
  transition: background-color 180ms ease, transform 180ms ease;
}
.asm-contact-form .gform_footer input[type="submit"]:hover,
.asm-contact-form .gform_wrapper button.gform_button:hover { background: color-mix(in srgb, var(--wp--preset--color--brand-deep) 82%, #000) !important; transform: translateY(-1px); }

/* ============================================================
 * Projet associatif — photo composition + values checklist
 * ============================================================ */
.projet-photos { position: relative; padding: 12px 44px 44px 4px; }
.projet-photos .projet-photo-main { margin: 0 0 0 36px; }
.projet-photos .projet-photo-main img { border-radius: 24px; box-shadow: 0 16px 48px rgba(0, 0, 0, 0.13); }
/* Cœur décoratif du bloc projet : dessiné en CSS (plus de bloc HTML). */
.projet-photos::before {
  content: "";
  position: absolute;
  top: 4px;
  left: 0;
  z-index: 3;
  width: 54px;
  height: 50px;
  background: no-repeat center / contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='54' height='50' viewBox='0 0 54 50' fill='none'%3E%3Cpath d='M27 46C27 46 3 30 3 16C3 8.8 8.8 3 16 3C20.2 3 24 5.1 27 8.2C30 5.1 33.8 3 38 3C45.2 3 51 8.8 51 16C51 30 27 46 27 46Z' fill='%23FCBE00'/%3E%3C/svg%3E");
}
.projet-heart { display: none; }
.projet-photos .projet-photo-inset { position: absolute; right: 0; bottom: 10px; width: 172px; height: 172px; margin: 0; z-index: 3; }
.projet-photos .projet-photo-inset img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; border: 5px solid #fff; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18); }
@media (max-width: 781px) { .projet-photos .projet-photo-inset { width: 120px; height: 120px; } }

.values-check { list-style: none; margin: 0; padding: 0; }
.values-check li {
  position: relative; padding-left: 30px; margin: 0 0 12px; font-weight: 600; list-style: none;
}
.values-check li::marker { content: ""; }
.values-check li::before {
  content: ""; position: absolute; left: 0; top: 2px; width: 20px; height: 20px;
  background: no-repeat center / contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Ccircle cx='10' cy='10' r='9' stroke='%233ECAB4' stroke-width='1.5'/%3E%3Cpath d='M6 10.5L9 13.5L14 7' stroke='%233ECAB4' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* Footer typography: 14px throughout (not the 18px body size) */
.wp-site-blocks > footer { font-size: 14px; }
.wp-site-blocks > footer :where(p, li, a, span) { font-size: 14px; }
/* Footer links inherit their muted colour, brighten on hover */
.wp-site-blocks > footer a { color: inherit; text-decoration: none; }
.wp-site-blocks > footer a:hover { color: var(--wp--preset--color--brand); }
/* Footer lists: no bullets, no indent, Montserrat (inherits body) */
.wp-site-blocks > footer ul { list-style: none; margin: 0; padding: 0; }
.wp-site-blocks > footer li { margin: 0; padding: 0; list-style: none; }
.wp-site-blocks > footer li::marker { content: ""; }
.footer-fdhs { margin: 0; }
.footer-fdhs img { opacity: 0.85; }

/* Navigation links at 15px */
.site-navrow .wp-block-navigation .wp-block-navigation-item__content { font-size: 15px !important; }

/* ============================================================
 * Contact form — profile pictos + upload icon (match mockup)
 * ============================================================ */
.asm-contact-form .gfield--type-radio .gchoice input[type="radio"] { position: absolute; opacity: 0; width: 0; height: 0; }
.asm-contact-form .gfield--type-radio .gchoice::before {
  content: ""; flex: 0 0 24px; width: 24px; height: 24px; background: no-repeat center / contain;
}
.asm-contact-form .gfield--type-radio .gchoice:nth-of-type(1)::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236E6860' stroke-width='1.7'%3E%3Cpath d='M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cpath d='M23 21v-2a4 4 0 0 0-3-3.87'/%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'/%3E%3C/svg%3E"); }
.asm-contact-form .gfield--type-radio .gchoice:nth-of-type(2)::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236E6860' stroke-width='1.7'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'/%3E%3C/svg%3E"); }
.asm-contact-form .gfield--type-radio .gchoice:nth-of-type(3)::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236E6860' stroke-width='1.7'%3E%3Cpath d='M18 8h1a4 4 0 0 1 0 8h-1'/%3E%3Cpath d='M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z'/%3E%3Cline x1='6' y1='1' x2='6' y2='4'/%3E%3Cline x1='10' y1='1' x2='10' y2='4'/%3E%3Cline x1='14' y1='1' x2='14' y2='4'/%3E%3C/svg%3E"); }
.asm-contact-form .gfield--type-radio .gchoice:nth-of-type(4)::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236E6860' stroke-width='1.7'%3E%3Crect x='2' y='7' width='20' height='14' rx='2'/%3E%3Cpath d='M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16'/%3E%3C/svg%3E"); }
.asm-contact-form .gfield--type-radio .gchoice:nth-of-type(5)::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236E6860' stroke-width='1.7'%3E%3Cpath d='M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-2 2Zm0 0a2 2 0 0 1-2-2v-9c0-1.1.9-2 2-2h2'/%3E%3Cpath d='M18 14h-8'/%3E%3Cpath d='M15 18h-5'/%3E%3Cpath d='M10 6h8v4h-8V6Z'/%3E%3C/svg%3E"); }
.asm-contact-form .gfield--type-radio .gchoice:nth-of-type(6)::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236E6860' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z'/%3E%3Cpath d='M8 10h.01M12 10h.01M16 10h.01'/%3E%3C/svg%3E"); }
.asm-contact-form .gfield--type-radio .gchoice:has(input:checked)::before { filter: none; opacity: 1; }
/* Upload icon on the file field */
.asm-contact-form .ginput_container_fileupload { display: flex; align-items: center; gap: 14px; }
.asm-contact-form .ginput_container_fileupload::before {
  content: ""; flex: 0 0 26px; width: 26px; height: 26px; background: no-repeat center / contain;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6B5C' stroke-width='2'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpolyline points='17 8 12 3 7 8'/%3E%3Cline x1='12' y1='3' x2='12' y2='15'/%3E%3C/svg%3E");
}

/* ============================================================
 * Accessibility
 * ============================================================ */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid var(--wp--preset--color--ink); /* ink = contraste élevé sur fonds clairs */
  outline-offset: 3px;
  border-radius: 2px;
}
/* Sur surfaces sombres (hero, footer, barre de contact), outline doré (le teal/ink
   n'y ressort pas ; l'or garde un contraste >3:1 exigé pour les indicateurs de focus) */
.has-ink-background-color :where(a, button, .wp-block-button__link):focus-visible,
.wp-block-cover :where(a, button, .wp-block-button__link):focus-visible,
.asm-breadcrumb.is-light a:focus-visible,
.site-footer :where(a, button):focus-visible,
.site-topbar :where(a, button):focus-visible {
  outline-color: var(--wp--preset--color--accent);
}
/* Contraste AA des boutons pleins : le teal de marque #3ECAB4 ne donne que
   2.04:1 avec du blanc → on passe le fond en teal profond #0F6B5C (6.41:1).
   Le teal clair reste réservé au décor / dégradés / survols non-textuels.
   Les boutons à fond explicite (doré `has-accent-background-color`, etc.) sont
   exclus via :not([class*="-background-color"]) et conservent leur couleur. */
.wp-block-button:not([class*="is-style-outline"]) > .wp-block-button__link:not([class*="-background-color"]),
.wp-block-button__link.has-brand-background-color {
  background-color: var(--wp--preset--color--brand) !important;
}
.wp-block-button:not([class*="is-style-outline"]) > .wp-block-button__link:not([class*="-background-color"]):hover,
.wp-block-button:not([class*="is-style-outline"]) > .wp-block-button__link:not([class*="-background-color"]):focus,
.wp-block-button__link.has-brand-background-color:hover,
.wp-block-button__link.has-brand-background-color:focus {
  background-color: var(--wp--preset--color--brand-strong) !important;
}

.skip-link {
  position: absolute; left: -9999px;
  background: var(--wp--preset--color--ink); color: #fff;
  padding: 0.75rem 1.25rem; border-radius: 0 0 8px 0; z-index: 999;
}
.skip-link:focus { left: 0; top: 0; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .collect-gauge__track::before { transition: none !important; }
}

/* ============================================================
 * CLASSIC THEME — menu WordPress (wp_nav_menu) + mise en page
 * du contenu Gutenberg (the_content). Reprend le rendu du bloc
 * Navigation FSE avec la structure <ul>/<li>/<a>.
 * ============================================================ */

/* Conteneur centré (header, footer, contenus contraints) */
.asm-container { max-width: 1280px; margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; }

/* Barre supérieure : coordonnées alignées à droite, texte blanc */
.site-topbar { color: var(--wp--preset--color--on-brand); }
.site-topbar__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 1.25rem;
  padding-top: 0.4rem;
  padding-bottom: 0.4rem;
  font-size: 0.875rem;
}
.site-topbar__email { font-weight: 700; }
.site-topbar__fdhs { opacity: 0.85; }

/* Barre de navigation : logo | menu | CTA */
.site-navrow__inner {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding-top: 1rem;
  padding-bottom: 1rem;
}

/* Layout du contenu de page rendu par the_content() : reproduit le
   comportement "constrained" de l'éditeur (contenu centré, alignwide,
   alignfull pleine largeur). */
.site-main { margin-top: 0; }
.entry-content > * {
  max-width: var(--wp--style--global--content-size, 720px);
  margin-left: auto;
  margin-right: auto;
}
.entry-content > .alignwide { max-width: var(--wp--style--global--wide-size, 1200px); }
.entry-content > .alignfull { max-width: none; width: 100%; }
/* Les pages "plain" (patterns pleine largeur) : pas de contrainte parasite */
.page-plain .entry-content > * { margin-top: 0; margin-bottom: 0; }

/* Barre de navigation — liste horizontale */
.main-nav__list {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1.75rem;
  margin: 0;
  padding: 0;
}
.main-nav__list li { margin: 0; }
.main-nav a {
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 600;
  font-size: 15px;
  text-decoration: none;
  color: var(--wp--preset--color--ink);
  padding-bottom: 8px;
  transition: color 200ms ease, box-shadow 200ms ease;
}
/* Item actif : teal + soulignement avec un peu d'air sous le texte */
.site-navrow .main-nav .current-menu-item > a,
.site-navrow .main-nav .current-menu-ancestor > a {
  color: var(--wp--preset--color--brand-deep);
  box-shadow: inset 0 -3px 0 0 var(--wp--preset--color--brand);
}
/* Home transparente (pas encore scrollée) : liens blancs */
body.home .site-header:not(.hdr-scrolled) .site-navrow .main-nav a { color: #fff; }
/* Home scrollée + pages internes : liens encre */
.site-header.hdr-scrolled .site-navrow .main-nav a,
.site-header .site-navrow .main-nav a { color: var(--wp--preset--color--ink); }
.site-navrow .main-nav a:hover { color: var(--wp--preset--color--brand-strong); }

/* Sous-menus déroulants (desktop) — panneau blanc au survol / focus */
.main-nav__list li { position: relative; }
/* Tous les items de 1er niveau sur le MÊME modèle (inline-flex, centré) pour que
   les liens simples et les liens à sous-menu s'alignent verticalement. */
.main-nav__list > li > a { display: inline-flex; align-items: center; gap: 0.4rem; }
.main-nav .menu-item-has-children > a::after {
  content: "";
  flex: 0 0 auto;
  width: 0.42em; height: 0.42em;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform 200ms ease;
}
.main-nav .sub-menu {
  list-style: none;
  position: absolute;
  top: calc(100% + 6px);
  left: -0.75rem;
  min-width: 250px;
  margin: 0;
  padding: 0.5rem 0;
  background: #fff;
  border-radius: 14px;
  box-shadow: 0 18px 40px rgba(26, 40, 39, 0.16);
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  transition: opacity 180ms ease, transform 180ms ease, visibility 180ms;
  z-index: 200;
}
.main-nav .menu-item-has-children:hover > .sub-menu,
.main-nav .menu-item-has-children:focus-within > .sub-menu {
  opacity: 1; visibility: visible; transform: translateY(0);
}
.main-nav .menu-item-has-children:hover > a::after,
.main-nav .menu-item-has-children:focus-within > a::after { transform: translateY(1px) rotate(225deg); }
.main-nav .sub-menu li { width: 100%; }
.main-nav .sub-menu a {
  display: block;
  padding: 0.55rem 1.25rem;
  padding-bottom: 0.55rem;
  font-size: 14px;
  font-weight: 600;
  white-space: nowrap;
  color: var(--wp--preset--color--ink) !important;
  box-shadow: none !important;
}
.main-nav .sub-menu a:hover { color: var(--wp--preset--color--brand-strong) !important; background: var(--wp--preset--color--subtle); }
.main-nav .sub-menu .current-menu-item > a { color: var(--wp--preset--color--brand-deep) !important; }
/* Bouton toggle des sous-menus : masqué en desktop (dropdown au survol), visible en mobile */
.submenu-toggle { display: none; }

/* Bouton CTA du header (classe .header-cta) — pilule accent avec cœur */
.header-cta {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 700;
  font-size: 15px;
  text-decoration: none;
  color: var(--wp--preset--color--ink);
  background: var(--wp--preset--color--accent);
  padding: 0.7rem 1.5rem;
  border-radius: 9999px;
  transition: background-color 200ms ease, transform 200ms ease;
  flex-shrink: 0;
}
.header-cta:hover { background: var(--wp--preset--color--accent-strong); transform: translateY(-1px); }
.header-cta::before {
  content: "♥";
  font-size: 0.95em;
  line-height: 1;
}

/* Hamburger mobile */
.nav-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
}
.nav-toggle span {
  display: block;
  height: 2px;
  width: 26px;
  background: currentColor;
  color: var(--wp--preset--color--ink);
  transition: transform 250ms ease, opacity 250ms ease;
}
body.home .site-header:not(.hdr-scrolled) .nav-toggle span { background: #fff; }

@media (max-width: 900px) {
  .nav-toggle { display: flex; }
  /* !important nécessaire : la règle d'harmonisation du bouton « Faire un don »
     (plus bas dans la feuille) impose `display: inline-flex !important` hors
     media query. Sans cela le CTA restait affiché sur mobile, poussait le
     burger hors de l'écran et provoquait un défilement horizontal. */
  .header-cta { display: none !important; }
  .site-navrow__inner { gap: 0.5rem; }
  .site-navrow .main-nav {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: #fff;
    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.1);
    max-height: 0;
    overflow: hidden;
    transition: max-height 300ms ease;
  }
  .site-navrow { position: relative; }
  .site-navrow .main-nav.is-open { max-height: 80vh; overflow-y: auto; }
  .main-nav__list {
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    padding: 0.5rem 1.5rem 1rem;
  }
  .main-nav__list li { width: 100%; }
  .main-nav a { display: block; padding: 0.85rem 0; color: var(--wp--preset--color--ink) !important; box-shadow: none !important; }
  /* Sur mobile la nav home est toujours sur fond blanc -> texte encre */
  body.home .site-navrow .main-nav a { color: var(--wp--preset--color--ink) !important; }
  .nav-toggle.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .nav-toggle.is-open span:nth-child(2) { opacity: 0; }
  .nav-toggle.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

  /* Sous-menus mobile : ACCORDÉON — fermés par défaut, ouverts au tap du chevron */
  .main-nav .menu-item-has-children { display: flex; flex-wrap: wrap; align-items: center; }
  .main-nav .menu-item-has-children > a { flex: 1 1 auto; }
  .main-nav .menu-item-has-children > a::after { display: none; } /* remplacé par le bouton toggle */
  .submenu-toggle {
    display: block;
    flex: 0 0 auto;
    width: 44px; height: 44px;
    padding: 0; border: 0; background: transparent; cursor: pointer;
    position: relative; color: var(--wp--preset--color--ink);
  }
  .submenu-toggle::before {
    content: ""; position: absolute; top: 50%; left: 50%;
    width: 0.6em; height: 0.6em; margin: -0.45em 0 0 -0.3em;
    border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
    transform: rotate(45deg); transition: transform 220ms ease;
  }
  .menu-item-has-children.is-open > .submenu-toggle::before { transform: translateY(0.15em) rotate(225deg); }
  .main-nav .sub-menu {
    list-style: none;
    flex-basis: 100%; width: 100%;
    position: static; opacity: 1; visibility: visible; transform: none;
    box-shadow: none; background: transparent; min-width: 0; margin: 0; border-radius: 0;
    max-height: 0; overflow: hidden;
    padding: 0 0 0 1rem;
    transition: max-height 260ms ease;
  }
  .menu-item-has-children.is-open > .sub-menu { max-height: 600px; padding-bottom: 0.4rem; }
  .main-nav .sub-menu li { border-bottom: 0; }
  .main-nav .sub-menu a { padding: 0.6rem 0 !important; font-size: 14px; opacity: 0.85; }
}

/* ============================================================
 * CLASSIC THEME — pied de page
 * ============================================================ */
.site-footer {
  background: #111E1D; /* plus sombre que --ink (#1A2827) pour se distinguer de la section CTA qui la précède */
  color: rgba(255, 255, 255, 0.55);
  padding-top: clamp(3rem, 2rem + 4vw, 4.5rem);
  padding-bottom: 2rem;
  font-size: 14px;
}
.site-footer a { color: inherit; text-decoration: none; }
.site-footer a:hover { color: var(--wp--preset--color--brand); }
.site-footer p { font-size: 14px; }

.footer-cols {
  display: grid;
  grid-template-columns: 2fr 1fr 1.2fr 1.2fr;
  gap: 3rem;
  padding-bottom: 2rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.footer-logo { width: 84px; height: auto; border-radius: 8px; display: block; }
.footer-baseline { line-height: 1.7; color: rgba(255, 255, 255, 0.62); margin-top: 1.25rem; } /* a11y ≥4.5:1 sur #111E1D */
.footer-heading {
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-weight: 700;
  color: rgba(255, 255, 255, 0.75); /* a11y : titres de colonnes lisibles */
  margin-bottom: 0.75rem;
}
.footer-links, .footer-legal-menu { list-style: none; margin: 0; padding: 0; }
.footer-links li { line-height: 2.1; }
.footer-links a { color: rgba(255, 255, 255, 0.55); }
.footer-contact { line-height: 2; color: rgba(255, 255, 255, 0.62); } /* a11y ≥4.5:1 */
.footer-social { display: flex; gap: 0.9rem; margin-top: 1.25rem; }
.footer-social a { color: rgba(255, 255, 255, 0.6); display: inline-flex; }
.footer-social a:hover { color: var(--wp--preset--color--brand); }
.footer-fdhs { display: inline-block; margin: 0 0 0.9rem; }
.footer-fdhs img { width: 130px; height: auto; opacity: 0.9; }
.footer-partner-tagline { color: rgba(255, 255, 255, 0.5); line-height: 1.6; margin: 0 0 0.6rem; }
.footer-fdhs-link a { color: var(--wp--preset--color--brand); font-weight: 600; }

.footer-legal {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-top: 1.5rem;
}
.footer-legal__text { color: rgba(255, 255, 255, 0.62); margin: 0; } /* a11y ≥4.5:1 */
.footer-legal__links { display: flex; flex-wrap: wrap; align-items: center; gap: 1.5rem; color: rgba(255, 255, 255, 0.62); }
.footer-legal-menu { display: flex; flex-wrap: wrap; gap: 1.5rem; }
.footer-legal__links, .footer-legal__links a { color: rgba(255, 255, 255, 0.62); }

@media (max-width: 900px) {
  .footer-cols { grid-template-columns: 1fr 1fr; gap: 2rem; }
}
@media (max-width: 560px) {
  .footer-cols { grid-template-columns: 1fr; }
  .footer-legal { flex-direction: column; align-items: flex-start; }
}

/* ============================================================
 * CLASSIC THEME — gabarits (page, article, listes, 404)
 * ============================================================ */

/* Bandeau de titre (pages, archives, recherche) */
.page-hero {
  background: var(--wp--preset--color--subtle);
  padding-top: clamp(3rem, 2rem + 4vw, 4.5rem);
  padding-bottom: 3rem;
  margin-bottom: 3rem;
}
/* Sur la home, le bandeau ne doit pas passer sous le header fixe :
   la home n'utilise pas .page-hero, mais on garde la marge des pages internes
   sous le header sticky. */
.page-hero__title { margin: 0; }
.page-hero__desc { margin-top: 1rem; color: var(--wp--preset--color--ink-soft); }

.page-body {
  padding-bottom: 4rem;
}

/* Grille d'actualités */
.news-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
  padding-bottom: 3rem;
}
.news-card { display: flex; flex-direction: column; }
.news-card__media { display: block; }
.news-card__media img { height: 200px; width: 100%; object-fit: cover; display: block; }
.news-card__body { padding: 1.5rem; display: flex; flex-direction: column; gap: 0.5rem; }
.news-card__date { font-size: 0.875rem; color: var(--wp--preset--color--ink-soft); margin: 0; }
.news-card__title { font-size: 1.25rem; margin: 0; line-height: 1.25; }
.news-card__title a { color: var(--wp--preset--color--ink); text-decoration: none; }
.news-card__title a:hover { color: var(--wp--preset--color--brand-strong); }
.news-card__excerpt { color: var(--wp--preset--color--ink-soft); line-height: 1.6; margin: 0; font-size: 14px; }
.news-card__more a { color: var(--wp--preset--color--brand-deep); font-weight: 600; text-decoration: none; }
.news-card__cat { font-size: 11px; font-weight: 700; color: var(--wp--preset--color--brand-deep); text-transform: uppercase; letter-spacing: 0.06em; }

/* Filtres de catégories (grille filtrable) */
.news-filters { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-bottom: 2rem; }
.news-filter {
  font-family: var(--wp--preset--font-family--heading); font-weight: 600; font-size: 14px;
  padding: 0.5rem 1.15rem; border-radius: 9999px; border: 1px solid var(--wp--preset--color--border);
  background: #fff; color: var(--wp--preset--color--ink-soft); cursor: pointer;
  transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
}
.news-filter:hover { border-color: var(--wp--preset--color--brand); color: var(--wp--preset--color--brand-deep); }
.news-filter.is-active { background: var(--wp--preset--color--brand-deep); color: var(--wp--preset--color--on-brand); border-color: transparent; }
.news-empty { padding: 1rem 0 3rem; color: var(--wp--preset--color--ink-soft); }

@media (max-width: 900px) { .news-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .news-grid { grid-template-columns: 1fr; } }

/* Pagination */
.asm-pagination { padding-bottom: 4rem; }
.asm-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  height: 42px;
  padding: 0 0.6rem;
  margin: 0 0.2rem;
  border: 1px solid var(--wp--preset--color--border);
  border-radius: 9999px;
  text-decoration: none;
  color: var(--wp--preset--color--ink);
}
.asm-pagination .page-numbers.current { background: var(--wp--preset--color--brand); color: var(--wp--preset--color--on-brand); border-color: transparent; }
.asm-pagination .page-numbers:hover { border-color: var(--wp--preset--color--brand); }
.asm-pagination .nav-links { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; }

/* Article seul */
.post-hero {
  background: var(--wp--preset--color--subtle);
  padding-top: clamp(3rem, 2rem + 4vw, 4.5rem);
  padding-bottom: 3rem;
}
.post-hero__cat { margin: 0 0 0.5rem; color: var(--wp--preset--color--brand-deep); font-size: 0.875rem; font-weight: 600; }
.post-hero__cat a { color: inherit; text-decoration: none; }
.post-hero__title { margin: 0 0 0.75rem; }
.post-hero__meta { margin: 0; color: var(--wp--preset--color--ink-soft); font-size: 0.875rem; }
.post-body { padding-top: 3rem; padding-bottom: 4rem; }
.post-featured { margin-bottom: 2rem; }
.post-featured img { width: 100%; height: auto; border-radius: 16px; }
.post-tags { margin-top: 2rem; }
.post-tags a { display: inline-block; margin: 0 0.4rem 0.4rem 0; padding: 0.25rem 0.75rem; background: var(--wp--preset--color--subtle); border-radius: 9999px; font-size: 0.8rem; text-decoration: none; color: var(--wp--preset--color--brand-deep); }

/* ============================================================
 * Article seul (single.php) — d'après ui_kits/asm/article
 * ============================================================ */
.asm-article { background: var(--wp--preset--color--surface); }
.article-hero { position: relative; height: 520px; overflow: hidden; margin-top: 0; }
.article-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 35%; }
.article-hero--nofeat { background: linear-gradient(140deg, #198D7A, #0A4D42); }
.article-hero__overlay { position: absolute; inset: 0; background: linear-gradient(to top, rgba(26,40,39,0.9) 0%, rgba(26,40,39,0.45) 50%, rgba(26,40,39,0.1) 100%); }
.article-hero__inner { position: absolute; left: 50%; transform: translateX(-50%); bottom: 0; padding-bottom: 3rem; width: 100%; }
.article-breadcrumb { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 13px; color: rgba(255,255,255,0.55); margin-bottom: 1rem; }
.article-breadcrumb a { color: rgba(255,255,255,0.55); text-decoration: none; }
.article-breadcrumb a:hover { color: #fff; }
.article-breadcrumb .is-current { color: rgba(255,255,255,0.85); }
.article-hero__badges { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 1rem; }
.badge { border-radius: 9999px; padding: 4px 14px; font-size: 12px; font-weight: 700; letter-spacing: 0.06em; }
.badge--brand { background: var(--wp--preset--color--brand); color: #fff; text-transform: uppercase; }
.badge--ghost { background: rgba(255,255,255,0.15); color: rgba(255,255,255,0.85); font-weight: 500; letter-spacing: 0; }
.article-hero__title { font-family: var(--wp--preset--font-family--heading); font-size: clamp(1.75rem, 1.2rem + 2.5vw, 3rem); font-weight: 800; color: #fff; line-height: 1.12; max-width: 780px; letter-spacing: -0.02em; text-shadow: 0 2px 20px rgba(0,0,0,0.4); margin: 0; }

.article-layout-section { padding: 4rem 0; }
.article-layout { display: grid; grid-template-columns: 2fr 1fr; gap: 3.5rem; align-items: start; }

/* Corps d'article : styles typographiques appliqués au contenu Gutenberg */
.article-content > p { font-size: 16px; color: #4A4540; line-height: 1.8; margin-bottom: 1rem; }
.article-content > p:first-of-type { font-size: 20px; font-weight: 600; color: var(--wp--preset--color--ink); line-height: 1.65; border-left: 3px solid var(--wp--preset--color--brand); padding-left: 20px; margin-bottom: 1.75rem; }
.article-content > h2 { font-family: var(--wp--preset--font-family--heading); font-size: 22px; font-weight: 700; color: var(--wp--preset--color--ink); margin: 2rem 0 0.9rem; line-height: 1.3; }
.article-content > h3 { font-family: var(--wp--preset--font-family--heading); font-size: 18px; font-weight: 700; color: var(--wp--preset--color--ink); margin: 1.5rem 0 0.75rem; }
.article-content img, .article-content .wp-block-image img { border-radius: 16px; }
.article-content figcaption { font-size: 13px; color: #9A9488; font-style: italic; text-align: center; margin-top: 10px; }
.article-content blockquote, .article-content .wp-block-quote {
  background: var(--wp--preset--color--subtle); border-radius: 16px; padding: 24px 28px; margin: 1.5rem 0;
  border-left: 4px solid var(--wp--preset--color--brand);
}
.article-content blockquote p { font-family: var(--wp--preset--font-family--heading); font-size: 17px; font-weight: 600; font-style: italic; color: var(--wp--preset--color--ink); line-height: 1.55; }
.article-content blockquote cite { font-size: 14px; color: var(--wp--preset--color--ink-soft); font-style: normal; font-weight: 600; }
.article-tags { display: flex; gap: 8px; flex-wrap: wrap; padding-top: 1.5rem; margin-top: 1.5rem; border-top: 1px solid var(--wp--preset--color--subtle); }
.article-tag { font-size: 13px; background: var(--wp--preset--color--subtle); color: var(--wp--preset--color--brand-deep); padding: 4px 12px; border-radius: 9999px; font-weight: 600; text-decoration: none; }

/* Sidebar */
.article-sidebar { display: flex; flex-direction: column; gap: 1.5rem; position: sticky; top: 140px; }
.article-metacard { background: #fff; border-radius: 18px; padding: 24px; border: 1px solid var(--wp--preset--color--border); box-shadow: 0 2px 8px rgba(0,0,0,0.05); }
.article-metacard__title { font-family: var(--wp--preset--font-family--heading); font-size: 13px; font-weight: 700; color: #9A9488; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 1rem; }
.article-meta-row { margin-bottom: 12px; }
.article-meta-label { display: block; font-size: 11px; font-weight: 700; color: #9A9488; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 2px; }
.article-meta-value { display: block; font-size: 14px; color: #2E2A26; font-weight: 500; }
.article-related__title, .article-doncard__title { font-family: var(--wp--preset--font-family--heading); font-weight: 700; }
.article-related__title { font-size: 15px; color: var(--wp--preset--color--ink); margin-bottom: 1rem; }
.article-related__item { display: flex; gap: 14px; background: #fff; border-radius: 14px; overflow: hidden; border: 1px solid var(--wp--preset--color--border); box-shadow: 0 1px 4px rgba(0,0,0,0.04); margin-bottom: 12px; text-decoration: none; transition: box-shadow 200ms ease, transform 200ms ease; }
.article-related__item:hover { box-shadow: 0 6px 16px rgba(0,0,0,0.08); transform: translateX(4px); }
.article-related__media { width: 84px; flex-shrink: 0; background: linear-gradient(140deg, #A0E5D9, #198D7A); }
.article-related__media img { width: 84px; height: 100%; object-fit: cover; display: block; }
.article-related__text { padding: 12px 14px 12px 0; display: flex; flex-direction: column; justify-content: center; gap: 4px; }
.article-related__cat { font-size: 11px; font-weight: 700; color: var(--wp--preset--color--brand-deep); text-transform: uppercase; letter-spacing: 0.06em; }
.article-related__name { font-family: var(--wp--preset--font-family--heading); font-size: 13px; font-weight: 700; color: var(--wp--preset--color--ink); line-height: 1.35; }
.article-related__date { font-size: 11px; color: #9A9488; }
.article-doncard { background: linear-gradient(145deg, #1A2827, #0E4A3E); border-radius: 18px; padding: 24px; }
.article-doncard__title { font-size: 15px; color: #fff; margin-bottom: 10px; }
.article-doncard__text { font-size: 14px; color: rgba(255,255,255,0.6); line-height: 1.6; margin-bottom: 1rem; }
.article-doncard__btn { display: flex; justify-content: center; }

/* CTA bas de page */
.article-cta { background: var(--wp--preset--color--ink); padding: 5rem 0; }
.article-cta__inner { display: grid; grid-template-columns: 3fr 2fr; gap: 3.5rem; align-items: center; }
.article-cta .eyebrow-script { color: var(--wp--preset--color--brand-deep); }
.article-cta__title { font-family: var(--wp--preset--font-family--heading); font-size: clamp(1.5rem, 1.2rem + 1.5vw, 2.2rem); font-weight: 700; color: #fff; line-height: 1.25; margin: 0 0 1rem; }
.article-cta__text { font-size: 16px; color: rgba(255,255,255,0.62); line-height: 1.7; }
.article-cta__actions { display: flex; flex-direction: column; gap: 12px; }
.btn-outline-light { display: inline-flex; align-items: center; justify-content: center; height: 48px; padding: 0 24px; border-radius: 9999px; border: 2px solid rgba(255,255,255,0.65); color: #fff; font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: 15px; text-decoration: none; transition: all 150ms ease; }
.btn-outline-light:hover { border-color: var(--wp--preset--color--accent); color: var(--wp--preset--color--accent); }

@media (max-width: 900px) {
  .article-layout { grid-template-columns: 1fr; gap: 2.5rem; }
  .article-sidebar { position: static; }
  .article-cta__inner { grid-template-columns: 1fr; gap: 1.5rem; }
  .article-hero { height: 420px; }
}

/* 404 */
.error-404 { text-align: center; padding-top: clamp(4rem, 3rem + 5vw, 7rem); padding-bottom: 6rem; }
.error-404__code { font-family: var(--wp--preset--font-family--script); font-size: clamp(5rem, 3rem + 8vw, 9rem); color: var(--wp--preset--color--brand-deep); line-height: 1; margin: 0; } /* a11y : teal profond (le teal clair échouait le contraste) */
.error-404__title { margin: 0.5rem 0 1rem; }
.error-404__text { color: var(--wp--preset--color--ink-soft); margin: 0 auto 2rem; max-width: 460px; }
.error-404 .search-form { max-width: 420px; margin: 2rem auto 0; display: flex; gap: 0.5rem; }

/* ============================================================
 * Frise chronologique (page « Un peu d'histoire »)
 * ============================================================ */
.asm-timeline { position: relative; margin: 2.5rem 0; padding-left: 2.25rem; border-left: 2px solid color-mix(in srgb, var(--wp--preset--color--brand) 35%, transparent); }
.asm-timeline__item { position: relative; padding-bottom: 2.25rem; }
.asm-timeline__item:last-child { padding-bottom: 0; }
.asm-timeline__item::before {
  content: ""; position: absolute; left: -2.85rem; top: 0.35rem;
  width: 14px; height: 14px; border-radius: 50%;
  background: var(--wp--preset--color--brand); border: 3px solid #fff;
  box-shadow: 0 0 0 2px var(--wp--preset--color--brand);
}
.asm-timeline__year { color: var(--wp--preset--color--brand-deep) !important; margin: 0 0 0.35rem !important; }

/* ============================================================
 * Étapes numérotées (page « Demande de placement »)
 * ============================================================ */
.asm-steps { counter-reset: step; }
.asm-steps .asm-step { position: relative; padding-left: 4.25rem; margin-bottom: 1.75rem; }
.asm-steps .asm-step::before {
  counter-increment: step; content: counter(step);
  position: absolute; left: 0; top: -0.2rem;
  width: 3rem; height: 3rem; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--wp--preset--color--subtle); color: var(--wp--preset--color--brand-deep);
  font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: 1.25rem;
}
.asm-steps .asm-step h3 { margin: 0 0 0.35rem; }

/* ============================================================
 * Carte OpenStreetMap embarquée (shortcode [asm_map])
 * ============================================================ */
.asm-map-embed { margin: 0; border-radius: 24px; overflow: hidden; background: #fff; box-shadow: 0 20px 50px rgba(26, 40, 39, 0.12); }
.asm-map-embed__canvas { position: relative; display: block; }
.asm-map-embed iframe { display: block; width: 100%; border: 0; }
/* Pin maison (couleurs du site) superposé au centre de la carte */
.asm-map-embed__pin {
  position: absolute; left: 50%; top: 50%;
  transform: translate(-50%, -100%);
  pointer-events: none;
  filter: drop-shadow(0 4px 6px rgba(26, 40, 39, 0.35));
  animation: asm-pin-drop 0.5s cubic-bezier(0.34, 1.3, 0.64, 1) both;
}
@keyframes asm-pin-drop { from { transform: translate(-50%, -160%); opacity: 0; } to { transform: translate(-50%, -100%); opacity: 1; } }
.asm-map-embed__bar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding: 1rem 1.35rem; }
.asm-map-embed__addr { color: var(--wp--preset--color--ink-soft); font-size: 0.95rem; }
.asm-map-embed__addr strong { display: block; color: var(--wp--preset--color--brand-deep); font-family: var(--wp--preset--font-family--heading); font-size: 1.05rem; }
.asm-map-embed__btn {
  flex-shrink: 0; display: inline-block; text-decoration: none;
  background: var(--wp--preset--color--brand-deep); color: var(--wp--preset--color--on-brand); /* a11y : blanc lisible (le teal clair échouait) */
  font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: 0.95rem;
  padding: 0.6rem 1.25rem; border-radius: 9999px;
  transition: background-color 180ms ease, transform 180ms ease;
}
.asm-map-embed__btn:hover { background: color-mix(in srgb, var(--wp--preset--color--brand-deep) 82%, #000); transform: translateY(-1px); }

/* ============================================================
 * Carrousel photo — style de bloc « Carrousel » sur la Galerie
 * (.wp-block-gallery.is-style-asm-slider) + lightbox
 * ============================================================ */
/* Taille maîtrisée : les photos sources font ~800px → on plafonne pour rester net. */
/* !important : bat la largeur imposée par le conteneur de groupe généré (wp-container-…) */
.asm-slider { position: relative; max-width: 760px !important; margin-inline: auto !important; }
/* La galerie devient une piste défilante à accroche (scroll-snap).
   Fonctionne déjà sans JS (glisser/tactile) ; le JS ajoute flèches, points, lightbox. */
.wp-block-gallery.is-style-asm-slider {
  display: flex !important;
  flex-wrap: nowrap !important;
  gap: 0 !important;
  max-width: 760px;
  margin-inline: auto;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  border-radius: 20px;
  box-shadow: 0 20px 50px rgba(26, 40, 39, 0.14);
  scrollbar-width: none; -ms-overflow-style: none;
}
.wp-block-gallery.is-style-asm-slider::-webkit-scrollbar { display: none; }
.asm-slider > .wp-block-gallery.is-style-asm-slider { max-width: none; margin: 0; }
.wp-block-gallery.is-style-asm-slider > figure {
  flex: 0 0 100% !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
  scroll-snap-align: center;
  aspect-ratio: 3 / 2;
}
.wp-block-gallery.is-style-asm-slider > figure > a,
.wp-block-gallery.is-style-asm-slider > figure > img,
.wp-block-gallery.is-style-asm-slider > figure > a > img {
  display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 0; cursor: zoom-in;
}
/* Flèches précédent / suivant */
.asm-slider__nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 46px; height: 46px; padding: 0; border: 0; border-radius: 9999px;
  display: grid; place-items: center; cursor: pointer;
  color: var(--wp--preset--color--ink);
  background: rgba(255, 255, 255, 0.92);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);
  transition: background-color 160ms ease, transform 160ms ease, opacity 160ms ease;
}
.asm-slider__nav:hover { background: #fff; }
.asm-slider__nav--prev { left: 14px; }
.asm-slider__nav--next { right: 14px; }
.asm-slider__nav:disabled { opacity: 0; pointer-events: none; }
/* Points de navigation */
.asm-slider__dots { display: flex; justify-content: center; flex-wrap: wrap; gap: 2px; margin-top: 0.75rem; }
/* Zone tactile 24×24 (WCAG 2.2 – 2.5.8), point visuel 10px via ::before */
.asm-slider__dot {
  width: 24px; height: 24px; padding: 0; border: 0; background: none; cursor: pointer;
  display: grid; place-items: center;
}
.asm-slider__dot::before {
  content: ""; width: 10px; height: 10px; border-radius: 9999px;
  background: color-mix(in srgb, var(--wp--preset--color--ink) 22%, transparent);
  transition: background-color 160ms ease, transform 160ms ease;
}
.asm-slider__dot:hover::before { background: color-mix(in srgb, var(--wp--preset--color--ink) 45%, transparent); }
.asm-slider__dot[aria-current="true"]::before { background: var(--wp--preset--color--brand-deep); transform: scale(1.3); }
@media (max-width: 600px) {
  .asm-slider__nav { width: 40px; height: 40px; }
  .asm-slider__nav--prev { left: 8px; }
  .asm-slider__nav--next { right: 8px; }
}
/* Lightbox (agrandissement au clic) */
.asm-lightbox {
  position: fixed; inset: 0; z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  padding: 4vh 4vw; background: rgba(10, 18, 17, 0.92);
}
.asm-lightbox[hidden] { display: none; }
.asm-lightbox__fig { margin: 0; }
.asm-lightbox__fig img { max-width: 92vw; max-height: 88vh; width: auto; height: auto; border-radius: 8px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5); }
.asm-lightbox__close {
  position: absolute; top: 18px; right: 22px; width: 48px; height: 48px;
  border: 0; border-radius: 9999px; cursor: pointer; font-size: 26px; line-height: 1;
  color: #fff; background: rgba(255, 255, 255, 0.14);
}
.asm-lightbox__nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 52px; height: 52px; border: 0; border-radius: 9999px; cursor: pointer;
  font-size: 30px; line-height: 1; color: #fff; background: rgba(255, 255, 255, 0.14);
}
.asm-lightbox__close:hover, .asm-lightbox__nav:hover { background: rgba(255, 255, 255, 0.28); }
.asm-lightbox__nav--prev { left: 16px; }
.asm-lightbox__nav--next { right: 16px; }
.asm-lightbox button:focus-visible { outline: 3px solid var(--wp--preset--color--accent); outline-offset: 2px; }
@media (max-width: 600px) { .asm-lightbox__nav { width: 42px; height: 42px; } }

/* ============================================================
 * Bouton « revenir en haut »
 * ============================================================ */
.asm-to-top {
  position: fixed; right: clamp(1rem, 2vw, 2rem); bottom: clamp(1rem, 2vw, 2rem);
  z-index: 900; width: 48px; height: 48px; padding: 0; border: 0; border-radius: 9999px;
  display: grid; place-items: center; cursor: pointer;
  color: var(--wp--preset--color--on-brand);
  background: var(--wp--preset--color--brand);
  box-shadow: 0 8px 24px rgba(26, 40, 39, 0.28);
  transition: background-color 160ms ease, transform 200ms ease, opacity 200ms ease;
}
.asm-to-top[hidden] { display: none; }
.asm-to-top:hover { background: var(--wp--preset--color--brand-strong); transform: translateY(-2px); }
.asm-to-top:focus-visible { outline: 3px solid var(--wp--preset--color--accent); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { .asm-to-top { transition: none; } }

/* ============================================================
 * Boutons — centrage fiable + largeur maîtrisée
 * ============================================================ */
.wp-block-button__link { text-align: center; }
/* Le cœur + le texte toujours centrés dans le bouton */
.wp-block-button.has-heart .wp-block-button__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
/* Les boutons « pleine largeur » (width-100) ne s'étirent plus indéfiniment :
   ils restent lisibles et pas trop larges, et centrés dans leur conteneur. */
.wp-block-button.wp-block-button__width-100 { max-width: 360px; }
/* CTA dans le contenu des pages : groupes de boutons centrés (sauf si
   explicitement alignés à gauche via l'éditeur). N'affecte pas header/footer/cartes. */
.entry-content .wp-block-buttons:not(.is-content-justification-left):not(.is-content-justification-space-between) {
  justify-content: center;
}

/* ============================================================
 * Compteur de collecte — mobile
 * ============================================================ */
@media (max-width: 560px) {
  .asm-collecte { padding: 1.5rem 1.25rem; }
  .asm-collecte .collect-gauge__head { grid-template-columns: 1fr auto; }
  .asm-collecte .collect-gauge__amount { font-size: 2rem; }
  .asm-collecte .collect-gauge__pct { font-size: 1.5rem; }
  .asm-collecte .collect-gauge__meta { font-size: 0.85rem; }
  .asm-map-embed__bar { gap: 0.6rem; }
}

/* ============================================================
 * Home mobile — header solide dans le flux (fin du chevauchement logo/hero)
 * (placé en fin de feuille pour l'emporter sur la règle desktop `position:fixed`)
 * ============================================================ */
@media (max-width: 781px) {
  body.home .site-header { position: sticky; top: 0; }
  body.home .site-header .site-navrow { background-color: #fff; box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06); }
  body.home .site-header .site-navrow .main-nav a { color: var(--wp--preset--color--ink); }
  body.home .site-header .nav-toggle span { background: var(--wp--preset--color--ink); }
  /* Logo compact en mobile */
  .site-header .asm-logo img,
  body.home .site-header:not(.hdr-scrolled) .site-navrow .asm-logo img,
  .site-header.hdr-scrolled .site-navrow .asm-logo img { height: 56px; }
  /* Header dans le flux : on garde un peu d'air au-dessus de l'eyebrow */
  .asm-hero { padding-top: 2.25rem !important; }
  /* Eyebrow « DEPUIS PLUS DE 100 ANS » sur UNE seule ligne en mobile */
  .asm-hero .hero-eyebrow { white-space: nowrap; font-size: 0.72rem; letter-spacing: 0.12em; gap: 10px; }
  .asm-hero .hero-eyebrow::before, .asm-hero .hero-eyebrow::after { flex-basis: 22px; width: 22px; }
}

/* ============================================================
 * Correctifs mobile HP (v2.2.5)
 * ============================================================ */
@media (max-width: 781px) {
  /* Header home : barre de contact solide dès le haut (même non scrollée) → visible */
  body.home .site-header .site-topbar,
  body.home .site-header:not(.tb-scrolled) .site-topbar { background-color: var(--wp--preset--color--ink) !important; }
  body.home .site-header:not(.hdr-scrolled) .nav-toggle span { background: var(--wp--preset--color--ink); }
  /* Les 2 liens de la barre de contact sur UNE seule ligne */
  .site-topbar__inner {
    flex-wrap: nowrap;
    justify-content: center;
    gap: 1rem;
    font-size: 0.72rem;
  }
  .site-topbar__email, .site-topbar__fdhs { white-space: nowrap; }
}
@media (max-width: 900px) {
  /* Gouttières : les sections en split (histoire, établissements) ne collent plus aux bords */
  .asm-split { padding-left: 20px; padding-right: 20px; }
  .asm-split .asm-cards-2 { padding-left: 0; padding-right: 0; }
}

/* ============================================================
 * Correctif mobile — chiffres « Mon Village 2030 » centrés (v2.2.9)
 * ============================================================ */
@media (max-width: 781px) {
  /* La section « Mon Village 2030 » a son titre + intro centrés ; en mobile les
     colonnes de chiffres s'empilent et restaient alignées à gauche → on les centre.
     Scopé à la colonne voisine de la jauge de collecte (:has(.collect-gauge)) :
     les stats des pages établissement ne sont pas dans un bloc contenant la jauge,
     donc elles ne sont pas touchées. */
  .wp-block-columns:has(.collect-gauge) .stat-number,
  .wp-block-columns:has(.collect-gauge) .stat-number + p {
    text-align: center;
  }
}

/* ============================================================
 * FDHS — composants des PAGES DE CONTENU (À propos, Nos actions)
 * v2.7.0 — tout est construit en BLOCS GUTENBERG natifs (colonnes,
 * groupes, titres, listes, images, boutons, core/details) + ces
 * classes de style. 100 % éditable dans l'éditeur. Gaté body.fdhs.
 * ============================================================ */

/* — Bande de chiffres clés — Group.fdhs-facts (align wide, layout default)
 *   > Columns > Column : paragraphe .fdhs-fact__num + paragraphe .fdhs-fact__lbl */
body.fdhs .entry-content .fdhs-facts { background: var(--wp--preset--color--surface); border-radius: 24px; padding: clamp(1.8rem, 1rem + 3vw, 2.8rem) clamp(1.4rem, 1rem + 2vw, 2.4rem); margin-top: 2.6rem; }
body.fdhs .entry-content .fdhs-facts .wp-block-columns { flex-wrap: wrap; gap: 1.4rem; margin: 0; align-items: flex-start; }
body.fdhs .entry-content .fdhs-facts .wp-block-column { text-align: center; min-width: 130px; }
body.fdhs .entry-content .fdhs-fact__num { font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: clamp(1.9rem, 1.3rem + 1.8vw, 2.7rem); line-height: 1; color: var(--wp--preset--color--brand); margin: 0; }
body.fdhs .entry-content .fdhs-fact__lbl { margin: 0.55rem 0 0; color: var(--wp--preset--color--ink-soft); font-size: 0.92rem; line-height: 1.4; }

/* — Trombinoscope CA / Comité — Columns.fdhs-people > Column.fdhs-person
 *   (paragraphe .fdhs-person__nom en gras + paragraphe rôle) */
/* Le groupe qui contient ces rangées est un flex vertical centré : sans
   align-self, chaque rangée se dimensionne à son contenu, si bien qu'une
   rangée aux textes plus courts (Comité d'Investissement) était plus étroite
   que les autres. On les force à occuper toute la largeur du conteneur pour
   que les cartes s'alignent d'une rangée à l'autre. */
/* Espacement homogène : le conteneur est un flex vertical dont le gap s'AJOUTE
   aux marges des rangées (pas de fusion des marges en flex). On pilote donc
   l'écart vertical par le seul gap du conteneur, marges remises à zéro, pour
   qu'il vaille exactement le gap horizontal des cartes. */
body.fdhs .entry-content .wp-block-group:has(> .fdhs-people) { gap: 2rem; }
body.fdhs .entry-content .fdhs-people { gap: 2rem; flex-wrap: wrap; margin-top: 0; margin-bottom: 0; width: 100%; align-self: stretch; }
/* Cartes sans contour : fond blanc détaché par une ombre portée. Les cartes
   reposant sur un fond blanc, l'ombre est leur seule séparation visuelle —
   d'où deux couches (contact net + diffusion large) plutôt qu'une seule. */
body.fdhs .entry-content .fdhs-person { background: #fff; border: 0; border-radius: 16px; padding: 1.35rem 1.4rem; box-shadow: 0 1px 3px rgba(26, 19, 5, 0.06), 0 6px 22px rgba(26, 19, 5, 0.11); }
body.fdhs .entry-content .fdhs-person__nom { margin: 0; font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: 1.08rem; color: var(--wp--preset--color--ink); }
body.fdhs .entry-content .fdhs-person__role { margin: 0.25rem 0 0; color: var(--wp--preset--color--ink-soft); font-size: 0.92rem; line-height: 1.45; }
body.fdhs .entry-content .fdhs-person__nom::before { content: ""; display: block; width: 34px; height: 3px; border-radius: 3px; background: var(--wp--preset--color--brand); margin-bottom: 0.7rem; }

/* — Bio parrain — Columns.fdhs-bio (Column image | Column texte) */
body.fdhs .entry-content .fdhs-bio { align-items: center; gap: 2rem; margin-top: 2rem; }
body.fdhs .entry-content .fdhs-bio .wp-block-image img { border-radius: 20px; }
body.fdhs .entry-content .fdhs-bio .fdhs-bio__nom { margin: 0; font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: 1.5rem; }
body.fdhs .entry-content .fdhs-bio .fdhs-bio__role { margin: 0.2rem 0 0.8rem; color: var(--wp--preset--color--brand); font-weight: 700; font-size: 0.95rem; }
body.fdhs .entry-content .fdhs-bio .fdhs-bio__txt { margin: 0; }

/* — Grille de réalisations (Insertion) — Group.fdhs-real (align wide, layout default)
 *   > Group.fdhs-real__item : paragraphe .fdhs-real__cat + h3 + paragraphe */
body.fdhs .entry-content .fdhs-real { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 1.1rem; margin-top: 2rem; }
body.fdhs .entry-content .fdhs-real__item { background: #fff; border: 0; box-shadow: 0 1px 3px rgba(26, 19, 5, 0.06), 0 6px 22px rgba(26, 19, 5, 0.11); border-radius: 16px; padding: 1.4rem 1.4rem 1.5rem; display: flex; flex-direction: column; gap: 0.4rem; }
body.fdhs .entry-content .fdhs-real__item > * { margin: 0 !important; max-width: none !important; }
body.fdhs .entry-content .fdhs-real__cat { display: inline-block; align-self: flex-start; background: var(--wp--preset--color--subtle); color: var(--wp--preset--color--brand-deep); font-family: var(--wp--preset--font-family--body); font-weight: 700; font-size: 0.68rem; letter-spacing: 0.07em; text-transform: uppercase; padding: 0.3rem 0.75rem; border-radius: 9999px; }
body.fdhs .entry-content .fdhs-real__item h3 { font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: 1.12rem; line-height: 1.25; margin: 0.35rem 0 0 !important; }
body.fdhs .entry-content .fdhs-real__item p:not(.fdhs-real__cat) { color: var(--wp--preset--color--ink-soft); font-size: 0.95rem; line-height: 1.55; }

/* — Bloc établissement (Immobilier) — Columns.fdhs-estab (image | contenu) */
body.fdhs .entry-content .fdhs-estab { gap: 2.2rem; align-items: center; margin-top: 2.4rem; }
body.fdhs .entry-content .fdhs-estab .wp-block-image img { border-radius: 20px; }
body.fdhs .entry-content .fdhs-estab .fdhs-estab__badge { display: inline-block; background: var(--wp--preset--color--subtle); color: var(--wp--preset--color--brand-deep); font-weight: 700; font-size: 0.7rem; letter-spacing: 0.07em; text-transform: uppercase; padding: 0.3rem 0.8rem; border-radius: 9999px; margin: 0 0 0.6rem; }
body.fdhs .entry-content .fdhs-estab h2 { margin-top: 0 !important; }

/* — Puces de stats en ligne — Group.fdhs-chips (layout flex) > paragraphe .fdhs-chip */
body.fdhs .entry-content .fdhs-chips { gap: 0.6rem !important; flex-wrap: wrap; margin-top: 1rem; }
body.fdhs .entry-content .fdhs-chip { margin: 0 !important; background: #fff; border: 1px solid var(--wp--preset--color--border); border-radius: 9999px; padding: 0.4rem 0.9rem; font-size: 0.85rem; font-weight: 600; color: var(--wp--preset--color--ink); }
body.fdhs .entry-content .fdhs-chip strong { color: var(--wp--preset--color--brand); }

/* — Encart focus (Mon Village 2030…) — Group.fdhs-focus (align wide) */
body.fdhs .entry-content .fdhs-focus { background: var(--wp--preset--gradient--brand-accent); color: #fff; border-radius: 24px; padding: clamp(1.8rem, 1.2rem + 3vw, 3rem); margin-top: 2.4rem; }
body.fdhs .entry-content .fdhs-focus > * { max-width: none; }
body.fdhs .entry-content .fdhs-focus .fdhs-focus__eyebrow { text-transform: uppercase; letter-spacing: 0.1em; font-size: 0.72rem; font-weight: 700; margin: 0 0 0.5rem; opacity: 0.9; }
body.fdhs .entry-content .fdhs-focus h2, body.fdhs .entry-content .fdhs-focus h3 { color: #fff; margin: 0 0 0.6rem !important; }
body.fdhs .entry-content .fdhs-focus p { color: rgba(255,255,255,0.92); }
body.fdhs .entry-content .fdhs-focus .wp-block-columns { margin-top: 1.6rem; gap: 1.2rem; flex-wrap: wrap; }
body.fdhs .entry-content .fdhs-focus .fdhs-focus__fig { margin: 0; font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: 1.7rem; line-height: 1.05; }
body.fdhs .entry-content .fdhs-focus .fdhs-focus__cap { margin: 0.3rem 0 0; font-size: 0.88rem; color: rgba(255,255,255,0.9); }

/* — Accordéon natif core/details — « texte long au clic » */
body.fdhs .entry-content .wp-block-details { background: var(--wp--preset--color--surface); border: 1px solid var(--wp--preset--color--border); border-radius: 14px; padding: 0.4rem 1.2rem; margin-top: 1rem; }
body.fdhs .entry-content .wp-block-details summary { font-family: var(--wp--preset--font-family--heading); font-weight: 700; cursor: pointer; padding: 0.7rem 0; color: var(--wp--preset--color--ink); }
body.fdhs .entry-content .wp-block-details[open] summary { color: var(--wp--preset--color--brand); }
body.fdhs .entry-content .wp-block-details > *:not(summary) { margin-bottom: 0.8rem; }

/* — Bandeau CTA de bas de page (Group.fdhs-cta, align wide) — réutilise fdhs-btn */
body.fdhs .entry-content .fdhs-cta { background: var(--wp--preset--color--surface); border-radius: 24px; padding: clamp(2rem, 1.4rem + 3vw, 3.2rem); text-align: center; margin-top: 3rem; }
body.fdhs .entry-content .fdhs-cta > * { max-width: none; }
body.fdhs .entry-content .fdhs-cta h2 { margin: 0 0 0.6rem !important; }
body.fdhs .entry-content .fdhs-cta p { margin: 0 auto 1.4rem; max-width: 560px; color: var(--wp--preset--color--ink-soft); }
body.fdhs .entry-content .fdhs-cta .wp-block-buttons { justify-content: center; }

/* Responsive : colonnes designées empilées sous 781px */
@media (max-width: 781px) {
  /* Photo alignée sur le texte de la fiche : le plafond à 240px la laissait
     centrée et en retrait de 44px de chaque côté, alors que le nom et la
     biographie occupaient toute la largeur de la carte. */
  body.fdhs .entry-content .fdhs-bio .wp-block-image { max-width: none; margin-left: 0; margin-right: 0; }
  body.fdhs .entry-content .fdhs-facts .wp-block-column { flex-basis: 40% !important; }
}

/* ============================================================
 * FDHS — formulaire « Demande de soutien » multi-étapes (Gravity Forms)
 * ============================================================ */
/* Notes d'éligibilité (champs HTML conditionnels) */
body.fdhs .fdhs-soutien-form .fdhs-elig-note { border-radius: 14px; padding: 1rem 1.2rem; line-height: 1.6; font-size: 0.95rem; margin: 0.4rem 0; }
body.fdhs .fdhs-soutien-form .fdhs-elig-note--ok { background: var(--wp--preset--color--subtle); color: var(--wp--preset--color--brand-deep); }
body.fdhs .fdhs-soutien-form .fdhs-elig-note--ko { background: #FFF6E8; color: #7A5A12; border: 1px solid #E7CE9A; }

/* Fil d'étapes (pagination type "steps") */
body.fdhs .fdhs-soutien-form .gf_page_steps { display: flex; flex-wrap: wrap; gap: 0.5rem 1.4rem; margin: 0 0 1.8rem; padding: 0 0 1.2rem; border-bottom: 1px solid var(--wp--preset--color--border); }
body.fdhs .fdhs-soutien-form .gf_step { display: inline-flex; align-items: center; gap: 0.5rem; font-family: var(--wp--preset--font-family--heading); font-weight: 600; font-size: 0.9rem; color: var(--wp--preset--color--ink-soft); opacity: 1; }
body.fdhs .fdhs-soutien-form .gf_step_number { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; border: 2px solid var(--wp--preset--color--border); font-size: 0.8rem; }
body.fdhs .fdhs-soutien-form .gf_step_active { color: var(--wp--preset--color--brand); }
body.fdhs .fdhs-soutien-form .gf_step_active .gf_step_number { border-color: var(--wp--preset--color--brand); background: var(--wp--preset--color--brand); color: #fff; }
body.fdhs .fdhs-soutien-form .gf_step_completed .gf_step_number { border-color: var(--wp--preset--color--brand); color: var(--wp--preset--color--brand); }

/* Pied de page multi-étapes : Retour (contour) + Continuer (plein) */
body.fdhs .fdhs-soutien-form .gform_page_footer { display: flex; gap: 0.8rem; flex-wrap: wrap; margin-top: 1rem; }
body.fdhs .fdhs-soutien-form .gform_page_footer input[type=button],
body.fdhs .fdhs-soutien-form .gform_page_footer input[type=submit] {
  border-radius: 9999px !important; padding: 0.85rem 1.8rem !important; font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: 1rem; border: 2px solid var(--wp--preset--color--brand) !important; cursor: pointer; transition: background-color 0.2s ease, color 0.2s ease; width: auto !important;
}
body.fdhs .fdhs-soutien-form .gform_page_footer .gform_next_button,
body.fdhs .fdhs-soutien-form .gform_page_footer input[type=submit] { background: var(--wp--preset--color--brand) !important; color: #fff !important; }
body.fdhs .fdhs-soutien-form .gform_page_footer .gform_next_button:hover,
body.fdhs .fdhs-soutien-form .gform_page_footer input[type=submit]:hover { background: var(--wp--preset--color--brand-strong) !important; border-color: var(--wp--preset--color--brand-strong) !important; }
body.fdhs .fdhs-soutien-form .gform_page_footer .gform_previous_button { background: transparent !important; color: var(--wp--preset--color--brand) !important; }
body.fdhs .fdhs-soutien-form .gform_page_footer .gform_previous_button:hover { background: color-mix(in srgb, var(--wp--preset--color--brand) 10%, transparent) !important; }

/* Mobile : encart focus → chiffres en 2×2 (plutôt qu'une pile de 4) */
@media (max-width: 781px) {
  body.fdhs .entry-content .fdhs-focus .wp-block-columns { gap: 0.9rem 1rem; }
  body.fdhs .entry-content .fdhs-focus .wp-block-columns .wp-block-column { flex-basis: calc(50% - 0.5rem) !important; }
}

/* ============================================================
 * FDHS — accessibilité : corrections de contraste (audit axe-core, 2026-07-16)
 * Objectif WCAG 2.1 AA (≥ 4.5:1 texte normal, ≥ 3:1 texte large / UI).
 * ============================================================ */
/* Eyebrow des en-têtes de page : rouge #D04838 sur crème = 4.17 → brand-deep (6.4:1). */
body.fdhs .fdhs-page-hero__eyebrow { color: var(--wp--preset--color--brand-deep); }
/* Boutons « contour » ROUGES dans le contenu : #D04838 sur crème = 4.17 → brand-deep.
   On ne cible QUE les boutons rouges (.has-brand-color) : un bouton contour dont
   l'admin a choisi une autre couleur de texte (ex. blanc pour le bouton « Nos
   actions » du hero, sur image sombre) n'est PAS touché — son réglage est respecté. */
body.fdhs .entry-content .wp-block-button.is-style-outline .wp-block-button__link.has-brand-color {
  color: var(--wp--preset--color--brand-deep) !important;
  border-color: var(--wp--preset--color--brand-deep) !important;
}
/* Bouton « contour » DANS LE HERO (sur photo) = bouton « verre » du guideline :
   texte blanc, bordure blanche semi-transparente 1.5px, léger flou. Scopé au hero,
   sans !important → un réglage de couleur fait dans l'éditeur reste prioritaire. */
body.fdhs .asm-hero .wp-block-button.is-style-outline .wp-block-button__link {
  color: #fff;
  border-color: rgba(255, 255, 255, 0.55);
  border-width: 1.5px;
  background: rgba(255, 255, 255, 0.06);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
body.fdhs .asm-hero .wp-block-button.is-style-outline .wp-block-button__link:hover {
  background: rgba(255, 255, 255, 0.16);
  border-color: #fff;
}
/* Encart focus : le dégradé d'origine finissait sur l'amber (blanc illisible) →
   dégradé rouge → brand-deep, texte blanc garanti ≥ 6:1 partout. */
body.fdhs .entry-content .fdhs-focus { background: linear-gradient(135deg, var(--wp--preset--color--brand) 0%, var(--wp--preset--color--brand-deep) 100%); }
/* Bande newsletter (footer) : texte crème sur rouge = 3.93 → panneau en brand-strong (5.2:1). */
body.fdhs .fdhs-newsletter__left { background: var(--wp--preset--color--brand-strong); }
/* Liens rouges sur le footer sombre #1A1305 : #D04838 = 4.09 → rouge clair accessible (7:1). */
body.fdhs .fdhs-footer__don,
body.fdhs .fdhs-footer__partner { color: #F2856F !important; }

/* ============================================================
 * FDHS — alignement GUIDELINE (2026-07-16, v2.7.6)
 * Le guideline valide les titres Bricolage en graisse 600 (le thème était
 * en 800) et les chiffres clés en 700. Bloc placé en fin de feuille → il
 * l'emporte sur les déclarations d'origine (spécificité égale, plus tardif).
 * ============================================================ */
/* Titres → 600. !important car la home (issue de la maquette) porte des
   font-weight:800 EN LIGNE que seul !important peut battre ; les chiffres étant
   des <p>/.stat-number (pas des titres), ils ne sont pas affectés. */
body.fdhs .asm-hero h1,
body.fdhs .fdhs-hero-inner h1,
body.fdhs .fdhs-page-hero__title,
body.fdhs .entry-content h1,
body.fdhs .entry-content h2,
body.fdhs .entry-content h3,
body.fdhs .fdhs-section__title,
body.fdhs .fdhs-projet__title,
body.fdhs .fdhs-parrain__nom,
body.fdhs .fdhs-don__card h3,
body.fdhs .fdhs-newsletter__title,
body.fdhs .entry-content .fdhs-bio .fdhs-bio__nom,
body.fdhs .entry-content .fdhs-real__item h3,
body.fdhs .entry-content .fdhs-person__nom { font-weight: 600 !important; }
/* Chiffres clés → 700 */
body.fdhs .fdhs-mosaic__badge strong,
body.fdhs .fdhs-projet__line strong,
body.fdhs .fdhs-don__calc strong,
body.fdhs .fdhs-don__submit,
body.fdhs .stat-number,
body.fdhs .stat-number span,
body.fdhs .entry-content .fdhs-fact__num,
body.fdhs .entry-content .fdhs-focus .fdhs-focus__fig { font-weight: 700 !important; }

/* ── Section « Notre mission » : pictos alignés sur la maquette Design ──
   Les 2 icônes-features (blocs wp:icon) sont remplacées par des glyphes en
   contour crimson (cœur + smiley), et les puces de la liste par des
   check-circle. On masque le SVG d'origine et on peint la forme via mask +
   background = couleur de marque (crimson #D04838). */
.wp-block-column:has(.fdhs-mission__checks) .wp-block-group.is-nowrap .wp-block-icon {
  width: 24px; height: 24px; flex: 0 0 24px;
  background-color: var(--wp--preset--color--brand);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.wp-block-column:has(.fdhs-mission__checks) .wp-block-group.is-nowrap .wp-block-icon svg { display: none; }
/* 2e feature → smiley */
.wp-block-column:has(.fdhs-mission__checks) .wp-block-group.is-nowrap ~ .wp-block-group.is-nowrap .wp-block-icon {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M8 14s1.5 2 4 2 4-2 4-2'/%3E%3Cline x1='9' y1='9' x2='9.01' y2='9'/%3E%3Cline x1='15' y1='9' x2='15.01' y2='9'/%3E%3C/svg%3E");
          mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M8 14s1.5 2 4 2 4-2 4-2'/%3E%3Cline x1='9' y1='9' x2='9.01' y2='9'/%3E%3Cline x1='15' y1='9' x2='15.01' y2='9'/%3E%3C/svg%3E");
}
/* Puces de la liste → check-circle (contour), crimson, comme la maquette */
.fdhs-mission__checks li::before {
  border-radius: 0;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/%3E%3Cpolyline points='22 4 12 14.01 9 11.01'/%3E%3C/svg%3E");
          mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/%3E%3Cpolyline points='22 4 12 14.01 9 11.01'/%3E%3C/svg%3E");
  -webkit-mask-size: 18px; mask-size: 18px;
}

/* ── #1 — Supprimer l'espace blanc entre la bande de chiffres (rouge) et la
   section « Soutenez nos projets » : la section colle directement à la bande. */
body.fdhs .entry-content .fdhs-projets { margin-top: 0 !important; }

/* ── #3 — « Agir maintenant » : formulaire + photo fusionnés en UNE seule carte
   arrondie (comme la maquette). On enlève l'écart, on pose un seul rayon +
   ombre portée sur la grille, et on neutralise les arrondis internes. */
body.fdhs .entry-content .fdhs-don__grid {
  gap: 0;
  border-radius: 24px;
  overflow: hidden;
  box-shadow: 0 28px 80px rgba(0, 0, 0, 0.3);
}
body.fdhs .entry-content .fdhs-don__card,
body.fdhs .entry-content .fdhs-don__media { border-radius: 0; }

/* ── #2 — Collage photos « Notre mission » (comme la maquette) : 3 photos
   superposées + carte flottante « +60 projets financés ». À utiliser avec un
   bloc HTML personnalisé .fdhs-mission-collage dans la colonne photos. */
.fdhs-mission-collage { position: relative; height: 520px; }
.fdhs-mission-collage img {
  position: absolute; border-radius: 18px; object-fit: cover; display: block;
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.12);
}
.fdhs-mission-collage__p1 { top: 56px; left: 0; width: 46%; height: 220px; object-position: center; }
.fdhs-mission-collage__p2 { top: 0; right: 0; width: 52%; height: 295px; object-position: center top; }
.fdhs-mission-collage__p3 { bottom: 0; left: 0; right: 6%; height: 195px; object-position: center 30%; }
.fdhs-mission-collage__badge {
  position: absolute; top: 260px; left: 28%; z-index: 2;
  background: #fff; border-radius: 16px; padding: 16px 22px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18);
}
.fdhs-mission-collage__num {
  display: block; font-family: var(--wp--preset--font-family--heading);
  font-size: 40px; font-weight: 700; color: var(--wp--preset--color--brand);
  line-height: 1; margin-bottom: 2px;
}
.fdhs-mission-collage__lbl { display: block; font-size: 16px; color: #6A5840; font-weight: 600; }
@media (max-width: 781px) {
  .fdhs-mission-collage { height: auto; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
  .fdhs-mission-collage img { position: static; width: 100% !important; height: 170px; }
  .fdhs-mission-collage__p3 { grid-column: 1 / -1; height: 200px; }
  .fdhs-mission-collage__badge { position: static; grid-column: 1 / -1; justify-self: start; }
}

/* ── #2b — La carte flottante « +60 projets financés » (::before/::after) a été
   retirée : écrite pour la section « Notre mission » de l'accueil, dont la
   structure a changé depuis, elle ne s'appliquait plus qu'à un seul bloc, sur
   la page « Actions immobilières », où ce chiffre est hors sujet. */
/* L'alignement à droite des boutons de cette rangée a été retiré : écrit pour
   la section « Notre mission » de l'accueil (structure depuis modifiée), il ne
   s'appliquait plus qu'au bloc établissement de « Actions immobilières », où il
   contredisait ce que montrait l'éditeur. La justification choisie dans
   l'éditeur fait désormais foi. */

/* ── Charte — texte courant (corps) = Brun #4A3820. Les titres restent Encre
   #1A1305 ; les paragraphes à couleur explicite (blanc sur rouge, etc.) ne
   sont pas touchés (exclus via :not(.has-text-color)). */
body.fdhs .entry-content p.wp-block-paragraph:not(.has-text-color):not(.eyebrow-script):not([class*="fdhs-"]) {
  color: var(--wp--preset--color--ink-body);
}

/* ── Harmonisation du bouton « Faire un don » (charte / capture) : crimson
   #D04838, cœur PLEIN blanc, pilule, ombre portée, survol #A83020. S'applique
   au CTA header, aux boutons de contenu marqués .has-heart, et au submit du
   formulaire de don. (Le lien texte du footer n'est pas concerné.) */
.header-cta,
.wp-block-button.has-heart > .wp-block-button__link,
.fdhs-don__submit.fdhs-btn--heart {
  align-items: center;
  gap: 8px;
  background-color: var(--wp--preset--color--brand) !important;
  color: #fff !important;
  border-radius: 9999px !important;
  box-shadow: 0 3px 10px rgba(208, 72, 56, 0.30);
  transition: background-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}
/* `display` forcé sur les seuls boutons de contenu. Sur .header-cta il annulait
   le masquage mobile : placé après le @media (max-width:900px), un !important de
   même spécificité l'emportait par ordre de source et le CTA restait affiché,
   poussant le burger hors de l'écran. Le CTA reçoit son inline-flex ailleurs. */
.wp-block-button.has-heart > .wp-block-button__link,
.fdhs-don__submit.fdhs-btn--heart { display: inline-flex !important; }

.header-cta:hover,
.wp-block-button.has-heart > .wp-block-button__link:hover,
.fdhs-don__submit.fdhs-btn--heart:hover {
  background-color: var(--wp--preset--color--brand-strong) !important;
  box-shadow: 0 6px 18px rgba(168, 48, 32, 0.40);
  transform: translateY(-1px);
}
.header-cta::before,
.wp-block-button.has-heart > .wp-block-button__link::before,
.fdhs-don__submit.fdhs-btn--heart::before {
  content: "" !important;
  flex: 0 0 auto;
  width: 16px; height: 16px;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E") center / contain no-repeat;
}
@media (max-width: 781px) {
  .wp-block-columns:has(.fdhs-mission__checks) > .wp-block-column:first-child::before { top: auto; bottom: 8%; left: 6%; }
  .wp-block-columns:has(.fdhs-mission__checks) > .wp-block-column:first-child::after { top: auto; bottom: calc(8% + 6px); left: calc(6% + 22px); }
}

/* ── Boutons côte à côte : hauteurs égales + couleur cohérente ──────────── */
/* Paire du header (lien partenaire + CTA) : même hauteur */
.header-cta,
.header-partner {
  min-height: 46px; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center;
}
/* Paires de contenu (Faire un don + En savoir plus / Nos actions) : les deux
   boutons s'étirent à la même hauteur (la plus grande de la rangée). */
.entry-content .wp-block-buttons { align-items: stretch; }
.entry-content .wp-block-buttons > .wp-block-button > .wp-block-button__link {
  height: 100%; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center;
}
/* Bouton outline harmonisé en crimson sur fond clair… */
.entry-content .wp-block-button.is-style-outline > .wp-block-button__link {
  color: var(--wp--preset--color--brand) !important;
  border-color: var(--wp--preset--color--brand) !important;
}
/* …mais reste blanc dans le hero (au-dessus de la photo sombre) */
.asm-hero .wp-block-button.is-style-outline > .wp-block-button__link {
  color: #fff !important;
  border-color: #fff !important;
}

/* ── Séparateurs légers entre les chiffres de la bande rouge (comme la charte) */
.entry-content .wp-block-group.has-brand-background-color .wp-block-columns > .wp-block-column + .wp-block-column { position: relative; }
.entry-content .wp-block-group.has-brand-background-color .wp-block-columns > .wp-block-column + .wp-block-column::before {
  content: ""; position: absolute; left: 0; top: 18%; bottom: 18%;
  width: 1px; background: rgba(255, 255, 255, 0.22);
}

/* ── Espace eyebrow → titre uniforme (14px) dans toutes les sections. Certains
   titres sont .fdhs-section__title (marge 0) et d'autres de simples
   wp-block-heading (grand block-gap) : on neutralise et on cale. */
body.fdhs .entry-content .eyebrow-script { margin-bottom: 14px !important; }
body.fdhs .entry-content .eyebrow-script + :is(h1, h2, h3, h4, h5, h6) { margin-top: 0 !important; }

/* ── Mobile — séparateurs verticaux des chiffres clés masqués ──────────────
   Les traits qui séparent les chiffres sont dessinés en ::before sur chaque
   colonne. Empilées sur mobile, les colonnes n'ont plus de voisine à droite :
   le trait devient un artefact vertical flottant. Deux règles les produisent
   (.fdhs-facts et les bandes .has-brand-background-color), les deux sont
   neutralisées ici.
   NB : bloc placé en FIN de feuille à dessein. Les règles d'origine sont en
   (0,5,2) vers la ligne 2646 ; un bloc inséré plus haut aurait perdu l'ordre
   de cascade et n'aurait rien masqué. */
@media (max-width: 781px) {
  body.fdhs .entry-content .fdhs-facts .wp-block-columns > .wp-block-column + .wp-block-column::before,
  .entry-content .wp-block-group.has-brand-background-color .wp-block-columns > .wp-block-column + .wp-block-column::before {
    display: none;
    content: none;
  }
}

/* ── Mobile/tablette — marge latérale des blocs encadrés ───────────────────
   Référence du site : 24px, la valeur de la carte newsletter et des cartes de
   réalisations. La carte CTA beige (.fdhs-cta) et les cartes « Nos actions »
   (.card) touchaient les bords de l'écran.
   Les bandes en alignfull (.fdhs-focus, bande rouge des chiffres) ne sont pas
   concernées : leur pleine largeur est voulue.
   NB : bloc en fin de feuille, comme le précédent, pour ne pas dépendre de
   l'ordre de cascade vis-à-vis des règles de .card et .fdhs-cta plus haut. */
@media (max-width: 781px) {
  body.fdhs .entry-content .fdhs-cta,
  body.fdhs .entry-content .card {
    margin-left: 1.5rem;
    margin-right: 1.5rem;
    max-width: calc(100% - 3rem);
    box-sizing: border-box;
  }
}

/* ── Retrait interne des cartes unifié à 24px ──────────────────────────────
   Relevé avant : contenu carte « Nos actions » 36px, carte administrateur
   22,4px, carte réalisation 20,8px. 24px = la gouttière de référence du site.
   Les badges en pilule ne sont pas concernés : ce sont des calques en
   position:absolute sur l'image, calés sur leur propre repère.
   Le !important sur .card vise un padding posé en style inline par l'éditeur
   (var(--wp--preset--spacing--60)), qu'une règle ordinaire ne peut pas battre. */
body.fdhs .entry-content .card > .wp-block-group {
  padding-left: 1.5rem !important;
  padding-right: 1.5rem !important;
}
body.fdhs .entry-content .fdhs-person {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}
body.fdhs .entry-content .fdhs-real__item h3,
body.fdhs .entry-content .fdhs-real__item p:not(.fdhs-real__cat) {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}
/* Respiration entre la photo et le titre : 12px seulement (gap 6,4 + marge 5,6),
   le titre semblait collé au bas de l'image. */
body.fdhs .entry-content .fdhs-real__item h3 { padding-top: 0.55rem; }

/* ── Chiffres du bloc « Focus » : une seule taille ─────────────────────────
   Trois d'entre eux étaient à 27,2px (règle du thème, 1.7rem) et deux à
   16,3px : « Nouveaux » et « Redistribution » portent une taille forcée en
   style inline, posée depuis l'éditeur. Le !important est donc nécessaire —
   une règle ordinaire ne peut pas battre un style inline.
   Conséquence : la taille de ces blocs ne se règle plus depuis l'éditeur. */
body.fdhs .entry-content .fdhs-focus .fdhs-focus__fig {
  font-size: 1.7rem !important;
}

/* ── Mobile/tablette — gouttière des formulaires ───────────────────────────
   Les formulaires Gravity (Contact, Demande de soutien) sont rendus par
   shortcode dans un conteneur sans padding : libellés, champs et boutons
   touchaient les bords de l'écran. 24px, comme le reste du site. */
@media (max-width: 781px) {
  body.fdhs .fdhs-contact-form {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    box-sizing: border-box;
  }
}

/* ── Carte « Nos coordonnées » (Contact) alignée sur les autres cartes ─────
   Seule carte du site à fond surface avec coins arrondis : elle touchait les
   bords de l'écran et son retrait interne était de 36px au lieu de 24px.
   Le !important vise un padding posé en style inline par l'éditeur
   (var(--wp--preset--spacing--60)). */
body.fdhs .entry-content .wp-block-group.has-surface-background-color.has-background {
  padding-left: 1.5rem !important;
  padding-right: 1.5rem !important;
}
@media (max-width: 781px) {
  body.fdhs .entry-content .wp-block-group.has-surface-background-color.has-background {
    margin-left: 1.5rem;
    margin-right: 1.5rem;
    max-width: calc(100% - 3rem);
    box-sizing: border-box;
  }
}

/* ── Formulaires Gravity — finitions ───────────────────────────────────────
   Gravity a changé le nom de sa classe de pied de page entre deux versions :
   les règles existantes visent `.gform_page_footer` (underscore) alors que le
   markup rend `.gform-page-footer` (tiret). Les boutons d'étape gardaient donc
   le style par défaut du plugin, à angles de 3px. */
body.fdhs .fdhs-contact-form .gform-page-footer .gform-theme-button,
body.fdhs .fdhs-contact-form .gform-page-footer button {
  border-radius: 9999px !important;
  padding: 0.85rem 1.8rem !important;
  font-family: var(--wp--preset--font-family--heading) !important;
  font-weight: 700 !important;
  font-size: 1rem !important;
  height: auto !important;
  border: 2px solid var(--wp--preset--color--brand) !important;
}
/* Rond des boutons radio : en grille, il s'écrasait à 12×20px dès que le
   libellé passait sur deux lignes. Dimensions verrouillées. */
body.fdhs .gform_wrapper .gfield-choice-input {
  width: 20px !important;
  height: 20px !important;
  min-width: 20px;
  flex: 0 0 20px;
  align-self: start;
}
/* Pastilles numérotées des étapes : 32×26px, donc ovales. Forcées en 1:1. */
body.fdhs .gform_wrapper .gf_step_number {
  width: 32px !important;
  height: 32px !important;
  flex: 0 0 32px;
  box-sizing: border-box;
}

/* Premier élément de la carte « Nos coordonnées » : le titre portait une marge
   haute de 32px qui s'ajoutait aux 36px de padding de la carte, soit 68px de
   vide au-dessus. L'espacement est désormais celui de la carte seule. */
body.fdhs .entry-content .wp-block-group.has-surface-background-color.has-background > *:first-child {
  margin-top: 0 !important;
}
