/*
Theme Name: SheCode
Theme URI: https://she-code.org
Author: SheCode
Description: Thème bloc sur mesure de SheCode — Oser le digital. Toutes les pages sont composées de blocs natifs, modifiables dans l'éditeur.
Version: 1.0.13
Requires at least: 6.6
Tested up to: 6.9
Requires PHP: 8.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: shecode
Tags: block-theme, full-site-editing, custom-colors, custom-logo, blog
*/

/* ==========================================================================
   Elementor — remise à zéro des éléments convertis (classe « sc »)
   Placée avant la feuille de la maquette : elle efface les réglages par défaut
   d'Elementor (flex en colonne, marges intérieures de 10 px, gouttières de 20 px,
   largeur 100 %, boutons gris), la maquette décide ensuite. Les éléments ajoutés
   plus tard dans Elementor, sans la classe « sc », gardent ses réglages habituels.
   Spécificités calées sur celles d'Elementor : à égalité, cette feuille passe
   après la sienne, et la feuille propre à chaque page (réglages faits dans
   Elementor) passe après celle-ci (functions.php).
   ========================================================================== */
@property --sc-direction { syntax: "*"; inherits: false; }
@property --sc-grow { syntax: "*"; inherits: false; }
@property --sc-shrink { syntax: "*"; inherits: false; }
@property --sc-basis { syntax: "*"; inherits: false; }

/* --- Conteneurs : de simples blocs, comme les <div> et <section> de la maquette */
:where(.e-con).sc {
  display: block;
  gap: normal;
  flex-wrap: nowrap;
  align-items: normal;
  align-content: normal;
  justify-content: normal;
  width: auto;
  max-width: none;
  min-width: auto;
  margin: 0;
  padding: 0;
  position: static;
  text-align: inherit;
  z-index: auto;
  transition: none;
}
/* flex et flex-direction : imposés par Elementor en (0,2,0), repris ici par ses propres variables,
   alimentées par les déclarations de la maquette (voir scripts/css-elementor.mjs) */
.sc.e-con.e-flex {
  --flex-direction: var(--sc-direction, row);
  --flex-grow: var(--sc-grow, 0);
  --flex-shrink: var(--sc-shrink, 1);
  --flex-basis: var(--sc-basis, auto);
}
/* ::before sert au fond superposé d'Elementor ; la maquette l'utilise pour ses décors */
:where(.e-con).sc::before {
  position: static;
  display: inline;
  top: auto;
  left: auto;
  width: auto;
  height: auto;
  border: 0 none;
  border-radius: 0;
  mix-blend-mode: normal;
  opacity: 1;
  transition: none;
}

/* --- Widgets : l'enveloppe s'efface, le titre, le texte, le bouton ou l'image prend sa place.
       Dans l'éditeur, elle reste une boîte : Elementor y accroche son cadre de sélection. */
:where(.elementor-widget).sc {
  gap: normal;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: normal;
  align-content: normal;
  justify-content: normal;
}
:where(body:not(.elementor-editor-active)) .sc:where(.elementor-widget:not(.sc-boite)),
.sc:where(.elementor-widget-shortcode) > .elementor-shortcode { display: contents; }
:where(.sc) > .elementor-heading-title { line-height: inherit; }
:where(.sc).elementor-widget-image { text-align: inherit; }
.sc:where(.elementor-widget-image) img { display: block; vertical-align: baseline; }
.sc > .elementor-button {
  display: inline;
  padding: 0;
  border-radius: 0;
  background: none;
  color: inherit;
  fill: currentColor;
  font-size: inherit;
  line-height: inherit;
  text-align: inherit;
  transition: none;
}
.sc > .elementor-button .elementor-button-content-wrapper,
.sc > .elementor-button .elementor-button-text { display: contents; }

:root {
  --rose: #ec1683;
  --violet: #6a3391;
  --lavande: #c6abff;
  --orchidee: #ec81f6;
  --encre: #2b2b46;
  --texte: #343434;
  --gris: #6b6b6b;
  --fond: #fbfbfb;
  --fond-doux: #faf9fb;
  --rose-pale: #fde8f3;
  --lavande-pale: #f0ebf4;
  --titre: "Josefin Sans", system-ui, sans-serif;
  --corps: "DM Sans", system-ui, sans-serif;
  --rayon: 16px;
  --ombre: 0 10px 40px rgba(43, 43, 70, .07);
  --gouttiere: 40px;
}

*,
*::before,
*::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--titre);
  color: var(--texte);
  background: #fff;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button,
input,
textarea,
select { font: inherit; }
h1,
h2,
h3,
h4,
p,
ul,
figure,
blockquote { margin: 0; }
ul { padding: 0; list-style: none; }
h1,
h2,
h3 { font-family: var(--titre); font-weight: 700; hyphens: none; text-wrap: balance; }

.enveloppe { width: min(1360px, 100% - 2 * var(--gouttiere)); margin-inline: auto; }
.rose { color: var(--rose); }
.violet { color: var(--violet); }

/* --- Surtitres et titres de section --------------------------------------- */
.surtitre:where(:not(.elementor-widget)),
.surtitre:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) {
  font-family: var(--titre);
  font-size: 22px;
  font-weight: 400;
  line-height: 1;
  text-transform: uppercase;
  letter-spacing: .02em;
  color: var(--rose);
}
.titre-section:where(:not(.elementor-widget)),
.titre-section:where(.elementor-widget-heading) > :where(.elementor-heading-title) {
  font-size: 60px;
  line-height: 1.05;
  letter-spacing: .01em;
  color: var(--encre);
}

