/*
 * Sections de contenu : transcription de « Site Innovative Performance.dc.html », en tokens theme.json.
 * Seules valeurs littérales : les breakpoints (exception ADR-0004, design-system.md §5.6).
 */

/* ---------- Mise en page commune (.wrap, sections bord à bord) ---------- */
.wp-site-blocks > .ip-main,
.wp-site-blocks > footer.wp-block-template-part {
	margin-block-start: 0;
}

.ip-main .wp-block-post-content > * {
	margin-block: 0;
}

.ip-wrap {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding-inline: var(--wp--preset--spacing--gutter);
}

/* Neutralise les marges de flux de WordPress (:root :where(.is-layout-flow) > *) dans les sections. */
.wp-block-group.ip-hero > *,
.wp-block-group.ip-hero__text > *,
.wp-block-group.ip-promise > *,
.wp-block-group.ip-promise__grid > *,
.wp-block-group.ip-promise__text > *,
.wp-block-group.ip-promise__media-in > *,
.wp-block-group.ip-exp > *,
.wp-block-group.ip-exp .ip-wrap > *,
.wp-block-group.ip-exp__head > *,
.wp-block-group.ip-exp__item > *,
.wp-block-group.ip-ph > * {
	margin-block: 0;
}

/* Filet décoratif (.rule) : pseudo-élément (pas de bloc vide dans l'éditeur). */
.ip-hero__text::before,
.ip-promise__text::before,
.ip-rule {
	content: "";
	display: block;
	width: var(--wp--custom--border--rule-width);
	height: var(--wp--custom--border--rule-height);
	border-radius: var(--wp--preset--border-radius--pill);
	background: var(--wp--preset--color--accent);
}

/* Sur-titre (.eyebrow) : dans la maquette, un <span> en ligne dans un bloc au texte courant ;
   la ligne prend donc la hauteur du texte courant. Même structure : <p class="ip-eyebrow"><span>…</span></p>. */
.ip-eyebrow {
	font-size: var(--wp--preset--font-size--body);
	line-height: var(--wp--custom--line-height--body);
}

.ip-eyebrow > span {
	color: var(--wp--preset--color--brand);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	letter-spacing: var(--wp--custom--letter-spacing--caps);
	line-height: var(--wp--custom--line-height--body);
	text-transform: uppercase;
}

/* Boutons (.btns, .btn-solid, .btn-line). Le bouton plein est le style d'élément « button » de theme.json. */
.ip-btns {
	gap: var(--wp--preset--spacing--30);
}

.ip-btns .wp-block-button__link {
	line-height: var(--wp--custom--line-height--body);
}

.ip-btns .wp-block-button.is-style-outline .wp-block-button__link {
	padding: calc(var(--wp--preset--spacing--40) - var(--wp--custom--border--button)) var(--wp--preset--spacing--60);
	border: var(--wp--custom--border--button) solid var(--wp--preset--color--ink);
	background: transparent;
	color: var(--wp--preset--color--ink);
}

.ip-btns .wp-block-button.is-style-outline .wp-block-button__link:hover {
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--paper);
}

/* Emplacement d'image (.ph, .cap) : hachures de la maquette, en attendant les visuels. */
.ip-ph {
	position: relative;
	overflow: hidden;
	border: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
	border-radius: var(--wp--preset--border-radius--base);
	background: var(--wp--custom--placeholder--stripes);
}

.ip-cap {
	padding: var(--wp--custom--placeholder--caption-py) var(--wp--custom--placeholder--caption-px);
	color: var(--wp--preset--color--muted);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	letter-spacing: var(--wp--custom--placeholder--caption-tracking);
	line-height: var(--wp--custom--line-height--body);
}

/* ---------- 1. Hero (.hero) ---------- */
.ip-hero {
	position: relative;
	display: flex;
	align-items: center;
	overflow: hidden;
	width: 100%;
	height: var(--wp--custom--hero--height-fallback);
	min-height: var(--wp--custom--hero--height-fallback);
	padding: var(--wp--preset--spacing--60) 0;
	background: var(--wp--preset--color--paper-2);
}

@supports (height: 100dvh) {
	.ip-hero {
		height: var(--wp--custom--hero--height);
		min-height: var(--wp--custom--hero--height);
	}
}

.ip-hero__bg {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
	background: var(--wp--custom--placeholder--stripes);
}

.ip-hero__bg .wp-block-video,
.ip-hero__bg video {
	display: block;
	width: 100%;
	height: 100%;
	margin: 0;
}

.ip-hero__bg video {
	object-fit: cover;
}

.ip-hero__bg::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: var(--wp--preset--gradient--hero-scrim);
	pointer-events: none;
}

.ip-hero__grid {
	position: relative;
	z-index: 2;
	width: 100%;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding-inline: var(--wp--preset--spacing--gutter);
}

.ip-hero__text {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--wp--custom--hero--gap);
	width: var(--wp--custom--hero--text-width);
	max-width: 100%;
}

.ip-hero .ip-hero__title {
	font-size: var(--wp--preset--font-size--hero-title);
	line-height: var(--wp--custom--line-height--tight);
	letter-spacing: var(--wp--custom--letter-spacing--display);
}

.ip-hero .ip-hero__lead {
	max-width: var(--wp--custom--measure--hero-lead);
	color: var(--wp--preset--color--ink-2);
	font-size: var(--wp--preset--font-size--hero-lead);
	line-height: var(--wp--custom--line-height--body);
}

