/*
Theme Name: DIGITALGREEN
Author: DIGITALGREEN
Description: Custom theme developed by DIGITALGREEN
Version: 1.0
Tags: Custom
*/

/*
 * Styles personnalisés - DIGITALGREEN
 *
 * Ce fichier contient uniquement vos styles custom.
 * Les styles de base (reset, typography, layout, utilities)
 * sont dans le dossier assets/css/
 *
 * Personnalisez les variables dans assets/css/variables.css
 */

/* ==========================================================================
   STYLES CUSTOM DU SITE
   ========================================================================== */

/* ==========================================================================
   HEADER
   Figma: "Design system - Header & Footer" (node 339:1153)
   Desktop: node 339:1236 (nav Usager) / 815:13371 (nav Acteur public)
   Mobile: logo + burger uniquement (nav repliée dans l'overlay), pas de
   maquette desktop/mobile distincte pour le header dans le Design System —
   comportement mobile déduit du composant "Menu burger" vu en situation
   (homepage), cf. context_project.md.
   ========================================================================== */

.topbar {
	background-color: var(--color-blue-1);
}

.topbar-inner {
	max-width: var(--container-max-width);
	margin: 0 auto;
	height: 50px;
	padding: 0 32px;
	display: flex;
	align-items: center;
	gap: 8px;
}

.topbar-link {
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: var(--color-blanc);
	text-decoration: none;
	padding-bottom: 4px;
	border-bottom: 3px solid transparent;
}

.topbar-link.is-current {
	border-bottom-color: var(--color-blue-3);
}

.topbar-separator {
	width: 2px;
	height: 2px;
	border-radius: 50%;
	background-color: var(--color-blanc);
}

.site-header {
	background-color: var(--bg-light);
	position: sticky;
	top: 0;
	z-index: 100;
}

.site-header-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--spacing-sm);
	padding: var(--spacing-sm) var(--spacing-md);
}

.site-logo {
	display: block;
	width: 176px;
	height: auto;
}

.header-nav-group {
	display: none;
}

/* ---- Nav links (communes desktop + overlay mobile) ---- */

.primary-menu,
.mobile-primary-menu {
	list-style: none;
	margin: 0;
	padding: 0;
}

.primary-menu-link,
.mobile-primary-menu-link {
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: var(--color-noir);
	text-decoration: none;
	display: inline-block;
	border-bottom: 3px solid transparent;
	padding-bottom: 4px;
}

.primary-menu-item.is-current .primary-menu-link,
.mobile-primary-menu-item.is-current .mobile-primary-menu-link {
	border-bottom-color: var(--color-blue-3);
}

/* ---- Sous-menu desktop (survol/focus) — style repris du node Figma
   825:8778 "HOMEPAGE - MENU ON" (liste blanche, ombre, liseré 4px bleu 3
   pour l'item actif, ligne courante en fond bleu 1) ---- */

.primary-menu-item {
	position: relative;
}

.primary-menu-link--category,
.submenu-link--category {
	cursor: default;
}

.submenu {
	list-style: none;
	margin: 0;
	padding: 32px;
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 280px;
	background-color: var(--color-blanc);
	border-radius: 8px;
	box-shadow: 0 4px 12.5px rgba(0, 0, 0, 0.2);
	opacity: 0;
	visibility: hidden;
	transform: translateY(4px);
	transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s ease;
	z-index: 200;
}

.primary-menu-item.has-children:hover > .submenu,
.primary-menu-item.has-children:focus-within > .submenu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

/* Sous-menu imbriqué (une sous-page qui a elle-même des sous-pages) :
   s'ouvre en dessous de sa ligne, indenté de 24px, dans le même panneau —
   pas un volet séparé. */

.submenu-item.has-children {
	position: relative;
}

.submenu--nested {
	position: static;
	top: auto;
	left: auto;
	margin: 8px 0 0 24px;
	padding: 0;
	min-width: 0;
	background-color: transparent;
	border-radius: 0;
	box-shadow: none;
	opacity: 1;
	visibility: visible;
	transform: none;
	display: none;
}

.submenu-item.has-children:hover > .submenu--nested,
.submenu-item.has-children:focus-within > .submenu--nested {
	display: block;
}

.submenu-link {
	display: block;
	padding: 8px 24px;
	border-left: 4px solid transparent;
	border-radius: 8px;
	font-family: var(--font-family-ui);
	font-weight: 400;
	font-size: var(--ui-text-size);
	color: var(--color-noir);
	text-decoration: none;
	white-space: nowrap;
}

@media (min-width: 1024px) {
	/* 179px de marge à droite à 1440px (largeur de référence Figma, cf.
	   --container-max-width) en fluide (vw) plutôt qu'un palier fixe, pour
	   s'adapter en continu aux écrans plus petits ET plus grands.
	   179 / 1440 ≈ 12.43vw. Aucun effet en dessous de 1024px : le menu
	   desktop est masqué sur mobile (.header-nav-group), qui a son propre
	   sous-menu (.mobile-submenu-link) non concerné par cette règle. */
	.submenu-link {
		padding-right: clamp(24px, 12.43vw, 260px);
	}
}

/* Sous-menu de 1er niveau : survol = fond cyan 15% + liseré gauche cyan
   plein, texte inchangé. Le hover est sur .submenu-link (le lien
   lui-même), pas sur .submenu-item (le <li>) : le <li> englobe aussi le
   sous-sous-menu déplié en dessous, donc un hover porté par le <li>
   resterait actif en descendant la souris dedans. */

.submenu-link:hover,
.submenu-link:focus-visible {
	border-left-color: var(--color-blue-3);
	background-color: rgba(0, 204, 255, 0.15);
}

/* Sous-menu du sous-menu (niveau ≥2) : survol = fond bleu 1 + texte blanc,
   sans liseré à gauche (contrairement au 1er niveau) — l'indentation
   suffit à montrer la hiérarchie. */

.submenu--nested .submenu-link {
	border-left: none;
}

.submenu--nested .submenu-link:hover {
	background-color: var(--color-blue-1);
	color: var(--color-blanc);
}

.submenu-item.is-current > .submenu-link {
	background-color: var(--color-blue-1);
	color: var(--color-blanc);
}

/* ---- Sous-menu mobile (accordéon <details>/<summary>, même pattern que
   .accordion-item ailleurs sur le site — pas de JS) ---- */

.mobile-submenu-details {
	width: 100%;
}

.mobile-primary-menu-summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--spacing-sm);
	cursor: pointer;
	list-style: none;
}

.mobile-primary-menu-summary::-webkit-details-marker {
	display: none;
}

.mobile-submenu-details[open] .mobile-primary-menu-summary .accordion-toggle-icon {
	transform: rotate(45deg);
}

.mobile-submenu {
	list-style: none;
	margin: var(--spacing-sm) 0 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 4px;
	border-left: 4px solid rgba(0, 204, 255, 0.3);
	padding-left: var(--spacing-sm);
}

.mobile-submenu-link {
	display: block;
	padding: 8px 12px;
	border-radius: 8px;
	font-family: var(--font-family-ui);
	font-weight: 400;
	font-size: var(--ui-text-size);
	color: var(--color-noir);
	text-decoration: none;
}

.mobile-submenu-item--parent .mobile-submenu-link {
	font-weight: 700;
}

.mobile-submenu-item.is-current .mobile-submenu-link {
	background-color: var(--color-blue-1);
	color: var(--color-blanc);
	font-weight: 700;
}

/* ---- Boutons CTA (header + overlay mobile) ---- */

.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	line-height: normal;
	text-decoration: none;
	color: var(--color-noir);
	border-radius: 50px;
	padding: 12px 24px;
	white-space: normal;
}

.btn-outline {
	background: transparent;
	border: 1px solid var(--color-noir);
}

.btn-primary {
	background-color: var(--color-blue-3);
	border: 1px solid transparent;
}

.btn-icon {
	display: inline-flex;
	flex-shrink: 0;
	width: 14px;
	height: 14px;
}

.btn-icon img {
	display: block;
	width: 100%;
	height: 100%;
}

/* ---- Burger ---- */

.mobile-menu-toggle {
	background: none;
	border: none;
	cursor: pointer;
	padding: 10px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	width: 40px;
	height: 40px;
	z-index: 1001;
}

.hamburger-line {
	display: block;
	width: 26px;
	height: 2px;
	background-color: var(--color-noir);
	margin: 3px 0;
	transition: transform var(--transition-base), opacity var(--transition-base);
}

.mobile-menu-toggle.active .hamburger-line:nth-child(1) {
	transform: translateY(5px) rotate(45deg);
}

.mobile-menu-toggle.active .hamburger-line:nth-child(2) {
	opacity: 0;
}

.mobile-menu-toggle.active .hamburger-line:nth-child(3) {
	transform: translateY(-5px) rotate(-45deg);
}

/* ---- Overlay mobile ---- */

.mobile-menu-overlay {
	display: none;
	position: fixed;
	inset: 0;
	background-color: var(--bg-light);
	z-index: 1000;
	overflow-y: auto;
}

.mobile-menu-overlay.active {
	display: flex;
}

.mobile-menu-close {
	position: absolute;
	top: 24px;
	right: 24px;
	background: none;
	border: none;
	cursor: pointer;
	padding: 10px;
	display: flex;
	justify-content: center;
	align-items: center;
	width: 40px;
	height: 40px;
	z-index: 1002;
}

.mobile-menu-close .close-line {
	position: absolute;
	width: 22px;
	height: 2px;
	background-color: var(--color-noir);
}

.mobile-menu-close .close-line:first-child {
	transform: rotate(45deg);
}

.mobile-menu-close .close-line:last-child {
	transform: rotate(-45deg);
}

.mobile-menu-content {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	width: 100%;
	min-height: 100vh;
	padding: 100px var(--spacing-md) var(--spacing-lg);
}

.mobile-primary-menu {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	width: 100%;
}

.mobile-menu-ctas {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: var(--spacing-sm);
	width: 100%;
	margin-top: var(--spacing-xl);
}

.mobile-menu-ctas .btn {
	width: 100%;
}

body.mobile-menu-open {
	overflow: hidden;
	height: 100vh;
}

@media (min-width: 1400px) {
	.primary-menu-link {
		white-space: nowrap;
	}
}

@media (min-width: 1024px) {
	.site-header-inner {
		padding: 24px;
	}

	.site-logo {
		width: 150px;
	}

	.header-nav-group {
		display: flex;
		align-items: center;
		justify-content: flex-end;
		gap: var(--spacing-sm);
	}

	.primary-menu {
		display: flex;
		align-items: center;
		gap: 20px;
	}

	.primary-menu-link {
		font-size: 1.4rem;
	}

	.header-ctas .btn {
		font-size: 1.4rem;
		padding: 12px 18px;
	}

	.header-ctas {
		display: flex;
		align-items: center;
		gap: var(--spacing-sm);
	}

	.mobile-menu-toggle,
	.mobile-menu-overlay {
		display: none;
	}
}

/* ==========================================================================
   FOOTER
   Figma: "Design system - Header & Footer" (node 339:1153)
   Desktop node 63:393 — Mobile "footer-responsive" node 396:5177
   ========================================================================== */

.site-footer {
	background-color: var(--color-blue-1);
	color: var(--color-blanc);
}

.footer-inner {
	max-width: var(--container-max-width);
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	padding: var(--spacing-xl) var(--spacing-md) var(--spacing-md);
}

.footer-top {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
}

.footer-main {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-xl);
}

.footer-logo img {
	display: block;
	width: 130px;
	height: auto;
}

.footer-links {
	display: flex;
	justify-content: space-between;
	gap: var(--spacing-md);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.footer-links-col {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
}

.footer-links-title {
	font-weight: 700;
	color: var(--color-blanc);
	text-decoration: none;
}

.footer-links-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
}

.footer-links-list a {
	font-weight: 400;
	color: var(--color-blanc);
	text-decoration: none;
}

.footer-links-title:hover,
.footer-links-list a:hover {
	text-decoration: underline;
}

.footer-accessibility {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	border: 1px solid var(--color-blanc);
	border-radius: var(--border-radius-lg);
	padding: 21px;
}

.footer-accessibility-title {
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	margin: 0 0 4px;
}

.footer-accessibility-text {
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: normal;
}

.footer-accessibility-text p {
	margin: 0;
}

.footer-accessibility-cta {
	display: inline-flex;
	align-items: center;
	gap: var(--spacing-sm);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: var(--color-blanc);
	text-decoration: none;
}

.cta-icon {
	display: inline-flex;
	width: 14px;
	height: 14px;
}

.cta-icon img {
	display: block;
	width: 100%;
	height: 100%;
}

.footer-bottom {
	border-top: 1px solid var(--color-blanc);
	padding-top: var(--spacing-md);
}

.footer-legal-links {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--spacing-xs);
}

.footer-legal-links a {
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--color-blanc);
	text-decoration: none;
	white-space: nowrap;
}

.footer-legal-links a:hover {
	text-decoration: underline;
}

@media (min-width: 1024px) {
	.footer-inner {
		padding: 40px 149px 32px;
	}

	.footer-top {
		flex-direction: row;
		align-items: flex-start;
		justify-content: flex-end;
		gap: var(--spacing-md);
	}

	.footer-main {
		flex: 1 0 0;
		flex-direction: row;
		justify-content: space-between;
		gap: var(--spacing-md);
	}

	.footer-logo {
		flex: 0 0 164px;
	}

	.footer-links {
		flex: 0 0 auto;
	}

	.footer-accessibility {
		flex: 0 0 347px;
	}

	.footer-bottom {
		display: flex;
	}

	.footer-legal-links {
		flex-direction: row;
		justify-content: space-between;
		align-items: center;
		width: 100%;
		gap: var(--spacing-md);
	}
}

/* ==========================================================================
   HOMEPAGE — composants partagés
   Figma: "Maquettes finales" > "HOMEPAGE - RDE - USAGER"
   (desktop node 664:8347, mobile node 383:2908)
   ========================================================================== */

.hp-section-inner {
	max-width: var(--container-max-width);
	margin: 0 auto;
	padding: 30px var(--spacing-md);
}

@media (min-width: 1024px) {
	.hp-section-inner {
		padding: 30px 149px;
	}
}

/* ---- cta-picto (bouton pilule + flèche) ---- */

.cta-picto {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	padding: 12px 24px;
	border-radius: 50px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	text-decoration: none;
	white-space: normal;
}

.cta-picto--navy {
	background-color: var(--color-blue-1);
	color: var(--color-blanc);
}

.cta-picto--cyan {
	background-color: var(--color-blue-3);
	color: var(--color-noir);
}

.cta-picto-icon {
	display: inline-flex;
	width: 16px;
	height: 16px;
	flex-shrink: 0;
}

.cta-picto-icon img {
	display: block;
	width: 100%;
	height: 100%;
}

/* ---- section-title (tiret + eyebrow + H2) ---- */

.section-title-eyebrow {
	display: flex;
	align-items: center;
	gap: var(--spacing-sm);
	margin: 0 0 12px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	text-transform: uppercase;
	color: var(--color-noir);
}

.section-title-dash {
	width: 24px;
	height: 3px;
	flex-shrink: 0;
	background-color: var(--color-blue-3);
}

.section-title-heading {
	margin: 0;
}

/* ---- media-stripe (liseré 4 couleurs sous les images) ---- */

.media-stripe {
	display: flex;
	height: 10px;
}

.media-stripe-seg {
	flex: 1;
}

.media-stripe--vertical {
	position: absolute;
	top: 0;
	right: 0;
	height: 100%;
	width: 10px;
	flex-direction: column;
}

/* ---- variantes réutilisables du décor "corner" (cadre à côté de la
   photo, pas de biseau — cf. le gros commentaire "déco d'angle" plus bas
   pour l'historique complet du fix). Introduites le 2026-09-23 après
   avoir répété le même bloc de règles sur plusieurs pages (NOS MISSIONS,
   PRIX DU SERVICE DE L'EAU...) — ajouter `stripe-corner--left` ou
   `--right` sur le conteneur de la photo (en plus de sa classe
   existante, ex. `.split-media-media`) UNIQUEMENT quand cette image
   précise a le motif à 2 bandes confirmé dans Figma (la grande majorité
   des images à bande simple du site n'en ont pas — ne jamais l'ajouter
   sans avoir vérifié le node Figma, cf. progress.md pour la liste des
   images déjà vérifiées). `--left` = liseré vertical à gauche, l'image
   ne garde l'arrondi qu'en haut-droit ; `--right` = inverse. ---- */

.stripe-corner--left,
.stripe-corner--right {
	position: relative;
}

.stripe-corner--left {
	padding: 0 0 10px 10px;
}

.stripe-corner--right {
	padding: 0 10px 10px 0;
}

.stripe-corner--left img {
	border-radius: 0 16px 0 0 !important;
}

.stripe-corner--right img {
	border-radius: 16px 0 0 0 !important;
}

.stripe-corner--left .media-stripe--vertical {
	left: 0;
	right: auto;
	height: 100%;
	overflow: hidden;
	border-bottom-left-radius: 8px;
}

.stripe-corner--left .media-stripe:not(.media-stripe--vertical) {
	position: absolute;
	left: 0;
	right: auto;
	bottom: 0;
	width: 100%;
	overflow: hidden;
	border-bottom-left-radius: 8px;
}

