/*
Theme Name: Difenair
Theme URI: https://difenair.fr
Author: Htag Digital
Author URI: https://htag-digital.fr
Description: Thème WordPress sur mesure (FSE) pour Difenair, spécialiste des équipements de protection individuelle de catégorie III à Rennes. Blocs de section sur mesure, aucune dépendance payante.
Version: 0.9.1
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 8.2
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: difenair
Tags: full-site-editing, block-patterns, custom-colors, custom-logo, custom-menu
*/

/*
 * Les styles globaux sont définis dans theme.json.
 * Ce fichier ne contient que ce que theme.json ne peut pas exprimer.
 */

:root {
	/* Marge latérale de la maquette, constante sur toutes les pages. */
	--difenair-marge: 56px;

	/* Interlignes naturels des deux polices. On les écrit plutôt que de
	   laisser « normal » : la valeur serait alors celle de la police de
	   secours tant que la vraie n'est pas chargée, et le texte sauterait d'un
	   pixel. Ces rapports, eux, ne dépendent que de la taille.

	   Ils sont relevés sur la maquette et non estimés : 11,5 px de mono y
	   donnent 15 px de ligne (1,3043) et 14 px de Schibsted en donnent 17
	   (1,21). Un rapport approché se voyait dès qu'un libellé passait à deux
	   lignes — un pixel par ligne supplémentaire. */
	--difenair-mono-interligne: 1.30435;
	--difenair-sans-interligne: 1.21;
}

/* ---------------------------------------------------------------------------
   Écrans étroits : les quatre seuils

   La maquette n'existe qu'en une largeur : 1440 px de contenu entre deux
   marges de 56 px, soit 1552 px de fenêtre. Il n'y a donc rien à relever
   au-dessous — tout ce qui suit est une adaptation, pas un relevé.

   Règle de travail : le rendu de bureau ne bouge pas. Aucune valeur de la
   maquette n'est modifiée ; ce qui s'adapte est écrit dans une requête de
   média, et la plus large d'entre elles commence sous 1552 px.

   Quatre seuils, les mêmes d'un bout à l'autre du thème :

     sous 1440 px   portable — la navigation se resserre
     1280 px et moins   la navigation passe au menu déroulant
     1024 px et moins   tablette — les dispositions en vis-à-vis s'empilent,
                        les grilles de trois colonnes et plus tombent à deux
      640 px et moins   mobile — une seule colonne partout

   Le premier seuil est le seul à exclure sa propre valeur : 1440 px est la
   largeur de la maquette elle-même, et à cette largeur c'est le rendu de
   la maquette qui doit s'appliquer, au pixel. D'où « width < 1440px » là
   où les autres disent « <= ».

   Les adaptations elles-mêmes sont regroupées en fin de fichier, et en fin
   de fichier pour chaque bloc. Seules les marges latérales sont ici : c'est
   une seule variable, dont tout le reste dépend.

   Les tailles de titre ne passent par aucun de ces seuils. Elles varient de
   façon continue entre 480 et 1440 px de fenêtre, sur la droite que
   WordPress applique aux tailles de theme.json. Voir le LISEZ-MOI.
   --------------------------------------------------------------------------- */

@media (width < 1440px) {

	:root {
		--difenair-marge: 48px;
	}
}

@media (width <= 1280px) {

	:root {
		--difenair-marge: 40px;
	}
}

@media (width <= 1024px) {

	:root {
		--difenair-marge: 32px;
	}
}

@media (width <= 640px) {

	:root {
		--difenair-marge: 20px;
	}
}

/* Les liens d'ancre — le sommaire du déroulé — glissent jusqu'à leur cible,
   sauf si le visiteur a demandé moins d'animations. */
@media (prefers-reduced-motion: no-preference) {
	html {
		scroll-behavior: smooth;
	}
}

/* Couleur de texte appliquée depuis l'éditeur : WordPress la pose sur un
 * <mark>, que le navigateur surligne en jaune par défaut. */
mark.has-inline-color {
	background-color: transparent;
}

/* ---------------------------------------------------------------------------
   En-tête
   --------------------------------------------------------------------------- */

/* Dans la maquette, la navigation est posée par-dessus la photo de la
 * bannière : il n'y a pas de bande noire au-dessus d'elle. On sort donc
 * l'en-tête du flux — mais seulement quand la page commence bien par une
 * bannière, sinon il recouvrirait le contenu. */
.wp-site-blocks:has(> main > .difenair-hero:first-child) > header.wp-block-template-part,
.wp-site-blocks:has(> main > * > .difenair-hero:first-child) > header.wp-block-template-part {
	position: absolute;
	inset: 0 0 auto 0;
	z-index: 20;
}

/* L'en-tête étant hors du flux, l'écart que WordPress laissait entre lui et
 * le contenu n'a plus lieu d'être : la bannière doit partir du haut.
 *
 * Sur les pages métier, l'en-tête reste dans le flux — la maquette ne le pose
 * pas par-dessus — mais l'écart de 24 px n'y a pas davantage sa place : la
 * bannière porte son propre retrait de 74 px. Sixième occurrence de cette
 * marge, voir le LISEZ-MOI. */
.wp-site-blocks:has(> main > .difenair-hero:first-child) > main,
.wp-site-blocks:has(> main > * > .difenair-hero:first-child) > main,
.wp-site-blocks:has(> main > .difenair-hero-metier:first-child) > main,
.wp-site-blocks:has(> main > * > .difenair-hero-metier:first-child) > main,
.wp-site-blocks:has(> main > .difenair-hero-article:first-child) > main {
	margin-top: 0;
}

/* Le logo de la maquette fait 34 px de haut, largeur libre. */
.difenair-header .wp-block-site-logo img {
	width: auto;
	height: 34px;
}

.difenair-header {
	position: relative;
	z-index: 10;
	gap: var(--wp--preset--spacing--60);

	/* Le retrait était écrit dans le gabarit, en style en ligne : aucune
	   requête de média ne pouvait le reprendre. Il vient de la variable
	   commune, comme celui des sections et du pied de page. */
	padding: 26px var(--difenair-marge);
}

/* Navigation en pilule, reprise de la maquette.
 *
 * Deux pièges du bloc core/navigation à contourner :
 *  - la classe personnalisée est recopiée sur le <ul> interne, ce qui peindrait
 *    la pilule deux fois : on exclut donc .wp-block-navigation__container ;
 *  - le cœur impose « background: inherit » à chaque <li>, qui hériterait du
 *    fond du conteneur : on le remet à plat.
 */
.difenair-nav.wp-block-navigation:not(.wp-block-navigation__container) {
	gap: 6px;
	padding: 6px;
	border: 1px solid rgb(255 255 255 / 12%);
	border-radius: 999px;
	background: rgb(255 255 255 / 7%);
}

/* Le cœur force « background-color: inherit !important » sur le conteneur
 * responsive tant que le menu est fermé. Cette div hérite alors du fond de la
 * pilule et le repeint à angles droits par-dessus. On la rend transparente,
 * sans toucher à l'état ouvert : en mobile, l'habillage plein écran a besoin
 * de son fond opaque.
 */
.difenair-nav.wp-block-navigation .wp-block-navigation__responsive-container:not(.is-menu-open) {
	background-color: transparent !important;
}

.difenair-nav .wp-block-navigation__responsive-dialog,
.difenair-nav .wp-block-navigation__responsive-container-content,
.difenair-nav .wp-block-navigation__responsive-close {
	background: none;
}

.difenair-nav .wp-block-navigation__container {
	gap: 6px;
	padding: 0;
	border: 0;
	background: none;
}

.difenair-nav .wp-block-navigation-item {
	background: none;
}

.difenair-nav .wp-block-navigation-item__content {
	padding: 11px 17px;
	border-radius: 999px;
	background: none;
	color: var(--wp--preset--color--body);
	/* 14 px de Schibsted : « normal » vaut 17 px pile. Le rapport approché
	   laissait l'en-tête à 104,94 px, et ce dixième de pixel décalait d'une
	   unité toutes les positions de la page. */
	line-height: 17px;
	transition: background-color .22s ease, color .22s ease;
}

.difenair-nav .wp-block-navigation-item__content:hover,
.difenair-nav .wp-block-navigation-item__content:focus-visible {
	background: rgb(255 255 255 / 14%);
	color: var(--wp--preset--color--contrast);
}

.difenair-nav .current-menu-item > .wp-block-navigation-item__content,
.difenair-nav .current_page_item > .wp-block-navigation-item__content {
	background: rgb(255 255 255 / 12%);
	color: var(--wp--preset--color--contrast);
}

.difenair-phone {
	font-size: 13px;   /* hors échelle : valeur propre à l'en-tête */
	line-height: var(--difenair-mono-interligne);
}

.difenair-phone a {
	color: var(--wp--preset--color--contrast);
}

/* Le bouton de l'en-tête porte une pastille blanche avant son libellé. C'est
   un décor : un pseudo-élément plutôt qu'une balise vide dans le contenu. */
.difenair-button--compact .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	padding: 13px 22px;
	font-size: 14px;   /* hors échelle : valeur propre à l'en-tête */
	line-height: 17px;
}

.difenair-button--compact .wp-block-button__link::before {
	content: "";
	flex: none;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--wp--preset--color--contrast);
	box-shadow: 0 0 0 4px rgb(255 255 255 / 25%);
}

.difenair-button--compact .wp-block-button__link:hover {
	box-shadow: var(--wp--preset--shadow--accent);
}

/* Les sections portent leurs propres espacements et se touchent bord à bord,
   comme dans la maquette. On retire l'écart de 24 px que WordPress place entre
   les blocs du contenu — pour elles seulement : dans un article, ce même écart
   sépare les paragraphes et doit rester. */
.wp-block-post-content > .difenair-hero,
.wp-block-post-content > .difenair-hero-metier,
.wp-block-post-content > .difenair-bandeau,
.wp-block-post-content > .difenair-section {
	margin-block-start: 0;
}

/* Huitième occurrence : sur un article, les bandes ne sont pas dans le
   contenu mais directement dans le gabarit. Le même écart de 24 px s'y
   glisse, entre chacune d'elles. */
.difenair-page-article > * {
	margin-block-start: 0;
}

/* ---------------------------------------------------------------------------
   En-têtes de section

   Deux dispositions reviennent d'une page à l'autre : le « manifeste », un
   libellé à gauche et une phrase à droite ; et l'en-tête centré, surtitre,
   titre puis texte. Valeurs relevées sur la maquette à 1440 px.
   --------------------------------------------------------------------------- */

/* WordPress espace de 24 px les enfants d'un groupe « en flux ». Nos écarts
   viennent de « gap » : on remet ces marges à plat. */
.difenair-manifeste > *,
.difenair-entete-duo > *,
.difenair-entete-duo__titres > *,
.difenair-entete-centree > *,
.difenair-entete-centree__texte > * {
	margin-block-start: 0;
}

/* Manifeste : libellé à gauche, déclaration à droite. */
.difenair-manifeste {
	position: relative;
	display: grid;
	grid-template-columns: 220px 1fr;
	gap: 56px;
	align-items: start;
	margin-top: -40px;
	margin-bottom: 120px;
	padding-top: 50px;
	padding-bottom: 50px;
}

.difenair-manifeste__libelle {
	margin: 0;
	padding-top: 8px;
	color: #8e9297;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	/* Interligne figé : « normal » dépend de la police et le texte sauterait
	   d'un pixel quand elle remplace la police de secours. */
	line-height: 16px;
	letter-spacing: .1em;
}

/* Une déclaration, pas un titre : la balise est un paragraphe, l'allure celle
   d'un titre. Voir la note de structure dans le README. */
.difenair-manifeste__phrase {
	max-width: 1000px;
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(23px, calc(17.5px + 1.1458vw), 34px);
	font-weight: 500;
	line-height: 1.24;
	letter-spacing: -.022em;
}

/* En-tête en vis-à-vis : surtitre et titre à gauche, texte à droite, alignés
   par le bas. */
.difenair-entete-duo {
	--difenair-entete-duo-largeur: 760px;
	--difenair-entete-duo-titre: clamp(28px, calc(18px + 2.0833vw), 48px);
	--difenair-entete-duo-interligne: 1.06;
	--difenair-entete-duo-encre: var(--wp--preset--color--contrast);
	--difenair-entete-duo-texte-couleur: var(--wp--preset--color--text-muted);
	--difenair-entete-duo-texte-largeur: 460px;
	--difenair-entete-duo-texte-taille: 16px;
	--difenair-entete-duo-ecart: 18px;

	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 56px;
}

/* Comme pour les décors, la maquette ne réutilise aucune proportion d'une
   section à l'autre : colonne, taille de titre, largeur et taille du texte
   changent à chaque fois. On nomme donc les variantes d'après leur section
   plutôt que d'empiler des modificateurs combinables. */

/* Boutique — « Nos familles d'équipements ». */
.difenair-entete-duo.is-boutique {
	--difenair-entete-duo-largeur: 720px;
	--difenair-entete-duo-titre: clamp(25px, calc(17.5px + 1.5625vw), 40px);
	--difenair-entete-duo-interligne: 1.08;
}

/* Déroulé — « Comment se déroule une intervention ? », sur fond clair. */
.difenair-entete-duo.is-deroule {
	--difenair-entete-duo-largeur: 720px;
	--difenair-entete-duo-encre: #141618;
	--difenair-entete-duo-texte-couleur: var(--wp--preset--color--neutral);
	--difenair-entete-duo-texte-largeur: 520px;
	--difenair-entete-duo-texte-taille: 15.5px;
}

/* Le surtitre du déroulé est plus resserré et sans marqueur. */
.difenair-entete-duo.is-deroule .difenair-eyebrow {
	color: var(--wp--preset--color--text-dim);
	letter-spacing: .1em;
}

/* Fabricants — « Des marques reconnues par les professionnels ». */
.difenair-entete-duo.is-fabricants {
	--difenair-entete-duo-largeur: 700px;
	--difenair-entete-duo-titre: clamp(26px, calc(18px + 1.6667vw), 42px);
	--difenair-entete-duo-interligne: 1.08;
	--difenair-entete-duo-ecart: 16px;
	--difenair-entete-duo-texte-largeur: 420px;
	--difenair-entete-duo-texte-taille: 15.5px;
}


.difenair-entete-duo__titres {
	display: flex;
	max-width: var(--difenair-entete-duo-largeur);
	flex-direction: column;
	gap: var(--difenair-entete-duo-ecart);
}

.difenair-entete-duo__titre {
	margin: 0;
	color: var(--difenair-entete-duo-encre);
	font-size: var(--difenair-entete-duo-titre);
	font-weight: 600;
	line-height: var(--difenair-entete-duo-interligne);
	letter-spacing: -.035em;
}

/* Bouton clair : pastille blanche qui vire à l'orange au survol. On habille
   le bloc Bouton de WordPress plutôt qu'un lien écrit à la main, pour que le
   libellé et l'adresse restent modifiables depuis l'éditeur.
   Utilisé dans l'en-tête « Nos familles d'équipements » et dans la bande
   « Difenair et CBS Groupe ». */
.difenair-entete-duo__actions {
	flex: none;
	margin: 0;
}

.difenair-bouton-clair .wp-block-button__link {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 16px 28px;
	border-radius: 999px;
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	font-size: 15px;
	font-weight: 600;
	line-height: normal;
	white-space: nowrap;
	transition: all .22s ease;
}

/* La flèche est un décor : elle n'a pas à encombrer le champ de saisie. */
.difenair-bouton-clair .wp-block-button__link::after {
	color: var(--wp--preset--color--accent);
	content: "↗";
	transition: color .22s ease;
}

.difenair-bouton-clair .wp-block-button__link:hover,
.difenair-bouton-clair .wp-block-button__link:focus-visible {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
	transform: translateY(-2px);
}

.difenair-bouton-clair .wp-block-button__link:hover::after,
.difenair-bouton-clair .wp-block-button__link:focus-visible::after {
	color: var(--wp--preset--color--contrast);
}

