/* ═══════════════════════════════════════════════════════════════════════════
   SOMMET LUMIÈRE — app.css   (ajustements front hors theme.json ; valeurs = Figma)

   SOMMAIRE   (tout replier : Cmd+K Cmd+0  ·  sauter : Cmd+F « §2.3 » ou « ▸ SMALL »)
   ─────────────────────────────────────────────────────────────────────────────
   §0   FONDATIONS       ossature · container-max · has-background · boutons
   §1   GLOBAL (toutes les pages)
        §1.1 Header / nav       §1.2 Launch minimal      §1.3 Sélecteur de langue
        §1.4 Burger + backdrop  §1.5 Header mobile       §1.6 Footer
   §2   HOME
        §2.1 Hero   §2.2 Présentation   §2.3 Actualités
        §2.4 Grands sujets   §2.5 Lieu   §2.6 CTA final
   §3   ARTICLE          single actualité + fil d'Ariane
   §4   PAGES TEXTE      mentions légales

   BREAKPOINTS (marqueurs « ▸ » dans le fichier) :
     ▸ LARGE ≥80em (base)  ·  ▸ MEDIUM ≤80em  ·  ▸ SMALL ≤62em  ·  ▸ XSMALL ≤30em
   Valeurs responsives (tailles, paddings, container-max-width) = theme.json
   › settings.custom.responsive (générées en @media par functions.php).
   ═══════════════════════════════════════════════════════════════════════════ */

/* #region  §0 · FONDATIONS — ossature · container-max · boutons */
/* ============ Ossature standard des sections ============
   section (ou header/footer) : flex column, top-center
     > .container-max : fill + max-width (var Figma) + padding horizontal-gap
       > .container-design : grille interne */
.section,
.site-header,
.site-footer {
	display: flex;
	flex-direction: column;
	align-items: center;
	width: 100%;
}
/* --container-max-width : valeurs responsives centralisées dans theme.json
   (settings.custom.responsive.layout), générées par functions.php comme les autres tokens.
   Ici on ne fait que la consommer. Large 1440px / Medium 1279 / Small 991 / Xsmall 479. */
.container-max {
	box-sizing: border-box;
	width: 100%;
	max-width: var(--container-max-width, 90rem);   /* Large : 1440px (padding-general inclus) */
	margin-inline: auto; /* centré au-delà de 1440 (décision Fred 2026-07-26, cf maquette 1920) */
	padding-inline: var(--wp--preset--spacing--padding-general, 4rem);   /* Large : 64px */
	padding-block: 0; /* Convention DS : .container-max = largeur seule, JAMAIS de padding vertical.
	                     Le rythme vertical vient des sections / .container-design. */
}
.container-design { width: 100%; }

/* Gras du texte : Akkurat n'a que 300 et 700. Le défaut navigateur `bolder` résout
   à 400 depuis un corps en 300 → retombe sur 300 (pas de gras visible). On force 700. */
strong, b { font-weight: 700; }

/* Textes courants & rich-text justifiés partout (demande Fred 2026-07-31) : corps
   d'article, mentions légales, bodies de la home, descriptions de cartes, chapôs.
   PAS les titres/labels/méta. SANS césure (décision Fred : pas de coupure de mots). */
.sl-article__body p,
.sl-article__body li,
.sl-article__lead,
.sl-legal__block p,
.sl-legal__credits,
.sl-s2__body,
.sl-s5__body,
.sl-s4__card-desc,
.sl-s3__card-body {
	text-align: justify;
}

/* Variante « full » (Hero) : container pleine largeur, sans max-width ni padding horizontal.
   Seule section full-bleed du site (les autres restent contraintes par .container-max). */
.container-max.container-max--full {
	max-width: none;
	padding-inline: 0;
}

/* WP core ajoute un padding gauche/droite par défaut aux groupes colorés
   (:where(.wp-block-group.has-background) { padding: 1.25rem 2.375rem })
   dès que le style du bloc ne fixe que top/bottom. On neutralise : le
   padding horizontal est déjà géré par container-max. */
.wp-block-group.has-background { padding-inline: 0; }

/* Tous les boutons principaux à la même hauteur : 47px (bouton « Gérez votre
   participation », Figma). Les boutons icônes (partage / back-to-top) sont 47×47. */
.wp-element-button {
	box-sizing: border-box;
	min-height: 2.9375rem;   /* 47px */
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

/* #endregion */

/* #region  §1.1 · GLOBAL · HEADER / NAV */
/* ============ En-tête — Figma « Navigation » (2131:1999) ============ */
.site-header {
	background: var(--wp--preset--color--blanc);
	border-bottom: 1px solid var(--wp--preset--color--gris-200);
	padding-block: var(--wp--preset--spacing--24);
}
/* .container-design : enfant unique nav.sl-header__nav — layout délégué à lui */
.site-header .container-design { display: flex; justify-content: space-between; }

/* Wrapper nav — flex row desktop */
.sl-header__nav {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	min-height: 3rem;   /* 48px — rangée de contenu (Figma) → header = 24+48+24 = 96px */
}

/* Vestige markup Osmo (sous-menus retirés du JS) : à sortir du flux flex,
   sinon ce div vide compte comme 3e enfant et casse le space-between (espace fantôme à droite). */
.sl-header__nav [data-dropdown-wrapper] { display: none; }

/* Logo — 2 variantes Figma : wordmark 1 ligne (Large ≥80rem) / compact 2 lignes (<80rem, node 8301:3449) */
.sl-header__logo { display: inline-flex; flex-shrink: 0; }
.sl-header__logo-img { width: auto; display: block; }
.sl-header__logo-img--large { height: 2.125rem; } /* 34px viewBox → lettres ~27px + largeur 315px = Figma nav Large */
.sl-header__logo-img--compact { height: 3rem; display: none; } /* 48px : taille Medium */
@media (max-width: 79.99em) { /* ▸ MEDIUM ≤80em */
	.sl-header__logo-img--large { display: none; }
	.sl-header__logo-img--compact { display: block; }
}
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.sl-header__logo-img--compact { height: 2rem; } /* 32px : taille Small/Xsmall */
}

/* Overlay nav (desktop : rangée droite ; mobile : plein écran via GSAP) */
.sl-nav {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--48);
	font-family: "Akkurat LL", system-ui, sans-serif;
	font-weight: 300;
	font-size: var(--wp--preset--font-size--body);
}
/* Liste des liens */
.sl-nav__list {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--32);
	list-style: none;
	margin: 0;
	padding: 0;
}
.sl-nav a { color: var(--wp--preset--color--noir); text-decoration: none; line-height: 1.45; }
.sl-nav a[aria-current="page"] { font-weight: 700; }

/* #endregion */

/* #region  §1.2 · GLOBAL · LAUNCH MINIMAL */
/* ============ Launch minimal — home sans lien mort ============
   Nav réduite à : logo + sélecteur de langue, à tous les paliers.
   Les liens de nav sont retirés côté PHP ; ici on masque le burger et on garde
   le sélecteur de langue INLINE sur mobile (sinon il serait piégé dans l'overlay
   qui n'a plus de burger pour l'ouvrir). */
.sl-launch-minimal .sl-header__burger-wrap { display: none; }
@media (max-width: 62em) { /* ▸ ≤62em (header mobile) */
	.sl-launch-minimal .sl-nav {
		position: static;
		inset: auto;
		flex-direction: row;
		justify-content: flex-end;
		align-items: center;
		background: none;
		padding: 0;
		opacity: 1;
		visibility: visible;
		z-index: auto;
	}
}

/* #endregion */

/* #region  §1.3 · GLOBAL · SÉLECTEUR DE LANGUE */
/* Sélecteur de langue — interrupteur (Figma 8007:16143).
   Piste beige FIXE (fond du conteneur) ; une seule « chip » blanche (bordure beige,
   comme la maquette) glisse d'une case à l'autre pour marquer la langue active.
   Le fond ne bouge pas : seule la chip coulisse selon [data-active]. */
.sl-lang {
	position: relative;
	display: inline-flex;
	align-items: center;
	/* Polylang sort FR puis EN dans le DOM → ordre naturel : FR à gauche, EN à droite.
	   Le FRANÇAIS est la langue PRINCIPALE/par défaut du site (décision Fred 2026-08-01,
	   retour arrière après un essai EN par défaut). */
	flex-direction: row;
	background: var(--wp--preset--color--beige); /* piste fixe */
}
.sl-lang__chip {
	position: absolute;
	top: 0;
	left: 0;
	box-sizing: border-box;
	width: 2.0625rem;  /* 33px */
	height: 2rem;      /* 32px */
	background: var(--wp--preset--color--blanc);
	border: 1px solid var(--wp--preset--color--beige);
	pointer-events: none;
	z-index: 0;
	transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1);
}
/* Ordre visuel : FR à gauche (slot 0), EN à droite (slot 1). */
.sl-lang[data-active="fr"] .sl-lang__chip { transform: translateX(0); }          /* chip sous FR (gauche) */
.sl-lang[data-active="en"] .sl-lang__chip { transform: translateX(2.0625rem); }  /* chip sous EN (droite) */
.sl-lang__btn {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.0625rem;  /* 33px */
	height: 2rem;      /* 32px */
	font-size: var(--wp--preset--font-size--legal);
	color: var(--wp--preset--color--noir);
	text-decoration: none;
	line-height: 1.2;
	font-weight: 300;  /* Light (inactive) */
}
/* Langue active (selon data-active) → texte Bold, comme la maquette */
.sl-lang[data-active="fr"] .sl-lang__btn[lang="fr"],
.sl-lang[data-active="en"] .sl-lang__btn[lang="en"] { font-weight: 700; }
@media (prefers-reduced-motion: reduce) {
	.sl-lang__chip { transition: none; }
}