.stripe-corner--right .media-stripe--vertical {
	right: 0;
	left: auto;
	height: 100%;
	overflow: hidden;
	border-bottom-right-radius: 8px;
}

.stripe-corner--right .media-stripe:not(.media-stripe--vertical) {
	position: absolute;
	left: auto;
	right: 0;
	bottom: 0;
	width: 100%;
	overflow: hidden;
	border-bottom-right-radius: 8px;
}

@media (min-width: 1024px) {
	.split-media-row > .stripe-corner--left:not(.media-card),
	.split-media-row > .stripe-corner--right:not(.media-card) {
		align-self: stretch;
		min-height: 360px;
	}

	.split-media-row > .stripe-corner--left:not(.media-card) img,
	.split-media-row > .stripe-corner--right:not(.media-card) img {
		position: absolute;
		top: 0;
		width: calc(100% - 10px);
		height: calc(100% - 10px);
		-o-object-fit: cover;
		object-fit: cover;
	}

	.split-media-row > .stripe-corner--left:not(.media-card) img {
		left: 10px;
	}

	.split-media-row > .stripe-corner--right:not(.media-card) img {
		left: 0;
	}
}

/* ---- quick-link-card ---- */

.hp-demarches-grid {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	margin-top: var(--spacing-lg);
}

.quick-link-card {
	display: flex;
	text-decoration: none;
	color: var(--color-noir);
	background-color: var(--color-blanc);
	border-top: 1px solid var(--color-noir);
	border-right: 1px solid var(--color-noir);
	border-bottom: 1px solid var(--color-noir);
	border-left: 4px solid var(--color-blue-3);
	border-radius: 8px 16px 16px 8px;
	transition: background-color 0.2s ease, border-color 0.2s ease;
}

.quick-link-card:hover,
.quick-link-card:focus-visible {
	background-color: rgba(0, 204, 255, 0.15);
	border-top-color: transparent;
	border-right-color: transparent;
	border-bottom-color: transparent;
}

.quick-link-card-body {
	flex: 1;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--spacing-md);
	padding: var(--spacing-md);
}

.quick-link-card-title {
	margin: 0 0 8px;
	font-family: var(--font-family-heading);
	font-weight: 700;
	font-size: 2.4rem;
	line-height: 2.8rem;
}

.quick-link-card-desc {
	margin: 0;
	font-family: var(--font-family-body);
	font-size: var(--font-size-base);
	line-height: 1.4;
}

.quick-link-card-icon {
	display: inline-flex;
	flex-shrink: 0;
	width: 16px;
	height: 16px;
	background-color: var(--color-blue-3);
	-webkit-mask-image: url('assets/images/icon-fleche-directionnelle-blanche.svg');
	mask-image: url('assets/images/icon-fleche-directionnelle-blanche.svg');
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-size: contain;
	mask-size: contain;
	-webkit-mask-position: center;
	mask-position: center;
	transition: background-color 0.2s ease;
}

.quick-link-card:hover .quick-link-card-icon,
.quick-link-card:focus-visible .quick-link-card-icon {
	background-color: var(--text-gray-light);
}

@media (min-width: 1024px) {
	.hp-demarches-grid {
		flex-direction: row;
	}

	.hp-demarches-grid .quick-link-card {
		flex: 1;
	}
}

/* ---- bloc-alerte ---- */

.bloc-alerte {
	background-color: var(--color-orange);
}

.bloc-alerte-inner {
	max-width: var(--container-max-width);
	margin: 0 auto;
	min-height: 50px;
	padding: var(--spacing-sm) var(--spacing-md);
	display: flex;
	align-items: center;
	gap: var(--spacing-sm);
	/* `.bloc-alerte-inner` est parfois un <a> (champ `alerte_lien` rempli,
	   retour Pierre "ajouter la possibilité d'ajouter un lien") — reset du
	   style de lien natif, la couleur/texte restent ceux du bandeau. */
	color: inherit;
	text-decoration: none;
}

@media (min-width: 1024px) {
	.bloc-alerte-inner {
		padding: var(--spacing-sm) 149px;
	}
}

.bloc-alerte-icon {
	display: inline-flex;
	flex-shrink: 0;
	width: 16px;
	height: 18px;
}

.bloc-alerte-icon img {
	display: block;
	width: 100%;
	height: 100%;
}

.bloc-alerte-marquee {
	flex: 1;
	min-width: 0;
	overflow: hidden;
}

.bloc-alerte-track {
	display: flex;
	width: max-content;
	animation: bloc-alerte-scroll 18s linear infinite;
}

.bloc-alerte-text {
	flex-shrink: 0;
	margin: 0;
	padding-right: 64px;
	white-space: nowrap;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--color-noir);
}

@keyframes bloc-alerte-scroll {
	from {
		transform: translateX(-50%);
	}
	to {
		transform: translateX(0);
	}
}

@media (prefers-reduced-motion: reduce) {
	.bloc-alerte-track {
		animation: none;
	}
}

/* ==========================================================================
   HERO
   ========================================================================== */

.hp-hero {
	background-color: rgba(0, 204, 255, 0.15);
}

.hp-hero-inner {
	max-width: var(--container-max-width);
	margin: 0 auto;
	padding: var(--spacing-xl) var(--spacing-md);
	display: flex;
	flex-direction: column;
	gap: var(--spacing-lg);
}

.hp-hero-text {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--spacing-md);
}

.hp-hero-title {
	margin: 0;
	font-family: var(--font-family-heading);
	font-weight: 700;
	font-size: var(--h1-size);
	line-height: var(--h1-line-height);
	color: var(--color-noir);
}

.hp-hero-title-accent {
	color: var(--color-blue-1);
}

.hp-hero-desc {
	margin: 0;
	max-width: 466px;
	font-family: var(--font-family-body);
	font-size: var(--body-size);
	line-height: var(--body-line-height);
}

.hp-hero-media img {
	display: block;
	width: 100%;
	height: auto;
	/* le cadre coloré longe le bord gauche + le bas (retour Pierre,
	   2026-09-23) : il touche 3 des 4 coins de l'image (haut-gauche,
	   bas-gauche, bas-droit) — un rayon là créerait un décroché avec le
	   cadre, qui lui est un angle droit. Seul le coin haut-droit, jamais
	   longé par le cadre, garde l'arrondi. */
	border-radius: 0 16px 0 0;
}

@media (min-width: 1024px) {
	.hp-hero-inner {
		flex-direction: row;
		align-items: center;
		padding: 60px 149px;
		gap: 117px;
	}

	.hp-hero-text {
		flex: 0 0 559px;
	}

	.hp-hero-media {
		flex: 1;
	}

	.hp-hero-title {
		font-size: 5rem;
		line-height: 5rem;
	}
}

/* ==========================================================================
   TRAVAUX ET COUPURES
   ========================================================================== */

.hp-travaux {
	background-color: var(--color-orange);
}

.hp-travaux-grid {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-lg);
}

.hp-travaux-media img {
	display: block;
	width: 100%;
	height: auto;
	/* le cadre coloré longe le bord droit + le bas (seul côté "droite" du
	   site, vérifié via `get_design_context` sur 664:8406) : il touche 3
	   des 4 coins (haut-droit, bas-droit, bas-gauche) — seul le coin
	   haut-gauche, jamais longé par le cadre, garde l'arrondi. */
	border-radius: 16px 0 0 0;
}

/* ---- déco d'angle (coin biseauté) : hero (896:6508), travaux (664:8406),
   org-intro/NOTRE ORGANISATION (820:13696), méthaniseur/NOTRE PATRIMOINE
   (787:5359) — 4 images qui reprennent le même motif décoratif à 2 bandes.
   **Recheck complet du 2026-09-23** (retour Pierre : repasser le fix sur
   toutes les images à 2 bandes) : chaque node a été rouvert individuellement
   via `get_design_context` (pas supposé "pareil que le voisin") — contre
   toute attente, SEUL le travaux a son liseré vertical à DROITE ; hero,
   org-intro ET méthaniseur l'ont tous les trois à GAUCHE (la note du
   2026-09-15 qui disait "travaux ET org-intro à droite" était fausse, à
   l'origine du bug retrouvé sur org-intro — cf. plus bas). D'où 2 groupes
   de sélecteurs, pas 3.
   **Historique** : biseau + bandes superposées à la photo au 1er passage
   (corrigé le 2026-09-22 : le biseau coupait le mauvais coin — le HAUT au
   lieu du BAS) ; bandes déplacées HORS de la photo le 2026-09-23 sur
   demande Pierre ("les barres sont pas DANS l'image, elles sont autour
   normalement, c'est plus joli") — `position: absolute` avec un décalage
   NÉGATIF égal à leur épaisseur (10px), donc entièrement hors de la boîte
   de l'image (un enfant absolu ne compte pas dans la taille de son parent,
   ça ne pousse rien dans la mise en page) ; chaque bande allongée de 10px
   vers le coin (`calc(100% + 10px)`) pour que les 2 se rejoignent pile
   dans le coin extérieur, sans trou. Plus de biseau nécessaire sur
   l'image : rien à révéler en dessous, le cadre est à côté, pas caché
   derrière — l'image redevient un simple rectangle, arrondi uniquement
   sur le coin jamais longé par le cadre (`border-radius` asymétrique sur
   chaque `img`, cf. règles dédiées).
   **`.org-intro-media` avait un vrai bug** (retrouvé le 2026-09-23) : son
   appel `get_template_part` (template-organisation.php) n'avait jamais
   reçu `orientation => 'corner'` — une seule bande s'y imprimait, malgré
   les commentaires qui le rattachaient à cette famille depuis 2026-07-24.
   Corrigé : `orientation => 'corner', invert_horizontal => true` ajouté.
   L'accent diagonal en ::after (gradient 4 couleurs dans le coin) avait
   été retiré le 2026-09-16 : rendu "arc-en-ciel dégueulasse" sur toute la
   diagonale de l'image plutôt qu'un fin liseré propre — sans objet
   maintenant que le cadre est à côté, pas superposé. ---- */

.hp-hero-media,
.hp-travaux-media,
.np-methaniseur-media-bas {
	position: relative;
}

.org-intro-media {
	position: relative;
	padding: 0 0 10px 10px;
}

/* ---- groupe DROITE (travaux uniquement) : cadre qui touche les coins
   haut-droit/bas-droit/bas-gauche, seul le haut-gauche garde l'arrondi.
   Couleurs : ordre par défaut de media-stripe.php (pas d'
   `invert_horizontal`) — le bout droit de la bande horizontale est déjà
   bleu 1, comme le bas de la verticale, continuité déjà correcte. ---- */

.hp-travaux-media .media-stripe:not(.media-stripe--vertical) {
	position: absolute;
	left: auto;
	right: -10px;
	bottom: -10px;
	width: calc(100% + 10px);
	overflow: hidden;
	border-bottom-right-radius: 8px;
}

.hp-travaux-media .media-stripe--vertical {
	right: -10px;
	left: auto;
	height: calc(100% + 10px);
	overflow: hidden;
	border-bottom-right-radius: 8px;
}

/* ---- groupe GAUCHE (hero, org-intro, méthaniseur) : cadre qui touche les
   coins haut-gauche/bas-gauche/bas-droit, seul le haut-droit garde
   l'arrondi. Couleurs : `invert_horizontal => true` sur les 3 appels PHP
   — le bout gauche de la bande horizontale doit être bleu 1 comme le bas
   de la verticale (cf. media-stripe.php pour le détail). ---- */

.hp-hero-media .media-stripe--vertical {
	left: -10px;
	right: auto;
	height: calc(100% + 10px);
	overflow: hidden;
	border-bottom-left-radius: 8px;
}

.hp-hero-media .media-stripe:not(.media-stripe--vertical) {
	position: absolute;
	left: -10px;
	right: auto;
	bottom: -10px;
	width: calc(100% + 10px);
	overflow: hidden;
	border-bottom-left-radius: 8px;
}

.org-intro-media .media-stripe--vertical {
	left: 0;
	right: auto;
	height: 100%;
	overflow: hidden;
	border-bottom-left-radius: 8px;
}

.org-intro-media .media-stripe:not(.media-stripe--vertical) {
	position: absolute;
	left: 0;
	right: auto;
	bottom: 0;
	width: 100%;
	overflow: hidden;
	border-bottom-left-radius: 8px;
}

/* ---- np-methaniseur-col (Station & méthaniseur, NOTRE PATRIMOINE) :
   colonne = carte Méthaniseur + 2e photo décorative en dessous (node
   Figma 787:5359, même stock placeholder "799-20260210_remplissage_
   rouchain" que le hero homepage — pas de titre/texte associé). Reste 1
   seul item flex dans .nm-two-col (au lieu de 2), donc le 2-colonnes
   station/méthaniseur n'est pas cassé. ---- */

.np-methaniseur-col {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
}

.np-methaniseur-media-bas {
	padding: 0 0 10px 10px;
}

.np-methaniseur-media-bas .media-stripe--vertical {
	left: 0;
	right: auto;
	height: 100%;
	overflow: hidden;
	border-bottom-left-radius: 8px;
}

.np-methaniseur-media-bas .media-stripe:not(.media-stripe--vertical) {
	position: absolute;
	left: 0;
	right: auto;
	bottom: 0;
	width: 100%;
	overflow: hidden;
	border-bottom-left-radius: 8px;
}

.np-methaniseur-media-bas img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 0 16px 0 0;
}

.hp-travaux-desc {
	margin: var(--spacing-sm) 0 var(--spacing-md);
	font-family: var(--font-family-body);
	font-size: var(--body-size);
	line-height: var(--body-line-height);
}

@media (min-width: 1024px) {
	.hp-travaux-grid {
		flex-direction: row;
		align-items: center;
	}

	.hp-travaux-media {
		flex: 0 0 559px;
	}

	.hp-travaux-text {
		flex: 1;
	}
}

/* ==========================================================================
   ACTUALITÉS + ÉVÉNEMENTS
   ========================================================================== */

.hp-actus-top {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	margin: var(--spacing-lg) 0;
	margin-bottom: var(--spacing-md);
}

.actu-card {
	display: flex;
	flex-direction: column;
	border-radius: 16px;
	overflow: hidden;
	background-color: var(--bg-light);
	border: 1px solid var(--color-noir);
	color: var(--color-noir);
}

.actu-card--featured {
	background-color: var(--color-blue-1);
	border-color: transparent;
	color: var(--color-blanc);
}

.actu-card-media img {
	display: block;
	width: 100%;
	height: 220px;
	object-fit: cover;
}

.actu-card-body {
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	padding: var(--spacing-md);
}

.actu-card-meta {
	display: flex;
	align-items: center;
	gap: 8px;
}

.actu-card-badge {
	background-color: var(--color-blue-3);
	color: var(--color-noir);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: 1.4rem;
	text-transform: uppercase;
	padding: 4px 16px;
	border-radius: 50px;
}