.difenair-entete-duo__texte {
	max-width: var(--difenair-entete-duo-texte-largeur);
	margin: 0;
	color: var(--difenair-entete-duo-texte-couleur);
	font-size: var(--difenair-entete-duo-texte-taille);
	line-height: 1.62;
}

/* En-tête de page métier : titre à gauche, deux paragraphes à droite, alignés
   par le haut. Les trois pages métier reprennent exactement cette grille, là
   où l'en-tête en vis-à-vis de l'accueil aligne par le bas. */
.difenair-entete-metier {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: start;
	gap: 64px;
}

.difenair-entete-metier > * {
	margin-block: 0;
}

.difenair-entete-metier__titres {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

/* Le surtitre des pages métier est orange et sans marqueur. */
.difenair-entete-metier .difenair-eyebrow {
	color: var(--wp--preset--color--accent);
	letter-spacing: .1em;
}

.difenair-entete-metier__titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(26px, calc(17px + 1.875vw), 44px);
	font-weight: 600;
	line-height: 1.08;
	letter-spacing: -.03em;
	text-wrap: pretty;
}

.difenair-entete-metier__textes {
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding-top: 8px;
}

.difenair-entete-metier__textes > p {
	margin: 0;
}

/* Intitulé qui annonce une liste, en capitales monospace. */
.difenair-libelle-liste {
	position: relative;
	z-index: 1;
	margin: 56px 0 20px;
	color: var(--wp--preset--color--text-dim);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12.5px;
	/* Relevé sur la maquette : le navigateur arrondit « normal » au demi-pixel
	   supérieur, ce qu'aucun rapport ne reproduit. On écrit la valeur. */
	line-height: 16.5px;
	letter-spacing: .08em;
}

/* Le même intitulé, mais posé juste au-dessus de sa liste. */
.difenair-libelle-liste.is-collee {
	margin: 0 0 10px;
	font-size: 12px;
	line-height: 16px;
	letter-spacing: .1em;
	color: #8a8e94;
}

.difenair-libelle-liste.is-collee.is-sombre {
	color: #a9acb0;
}

/* Bilan de fin de section : deux paragraphes sous un filet. */
.difenair-bilan {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 64px;
	margin-top: 56px;
	padding-top: 34px;
	border-top: 1px solid rgb(255 255 255 / 14%);
}

.difenair-bilan > * {
	margin-block: 0;
}

/* Commentaire qui suit une liste, plus large que le corps courant. */
.difenair-note-liste {
	max-width: 660px;
	margin: 34px 0 0;
	font-size: var(--wp--preset--font-size--corps-moyen);
	line-height: 1.62;
}

/* Blocs qui portent eux-mêmes le retrait latéral, dans une section dont la
   photo file d'un bord à l'autre. */
.difenair-bord {
	padding-inline: var(--difenair-marge);
}

/* Titre d'ouverture des sections métier sur fond clair — « Contrôle et
   maintenance de vos détecteurs de gaz ». */
.difenair-titre-metier {
	max-width: var(--difenair-titre-metier-largeur, 960px);
	margin: 52px 0 0;
	color: var(--wp--preset--color--surface);
	font-size: var(--wp--preset--font-size--titre-2);
	font-weight: 500;
	line-height: 1.03;
	letter-spacing: -.04em;
	text-wrap: pretty;
}

.difenair-titre-metier.is-large {
	--difenair-titre-metier-largeur: 1000px;
}

/* Deux paragraphes en vis-à-vis sous un titre de section. */
.difenair-vis-a-vis {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 96px;
	max-width: 1180px;
	margin-top: 56px;
}

.difenair-vis-a-vis > * {
	margin-block: 0;
}

/* Les deux colonnes ne sont pas symétriques : la première pose le propos,
   la seconde le précise, plus petite et plus aérée. */
/* Chaque côté peut empiler plusieurs paragraphes plutôt qu'un seul. */
.difenair-vis-a-vis__colonne {
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.difenair-vis-a-vis__colonne > * {
	margin-block: 0;
}

.difenair-vis-a-vis__principal {
	font-size: 18px;
	line-height: 1.6;
}

.difenair-vis-a-vis__secondaire {
	line-height: 1.7;
}

/* Légendes posées de part et d'autre, sous un bandeau. */
.difenair-legendes {
	display: flex;
	justify-content: space-between;
	gap: 24px;
	padding: 18px var(--difenair-marge) 0;
	color: #8a8e94;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	line-height: 14.5px;   /* relevé sur la maquette */
	letter-spacing: .14em;
}

.difenair-legendes > * {
	margin-block: 0;
}

/* Un intitulé qui reste à l'écran pendant que la liste défile à côté de lui.
   Disposition commune aux trois pages métier. */
.difenair-duo-liste {
	display: grid;
	grid-template-columns: 340px 1fr;
	align-items: start;
	gap: 96px;
	margin-top: 88px;
}

.difenair-duo-liste > * {
	margin-block: 0;
}

.difenair-duo-liste__intro {
	position: sticky;
	top: 48px;
	display: flex;
	flex-direction: column;
	gap: 20px;
}

/* Le trait orange au-dessus du titre est un décor : un pseudo-élément plutôt
   qu'une balise vide dans le contenu. */
.difenair-duo-liste__intro::before {
	content: "";
	display: block;
	width: 40px;
	height: 2px;
	background: var(--wp--preset--color--accent);
}

.difenair-duo-liste__intro > * {
	margin-block: 0;
}

.difenair-duo-liste__titre {
	margin: 0;
	color: var(--wp--preset--color--surface);
	font-size: var(--difenair-duo-liste-titre, 24px);
	font-weight: 500;
	line-height: var(--difenair-duo-liste-interligne, 1.25);
	letter-spacing: var(--difenair-duo-liste-chasse, -.02em);
}

.difenair-duo-liste.is-large {
	--difenair-duo-liste-titre: clamp(21px, calc(17.5px + 0.7292vw), 28px);
	--difenair-duo-liste-interligne: 1.2;
	--difenair-duo-liste-chasse: -.025em;
}

/* Les paragraphes de la colonne collante sont plus aérés que le corps
   courant : c'est un aparté, pas le fil du texte. */
.difenair-duo-liste__intro p:not(.difenair-duo-liste__note) {
	line-height: 1.7;
}

.difenair-duo-liste__note {
	margin: 0;
	color: #8a8e94;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--surtitre);
	line-height: 1.8;
	letter-spacing: .08em;
}

/* Bloc de texte posé sur une photo : le propos tient dans la moitié gauche,
   là où le voile est le plus dense. */
.difenair-bloc-texte {
	position: relative;
	z-index: 1;
	display: flex;
	max-width: var(--difenair-bloc-texte-largeur, 720px);
	flex-direction: column;
	gap: 20px;
}

.difenair-bloc-texte.is-large {
	--difenair-bloc-texte-largeur: 740px;
}

/* Quatre paragraphes à la suite : plus large, et resserré pour tenir. */
.difenair-bloc-texte.is-dense {
	--difenair-bloc-texte-largeur: 760px;

	gap: 18px;
}

.difenair-bloc-texte > * {
	margin-block: 0;
}

.difenair-bloc-texte > .difenair-atouts {
	margin-block-start: 20px;
}

.difenair-bloc-texte > .difenair-bouton-orange {
	margin-block-start: 22px;
}

.difenair-bloc-texte .difenair-eyebrow {
	color: var(--wp--preset--color--accent);
	letter-spacing: .1em;
}

.difenair-bloc-texte__titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--titre-3);
	font-weight: 600;
	line-height: 1.06;
	letter-spacing: -.032em;
	text-wrap: pretty;
}

.difenair-bloc-texte__chapeau {
	/* La maquette ajoute 8 px au-dessus du chapeau, en plus de l'écart de la
	   colonne : le titre respire un peu plus que les paragraphes entre eux. */
	margin-block-start: 8px;
	font-size: 16.5px;
	line-height: 1.62;
}

/* En-tête large : titre à gauche, phrase d'introduction à droite, alignés par
   le bas. Comme ailleurs, les proportions changent d'une section à l'autre :
   on nomme les variantes d'après leur section. */
.difenair-entete-large {
	--difenair-entete-large-colonne: 460px;
	--difenair-entete-large-ecart: 48px;
	--difenair-entete-large-titre: clamp(30px, calc(17px + 2.7083vw), 56px);
	--difenair-entete-large-encre: var(--wp--preset--color--surface);
	--difenair-entete-large-texte: var(--wp--preset--color--ink-muted);
	--difenair-entete-large-texte-taille: var(--wp--preset--font-size--corps-moyen);

	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr var(--difenair-entete-large-colonne);
	align-items: end;
	gap: 96px;
	margin-top: var(--difenair-entete-large-ecart);
}

/* Fabricants respiratoires — colonne d'introduction plus large. */
.difenair-entete-large.is-large {
	--difenair-entete-large-colonne: 520px;
}

/* Vente d'équipements antichute — sur fond gris, colonne de 480 px. */
.difenair-entete-large.is-vente-sombre {
	--difenair-entete-large-colonne: 480px;
	--difenair-entete-large-ecart: 52px;
	--difenair-entete-large-titre: var(--wp--preset--font-size--titre-2);
	--difenair-entete-large-encre: var(--wp--preset--color--contrast);
	--difenair-entete-large-texte: var(--wp--preset--color--light-border);
	--difenair-entete-large-texte-taille: var(--wp--preset--font-size--corps-grand);
}

/* Vente d'équipements respiratoires — titre plus grand, sur fond clair. */
.difenair-entete-large.is-vente-claire {
	--difenair-entete-large-ecart: 52px;
	--difenair-entete-large-titre: var(--wp--preset--font-size--titre-2);
}

/* Vente et location — sur fond gris, titre plus grand. */
.difenair-entete-large.is-vente {
	--difenair-entete-large-colonne: 440px;
	--difenair-entete-large-ecart: 52px;
	--difenair-entete-large-titre: var(--wp--preset--font-size--titre-2);
	--difenair-entete-large-encre: var(--wp--preset--color--contrast);
	--difenair-entete-large-texte: var(--wp--preset--color--light-border);
	--difenair-entete-large-texte-taille: var(--wp--preset--font-size--corps-grand);
}

.difenair-entete-large > * {
	margin-block: 0;
}

.difenair-entete-large__colonne {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding-bottom: 8px;
}

.difenair-entete-large__colonne > * {
	margin-block: 0;
}

/* Dans cette disposition, le retrait bas est porté par la colonne. */
.difenair-entete-large__colonne .difenair-entete-large__texte {
	padding-bottom: 0;
}

.difenair-entete-large__titre {
	margin: 0;
	color: var(--difenair-entete-large-encre);
	font-size: var(--difenair-entete-large-titre);
	font-weight: 500;
	line-height: 1.03;
	letter-spacing: -.04em;
	text-wrap: pretty;
}

/* Le décalage du bas vient de la maquette : la phrase ne s'aligne pas sur la
   dernière ligne du titre mais un peu au-dessus. */
.difenair-entete-large__texte {
	margin: 0;
	padding-bottom: 8px;
	color: var(--difenair-entete-large-texte);
	font-size: var(--difenair-entete-large-texte-taille);
	line-height: 1.6;
}

/* Paragraphe secondaire des pages métier : même taille que le corps courant,
   mais plus aéré. Il revient dans plusieurs dispositions. */
.difenair-texte-secondaire {
	line-height: 1.7;
}

/* Mention de bas de section, sous un contenu large. */
.difenair-note-section {
	position: relative;
	z-index: 1;
	max-width: 760px;
	margin: 44px 0 0;
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--corps);
	line-height: 1.62;
}

/* Corps de section en vis-à-vis : une colonne de contenu, une photo.
   « Vente et location de détecteurs de gaz ». */
.difenair-corps-visuel {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr 460px;
	align-items: start;
	gap: 96px;
	margin-top: var(--difenair-corps-visuel-ecart, 88px);
}

/* Quand le titre est dans la colonne et non dans un en-tête au-dessus, la
   bande démarre plus près de la rubrique. */
.difenair-corps-visuel.is-rapprochee {
	--difenair-corps-visuel-ecart: 52px;
}

/* Titre porté par la colonne elle-même. */
.difenair-corps-visuel__titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--titre-2);
	font-weight: 500;
	line-height: 1.03;
	letter-spacing: -.04em;
	text-wrap: pretty;
}

.difenair-corps-visuel__intro {
	max-width: 640px;
	font-size: var(--wp--preset--font-size--corps-grand);
	line-height: 1.6;
}

.difenair-corps-visuel.is-haute {
	--difenair-corps-visuel-photo: 720px;
	--difenair-corps-visuel-ecart: 80px;
}

.difenair-corps-visuel > * {
	margin-block: 0;
}

.difenair-corps-visuel__photo {
	position: relative;
	height: var(--difenair-corps-visuel-photo, 620px);
	margin: 0;
	overflow: hidden;
	background: #2f3134;
}

.difenair-corps-visuel__photo img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Colonne d'une disposition en vis-à-vis : on ne retire que la marge haute
   que WordPress ajoute entre blocs frères. Les marges basses restent, ce sont
   elles qui séparent un intitulé de la liste qu'il annonce. */
.difenair-colonne > *:not(.difenair-liens-souliges) {
	margin-block-start: 0;
}

/* Les écarts voulus par la maquette sont réaffirmés au même niveau : la règle
   ci-dessus les emporterait sinon. */
.difenair-colonne > .difenair-note-liste {
	margin-block-start: 34px;
}

.difenair-colonne > .difenair-corps-visuel__intro {
	margin-block-start: 22px;
}

.difenair-colonne > .difenair-offres.is-espacee {
	margin-block-start: 22px;
}

/* Deux liens soulignés, à la suite d'une liste d'offres. */
.difenair-liens-souliges {
	display: flex;
	align-items: center;
	gap: 32px;
	margin-top: 40px;
}

.difenair-liens-souliges .wp-block-button__link {
	padding: 0 0 6px;
	border: 0;
	border-bottom: 1px solid rgb(255 255 255 / 20%);
	border-radius: 0;
	background: none;
	color: #a9acb0;   /* hors palette : gris propre à cette bande */
	font-size: var(--wp--preset--font-size--corps-moyen);
	font-weight: 500;
	line-height: 19.5px;   /* relevé sur la maquette */
	transition: all .22s ease;
}

.difenair-liens-souliges .wp-block-button:first-child .wp-block-button__link {
	border-bottom-color: rgb(255 255 255 / 40%);
	color: var(--wp--preset--color--contrast);
}

.difenair-liens-souliges .wp-block-button:first-child .wp-block-button__link:hover,
.difenair-liens-souliges .wp-block-button:first-child .wp-block-button__link:focus-visible {
	border-bottom-color: var(--wp--preset--color--accent-soft);
	color: var(--wp--preset--color--accent-soft);
}

.difenair-liens-souliges .wp-block-button__link:hover,
.difenair-liens-souliges .wp-block-button__link:focus-visible {
	border-bottom-color: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--contrast);
}

/* En-tête simple d'une section sur fond clair : surtitre et titre, rien
   d'autre. « Découvrez notre gamme de détecteurs de gaz ». */
.difenair-entete-gamme {
	position: relative;
	z-index: 1;
	display: flex;
	max-width: 720px;
	flex-direction: column;
	gap: 18px;
}

.difenair-entete-gamme > * {
	margin-block: 0;
}

.difenair-entete-gamme .difenair-eyebrow {
	color: var(--wp--preset--color--accent);
	letter-spacing: .1em;
}

.difenair-entete-gamme__titre {
	margin: 0;
	color: var(--wp--preset--color--surface);
	font-size: clamp(26px, calc(17px + 1.875vw), 44px);
	font-weight: 600;
	line-height: 1.07;
	letter-spacing: -.032em;
}

/* Bouton sombre sur fond clair, avec sa pointe. */
.difenair-bouton-sombre {
	position: relative;
	z-index: 1;
	margin-top: 40px;
}