/* --- Boutons -------------------------------------------------------------- */
.bouton:where(:not(.elementor-widget)),
.bouton:where(.elementor-widget-button) > .elementor-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 60px;
  padding: 0 26px;
  border: 1.5px solid transparent;
  border-radius: 999px;
  font-family: var(--titre);
  font-size: 18px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: .09em;
  text-transform: uppercase;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color .2s, color .2s, border-color .2s, transform .2s;
}
.bouton:hover:where(:not(.elementor-widget)),
.bouton:hover:where(.elementor-widget-button) > .elementor-button { transform: translateY(-2px); }
.bouton--plein:where(:not(.elementor-widget)),
.bouton--plein:where(.elementor-widget-button) > .elementor-button { background: var(--rose); color: #fff; }
.bouton--plein:hover:where(:not(.elementor-widget)),
.bouton--plein:hover:where(.elementor-widget-button) > .elementor-button { background: #d10f72; }
.bouton--contour:where(:not(.elementor-widget)),
.bouton--contour:where(.elementor-widget-button) > .elementor-button { border-color: var(--violet); color: var(--violet); background: transparent; }
.bouton--contour:hover:where(:not(.elementor-widget)),
.bouton--contour:hover:where(.elementor-widget-button) > .elementor-button { background: var(--violet); color: #fff; }
.bouton--contour-rose:where(:not(.elementor-widget)),
.bouton--contour-rose:where(.elementor-widget-button) > .elementor-button { border-color: var(--rose); color: var(--rose); background: transparent; }
.bouton--contour-rose:hover:where(:not(.elementor-widget)),
.bouton--contour-rose:hover:where(.elementor-widget-button) > .elementor-button { background: var(--rose); color: #fff; }
.bouton--blanc { background: #fff; color: var(--encre); }
.bouton--petit {
  min-height: 62px;
  padding: 0 26px;
  font-family: var(--corps);
  font-size: 14px;
  letter-spacing: .1em;
  color: var(--encre);
}
.bouton--texte:where(:not(.elementor-widget)),
.bouton--texte:where(.elementor-widget-button) > .elementor-button {
  font-weight: 400;
  text-transform: none;
  letter-spacing: .02em;
}

/* ==========================================================================
   En-tête
   ========================================================================== */
/* en-tête fixe : reste en haut de l'écran pendant le défilement */
.entete { background: #fff; position: sticky; top: 0; z-index: 100; }
.entete__barre {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 78px;
  gap: 24px;
}
.logo { display: inline-flex; align-items: center; gap: 7px; }
/* logo complet (symbole et nom « SheCode » dans une seule image) : hauteur fixée, largeur proportionnelle */
.logo img { display: block; width: auto; height: 56px; }
.logo__texte {
  font-family: var(--titre);
  font-size: 34px;
  font-weight: 700;
  letter-spacing: .02em;
  color: var(--violet);
  padding-top: 6px;
}
.logo__texte span { color: var(--rose); }
.menu { display: flex; align-items: center; gap: 25px; margin-left: 110px; margin-right: auto; }
.menu a {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-family: var(--corps);
  font-size: 17px;
  color: var(--encre);
  transition: color .2s;
}
.menu a:hover,
.menu .actif>a { color: var(--rose); }
.menu .chevron { width: 9px; height: 9px; margin-top: 2px; }
/* sélecteur de langue : drapeau de l'autre langue (un seul à la fois ; au clic, la même page dans cette langue) */
.menu .lang-item a { display: flex; align-items: center; } /* en bloc : pas de ligne de texte sous le drapeau */
.menu .lang-item .drapeau { display: block; width: 30px; height: 20px; object-fit: cover; border-radius: 2px; box-shadow: 0 0 0 1px rgba(43, 43, 70, .18); transition: transform .2s, box-shadow .2s; }
.menu .lang-item a:is(:hover, :focus-visible) .drapeau { transform: translateY(-2px); box-shadow: 0 0 0 1px rgba(43, 43, 70, .18), 0 6px 12px -6px rgba(43, 43, 70, .55); }
.entete .bouton:where(:not(.elementor-widget)),
.entete .bouton:where(.elementor-widget-button) > .elementor-button { min-height: 52px; padding: 0 24px; font-family: var(--corps); font-size: 15px; letter-spacing: .06em; }
.burger { display: none; }
.menu>li { position: relative; }
.sous-menu {
  position: absolute;
  left: -18px;
  top: calc(100% + 14px);
  min-width: 210px;
  padding: 12px 0;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 14px 40px rgba(43, 43, 70, .12);
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  transition: opacity .2s, transform .2s, visibility .2s;
}
.sous-menu::before { content: ""; position: absolute; inset: -14px 0 auto; height: 14px; }
.sous-menu a { display: block; padding: 9px 20px; font-size: 16px; }
.menu>li:hover>.sous-menu,
.menu>li:focus-within>.sous-menu { opacity: 1; visibility: visible; transform: none; }
.visuellement-cache {
  position: absolute !important;
  width: 1px; height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

/* ==========================================================================
   Accueil — hero
   ========================================================================== */
.hero {
  position: relative;
  margin-inline: 3px;
  height: 670px;
  border-radius: 24px 24px 0 0;
  background: var(--fond);
  overflow: hidden;
}
.hero .enveloppe { position: relative; height: 100%; }
.hero__texte { position: absolute; left: 5px; top: 66px; width: 660px; }
.hero__titre:where(:not(.elementor-widget)),
.hero__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) {
  font-size: 78px;
  line-height: 72px;
  letter-spacing: .005em;
  color: var(--violet);
  text-wrap: nowrap;
}
.hero__accroche:where(:not(.elementor-widget)),
.hero__accroche:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) {
  margin-top: 38px;
  font-size: 32px;
  font-weight: 500;
  line-height: 34px;
  color: var(--texte);
}
.hero__intro:where(:not(.elementor-widget)),
.hero__intro:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) {
  margin-top: 33px;
  max-width: 640px;
  font-size: 22.5px;
  font-weight: 400;
  line-height: 34px;
  color: var(--texte);
}
.hero__actions { display: flex; gap: 20px; margin-top: 50px; }
.hero__actions .bouton--plein:where(:not(.elementor-widget)),
.hero__actions .bouton--plein:where(.elementor-widget-button) > .elementor-button { width: 193px; }
.hero__actions .bouton--contour:where(:not(.elementor-widget)),
.hero__actions .bouton--contour:where(.elementor-widget-button) > .elementor-button { width: 259px; }
.hero__visuel:where(:not(.elementor-widget)),
.hero__visuel:where(.elementor-widget-image) > img {
  position: absolute;
  bottom: 0;
  right: max(0px, calc(50% - 800px));
  width: min(720px, 50vw);
}

/* --- Bandeau de chiffres -------------------------------------------------- */
.chiffres { background: var(--violet); color: #fff; }
.chiffres__liste {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  width: min(1440px, 100% - 2 * var(--gouttiere));
  margin-inline: auto;
  padding: 58px 0 42px;
}
.chiffre { display: block; text-align: center; }
.chiffre__nombre {
  display: inline-flex;
  align-items: center;
  font-size: 60px;
  font-weight: 700;
  line-height: 1;
}
.chiffre__nombre em {
  font-style: normal;
  margin-right: 2px;
  font-size: 50px;
  color: var(--rose);
  transform: translateY(6px);
}
.chiffre__libelle {
  display: block;
  margin-top: 12px;
  font-size: 19px;
  font-weight: 600;
  line-height: 1;
}

/* ==========================================================================
   Accueil — AFIA
   ========================================================================== */
.afia { padding: 166px 0 132px; }
.afia__grille {
  display: grid;
  grid-template-columns: 730px 1fr;
  gap: 95px;
  align-items: start;
  width: min(1560px, 100% - 2 * var(--gouttiere));
  margin-inline: auto;
  padding-left: 25px;
}
.pilules { position: relative; width: 730px; height: 728px; }
.pilules__forme { position: absolute; border-radius: 999px; }
.pilules__forme--1 { left: 45px; top: 249px; width: 559px; height: 139px; background: var(--orchidee); }
.pilules__forme--2 { left: 145px; top: 408px; width: 544px; height: 145px; background: var(--lavande); }
.pilules__forme--3 { left: 45px; top: 584px; width: 591px; height: 144px; background: var(--violet); }
.pilules__point { position: absolute; border-radius: 50%; }
.pilules__point--1 { left: 645px; top: 336px; width: 30px; height: 30px; background: var(--lavande); }
.pilules__point--2 { left: 677px; top: 381px; width: 19px; height: 19px; background: var(--rose); }
.pilules__point--3 { left: 76px; top: 474px; width: 21px; height: 21px; background: var(--rose); }
.pilules__point--4 { left: 94px; top: 510px; width: 31px; height: 31px; background: var(--violet); }
.pilules__personne:where(:not(.elementor-widget)),
.pilules__personne:where(.elementor-widget-image) > img { position: absolute; left: 0; top: 0; width: 730px; }
.afia__texte { padding-top: 86px; }
.afia__titre:where(:not(.elementor-widget)),
.afia__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 79px; line-height: 72px; color: var(--violet); }
.afia__intro:where(:not(.elementor-widget)),
.afia__intro:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) {
  margin-top: 60px;
  max-width: 680px;
  font-size: 24px;
  font-weight: 300;
  line-height: 34px;
}
.coches:where(:not(.elementor-widget)),
.coches:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { margin-top: 30px; display: grid; gap: 14px; }
.coches li {
  display: flex;
  align-items: center;
  gap: 16px;
  font-size: 32px;
  line-height: 35px;
  color: var(--texte);
}
.coches svg { flex: none; width: 20px; height: 20px; --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
.afia__actions { display: flex; gap: 21px; margin-top: 70px; }
.afia__actions .bouton:where(:not(.elementor-widget)),
.afia__actions .bouton:where(.elementor-widget-button) > .elementor-button { min-height: 63px; font-size: 16px; letter-spacing: .12em; }
.afia__actions .bouton--plein:where(:not(.elementor-widget)),
.afia__actions .bouton--plein:where(.elementor-widget-button) > .elementor-button { width: 319px; }
.afia__actions .bouton--contour:where(:not(.elementor-widget)),
.afia__actions .bouton--contour:where(.elementor-widget-button) > .elementor-button { width: 259px; }

/* ==========================================================================
   Accueil — Qui sommes-nous
   ========================================================================== */
.qui {
  position: relative;
  padding: 91px 0 65px;
  background: linear-gradient(rgba(253, 252, 253, .55), rgba(253, 252, 253, .55)), #fdfcfd url("assets/img/decor-ambition.jpg") center / cover no-repeat;
  overflow: hidden;
}
.qui__grille {
  display: grid;
  grid-template-columns: 746px 351px 376px;
  gap: 0 36px;
  width: min(1545px, 100% - 2 * var(--gouttiere));
  margin-inline: auto;
  padding-left: 0;
}
.qui__texte { padding-top: 17px; padding-right: 30px; }
.qui__titre:where(:not(.elementor-widget)),
.qui__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { margin-top: 30px; font-size: 60px; line-height: 64px; color: var(--encre); }
.onglets__boutons { display: flex; gap: 32px; margin-top: 50px; }
.onglets__bouton:where(:not(.elementor-widget)),
.onglets__bouton:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) {
  padding: 0 0 6px;
  border: 0;
  border-bottom: 1px solid transparent;
  background: none;
  font-family: var(--titre);
  font-size: 23px;
  text-align: center;
  color: var(--encre);
  cursor: pointer;
}
.onglets__bouton.est-actif:where(:not(.elementor-widget)),
.onglets__bouton.est-actif:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { color: var(--rose); border-bottom-color: var(--rose); }
.onglets__panneau { display: none; margin-top: 44px; padding-left: 23px; }
.onglets__panneau.est-actif:where(:not(.elementor-widget)),
.onglets__panneau.est-actif:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { display: block; }
.onglets:not(.onglets--pilules) .onglets__panneau p { max-width: 668px; font-size: 23.6px; line-height: 34px; color: var(--encre); }
.qui__actions { display: flex; flex-wrap: wrap; gap: 20px; margin-top: 66px; }
.qui__actions .bouton:where(:not(.elementor-widget)),
.qui__actions .bouton:where(.elementor-widget-button) > .elementor-button { min-height: 65px; width: 327px; max-width: 100%; }
.qui__actions .bouton--plein:where(:not(.elementor-widget)),
.qui__actions .bouton--plein:where(.elementor-widget-button) > .elementor-button { font-size: 22px; }
.qui__actions .bouton--contour:where(:not(.elementor-widget)),
.qui__actions .bouton--contour:where(.elementor-widget-button) > .elementor-button { font-size: 16px; letter-spacing: .12em; }
.qui__colonne { display: grid; gap: 18px; align-content: start; padding-top: 0; }
.qui__photo { border-radius: var(--rayon); overflow: hidden; }
.qui__photo img { width: 100%; }
.carte-chiffre {
  display: grid;
  grid-template-columns: 57px 1fr;
  grid-template-rows: auto auto;
  align-content: center;
  column-gap: 18px;
  height: 189px;
  padding: 0 38px;
  border-radius: var(--rayon);
  background: var(--rose);
  color: #fff;
}
.carte-chiffre img { width: 57px; }
.carte-chiffre>:first-child { grid-row: span 2; align-self: center; }
.carte-chiffre__nombre { font-size: 58px; font-weight: 700; line-height: 1; }
.carte-chiffre__libelle { margin-top: 10px; font-size: 17px; font-weight: 700; }
.qui__banniere { padding-top: 6px; }
.qui__banniere img { border-radius: var(--rayon); }

/* ==========================================================================
   Accueil — domaines d'action
   ========================================================================== */
.domaines { padding: 182px 0 172px; text-align: center; }
.domaines .titre-section:where(:not(.elementor-widget)),
.domaines .titre-section:where(.elementor-widget-heading) > :where(.elementor-heading-title) { margin-top: 12px; color: #1c1c1c; }
.domaines__grille {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 31px;
  width: min(1543px, 100% - 2 * var(--gouttiere));
  margin: 84px auto 0;
}
.domaines__grille img { width: 100%; border-radius: var(--rayon); box-shadow: 0 6px 24px rgba(236, 22, 131, .06); }

/* ==========================================================================
   Accueil — programmes
   ========================================================================== */
.programmes {
  padding: 71px 0 104px;
  background: linear-gradient(rgba(255, 255, 255, .5), rgba(255, 255, 255, .5)), #fff url("assets/img/decor-lignes.jpg") center / cover no-repeat;
}
.programmes__entete {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  width: min(1507px, 100% - 2 * var(--gouttiere));
  margin-inline: auto;
}
.programmes__entete .titre-section:where(:not(.elementor-widget)),
.programmes__entete .titre-section:where(.elementor-widget-heading) > :where(.elementor-heading-title) { margin-top: 6px; }
.programmes__entete .bouton:where(:not(.elementor-widget)),
.programmes__entete .bouton:where(.elementor-widget-button) > .elementor-button { min-height: 91px; width: 532px; font-size: 32px; }
.programmes__grille {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 36px;
  width: min(1532px, 100% - 2 * var(--gouttiere));
  margin: 110px auto 0;
}
.carte-programme {
  display: flex;
  flex-direction: column;
  padding: 22px 24px 26px;
  border: 1px solid #ececec;
  border-radius: var(--rayon);
  background: #fff;
  box-shadow: var(--ombre); --sc-direction: column; }
.carte-programme--vedette { border-color: var(--violet); background: var(--violet); color: #fff; }
.carte-programme__image { position: relative; overflow: hidden; border-radius: 14px; aspect-ratio: 440 / 334; container-type: inline-size; }
.carte-programme__image img { width: 100%; height: 100%; object-fit: cover; }
.badge-date {
  position: absolute;
  left: 5.5%;
  bottom: 9.5%;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  width: 50%;
  height: 10.5cqw;
  padding: 0 4.5cqw;
  border-radius: 8px;
  background: #fff;
  font-family: var(--corps);
  font-size: 3.4cqw;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--encre);
}
.badge-date svg { width: 4cqw; height: 4cqw; flex: none; --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
.carte-programme__texte { flex-grow: 1; margin-top: 36px; padding-inline: 24px; font-size: 22px; line-height: 34px; color: var(--encre); --sc-grow: 1; }
.carte-programme__texte strong { font-weight: 700; }
.carte-programme--vedette .carte-programme__texte { color: #fff; }
.carte-programme .bouton:where(:not(.elementor-widget)),
.carte-programme .bouton:where(.elementor-widget-button) > .elementor-button { align-self: flex-start; margin: 44px 0 0 24px; }

/* ==========================================================================
   Accueil — témoignages
   ========================================================================== */
.temoignages { padding: 171px 0 66px; }
.temoignages__grille {
  display: grid;
  grid-template-columns: 627px 623px;
  gap: 0 35px;
  justify-content: center;
  width: min(1285px, 100% - 2 * var(--gouttiere));
  margin-inline: auto;
}
@media (min-width: 1400px) { .temoignages__grille { translate: 25px 0; } }
.temoignages__col { display: grid; gap: 34px; align-content: start; }
.temoignages__col--gauche { padding-top: 33px; }
.temoignages__titre:where(:not(.elementor-widget)),
.temoignages__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { margin-top: 10px; font-size: 60px; line-height: 60px; color: var(--encre); }
.temoignage {
  display: flex;
  flex-direction: column;
  padding: 58px 40px 36px;
  border-radius: var(--rayon); --sc-direction: column; }
.temoignage--rose { background: var(--rose-pale); }
.temoignage--lavande { background: var(--lavande-pale); padding: 40px 70px 36px 38px; }
.temoignage--photo { padding: 18px 18px 30px; border: 1px solid #efefef; background: #fff; box-shadow: var(--ombre); }
.temoignage--photo .temoignage__citation:where(:not(.elementor-widget)),
.temoignage--photo .temoignage__citation:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { padding: 50px 50px 0 21px; }
.temoignage--photo .temoignage__auteur { padding-inline: 8px 12px; }
.temoignage__photo { border-radius: var(--rayon); overflow: hidden; }
.temoignage__photo img { width: 100%; aspect-ratio: 587 / 301; object-fit: cover; }
.temoignage__citation:where(:not(.elementor-widget)),
.temoignage__citation:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) {
  font-family: var(--corps);
  font-size: 28px;
  line-height: 40px;
  color: var(--encre);
}
.temoignage__citation--justifie:where(:not(.elementor-widget)),
.temoignage__citation--justifie:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { text-align: justify; }
.temoignage__citation--gris:where(:not(.elementor-widget)),
.temoignage__citation--gris:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { color: #6b6b6b; }
.temoignage__auteur { display: flex; align-items: flex-end; justify-content: space-between; margin-top: 62px; }
.temoignage__nom:where(:not(.elementor-widget)),
.temoignage__nom:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 24px; font-weight: 700; color: var(--encre); }
.temoignage__role:where(:not(.elementor-widget)),
.temoignage__role:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { margin-top: 8px; font-family: var(--corps); font-size: 15px; color: var(--encre); }
.temoignage__guillemets { width: 48px; height: 36px; }

/* ==========================================================================
   Partenaires (bandeau)
   ========================================================================== */
.partenaires { padding: 170px 0 154px; background: var(--fond-doux); text-align: center; }
.partenaires .surtitre:where(:not(.elementor-widget)),
.partenaires .surtitre:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 25px; white-space: pre; }
.partenaires .titre-section:where(:not(.elementor-widget)),
.partenaires .titre-section:where(.elementor-widget-heading) > :where(.elementor-heading-title) { margin-top: 14px; }
.logos {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 42px 60px;
  flex-wrap: wrap;
  margin-top: 70px;
}
.logos__item { display: grid; place-items: center; width: 219px; height: 126px; border-radius: var(--rayon); }
.logos__item--carte { background: #fff; box-shadow: 0 4px 18px rgba(43, 43, 70, .05); }
.logos__item--noir { width: 277px; background: #000; }
.logos__item img { width: auto; height: auto; max-width: 80%; max-height: 100px; }
.logos__item--noir img { max-width: 86%; }
.logos__item--nu img { max-width: 100%; }

/* --- Défilement continu des logos (accueil).
       Le script ajoute une copie de la liste (masquée aux lecteurs d'écran) et pose .est-anime :
       chaque copie glisse exactement de sa propre largeur plus l'écart, la seconde prend donc le relais
       au pixel près là où la première se termine, sans vide ni saut. Sans script, les logos restent
       affichés, centrés, sur plusieurs lignes. */
.logos-defilant { --ecart: 60px; margin-top: 70px; }
.logos-defilant .logos { margin-top: 0; }
.logos-defilant.est-anime {
  display: flex;
  gap: var(--ecart);
  margin-block: 50px -20px;
  padding-block: 20px;
  overflow: hidden;
}
.logos-defilant.est-anime .logos {
  flex: none;
  flex-wrap: nowrap;
  gap: var(--ecart);
  min-width: 100%;
  justify-content: space-around;
  animation: defiler-logos var(--duree, 45s) linear infinite; --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
.logos-defilant.est-anime:hover .logos,
.logos-defilant.est-anime:focus-within .logos { animation-play-state: paused; }
.logos-defilant.est-anime .logos__item { flex: none; --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
@keyframes defiler-logos { to { transform: translateX(calc(-100% - var(--ecart))); } }
.partenaires .bouton:where(:not(.elementor-widget)),
.partenaires .bouton:where(.elementor-widget-button) > .elementor-button { margin-top: 128px; min-height: 67px; width: 320px; font-size: 25px; font-weight: 400; letter-spacing: .02em; }

/* ==========================================================================
   Blog (bandeau)
   ========================================================================== */
.blog-une { padding: 132px 0 166px; }
.blog-une__entete {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: min(1433px, 100% - 2 * var(--gouttiere));
  margin-inline: auto;
}
.blog-une__entete .surtitre:where(:not(.elementor-widget)),
.blog-une__entete .surtitre:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-family: var(--corps); font-size: 18px; text-transform: none; letter-spacing: 0; }

.blog-une__entete .titre-section:where(:not(.elementor-widget)),
.blog-une__entete .titre-section:where(.elementor-widget-heading) > :where(.elementor-heading-title) { margin-top: 14px; }
.blog-une__entete .bouton:where(:not(.elementor-widget)),
.blog-une__entete .bouton:where(.elementor-widget-button) > .elementor-button { min-height: 67px; padding: 0 28px; font-size: 25px; font-weight: 400; letter-spacing: .02em; }
.cartes-blog {
  display: grid;
  grid-template-columns: repeat(3, 410px);
  gap: 30px;
  justify-content: center;
  margin-top: 118px;
}
.carte-blog {
  display: flex;
  flex-direction: column;
  border: 1px solid #e6e6e6;
  border-radius: var(--rayon);
  overflow: hidden;
  background: #fff;
  box-shadow: var(--ombre); --sc-direction: column; }
.carte-blog img { width: 100%; aspect-ratio: 410 / 261; object-fit: cover; }
.carte-blog__corps { display: flex; flex-direction: column; flex: 1; padding: 12px 40px 26px; --sc-direction: column; --sc-grow: 1; --sc-shrink: 1; --sc-basis: 0%; }
/* boutons des cartes alignés d'une carte à l'autre : l'élément avant le bouton (l'extrait) prend la place libre */
.carte-blog__corps>:nth-last-child(2) { flex-grow: 1; --sc-grow: 1; }
.carte-blog h3 { font-size: 21px; line-height: 34px; color: var(--encre); letter-spacing: .01em; }
.carte-blog p { margin-top: 10px; font-family: var(--corps); font-size: 16px; line-height: 34px; color: var(--gris); }
.carte-blog .bouton:where(:not(.elementor-widget)),
.carte-blog .bouton:where(.elementor-widget-button) > .elementor-button {
  align-self: flex-start;
  min-height: 60px;
  margin-top: 40px;
  padding: 0 24px;
  font-family: var(--corps);
  font-size: 13px;
  letter-spacing: .1em;
  color: var(--encre);
}
.carte-blog .bouton--plein:where(:not(.elementor-widget)),
.carte-blog .bouton--plein:where(.elementor-widget-button) > .elementor-button { color: #fff; }
.carte-blog .bouton svg { width: 14px; height: 14px; }

/* ==========================================================================
   Newsletter
   ========================================================================== */
.newsletter {
  position: relative;
  padding: 135px 24px 142px;
  border-radius: 20px 20px 0 0;
  background: linear-gradient(rgba(106, 51, 145, .78), rgba(106, 51, 145, .78)), url("assets/img/newsletter-fond.jpg") center 30% / cover no-repeat;
  color: #fff;
  text-align: center;
}
.newsletter h2 { font-size: 76px; line-height: 72px; letter-spacing: .02em; }
.newsletter p { max-width: 800px; margin: 18px auto 0; font-size: 23px; line-height: 34px; }
.formulaire-inscription { position: relative; display: flex; justify-content: center; margin-top: 56px; }
.formulaire-inscription__champ {
  display: flex;
  align-items: center;
  gap: 16px;
  width: 400px;
  height: 60px;
  padding: 0 70px 0 16px;
  border-radius: 999px 0 0 999px;
  background: #fff;
  color: var(--violet);
}
.formulaire-inscription__champ svg { width: 26px; height: 26px; flex: none; --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
.formulaire-inscription__champ input {
  width: 100%;
  border: 0;
  outline: 0;
  font-family: var(--titre);
  font-size: 23px;
  color: var(--texte);
  background: transparent;
}
.formulaire-inscription__champ input::placeholder { color: #b9b9b9; }
.formulaire-inscription .bouton:where(:not(.elementor-widget)),
.formulaire-inscription .bouton:where(.elementor-widget-button) > .elementor-button {
  min-height: 62px;
  width: 280px;
  margin-left: -58px;
  font-size: 30px;
  font-weight: 400;
  letter-spacing: .02em;
  text-transform: none;
}

/* ==========================================================================
   Pied de page
   ========================================================================== */
.pied {
  position: relative;
  padding: 100px 0 40px;
  background:
    radial-gradient(420px 380px at 0% 100%, rgba(236, 22, 131, .16), transparent 70%),
    radial-gradient(520px 460px at 100% 55%, rgba(106, 51, 145, .12), transparent 70%),
    #fff;
  overflow: hidden;
}
.pied__grille {
  display: grid;
  grid-template-columns: 506px 261px 240px auto;
  width: min(1290px, 100% - 2 * var(--gouttiere));
  margin-inline: auto;
}
.pied__apropos .logo img { width: auto; height: 64px; }
.pied__apropos p { margin-top: 18px; max-width: 380px; font-size: 24px; line-height: 34px; color: var(--encre); }
.reseaux { display: flex; gap: 14px; margin-top: 44px; }
.reseaux a { display: grid; place-items: center; width: 22px; height: 22px; color: var(--encre); }
.reseaux svg { width: 15px; height: 15px; }
.pied h4 { margin-top: 12px; font-size: 21px; font-weight: 700; color: var(--encre); }
.pied__liens:where(:not(.elementor-widget)),
.pied__liens:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { margin-top: 32px; display: grid; gap: 16px; }
.pied__liens a {
  display: flex;
  align-items: center;
  gap: 12px;
  padding-left: 8px;
  font-family: var(--corps);
  font-size: 17px;
  line-height: 33px;
  color: var(--encre);
}
.pied__liens a::before { content: ""; width: 4px; height: 4px; border-radius: 50%; background: currentColor; }
.pied__liens a:hover { color: var(--rose); }
.pied__contact:where(:not(.elementor-widget)),
.pied__contact:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { margin-top: 40px; display: grid; gap: 30px; }
.pied__contact a { display: flex; align-items: center; gap: 12px; font-size: 18px; font-weight: 700; color: var(--encre); }
.pied__contact svg { width: 18px; height: 18px; color: var(--rose); flex: none; --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
.pied__bas {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: min(1290px, 100% - 2 * var(--gouttiere));
  margin: 139px auto 0;
  font-family: var(--corps);
  font-size: 17px;
  color: var(--encre);
}
.pied__legal:where(:not(.elementor-widget)),
.pied__legal:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { display: flex; gap: 18px; }
.pied__legal a:hover { color: var(--rose); }


/* ==========================================================================
   Trait manuscrit sous un mot (<mark class="trait">)
   ========================================================================== */
mark.trait {
  position: relative;
  display: inline-block;
  background: none;
  color: inherit;
}
mark.trait::after {
  content: "";
  position: absolute;
  left: -2%;
  bottom: -.42em;
  width: 104%;
  height: .38em;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 280 22' preserveAspectRatio='none'%3E%3Cpath d='M4 14C80 6 190 4 276 12' fill='none' stroke='%23ec1683' stroke-width='4' stroke-linecap='round'/%3E%3Cpath d='M2 19C90 12 200 11 270 17' fill='none' stroke='%23ec1683' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
}
.trait--violet::after,
.trait-violet mark.trait::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 280 22' preserveAspectRatio='none'%3E%3Cpath d='M4 14C80 6 190 4 276 12' fill='none' stroke='%236a3391' stroke-width='4' stroke-linecap='round'/%3E%3Cpath d='M2 19C90 12 200 11 270 17' fill='none' stroke='%236a3391' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
}
.trait-decale mark.trait::after { left: 36%; width: 66%; bottom: -28px; height: 22px; }
.rose mark.trait,
mark.trait.rose { color: var(--rose); }

/* ==========================================================================
   Pages internes — bandeau d'en-tête
   ========================================================================== */
.bandeau-page {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 555px;
  padding: 60px 24px 64px;
  overflow: hidden;
  background: linear-gradient(rgba(88, 83, 106, .84), rgba(88, 83, 106, .84)), #58536a url("assets/img/bandeau-eleves.jpg") center 38% / cover no-repeat;
  color: #fff;
  text-align: center; --sc-direction: column; }
.bandeau-page h1 { font-size: 60px; line-height: 1.1; letter-spacing: .01em; }
.fil:where(:not(.elementor-widget)),
.fil:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: 14px;
  font-family: var(--corps);
  font-size: 16px;
}
.fil a:hover { color: var(--rose); }
.fil__sep { color: var(--rose); font-size: 20px; line-height: 1; transform: translateY(-1px); }
.bandeau-page__intro:where(:not(.elementor-widget)),
.bandeau-page__intro:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) {
  max-width: 1250px;
  margin-top: 24px;
  font-size: 24px;
  line-height: 34px;
}
.bandeau-page__deco { position: absolute; pointer-events: none; }
.bandeau-page__deco--gribouillis { right: 5.5%; top: 52%; width: 130px; opacity: .6; }
.page-article .bandeau-page__deco--gribouillis { top: auto; bottom: -10px; right: 22%; }
.bandeau-page__deco--points { left: 0; top: 70px; width: 170px; opacity: .9; }
.bandeau-page__deco--anneau { left: 5%; top: 160px; width: 110px; }
.bandeau-page__deco--coeur { left: 15%; top: 50%; width: 84px; opacity: .75; }
.bandeau-page--chiffres { min-height: 707px; padding-bottom: 130px; }
.page-contact .bandeau-page { min-height: 488px; }
.page-article .bandeau-page { min-height: 572px; }

/* --- Fonds décoratifs partagés -------------------------------------------- */
.fond-lignes { background: linear-gradient(rgba(255, 255, 255, .45), rgba(255, 255, 255, .45)), #fff url("assets/img/decor-lignes.jpg") center / cover no-repeat; }
.fond-halo {
  background:
    radial-gradient(640px 640px at -4% 30%, rgba(236, 22, 131, .13), transparent 70%),
    radial-gradient(600px 600px at 104% 60%, rgba(106, 51, 145, .10), transparent 70%),
    #fff;
}

/* ==========================================================================
   Programmes
   ========================================================================== */
.afia--page { padding: 110px 0 146px; }
.catalogue { padding: 0 0 150px; text-align: center; }
.catalogue .surtitre:where(:not(.elementor-widget)),
.catalogue .surtitre:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-family: var(--corps); font-size: 15px; letter-spacing: .03em; }
.catalogue h2 { margin-top: 14px; font-size: 50px; line-height: 1.1; color: #141414; }
.catalogue__intro:where(:not(.elementor-widget)),
.catalogue__intro:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { max-width: 1320px; margin: 30px auto 0; padding-inline: 24px; font-size: 24px; line-height: 34px; color: #141414; }
.catalogue__grille {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px 30px;
  width: min(1290px, 100% - 2 * var(--gouttiere));
  margin: 60px auto 0;
  text-align: left;
}
.carte-prog {
  display: flex;
  flex-direction: column;
  padding: 18px 18px 28px;
  border: 1px solid #efefef;
  border-radius: var(--rayon);
  background: #fff;
  box-shadow: 0 16px 40px rgba(43, 43, 70, .06); --sc-direction: column; }
.carte-prog__image { position: relative; overflow: hidden; border-radius: 14px; aspect-ratio: 370 / 206; container-type: inline-size; }
.carte-prog__image img { width: 100%; height: 100%; object-fit: cover; }
.carte-prog .badge-date { left: 5%; bottom: 8%; width: auto; height: 10cqw; padding: 0 4cqw; font-size: 3.4cqw; }
.carte-prog h3 { margin: 26px 0 0; padding-inline: 2px; font-size: 21px; line-height: 1.3; color: #141414; }
.carte-prog p { margin-top: 12px; padding-inline: 2px; font-family: var(--corps); font-size: 16px; line-height: 34px; color: var(--gris); }
.carte-prog__lieu { display: flex; align-items: center; gap: 8px; }
.carte-prog__lieu svg { width: 15px; height: 15px; color: var(--violet); flex: none; --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
.carte-prog .bouton:where(:not(.elementor-widget)),
.carte-prog .bouton:where(.elementor-widget-button) > .elementor-button {
  align-self: flex-start;
  min-height: 60px;
  margin-top: 26px;
  padding: 0 24px;
  font-family: var(--corps);
  font-size: 14px;
  letter-spacing: .1em;
  color: var(--encre);
}
.carte-prog .bouton:hover:where(:not(.elementor-widget)),
.carte-prog .bouton:hover:where(.elementor-widget-button) > .elementor-button { color: #fff; }

/* ==========================================================================
   Notre impact
   ========================================================================== */
.chiffres--carte {
  position: relative;
  z-index: 2;
  width: min(1556px, 100% - 2 * var(--gouttiere));
  margin: -59px auto 0;
  border-radius: 20px;
}
.chiffres--carte .chiffres__liste { width: 100%; padding: 58px 60px 50px; }
.bloc-image {
  display: grid;
  grid-template-columns: 550px 651px;
  gap: 78px;
  align-items: center;
  justify-content: center;
  padding: 126px 0 105px;
}
.bloc-image--inverse { grid-template-columns: 628px 549px; gap: 116px; }
.bloc-image--inverse .cadre { order: 2; }
.bloc-image h2 { font-size: 50px; line-height: 1.16; color: #111; letter-spacing: .01em; }
.bloc-image p { margin-top: 56px; font-size: 22.5px; line-height: 34px; text-align: justify; color: var(--encre); }
.cadre { padding: 24px 38px 24px 20px; border-radius: 20px; background: #efe9f5; }
.cadre__photo { overflow: hidden; padding: 0 20px 6px; border-radius: 16px; background: linear-gradient(#fff 45%, var(--rose)); }
.cadre__photo img { width: 100%; aspect-ratio: 315 / 390; object-fit: cover; }
.cadre--gris { background: #e9e9eb; }
.cadre--gris .cadre__photo,
.cadre--violet .cadre__photo { background: linear-gradient(#fff 45%, var(--violet)); }
.cadre--violet { background: rgba(255, 255, 255, .14); }
.bande-violette { background: var(--violet); color: #fff; }
.bande-violette h2,
.bande-violette p { color: #fff; }
.bande-violette .bloc-image { padding: 96px 0; }
.bande-violette .cadre__photo img { aspect-ratio: 432 / 510; }
.mentors {
  position: relative;
  padding: 100px 0;
  background: linear-gradient(rgba(236, 22, 131, .16), rgba(236, 22, 131, .16)), url("assets/img/communaute-shecode.jpg") center 40% / cover no-repeat;
}
.mentors__grille { display: grid; grid-template-columns: repeat(2, 1fr); gap: 34px; width: min(1490px, 100% - 2 * var(--gouttiere)); margin-inline: auto; }
.carte-mentors { padding: 110px 70px 110px; border: 1px solid var(--rose); border-radius: 20px; background: #fff; }
.carte-mentors--violet { border-color: var(--violet); }
.carte-mentors h2 { font-size: 48px; line-height: 1.1; color: var(--rose); letter-spacing: .02em; }
.carte-mentors--violet h2 { color: var(--violet); }
.carte-mentors p { margin-top: 58px; font-size: 24px; line-height: 34px; text-align: justify; color: var(--encre); }
.villes { padding: 120px 0 110px; }
.villes__grille { display: grid; grid-template-columns: 500px 620px; gap: 150px; align-items: center; justify-content: center; }
.villes__carte img { width: 443px; margin-left: 30px; }
.villes h2 { font-size: 50px; line-height: 1.2; text-transform: uppercase; color: #111; }
.villes h2 mark { text-transform: none; }
.villes__liste:where(:not(.elementor-widget)),
.villes__liste:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { display: grid; grid-template-columns: 190px 190px; gap: 4px 0; margin-top: 40px; }
.villes__liste li,
.puces li { position: relative; padding-left: 22px; font-size: 22px; line-height: 34px; color: var(--encre); }
.villes__liste li::before,
.puces li::before { content: "•"; position: absolute; left: 4px; }
.villes p { margin-top: 44px; font-size: 22px; line-height: 34px; color: var(--encre); }
.neuf { padding: 90px 0 64px; }
.neuf__grille { display: grid; grid-template-columns: 720px 549px; gap: 100px; align-items: start; justify-content: center; }
.neuf h2 { font-size: 50px; color: var(--rose); padding-left: 0; }
.neuf__listes { display: grid; grid-template-columns: 1fr 1fr; gap: 0 40px; margin-top: 60px; padding-left: 30px; }
.neuf__listes li { font-size: 33px; line-height: 34px; }
.neuf__listes li+li { margin-top: 0; }
.affirmations { padding: 150px 0 140px; background: #fdf7fb; }
.affirmations__grille { display: grid; grid-template-columns: repeat(3, 1fr); gap: 150px 64px; width: min(1470px, 100% - 2 * var(--gouttiere)); margin-inline: auto; }
.affirmations p { position: relative; padding-left: 26px; font-size: 32px; line-height: 34px; color: var(--encre); }
.affirmations p::before { content: ""; position: absolute; left: 0; top: 4px; width: 17px; height: 17px; border-radius: 50%; background: var(--rose); }
.ambition {
  width: min(1900px, 100%);
  margin: 0 auto;
  padding: 120px 24px 150px;
  border-radius: 16px;
  background: linear-gradient(rgba(255, 255, 255, .2), rgba(255, 255, 255, .2)), #faf7fa url("assets/img/decor-ambition.jpg") center / cover no-repeat;
  text-align: center;
}
.ambition h2 { display: inline-flex; align-items: center; gap: 38px; font-size: 76px; color: var(--rose); }
.ambition h2::before { content: ""; width: 60px; height: 60px; border: 12px solid #f39ccb; border-radius: 50%; box-shadow: 0 0 0 1px #ec1683 inset; }
.ambition p { max-width: 1180px; margin: 30px auto 0; font-size: 28px; line-height: 34px; text-align: justify; color: var(--encre); }
.ambition__actions { display: flex; justify-content: center; gap: 24px; margin-top: 70px; }
.ambition__actions .bouton:where(:not(.elementor-widget)),
.ambition__actions .bouton:where(.elementor-widget-button) > .elementor-button { min-height: 65px; width: 320px; font-size: 16px; letter-spacing: .12em; }
.ambition__actions .bouton--contour:where(:not(.elementor-widget)),
.ambition__actions .bouton--contour:where(.elementor-widget-button) > .elementor-button { width: 260px; }
.page-impact .pied { margin-top: 90px; }

/* ==========================================================================
   Partenaires
   ========================================================================== */
.confiance { padding: 150px 0 110px; text-align: center; }
.confiance .surtitre:where(:not(.elementor-widget)),
.confiance .surtitre:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 25px; white-space: pre; }
.confiance .titre-section:where(:not(.elementor-widget)),
.confiance .titre-section:where(.elementor-widget-heading) > :where(.elementor-heading-title) { margin-top: 14px; }
/* Page Partenaires : grille de 4 logos par ligne */
.logos--page {
  display: grid;
  grid-template-columns: repeat(4, 240px);
  justify-content: center;
  justify-items: center;
  align-items: center;
  gap: 40px 48px;
  margin-top: 90px;
}
.logos--page .logos__item { width: 230px; height: 140px; }
.logos--page .logos__item--carte { width: 219px; height: 126px; background: #fff; box-shadow: 0 10px 34px rgba(43, 43, 70, .07); }
.logos--page .logos__item img { max-width: 76%; max-height: 98px; }
.confiance .bouton:where(:not(.elementor-widget)),
.confiance .bouton:where(.elementor-widget-button) > .elementor-button { margin-top: 110px; min-height: 80px; width: 358px; font-size: 28px; font-weight: 400; letter-spacing: .03em; }
.appel { padding: 200px 24px 190px; text-align: center; }
.appel h2 { font-size: 60px; color: var(--rose); letter-spacing: .02em; }
.appel p { max-width: 1060px; margin: 40px auto 0; font-size: 36px; line-height: 50px; color: var(--encre); }
.appel p strong { display: block; margin-top: 4px; font-weight: 700; }
.appel .bouton:where(:not(.elementor-widget)),
.appel .bouton:where(.elementor-widget-button) > .elementor-button { margin-top: 36px; min-height: 60px; padding: 0 30px; font-family: var(--corps); font-size: 15px; letter-spacing: .06em; }

/* ==========================================================================
   Nous soutenir
   ========================================================================== */
.facons { padding: 120px 0 60px; }
.facons__entete { text-align: center; }
.facons__entete h2 { font-size: 70px; line-height: 64px; color: var(--encre); letter-spacing: .01em; }
.facons__entete p { max-width: 1060px; margin: 26px auto 0; font-size: 23px; line-height: 34px; color: var(--encre); }
.facons__grille {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  width: min(1440px, 100% - 2 * var(--gouttiere));
  margin: 60px auto 0;
}
.facon { display: flex; flex-direction: column; padding: 60px 44px 44px; border: 1px solid var(--encre); border-radius: var(--rayon); background: #fff; --sc-direction: column; }
.facon--rose { border-color: #f58ac1; }
.facon--violet { border-color: var(--violet); }
.facon h3 { font-size: 32px; font-weight: 400; color: var(--encre); }
.facon--rose h3 { color: var(--rose); }
.facon--violet h3 { color: var(--violet); }
.facon p { margin-top: 26px; font-family: var(--corps); font-size: 16.5px; line-height: 34px; color: var(--encre); }
.facon .bouton:where(:not(.elementor-widget)),
.facon .bouton:where(.elementor-widget-button) > .elementor-button { align-self: flex-start; min-height: 66px; margin-top: auto; padding: 0 40px; font-family: var(--corps); font-size: 14px; letter-spacing: .1em; }
.facon :is(p, div:where(.elementor-widget-text-editor))+.bouton:where(:not(.elementor-widget)),
.facon :is(p, div:where(.elementor-widget-text-editor))+.bouton:where(.elementor-widget-button) > .elementor-button { margin-top: 56px; }
.bouton--encre:where(:not(.elementor-widget)),
.bouton--encre:where(.elementor-widget-button) > .elementor-button { background: var(--encre); color: #fff; }
.bouton--violet:where(:not(.elementor-widget)),
.bouton--violet:where(.elementor-widget-button) > .elementor-button { background: var(--violet); color: #fff; }
.facons__grille--bas { grid-template-columns: 465px 1fr; gap: 55px; margin-top: 48px; }
.idee {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  padding: 60px 88px;
  border-radius: var(--rayon);
  background: #fbe8f3 url("assets/img/decor-idee.jpg") center / cover no-repeat; --sc-direction: column; }
.idee h3 { font-size: 40px; color: var(--encre); letter-spacing: .02em; }
.idee p { margin-top: 12px; font-size: 24px; color: var(--encre); }
.idee .bouton:where(:not(.elementor-widget)),
.idee .bouton:where(.elementor-widget-button) > .elementor-button { margin-top: 44px; min-height: 66px; padding: 0 40px; background: #fff; color: var(--rose); font-size: 30px; font-weight: 400; letter-spacing: .02em; text-transform: none; }
.dons { padding: 200px 24px 170px; text-align: center; }
.dons h2 { font-size: 60px; color: var(--rose); letter-spacing: .02em; }
.dons p { margin-top: 30px; font-size: 36px; line-height: 50px; color: var(--encre); }
.dons p strong { display: block; font-weight: 700; }
.dons .bouton:where(:not(.elementor-widget)),
.dons .bouton:where(.elementor-widget-button) > .elementor-button { margin-top: 30px; min-height: 60px; padding: 0 30px; font-family: var(--corps); font-size: 15px; letter-spacing: .06em; }
.bientot .bouton:where(:not(.elementor-widget)),
.bientot .bouton:where(.elementor-widget-button) > .elementor-button { min-height: 56px; font-family: var(--corps); font-size: 14px; letter-spacing: .1em; }

/* ==========================================================================
   Blog — liste, article et barre latérale
   ========================================================================== */
.blog-mise { display: grid; grid-template-columns: 850px 411px; gap: 69px; justify-content: center; padding: 100px 0 130px; }
.blog-mise>* { min-width: 0; }
.lateral { display: grid; gap: 30px; align-content: start; align-self: start; }
.widget { padding: 40px 30px; border-radius: 20px; background: #f1efec; box-shadow: 0 20px 40px rgba(43, 43, 70, .05); }
.widget h3 { padding-bottom: 22px; border-bottom: 1px solid #dcd8d2; font-size: 21px; color: var(--encre); letter-spacing: .02em; }
.widget--recherche { background: var(--rose); padding: 36px 30px 34px; }
.widget--recherche h3 { font-size: 32px; font-weight: 400; color: #fff; border-color: rgba(255, 255, 255, .7); padding-bottom: 18px; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.recherche .wp-block-search__inside-wrapper { display: block; }
.recherche .wp-block-search__button.has-icon { line-height: 0; cursor: pointer; font-weight: 400; letter-spacing: normal; text-transform: none; }
.article__pied { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 20px; margin-top: 40px; padding: 30px 0 22px; border-top: 1px solid #e5e5e5; border-bottom: 1px solid #e5e5e5; }
.commentaires { margin-top: 30px; }
.article__corps { display: flow-root; }
.formulaire-commentaire :is(input, textarea) { display: block; }
.formulaire-commentaire input[type="checkbox"] { display: inline-block; }
.meta>* { display: block; }
.meta>*::before {
  content: "";
  display: inline-block;
  width: 15px;
  height: 15px;
  margin-right: 8px;
  vertical-align: -2px;
  background: var(--rose);
  -webkit-mask: var(--icone) center / contain no-repeat;
  mask: var(--icone) center / contain no-repeat;
}
.wp-block-read-more { display: inline-flex; width: fit-content; }
.a-fleche::after,
.wp-block-button.a-fleche::after {
  content: "";
  width: 12px;
  height: 12px;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M4 2l4 4-4 4' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%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 12 12'%3E%3Cpath d='M4 2l4 4-4 4' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
}
.liste-billets { margin: 0; padding: 0; list-style: none; }
.liste-billets>li+li { margin-top: 80px; }
.billet .wp-block-post-featured-image { overflow: hidden; border-radius: var(--rayon); }
.billet .wp-block-post-featured-image img { width: 100%; aspect-ratio: 850 / 430; object-fit: cover; }
.billet .wp-block-post-title { margin-top: 14px; font-size: 26px; line-height: 1.4; color: var(--encre); letter-spacing: .02em; }
.billet .wp-block-post-excerpt__excerpt { margin: 20px 0 0; font-family: var(--corps); font-size: 16px; line-height: 34px; color: var(--gris); }
.billet .wp-block-read-more {
  align-self: flex-start;
  min-height: 60px;
  margin-top: 40px;
  padding: 0 30px;
  font-family: var(--corps);
  font-size: 14px;
  letter-spacing: .1em;
}
.meta { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-top: 26px; font-family: var(--corps); font-size: 16px; color: var(--gris); }
.meta__date::before { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 4h2V2h2v2h6V2h2v2h2a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 6v9h14v-9z'/%3E%3C/svg%3E"); }
.meta__categorie::before { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M2 5h8l2 2h10v12H2z'/%3E%3C/svg%3E"); }
.meta a:hover { color: var(--rose); }
.pagination.wp-block-query-pagination { gap: 8px; margin-top: 80px; }
.pagination .page-numbers,
.pagination .wp-block-query-pagination-previous,
.pagination .wp-block-query-pagination-next {
  display: inline-grid;
  place-items: center;
  width: 60px;
  height: 60px;
  margin: 0;
  border: 1px solid #e3e3e3;
  border-radius: 50%;
  font-size: 22px;
  font-weight: 700;
  color: var(--encre);
}
.pagination .wp-block-query-pagination-numbers { display: flex; gap: 8px; }
.pagination .page-numbers.current { border-color: var(--rose); }
.pagination a:hover { border-color: var(--rose); color: var(--rose); }
.pagination .wp-block-query-pagination-previous-arrow,
.pagination .wp-block-query-pagination-next-arrow { margin: 0; }

.recherche .wp-block-search__inside-wrapper { position: relative; margin-top: 34px; padding: 0; border: 0; }
.recherche .wp-block-search__input { width: 100%; height: 66px; padding: 0 60px 0 20px; border: 0; border-radius: 999px; font-family: var(--corps); font-size: 16px; color: var(--encre); }
.recherche .wp-block-search__button { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); margin: 0; padding: 6px; border: 0; background: none; color: var(--encre); }
.recherche .wp-block-search__button svg { width: 24px; height: 24px; min-width: 24px; fill: currentColor; }
.categories.wp-block-categories-list { margin: 12px 0 0; padding: 0; }
.categories .cat-item { display: flex; justify-content: space-between; padding: 14px 0; font-family: var(--corps); font-size: 16px; color: var(--encre); }
.categories a:hover { color: var(--rose); }
.populaires.wp-block-latest-posts { display: grid; gap: 30px; margin: 26px 0 0; padding: 0; }
.populaires.wp-block-latest-posts li {
  display: grid;
  grid-template-columns: 80px 1fr;
  grid-template-areas: "image date" "image titre";
  column-gap: 16px;
  align-content: start;
  margin: 0;
}
.populaires .wp-block-latest-posts__featured-image { grid-area: image; margin: 0; }
.populaires .wp-block-latest-posts__featured-image img { width: 80px; height: 80px; object-fit: cover; border-radius: 10px; }
.populaires .wp-block-latest-posts__post-date { grid-area: date; display: flex; align-items: center; gap: 8px; font-family: var(--corps); font-size: 16px; color: var(--gris); }
.populaires .wp-block-latest-posts__post-date::before { content: ""; width: 13px; height: 13px; background: var(--rose); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 4h2V2h2v2h6V2h2v2h2a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 6v9h14v-9z'/%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 d='M5 4h2V2h2v2h6V2h2v2h2a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 6v9h14v-9z'/%3E%3C/svg%3E") center / contain no-repeat; }
.populaires .wp-block-latest-posts__post-title { grid-area: titre; margin-top: 6px; font-size: 19px; font-weight: 700; line-height: 1.35; color: var(--encre); }
.populaires .wp-block-latest-posts__post-title:hover { color: var(--rose); }
.etiquettes.wp-block-tag-cloud { display: flex; flex-wrap: wrap; gap: 8px 12px; margin-top: 26px; }
.etiquettes.wp-block-tag-cloud a { margin: 0; padding: 8px 14px; border-radius: 999px; background: #fff; font-family: var(--corps); font-size: 16px !important; color: var(--gris); }
.etiquettes.wp-block-tag-cloud a:hover { color: var(--rose); }

.fil .wp-block-post-title { margin: 0; font: inherit; }
.fil>p,
.fil>:where(.elementor-widget-text-editor) > p { display: flex; align-items: center; gap: 14px; }
.fil.wp-block-group:where(:not(.elementor-widget)),
.fil.wp-block-group:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { display: flex; align-items: center; gap: 14px; margin-top: 14px; font-family: var(--corps); font-size: 16px; }
.bandeau-page__intro .wp-block-post-excerpt__excerpt { margin: 0; }
.article .wp-block-post-featured-image { overflow: hidden; border-radius: var(--rayon); }
.article .wp-block-post-featured-image img { width: 100%; aspect-ratio: 850 / 567; object-fit: cover; }
.article .article__titre { margin-top: 14px; font-size: 56px; line-height: 1.12; color: #333; letter-spacing: .01em; }
.article__corps>p,
.article__corps>:where(.elementor-widget-text-editor) > p { margin-top: 20px; font-family: var(--corps); font-size: 16px; line-height: 34px; color: var(--gris); }
.article__corps>h3,
.article__corps>:where(.elementor-widget-heading) > h3 { margin-top: 40px; font-size: 28px; color: var(--encre); }
.article__corps ul { margin-top: 20px; padding-left: 1.2em; list-style: disc; font-family: var(--corps); font-size: 16px; line-height: 34px; color: var(--gris); }
.citation-violette.wp-block-quote {
  position: relative;
  margin: 50px 0 40px;
  padding: 40px 30px 36px;
  border: 0;
  border-radius: 20px;
  background: var(--violet);
  color: #fff;
}
.citation-violette.wp-block-quote p { margin: 0; font-family: var(--corps); font-size: 16px; line-height: 34px; color: #fff; }
.citation-violette.wp-block-quote cite {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 26px;
  font-family: var(--titre);
  font-size: 16px;
  font-style: normal;
  font-weight: 700;
}
.citation-violette.wp-block-quote cite::before { content: ""; width: 30px; height: 2px; background: var(--rose); }
.citation-violette.wp-block-quote cite::after {
  content: "";
  margin-left: auto;
  width: 30px;
  height: 24px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 36'%3E%3Cpath fill='%23ec1683' d='M2 0h18v19c0 9-5 15-13 17l-2-6c4-1 6-4 6-8H2zM28 0h18v19c0 9-5 15-13 17l-2-6c4-1 6-4 6-8h-9z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.article__pied .wp-block-post-terms { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-family: var(--corps); font-size: 15px; }
.article__pied .wp-block-post-terms__prefix { margin-right: 4px; font-size: 16px; font-weight: 700; color: var(--encre); }
.article__pied .wp-block-post-terms__separator { display: none; }
.article__pied .puces-mots:not(.puces-mots--nu) a { padding: 10px 8px; border-radius: 6px; background: #efefef; color: var(--gris); }
.article__pied .puces-mots--nu a { padding: 0 6px; color: var(--gris); }
.commentaires .wp-block-comment-template { margin: 0; padding: 0; list-style: none; }
.commentaire { display: grid; grid-template-columns: 80px 1fr; gap: 30px; padding: 26px 0; }
.commentaire .wp-block-avatar img { border-radius: 50%; }
.commentaire .wp-block-comment-author-name { font-size: 21px; font-weight: 700; color: var(--encre); letter-spacing: .02em; }
.commentaire .wp-block-comment-date { margin-top: 8px; font-family: var(--corps); font-size: 16px; color: var(--gris); }
.commentaire .wp-block-comment-content p { margin: 16px 0 0; font-family: var(--corps); font-size: 16px; line-height: 34px; color: var(--gris); }
.commentaire .wp-block-comment-reply-link a { display: inline-block; margin-top: 12px; font-family: var(--corps); font-size: 14px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--rose); }
.formulaire-commentaire.wp-block-post-comments-form { margin-top: 100px; padding: 50px 40px 60px; border-radius: 20px; background: var(--violet); color: #fff; }
.formulaire-commentaire .comment-reply-title { margin: 0; font-size: 56px; letter-spacing: .02em; color: #fff; }
.formulaire-commentaire .comment-reply-title small { display: block; font-size: 15px; }
.formulaire-commentaire .comment-form { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 10px; font-family: var(--corps); font-size: 16px; }
.formulaire-commentaire .comment-form>* { grid-column: 1 / -1; margin: 0; }
.formulaire-commentaire .comment-form>:is(.comment-form-author, .comment-form-email, .comment-form-url) { grid-column: auto; margin-top: 24px; }
.formulaire-commentaire .comment-form-comment { order: 5; margin-top: 10px; }
.formulaire-commentaire .comment-form-cookies-consent { order: 6; display: flex; align-items: center; gap: 14px; margin-top: 20px; }
.formulaire-commentaire .form-submit { order: 7; margin-top: 20px; }
.formulaire-commentaire .comment-form label { display: block; margin-bottom: 8px; }
.formulaire-commentaire .comment-form .comment-form-cookies-consent label { margin: 0; }
.formulaire-commentaire :is(input[type="text"], input[type="email"], input[type="url"], textarea) {
  width: 100%;
  height: 50px;
  padding: 0 20px;
  border: 0;
  border-radius: 14px;
  font-family: var(--corps);
  font-size: 16px;
  color: var(--encre);
}
.formulaire-commentaire textarea { height: 170px; padding-top: 16px; resize: vertical; }
.formulaire-commentaire .form-submit .wp-block-button__link,
.formulaire-commentaire input[type="submit"] {
  min-height: 60px;
  padding: 0 26px;
  border: 0;
  border-radius: 999px;
  background: var(--rose);
  color: #fff;
  font-family: var(--corps);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  cursor: pointer;
}
.formulaire-commentaire a { color: #fff; text-decoration: underline; }

/* ==========================================================================
   Médiathèque
   ========================================================================== */
.mediatheque { width: min(1290px, 100% - 2 * var(--gouttiere)); margin-inline: auto; padding: 96px 0 60px; }
.onglets--pilules .onglets__boutons { gap: 14px; margin-top: 0; }
.onglets--pilules .onglets__bouton:where(:not(.elementor-widget)),
.onglets--pilules .onglets__bouton:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 180px;
  height: 54px;
  padding: 0 30px;
  border: 1.5px solid var(--encre);
  border-radius: 999px;
  font-size: 26px;
  color: var(--encre);
}
.onglets--pilules .onglets__bouton.est-actif:where(:not(.elementor-widget)),
.onglets--pilules .onglets__bouton.est-actif:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { border-color: var(--rose); background: var(--rose); color: #fff; }
.onglets--pilules .onglets__panneau { margin-top: 56px; padding-left: 0; }
.galerie { display: grid; grid-template-columns: repeat(12, 1fr); gap: 30px; }
.galerie figure { overflow: hidden; border-radius: var(--rayon); }
.galerie img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.galerie figure:hover img { transform: scale(1.03); }
.galerie__l { grid-column: span 7; height: 380px; }
.galerie__m { grid-column: span 5; height: 380px; }
.galerie__t { grid-column: span 4; height: 370px; }
.bientot {
  display: grid;
  place-items: center;
  gap: 12px;
  min-height: 380px;
  padding: 40px;
  border: 1.5px dashed #d9cfe3;
  border-radius: var(--rayon);
  background: var(--fond-doux);
  text-align: center;
}
.bientot h3 { font-size: 34px; color: var(--violet); }
.bientot p { max-width: 560px; font-size: 22px; line-height: 32px; color: var(--encre); }

/* --- Événements : une carte par événement (mosaïque de 3 ou 4 photos, date, lieu, bouton) */
.evenements { display: grid; gap: 48px; }
.evenement {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
  gap: 56px;
  align-items: center;
  padding: 24px 48px 24px 24px;
  border: 1px solid #efefef;
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 16px 40px rgba(43, 43, 70, .06);
}
.evenement:nth-child(even) { padding: 24px 24px 24px 48px; }
.evenement:nth-child(even)>.evenement__mosaique { order: 2; }
.evenement__mosaique {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  grid-template-rows: 190px 190px;
  gap: 12px;
}
.evenement__mosaique>:is(figure, div:where(.sc-boite.elementor-widget-image)) { overflow: hidden; margin: 0; border-radius: 14px; cursor: zoom-in; }
.evenement__mosaique>:is(figure, div:where(.sc-boite.elementor-widget-image)):first-child { grid-row: 1 / 3; }
.evenement__mosaique>:is(figure, div:where(.sc-boite.elementor-widget-image)):nth-child(4) { grid-column: 2 / 4; }
/* trois photos : les deux dernières occupent chacune une ligne entière à droite */
.evenement__mosaique>:is(figure, div:where(.sc-boite.elementor-widget-image)):nth-child(2):nth-last-child(2),
.evenement__mosaique>:is(figure, div:where(.sc-boite.elementor-widget-image)):nth-child(3):last-child { grid-column: 2 / 4; }
.evenement__mosaique img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.evenement__mosaique>:is(figure, div:where(.sc-boite.elementor-widget-image)):hover img { transform: scale(1.04); }
.evenement__infos .surtitre:where(:not(.elementor-widget)),
.evenement__infos .surtitre:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 18px; }
.evenement__titre:where(:not(.elementor-widget)),
.evenement__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { margin-top: 12px; font-size: 40px; line-height: 1.1; color: var(--encre); letter-spacing: .01em; }
.evenement__date:where(:not(.elementor-widget)),
.evenement__date:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)),
.evenement__lieu:where(:not(.elementor-widget)),
.evenement__lieu:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) {
  display: flex;
  align-items: center;
  gap: 12px;
  font-family: var(--corps);
  font-size: 17px;
  color: var(--encre);
}
.evenement__date:where(:not(.elementor-widget)),
.evenement__date:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { margin-top: 26px; }
.evenement__lieu:where(:not(.elementor-widget)),
.evenement__lieu:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { margin-top: 12px; }
.evenement__date:where(:not(.elementor-widget))::before,
.evenement__date:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle))::before,
.evenement__lieu:where(:not(.elementor-widget))::before,
.evenement__lieu:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle))::before {
  content: "";
  flex: none;
  width: 18px;
  height: 18px;
  background: var(--rose);
  -webkit-mask: var(--icone) center / contain no-repeat;
  mask: var(--icone) center / contain no-repeat; --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
.evenement__date:where(:not(.elementor-widget))::before,
.evenement__date:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle))::before { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 4h2V2h2v2h6V2h2v2h2a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 6v9h14v-9z'/%3E%3C/svg%3E"); }
.evenement__lieu:where(:not(.elementor-widget))::before,
.evenement__lieu:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle))::before { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.2 7 13 7 13s7-7.8 7-13a7 7 0 0 0-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E"); }
.evenement__resume:where(:not(.elementor-widget)),
.evenement__resume:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { margin-top: 22px; font-size: 20px; line-height: 30px; color: var(--encre); }
.evenement .ouvrir-galerie:where(:not(.elementor-widget)),
.evenement .ouvrir-galerie:where(.elementor-widget-button) > .elementor-button { margin-top: 32px; min-height: 60px; padding: 0 30px; font-family: var(--corps); font-size: 14px; letter-spacing: .1em; }

/* --- Fenêtre des photos d'un événement.
       Toutes les photos sont dans la page (bloc Galerie, modifiable dans l'éditeur) ; le script ne fait
       qu'ouvrir la fenêtre et basculer entre la grille et l'agrandissement. */
.modale { display: none; }
.modale.est-ouverte {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  place-items: center;
  padding: 32px;
  background: rgba(43, 43, 70, .82);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}
body.modale-ouverte { overflow: hidden; }
.modale__boite {
  position: relative;
  width: min(1180px, 100%);
  max-height: calc(100vh - 64px);
  overflow: auto;
  overscroll-behavior: contain;
  padding: 0 36px 36px;
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 30px 80px rgba(0, 0, 0, .3);
}
.modale__entete {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 28px 0 22px;
  background: #fff;
}
.modale__titre:where(:not(.elementor-widget)),
.modale__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 34px; line-height: 1.1; color: var(--encre); }
.modale__meta:where(:not(.elementor-widget)),
.modale__meta:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { margin-top: 8px; font-family: var(--corps); font-size: 16px; color: var(--gris); }
.modale .modale__fermer:where(:not(.elementor-widget)),
.modale .modale__fermer:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)),
.modale .visionneuse__precedente:where(:not(.elementor-widget)),
.modale .visionneuse__precedente:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)),
.modale .visionneuse__suivante:where(:not(.elementor-widget)),
.modale .visionneuse__suivante:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) {
  position: relative;
  line-height: normal;
  text-align: center;
  flex: none;
  width: 52px;
  height: 52px;
  padding: 0;
  overflow: hidden;
  border: 1.5px solid var(--rose);
  border-radius: 50%;
  background: #fff;
  color: transparent;
  font-size: 0;
  cursor: pointer;
  transition: background-color .2s; --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
.modale__fermer:where(:not(.elementor-widget))::before,
.modale__fermer:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle))::before,
.visionneuse__precedente:where(:not(.elementor-widget))::before,
.visionneuse__precedente:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle))::before,
.visionneuse__suivante:where(:not(.elementor-widget))::before,
.visionneuse__suivante:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle))::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--rose);
  -webkit-mask: var(--icone) center / 18px no-repeat;
  mask: var(--icone) center / 18px no-repeat;
}
.modale__fermer:hover:where(:not(.elementor-widget)),
.modale__fermer:hover:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)),
.visionneuse__precedente:hover:where(:not(.elementor-widget)),
.visionneuse__precedente:hover:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)),
.visionneuse__suivante:hover:where(:not(.elementor-widget)),
.visionneuse__suivante:hover:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { background: var(--rose-pale); }
.modale__fermer:where(:not(.elementor-widget)),
.modale__fermer:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M2 2l14 14M16 2L2 16' stroke='%23000' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.visionneuse__precedente:where(:not(.elementor-widget)),
.visionneuse__precedente:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M12 2L5 9l7 7' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.visionneuse__suivante:where(:not(.elementor-widget)),
.visionneuse__suivante:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M6 2l7 7-7 7' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
:is(.modale__fermer, .visionneuse__precedente, .visionneuse__suivante, .visionneuse__retour):where(:not(.elementor-widget)):focus-visible,
:is(.modale__fermer, .visionneuse__precedente, .visionneuse__suivante, .visionneuse__retour):where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)):focus-visible { outline: 3px solid var(--violet); outline-offset: 3px; }

/* Grille de toutes les photos (bloc Galerie : sélecteurs renforcés pour primer sur ses styles par défaut) */
.galerie-modale.wp-block-gallery.has-nested-images {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin: 0;
}
.galerie-modale.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) {
  width: auto;
  margin: 0;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: 12px;
  cursor: zoom-in;
}
.galerie-modale.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image) img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .4s;
}
.galerie-modale.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image):hover img { transform: scale(1.04); }

/* Agrandissement : une seule photo, en entier, avec précédente / suivante et le compteur */
.visionneuse { display: none; }
.mode-visionneuse .galerie-modale.wp-block-gallery.has-nested-images { grid-template-columns: minmax(0, 1fr); }
.mode-visionneuse .galerie-modale.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) { display: none; }
.mode-visionneuse .galerie-modale.wp-block-gallery.has-nested-images figure.wp-block-image.est-agrandie:not(#individual-image) {
  display: block;
  aspect-ratio: auto;
  height: min(66vh, 680px);
  background: #1d1d2e;
  cursor: default;
}
.mode-visionneuse .galerie-modale.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image.est-agrandie:not(#individual-image) img {
  object-fit: contain;
  transform: none;
}
.mode-visionneuse .visionneuse { display: flex; align-items: center; gap: 14px; margin-top: 20px; }
.modale .visionneuse__retour:where(:not(.elementor-widget)),
.modale .visionneuse__retour:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) {
  order: 1;
  display: inline-flex;
  align-items: center;
  line-height: normal;
  text-align: center;
  margin-right: auto;
  min-height: 52px;
  padding: 0 24px;
  border: 1.5px solid var(--rose);
  border-radius: 999px;
  background: #fff;
  font-family: var(--corps);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--rose);
  cursor: pointer;
}
.visionneuse__retour:hover:where(:not(.elementor-widget)),
.visionneuse__retour:hover:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { background: var(--rose); color: #fff; }
.visionneuse__precedente:where(:not(.elementor-widget)),
.visionneuse__precedente:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { order: 2; }
.visionneuse::after { content: var(--compteur, ""); order: 3; min-width: 90px; text-align: center; font-family: var(--corps); font-size: 16px; font-weight: 700; color: var(--encre); }
.visionneuse__suivante:where(:not(.elementor-widget)),
.visionneuse__suivante:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { order: 4; }

/* ==========================================================================
   Contact
   ========================================================================== */
.contact { width: min(1288px, 100% - 2 * var(--gouttiere)); margin-inline: auto; padding: 160px 0 100px; }
.carte-formulaire { padding: 70px 110px 86px; border: 1.5px solid #e5e5e5; border-radius: 20px; background: #fff; box-shadow: 0 30px 60px rgba(43, 43, 70, .05); }
.carte-formulaire .surtitre:where(:not(.elementor-widget)),
.carte-formulaire .surtitre:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-family: var(--corps); font-size: 16px; letter-spacing: .08em; }
.carte-formulaire h2 { margin-top: 16px; font-size: 50px; color: #333; letter-spacing: .01em; }
.champs-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }
.champ { display: block; margin-top: 30px; }
.champ>span { display: block; font-size: 20px; font-weight: 700; color: var(--encre); }
.champ__saisie { position: relative; display: block; margin-top: 14px; }
.champ__saisie input,
.champ__saisie textarea {
  width: 100%;
  height: 60px;
  padding: 0 52px 0 18px;
  border: 2px solid #e6e6e6;
  border-radius: 16px;
  font-family: var(--corps);
  font-size: 16px;
  font-weight: 400;
  color: var(--encre);
  background: #fff;
  transition: border-color .2s;
}
.champ__saisie textarea { height: 130px; padding-top: 18px; resize: vertical; }
.champ__saisie input:focus,
.champ__saisie textarea:focus { outline: 0; border-color: var(--rose); }
.champ__saisie svg { position: absolute; right: 20px; top: 22px; width: 14px; height: 14px; color: var(--rose); }

/* --- Liste « Rejoindre SHECODE » : même boîte que les champs, flèche pleine, choix aux couleurs du site */
.champ__saisie select {
  width: 100%;
  height: 60px;
  padding: 0 52px 0 18px;
  border: 2px solid #e6e6e6;
  border-radius: 16px;
  font-family: var(--corps);
  font-size: 16px;
  font-weight: 400;
  color: var(--encre);
  background: #fff;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
  accent-color: var(--rose);
  transition: border-color .2s;
}
.champ__saisie select:focus { outline: 0; border-color: var(--rose); }
.champ__saisie.champ__saisie--choix::after {
  content: "";
  position: absolute;
  right: 20px;
  top: 26px;
  width: 12px;
  height: 8px;
  background: var(--encre);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M0 0h12L6 8z'/%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 12 8'%3E%3Cpath d='M0 0h12L6 8z'/%3E%3C/svg%3E") center / contain no-repeat;
  pointer-events: none;
  transition: transform .2s;
}
/* Navigateurs récents (Chrome, Edge) : la liste déroulante elle-même se stylise.
   Le choix courant passe en rose au lieu du bleu du système. Ailleurs : liste native. */
@supports (appearance: base-select) {
  .champ__saisie select,
.champ__saisie select::picker(select) { appearance: base-select; }
  .champ__saisie select { display: flex; align-items: center; }
  .champ__saisie select::picker-icon { display: none; }
  .champ__saisie select::picker(select) {
    margin-top: 6px;
    padding: 6px;
    border: 1.5px solid #ececec;
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 16px 40px rgba(43, 43, 70, .12);
  }
  .champ__saisie option {
    padding: 11px 14px;
    border-radius: 10px;
    font-family: var(--corps);
    font-size: 16px;
    color: var(--encre);
    cursor: pointer;
  }
  .champ__saisie option::checkmark { display: none; }
  .champ__saisie option:hover,
.champ__saisie option:focus-visible { outline: 0; background: var(--rose-pale); color: var(--rose); }
  .champ__saisie option:checked { background: var(--rose); color: #fff; }
  .champ__saisie--choix:has(select:open)::after { transform: rotate(180deg); }
}
.carte-formulaire .bouton:where(:not(.elementor-widget)),
.carte-formulaire .bouton:where(.elementor-widget-button) > .elementor-button { margin-top: 38px; min-height: 60px; padding: 0 26px; font-family: var(--corps); font-size: 14px; letter-spacing: .1em; }
.coordonnees { display: grid; grid-template-columns: 848px 1fr; gap: 32px; margin-top: 60px; }
/* carte Google Maps : au moins les proportions de l'ancienne image, étirée à la hauteur de la colonne des coordonnées */
.coordonnees__carte { position: relative; overflow: hidden; align-self: stretch; justify-self: stretch; aspect-ratio: 1040 / 588; border-radius: var(--rayon); background: var(--lavande-pale); }
.coordonnees__carte iframe { display: block; position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.coordonnees__infos { display: grid; gap: 32px; }
.info {
  display: flex;
  align-items: center;
  gap: 30px;
  min-height: 140px;
  padding: 20px 30px;
  border-radius: var(--rayon);
  background: #fff;
  box-shadow: 0 16px 40px rgba(43, 43, 70, .06);
}
.info__icone { display: grid; place-items: center; flex: none; width: 80px; height: 80px; border: 1.5px solid #eee; border-radius: 50%; color: var(--rose); --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
.info__icone svg { width: 30px; height: 30px; }
.info h3 { font-size: 22px; color: var(--encre); letter-spacing: .02em; }
.info p { margin-top: 10px; font-family: var(--corps); font-size: 15px; line-height: 1.5; color: var(--encre); }

/* ==========================================================================
   Adaptation aux écrans plus étroits
   ========================================================================== */
@media (max-width: 1600px) {
  .afia__grille { grid-template-columns: 600px 1fr; gap: 60px; padding-left: 0; }
  .pilules { zoom: .82; }
  .qui__grille { grid-template-columns: minmax(0, 1fr) 300px 320px; gap: 0 28px; padding-left: 0; }
  .temoignages__grille { grid-template-columns: 1fr 1fr; }
}
/* ==========================================================================
   Fiche programme (programme-upskill.html) — maquette « programs detail »
   Cadre commun : bandeau photo, témoignages, partenaires. Contenu propre à
   chaque programme : bande violette, photo, texte, citation, chiffres, galerie.
   ========================================================================== */
/* photo du bandeau : image mise en avant du programme (--bandeau-photo, posée par le thème) */
.bandeau-page--programme {
  min-height: 489px;
  padding-top: 68px;
  background-image: linear-gradient(rgba(88, 83, 106, .84), rgba(88, 83, 106, .84)), var(--bandeau-photo, url("assets/img/bandeau-eleves.jpg"));
  background-position: center, center 55%;
}
.bandeau-page--programme .fil:where(:not(.elementor-widget)),
.bandeau-page--programme .fil:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { margin-top: 22px; }
.bandeau-page--programme .bandeau-page__intro:where(:not(.elementor-widget)),
.bandeau-page--programme .bandeau-page__intro:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { margin-top: 28px; }
.bandeau-page--programme h1 { text-transform: uppercase; }

.prog-intro { padding: 78px 0 58px; background: var(--violet); color: #fff; }
.prog-intro__grille {
  display: grid;
  grid-template-columns: minmax(0, 645px) 550px;
  justify-content: space-between;
  width: min(1285px, 100% - 2 * var(--gouttiere));
  margin-left: max(var(--gouttiere), 50% - 635px);
}
.prog-intro__texte { padding-top: 36px; }
.prog-intro__titre { font-size: 50px; line-height: 60px; text-wrap: wrap; }
.prog-intro__texte p { margin-top: 33px; font-size: 24px; line-height: 34px; text-align: justify; }
.prog-intro__actions { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 40px; }
.prog-intro__actions .bouton:where(:not(.elementor-widget)),
.prog-intro__actions .bouton:where(.elementor-widget-button) > .elementor-button { min-height: 58px; padding: 0 34px; font-size: 15px; letter-spacing: .1em; }
.prog-intro__cadre { padding: 34px 30px 33px; border-radius: 22px; background: rgba(255, 255, 255, .1); }
.prog-intro__photo {
  height: 551px;
  padding: 14px 29px 0;
  overflow: hidden;
  border-radius: 16px;
  background: linear-gradient(#fff, rgba(255, 255, 255, 0) 92%);
}
.prog-intro__photo img { width: 100%; height: 100%; object-fit: cover; border-radius: 10px 10px 0 0; }

.prog-contenu { width: min(1261px, 100% - 2 * var(--gouttiere)); margin: 130px auto 0; padding-bottom: 70px; }
.prog-contenu__photo { height: 538px; overflow: hidden; border-radius: 12px; }
.prog-contenu__photo img { width: 100%; height: 100%; object-fit: cover; }
/* corps : contenu de l'éditeur (titres et paragraphes saisis librement, sans classe) ; flow-root comme
   le bloc Contenu de WordPress (la marge du premier titre reste dans le bloc) */
.prog-contenu__corps { display: flow-root; }
.prog-contenu__corps h2 { margin: 46px 0 30px; font-size: 60px; line-height: 60px; color: var(--texte); }
.prog-contenu__corps h3 { margin: 40px 0 24px; font-size: 32px; line-height: 40px; color: var(--texte); }
:is(.prog-contenu__corps p, .prog-contenu__conclusion) { margin-top: 18px; font-family: var(--corps); font-size: 16px; line-height: 34px; color: var(--gris); }
.prog-citation { margin-top: 56px; padding: 43px 81px 22px 80px; border-radius: 16px; background: var(--rose-pale); }
.prog-citation__texte { font-family: var(--corps); font-size: 30px; line-height: 40px; color: var(--encre); }
.prog-citation__auteur { display: flex; align-items: flex-end; justify-content: space-between; margin-top: 50px; }
.prog-citation__nom { font-size: 24px; font-weight: 700; color: var(--encre); }
.prog-citation__role { margin-top: 12px; font-family: var(--corps); font-size: 16px; color: var(--encre); }
.prog-citation .temoignage__guillemets { width: 45px; height: 34px; margin-bottom: 14px; }
.chiffres--clair { margin-top: 96px; background: none; color: var(--violet); }
.chiffres--clair .chiffres__liste { display: flex; justify-content: center; gap: 96px; width: auto; padding: 0; }
.chiffres--clair .chiffre__nombre { color: var(--rose); }
.chiffres--clair .chiffre__nombre em { color: var(--violet); }
.chiffres--clair .chiffre__libelle { margin-top: 18px; font-size: 18px; font-weight: 700; }
.chiffres--clair+.prog-contenu__conclusion { margin-top: 96px; }

.prog-galerie { padding: 130px var(--gouttiere) 194px; background: #fef9fc; text-align: center; }
.prog-galerie .surtitre:where(:not(.elementor-widget)),
.prog-galerie .surtitre:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { text-transform: none; letter-spacing: 0; }
.prog-galerie .titre-section:where(:not(.elementor-widget)),
.prog-galerie .titre-section:where(.elementor-widget-heading) > :where(.elementor-heading-title) { margin-top: 24px; line-height: 60px; color: #121212; }
.prog-galerie__grille {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 410px));
  justify-content: center;
  gap: 47px 30px;
  margin-top: 60px;
}
.prog-galerie__grille>:is(figure, div:where(.sc-boite.elementor-widget-image)) { height: 370px; overflow: hidden; border-radius: 16px; background: #d9d9d9; }
.prog-galerie__grille img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.prog-galerie__grille>:is(figure, div:where(.sc-boite.elementor-widget-image)):hover img { transform: scale(1.04); }

@media (max-width: 1100px) {
  .prog-intro__grille { grid-template-columns: 1fr; gap: 48px; margin-inline: auto; }
  .prog-intro__texte { padding-top: 0; }
  .prog-intro__cadre { justify-self: center; width: min(550px, 100%); }
  .prog-contenu__corps h2 { font-size: 48px; line-height: 52px; }
  .chiffres--clair .chiffres__liste { display: grid; grid-template-columns: repeat(2, auto); gap: 40px 64px; }
  .prog-galerie__grille { grid-template-columns: repeat(2, minmax(0, 410px)); gap: 24px; }
}
@media (max-width: 700px) {
  .prog-intro { padding: 56px 0; }
  .prog-intro__titre { font-size: 34px; line-height: 42px; }
  .prog-intro__texte p { font-size: 18px; line-height: 29px; text-align: left; }
  .prog-intro__cadre { padding: 20px; }
  .prog-intro__photo { height: 380px; padding: 10px 16px 0; }
  .prog-contenu { margin-top: 64px; }
  .prog-contenu__photo { height: 260px; }
  .prog-contenu__corps h2 { margin-top: 32px; font-size: 32px; line-height: 38px; }
  .prog-citation { padding: 32px 24px 20px; }
  .prog-citation__texte { font-size: 20px; line-height: 30px; }
  .prog-citation__auteur { margin-top: 28px; }
  .chiffres--clair .chiffres__liste { gap: 32px 24px; }
  .prog-galerie { padding: 72px var(--gouttiere) 96px; }
  .prog-galerie .titre-section:where(:not(.elementor-widget)),
.prog-galerie .titre-section:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 32px; line-height: 38px; }
  .prog-galerie__grille { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 36px; }
  .prog-galerie__grille>:is(figure, div:where(.sc-boite.elementor-widget-image)) { height: 180px; border-radius: 12px; }
}

/* Portables (1101 à 1439 px) : l'image de l'accueil, large de la moitié de l'écran, recouvrait la fin
   des lignes du texte (660 px) ; elle se limite à la place laissée libre à droite du texte */
@media (min-width: 1101px) and (max-width: 1439px) {
  .hero__visuel:where(:not(.elementor-widget)),
.hero__visuel:where(.elementor-widget-image) > img { width: min(720px, 100vw - 740px); }
}
@media (max-width: 1400px) {
  .menu { margin-left: 40px; gap: 18px; }
  .hero__titre:where(:not(.elementor-widget)),
.hero__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 64px; line-height: 62px; }
  .programmes__entete .bouton:where(:not(.elementor-widget)),
.programmes__entete .bouton:where(.elementor-widget-button) > .elementor-button { width: auto; min-height: 72px; font-size: 24px; padding: 0 36px; }
  .cartes-blog { grid-template-columns: repeat(3, 1fr); width: min(1290px, 100% - 2 * var(--gouttiere)); margin-inline: auto; }
  .pied__grille { grid-template-columns: 1.6fr 1fr 1fr 1.2fr; }
  .afia__actions { flex-wrap: wrap; } /* boutons de largeur fixe, plus larges que la colonne de texte sous 1 380 px */
}
/* Portables (1280 px, 1366 px) : logo, six liens et bouton demandent 1 150 px de barre. En dessous de 1 300 px,
   menu resserré ; en dessous de 1 200 px, il ne tient plus : burger (auparavant dès 1 100 px, la barre débordait). */
@media (max-width: 1300px) {
  .menu { margin-left: 24px; gap: 14px; }
  .menu a { font-size: 16px; }
  /* Qui sommes-nous : photo et bannière un peu plus étroites, pour laisser la place au titre et aux onglets */
  .qui__grille { grid-template-columns: minmax(0, 1fr) 280px 300px; }
  .qui .onglets__boutons { gap: 24px; }
  .qui .onglets__bouton:where(:not(.elementor-widget)),
.qui .onglets__bouton:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { white-space: nowrap; }
  /* AFIA : titre ramené à 68 px, « AFIA - AI For » tient sur sa ligne avec de la marge */
  .afia__titre:where(:not(.elementor-widget)),
.afia__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 68px; line-height: 66px; }
}
/* Qui sommes-nous : sous 1 200 px, le texte passe au-dessus de la photo et de la bannière (comme sous 1 100 px) */
@media (max-width: 1200px) {
  .qui__grille { grid-template-columns: 1fr 1fr; gap: 28px; }
  .qui__texte { grid-column: 1 / -1; padding-right: 0; }
}
@media (max-width: 1200px) {
  .menu,
.entete .bouton:where(:not(.elementor-widget)),
.entete .bouton:where(.elementor-widget-button) > .elementor-button { display: none; }
  .burger { display: inline-grid; place-items: center; width: 48px; height: 48px; border: 1.5px solid var(--rose); border-radius: 50%; background: none; color: var(--rose); }
  .entete__barre { height: 78px; }
  body.menu-ouvert .menu {
    display: flex;
    position: absolute;
    top: 78px;
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    margin: 0;
    padding: 8px var(--gouttiere) 24px;
    background: #fff;
    box-shadow: 0 20px 30px rgba(43, 43, 70, .08); --sc-direction: column; }
  body.menu-ouvert .menu>li { width: 100%; border-bottom: 1px solid #f1eef3; }
  body.menu-ouvert .menu a { padding: 14px 0; font-size: 18px; }
  body.menu-ouvert .sous-menu { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; padding: 0 0 8px 16px; }
  body.menu-ouvert .sous-menu a { padding: 8px 0; font-size: 16px; }
}
@media (max-width: 1100px) {
  .hero { height: auto; padding: 56px 0 0; }
  .hero__texte { position: static; width: auto; }
  .hero__titre:where(:not(.elementor-widget)),
.hero__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 56px; line-height: 56px; text-wrap: balance; }
  .hero__visuel:where(:not(.elementor-widget)),
.hero__visuel:where(.elementor-widget-image) > img { position: static; width: min(560px, 100%); margin: 40px auto 0; }
  .chiffres__liste { grid-template-columns: repeat(3, 1fr); gap: 36px 0; padding: 48px 0; }
  .afia { padding: 90px 0; }
  .afia__grille { grid-template-columns: 1fr; }
  .pilules { transform: none; zoom: .75; height: 728px; margin-inline: auto; }
  .afia__texte { padding-top: 0; }
  .afia__titre:where(:not(.elementor-widget)),
.afia__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 56px; line-height: 56px; }
  .qui__grille { grid-template-columns: 1fr 1fr; gap: 28px; }
  .qui__texte { grid-column: 1 / -1; padding-right: 0; }
  .domaines,
.programmes,
.temoignages,
.partenaires,
.blog-une { padding-block: 90px; }
  .domaines__grille { grid-template-columns: repeat(2, 1fr); }
  .programmes__entete,
.blog-une__entete { flex-direction: column; align-items: flex-start; gap: 28px; --sc-direction: column; }
  .programmes__grille,
.cartes-blog { grid-template-columns: 1fr 1fr; margin-top: 56px; }
  .temoignages__grille { grid-template-columns: 1fr; gap: 34px; }
  .pied__grille { grid-template-columns: 1fr 1fr; gap: 48px; }
}
@media (max-width: 700px) {
  :root { --gouttiere: 20px; }
  .enveloppe { width: calc(100% - 2 * var(--gouttiere)); }
  .surtitre:where(:not(.elementor-widget)),
.surtitre:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 17px; }
  .partenaires .surtitre:where(:not(.elementor-widget)),
.partenaires .surtitre:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 17px; white-space: normal; }
  .titre-section br { display: none; }
  .domaines .titre-section:where(:not(.elementor-widget)),
.domaines .titre-section:where(.elementor-widget-heading) > :where(.elementor-heading-title),
.partenaires .titre-section:where(:not(.elementor-widget)),
.partenaires .titre-section:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 30px; line-height: 36px; padding-inline: var(--gouttiere); }
  .pilules { zoom: .47; }
  .onglets__boutons { gap: 18px; }
  .onglets__bouton:where(:not(.elementor-widget)),
.onglets__bouton:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 17px; white-space: nowrap; }
  .onglets__panneau { padding-left: 0; }
  .onglets:not(.onglets--pilules) .onglets__panneau p { font-size: 19px; line-height: 30px; }
  .titre-section:where(:not(.elementor-widget)),
.titre-section:where(.elementor-widget-heading) > :where(.elementor-heading-title),
.qui__titre:where(:not(.elementor-widget)),
.qui__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title),
.temoignages__titre:where(:not(.elementor-widget)),
.temoignages__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 38px; line-height: 42px; }
  .hero__titre:where(:not(.elementor-widget)),
.hero__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 44px; line-height: 46px; }
  .hero__accroche:where(:not(.elementor-widget)),
.hero__accroche:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 24px; line-height: 30px; }
  .hero__intro:where(:not(.elementor-widget)),
.hero__intro:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)),
.afia__intro:where(:not(.elementor-widget)),
.afia__intro:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 19px; line-height: 29px; }
  .hero__actions,
.afia__actions,
.qui__actions { flex-direction: column; align-items: stretch; --sc-direction: column; }
  .hero__actions .bouton:where(:not(.elementor-widget)),
.hero__actions .bouton:where(.elementor-widget-button) > .elementor-button,
.afia__actions .bouton:where(:not(.elementor-widget)),
.afia__actions .bouton:where(.elementor-widget-button) > .elementor-button,
.qui__actions .bouton:where(:not(.elementor-widget)),
.qui__actions .bouton:where(.elementor-widget-button) > .elementor-button { width: 100%; }
  .chiffres__liste { grid-template-columns: repeat(2, 1fr); }
  .chiffre__nombre { font-size: 44px; }
  .chiffre__nombre em {
  font-style: normal; font-size: 36px; }
  .afia__titre:where(:not(.elementor-widget)),
.afia__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 44px; line-height: 46px; }
  .coches li { font-size: 22px; line-height: 28px; }
  .qui__grille { grid-template-columns: 1fr; }
  .carte-chiffre { height: auto; padding: 32px; }
  .domaines__grille,
.programmes__grille,
.cartes-blog { grid-template-columns: 1fr; }
  .programmes__entete .bouton:where(:not(.elementor-widget)),
.programmes__entete .bouton:where(.elementor-widget-button) > .elementor-button { font-size: 20px; min-height: 60px; width: 100%; white-space: normal; text-align: center; }
  .temoignage { padding: 32px 24px 24px; }
  .temoignage__citation:where(:not(.elementor-widget)),
.temoignage__citation:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 21px; line-height: 31px; }
  .temoignage--photo .temoignage__citation:where(:not(.elementor-widget)),
.temoignage--photo .temoignage__citation:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { padding: 28px 8px 0; }
  .temoignage__auteur { margin-top: 36px; }
  .logos__item { width: 150px; height: 96px; }
  .logos__item img { max-height: 76px; }
  .logos__item--noir { width: 180px; }
  .partenaires .bouton:where(:not(.elementor-widget)),
.partenaires .bouton:where(.elementor-widget-button) > .elementor-button,
.blog-une__entete .bouton:where(:not(.elementor-widget)),
.blog-une__entete .bouton:where(.elementor-widget-button) > .elementor-button { width: auto; font-size: 20px; min-height: 56px; padding: 0 28px; }
  .newsletter { padding: 90px 20px; }
  .newsletter h2 { font-size: 38px; line-height: 42px; }
  .newsletter p { font-size: 19px; line-height: 28px; }
  .formulaire-inscription { flex-direction: column; align-items: stretch; gap: 12px; --sc-direction: column; }
  .formulaire-inscription__champ { width: 100%; padding-right: 16px; border-radius: 999px; }
  .formulaire-inscription .bouton:where(:not(.elementor-widget)),
.formulaire-inscription .bouton:where(.elementor-widget-button) > .elementor-button { width: 100%; margin-left: 0; font-size: 24px; }
  .pied__grille { grid-template-columns: 1fr; }
  .pied__bas { flex-direction: column; align-items: flex-start; gap: 18px; --sc-direction: column; }
  .pied__legal:where(:not(.elementor-widget)),
.pied__legal:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { flex-wrap: wrap; }
}

/* ==========================================================================
   Pages internes — adaptation aux écrans plus étroits
   ========================================================================== */
@media (max-width: 1400px) {
  .bloc-image,
.bloc-image--inverse { grid-template-columns: 1fr 1.2fr; gap: 60px; width: min(1200px, 100% - 2 * var(--gouttiere)); margin-inline: auto; }
  .bloc-image--inverse { grid-template-columns: 1.2fr 1fr; }
  .villes__grille { grid-template-columns: 1fr 1.2fr; gap: 60px; width: min(1200px, 100% - 2 * var(--gouttiere)); margin-inline: auto; }
  .villes__carte img { width: 100%; max-width: 443px; margin: 0; }
  .neuf__grille { grid-template-columns: 1.3fr 1fr; gap: 60px; width: min(1200px, 100% - 2 * var(--gouttiere)); margin-inline: auto; }
  .blog-mise { grid-template-columns: minmax(0, 1fr) 360px; gap: 48px; width: min(1290px, 100% - 2 * var(--gouttiere)); margin-inline: auto; }
  .coordonnees { grid-template-columns: 1.6fr 1fr; }
  .facons__grille--bas { grid-template-columns: 1fr 1.6fr; }
  .carte-formulaire { padding: 60px 60px 70px; }
}
@media (max-width: 1100px) {
  .logos--page { grid-template-columns: repeat(2, 240px); }
  .bandeau-page h1 { font-size: 48px; }
  .bandeau-page__intro:where(:not(.elementor-widget)),
.bandeau-page__intro:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 20px; line-height: 30px; }
  .bandeau-page__deco { display: none; }
  .bandeau-page--chiffres { padding-bottom: 110px; }
  .chiffres--carte .chiffres__liste { padding: 40px 24px; }
  .catalogue__grille,
.facons__grille { grid-template-columns: 1fr 1fr; }
  .bloc-image,
.bloc-image--inverse,
.villes__grille,
.neuf__grille { grid-template-columns: 1fr; gap: 40px; padding-block: 80px; }
  .bloc-image--inverse .cadre { order: 0; }
  .cadre { max-width: 560px; }
  .bloc-image h2,
.villes h2,
.neuf h2,
.catalogue h2 { font-size: 40px; }
  .bloc-image p { margin-top: 28px; }
  .mentors__grille { grid-template-columns: 1fr; }
  .carte-mentors { padding: 60px 40px; }
  .carte-mentors h2 { font-size: 38px; }
  .carte-mentors p { margin-top: 32px; }
  .affirmations__grille { grid-template-columns: 1fr 1fr; gap: 56px 40px; }
  .affirmations p { font-size: 24px; line-height: 30px; }
  .ambition h2 { font-size: 52px; gap: 20px; }
  .ambition h2::before { width: 40px; height: 40px; border-width: 9px; }
  .ambition p { font-size: 22px; line-height: 32px; }
  .facons__entete h2,
.appel h2,
.dons h2 { font-size: 46px; line-height: 50px; }
  .facons__grille--bas { grid-template-columns: 1fr; }
  .appel p,
.dons p { font-size: 26px; line-height: 38px; }
  .appel,
.dons,
.confiance { padding-block: 100px; }
  .blog-mise { grid-template-columns: 1fr; padding-top: 70px; }
  .article h2.article__titre { font-size: 40px; }
  .coordonnees { grid-template-columns: 1fr; }
  .coordonnees__carte { aspect-ratio: 16 / 9; }
  .contact { padding-top: 90px; }
  .galerie__l,
.galerie__m { grid-column: span 6; height: 300px; }
  .evenement,
.evenement:nth-child(even) { grid-template-columns: 1fr; gap: 32px; padding: 20px 20px 36px; }
  .evenement:nth-child(even)>.evenement__mosaique { order: 0; }
  .evenement__infos { padding-inline: 12px; }
  .galerie-modale.wp-block-gallery.has-nested-images { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .galerie__t { grid-column: span 6; height: 300px; }
  .galerie__t:last-child { grid-column: span 12; }
}
@media (max-width: 700px) {
  .bandeau-page { min-height: 0 !important; padding: 56px var(--gouttiere) 60px; }
  .bandeau-page h1 { font-size: 36px; }
  .bandeau-page__intro:where(:not(.elementor-widget)),
.bandeau-page__intro:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 17px; line-height: 26px; }
  .bandeau-page--chiffres { padding-bottom: 90px; }
  .chiffres--carte { margin-top: -40px; }
  .catalogue__grille,
.facons__grille,
.affirmations__grille,
.champs-2,
.champs-3 { grid-template-columns: 1fr; }
  .catalogue h2,
.bloc-image h2,
.villes h2,
.neuf h2 { font-size: 30px; line-height: 36px; }
  .catalogue__intro:where(:not(.elementor-widget)),
.catalogue__intro:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)),
.bloc-image p,
.villes p,
.carte-mentors p { font-size: 18px; line-height: 28px; text-align: left; }
  .cadre { padding: 14px; }
  .carte-mentors { padding: 40px 24px; }
  .carte-mentors h2 { font-size: 30px; }
  .villes__liste li,