/* #endregion */

/* #region  §1.4 · GLOBAL · BURGER + BACKDROP MOBILE */
/* Burger — masqué sur desktop */
/* position/z-index : doit rester au-dessus de l'overlay .sl-nav (z-index:200 en mobile),
   sinon le burger (animé en croix à l'ouverture) se retrouve caché dessous. */
.sl-header__burger-wrap { display: none; align-items: center; position: relative; z-index: 210; }
/* Burger — Figma Xsmall node 8012:16229 : 2 traits de 42×2px, gap 4px, noir, sans fond */
.sl-burger {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: center;
	gap: 0.25rem;              /* 4px */
	padding-block: 0.75rem;    /* 12px — zone de tap */
	width: 2.625rem;           /* 42px */
	background: none;
	border: none;
	cursor: pointer;
}
.sl-burger__line {
	display: block;
	width: 2.625rem;   /* 42px */
	height: 0.125rem;  /* 2px */
	background: var(--wp--preset--color--noir);
	transform-origin: center;
}

/* Backdrop mobile */
.mega-nav__backdrop {
	display: none;
	position: fixed;
	inset: 0;
	z-index: 190;
	background: rgba(0, 0, 0, 0.3);
	cursor: pointer;
}
[data-menu-open="true"] .mega-nav__backdrop { display: block; }

/* #endregion */

/* #region  §1.5 · GLOBAL · HEADER MOBILE (≤62em) */
/* ============ Header — mobile (≤62rem / 992px) ============ */
@media (max-width: 62em) { /* ▸ ≤62em (header mobile) */
	.sl-header__burger-wrap { display: flex; }

	/* Overlay plein écran — état initial masqué (GSAP anime open/close) */
	.sl-nav {
		position: fixed;
		inset: 0;
		flex-direction: column;
		justify-content: center;
		align-items: center;
		gap: var(--wp--preset--spacing--48);
		background: var(--wp--preset--color--blanc);
		z-index: 200;
		padding: var(--wp--preset--spacing--48);
		opacity: 0;
		visibility: hidden;
	}

	/* Liste de liens en colonne */
	.sl-nav__list {
		flex-direction: column;
		align-items: center;
		gap: 0;
		width: 100%;
	}
	.sl-nav__list li {
		width: 100%;
		text-align: center;
	}
	.sl-nav__list a {
		display: block;
		width: 100%;
		padding-block: var(--wp--preset--spacing--16);
		border-bottom: 1px solid var(--wp--preset--color--gris-200);
		font-size: 1.25rem;
	}
}

/* #endregion */

/* #region  §1.6 · GLOBAL · FOOTER */
/* ============ Pied de page — Figma « Footer » (6002:11505) ============ */
.site-footer {
	background: var(--wp--preset--color--blanc);
	padding-block: var(--wp--preset--spacing--24);
	position: relative;
}
.site-footer .container-design {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--horizontal-gap);
	align-items: flex-start;
}
.sl-footer__logos {
	display: flex;
	flex-wrap: wrap;                              /* pas de débordement : retour à la ligne si trop étroit */
	align-items: flex-start;
	gap: var(--wp--preset--spacing--64);
	padding-block: var(--wp--preset--spacing--12);
}
.sl-footer__logo { display: block; width: auto; max-width: 100%; }
.sl-footer__logo--cnc { height: 2.0625rem; }   /* 33px — relevé maquette footer (réduit vs 48px) */
.sl-footer__logo--rf  { height: 4.4375rem; }   /* 71px */
.sl-footer__line {
	width: 100%;
	height: 0;
	border: 0;
	border-top: 1px solid var(--wp--preset--color--gris-300);
	margin: 0;
}
/* Rangée basse (Figma 6002:11505) : © (gauche) + liens légaux (droite), sous le filet. */
.sl-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: flex-end;
	width: 100%;
	gap: var(--wp--preset--spacing--16);
	font-family: "Akkurat LL", system-ui, sans-serif;
	font-weight: 300;
	font-size: var(--wp--preset--font-size--legal);
	line-height: 1.2;
}
.sl-footer__copy { margin: 0; color: var(--wp--preset--color--noir); }
.sl-footer__nav {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: var(--wp--preset--spacing--16);
}
.sl-footer__nav a { color: var(--wp--preset--color--noir); text-decoration: none; line-height: 1.2; }
.sl-footer__nav a:hover,
.sl-footer__nav a:focus-visible { text-decoration: underline; }

/* Bouton back to top — fixe en bas à droite */
.sl-footer__btt {
	position: fixed;
	bottom: var(--wp--preset--spacing--32);
	right: var(--wp--preset--spacing--32);
	z-index: 100;
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.9375rem;   /* 47px — même taille que « Gérez votre participation » / boutons de partage */
	height: 2.9375rem;
	background: var(--wp--preset--color--blanc);
	color: var(--wp--preset--color--noir);
	border: 1px solid var(--wp--preset--color--noir);
	/* carré, sans radius (comme les boutons de partage) */
	cursor: pointer;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.25s ease, visibility 0.25s ease, background-color 0.2s ease, color 0.2s ease;
}
.sl-footer__btt.is-visible {
	opacity: 1;
	visibility: visible;
}
.sl-footer__btt:hover,
.sl-footer__btt:focus-visible {
	background: var(--wp--preset--color--noir);
	color: var(--wp--preset--color--blanc);
}
.sl-footer__btt svg { display: block; }

/* Responsive footer — cascade desktop-first (base = Large ≥80rem, cf. Figma 6002:11505).
   Base ci-dessus = Large + Medium (logos en ligne, nav space-between). */
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.site-footer { padding-block: var(--wp--preset--spacing--16); }   /* 24 → 14px */
	.sl-footer__logos { gap: var(--wp--preset--spacing--24); }        /* 48 → ~20px (Small en ligne / Xsmall vertical) */
	/* Rangée basse empilée : Mentions légales AU-DESSUS, © en dessous (relevé Figma Small/Xsmall).
	   column-reverse car l'ordre DOM est © (1er) puis liens (2e) pour le desktop space-between. */
	.sl-footer__bottom {
		flex-direction: column-reverse;
		flex-wrap: nowrap;
		align-items: flex-start;
		gap: 0;                                                       /* écart = line-height (maquette) */
	}
	.sl-footer__nav {
		flex-direction: column;
		flex-wrap: nowrap;
		align-items: flex-start;
		gap: 0;                                                       /* liens empilés, écart = line-height */
	}
}
@media (max-width: 29.99em) { /* ▸ XSMALL ≤30em */
	.sl-footer__logos { flex-direction: column; }                     /* CNC / RF / MC empilés */
}

/* #endregion */

/* #region  §2.1 · HOME · S1 HERO */
/* ============ S1 · HERO — Figma (Large 8424:7030 / Medium 8603:7767 /
   Small 8603:9201 / Xsmall 8603:10172) ============
   Grille 24 col × 3 rangées (0.75/1/0.75), full-bleed beige + bandes prismatiques.
   Cascade desktop-first (comme theme.json) : base = Large ≥80rem, puis paliers max-width. */

.sl-hero {
	background: var(--wp--preset--color--beige);
	overflow: clip; /* aucune bande ne déborde de la section en largeur */
}

/* Pas de gap vertical (blockGap) autour du Hero full-bleed ni des template parts
   (header/footer) : sinon une bande beige (fond body) apparaît au-dessus/en dessous
   des barres chromatiques, absente de la maquette. */
.sl-hero,
.wp-block-template-part,
main,
.section { margin-block-start: 0; } /* pas de gap (blockGap) entre sections empilées : chacune gère son padding interne */

.sl-hero__grid {
	display: grid;
	grid-template-columns: repeat(24, minmax(0, 1fr));
	grid-template-rows: minmax(0, 0.75fr) minmax(0, 1fr) minmax(0, 0.75fr);
	column-gap: var(--wp--preset--spacing--horizontal-gap); /* Large : 1.25rem (20px) */
	row-gap: 0;
	width: 100%;
	min-height: 44.0625rem;                                    /* 705px — relevé Figma Large/Medium (em sur body 20px : 705/20) */
}
@media (max-width: 79.99em) { /* ▸ MEDIUM ≤80em */
	.sl-hero__grid { column-gap: var(--wp--preset--spacing--8); }   /* 8px */
}
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.sl-hero__grid { column-gap: var(--wp--preset--spacing--4); min-height: 30rem; } /* 4px / 480px (24×20) */
}
@media (max-width: 29.99em) { /* ▸ XSMALL ≤30em */
	.sl-hero__grid { min-height: 23rem; }                 /* 368px (18.4×20) */
}