.difenair-bouton-sombre.is-eloigne {
	margin-top: 48px;
}

.difenair-bouton-sombre .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	padding: 17px 30px;
	border-radius: 999px;
	background: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--corps);
	font-weight: 600;
	line-height: 18.5px;   /* relevé sur la maquette */
	transition: all .22s ease;
}

/* La pointe est un décor : elle n'a pas à encombrer le champ de saisie. */
.difenair-bouton-sombre .wp-block-button__link::after {
	content: "";
	display: block;
	width: 0;
	height: 0;
	border-top: 5px solid transparent;
	border-bottom: 5px solid transparent;
	border-left: 7px solid currentcolor;
}

.difenair-bouton-sombre .wp-block-button__link:hover,
.difenair-bouton-sombre .wp-block-button__link:focus-visible {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
	transform: translateY(-2px);
	box-shadow: 0 14px 30px rgb(0 0 0 / 20%);
}

/* Questions fréquentes : l'intitulé à gauche, les questions à droite. */
.difenair-grille-faq {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 380px 1fr;
	align-items: start;
	gap: 72px;
}

.difenair-grille-faq > * {
	margin-block: 0;
}

.difenair-entete-faq {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.difenair-entete-faq > * {
	margin-block: 0;
}

.difenair-entete-faq .difenair-eyebrow {
	color: var(--wp--preset--color--accent);
	letter-spacing: .1em;
}

.difenair-entete-faq__titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(26px, calc(18px + 1.6667vw), 42px);
	font-weight: 600;
	line-height: 1.07;
	letter-spacing: -.032em;
}

/* Le lien ne s'étire pas sur toute la colonne : il s'arrête à son texte. */
.difenair-entete-faq__lien {
	align-self: flex-start;
	margin-top: 14px;
	color: var(--wp--preset--color--accent);
	font-size: var(--wp--preset--font-size--corps);
	font-weight: 600;
	line-height: 19.5px;   /* relevé sur la maquette */
}

/* Secteurs d'intervention : la liste à gauche, une carte sombre à droite. */
.difenair-duo-carte {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr 460px;
	align-items: start;
	gap: 96px;
}

.difenair-duo-carte > * {
	margin-block: 0;
}

.difenair-duo-carte__colonne {
	display: flex;
	flex-direction: column;
	gap: 22px;
}

.difenair-duo-carte__colonne > * {
	margin-block: 0;
}

.difenair-duo-carte__colonne .difenair-eyebrow {
	color: var(--wp--preset--color--accent);
	letter-spacing: .1em;
}

.difenair-duo-carte__titre {
	max-width: 620px;
	margin: 0;
	color: var(--wp--preset--color--surface);
	font-size: clamp(29px, calc(17.5px + 2.3958vw), 52px);
	font-weight: 500;
	line-height: 1.04;
	letter-spacing: -.038em;
	text-wrap: pretty;
}

/* La carte sombre reprend le trait orange de la colonne collante. */
.difenair-carte-sombre {
	display: flex;
	flex-direction: column;
	gap: 18px;
	padding: 40px;
	border-radius: 18px;
	background: var(--wp--preset--color--surface);
}

.difenair-carte-sombre::before {
	content: "";
	display: block;
	width: 40px;
	height: 2px;
	background: var(--wp--preset--color--accent);
}

.difenair-carte-sombre > * {
	margin-block: 0;
}

.difenair-carte-sombre__titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(21px, calc(17.5px + 0.7292vw), 28px);
	font-weight: 500;
	line-height: 1.2;   /* interligne explicite dans la maquette, pas « normal » */
	letter-spacing: -.025em;
}

.difenair-carte-sombre__chapeau {
	font-size: 15.5px;
	line-height: 1.65;
}

.difenair-carte-sombre__texte {
	line-height: 1.65;
}

/* Bouton orange isolé, à la suite d'un bloc de texte. */
.difenair-bouton-orange {
	align-self: flex-start;
	margin-top: 22px;
}

.difenair-bouton-orange .wp-block-button__link {
	padding: 17px 30px;
	border-radius: 999px;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
	font-size: 15.5px;
	font-weight: 600;
	line-height: 19px;   /* relevé sur la maquette */
	transition: all .22s ease;
}

.difenair-bouton-orange .wp-block-button__link:hover,
.difenair-bouton-orange .wp-block-button__link:focus-visible {
	background: var(--wp--preset--color--accent-hover);
	color: var(--wp--preset--color--contrast);
	transform: translateY(-2px);
	box-shadow: 0 12px 26px rgb(224 92 11 / 34%);
}

/* Bouton sombre compact, à la suite d'un intitulé de colonne. */
.difenair-bouton-sombre-compact {
	align-self: flex-start;
	margin-top: 6px;
}

.difenair-bouton-sombre-compact .wp-block-button__link {
	padding: 15px 26px;
	border-radius: 999px;
	background: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--corps);
	font-weight: 600;
	line-height: 18.5px;   /* relevé sur la maquette */
	transition: all .22s ease;
}

.difenair-bouton-sombre-compact .wp-block-button__link:hover,
.difenair-bouton-sombre-compact .wp-block-button__link:focus-visible {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
	transform: translateY(-2px);
}

/* En-tête à trait : un filet orange, un titre, et le texte en vis-à-vis.
   « Les équipes de techniciens et de commerciaux formés par les fabricants ». */
.difenair-entete-trait {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: start;
	gap: 96px;
}

.difenair-entete-trait > * {
	margin-block: 0;
}

.difenair-entete-trait__titres {
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.difenair-entete-trait__titres > * {
	margin-block: 0;
}

/* Le trait est un décor : un pseudo-élément plutôt qu'une balise vide. */
.difenair-entete-trait__titres::before {
	content: "";
	display: block;
	width: 40px;
	height: 2px;
	background: var(--wp--preset--color--accent);
}

.difenair-entete-trait__titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(26px, calc(18px + 1.6667vw), 42px);
	font-weight: 600;
	line-height: 1.08;
	letter-spacing: -.03em;
	text-wrap: pretty;
}

.difenair-entete-trait__textes {
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding-top: 8px;
}

.difenair-entete-trait__textes > * {
	margin-block: 0;
}

.difenair-entete-trait__chapeau {
	font-size: 16.5px;
	line-height: 1.62;
}

.difenair-entete-trait__texte {
	line-height: 1.65;
}

/* Bouton orange avec sa pointe, à la suite d'une grille de vignettes. */
.difenair-bouton-orange-pointe {
	position: relative;
	z-index: 1;
	margin-top: 48px;
}

.difenair-bouton-orange-pointe .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	padding: 17px 30px;
	border-radius: 999px;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--corps);
	font-weight: 600;
	line-height: 18.5px;   /* relevé sur la maquette */
	transition: all .22s ease;
}

.difenair-bouton-orange-pointe .wp-block-button__link::after {
	content: "";
	display: block;
	width: 0;
	height: 0;
	border-top: 5px solid transparent;
	border-bottom: 5px solid transparent;
	border-left: 7px solid currentcolor;
}

.difenair-bouton-orange-pointe .wp-block-button__link:hover,
.difenair-bouton-orange-pointe .wp-block-button__link:focus-visible {
	background: var(--wp--preset--color--accent-hover);
	color: var(--wp--preset--color--contrast);
	transform: translateY(-2px);
	box-shadow: 0 14px 30px rgb(224 92 11 / 34%);
}

/* En-tête centré. */
.difenair-entete-centree {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 22px;
	text-align: center;
}

.difenair-entete-centree__titre {
	max-width: 1080px;
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(32px, calc(18px + 2.9167vw), 60px);
	font-weight: 600;
	line-height: 1.02;
	letter-spacing: -.038em;
	text-wrap: balance;
}

.difenair-entete-centree__texte {
	display: flex;
	max-width: 760px;
	flex-direction: column;
	gap: 12px;
}

.difenair-entete-centree__texte p {
	margin: 0;
	color: var(--wp--preset--color--text-muted);
	font-size: 16px;
	line-height: 1.62;
}

/* ---------------------------------------------------------------------------
   Engagements et implantation

   Section « Pourquoi choisir Difenair ? » : trois cellules séparées par un
   filet, puis un bandeau photographique portant la phrase d'implantation.
   Valeurs relevées sur la maquette à 1440 px.
   --------------------------------------------------------------------------- */

.difenair-engagements > *,
.difenair-engagements__cellule > *,
.difenair-implantation > *,
.difenair-implantation__contenu > *,
.difenair-implantation__reperes > * {
	margin-block-start: 0;
}

/* En-tête centré sur fond clair. */
.difenair-entete-centree.is-clair {
	gap: 20px;
}

.difenair-entete-centree.is-clair .difenair-eyebrow {
	color: var(--wp--preset--color--neutral);
}

.difenair-entete-centree.is-clair .difenair-entete-centree__titre {
	max-width: none;
	color: #141618;
	font-size: clamp(31px, calc(17.5px + 2.8125vw), 58px);
	line-height: 1.02;
	letter-spacing: -.038em;
}

/* Grille d'engagements : le fond du cadre affleure entre les cellules et
   dessine les filets. Même principe que la grille de prestations, en négatif —
   cellules claires sur fond sombre, et seulement deux filets horizontaux. */
.difenair-engagements {
	position: relative;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1px;
	margin-top: 56px;
	border-top: 1px solid rgb(20 22 24 / 16%);
	border-bottom: 1px solid rgb(20 22 24 / 16%);
	background: rgb(20 22 24 / 16%);
	counter-reset: difenair-engagement;
}

.difenair-engagements__cellule {
	display: flex;
	flex-direction: column;
	gap: 26px;
	padding: 44px 40px 40px;
	background: #f2f1ef;
	counter-increment: difenair-engagement;
	transition: background .25s ease, box-shadow .25s ease;
}

.difenair-engagements__cellule:hover {
	background: #e9e7e3;
	box-shadow: inset 0 -3px 0 0 var(--wp--preset--color--accent);
}

.difenair-engagements__cellule::before {
	color: var(--wp--preset--color--accent);
	content: counter(difenair-engagement, decimal-leading-zero);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	line-height: var(--difenair-mono-interligne);
	letter-spacing: .1em;
}

.difenair-engagements__cellule p {
	margin: 0;
	color: #141618;
	font-size: clamp(25px, calc(17.5px + 1.5625vw), 40px);
	font-weight: 600;
	line-height: 1.04;
	letter-spacing: -.035em;
}

/* Bandeau d'implantation : photo voilée, phrase et repères. */
.difenair-implantation {
	position: relative;
	min-height: 300px;
	margin-top: 32px;
	overflow: clip;
	border-radius: 18px;
	background: var(--wp--preset--color--surface);
}

.difenair-implantation__visuel {
	position: absolute;
	inset: 0;
	margin: 0;
}

.difenair-implantation__visuel img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: .32;
	filter: grayscale(.5);
}

/* Le voile est un décor : pseudo-élément plutôt qu'un bloc vide dans
   l'éditeur. */
.difenair-implantation::after {
	position: absolute;
	inset: 0;
	background: radial-gradient(70% 120% at 12% 100%, rgb(224 92 11 / 34%) 0%, rgb(14 15 17 / 0%) 65%), linear-gradient(90deg, rgb(14 15 17 / 90%) 0%, rgb(14 15 17 / 45%) 100%);
	content: "";
}

.difenair-implantation__contenu {
	position: relative;
	z-index: 1;
	display: grid;
	box-sizing: border-box;
	grid-template-columns: 1fr 300px;
	gap: 48px;
	align-items: center;
	min-height: 300px;
	padding: 56px 48px;
}

.difenair-implantation__declaration {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(25px, calc(17.5px + 1.5625vw), 40px);
	font-weight: 500;
	line-height: 1.14;
	letter-spacing: -.032em;
	text-wrap: balance;
}

.difenair-implantation__reperes {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding-left: 26px;
	border-left: 1px solid rgb(255 255 255 / 22%);
	color: #c9c7c4;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12.5px;
	letter-spacing: .06em;
}

.difenair-implantation__reperes p {
	margin: 0;
	line-height: var(--difenair-mono-interligne);
}

/* ---------------------------------------------------------------------------
   Bande en vis-à-vis : texte à gauche, visuel à droite

   Deux colonnes égales de même hauteur. Valeurs relevées sur la maquette à
   1440 px — bande « Difenair et CBS Groupe ».
   --------------------------------------------------------------------------- */

.difenair-duo > *,
.difenair-duo__texte > * {
	margin-block-start: 0;
}

.difenair-duo {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	align-items: stretch;
}

.difenair-duo__texte {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 18px;
}

.difenair-duo__texte .difenair-eyebrow {
	color: #8e9297;
	letter-spacing: .1em;
}

.difenair-duo__titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(27px, calc(17.5px + 1.9792vw), 46px);
	font-weight: 600;
	line-height: 1.06;
	letter-spacing: -.035em;
}

/* Le surtitre est lui aussi un <p> : on l'exclut, sinon il hérite de la
   taille du corps de texte. */
.difenair-duo__texte > p:not(.difenair-eyebrow) {
	margin: 0;
	color: var(--wp--preset--color--text-muted);
	font-size: 16px;
	line-height: 1.62;
}

.difenair-duo__actions {
	align-self: flex-start;
	margin-top: 12px;
}

.difenair-duo__visuel {
	position: relative;
	min-height: 440px;
	margin: 0;
	overflow: hidden;
	border-radius: 16px;
}

.difenair-duo__visuel img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: .72;
}

/* ---------------------------------------------------------------------------
   Pied de page

   Valeurs relevées sur la maquette : grille 1.5fr / 1fr / 1fr / 1.1fr avec
   44 px d'écart, colonnes en pile de 11 px, intitulés en mono 11,5 px gris
   discret suivis de 5 px de marge.
   --------------------------------------------------------------------------- */

/* Pied de page glissant.

   Le contenu passe par-dessus le pied de page, qui reste collé au bas de la
   fenêtre et se découvre au fil du défilement. Deux valeurs égales à sa
   hauteur suffisent : une marge basse sur le contenu pour lui faire place,
   une marge haute négative sur le pied pour qu'il la reprenne.

   La hauteur est mesurée par assets/js/pied-de-page.js, qui pose aussi la
   classe sur <html>. Sans JavaScript, rien de tout ceci ne s'applique et le
   pied de page s'affiche à la suite du contenu, comme n'importe quel autre. */
/* Une page courte doit tout de même remplir l'écran, sinon le pied de page
   s'arrête en plein milieu et laisse un vide en dessous. Plutôt que de
   soustraire la hauteur de l'en-tête — variable selon les gabarits — on laisse
   le contenu absorber l'espace restant. */
.difenair-pied-glissant .wp-site-blocks {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}

.difenair-pied-glissant .wp-site-blocks > main {
	position: relative;
	z-index: 1;
	flex: 1 0 auto;
	margin-bottom: var(--difenair-pied-hauteur, 0px);
	background: var(--wp--preset--color--base);
	box-shadow: 0 40px 80px rgb(0 0 0 / 55%);
}

.difenair-pied-glissant .wp-site-blocks > footer {
	position: sticky;
	bottom: 0;
	z-index: 0;
	margin-top: calc(-1 * var(--difenair-pied-hauteur, 0px));
}

.difenair-footer {
	padding: 56px var(--difenair-marge) 30px;
	border-top: 1px solid rgb(255 255 255 / 12%);
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--text-muted);
}

.difenair-footer__grille {
	display: grid;
	grid-template-columns: 1.5fr 1fr 1fr 1.1fr;
	gap: 44px;
}

/* WordPress espace les enfants d'un groupe « en flux » de 24 px. Cette marge
   subsiste quand on repasse le groupe en grille et fausse la hauteur de la
   rangée : c'est l'écart qui doit venir de « gap », pas d'une marge. */
.difenair-footer__grille > * {
	margin-block-start: 0;
}

