/* ==========================================================================
   Hack40 — styles du thème
   Règles : mises en page responsives par classes (jamais sur styles en ligne),
   grilles en minmax(0,1fr), animations CSS seulement, prefers-reduced-motion.
   ========================================================================== */

:root {
	--h40-wrap: 1360px;
	--h40-gutter: clamp(20px, 3.4vw, 48px);
	--h40-section: clamp(64px, 8vw, 104px);
	--h40-ink: var(--wp--preset--color--ink);
	--h40-accent: var(--wp--preset--color--accent);
	--h40-accent-dark: var(--wp--preset--color--accent-dark-bg);
	--h40-ease: cubic-bezier(.2, .7, .2, 1);
}

body { margin: 0; -webkit-font-smoothing: antialiased; }
img { max-width: 100%; height: auto; }
:where(.wp-site-blocks) > * { margin-block-start: 0; }
.wp-site-blocks { padding: 0; }
/* Sections empilées sans espace : chaque section gère ses propres marges internes. */
.wp-block-post-content.wp-block-post-content > * { margin-block: 0; }
:focus-visible { outline: 2px solid var(--h40-accent); outline-offset: 3px; }

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

/* ---------- Mise en page générale ---------- */

/* Section pleine largeur : le contenu est centré dans .h40-wrap */
.h40-section { margin-block: 0 !important; }
.h40-wrap {
	box-sizing: border-box;
	width: 100%;
	max-width: var(--h40-wrap);
	margin-inline: auto !important;
	padding: var(--h40-section) var(--h40-gutter);
}
.h40-wrap.h40-tight-top { padding-top: 0; }
.h40-wrap.h40-wrap > * { margin-block: 0; }
.h40-stack-l > * + * { margin-block-start: 48px !important; }
.h40-stack-m > * + * { margin-block-start: 32px !important; }
.h40-stack-s > * + * { margin-block-start: 16px !important; }