.ip-hero .ip-hero__cap {
	position: absolute;
	right: var(--wp--preset--spacing--gutter);
	bottom: var(--wp--preset--spacing--40);
	z-index: 2;
	/* Marges par défaut d'un <p> du navigateur (1em), conservées dans la maquette. */
	margin: var(--wp--custom--hero--caption-margin);
	color: var(--wp--preset--color--muted);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	letter-spacing: var(--wp--custom--letter-spacing--caps);
	line-height: var(--wp--custom--line-height--body);
}

/* Bouton son (.hero-sound) : rendu seulement si une vidéo est présente (inc/hero.php). */
.ip-hero-sound {
	position: absolute;
	right: var(--wp--preset--spacing--gutter);
	bottom: calc(var(--wp--preset--spacing--40) + var(--wp--preset--spacing--60));
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: center;
	width: var(--wp--custom--menu--control);
	height: var(--wp--custom--menu--control);
	padding: 0;
	border: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
	border-radius: var(--wp--preset--border-radius--pill);
	background: var(--wp--custom--overlay--caption);
	color: var(--wp--preset--color--ink-2);
	cursor: pointer;
}

.ip-hero-sound:hover {
	color: var(--wp--preset--color--ink);
}

.ip-hero-sound[aria-pressed="false"] .ip-hero-sound__on,
.ip-hero-sound[aria-pressed="true"] .ip-hero-sound__off {
	display: none;
}

/* Indicateur de défilement (.hero-scroll), décoratif. */
.ip-hero::after {
	content: "";
	position: absolute;
	bottom: var(--wp--preset--spacing--50);
	left: 50%;
	z-index: 3;
	width: var(--wp--custom--hero--scroll-width);
	height: var(--wp--custom--hero--scroll-height);
	background: var(--wp--preset--color--ink-2);
	opacity: var(--wp--custom--hero--scroll-opacity);
	animation: ip-hero-scroll var(--wp--custom--hero--scroll-duration) ease-in-out infinite;
}

@keyframes ip-hero-scroll {
	0%,
	100% {
		transform: translateY(0);
	}

	50% {
		transform: translateY(var(--wp--custom--hero--scroll-shift));
	}
}

@media (prefers-reduced-motion: reduce) {
	.ip-hero::after {
		display: none;
	}
}

@media (max-height: 600px) {
	.ip-hero__text {
		gap: var(--wp--custom--hero--gap-short);
	}

	.ip-hero__text::before {
		display: none;
	}

	.ip-hero .ip-hero__lead {
		display: -webkit-box;
		overflow: hidden;
		-webkit-box-orient: vertical;
		-webkit-line-clamp: var(--wp--custom--hero--lines-short);
	}

	.ip-hero::after,
	.ip-hero-sound {
		display: none;
	}
}

@media (max-width: 900px) {
	.ip-hero {
		height: auto;
		padding: var(--wp--preset--spacing--80) 0;
	}

	.ip-hero__text {
		width: 100%;
	}

	.ip-hero__bg::after {
		background: var(--wp--custom--hero--scrim-mobile);
	}
}

@media (max-width: 600px) {
	.ip-hero .ip-btns {
		flex-direction: column;
		align-items: stretch;
		width: 100%;
	}

	.ip-hero .ip-btns .wp-block-button,
	.ip-hero .ip-btns .wp-block-button__link {
		width: 100%;
		text-align: center;
	}

	.ip-hero::after,
	.ip-hero-sound {
		display: none;
	}
}

/* ---------- 2. Notre promesse (.promise) ---------- */
.ip-promise {
	padding: var(--wp--preset--spacing--section) 0;
	background: var(--wp--preset--color--paper);
}

.ip-promise__grid {
	display: grid;
	grid-template-columns: var(--wp--custom--grid--text-media);
	column-gap: var(--wp--preset--spacing--80);
	align-items: start;
}

.ip-promise__text {
	max-width: var(--wp--style--global--content-size);
}

.ip-promise__text::before {
	margin-bottom: var(--wp--preset--spacing--40);
}

.ip-promise__text .ip-eyebrow > span {
	color: var(--wp--preset--color--accent-strong);
}

.wp-block-group.ip-promise__text h2 {
	margin-top: var(--wp--preset--spacing--50);
	color: var(--wp--preset--color--ink);
}

.wp-block-group.ip-promise__text p {
	margin-top: var(--wp--preset--spacing--50);
	line-height: var(--wp--custom--line-height--body);
}

.wp-block-group.ip-promise__text p.ip-eyebrow {
	margin-top: 0;
}

.wp-block-group.ip-promise__text p.ip-promise__lead {
	margin-top: var(--wp--preset--spacing--60);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--lead);
}

.ip-promise__text p.ip-promise__sub {
	color: var(--wp--preset--color--ink-2);
	font-size: var(--wp--preset--font-size--body);
}

.ip-promise__text p.ip-promise__chute {
	padding-top: var(--wp--preset--spacing--50);
	border-top: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--lead);
	font-weight: var(--wp--custom--font-weight--medium);
}

.ip-promise__media {
	position: sticky;
	top: var(--wp--custom--size--sticky-top);
}

.ip-promise__media-in {
	position: relative;
}