.puces li { font-size: 19px; line-height: 30px; }
  .neuf__listes { grid-template-columns: 1fr; padding-left: 0; margin-top: 28px; }
  .neuf__listes li { font-size: 22px; line-height: 32px; }
  .affirmations p { font-size: 21px; line-height: 28px; }
  .ambition { padding: 80px var(--gouttiere) 90px; }
  .ambition h2 { font-size: 38px; }
  .ambition p { font-size: 18px; line-height: 28px; text-align: left; }
  .ambition__actions { flex-direction: column; align-items: stretch; --sc-direction: column; }
  .ambition__actions .bouton:where(:not(.elementor-widget)),
.ambition__actions .bouton:where(.elementor-widget-button) > .elementor-button { width: 100%; }
  .confiance .surtitre:where(:not(.elementor-widget)),
.confiance .surtitre:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 17px; white-space: normal; }
  .confiance .bouton:where(:not(.elementor-widget)),
.confiance .bouton:where(.elementor-widget-button) > .elementor-button { width: auto; min-height: 60px; padding: 0 30px; font-size: 20px; }
  .logos--page { grid-template-columns: repeat(2, 150px); gap: 24px 20px; }
  .logos--page .logos__item { width: 150px; height: 100px; }
  .logos--page .logos__item img { max-height: 70px; }
  .facons__entete { padding-inline: var(--gouttiere); }
  .facons__entete h2,