/* Édition blocs natifs (FSE) : la grille et le sur-titre sont des wp:group
   (is-layout-flow). Le blockGap global (theme.json styles.spacing.blockGap = 1.5rem)
   ajouterait un margin-block-start entre enfants → décalerait les items dans leur
   cellule de grille. Les deux groupes portent l'attribut style.spacing.blockGap:0
   (conteneur WP côté serveur) ; ce reset CSS garantit l'annulation quelle que soit
   la version WP et neutralise aussi les marges par défaut des <p>/<h1>. */
.sl-hero__grid > *,
.sl-hero__surtitle > * { margin-block: 0; }

/* --- Bandes prismatiques (décoratives) ---
   3 jeux (desktop/small/xsmall) ; display:contents → les bandes deviennent items de
   la grille ; on bascule le jeu actif par palier. */
.sl-hero__bands { display: none; }
.sl-hero__bands--desktop { display: contents; }           /* Large + Medium */
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.sl-hero__bands--desktop { display: none; }
	.sl-hero__bands--small { display: contents; }         /* Small */
}
@media (max-width: 29.99em) { /* ▸ XSMALL ≤30em */
	.sl-hero__bands--small { display: none; }
	.sl-hero__bands--xsmall { display: contents; }        /* Xsmall */
}

/* Bande = cellule de grille clippée. Le dégradé (--band-grad, posé inline) vit sur
   ::before DOUBLÉ (repeat-x, 2 copies) et DÉFILE de la gauche vers la droite via
   translateX, en boucle continue — déplacement du dégradé (PAS d'opacité), fidèle à
   l'interaction Figma (Change to · Smart animate · Ease out · 1500ms · relance after-delay).
   Repos / prefers-reduced-motion = dégradé fixe (aucune anim). */
.sl-hero__band {
	align-self: stretch;
	min-height: 0;
	overflow: hidden;
	position: relative;               /* ancre le dégradé animé (::before) */
	--band-delay: 0ms;
	--band-dur: 3700ms;               /* entrée ~35% + tenue ~54% (≈2000ms) + fondu ~11% */
}
.sl-hero__band::before {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--band-grad);     /* un seul dégradé (custom prop inline) */
}
/* GSAP (JS) : masque l'animation CSS de secours (::before) et affiche le fill animé par GSAP. */
.sl-hero.gsap-bands .sl-hero__band::before { display: none; }
.sl-hero__band-fill {
	position: absolute;
	inset: 0;
	background: var(--band-grad);     /* hérité de la bande */
	will-change: transform, opacity;
}
@media (prefers-reduced-motion: no-preference) {
	.sl-hero__band::before {
		animation: sl-hero-band-sweep var(--band-dur) ease-out var(--band-delay) infinite;
	}
	/* Panachage par bande : durée (→ tenue ~2000ms) + délai de départ désynchronisés. */
	.sl-hero__band:nth-child(8n+1) { --band-dur: 3600ms; --band-delay: 0ms; }
	.sl-hero__band:nth-child(8n+2) { --band-dur: 4000ms; --band-delay: 190ms; }
	.sl-hero__band:nth-child(8n+3) { --band-dur: 3400ms; --band-delay: 400ms; }
	.sl-hero__band:nth-child(8n+4) { --band-dur: 3900ms; --band-delay: 120ms; }
	.sl-hero__band:nth-child(8n+5) { --band-dur: 3500ms; --band-delay: 520ms; }
	.sl-hero__band:nth-child(8n+6) { --band-dur: 4100ms; --band-delay: 300ms; }
	.sl-hero__band:nth-child(8n+7) { --band-dur: 3700ms; --band-delay: 60ms; }
	.sl-hero__band:nth-child(8n)   { --band-dur: 3800ms; --band-delay: 440ms; }
	/* Hover : relance IMMÉDIATE de l'animation (nom d'animation différent → redémarre
	   à 0), indépendamment du temps passé sur la bande. */
	@media (hover: hover) {
		.sl-hero__band:hover::before { animation-name: sl-hero-band-sweep-hover; }
	}
}
/* Cycle perpétuel : le dégradé part HORS-CHAMP à gauche, RENTRE entièrement (gauche →
   droite), S'ARRÊTE une fois complètement visible (translateX 0), s'y tient un court
   instant, puis disparaît en opacité SUR PLACE. Reset de boucle invisible (opacity 0
   → retour hors-champ gauche). */
@keyframes sl-hero-band-sweep {
	0%   { transform: translateX(-100%); opacity: 1; } /* hors-champ gauche */
	35%  { transform: translateX(0);     opacity: 1; } /* entièrement rentré → STOP */
	89%  { transform: translateX(0);     opacity: 1; } /* longue tenue (~2000ms) */
	100% { transform: translateX(0);     opacity: 0; } /* disparaît en opacité, sur place */
}
/* Hover : rembobine ~300ms (retour au départ) puis rejoue — relance immédiate. */
@keyframes sl-hero-band-sweep-hover {
	0%   { transform: translateX(0);     opacity: 1; } /* départ du rembobinage (état visible) */
	8%   { transform: translateX(-100%); opacity: 1; } /* rembobiné au départ (~300ms) */
	43%  { transform: translateX(0);     opacity: 1; } /* re-rentre → stop */
	89%  { transform: translateX(0);     opacity: 1; } /* longue tenue */
	100% { transform: translateX(0);     opacity: 0; } /* disparaît en opacité */
}
/* Bandes à largeur fixe (relevé KV) : ancrées au départ de leur colonne. */
.sl-hero__band--fixed {
	justify-self: start;
	width: min(var(--band-w), 100%); /* plafonné à l'emprise de colonnes : pas de chevauchement/débordement */
}
/* Hover des bandes : les blocs de contenu du Hero (sur-titre, logotype, baseline) sont posés
   AU-DESSUS des bandes (z-index:1) et, même transparents, intercepteraient le survol. Aucun
   n'est interactif → on les rend transparents au pointeur pour laisser passer le hover vers
   les bandes. (Les bandes reprennent pointer-events:auto par défaut.) */
.sl-hero__surtitle,
.sl-hero__logotype,
.sl-hero__baseline { pointer-events: none; }

/* --- Sur-titre date (rangée 1) : 2 lignes, tailles fixes non responsives ---
   Édition blocs natifs : .sl-hero__surtitle est un wp:group (item de grille) qui
   contient 2 paragraphes éditables inline (.sl-hero__surtitle-l1 / -l2). */
.sl-hero__surtitle {
	grid-row: 1;
	grid-column: 16 / span 4;                              /* Large + Medium */
	align-self: center;
	margin: 0;
	text-align: right;
	color: var(--wp--preset--color--noir);
	letter-spacing: 0;
	position: relative;
	z-index: 1;
}
.sl-hero__surtitle-l1,
.sl-hero__surtitle-l2 { display: block; margin: 0; }
.sl-hero__surtitle-l1 { font-size: var(--wp--preset--font-size--body); line-height: 1.45; }   /* Date = Body (20px Large, scale par media-query) */
.sl-hero__surtitle-l2 { font-size: var(--wp--preset--font-size--legal); line-height: 1.2; }   /* Lieu = Legal (14px Large, scale par media-query) */
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.sl-hero__surtitle { grid-column: 13 / span 9; } /* Small : décalé à gauche (Figma ~242→419px), éloigné de la bande à droite */
}
@media (max-width: 29.99em) { /* ▸ XSMALL ≤30em */
	.sl-hero__surtitle { grid-column: 10 / span 11; white-space: nowrap; } /* zone 146px = Figma Xsmall (8603:10197), sinon débordait sur les bandes */
}

/* --- Logotype SOMMET LUMIÈRE (rangée 2, aligné gauche, centré vertical) --- */
.sl-hero__logotype {
	grid-row: 2;
	grid-column: 5 / span 12;                              /* Large + Medium : départ col 5 */
	align-self: center;
	justify-self: start;
	display: flex;
	align-items: center;
	padding-block: var(--wp--preset--spacing--32);         /* 32/28/24/24 px selon palier */
	position: relative;
	z-index: 1;
}
.sl-hero__logo-img {
	display: block;
	width: 30.75rem;                                       /* 492px — Large (rem : ÷16, indépendant du body 20px) */
	height: auto;
}
@media (max-width: 79.99em) { /* ▸ MEDIUM ≤80em */
	.sl-hero__logo-img { width: 22.5rem; }                 /* 360px — réduit un peu vs Figma 392px pour ne pas coller la bande rouge à droite au plus petit Medium (992px) */
}
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.sl-hero__logotype { grid-column: 1 / -1; justify-self: start; padding-inline-start: var(--wp--preset--spacing--padding-general); } /* logo aligné sur le padding général (Small + Xsmall) */
	.sl-hero__logo-img { width: 15.625rem; }               /* 250px */
}
@media (max-width: 29.99em) { /* ▸ XSMALL ≤30em */
	.sl-hero__logo-img { width: 10.875rem; }               /* 174px — logotype hérite de l'alignement padding-général du palier Small */
}

/* --- Baseline (rangée 3) : H1 unique, stylé h-s (override h1→h-l), uppercase --- */
.sl-hero__baseline {
	grid-row: 3;
	grid-column: 13 / span 6;                              /* Large + Medium */
	align-self: center;
	margin: 0;
	font-size: var(--wp--preset--font-size--h-s);          /* responsif natif : 27/27/17/14 px */
	line-height: 1.2;
	letter-spacing: 0;
	text-transform: uppercase;
	color: var(--wp--preset--color--noir);
	position: relative;
	z-index: 1;
}
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.sl-hero__baseline { grid-column: 10 / span 10; }
}
@media (max-width: 29.99em) { /* ▸ XSMALL ≤30em */
	.sl-hero__baseline { grid-column: 8 / span 12; }
}