.ip-promise__media-in::before {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: var(--wp--preset--border-radius--base);
	background: var(--wp--preset--color--accent-wash);
	transform: translate(var(--wp--custom--offset--base), var(--wp--custom--offset--base));
}

.ip-promise__fig {
	position: relative;
	aspect-ratio: var(--wp--preset--aspect-ratio--4-5);
}

.ip-promise__fig .ip-cap {
	position: absolute;
	bottom: 0;
	left: 0;
	padding: var(--wp--preset--spacing--30);
	background: var(--wp--custom--overlay--caption);
}

@media (max-width: 1024px) {
	.ip-promise__media {
		position: static;
	}
}

@media (max-width: 900px) {
	.ip-promise__grid {
		grid-template-columns: 1fr;
	}

	.ip-promise__text {
		max-width: none;
	}

	.wp-block-group.ip-promise__grid > .ip-promise__media {
		margin-top: var(--wp--preset--spacing--70);
	}

	.ip-promise__fig {
		aspect-ratio: var(--wp--preset--aspect-ratio--3-2);
	}

	.ip-promise__media-in::before {
		transform: translate(var(--wp--custom--offset--half), var(--wp--custom--offset--half));
	}
}

@media (max-width: 600px) {
	.ip-promise__media-in::before {
		display: none;
	}
}

/* ---------- 3. Nos expertises (.exp) ---------- */
.ip-exp {
	padding: var(--wp--preset--spacing--section) 0;
	background: var(--wp--preset--color--paper-2);
}

.ip-exp__head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--40);
	padding-bottom: var(--wp--preset--spacing--50);
	border-bottom: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
}

.wp-block-group.ip-exp .ip-wrap > .ip-exp__head {
	margin-bottom: var(--wp--preset--spacing--70);
}

/* Index « 01 — 06 » : ink-2 sur paper-2 (design-system.md §6.2, règle 6 bis). */
.ip-exp__idx {
	color: var(--wp--preset--color--ink-2);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--sm);
	line-height: var(--wp--custom--line-height--body);
}

.ip-exp__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--custom--border--hair);
	border: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
	background: var(--wp--preset--color--line);
}

.wp-block-group.ip-exp__grid > * {
	margin: 0;
}

.ip-exp__item {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
	padding: var(--wp--preset--spacing--60);
	background: var(--wp--preset--color--paper);
	transition: background var(--wp--custom--motion--menu);
}

.ip-exp__item:hover {
	background: var(--wp--preset--color--brand-wash);
}

.ip-exp__n {
	color: var(--wp--preset--color--muted);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	line-height: var(--wp--custom--line-height--body);
}

.ip-exp__icon {
	width: var(--wp--custom--icon--size);
	height: var(--wp--custom--icon--size);
	color: var(--wp--preset--color--brand-strong);
}

.ip-exp__icon svg {
	display: block;
	width: 100%;
	height: 100%;
}

.ip-exp__icon svg path {
	fill: none;
	stroke: currentColor;
	stroke-width: var(--wp--custom--icon--stroke);
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* .h3 de la maquette : interligne du texte courant (pas celui des titres). */
.ip-exp__item h3 {
	line-height: var(--wp--custom--line-height--body);
}

.ip-exp__item p:not(.ip-exp__n) {
	color: var(--wp--preset--color--ink-2);
	font-size: var(--wp--preset--font-size--body);
	line-height: var(--wp--custom--line-height--body);
}

@media (max-width: 900px) {
	.ip-exp__grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 600px) {
	.ip-exp__grid {
		grid-template-columns: 1fr;
	}
}

@media (prefers-reduced-motion: reduce) {
	.ip-exp__item {
		transition: none;
	}
}

/* Marges de flux de WordPress neutralisées dans les sections 4 à 9 et le footer. */
.wp-block-group.ip-sol > *,
.wp-block-group.ip-sol__band > *,
.wp-block-group.ip-sol__panel > *,
.wp-block-group.ip-why > *,
.wp-block-group.ip-why__in > *,
.wp-block-group.ip-why__body > *,
.wp-block-group.ip-why__pillars > *,
.wp-block-group.ip-pillar > *,
.wp-block-group.ip-stats > *,
.wp-block-group.ip-stats__grid > *,
.wp-block-group.ip-stat > *,
.wp-block-group.ip-ss > *,
.wp-block-group.ip-ss .ip-wrap > *,
.wp-block-group.ip-ss__head > *,
.wp-block-group.ip-ss__title > *,
.wp-block-group.ip-ss__grid > *,
.wp-block-group.ip-ss__card > *,
.wp-block-group.ip-ss__body > *,
.wp-block-group.ip-news > *,
.wp-block-group.ip-news .ip-wrap > *,
.wp-block-group.ip-news__grid > *,
.wp-block-group.ip-news__col > *,
.wp-block-group.ip-cta-sec > *,
.wp-block-group.ip-cta-sec .ip-wrap > *,
.wp-block-group.ip-cta__in > *,
.wp-block-group.ip-ftr > *,
.wp-block-group.ip-ftr .ip-wrap > *,
.wp-block-group.ip-ftr__grid > *,
.wp-block-group.ip-ftr__col > *,
.wp-block-group.ip-ftr__legal > * {
	margin-block: 0;
}

/* Lien « voir tout » (.see-all), commun aux sections. */
.ip-see-all {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--body);
	font-weight: var(--wp--custom--font-weight--medium);
	line-height: var(--wp--custom--line-height--body);
}