.actu-card-date {
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.actu-card-title {
	margin: 0;
	font-family: var(--font-family-heading);
	font-weight: 700;
	font-size: 2rem;
	line-height: 1.3;
}

.actu-card-excerpt {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.actu-card-link {
	display: inline-flex;
	align-items: center;
	gap: var(--spacing-sm);
	margin-top: auto;
	padding-top: var(--spacing-sm);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: inherit;
	text-decoration: none;
}

.actu-card-link-icon {
	display: inline-flex;
	flex-shrink: 0;
	width: 14px;
	height: 14px;
	background-color: var(--color-blue-3);
	-webkit-mask-image: url('assets/images/icon-fleche-directionnelle-blanche.svg');
	mask-image: url('assets/images/icon-fleche-directionnelle-blanche.svg');
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-size: contain;
	mask-size: contain;
	-webkit-mask-position: center;
	mask-position: center;
}

.hp-events-card {
	border: 1px solid var(--color-noir);
	border-radius: 16px;
	padding: 21px;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: var(--spacing-md);
}

.hp-events-title {
	margin: 0;
	font-family: var(--font-family-heading);
	font-weight: 700;
	font-size: 2.4rem;
}

.hp-events-subtitle {
	margin: 0;
	color: var(--text-gray-light);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.hp-events-list {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.event-card {
	padding: 16px 21px 16px 0;
	display: flex;
	flex-direction: column;
	text-decoration: none;
	color: inherit;
	box-shadow: inset 3px 0 0 transparent;
	border-radius: 0 16px 16px 0;
	transition: background-color 0.2s ease, box-shadow 0.2s ease, padding-left 0.2s ease;
}

.event-card-title {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--font-size-base);
}

.event-card-details p {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--text-gray-light);
}

.event-card-details strong {
	font-weight: 700;
}

.event-card--highlight,
.event-card:hover,
.event-card:focus-visible {
	background-color: rgba(0, 204, 255, 0.15);
	box-shadow: inset 3px 0 0 var(--color-blue-3);
	padding-left: 21px;
}

.event-card--highlight .event-card-title,
.event-card:hover .event-card-title,
.event-card:focus-visible .event-card-title {
	text-decoration: underline;
}

.hp-events-list:hover .event-card--highlight:not(:hover):not(:focus-visible) {
	background-color: transparent;
	box-shadow: inset 3px 0 0 transparent;
	padding-left: 0;
}

.hp-events-list:hover .event-card--highlight:not(:hover):not(:focus-visible) .event-card-title {
	text-decoration: none;
}

.hp-actus-grid {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
}

.hp-actus-cta {
	display: flex;
	justify-content: center;
	margin-top: var(--spacing-lg);
}

@media (min-width: 1024px) {
	.hp-actus-top {
		flex-direction: row;
		align-items: stretch;
	}

	.hp-actus-top .actu-card--featured {
		flex: 0 0 754px;
	}

	.hp-events-card {
		flex: 1;
	}

	.hp-actus-grid {
		flex-direction: row;
	}

	.hp-actus-grid .actu-card {
		flex: 1;
	}

	.hp-actus-cta {
		justify-content: flex-end;
	}
}

/* ==========================================================================
   COMITÉ SYNDICAL
   ========================================================================== */

.hp-comite {
	background-color: rgba(0, 204, 255, 0.15);
}

/* Tiret cyan (bleu 3) au lieu du bleu 1 par défaut de .section-title-dash
   — retour Pierre 2026-09-17, même pattern que .org-voir-aussi/
   .org-comite-block-label ci-dessous. */
.hp-comite .section-title-dash {
	background-color: var(--color-blue-3);
}

/* Espace blanc de 60px entre "Notre rendez-vous" et "Voir aussi" — retour
   Pierre 2026-09-17 (2ᵉ passe : la 1ʳᵉ tentative touchait le padding
   interne de chaque section, qui a chacune son propre fond cyan clair
   (rgba(0,204,255,.15/.16) — réduire le padding ne fait que rapprocher
   le contenu du bord de CE fond coloré, les 2 fonds continuent de se
   toucher directement, aucun blanc ne peut apparaître entre eux tant
   que les boîtes elles-mêmes ne sont pas écartées. Il faut une vraie
   marge EXTÉRIEURE à la boîte, pas du padding intérieur.) Repassé en
   `margin-bottom` sur .hp-comite, qui pousse la section suivante plus
   bas et laisse apparaître le fond blanc de la page entre les 2 —
   scopé à .page-evenements, .hp-comite est réutilisé ailleurs. */
.page-evenements .hp-comite {
	margin-bottom: 60px;
}

.hp-comite-grid {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-lg);
}

.hp-comite-text {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--spacing-md);
}

.hp-comite-desc {
	margin: 0;
	font-family: var(--font-family-body);
	font-size: var(--body-size);
	line-height: var(--body-line-height);
}

.hp-comite-card {
	background-color: var(--color-blue-1);
	border-radius: 16px;
	padding: 20px 32px;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--spacing-md);
}

.hp-comite-date-row {
	display: flex;
	align-items: flex-start;
	gap: var(--spacing-md);
}

.hp-comite-date-badge {
	flex-shrink: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--color-blanc);
	border-radius: 16px;
	padding: 16px 24px;
	color: var(--color-blanc);
	font-family: var(--font-family-heading);
	font-weight: 800;
}

.hp-comite-date-day {
	font-size: 2.4rem;
	line-height: 1.2;
}

.hp-comite-date-month {
	font-size: 1.4rem;
}

.hp-comite-details p {
	margin: 0 0 8px;
	color: var(--color-blanc);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.hp-comite-details strong {
	font-weight: 700;
}

@media (min-width: 1024px) {
	.hp-comite-grid {
		flex-direction: row;
		align-items: center;
	}

	.hp-comite-text {
		flex: 0 0 579px;
	}

	.hp-comite-card {
		flex: 0 0 560px;
	}
}

/* ==========================================================================
   PAGE-HEADER (en-tête générique des pages secondaires)
   Figma : vu sur "NOTRE ORGANISATION - RDE" (node 462:1434) — bandeau
   cyan 15% (eyebrow + H1), liseré 4 couleurs, fil d'Ariane.
   ========================================================================== */

.page-header-band {
	background-color: rgba(0, 204, 255, 0.15);
}

.page-header-band-inner {
	max-width: var(--container-max-width);
	margin: 0 auto;
	padding: var(--spacing-xl) var(--spacing-md);
}

.page-header-title {
	margin: 0;
}

/* Dans l'en-tête de page secondaire, le tiret de l'eyebrow est cyan
   (#00CCFF, confirmé dans Figma node 669:9469) — contrairement au même
   .section-title-dash utilisé ailleurs sur le site (homepage, "Voir
   aussi"...), qui est bleu 1 #003366 (retour Pierre du 2026-09-15). */
.page-header-band-inner .section-title-dash {
	background-color: var(--color-blue-3);
}

.page-header-stripe {
	display: flex;
	flex-direction: row-reverse;
	height: 10px;
}

.page-header-stripe-seg {
	flex: 1;
}

.page-header-stripe-seg--tint {
	background-color: rgba(0, 204, 255, 0.15);
}

.page-header-stripe-seg--blue3 {
	background-color: var(--color-blue-3);
}

.page-header-stripe-seg--blue2 {
	background-color: var(--color-blue-2);
}

.page-header-stripe-seg--blue1 {
	background-color: var(--color-blue-1);
}

.page-header-breadcrumb {
	max-width: var(--container-max-width);
	margin: 0 auto;
	padding: var(--spacing-md);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--color-noir);
}

.page-header-breadcrumb a {
	color: var(--color-noir);
	text-decoration: none;
}

.page-header-breadcrumb a:hover {
	text-decoration: underline;
}

.page-header-breadcrumb-current {
	font-weight: 700;
	text-decoration: underline;
}

@media (min-width: 1024px) {
	.page-header-band-inner,
	.page-header-breadcrumb {
		padding-left: 149px;
		padding-right: 149px;
	}
}

/* ---- section-title-desc (paragraphe optionnel sous le H2) ---- */

.section-title-desc {
	margin: var(--spacing-sm) 0 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: 1.5;
}

/* ==========================================================================
   PARTNER-CARD (intercommunalités / partenaires — "NOTRE ORGANISATION")
   Figma node 466:2130 — carte bordée, liseré cyan, ombre portée, flèche
   externe. Pas de logo (Figma n'a que des placeholders identiques).
   ========================================================================== */

.org-partner-grid {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	margin-top: var(--spacing-lg);
}

.partner-card {
	display: flex;
	text-decoration: none;
	color: var(--color-noir);
	border-top: 1px solid var(--color-noir);
	border-right: 1px solid var(--color-noir);
	border-bottom: 1px solid var(--color-noir);
	border-left: 4px solid var(--color-blue-3);
	border-radius: 8px 16px 16px 8px;
	box-shadow: 0 0 12px rgba(0, 0, 0, 0.15);
}

.partner-card-body {
	flex: 1;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--spacing-md);
	padding: var(--spacing-md);
}

.partner-card-content {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	flex: 1;
	min-width: 0;
}

.partner-card-logo {
	display: block;
	height: 43px;
	max-width: 150px;
}

.partner-card-logo img {
	display: block;
	height: 100%;
	width: auto;
	max-width: 100%;
	-o-object-fit: contain;
	object-fit: contain;
}

.partner-card-title {
	margin: 0 0 4px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.partner-card-domaine {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: 1.4rem;
	color: #666;
}

.partner-card-icon {
	display: inline-flex;
	flex-shrink: 0;
	width: 14px;
	height: 14px;
}

.partner-card-icon img {
	display: block;
	width: 100%;
	height: 100%;
}

@media (min-width: 1024px) {
	.org-partner-grid {
		display: grid;
		grid-template-columns: repeat(3, 1fr);
		gap: var(--spacing-md);
	}
}

/* ==========================================================================
   NOTRE ORGANISATION — sections propres à la page
   ========================================================================== */

.org-intro-grid {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-lg);
}

.org-intro-richtext p {
	margin: 0 0 var(--spacing-sm);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: 1.5;
}

.org-intro-media img {
	display: block;
	width: 100%;
	height: auto;
	/* le cadre coloré longe le bord gauche + le bas (groupe GAUCHE, comme
	   le hero — vérifié via `get_design_context` sur 820:13696, 2026-09-23,
	   corrige la note erronée du 2026-09-15 qui le donnait à droite) : il
	   touche 3 des 4 coins (haut-gauche, bas-gauche, bas-droit) — seul le
	   coin haut-droit, jamais longé par le cadre, garde l'arrondi. */
	border-radius: 0 16px 0 0;
}

.org-stats {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
}

/* Espacements verticaux précis entre blocs (retours Pierre 2026-09-16) :
   46px entre .org-intro-grid et .org-stats (au lieu des 60px+60px de
   padding de section qui s'additionnaient par défaut), 60px entre la
   section intro (finissant par .org-stats) et "Intercommunalités
   adhérentes", et entre celle-ci et "Gouvernance" — on retire la moitié
   de la paire de paddings à chaque jonction plutôt que les deux. */

@media (min-width: 1024px) {
	.org-intro > .hp-section-inner:first-child {
		padding-bottom: 0;
	}

	.org-intro > .hp-section-inner:last-child {
		padding-top: 46px;
		padding-bottom: 0;
	}

	.org-inter .hp-section-inner {
		padding-bottom: 0;
	}
}

.org-stat {
	display: flex;
	flex-direction: column;
	align-items: center;
	padding: 16px;
	border-radius: 16px;
	text-align: center;
}

.org-stat-nombre {
	font-family: var(--font-family-heading);
	font-weight: 700;
	font-size: 3.5rem;
}

.org-stat-label {
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.org-stat--1 {
	background-color: var(--color-blue-1);
	color: var(--color-blanc);
}

.org-stat--2 {
	background-color: var(--color-blue-2);
	color: var(--color-blanc);
}

.org-stat--3 {
	background-color: var(--color-blue-3);
	color: var(--color-noir);
}

.org-stat--4 {
	background-color: rgba(0, 204, 255, 0.15);
	color: var(--color-noir);
}

/* ---- en-tête "Nos partenaires" : H2+description + 2 logos d'agences de
   l'eau à droite (node Figma 471:2405, "Agence de l'eau Rhône
   Méditerranée Corse" / "Agence de l'eau Loire Bretagne" — vrais logos,
   pas un placeholder ici) ---- */

.org-partenaires-title-row {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
}

.org-partenaires-logos {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--spacing-md);
	flex-shrink: 0;
}

.org-partenaires-logos img {
	display: block;
	height: 60px;
	width: auto;
}

@media (min-width: 1024px) {
	.org-partenaires-title-row {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
	}

	.org-partenaires-logos img {
		height: 79px;
	}
}

.org-partenaires-intro {
	margin: var(--spacing-md) 0 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.org-callout {
	margin-top: var(--spacing-lg);
	padding: var(--spacing-md);
	background-color: rgba(0, 204, 255, 0.15);
	border-radius: 16px;
}

.org-callout p {
	margin: 0 0 var(--spacing-sm);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: 1.5;
}

.org-callout p:last-child {
	margin-bottom: 0;
}

/* Fond cyan clair plein-largeur du bandeau "Voir aussi" (vu dans Figma sur
   toutes les pages qui l'utilisent, ex. node 795:3795 PRIX DU SERVICE DE
   L'EAU) — règle manquante jusqu'ici, ajoutée le 2026-07-28 : s'applique
   rétroactivement à toutes les pages qui utilisent déjà .org-voir-aussi
   (Notre organisation, Nos missions, Nos engagements, Notre patrimoine),
   aucune autre n'avait de fond alors que le composant du Design System en a
   un. Vérifié par régression après coup (cf. progress.md). */
.org-voir-aussi {
	background-color: rgba(0, 204, 255, 0.16);
}

/* Dash de l'eyebrow "Voir aussi" : cyan (comme le page-header et l'accordéon
   Gouvernance), pas bleu 1 (le défaut homepage de .section-title-dash). */
.org-voir-aussi .section-title-dash {
	background-color: var(--color-blue-3);
}

.org-voir-aussi-links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--spacing-sm);
	margin-top: var(--spacing-md);
}

@media (min-width: 1024px) {
	.org-intro-grid {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
	}

	.org-intro-text {
		flex: 0 0 559px;
	}

	.org-intro-media {
		flex: 0 0 559px;
	}

	.org-stats {
		flex-direction: row;
	}

	.org-stat {
		flex: 1;
	}
}

/* ---- accordion (gouvernance) ----
   <details>/<summary> natifs, icône +/× en CSS pur (pas de JS, pas
   d'asset Figma — évite le bug d'export de fond opaque). */

.accordion {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	margin-top: var(--spacing-lg);
}

.accordion-item {
	border-top: 1px solid var(--color-noir);
	border-right: 1px solid var(--color-noir);
	border-bottom: 1px solid var(--color-noir);
	border-left: 4px solid var(--color-blue-3);
	border-radius: 8px 16px 16px 8px;
}

/* À l'ouverture : plus de bordure noire (seul le liseré gauche cyan reste,
   déjà présent en permanence ci-dessus) + fond cyan 15% — comportement
   générique du composant de base (retour Pierre 2026-09-17, vu sur NOS
   DÉMARCHES - RDE - ÉTAPE 3 mais applicable à tout .accordion-item simple :
   Gouvernance NOTRE ORGANISATION, Prévention des inondations NOS MISSIONS,
   étapes de visite STATION D'ÉPURATION, Pas à pas démarche/actualité). */

.accordion-item[open] {
	border-top-color: transparent;
	border-right-color: transparent;
	border-bottom-color: transparent;
	background-color: rgba(0, 204, 255, 0.15);
}

.org-gouvernance-cta {
	margin-top: 32px;
	display: flex;
	justify-content: flex-end;
}

.accordion-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--spacing-md);
	padding: var(--spacing-md);
	cursor: pointer;
	list-style: none;
}

.accordion-header::-webkit-details-marker {
	display: none;
}

.accordion-title {
	margin: 0;
}

.accordion-toggle-icon {
	position: relative;
	flex-shrink: 0;
	width: 24px;
	height: 24px;
	transition: transform 0.2s ease;
}

.accordion-toggle-icon::before,
.accordion-toggle-icon::after {
	content: "";
	position: absolute;
	background-color: var(--color-noir);
}

.accordion-toggle-icon::before {
	top: 50%;
	left: 0;
	width: 100%;
	height: 2px;
	transform: translateY(-50%);
}

.accordion-toggle-icon::after {
	left: 50%;
	top: 0;
	width: 2px;
	height: 100%;
	transform: translateX(-50%);
}

.accordion-item[open] .accordion-toggle-icon {
	transform: rotate(45deg);
}

.accordion-body {
	padding: 0 var(--spacing-md) var(--spacing-md);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.accordion-body a {
	font-weight: 700;
	text-decoration: underline;
}

.accordion-intro {
	margin: 0 0 var(--spacing-md);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: 1.5;
}

.org-comite-block {
	margin-top: var(--spacing-md);
}

.org-comite-block-label {
	display: flex;
	align-items: center;
	gap: var(--spacing-sm);
	margin: 0 0 var(--spacing-sm);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

/* Dash cyan devant le libellé — même pattern que .section-title-eyebrow,
   mais .section-title-dash est bleu 1 par défaut (homepage) : ici il doit
   rester cyan (confirmé Figma node 632:2874). */
.org-comite-block-label .section-title-dash {
	background-color: var(--color-blue-3);
}

.org-comite-officials {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
}

.org-official {
	padding: var(--spacing-sm);
	background-color: var(--color-blue-2);
	color: var(--color-blanc);
	border-radius: 8px;
}

.org-official--president {
	background-color: var(--color-blue-1);
}

.org-official-nom {
	margin: 0 0 4px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.org-official-role {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: 1.4rem;
}

.org-official-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--spacing-sm);
}

.org-noms-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--spacing-xs);
}