/* #endregion */

/* #region  §2.2 · HOME · S2 PRÉSENTATION */
/* ============ S2 · PRÉSENTATION « Pourquoi maintenant ? » ============
   Figma « section-content » Visuel=À gauche (Large 8657:11177 / Medium 8688:16826 /
   Small 8688:16846 / Xsmall 8657:11458). 2 colonnes image-gauche + texte-droite (≥62rem),
   empilé image→texte (<62rem). Cascade desktop-first (base = Large ≥80rem).
   Ossature .section > .container-max > .container-design déjà gérée plus haut :
   padding-block (vertical-gap) posé sur le bloc via style.spacing ; overflow ci-dessous. */

.sl-s2 { overflow: clip; }   /* clippe le débord gauche du dégradé KV décoratif */

/* .container-design → grille interne 12 colonnes (≥62rem) */
.sl-s2__grid {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	grid-template-rows: minmax(0, auto);
	column-gap: var(--wp--preset--spacing--horizontal-gap); /* 1.25rem (20px) ≥62rem */
	width: 100%;
	align-items: start;
}
/* neutralise le blockGap global (margin-block) sur les items de grille */
.sl-s2__grid > * { margin-block: 0; }

/* --- Colonne visuel : image (col 1→6) + dégradé KV en fond --- */
.sl-s2__visuel {
	grid-column: 1 / span 6;
	grid-row: 1;
	position: relative;
	isolation: isolate;
	aspect-ratio: 566 / 473;   /* relevé Figma ≈1,20:1 (ratio revu par Fred 2026-07-30) */
}
/* Image : remplit la colonne, au-dessus du dégradé (z-2). wp:image core = <figure> */
.sl-s2__visuel .wp-block-image {
	position: absolute;
	inset: 0;
	margin: 0;
	z-index: 2;
	height: 100%;
}
.sl-s2__visuel .wp-block-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
/* Dégradé KV décoratif (aria-hidden) : ancré bord gauche, DERRIÈRE l'image (z-1),
   débord dans la marge gauche (clippé par .sl-s2 overflow:clip). Insets + rotate = relevé Figma. */
.sl-s2__gradient {
	position: absolute;
	z-index: 1;
	top: 0;
	bottom: 0;
	right: 89.22%;
	left: -59.19%;
	background: var(--wp--preset--gradient--kv-purple);
	transform: rotate(180deg);   /* Figma : gradient to-r + rotate 180 */
	pointer-events: none;
}

/* --- Colonne texte (col 8→12 ; colonne 7 = gouttière vide) --- */
/* Rendu PHP (hors blocs) : les écarts verticaux et le flex du sur-titre venaient
   des classes de layout générées par WordPress (is-layout-flex/flow + blockGap).
   On les redéfinit explicitement pour ne pas dépendre de ces classes. */
.sl-s2__text {
	grid-column: 8 / span 5;
	grid-row: 1;
	align-self: start;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--24);
}
.sl-s2__text > * { margin-block: 0; }

.sl-s2__titlewrap {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--16);
}
.sl-s2__titlewrap > * { margin-block: 0; }

.sl-s2__surtitle {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--16);
}
.sl-s2__surtitle > * { margin-block: 0; }

/* Barre déco du sur-titre : 40×15px fixes (décoratif, hors échelle de tokens) */
.sl-s2__tick {
	flex-shrink: 0;
	width: 2.5rem;      /* 40px */
	height: 0.9375rem;  /* 15px */
	background: var(--wp--preset--color--noir);
}

/* Medium (62–80rem) : image plus étroite / texte plus large (à Large c'est image 6 / texte 5). */
@media (min-width: 62em) and (max-width: 79.99em) { /* ▸ MEDIUM seul (62–80em) */
	.sl-s2__visuel { grid-column: 1 / span 5; }
	.sl-s2__text { grid-column: 7 / span 6; }
}

/* --- Empilé (<62rem) : image au-dessus du texte, pleine largeur --- */
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.sl-s2__grid {
		display: flex;
		flex-direction: column;
		row-gap: var(--wp--preset--spacing--vertical-gap);
	}
	.sl-s2__visuel { grid-column: auto; width: 100%; }
	.sl-s2__text { grid-column: auto; width: 100%; }
}

/* #endregion */

/* #region  §2.3 · HOME · S3 ACTUALITÉS */
/* ============ S3 · LE SOMMET EN DIRECT (Actualités) ============
   Figma « section-actualites » (8688:15941) + carte « card-actualite » (8603:9725).
   Actus empilées verticalement (max 3, gap 32) + bouton « Voir toutes les actualités ».
   Ossature .section > .container-max > .container-design gérée plus haut (padding-block
   vertical-gap posé sur le bloc via style.spacing). Cascade desktop-first (base = Large ≥80rem). */

/* .container-design → colonne interne (titre + liste + bouton), gap 32 */
.sl-s3__inner {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--32);
	width: 100%;
}
.sl-s3__inner > * { margin-block: 0; }

/* --- Wrapper-titre : eyebrow (barre déco + sur-titre) + H2 --- */
.sl-s3__head {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--16);
}
.sl-s3__head > * { margin-block: 0; }
/* Sur-titre = <p> en flex row ; barre déco 40×15px en ::before (décoratif, hors échelle
   de tokens — même repère que .sl-s2__tick). */
.sl-s3__eyebrow {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--16);
}
.sl-s3__eyebrow::before {
	content: "";
	flex-shrink: 0;
	width: 2.5rem;      /* 40px */
	height: 0.9375rem;  /* 15px */
	background: var(--wp--preset--color--noir);
}

/* --- Liste des cartes (sortie du shortcode [sl_actualites]) --- */
.sl-s3__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--32);
	width: 100%;
}
.sl-s3__item { margin: 0; }

/* --- Carte : grille 12 col (≥62rem) → date | image | contenu --- */
.sl-s3__card {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	column-gap: var(--wp--preset--spacing--horizontal-gap);
	align-items: start;
	width: 100%;
}
/* neutralise tout margin par défaut des enfants (p/h) dans la grille */
.sl-s3__card > * { margin-block: 0; }

.sl-s3__card-date {
	grid-column: 1 / span 2;
	grid-row: 1;
	line-height: 1.2;
}
/* Image : col 3→6, ratio Figma 413×468 (portrait), object-cover */
.sl-s3__card-visuel {
	grid-column: 3 / span 4;
	grid-row: 1;
	display: block;
	aspect-ratio: 413 / 468;
	overflow: hidden;
}
.sl-s3__card-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
/* Contenu : col 8→12 (col 7 = gouttière vide), colonne, gap 12 */
.sl-s3__card-content {
	grid-column: 8 / span 5;
	grid-row: 1;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--wp--preset--spacing--12);
}

/* Medium + Large (≥62rem) : carte élargie — image plus large + espace image↔texte
   RÉDUIT mais modéré (~48px, pas une simple gouttière). Large : demande Fred 2026-07-24 ;
   étendu au Medium le 2026-08-01 (le Medium avait une colonne vide ~118px, visuel trop
   étroit → on veut se rapprocher du ratio desktop). Gabarit explicite (date | 20 | image
   | 48 | contenu) car la grille 12 col ne donne que des écarts binaires (~20px ou ~118px). */
@media (min-width: 62em) { /* ▸ ≥62em (Medium + Large) */
	.sl-s3__card {
		grid-template-columns:
			minmax(0, 176fr)                            /* date */
			var(--wp--preset--spacing--horizontal-gap)  /* 20px : date ↔ image */
			minmax(0, 410fr)                            /* image élargie (≈370→410px) */
			var(--wp--preset--spacing--48)              /* 48px : espace modéré image ↔ texte */
			minmax(0, 490fr);                           /* contenu */
		column-gap: 0;
	}
	.sl-s3__card-date    { grid-column: 1; }
	.sl-s3__card-visuel  { grid-column: 3; aspect-ratio: 448 / 468; } /* un peu plus large, hauteur ≈ conservée */
	.sl-s3__card-content { grid-column: 5; }
}
/* Badge catégorie : fond beige, padding 8/4 */
.sl-s3__card-cat {
	display: inline-flex;
	align-items: center;
	padding: var(--wp--preset--spacing--4) var(--wp--preset--spacing--8);
	line-height: 1.2;
}
.sl-s3__card-title { line-height: 1.2; margin-block: 0; }
.sl-s3__card-title a { color: var(--wp--preset--color--noir); text-decoration: none; }
.sl-s3__card-title a:hover,
.sl-s3__card-title a:focus-visible { text-decoration: underline; }
.sl-s3__card-body { line-height: 1.45; margin-block: 0; }

/* CTA « En savoir plus » → article : texte souligné (border-bottom) + flèche 20px */
.sl-s3__card-cta {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--12);
	color: var(--wp--preset--color--noir);
	text-decoration: none;
	line-height: 1.2;
	margin-top: var(--wp--preset--spacing--16); /* respiration au-dessus du CTA */
}
.sl-s3__card-cta-label {
	border-bottom: 1px solid var(--wp--preset--color--noir);
	padding-bottom: var(--wp--preset--spacing--4);
}
/* États hover/focus non fournis au Figma — défaut proposé (à valider, PO §1) */
.sl-s3__card-cta:hover,
.sl-s3__card-cta:focus-visible { opacity: 0.7; }