/* Colonne de marque : logo puis signature. */
.difenair-footer__marque {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.difenair-footer__marque .wp-block-site-logo {
	align-self: flex-start;
	margin: 0;
}

.difenair-footer__marque .wp-block-site-logo img {
	width: auto;
	height: 32px;
}

.difenair-footer__baseline {
	max-width: 340px;
	margin: 0;
	font-size: 14.5px;
	line-height: 1.65;
}

/* Colonnes de liens et de coordonnées. */
.difenair-footer__colonne {
	display: flex;
	flex-direction: column;
	gap: 11px;
}

/* L'intitulé de colonne reste un <h4> pour la structure du document, mais
   se présente comme un libellé discret, pas comme un titre. */
.difenair-footer__titre {
	margin: 0 0 5px;
	color: var(--wp--preset--color--text-dim);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11.5px;
	font-weight: 400;
	line-height: 15px;   /* Interligne figé : « normal » dépend de la police et le texte sauterait
	   d'un pixel quand elle remplace la police de secours. */
	letter-spacing: .1em;
}

/* La taille et l'interligne sont portés par la liste : sans cela, chaque <li>
   garde l'interligne de 1,62 du corps de texte et gagne 6 px de haut. */
.difenair-footer__liens,
.difenair-footer__adresse {
	color: var(--wp--preset--color--light-border);
	font-size: 14.5px;
	line-height: normal;
}

.difenair-footer__liens {
	display: flex;
	flex-direction: column;
	gap: 11px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.difenair-footer__liens a {
	color: inherit;
	text-decoration: none;
	transition: color .18s ease;
}

.difenair-footer__liens a:hover,
.difenair-footer__liens a:focus-visible {
	color: var(--wp--preset--color--contrast);
}

.difenair-footer__adresse,
.difenair-footer__telephone,
.difenair-footer__horaires {
	margin: 0;
}

.difenair-footer__telephone {
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 16px;
	font-weight: 600;
	line-height: normal;
}

.difenair-footer__telephone a {
	color: inherit;
	text-decoration: none;
}

.difenair-footer__horaires {
	margin-top: 4px;
	color: var(--wp--preset--color--text-dim);
	font-size: 14px;
	line-height: 1.7;
}

/* Bandeau légal. */
.difenair-footer__bas {
	gap: 24px;
	margin-top: 44px;
	padding-top: 20px;
	border-top: 1px solid rgb(255 255 255 / 10%);
	color: var(--wp--preset--color--text-dim);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11.5px;
	line-height: 15px;   /* Interligne figé : « normal » dépend de la police et le texte sauterait
	   d'un pixel quand elle remplace la police de secours. */
}

.difenair-footer__bas p {
	margin: 0;
}

.difenair-footer__legal {
	display: flex;
	gap: 20px;
}

.difenair-footer__legal a {
	color: var(--wp--preset--color--text-dim);
	text-decoration: none;
	transition: color .18s ease;
}

.difenair-footer__legal a:hover,
.difenair-footer__legal a:focus-visible {
	color: var(--wp--preset--color--contrast);
}

/* ---------------------------------------------------------------------------
   Qui sommes-nous

   Une page de présentation : peu de motifs y reviennent d'une bande à
   l'autre, chaque composition est donc nommée d'après la sienne.
   --------------------------------------------------------------------------- */

/* Surtitre à triangle, sur fond sombre puis sur fond clair. */
.difenair-surtitre-triangle {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0;
	color: #c9c7c4;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	line-height: 16px;   /* relevé sur la maquette */
	letter-spacing: .12em;
}

.difenair-surtitre-triangle.is-clair {
	color: var(--wp--preset--color--neutral);
}

.difenair-surtitre-triangle::before {
	content: "";
	display: block;
	width: 0;
	height: 0;
	border-right: 5px solid transparent;
	border-bottom: 8px solid var(--wp--preset--color--accent);
	border-left: 5px solid transparent;
}

/* L'équipe : texte à gauche, photo à droite, alignés au centre. */
.difenair-duo-photo {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: center;
	gap: 56px;
}

.difenair-duo-photo > * {
	margin-block: 0;
}

.difenair-duo-photo__colonne {
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.difenair-duo-photo__colonne > * {
	margin-block: 0;
}

.difenair-duo-photo__titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(27px, calc(17.5px + 1.9792vw), 46px);
	font-weight: 600;
	line-height: 1.06;
	letter-spacing: -.035em;
	text-wrap: pretty;
}

.difenair-duo-photo__chapeau {
	font-size: 16.5px;
	line-height: 1.62;
}

/* La photo est encadrée et légendée par-dessus. */
.difenair-photo-cadre {
	position: relative;
	min-height: 420px;
	margin: 0;
	overflow: clip;
	border-radius: 16px;
	background: var(--wp--preset--color--base);
	transition: transform .3s ease, box-shadow .3s ease;
}

.difenair-photo-cadre:hover {
	transform: translateY(-4px);
	box-shadow: 0 24px 48px rgb(0 0 0 / 34%);
}

.difenair-photo-cadre img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.difenair-photo-cadre figcaption {
	position: absolute;
	bottom: 18px;
	left: 20px;
	padding: 7px 12px;
	border-radius: 999px;
	background: rgb(14 15 17 / 62%);
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--surtitre);
	line-height: 15px;   /* relevé sur la maquette */
	letter-spacing: .06em;
}

/* En-tête d'histoire : titre à gauche, millésime à droite, sous un filet. */
.difenair-entete-millesime {
	position: relative;
	z-index: 1;
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 56px;
	padding-bottom: 38px;
	border-bottom: 1px solid rgb(20 22 24 / 14%);
}

.difenair-entete-millesime > * {
	margin-block: 0;
}

.difenair-entete-millesime__titres {
	display: flex;
	max-width: 680px;
	flex-direction: column;
	gap: 20px;
}

.difenair-entete-millesime__titres > * {
	margin-block: 0;
}

.difenair-entete-millesime__titre {
	margin: 0;
	color: #141618;
	font-size: clamp(30px, calc(18px + 2.5vw), 54px);
	font-weight: 600;
	line-height: 1.02;
	letter-spacing: -.038em;
	text-wrap: pretty;
}

.difenair-entete-millesime__millesime {
	flex: none;
	margin: 0;
	color: var(--wp--preset--color--accent);
	font-size: clamp(32px, calc(16px + 3.3333vw), 64px);
	font-weight: 600;
	line-height: .9;
	letter-spacing: -.04em;
	white-space: nowrap;
}

/* Histoire : trois colonnes — photo, récit, carte de mission. */
.difenair-trio-histoire {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 360px 1fr 420px;
	align-items: start;
	gap: 48px;
	margin-top: 48px;
}

.difenair-trio-histoire > * {
	margin-block: 0;
}

.difenair-trio-histoire__colonne {
	display: flex;
	flex-direction: column;
	gap: 22px;
	padding-top: 6px;
}

.difenair-trio-histoire__colonne > * {
	margin-block: 0;
}

.difenair-trio-histoire__chapeau {
	font-size: clamp(18px, calc(16px + 0.4167vw), 22px);
	line-height: 1.42;
	letter-spacing: -.01em;
	color: #141618;
}

.difenair-trio-histoire__texte {
	font-size: var(--wp--preset--font-size--corps-moyen);
	line-height: 1.68;
}

/* Photo légendée en dessous, sans cadre. */
.difenair-photo-legendee {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin: 0;
}

.difenair-photo-legendee img {
	display: block;
	width: 100%;
	height: 520px;
	border-radius: 16px;
	object-fit: cover;
}

/* Tant que la photo manque, seule sa légende s'affiche. */
.difenair-photo-legendee.is-en-attente {
	padding-top: 6px;
}

/* Huitième occurrence de la même chose : l'écart vient de « gap », pas de la
   marge que WordPress pose sous une légende d'image. */
.difenair-photo-legendee figcaption {
	margin-block: 0;
}

.difenair-photo-legendee.is-en-attente p,
.difenair-photo-legendee figcaption {
	color: var(--wp--preset--color--text-dim);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--surtitre);
	line-height: 15px;   /* relevé sur la maquette */
	letter-spacing: .08em;
}

/* Carte de mission : elle remonte sur la bande précédente. */
.difenair-carte-mission {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 26px;
	padding: 44px 40px;
	overflow: clip;
	border-radius: 18px;
	background: #141618;
	box-shadow: 0 26px 52px rgb(20 22 24 / 24%);
	transform: translateY(-72px);
}

/* Le halo orange du coin est un décor. */
.difenair-carte-mission::before {
	content: "";
	position: absolute;
	top: -90px;
	right: -90px;
	width: 280px;
	height: 280px;
	background: radial-gradient(closest-side, rgb(224 92 11 / 28%), rgb(224 92 11 / 0%));
	pointer-events: none;
}

.difenair-carte-mission > * {
	position: relative;
	margin-block: 0;
}

.difenair-carte-mission__libelle {
	color: var(--wp--preset--color--accent);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--surtitre);
	line-height: 15px;   /* relevé sur la maquette */
	letter-spacing: .12em;
}

.difenair-carte-mission__texte {
	font-size: clamp(19px, calc(17px + 0.4167vw), 23px);
	font-weight: 500;
	line-height: 1.42;
	letter-spacing: -.015em;
	color: var(--wp--preset--color--contrast);
}

/* Le filet orange de fin de carte. */
.difenair-carte-mission::after {
	content: "";
	display: block;
	width: 52px;
	height: 2px;
	background: var(--wp--preset--color--accent);
}

/* En-tête centré des domaines d'intervention. */
.difenair-entete-domaines {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 20px;
	text-align: center;
}

.difenair-entete-domaines > * {
	margin-block: 0;
}

.difenair-entete-domaines__titre {
	max-width: 900px;
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(30px, calc(18px + 2.5vw), 54px);
	font-weight: 600;
	line-height: 1.03;
	letter-spacing: -.038em;
}

.difenair-entete-domaines__texte {
	max-width: 820px;
	font-size: var(--wp--preset--font-size--corps-moyen);
	line-height: 1.62;
}

.difenair-entete-domaines__mention {
	margin-top: 6px;
	color: var(--wp--preset--color--accent);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	line-height: 17px;   /* relevé sur la maquette */
	letter-spacing: .04em;
}

/* Mention centrée de fin de bande. */
.difenair-note-centree {
	position: relative;
	z-index: 1;
	max-width: 860px;
	margin: 40px auto 0;
	font-size: 16.5px;
	line-height: 1.62;
	text-align: center;
}

/* En-tête du parcours : titre à gauche, intention à droite. */
.difenair-entete-parcours {
	position: relative;
	z-index: 1;
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 56px;
}

.difenair-entete-parcours > * {
	margin-block: 0;
}

.difenair-entete-parcours__titres {
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.difenair-entete-parcours__titres > * {
	margin-block: 0;
}

.difenair-entete-parcours__titre {
	margin: 0;
	color: #141618;
	font-size: clamp(28px, calc(18px + 2.0833vw), 48px);
	font-weight: 600;
	line-height: 1.05;
	letter-spacing: -.035em;
}

.difenair-entete-parcours__texte {
	max-width: 460px;
	margin: 0;
	font-size: 15.5px;
	line-height: 1.62;
}

/* Bandeau de bilan qui ferme le parcours. */
.difenair-bilan-parcours {
	position: relative;
	z-index: 1;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 40px;
	margin-top: 56px;
	padding: 28px 32px;
	border-radius: 16px;
	background: #141618;
}

.difenair-bilan-parcours > * {
	margin-block: 0;
}

.difenair-bilan-parcours__propos {
	display: flex;
	align-items: center;
	gap: 24px;
}

.difenair-bilan-parcours__propos > * {
	margin-block: 0;
}

.difenair-bilan-parcours__compte {
	flex: none;
	color: var(--wp--preset--color--accent);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--surtitre);
	line-height: 15px;   /* relevé sur la maquette */
	letter-spacing: .12em;
}

.difenair-bilan-parcours__texte {
	max-width: 640px;
	font-size: var(--wp--preset--font-size--corps-moyen);
	line-height: 1.55;
}

/* Bouton orange compact, dans un bandeau de bilan. */
.difenair-bouton-orange-compact {
	flex: none;
	margin: 0;
}

.difenair-bouton-orange-compact .wp-block-button__link {
	padding: 15px 26px;
	border-radius: 999px;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--corps);
	font-weight: 600;
	line-height: 18.5px;   /* relevé sur la maquette */
	transition: all .22s ease;
}

.difenair-bouton-orange-compact .wp-block-button__link:hover,
.difenair-bouton-orange-compact .wp-block-button__link:focus-visible {
	background: var(--wp--preset--color--accent-hover);
	color: var(--wp--preset--color--contrast);
	transform: translateY(-2px);
	box-shadow: 0 12px 26px rgb(224 92 11 / 34%);
}

/* Intervention sur site : deux moitiés dans un même cadre arrondi. */
.difenair-duo-encadre {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: stretch;
	gap: 0;
	overflow: clip;
	border: 1px solid rgb(255 255 255 / 10%);
	border-radius: 20px;
	background: #141618;
}

.difenair-duo-encadre > * {
	margin-block: 0;
}

.difenair-duo-encadre__colonne {
	display: flex;
	flex-direction: column;
	gap: 20px;
	padding: 56px 52px 52px;
}

.difenair-duo-encadre__colonne > * {
	margin-block: 0;
}

.difenair-duo-encadre__titre {
	margin: 8px 0 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(28px, calc(17px + 2.2917vw), 50px);
	font-weight: 600;
	line-height: 1.02;
	letter-spacing: -.038em;
	text-wrap: pretty;
}

.difenair-duo-encadre__chapeau {
	margin-block-start: 8px;
	font-size: 18px;
	line-height: 1.55;
}

/* Le second paragraphe est un peu plus aéré que le corps courant. */
.difenair-duo-encadre__texte {
	line-height: 1.65;
}

/* La phrase de conclusion est détachée par un filet orange. */
.difenair-duo-encadre__citation {
	margin-block-start: 18px;
	padding-left: 20px;
	border-left: 2px solid var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--corps-grand);
	font-weight: 500;
	line-height: 1.5;
}

/* Photo pleine hauteur, légendée par-dessus, avec la zone couverte. */
.difenair-photo-zone {
	position: relative;
	min-height: 620px;
	margin: 0;
	overflow: clip;
	background: var(--wp--preset--color--base);
}

.difenair-photo-zone img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.difenair-photo-zone__voile {
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, rgb(20 22 24 / 85%) 0%, rgb(20 22 24 / 10%) 34%, rgb(20 22 24 / 55%) 100%);
}

.difenair-photo-zone figcaption {
	position: absolute;
	right: 36px;
	bottom: 36px;
	left: 36px;
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 24px;
	color: var(--wp--preset--color--body);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--surtitre);
	line-height: 15px;   /* relevé sur la maquette */
	letter-spacing: .1em;
}

.difenair-photo-zone__zone {
	color: var(--wp--preset--color--contrast);
	text-align: right;
}

.difenair-photo-zone__nom {
	display: block;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(22px, calc(18px + 0.8333vw), 30px);
	font-weight: 600;
	line-height: 1.2333333;   /* rapport relevé sur la maquette : la taille
	                       variant avec la fenêtre, l'interligne la suit */
	letter-spacing: -.03em;
}

/* Bouton orange large, en bas d'une colonne. */
.difenair-bouton-orange-large {
	align-self: flex-start;
	margin-top: 20px;
}

.difenair-bouton-orange-large .wp-block-button__link {
	padding: 17px 28px;
	border-radius: 999px;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--corps);
	font-weight: 600;
	line-height: 18.5px;   /* relevé sur la maquette */
	transition: all .22s ease;
}

.difenair-bouton-orange-large .wp-block-button__link:hover,
.difenair-bouton-orange-large .wp-block-button__link:focus-visible {
	background: var(--wp--preset--color--accent-hover);
	color: var(--wp--preset--color--contrast);
	transform: translateY(-2px);
	box-shadow: 0 12px 26px rgb(224 92 11 / 34%);
}