.appel h2,
.dons h2 { font-size: 34px; line-height: 40px; }
  .facons__entete p { font-size: 18px; line-height: 28px; }
  .facon { padding: 40px 28px 32px; }
  .facon .bouton:where(:not(.elementor-widget)),
.facon .bouton:where(.elementor-widget-button) > .elementor-button { white-space: normal; text-align: center; }
  .idee { padding: 44px 28px; }
  .idee h3 { font-size: 28px; }
  .idee .bouton:where(:not(.elementor-widget)),
.idee .bouton:where(.elementor-widget-button) > .elementor-button { font-size: 22px; }
  .appel p,
.dons p { font-size: 20px; line-height: 30px; }
  .billet .wp-block-post-title { font-size: 22px; }
  .formulaire-commentaire .comment-form { grid-template-columns: 1fr; }
  .formulaire-commentaire .comment-reply-title { font-size: 32px; }
  .article h2.article__titre { font-size: 30px; }
  .article__pied { flex-direction: column; --sc-direction: column; }
  .commentaire { grid-template-columns: 56px 1fr; gap: 16px; }
  .commentaire__avatar { width: 56px; height: 56px; font-size: 22px; }
  .formulaire-commentaire { padding: 36px 22px 40px; }
  .formulaire-commentaire h2 { font-size: 32px; }
  .formulaire-commentaire__bas { flex-direction: column; align-items: flex-start; gap: 20px; --sc-direction: column; }
  .widget { padding: 32px 22px; }
  .widget--recherche h3 { font-size: 26px; }
  .onglets--pilules .onglets__boutons { flex-wrap: wrap; gap: 10px; }
  .onglets--pilules .onglets__bouton:where(:not(.elementor-widget)),