/* --- Flèche droite (masque SVG, prend currentColor) : carte CTA + bouton --- */
:root {
	--sl-arrow-right: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M4 10h11M10 5l5 5-5 5' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
.sl-s3__card-cta::after,
.sl-s3__seeall .wp-block-button__link::after {
	content: "";
	flex-shrink: 0;
	width: 1.25rem;   /* 20px */
	height: 1.25rem;
	background-color: currentColor;
	-webkit-mask: var(--sl-arrow-right) no-repeat center / contain;
	mask: var(--sl-arrow-right) no-repeat center / contain;
}

/* --- Bouton « Voir toutes les actualités » : primaire (style global theme.json), centré, avec flèche --- */
.sl-s3__seeall { justify-content: center; }
.sl-s3__seeall .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--12);
}

/* --- Medium (62–80rem) : identique Large (grille 12 col) ; tokens auto par palier. --- */

/* --- Empilé (<62rem) : image (pleine largeur) → date → contenu, gap 24 --- */
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.sl-s3__card {
		display: flex;
		flex-direction: column;
		gap: var(--wp--preset--spacing--24);
	}
	.sl-s3__card-visuel {
		order: 1;
		width: 100%;
		aspect-ratio: 480 / 281;   /* ratio image empilée (relevé Figma Small/Xsmall) */
	}
	.sl-s3__card-date { order: 2; }
	.sl-s3__card-content { order: 3; }
}

/* #endregion */

/* #region  §2.4 · HOME · S4 GRANDS SUJETS */
/* ============ S4 · LES GRANDS SUJETS EN DÉBAT (Thèmes) ============
   Figma « Section · Grands sujets » (Large 8068:3304 / Medium 8603:8795 /
   Small 8603:9870 / Xsmall 8655:10680). Section fond BLANC (décision Fred 2026-07-24 :
   les cartes beige-clair ressortent dessus, pas d'alternance ici). Wrapper-titre +
   grille de cartes. Ossature .section > .container-max > .container-design gérée plus haut
   (padding-block vertical-gap posé sur le bloc via style.spacing). Cascade desktop-first.

   Grille ÉVOLUTIVE selon le nombre N de cartes affichées (règle Fred 2026-07-24) :
     desktop (≥80rem)  N ≤ 4 → 2 col (2×2)   ·   N ≥ 5 → 3 col (classe modificatrice --3col)
     Medium (62–80rem) → 2 col (cap, quel que soit N)
     Small/Xsmall (<62rem) → 1 col empilée
   Le nombre de colonnes desktop est piloté par la CLASSE posée au rendu selon N
   (sl-s4__grid = 2 col par défaut ; +sl-s4__grid--3col quand N≥5), PAS par une valeur en dur.
   Choix d'une classe modificatrice plutôt qu'un `--cols` inline : un custom property inline
   l'emporterait sur les media queries (impossible de le « caper » à 2 en Medium). Aujourd'hui
   N=4 → la grille porte seulement `sl-s4__grid` (2×2). */

/* .container-design → colonne interne (wrapper-titre + grille), gap 48 */
.sl-s4__inner {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--48);
	width: 100%;
}
.sl-s4__inner > * { margin-block: 0; }

/* --- Wrapper-titre : eyebrow (barre déco + sur-titre) + H2 (repère S3) --- */
.sl-s4__head {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--16);
}
.sl-s4__head > * { margin-block: 0; }
.sl-s4__eyebrow {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--16);
}
/* Barre déco 40×15px (décoratif, hors échelle de tokens — même repère que S2/S3) */
.sl-s4__eyebrow::before {
	content: "";
	flex-shrink: 0;
	width: 2.5rem;      /* 40px */
	height: 0.9375rem;  /* 15px */
	background: var(--wp--preset--color--noir);
}

/* --- Grille de cartes (liste sémantique <ul>) --- */
.sl-s4__grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(var(--cols), minmax(0, 1fr));
	gap: var(--wp--preset--spacing--24);
	width: 100%;
	--cols: 2;   /* Large, N ≤ 4 (état actuel : N=4 → 2×2) */
}
.sl-s4__grid > * { margin-block: 0; }
/* N ≥ 5 : 3 colonnes en desktop (posé au rendu via cette classe). ceil(N/3) lignes en auto. */
.sl-s4__grid--3col { --cols: 3; }

/* --- Carte (li) : num + texte, fond beige-clair, padding 32, gap 24 --- */
.sl-s4__card {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--24);
	padding: var(--wp--preset--spacing--32);
	background: var(--wp--preset--color--beige-clair);
	overflow: hidden;   /* pas de radius (Figma) */
}
.sl-s4__card > * { margin-block: 0; }

/* Numéro décoratif (aria-hidden) : grand chiffre display, dégradé clip-texte.
   Fallback couleur noir si background-clip:text non supporté (RGAA — sinon le chiffre
   disparaîtrait). Graisse Bold 700 (⚠ Akkurat LL Bold chargée via theme.json = vrai gras ; licence web à confirmer avant prod). */
.sl-s4__num {
	margin: 0;
	width: fit-content;   /* ajuste la boîte au texte → le dégradé (clip texte) se mappe
	                         sur le chiffre et non sur toute la largeur de la carte (sinon délavé) */
	font-size: var(--wp--preset--font-size--number);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.02rem;
	color: var(--wp--preset--color--noir);   /* fallback */
}
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
	.sl-s4__num {
		background-image: var(--sl-num-grad);
		-webkit-background-clip: text;
		background-clip: text;
		-webkit-text-fill-color: transparent;
		color: transparent;
	}
}
/* Windows High Contrast / forced-colors : restaurer un chiffre plein lisible */
@media (forced-colors: active) {
	.sl-s4__num {
		background: none;
		-webkit-text-fill-color: CanvasText;
		color: CanvasText;
	}
}
/* Dégradé propre à chaque thème (preset theme.json), sélectionné par carte */
.sl-s4__num--01 { --sl-num-grad: var(--wp--preset--gradient--num-01); }
.sl-s4__num--02 { --sl-num-grad: var(--wp--preset--gradient--num-02); }
.sl-s4__num--03 { --sl-num-grad: var(--wp--preset--gradient--num-03); }
.sl-s4__num--04 { --sl-num-grad: var(--wp--preset--gradient--num-04); }
.sl-s4__num--05 { --sl-num-grad: var(--wp--preset--gradient--num-05); }
.sl-s4__num--06 { --sl-num-grad: var(--wp--preset--gradient--num-06); }
.sl-s4__num--07 { --sl-num-grad: var(--wp--preset--gradient--num-07); }

/* Corps de carte : titre (h-m) + description (utility, gris-400), gap 12 */
.sl-s4__card-txt {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--12);
}
.sl-s4__card-txt > * { margin-block: 0; }
.sl-s4__card-title { line-height: 1.2; }
.sl-s4__card-desc { line-height: 1.45; }

/* --- Medium (62–80rem) : cap à 2 colonnes quel que soit N --- */
@media (max-width: 79.99em) { /* ▸ MEDIUM ≤80em */
	.sl-s4__grid { --cols: 2; }
}
/* --- Small + Xsmall (<62rem) : 1 colonne empilée --- */
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.sl-s4__grid { --cols: 1; }
}

/* #endregion */

/* #region  §2.5 · HOME · S5 LIEU */
/* ============ S5 · LE LIEU (Fondation Maeght) ============
   Figma « section-content » — 2ᵉ instance, variante INVERSÉE de S2 (Large 8689:18367 /
   Medium 8689:19530 / Small 8689:21094 / Xsmall 8689:21255). Section fond BLANC (décision
   Fred 2026-07-24 : continuité avec S4 juste au-dessus). Texte à GAUCHE, vidéo self-host à
   DROITE (≥62rem) ; empilé vidéo→texte (<62rem). Réutilise la mécanique de S2 (grille 12 col,
   tick 40×15, wrappers, dégradé KV absolu, overflow:clip) avec placement miroir + spans
   propres au relevé S5 (texte 5 / gouttière / vidéo 6 @Large ; texte 6 / vidéo 5 @Medium).
   Ossature .section > .container-max > .container-design gérée plus haut (padding-block
   vertical-gap posé sur le bloc via style.spacing). Cascade desktop-first (base = Large ≥80rem). */

.sl-s5 { overflow: clip; }   /* clippe le débord droit du dégradé KV décoratif */

/* .container-design → grille interne 12 colonnes (≥62rem) */
.sl-s5__grid {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	grid-template-rows: minmax(0, auto);
	column-gap: var(--wp--preset--spacing--horizontal-gap); /* 1.25rem (20px) ≥62rem */
	width: 100%;
	align-items: start;   /* colonnes top-alignées (relevé Figma, pas center) */
}
/* neutralise le blockGap global (margin-block) sur les items de grille */
.sl-s5__grid > * { margin-block: 0; }

/* --- Colonne texte (col 1→5 ; colonne 6 = gouttière vide) --- */
/* Rendu PHP (hors blocs) : écarts verticaux + flex du sur-titre redéfinis
   explicitement (avant : classes de layout générées par WP + blockGap). */