.org-nom-badge {
	padding: var(--spacing-sm) var(--spacing-md);
	background-color: var(--color-blue-3);
	border-radius: 16px;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.org-nom-badge--suppleant {
	background-color: rgba(0, 204, 255, 0.15);
}

.org-nom-badge strong {
	font-weight: 700;
}

@media (min-width: 1024px) {
	.org-official-grid {
		grid-template-columns: repeat(4, 1fr);
	}

	.org-noms-grid {
		grid-template-columns: repeat(4, 1fr);
		column-gap: 30px;
		row-gap: 16px;
	}
}

/* ---- anchor-nav (pastille de navigation rapide verticale), Figma node
   820:13644 "Frame 1072" — 3 points cyan dans une pastille navy, fixée à
   64px du bord gauche, centrée verticalement. Composant réutilisable :
   voir template-parts/components/anchor-nav.php pour comment ajouter un
   point. Desktop uniquement (retiré en mobile, demande Pierre). ---- */

.anchor-nav {
	display: none;
}

@media (min-width: 1024px) {
	.anchor-nav {
		display: block;
		position: fixed;
		top: 50%;
		right: 64px;
		transform: translateY(-50%);
		z-index: 150;
	}

	.anchor-nav-list {
		display: flex;
		flex-direction: column;
		align-items: center;
		gap: 32px;
		list-style: none;
		margin: 0;
		width: 27px;
		padding: 24px 0;
		background-color: var(--color-blue-1);
		border-radius: 50px;
	}

	.anchor-nav-dot {
		display: block;
		width: 12px;
		height: 12px;
		border-radius: 50%;
		background-color: var(--color-blue-3);
		text-decoration: none;
		transition: transform 0.15s ease;
	}

	.anchor-nav-dot {
		position: relative;
	}

	.anchor-nav-dot::after {
		content: attr(data-label);
		position: absolute;
		top: 50%;
		right: calc(100% + 28px);
		transform: translateY(-50%);
		padding: 6px 16px;
		border-radius: 50px;
		background-color: var(--color-blue-1);
		color: var(--color-blanc);
		font-family: var(--font-family-ui);
		font-weight: 700;
		font-size: 1.4rem;
		line-height: 1.2;
		white-space: nowrap;
		opacity: 0;
		visibility: hidden;
		pointer-events: none;
		transition: opacity 0.15s ease, visibility 0.15s ease;
	}

	.anchor-nav-dot:hover,
	.anchor-nav-dot:focus-visible {
		transform: scale(1.25);
	}

	.anchor-nav-dot:hover::after,
	.anchor-nav-dot:focus-visible::after {
		opacity: 1;
		visibility: visible;
	}
}

/* ==========================================================================
   NOS MISSIONS
   Figma: "Maquettes finales" > "NOS MISSIONS - RDE" (desktop node 543:5182 /
   mobile 909:6113). Réutilise .hp-section-inner, .section-title-*,
   .cta-picto, .accordion déjà existants.
   ========================================================================== */

/* ---- décor d'angle sur les 2 photos d'intro (Mission + Cycle de l'eau,
   nodes 825:4636 et 825:4662) : découvert le 2026-09-23 (retour Pierre,
   "Nos missions les 2 images n'ont pas les stripes") — même bug
   qu'org-intro, les 2 appels PHP n'avaient jamais reçu
   `orientation => 'corner'` malgré le motif à 2 bandes confirmé dans
   Figma (vérifié via `get_metadata` : liseré vertical à gauche sur les 2,
   comme le hero) — corrigé dans template-nos-missions.php. `.split-media-
   media` étant générique (utilisé par de nombreuses autres pages en
   bande simple, volontairement PAS concernées), le style est scopé aux
   2 lignes via leurs id existants plutôt que sur la classe générique —
   même principe/valeurs que le groupe GAUCHE de .hp-hero-media. ---- */

/* ---- nm-stats (4 "chiffres clés" en cartes colorées, dégradé bleu 1 →
   bleu 2 → bleu 3 (cyan) → cyan clair 15% — cf. nodes 582:2622 / 588:2731 —
   différent de .org-stats (NOTRE ORGANISATION), qui n'a pas de carte
   colorée) ---- */

.nm-stats {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	margin-top: var(--spacing-lg);
}

.nm-stat {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	padding: var(--spacing-sm);
	border-radius: 16px;
	text-align: center;
}

.nm-stat-nombre {
	font-family: var(--font-family-heading);
	font-weight: 800;
	font-size: 3rem;
}

.nm-stat-label {
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.nm-stat--1 {
	background-color: var(--color-blue-1);
	color: var(--color-blanc);
}

.nm-stat--2 {
	background-color: var(--color-blue-2);
	color: var(--color-blanc);
}

.nm-stat--3 {
	background-color: var(--color-blue-3);
	color: var(--color-noir);
}

.nm-stat--4 {
	background-color: rgba(0, 204, 255, 0.15);
	color: var(--color-noir);
}

@media (min-width: 1024px) {
	.nm-stats {
		flex-direction: row;
		justify-content: space-between;
	}

	.nm-stat {
		flex: 1;
	}
}

/* ---- split-media (texte + photo, générique — ordre du DOM = ordre visuel,
   contrairement à .org-intro-grid qui suppose texte à gauche) ---- */

.split-media-row {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-lg);
}

.split-media-text {
	flex: 1;
}

.split-media-media {
	position: relative;
}

.split-media-media img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 16px;
}

@media (min-width: 1024px) {
	.split-media-row {
		flex-direction: row;
		align-items: flex-start;
		gap: var(--spacing-md);
	}

	.split-media-text,
	.split-media-media {
		flex: 0 0 calc(50% - 12px);
	}
}

/* ---- Contexte du projet (FUTUR SIEGE - RDE, node 606:3743) : fond cyan
   15% sur toute la section (photo+texte+liste à puces+paragraphe de
   transition, tous dans le même bloc). La photo doit caler son haut ET
   son bas sur la colonne de texte (pas juste le haut, sinon elle
   s'arrête avant le bas du texte et ça fait bizarre) — donc
   `align-items:stretch` (au lieu de flex-start) + la photo remplit
   100% de la hauteur du <div> étiré via `object-fit:cover` (largeur
   inchangée, seul le cadrage vertical de l'image est rogné). Override
   scopé, ne touche pas .split-media-row ailleurs sur le site. ---- */

#contexte-du-projet {
	background-color: rgba(0, 204, 255, 0.15);
}

/* .section-title-desc est à 18px (--font-size-base) partout ailleurs sur
   le site — ici le texte doit rester à 16px (--body-size), retour Pierre
   2026-09-16. Scopé à cette section, pas touché globalement. */
#contexte-du-projet .section-title-desc {
	font-size: var(--body-size);
}

@media (min-width: 1024px) {
	#contexte-du-projet .split-media-row {
		align-items: stretch;
	}

	/* .split-media-media devient lui-même une colonne flex (image + liseré
	   media-stripe empilés) pour que l'image (flex:1) absorbe tout
	   l'espace vertical disponible sous le liseré, plutôt que de se baser
	   sur sa hauteur naturelle — sinon un simple height:100% sur l'image
	   déborderait de la hauteur du liseré de 10px sous elle. */
	#contexte-du-projet .split-media-media {
		display: flex;
		flex-direction: column;
	}

	#contexte-du-projet .split-media-media img {
		flex: 1;
		min-height: 0;
		-o-object-fit: cover;
		object-fit: cover;
	}
}

.nm-richtext p {
	margin: 0 0 var(--spacing-sm);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: 1.5;
}

.nm-richtext p:last-child {
	margin-bottom: 0;
}

/* Retour Pierre, ticket "PAGES FLEXIBLES" : les liens dans un bloc de
   texte classique étaient invisibles (même style que le texte autour) —
   même correctif que `.accordion-body a`. `.nm-richtext` est le bloc de
   texte générique réutilisé sur tout le site, donc règle globale plutôt
   que scopée aux seules pages flexibles. */
.nm-richtext a {
	font-weight: 700;
	text-decoration: underline;
}

.nm-cta-row {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--spacing-sm);
	margin-top: var(--spacing-md);
}

@media (min-width: 1024px) {
	.nm-cta-row {
		align-items: flex-end;
	}

	#nm-mission .nm-cta-row,
	.oue-stand .nm-cta-row {
		align-items: flex-start;
	}
}

.nm-two-col {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
}

@media (min-width: 1024px) {
	.nm-two-col {
		flex-direction: row;
		gap: var(--spacing-xl);
	}

	.nm-two-col > * {
		flex: 1;
	}
}

/* ---- callout-navy (fond bleu 1, texte blanc) ----
   2 usages : titre custom sans icône ("Eaux pluviales : une priorité
   croissante"), ou icône + titre fixe "Bon à savoir". */

.callout-navy {
	padding: var(--spacing-md);
	background-color: var(--color-blue-1);
	border-radius: 16px;
	color: var(--color-blanc);
}

.callout-navy-header {
	display: flex;
	align-items: center;
	gap: var(--spacing-md);
	margin-bottom: 4px;
}

.callout-navy-icon {
	flex-shrink: 0;
	width: 32px;
	height: 29px;
}

.callout-navy-icon img {
	display: block;
	width: 100%;
	height: 100%;
}

.callout-navy-title {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: var(--color-blanc);
}

.callout-navy--icon .callout-navy-title {
	font-family: var(--font-family-heading);
	font-size: var(--h3-size-desktop);
}

.callout-navy p {
	margin: 0 0 var(--spacing-sm);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: 1.5;
	color: var(--color-blanc);
}

.callout-navy a {
	color: inherit;
	text-decoration: underline;
}

.callout-navy p:last-child {
	margin-bottom: 0;
}

.callout-navy ul {
	margin: 0 0 var(--spacing-sm);
	padding-left: 1.2em;
}

/* ---- stat-progress (jauge "Taux de rendement") ---- */

.stat-progress {
	padding: var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-radius: 16px;
}

.stat-progress-header {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: var(--spacing-sm);
	margin-bottom: var(--spacing-xs);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.stat-progress-title {
	flex: 1;
	min-width: 0;
	margin: 0;
}

.stat-progress-value {
	white-space: nowrap;
}

.stat-progress-track {
	position: relative;
	height: 13px;
	background-color: #d9d9d9;
	border-radius: 50px;
	overflow: hidden;
}

.stat-progress-fill {
	position: absolute;
	inset: 0;
	width: 0;
	background: linear-gradient(to right, var(--color-blue-3), var(--color-blue-1));
	border-radius: 50px;
}

.stat-progress-caption {
	margin: var(--spacing-xs) 0 0;
	font-family: var(--font-family-ui);
	font-size: 1.4rem;
}

/* ---- accordion, variante "filled" (Accords de Territoire, Axes NOS
   ENGAGEMENTS) ---- le fond cyan clair ne s'applique QUE sur l'état ouvert
   (cf. node 825:8967 : Axe 04 ouvert = fond rempli sans bordure, Axe 05
   fermé = bordure blanche identique à .accordion-item de base) — piège
   repéré le 2026-07-24 : la 1ère implémentation appliquait le fond rempli
   en dur sur tous les items quel que soit l'état, ce qui aurait empêché
   tout changement visuel réel à l'ouverture/fermeture au clic. */

.accordion-item--filled[open] {
	background-color: rgba(0, 204, 255, 0.15);
	border: none;
	border-left: 4px solid var(--color-blue-3);
	border-radius: 0 16px 16px 0;
}

.accordion--grid-3 {
	gap: var(--spacing-md);
}

@media (min-width: 1024px) {
	.accordion--grid-3 {
		display: grid;
		grid-template-columns: repeat(3, 1fr);
		align-items: start;
	}
}

.accordion-example-card {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-height: 17rem;
}

.accordion--grid-3 .accordion-title {
	min-height: 8.4rem;
	line-height: 2.8rem;
}

/* ---- accordion, badge optionnel au-dessus du titre (ex. "Axe 04") ---- */

.accordion-header-text {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: var(--spacing-xs);
	min-width: 0;
}

.accordion-badge {
	display: inline-flex;
	align-self: flex-start;
	padding: 4px 16px;
	background-color: var(--color-blue-1);
	border-radius: 50px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: 1.4rem;
	text-transform: uppercase;
	color: var(--color-blanc);
}

/* ---- pi-ppri-frame (encart "Les plans de prévention..." + grille PPRi),
   Figma node 596:3346 — bordure noire 1px + radius 16px + 32px de padding
   interne, wrappant le titre/texte ET la grille ensemble (pas 2 blocs
   séparés). ---- */

.pi-ppri-frame {
	border: 1px solid var(--color-noir);
	border-radius: 16px;
	padding: 32px;
}

/* Titre en <strong> du texte d'intro PPRi (node 596:3119, Desktop/H3
   24px) — normal sur mobile (défaut de .nm-richtext p), 24px + 50% de
   large seulement à partir du desktop (retour Pierre 2026-09-16). */

@media (min-width: 1024px) {
	.nm-richtext-title-half {
		max-width: 50%;
	}

	.nm-richtext-title-half strong {
		font-size: 24px;
	}
}

/* ---- ppri-item (badge statut + titre + flèche externe) ---- */

.ppri-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--spacing-sm);
	margin-top: var(--spacing-md);
}

.ppri-item {
	display: flex;
	align-items: stretch;
	text-decoration: none;
	color: var(--color-noir);
	border-radius: 0 16px 16px 0;
	box-shadow: 0 0 12px rgba(0, 0, 0, 0.15);
}

.ppri-item-bar {
	flex-shrink: 0;
	width: 4px;
	background-color: var(--color-blue-3);
	border-radius: 8px 0 0 8px;
}

.ppri-item-body {
	display: flex;
	flex: 1;
	align-items: center;
	justify-content: space-between;
	gap: var(--spacing-md);
	padding: var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-left: none;
	border-radius: 0 16px 16px 0;
}

.ppri-item-text {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: var(--spacing-xs);
	min-width: 0;
}

.ppri-item-badge {
	display: inline-flex;
	align-self: flex-start;
	padding: 4px 16px;
	background-color: var(--color-blue-1);
	border-radius: 50px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: 1.4rem;
	text-transform: uppercase;
	color: var(--color-blanc);
}

.ppri-item-badge--approuve {
	background-color: var(--color-blue-1);
	color: var(--color-blanc);
}

.ppri-item-badge--en-cours {
	background-color: var(--color-orange);
	color: var(--color-noir);
}

.ppri-item-badge--en-projet {
	background-color: var(--color-blue-3);
	color: var(--color-noir);
}