/* CBS Groupe : la bande empile quatre ensembles, séparés de 14 px en plus
   de leurs propres écarts. Les marges sont réaffirmées ici : sans cela, celle
   que WordPress place entre blocs frères l'emporterait. */
.difenair-colonne-cbs {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.difenair-colonne-cbs > * {
	margin-block-start: 0;
}

.difenair-colonne-cbs > .difenair-entete-cbs {
	margin-block-start: 26px;
}

.difenair-colonne-cbs > .difenair-trio-cbs {
	margin-block-start: 44px;
}

.difenair-colonne-cbs > .difenair-tuiles {
	margin-block-start: 52px;
}

/* CBS Groupe : titre à gauche, logo et frise à droite. */
.difenair-entete-cbs {
	display: grid;
	grid-template-columns: 1fr 460px;
	align-items: end;
	gap: 64px;
	margin-top: 26px;
}

.difenair-entete-cbs > * {
	margin-block: 0;
}

.difenair-entete-cbs__titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(30px, calc(17px + 2.7083vw), 56px);
	font-weight: 600;
	line-height: 1.02;
	letter-spacing: -.04em;
	text-wrap: pretty;
}

.difenair-entete-cbs__colonne {
	display: flex;
	flex-direction: column;
	gap: 22px;
	padding-bottom: 8px;
}

.difenair-entete-cbs__colonne > * {
	margin-block: 0;
}

/* Le logo du groupe est posé sur une pastille blanche. */
.difenair-entete-cbs__logo {
	align-self: flex-start;
	margin: 0;
	padding: 16px 22px;
	border-radius: 12px;
	background: var(--wp--preset--color--contrast);
}

.difenair-entete-cbs__logo img {
	display: block;
	width: auto;
	height: 52px;
}

/* Frise des deux dates, reliées par un dégradé qui va vers l'orange. */
.difenair-frise {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	line-height: 16px;   /* relevé sur la maquette */
}

.difenair-frise__debut {
	color: var(--wp--preset--color--text-muted);
}

.difenair-frise__fin {
	color: var(--wp--preset--color--contrast);
}

.difenair-frise__trait {
	flex: 1;
	height: 1px;
	background: linear-gradient(90deg, rgb(255 255 255 / 20%), var(--wp--preset--color--accent));
}

.difenair-frise__point {
	display: block;
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
	box-shadow: 0 0 0 5px rgb(224 92 11 / 22%);
}

/* Trois colonnes sous un filet : deux textes et une carte. */
.difenair-trio-cbs {
	display: grid;
	grid-template-columns: 1fr 1fr 400px;
	align-items: start;
	gap: 48px;
	margin-top: 44px;
	padding-top: 34px;
	border-top: 1px solid rgb(255 255 255 / 14%);
}

.difenair-trio-cbs > * {
	margin-block: 0;
}

.difenair-trio-cbs__chapeau {
	font-size: 18px;
	line-height: 1.55;
}

.difenair-trio-cbs__texte {
	line-height: 1.68;
}

.difenair-carte-bordee {
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding: 30px 30px 32px;
	border: 1px solid rgb(255 255 255 / 12%);
	border-radius: 16px;
	background: var(--wp--preset--color--surface);
}

.difenair-carte-bordee > * {
	margin-block: 0;
}

.difenair-carte-bordee__titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(18px, calc(16px + 0.4167vw), 22px);
	font-weight: 600;
	line-height: 1.18;
	letter-spacing: -.025em;
}

/* Bouton blanc compact, au bas d'une carte. */
.difenair-bouton-blanc {
	align-self: flex-start;
	margin-top: 8px;
}

.difenair-bouton-blanc .wp-block-button__link {
	padding: 15px 26px;
	border-radius: 999px;
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	font-size: var(--wp--preset--font-size--corps);
	font-weight: 600;
	line-height: 18.5px;   /* relevé sur la maquette */
	transition: all .22s ease;
}

.difenair-bouton-blanc .wp-block-button__link::after {
	content: " ↗";
	color: var(--wp--preset--color--accent);
}

.difenair-bouton-blanc .wp-block-button__link:hover,
.difenair-bouton-blanc .wp-block-button__link:focus-visible {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
	transform: translateY(-2px);
}

.difenair-bouton-blanc .wp-block-button__link:hover::after,
.difenair-bouton-blanc .wp-block-button__link:focus-visible::after {
	color: var(--wp--preset--color--contrast);
}

/* Formation et zones : texte à gauche, grille ou carte à droite. */
.difenair-duo-large {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: start;
	gap: 64px;
}

.difenair-duo-large.is-carte {
	grid-template-columns: 1fr 620px;
	align-items: center;
}

.difenair-duo-large > * {
	margin-block: 0;
}

.difenair-duo-large__colonne {
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.difenair-duo-large__colonne > * {
	margin-block: 0;
}

.difenair-duo-large__titre {
	margin: 0;
	color: #141618;
	font-size: clamp(27px, calc(17.5px + 1.9792vw), 46px);
	font-weight: 600;
	line-height: 1.06;
	letter-spacing: -.035em;
}

.difenair-duo-large__titre.is-clair {
	color: var(--wp--preset--color--contrast);
}

.difenair-duo-large__chapeau {
	font-size: 16.5px;
	line-height: 1.62;
}

.difenair-duo-large__mention {
	color: var(--wp--preset--color--accent);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	line-height: 17px;   /* relevé sur la maquette */
	letter-spacing: .04em;
}

/* Adresse de l'atelier, sous les textes des zones d'intervention. */
.difenair-adresse {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-top: 8px;
	color: #8e9297;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	line-height: 16px;   /* relevé sur la maquette */
	letter-spacing: .04em;
}

.difenair-adresse__debut {
	color: var(--wp--preset--color--accent);
}

/* ---------------------------------------------------------------------------
   Contact
   --------------------------------------------------------------------------- */

/* Cartes de coordonnées : adresse, téléphone et adresses e-mail. */
.difenair-coordonnees {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr 1fr 1.2fr;
	align-items: stretch;
	gap: 14px;
	margin-top: 52px;
}

.difenair-coordonnees > * {
	margin-block: 0;
}

.difenair-carte-contact {
	display: flex;
	flex-direction: column;
	gap: 18px;
	padding: 32px;
	border: 1px solid rgb(255 255 255 / 10%);
	border-radius: 16px;
	background: rgb(255 255 255 / 4.5%);
	transition: all .25s ease;
}

.difenair-carte-contact:hover {
	border-color: rgb(224 92 11 / 40%);
	background: rgb(255 255 255 / 7%);
}

.difenair-carte-contact > * {
	margin-block: 0;
}

.difenair-carte-contact__libelle {
	color: var(--wp--preset--color--accent);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--surtitre);
	line-height: 15px;   /* relevé sur la maquette */
	letter-spacing: .12em;
}

.difenair-carte-contact__adresse {
	font-size: clamp(19px, calc(16.5px + 0.5208vw), 24px);
	font-weight: 500;
	line-height: 1.35;
	letter-spacing: -.02em;
	color: var(--wp--preset--color--contrast);
}

/* Le lien se cale en bas de carte, quelle que soit la hauteur du contenu. */
.difenair-carte-contact__lien {
	margin-top: auto;
	color: var(--wp--preset--color--accent);
	font-size: var(--wp--preset--font-size--corps-petit);
	font-weight: 600;
	line-height: 18px;   /* relevé sur la maquette */
}

.difenair-carte-contact__telephone {
	font-family: var(--wp--preset--font-family--mono);
	font-size: clamp(21px, calc(17.5px + 0.7292vw), 28px);
	font-weight: 600;
	line-height: 1.3214286;   /* rapport relevé sur la maquette : la taille
	                       variant avec la fenêtre, l'interligne la suit */
	letter-spacing: -.02em;
	color: var(--wp--preset--color--contrast);
}

.difenair-carte-contact__telephone a {
	color: inherit;
}

.difenair-horaires {
	display: flex;
	flex-direction: column;
	gap: 6px;
	margin-top: auto;
}

.difenair-horaires > * {
	margin-block: 0;
}

.difenair-horaires__libelle {
	color: var(--wp--preset--color--text-dim);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	line-height: 14.5px;   /* relevé sur la maquette */
	letter-spacing: .12em;
}

.difenair-horaires__detail {
	font-size: var(--wp--preset--font-size--corps-petit);
	line-height: 1.6;
}

/* Liste des adresses e-mail, une par service. */
.difenair-adresses {
	display: flex;
	flex-direction: column;
	margin: 0;
	padding: 0;
	list-style: none;
}

.difenair-adresses__adresse {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 20px;
	margin: 0;
	padding: 13px 0;
	border-block-start: 1px solid rgb(255 255 255 / 12%);
}

.difenair-adresses__adresse:last-child {
	border-block-end: 1px solid rgb(255 255 255 / 12%);
}

.difenair-adresses__service {
	color: var(--wp--preset--color--text-muted);
	font-size: var(--wp--preset--font-size--corps-petit);
	line-height: 18px;   /* relevé sur la maquette */
}

.difenair-adresses__courriel {
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--corps);
	font-weight: 500;
	line-height: 18.5px;   /* relevé sur la maquette */
}

/* Liens vers les réseaux, en pastilles. */
.difenair-reseaux {
	display: flex;
	gap: 10px;
	margin-top: auto;
}

.difenair-reseaux .wp-block-button__link {
	padding: 11px 18px;
	border: 1px solid rgb(255 255 255 / 16%);
	border-radius: 999px;
	background: rgb(255 255 255 / 8%);
	color: var(--wp--preset--color--contrast);
	font-size: 14px;
	font-weight: 500;
	line-height: 17px;   /* relevé sur la maquette */
	transition: all .22s ease;
}

.difenair-reseaux .wp-block-button__link:hover,
.difenair-reseaux .wp-block-button__link:focus-visible {
	border-color: var(--wp--preset--color--accent);
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
}

/* Nous écrire : le propos à gauche, le formulaire à droite. */
.difenair-duo-formulaire {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: start;
	gap: 96px;
}

.difenair-duo-formulaire > * {
	margin-block: 0;
}

/* Le propos reste à l'écran pendant qu'on remplit le formulaire. */
.difenair-duo-formulaire__colonne {
	position: sticky;
	top: 48px;
	display: flex;
	flex-direction: column;
	gap: 22px;
}

.difenair-duo-formulaire__colonne > * {
	margin-block: 0;
}

.difenair-duo-formulaire__titre {
	margin: 12px 0 0;
	color: var(--wp--preset--color--surface);
	font-size: clamp(30px, calc(17px + 2.7083vw), 56px);
	font-weight: 500;
	line-height: 1.03;
	letter-spacing: -.04em;
	text-wrap: pretty;
}

.difenair-duo-formulaire__texte {
	max-width: 520px;
	font-size: var(--wp--preset--font-size--corps-grand);
	line-height: 1.6;
}

/* Rappel des coordonnées directes, sous le propos. */
.difenair-contact-direct {
	display: flex;
	flex-direction: column;
	gap: 14px;
	margin-top: 20px;
	padding-top: 26px;
	border-top: 1px solid rgb(57 59 63 / 16%);
}

.difenair-contact-direct > * {
	margin-block: 0;
}

.difenair-contact-direct__libelle {
	color: #8a8e94;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	line-height: 14.5px;   /* relevé sur la maquette */
	letter-spacing: .14em;
}

.difenair-contact-direct__telephone {
	font-family: var(--wp--preset--font-family--mono);
	font-size: clamp(20px, calc(17px + 0.625vw), 26px);
	font-weight: 600;
	line-height: 1.3076923;   /* rapport relevé sur la maquette : la taille
	                       variant avec la fenêtre, l'interligne la suit */
	letter-spacing: -.02em;
	color: var(--wp--preset--color--surface);
}

.difenair-contact-direct__telephone a,
.difenair-contact-direct__courriel a {
	color: inherit;
}

.difenair-contact-direct__courriel {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--corps-moyen);
	font-weight: 500;
	line-height: 19.5px;   /* relevé sur la maquette */
}

/* Formulaire
   -------------------------------------------------------------------------
   Le balisage vient de Contact Form 7 : le greffon enveloppe chaque champ
   dans un <span>, qu'on passe en bloc pour que les étiquettes se comportent
   comme des colonnes. La mise en paragraphes automatique, elle, est
   désactivée dans inc/formulaires.php. */

.difenair-contact .wpcf7-form {
	display: flex;
	flex-direction: column;
	gap: 20px;
	padding: 44px;
	border: 1px solid rgb(57 59 63 / 12%);
	border-radius: 20px;
	background: var(--wp--preset--color--contrast);
}

.difenair-contact .wpcf7-form-control-wrap {
	display: block;
}

.difenair-formulaire__ligne {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 20px;
}

.difenair-formulaire__champ {
	display: flex;
	flex-direction: column;
	gap: 9px;
}

.difenair-formulaire__libelle {
	color: #8a8e94;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	line-height: 14.5px;   /* relevé sur la maquette */
	letter-spacing: .12em;
}

/* Les champs sont des éléments « en ligne » par défaut : leur conteneur
   réserve alors la place des jambages sous eux, et le champ de message s'en
   trouve sept pixels trop haut. */
.difenair-contact input[type="text"],
.difenair-contact input[type="tel"],
.difenair-contact input[type="email"],
.difenair-contact textarea {
	display: block;
	box-sizing: border-box;
	width: 100%;
	padding: 15px 16px;
	border: 1px solid rgb(57 59 63 / 16%);
	border-radius: 10px;
	background: var(--wp--preset--color--light);
	color: var(--wp--preset--color--surface);
	font-family: inherit;
	font-size: 15.5px;
	transition: border-color .2s ease;
}

.difenair-contact textarea {
	line-height: 1.55;
	resize: vertical;
}

.difenair-contact input:focus,
.difenair-contact textarea:focus {
	border-color: var(--wp--preset--color--accent);
	outline: 2px solid rgb(224 92 11 / 30%);
	outline-offset: 1px;
}

.difenair-formulaire__pied {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 24px;
	margin-top: 6px;
}

.difenair-formulaire__mention {
	color: #a3a7ac;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	line-height: 14.5px;   /* relevé sur la maquette */
	letter-spacing: .1em;
}

.difenair-contact input[type="submit"] {
	padding: 17px 30px;
	border: 0;
	border-radius: 999px;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
	font-family: inherit;
	font-size: 15.5px;
	font-weight: 600;
	line-height: 19px;   /* relevé sur la maquette */
	cursor: pointer;
	transition: all .22s ease;
}

.difenair-contact input[type="submit"]:hover,
.difenair-contact input[type="submit"]:focus-visible {
	background: var(--wp--preset--color--accent-hover);
	transform: translateY(-2px);
	box-shadow: 0 12px 26px rgb(224 92 11 / 34%);
}

/* Le greffon ajoute une roue d'attente pendant l'envoi. */
.difenair-contact .wpcf7-spinner {
	margin: 0 0 0 12px;
}

/* Contact Form 7 place dans le formulaire deux éléments sans hauteur : le
   jeu de champs cachés et la zone de réponse, vide tant que rien n'a été
   envoyé. Laissés en place, ils ajoutent chacun un écart de colonne. */
.difenair-contact .wpcf7-form > .hidden-fields-container,
.difenair-contact .wpcf7-response-output {
	display: none;
}

.difenair-contact .wpcf7-form.sent .wpcf7-response-output,
.difenair-contact .wpcf7-form.invalid .wpcf7-response-output,
.difenair-contact .wpcf7-form.failed .wpcf7-response-output,
.difenair-contact .wpcf7-form.aborted .wpcf7-response-output,
.difenair-contact .wpcf7-form.spam .wpcf7-response-output,
.difenair-contact .wpcf7-form.unaccepted .wpcf7-response-output,
.difenair-contact .wpcf7-form.payment-required .wpcf7-response-output {
	display: block;
}