.sl-s5__text {
	grid-column: 1 / span 5;
	grid-row: 1;
	align-self: start;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--24);
}
.sl-s5__text > * { margin-block: 0; }

.sl-s5__titlewrap {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--16);
}
.sl-s5__titlewrap > * { margin-block: 0; }

.sl-s5__surtitle {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--16);
}
.sl-s5__surtitle > * { margin-block: 0; }

/* Barre déco du sur-titre : 40×15px fixes (décoratif, hors échelle de tokens — repère S2) */
.sl-s5__tick {
	flex-shrink: 0;
	width: 2.5rem;      /* 40px */
	height: 0.9375rem;  /* 15px */
	background: var(--wp--preset--color--noir);
}

/* --- Colonne visuel : vidéo (col 7→12) + dégradé KV en fond, débord bord droit --- */
.sl-s5__visuel {
	grid-column: 7 / span 6;
	grid-row: 1;
	position: relative;
	isolation: isolate;
	aspect-ratio: 566 / 382;   /* boîte média Figma @Large (identique S2) — vidéo 16:9 recadrée cover */
}
/* Figure vidéo : remplit la colonne, au-dessus du dégradé (z-2) */
.sl-s5__figure {
	position: absolute;
	inset: 0;
	margin: 0;
	z-index: 2;
	height: 100%;
	overflow: hidden;
}
.sl-s5__video {
	width: 100%;
	height: 100%;
	object-fit: cover;   /* vidéo 16:9 recadrée dans la boîte ~3:2 (décision Fred) */
	display: block;
}
/* Dégradé KV décoratif (aria-hidden) : ancré bord droit, DERRIÈRE la vidéo (z-1),
   débord dans la marge droite (clippé par .sl-s5 overflow:clip). Miroir de .sl-s2__gradient :
   insets relevés Figma S5 (gradient x=494/w=400 dans visuel 566) + rotate 180 (solide à droite). */
.sl-s5__gradient {
	position: absolute;
	z-index: 1;
	top: 0;
	bottom: 0;
	left: 87.28%;
	right: -57.95%;
	background: var(--wp--preset--gradient--kv-yellow);
	/* pas de rotate ici : S5 est le miroir de S2 (débord à droite) → sens inverse */
	pointer-events: none;
}

/* --- Bouton pause/lecture accessible (RGAA 13.9 / WCAG 2.2.2) --- */
.sl-s5__videobtn {
	position: absolute;
	z-index: 3;
	left: var(--wp--preset--spacing--16);
	bottom: var(--wp--preset--spacing--16);
	width: 2.75rem;    /* 44px — cible tactile RGAA */
	height: 2.75rem;
	padding: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 0;
	border-radius: 50%;
	background: rgba(36, 31, 32, 0.72);   /* noir translucide (contraste sur vidéo) */
	color: var(--wp--preset--color--blanc);
	cursor: pointer;
}
.sl-s5__videobtn:hover { background: rgba(36, 31, 32, 0.9); }
/* focus clavier : contour visible conservé (RGAA 10.7) */
.sl-s5__videobtn:focus-visible {
	outline: 2px solid var(--wp--preset--color--blanc);
	outline-offset: 2px;
}
/* Icône play / pause via masque (prend currentColor), bascule selon data-state */
.sl-s5__videobtn::before {
	content: "";
	width: 1.25rem;    /* 20px */
	height: 1.25rem;
	background-color: currentColor;
	-webkit-mask: var(--sl-icon-pause) no-repeat center / contain;
	mask: var(--sl-icon-pause) no-repeat center / contain;
}
.sl-s5__videobtn[data-state="paused"]::before {
	-webkit-mask-image: var(--sl-icon-play);
	mask-image: var(--sl-icon-play);
}
:root {
	--sl-icon-pause: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Crect x='5' y='4' width='3.5' height='12' rx='1'/%3E%3Crect x='11.5' y='4' width='3.5' height='12' rx='1'/%3E%3C/svg%3E");
	--sl-icon-play: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M6 4.5v11l9-5.5z'/%3E%3C/svg%3E");
}
/* Si l'utilisateur a demandé moins d'animation : pas d'autoplay (géré en JS) — le poster
   reste affiché ; le bouton permet la lecture manuelle. Le dégradé reste statique. */

/* Medium (62–80rem) : texte plus large / vidéo plus étroite (inverse de Large), ratio propre. */
@media (min-width: 62em) and (max-width: 79.99em) { /* ▸ MEDIUM seul (62–80em) */
	.sl-s5__text { grid-column: 1 / span 6; }
	.sl-s5__visuel { grid-column: 8 / span 5; aspect-ratio: 481 / 390; } /* boîte média Figma @Medium */
}

/* --- Empilé (<62rem) : vidéo au-dessus du texte, pleine largeur --- */
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.sl-s5__grid {
		display: flex;
		flex-direction: column;
		row-gap: var(--wp--preset--spacing--vertical-gap);
	}
	.sl-s5__text { grid-column: auto; width: 100%; }
	.sl-s5__visuel { grid-column: auto; width: 100%; aspect-ratio: 416 / 281; } /* boîte média Figma Small/Xsmall (~1,48:1) */
}

/* #endregion */

/* #region  §2.6 · HOME · S6 CTA FINAL */
/* ============ S6 · VOUS ÊTES INVITÉS ? (Espaces invités / CTA final) ============
   Figma « Section · Vous êtes invités ? » (Large 8068:3477). Bandeau CTA final juste avant
   le footer : dégradé KV vert→bleu (preset band-vert-bleu, posé en fond DE SECTION via le
   bloc) qui déborde/fond à droite (rgba …,0), contenu centré = H2 sur-titre + bouton vers la
   plateforme d'inscription. Fond STATIQUE (décision Fred). Le back-to-top de la maquette S6
   n'est PAS recodé ici : on garde le bouton flottant existant du footer (.sl-footer__btt).
   Ossature .section > .container-max > .container-design gérée plus haut (padding-block
   vertical-gap posé sur le bloc via style.spacing). Cascade desktop-first, tokens auto par palier. */

/* .container-design → colonne interne centrée (H2 + CTA), gap 24 */
.sl-s6__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--wp--preset--spacing--24);
	width: 100%;
}
.sl-s6__inner > * { margin-block: 0; }

/* H2 sur-titre : centré (majuscules + interligne posés inline sur le bloc, relevé Figma).
   Taille h-s (27px) forcée via le bloc — override du h2 global (h-m 30px). Texte noir sur
   dégradé clair (vert/cyan) : contraste OK. */
.sl-s6__title { text-align: center; }

/* CTA : bouton primaire (fond noir / texte blanc = style global theme.json) + flèche droite
   20px (même masque SVG que S3). Label forcé à `body` (20px) via le bloc — override du bouton
   global en utility (16px). */
.sl-s6__cta .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--8);
	transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}
.sl-s6__cta .wp-block-button__link::after {
	content: "";
	flex-shrink: 0;
	width: 1.25rem;   /* 20px */
	height: 1.25rem;
	background-color: currentColor; /* flèche = couleur du texte (blanc par défaut, noir au hover) */
	-webkit-mask: var(--sl-arrow-right) no-repeat center / contain;
	mask: var(--sl-arrow-right) no-repeat center / contain;
}
/* Hover/focus = inversion (fond blanc / texte + flèche noirs, filet noir pour garder la forme).
   Réf. de l'inversion : le bouton back-to-top blanc bordé noir de la même maquette S6.
   box-shadow inset plutôt que border → pas de reflow d'1px. */
.sl-s6__cta .wp-block-button__link:hover,
.sl-s6__cta .wp-block-button__link:focus-visible {
	background-color: var(--wp--preset--color--blanc);
	color: var(--wp--preset--color--noir);
	box-shadow: inset 0 0 0 1px var(--wp--preset--color--noir);
}

/* #endregion */

/* #region  §3 · ARTICLE — single actualité + fil d'Ariane */
/* ============================================================================
   PAGE ARTICLE (single-actualite) — Figma « Article » 8819:15138
   Deux mesures de lecture : colonne large (762px) / colonne étroite (566px).
   Radius = convention thème 0.625rem (Point à trancher §11 : pas de token
   Radius/foreign). Gris des légendes unifié sur gris-200 (Point à trancher §9).
   ============================================================================ */

/* Fond de la page article = beige clair (le beige plein est réservé au hero et au
   switcher de langue — décision Fred 2026-08-01). */
.sl-article {
	background: var(--wp--preset--color--beige-clair);
}

/* --- Grille 12 colonnes de l'article (sur la largeur du container-max) ---
   Blocs pensés en nombre de colonnes : 8 col = large centré, 6 col = étroit centré.
   ⚠️ SCOPÉ à l'enfant direct `.sl-article > .container-max > .container-design` pour
   NE PAS toucher le container-max du fil d'Ariane (`.sl-breadcrumb > .container-max`). */
.sl-article > .container-max > .container-design {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	column-gap: var(--wp--preset--spacing--horizontal-gap);
	row-gap: var(--wp--preset--spacing--48); /* rythme vertical entre sections */
	padding-top: var(--wp--preset--spacing--48);
	padding-bottom: var(--wp--preset--spacing--96);
}
/* .sl-article__inner s'efface de la grille : ses enfants (en-tête, image, corps,
   partage) deviennent des items directs de la grille 12 col, comme « articles liés ». */