.ppri-item-title {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.ppri-item-arrow {
	flex-shrink: 0;
	width: 14px;
	height: 14px;
}

.ppri-item-arrow img {
	display: block;
	width: 100%;
	height: 100%;
}

@media (min-width: 1024px) {
	.ppri-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

/* ==========================================================================
   NOS ENGAGEMENTS
   Figma: "Maquettes finales" > "NOS ENGAGEMENTS - RDE" (desktop node
   486:3988 / mobile 896:5830). Réutilise .split-media-row, .callout-navy,
   .accordion(-item--filled), .nm-cta-row, .cta-picto déjà existants.
   ========================================================================== */

.ne-intro-desc {
	font-weight: 700;
}

.ne-demarches-titre {
	margin-bottom: var(--spacing-sm);
}

/* ---- relation-card (badge + titre + texte, bordée) ----
   node 825:4362 : 3 cartes empilées "Nos conseillers"/"Nos techniciens"/
   "Dialogue & confiance" — bordée noire simple, PAS de liseré cyan à
   gauche (contrairement à ppri-item/accordion-item), badge cyan clair. */

.relation-card {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-xs);
	padding: var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-radius: 16px;
}

.relation-card-badge {
	display: inline-flex;
	align-self: flex-start;
	padding: 4px 16px;
	margin-bottom: 4px;
	background-color: rgba(0, 204, 255, 0.2);
	border-radius: 50px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: 1.4rem;
	text-transform: uppercase;
	color: var(--color-noir);
}

.relation-card-title {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.relation-card-texte {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: 1.5;
}

/* ---- bullet-list (liste à puce "goutte d'eau", node 825:4341) ---- */

.bullet-list {
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.bullet-list-item {
	display: flex;
	/* Aligné en haut par défaut (pas "center") : retour Pierre transverse,
	   "aligner en haut de la ligne quand la phrase est trop longue" — avec
	   `center`, une puce dont le texte passe sur 2 lignes+ retrouve son
	   icône flottant au milieu du bloc au lieu de rester à côté de la 1ʳᵉ
	   ligne. `.bullet-list--align-top` devient un no-op (gardé pour ne
	   pas casser les appels existants qui posent encore la classe). */
	align-items: flex-start;
	gap: var(--spacing-sm);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: 1.5;
}

.bullet-list-item:not(:last-of-type) {
	margin-bottom: 8px;
}

.bullet-list--align-top .bullet-list-item {
	align-items: flex-start;
}

.bullet-list-icon {
	flex-shrink: 0;
	width: 17px;
	height: 24px;
	margin-top: 2px;
}

.bullet-list--align-top .bullet-list-icon {
	margin-top: 2px;
}

.bullet-list-icon img {
	display: block;
	width: 100%;
	height: 100%;
}

/* Texte de la puce dans un <span> dédié (au lieu d'un texte brut au même
   niveau que l'icône) — nécessaire pour pouvoir le contraindre : sans
   min-width:0 un item contenant un lien/mot insécable (ex. une URL sans
   espace comme "quefairedemesdechets.ademe.fr", cf. PRÉSERVER L'EAU
   "Pour la limiter") ne peut pas rétrécir sous sa largeur intrinsèque et
   dépasse le cadre de la carte — retour Pierre 2026-09-17. */
.bullet-list-item-text {
	min-width: 0;
	overflow-wrap: break-word;
}

/* ---- media-card (photo encadrée fond clair, ex. capture d'appli
   PanneauPocket, node 606:4843) — variante de .split-media-media avec un
   fond de carte au lieu d'un simple liseré sous une photo plein cadre. */

.media-card {
	padding: var(--spacing-md);
	background-color: #def0fc;
	border-radius: 16px;
	overflow: hidden;
}

.media-card.stripe-corner--left {
	padding: var(--spacing-md);
	border-radius: 0 16px 0 0;
	overflow: visible;
}

.media-card.stripe-corner--left .media-stripe--vertical {
	left: -10px;
	height: calc(100% + 10px);
}

.media-card.stripe-corner--left .media-stripe:not(.media-stripe--vertical) {
	left: -10px;
	bottom: -10px;
	width: calc(100% + 10px);
}

.media-card img {
	display: block;
	max-width: 100%;
	height: auto;
	margin: 0 auto;
}

/* ==========================================================================
   NOTRE PATRIMOINE
   Figma: "Maquettes finales" > "NOTRE PATRIMOINE - RDE" (desktop node
   518:3465 / mobile 885:8073). Réutilise .split-media-row, .callout-navy,
   .accordion(-item--filled + .accordion-badge), .bullet-list, .nm-cta-row,
   .cta-picto, .media-stripe déjà existants.
   ========================================================================== */

/* ---- installation-card (photo + liseré + bloc fond cyan clair, node
   825:4536) — réutilisée pour usines, station d'épuration, méthaniseur,
   barrages. ---- */

.installation-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border-radius: 16px;
}

.installation-card > .media-stripe {
	flex-shrink: 0;
}

.installation-card-media {
	position: relative;
}

/* Hauteur fixe + object-fit:cover : les 7 photos (2026-09-16) ont des
   ratios natifs différents (portrait/paysage), une hauteur figée évite
   que les cartes d'une même grille (.nm-two-col) aient des tailles de
   photo incohérentes selon l'image. 220px mobile, 233px desktop (valeur
   Figma exacte, node 825:4536 et les cartes suivantes — toutes à 233px
   malgré des crops sources différents). */

.installation-card-media img {
	display: block;
	width: 100%;
	height: 220px;
	-o-object-fit: cover;
	object-fit: cover;
}

@media (min-width: 1024px) {
	.installation-card-media img {
		height: 233px;
	}
}

.installation-card-credit {
	position: absolute;
	left: 16px;
	bottom: 16px;
	padding: 4px 16px;
	background-color: var(--color-blanc);
	border-radius: 50px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: 1rem;
	text-transform: uppercase;
	color: var(--color-noir);
}

.installation-card-body {
	flex: 1;
	padding: var(--spacing-md);
	background-color: rgba(0, 204, 255, 0.15);
}

.installation-card-title {
	margin: 0 0 var(--spacing-xs);
	font-family: var(--font-family-heading);
	font-weight: 700;
	font-size: var(--h3-size-desktop);
}

.installation-card-ctas {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--spacing-sm);
	margin-top: var(--spacing-md);
}

.installation-card-ctas .cta-picto {
	max-width: 100%;
}

@media (min-width: 1024px) {
	.installation-card-body {
		padding: var(--spacing-lg);
	}
}

/* ---- callout-bar (bandeau bordé + liseré cyan à gauche, texte + CTA en
   ligne — ex. "Des visites gratuites de nos usines...", node 825:4592).
   Différent de .accordion-item : pas de repli/dépli, juste un encart
   statique. ---- */

.callout-bar {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	align-items: flex-start;
	padding: var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-left: 4px solid var(--color-blue-3);
	border-radius: 4px 16px 16px 4px;
}

.callout-bar-texte {
	flex: 1;
	min-width: 0;
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

@media (min-width: 1024px) {
	.callout-bar {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
		gap: var(--spacing-lg);
	}
}

/* ==========================================================================
   FUTUR SIEGE
   Figma: "Maquettes finales" > "FUTUR SIEGE - RDE" (desktop node 606:3743 /
   mobile 879:6129). Réutilise .split-media-row, .bullet-list, .nm-two-col,
   .section-title-* déjà existants.
   ========================================================================== */

/* ---- bullet-list-item-body (titre gras + texte empilés dans un item,
   ex. "Repenser notre manière de travailler ensemble", node 634:3391 —
   variante du bullet-list-item simple à une seule ligne) ---- */

.bullet-list-item-body {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.bullet-list-item-body p {
	margin: 0;
}

.bullet-list-item-titre {
	font-weight: 700;
}

/* ==========================================================================
   TRAVAILLER CHEZ NOUS
   Figma: "Maquettes finales" > "TRAVAILLER CHEZ NOUS - RDE" (desktop node
   606:2534 / mobile 879:6860). Réutilise .split-media-row, .bullet-list,
   .accordion(-badge), .cta-picto, .nm-richtext déjà existants.
   ========================================================================== */

/* ---- split-media-credit (badge crédit photo, ex. "Vincent Poillet" —
   toutes les photos de cette page sont créditées, annotation Figma sur
   node 825:4726) — variante de .installation-card-credit appliquée sur
   .split-media-media (rendue position:relative pour l'occasion, cf.
   règle .split-media-media ci-dessus, sans effet sur les pages qui ne
   l'utilisent pas). ---- */

.split-media-credit {
	position: absolute;
	left: 16px;
	bottom: 16px;
	padding: 4px 16px;
	background-color: var(--color-blanc);
	border-radius: 50px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: 1rem;
	text-transform: uppercase;
	color: var(--color-noir);
}

/* ---- tcn-stats (5 "chiffres clés" en cartes colorées, node 825:4750) —
   dégradé à 5 paliers, DIFFÉRENT de .nm-stats (4 paliers, NOS MISSIONS) :
   la 3ᵉ couleur (#00afdb) est une teinte intermédiaire propre à cette
   maquette, absente de la palette de tokens (variables.css) — vérifiée
   dans le design context Figma, pas une supposition. ---- */

.tcn-stats {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	margin-top: var(--spacing-lg);
}

.tcn-stat {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	padding: var(--spacing-sm);
	border-radius: 16px;
	text-align: center;
}

.tcn-stat-nombre {
	font-family: var(--font-family-heading);
	font-weight: 800;
	font-size: 3rem;
}

.tcn-stat-label {
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.tcn-stat--1 {
	background-color: var(--color-blue-1);
	color: var(--color-blanc);
}

.tcn-stat--2 {
	background-color: var(--color-blue-2);
	color: var(--color-blanc);
}

.tcn-stat--3 {
	background-color: #00afdb;
	color: var(--color-noir);
}

.tcn-stat--4 {
	background-color: var(--color-blue-3);
	color: var(--color-noir);
}

.tcn-stat--5 {
	background-color: rgba(0, 204, 255, 0.15);
	color: var(--color-noir);
}

@media (min-width: 1024px) {
	.tcn-stats {
		flex-direction: row;
		justify-content: space-between;
	}

	.tcn-stat {
		flex: 1;
	}
}

/* ---- tcn-valeurs-grid (6 items titre gras + texte, sans bordure ni
   fond, 3 colonnes en desktop, node 606:3716/606:3717) ---- */

.tcn-valeurs-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--spacing-lg) var(--spacing-md);
	margin-top: var(--spacing-lg);
}

.tcn-valeur-card {
	display: flex;
	flex-direction: column;
	gap: 4px;
	align-items: center;
	justify-content: center;
	padding: 16px;
	background-color: rgba(0, 204, 255, 0.15);
	border-radius: 16px;
	text-align: center;
}

.tcn-valeur-titre {
	margin: 0;
	font-family: var(--font-family-heading);
	font-weight: 700;
	font-size: 2.4rem;
	line-height: 1.17;
}

.tcn-valeur-texte {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: 1.5;
}

@media (min-width: 1024px) {
	.tcn-valeur-texte {
		max-width: 55%;
	}
}

@media (min-width: 1024px) {
	.tcn-valeurs-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

/* ---- Avantages (TRAVAILLER CHEZ NOUS - RDE, node 606:3334) : fond cyan
   15% + liens soulignés dans les 2 listes à puce (le reset global du
   thème retire le soulignement des <a>, ces liens externes réels —
   CASDEN, CET, convention collective — doivent rester visibles comme
   des liens). ---- */

#avantages {
	background-color: rgba(0, 204, 255, 0.15);
}

#avantages .bullet-list-item a {
	text-decoration: underline;
}

/* ---- Insertion professionnelle : le titre H2 collait directement au
   texte en dessous (retour Pierre 2026-09-16). ---- */

#insertion-professionnelle .section-title-heading {
	margin-bottom: 16px;
}

/* ---- accordion-toggle-icon--circle (variante ronde fond bleu 1 + croix
   blanche, node 606:3497 "plus" / 606:3536 "Croix" — DIFFÉRENTE du
   .accordion-toggle-icon de base, qui est une simple croix noire sans
   fond. Réutilise le "+" tourné à 45° = "×" existant : seule la taille/
   couleur changent, la rotation à l'ouverture ([open]) est déjà héritée
   de la règle de base). Le +/× lui-même est réduit avec 4px d'espace de
   chaque côté (calc(100% - 8px)) plutôt que de toucher les bords du rond
   comme la base .accordion-toggle-icon — retour Pierre 2026-09-16, le
   croix pleine largeur rendait l'icône "trop grande". ---- */

.accordion-toggle-icon--circle {
	width: 29px;
	height: 29px;
	border-radius: 50%;
	background-color: var(--color-blue-1);
}

.accordion-toggle-icon--circle::before,
.accordion-toggle-icon--circle::after {
	background-color: var(--color-blanc);
}

.accordion-toggle-icon--circle::before {
	left: 4px;
	width: calc(100% - 8px);
}

.accordion-toggle-icon--circle::after {
	top: 4px;
	height: calc(100% - 8px);
}

/* À l'ouverture : rond bleu 1 + "+" blanc (fermé) → rond à bordure noire
   fond transparent + croix noire (node Figma 632:2870 "Croix" sur NOTRE
   ORGANISATION) — comportement général de la variante --circle partout où
   elle est utilisée (NOTRE ORGANISATION, NOS MISSIONS depuis le
   2026-09-16 — retour Pierre "même design que l'autre page" ; s'applique
   aussi à TRAVAILLER CHEZ NOUS qui réutilise la même classe, cohérence
   voulue plutôt qu'un cas isolé). */

.accordion-item[open] .accordion-toggle-icon--circle {
	background-color: transparent;
	border: 1px solid var(--color-noir);
}

.accordion-item[open] .accordion-toggle-icon--circle::before,
.accordion-item[open] .accordion-toggle-icon--circle::after {
	background-color: var(--color-noir);
}

/* ==========================================================================
   NOS DÉMARCHES (étapes 1 + 2, une seule page JS) et DÉMARCHE - RÉPONSE
   (étape 3, page à part par sous-rubrique).
   Figma: "Maquettes finales" > "NOS DÉMARCHES - RDE - ÉTAPE 1/2/3"
   (desktop nodes 361:3999 / 361:4973 / 361:5483). Réutilise .hp-section,
   .page-header-*, .bullet-list, .split-media-row, .callout-navy,
   .accordion(-badge/-toggle-icon--circle), .cta-picto déjà existants.
   ========================================================================== */

/* ---- demarche-card (liseré cyan + titre H3 + flèche, node 361:4673
   grille / 361:5389 liste) — <a> ou <button> selon que la carte pointe
   vers un lien direct ou déclenche l'étape 2 en JS. ---- */

.demarche-card {
	display: flex;
	align-items: stretch;
	width: 100%;
	padding: 0;
	background: none;
	border: none;
	text-decoration: none;
	color: var(--color-noir);
	font: inherit;
	text-align: left;
	cursor: pointer;
	border-radius: 8px 16px 16px 8px;
}

.demarche-card-bar {
	flex-shrink: 0;
	width: 4px;
	background-color: var(--color-blue-3);
	border-radius: 8px 0 0 8px;
}

.demarche-card-body {
	display: flex;
	flex: 1;
	align-items: center;
	justify-content: space-between;
	gap: var(--spacing-sm);
	padding: var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-left: none;
	border-radius: 0 16px 16px 0;
	transition: background-color 0.15s ease;
}

.demarche-card-titre {
	margin: 0;
}

.demarche-card-arrow {
	flex-shrink: 0;
	width: 16px;
	height: 16px;
}

.demarche-card-arrow img {
	display: block;
	width: 100%;
	height: 100%;
}

.demarche-card:hover .demarche-card-body,
.demarche-card:focus-visible .demarche-card-body {
	background-color: rgba(0, 204, 255, 0.15);
	border-top: none;
	border-right: none;
	border-bottom: none;
}

/* ---- demarches-grid (étape 1, 8 rubriques) ---- */

.demarches-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--spacing-md);
	outline: none;
}

.demarches-grid[hidden] {
	display: none;
}

@media (min-width: 1024px) {
	.demarches-grid {
		grid-template-columns: repeat(4, 1fr);
	}
}

/* ---- demarches-list (étape 2, sous-rubriques d'une rubrique) ---- */

.demarches-list {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-xs);
	margin-top: var(--spacing-md);
	outline: none;
}

.demarches-list[hidden] {
	display: none;
}

/* ---- demarche-back-link (bouton contour, "Retour...", étape 2 en JS et
   étape 3 en vrai lien — même style que le CTA "Aide & contact" du
   header) ---- */

.demarche-back-link {
	display: inline-flex;
	align-items: center;
	gap: var(--spacing-xs);
	align-self: center;
	padding: 12px 24px;
	margin-bottom: var(--spacing-sm);
	background: none;
	border: 1px solid var(--color-noir);
	border-radius: 50px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: var(--color-noir);
	text-decoration: none;
	cursor: pointer;
}

/* ---- demarches-contact (bandeau cyan "Vous n'avez pas trouvé votre
   réponse ?", commun aux étapes 1/2/3) ---- */

.demarches-contact {
	background-color: var(--color-blue-3);
	/* padding-top: var(--spacing-xl);
	padding-bottom: var(--spacing-xl); */
}

.demarches-contact-inner {
	max-width: 959px;
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--spacing-md);
	text-align: center;
}

.demarches-contact-titre {
	margin: 0;
	font-family: var(--font-family-heading);
	font-weight: 700;
	font-size: var(--h3-size);
	line-height: var(--h3-line-height);
}

.demarches-contact-texte {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.demarches-contact-cta {
	display: inline-flex;
	align-items: center;
	padding: 12px 24px;
	background-color: var(--color-blue-1);
	border-radius: 50px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: var(--color-blanc);
	text-decoration: none;
}

/* ---- demarche-layout (page de réponse, étape 3 : sidebar + contenu) ---- */

.demarche-layout {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-xl);
}

.demarche-sidebar {
	flex: 0 0 auto;
}

.demarche-bloc h3 {
	margin: 0 0 var(--spacing-sm);
}

.demarche-main {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: var(--spacing-xl);
}

/* Retour Pierre, ticket "PAGES FLEXIBLES" : un bloc "CTA" ou "Bon à
   savoir" (`bloc_callout_cta`) qui suit directement un bloc de texte
   hérite du même espacement (64px) que 2 sections indépendantes, alors
   qu'il en est visuellement le prolongement — resserré à 16px dans ce
   cas précis uniquement (callout/CTA après un AUTRE type de bloc garde
   le 64px normal). */
.demarche-bloc--texte + .demarche-bloc--callout {
	margin-top: calc(var(--spacing-sm) - var(--spacing-xl));
}

@media (min-width: 1024px) {
	.demarche-layout {
		flex-direction: row;
		align-items: flex-start;
	}

	.demarche-sidebar {
		flex: 0 0 300px;
	}
}

.demarche-sidebar-nav {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-xs);
	margin: var(--spacing-sm) 0 0;
	padding: 0;
	list-style: none;
}

.demarche-sidebar-link {
	display: block;
	padding: var(--spacing-xs) 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: var(--color-noir);
	text-decoration: none;
}

.demarche-sidebar-link:hover {
	text-decoration: underline;
}

.demarche-sidebar-link--active {
	padding: var(--spacing-sm);
	background-color: rgba(0, 204, 255, 0.15);
	border-left: 4px solid var(--color-blue-3);
	border-radius: 0 8px 8px 0;
}

/* ==========================================================================
   PRIX DU SERVICE DE L'EAU
   Figma: "Maquettes finales" > "PRIX DU SERVICE DE L'EAU - RDE" (desktop
   node 507:2071 / mobile 555:2032). Réutilise .hp-section, .split-media-row,
   .bullet-list, .nm-cta-row, .nm-richtext, .section-title-*, .accordion-badge
   (pour les badges "eau du robinet"/"eau en bouteille"), .org-voir-aussi
   déjà existants.
   ========================================================================== */

.pse-cta-note {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: 1.4rem;
	color: var(--color-noir);
}

/* ---- décor d'angle sur 3 des 4 photos de la page (Une ressource
   naturelle 825:4933, redevances 512:2616, Investir pour l'avenir
   795:6427) : découvert le 2026-09-23 (retour Pierre, "pareil sur plein
   d'autres pages qui devraient les avoir") — les 3 appels PHP n'avaient
   jamais reçu `orientation => 'corner'` (celui de "redevances" n'avait
   même pas de bande du tout) malgré le motif à 2 bandes confirmé dans
   Figma (captures d'écran à l'appui, liseré vertical à gauche sur les
   3). La 4ᵉ photo de la page ("Comment est répartie ma facture ?", le
   donut node 832:9567) n'a PAS ce décor dans Figma malgré une structure
   de calque similaire — vérifié par capture d'écran, le graphique
   recouvre entièrement le cadre : `.pse-repartition-donut` reste donc
   sans bande, à raison. Scopé aux 3 lignes concernées (id de section
   existants + classe dédiée `.pse-redevances-media`), `.split-media-
   media` générique n'est pas touché. ---- */

/* Retour Pierre 2026-09-17 : le H2 d'intro collait au paragraphe suivant
   (Figma node 825:4919 laisse un espace net entre les 2). */
.pse-ressource .section-title-heading {
	margin-bottom: 16px;
}