/* Messages de validation et de confirmation. */
.difenair-contact .wpcf7-not-valid-tip {
	margin-top: 6px;
	color: #c4341a;
	font-size: var(--wp--preset--font-size--corps-petit);
	line-height: 1.5;
}

.difenair-contact .wpcf7-response-output {
	margin: 0;
	padding: 16px 18px;
	border: 1px solid rgb(57 59 63 / 20%);
	border-radius: 12px;
	font-size: var(--wp--preset--font-size--corps);
	line-height: 1.5;
}

.difenair-contact .wpcf7-form.sent .wpcf7-response-output {
	border-color: rgb(46 125 50 / 40%);
	background: rgb(46 125 50 / 8%);
}

.difenair-contact .wpcf7-form.invalid .wpcf7-response-output,
.difenair-contact .wpcf7-form.failed .wpcf7-response-output {
	border-color: rgb(196 52 26 / 40%);
	background: rgb(196 52 26 / 8%);
}

/* Zone d'intervention : la carte et la photo, bord à bord. */
.difenair-zone-visuels {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0;
	margin-top: 80px;
}

.difenair-zone-visuels > * {
	margin-block: 0;
}

.difenair-zone-visuels__carte,
.difenair-zone-visuels__photo {
	position: relative;
	height: 520px;
	margin: 0;
	overflow: hidden;
	background: #2f3134;
}

.difenair-zone-visuels__carte iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.difenair-zone-visuels__photo img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.difenair-zone-visuels__photo figcaption {
	position: absolute;
	bottom: 26px;
	left: 32px;
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	line-height: 14.5px;   /* relevé sur la maquette */
	letter-spacing: .14em;
	text-shadow: 0 2px 12px rgb(0 0 0 / 60%);
}

/* Mention de bas de bande, sur fond gris. */
.difenair-note-zone {
	position: relative;
	z-index: 1;
	max-width: 760px;
	margin: 34px 0 0;
	font-size: var(--wp--preset--font-size--corps);
	line-height: 1.7;
	color: #a9acb0;
}

/* ---------------------------------------------------------------------------
   Planifier une intervention
   --------------------------------------------------------------------------- */

/* En-tête d'une bande de formulaire : titre à gauche, intention à droite. */
.difenair-entete-formulaire {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: end;
	gap: 96px;
	margin-top: 48px;
}

.difenair-entete-formulaire > * {
	margin-block: 0;
}

.difenair-entete-formulaire__titre {
	margin: 0;
	color: #141618;
	font-size: var(--wp--preset--font-size--titre-2);
	font-weight: 500;
	line-height: 1.03;
	letter-spacing: -.04em;
	text-wrap: pretty;
}

.difenair-entete-formulaire__titre.is-clair {
	color: var(--wp--preset--color--contrast);
}

.difenair-entete-formulaire__texte {
	margin: 0;
	padding-bottom: 8px;
	font-size: var(--wp--preset--font-size--corps-grand);
	line-height: 1.6;
}

/* Manifeste réglementaire : intitulé et titre à gauche, un long texte à
   droite. Même grille que l'en-tête des pages métier, sans les paragraphes
   secondaires. */
.difenair-entete-metier__texte-seul {
	margin: 0;
	padding-top: 8px;
	font-size: var(--wp--preset--font-size--corps-moyen);
	line-height: 1.62;
}

/* Votre demande : le propos à gauche, les raisons à droite. */
.difenair-duo-demande {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: start;
	gap: 96px;
}

.difenair-duo-demande > * {
	margin-block: 0;
}

.difenair-duo-demande__colonne {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.difenair-duo-demande__colonne > * {
	margin-block: 0;
}

/* Le trait orange qui ouvre la colonne de gauche. */
.difenair-duo-demande__colonne.is-trait::before {
	content: "";
	display: block;
	width: 40px;
	height: 2px;
	background: var(--wp--preset--color--accent);
}

.difenair-duo-demande__titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(26px, calc(18px + 1.6667vw), 42px);
	font-weight: 600;
	line-height: 1.08;
	letter-spacing: -.03em;
}

.difenair-duo-demande__sous-titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(21px, calc(17.5px + 0.7292vw), 28px);
	font-weight: 500;
	line-height: 1.2;
	letter-spacing: -.025em;
}

.difenair-duo-demande__texte {
	max-width: 520px;
	font-size: 16.5px;
	line-height: 1.62;
}

.difenair-duo-demande__libelle {
	color: var(--wp--preset--color--text-dim);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--surtitre);
	line-height: 15px;   /* relevé sur la maquette */
	letter-spacing: .12em;
}

/* Deux pastilles de contact, sous le propos. */
.difenair-contacts-pastilles {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 4px;
}

.difenair-contacts-pastilles .wp-block-button__link {
	padding: 13px 20px;
	border: 1px solid rgb(255 255 255 / 16%);
	border-radius: 999px;
	background: rgb(255 255 255 / 7%);
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--corps);
	font-weight: 500;
	line-height: 18.5px;   /* relevé sur la maquette */
	transition: all .22s ease;
}

/* Le second porte un numéro de téléphone : il est en monospace. */
.difenair-contacts-pastilles .wp-block-button:last-child .wp-block-button__link {
	font-family: var(--wp--preset--font-family--mono);
}

.difenair-contacts-pastilles .wp-block-button__link:hover,
.difenair-contacts-pastilles .wp-block-button__link:focus-visible {
	border-color: var(--wp--preset--color--accent);
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
}

/* ---------------------------------------------------------------------------
   Actualités — la liste

   Valeurs relevées sur actualites.html à 1440 px. La grille elle-même est un
   bloc Requête du cœur : c'est lui qui apporte la pagination et qui sait, sur
   une archive de catégorie, n'afficher que les articles de cette catégorie.
   On n'habille donc ici que ce qu'il produit.
   --------------------------------------------------------------------------- */

/* En-tête de la liste : titres à gauche, filtres à droite, sous un filet. */
.difenair-entete-actus {
	position: relative;
	z-index: 1;
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 40px;
	padding-bottom: 30px;
	border-bottom: 1px solid rgb(20 22 24 / 14%);
}

.difenair-entete-actus > * {
	margin-block: 0;
}

.difenair-entete-actus__titres {
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.difenair-entete-actus__titres > * {
	margin-block: 0;
}

.difenair-entete-actus .difenair-eyebrow {
	color: var(--wp--preset--color--neutral);
}

.difenair-entete-actus__titre {
	margin: 0;
	color: var(--wp--preset--color--surface-alt);
	font-size: clamp(27px, calc(17.5px + 1.9792vw), 46px);
	font-weight: 600;
	line-height: 1.05;
	letter-spacing: -.035em;
}

/* En-tête des archives et de la recherche.

   La maquette ne prévoit ni l'une ni l'autre : la composition reprend celle
   de la bannière des actualités, sans son introduction. */
.difenair-entete-archive {
	position: relative;
	z-index: 1;
}

.difenair-entete-archive > * {
	margin-block: 0;
}

.difenair-entete-archive__fil {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	line-height: 16px;   /* relevé sur la maquette */
	letter-spacing: .08em;
	color: var(--wp--preset--color--text-dim);
}

.difenair-entete-archive__fil a {
	color: var(--wp--preset--color--text-muted);
	text-decoration: none;
	transition: color .18s ease;
}

.difenair-entete-archive__fil a:hover,
.difenair-entete-archive__fil a:focus-visible {
	color: var(--wp--preset--color--contrast);
}

.difenair-entete-archive__titre {
	margin-block-start: 40px;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(34px, calc(15px + 3.9583vw), 72px);
	font-weight: 600;
	line-height: 1;
	letter-spacing: -.042em;
	text-wrap: pretty;
}

.difenair-entete-archive__texte {
	max-width: 860px;
	margin-block-start: 28px;
	color: var(--wp--preset--color--body);
	font-size: 18px;
	line-height: 1.58;
}

/* Grille des articles
   ------------------------------------------------------------------------- */

.difenair-grille-actus {
	position: relative;
	z-index: 1;
}

.difenair-grille-actus .wp-block-post-template {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 40px 28px;
	margin-top: 48px;
	padding: 0;
	list-style: none;
}

.difenair-grille-actus .wp-block-post {
	display: flex;
	flex-direction: column;
	gap: 18px;
	transition: transform .3s ease;
}

/* Sixième occurrence de la même chose : WordPress espace de 24 px tout bloc
   qui suit un frère. Ici il faut le remettre à plat DEUX fois — sur les
   cartes elles-mêmes, sinon toutes celles qui suivent la première descendent
   de 24 px et la rangée grandit d'autant ; et sur leur contenu. */
.difenair-grille-actus .wp-block-post-template > *,
.difenair-grille-actus .wp-block-post > * {
	margin-block: 0;
}

.difenair-grille-actus .wp-block-post:hover {
	transform: translateY(-6px);
}

.difenair-grille-actus .wp-block-post-featured-image {
	position: relative;
	margin: 0;
	overflow: clip;
	border-radius: 14px;
	background: #d9d5cf;   /* hors palette : le gris du cadre en attente */
	aspect-ratio: 16 / 10;
}

.difenair-grille-actus .wp-block-post-featured-image img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border-radius: 0;
	object-fit: cover;
}

.difenair-carte-actu__titre {
	margin: 0;
	font-size: clamp(19px, calc(17px + 0.4167vw), 23px);
	font-weight: 600;
	line-height: 1.18;
	letter-spacing: -.025em;
	text-wrap: pretty;
}

.difenair-carte-actu__titre a {
	color: var(--wp--preset--color--surface-alt);
	text-decoration: none;
}

/* Le bloc Extrait réunit le texte et le lien « Lire l'article » dans un même
   conteneur : c'est lui qui porte l'écart entre les deux. */
.difenair-carte-actu__texte {
	display: flex;
	flex-direction: column;
	gap: 18px;
	margin: 0;
	color: var(--wp--preset--color--neutral);
	font-size: var(--wp--preset--font-size--corps);
	line-height: 1.6;
}

.difenair-carte-actu__texte p {
	margin: 0;
}

.difenair-carte-actu__texte .wp-block-post-excerpt__more-text {
	margin: 0;
	/* 14,5 px de Schibsted : « normal » vaut 17,5 px, pas 18. Le demi-pixel
	   se retrouvait deux fois — une par rangée — dans la hauteur de la page. */
	line-height: 17.5px;
}

.difenair-carte-actu__texte .wp-block-post-excerpt__more-link {
	color: var(--wp--preset--color--surface-alt);
	font-size: var(--wp--preset--font-size--corps-petit);
	font-weight: 600;
	text-decoration: none;
}

.difenair-carte-actu__texte .wp-block-post-excerpt__more-link::after {
	color: var(--wp--preset--color--accent);
	content: " →";
}

/* Aucun article : le message remplace la grille. */
.difenair-grille-actus .wp-block-query-no-results {
	position: relative;
	z-index: 1;
	margin-top: 48px;
	color: var(--wp--preset--color--neutral);
	font-size: var(--wp--preset--font-size--corps-moyen);
}

/* Pagination
   -------------------------------------------------------------------------
   Le cœur produit trois éléments dans cet ordre : précédent, numéros,
   suivant. La marge automatique pousse les numéros et le suivant à droite,
   que le lien « précédent » existe ou non — sur la première page, il
   n'existe pas. */

.difenair-pagination-actus {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: 64px;
	padding-top: 26px;
	border-top: 1px solid rgb(20 22 24 / 14%);
}

.difenair-pagination-actus .wp-block-query-pagination-previous {
	margin-right: auto;
}

.difenair-pagination-actus .wp-block-query-pagination-numbers:first-child {
	margin-left: auto;
}

.difenair-pagination-actus .wp-block-query-pagination-numbers {
	display: flex;
	gap: 8px;
	margin-inline-end: 24px;
}

.difenair-pagination-actus .page-numbers {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 44px;
	height: 44px;
	border: 1px solid rgb(20 22 24 / 20%);
	border-radius: 50%;
	color: var(--wp--preset--color--surface-alt);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	line-height: 17px;   /* relevé sur la maquette */
	text-decoration: none;
	transition: all .2s ease;
}

.difenair-pagination-actus .page-numbers.current {
	border-color: var(--wp--preset--color--surface-alt);
	background: var(--wp--preset--color--surface-alt);
	color: var(--wp--preset--color--contrast);
}

.difenair-pagination-actus .page-numbers:not(.current):hover {
	border-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--accent);
}

.difenair-pagination-actus .wp-block-query-pagination-previous,
.difenair-pagination-actus .wp-block-query-pagination-next {
	color: var(--wp--preset--color--surface-alt);
	font-size: var(--wp--preset--font-size--corps);
	font-weight: 600;
	line-height: 19px;   /* relevé sur la maquette */
	text-decoration: none;
}

/* ---------------------------------------------------------------------------
   Article

   Valeurs relevées sur article.html à 1440 px. Le corps du texte est ce que
   le client écrit dans l'éditeur : on habille donc les blocs du cœur —
   titres, paragraphes, citation, image légendée — plutôt que d'imposer une
   structure qu'il faudrait reproduire à chaque article.
   --------------------------------------------------------------------------- */

/* Trois colonnes : le sommaire, le récit, la carte de contact. Celle de
   droite prend la place restante et s'y cale à droite. */
.difenair-article {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 260px minmax(0, 720px) 1fr;
	align-items: start;
	gap: 72px;
}

.difenair-article > * {
	margin-block: 0;
}

/* Le sommaire et le partage accompagnent la lecture. */
.difenair-article__cote {
	position: sticky;
	top: 32px;
	display: flex;
	flex-direction: column;
	gap: 28px;
}

.difenair-article__cote > * {
	margin-block: 0;
}

/* La colonne centrale réunit le récit et ses étiquettes ; l'écart entre les
   deux est celui du récit lui-même. */
.difenair-article__colonne {
	display: flex;
	flex-direction: column;
	gap: 24px;
}

.difenair-article__colonne > * {
	margin-block: 0;
}

/* Corps du récit
   ------------------------------------------------------------------------- */

.difenair-article__corps {
	display: flex;
	flex-direction: column;
	gap: 24px;
	color: var(--wp--preset--color--ink);
	font-size: 17.5px;
	line-height: 1.72;
}

/* Septième occurrence de la même chose : l'écart vient de « gap », pas des
   marges que WordPress place entre blocs frères. */
.difenair-article__corps > * {
	margin-block: 0;
}

/* Les écarts voulus par la maquette sont réaffirmés ici : ils s'ajoutent à
   celui de la colonne. */
.difenair-article__corps > h2 {
	margin-block-start: 24px;
	font-size: clamp(24px, calc(19px + 1.0417vw), 34px);
	font-weight: 600;
	line-height: 1.12;
	letter-spacing: -.03em;
	color: var(--wp--preset--color--surface-alt);

	/* Dégagement lorsqu'on arrive par un lien du sommaire. */
	scroll-margin-top: 32px;
}

.difenair-article__corps > h2:first-child {
	margin-block-start: 0;
}

/* L'encadré « à retenir » porte son propre écart : la remise à plat
   ci-dessus l'emporterait. */
.difenair-article__corps > .difenair-retenir {
	margin-block-start: 16px;
}

.difenair-article__corps > h3 {
	margin-block-start: 8px;
	font-size: 22px;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: -.025em;
	color: var(--wp--preset--color--surface-alt);
	scroll-margin-top: 32px;
}

/* Citation détachée par un filet orange. */
.difenair-article__corps > .wp-block-quote {
	margin-block: 20px;
	padding: 8px 0 8px 32px;
	border-left: 2px solid var(--wp--preset--color--accent);
	font-size: clamp(21px, calc(18.5px + 0.5208vw), 26px);
	font-style: normal;
	font-weight: 500;
	line-height: 1.38;
	letter-spacing: -.018em;
	color: var(--wp--preset--color--surface-alt);
}

.difenair-article__corps > .wp-block-quote p {
	margin: 0;
}

/* Image légendée. */
.difenair-article__corps > .wp-block-image {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin-block: 24px 8px;
}