.ip-see-all a {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--20);
	color: var(--wp--preset--color--brand-strong);
	text-decoration: none;
}

.ip-see-all .arw,
.ip-sol__link .arw,
.ip-news__all .arw {
	display: inline-block;
	transition: transform var(--wp--custom--motion--menu);
}

.ip-see-all a:hover .arw,
.ip-news__all a:hover .arw {
	transform: translateX(var(--wp--preset--spacing--10));
}

/* Étiquette (.tag) hors méga-menu : texte ink-2 sur paper-2 (design-system.md §6.2, règle 6 bis). */
.ip-tag-box {
	align-self: flex-start;
	padding: var(--wp--custom--menu--tag-py) var(--wp--custom--menu--tag-px);
	border-radius: var(--wp--preset--border-radius--base);
	background: var(--wp--preset--color--paper-2);
	color: var(--wp--preset--color--ink-2);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	line-height: var(--wp--custom--line-height--body);
	white-space: nowrap;
}

/* ---------- 4. Nos solutions (.sol-head, .sol-band, .sol) ---------- */
.ip-sol__head {
	padding: var(--wp--preset--spacing--section) 0 var(--wp--preset--spacing--70);
	background: var(--wp--preset--color--paper);
	text-align: center;
}

.wp-block-group.ip-sol__head .ip-wrap > * {
	margin-block: 0;
}

.wp-block-group.ip-sol__head .ip-wrap > h2 {
	margin-top: var(--wp--preset--spacing--30);
}

.ip-sol__band {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
}

.ip-sol__panel {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: var(--wp--preset--spacing--30);
	min-height: var(--wp--custom--panel--height);
	padding: var(--wp--preset--spacing--80) var(--wp--preset--spacing--60);
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--on-accent);
	transition: box-shadow var(--wp--custom--motion--menu);
}

.ip-sol__panel:hover {
	box-shadow: inset 0 0 0 9999px var(--wp--custom--overlay--light);
}

.ip-sol__n {
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	line-height: var(--wp--custom--line-height--body);
	text-transform: uppercase;
	opacity: var(--wp--custom--opacity--meta);
}

.ip-sol__panel h3 {
	color: inherit;
	font-size: var(--wp--preset--font-size--h-2);
	font-weight: var(--wp--custom--font-weight--bold);
	line-height: var(--wp--custom--line-height--head);
	letter-spacing: var(--wp--custom--letter-spacing--head);
}

.ip-sol__panel p:not(.ip-sol__n):not(.ip-sol__link) {
	font-size: var(--wp--preset--font-size--body);
	line-height: var(--wp--custom--line-height--body);
	opacity: var(--wp--custom--opacity--text);
}

.wp-block-group.ip-sol__panel > .ip-sol__link {
	align-self: flex-start;
	margin-top: var(--wp--preset--spacing--40);
	font-family: var(--wp--preset--font-family--display);
	font-weight: var(--wp--custom--font-weight--medium);
	line-height: var(--wp--custom--line-height--body);
}

.ip-sol__link a {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--20);
	padding-bottom: var(--wp--preset--spacing--10);
	border-bottom: var(--wp--custom--border--hair) solid currentColor;
	color: var(--wp--preset--color--on-accent);
	text-decoration: none;
}

.ip-sol__link a:hover {
	color: var(--wp--preset--color--on-accent);
}

.ip-sol__panel:hover .ip-sol__link .arw {
	transform: translateX(var(--wp--custom--motion-extra--arrow));
}

@media (max-width: 900px) {
	.ip-sol__band {
		grid-template-columns: 1fr;
	}

	.ip-sol__panel {
		min-height: var(--wp--custom--panel--height-sm);
	}
}

/* ---------- 5. Pourquoi nous choisir (.why) ---------- */
.ip-why {
	overflow-x: hidden;
	padding: var(--wp--preset--spacing--section) 0;
	background: var(--wp--preset--color--paper);
}

.ip-why__in {
	display: grid;
	grid-template-columns: var(--wp--custom--grid--why);
	gap: var(--wp--preset--spacing--80);
	align-items: start;
	max-width: var(--wp--style--global--wide-size);
	margin: 0 auto;
	padding-right: var(--wp--preset--spacing--gutter);
}

.ip-why__media {
	margin-left: calc((100% - 100vw) / 2);
}

.ip-why__fig {
	display: flex;
	align-items: flex-end;
	aspect-ratio: var(--wp--preset--aspect-ratio--3-4);
	border-radius: 0 var(--wp--preset--border-radius--base) var(--wp--preset--border-radius--base) 0;
}

.ip-why__body {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--60);
}

.ip-pillar {
	display: grid;
	grid-template-columns: var(--wp--custom--grid--num) 1fr;
	gap: var(--wp--preset--spacing--20) var(--wp--preset--spacing--40);
	padding: var(--wp--preset--spacing--50) 0;
	border-top: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
}

.ip-pillar__num {
	color: var(--wp--preset--color--brand);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--sm);
	line-height: var(--wp--custom--line-height--body);
}

.ip-pillar h3 {
	line-height: var(--wp--custom--line-height--body);
}

.ip-pillar p:not(.ip-pillar__num) {
	grid-column: 2;
	color: var(--wp--preset--color--ink-2);
	line-height: var(--wp--custom--line-height--body);
}