/* Les 2 CTA ("Consulter le prix...", "Télécharger le catalogue...") sont
   empilés à gauche sous le texte dans Figma (node 825:4922, largeur 346px
   sur les 510px du texte) — pas alignés à droite comme le fait
   .nm-cta-row par défaut en desktop (comportement voulu ailleurs pour un
   CTA seul). Override scopé à cette section uniquement. */
@media (min-width: 1024px) {
	.pse-ressource .nm-cta-row {
		align-items: flex-start;
	}
}

/* ---- "Comment est répartie ma facture ?" : donut (image déjà finalisée,
   avec sa légende intégrée) + liste de financement à côté. ---- */

.pse-repartition-row {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--spacing-lg);
	margin-top: var(--spacing-md);
}

.pse-repartition-donut {
	/* 559px = largeur exacte du node Figma 832:9567 (retour Pierre,
	   "IMAGE illisible" : à 400px la légende intégrée à l'image devenait
	   trop petite pour se lire). */
	max-width: 559px;
	width: 100%;
}

.pse-repartition-donut img {
	display: block;
	width: 100%;
	height: auto;
}

.pse-repartition-liste {
	flex: 1;
	min-width: 0;
}

.pse-financer-titre {
	margin: 0 0 var(--spacing-sm);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

@media (min-width: 1024px) {
	.pse-repartition-row {
		flex-direction: row;
		align-items: flex-start;
	}
}

/* ---- "Facture d'eau : pourquoi des redevances ?" : bandeau fond cyan
   clair pleine largeur, infographie déjà finalisée + texte. ---- */

.pse-redevances {
	background-color: rgba(0, 204, 255, 0.15);
}

/* Cette image est une infographie (texte/chiffres lisibles), pas une
   photo : contrairement aux autres `.stripe-corner` en `.split-media-row`,
   elle ne doit jamais être recadrée/zoomée pour remplir la hauteur de la
   ligne. On annule tout le comportement desktop générique "stretch +
   cover" (retour Pierre 2026-09-29) : le conteneur reprend sa hauteur
   naturelle (celle de l'image, contenue) au lieu de s'étirer sur toute
   la hauteur de la ligne — sinon les bandes du liseré, positionnées par
   rapport au conteneur, se détachent du bord réel de l'image. Scopé à
   cette seule section. */
@media (min-width: 1024px) {
	#redevances .split-media-media {
		align-self: flex-start;
		min-height: 0;
	}

	#redevances .split-media-media img {
		position: static;
		width: 100%;
		height: auto;
		-o-object-fit: contain;
		object-fit: contain;
	}
}

/* ---- "L'eau du robinet, la solution la plus économique" : 2 cartes de
   comparaison de prix (node 508:2516/508:2531). ---- */

.pse-compare-grid {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	margin-top: var(--spacing-md);
}

.pse-compare-card {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	padding: var(--spacing-md);
	background-color: rgba(0, 204, 255, 0.15);
	border-radius: 16px;
}

.pse-compare-prix {
	margin: 0;
	font-family: var(--font-family-heading);
	font-weight: 700;
	font-size: 5rem;
	line-height: 1;
	color: var(--color-noir);
}

.pse-compare-soustitre {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.pse-compare-note {
	font-weight: 400;
}

.pse-compare-texte {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: 1.5;
}

.pse-compare-texte p {
	margin: 0;
}

@media (min-width: 1024px) {
	.pse-compare-grid {
		flex-direction: row;
	}

	.pse-compare-card {
		flex: 1;
	}
}

/* ==========================================================================
   QUALITÉ DE L'EAU
   Figma: "Maquettes finales" > "QUALITÉ DE L'EAU - RDE" (desktop node
   606:4129 / mobile 917:11701). Réutilise .split-media-media, .bullet-list,
   .bullet-list-item-body, .callout-navy(--icon), .accordion(-item--filled,
   -badge), .cta-picto, .nm-two-col, .nm-cta-row déjà existants — seules 3
   sections propres à cette page n'avaient pas d'équivalent (citation
   d'intro, 2 colonnes indépendantes de cartes argumentaires bordées — à ne
   pas confondre avec .nm-two-col qui pairerait les items ligne par ligne —
   et la ligne PFAS/CVM avec CTA aligné à droite).
   ========================================================================== */

/* Retour Pierre 2026-09-17 : 60px de padding haut/bas par section
   (.hp-section-inner, règle globale) laissait 120px entre 2 sections de
   cette page — réduit à 30px scopé à .page-qualite-eau (ne touche pas les
   autres pages qui utilisent .hp-section-inner). */
@media (min-width: 1024px) {
	.page-qualite-eau .hp-section-inner {
		padding-top: 30px;
		padding-bottom: 30px;
	}
}

/* ---- qde-quote (citation chiffrée + source, node 825:4896) ---- */

.qde-quote-row {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	margin-top: var(--spacing-lg);
}

.qde-quote-card {
	flex-shrink: 0;
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: var(--spacing-md);
	background-color: var(--color-blue-1);
	border-radius: 16px;
	color: var(--color-blanc);
}

.qde-quote-text {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 800;
	font-size: var(--ui-text-size);
}

.qde-quote-source {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: 1.4rem;
}

.qde-quote-texte-libre {
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: 1.5;
}

.qde-quote-texte-libre p {
	margin: 0 0 var(--spacing-sm);
}

.qde-quote-texte-libre p:last-child {
	margin-bottom: 0;
}

@media (min-width: 1024px) {
	.qde-quote-row {
		flex-direction: row;
		align-items: flex-start;
		gap: var(--spacing-lg);
	}

	.qde-quote-card {
		width: 365px;
	}

	.qde-quote-texte-libre {
		flex: 1;
	}
}

/* ---- qde-columns (2 colonnes indépendantes empilées — carte argumentaire
   bordée + "Bon à savoir" de chaque côté, node 825:4794) ---- */

.qde-columns {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	margin-top: var(--spacing-lg);
}

.qde-column {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
}

.qde-columns .split-media-media img {
	max-height: 480px;
	-o-object-fit: cover;
	object-fit: cover;
}

.qde-label + .accordion {
	margin-top: var(--spacing-sm);
}

.qde-card {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	padding: var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-radius: 16px;
}

.qde-card-title {
	margin: 0;
	font-family: var(--font-family-heading);
	font-weight: 700;
	font-size: var(--h3-size-desktop);
	line-height: 1.2;
}

@media (min-width: 1024px) {
	.qde-columns {
		flex-direction: row;
		align-items: flex-start;
		gap: var(--spacing-xl);
	}

	.qde-column {
		flex: 1;
	}
}

/* ---- qde-label (label gras au-dessus d'une liste/d'un accordéon, ex.
   "Des préoccupations essentielles :") ---- */

.qde-label {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

/* ---- qde-pfas-row (texte + CTA aligné à droite, node 634:3415) ---- */

.qde-pfas-row {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	align-items: flex-start;
}

.qde-pfas-text {
	flex: 1;
	min-width: 0;
}

.qde-pfas-text .bullet-list-item a {
	font-weight: 700;
	text-decoration: underline;
}

@media (min-width: 1024px) {
	.qde-pfas-row {
		flex-direction: row;
		align-items: flex-start;
		justify-content: space-between;
		gap: var(--spacing-lg);
	}
}

/* ==========================================================================
   PRÉSERVER L'EAU
   Figma: "Maquettes finales" > "PRÉSERVER L'EAU - RDE" (desktop node
   512:2769 / mobile 922:12866). Réutilise .qde-columns/.qde-card,
   .accordion(-item--filled, -toggle-icon--circle), .bullet-list,
   .split-media-row, .cta-picto, .section-title-* déjà existants — 3
   overrides scopés ci-dessous (retours Pierre 2026-09-17), pas de
   nouvelle classe.
   ========================================================================== */

/* "Économiser l'eau" : les 2 qde-card doivent avoir la même hauteur
   (le vide en dessous de la plus courte ne pose pas de problème) — la
   base .qde-columns a align-items:flex-start en desktop (voulu ailleurs,
   ex. "Protéger la ressource" juste en dessous, où les hauteurs doivent
   rester libres). Scopé à #economiser-eau uniquement. */
@media (min-width: 1024px) {
	#economiser-eau .qde-columns {
		align-items: stretch;
	}

	#economiser-eau .qde-card {
		flex: 1;
	}
}

/* "Protéger la ressource des pollutions" : la photo (2ᵉ colonne, sous la
   2ᵉ qde-card) ne doit pas dépasser la hauteur de la 1ère qde-card.
   PAS la même technique que #contexte-du-projet (FUTUR SIÈGE) : là-bas
   la photo est plus COURTE que le texte et doit s'étirer pour le
   rattraper (align-items:stretch + flex:1 fonctionne : ça ne fait que
   GRANDIR un élément plus court jusqu'à la hauteur du plus grand).
   Ici c'est l'inverse — la vraie photo uploadée (bien plus haute que sa
   hauteur naturelle Figma une fois à 559px de large) est l'élément le
   plus haut des 2 colonnes : stretch aurait grandi la colonne 1 (avec
   du vide sous la carte) au lieu de rétrécir la photo. Sans navigateur
   pour mesurer la hauteur réelle de la 1ère qde-card, on fixe un ratio
   large/plat (image "bandeau") repris tel quel du Figma (node 528:4657,
   559×152 px) — l'image ne peut alors jamais dépasser ~150-160px de
   haut à cette largeur, confortablement sous la carte (~390px de haut),
   quelle que soit la photo uploadée. */
@media (min-width: 1024px) {
	#proteger-ressource .split-media-media img {
		aspect-ratio: 559 / 152;
		object-fit: cover;
	}
}

/* "Choisir des équipements adaptés" (sous-bloc de #piscine-conseils) :
   l'image doit remplir toute la hauteur de la ligne texte/photo sans
   être déformée (recadrage accepté) — même technique que ci-dessus. */
@media (min-width: 1024px) {
	#piscine-conseils .split-media-media {
		display: flex;
		flex-direction: column;
	}

	#piscine-conseils .split-media-media img {
		flex: 1;
		min-height: 0;
		object-fit: cover;
	}
}

/* Padding vertical des sections réduit (même correctif que QUALITÉ DE
   L'EAU, retour Pierre 2026-09-17) : 60px haut/bas -> 120px entre 2
   sections, ramené à 30px -> 60px entre sections. Scopé à cette page. */
@media (min-width: 1024px) {
	.page-preserver-eau .hp-section-inner {
		padding-top: 30px;
		padding-bottom: 30px;
	}
}

/* ==========================================================================
   TOUS NOS ÉVÈNEMENTS (page-templates/template-evenements.php, CPT
   `evenement`) — node Figma 634:6743
   ========================================================================== */

.evenement-card {
	display: flex;
	flex-direction: column;
	border-radius: 16px;
	overflow: hidden;
	background-color: var(--bg-light);
	color: var(--color-noir);
}

.evenement-card-media {
	position: relative;
}

.evenement-card-media img {
	display: block;
	width: 100%;
	height: 220px;
	object-fit: cover;
}

/* Le contour noir est porté par le corps de carte (contenu), pas par
   l'image au-dessus — retour Pierre 2026-09-17 (était sur .evenement-card
   entier avant, ce qui encadrait aussi l'image). */
.evenement-card-body {
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	padding: var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-top: none;
	border-radius: 0 0 16px 16px;
}

.evenement-card-meta {
	display: flex;
	align-items: center;
	gap: 8px;
}

.evenement-card-badge {
	background-color: rgba(0, 204, 255, 0.2);
	color: var(--color-noir);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: 1.4rem;
	text-transform: uppercase;
	padding: 4px 16px;
	border-radius: 50px;
}

.evenement-card-date {
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.evenement-card-title {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--font-size-base);
}

.evenement-card-excerpt {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.evenement-card-link {
	display: inline-flex;
	align-items: center;
	gap: var(--spacing-sm);
	margin-top: auto;
	padding-top: var(--spacing-sm);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: inherit;
	text-decoration: none;
}

/* ---- variante "mise en avant", en ligne (node 917:11006) ---- */

.evenement-card--featured {
	background-color: var(--color-blue-1);
	color: var(--color-blanc);
}

.evenement-card--featured .evenement-card-body {
	border: none;
}

.evenement-card--featured .evenement-card-badge {
	background-color: var(--color-blue-3);
}

.evenement-card--featured .evenement-card-title {
	font-family: var(--font-family-heading);
	font-size: var(--h3-size-desktop);
	line-height: 1.2;
}

@media (min-width: 1024px) {
	.evenement-card--featured {
		flex-direction: row;
	}

	.evenement-card--featured .evenement-card-media {
		flex: 0 0 574px;
	}

	.evenement-card--featured .evenement-card-media img {
		height: 100%;
	}

	.evenement-card--featured .evenement-card-body {
		padding: var(--spacing-xl);
	}
}

/* ---- listing (encart mis en avant + grille paginée) ---- */

.evenements-featured {
	margin-bottom: var(--spacing-lg);
}

.evenements-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--spacing-md);
}

.evenements-pagination {
	display: flex;
	justify-content: center;
	gap: var(--spacing-md);
	margin-top: var(--spacing-lg);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.evenements-pagination a {
	color: var(--color-noir);
	text-decoration: none;
}

.evenements-pagination-current {
	text-decoration: underline;
}

.evenements-empty {
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--text-gray-light);
}