.difenair-article__corps > .wp-block-image img {
	display: block;
	width: 100%;
	border-radius: 16px;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

.difenair-article__corps > .wp-block-image figcaption {
	margin: 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--surtitre);

	/* Pas d'interligne : celui du récit, 1,72, s'applique. Le figer à 15 px
	   raccourcissait la figure de cinq pixels. */
	letter-spacing: .08em;
	color: var(--wp--preset--color--text-dim);
	text-align: left;
}

/* Étiquettes de fin d'article
   ------------------------------------------------------------------------- */

.difenair-article__etiquettes {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-block-start: 24px;
	padding-top: 24px;
	border-top: 1px solid rgb(20 22 24 / 14%);
}

.difenair-article__etiquettes .wp-block-post-terms__separator {
	display: none;
}

.difenair-article__etiquettes a {
	padding: 8px 14px;
	border: 1px solid rgb(20 22 24 / 20%);
	border-radius: 999px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	line-height: 1.72;   /* celui du récit, dont elles ferment la colonne */
	letter-spacing: .06em;
	color: var(--wp--preset--color--neutral);
	text-decoration: none;
	text-transform: uppercase;
	transition: all .2s ease;
}

.difenair-article__etiquettes a:hover,
.difenair-article__etiquettes a:focus-visible {
	border-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--accent);
}

/* Carte de contact, à droite
   ------------------------------------------------------------------------- */

.difenair-carte-question {
	position: sticky;
	top: 32px;
	display: flex;
	justify-self: end;

	/* La maquette compte 300 px de contenu, hors retrait : la carte mesure
	   donc 358 px au total, et c'est cette largeur que la grille réserve. */
	box-sizing: content-box;
	width: 300px;
	flex-direction: column;
	gap: 16px;
	padding: 28px;
	border: 1px solid rgb(20 22 24 / 12%);
	border-radius: 16px;
	background: var(--wp--preset--color--contrast);
}

.difenair-carte-question > * {
	margin-block: 0;
}

.difenair-carte-question__libelle {
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--surtitre);
	line-height: 15px;   /* relevé sur la maquette */
	letter-spacing: .12em;
	color: var(--wp--preset--color--accent);
}

.difenair-carte-question__texte {
	font-size: 18px;
	font-weight: 600;
	line-height: 1.35;
	letter-spacing: -.015em;
	color: var(--wp--preset--color--surface-alt);
}

.difenair-carte-question__telephone {
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--corps-moyen);
	font-weight: 500;
	line-height: 21px;   /* relevé sur la maquette */
	color: var(--wp--preset--color--surface-alt);
}

.difenair-carte-question__telephone a {
	color: inherit;
	text-decoration: none;
}

.difenair-bouton-orange-petit {
	align-self: flex-start;
	margin: 0;
}

.difenair-bouton-orange-petit .wp-block-button__link {
	padding: 14px 22px;
	border-radius: 999px;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--corps-petit);
	font-weight: 600;
	line-height: 18px;   /* relevé sur la maquette */
	transition: all .22s ease;
}

.difenair-bouton-orange-petit .wp-block-button__link:hover,
.difenair-bouton-orange-petit .wp-block-button__link:focus-visible {
	background: var(--wp--preset--color--accent-hover);
	color: var(--wp--preset--color--contrast);
	transform: translateY(-2px);
}

/* Autres actualités
   ------------------------------------------------------------------------- */

.difenair-entete-aussi {
	position: relative;
	z-index: 1;
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 40px;
	padding-bottom: 28px;
	border-bottom: 1px solid rgb(255 255 255 / 14%);
}

.difenair-entete-aussi > * {
	margin-block: 0;
}

.difenair-entete-aussi__titres {
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.difenair-entete-aussi__titres > * {
	margin-block: 0;
}

.difenair-entete-aussi__titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(26px, calc(18px + 1.6667vw), 42px);
	font-weight: 600;
	line-height: 1.06;
	letter-spacing: -.035em;
}

.difenair-entete-aussi__lien {
	flex: none;
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--corps);
	font-weight: 600;
	line-height: 19px;   /* relevé sur la maquette */
	text-decoration: none;
}

.difenair-entete-aussi__lien::after {
	color: var(--wp--preset--color--accent);
	content: " →";
}

.difenair-autres-actus .wp-block-post-template {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 28px;
	margin-top: 44px;
	padding: 0;
	list-style: none;
}

.difenair-autres-actus .wp-block-post-template > *,
.difenair-autres-actus .wp-block-post > * {
	margin-block: 0;
}

.difenair-autres-actus .wp-block-post {
	display: flex;
	flex-direction: column;
	gap: 18px;
	transition: transform .3s ease;
}

.difenair-autres-actus .wp-block-post:hover {
	transform: translateY(-6px);
}

.difenair-autres-actus .wp-block-post-featured-image {
	position: relative;
	margin: 0;
	overflow: clip;
	border-radius: 14px;
	background: var(--wp--preset--color--base);
	aspect-ratio: 16 / 10;
}

.difenair-autres-actus .wp-block-post-featured-image img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border-radius: 0;
	object-fit: cover;
}

.difenair-carte-aussi__titre {
	margin: 0;
	font-size: clamp(19px, calc(17.5px + 0.3125vw), 22px);
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: -.025em;
	text-wrap: pretty;
}

.difenair-carte-aussi__titre a {
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

/* ---------------------------------------------------------------------------
   Page introuvable

   La maquette ne prévoit pas de page 404 : rien ici ne descend d'un relevé.
   La composition reprend les proportions des en-têtes de section du site —
   surtitre à pastille, grand titre, chapeau — et referme sur les raccourcis
   dessinés pour « Planifier une intervention ». Le décor de la bande est
   celui de la section « accompagnement », emprunté plutôt que redessiné :
   un halo débordant en haut à gauche, qui convient à un contenu calé à
   gauche.
   --------------------------------------------------------------------------- */

.difenair-erreur {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 20px;
}

.difenair-erreur > * {
	margin-block: 0;
}

/* Les écarts voulus sont réaffirmés au même niveau : la règle ci-dessus les
   emporterait sinon. Ils s'ajoutent à l'écart de la colonne. */
/* La colonne cale ses enfants à gauche, ce qui va aux pastilles et au
   surtitre mais rétrécit la grille des raccourcis à la largeur de son texte.
   Elle reprend la sienne, plafonnée par le bloc à 900 px. */
.difenair-erreur > .difenair-raccourcis {
	align-self: stretch;
	margin-block-start: 32px;
}

.difenair-erreur > .difenair-erreur__libelle {
	margin-block-start: 28px;
}

.difenair-erreur .difenair-eyebrow {
	color: var(--wp--preset--color--accent);
	letter-spacing: .1em;
}

.difenair-erreur__titre {
	max-width: 880px;
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(31px, calc(17.5px + 2.8125vw), 58px);
	font-weight: 600;
	line-height: 1.04;
	letter-spacing: -.038em;
	text-wrap: pretty;
}

.difenair-erreur__chapeau {
	max-width: 620px;
	font-size: 16.5px;
	line-height: 1.62;
}

.difenair-erreur__libelle {
	color: var(--wp--preset--color--text-dim);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--surtitre);
	line-height: 15px;   /* même valeur que les autres intitulés du site */
	letter-spacing: .12em;
}

/* ---------------------------------------------------------------------------
   Confort de lecture et accessibilité
   --------------------------------------------------------------------------- */

:where(h1, h2, h3, h4) {
	text-wrap: pretty;
}

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

/* ---------------------------------------------------------------------------
   Actualités

   Les trois derniers articles, en cartes anthracite. Un filet coiffe la
   section et sépare l'en-tête du reste de la page.
   Valeurs relevées sur la maquette à 1440 px.
   --------------------------------------------------------------------------- */

/* Cinquième occurrence de la même chose : WordPress espace de 24 px tout bloc
   qui suit un frère. Dans une grille, cette marge décale les cellules et fausse
   la hauteur de rangée. Elle est à remettre à plat sur CHAQUE conteneur que
   l'on transforme en grille ou en pile — ici la grille des cartes elle-même,
   pas seulement leur contenu. */
.difenair-actualites__entete > *,
.difenair-actualites__titres > *,
.difenair-actualites__corps > *,
.difenair-actualites .wp-block-post-template > *,
.difenair-actualites .wp-block-post > * {
	margin-block-start: 0;
}

.difenair-actualites__entete {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 40px;
	padding-top: 44px;
	border-top: 1px solid rgb(255 255 255 / 14%);
}

.difenair-actualites__titres {
	display: flex;
	max-width: 660px;
	flex-direction: column;
	gap: 14px;
}

.difenair-actualites__titre {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(24px, calc(17px + 1.4583vw), 38px);
	font-weight: 600;
	line-height: 1.1;
	letter-spacing: -.03em;
}

.difenair-actualites__intro {
	margin: 0;
	color: var(--wp--preset--color--text-muted);
	font-size: 15.5px;
	line-height: 1.62;
}

/* Bouton à contour clair. */
.difenair-actualites__actions {
	flex: none;
	margin: 0;
}

.difenair-bouton-contour .wp-block-button__link {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 14px 24px;
	border: 1px solid rgb(255 255 255 / 30%);
	border-radius: 999px;
	background: transparent;
	color: var(--wp--preset--color--contrast);
	font-size: 14.5px;
	font-weight: 600;
	line-height: normal;
	white-space: nowrap;
	transition: all .22s ease;
}

.difenair-bouton-contour .wp-block-button__link::after {
	color: var(--wp--preset--color--accent);
	content: "↗";
	transition: color .22s ease;
}

.difenair-bouton-contour .wp-block-button__link:hover,
.difenair-bouton-contour .wp-block-button__link:focus-visible {
	border-color: var(--wp--preset--color--accent);
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
}

.difenair-bouton-contour .wp-block-button__link:hover::after,
.difenair-bouton-contour .wp-block-button__link:focus-visible::after {
	color: var(--wp--preset--color--contrast);
}

/* Grille des cartes. */
.difenair-actualites .wp-block-post-template {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: repeat(3, 1fr);

	gap: 14px;
	margin-top: 32px;
	padding: 0;
	list-style: none;
}

.difenair-actualites .wp-block-post {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border-radius: 14px;
	background: var(--wp--preset--color--surface);
	transition: transform .3s ease, box-shadow .3s ease;
}

.difenair-actualites .wp-block-post:hover {
	box-shadow: 0 22px 44px rgb(0 0 0 / 50%);
	transform: translateY(-6px);
}

.difenair-actualites .wp-block-post-featured-image {
	height: 190px;
	margin: 0;
}

.difenair-actualites .wp-block-post-featured-image img {
	width: 100%;
	height: 100%;
	border-radius: 0;
	object-fit: cover;
}

.difenair-actualites__corps {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: 24px;
}

/* Rubrique et date sur une seule ligne, séparées d'un point médian. */
.difenair-actualites__meta {
	display: flex;
	align-items: baseline;
	gap: 8px;
	color: var(--wp--preset--color--accent);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11.5px;
	line-height: var(--difenair-mono-interligne);
	text-transform: uppercase;
}

.difenair-actualites__meta > * {
	margin: 0;
}

.difenair-actualites__meta a {
	color: inherit;
	text-decoration: none;
}

.difenair-actualites__meta .wp-block-post-date::before {
	content: "· ";
}

.difenair-actualites .wp-block-post-title {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: 19px;
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: -.02em;
}

.difenair-actualites .wp-block-post-title a {
	color: inherit;
	text-decoration: none;
}

/* Le gabarit prévoit « 2 lignes environ ». On les impose plutôt que de
   dépendre de la longueur du texte saisi : les cartes gardent ainsi la même
   allure quoi qu'écrive le client. */
.difenair-actualites .wp-block-post-excerpt {
	display: -webkit-box;
	overflow: hidden;
	margin: 0;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	color: var(--wp--preset--color--text-muted);
	font-size: 14.5px;
	line-height: 1.6;
}

.difenair-actualites .wp-block-post-excerpt p {
	margin: 0;
}

.difenair-actualites .wp-block-post-excerpt__more-text {
	display: none;
}

/* ---------------------------------------------------------------------------
   Appel à l'action

   La bande de fin de page : photo d'atelier très voilée, halo orange montant
   du bas, texte centré et deux boutons. Elle revient sur six pages du site,
   avec des textes différents — d'où la composition « Appel à l'action »
   proposée dans l'éditeur.
   Valeurs relevées sur la maquette à 1440 px.
   --------------------------------------------------------------------------- */

/* La photo de fond et le halo appartiennent à la section, pas à cette bande :
   ils doivent couvrir aussi ses espacements. Voir le bloc Section, réglages
   « Image de fond » et fond « Halo orange par le bas ». */
.difenair-cta > *,
.difenair-cta__contenu > * {
	margin-block-start: 0;
}

.difenair-cta__contenu {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 24px;
	text-align: center;
}

.difenair-cta__contenu .difenair-eyebrow {
	color: var(--wp--preset--color--accent);
	letter-spacing: .1em;
}

.difenair-cta__titre {
	max-width: 1000px;
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-size: clamp(31px, calc(17.5px + 2.8125vw), 58px);
	font-weight: 600;
	line-height: 1.04;
	letter-spacing: -.038em;
}

.difenair-cta__texte {
	max-width: 720px;
	margin: 0;
	color: #c9c7c4;
	font-size: 17px;
	line-height: 1.6;
}

/* Les deux boutons se calent sur la même hauteur : celui de droite est en
   monospace, dont les métriques donnent une ligne plus haute. */
.difenair-cta__actions {
	align-items: stretch;
	gap: 12px;
	margin-top: 10px;
}

.difenair-cta__actions .wp-block-button {
	display: flex;
}

.difenair-cta__actions .wp-block-button__link {
	padding: 18px 34px;
	border-radius: 999px;
	font-size: 16px;
	font-weight: 600;
	line-height: normal;
	transition: all .22s ease;
}

.difenair-cta__actions .difenair-bouton-plein .wp-block-button__link {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
}

.difenair-cta__actions .difenair-bouton-plein .wp-block-button__link:hover,
.difenair-cta__actions .difenair-bouton-plein .wp-block-button__link:focus-visible {
	background: var(--wp--preset--color--accent-hover);
	box-shadow: 0 14px 30px rgb(224 92 11 / 34%);
	transform: translateY(-2px);
}

/* Le second bouton porte un numéro de téléphone : il est en monospace. */
.difenair-cta__actions .difenair-bouton-voile .wp-block-button__link {
	border: 1px solid rgb(255 255 255 / 30%);
	background: rgb(255 255 255 / 10%);
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--mono);
}

.difenair-cta__actions .difenair-bouton-voile .wp-block-button__link:hover,
.difenair-cta__actions .difenair-bouton-voile .wp-block-button__link:focus-visible {
	border-color: var(--wp--preset--color--contrast);
	background: rgb(255 255 255 / 20%);
	transform: translateY(-2px);
}

/* ---------------------------------------------------------------------------
   Pages légales

   Mentions légales, confidentialité, CGV : la maquette ne les dessine pas.
   Ce sont de longs textes de loi, qu'on lit rarement d'un bout à l'autre et
   qu'on parcourt en cherchant une section. La composition ne cherche donc
   qu'une chose : la lisibilité. Une colonne unique de 760 px — la largeur de
   lecture du corps d'article, à quelques pixels près —, la même échelle de
   corps et le même interligne, des titres numérotés bien détachés.

   Rien n'est repris de « difenair-article__corps » : ce dernier vit dans une
   grille à trois colonnes et n'a ni liste à puces ni numérotation. Les deux
   compositions se ressemblent sans dépendre l'une de l'autre.
   --------------------------------------------------------------------------- */

.difenair-legal {
	max-width: 760px;
	margin-inline: auto;
}

.difenair-legal__entete {
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding-block-end: 40px;
	border-block-end: 1px solid rgb(57 59 63 / 12%);
}

.difenair-legal__entete > * {
	margin-block: 0;
}