@media (max-width: 900px) {
	.ip-why__in {
		grid-template-columns: 1fr;
		padding-left: var(--wp--preset--spacing--gutter);
	}

	.ip-why__media {
		order: -1;
		margin-left: 0;
	}

	.ip-why__fig {
		aspect-ratio: var(--wp--preset--aspect-ratio--3-2);
		border-radius: var(--wp--preset--border-radius--base);
	}
}

/* ---------- 6. Chiffres clés (.stats) ---------- */
.ip-stats {
	padding: var(--wp--preset--spacing--80) 0;
	background: var(--wp--preset--color--paper-2);
}

.ip-stats__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
}

.ip-stat {
	padding: 0 var(--wp--preset--spacing--50);
	border-left: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
}

.ip-stat:first-child {
	border-left: 0;
}

.ip-stat__value {
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--stat);
	font-weight: var(--wp--custom--font-weight--bold);
	line-height: var(--wp--custom--line-height--head);
	letter-spacing: var(--wp--custom--letter-spacing--head);
}

.ip-stat.is-wait .ip-stat__value {
	color: var(--wp--preset--color--muted);
}

.wp-block-group.ip-stat > .ip-stat__label {
	margin-top: var(--wp--preset--spacing--30);
	color: var(--wp--preset--color--ink-2);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--sm);
	letter-spacing: var(--wp--custom--letter-spacing--caps);
	line-height: var(--wp--custom--line-height--body);
	text-transform: uppercase;
}

@media (max-width: 700px) {
	.ip-stats__grid {
		grid-template-columns: repeat(2, 1fr);
		gap: var(--wp--preset--spacing--60) 0;
	}

	.ip-stat:nth-child(odd) {
		border-left: 0;
	}
}

/* ---------- 7. Success Stories (.ss) ---------- */
.ip-ss {
	padding: var(--wp--preset--spacing--section) 0;
	background: var(--wp--preset--color--paper);
}

.ip-ss__head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--40);
}

.wp-block-group.ip-ss .ip-wrap > .ip-ss__head,
.wp-block-group.ip-ss .ip-wrap > .ip-ss__media {
	margin-bottom: var(--wp--preset--spacing--70);
}

.ip-ss__title::before {
	content: "";
	display: block;
	width: var(--wp--custom--border--rule-width);
	height: var(--wp--custom--border--rule-height);
	border-radius: var(--wp--preset--border-radius--pill);
	background: var(--wp--preset--color--accent);
}

.wp-block-group.ip-ss__title > h2 {
	margin-top: var(--wp--preset--spacing--40);
	color: var(--wp--preset--color--ink);
}

.wp-block-group.ip-ss__head > .ip-see-all {
	margin-top: var(--wp--preset--spacing--40);
}

.ip-ss__media {
	position: relative;
	display: flex;
	align-items: flex-end;
	aspect-ratio: var(--wp--preset--aspect-ratio--21-9);
}

.ip-ss__media .ip-cap {
	position: relative;
	z-index: 1;
	background: var(--wp--custom--overlay--caption);
}

/* Bouton lecture (.play), décoratif tant que la vidéo n'est pas fournie. */
.ip-ss__media.ip-ph::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: var(--wp--custom--play--size);
	height: var(--wp--custom--play--size);
	border-radius: var(--wp--preset--border-radius--pill);
	background: var(--wp--preset--color--accent);
	transform: translate(-50%, -50%);
}

.ip-ss__media.ip-ph::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: var(--wp--custom--play--width);
	height: var(--wp--custom--play--height);
	margin-left: var(--wp--custom--play--nudge);
	background: var(--wp--preset--color--on-accent);
	clip-path: polygon(0 0, 100% 50%, 0 100%);
	transform: translate(-50%, -50%);
}

.ip-ss__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--preset--spacing--50);
}

.ip-ss__card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
	border-radius: var(--wp--preset--border-radius--base);
	background: var(--wp--preset--color--paper);
	transition: border-color var(--wp--custom--motion--menu), transform var(--wp--custom--motion--menu);
}

.ip-ss__card:hover {
	border-color: var(--wp--preset--color--accent);
	transform: translateY(calc(-1 * var(--wp--custom--motion-extra--lift)));
}

.ip-ss__card > .ip-ph,
.ip-ss__card > .wp-block-image {
	display: flex;
	align-items: flex-end;
	aspect-ratio: var(--wp--preset--aspect-ratio--4-3);
	border: 0;
	border-radius: 0;
}

.ip-ss__card .ip-cap {
	background: var(--wp--custom--overlay--caption);
}

.ip-ss__body {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--wp--preset--spacing--30);
	padding: var(--wp--preset--spacing--50);
}

.ip-ss__body h3 {
	color: var(--wp--preset--color--muted);
	line-height: var(--wp--custom--line-height--body);
}

@media (max-width: 900px) {
	.ip-ss__grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 700px) {
	.ip-ss__head {
		flex-direction: column;
		align-items: flex-start;
	}
}

@media (max-width: 600px) {
	.ip-ss__grid {
		grid-template-columns: 1fr;
	}
}

/* ---------- 8. Actualités (.news) ---------- */
.ip-news {
	padding: var(--wp--preset--spacing--section) 0;
	background: var(--wp--preset--color--paper-2);
}