@media (min-width: 1024px) {
	.evenements-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

/* ==========================================================================
   ANIMATIONS ET VISITES SCOLAIRES — node Figma 634:4240
   ========================================================================== */

.avs-offre-intro,
.avs-sub-block {
	margin-top: var(--spacing-sm);
}

.avs-sub-block {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	margin-bottom: var(--spacing-md);
}

/* ---- offre pédagogique (3 cartes centrées, node 825:5190) ---- */

.avs-offre-grid {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	margin-top: var(--spacing-lg);
}

@media (min-width: 1024px) {
	.avs-offre-grid {
		flex-direction: row;
	}
}

@media (min-width: 1024px) {
	.avs-offre-grid {
		flex-direction: row;
	}
}

.avs-offre-card {
	flex: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	padding: var(--spacing-md) 10px;
	background-color: rgba(0, 204, 255, 0.15);
	border-radius: 16px;
	text-align: center;
}

.avs-offre-card-titre {
	margin: 0;
	font-family: var(--font-family-heading);
	font-weight: 700;
	font-size: var(--h3-size-desktop);
	line-height: 1.2;
}

.avs-offre-card-texte {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

/* ---- tabs de niveau/parcours interactifs (JS : assets/js/animations-
   scolaires.js) — un seul état conçu dans Figma par groupe (cf. notes
   dans acf-animations-visites-scolaires.php), les autres pastilles
   affichent un message "bientôt disponible" tant qu'elles sont vides. ---- */

.avs-tab-pills {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 8px;
	align-items: center;
	padding: 4px;
	background-color: var(--color-blue-1);
	border-radius: 50px;
	margin-bottom: var(--spacing-md);
}

.avs-tab-pill {
	padding: 12px 16px;
	border: none;
	border-radius: 50px;
	background: none;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: 1.8rem;
	text-transform: uppercase;
	color: var(--color-blanc);
	cursor: pointer;
}

.avs-tab-pill--active {
	background-color: var(--color-blanc);
	color: var(--color-blue-1);
}

.avs-tab-placeholder {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	font-style: italic;
	color: var(--color-noir);
}

/* ---- callout-bar réservation "Le cycle de l'eau" (liste à puce dans un
   callout-bar existant, node 903:6001) ---- */

.avs-callout-resa {
	align-items: flex-start;
	gap: var(--spacing-lg);
}

.avs-callout-resa .bullet-list {
	flex: 1;
	min-width: 0;
}

/* Retour Pierre 2026-09-17 : pas d'icône goutte d'eau dans cet encart
   (contrairement aux autres bullet-list de la page) — même icône
   masquée, le texte garde son alignement grâce au gap déjà en place sur
   .bullet-list-item. */
.avs-callout-resa .bullet-list-icon {
	display: none;
}

@media (min-width: 1024px) {
	.avs-callout-resa {
		align-items: center;
	}
}

/* ---- modalites-resa (encart navy, texte blanc — node ex. 634:5702) ---- */

.modalites-resa {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	padding: var(--spacing-lg);
	background-color: var(--color-blue-1);
	border-radius: 16px;
	color: var(--color-blanc);
}

.modalites-resa-titre {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.modalites-resa-email {
	color: var(--color-blanc);
}

/* .modalites-resa est display:flex en colonne sans align-items explicite
   (donc stretch par défaut) : le CTA ("Je réserve") s'étirait sur toute
   la largeur de l'encart au lieu de sa taille naturelle de pilule —
   retour Pierre 2026-09-17. Seul le CTA est concerné (titre/liste
   doivent rester en pleine largeur). */
.modalites-resa .cta-picto {
	align-self: flex-start;
}

/* ---- cartes "sorties scolaires" (grande carte cyan contenant titre +
   activités + éventuel sous-bloc + modalites-resa, node ex. 634:5855) ---- */

.avs-sortie-grid {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	margin-top: var(--spacing-md);
}

.avs-sortie-card {
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	padding: var(--spacing-lg);
	background-color: rgba(0, 204, 255, 0.15);
	border-radius: 16px;
}

.avs-sortie-block {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
}

.avs-sortie-block-titre {
	margin: 0;
	font-family: var(--font-family-heading);
	font-weight: 700;
	font-size: var(--h3-size-desktop);
	line-height: 1.2;
}

.avs-sortie-block-texte {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.avs-cta-row {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: var(--spacing-sm);
	margin-top: var(--spacing-md);
}

@media (min-width: 1024px) {
	.avs-sortie-grid {
		flex-direction: row;
		align-items: stretch;
	}
}

/* ---- séances (Collège, grille 2×2, node ex. 634:5669) ---- */

.avs-seance-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--spacing-md);
	margin-top: var(--spacing-md);
}

.avs-seance-card {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: var(--spacing-md);
	background-color: rgba(0, 204, 255, 0.15);
	border-radius: 16px;
}

.avs-seance-numero {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: 1.4rem;
}

.avs-seance-titre {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.avs-seance-meta {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

@media (min-width: 1024px) {
	.avs-seance-grid {
		grid-template-columns: repeat(4, 1fr);
	}
}

/* ---- MAISON DE L'EAU - RDE (2026-08-18, desktop node 634:4999 / mobile
   917:8267). Réutilise .page-header-*, .qde-columns/.qde-card, .callout-navy,
   .callout-bar, .bullet-list, .bullet-list-item-body, .nm-two-col,
   .split-media-row/-credit, .modalites-resa, .org-voir-aussi, .cta-picto —
   seules 2 petites extensions ajoutées ci-dessous (`visite-card`,
   `.modalites-resa-list--columns`). */

/* ---- me-plongez : "Plongez dans une expérience…" + "À découvrir aussi /
   Espace vidéo" + Ateliers sont UNE seule section Figma (674:11688 et
   674:11763, tous deux enfants directs de la même frame parente, écart
   mesuré de 32px entre les deux blocs) — pas 2 sections empilées, ce qui
   donnerait 120px (60+60) avec le padding standard de .hp-section-inner.
   Même technique que .org-intro (NOTRE ORGANISATION, retour Pierre
   2026-09-16) : on retire le padding-bottom du 1er bloc et on fixe le
   padding-top du 2nd à la valeur exacte mesurée dans Figma, sans toucher à
   son padding-bottom (le gap vers la section suivante, .me-infos, n'est pas
   concerné par cette correction). ---- */
@media (min-width: 1024px) {
	.me-plongez > .hp-section-inner:first-child {
		padding-bottom: 0;
	}

	.me-plongez > .hp-section-inner:last-child {
		padding-top: 32px;
	}
}

/* ---- modalites-resa en 2 colonnes (arg `columns`, cf.
   template-parts/components/modalites-resa.php) — `column-count` n'a pas
   d'effet sur un flex container, d'où le passage en `display:block` ici
   uniquement pour ce modificateur (le flex par défaut reste inchangé pour
   les 6 usages existants à colonne unique). */
@media (min-width: 1024px) {
	.modalites-resa-list--columns {
		display: block;
		column-count: 2;
		column-gap: var(--spacing-xl);
	}
}

.modalites-resa-list--columns .bullet-list-item {
	break-inside: avoid;
	margin-bottom: var(--spacing-xs);
}

/* ---- visite-card (carte "prochaine visite", node 795:3636) — carte
   bordée `.qde-card` + badge/date en en-tête. */
.visite-card .cta-picto {
	align-self: flex-start;
}

.visite-card-meta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--spacing-sm);
}

.visite-card-date {
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.visites-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--spacing-md);
	margin-top: var(--spacing-lg);
}

@media (min-width: 1024px) {
	.visites-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

/* ==========================================================================
   STATION D'ÉPURATION (page-templates/template-station-epuration.php) —
   sœur structurelle de MAISON DE L'EAU, réutilise .visite-card/.visites-grid
   ci-dessus + .accordion existant.
   ========================================================================== */

/* Même correctif que QUALITÉ DE L'EAU / PRÉSERVER L'EAU (retour Pierre
   2026-09-17/18) : 60px de padding haut/bas par section (.hp-section-inner,
   règle globale) laisse 120px entre 2 sections — ramené à 30px (-> 60px
   entre sections) scopé à .page-station-epuration. */
@media (min-width: 1024px) {
	.page-station-epuration .hp-section-inner {
		padding-top: 30px;
		padding-bottom: 30px;
	}
}

/* ==========================================================================
   ORGANISER UN ÉVÈNEMENT (page-templates/template-organiser-evenement.php)
   ========================================================================== */

/* Retour Pierre 2026-09-18 : seul l'écart entre .oue-stand et
   .oue-partenariat était signalé (120px -> 60px), pas celui vers
   .org-voir-aussi (qui a son propre fond cyan plein-largeur, cf.
   .org-voir-aussi plus haut — la coupure y est déjà lisible autrement).
   Donc pas le correctif page-wide façon QUALITÉ DE L'EAU/STATION
   D'ÉPURATION : seuls les 2 côtés de cette jonction précise sont réduits à
   30px (-> 60px), le reste de .hp-section-inner garde son padding standard. */
@media (min-width: 1024px) {
	.oue-stand .hp-section-inner {
		padding-bottom: 30px;
	}

	.oue-partenariat .hp-section-inner {
		padding-top: 30px;
	}
}

/* ==========================================================================
   AIDE ET CONTACT (Figma "Maquettes finales" > "AIDE ET CONTACT - RDE",
   desktop node 396:1146, 3 états d'une même page — cf. progress.md, section
   "Notes AIDE ET CONTACT"). Réutilise .page-header-*, .demarche-card
   (nouvelle variante --pill), .cta-picto, .accordion-toggle-icon--circle.
   ========================================================================== */

/* Dash cyan (bleu 3, #00CCFF) au lieu du bleu 1 par défaut de
   .section-title-dash — retour Pierre 2026-09-18, confirmé dans le Figma
   sur les 2 eyebrows de cette page ("Trouver mon agence" node 442:2523,
   "Nous joindre autrement" node I825:8156;4:288, tous deux bg-[#0cf]).
   Même pattern que .org-voir-aussi/.hp-comite/.org-comite-block-label. */
.page-aide-contact .section-title-dash {
	background-color: var(--color-blue-3);
}

/* ---- demarche-card--pill (pastille compacte fond navy, node 396:1496
   "bloc titre, sous-titre & flèche - Petit") — variante de .demarche-card
   existant (cf. template-parts/components/demarche-card.php). Le fond
   blanc vu sur "Facture et paiement" dans la maquette est traité comme un
   état hover/mockup, pas une mise en avant permanente — même politique
   que .demarche-card de base (NOS DÉMARCHES). ---- */

.demarche-card--pill {
	display: inline-flex;
	width: auto;
	border-radius: 8px;
	color: var(--color-blanc);
}

.demarche-card--pill .demarche-card-bar {
	border-radius: 8px 0 0 8px;
}

.demarche-card--pill .demarche-card-body {
	padding: var(--spacing-xs) var(--spacing-md);
	border-color: var(--color-blanc);
	border-radius: 0 8px 8px 0;
	gap: var(--spacing-sm);
}

.demarche-card--pill .demarche-card-titre {
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.demarche-card--pill .demarche-card-arrow img {
	filter: brightness(0) invert(1);
}

.demarche-card--pill:hover .demarche-card-body,
.demarche-card--pill:focus-visible .demarche-card-body {
	background-color: var(--color-blanc);
	color: var(--color-noir);
}

.demarche-card--pill:hover .demarche-card-arrow img,
.demarche-card--pill:focus-visible .demarche-card-arrow img {
	filter: none;
}

/* ---- aac-columns (colonne principale ~753px + colonne latérale ~365px,
   node 396:1625) — 2 colonnes indépendantes, empilées en mobile. ---- */

.aac-columns {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--spacing-md);
}

.aac-columns-main,
.aac-columns-aside {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
	width: 100%;
	min-width: 0;
}

@media (min-width: 1024px) {
	.aac-columns {
		flex-direction: row;
		align-items: flex-start;
	}

	.aac-columns-main {
		flex: 1;
	}

	.aac-columns-aside {
		flex: 0 0 365px;
	}
}

/* ---- aac-question-panel ("Une question ? Une démarche ?", fond navy,
   node 396:1175) ---- */

.aac-question-panel {
	width: 100%;
	padding: 32px;
	background-color: var(--color-blue-1);
	border-radius: 16px;
	color: var(--color-blanc);
	display: flex;
	flex-direction: column;
	gap: var(--spacing-md);
}

.aac-question-panel h2 {
	margin: 0 0 var(--spacing-xs);
	color: var(--color-blanc);
}

.aac-question-panel p {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--color-blanc);
}

.aac-pills {
	display: flex;
	flex-wrap: wrap;
	gap: var(--spacing-sm);
}

/* ---- aac-card (liseré cyan + carte bordée à contenu libre — "Nos
   agences" fermé, "Je contacte Roannaise de l'eau", "Par téléphone",
   "Par courrier", nodes 396:1295 / 396:1253 / 396:1264 / 396:1276) ---- */

.aac-card {
	display: flex;
	align-items: stretch;
	width: 100%;
}

.aac-card-bar {
	flex-shrink: 0;
	width: 4px;
	background-color: var(--color-blue-3);
	border-radius: 8px 0 0 8px;
}

.aac-card-body {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	padding: var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-left: none;
	border-radius: 0 16px 16px 0;
	box-shadow: 0 0 24px rgba(0, 0, 0, 0.15);
}

.aac-card-body h2,
.aac-card-body h3 {
	margin: 0;
}

.aac-card-body p {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: 1.5;
}

.aac-card-phone {
	display: inline-flex;
	align-self: flex-start;
	padding: var(--spacing-sm) var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-radius: 8px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: var(--color-noir);
	text-decoration: none;
}

/* ---- aac-select (widget "Choisir ma commune" — un vrai champ de
   recherche : on tape le nom de sa commune pour filtrer la liste, ou on
   clique la pastille +/× pour parcourir la liste complète. Retour de
   Pierre du 2026-08-19 : la 1ère version en <details>/<summary> ne
   permettait que de cliquer dans une liste, pas de taper un nom de ville
   — remplacée par un <input> + assets/js/aide-contact.js, qui gère aussi
   l'ouverture/fermeture (la classe `.is-open` remplace l'attribut
   `[open]` d'un <details>, cf. `.accordion-toggle-icon` de base plus haut
   dans ce fichier pour la rotation +/× réutilisée telle quelle). ---- */

.aac-select {
	width: 100%;
}

.aac-select-summary {
	display: flex;
	align-items: center;
	gap: var(--spacing-sm);
	padding: 21px;
	background-color: var(--color-blanc);
	border: 1px solid var(--color-noir);
	border-radius: 16px;
	box-shadow: 0 0 24px rgba(0, 0, 0, 0.15);
}

.aac-select-input {
	flex: 1;
	min-width: 0;
	padding: 0;
	background: none;
	border: none;
	outline: none;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--color-noir);
}

.aac-select-toggle {
	flex-shrink: 0;
	padding: 0;
	border: none;
	cursor: pointer;
}

.aac-select.is-open .aac-select-summary {
	border-radius: 16px 16px 0 0;
}

.aac-select.is-open .accordion-toggle-icon {
	transform: rotate(45deg);
}

.aac-commune-list {
	display: flex;
	flex-direction: column;
	max-height: 320px;
	overflow-y: auto;
	border: 1px solid var(--color-noir);
	border-top: none;
	border-radius: 0 0 16px 16px;
}

.aac-commune-list[hidden] {
	display: none;
}

.aac-commune-item {
	display: block;
	width: 100%;
	padding: 21px;
	background: none;
	border: none;
	border-bottom: 1px solid var(--color-noir);
	text-align: left;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--color-noir);
	cursor: pointer;
}

.aac-commune-item[hidden] {
	display: none;
}

.aac-commune-item:last-child {
	border-bottom: none;
}

.aac-commune-item:hover,
.aac-commune-item:focus-visible,
.aac-commune-item.is-selected {
	background-color: var(--color-blue-3);
	font-weight: 700;
}

.aac-commune-empty {
	margin: 0;
	padding: 21px;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--color-noir);
}

.aac-commune-empty[hidden] {
	display: none;
}

/* ---- aac-resultat (commune sélectionnée + fiche agence, ou message de
   repli si aucune agence n'est encore assignée à la commune choisie —
   node 396:3441 porte l'annotation designer "Permettre d'ajouter une
   agence à chaque commune", d'où le champ ACF par commune plutôt qu'une
   liste d'agences séparée). ---- */

.aac-resultat[hidden] {
	display: none;
}

.aac-resultat-selection {
	margin: 0 0 var(--spacing-sm);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.aac-agence-panel {
	display: flex;
	flex-direction: column;
	border-radius: 16px;
	overflow: hidden;
}

@media (min-width: 700px) {
	.aac-agence-panel {
		flex-direction: row;
	}
}

.aac-agence-info {
	flex: 1;
	min-width: 0;
	padding: 32px;
	background-color: rgba(0, 204, 255, 0.15);
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
}

.aac-agence-info h3 {
	margin: 0;
}

.aac-agence-details {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-xs);
	list-style: none;
	margin: 0;
	padding: 0;
}

.aac-agence-details li {
	display: flex;
	gap: var(--spacing-sm);
	align-items: flex-start;
}

.aac-agence-details img {
	flex-shrink: 0;
	width: 17px;
	height: 24px;
}

.aac-agence-media {
	position: relative;
	flex: 1;
	min-height: 220px;
}

.aac-agence-media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.aac-agence-vide {
	margin: 0;
	padding: var(--spacing-md);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	border: 1px solid var(--color-noir);
	border-radius: 16px;
}

/* ==========================================================================
   ACTES EXÉCUTOIRES (page-templates/template-actes-executoires.php, CPT
   `acte_executoire`) — node Figma 471:2914 / mobile 909:8125
   ========================================================================== */

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ---- bandeau de recherche/filtres (node 486:3480) ---- */

.ae-search {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--spacing-md);
	padding: var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-radius: 24px;
	margin-bottom: var(--spacing-lg);
}

.ae-search-field {
	display: block;
	width: 100%;
}

.ae-search-field input,
.ae-search-field select {
	width: 100%;
	padding: 16px 24px;
	border: 1px solid var(--color-noir);
	border-left: 3px solid var(--color-blue-3);
	border-radius: 16px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: var(--color-noir);
	background-color: var(--bg-light);
}

.ae-search-field input::placeholder {
	color: var(--text-gray-light);
}

.ae-search-row {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	width: 100%;
}

.ae-search button.cta-picto {
	border: none;
	cursor: pointer;
	font: inherit;
}

@media (min-width: 1024px) {
	.ae-search {
		padding: var(--spacing-lg);
	}

	.ae-search-row {
		flex-direction: row;
	}

	.ae-filter {
		flex: 1;
	}
}

/* ---- filtre "pilule + dropdown à cases à cocher" (node 825:6409,
   découvert sur la frame "ACTESACTES EXÉCUTOIRES - RDE") ---- */

.ae-filter {
	position: relative;
	width: 100%;
}

.ae-filter-toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	padding: 16px 24px;
	border: 1px solid var(--color-noir);
	border-left: 3px solid var(--color-blue-3);
	border-radius: 16px;
	background-color: var(--bg-light);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: var(--color-noir);
	cursor: pointer;
}

/* pilule "active" (sélection en cours OU dropdown ouvert) : fond cyan
   clair 15%, cf. capture d'écran du filtre "Nature" déjà appliqué. */
.ae-filter.is-active .ae-filter-toggle,
.ae-filter.is-open .ae-filter-toggle {
	background-color: rgba(0, 204, 255, 0.15);
}

/* icône "+" → "×" en pivotant à 45°, même technique que
   .accordion-toggle-icon (pas 2 icônes différentes). */
.ae-filter.is-active .ae-filter-icon,
.ae-filter.is-open .ae-filter-icon {
	transform: rotate(45deg);
}

.ae-filter-dropdown {
	position: absolute;
	z-index: 10;
	top: calc(100% + 8px);
	left: 0;
	width: 345px;
	max-width: 90vw;
	padding: 8px;
	border-left: 3px solid var(--color-blue-3);
	border-radius: 0 16px 16px 16px;
	/* Le Figma (node 825:6409) donne bg rgba(0,204,255,.15) — correct pour
	   du contenu en flux normal (ex. .aac-agence-info, même valeur), mais
	   cette pilule est un OVERLAY en position:absolute qui flotte au-dessus
	   du reste de la page : une couleur transparente laisse le texte du
	   contenu recouvert (pilules voisines, cartes de la grille en dessous)
	   transparaître à travers les cases à cocher, illisible (retour Pierre
	   2026-09-18 : "le texte passe en dessous du texte de la page"). Fond
	   opaque équivalent au rendu visuel du rgba sur fond blanc
	   (--bg-light) — même teinte à l'écran, mais qui masque vraiment ce
	   qu'il y a derrière. */
	background-color: #d9f7ff;
	box-shadow: var(--shadow-lg);
}

.ae-filter-options {
	display: flex;
	flex-direction: column;
	max-height: 320px;
	overflow-y: auto;
	padding-bottom: 8px;
}