.onglets--pilules .onglets__bouton:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { min-width: 0; height: 46px; padding: 0 20px; font-size: 19px; }
  .galerie { gap: 14px; }
  .galerie__l,
.galerie__m,
.galerie__t,
.galerie__t:last-child { grid-column: span 12; height: 240px; }
  .evenements { gap: 32px; }
  .evenement,
.evenement:nth-child(even) { padding: 14px 14px 30px; border-radius: 16px; }
  .evenement__mosaique { grid-template-rows: 120px 120px; gap: 8px; }
  .evenement__infos { padding-inline: 6px; }
  .evenement__titre:where(:not(.elementor-widget)),
.evenement__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 30px; }
  .evenement__resume:where(:not(.elementor-widget)),
.evenement__resume:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { font-size: 18px; line-height: 28px; }
  .evenement .ouvrir-galerie:where(:not(.elementor-widget)),
.evenement .ouvrir-galerie:where(.elementor-widget-button) > .elementor-button { width: 100%; }
  .modale.est-ouverte { padding: 0; }
  .modale__boite { width: 100%; max-height: 100vh; height: 100%; padding: 0 16px 24px; border-radius: 0; }
  .modale__entete { padding: 18px 0 14px; }
  .modale__titre:where(:not(.elementor-widget)),
