/* ==========================================================================
   Portised : compléments à theme.json
   Le trait, le point carré, l'en-tête fixe, les grilles, les animations.
   ========================================================================== */

:root {
	--bleu: var(--wp--preset--color--bleu, #14233F);
	--orange: var(--wp--preset--color--orange, #FF6600);
	--blanc: #FFFFFF;
	--acier: var(--wp--preset--color--acier, #5C6168);
	--calque: var(--wp--preset--color--calque, #E4E7E8);
	--pt: var(--orange);
	--trait-x: max(16px, calc(50% - 668px));
	--section: var(--wp--preset--spacing--60, 96px);
}

/* ---------- Base ---------- */

html { scroll-padding-top: 96px; }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }

.wp-site-blocks > * { margin-block: 0; }
.wp-block-post-content > .alignfull,
.wp-block-post-content > .alignfull + *,
main > .alignfull,
main > .alignfull + * { margin-block-start: 0; margin-block-end: 0; }

h1, h2, .wp-block-heading, .wp-block-post-title { font-stretch: 72%; text-wrap: balance; }
h1, .wp-block-post-title { font-stretch: 70%; }
h3, h4 { font-stretch: 80%; }

:where(a, button, summary, input, select, textarea):focus-visible {
	outline: 3px solid currentColor;
	outline-offset: 3px;
}

.has-bleu-background-color { --pt: var(--orange); }
.has-orange-background-color { --pt: var(--blanc); }
.has-bleu-background-color a:where(:not(.wp-element-button)) { color: inherit; }

/* ---------- Le point carré ---------- */

.pt {
	display: inline-block;
	width: .14em;
	height: .161em;
	margin-left: .04em;
	overflow: hidden;
	color: transparent;
	vertical-align: baseline;
	background: var(--pt);
}

.is-style-surtitre {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.35;
	font-stretch: 100%;
	letter-spacing: .01em;
}
.is-style-surtitre::before {
	content: "";
	flex: none;
	width: 9px;
	height: 10px;
	margin-top: .3em;
	background: var(--pt);
}
h2.is-style-surtitre, h3.is-style-surtitre { font-size: 22px; font-stretch: 85%; }
h2.is-style-surtitre::before, h3.is-style-surtitre::before { margin-top: .25em; }

.is-style-chapeau { font-size: var(--wp--preset--font-size--moyen); line-height: 1.5; max-width: 34em; }

/* Listes : puces carrées par défaut. */
ul.wp-block-list:not(.is-style-sans-puce) { list-style: none; padding-left: 0; }
ul.wp-block-list:not(.is-style-sans-puce) > li { position: relative; padding-left: 24px; }
ul.wp-block-list:not(.is-style-sans-puce) > li + li { margin-top: 6px; }
ul.wp-block-list:not(.is-style-sans-puce) > li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .6em;
	width: 8px;
	height: 9px;
	background: var(--pt);
}
ul.wp-block-list.is-style-lignes { border-top: 3px solid currentColor; }
ul.wp-block-list.is-style-lignes > li { padding: 20px 0 20px 28px; border-bottom: 1px solid currentColor; font-size: 19px; line-height: 1.45; }
ul.wp-block-list.is-style-lignes > li + li { margin-top: 0; }
ul.wp-block-list.is-style-lignes > li::before { top: calc(20px + .5em); }
ul.is-style-sans-puce { list-style: none; padding-left: 0; }

/* ---------- Boutons ---------- */

.wp-block-button__link { display: inline-flex; align-items: center; gap: 14px; min-height: 54px; box-sizing: border-box; }
.wp-block-button:not(.is-style-lien):not(.is-style-outline) .wp-block-button__link::after {
	content: "";
	flex: none;
	width: 9px;
	height: 10px;
	background: var(--orange);
	transition: transform .25s ease;
}
.wp-block-button:not(.is-style-lien):not(.is-style-outline) .wp-block-button__link.has-orange-background-color::after { background: var(--bleu); }
.wp-block-button__link.has-orange-background-color:hover { background-color: #FF7A1F !important; color: var(--bleu) !important; }
.wp-block-button:not(.is-style-lien) .wp-block-button__link:hover::after,
.wp-block-button:not(.is-style-lien) .wp-block-button__link:focus-visible::after { transform: translateX(6px); }

.wp-block-button.is-style-lien .wp-block-button__link {
	background: none !important;
	color: inherit !important;
	padding: 0 !important;
	min-height: 44px;
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 5px;
}

/* ---------- Grilles, sections, jalons ---------- */

.is-style-grille-bleue,
.is-style-grille-orange { position: relative; z-index: 3; background-size: 32px 32px; }
.is-style-grille-bleue {
	background-image: linear-gradient(rgba(255,255,255,.06) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.06) 1px, transparent 1px);
	background-attachment: fixed;
}
.is-style-grille-orange {
	background-image: linear-gradient(rgba(0,0,0,.075) 1px, transparent 1px), linear-gradient(90deg, rgba(0,0,0,.075) 1px, transparent 1px);
}

main.has-trait { position: relative; }
/* Encadré « Réalisé avec notre réseau de partenaires » : le texte respire à côté du trait orange. */
.note-partenaire { padding: 4px 0 4px 18px; }
.note-partenaire > p { margin: 0; }
/* Appel à l'action final : le titre prend toujours toute la ligne, boutons et téléphone passent dessous, quelle que soit sa longueur. */
.is-style-grille-orange > .alignwide.is-layout-flex > .wp-block-heading { flex-basis: 100%; text-wrap: pretty; }
/* (pretty plutôt que balance : la première ligne se remplit, sans mot orphelin sur la seconde.) */
.is-style-jalon { position: relative; }
/* Le carré du jalon suit la marge haute réellement choisie pour la section (il reste en face du titre). */
.is-style-jalon[style*="padding-top:var(--wp--preset--spacing--40)"] { --jalon-haut: var(--wp--preset--spacing--40); }
.is-style-jalon[style*="padding-top:var(--wp--preset--spacing--50)"] { --jalon-haut: var(--wp--preset--spacing--50); }
.is-style-jalon[style*="padding-top:var(--wp--preset--spacing--70)"] { --jalon-haut: var(--wp--preset--spacing--70); }
.is-style-jalon[style*="padding-top:40px"] { --jalon-haut: 40px; }
/* Gabarit « Page » rempli de sections pleine largeur (Nos métiers, Secteurs…) : la page s'efface derrière ses sections. */
.is-style-jalon:has(> .wp-block-post-content > .alignfull:first-child) { padding-top: 0 !important; }
.is-style-jalon:has(> .wp-block-post-content > .alignfull:last-child) { padding-bottom: 0 !important; }
.is-style-jalon:has(> .wp-block-post-content > .alignfull:first-child)::before { display: none; }
@media (min-width: 1100px) {
	main.has-trait::before {
		content: "";
		position: absolute;
		top: 0;
		bottom: 0;
		left: calc(var(--trait-x) + 5px);
		width: 2px;
		background: var(--orange);
		transform-origin: top;
		pointer-events: none;
		z-index: 2; /* au-dessus des fonds gris et bleus des sections, sous les grilles du haut et du bas de page */
	}
	.is-style-jalon::before {
		content: "";
		position: absolute;
		z-index: 2;
		left: calc(var(--trait-x) + 1px);
		top: calc(var(--jalon-haut, var(--section)) + 12px);
		width: 10px;
		height: 11px;
		background: var(--orange);
	}
}

/* Ligne de métier : se remplit d'orange au survol, toute la ligne est cliquable. */
.is-style-ligne-metier {
	position: relative;
	border-bottom: 1px solid currentColor;
	margin: 0 -12px !important;
	padding: 28px 12px !important;
	background-image: linear-gradient(var(--orange), var(--orange));
	background-repeat: no-repeat;
	background-position: left center;
	background-size: 0% 100%;
	transition: background-size .35s ease;
}
.is-style-ligne-metier a { color: inherit; text-decoration: none; }
.is-style-ligne-metier .wp-block-heading a::after { content: ""; position: absolute; inset: 0; }
/* Liens vers les sous-pages (Podcast, Vidéo, Agence GEO), cliquables au-dessus de la ligne. */
.is-style-ligne-metier p a { position: relative; z-index: 1; font-weight: 700; text-decoration: underline; text-decoration-color: var(--orange); text-decoration-thickness: 2px; text-underline-offset: 4px; }
.is-style-ligne-metier:hover p a, .is-style-ligne-metier:focus-within p a { text-decoration-color: currentColor; }
.is-style-ligne-metier:hover,
.is-style-ligne-metier:focus-within { background-size: 100% 100%; }
.is-style-ligne-metier + .is-style-ligne-metier { margin-top: 0 !important; }

/* Carte cliquable (secteurs, prestations). */
.is-style-carte { position: relative; }
.is-style-carte a { color: inherit; text-decoration: none; }
.is-style-carte a::after { content: ""; position: absolute; inset: 0; }
.is-style-carte:hover .wp-block-heading,
.is-style-carte:focus-within .wp-block-heading { text-decoration: underline; text-decoration-color: var(--orange); text-decoration-thickness: 3px; text-underline-offset: 6px; }

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

header.wp-block-template-part {
	position: sticky;
	top: var(--wp-admin--admin-bar--height, 0px);
	z-index: 50;
}
.site-head__in { padding-block: 22px; }
.site-head .portised-logo__svg { display: block; height: 46px; width: auto; }
.site-head .portised-logo__slogan { display: block; margin-top: 6px; font-size: 13px; font-weight: 500; line-height: 1.2; overflow: hidden; white-space: nowrap; }
.site-head .wp-block-navigation { gap: 30px; }
.site-head .wp-block-navigation .wp-block-navigation-item { position: relative; }
.site-head .wp-block-navigation .wp-block-navigation-item__content { padding-block: 10px; }
.site-head .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: -4px;
	width: 7px;
	height: 8px;
	margin-left: -3.5px;
	background: var(--orange);
	transform: scale(0);
	transition: transform .2s ease;
}
.site-head .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content:hover::after,
.site-head .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content:focus-visible::after,
.site-head .wp-block-navigation__container > .current-menu-item > .wp-block-navigation-item__content::after,
.site-head .wp-block-navigation__container > .wp-block-navigation-item > [aria-current="page"]::after { transform: scale(1); }
.lien-externe > .wp-block-navigation-item__content::before {
	content: "";
	order: 2;
	width: 12px;
	height: 12px;
	margin-left: 6px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M5 2h7v7M12 2L3 11' fill='none' stroke='black' stroke-width='1.8'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M5 2h7v7M12 2L3 11' fill='none' stroke='black' stroke-width='1.8'/%3E%3C/svg%3E") center / contain no-repeat;
}
.lien-externe > .wp-block-navigation-item__content { display: inline-flex; align-items: center; font-weight: 500; }
.site-head .bouton-contact .wp-block-button__link { min-height: 44px; padding: 10px 20px; font-size: 16px; }
.site-head .bouton-contact .wp-block-button__link::after { display: none; }

/* Le menu passe en burger sous 960 px (WordPress le fait d'origine sous 600 px). */
@media (max-width: 959px) {
	.site-head .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }
	.site-head .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }
}
@media (max-width: 480px) {
	.site-head .portised-logo__slogan { display: none; }
	.site-head .portised-logo__svg { height: 38px; }
	.site-head .bouton-contact .wp-block-button__link { padding: 8px 14px; }
}
.wp-block-navigation__responsive-container-open { position: relative; padding: 8px; }
.wp-block-navigation__responsive-container-open::after {
	content: "";
	position: absolute;
	right: 4px;
	bottom: 8px;
	width: 6px;
	height: 7px;
	background: var(--orange);
}
.wp-block-navigation__responsive-container.is-menu-open { padding: 24px clamp(16px, 4vw, 56px) 40px !important; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { padding-top: 56px; align-items: stretch !important; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { gap: 0 !important; width: 100%; align-items: stretch !important; justify-content: flex-start !important; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	width: 100%;
	align-items: flex-start !important;
	border-bottom: 1px solid rgba(255,255,255,.18);
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	display: flex;
	width: 100%;
	justify-content: flex-start;
	padding: 16px 0 !important;
	font-size: 34px;
	font-weight: 800;
	font-stretch: 72%;
	line-height: 1;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content::after { display: none !important; }
.wp-block-navigation__responsive-container.is-menu-open .lien-externe .wp-block-navigation-item__content { font-size: 22px; font-weight: 600; font-stretch: 90%; }
.wp-block-navigation__responsive-container.is-menu-open .menu-contact { border-bottom: 0; margin-top: 24px; }
.wp-block-navigation__responsive-container.is-menu-open .menu-contact .wp-block-navigation-item__content { box-sizing: border-box; align-items: center; justify-content: center; min-height: 54px; padding: 0 28px !important; background: var(--orange); color: var(--bleu); font-size: 18px; font-weight: 700; font-stretch: 100%; border-radius: 2px; }
.site-head .wp-block-navigation__container > .menu-contact { display: none; }
.is-menu-open .wp-block-navigation__container > .menu-contact { display: flex; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:hover { color: var(--orange); }

/* En-tête : se resserre au défilement (navigateurs récents). */
@keyframes portised-resserre { to { padding-block: 10px; } }
@keyframes portised-logo-petit { to { height: 36px; } }
@keyframes portised-slogan-out { to { opacity: 0; height: 0; margin-top: 0; } }
@keyframes portised-filet { to { box-shadow: 0 2px 0 var(--orange), 0 8px 20px rgba(10,18,34,.22); } }
@supports (animation-timeline: scroll()) {
	@media (prefers-reduced-motion: no-preference) {
		header.wp-block-template-part .site-head { animation: portised-filet linear both; animation-timeline: scroll(root); animation-range: 0 120px; }
		.site-head__in { animation: portised-resserre linear both; animation-timeline: scroll(root); animation-range: 0 120px; }
		.site-head .portised-logo__svg { animation: portised-logo-petit linear both; animation-timeline: scroll(root); animation-range: 0 120px; }
		.site-head .portised-logo__slogan { animation: portised-slogan-out linear both; animation-timeline: scroll(root); animation-range: 0 80px; }
	}
}

/* ---------- Logo ---------- */

.portised-logo a { color: inherit; text-decoration: none; display: inline-block; }
.portised-logo__svg { display: block; height: auto; max-width: 100%; }
.portised-logo__points { fill: var(--logo-point, var(--orange)); }
.has-orange-background-color .portised-logo { --logo-point: var(--bleu); }

/* ---------- Fil d'Ariane ---------- */

.portised-fil { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; font-size: 14px; }
.portised-fil a { color: inherit; }
.portised-fil i { display: inline-block; width: 5px; height: 6px; background: var(--pt); }

/* ---------- Pictogrammes ---------- */

.portised-picto { line-height: 0; }
@keyframes portised-dessin { to { stroke-dashoffset: 0; } }
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.portised-dessin * { stroke-dasharray: 1; stroke-dashoffset: 1; animation: portised-dessin linear both; animation-timeline: view(); animation-range: entry 15% cover 45%; }
	}
}

/* Pages secteur : grand pictogramme dans le bandeau, à droite du titre (ajouté par inc/filters.php). Masqué sur mobile. */
.picto-entete { display: none; }
@media (min-width: 1000px) {
	.entree:has(> .picto-entete) { --picto: clamp(190px, 20vw, 280px); position: relative; }
	.entree:has(> .picto-entete) > :not(.picto-entete) { max-width: min(900px, calc(100% - var(--picto) - 80px)) !important; }
	.entree > .picto-entete {
		display: flex;
		align-items: center;
		position: absolute;
		top: 0;
		bottom: 0;
		right: 0;
		left: auto;
		max-width: none !important;
		margin: 0 !important;
		color: var(--orange);
		animation: none;
	}
	.picto-entete svg { width: var(--picto); height: auto; }
}
@media (min-width: 1000px) and (prefers-reduced-motion: no-preference) {
	.picto-entete .portised-dessin * { stroke-dasharray: 1; stroke-dashoffset: 1; animation: portised-dessin 1.6s cubic-bezier(.45, 0, .2, 1) .35s both; animation-timeline: auto; }
}

/* ---------- Réalisations ---------- */

/* Grille de réalisations : 4 colonnes sur ordinateur, 2 sur tablette, 1 sur mobile (4 vignettes = toujours des lignes complètes). */
.portised-reals { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 40px 32px; }
@media (max-width: 1099px) { .portised-reals { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 599px) { .portised-reals { grid-template-columns: 1fr; } }
.portised-reals.a-une { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.portised-reals.a-une .est-une { grid-column: span 2; grid-row: span 2; }
/* La grande carte occupe toute la hauteur des deux petites : l'image s'étire, le texte reste en bas. */
.portised-reals.a-une .est-une a { height: 100%; }
.portised-reals.a-une .est-une .portised-reals__visuel { position: relative; flex: 1 1 auto; aspect-ratio: auto; min-height: 320px; }
.portised-reals.a-une .est-une .portised-reals__visuel img { position: absolute; inset: 0; }
.portised-reals__extrait { font-size: 17px; line-height: 1.5; opacity: .85; max-width: 62ch; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
@media (max-width: 1099px) {
	.portised-reals.a-une { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.portised-reals.a-une .est-une { grid-column: 1 / -1; grid-row: auto; }
	.portised-reals.a-une .est-une .portised-reals__visuel { flex: none; aspect-ratio: 16 / 10; min-height: 0; }
}
@media (max-width: 599px) { .portised-reals.a-une { grid-template-columns: 1fr; } }
.portised-reals__carte a { display: flex; flex-direction: column; gap: 10px; color: inherit; text-decoration: none; }
.portised-reals__visuel { display: block; aspect-ratio: 16 / 10; overflow: hidden; background: #C9CDD0; }
.has-bleu-background-color .portised-reals__visuel { background: var(--wp--preset--color--ardoise); }
.portised-reals__visuel img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.portised-reals__carte a:hover img { transform: scale(1.03); }
.portised-reals__vide { display: block; width: 100%; height: 100%; }
.portised-reals__meta { font-size: 14px; opacity: .75; }
.portised-reals__titre { font-size: 24px; font-weight: 750; font-stretch: 78%; line-height: 1.1; }
.est-une .portised-reals__titre { font-size: 32px; }
.portised-reals__carte a:hover .portised-reals__titre { text-decoration: underline; text-decoration-color: var(--orange); text-decoration-thickness: 3px; text-underline-offset: 5px; }

.portised-filtres { display: flex; flex-direction: column; gap: 14px; }
.portised-filtres__groupe { display: grid; grid-template-columns: 80px auto 1fr; align-items: start; gap: 8px; }
.portised-filtres__label { display: flex; align-items: center; min-height: 40px; font-size: 14px; font-weight: 700; }
.portised-filtres__choix { display: flex; flex-wrap: wrap; gap: 8px; }
@media (max-width: 599px) {
	.portised-filtres__groupe { display: flex; flex-wrap: wrap; }
	.portised-filtres__label { flex-basis: 100%; min-height: 0; }
	.portised-filtres__choix { display: contents; }
}
.portised-filtres a { display: inline-flex; align-items: center; min-height: 40px; padding: 0 14px; border: 1.5px solid currentColor; border-radius: 2px; color: inherit; font-size: 15px; font-weight: 600; text-decoration: none; }
.portised-filtres a[aria-current] { background: var(--bleu); border-color: var(--bleu); color: var(--blanc); }
.has-bleu-background-color .portised-filtres a[aria-current] { background: var(--orange); border-color: var(--orange); color: var(--bleu); }

.chips .wp-block-post-terms, .wp-block-post-terms.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.wp-block-post-terms.chips a { display: inline-block; padding: 5px 12px; border: 1px solid rgba(255,255,255,.6); border-radius: 2px; color: inherit; font-size: 14px; font-weight: 600; }
.wp-block-post-terms.chips.taxonomy-metier a { background: var(--orange); border-color: var(--orange); color: var(--bleu); }
.wp-block-post-terms.chips .wp-block-post-terms__separator { display: none; }

.portised-media { margin: 0; }
.portised-media iframe { display: block; width: 100%; aspect-ratio: 16 / 9; height: auto; border: 0; }
.portised-media--podcast iframe { aspect-ratio: auto; min-height: 180px; }
.portised-media__image { display: block; width: 100%; height: auto; }

/* Articles : signature sous le titre, encadré auteur en fin d'article. */
.signature-article > * { margin: 0; font-size: 15px; }
.signature-article .wp-block-post-author-name::before { content: "Par "; }
.signature-article > * + *::before { content: "·"; margin-right: 8px; }
.auteur-article { margin-top: 56px; }
.auteur-article .wp-block-post-author { max-width: 760px; margin-inline: auto !important; padding-top: 24px; border-top: 2px solid var(--bleu); }
.auteur-article .wp-block-post-author__byline { margin: 0 0 4px; font-size: 14px; color: var(--acier, #5C6168); }
.auteur-article .wp-block-post-author__name { margin: 0; font-size: 20px; font-weight: 750; }
.auteur-article .wp-block-post-author__bio { margin: 8px 0 0; font-size: 16px; line-height: 1.55; }

/* Lecteurs chargés au clic (inc/lecteurs.php) : vignette tant que le visiteur n'a pas cliqué. */
.lecteur-differe { position: relative; display: flex; align-items: center; justify-content: center; overflow: hidden; background: var(--bleu); color: #fff; }
.lecteur-differe--video { aspect-ratio: 16 / 9; }
.lecteur-differe--audio { justify-content: flex-start; min-height: 152px; padding: 24px 28px; }
.wp-has-aspect-ratio .lecteur-differe { position: absolute; inset: 0; aspect-ratio: auto; }
.lecteur-differe__fond, .lecteur-differe__fond img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.lecteur-differe__fond::after { content: ""; position: absolute; inset: 0; background: rgba(20, 35, 63, .6); }
.lecteur-differe--video .lecteur-differe__bouton { flex-direction: column; text-shadow: 0 1px 8px rgba(0, 0, 0, .5); }
.lecteur-differe__bouton { position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 14px; padding: 0; border: 0; background: none; color: inherit; font: inherit; font-size: 18px; font-weight: 700; cursor: pointer; }
.lecteur-differe__icone { display: grid; place-items: center; width: 72px; height: 72px; background: var(--orange); transition: transform .2s ease; }
.lecteur-differe__icone::before { content: ""; margin-left: 5px; border-left: 20px solid var(--bleu); border-top: 13px solid transparent; border-bottom: 13px solid transparent; }
.lecteur-differe--audio .lecteur-differe__icone { width: 56px; height: 56px; }
.lecteur-differe__bouton:hover .lecteur-differe__icone, .lecteur-differe__bouton:focus-visible .lecteur-differe__icone { transform: scale(1.06); }
.lecteur-differe__bouton:focus-visible { outline: 2px solid var(--orange); outline-offset: 6px; }
.lecteur-differe__note { position: absolute; z-index: 1; left: 16px; right: 16px; bottom: 12px; margin: 0; font-size: 13px; text-align: center; opacity: .85; }
.lecteur-differe--audio .lecteur-differe__note { left: 28px; text-align: left; }
.lecteur-differe.est-charge { display: block; padding: 0; background: none; }
.lecteur-differe.est-charge iframe { display: block; width: 100%; border: 0; }
.lecteur-differe--video.est-charge iframe { height: 100%; }

.portised-en-bref { border-top: 3px solid currentColor; padding-top: 20px; }
.portised-en-bref__titre { margin: 0 0 8px; font-size: 22px; font-stretch: 85%; }
.portised-en-bref dl { margin: 0; }
.portised-en-bref dl > div { padding: 14px 0; border-bottom: 1px solid #D5D8DA; }
.portised-en-bref dt { font-size: 14px; color: var(--acier); }
.portised-en-bref dd { margin: 4px 0 0; font-size: 17px; font-weight: 600; }
.portised-en-bref .wp-block-button { margin-top: 20px; }

.portised-vide { padding: 16px; border: 1px dashed currentColor; font-size: 14px; opacity: .8; }

/* ---------- Questions fréquentes ---------- */

.wp-block-details { padding: 0; }
.wp-block-details summary {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 24px;
	padding: 22px 0;
	font-size: 20px;
	font-weight: 700;
	line-height: 1.3;
	cursor: pointer;
	list-style: none;
}
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after {
	content: "+";
	flex: none;
	font-size: 30px;
	font-weight: 400;
	line-height: 1;
	color: var(--wp--preset--color--orange-texte);
	transition: transform .2s ease;
}
.wp-block-details summary { transition: color .25s ease; }
.wp-block-details summary::after { transition: transform .3s cubic-bezier(.4, 0, .2, 1); }
.wp-block-details[open] summary::after { transform: rotate(45deg); }
.wp-block-details > :not(summary):not(.faq-corps),
.wp-block-details > .faq-corps > * { margin: 0 0 22px; max-width: 38em; font-size: 17px; }
/* Réponse enveloppée par assets/js/faq.js pour l'animation d'ouverture et de fermeture. */
.wp-block-details > .faq-corps { display: flow-root; margin: 0 !important; }
.wp-block-details.faq-anim > .faq-corps { overflow: hidden; }
/* La question ouverte se repère d'un coup d'œil. */
.wp-block-details[open] > summary { color: var(--wp--preset--color--orange-texte); }
.has-bleu-background-color .wp-block-details[open] > summary { color: var(--wp--preset--color--orange); }
/* Pendant sa fermeture, la question reprend tout de suite son aspect normal. */
.wp-block-details[open].faq-fermeture > summary { color: inherit; }
.wp-block-details.faq-fermeture summary::after { transform: none; }
.liste-faq { border-top: 3px solid currentColor; }
.liste-faq > .wp-block-details { margin-block: 0 !important; }

/* ---------- Logos clients, liens en ligne ---------- */

.logos-clients { gap: 0 !important; }
.logos-clients > * { min-height: 76px; align-items: center; background: var(--blanc); text-align: center; outline: 1px solid #D5D8DA; outline-offset: -.5px; margin: 0 !important; }
.logos-clients img { max-height: 44px; width: auto; }
/* Galerie au style « Logos clients » : une grille de cases blanches, logos centrés en gris, couleur au survol. */
.wp-block-gallery.is-style-logos.has-nested-images { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(min(100%, 150px), 1fr)); gap: 0 !important; }
.wp-block-gallery.is-style-logos.has-nested-images figure.wp-block-image:not(#individual-image) {
	display: flex; align-items: center; justify-content: center; width: auto !important; min-height: 96px; margin: 0 !important; padding: 20px 24px;
	background: var(--blanc, #fff); outline: 1px solid #D5D8DA; outline-offset: -.5px; flex: none !important;
}
.wp-block-gallery.is-style-logos.has-nested-images figure.wp-block-image img {
	width: auto !important; height: auto !important; max-width: 100% !important; max-height: 48px !important; object-fit: contain !important;
	filter: grayscale(1); opacity: .7; transition: filter .25s ease, opacity .25s ease;
}
.wp-block-gallery.is-style-logos.has-nested-images figure.wp-block-image:hover img { filter: none; opacity: 1; }
.wp-block-gallery.is-style-logos.has-nested-images figure.wp-block-image figcaption { display: none; }
.liens > p { margin: 0; }
.grille-2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
@media (max-width: 781px) { .grille-2 { grid-template-columns: 1fr !important; } }

/* ---------- Méthode, chiffres ---------- */

.etape { border-top: 3px solid currentColor; padding-top: 18px; }
.etape > .wp-block-heading:first-child { font-size: 56px; font-stretch: 70%; }
.etape > h4.wp-block-heading { font-size: 22px; font-stretch: 85%; }

/* ---------- Citation ---------- */

.wp-block-quote.is-style-default, .wp-block-quote { padding-left: 0; }
.wp-block-quote p { margin: 0 0 20px; }
.wp-block-quote cite { display: block; font-size: 17px; font-weight: 400; font-style: normal; color: var(--acier); }
.wp-block-quote { border-top: 3px solid currentColor; padding-top: 28px; }
.has-bleu-background-color .wp-block-quote cite { color: #D6DAE0; }

/* Récit d'une réalisation, article de blog : intertitres à taille de lecture. */
.single .wp-block-post-content h2, .single-realisation .wp-block-post-content h2 { font-size: clamp(26px, 2.6vw, 32px); font-stretch: 80%; margin-top: 1.6em; }
.single .wp-block-post-content h3, .single-realisation .wp-block-post-content h3 { font-size: 24px; margin-top: 1.4em; }
.single-realisation .wp-block-post-content .wp-block-quote p { font-size: clamp(22px, 2.4vw, 30px); }

/* Visuel manquant : un aplat à la place, pour garder la grille. */
.wp-block-post-featured-image.est-vide { aspect-ratio: 16 / 10; background: #C9CDD0; }
.has-bleu-background-color .wp-block-post-featured-image.est-vide { background: var(--wp--preset--color--ardoise); }
.wp-block-post-featured-image.est-vide a { display: block; width: 100%; height: 100%; }

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

.site-foot a { color: #D6D6D6; text-decoration: none; }
.site-foot a:hover { color: var(--blanc); text-decoration: underline; }
.site-foot .wp-block-list > li::before { display: none; }
.site-foot .wp-block-list > li { padding-left: 0; }
/* Sous-entrées (liste imbriquée, touche Tab dans l'éditeur) : en retrait, petit carré orange. */
.site-foot .wp-block-list .wp-block-list { margin: 2px 0 2px; padding-left: 4px; }
.site-foot .wp-block-list .wp-block-list > li { padding-left: 16px; margin-top: 0; font-size: .92em; }
.site-foot .wp-block-list .wp-block-list > li::before { display: block; top: .82em; width: 5px; height: 5px; background: #FF6600; }
.site-foot .bas a { text-decoration: underline; }

/* ---------- Animations d'ouverture ---------- */

@keyframes portised-monte { from { opacity: 0; transform: translateY(32px); } to { opacity: 1; transform: none; } }
@keyframes portised-decoupe { from { clip-path: inset(100% 0 0 0); } to { clip-path: inset(0); } }
@keyframes portised-pose { 0% { transform: scale(0); } 70% { transform: scale(1.25); } 100% { transform: scale(1); } }
@media (prefers-reduced-motion: no-preference) {
	.entree > * { animation: portised-monte .8s cubic-bezier(.2,.7,.1,1) both; }
	.entree > :nth-child(2) { animation-delay: .12s; }
	.entree > :nth-child(3) { animation-delay: .24s; }
	.entree > :nth-child(4) { animation-delay: .32s; }
	.entree h1 .pt { animation: portised-pose .45s cubic-bezier(.3,1.4,.5,1) .9s both; }
	.is-style-decoupe { animation: portised-decoupe 1s cubic-bezier(.7,0,.2,1) .25s both; }
}
@media (prefers-reduced-motion: reduce) {
	.is-style-ligne-metier, .wp-block-button__link::after, .site-head *::after { transition: none !important; }
}

/* ---------- Formulaire (Contact Form 7) ---------- */

.wpcf7-form { display: flex; flex-direction: column; gap: 28px; }
.wpcf7-form p { margin: 0; }
.wpcf7-form label { display: flex; flex-direction: column; gap: 8px; font-size: 17px; font-weight: 700; }
.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form select,
.wpcf7-form textarea {
	width: 100%;
	box-sizing: border-box;
	min-height: 52px;
	padding: 12px 14px;
	font: inherit;
	font-size: 17px;
	font-weight: 400;
	color: var(--bleu);
	background: var(--blanc);
	border: 1.5px solid var(--bleu);
	border-radius: 2px;
}
.wpcf7-form select { max-width: 360px; }
.wpcf7-form :is(input, select, textarea):focus-visible { outline: 3px solid var(--wp--preset--color--orange-texte); outline-offset: 0; }
.wpcf7-form .champs-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 24px; }
.wpcf7-form fieldset { margin: 0; padding: 0; border: 0; }
.wpcf7-form legend { margin-bottom: 14px; font-size: 22px; font-weight: 750; font-stretch: 85%; }
.wpcf7-checkbox { display: flex; flex-wrap: wrap; gap: 10px; }
.wpcf7-checkbox .wpcf7-list-item { margin: 0; }
.wpcf7-checkbox .wpcf7-list-item label { flex-direction: row; align-items: center; min-height: 44px; padding: 0 18px; border: 1.5px solid var(--bleu); border-radius: 2px; font-size: 16px; font-weight: 600; cursor: pointer; }
.wpcf7-checkbox input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.wpcf7-checkbox .wpcf7-list-item label:has(input:checked) { background: var(--bleu); color: var(--blanc); }
.wpcf7-checkbox .wpcf7-list-item label:has(input:focus-visible) { outline: 3px solid var(--wp--preset--color--orange-texte); outline-offset: 2px; }
.wpcf7-form .wpcf7-submit {
	align-self: flex-start;
	min-height: 56px;
	padding: 0 32px;
	font: inherit;
	font-size: 18px;
	font-weight: 700;
	color: var(--blanc);
	background: var(--bleu);
	border: 0;
	border-radius: 2px;
	cursor: pointer;
}
.wpcf7-form .petit { font-size: 14px; font-weight: 400; color: var(--acier); }

/* ---------- Éditeur ---------- */

.editor-styles-wrapper .is-style-ligne-metier a::after,
.editor-styles-wrapper .is-style-carte a::after { display: none; }