.sl-article__inner { display: contents; }

/* Placement en colonnes */
.sl-article__wide   { grid-column: 3 / span 8; } /* intro, image à la une, articles liés */
.sl-article__narrow { grid-column: 4 / span 6; } /* partage */

/* Corps rich-text : pleine grille, re-grille 12 col alignée →
   texte + images inline en 6 col, citations en 8 col. */
.sl-article__body {
	grid-column: 1 / -1;
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	column-gap: var(--wp--preset--spacing--horizontal-gap);
	row-gap: 0; /* le rythme vertical reste géré par les marges des blocs */
}
.sl-article__body > * { grid-column: 4 / span 6; }                       /* corps : 6 col */
.sl-article__body > :is(blockquote, .wp-block-quote) { grid-column: 3 / span 8; } /* citation : 8 col */

/* Small + Xsmall (<62em) : colonne unique */
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.sl-article > .container-max > .container-design { grid-template-columns: minmax(0, 1fr); }
	.sl-article__wide,
	.sl-article__narrow,
	.sl-article__body { grid-column: 1 / -1; }
	.sl-article__body { grid-template-columns: minmax(0, 1fr); }
	.sl-article__body > *,
	.sl-article__body > :is(blockquote, .wp-block-quote) { grid-column: 1 / -1; }
}

/* --- Fil d'Ariane (barre pleine largeur, bordure basse) --- */
.sl-breadcrumb {
	width: 100%;
	background: var(--wp--preset--color--blanc);
	border-bottom: 1px solid var(--wp--preset--color--gris-200);
	padding-block: var(--wp--preset--spacing--12); /* Figma : bande ~48px (24 → 12) */
}
.sl-breadcrumb__list {
	display: flex;
	flex-wrap: nowrap;          /* une seule ligne, jamais de retour à la ligne */
	align-items: center;
	gap: var(--wp--preset--spacing--8);
	list-style: none;
	margin: 0;
	padding: 0;
	min-width: 0;
	line-height: 1.2;
}
.sl-breadcrumb__item {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--8);
	margin: 0;
	flex-shrink: 0;             /* les segments amont (Accueil / …) restent entiers */
	min-width: 0;
}
/* Segment courant (titre) : rétrécit et se coupe en « … » au lieu de passer à la ligne */
.sl-breadcrumb__item:last-child {
	flex-shrink: 1;
	overflow: hidden;
}
.sl-breadcrumb__link {
	color: var(--wp--preset--color--noir);
	text-decoration: none;
}
.sl-breadcrumb__link:hover,
.sl-breadcrumb__link:focus-visible { text-decoration: underline; }
.sl-breadcrumb__current {
	display: block;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;    /* troncature « … » */
	font-weight: 700;           /* Legal Bold (segment courant) */
}
.sl-breadcrumb__sep { color: var(--wp--preset--color--gris-300); }

/* --- En-tête d'article ---
   Espace au-dessus (breadcrumb → en-tête) = padding-top du .container-max ;
   espace en dessous (en-tête → image) = gap de .sl-article__inner. On ne remet
   donc pas de padding-block ici (sinon double 48). Gap interne 24 (groupe titre). */
.sl-article__header {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--24);
}
.sl-article__header > * { margin-block: 0; }
.sl-article__badge {
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	padding: var(--wp--preset--spacing--4) var(--wp--preset--spacing--8);
	line-height: 1.2;
}
.sl-article__title { line-height: 1.1; } /* h-l Light (élément h1 → styles theme.json) */
.sl-article__lead {
	font-weight: 700;   /* Body Bold (chapô) */
	line-height: 1.45;
}
.sl-article__byline { line-height: 1.2; } /* Legal Light */

/* Divider (filet gris-300) — en-tête (méta) + related */
.sl-article__divider {
	width: 100%;
	height: 0;
	margin: 0;
	border: 0;
	border-top: 1px solid var(--wp--preset--color--gris-300);
}

/* Ligne méta : dates à gauche, temps de lecture à droite */
.sl-article__meta {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: baseline;
	gap: var(--wp--preset--spacing--12);
	font-weight: 700;   /* Legal Bold */
	line-height: 1.2;
}
.sl-article__meta > * { margin: 0; }
.sl-article__meta-dates {
	display: inline-flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--wp--preset--spacing--8);
}
.sl-article__meta-sep { color: var(--wp--preset--color--gris-300); }

/* --- Image à la une + barre de crédit --- */
.sl-article__figure {
	margin-block: 0; /* pas `margin:0` : sinon écrase le margin-inline:auto de .sl-article__wide
	                    → l'image serait calée à gauche au lieu d'être centrée avec le contenu */
	overflow: hidden;
	background: var(--wp--preset--color--blanc);
}
.sl-article__figure-img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 762 / 559; /* relevé Figma Large */
	object-fit: cover;
}
.sl-article__credit {
	margin: 0;
	padding: var(--wp--preset--spacing--12);
	background: var(--wp--preset--color--blanc);
	font-weight: 700; /* Utility Bold */
	line-height: 1.45;
}

/* --- Corps de l'article (post_content) — styles de blocs scoped --- */
.sl-article__body { width: 100%; }
.sl-article__body > * { margin-block: 0; }
/* Titres de corps en Bold (Point à trancher §2, défaut fidèle Figma) */
.sl-article__body h2 {
	font-weight: 700;
	line-height: 1.2;
}
/* H3 = nouveau token h-xs (18/20/22/24) Bold (Point à trancher §3) */
.sl-article__body h3 {
	font-size: var(--wp--preset--font-size--h-xs);
	font-weight: 700;
	line-height: 1.2;
}
/* H4 = taille du corps (body), en gras (décision Fred 2026-07-25) */
.sl-article__body h4 {
	font-size: var(--wp--preset--font-size--body);
	font-weight: 700;
	line-height: 1.2;
}
.sl-article__body p { line-height: 1.45; margin-bottom: var(--wp--preset--spacing--16); } /* Body Light + espace après paragraphe */
.sl-article__body :is(.wp-block-separator, hr) { margin-bottom: var(--wp--preset--spacing--16); } /* espace 16 après le séparateur */
.sl-article__body ul,
.sl-article__body ol {
	padding-left: var(--wp--preset--spacing--24);
	margin-bottom: var(--wp--preset--spacing--16); /* respiration après la liste */
}
.sl-article__body ul { list-style: disc; }
.sl-article__body ol { list-style: decimal; }
.sl-article__body li { line-height: 1.45; }
/* Le WYSIWYG peut sortir des <div> (au lieu de <p>) et des blocs vides selon la
   saisie : on aligne le rendu des <div> sur les <p> (interligne, espacement,
   justification) et on masque les blocs vides — sinon l'espacement varie d'une
   langue/saisie à l'autre (ex. bouton PDF plus détaché en FR qu'en EN). */
.sl-article__body div { line-height: 1.45; margin-bottom: var(--wp--preset--spacing--16); text-align: justify; }
.sl-article__body :is(p, div):empty { display: none; }
/* Gap titre → texte réduit (12) vs gap inter-blocs (32 via blockGap) */
.sl-article__body :is(h2, h3, h4) + * { margin-block-start: var(--wp--preset--spacing--12); }

/* Images inline légendées — couvre Gutenberg (.wp-block-image) ET le wysiwyg
   classique (figure.wp-caption), tous deux des <figure>. Légende = barre gris-200. */
.sl-article__body figure {
	margin: 0;
	max-width: 100%;
	display: flex;
	flex-direction: column;
	gap: 0; /* image et légende collées */
	padding: 0 0 var(--wp--preset--spacing--16); /* 0 en haut, 16 en bas, 0 gauche/droite */
	background: transparent; /* l'espace autour reste sur le fond de l'article */
}
.sl-article__body figure img {
	display: block;
	width: 100%;
	height: auto;
}
.sl-article__body figure figcaption { /* Gutenberg <figcaption> et wysiwyg .wp-caption-text */
	margin: 0;
	padding: var(--wp--preset--spacing--12);
	background: var(--wp--preset--color--blanc);
	color: var(--wp--preset--color--noir);
	font-size: var(--wp--preset--font-size--utility);
	font-weight: 700; /* Utility Bold */
	line-height: 1.45;
	text-align: left;
}
/* Image nue insérée via le wysiwyg (sans légende → simple <img>) */
.sl-article__body img { max-width: 100%; height: auto; }
.sl-article__body p > img { display: block; }

/* --- Fichier téléchargeable (PDF/doc/zip) inséré dans le corps via « Ajouter un média »
   → le lien vers le fichier devient un bouton de téléchargement (icône + libellé).
   Le client n'a rien à styler : tout lien pointant un fichier est habillé. --- */