.difenair-legal__titre {
	font-size: clamp(32px, calc(23px + 1.875vw), 50px);
	font-weight: 600;
	line-height: 1.08;
	letter-spacing: -.035em;
	color: var(--wp--preset--color--surface-alt);
	text-wrap: balance;
}

.difenair-legal__date {
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	line-height: 1.4;
	letter-spacing: 0.12em;
	color: var(--wp--preset--color--label);
	text-transform: uppercase;
}

.difenair-legal__corps {
	display: flex;
	flex-direction: column;
	gap: 20px;
	margin-block-start: 48px;
	color: var(--wp--preset--color--ink);
	font-size: 17.5px;
	line-height: 1.72;
}

/* Neuvième occurrence de la même chose : l'écart vient de « gap », pas des
   marges que WordPress place entre blocs frères. */
.difenair-legal__corps > * {
	margin-block: 0;
}

/* Un titre de section respire davantage avant qu'après : il annonce ce qui
   suit, il ne conclut pas ce qui précède. */
.difenair-legal__corps > h2 {
	margin-block-start: 28px;
	font-size: clamp(21px, calc(18.5px + 0.5208vw), 26px);
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: -.025em;
	color: var(--wp--preset--color--surface-alt);
	scroll-margin-top: 32px;
}

.difenair-legal__corps > h2:first-child {
	margin-block-start: 0;
}

.difenair-legal__corps > .wp-block-list {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 0;
	padding-inline-start: 0;
	list-style: none;
}

/* La puce est dessinée plutôt qu'héritée : un tiret orange, comme les listes
   des pages métier, aligné sur la première ligne quel que soit le retour. */
.difenair-legal__corps > .wp-block-list li {
	position: relative;
	padding-inline-start: 22px;
}

.difenair-legal__corps > .wp-block-list li::before {
	content: "";
	position: absolute;
	inset-block-start: 0.72em;
	inset-inline-start: 0;
	width: 10px;
	height: 1px;
	background: var(--wp--preset--color--accent);
}

.difenair-legal__corps a {
	color: var(--wp--preset--color--surface-alt);
	text-decoration-color: var(--wp--preset--color--accent);
	text-underline-offset: 3px;
}

/* ---------------------------------------------------------------------------
   Écrans étroits

   L'adaptation de toutes les compositions décrites plus haut. Elle est
   regroupée ici plutôt que dispersée : ce n'est pas une suite de retouches
   isolées mais une même décision appliquée à chaque bande — les vis-à-vis
   s'empilent, les grilles perdent des colonnes, les photos raccourcissent.
   Les quatre seuils sont décrits en tête de fichier ; chaque bloc porte les
   siennes en fin de son propre fichier.
   --------------------------------------------------------------------------- */

/* 1440 px — portable
   -------------------------------------------------------------------------
   Rien ne s'empile encore : seule la barre de navigation, qui ne tiendrait
   plus sur une ligne, se resserre. */

@media (width < 1440px) {

	/* Valeurs relevées, pas choisies : à 1281 px — la première largeur sous
	   laquelle le menu déroulant prend le relais — l'en-tête a besoin de
	   1171 px pour ses trois groupes, et il en a 1185. */
	.difenair-header {
		gap: 20px;
	}

	.difenair-nav.wp-block-navigation:not(.wp-block-navigation__container) {
		gap: 4px;
	}

	.difenair-nav .wp-block-navigation__container {
		gap: 4px;
	}

	.difenair-nav .wp-block-navigation-item__content {
		padding: 11px 10px;
	}

	.difenair-button--compact .wp-block-button__link {
		padding: 13px 18px;
	}
}

/* 1280 px — la navigation passe au menu déroulant
   -------------------------------------------------------------------------
   Six entrées en pilule ne tiennent plus. Le cœur de WordPress ne bascule
   qu'à 600 px : on avance son seuil plutôt que d'écrire une seconde
   navigation. C'est le même bloc, le même menu, le même balisage.

   L'en-tête reprend en même temps sa place dans le flux. Posé par-dessus la
   bannière, il obligerait celle-ci à lui réserver une hauteur que rien ne
   permet de connaître d'avance, l'en-tête pouvant passer sur deux lignes. */

@media (width <= 1280px) {

	.wp-site-blocks:has(> main > .difenair-hero:first-child) > header.wp-block-template-part,
	.wp-site-blocks:has(> main > * > .difenair-hero:first-child) > header.wp-block-template-part {
		position: static;
	}

	.difenair-hero {
		--difenair-hero-entete: 0px;
	}

	/* Trois éléments répartis d'un bord à l'autre laissaient le bouton du
	   menu au milieu de la barre. La marque tient le bord gauche, tout le
	   reste se regroupe à droite, le menu en dernier. */
	.difenair-header {
		justify-content: flex-end;
	}

	.difenair-header .wp-block-site-logo {
		margin-right: auto;
	}

	.difenair-nav {
		order: 1;
	}

	.difenair-header__actions {
		order: 2;
	}

	/* La pilule n'a plus lieu d'être autour d'un seul bouton. */
	.difenair-nav.wp-block-navigation:not(.wp-block-navigation__container) {
		padding: 0;
		border: 0;
		background: none;
	}

	.difenair-nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
		display: none;
	}

	.difenair-nav .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex;
		color: var(--wp--preset--color--contrast);
	}

	/* Trois colonnes dont deux de largeur fixe : 360 et 420 px de part et
	   d'autre ne laissent plus rien au récit du milieu, qui se met alors à
	   déborder de la grille. Ces deux bandes s'empilent donc avant les
	   autres. */
	.difenair-trio-histoire,
	.difenair-trio-cbs {
		grid-template-columns: 1fr;
		gap: 40px;
	}

	/* La carte de mission remontait sur la bande précédente : empilée, elle
	   n'a plus rien à recouvrir. */
	.difenair-carte-mission {
		transform: none;
	}

	/* La carte des départements occupait 620 px fixes : elle prend
	   désormais la moitié, comme sa colonne de texte. */
	.difenair-duo-large.is-carte {
		grid-template-columns: 1fr 1fr;
	}

	/* Dans l'habillage plein écran, les entrées retrouvent de l'air. */
	.difenair-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
		padding: 10px 0;
		font-size: var(--wp--preset--font-size--titre-5);
	}

	/* La pastille qui marquait la page en cours devenait, sur ce fond plein,
	   une pilule flottante au milieu du vide : la couleur suffit. */
	.difenair-nav .wp-block-navigation__responsive-container.is-menu-open .current-menu-item > .wp-block-navigation-item__content,
	.difenair-nav .wp-block-navigation__responsive-container.is-menu-open .current_page_item > .wp-block-navigation-item__content {
		background: none;
		color: var(--wp--preset--color--accent);
	}
}

/* 1024 px — tablette
   -------------------------------------------------------------------------
   Le seuil principal : toutes les dispositions en vis-à-vis s'empilent.

   Elles sont réunies en une seule règle parce que c'est une seule décision.
   Ce qui suit ne reprend que les écarts et les alignements propres à
   certaines d'entre elles. */

@media (width <= 1024px) {

	.difenair-manifeste,
	.difenair-entete-metier,
	.difenair-bilan,
	.difenair-vis-a-vis,
	.difenair-duo-liste,
	.difenair-entete-large,
	.difenair-corps-visuel,
	.difenair-grille-faq,
	.difenair-duo-carte,
	.difenair-entete-trait,
	.difenair-implantation__contenu,
	.difenair-duo,
	.difenair-duo-photo,
	.difenair-duo-encadre,
	.difenair-entete-cbs,
	.difenair-duo-large,
	.difenair-duo-large.is-carte,
	.difenair-coordonnees,
	.difenair-duo-formulaire,
	.difenair-zone-visuels,
	.difenair-entete-formulaire,
	.difenair-duo-demande,
	.difenair-engagements {
		grid-template-columns: 1fr;
	}

	/* Empilées, deux colonnes n'ont plus besoin de l'écart qui les séparait
	   côte à côte : il devient celui qui les sépare l'une sous l'autre. */
	.difenair-vis-a-vis,
	.difenair-entete-large,
	.difenair-grille-faq,
	.difenair-entete-trait,
	.difenair-duo-large,
	.difenair-entete-formulaire {
		gap: 40px;
	}

	.difenair-duo-liste,
	.difenair-corps-visuel,
	.difenair-duo-carte,
	.difenair-duo-formulaire,
	.difenair-duo-demande {
		gap: 44px;
	}

	.difenair-manifeste,
	.difenair-entete-metier,
	.difenair-bilan,
	.difenair-entete-cbs {
		gap: 28px;
	}

	/* Les colonnes alignées par le bas ou par le centre n'ont plus de
	   vis-à-vis sur quoi s'aligner. */
	.difenair-entete-large,
	.difenair-entete-cbs,
	.difenair-entete-formulaire,
	.difenair-duo-large.is-carte,
	.difenair-duo-photo {
		align-items: start;
	}

	/* Les colonnes qui restaient à l'écran pendant que la suite défilait
	   n'ont plus rien à côté d'elles : elles reprennent le fil. */
	.difenair-duo-liste__intro,
	.difenair-duo-formulaire__colonne {
		position: static;
	}

	/* Les en-têtes en vis-à-vis sont des boîtes souples, pas des grilles. */
	.difenair-entete-duo,
	.difenair-entete-millesime,
	.difenair-entete-parcours,
	.difenair-actualites__entete {
		flex-direction: column;
		align-items: flex-start;
		gap: 28px;
	}

	.difenair-bilan-parcours,
	.difenair-formulaire__pied {
		flex-direction: column;
		align-items: flex-start;
	}

	.difenair-bilan-parcours__propos {
		align-items: flex-start;
		gap: 16px;
	}

	/* Le repère d'implantation était détaché par un filet vertical ; empilé,
	   c'est un filet horizontal qui le sépare. */
	.difenair-implantation__reperes {
		padding-top: 24px;
		padding-left: 0;
		border-top: 1px solid rgb(255 255 255 / 22%);
		border-left: 0;
	}

	.difenair-implantation,
	.difenair-implantation__contenu {
		min-height: 0;
	}

	.difenair-implantation__contenu {
		padding: 40px 32px;
	}

	.difenair-manifeste {
		margin-top: 0;
		margin-bottom: 56px;
		padding-block: 0;
	}

	/* Les grilles d'articles passent à deux colonnes : les trois derniers de
	   l'accueil, la liste des actualités et les renvois de fin d'article. */
	.difenair-actualites .wp-block-post-template,
	.difenair-grille-actus .wp-block-post-template,
	.difenair-autres-actus .wp-block-post-template {
		grid-template-columns: repeat(2, 1fr);
	}

	/* Actualités : titres et filtres l'un sous l'autre. */
	.difenair-entete-actus,
	.difenair-entete-aussi {
		flex-direction: column;
		align-items: flex-start;
		gap: 28px;
	}

	/* Article : le sommaire passe au-dessus du récit, la carte de contact en
	   dessous. Aucun des deux n'accompagne plus la lecture — il n'y a plus de
	   marge où les poser. */
	.difenair-article {
		grid-template-columns: 1fr;
		gap: 44px;
	}

	.difenair-article__cote,
	.difenair-carte-question {
		position: static;
	}

	.difenair-carte-question {
		box-sizing: border-box;
		justify-self: stretch;
		width: 100%;
	}

	.difenair-entete-archive__titre {
		margin-block-start: 28px;
	}

	.difenair-footer__grille {
		grid-template-columns: 1fr 1fr;
		gap: 36px 32px;
	}

	/* Le pied de page glissant suppose qu'il tienne dans la fenêtre : une
	   fois ses colonnes empilées, il est trop haut et sa fin resterait
	   inaccessible. Il redevient un pied de page ordinaire. */
	.difenair-pied-glissant .wp-site-blocks > main {
		margin-bottom: 0;
		box-shadow: none;
	}

	.difenair-pied-glissant .wp-site-blocks > footer {
		position: static;
		margin-top: 0;
	}

	/* Hauteurs de photo : elles sont posées à la main dans la maquette et
	   n'ont aucune raison de tenir sur un écran deux fois moins large. */
	.difenair-corps-visuel__photo {
		height: 420px;
	}

	.difenair-corps-visuel.is-haute {
		--difenair-corps-visuel-photo: 460px;
	}

	.difenair-photo-zone {
		min-height: 440px;
	}

	.difenair-duo__visuel {
		min-height: 320px;
	}

	.difenair-zone-visuels__carte,
	.difenair-zone-visuels__photo {
		height: 400px;
	}

	.difenair-zone-visuels {
		margin-top: 48px;
	}
}

/* 640 px — mobile
   -------------------------------------------------------------------------
   Une seule colonne partout, et les retraits intérieurs se resserrent : à
   cette largeur, 44 px de chaque côté d'une carte lui laissent moins de
   place qu'ils ne lui en donnent. */

@media (width <= 640px) {

	/* L'en-tête tient sur deux lignes : la marque et le menu, puis le
	   téléphone et le bouton. */
	.difenair-header__actions {
		flex-basis: 100%;
		justify-content: space-between;
	}

	/* Un numéro de téléphone coupé en deux ne se lit plus comme un numéro. */
	.difenair-phone {
		white-space: nowrap;
	}

	.difenair-button--compact .wp-block-button__link {
		padding: 12px 16px;
		font-size: 13px;
	}

	.difenair-actualites .wp-block-post-template,
	.difenair-grille-actus .wp-block-post-template,
	.difenair-autres-actus .wp-block-post-template,
	.difenair-footer__grille,
	.difenair-formulaire__ligne {
		grid-template-columns: 1fr;
	}

	/* La pagination tient sur deux lignes. */
	.difenair-pagination-actus {
		flex-wrap: wrap;
		gap: 16px;
	}

	.difenair-pagination-actus .wp-block-query-pagination-numbers {
		margin-inline-end: 12px;
	}

	.difenair-article__corps > .wp-block-quote {
		padding-left: 20px;
	}

	.difenair-footer__grille {
		gap: 32px;
	}

	/* Les intitulés posés en regard de leur valeur passent l'un sous
	   l'autre plutôt que de se partager une ligne trop courte. */
	.difenair-adresses__adresse,
	.difenair-legendes,
	.difenair-photo-zone figcaption {
		flex-direction: column;
		align-items: flex-start;
		gap: 6px;
	}

	.difenair-photo-zone__zone {
		text-align: left;
	}

	.difenair-liens-souliges {
		flex-wrap: wrap;
		gap: 20px;
	}

	.difenair-engagements__cellule {
		gap: 18px;
		padding: 28px 24px 26px;
	}

	.difenair-implantation__contenu {
		padding: 32px 24px;
	}

	.difenair-legal__entete {
		padding-block-end: 32px;
	}

	.difenair-legal__corps {
		margin-block-start: 36px;
	}

	.difenair-carte-sombre,
	.difenair-carte-mission {
		padding: 28px 24px;
	}

	.difenair-duo-encadre__colonne {
		padding: 32px 24px;
	}

	.difenair-carte-contact,
	.difenair-carte-bordee {
		padding: 24px;
	}

	.difenair-contact .wpcf7-form {
		gap: 16px;
		padding: 24px 20px;
	}

	.difenair-bilan-parcours {
		gap: 24px;
		padding: 24px 20px;
	}

	/* Les boutons prennent la largeur plutôt que de se serrer à deux par
	   ligne, et leurs libellés tiennent. */
	.difenair-contact input[type="submit"] {
		width: 100%;
	}

	.difenair-corps-visuel__photo {
		height: 300px;
	}

	.difenair-corps-visuel.is-haute {
		--difenair-corps-visuel-photo: 320px;
	}

	.difenair-photo-zone {
		min-height: 340px;
	}

	.difenair-photo-zone figcaption {
		right: 24px;
		bottom: 24px;
		left: 24px;
	}

	.difenair-duo__visuel {
		min-height: 240px;
	}

	.difenair-zone-visuels__carte,
	.difenair-zone-visuels__photo {
		height: 300px;
	}
}