.wp-block-group.ip-news .ip-wrap > .ip-news__head {
	margin-bottom: var(--wp--preset--spacing--70);
	padding-bottom: var(--wp--preset--spacing--40);
	border-bottom: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
}

.ip-news__head .ip-eyebrow > span {
	color: var(--wp--preset--color--accent-strong);
}

.ip-news__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--preset--spacing--80);
}

.wp-block-group.ip-news__grid > .ip-news__col:not(:first-child) {
	padding-left: var(--wp--preset--spacing--60);
	border-left: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
}

.wp-block-group.ip-news__col > h3 {
	margin-bottom: var(--wp--preset--spacing--50);
	color: var(--wp--preset--color--ink);
	line-height: var(--wp--custom--line-height--body);
}

.ip-news__col .wp-block-query,
.ip-news__col .wp-block-post-template,
.ip-news__col .wp-block-query-no-results {
	margin: 0;
	padding: 0;
	list-style: none;
}

.ip-news__col .wp-block-post-template > li,
.ip-news__col .wp-block-query-no-results > * {
	margin: 0;
}

/* Élément d'actualité (.news-item) : placeholder (lien) ou article (Query Loop). */
.ip-news__item {
	margin: 0;
	line-height: var(--wp--custom--line-height--body);
}

.ip-news__item > a,
.ip-news__col .wp-block-post-template > li {
	display: block;
	padding: var(--wp--preset--spacing--40) 0;
	border-top: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
	text-decoration: none;
	transition: background var(--wp--custom--motion--menu), padding var(--wp--custom--motion--menu);
}

.ip-news__item > a:hover,
.ip-news__col .wp-block-post-template > li:hover {
	padding-right: var(--wp--preset--spacing--30);
	padding-left: var(--wp--preset--spacing--30);
	border-radius: var(--wp--preset--border-radius--base);
	background: var(--wp--preset--color--accent-wash);
}

/* Date (.d) et titre (.t) : ink-2 sur paper-2 (design-system.md §6.2, règle 6 bis). */
.ip-news__item .d,
.ip-news__col .wp-block-post-date {
	display: block;
	color: var(--wp--preset--color--ink-2);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	line-height: var(--wp--custom--line-height--body);
}

.ip-news__item .t,
.ip-news__col .wp-block-post-title {
	display: block;
	margin: var(--wp--preset--spacing--10) 0 0;
	color: var(--wp--preset--color--ink-2);
	font-family: var(--wp--preset--font-family--text);
	font-size: var(--wp--preset--font-size--body);
	font-weight: var(--wp--custom--font-weight--medium);
	letter-spacing: normal;
	line-height: var(--wp--custom--line-height--body);
}

.ip-news__col .wp-block-post-title a {
	color: inherit;
}

.wp-block-group.ip-news__col > .ip-news__all {
	margin-top: var(--wp--preset--spacing--50);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--sm);
	font-weight: var(--wp--custom--font-weight--medium);
	line-height: var(--wp--custom--line-height--body);
}

.ip-news__all a {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--20);
	color: var(--wp--preset--color--accent-strong);
	text-decoration: none;
}

@media (max-width: 900px) {
	.ip-news__grid {
		grid-template-columns: repeat(2, 1fr);
		gap: var(--wp--preset--spacing--60);
	}

	.wp-block-group.ip-news__grid > .ip-news__col:not(:first-child) {
		padding-top: var(--wp--preset--spacing--60);
		padding-left: 0;
		border-top: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
		border-left: 0;
	}

	.wp-block-group.ip-news__grid > .ip-news__col:nth-child(2) {
		padding-top: 0;
		border-top: 0;
	}
}

@media (max-width: 600px) {
	.ip-news__grid {
		grid-template-columns: 1fr;
	}

	.wp-block-group.ip-news__grid > .ip-news__col:nth-child(2) {
		padding-top: var(--wp--preset--spacing--60);
		border-top: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
	}
}

/* ---------- 9. Appel à l'action (.cta-sec) : fond accent (= marque par défaut, ADR-0006) ---------- */
.ip-cta-sec {
	position: relative;
	overflow: hidden;
	padding: var(--wp--preset--spacing--section) 0;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--on-accent);
}

/* Plaque décorative (.cta-plaque). */
.ip-cta-sec::before {
	content: "";
	position: absolute;
	top: calc(var(--wp--custom--plaque--size) / -3);
	right: calc(var(--wp--custom--plaque--size) / -6);
	width: var(--wp--custom--plaque--size);
	height: var(--wp--custom--plaque--size);
	border-radius: var(--wp--preset--border-radius--base);
	background: var(--wp--custom--overlay--light);
}

.ip-cta__in {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--wp--preset--spacing--50);
	max-width: var(--wp--custom--width--narrow);
	margin: 0 auto;
	text-align: center;
}

.ip-cta__in h2 {
	color: inherit;
}

.ip-cta__in p {
	font-size: var(--wp--preset--font-size--lead);
	line-height: var(--wp--custom--line-height--body);
	opacity: var(--wp--custom--opacity--lead);
}

.ip-cta-sec .ip-btns {
	justify-content: center;
}

.ip-cta-sec .ip-btns .wp-block-button:not(.is-style-outline) .wp-block-button__link {
	background: var(--wp--preset--color--on-accent);
	color: var(--wp--preset--color--accent);
}