.ae-filter-option {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 8px 16px;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: #333333;
	cursor: pointer;
}

/* Reset global (reset.css : `input { appearance:none; background:transparent }`)
   supprime le rendu natif de la case à cocher — sans style de remplacement
   ici, elle était invisible (0 case visible, retour Pierre 2026-09-18).
   Seul <input type="checkbox"> du site, donc aucun pattern existant à
   reprendre : recréé d'après le Figma (node 825:6409/6415-6444) — case
   vide 20×20, coins arrondis 6px, bordure noire ; cochée = remplissage
   plein bleu 1, pas d'icône coche (le Figma n'en a pas). */
.ae-filter-option input[type="checkbox"] {
	appearance: none;
	-webkit-appearance: none;
	width: 20px;
	height: 20px;
	flex-shrink: 0;
	margin: 0;
	border: 1px solid var(--color-noir);
	border-radius: 6px;
	background-color: var(--color-blanc);
	cursor: pointer;
}

.ae-filter-option input[type="checkbox"]:checked {
	background-color: var(--color-blue-1);
	border-color: var(--color-blue-1);
}

.ae-filter-actions {
	display: flex;
	gap: 10px;
	padding: 0 8px;
}

.ae-filter-apply,
.ae-filter-reset {
	flex: 1;
	padding: 10px;
	border: none;
	border-radius: 50px;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	cursor: pointer;
}

.ae-filter-apply {
	background-color: var(--color-blue-1);
	color: var(--color-blanc);
	font-weight: 700;
}

.ae-filter-reset {
	background-color: transparent;
	color: var(--color-noir);
}

/* ---- carte-executoire (node 787:5020 et copies) ---- */

.ae-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--spacing-md);
}

.ae-card {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--spacing-md);
	padding: var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-radius: 16px;
	background-color: var(--bg-light);
}

.ae-card-tag {
	display: inline-flex;
	padding: 4px 16px;
	border-radius: 50px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	text-transform: uppercase;
	text-align: center;
}

.ae-card-body {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	width: 100%;
}

.ae-card-row {
	display: flex;
	align-items: flex-start;
	gap: var(--spacing-sm);
	width: 100%;
}

.ae-card-field--titre {
	flex: 1;
	min-width: 0;
}

.ae-card-label {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--color-noir);
}

.ae-card-value {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: var(--color-noir);
}

/* ---- listing (grille + pagination) ---- */

.ae-pagination {
	display: flex;
	justify-content: center;
	gap: var(--spacing-md);
	margin-top: var(--spacing-lg);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.ae-pagination a {
	color: var(--color-noir);
	text-decoration: none;
}

.ae-pagination-current {
	text-decoration: underline;
}

.ae-pagination-ellipsis {
	color: var(--text-gray-light);
}

.ae-pagination-prev,
.ae-pagination-next {
	color: var(--color-noir);
	text-decoration: none;
}

.ae-empty {
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--text-gray-light);
}

@media (min-width: 1024px) {
	.ae-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

/* ==========================================================================
   DOCUMENTS RÉGLEMENTAIRES (page-templates/template-documents-reglementaires.php)
   — node Figma 804:7501 / mobile 909:7536
   ========================================================================== */

.dr-intro {
	max-width: 840px;
	margin-bottom: var(--spacing-lg);
}

.dr-intro h2 {
	margin-top: 0;
	margin-bottom: var(--spacing-sm);
}

.dr-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--spacing-md);
}

@media (min-width: 1024px) {
	.dr-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

/* ---- carte "rapport" (node 804:8177 et copies, cf. rapport-card.php) —
   mêmes proportions que .ae-card (ACTES EXÉCUTOIRES), classes propres pour
   ne pas coupler 2 pages sans rapport de contenu l'une à l'autre. ---- */

.rapport-card {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--spacing-md);
	padding: var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-radius: 16px;
	background-color: var(--bg-light);
}

.rapport-card-tag {
	display: inline-flex;
	padding: 4px 16px;
	border-radius: 50px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	text-transform: uppercase;
	text-align: center;
}

.rapport-card-body {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	width: 100%;
}

.rapport-card-row {
	display: flex;
	align-items: flex-start;
	gap: var(--spacing-sm);
	width: 100%;
}

.rapport-card-field--titre {
	flex: 1;
	min-width: 0;
}

.rapport-card-label {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--color-noir);
}

.rapport-card-value {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: var(--color-noir);
}

/* ==========================================================================
   ENQUÊTES PUBLIQUES (page-templates/template-enquetes-publiques.php, CPT
   `enquete_publique`) — node Figma 804:8637 / mobile 914:11186. Pas de
   bandeau de filtres dans le Figma : intro (H2 + texte) + grille paginée.
   La "carte-executoire" (nodes 806:11107 / 806:11135) reprend les mêmes
   proportions que .ae-card / .rapport-card, classes .ep-* propres pour ne
   pas coupler cette page à ACTES EXÉCUTOIRES.
   ========================================================================== */

.ep-intro {
	max-width: 840px;
	margin-bottom: var(--spacing-lg);
}

.ep-intro h2 {
	margin-top: 0;
}

.ep-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--spacing-md);
	align-items: stretch;
}

@media (min-width: 1024px) {
	.ep-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

.ep-card {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--spacing-md);
	height: 100%;
	padding: var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-radius: 16px;
	background-color: var(--bg-light);
}

.ep-card-tag {
	display: inline-flex;
	align-self: flex-start;
	padding: 4px 16px;
	border-radius: 50px;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	text-transform: uppercase;
	text-align: center;
}

.ep-card-body {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	width: 100%;
}

.ep-card-row {
	display: flex;
	align-items: flex-start;
	gap: var(--spacing-sm);
	width: 100%;
}

.ep-card-field--objet {
	flex: 1;
	min-width: 0;
}

.ep-card-label {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--color-noir);
}

.ep-card-value {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: var(--color-noir);
}

/* CTA collé en bas de la carte pour aligner les boutons d'une même rangée
   (cf. Figma node 806:11135 : carte à hauteur fixe, CTA en justify-between). */
.ep-card .cta-picto {
	margin-top: auto;
}

.ep-pagination {
	display: flex;
	justify-content: center;
	gap: var(--spacing-md);
	margin-top: var(--spacing-lg);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.ep-pagination a {
	color: var(--color-noir);
	text-decoration: none;
}

.ep-pagination-current {
	text-decoration: underline;
}

.ep-empty {
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--text-gray-light);
}

/* --------------------------------------------------------------------------
   ENQUÊTE / CONSULTATION PUBLIQUE — page single (single-enquete-publique.php)
   nodes Figma 806:9021 (enquête) / 806:10659 (consultation). Réutilise
   page-header.php, partner-card.php + .org-partner-grid, .accordion(-item
   --filled + -badge), .callout-navy, .nm-richtext, .cta-picto. Seules les
   classes .ep-single-* / .ep-pieces-* / .ep-commune(s) sont propres ici.
   -------------------------------------------------------------------------- */

.ep-single-inner {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: var(--spacing-xl);
}

.ep-single-presentation {
	max-width: 1144px;
}

.ep-single-block {
	max-width: 1144px;
}

.ep-pieces h2,
.ep-partenaires h2 {
	margin-top: 0;
	margin-bottom: var(--spacing-sm);
}

.ep-pieces-intro {
	margin: 0 0 var(--spacing-md);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.ep-pieces-grid {
	display: flex;
	flex-wrap: wrap;
	gap: var(--spacing-md);
}

/* grille "Nos partenaires" : 4 cartes par rangée (268px dans 1144px, node
   806:10076), contre 3 par défaut sur .org-partner-grid (NOTRE ORGANISATION). */
@media (min-width: 1024px) {
	.ep-partenaires .org-partner-grid {
		grid-template-columns: repeat(4, 1fr);
	}
}

/* ---- accordéon "communes concernées" : puces de communes en pilules cyan
   (node 806:10425, 4 par rangée desktop) ---- */

.ep-communes {
	display: flex;
	flex-wrap: wrap;
	gap: var(--spacing-md);
	margin: 0;
	padding: 0;
	list-style: none;
}

.ep-commune {
	padding: 16px 24px;
	border-radius: 16px;
	background-color: var(--color-blue-3);
	font-family: var(--font-family-ui);
	font-size: 1.5rem;
	color: var(--color-noir);
}

@media (min-width: 1024px) {
	.ep-communes {
		display: grid;
		grid-template-columns: repeat(4, 1fr);
	}
}

/* ---- sections réglementaires (titre H3 + wysiwyg) ---- */

.ep-single-section h3 {
	margin-top: 0;
	margin-bottom: var(--spacing-sm);
}

.ep-single-section .nm-richtext > *:first-child {
	margin-top: 0;
}

/* listes à puces "goutte d'eau" dans une section (ex. "Modalités de dépôt
   des observations", node 806:10538) — même repère visuel que .bullet-list
   sans en imposer le markup à l'éditeur wysiwyg. */
.ep-single-section .nm-richtext ul {
	list-style: none;
	margin: var(--spacing-sm) 0;
	padding: 0;
}

.ep-single-section .nm-richtext ul li {
	position: relative;
	padding-left: 34px;
	margin-bottom: var(--spacing-sm);
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	line-height: 1.5;
}

.ep-single-section .nm-richtext ul li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.15em;
	width: 17px;
	height: 20px;
	background: url("assets/images/icon-bullet-goutte.svg") no-repeat center / contain;
}

/* liste sur 2 colonnes (node 806:10538, 2 × 559px) : voir single-enquete_publique.php */
.ep-two-col {
	display: grid;
	grid-template-columns: 1fr;
	column-gap: var(--spacing-md);
}

.ep-single-section .nm-richtext .ep-two-col ul {
	margin-top: 0;
}

/* texte de fin de liste (sans puce) : aligné sur le texte des puces, jamais
   sous la goutte — même retrait que `.ep-single-section .nm-richtext ul li`
   (34px), comme un `list-style-position: outside`. */
.ep-two-col-right > p {
	margin-top: var(--spacing-sm);
	padding-left: 34px;
}

@media (min-width: 1024px) {
	.ep-two-col {
		grid-template-columns: 1fr 1fr;
		align-items: start;
	}
}

.ep-single-callout .callout-navy-title {
	margin-bottom: var(--spacing-sm);
}

/* ==========================================================================
   MENTIONS LÉGALES (page-templates/template-mentions-legales.php) — node
   Figma 795:6474 / mobile 909:9092
   ========================================================================== */

.ml-content h3 {
	margin-top: var(--spacing-lg);
	margin-bottom: 12px;
}

.ml-content h3:first-child {
	margin-top: 0;
}

.ml-content a {
	color: inherit;
}

/* ==========================================================================
   MARCHÉS PUBLICS (page-templates/template-marches-publics.php)
   — node Figma 795:5977 / mobile 909:9485. Réutilise .hp-section-inner,
   .nm-richtext, .callout-navy--icon, .nm-cta-row, cta-picto.php — la seule
   nouveauté est le widget "Marchés publics en cours" (.mp-en-cours /
   .mp-iframe-wrap), un vrai <iframe> du portail marches-publics.info à la
   place de la capture d'écran statique de la maquette (cf. annotation
   Figma sur le node 802:7371 et inc/acf-marches-publics.php).
   ========================================================================== */

.mp-intro {
	max-width: 840px;
	margin-bottom: var(--spacing-lg);
}

.mp-en-cours h2 {
	margin-top: 0;
	margin-bottom: var(--spacing-md);
}

.mp-iframe-wrap {
	width: 100%;
}

.mp-iframe-wrap iframe {
	display: block;
	width: 100%;
	border: 0;
}

.mp-callout {
	margin-top: var(--spacing-lg);
}

.mp-certificat {
	margin-top: var(--spacing-lg);
}

.mp-certificat h3 {
	margin-top: 0;
	margin-bottom: var(--spacing-xs);
}

/* ==========================================================================
   NOS DERNIÈRES ACTUALITÉS (page-templates/template-actualites.php, CPT
   `actualite`) — node Figma 795:5485 / mobile 912:9718. Réutilise
   .ae-search-field / .ae-filter* / .cta-picto (cf. ACTES EXÉCUTOIRES) pour
   le panneau de filtres, .media-stripe pour les cartes — seules les
   classes .na-* et .actualite-card* sont propres à cette page.
   ========================================================================== */

.na-top {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--spacing-md);
	margin-bottom: var(--spacing-lg);
}

.na-featured {
	display: flex;
}

.na-filters {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: var(--spacing-md);
	padding: var(--spacing-md);
	border: 1px solid var(--color-noir);
	border-radius: 24px;
}

/* tiret du "FILTRES" en cyan (bleu 3, node 795:5523) — .section-title-dash
   est bleu 1 par défaut ; le texte du libellé reste noir comme dans Figma. */
.na-filters .section-title-dash {
	background-color: var(--color-blue-3);
}

.na-filters button.cta-picto {
	border: none;
	cursor: pointer;
	font: inherit;
}

.na-top--no-featured .na-filters {
	max-width: 400px;
}

@media (min-width: 1024px) {
	.na-top {
		grid-template-columns: 1fr 366px;
		align-items: stretch;
	}

	.na-top--no-featured {
		grid-template-columns: 1fr;
	}

	.na-filters {
		padding: var(--spacing-lg);
	}
}

.na-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--spacing-md);
}

@media (min-width: 1024px) {
	.na-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

.na-pagination {
	display: flex;
	justify-content: center;
	gap: var(--spacing-md);
	margin-top: var(--spacing-lg);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
}

.na-pagination a {
	color: var(--color-noir);
	text-decoration: none;
}

.na-pagination-current {
	text-decoration: underline;
}

.na-empty {
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
	color: var(--text-gray-light);
}

/* ---- carte actualité (node 795:5599 et copies, cf. actualite-card.php) ---- */

.actualite-card {
	display: flex;
	flex-direction: column;
	border-radius: 16px;
	overflow: hidden;
	background-color: var(--bg-light);
	border: 1px solid var(--color-noir);
	color: var(--color-noir);
}

.actualite-card-media {
	position: relative;
}

.actualite-card-media img {
	display: block;
	width: 100%;
	height: 220px;
	object-fit: cover;
}

.actualite-card-body {
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: var(--spacing-sm);
	padding: var(--spacing-md);
}

.actualite-card-meta {
	display: flex;
	align-items: center;
	gap: 8px;
}

.actualite-card-badge {
	background-color: rgba(0, 204, 255, 0.2);
	color: var(--color-noir);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: 1.4rem;
	text-transform: uppercase;
	padding: 4px 16px;
	border-radius: 50px;
}

.actualite-card-date {
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.actualite-card-title {
	margin: 0;
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--font-size-base);
}

.actualite-card-excerpt {
	margin: 0;
	font-family: var(--font-family-ui);
	font-size: var(--ui-text-size);
}

.actualite-card-link {
	display: inline-flex;
	align-items: center;
	gap: var(--spacing-sm);
	margin-top: auto;
	padding-top: var(--spacing-sm);
	font-family: var(--font-family-ui);
	font-weight: 700;
	font-size: var(--ui-text-size);
	color: inherit;
	text-decoration: none;
}

/* ---- variante "mise en avant", en ligne (node 795:5571) ---- */

.actualite-card--featured {
	background-color: var(--color-blue-1);
	border-color: transparent;
	color: var(--color-blanc);
	width: 100%;
}

.actualite-card--featured .actualite-card-badge {
	background-color: var(--color-blue-3);
}

.actualite-card--featured .actualite-card-title {
	font-family: var(--font-family-heading);
	font-size: var(--h3-size-desktop);
	line-height: 1.2;
}

@media (min-width: 1024px) {
	.actualite-card--featured {
		flex-direction: row;
	}

	.actualite-card--featured .actualite-card-media {
		flex: 1 1 0;
	}

	.actualite-card--featured .actualite-card-media img {
		height: 100%;
	}

	.actualite-card--featured .actualite-card-body {
		flex: 1 1 0;
		padding: var(--spacing-xl);
	}
}

/* ==========================================================================
   SINGLE ACTUALITÉ (single-actualite.php, CPT `actualite`) — node Figma
   815:12166 / mobile 912:10700. Contenu en Flexible Content, même
   principe de rendu bloc par bloc que .demarche-main/.demarche-bloc
   (MES DÉMARCHES ÉTAPE 3) mais classes propres (page/CPT différents) —
   réutilise .nm-richtext / .bullet-list / .split-media-row(-text/-media) /
   .callout-navy--icon / .nm-cta-row / .accordion* pour le contenu de
   chaque bloc.
   ========================================================================== */

.na-article {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-xl);
}

/* Même correctif que .demarche-bloc--texte + .demarche-bloc--callout
   (ticket "PAGES FLEXIBLES") pour les actualités, qui réutilisent le
   même système de blocs flexibles. */
.na-article-bloc--texte + .na-article-bloc--callout {
	margin-top: calc(var(--spacing-sm) - var(--spacing-xl));
}

/* ---- rendu vidéo (`actu-media.php`, media_type = "video") : embed
   responsive 16:9 via wp_oembed_get(), pas d'iframe codé à la main. ---- */

.actu-media-video {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	border-radius: 16px;
	overflow: hidden;
}

.actu-media-video iframe {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
}