:root { --sl-icon-download: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M10 3.5v9m0 0-4-4m4 4 4-4M4.5 16h11' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.sl-article__body a:is([href$=".pdf"], [href$=".PDF"], [href$=".doc"], [href$=".docx"], [href$=".zip"]) {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--12);
	max-width: 100%;
	box-sizing: border-box;
	margin-block: var(--wp--preset--spacing--24) var(--wp--preset--spacing--8); /* détache le bouton du contenu au-dessus */
	padding: var(--wp--preset--spacing--16) var(--wp--preset--spacing--24);
	background: var(--wp--preset--color--blanc);
	border: 1px solid var(--wp--preset--color--noir);
	color: var(--wp--preset--color--noir);
	text-decoration: none;
	font-weight: 700;
	line-height: 1.3;
	transition: background-color 0.2s ease, color 0.2s ease;
}
.sl-article__body a:is([href$=".pdf"], [href$=".PDF"], [href$=".doc"], [href$=".docx"], [href$=".zip"])::before {
	content: "";
	flex-shrink: 0;
	width: 1.25rem;
	height: 1.25rem;
	background-color: currentColor;
	-webkit-mask: var(--sl-icon-download) no-repeat center / contain;
	mask: var(--sl-icon-download) no-repeat center / contain;
}
.sl-article__body a:is([href$=".pdf"], [href$=".PDF"], [href$=".doc"], [href$=".docx"], [href$=".zip"]):hover,
.sl-article__body a:is([href$=".pdf"], [href$=".PDF"], [href$=".doc"], [href$=".docx"], [href$=".zip"]):focus-visible {
	background: var(--wp--preset--color--noir);
	color: var(--wp--preset--color--blanc);
}
/* Alignements de la barre d'outils wysiwyg (image / figure) */
.sl-article__body :is(figure, img).aligncenter { margin-inline: auto; }
.sl-article__body :is(figure, img).alignleft  { float: left;  margin: 0 var(--wp--preset--spacing--24) var(--wp--preset--spacing--12) 0; max-width: 50%; }
.sl-article__body :is(figure, img).alignright { float: right; margin: 0 0 var(--wp--preset--spacing--12) var(--wp--preset--spacing--24); max-width: 50%; }

/* Citation / pull-quote (filets gris-300 2px, non-italique). §10 tranché Fred :
   BREAKOUT — la citation déborde la colonne étroite (35.375rem) pour occuper la
   colonne large (47.625rem). Breakout appliqué seulement ≥62rem (992px), où la
   colonne étroite est à sa largeur pleine et où le container laisse la place ;
   en dessous, la citation suit la colonne de lecture (pas de débordement). */
.sl-article__body blockquote {
	margin: 0;
	margin-bottom: var(--wp--preset--spacing--16); /* respiration après la citation */
	padding-block: var(--wp--preset--spacing--16);
	border: 0;
	border-top: 2px solid var(--wp--preset--color--gris-300);
	border-bottom: 2px solid var(--wp--preset--color--gris-300);
	opacity: 0.9;
	font-size: var(--wp--preset--font-size--h-s);
	font-weight: 300; /* Body Light, non-italique (Figma) */
	font-style: normal;
}
/* Breakout : marges négatives symétriques = (47.625 − 35.375)/2 = 6.125rem de
   chaque côté → largeur 47.625rem, recentrée sur l'axe (aligne sur .sl-article__wide,
   centré comme la colonne étroite dans le container). */
@media (min-width: 62em) { /* ▸ ≥62em */
	.sl-article__body blockquote { margin-inline: -6.125rem; } /* rem (root) : 98px pile, indépendant de la font-size de la citation */
}
.sl-article__body blockquote p { line-height: 1.45; }
.sl-article__body blockquote cite {
	display: block;
	margin-top: var(--wp--preset--spacing--16);
	font-size: var(--wp--preset--font-size--legal);
	font-weight: 700; /* Legal Bold */
	font-style: normal;
}

/* --- Partager --- */
.sl-article__share { width: 100%; }
.sl-article__share-label {
	margin: 0 0 var(--wp--preset--spacing--16);
	font-weight: 700; /* Body Bold */
}
.sl-article__share-list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--16);
	list-style: none;
	margin: 0;
	padding: 0;
}
.sl-article__share-list li { margin: 0; }
.sl-article__share-btn {
	box-sizing: border-box;
	width: 2.9375rem;   /* 47px — même taille que le bouton « Gérez votre participation » */
	height: 2.9375rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	background: var(--wp--preset--color--blanc);
	color: var(--wp--preset--color--noir);
	border: 1px solid var(--wp--preset--color--noir);
	/* pas de radius (angles droits, cf maquettes) */
	font: inherit;
	line-height: 1;
	cursor: pointer;
	transition: background-color 0.2s ease, color 0.2s ease;
}
.sl-article__share-btn svg {
	display: block;
	width: 1.3125rem;  /* 21px */
	height: 1.3125rem;
}
.sl-article__share-btn:hover,
.sl-article__share-btn:focus-visible {
	background: var(--wp--preset--color--noir);
	color: var(--wp--preset--color--blanc);
}
.sl-article__share-copy.is-copied {
	background: var(--wp--preset--color--noir);
	color: var(--wp--preset--color--blanc);
}

/* --- Sur le même thème --- */
.sl-article__related {
	width: 100%;
	padding-block: var(--wp--preset--spacing--48);
}
.sl-article__related-title {
	margin: 0;
	line-height: 1.1; /* h-l Light, élément h2 → weight 300 via theme.json */
}
.sl-article__related .sl-article__divider { margin-block: var(--wp--preset--spacing--24); }
.sl-article__related-list {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--16);
	list-style: none;
	margin: 0;
	padding: 0;
}
.sl-article__related-item { margin: 0; }
.sl-article__related-link {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--24);
	color: var(--wp--preset--color--noir);
	text-decoration: none;
}
.sl-article__related-visuel {
	flex-shrink: 0;
	display: block;
	width: 10rem;             /* 200px @body 20px, scale par palier */
	aspect-ratio: 200 / 140;
	overflow: hidden;
	border-radius: 0.625rem;
}
.sl-article__related-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.sl-article__related-title-item {
	font-weight: 700; /* Body Bold */
	line-height: 1.2;
}
.sl-article__related-link:hover .sl-article__related-title-item,
.sl-article__related-link:focus-visible .sl-article__related-title-item {
	text-decoration: underline;
}

/* --- Mobile (<62rem) : tout en pleine largeur (colonnes déjà collapse) --- */
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.sl-article__related-visuel { width: 8rem; }
}

/* #endregion */

/* #region  §4 · PAGES TEXTE · MENTIONS LÉGALES */
/* ============================================================================
   PAGE MENTIONS LÉGALES (page-mentions-legales) — Figma « Mentions légales » 8944:11711
   Page texte statique (notice légale). Colonne de lecture 566px, centrée dans le
   container-max en Large/Medium ; pleine largeur en Small/Xsmall. 4 blocs éditoriaux.
   Ossature .section > .container-max > .container-design gérée plus haut (padding-inline
   responsive 64/48/32/20 + padding-block du <main>). Tokens theme.json uniquement.
   Exception documentée : 566px = mesure de lecture (comme le gabarit article) → rem
   sur la racine 16px (indépendant du body 20px) : 566 ÷ 16 = 35.375rem.
   ============================================================================ */
.sl-mentions-legales {
	background: var(--wp--preset--color--beige-clair);
}

/* Colonne de lecture 566px, centrée. FILL (100%) en Small/Xsmall (< 62em). */
.sl-legal__col {
	max-width: 35.375rem;   /* 566px — mesure de lecture, exception assumée (cf. .sl-article) */
	margin-inline: auto;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--48);   /* rythme vertical entre le titre et les blocs */
	padding-top: var(--wp--preset--spacing--64);   /* espace fil d'Ariane → titre (le <main> n'a plus de padding-top) */
}
.sl-legal__col > * { margin-block: 0; }   /* le gap de la colonne pilote l'espacement inter-blocs */

/* H1 « Mentions légales » : hérite du preset h1 (h-l, Light 300) de theme.json. */
.sl-legal__title { line-height: 1.1; }

/* --- Bloc éditorial (intra-titre ▬ + corps) --- */
.sl-legal__block > * { margin-block: 0; }
.sl-legal__block h2 { margin-bottom: var(--wp--preset--spacing--16); }
.sl-legal__block h3 { margin-top: var(--wp--preset--spacing--24); }
.sl-legal__block p + p { margin-top: var(--wp--preset--spacing--24); }
.sl-legal__block h3 + p { margin-top: var(--wp--preset--spacing--8); }   /* corps collé à son sous-titre */

/* Intra-titre H2 : taille preset h-m (30px @Large) mais graisse Bold 700 (relevé Figma
   « Heading 04 Bold »), précédé du marqueur décoratif ▬. */
.sl-legal__marker {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--12);
	font-weight: 700;
}
.sl-legal__marker::before {
	content: "";
	flex: 0 0 auto;
	width: var(--wp--preset--spacing--32);   /* ~32px */
	height: var(--wp--preset--spacing--8);   /* ~8px  */
	background: var(--wp--preset--color--noir);
}

/* Sous-titre H3 « Directeur de la publication » : taille corps (body 20px) en Bold 700
   (relevé Figma), et non le preset h-s (27px) global. */
.sl-legal__subtitle {
	font-size: var(--wp--preset--font-size--body);
	font-weight: 700;
	line-height: 1.45;
}

/* Crédits © : lignes serrées (interligne corps), taille body. */
.sl-legal__credits { line-height: 1.45; }

/* --- Small + Xsmall (< 62em) : colonne pleine largeur --- */
@media (max-width: 61.99em) { /* ▸ SMALL ≤62em */
	.sl-legal__col { max-width: none; }
}

/* #endregion */