.modale__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 24px; }
  .galerie-modale.wp-block-gallery.has-nested-images { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .mode-visionneuse .galerie-modale.wp-block-gallery.has-nested-images figure.wp-block-image.est-agrandie:not(#individual-image) { height: 62vh; }
  .modale .visionneuse__retour:where(:not(.elementor-widget)),
.modale .visionneuse__retour:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { padding: 0 14px; font-size: 11px; letter-spacing: .06em; white-space: nowrap; }
  .mode-visionneuse .visionneuse { gap: 8px; }
  .visionneuse::after { min-width: 52px; }
  .bientot h3 { font-size: 26px; }
  .bientot p { font-size: 18px; line-height: 28px; }
  .carte-formulaire { padding: 40px 22px 44px; }
  .carte-formulaire h2 { font-size: 30px; }
  .info { gap: 18px; min-height: 0; padding: 20px; }
  .info__icone { width: 60px; height: 60px; }
}

/* ==========================================================================
   Bouton « Retour en haut » et animations au défilement (assets/js/app.js)
   ========================================================================== */
.retour-haut {
  position: fixed;
  right: 28px;
  bottom: 28px;
  z-index: 90;
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: var(--rose);
  color: #fff;
  box-shadow: 0 10px 24px rgba(236, 22, 131, .35);
  opacity: 0;
  visibility: hidden;
  translate: 0 12px;
  transition: opacity .3s, visibility .3s, translate .3s, background-color .2s;
}
.retour-haut.est-visible { opacity: 1; visibility: visible; translate: 0 0; }
.retour-haut:hover { background: var(--violet); box-shadow: 0 10px 24px rgba(106, 51, 145, .35); }
.retour-haut:focus-visible { outline: 3px solid var(--violet); outline-offset: 3px; }
.retour-haut svg { width: 22px; height: 22px; }
@media (max-width: 700px) { .retour-haut { right: 16px; bottom: 16px; width: 46px; height: 46px; } }

/* blocs qui apparaissent en glissant vers le haut quand ils entrent à l'écran (propriété translate : elle
   s'ajoute aux transformations propres au bloc, comme un effet de survol) */
@media (prefers-reduced-motion: no-preference) {
  .anime {
    opacity: 0;
    translate: 0 32px;
    transition: opacity .7s ease-out, translate .7s cubic-bezier(.2, .7, .2, 1);
    transition-delay: var(--anime-delai, 0s);
  }
  .anime.est-visible { opacity: 1; translate: 0 0; }
}

/* Cadrages d'images (repris de la maquette) */
.cadrage-50-60 img { object-position: 50% 60%; }
.cadrage-50-30 img { object-position: 50% 30%; }
.cadrage-50-40 img { object-position: 50% 40%; }
.cadrage-50-12 img { object-position: 50% 12%; }

/* ==========================================================================
   Adaptations Gutenberg
   Tout ce qui précède est la feuille de la maquette, reprise telle quelle.
   Ici : ce que change le passage en blocs natifs (DOM des blocs, icônes SVG
   redessinées en CSS, formulaires Contact Form 7, blocs dynamiques du blog).
   ========================================================================== */

/* --- Espacement automatique : coupé dans theme.json (blockGap null : aucune règle de marge générée),
       filet à spécificité nulle. blockGap "0px" ne suffit pas : WordPress émet alors
       « :root :where(.is-layout-flow) > :first-child { margin-block-start: 0 } », de spécificité
       (0,2,0), qui efface la marge haute de tout premier enfant de groupe. */
:where(.wp-block-group)>:where(*),
:where(.wp-block-buttons) { margin-block: 0; }
:where(figure.wp-block-image, .wp-block-post-featured-image) { margin: 0; }
:where(.wp-block-image, .wp-block-post-featured-image) img { height: auto; }
.wp-site-blocks { overflow-x: clip; }

/* --- Accents typographiques : <em> nu (rose), <strong> (trait manuscrit) */
:is(h1, h2, h3, h4, .fil, .logo__texte, .chiffre__nombre) em { font-style: normal; color: var(--rose); }
.surtitre em { font-style: normal; text-transform: none; }
.fil em { font-size: 20px; line-height: 1; transform: translateY(-1px); } /* séparateur « › » = .fil__sep de la maquette */
:is(h1, h2, h3) strong {
  position: relative;
  display: inline-block;
  font-weight: inherit;
}
:is(h1, h2, h3) strong::after {
  content: "";
  position: absolute;
  left: -2%;
  bottom: -.42em;
  width: 104%;
  height: .38em;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 280 22' preserveAspectRatio='none'%3E%3Cpath d='M4 14C80 6 190 4 276 12' fill='none' stroke='%23ec1683' stroke-width='4' stroke-linecap='round'/%3E%3Cpath d='M2 19C90 12 200 11 270 17' fill='none' stroke='%23ec1683' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
}
:is(.trait-violet, .carte-mentors--violet) strong::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 280 22' preserveAspectRatio='none'%3E%3Cpath d='M4 14C80 6 190 4 276 12' fill='none' stroke='%236a3391' stroke-width='4' stroke-linecap='round'/%3E%3Cpath d='M2 19C90 12 200 11 270 17' fill='none' stroke='%236a3391' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
}
.trait-decale strong::after { left: 36%; width: 66%; bottom: -28px; height: 22px; }
.villes h2 strong { text-transform: none; }

/* --- Boutons : la classe du bloc est sur le conteneur div.wp-block-button.
       Le conteneur porte toute l'apparence de la maquette ; le lien, neutralisé,
       couvre sa surface pour que tout le bouton reste cliquable. */