.ip-cta-sec .ip-btns .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover {
	background: var(--wp--preset--color--on-accent);
	color: var(--wp--preset--color--accent-strong);
}

.ip-cta-sec .ip-btns .wp-block-button.is-style-outline .wp-block-button__link {
	border-color: var(--wp--preset--color--on-accent);
	color: var(--wp--preset--color--on-accent);
}

.ip-cta-sec .ip-btns .wp-block-button.is-style-outline .wp-block-button__link:hover {
	background: var(--wp--custom--overlay--light);
	color: var(--wp--preset--color--on-accent);
}

/* ---------- Footer (.ftr) ---------- */
.ip-ftr {
	padding: var(--wp--preset--spacing--section) 0 0;
	border-top: var(--wp--custom--border--footer-top) solid var(--wp--preset--color--brand);
	background: var(--wp--preset--color--paper-2);
}

.ip-ftr__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(var(--wp--custom--grid--min), 1fr));
	gap: var(--wp--preset--spacing--70);
}

.ip-ftr .ip-logo {
	font-size: var(--wp--preset--font-size--logo-lg);
}

.wp-block-group.ip-ftr__col > .ip-logo {
	margin-bottom: var(--wp--preset--spacing--40);
}

/* Titres de colonne (.ftr h4) : ink-2 sur paper-2 (règle 6 bis). */
.wp-block-group.ip-ftr__col > h4 {
	margin: 0 0 var(--wp--preset--spacing--40);
	color: var(--wp--preset--color--ink-2);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	font-weight: var(--wp--custom--font-weight--regular);
	letter-spacing: var(--wp--custom--letter-spacing--caps);
	line-height: var(--wp--custom--line-height--body);
	text-transform: uppercase;
}

.ip-ftr__text {
	color: var(--wp--preset--color--ink-2);
	line-height: var(--wp--custom--line-height--body);
}

.ip-ftr__links {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--20);
	margin: 0;
	padding: 0;
	list-style: none;
}

.ip-ftr__links li {
	margin: 0;
	line-height: var(--wp--custom--line-height--body);
}

.ip-ftr__links a {
	color: var(--wp--preset--color--ink-2);
	text-decoration: none;
}

.ip-ftr__links a:hover {
	color: var(--wp--preset--color--brand-strong);
}

.ip-ftr__legal {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--30) var(--wp--preset--spacing--60);
	padding: var(--wp--preset--spacing--50) 0 var(--wp--preset--spacing--60);
	border-top: var(--wp--custom--border--hair) solid var(--wp--preset--color--line);
	color: var(--wp--preset--color--ink-2);
	font-size: var(--wp--preset--font-size--micro);
	line-height: var(--wp--custom--line-height--body);
}

.wp-block-group.ip-ftr .ip-wrap > .ip-ftr__legal {
	margin-top: var(--wp--preset--spacing--80);
}

@media (max-width: 640px) {
	.ip-ftr__grid {
		grid-template-columns: 1fr;
	}
}

/* ---------- Apparition au défilement ([data-reveal] de la maquette) : assets/js/reveal.js ----------
   La classe html.ip-reveal-on est posée en tête de page (inc/reveal.php) : les éléments sont masqués dès
   le premier affichage, comme dans la maquette, puis révélés à 12 % de visibilité. */
html.ip-reveal-on :is(.ip-hero__text, .ip-promise__text, .ip-promise__media, .ip-exp__head, .ip-exp__item, .ip-sol__head .ip-wrap, .ip-sol__panel, .ip-why__media, .ip-why__body, .ip-stats__grid, .ip-ss__head, .ip-ss__media, .ip-ss__card, .ip-news__head, .ip-news__col, .ip-cta__in, .ip-reveal) {
	opacity: 0;
	transform: translateY(var(--wp--custom--motion--reveal-y));
	transition: opacity var(--wp--custom--motion--reveal) ease, transform var(--wp--custom--motion--reveal) ease;
}

html.ip-reveal-on :is(.ip-hero__text, .ip-promise__text, .ip-promise__media, .ip-exp__head, .ip-exp__item, .ip-sol__head .ip-wrap, .ip-sol__panel, .ip-why__media, .ip-why__body, .ip-stats__grid, .ip-ss__head, .ip-ss__media, .ip-ss__card, .ip-news__head, .ip-news__col, .ip-cta__in, .ip-reveal).is-in {
	opacity: 1;
	transform: none;
}

@media (prefers-reduced-motion: reduce) {
	.ip-sol__panel,
	.ip-ss__card,
	.ip-news__item > a,
	.ip-news__col .wp-block-post-template > li,
	.ip-see-all .arw,
	.ip-sol__link .arw,
	.ip-news__all .arw {
		transition: none;
	}
}

/* ---------- Formulaires ip/form (.news du footer ; états : design-system.md §10.2) ---------- */
.ip-form__hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.ip-form--newsletter {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--20);
}

.ip-form input[type="email"],
.ip-form input[type="text"],
.ip-form textarea {
	padding: var(--wp--custom--header--cta-py) var(--wp--preset--spacing--30);
	border: var(--wp--custom--border--hair) solid var(--wp--preset--color--muted);
	border-radius: var(--wp--preset--border-radius--base);
	background: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--text);
	font-size: var(--wp--preset--font-size--sm);
	line-height: normal;
}