.h40-dark { background: var(--h40-ink); color: #fff; }
.h40-dark a, .h40-dark a:is(:link, :visited, :focus, :active) { color: #fff; }
.h40-dark a:not(.wp-element-button):hover { color: var(--h40-accent-dark); }
/* Bouton plein sur fond noir : au survol, inversion blanche (le noir du thème y serait invisible). */
.h40-dark .wp-block-button:not(.h40-btn-ghost):not(.is-style-outline) > .wp-element-button:is(:hover, :focus-visible) { background: #fff; color: var(--h40-ink); }
.h40-dark a:focus-visible { outline: 2px solid var(--h40-accent-dark); outline-offset: 3px; }
.h40-stone { background: var(--wp--preset--color--stone); }

/* Sur-titre (« GRANDS GROUPES », « PREUVES »…) */
.h40-eyebrow {
	font-size: 13px !important;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	line-height: 1.4;
	color: var(--h40-accent);
	margin: 0;
}
.h40-dark .h40-eyebrow { color: var(--h40-accent-dark); }
.h40-eyebrow.is-muted { color: var(--wp--preset--color--graphite); letter-spacing: .12em; }
.h40-dark .h40-eyebrow.is-muted { color: #B5B2AA; }

/* Mise en valeur italique rouge dans les titres */
.h40-title em, .h40-em { font-style: italic; color: var(--h40-accent); }
.h40-dark .h40-title em { color: var(--h40-accent-dark); }
.h40-title { margin: 0; }

.h40-lead { font-size: var(--wp--preset--font-size--l); line-height: 1.5; }
.h40-muted { color: var(--wp--preset--color--graphite); }
.h40-dark .h40-muted { color: var(--wp--preset--color--fog); }

/* En-tête de section : titre à gauche, texte ou lien à droite */
.h40-head {
	display: flex;
	flex-wrap: wrap;
	gap: 16px 64px;
	align-items: end;
	justify-content: space-between;
}
.h40-head > * { margin: 0 !important; }
.h40-head .h40-head-text { max-width: 440px; }
.h40-head-main { display: flex; flex-direction: column; gap: 12px; max-width: 760px; }
.h40-head-main > * { margin: 0 !important; }

/* Liens fléchés */
.h40-more a, a.h40-more { font-weight: 600; }
.h40-arrow-link a::after { content: " →"; display: inline-block; transition: transform .35s; }
.h40-arrow-link a:hover::after { transform: translateX(6px); }

/* Boutons secondaires (contour) */
.wp-block-button.is-style-outline > .wp-block-button__link,
.wp-block-button.h40-btn-ghost > .wp-block-button__link {
	background: transparent;
	border: 1px solid currentColor;
	color: inherit;
}
.wp-block-button.h40-btn-ghost > .wp-block-button__link:hover { background: #fff; color: var(--h40-ink); }

/* ---------- En-tête du site ---------- */

.h40-header { border-bottom: 1px solid var(--wp--preset--color--line); background: #fff; }
.h40-header .h40-wrap {
	padding-top: 20px;
	padding-bottom: 20px;
	display: flex;
	flex-wrap: wrap;
	gap: 16px 24px;
	align-items: center;
	justify-content: space-between;
}
.h40-brand { display: flex; align-items: center; gap: 10px; margin: 0 !important; }
.h40-brand .wp-block-site-logo img { height: 30px; width: auto; }
.h40-brand .h40-est { margin: 0; font-family: var(--wp--preset--font-family--serif); font-style: italic; font-size: 17px; color: var(--wp--preset--color--muted); }
.h40-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 24px; margin: 0 !important; }
.h40-nav > * { margin: 0 !important; }
.h40-nav .wp-block-navigation { font-size: 16px; gap: 24px; }
.h40-nav .wp-block-navigation a { text-decoration: none; }
.h40-nav .wp-block-navigation .current-menu-item > a,
.h40-nav .wp-block-navigation a[aria-current="page"] { color: var(--h40-accent); font-weight: 600; }
.h40-lang {
	display: inline-block;
	padding: 6px 10px;
	border: 1px solid var(--h40-ink);
	font-size: 13px;
	font-weight: 600;
	text-decoration: none;
	line-height: 1;
}
.h40-lang:hover { background: var(--h40-ink); color: #fff; }
.h40-header .wp-block-button__link { padding: 11px 20px; font-size: 16px; }

/* Menu : lien « Book a call » réservé au menu mobile (le bouton rouge suffit sur ordinateur). */
.h40-nav .wp-block-navigation .h40-nav-cta { display: none; }

/* Menu mobile (< 1024 px) : bouton menu + panneau plein écran aux couleurs du site. */
@media (max-width: 1024px) {
	.h40-header .h40-wrap { flex-wrap: nowrap; }
	.h40-nav { flex-wrap: nowrap; gap: 12px; }
	.h40-nav .h40-lang-wrap { order: -1; }
	.h40-nav .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }
	.h40-nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }
	.h40-nav .wp-block-navigation__responsive-container-open svg { width: 30px; height: 30px; }
	.h40-nav .wp-block-navigation__responsive-container.is-menu-open {
		background: var(--h40-ink) !important;
		color: #fff !important;
		padding: 28px var(--h40-gutter) 40px;
	}
	.h40-nav .is-menu-open .wp-block-navigation__responsive-container-close { color: #fff; }
	.h40-nav .is-menu-open .wp-block-navigation__responsive-container-close svg { width: 32px; height: 32px; }
	.h40-nav .is-menu-open .wp-block-navigation__container { gap: 0 !important; width: 100%; }
	.h40-nav .is-menu-open .wp-block-navigation-item { width: 100%; border-bottom: 1px solid #3A3936; }
	.h40-nav .is-menu-open .wp-block-navigation-item a {
		display: block;
		padding: 16px 0 !important;
		color: #fff !important;
		font-family: var(--wp--preset--font-family--serif);
		font-size: 30px;
		line-height: 1.15;
	}
	.h40-nav .is-menu-open .wp-block-navigation-item a[aria-current="page"] { color: var(--h40-accent-dark) !important; font-weight: 400; }
	.h40-nav .is-menu-open .h40-nav-cta { display: block; border-bottom: 0; margin-top: 24px; }
	.h40-nav .is-menu-open .h40-nav-cta a {
		display: inline-block;
		padding: 14px 24px !important;
		background: var(--wp--preset--color--accent);
		font-family: var(--wp--preset--font-family--sans);
		font-size: 17px;
		font-weight: 600;
	}
}
.h40-cta-short { display: none; }
@media (max-width: 720px) {
	/* Bouton rendez-vous compact, toujours à portée (l'en-tête réapparaît à chaque remontée). */
	.h40-header .wp-block-button__link { padding: 8px 12px; font-size: 14px; }
	.h40-cta-long { display: none; }
	.h40-cta-short { display: inline; }
	.h40-nav .wp-block-buttons { order: 0; }
	.h40-nav .wp-block-navigation { order: 1; }
	.h40-header .h40-wrap { gap: 12px; padding-top: 14px; padding-bottom: 14px; }
	.h40-nav { gap: 10px; }
	.h40-brand .wp-block-site-logo img { height: 26px; }
	.h40-brand .h40-est { display: none; }
}

/* ---------- Accueil : hero en diaporama ---------- */

.h40-hero {
	position: relative;
	overflow: hidden;
	background: var(--h40-ink);
	color: #fff;
	min-height: 720px;
	display: flex;
	align-items: flex-end;
}
.h40-hero-media { position: absolute; inset: 0; margin: 0 !important; }
.h40-hero-media > * { margin: 0 !important; }
.h40-hero-media .wp-block-image { position: absolute; inset: 0; }
.h40-hero-media img { width: 100%; height: 100%; object-fit: cover; }
.h40-hero-media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(20,20,20,.45) 0%, rgba(20,20,20,.6) 45%, rgba(20,20,20,.92) 100%);
}
.h40-hero .h40-wrap {
	position: relative;
	padding-top: 160px;
	padding-bottom: 80px;
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	column-gap: 24px;
	row-gap: 36px;
}
.h40-hero .h40-eyebrow { grid-column: 1 / -1; color: var(--h40-accent-dark); text-shadow: 0 1px 14px rgba(0,0,0,.7); }
.h40-hero h1 { grid-column: 1 / span 11; color: #fff; }
.h40-hero h1 em { color: var(--h40-accent-dark); }
.h40-hero .h40-lead { grid-column: 1 / span 6; color: #E8E6E1; margin: 0; }
.h40-hero .wp-block-buttons { grid-column: 8 / span 5; align-self: end; margin: 0; }
.h40-slide { opacity: 0; animation: h40fade 24s infinite; }
.h40-slide:nth-child(1) { animation-delay: 0s; }
.h40-slide:nth-child(2) { animation-delay: 6s; }
.h40-slide:nth-child(3) { animation-delay: 12s; }
.h40-slide:nth-child(4) { animation-delay: 18s; }
@keyframes h40fade {
	0% { opacity: 0; transform: scale(1); }
	5%, 25% { opacity: 1; }
	31%, 100% { opacity: 0; transform: scale(1.08); }
}

/* ---------- Chiffres clés ---------- */

.h40-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px; }
.h40-stats > * { margin: 0 !important; border-top: 1px solid var(--h40-ink); padding-top: 16px; }
.h40-stat-figure {
	margin: 0;
	font-size: var(--wp--preset--font-size--figure) !important;
	font-weight: 600;
	line-height: 1;
	letter-spacing: -.03em;
	white-space: nowrap;
}
.h40-stat-label { margin: 10px 0 0 !important; font-size: 13px !important; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--wp--preset--color--graphite); }
.h40-stats-wrap { padding-top: 56px; padding-bottom: 56px; }

/* ---------- Cartes « portes » (Vous êtes…) ---------- */

.h40-doors { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.h40-doors > * { margin: 0 !important; }
.h40-door {
	position: relative;
	display: flex;
	flex-direction: column;
	border: 1px solid #3A3936;
	background: var(--wp--preset--color--night);
	transition: transform .45s var(--h40-ease), box-shadow .45s;
}
.h40-door:hover { transform: translateY(-6px); box-shadow: 0 30px 60px -30px rgba(0,0,0,.6); }
.h40-door .wp-block-image { margin: 0; height: 260px; overflow: hidden; }
.h40-door .wp-block-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--h40-ease); }
.h40-door:hover .wp-block-image img { transform: scale(1.07); }
.h40-door-body { flex-grow: 1; padding: 36px 40px 40px; display: flex; flex-direction: column; gap: 16px; }
.h40-door-body > * { margin: 0 !important; }
.h40-card-title { font-family: var(--wp--preset--font-family--serif); font-size: 40px; line-height: 1.08; }
.h40-door .h40-muted { color: #C9C6BE; }
.h40-door .h40-door-link { margin-top: auto !important; padding-top: 12px; font-weight: 600; }
.h40-door .h40-door-link a { text-decoration: none; }
/* Toute la carte est cliquable via le lien principal */
.h40-door .h40-door-link a::before { content: ""; position: absolute; inset: 0; }
.h40-door .h40-door-link a::after { content: " →"; display: inline-block; transition: transform .35s; }
.h40-door:hover .h40-door-link a::after { transform: translateX(8px); }

/* ---------- Le pont (open innovation) ---------- */

.h40-bridge { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 72px; row-gap: 48px; align-items: stretch; }
.h40-bridge > * { margin: 0 !important; }
.h40-bridge-card { position: relative; padding: 32px; border: 1px solid var(--h40-ink); display: flex; flex-direction: column; gap: 12px; }
/* Flèche ⇄ décorative entre les cartes (lue par personne : pseudo-élément) */
.h40-bridge-card:not(:last-child)::after {
	content: "⇄";
	position: absolute;
	top: 50%;
	right: -72px;
	width: 72px;
	transform: translateY(-50%);
	text-align: center;
	font-size: 32px;
	color: var(--h40-accent);
}
.h40-bridge-card > * { margin: 0 !important; }
.h40-bridge-card.is-accent { background: var(--h40-accent); border-color: var(--h40-accent); color: #fff; }
.h40-bridge-card.is-accent .h40-eyebrow { color: #fff; }
.h40-bridge-card .h40-card-title { font-size: var(--wp--preset--font-size--xl); line-height: 1.1; }
.h40-bridge-card p:last-child { font-size: 16px; }

/* ---------- Bento « Preuves » ---------- */

.h40-bento {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	grid-template-rows: repeat(2, minmax(240px, auto));
	gap: 12px;
}
.h40-bento > * { margin: 0 !important; }
.h40-b-a { grid-column: 1 / 3; grid-row: 1 / 3; background: var(--h40-ink); color: #fff; padding: 36px; display: flex; flex-direction: column; justify-content: space-between; gap: 24px; }
.h40-b-a .h40-eyebrow { color: var(--h40-accent-dark); }
.h40-b-a a { color: #fff; }
.h40-big-figure { margin: 0; font-size: clamp(52px, 6.2vw, 88px) !important; font-weight: 600; line-height: 1; letter-spacing: -.04em; white-space: nowrap; }
.h40-big-figure .h40-unit { font-size: .45em; letter-spacing: 0; }
.h40-b-a .h40-muted { color: var(--wp--preset--color--fog); max-width: 460px; font-size: 19px; }
.h40-b-b { grid-column: 3 / 5; grid-row: 1; background: var(--wp--preset--color--stone); padding: 32px; display: flex; flex-direction: column; justify-content: space-between; gap: 20px; }
.h40-b-b .wp-block-quote { margin: 0; border: 0; padding: 0; }
.h40-b-b .wp-block-quote p { margin: 0; }
.h40-b-b .wp-block-quote cite { display: block; margin-top: 16px; font-family: var(--wp--preset--font-family--sans); font-size: 15px; font-style: normal; color: var(--wp--preset--color--graphite); }
.h40-b-b .wp-block-quote cite strong { color: var(--h40-ink); }
.h40-b-c { grid-column: 3; grid-row: 2; border: 1px solid var(--h40-ink); padding: 28px; display: flex; flex-direction: column; justify-content: space-between; gap: 12px; }
.h40-b-c .h40-eyebrow { color: var(--wp--preset--color--muted); }
.h40-b-c .h40-mid-figure { margin: 0; font-size: 64px !important; font-weight: 600; line-height: 1; letter-spacing: -.03em; color: var(--h40-accent); white-space: nowrap; }
.h40-b-c p:last-child { font-size: 16px; color: #3F3E3A; }
.h40-b-d { grid-column: 4; grid-row: 2; position: relative; overflow: hidden; min-height: 240px; }
.h40-b-d img { position: absolute; inset: 0; width: 100%; height: 100% !important; object-fit: cover; transition: transform 1.2s var(--h40-ease); }
.h40-b-d:hover img { transform: scale(1.07); }
.h40-b-d figcaption { position: absolute; left: 0; right: 0; bottom: 0; margin: 0; padding: 14px 18px; background: linear-gradient(transparent, rgba(0,0,0,.7)); color: #fff; font-size: 14px; text-align: left; }

/* ---------- Mosaïque photo « Sur le terrain » ---------- */

.h40-gallery { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 220px; gap: 12px; }
.h40-gallery > * { margin: 0 !important; overflow: hidden; }
.h40-gallery img { width: 100%; height: 100% !important; object-fit: cover; transition: transform 1.2s var(--h40-ease); }
.h40-gallery > *:hover img { transform: scale(1.07); }
.h40-gallery .is-big { grid-column: span 2; grid-row: span 2; }
.h40-gallery .is-wide { grid-column: span 2; }

/* ---------- Bandeaux de logos ---------- */

.h40-logo-band { display: flex; flex-direction: column; gap: 28px; padding: 32px 0; border-top: 1px solid var(--h40-ink); }
.h40-logo-band > * { margin: 0 !important; }
.h40-marquee {
	overflow: hidden;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.h40-track { display: flex; align-items: center; gap: 72px; width: max-content; animation: h40scroll 70s linear infinite; }
.h40-track > * { margin: 0 !important; flex: 0 0 auto; }
.h40-track.is-reverse { animation-direction: reverse; animation-duration: 85s; }
.h40-marquee:hover .h40-track { animation-play-state: paused; }
@keyframes h40scroll { to { transform: translateX(-50%); } }
.h40-logo img {
	/* --h40-k : facteur posé au rendu selon les proportions du logo (hack40_logo_scale). */
	height: calc(46px * var(--h40-k, 1)) !important;
	width: auto !important;
	max-width: 150px;
	object-fit: contain;
	filter: grayscale(1) contrast(1.1);
	opacity: .62;
	mix-blend-mode: multiply;
	transition: filter .4s, opacity .4s, transform .4s;
}
.h40-logo.is-small img { height: calc(40px * var(--h40-k, 1)) !important; }
/* Hauteur de boîte fixe : les textes sous les logos restent alignés d'une carte à l'autre. */
figure.h40-logo { display: flex; align-items: center; min-height: 67px; }
.h40-logo:hover img { filter: none; opacity: 1; transform: scale(1.06); }
.h40-press { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 24px; align-items: center; padding-top: 24px; border-top: 1px solid var(--h40-ink); }
.h40-press > * { margin: 0 !important; }
.h40-press-list { font-family: var(--wp--preset--font-family--serif); font-style: italic; font-size: 22px; color: var(--wp--preset--color--graphite); }
.h40-press-list a { color: inherit; margin-right: 40px; }

/* ---------- Manifesto (page Grands groupes) ---------- */
.h40-manifesto { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: 64px; align-items: start; }
.h40-manifesto-head { position: sticky; top: 96px; display: flex; flex-direction: column; gap: 16px; }
.h40-manifesto-head > * { margin: 0 !important; }
.h40-manifesto-head .h40-title em { color: var(--h40-accent-dark); }
.h40-manifesto-lines > * { margin: 0 !important; }
.h40-manifesto-line {
	padding: 18px 0;
	border-top: 1px solid #3A3936;
	font-family: var(--wp--preset--font-family--serif);
	font-size: clamp(26px, 2.9vw, 40px);
	line-height: 1.15;
	letter-spacing: -0.01em;
}
.h40-manifesto-line:last-child { border-bottom: 1px solid #3A3936; }
.h40-manifesto-line em { color: var(--h40-accent-dark); }
.h40-manifesto-line s { color: var(--wp--preset--color--fog); text-decoration-color: var(--h40-accent-dark); text-decoration-thickness: 3px; }

/* ---------- Vidéo (À propos) et podcast (Fonds & agences) ---------- */
.h40-video-wrap, .h40-podcast { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 64px; align-items: center; }
.h40-podcast { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
.h40-video-text, .h40-podcast-text { display: flex; flex-direction: column; gap: 16px; }
.h40-video-text > *, .h40-podcast-text > * { margin: 0 !important; }
.h40-video-text .h40-title em, .h40-podcast-text .h40-title em { color: var(--wp--preset--color--accent); }
.h40-dark .h40-podcast-text .h40-title em { color: var(--h40-accent-dark); }
.h40-video { margin: 0 !important; position: relative; aspect-ratio: 16 / 9; background: var(--h40-ink); overflow: hidden; }
.h40-video a, .h40-video img, .h40-video iframe { display: block; width: 100%; height: 100% !important; border: 0; }
.h40-video img { object-fit: cover; transition: transform 1.2s var(--h40-ease); }
.h40-video a:hover img { transform: scale(1.04); }
.h40-video a::after {
	content: ""; position: absolute; left: 50%; top: 50%; width: 84px; height: 84px; margin: -42px 0 0 -42px;
	border-radius: 50%; background: var(--wp--preset--color--accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M8 5v14l11-7z'/%3E%3C/svg%3E") 55% 50% / 36px no-repeat;
	box-shadow: 0 12px 30px -10px rgba(0,0,0,.6); transition: transform .3s;
}
.h40-video a:hover::after { transform: scale(1.08); }
.h40-podcast-links { margin: 0 !important; }
.h40-podcast-box { display: flex; flex-direction: column; gap: 12px; margin-top: 16px !important; padding-top: 24px; border-top: 1px solid #3A3936; }
.h40-podcast-box > * { margin: 0 !important; }
.h40-bfm-video { margin: 0 !important; }
.h40-bfm-video video { display: block; width: 100%; aspect-ratio: 16 / 9; background: #000; }
.h40-bfm-video figcaption { margin-top: 10px; font-size: 14px; color: var(--wp--preset--color--fog); text-align: left; }

/* ---------- Insights (articles) ---------- */
.h40-section.h40-insights-head { padding-bottom: 32px; }
.h40-section.h40-insights-list { padding-top: 0; }
.h40-insights-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 48px 32px; }
.h40-insights-grid > li { margin: 0; }
.h40-insight-card { display: flex; flex-direction: column; gap: 12px; height: 100%; padding-top: 20px; border-top: 1px solid var(--wp--preset--color--ink); }
.h40-insight-card > * { margin: 0 !important; }
.h40-insight-img { overflow: hidden; margin-bottom: 8px !important; }
.h40-insight-img img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--h40-ease); }
.h40-insight-card:hover .h40-insight-img img { transform: scale(1.05); }
.h40-insight-title { font-family: var(--wp--preset--font-family--serif); font-weight: 400; font-size: 26px; line-height: 1.15; }
.h40-insight-title a { text-decoration: none; }
.h40-insight-title a:hover { color: var(--wp--preset--color--accent); }
.h40-insight-card .wp-block-post-excerpt__more-text { display: none; }
.h40-insight-card .wp-block-post-excerpt__excerpt { margin: 0; font-size: 16px; }
.h40-pagination { margin-top: 48px !important; gap: 16px; }

.h40-article { padding-top: clamp(40px, 6vw, 80px); }
.h40-article > * { margin-block: 0 !important; }
.h40-article-head, .h40-article-body { max-width: 760px; margin-inline: auto !important; padding-inline: var(--h40-gutter); box-sizing: content-box; }
.h40-article-head { display: flex; flex-direction: column; gap: 18px; padding-bottom: 40px; }
.h40-article-head > * { margin: 0 !important; }
.h40-article-head .h40-eyebrow a { color: inherit; text-decoration: none; }
.h40-dek, .h40-dek p { font-family: var(--wp--preset--font-family--serif); font-style: italic; font-size: var(--wp--preset--font-size--l); line-height: 1.4; color: var(--wp--preset--color--graphite); margin: 0; }
.h40-byline { display: flex; flex-wrap: wrap; gap: 6px 16px; font-size: 15px; color: var(--wp--preset--color--muted); padding-top: 16px; border-top: 1px solid var(--wp--preset--color--line); }
.h40-byline > * { margin: 0 !important; }
.h40-byline .wp-block-post-author-name { color: var(--wp--preset--color--ink); font-weight: 600; }
.h40-article-cover { max-width: 1024px; margin: 0 auto 48px !important; padding-inline: var(--h40-gutter); }
.h40-article-cover img { display: block; width: 100%; height: 100%; object-fit: cover; }
.h40-article-body { padding-bottom: var(--h40-section); font-size: 18px; line-height: 1.7; }
.h40-article-body > * { margin-block: 0 1.1em !important; }
.h40-article-body h2 { font-size: clamp(26px, 2.6vw, 34px); line-height: 1.15; margin: 1.8em 0 .6em !important; }
.h40-article-body h3 { font-family: var(--wp--preset--font-family--sans); font-weight: 600; font-size: 20px; line-height: 1.3; letter-spacing: 0; margin: 1.6em 0 .5em !important; }
.h40-article-body a { text-decoration-color: var(--wp--preset--color--accent); text-underline-offset: 3px; }
.h40-article-body ul, .h40-article-body ol { padding-left: 1.2em; }
.h40-article-body li { margin-bottom: .35em; }
.h40-article-body hr { border: 0; border-top: 1px solid var(--wp--preset--color--line); width: 96px; margin: 2.4em 0 !important; }
.h40-article-body .wp-block-quote { border: 0; border-left: 3px solid var(--wp--preset--color--accent); padding: 4px 0 4px 24px; margin: 1.8em 0 !important; font-size: 23px; line-height: 1.4; }
.h40-article-body .wp-block-quote p { margin: 0; }
.h40-article-body .wp-block-quote cite { display: block; margin-top: 10px; font-family: var(--wp--preset--font-family--sans); font-style: normal; font-size: 15px; color: var(--wp--preset--color--muted); }
.h40-article-body .wp-block-quote cite::before { content: "— "; }
.h40-article-body .wp-block-quote.h40-pull { border: 0; padding: 0; font-size: clamp(26px, 2.6vw, 32px); line-height: 1.25; color: var(--wp--preset--color--accent); font-style: italic; }
.h40-article-source { margin-top: 2.4em !important; padding-top: 20px; border-top: 1px solid var(--wp--preset--color--line); font-size: 15px; color: var(--wp--preset--color--muted); }

/* ---------- Presse (bandeau citation) ---------- */
.h40-section.h40-press-strip { border-top: 1px solid var(--wp--preset--color--line); border-bottom: 1px solid var(--wp--preset--color--line); }
.h40-wrap.h40-press-quote { display: flex; flex-direction: column; gap: 14px; padding-block: clamp(48px, 6vw, 80px); }
.h40-press-quote > * { max-width: 980px; }
.h40-press-quote > * { margin: 0 !important; }
.h40-press-title { font-family: var(--wp--preset--font-family--serif); font-size: clamp(26px, 3vw, 40px); line-height: 1.15; letter-spacing: -0.01em; }
.h40-press-title em { color: var(--wp--preset--color--accent); }
.h40-more-line { margin: 0 !important; }

/* Toolkit (À propos) : la boucle build → measure → learn couvre Experiment et Prove. */
.h40p-tk-loop.h40p-tk-loop > .h40p-tk-label { grid-column: 3 / 5; }

/* ---------- FAQ ---------- */

.h40-faq-wrap { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 48px; }
.h40-faq-wrap > * { margin: 0 !important; }
.wp-block-details.h40-faq { border-top: 1px solid var(--h40-ink); padding: 22px 0; margin: 0 !important; }
.wp-block-details.h40-faq summary { cursor: pointer; font-size: 19px; font-weight: 500; list-style-position: outside; }
.wp-block-details.h40-faq > p { margin: 14px 0 0; color: #3F3E3A; }

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

.h40-footer { background: var(--h40-ink); color: #fff; }
.h40-footer .h40-wrap { padding-top: 96px; padding-bottom: 36px; display: flex; flex-direction: column; gap: 56px; }
.h40-footer .h40-wrap > * { margin: 0 !important; }
.h40-footer h2 { font-size: clamp(40px, 5vw, 60px); line-height: 1.02; max-width: 760px; color: #fff; }
.h40-footer h2 em { color: var(--h40-accent-dark); }
.h40-contacts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
.h40-contacts > * { margin: 0 !important; display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.h40-contacts > * > * { margin: 0 !important; }
.h40-footer a { color: #fff; }
.h40-footer .h40-eyebrow { color: #B5B2AA; letter-spacing: .12em; }
.h40-footer-logo img { height: 40px !important; width: auto !important; }
.h40-footer-bottom { display: flex; flex-wrap: wrap; gap: 16px; justify-content: space-between; padding-top: 20px; border-top: 1px solid #3A3936; font-size: 14px; color: #B5B2AA; }
.h40-footer-bottom > * { margin: 0 !important; }
.h40-footer-bottom a { color: #B5B2AA; }

/* ---------- Animations d'apparition ---------- */

.h40-in { animation: h40in .9s var(--h40-ease) both; }
.h40-in-2 { animation: h40in .9s .15s var(--h40-ease) both; }
.h40-in-3 { animation: h40in .9s .3s var(--h40-ease) both; }
@keyframes h40in { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: none; } }
@supports (animation-timeline: view()) {
	.h40-reveal { animation: h40in linear both; animation-timeline: view(); animation-range: entry 0% cover 28%; }
}

@media (prefers-reduced-motion: reduce) {
	.h40-in, .h40-in-2, .h40-in-3, .h40-reveal, .h40-track, .h40-slide { animation: none !important; }
	.h40-slide:first-child { opacity: 1; }
	.h40-door, .h40-door img, .h40-gallery img, .h40-logo img { transition: none !important; }
}

/* ---------- Tablette (< 1024 px) ---------- */

@media (max-width: 1024px) {
	.h40-manifesto, .h40-video-wrap, .h40-podcast { grid-template-columns: minmax(0, 1fr); gap: 40px; }
	.h40-insights-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.h40-manifesto-head { position: static; }
	.h40-hero .h40-wrap { display: flex; flex-direction: column; gap: 28px; }
	.h40-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.h40-bento { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: auto; }
	.h40-b-a, .h40-b-b { grid-column: 1 / -1; grid-row: auto; }
	.h40-b-c, .h40-b-d { grid-column: auto; grid-row: auto; }
	.h40-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 200px; }
	.h40-bridge { grid-template-columns: minmax(0, 1fr); }
	.h40-bridge-card:not(:last-child)::after { top: auto; bottom: -48px; right: 0; left: 0; width: auto; transform: rotate(90deg); line-height: 48px; height: 48px; }
	.h40-faq-wrap { grid-template-columns: minmax(0, 1fr); gap: 24px; }
}

/* ---------- Mobile (< 720 px) ---------- */

@media (max-width: 720px) {
	.h40-insights-grid { grid-template-columns: minmax(0, 1fr); gap: 40px; }
	.h40-article-body { font-size: 17px; }
	.h40-hero { min-height: 640px; }
	.h40-hero .h40-wrap { padding-top: 120px; padding-bottom: 56px; }
	.h40-doors { grid-template-columns: minmax(0, 1fr); }
	.h40-door .wp-block-image { height: 200px; }
	.h40-door-body { padding: 28px 24px 32px; }
	.h40-card-title { font-size: 32px; }
	.h40-bento { grid-template-columns: minmax(0, 1fr); }
	.h40-b-c, .h40-b-d { grid-column: 1 / -1; }
	.h40-big-figure { white-space: normal; }
	.h40-gallery { grid-auto-rows: 150px; }
	.h40-press { grid-template-columns: minmax(0, 1fr); gap: 10px; }
	.h40-contacts { grid-template-columns: minmax(0, 1fr); }
	.h40-track { gap: 44px; }
	.h40-logo img { height: calc(34px * var(--h40-k, 1)) !important; }
	figure.h40-logo { min-height: 50px; }
	.h40-nav { gap: 8px 14px; }
	.h40-nav .wp-block-navigation { font-size: 15px; gap: 14px; }
}

/* Bandeau cookies (inc/consent.php) : une barre discrète, Accepter et Refuser à égalité. */
.h40-consent { position: fixed; z-index: 100000; left: 16px; right: 16px; bottom: 16px; max-width: 760px; margin: 0 auto; display: flex; align-items: center; gap: 12px 20px; padding: 14px 18px; background: var(--h40-ink); color: #fff; font-size: 15px; line-height: 1.45; box-shadow: 0 18px 40px -18px rgba(0,0,0,.55); }
.h40-consent[hidden] { display: none; }
.h40-consent p { margin: 0; flex: 1; }
.h40-consent a, .h40-consent a:is(:link, :visited) { color: #fff; text-decoration: underline; }
.h40-consent a:hover { color: var(--h40-accent-dark); }
.h40-consent-actions { display: flex; gap: 8px; flex-shrink: 0; }
.h40-consent button { font: inherit; font-weight: 600; padding: 8px 16px; border: 1px solid #fff; background: transparent; color: #fff; cursor: pointer; border-radius: 0; }
.h40-consent button:is(:hover, :focus-visible) { background: #fff; color: var(--h40-ink); outline: none; }
@media (max-width: 600px) {
	.h40-consent { flex-direction: column; align-items: stretch; left: 8px; right: 8px; bottom: 8px; }
	.h40-consent-actions button { flex: 1; }
}
.h40-article-follow { max-width: 760px; margin: calc(24px - var(--h40-section)) auto var(--h40-section) !important; padding: 0 var(--h40-gutter); box-sizing: content-box; font-size: 18px; font-weight: 600; }
.h40-article-follow::before { content: ""; display: block; border-top: 1px solid currentColor; opacity: .15; margin-bottom: 24px; }

/* En-tête collant « intelligent » (assets/js/header.js). */
header.wp-block-template-part { position: sticky; top: var(--wp-admin--admin-bar--height, 0px); z-index: 1000; transition: transform .28s ease, box-shadow .28s ease; }
header.wp-block-template-part.h40-hdr-hide { transform: translateY(-100%); }
header.wp-block-template-part.h40-hdr-scrolled { box-shadow: 0 8px 24px -16px rgba(0,0,0,.35); }
:where(h1, h2, h3, section, [id]) { scroll-margin-top: 96px; }
@media (prefers-reduced-motion: reduce) { header.wp-block-template-part { transition: none; } }

/* Sommaire « Sur cette page » (pages Grands groupes et Fonds & agences). */
.h40-toc { border-bottom: 1px solid var(--wp--preset--color--line); background: #fff; margin: 0 !important; }
.h40-toc-links { max-width: var(--wp--style--global--wide-size, 1200px); margin: 0 auto !important; padding: 14px var(--h40-gutter); display: flex; align-items: center; gap: 8px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; font-size: 15px; white-space: nowrap; }
.h40-toc-links::-webkit-scrollbar { display: none; }
.h40-toc-label { margin-right: 8px; font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--wp--preset--color--muted); }
.h40-toc-links a, .h40-toc-links a:is(:link, :visited) { flex-shrink: 0; padding: 7px 14px; border: 1px solid var(--wp--preset--color--line); color: var(--h40-ink); text-decoration: none; }
.h40-toc-links a:hover, .h40-toc-links a:focus-visible { border-color: var(--h40-ink); background: var(--h40-ink); color: #fff; }
@media (max-width: 720px) {
	.h40-toc-label { display: none; }
	.h40-toc-links { padding-block: 12px; mask-image: linear-gradient(90deg, #000 85%, transparent); -webkit-mask-image: linear-gradient(90deg, #000 85%, transparent); }
}

/* FAQ en accordéons : signe + / − au lieu du triangle, grande zone de toucher. */
.wp-block-details.h40-faq summary { list-style: none; position: relative; padding-right: 40px; }
.wp-block-details.h40-faq summary::-webkit-details-marker { display: none; }
.wp-block-details.h40-faq summary::after { content: "+"; position: absolute; right: 4px; top: -2px; font-size: 28px; font-weight: 300; line-height: 1; color: var(--h40-accent); transition: transform .2s ease; }
.wp-block-details.h40-faq[open] summary::after { content: "−"; }
.h40-dark .wp-block-details.h40-faq summary::after { color: var(--h40-accent-dark); }

/* Articles : temps de lecture et barre de progression. */
.h40-readtime { color: var(--wp--preset--color--muted); }
.h40-progress { position: fixed; top: 0; left: 0; right: 0; height: 3px; z-index: 1001; background: var(--h40-accent); transform-origin: 0 50%; transform: scaleX(0); pointer-events: none; }
@supports (animation-timeline: scroll()) {
	.h40-progress { animation: h40-progress linear both; animation-timeline: scroll(root); }
	@keyframes h40-progress { to { transform: scaleX(1); } }
}
@supports not (animation-timeline: scroll()) { .h40-progress { display: none; } }

/* Fil d'Ariane. */
.h40-crumbs { margin: 0 !important; font-size: 14px; color: var(--wp--preset--color--muted); }
.h40-crumbs a, .h40-crumbs a:is(:link, :visited) { color: var(--wp--preset--color--muted); text-decoration: none; }
.h40-crumbs a:hover { color: var(--h40-accent); text-decoration: underline; }
.h40-crumbs [aria-current] { color: var(--h40-ink); }
.h40-crumbs-bar { margin: 0 !important; border-bottom: 1px solid var(--wp--preset--color--line); background: #fff; }
.h40-crumbs-bar .h40-crumbs { max-width: 1264px; margin: 0 auto !important; padding: 12px var(--h40-gutter); }
.h40-article-head .h40-crumbs-inline { margin-bottom: 20px !important; }