.wp-block-buttons>.wp-block-button.bouton:where(:not(.elementor-widget)),
.wp-block-buttons>.wp-block-button.bouton:where(.elementor-widget-button) > .elementor-button { display: inline-flex; position: relative; }
.wp-block-buttons.is-layout-flex { flex-wrap: nowrap; } /* la maquette ne renvoie jamais un bouton à la ligne */
.wp-block-button.bouton .wp-block-button__link {
  all: unset;
  cursor: pointer;
}
.wp-block-button.bouton .wp-block-button__link::before { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.wp-block-button.bouton:focus-within:where(:not(.elementor-widget)),
.wp-block-button.bouton:focus-within:where(.elementor-widget-button) > .elementor-button { outline: 3px solid var(--violet); outline-offset: 3px; }

/* --- Icônes : masques CSS (les SVG inline ne sont pas des blocs) */
.coches li,
.carte-prog__lieu,
.badge-date,
.pied__contact a { display: flex; align-items: center; }
.coches li::before,
.badge-date::before,
.carte-prog__lieu::before,
.pied__contact a::before {
  content: "";
  flex: none;
  background: var(--rose);
  -webkit-mask: var(--icone) center / contain no-repeat;
  mask: var(--icone) center / contain no-repeat; --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
.coches li::before {
  width: 20px; height: 20px;
  --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Ccircle cx='10' cy='10' r='8.5' fill='none' stroke='%23000' stroke-width='1.5'/%3E%3Cpath d='M6.5 10.2l2.3 2.3 4.7-4.8' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
.badge-date::before {
  width: 4cqw; height: 4cqw;
  --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill-rule='evenodd' d='M10 0a10 10 0 1 1 0 20 10 10 0 0 1 0-20zm-.9 5v5.9l3.9 2.2.9-1.6-3-1.7V5z'/%3E%3C/svg%3E");
}
.carte-prog .badge-date::before {
  --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill-rule='evenodd' d='M10 0a10 10 0 1 1 0 20 10 10 0 0 1 0-20zM5.3 10.9l3.3 3.2 6.1-6-1.4-1.4-4.7 4.6-1.9-1.8z'/%3E%3C/svg%3E");
}
.carte-prog__lieu::before {
  width: 15px; height: 15px;
  background: var(--violet);
  --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.2 7 13 7 13s7-7.8 7-13a7 7 0 0 0-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E");
}
.pied__contact a::before { width: 18px; height: 18px; }
.pied__contact li:nth-child(1) a::before { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.1.4 2.3.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1A17 17 0 0 1 3 4c0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.3.2 2.5.6 3.6.1.3 0 .7-.2 1z'/%3E%3C/svg%3E"); }
.pied__contact li:nth-child(2) a::before { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M2 5h20v14H2zm2 2v.5l8 5 8-5V7l-8 5z'/%3E%3C/svg%3E"); }
.pied__contact li:nth-child(3) a::before { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.2 7 13 7 13s7-7.8 7-13a7 7 0 0 0-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E"); }

/* --- Guillemets des témoignages */
:is(.temoignage__auteur, .prog-citation__auteur)::after {
  content: "";
  flex: none;
  width: 48px;
  height: 36px;
  background: center / contain no-repeat; --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
.prog-citation__auteur::after { width: 45px; height: 34px; margin-bottom: 14px; }
.guillemets--rose-plein::after { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 36'%3E%3Cpath fill='%23ec1683' d='M2 0h18v19c0 9-5 15-13 17l-2-6c4-1 6-4 6-8H2zM28 0h18v19c0 9-5 15-13 17l-2-6c4-1 6-4 6-8h-9z'/%3E%3C/svg%3E"); }
.guillemets--violet-plein::after { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 36'%3E%3Cpath fill='%236a3391' d='M2 0h18v19c0 9-5 15-13 17l-2-6c4-1 6-4 6-8H2zM28 0h18v19c0 9-5 15-13 17l-2-6c4-1 6-4 6-8h-9z'/%3E%3C/svg%3E"); }
.guillemets--rose-contour::after { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 36'%3E%3Cpath fill='none' stroke='%23ec1683' stroke-width='2' d='M3 1h16v18c0 8-4 13-11 15l-1.5-4.5C10 28 12 25 12 21H3zM29 1h16v18c0 8-4 13-11 15l-1.5-4.5C36 28 38 25 38 21h-9z'/%3E%3C/svg%3E"); }
.guillemets--violet-contour::after { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 36'%3E%3Cpath fill='none' stroke='%236a3391' stroke-width='2' d='M3 1h16v18c0 8-4 13-11 15l-1.5-4.5C10 28 12 25 12 21H3zM29 1h16v18c0 8-4 13-11 15l-1.5-4.5C36 28 38 25 38 21h-9z'/%3E%3C/svg%3E"); }

/* --- Décors du bandeau d'en-tête (couches vides → pseudo-éléments) */
.bandeau-page::before,
.bandeau-page::after { position: absolute; pointer-events: none; background: center / contain no-repeat; }
.deco-anneau::before {
  content: ""; left: 5%; top: 160px; width: 110px; height: 184px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 200'%3E%3Cpath d='M60 14a86 86 0 0 1 0 172' fill='none' stroke='%23ec1683' stroke-opacity='.75' stroke-width='30'/%3E%3C/svg%3E");
}
.deco-points::before {
  content: ""; left: 0; top: 70px; width: 170px; height: 260px; opacity: .9;
  background: radial-gradient(ellipse 4.2px 3px at 8px 8px, var(--rose) 98%, transparent) 0 0 / 17px 17px;
  -webkit-mask: linear-gradient(90deg, #000, transparent);
  mask: linear-gradient(90deg, #000, transparent);
}
.deco-coeur::before {
  content: ""; left: 15%; top: 50%; width: 84px; height: 76px; opacity: .75;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 72'%3E%3Cpath d='M40 68S4 44 4 22A18 18 0 0 1 40 14a18 18 0 0 1 36 8c0 22-36 46-36 46z' fill='none' stroke='%23fff' stroke-width='3'/%3E%3Cpath d='M14 20l24 30M22 12l30 36M34 12l26 30M50 12l16 18' stroke='%23fff' stroke-width='3'/%3E%3C/svg%3E");
}
.deco-gribouillis::after {
  content: ""; right: 5.5%; top: 52%; width: 130px; height: 110px; opacity: .6;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 110'%3E%3Cg fill='none' stroke='%23fff' stroke-width='5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 40L40 8M10 58L58 10M14 74L74 14M22 86L86 22M34 94L96 32M48 98L104 42M62 100L112 50M78 98L118 58M94 92L122 64'/%3E%3Cpath d='M8 40L10 58L14 74L22 86L34 94L48 98L62 100L78 98L94 92M40 8L58 10L74 14L86 22L96 32L104 42L112 50L118 58L122 64'/%3E%3C/g%3E%3C/svg%3E");
}
.single .deco-gribouillis::after { top: auto; bottom: -10px; right: 22%; }

/* --- AFIA : les pilules et pastilles deviennent le fond du groupe */
.pilules::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 730 728'%3E%3Crect x='45' y='249' width='559' height='139' rx='69.5' fill='%23ec81f6'/%3E%3Crect x='145' y='408' width='544' height='145' rx='72.5' fill='%23c6abff'/%3E%3Crect x='45' y='584' width='591' height='144' rx='72' fill='%236a3391'/%3E%3Ccircle cx='660' cy='351' r='15' fill='%23c6abff'/%3E%3Ccircle cx='686.5' cy='390.5' r='9.5' fill='%23ec1683'/%3E%3Ccircle cx='86.5' cy='484.5' r='10.5' fill='%23ec1683'/%3E%3Ccircle cx='109.5' cy='525.5' r='15.5' fill='%236a3391'/%3E%3C/svg%3E") 0 0 / 100% 100% no-repeat;
}

/* --- Boutons centrés : la maquette les centre par text-align, le bloc Boutons est un conteneur flex */
:is(.partenaires, .confiance, .appel, .dons, .newsletter)>.wp-block-buttons { justify-content: center; }
.facon .wp-block-button.bouton:where(:not(.elementor-widget)),
.facon .wp-block-button.bouton:where(.elementor-widget-button) > .elementor-button { margin-top: 56px; }

/* --- Cartes de programmes générées par les fiches (boucles de requête, accueil et page Programmes) :
       la liste s'efface, les cartes gardent la grille de la maquette ; la 2e carte de l'accueil est
       la carte violette (bouton blanc). */
.wp-block-post-template:is(.programmes__grille, .catalogue__grille) { padding: 0; list-style: none; }
.wp-block-post-template:is(.programmes__grille, .catalogue__grille)>li { display: contents; }
.programmes__grille>li:nth-child(2)>.carte-programme { border-color: var(--violet); background: var(--violet); color: #fff; }
.programmes__grille>li:nth-child(2) .carte-programme__texte { color: #fff; }
.programmes__grille>li:nth-child(2) .wp-block-button.bouton:is(*, :hover):where(:not(.elementor-widget)),
.programmes__grille>li:nth-child(2) .wp-block-button.bouton:is(*, :hover):where(.elementor-widget-button) > .elementor-button { border-color: transparent; background: #fff; color: var(--encre); }

/* --- Cartes : l'image remplit son cadre */
:is(.carte-programme__image, .carte-prog__image)>:is(figure, div:where(.sc-boite.elementor-widget-image)) { height: 100%; }
.logos__item>:is(figure, div:where(.sc-boite.elementor-widget-image)) { display: grid; place-items: center; width: 100%; height: 100%; }
.logos__item--nu img { width: 140px; }
.logos__item--noir img { width: auto; max-width: 86%; }
.cadre__photo>:is(figure, div:where(.sc-boite.elementor-widget-image)) { height: 100%; }

/* --- Onglets : les déclencheurs sont des paragraphes éditables */
.onglets__bouton:where(:not(.elementor-widget)),
.onglets__bouton:where(.elementor-widget-text-editor) > :where(:not(.elementor-element-overlay, .ui-resizable-handle)) { user-select: none; }

/* --- Cartes d'information (contact) */
.info::before {
  content: "";
  flex: none;
  width: 80px;
  height: 80px;
  border: 1.5px solid #eee;
  border-radius: 50%;
  background: var(--icone) center / 30px no-repeat; --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
.info--lieu { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23ec1683' d='M12 2a7 7 0 0 0-7 7c0 5.2 7 13 7 13s7-7.8 7-13a7 7 0 0 0-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E"); }
.info--mail { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23ec1683' d='M2 5h20v14H2zm2 2v.5l8 5 8-5V7l-8 5z'/%3E%3C/svg%3E"); }
.info--tel { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23ec1683' d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.1.4 2.3.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1A17 17 0 0 1 3 4c0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.3.2 2.5.6 3.6.1.3 0 .7-.2 1z'/%3E%3C/svg%3E"); }

/* ==========================================================================
   En-tête : core/navigation, logo du site
   ========================================================================== */
.logo .wp-block-site-logo { line-height: 0; }
.logo .wp-block-site-logo img { width: 58px; height: auto; }
.pied .logo .wp-block-site-logo img { width: 57px; }
.logo__texte a { color: inherit; }
.entete .menu { gap: 25px; }
.menu .wp-block-navigation__container { gap: 25px; }
.menu .wp-block-navigation-item__content {
  font-family: var(--corps);
  font-size: 17px;
  color: var(--encre);
  transition: color .2s;
}
.menu .wp-block-navigation-item:hover>.wp-block-navigation-item__content,
.menu .est-courant>.wp-block-navigation-item__content { color: var(--rose); }
.menu .wp-block-navigation__submenu-icon { width: 9px; height: 9px; margin-left: 5px; color: var(--encre); }
.wp-block-navigation.menu .wp-block-navigation__submenu-container {
  min-width: 210px !important;
  padding: 12px 0;
  border: 0;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 14px 40px rgba(43, 43, 70, .12);
  top: calc(100% + 14px);
  left: -18px;
}
.wp-block-navigation.menu .wp-block-navigation__submenu-container::before { content: ""; position: absolute; inset: -14px 0 auto; height: 14px; }
.wp-block-navigation.menu .wp-block-navigation__submenu-container .wp-block-navigation-item__content { padding: 9px 20px; font-size: 16px; }
.menu .wp-block-navigation__responsive-container-open {
  width: 48px;
  height: 48px;
  place-items: center;
  border: 1.5px solid var(--rose);
  border-radius: 50%;
  color: var(--rose);
}
.wp-block-navigation.menu .wp-block-navigation__responsive-container.is-menu-open {
  padding: 32px var(--gouttiere);
  background-color: #fff !important;
  color: var(--encre) !important;
}
.wp-block-navigation.menu .is-menu-open .wp-block-navigation-item__content { font-size: 20px; }
.wp-block-navigation.menu .is-menu-open .wp-block-navigation__container { gap: 18px; }
.wp-block-navigation.menu .is-menu-open .wp-block-navigation__submenu-container { box-shadow: none; padding: 8px 0 0 16px; }

/* ==========================================================================
   Pied de page
   ========================================================================== */
.pied__apropos>p,
.pied__apropos>:where(.elementor-widget-text-editor) > p { margin-top: 18px; max-width: 380px; font-size: 24px; line-height: 34px; color: var(--encre); }
.reseaux.wp-block-social-links { gap: 14px; margin-top: 44px; padding: 0; }
.reseaux .wp-social-link { margin: 0; background: none !important; color: var(--encre) !important; }
.reseaux .wp-social-link a { padding: 3px; }
.reseaux .wp-social-link svg { width: 16px; height: 16px; }
.pied__liens li { list-style: none; }
.pied__legal a:not(:last-child) { margin-right: 0; }

/* ==========================================================================
   Formulaires Contact Form 7
   ========================================================================== */
.wpcf7 .wpcf7-form-control-wrap { display: block; }
.wpcf7-spinner { display: none; }
.wpcf7 .hidden-fields-container { display: none; }
.wpcf7-not-valid-tip { margin-top: 6px; font-family: var(--corps); font-size: 14px; color: var(--rose); }
.wpcf7 form .wpcf7-response-output { flex-basis: 100%; margin: 18px 0 0; padding: 12px 18px; border-radius: 12px; border: 1.5px solid currentColor; font-family: var(--corps); font-size: 15px; --sc-basis: 100%; }
.formulaire-inscription .wpcf7-form { display: flex; flex-wrap: wrap; justify-content: center; }
.formulaire-inscription__champ::before {
  content: "";
  width: 26px; height: 26px;
  flex: none;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4' fill='none' stroke='%23000' stroke-width='1.6'/%3E%3Cpath d='M16 8v5.5a2.5 2.5 0 0 0 5 0V12a9 9 0 1 0-3.5 7.1' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round'/%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%3Ccircle cx='12' cy='12' r='4' fill='none' stroke='%23000' stroke-width='1.6'/%3E%3Cpath d='M16 8v5.5a2.5 2.5 0 0 0 5 0V12a9 9 0 1 0-3.5 7.1' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat; --sc-grow: 0; --sc-shrink: 0; --sc-basis: auto; }
.formulaire-inscription__champ .wpcf7-form-control-wrap { flex: 1; --sc-grow: 1; --sc-shrink: 1; --sc-basis: 0%; }
.newsletter .wpcf7 form .wpcf7-response-output { max-width: 620px; color: #fff; }
/* Anti-robot Cloudflare Turnstile ([turnstile appearance:interaction-only] dans chaque formulaire) : la case n'apparaît
   qu'en cas de doute. Contact : au-dessus du bouton ; newsletter : sur sa propre ligne, sous le champ et le bouton.
   Invisible, elle a une hauteur nulle ; la marge ne s'applique que lorsqu'elle est affichée (classe posée par app.js) :
   la mise en page ne bouge pas pour les visiteurs à qui Cloudflare ne demande rien. */
.wpcf7-turnstile { display: flex; }
.formulaire-inscription .wpcf7-turnstile { flex-basis: 100%; justify-content: center; --sc-basis: 100%; }
.wpcf7-turnstile.est-visible { margin-top: 18px; }
input.bouton:where(:not(.elementor-widget)),
input.bouton:where(.elementor-widget-button) > .elementor-button { -webkit-appearance: none; appearance: none; }
.champ__saisie::after {
  content: "";
  position: absolute;
  right: 20px;
  top: 22px;
  width: 14px;
  height: 14px;
  background: var(--rose);
  -webkit-mask: var(--icone) center / contain no-repeat;
  mask: var(--icone) center / contain no-repeat;
}
.champ__saisie--email { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M2 11L22 2l-9 20-2-9z'/%3E%3C/svg%3E"); }
.champ__saisie--tel { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.1.4 2.3.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1A17 17 0 0 1 3 4c0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.3.2 2.5.6 3.6.1.3 0 .7-.2 1z'/%3E%3C/svg%3E"); }
.champ__saisie--message { --icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M2 5h20v14H2zm2 2v.5l8 5 8-5V7l-8 5z'/%3E%3C/svg%3E"); }
.carte-formulaire .wpcf7-form>.bouton:where(:not(.elementor-widget)),
.carte-formulaire .wpcf7-form>.bouton:where(.elementor-widget-button) > .elementor-button { margin-top: 38px; min-height: 60px; padding: 0 26px; font-family: var(--corps); font-size: 14px; letter-spacing: .1em; }

/* ==========================================================================
   Blog : boucles de requête, barre latérale, article, commentaires
   ========================================================================== */
.requete-blog .cartes-blog { margin-block: 118px 0; padding: 0; list-style: none; }
.cartes-blog>li { display: flex; }
.cartes-blog .carte-blog { width: 100%; }
.carte-blog .wp-block-post-featured-image img { width: 100%; aspect-ratio: 410 / 261; object-fit: cover; }
.carte-blog .wp-block-post-title { font-size: 21px; line-height: 34px; color: var(--encre); letter-spacing: .01em; }
.carte-blog .wp-block-post-excerpt { margin-top: 10px; }
.carte-blog .wp-block-post-excerpt__excerpt { margin: 0; font-family: var(--corps); font-size: 16px; line-height: 34px; color: var(--gris); }
.carte-blog .wp-block-read-more {
  display: inline-flex;
  align-self: flex-start;
  width: auto;
  min-height: 60px;
  margin-top: 40px;
  padding: 0 24px;
  font-family: var(--corps);
  font-size: 13px;
  letter-spacing: .1em;
}
.carte-blog .wp-block-read-more { color: var(--rose); }
.carte-blog .wp-block-read-more:hover { color: #fff; }
.cartes-blog>li:nth-child(2) .wp-block-read-more { border-color: var(--rose); background: var(--rose); color: #fff; }


/* ==========================================================================
   Écrans plus étroits
   ========================================================================== */
@media (max-width: 1400px) {
  /* écarts du menu resserrés, comme dans la maquette */
  .entete .menu,
.menu .wp-block-navigation__container { gap: 18px; }
}
@media (max-width: 1300px) {
  .entete .menu,
.menu .wp-block-navigation__container { gap: 14px; }
  .menu .wp-block-navigation-item__content { font-size: 16px; }
}
@media (max-width: 1200px) {
  /* le panneau mobile de core/navigation prend le relais dès 1200 px, comme dans la maquette */
  .entete .menu,
.entete .entete__action { display: flex; }
  .entete .entete__action { display: none; }
  .menu .wp-block-navigation__responsive-container-open:not(.always-shown) { display: grid; }
  .menu .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }
  .entete .menu { margin-left: auto; }
}
@media (max-width: 1100px) {
  .blog-mise { grid-template-columns: 1fr; }
}
@media (max-width: 700px) {
  .info::before { width: 60px; height: 60px; }
  .formulaire-inscription .wpcf7-form { flex-direction: column; align-items: stretch; gap: 12px; --sc-direction: column; }
  .formulaire-commentaire .comment-form { grid-template-columns: 1fr; }
  .carte-formulaire .champs-2 { grid-template-columns: 1fr; }
  .article .article__titre { font-size: 30px; }
  .requete-blog .cartes-blog { margin-top: 56px; }
}

/* ==========================================================================
   Version anglaise (Polylang) : textes plus longs que ceux de la maquette
   ========================================================================== */
/* « Dare To Go Digital » (706 px à 78 px) dépasse la colonne de 660 px du titre, qui ne passe pas à la ligne */
@media (min-width: 1401px) {
  :lang(en) .hero__titre:where(:not(.elementor-widget)),
:lang(en) .hero__titre:where(.elementor-widget-heading) > :where(.elementor-heading-title) { font-size: 72px; }
}

/* ==========================================================================
   Dons : fenêtre de paiement du plugin Aron Payments (code court [shecode_don], voir inc/dons.php)
   ========================================================================== */
/* seule la fenêtre compte : le bouton du plugin est masqué, les boutons « Faire un don » du site l'ouvrent */
.don-smallpay,
.don-smallpay .aron-pay { display: contents; }
.don-smallpay .aron-pay-button { display: none; }
/* fenêtre aux couleurs du site, toujours claire (le site n'a pas de thème sombre) */
.don-smallpay .aron-pay-modal {
  width: min(92vw, 420px);
  padding: 32px 30px 26px;
  border-radius: 22px;
  color: var(--encre);
  background: #fff;
  box-shadow: 0 24px 60px rgba(43, 43, 70, .22);
  font-family: var(--corps);
}
.don-smallpay .aron-pay-modal::backdrop { background: rgba(43, 43, 70, .55); }
.don-smallpay .aron-pay-title { margin-bottom: 18px; font-family: var(--titre); font-size: 28px; font-weight: 700; color: var(--violet); }
.don-smallpay .aron-pay-label { font-size: 15px; font-weight: 600; color: var(--encre); }
.don-smallpay .aron-pay-input { padding: 12px 16px; border: 1.5px solid #e2dcea; border-radius: 12px; color: var(--encre); background: #fff; font-size: 17px; }
.don-smallpay .aron-pay-input:focus { outline: 2px solid var(--rose); outline-offset: 1px; border-color: transparent; }
.don-smallpay .aron-pay-hint,
.don-smallpay .aron-pay-note { color: #6b6b6b; }
.don-smallpay .aron-pay-actions { margin-top: 24px; }
.don-smallpay .aron-pay-actions button { min-height: 50px; border-radius: 999px; font-family: var(--titre); font-size: 14px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.don-smallpay .aron-pay-cancel { color: var(--violet); background: #fff; border: 1.5px solid var(--violet); }
.don-smallpay .aron-pay-submit:hover { filter: brightness(1.06); }

/* En-tête du thème (sans Ultimate Addons for Elementor) : fixe au défilement, comme celui d'Elementor */
.wp-site-blocks>header.wp-block-template-part { position: sticky; top: var(--wp-admin--admin-bar--height, 0px); z-index: 100; }

/* Cartes des boucles (programmes, articles) : chaque carte remplit sa cellule, les boutons s'alignent en bas */
.wp-block-post-template>li>:is(.carte-programme, .carte-blog) { height: 100%; }

/* ==========================================================================
   Adaptations Elementor
   Les pages sont aussi enregistrées au format Elementor (même design). La plupart
   des règles de la maquette s'appliquent telles quelles, ou réécrites à la
   construction du thème (scripts/css-elementor.mjs). Ici : ce que le balisage
   d'Elementor change en plus.
   ========================================================================== */

/* --- Carte chiffre : l'icône (widget Image effacé) occupe les deux lignes */
.carte-chiffre > .sc:where(.elementor-widget-image):first-child > img { grid-row: span 2; align-self: center; }

/* --- Chiffres clés : widgets Compteur. Balisage d'Elementor : .elementor-counter > titre, puis
       .elementor-counter-number-wrapper (préfixe « + », nombre, suffixe) ; il remet le nombre au-dessus
       (column-reverse). Nombre = .chiffre__nombre, préfixe = son <em>, titre = .chiffre__libelle. */
.chiffre .elementor-counter { display: flex; flex-direction: column-reverse; align-items: center; justify-content: flex-start; }
.chiffre .elementor-counter-number-wrapper {
  display: flex;
  flex: none;
  align-items: center;
  font-size: 60px;
  font-weight: 700;
  line-height: 1;
  text-align: inherit;
}
.chiffre .elementor-counter-number-prefix {
  flex-grow: 0;
  margin-right: 2px;
  font-size: 50px;
  color: var(--rose);
  white-space: normal;
  transform: translateY(6px);
}
:is(.chiffre, .carte-chiffre) .elementor-counter-number-suffix:empty { display: none; }
.chiffre .elementor-counter-title {
  display: block;
  flex: none;
  align-self: stretch;
  margin-top: 12px;
  font-size: 19px;
  font-weight: 600;
  line-height: 1;
}
/* carte rose : l'icône sur deux lignes, puis le nombre (« +260 », d'un seul tenant) et son libellé */
.carte-chiffre .elementor-counter { display: contents; }
.carte-chiffre .elementor-counter-number-wrapper {
  display: flex; /* « + » et nombre d'un seul tenant (l'espace entre les deux balises ne compte plus) */
  grid-area: 1 / 2;
  font-size: 58px;
  font-weight: 700;
  line-height: 1;
  text-align: start;
}
.carte-chiffre .elementor-counter-number-prefix { flex-grow: 0; white-space: normal; }
.carte-chiffre .elementor-counter-title {
  display: block;
  grid-area: 2 / 2;
  margin-top: 10px;
  font-size: 17px;
  font-weight: 700;
  line-height: normal;
  justify-content: normal;
}

/* widget Google Maps : la carte remplit son cadre (Elementor lui donne 300 px de haut par défaut) */
.coordonnees__carte.elementor-widget-google_maps iframe { height: 100%; }

/* --- Médiathèque : galerie de la fenêtre (widget Galerie basique : balisage de [gallery]).
       L'enveloppe du widget est la grille ; les deux niveaux intermédiaires s'effacent. */
.galerie-modale.elementor-widget-image-gallery {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin: 0;
}
.galerie-modale .elementor-image-gallery,
.galerie-modale .elementor-image-gallery .gallery { display: contents; }
.galerie-modale .elementor-image-gallery .gallery .gallery-item {
  display: block;
  width: auto;
  max-width: none;
  margin: 0;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: 12px;
  cursor: zoom-in;
}
.galerie-modale .gallery-item .gallery-icon { height: 100%; }
.galerie-modale .elementor-image-gallery .gallery-item img {
  width: 100%;
  height: 100%;
  margin: 0;
  object-fit: cover;
  transition: transform .4s;
}
.galerie-modale .gallery-item:hover img { transform: scale(1.04); }
.mode-visionneuse .galerie-modale.elementor-widget-image-gallery { grid-template-columns: minmax(0, 1fr); }
.mode-visionneuse .galerie-modale .elementor-image-gallery .gallery .gallery-item { display: none; }
.mode-visionneuse .galerie-modale .elementor-image-gallery .gallery .gallery-item.est-agrandie {
  display: block;
  aspect-ratio: auto;
  height: min(66vh, 680px);
  background: #1d1d2e;
  cursor: default;
}
.mode-visionneuse .galerie-modale .elementor-image-gallery .gallery-item.est-agrandie img { object-fit: contain; transform: none; }
.galerie-modale .gallery-item:focus-visible { outline: 3px solid var(--violet); outline-offset: 3px; }
.evenement__mosaique > .sc-boite:focus-visible { outline: 3px solid var(--violet); outline-offset: 3px; }

/* ==========================================================================
   En-tête et pied de page : modèles d'Ultimate Addons for Elementor (UAE)
   UAE les affiche dans <header id="masthead"> et <footer id="colophon">.
   ========================================================================== */

/* En-tête fixe au défilement : c'est l'enveloppe #masthead (enfant de la page entière) qui reste collée en haut,
   sous la barre d'administration pour les personnes connectées. */
/* (UAE impose « .ehf-header #masthead { position: relative } » : règle plus précise) */
body.ehf-header #masthead { position: sticky; top: var(--wp-admin--admin-bar--height, 0px); z-index: 100; }

/* --- Menu : widget « Menu de navigation » d'UAE. Balisage :
       div.hfe-nav-menu > div.hfe-nav-menu__toggle (burger) + nav > ul.hfe-nav-menu > li
       > div.hfe-has-submenu-container > a.hfe-menu-item > span.sub-arrow (chevron), puis ul.sub-menu > li > a.hfe-sub-menu-item.
       Dans la maquette, l'élément de la barre est le <nav> (sans marge) et la liste porte la marge de 110 px :
       ici, le widget porte les deux ; sa marge droite automatique empêcherait la répartition de la barre. */
.entete .menu.elementor-widget-navigation-menu { margin-right: 0; }
/* une seule ligne, comme la liste de la maquette (UAE autorise le retour à la ligne : « Contact » passait dessous) */
.menu .hfe-nav-menu__layout-horizontal .hfe-nav-menu { flex-wrap: nowrap; }
.menu .hfe-nav-menu a.hfe-menu-item { gap: 5px; justify-content: flex-start; line-height: normal; white-space: nowrap; }
/* chevron : celui de la maquette (trait fin de 9 px) à la place du caractère Font Awesome */
.menu .hfe-nav-menu .sub-arrow { width: 9px; height: 9px; margin: 2px 0 0; font-size: inherit; line-height: normal; }
.menu.hfe-submenu-icon-arrow .hfe-nav-menu .parent-has-child .sub-arrow i::before {
  content: "";
  display: block;
  width: 9px;
  height: 9px;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E") center / 100% no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E") center / 100% no-repeat;
}
.menu .hfe-nav-menu .sub-arrow i { width: 9px; height: 9px; font-size: 0; line-height: 0; }
/* sous-menu : carte blanche 14 px sous l'élément, décalée de 18 px, qui glisse de 6 px en apparaissant */
.menu .hfe-nav-menu .menu-item-has-children .sub-menu {
  min-width: 0; /* largeur : réglage « Largeur du menu déroulant » d'UAE (210 px) */
  top: calc(100% + 14px);
  left: -18px;
  margin-top: 0; /* réglage « Distance » d'UAE : s'ajoute aux 14 px */
  text-align: start;
  padding: 12px 0;
  background: #fff;
  box-shadow: 0 14px 40px rgba(43, 43, 70, .12);
  transform: translateY(6px);
  transition: opacity .2s, transform .2s, visibility .2s;
}
.menu .hfe-nav-menu .menu-item-has-children .sub-menu::before { content: ""; position: absolute; inset: -14px 0 auto; height: 14px; }
.menu .hfe-nav-menu .menu-item-has-children:is(:hover, :focus-within) > .sub-menu { visibility: visible; opacity: 1; transform: none; transition: opacity .2s, transform .2s, visibility .2s; }
.menu .hfe-nav-menu .sub-menu a.hfe-sub-menu-item { display: block; font-size: 16px; line-height: normal; }
.menu .hfe-nav-menu .sub-menu li.menu-item { overflow: visible; }
/* burger (sous 1200 px) : cercle de 48 px au trait rose */
.menu .hfe-nav-menu-icon { display: grid; place-items: center; width: 48px; height: 48px; padding: 0; border: 1.5px solid; border-radius: 50%; line-height: 1; }
/* --- Éditeur Elementor (aperçu) : ce que le site cache ou sort du flux reste éditable */
.elementor-editor-active .sc:where(.hero__visuel, .pilules__personne, .badge-date) { display: contents; }
.elementor-editor-active .onglets__panneau { display: block !important; position: static !important; }
.elementor-editor-active .onglets__panneau + .onglets__panneau { margin-top: 16px !important; padding-top: 16px; border-top: 1px dashed #d9cfe3; }
.elementor-editor-active .modale {
  display: block !important;
  position: static !important;
  grid-column: 1 / -1;
  margin-top: 8px;
  padding: 20px;
  border: 1.5px dashed #d9cfe3;
  border-radius: 16px;
  background: #faf9fb !important;
}
.elementor-editor-active .modale::before {
  content: "Fenêtre « Voir toutes les photos » — visible sur le site au clic sur le bouton";
  display: block;
  margin-bottom: 12px;
  font-family: var(--corps);
  font-size: 13px;
  color: var(--violet);
}
/* Bande de logos partenaires : immobile dans l'éditeur (un logo qui défile ne se sélectionne pas) ; une note l'explique */
.elementor-editor-active .logos-defilant::before {
  content: "Bande défilante : sur le site, ces logos défilent en continu. Ici, ils restent immobiles pour être modifiés : cliquez sur un logo pour changer son image, dupliquez un « Logos · item » pour ajouter un partenaire.";
  display: block;
  margin: 0 auto 20px;
  max-width: 760px;
  padding: 10px 16px;
  border: 1.5px dashed #d9cfe3;
  border-radius: 12px;
  background: #faf9fb;
  font-family: var(--corps);
  font-size: 13px;
  line-height: 1.5;
  color: var(--violet);
  text-align: center;
}
.elementor-editor-active:lang(en) .logos-defilant::before {
  content: "Scrolling strip: on the site, these logos scroll continuously. Here they stay still so you can edit them: click a logo to change its image, duplicate a « Logos · item » to add a partner.";
}
.elementor-editor-active .modale__boite { width: auto !important; max-height: none !important; overflow: visible !important; padding: 0 !important; box-shadow: none !important; background: transparent !important; }
.elementor-editor-active .modale__entete { position: static !important; background: transparent !important; }
.elementor-editor-active .visionneuse { display: flex !important; }
.elementor-editor-active :is(.modale__fermer, .visionneuse__precedente, .visionneuse__suivante) > :not(.elementor-element-overlay, .ui-resizable-handle) {
  width: auto !important;
  height: auto !important;
  padding: 8px 16px !important;
  border-radius: 999px !important;
  font-size: 14px !important;
  color: var(--encre) !important;
}
.elementor-editor-active :is(.modale__fermer, .visionneuse__precedente, .visionneuse__suivante) > :not(.elementor-element-overlay, .ui-resizable-handle)::before,
.elementor-editor-active .visionneuse::after { display: none !important; }

/* Écarts du menu resserrés comme dans la maquette (réglage « Espace entre les éléments » d'UAE, en pixels fixes) */
@media (max-width: 1400px) {
  #masthead .menu .hfe-nav-menu__layout-horizontal .hfe-nav-menu > li.menu-item:not(:last-child) { margin-right: 18px; }
}
@media (max-width: 1300px) {
  #masthead .menu .hfe-nav-menu__layout-horizontal .hfe-nav-menu > li.menu-item:not(:last-child) { margin-right: 14px; }
}
@media (max-width: 1100px) {
  .galerie-modale.elementor-widget-image-gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 1200px) {
  /* En-tête : le burger d'UAE remplace le menu dès 1200 px (UAE, seul, attendrait 1024 px). Menu ouvert :
     panneau blanc sous la barre, sur toute la largeur, sous-menus dépliés, comme dans la maquette. */
  .entete .menu.elementor-widget-navigation-menu { display: block; margin: 0 0 0 auto; }
  /* panneau placé par rapport à l'en-tête (.entete), pas au widget ni à la barre */
  .entete__barre.e-con,
  #masthead .menu.elementor-widget-navigation-menu,
  #masthead .menu .elementor-widget-container,
  #masthead .menu .hfe-nav-menu { position: static; }
  #masthead .menu .hfe-nav-menu__toggle { display: flex; }
  #masthead .menu .hfe-nav-menu__layout-horizontal {
    display: none;
    position: absolute;
    top: 78px;
    left: 0 !important;
    width: 100% !important;
    margin: 0;
    padding: 8px var(--gouttiere) 24px;
    border-radius: 0;
    background: #fff;
    box-shadow: 0 20px 30px rgba(43, 43, 70, .08);
    z-index: 20;
  }
  /* le rayon d'UAE (12 px) sert au sous-menu du grand écran ; le panneau, lui, est à angles droits */
  #masthead .menu .hfe-nav-menu__layout-horizontal li.menu-item { border-radius: 0; }
  #masthead .menu .hfe-active-menu + .hfe-nav-menu__layout-horizontal { display: block; }
  #masthead .menu .hfe-nav-menu__layout-horizontal .hfe-nav-menu { display: block; visibility: visible; opacity: 1; margin: 0; }
  #masthead .menu .hfe-nav-menu > li.menu-item { width: 100%; margin: 0; border-bottom: 1px solid #f1eef3; }
  #masthead .menu nav a.hfe-menu-item { padding: 14px 0; font-size: 18px; background: none; }
  #masthead .menu .hfe-nav-menu .sub-menu {
    position: static !important;
    visibility: visible !important;
    opacity: 1 !important;
    height: auto !important;
    width: auto;
    margin: 0;
    padding: 0 0 8px 16px;
    border-radius: 0;
    background: none;
    box-shadow: none;
    transform: none;
  }
  #masthead .menu .hfe-nav-menu .sub-menu::before { display: none; }
  #masthead .menu .hfe-nav-menu .sub-arrow { padding: 0; } /* UAE : 10 px sous 1024 px */
  #masthead .menu .hfe-nav-menu .sub-menu a.hfe-sub-menu-item { padding: 8px 0; font-size: 16px; background: none; }
}
@media (max-width: 700px) {
  .chiffre .elementor-counter-number-wrapper { font-size: 44px; }
  .chiffre .elementor-counter-number-prefix { font-size: 36px; }
  .galerie-modale.elementor-widget-image-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .mode-visionneuse .galerie-modale .elementor-image-gallery .gallery .gallery-item.est-agrandie { height: 62vh; }
}

/* --- Pied de page, dans l'éditeur : repère du code court [shecode_don] (fenêtre de paiement des dons) */
.elementor-editor-active .don-smallpay { display: block; }
.elementor-editor-active .don-smallpay::before {
  content: "Paiement des dons (plugin Aron Payments) : code court [shecode_don] — fenêtre ouverte par les boutons « Faire un don » (classe bouton-don). Montants : min, max, currency, description.";
  display: block;
  margin: 24px auto 0;
  max-width: 760px;
  padding: 10px 16px;
  border: 1.5px dashed #d9cfe3;
  border-radius: 12px;
  background: #faf9fb;
  font-family: var(--corps);
  font-size: 13px;
  line-height: 1.5;
  color: var(--violet);
  text-align: center;
}

/* Éditeur Elementor : pas de bouton « Retour en haut » par-dessus l'aperçu */
.elementor-editor-active .retour-haut { display: none; }