.ip-form--newsletter input[type="email"] {
	flex: 1;
	min-width: var(--wp--custom--form--field-min);
}

.ip-form input::placeholder {
	color: var(--wp--preset--color--muted);
}

.ip-form input:hover,
.ip-form textarea:hover {
	border-color: var(--wp--preset--color--ink-2);
}

.ip-form input:focus-visible,
.ip-form textarea:focus-visible {
	border-color: var(--wp--preset--color--brand-strong);
}

.ip-form button[type="submit"] {
	padding: var(--wp--custom--header--cta-py) var(--wp--preset--spacing--50);
	border: 0;
	border-radius: var(--wp--preset--border-radius--base);
	background: var(--wp--preset--color--brand);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--sm);
	font-weight: var(--wp--custom--font-weight--medium);
	line-height: normal;
	cursor: pointer;
}

.ip-form button[type="submit"]:hover {
	background: var(--wp--preset--color--brand-strong);
}

.ip-form__msg {
	flex-basis: 100%;
	margin: 0;
	padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40);
	border-radius: var(--wp--preset--border-radius--base);
	font-size: var(--wp--preset--font-size--sm);
}

.ip-form__msg.is-success {
	background: var(--wp--custom--status--success-wash);
	color: var(--wp--custom--status--success);
}

.ip-form__msg.is-error {
	border-left: var(--wp--custom--menu--tag-py) solid var(--wp--custom--status--error);
	background: var(--wp--custom--status--error-wash);
	color: var(--wp--preset--color--ink);
}

/* ---------- Médias réels à la place des emplacements (.ph) : mêmes ratios et rayons ---------- */
.wp-block-image.ip-promise__fig,
.wp-block-image.ip-why__fig,
.wp-block-image.ip-mega__fig,
.ip-ss__card > .wp-block-image,
.wp-block-video.ip-ss__media {
	margin: 0;
	overflow: hidden;
}

.wp-block-image.ip-promise__fig,
.wp-block-image.ip-mega__fig,
.wp-block-video.ip-ss__media {
	border-radius: var(--wp--preset--border-radius--base);
}

.wp-block-image.ip-promise__fig img,
.wp-block-image.ip-why__fig img,
.wp-block-image.ip-mega__fig img,
.ip-ss__card > .wp-block-image img,
.wp-block-video.ip-ss__media video {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* ---------- Sections sombres (P-010) : variation de section « surface-sombre » (styles/sections/surface-sombre.json, ADR-0006 amendé) ----------
   La variation remappe les tokens de couleur (ink, ink-2, muted, line, paper, paper-2, washes) ; ici, la texture
   et les couleurs qui ne passent pas par ces tokens (bleus foncés, illisibles sur fond sombre). */
.wp-block-group.is-style-surface-sombre {
	background-image: var(--wp--custom--surface--texture);
	background-size: var(--wp--custom--surface--texture-size);
}

/* Petits textes sur fond sombre en on-dark-soft (ADR-0006, règle 5) ; liens et icônes en bleu clair. */
.is-style-surface-sombre .ip-eyebrow > span,
.is-style-surface-sombre .ip-news__head .ip-eyebrow > span {
	color: var(--wp--custom--surface--text-2);
}

.is-style-surface-sombre .ip-news__all a,
.is-style-surface-sombre .ip-exp__icon {
	color: var(--wp--custom--surface--link);
}

.is-style-surface-sombre .ip-news__all a:hover,
.is-style-surface-sombre .ip-ftr__links a:hover {
	color: var(--wp--custom--surface--link-hover);
}

.is-style-surface-sombre .ip-form input:focus-visible,
.is-style-surface-sombre .ip-form textarea:focus-visible {
	border-color: var(--wp--custom--surface--link);
}

.is-style-surface-sombre :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline-color: var(--wp--custom--surface--link);
}

.ip-hero.is-style-surface-sombre .ip-hero-sound {
	border-color: var(--wp--custom--surface--line);
	background: var(--wp--custom--surface--control);
	color: var(--wp--custom--surface--text-2);
}

.ip-hero.is-style-surface-sombre .ip-hero-sound:hover {
	color: var(--wp--custom--surface--text);
}

/* ---------- Bouton de lecture (.play) sur les vidéos avec image de couverture (P-010, inc/video.php) ----------
   Affiché seulement quand le script est chargé (.ip-play-ready) ; sans script, les contrôles natifs restent. */
.ip-play {
	display: none;
	position: absolute;
	top: 50%;
	left: 50%;
	z-index: 1;
	width: var(--wp--custom--play--size);
	height: var(--wp--custom--play--size);
	padding: 0;
	border: 0;
	border-radius: var(--wp--preset--border-radius--pill);
	background: var(--wp--preset--color--accent);
	transform: translate(-50%, -50%);
	cursor: pointer;
	transition: background var(--wp--custom--motion--menu);
}

.ip-play::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: var(--wp--custom--play--width);
	height: var(--wp--custom--play--height);
	margin-left: var(--wp--custom--play--nudge);
	background: var(--wp--preset--color--on-accent);
	clip-path: polygon(0 0, 100% 50%, 0 100%);
	transform: translate(-50%, -50%);
}

.ip-play:hover {
	background: var(--wp--preset--color--accent-strong);
}

.wp-block-video.ip-play-ready {
	position: relative;
}

.ip-play-ready:not(.is-playing) .ip-play {
	display: block;
}
