/* ==========================================================================
   Welko 2026-2027 : feuille de style principale
   Charte : rouge #FF2700 · rose #FF94EF · noir #000000
   Typographies : Newsreader (titres, italique) · Outfit (texte)
   Aucune dépendance : pas de framework, pas de police d'icônes.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Tokens
   -------------------------------------------------------------------------- */
:root {
	--red: #FF2700;
	--red-dark: #D92000;
	--pink: #FF94EF;
	--pink-100: #FFF4FB;
	--pink-200: #FFE6F8;
	--pink-300: #FFC9F5;
	--black: #000000;
	--ink: #111111;
	--grey-700: #3C3C3C;
	--grey-500: #6B6B6B;
	--grey-300: #BDBDBD;
	--grey-200: #E6E6E6;
	--grey-100: #F2F2F2;
	--white: #FFFFFF;

	--bg: var(--white);
	--fg: var(--ink);
	--accent: var(--red);

	--font-sans: "Outfit", "Outfit Fallback", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--font-serif: "Newsreader", "Newsreader Fallback", Georgia, "Times New Roman", serif;

	--fs-hero: clamp(3.4rem, 8.5vw, 8rem);
	--fs-h1: clamp(2.6rem, 5.6vw, 5rem);
	--fs-h2: clamp(2rem, 4.2vw, 3.6rem);
	--fs-h3: clamp(1.5rem, 2.6vw, 2.25rem);
	--fs-h4: clamp(1.25rem, 1.8vw, 1.5rem);
	--fs-body: 1.0625rem;
	--fs-small: 0.9rem;
	--fs-eyebrow: 0.78rem;

	--container: 1240px;
	--narrow: 840px;
	--gutter: clamp(1rem, 4vw, 2.5rem);
	--section: clamp(4rem, 8vw, 7.5rem);
	--gap: clamp(1rem, 2.5vw, 2rem);

	--radius: 1.5rem;
	--radius-sm: 0.875rem;
	--pill: 999px;

	--header-h: 76px;
	--ease: cubic-bezier(0.2, 0.7, 0.2, 1);
	--dur: 0.45s;
	--shadow: 0 1rem 2.5rem rgba(0, 0, 0, 0.08);

	--fs-display-xl: clamp(3.3rem, 12.5vw, 13rem);
	--fs-display-md: clamp(2.8rem, 7.5vw, 7rem);
	--fs-display-sm: clamp(2.1rem, 5vw, 4.4rem);
	--texture: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='720' height='720' viewBox='0 0 720 720' fill='none' stroke='%23ffffff' stroke-opacity='.075' stroke-width='1'%3E%3Cpath d='M-40 90c130-70 250 70 380 0s250-70 420 0'/%3E%3Cpath d='M-40 170c130-70 250 70 380 0s250-70 420 0'/%3E%3Cpath d='M-40 250c130-70 250 70 380 0s250-70 420 0'/%3E%3Cpath d='M-40 330c130-70 250 70 380 0s250-70 420 0'/%3E%3Cpath d='M-40 410c130-70 250 70 380 0s250-70 420 0'/%3E%3Cpath d='M-40 490c130-70 250 70 380 0s250-70 420 0'/%3E%3Cpath d='M-40 570c130-70 250 70 380 0s250-70 420 0'/%3E%3Cpath d='M-40 650c130-70 250 70 380 0s250-70 420 0'/%3E%3C/svg%3E");
}

@font-face {
	font-family: "Outfit Fallback";
	src: local("Arial");
	size-adjust: 103%;
	ascent-override: 98%;
}
@font-face {
	font-family: "Newsreader Fallback";
	src: local("Georgia");
	size-adjust: 96%;
}

/* --------------------------------------------------------------------------
   2. Base
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 1rem); }
body {
	margin: 0;
	background: var(--bg);
	color: var(--fg);
	font-family: var(--font-sans);
	font-size: var(--fs-body);
	line-height: 1.6;
	font-weight: 400;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	padding-top: var(--header-h);
	overflow-x: clip;
}
img, video, svg { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 0.15em; }
p a:not([class]), .wysiwyg a:not([class]), .entry-content a:not(.wp-block-button__link):not(.card__link) { color: var(--red); text-decoration: underline; }
p a:not([class]):hover, .wysiwyg a:not([class]):hover { color: var(--black); }
h1, h2, h3, h4, h5, h6 {
	font-family: var(--font-serif);
	font-style: italic;
	font-weight: 400;
	line-height: 1.05;
	letter-spacing: -0.01em;
	margin: 0 0 0.5em;
	text-wrap: balance;
	color: var(--black);
}
h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); }
h4 { font-size: var(--fs-h4); }
h5, h6 { font-family: var(--font-sans); font-style: normal; font-weight: 600; font-size: 1.1rem; }
h1 em, h2 em, h3 em, h4 em, .section__title em, .page-hero__title em, .hero__title em { color: var(--red); font-style: italic; }
.section--dark h2 em, .section--dark h1 em, .section--dark h3 em { color: var(--pink); }
p { margin: 0 0 1.1em; }
ul, ol { padding-left: 1.2em; }
button { font: inherit; color: inherit; cursor: pointer; }
input, textarea, select { font: inherit; }
::selection { background: var(--pink); color: var(--black); }
:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; border-radius: 4px; }
.sr-only { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.hp { position: absolute; left: -9999px; opacity: 0; height: 0; width: 0; }
.skip-link { position: absolute; top: -100px; left: 1rem; z-index: 2000; background: var(--black); color: var(--white); padding: 0.75rem 1.25rem; border-radius: var(--pill); }
.skip-link:focus { top: 1rem; }
.text-muted { color: var(--grey-500); }
[hidden] { display: none !important; }

.container { width: min(100% - 2 * var(--gutter), var(--container)); margin-inline: auto; }
.container--narrow { max-width: var(--narrow); }
.section { padding-block: var(--section); }
.section--pink { background: var(--pink-100); }
.section--dark { background: var(--black); color: var(--white); }
.section--dark h1, .section--dark h2, .section--dark h3, .section--dark p { color: var(--white); }
.section__head { display: flex; align-items: end; justify-content: space-between; gap: var(--gap); margin-bottom: clamp(1.5rem, 3vw, 2.5rem); }
.section__head .section__title { margin: 0; }
.section__head-link { flex-shrink: 0; }
.section__title { font-size: var(--fs-display-sm); font-style: normal; line-height: 0.95; letter-spacing: -0.02em; margin-bottom: clamp(1.25rem, 3vw, 2.25rem); }
.section__title em { font-style: italic; }
.section__more { margin: clamp(1.5rem, 4vw, 2.5rem) 0 0; text-align: center; }
.eyebrow { font-family: var(--font-sans); font-size: var(--fs-eyebrow); font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--red); margin: 0 0 0.9rem; display: flex; align-items: center; gap: 0.5rem; }
.section--dark .eyebrow { color: var(--pink); }
.eyebrow .icon { width: 1.1em; height: 1.1em; }
.eyebrow a { color: inherit; text-decoration: none; }
.grid { display: grid; gap: var(--gap); }
.grid--3 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
@media (min-width: 900px) { .grid--3 { grid-template-columns: repeat(3, 1fr); } }

.icon { display: inline-flex; width: 1.15em; height: 1.15em; vertical-align: -0.2em; flex: none; }
.icon svg { width: 100%; height: 100%; }

/* Petits libellés en capitales (coins d'écran, numéros, chapitres) */
.label { font-family: var(--font-sans); font-style: normal; font-size: 0.72rem; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase; line-height: 1.4; }
/* Titres d'affichage : Newsreader, lignes décalées */
.display { font-family: var(--font-serif); font-weight: 400; font-style: normal; line-height: 0.92; letter-spacing: -0.02em; margin: 0; text-wrap: balance; }
.display em { font-style: italic; color: var(--red); }
.display--xl { font-size: var(--fs-display-xl); }
.display--md { font-size: var(--fs-display-md); }
.display--sm { font-size: var(--fs-display-sm); }
.display__line { display: block; overflow: hidden; }
.display__line--2 { padding-left: 8vw; }
.display__line--3 { padding-left: 18vw; margin-top: 0.35em; }
.display__word { display: block; }
.display__sub { font-family: var(--font-sans); font-size: clamp(1rem, 2.4vw, 2rem); font-weight: 400; letter-spacing: 0.18em; text-transform: uppercase; line-height: 1.2; }
.js.is-ready .display__line .display__word { animation: lineUp 1s var(--ease) both; }
.js.is-ready .display__line--2 .display__word { animation-delay: 0.12s; }
.js.is-ready .display__line--3 .display__word { animation-delay: 0.24s; }
.js:not(.is-ready) .display__line .display__word { transform: translateY(110%); }
@keyframes lineUp { from { transform: translateY(110%); } to { transform: none; } }
/* Lien avec flèche */
.link-arrow { display: inline-flex; align-items: center; gap: 0.5rem; font-weight: 500; text-decoration: none; color: inherit; position: relative; padding-bottom: 0.2rem; }
.link-arrow::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: currentColor; transform: scaleX(1); transform-origin: left; transition: transform var(--dur) var(--ease); }
.link-arrow::before { content: "→"; order: 2; font-family: var(--font-sans); transition: transform var(--dur) var(--ease); }
.link-arrow:hover::before { transform: translateX(6px); }
.link-arrow:hover::after { transform: scaleX(0); transform-origin: right; }
.link-arrow--big { font-family: var(--font-serif); font-style: italic; font-size: var(--fs-h3); font-weight: 400; }
/* Chapitres en filigrane et texture des sections sombres */
.chapter { position: relative; }
.chapter::before { content: attr(data-chapter); position: absolute; right: -1vw; top: -0.1em; z-index: 0; font-family: var(--font-serif); font-style: italic; font-size: clamp(8rem, 26vw, 24rem); line-height: 1; color: var(--black); opacity: 0.045; pointer-events: none; user-select: none; }
.chapter--light::before { color: var(--white); opacity: 0.06; }
.chapter > * { position: relative; z-index: 1; }
.has-texture { background-image: var(--texture); background-size: 720px 720px; }

/* Motifs graphiques de la charte (extraits de la présentation Figma), recolorables via currentColor. */
.motif { display: block; background-color: currentColor; -webkit-mask: var(--motif) center / contain no-repeat; mask: var(--motif) center / contain no-repeat; pointer-events: none; }
.motif--burst { --motif: url("../img/figma/burst.svg"); aspect-ratio: 1; }
.motif--rings { --motif: url("../img/figma/rings.svg"); aspect-ratio: 1; }
.motif--sparkle { --motif: url("../img/figma/sparkle.svg"); aspect-ratio: 1063 / 1071; }
.motif--stripes { --motif: url("../img/figma/stripes.svg"); aspect-ratio: 1920 / 422; }
.motif--arcs { --motif: url("../img/figma/arcs.svg"); aspect-ratio: 1900 / 1912; }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes spin-reverse { to { transform: rotate(-360deg); } }
@keyframes breathe { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } }

/* --------------------------------------------------------------------------
   3. Boutons
   -------------------------------------------------------------------------- */
.btn, .wp-block-button__link, .nf-form-cont input[type="button"] {
	display: inline-flex;
	align-items: center;
	gap: 0.6em;
	padding: 0.85em 1.5em;
	border-radius: var(--pill);
	border: 2px solid var(--black);
	background: var(--black);
	color: var(--white);
	font-family: var(--font-sans);
	font-weight: 500;
	font-size: 1rem;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	transition: background var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.btn .icon { transition: transform var(--dur) var(--ease); }
.btn:hover .icon--arrow, .btn:focus-visible .icon--arrow { transform: translateX(4px); }
.btn:hover .icon--down { transform: translateY(4px); }
.btn--dark:hover, .btn--dark:focus-visible { background: var(--red); border-color: var(--red); color: var(--white); }
.btn--accent { background: var(--red); border-color: var(--red); }
.btn--accent:hover, .btn--accent:focus-visible { background: var(--black); border-color: var(--black); }
.btn--light { background: var(--white); border-color: var(--white); color: var(--black); }
.btn--light:hover, .btn--light:focus-visible { background: var(--pink); border-color: var(--pink); color: var(--black); }
.btn--outline { background: transparent; color: var(--black); }
.btn--outline:hover, .btn--outline:focus-visible { background: var(--black); color: var(--white); }
.section--dark .btn--outline { color: var(--white); border-color: var(--white); }
.section--dark .btn--outline:hover { background: var(--white); color: var(--black); }
.btn--sm { padding: 0.6em 1.1em; font-size: 0.92rem; }
.link-button { background: none; border: 0; padding: 0; color: inherit; text-decoration: underline; cursor: pointer; }

/* --------------------------------------------------------------------------
   4. Loader
   -------------------------------------------------------------------------- */
.loader { position: fixed; inset: 0; z-index: 3000; background: var(--black); display: grid; place-items: center; transition: opacity 0.5s var(--ease), visibility 0.5s; }
.loader.is-done { opacity: 0; visibility: hidden; pointer-events: none; }
.loader__mark { animation: loaderPulse 1.4s var(--ease) infinite; }
@keyframes loaderPulse { 0%, 100% { transform: scale(0.96); opacity: 0.85; } 50% { transform: scale(1.04); opacity: 1; } }
html:not(.js) .loader { display: none; }

/* --------------------------------------------------------------------------
   5. En-tête, navigation de bureau et menu plein écran (mobile)
   -------------------------------------------------------------------------- */
.site-header { position: fixed; top: 0; left: 0; right: 0; z-index: 1200; height: var(--header-h); color: var(--white); mix-blend-mode: difference; transition: transform var(--dur) var(--ease); }
.site-header.is-hidden { transform: translateY(-100%); }
.site-header.is-scrolled, .site-header.is-nav-open { mix-blend-mode: normal; background: var(--black); }
body.menu-open .site-header { mix-blend-mode: normal; background: transparent; }
.site-header__inner { width: min(100% - 2 * var(--gutter), var(--container)); margin-inline: auto; height: 100%; display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; }
.site-header__logo { display: block; flex: none; }
.site-header__logo img { width: 124px; height: auto; }
.site-header__actions { display: flex; align-items: center; gap: 1.25rem; margin-left: auto; }
.site-header__meta { margin: 0; opacity: 0.8; white-space: nowrap; }
.site-header__cta { background: var(--white); border-color: var(--white); color: var(--black); }
.site-header__cta:hover, .site-header__cta:focus-visible { background: var(--pink); border-color: var(--pink); color: var(--black); }

/* Navigation de bureau : liens en ligne, panneaux déroulants pleine largeur pour Conseil, Création et Web. */
.site-nav { display: none; }
.site-nav__list { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: clamp(1.1rem, 2vw, 2rem); }
.site-nav__link { position: relative; display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.4rem 0; background: none; border: 0; color: inherit; font-family: var(--font-sans); font-size: 0.95rem; font-weight: 500; letter-spacing: 0.01em; text-decoration: none; cursor: pointer; white-space: nowrap; }
.site-nav__link .icon { width: 0.65em; height: 0.65em; transition: transform var(--dur) var(--ease); }
.site-nav__link::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0.1rem; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform var(--dur) var(--ease); }
.site-nav__link:hover::after, .site-nav__link:focus-visible::after, .site-nav__link[aria-current="page"]::after, .site-nav__item.is-open > .site-nav__link::after { transform: scaleX(1); }
.site-nav__item.is-open > .site-nav__link .icon { transform: rotate(180deg); }
.site-nav__panel { position: absolute; left: 0; right: 0; top: 100%; background: var(--black); background-image: var(--texture); background-size: 720px 720px; color: var(--white); border-top: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 30px 60px rgba(0, 0, 0, 0.25); opacity: 0; visibility: hidden; transform: translateY(-8px); transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease), visibility var(--dur); }
.site-nav__item.is-open > .site-nav__panel { opacity: 1; visibility: visible; transform: none; }
.site-nav__panel-inner { width: min(100% - 2 * var(--gutter), var(--container)); margin-inline: auto; padding: 2.5rem 0 3rem; display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 2.2fr); gap: clamp(2rem, 4vw, 4rem); align-items: start; }
.site-nav__intro { position: relative; display: grid; gap: 0.75rem; align-content: start; padding-right: 2rem; border-right: 1px solid rgba(255, 255, 255, 0.1); min-height: 100%; }
.site-nav__index { margin: 0; opacity: 0.55; }
.site-nav__panel-title { margin: 0; color: var(--white); }
.site-nav__symbol { position: absolute; right: 2rem; top: 0; color: var(--pink); opacity: 0.8; }
.site-nav__symbol .icon { width: 2rem; height: 2rem; }
.site-nav__panel .menu__cols { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.5rem 2.5rem; }
.site-nav__panel .menu__col-title { font-size: 1.35rem; }
.site-nav__panel .menu__sublinks a { font-size: 0.98rem; }

.menu-toggle { display: inline-flex; align-items: center; gap: 0.7rem; background: none; border: 0; padding: 0.6rem 0.2rem; color: inherit; font-family: var(--font-sans); font-size: 0.78rem; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase; }
.menu-toggle__lines { display: flex; flex-direction: column; gap: 6px; width: 28px; }
.menu-toggle__lines i { display: block; height: 2px; background: currentColor; border-radius: 2px; transition: transform var(--dur) var(--ease), width var(--dur) var(--ease); }
.menu-toggle[aria-expanded="true"] .menu-toggle__lines i:first-child { transform: translateY(4px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] .menu-toggle__lines i:last-child { transform: translateY(-4px) rotate(-45deg); }
.menu-toggle:hover .menu-toggle__lines i:last-child { width: 60%; margin-left: auto; }
.menu-toggle[aria-expanded="true"]:hover .menu-toggle__lines i:last-child { width: 100%; }

/* Menu plein écran, réservé aux écrans de moins de 1024px. */
.menu { position: fixed; inset: 0; z-index: 1100; background: var(--black); color: var(--white); overflow-y: auto; opacity: 0; transform: translateY(-2%); transition: opacity 0.5s var(--ease), transform 0.5s var(--ease); background-image: var(--texture); background-size: 720px 720px; }
.menu.is-open { opacity: 1; transform: none; }
.menu__inner { position: relative; width: min(100% - 2 * var(--gutter), var(--container)); margin-inline: auto; min-height: 100%; padding: calc(var(--header-h) + 1.5rem) 0 3rem; display: grid; grid-template-columns: 1fr; gap: 2rem; align-items: start; }
.menu__list { list-style: none; margin: 0; padding: 0; }
.menu__item { border-top: 1px solid rgba(255, 255, 255, 0.12); opacity: 0; transform: translateY(14px); transition: opacity 0.6s var(--ease), transform 0.6s var(--ease); }
.menu__item:last-child { border-bottom: 1px solid rgba(255, 255, 255, 0.12); }
.menu.is-open .menu__item { opacity: 1; transform: none; }
.menu.is-open .menu__item:nth-child(1) { transition-delay: 0.08s; } .menu.is-open .menu__item:nth-child(2) { transition-delay: 0.14s; } .menu.is-open .menu__item:nth-child(3) { transition-delay: 0.2s; } .menu.is-open .menu__item:nth-child(4) { transition-delay: 0.26s; } .menu.is-open .menu__item:nth-child(5) { transition-delay: 0.32s; } .menu.is-open .menu__item:nth-child(6) { transition-delay: 0.38s; } .menu.is-open .menu__item:nth-child(7) { transition-delay: 0.44s; }
.menu__link { display: flex; align-items: baseline; gap: 1.25rem; width: 100%; padding: 0.55em 0; background: none; border: 0; color: var(--white); font-family: var(--font-serif); font-size: clamp(2.2rem, 7vw, 3.4rem); line-height: 1.05; letter-spacing: -0.02em; text-align: left; text-decoration: none; transition: color var(--dur), padding-left var(--dur) var(--ease); }
.menu__link:hover, .menu__link:focus-visible, .menu__item.is-open > .menu__link { color: var(--pink); padding-left: 0.3em; }
.menu__item--secondary .menu__link { font-size: clamp(1.5rem, 4.5vw, 2.2rem); font-style: italic; color: rgba(255, 255, 255, 0.75); }
.menu__index { opacity: 0.55; min-width: 2.2em; }
.menu__plus { margin-left: auto; opacity: 0.6; transition: transform var(--dur) var(--ease); }
.menu__plus .icon { width: 0.5em; height: 0.5em; }
.menu__item.is-open .menu__plus { transform: rotate(45deg); }
.menu__sub { display: none; }
.menu__item.is-open .menu__sub { display: block; padding: 0.5rem 0 1.5rem; }
.menu__cols { display: grid; gap: 2rem; }
.menu__col-title { display: block; font-family: var(--font-serif); font-style: italic; font-size: 1.5rem; color: var(--white); text-decoration: none; margin-bottom: 0.75rem; }
.menu__col-title:hover { color: var(--pink); }
.menu__sublinks { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.25rem; }
.menu__sublinks a { display: flex; gap: 0.7rem; align-items: flex-start; padding: 0.5rem 0.6rem; margin-left: -0.6rem; border-radius: var(--radius-sm); color: rgba(255, 255, 255, 0.85); text-decoration: none; transition: background var(--dur), color var(--dur); }
.menu__sublinks a:hover, .menu__sublinks a:focus-visible { background: rgba(255, 255, 255, 0.08); color: var(--white); }
.menu__sublinks img { width: 22px; height: 22px; filter: invert(1); opacity: 0.85; margin-top: 0.15rem; }
.menu__sublinks small { display: block; font-size: 0.8rem; color: rgba(255, 255, 255, 0.55); }
.menu__aside { display: grid; gap: 1rem; font-size: 1rem; border-top: 1px solid rgba(255, 255, 255, 0.12); padding-top: 1.5rem; }
.menu__aside-label { color: var(--pink); margin: 0; }
.menu__address { font-style: normal; line-height: 1.5; }
.menu__contact { line-height: 1.8; margin: 0; }
.menu__contact a { text-decoration: none; }
.menu__contact a:hover { color: var(--pink); }
.menu__symbols { display: flex; gap: 0.75rem; color: var(--pink); margin: 0; }
.social--light a { border-color: rgba(255, 255, 255, 0.3); color: var(--white); }
body.menu-open { overflow: hidden; }

@media (min-width: 1024px) {
	.site-nav { display: block; margin-left: clamp(1.5rem, 3vw, 3rem); }
	.menu-toggle, .menu { display: none; }
}
@media (max-width: 1279px) {
	.site-header__meta { display: none; }
}
@media (max-width: 1023px) {
	.site-header__cta { display: none; }
}

/* --------------------------------------------------------------------------
   6. Fil d'ariane, en-têtes de page
   -------------------------------------------------------------------------- */
.breadcrumb { padding: 1.25rem 0 0; font-size: 0.85rem; color: var(--grey-500); }
.breadcrumb ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.35rem; }
.breadcrumb li + li::before { content: "/"; margin-right: 0.35rem; color: var(--grey-300); }
.breadcrumb a { text-decoration: none; }
.breadcrumb a:hover { color: var(--red); }
.breadcrumb [aria-current] { color: var(--black); }
.page-header, .page-hero { padding: clamp(2.5rem, 6vw, 5rem) 0 clamp(1.5rem, 4vw, 3rem); }
.page-header__title, .page-hero__title { font-size: var(--fs-display-md); font-style: normal; line-height: 0.95; letter-spacing: -0.02em; max-width: 16ch; margin-bottom: 0.35em; }
.page-header__title em, .page-hero__title em { font-style: italic; }
.page-hero .eyebrow { color: var(--black); font-size: var(--fs-eyebrow); letter-spacing: 0.14em; opacity: 0.7; }
.page-hero__intro { font-size: 1.25rem; max-width: 60ch; color: var(--grey-700); }
.page-header__desc { max-width: 60ch; }

/* --------------------------------------------------------------------------
   7. Accueil
   -------------------------------------------------------------------------- */
.hero--v2 { position: relative; background: var(--black); color: var(--white); margin-top: calc(-1 * var(--header-h)); padding-top: var(--header-h); overflow: hidden; }
.hero--v2 .hero__inner { position: relative; min-height: calc(100svh - var(--header-h)); display: grid; grid-template-rows: auto 1fr auto; padding: clamp(1rem, 3vh, 2.5rem) 0 clamp(1.5rem, 4vh, 3rem); }
.hero__label { display: flex; justify-content: space-between; gap: 1rem; margin: 0; opacity: 0.75; }
.hero--v2 .hero__title { align-self: center; color: var(--white); margin: clamp(1rem, 4vh, 3rem) 0; position: relative; z-index: 2; }
.hero--v2 .hero__title em { color: var(--pink); }
.hero--v2 .hero__media { position: absolute; right: -20vw; top: 50%; width: clamp(340px, 62vh, 740px); transform: translateY(-50%); z-index: 1; color: var(--white); }
.hero__burst { width: 100%; animation: spin 120s linear infinite; }
.hero__foot { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 1.5rem; position: relative; z-index: 2; }
.hero__scroll { display: inline-flex; align-items: center; gap: 0.5rem; text-decoration: none; opacity: 0.8; }
.hero__scroll .icon { animation: nudge 1.8s ease-in-out infinite; }
@keyframes nudge { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(4px); } }
.hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem; }
.link-arrow--light { color: var(--white); }
.marquee { overflow: hidden; border-top: 1px solid var(--grey-200); border-bottom: 1px solid var(--grey-200); padding: 1rem 0; -webkit-mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }
.marquee--dark { border-color: rgba(255, 255, 255, 0.15); color: var(--white); }
.marquee__track { display: flex; width: max-content; gap: 1.5rem; align-items: center; animation: marquee 48s linear infinite; }
.marquee:hover .marquee__track { animation-play-state: paused; }
.marquee__word { font-family: var(--font-serif); font-style: italic; font-size: clamp(1.6rem, 3vw, 2.6rem); white-space: nowrap; }
.marquee__word--sans { font-family: var(--font-sans); font-style: normal; font-weight: 500; font-size: clamp(1rem, 1.8vw, 1.5rem); letter-spacing: 0.14em; text-transform: uppercase; }
.marquee__dot { color: var(--pink); font-size: 1.4rem; display: inline-flex; }
.marquee__dot .icon { width: 1em; height: 1em; }
@keyframes marquee { to { transform: translateX(-50%); } }

/* Manifeste */
.manifeste { background: var(--white); }
.manifeste__inner { max-width: 1100px; }
.manifeste__label { margin: 0 0 1.5rem; opacity: 0.6; }
.manifeste__text { font-family: var(--font-serif); font-size: clamp(1.9rem, 4.6vw, 4.2rem); line-height: 1.12; letter-spacing: -0.015em; margin: 0 0 2rem; text-wrap: balance; }
.manifeste__text .word { color: var(--grey-300); transition: color 0.35s var(--ease); }
.manifeste__text .word.is-on { color: var(--black); }
.js:not(.is-ready) .manifeste__text .word { color: var(--black); }

/* Pôles en lignes numérotées */
.poles { background: var(--white); padding-top: 0; }
.poles .section__head { display: block; margin-bottom: clamp(1.5rem, 3vw, 2.5rem); }
.poles .section__head .label { opacity: 0.6; margin: 0 0 1rem; }
.poles__list { list-style: none; margin: 0; padding: 0; border-bottom: 1px solid var(--grey-200); }
.pole-row { border-top: 1px solid var(--grey-200); }
.pole-row__link { display: grid; grid-template-columns: 4rem minmax(0, 1fr) minmax(0, 1.4fr) 5rem; align-items: center; gap: clamp(1rem, 3vw, 3rem); padding: clamp(1.5rem, 3vw, 2.5rem) var(--gutter); margin-inline: calc(-1 * var(--gutter)); text-decoration: none; color: var(--ink); position: relative; isolation: isolate; transition: color var(--dur); }
.pole-row__link::before { content: ""; position: absolute; inset: 0; background: var(--black); transform: scaleY(0); transform-origin: bottom; transition: transform var(--dur) var(--ease); z-index: -1; }
.pole-row__link:hover, .pole-row__link:focus-visible { color: var(--white); }
.pole-row__link:hover::before, .pole-row__link:focus-visible::before { transform: scaleY(1); transform-origin: top; }
.pole-row__index { opacity: 0.5; }
.pole-row__title { font-family: var(--font-serif); font-size: clamp(2.2rem, 6vw, 5.4rem); line-height: 1; letter-spacing: -0.02em; }
.pole-row__link:hover .pole-row__title { font-style: italic; color: var(--pink); }
.pole-row__text { font-size: 1rem; color: var(--grey-500); max-width: 48ch; transition: color var(--dur); }
.pole-row__link:hover .pole-row__text { color: rgba(255, 255, 255, 0.8); }
.pole-row__icon { display: inline-flex; align-items: center; gap: 0.5rem; justify-content: flex-end; color: var(--red); }
.pole-row__icon .icon { width: 1.5rem; height: 1.5rem; transition: transform var(--dur) var(--ease); }
.pole-row__link:hover .pole-row__icon { color: var(--pink); }
.pole-row__link:hover .pole-row__icon .icon--arrow { transform: translateX(6px); }

/* Projets : mosaïque asymétrique */
.projets-home { color: var(--white); }
.section__head--split { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: var(--gap); margin-bottom: clamp(2rem, 5vw, 4rem); }
.section__count { font-family: var(--font-sans); font-style: normal; font-size: 0.8rem; letter-spacing: 0.14em; vertical-align: top; margin-left: 0.5rem; opacity: 0.6; }
.section__intro { margin: 0; max-width: 34ch; color: rgba(255, 255, 255, 0.7); }
.mosaic { display: grid; grid-template-columns: repeat(12, 1fr); gap: clamp(1.25rem, 3vw, 2.5rem) var(--gap); align-items: start; }
.mosaic .card { grid-column: span 12; }
.mosaic .card__media { border-radius: var(--radius-sm); aspect-ratio: 4 / 3; }
.mosaic .card__title { color: var(--white); font-size: var(--fs-h3); }
.mosaic .card__desc { color: rgba(255, 255, 255, 0.6); }
.mosaic .card__meta { display: flex; gap: 1rem; margin: 0; color: rgba(255, 255, 255, 0.55); }
.mosaic .card__more { color: var(--pink); }
.card__meta { display: flex; gap: 1rem; margin: 0; color: var(--grey-500); }
@media (min-width: 900px) {
	.mosaic .mosaic__item--1 { grid-column: 1 / 8; } .mosaic__item--1 .card__media { aspect-ratio: 16 / 10; }
	.mosaic .mosaic__item--2 { grid-column: 9 / 13; margin-top: 8rem; } .mosaic__item--2 .card__media { aspect-ratio: 4 / 5; }
	.mosaic .mosaic__item--3 { grid-column: 2 / 6; margin-top: 2rem; } .mosaic__item--3 .card__media { aspect-ratio: 1; }
	.mosaic .mosaic__item--4 { grid-column: 7 / 13; } .mosaic__item--4 .card__media { aspect-ratio: 16 / 10; }
	.mosaic .mosaic__item--5 { grid-column: 1 / 7; margin-top: 3rem; } .mosaic__item--5 .card__media { aspect-ratio: 4 / 3; }
	.mosaic .mosaic__item--6 { grid-column: 8 / 12; margin-top: 7rem; } .mosaic__item--6 .card__media { aspect-ratio: 4 / 5; }
	.mosaic .mosaic__item--7 { grid-column: 1 / 5; margin-top: 1rem; } .mosaic__item--7 .card__media { aspect-ratio: 1; }
	.mosaic .mosaic__item--8 { grid-column: 6 / 13; } .mosaic__item--8 .card__media { aspect-ratio: 16 / 10; }
}
.section__more--left { text-align: left; margin-top: clamp(2.5rem, 6vw, 5rem); }

/* Touche-à-tout */
.touche__inner { display: grid; grid-template-columns: 0.9fr 1.1fr; gap: clamp(2rem, 6vw, 6rem); align-items: center; }
.touche__text .label { opacity: 0.6; margin-bottom: 1rem; }
.touche__body { font-size: 1.1rem; max-width: 56ch; }
.touche__body ul { columns: 2; column-gap: 2rem; padding-left: 1.2em; }
.touche__media { margin: 0; }
.touche__motif { width: min(100%, 480px); margin-inline: auto; color: var(--red); animation: breathe 7s ease-in-out infinite; }

/* Équipe */
.team-v2 { position: relative; background: var(--black); color: var(--white); overflow: hidden; }
.team-v2__media { position: absolute; inset: 0; }
.team-v2__media img { width: 100%; height: 100%; object-fit: cover; opacity: 0.45; }
.team-v2__inner { position: relative; z-index: 1; min-height: min(80vh, 720px); display: flex; flex-direction: column; justify-content: flex-end; padding: clamp(4rem, 10vw, 8rem) 0 clamp(2.5rem, 5vw, 4rem); }
.team-v2__inner .label { color: var(--pink); margin-bottom: 1rem; }
.team-v2__inner .section__title { color: var(--white); max-width: 12ch; }
.team-v2__inner .section__title em { color: var(--pink); }
.team-v2__text { font-size: 1.15rem; max-width: 46ch; color: rgba(255, 255, 255, 0.85); margin-bottom: 1.75rem; }
.team-v2__inner .btn { align-self: flex-start; }
.marquee--names { position: relative; z-index: 1; border-color: rgba(255, 255, 255, 0.15); padding: 0.85rem 0; }
.marquee__name { font-family: var(--font-serif); font-size: 1.5rem; white-space: nowrap; display: inline-flex; align-items: baseline; gap: 0.6rem; }
.marquee__name small { font-family: var(--font-sans); font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase; opacity: 0.6; }

/* Chiffres clés */
.stats { padding: clamp(2rem, 4vw, 3rem) 0 clamp(3rem, 6vw, 5rem); }
.stats__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); border-top: 1px solid var(--black); }
.stat { padding: 1.5rem 1.5rem 1.5rem 0; border-top: 1px solid var(--grey-200); margin-top: -1px; display: grid; gap: 0.5rem; align-content: start; transition-delay: var(--d, 0ms); }
.stat + .stat { border-left: 1px solid var(--grey-200); padding-left: 1.5rem; }
.stat__num { font-family: var(--font-serif); font-size: clamp(3rem, 6.5vw, 6rem); line-height: 0.9; letter-spacing: -0.03em; font-variant-numeric: tabular-nums; }
.stat__num small { font-size: 0.4em; color: var(--red); font-style: italic; margin-left: 0.1em; }
.stat__label { color: var(--grey-500); }

/* "super souple" : ondulation de graisse, lettre par lettre (police variable) */
.letter { display: inline-block; animation: souple 3.2s ease-in-out infinite; animation-delay: calc(var(--i, 0) * 0.12s); }
@keyframes souple { 0%, 100% { font-weight: 400; } 50% { font-weight: 640; } }

/* Pile de portraits (équipe) */
.pile { position: absolute; right: var(--gutter); bottom: clamp(2.5rem, 5vw, 4rem); width: clamp(180px, 22vw, 300px); aspect-ratio: 4 / 5; z-index: 1; }
.pile__item { position: absolute; inset: 0; margin: 0; border-radius: var(--radius-sm); overflow: hidden; background: var(--pink-100); box-shadow: 0 1.5rem 3rem rgba(0, 0, 0, 0.45); border: 3px solid var(--white); transform: rotate(0deg) translate(0, 0); transition: transform 0.9s var(--ease); transition-delay: calc(var(--i, 0) * 70ms); }
.pile__item img { width: 100%; height: 100%; object-fit: cover; }
.pile__item figcaption { position: absolute; left: 0.75rem; bottom: 0.6rem; padding: 0.3em 0.7em; border-radius: var(--pill); background: var(--white); color: var(--black); }
.pile.is-visible .pile__item { transform: rotate(var(--r)) translate(var(--x), var(--y)); }
.pile:hover .pile__item { transform: rotate(calc(var(--r) * 1.6)) translate(calc(var(--x) * 1.8), calc(var(--y) * 1.8)); }
.team-v2__inner { position: relative; }
@media (max-width: 1023px) { .pile { display: none; } }

/* Grilles classiques (listes projets et actualités) */
.projets-grid, .actus-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: var(--gap); grid-auto-flow: dense; }
@media (min-width: 900px) { .projets-grid, .actus-grid { grid-template-columns: repeat(3, 1fr); } .card--large { grid-column: span 2; } }
/* Les cartes simples remplissent la hauteur de la rangée quand une grande carte l'allonge. */
.projets-grid .card:not(.card--large) .card__media, .actus-grid .card:not(.card--large) .card__media { flex: 1 0 auto; }

/* --------------------------------------------------------------------------
   8. Cartes
   -------------------------------------------------------------------------- */
.card { position: relative; }
.card__link { display: flex; flex-direction: column; height: 100%; text-decoration: none; color: inherit; }
.card__media { position: relative; margin: 0; border-radius: var(--radius); overflow: hidden; aspect-ratio: 4 / 3; background: var(--grey-100); isolation: isolate; }
.card--large .card__media { aspect-ratio: 16 / 9; }
.card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.8s var(--ease); }
.card__link:hover .card__media img, .card__link:focus-visible .card__media img { transform: scale(1.05); }
.card__placeholder { display: block; width: 100%; height: 100%; background: linear-gradient(135deg, var(--pink-200), var(--pink-100)); }
.card__badges { position: absolute; top: 0.9rem; left: 0.9rem; display: flex; flex-wrap: wrap; gap: 0.35rem; z-index: 1; }
.badge { display: inline-block; padding: 0.3em 0.75em; border-radius: var(--pill); background: var(--white); color: var(--black); font-size: 0.75rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; }
.card--video .card__media::after { content: ""; position: absolute; inset: 0; margin: auto; width: 4rem; height: 4rem; border-radius: 50%; background: var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E") center / 1.6rem no-repeat; box-shadow: var(--shadow); }
.card__body { padding: 1rem 0.25rem 0; display: flex; flex-direction: column; gap: 0.35rem; flex: 1; }
.card__title { font-size: var(--fs-h4); margin: 0; line-height: 1.15; }
.card--large .card__title { font-size: var(--fs-h3); }
.card__desc { margin: 0; color: var(--grey-500); font-size: 0.95rem; }
.card__date { font-size: 0.8rem; color: var(--grey-500); text-transform: uppercase; letter-spacing: 0.06em; }
.card__more { margin-top: auto; padding-top: 0.5rem; font-weight: 500; color: var(--red); display: inline-flex; align-items: center; gap: 0.4rem; opacity: 0; transform: translateY(4px); transition: opacity var(--dur), transform var(--dur) var(--ease); }
.card__link:hover .card__more, .card__link:focus-visible .card__more { opacity: 1; transform: none; }
.card--cta { border-radius: var(--radius); overflow: hidden; }
.card--cta .card__link { padding: clamp(1.5rem, 3vw, 2.25rem); justify-content: space-between; gap: 1.5rem; min-height: 100%; background: var(--red); color: var(--white); }
.card--cta-light .card__link { background: var(--pink); color: var(--black); }
.card--cta-light .btn--light { background: var(--black); border-color: var(--black); color: var(--white); }
.card__cta-title { font-family: var(--font-serif); font-style: italic; font-size: var(--fs-h3); line-height: 1.05; margin: 0; }
.card--cta .btn { align-self: flex-start; }
.card--membre .card__media { aspect-ratio: 1; }
.card__img--hover { position: absolute; inset: 0; opacity: 0; transition: opacity var(--dur); }
.card--membre .card__link:hover .card__img--hover { opacity: 1; }
.card--simple .card__body { padding: 1.5rem; border: 1px solid var(--grey-200); border-radius: var(--radius); }

/* Listes à défilement horizontal (remplacent Swiper) */
.scroller { display: flex; gap: var(--gap); list-style: none; margin: 0 calc(-1 * var(--gutter)); padding: 0.5rem var(--gutter) 1rem; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--pink) transparent; -webkit-overflow-scrolling: touch; }
.scroller > * { flex: 0 0 min(80vw, 340px); scroll-snap-align: start; }
.scroller::-webkit-scrollbar { height: 6px; }
.scroller::-webkit-scrollbar-thumb { background: var(--pink); border-radius: 3px; }

/* --------------------------------------------------------------------------
   9. Projets
   -------------------------------------------------------------------------- */
.filters { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 1.5rem; }
.filter { padding: 0.55em 1.1em; border-radius: var(--pill); border: 2px solid var(--grey-200); background: var(--white); color: var(--black); font-weight: 500; transition: all var(--dur) var(--ease); }
.filter:hover { border-color: var(--black); }
.filter.is-active { background: var(--black); border-color: var(--black); color: var(--white); }
.projets-list { padding-top: 1rem; }
.projets-list__count { margin-bottom: 1.5rem; }
.projets-list.is-loading .projets-grid { opacity: 0.4; pointer-events: none; }

.projet-hero { position: relative; background: var(--black); color: var(--white); padding: clamp(2rem, 6vw, 5rem) 0 clamp(2.5rem, 6vw, 5rem); overflow: hidden; margin-top: calc(-1 * var(--header-h)); padding-top: calc(var(--header-h) + clamp(2rem, 6vw, 5rem)); min-height: 70svh; display: grid; align-items: end; }
.projet-hero__bg { position: absolute; inset: 0; }
.projet-hero__bg img { width: 100%; height: 100%; object-fit: cover; opacity: 0.55; }
.projet-hero__bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0.2), rgba(0,0,0,0.75)); }
.projet-hero__inner { position: relative; z-index: 1; }
.projet-hero .breadcrumb { color: rgba(255, 255, 255, 0.7); padding-top: 0; }
.projet-hero .breadcrumb [aria-current] { color: var(--white); }
.projet-hero__title { color: var(--white); font-size: var(--fs-display-md); font-style: normal; line-height: 0.95; letter-spacing: -0.02em; margin-top: 1.5rem; max-width: 14ch; }
.projet-hero__details { font-size: clamp(1.1rem, 2vw, 1.5rem); max-width: 50ch; color: rgba(255, 255, 255, 0.85); }
.projet-hero__badges { display: flex; gap: 0.4rem; flex-wrap: wrap; }
.projet-hero .badge { background: var(--pink); }
.projet-intro { display: grid; gap: clamp(2rem, 5vw, 4rem); padding-block: clamp(2rem, 4vw, 3rem) 0; align-items: start; }
.meta-table { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: var(--gap); margin: 0; border-top: 1px solid var(--black); }
.meta-table > div { padding-top: 1rem; border-top: 1px solid var(--grey-200); margin-top: -1px; }
.meta-table dt { margin: 0 0 0.4rem; opacity: 0.55; }
.meta-table dd { margin: 0; font-size: 1.05rem; font-weight: 500; }
.meta-table a { display: inline-flex; gap: 0.3rem; align-items: center; text-decoration: none; color: var(--red); }
.projet-intro__text { max-width: 60rem; }
.projet-intro__title { font-size: var(--fs-display-sm); font-style: normal; line-height: 0.98; letter-spacing: -0.02em; }
.projet-intro__cols, .projet-zone__cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: var(--gap); }
.projet-intro__img { grid-column: 1 / -1; margin: 0; border-radius: var(--radius); overflow: hidden; }
.projet-nav { position: sticky; top: var(--header-h); z-index: 20; background: rgba(255, 255, 255, 0.92); backdrop-filter: blur(10px); padding: 0.75rem 0; margin-top: var(--section); border-bottom: 1px solid var(--grey-200); }
.projet-nav ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 0.5rem; overflow-x: auto; scrollbar-width: none; }
.projet-nav a { white-space: nowrap; padding: 0.5em 1em; border-radius: var(--pill); text-decoration: none; font-size: 0.9rem; font-weight: 500; border: 1px solid var(--grey-200); }
.projet-nav a:hover, .projet-nav a.is-active { background: var(--black); color: var(--white); border-color: var(--black); }
.projet-zone { display: grid; grid-template-columns: minmax(0, 220px) 1fr; gap: clamp(2rem, 5vw, 4rem); padding-block: var(--section) 0; scroll-margin-top: calc(var(--header-h) + 5rem); }
.projet-zone__title { font-size: var(--fs-h2); }
.projet-zone__subtitle { font-size: 1.25rem; font-weight: 500; padding-bottom: 1rem; border-bottom: 2px solid var(--pink); margin-bottom: 1.5rem; }
.projet-zone__images { display: grid; gap: var(--gap); margin-top: 2rem; }
.projet-zone__images--2 { grid-template-columns: repeat(2, 1fr); }
.projet-zone__images--3 { grid-template-columns: repeat(3, 1fr); }
.projet-zone__images figure, .projet-galerie figure, .projet-quatre figure { margin: 0; border-radius: var(--radius); overflow: hidden; }
.projet-zone__images img, .projet-galerie img, .projet-quatre img { width: 100%; height: 100%; object-fit: cover; }
.projet-expertise { margin-top: var(--section); }
.projet-expertise__inner { display: grid; grid-template-columns: minmax(0, 320px) 1fr; gap: var(--gap); align-items: center; }
.projet-expertise__title { font-size: var(--fs-h3); margin: 0; }
.projet-expertise__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.6rem; }
.projet-expertise__list li { padding: 0.6em 1.2em; border-radius: var(--pill); background: var(--white); font-weight: 500; }
.projet-galerie, .projet-quatre, .projet-citation { padding-top: var(--section); }
.projet-galerie__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--gap); }
.projet-galerie__grid figure:nth-child(3n) { grid-column: 1 / -1; }
.projet-quatre__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--gap); }
.projet-citation blockquote { margin: 0; font-family: var(--font-serif); font-style: italic; font-size: var(--fs-h2); line-height: 1.15; max-width: 22ch; }
.projet-citation__right { margin-left: auto !important; text-align: right; color: var(--red); }
.projet-citation__left + .projet-citation__right, .projet-citation__right + .projet-citation__left { margin-top: 2rem !important; }
.projet-full { margin-top: var(--section); }
.projet-full img { width: 100%; }
.projet-cta { margin-top: var(--section); }
.projet-cta__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--gap); }
.projet-cta .section__title { margin: 0; }

/* --------------------------------------------------------------------------
   10. Actualités, articles
   -------------------------------------------------------------------------- */
.post__header { padding: clamp(2rem, 5vw, 4rem) 0 2rem; }
.post__header--compact { padding-bottom: 0.5rem; }
.post__header--compact .eyebrow { margin: 0; }
.post__title { font-size: var(--fs-display-md); font-style: normal; line-height: 0.95; letter-spacing: -0.02em; }
.post__updated { color: var(--grey-500); font-size: 0.9rem; }
.post__hero { margin: 0 auto 2rem; border-radius: var(--radius); overflow: hidden; }
.post__hero img { width: 100%; max-height: 70vh; object-fit: cover; }
.post__layout { display: grid; grid-template-columns: minmax(0, 200px) minmax(0, var(--narrow)); gap: clamp(2rem, 5vw, 5rem); justify-content: center; padding-bottom: var(--section); }
.post__aside { position: sticky; top: calc(var(--header-h) + 1.5rem); align-self: start; display: grid; gap: 1rem; }
.post__back { display: inline-flex; align-items: center; gap: 0.5rem; text-decoration: none; font-weight: 500; }
.post__back:hover { color: var(--red); }
.share { list-style: none; margin: 0; padding: 0; display: flex; gap: 0.5rem; }
.share a { display: grid; place-items: center; width: 2.5rem; height: 2.5rem; border-radius: 50%; border: 1px solid var(--grey-200); transition: all var(--dur); }
.share a:hover { background: var(--black); color: var(--white); border-color: var(--black); }
.share .icon { width: 1.1rem; height: 1.1rem; vertical-align: 0; }
.share-row { margin-top: 2rem; }
.related .grid { margin-top: 1rem; }
.pagination { display: flex; justify-content: center; margin: 3rem 0; }
.pagination .nav-links { display: flex; gap: 0.4rem; flex-wrap: wrap; }
.pagination a, .pagination span { display: inline-grid; place-items: center; min-width: 2.5rem; height: 2.5rem; padding: 0 0.75rem; border-radius: var(--pill); border: 1px solid var(--grey-200); text-decoration: none; }
.pagination .current { background: var(--black); color: var(--white); border-color: var(--black); }

/* --------------------------------------------------------------------------
   11. Agence, équipe, contact, 404
   -------------------------------------------------------------------------- */
.agence-intro { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--gap); align-items: end; }
.agence-intro__media { margin: 0; border-radius: var(--radius); overflow: hidden; }
.agence-intro__media--motif { position: relative; aspect-ratio: 16 / 10; background: var(--red); color: var(--white); }
.agence-intro__burst { position: absolute; right: -22%; top: 50%; width: 92%; transform: translateY(-50%); animation: spin-reverse 140s linear infinite; }
.agence-intro__caption { position: absolute; left: 1.5rem; bottom: 1.25rem; color: var(--white); opacity: 0.85; }
.agence-intro__chapo { font-family: var(--font-serif); font-style: italic; font-size: clamp(1.4rem, 2.2vw, 1.9rem); line-height: 1.3; }
.agence-texte { padding-top: var(--section); }
.agence-texte__cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: var(--gap); }
.agence-main { margin-top: var(--section); }
.agence-main__inner { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.agence-main__subtitle { font-family: var(--font-sans); font-style: normal; font-weight: 600; font-size: 1.1rem; text-transform: uppercase; letter-spacing: 0.06em; }
.agence-main__media { margin: 0; display: grid; place-items: center; color: var(--red); }
.agence-main__rings { width: min(100%, 520px); animation: breathe 9s ease-in-out infinite; }
.agence-pluri__inner { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap); align-items: center; }
.agence-pluri__media { position: relative; margin: 0; display: grid; place-items: center; color: var(--white); }
.agence-pluri__sparkle { width: min(100%, 460px); transform: rotate(calc(var(--scroll, 0) * 1.2deg)); transition: transform 0.2s linear; }
.agence-pluri .section__title { font-size: var(--fs-h2); }
.team-hero { margin: 0 auto; width: min(100% - 2 * var(--gutter), var(--container)); border-radius: var(--radius); overflow: hidden; }
.team-hero img { width: 100%; aspect-ratio: 1462 / 814; object-fit: cover; }
.membre { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 5rem); padding-block: clamp(2rem, 5vw, 4rem) var(--section); align-items: start; }
.membre__title { font-size: var(--fs-display-md); font-style: normal; line-height: 0.95; letter-spacing: -0.02em; }
.membre__media { position: sticky; top: calc(var(--header-h) + 1.5rem); margin: 0; border-radius: var(--radius); overflow: hidden; aspect-ratio: 4 / 5; background: var(--pink-100); }
.membre__img { width: 100%; height: 100%; object-fit: cover; }
.membre__img--hover { position: absolute; inset: 0; opacity: 0; transition: opacity var(--dur); }
.membre__media:hover .membre__img--hover { opacity: 1; }
.contact { display: grid; grid-template-columns: 1fr 1.1fr; gap: clamp(2rem, 5vw, 5rem); padding-block: clamp(2rem, 5vw, 4rem) var(--section); align-items: start; }
.contact__address { font-style: normal; display: grid; gap: 1.1rem; margin: 2rem 0; }
.contact__address p { margin: 0; }
.contact__address .eyebrow { margin-bottom: 0.2rem; }
.contact__address a:not(.btn) { text-decoration: none; }
.contact__address a:not(.btn):hover { color: var(--red); }
.contact__form { background: var(--pink-100); border-radius: var(--radius); padding: clamp(1.5rem, 3vw, 2.75rem); }
.social { list-style: none; margin: 0; padding: 0; display: flex; gap: 0.5rem; }
.social a { display: grid; place-items: center; width: 2.6rem; height: 2.6rem; border-radius: 50%; border: 1px solid currentColor; color: inherit; transition: all var(--dur); }
.social a:hover { background: var(--red); border-color: var(--red); color: var(--white); }
.social .icon { width: 1.1rem; height: 1.1rem; vertical-align: 0; }
.error404 { padding-block: clamp(3rem, 8vw, 6rem) var(--section); max-width: 48rem; }
.error404__title { font-size: var(--fs-display-md); font-style: normal; line-height: 0.95; letter-spacing: -0.02em; }
.error404__text { font-size: 1.2rem; color: var(--grey-700); }
.error404__actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin: 1.5rem 0 2rem; }
.search-form { display: flex; gap: 0.5rem; max-width: 32rem; }
.search-form input { flex: 1; padding: 0.75em 1.1em; border: 2px solid var(--grey-200); border-radius: var(--pill); }
.legal { padding-bottom: var(--section); }
.legal h2 { font-size: var(--fs-h3); margin-top: 2.5rem; }
.legal h3 { font-size: 1.35rem; margin-top: 2rem; }

/* --------------------------------------------------------------------------
   12. Avis Google, pied de page
   -------------------------------------------------------------------------- */
.reviews__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: var(--gap); margin-bottom: 2rem; }
.reviews__head .section__title { margin: 0; }
.reviews__actions { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.reviews__list > * { flex-basis: min(85vw, 380px); }
.review { background: var(--white); color: var(--ink); border-radius: var(--radius); padding: 1.5rem; display: flex; flex-direction: column; gap: 0.75rem; }
.review__head { display: flex; align-items: center; gap: 0.75rem; }
.review__avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
.review__name { margin: 0; font-weight: 600; }
.review__name a { text-decoration: none; }
.review__date { margin: 0; font-size: 0.85rem; color: var(--grey-500); }
.review__google { margin-left: auto; }
.review__google .icon { width: 1.5rem; height: 1.5rem; }
.review__stars { color: #F6B800; display: flex; gap: 0.1rem; margin: 0; }
.review__stars .icon { width: 1.1rem; height: 1.1rem; }
.review__text { font-size: 0.95rem; color: var(--grey-700); display: -webkit-box; -webkit-line-clamp: 7; -webkit-box-orient: vertical; overflow: hidden; }
.review__text p:last-child { margin: 0; }
.review.is-expanded .review__text { display: block; }

.site-footer { position: relative; overflow: hidden; background: var(--black); color: var(--white); padding: clamp(3rem, 6vw, 5rem) 0 2rem; background-image: var(--texture); background-size: 720px 720px; }
.site-footer .container { position: relative; z-index: 1; }
.site-footer a { color: inherit; text-decoration: none; }
.site-footer a:hover { color: var(--pink); }
.site-footer p a:not([class]) { color: inherit; text-decoration: none; }
.site-footer p a:not([class]):hover { color: var(--pink); }
.site-footer .social { display: flex; }
.footer-cta { display: block; position: static; padding-bottom: clamp(2rem, 5vw, 4rem); border-bottom: 1px solid rgba(255, 255, 255, 0.12); }
.footer-cta__motif { position: absolute; right: -8vw; top: -4rem; width: clamp(360px, 46vw, 760px); color: var(--white); opacity: 0.16; z-index: 0; transform-origin: 50% 50%; transition: transform 1.6s var(--ease), opacity 0.8s; }
.footer-cta:hover ~ * .footer-cta__motif, .footer-cta:hover .footer-cta__motif { transform: rotate(-8deg); opacity: 0.26; }
.footer-cta__label, .footer-cta__title { position: relative; z-index: 1; }
.footer-cta__label { display: block; margin-bottom: 1rem; color: var(--pink); }
.footer-cta__title { color: var(--white); display: flex; flex-wrap: wrap; align-items: center; gap: 0.2em; transition: color var(--dur); }
.footer-cta__title em { color: var(--pink); }
.footer-cta__arrow { display: inline-grid; place-items: center; width: 0.7em; height: 0.7em; border-radius: 50%; background: var(--red); color: var(--white); transition: transform var(--dur) var(--ease), background var(--dur); }
.footer-cta__arrow .icon { width: 50%; height: 50%; vertical-align: 0; }
.footer-cta:hover .footer-cta__title { color: var(--pink); }
.footer-cta:hover .footer-cta__arrow { transform: rotate(45deg); background: var(--pink); color: var(--black); }
.site-footer__grid { display: grid; grid-template-columns: 1.2fr 0.8fr 0.8fr 1.4fr; gap: var(--gap); padding: 3rem 0; }
.site-footer__label { color: var(--pink); margin: 0 0 1rem; }
.site-footer__col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5rem; font-size: 1.05rem; }
.site-footer__address { display: block; line-height: 1.5; margin-bottom: 1rem; }
.site-footer__contact { line-height: 1.8; }
.site-footer__rating { display: flex; align-items: center; gap: 0.5rem; margin: 0; }
.site-footer__rating .stars { display: inline-flex; color: #F6B800; }
.site-footer__rating .stars .icon { width: 1rem; height: 1rem; }
.site-footer__newsletter-title { font-family: var(--font-serif); font-style: italic; font-size: 1.6rem; line-height: 1.15; }
.site-footer__newsletter-title em { color: var(--pink); }
.newsletter { display: flex; flex-wrap: wrap; gap: 0.5rem; position: relative; }
.newsletter input[type="email"] { flex: 1 1 220px; padding: 0.8em 1.2em; border-radius: var(--pill); border: 2px solid rgba(255, 255, 255, 0.2); background: rgba(255, 255, 255, 0.06); color: var(--white); }
.newsletter input::placeholder { color: rgba(255, 255, 255, 0.5); }
.newsletter__msg { flex-basis: 100%; margin: 0.4rem 0 0; font-size: 0.9rem; color: var(--pink); min-height: 1.2em; }
.social--footer { margin-top: 1.75rem; }
.site-footer__mark { margin: 0 0 1.5rem; }
.site-footer__mark img { width: 150px; height: auto; }
.site-footer__bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; padding-top: 1.5rem; border-top: 1px solid rgba(255, 255, 255, 0.12); font-size: 0.9rem; color: rgba(255, 255, 255, 0.7); }
.site-footer__symbols { margin: 0; display: flex; gap: 0.75rem; color: var(--pink); }
.site-footer__legal { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 1.25rem; }
.site-footer__legal .link-button { text-decoration: none; }
.site-footer__legal .link-button:hover { color: var(--pink); }
.site-footer__copy { margin: 0; }
.clock { font-variant-numeric: tabular-nums; }

/* --------------------------------------------------------------------------
   13. Contenu Gutenberg et flexible ACF
   -------------------------------------------------------------------------- */
.entry-content, .flexible { margin-top: clamp(1.5rem, 3vw, 2.5rem); }
.entry-content { padding-inline: var(--gutter); }
.entry-content > * { max-width: var(--narrow); margin-left: auto; margin-right: auto; }
.entry-content > * + * { margin-top: 1.25rem; }
.entry-content > .alignwide { max-width: var(--container); }
.entry-content > .alignfull { max-width: none; width: auto; margin-inline: calc(-1 * var(--gutter)); }
.entry-content > .alignfull + .alignfull { margin-top: 0; }
.flexible { width: min(100% - 2 * var(--gutter), var(--container)); margin-inline: auto; }
.flexible > .alignfull { width: 100vw; max-width: none; margin-left: calc(50% - 50vw); }
.entry-content > .wp-block-cover.alignfull, .entry-content > .wp-block-group.alignfull { padding-left: var(--gutter); padding-right: var(--gutter); }
.page-content, .post__body { padding-bottom: var(--section); }
.page-content .entry-content:first-child { margin-top: 0; }
.post__body .entry-content { margin-top: 0; padding-inline: 0; }
.post__body .entry-content > .alignfull, .post__body .entry-content > .alignwide { max-width: 100%; margin-inline: 0; }
.wysiwyg > :first-child { margin-top: 0; }
.wysiwyg > :last-child { margin-bottom: 0; }
.wysiwyg h2, .entry-content h2 { font-size: var(--fs-h3); margin-top: 1.5em; }
.wysiwyg h3, .entry-content h3 { font-size: var(--fs-h4); margin-top: 1.5em; }
.wysiwyg img, .entry-content img { border-radius: var(--radius-sm); }
.wysiwyg ul, .entry-content ul:not([class]) { padding-left: 1.3em; }
.wysiwyg li, .entry-content li { margin-bottom: 0.35em; }
.wysiwyg li::marker, .entry-content li::marker { color: var(--red); }

/* Blocs : titres et textes dans les sections pleine largeur */
.wp-block-cover { border-radius: 0; }
.wp-block-cover.alignfull .wp-block-cover__inner-container, .wp-block-group.alignfull > .wp-block-group__inner-container { max-width: var(--container); margin-inline: auto; }
.entry-content .wp-block-columns { gap: var(--gap); }
.wp-block-column.is-style-shadow { background: var(--white); border-radius: var(--radius); box-shadow: var(--shadow); padding: clamp(1.25rem, 2.5vw, 2rem); }
.is-style-rounded, .is-style-rounded img { border-radius: var(--radius); overflow: hidden; }
.wp-block-separator { border: 0; height: 2px; background: var(--red); margin-inline: 0; }
.wp-block-separator.aligncenter, .wp-block-separator.has-text-align-center { margin-inline: auto; }
.wp-block-separator.is-style-dots { background: none; text-align: left; }
.wp-block-separator.is-style-dots::before { color: var(--red); }
.wp-block-details { background: var(--white); border: 1px solid var(--grey-200); border-radius: var(--radius-sm) !important; padding: 0 !important; margin-bottom: 0.75rem; }
.wp-block-details > summary { cursor: pointer; list-style: none; padding: 1.1rem 3.25rem 1.1rem 1.25rem; font-weight: 500; font-size: 1.05rem; position: relative; }
.wp-block-details > summary::-webkit-details-marker { display: none; }
.wp-block-details > summary::after { content: "+"; position: absolute; right: 1.1rem; top: 50%; transform: translateY(-50%); width: 1.75rem; height: 1.75rem; border-radius: 50%; background: var(--black); color: var(--white); display: grid; place-items: center; font-size: 1.2rem; line-height: 1; transition: transform var(--dur) var(--ease), background var(--dur); }
.wp-block-details[open] > summary::after { transform: translateY(-50%) rotate(45deg); background: var(--red); }
.wp-block-details > :not(summary) { padding: 0 1.25rem 1.1rem; }
.wp-block-quote, .wp-block-pullquote { border: 0; padding: 1.5rem 0 1.5rem 1.75rem; border-left: 3px solid var(--pink); font-family: var(--font-serif); font-style: italic; font-size: 1.4rem; line-height: 1.3; }
.wp-block-quote cite { display: block; margin-top: 0.75rem; font-family: var(--font-sans); font-style: normal; font-size: 0.9rem; color: var(--grey-500); }
.wp-block-quote.is-style-quote--graphic { padding-left: clamp(3rem, 12vw, 9rem); position: relative; border: 0; }
.wp-block-quote.is-style-quote--graphic::before { content: "“"; position: absolute; left: 0; top: -0.3em; font-family: var(--font-serif); font-size: clamp(5rem, 14vw, 10rem); line-height: 1; color: var(--pink); }
.wp-block-table table { border-collapse: collapse; width: 100%; }
.wp-block-table td, .wp-block-table th { border: 1px solid var(--grey-200); padding: 0.6em 0.9em; }
.wp-block-table th { background: var(--pink-100); }
.wp-block-buttons { gap: 0.75rem; }
.wp-block-button__link { font-size: 1rem; }
.wp-block-button.is-style-outline .wp-block-button__link { background: transparent; color: var(--black); border-color: var(--black); }
.wp-block-button.is-style-outline .wp-block-button__link:hover { background: var(--black); color: var(--white); }
.wp-block-media-text { gap: var(--gap); }
.wp-block-media-text .wp-block-media-text__media img { border-radius: var(--radius); }
.wp-block-image figcaption { font-size: 0.85rem; color: var(--grey-500); text-align: center; }
.wp-block-gallery { gap: var(--gap); }
.wp-block-embed { margin-inline: auto; }
.wp-block-embed iframe { max-width: 100%; }
.has-vivid-red-background-color { background-color: var(--red) !important; }
.has-vivid-red-color { color: var(--red) !important; }
.has-white-color { color: var(--white) !important; }
.has-white-background-color { background-color: var(--white) !important; }

/* Motifs décoratifs des sections ("styles graphiques"), remplacent les objets 3D du thème précédent */
.is-style-graphic, .is-style-graphic-header, .is-style-graphic-dice, .is-style-graphic-skateboard, .is-style-graphic-maracas, .is-style-graphic-statue { position: relative; overflow: hidden; }
.is-style-graphic-header::before, .is-style-graphic::before, .is-style-graphic-dice::before, .is-style-graphic-skateboard::before, .is-style-graphic-maracas::before, .is-style-graphic-statue::before { content: ""; position: absolute; pointer-events: none; z-index: 0; opacity: 0.9; }
.is-style-graphic-header::before { inset: -20% -10% auto auto; width: 42vw; height: 42vw; max-width: 560px; max-height: 560px; background: radial-gradient(circle, var(--pink) 0, rgba(255, 148, 239, 0) 65%); filter: blur(10px); }
.is-style-graphic-dice::before { right: -8%; bottom: -8%; width: 30vw; max-width: 420px; aspect-ratio: 1; background: repeating-radial-gradient(circle at center, var(--pink) 0 2px, transparent 2px 18px); opacity: 0.35; border-radius: 50%; }
.is-style-graphic-skateboard::before { left: -5%; bottom: -10%; width: 40vw; max-width: 520px; aspect-ratio: 2 / 1; background: repeating-linear-gradient(-20deg, var(--pink) 0 2px, transparent 2px 16px); opacity: 0.3; border-radius: 50%; }
.is-style-graphic-maracas::before { right: -10%; top: -10%; width: 32vw; max-width: 440px; aspect-ratio: 1; background: conic-gradient(from 0deg, var(--pink) 0 4deg, transparent 4deg 18deg); opacity: 0.25; border-radius: 50%; }
.is-style-graphic-statue::before { left: 55%; top: -20%; width: 50vw; max-width: 640px; aspect-ratio: 1; background: radial-gradient(circle, rgba(255, 148, 239, 0.75) 0, rgba(255, 148, 239, 0) 60%); filter: blur(20px); }
.is-style-graphic::before { left: -4%; top: 10%; width: 22vw; max-width: 300px; aspect-ratio: 1; background: repeating-linear-gradient(90deg, var(--red) 0 2px, transparent 2px 14px); opacity: 0.2; }
.is-style-graphic > *, .is-style-graphic-header > *, .is-style-graphic-dice > *, .is-style-graphic-skateboard > *, .is-style-graphic-maracas > *, .is-style-graphic-statue > * { position: relative; z-index: 1; }

/* Formulaires (bloc Welko form + Ninja Forms) */
.wp-block-welko-form input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]), .wp-block-welko-form textarea, .wp-block-welko-form select { width: 100%; padding: 0.85em 1.1em; border: 2px solid var(--grey-200); border-radius: var(--radius-sm); background: var(--white); color: var(--ink); transition: border-color var(--dur); }
.wp-block-welko-form input:focus, .wp-block-welko-form textarea:focus { border-color: var(--black); outline: none; }
.wp-block-welko-form label { font-weight: 500; margin-bottom: 0.35rem; display: block; }
.wp-block-welko-form .btn, .wp-block-welko-form button[type="submit"], .wp-block-welko-form input[type="submit"] { display: inline-flex; padding: 0.85em 1.5em; border-radius: var(--pill); background: var(--black); color: var(--white); border: 2px solid var(--black); font-weight: 500; cursor: pointer; }
.nf-form-cont .nf-form-fields-required { font-size: 0.85rem; color: var(--grey-500); margin: 0 0 1rem; }
.nf-form-cont .nf-form-content { padding: 0; }
.nf-form-cont nf-fields-wrap { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; }
.nf-form-cont nf-field { display: block; grid-column: 1 / -1; }
.nf-form-cont nf-field:has(.half) { grid-column: auto; }
.nf-form-cont .nf-field-container { margin-bottom: 1.25rem; }
.nf-form-cont .nf-field-label label, .nf-form-cont .nf-label-span { font-weight: 500; display: block; margin-bottom: 0.35rem; }
.nf-form-cont .nf-form-content .nf-element:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]) { width: 100%; padding: 0.85em 1.1em; border: 2px solid var(--grey-200); border-radius: var(--radius-sm); background: var(--white); color: var(--ink); font: inherit; transition: border-color var(--dur); }
.nf-form-cont .nf-form-content .nf-element:focus { border-color: var(--black); outline: none; }
.nf-form-cont .nf-form-content textarea.nf-element { min-height: 9rem; resize: vertical; }
.nf-form-cont .list-wrap ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem; }
.nf-form-cont .list-wrap li { display: inline-flex; align-items: center; gap: 0.5rem; margin: 0; }
.nf-form-cont .list-wrap li label, .nf-form-cont .checkbox-wrap label { font-weight: 400; margin: 0; }
.nf-form-cont input[type="radio"], .nf-form-cont input[type="checkbox"] { accent-color: var(--red); width: 1.1rem; height: 1.1rem; margin: 0; flex: none; }
.nf-form-cont .checkbox-wrap { display: grid; grid-template-columns: auto 1fr; gap: 0.25rem 0.75rem; align-items: start; }
.nf-form-cont .checkbox-wrap .nf-field-element { grid-column: 1; grid-row: 1; width: auto; padding-top: 0.2rem; }
.nf-form-cont .checkbox-wrap .nf-field-label { grid-column: 2; grid-row: 1; width: auto; }
.nf-form-cont .checkbox-wrap .nf-field-label label { font-size: 0.9rem; }
.nf-form-cont .checkbox-wrap .nf-error-wrap { grid-column: 1 / -1; }
.nf-form-cont .submit-container .nf-element { display: inline-flex; width: auto; padding: 0.85em 1.75em; border-radius: var(--pill); border: 2px solid var(--black); background: var(--black); color: var(--white); font: inherit; font-weight: 500; cursor: pointer; transition: background var(--dur), border-color var(--dur); }
.nf-form-cont .submit-container .nf-element:hover, .nf-form-cont .submit-container .nf-element:focus-visible { background: var(--red); border-color: var(--red); }
.nf-form-cont .nf-error-msg, .nf-form-cont .nf-error .nf-error-msg { color: var(--red-dark); font-size: 0.9rem; margin-top: 0.3rem; }
.nf-form-cont .nf-error .nf-element { border-color: var(--red) !important; }
.nf-form-cont .nf-field-description { font-size: 0.85rem; color: var(--grey-500); }
.nf-response-msg { background: var(--pink-200); border-radius: var(--radius-sm); padding: 1.25rem; }
@media (max-width: 600px) { .nf-form-cont nf-field:has(.half) { grid-column: 1 / -1; } }

/* Sections flexibles ACF (pages héritées) */
.flex-section { padding-block: clamp(2rem, 5vw, 4rem) 0; }
.flex-section__title { font-size: var(--fs-h2); }
.flex-section__h1 { font-size: var(--fs-h1); max-width: 20ch; }
.flex-section__competence { display: flex; align-items: center; gap: 0.75rem; font-size: 1.25rem; font-weight: 500; }
.flex-section__competence .icon { width: 2rem; height: 2rem; color: var(--red); }
.flex-section--text-photo { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 4rem); align-items: center; }
.flex-section--text-photo.is-reversed .flex-section__media { order: -1; }
.flex-section__media { margin: 0; border-radius: var(--radius); overflow: hidden; }
.flex-section--photos { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap); }
.flex-section__photo { margin: 0; border-radius: var(--radius); overflow: hidden; position: relative; }
.flex-section__photo--3 { grid-column: 1 / -1; }
.flex-section__photo figcaption { position: absolute; left: 1rem; bottom: 1rem; background: var(--white); padding: 0.4em 0.9em; border-radius: var(--pill); font-weight: 500; }
.flex-section__cols { display: grid; gap: var(--gap); }
.flex-section__cols--2 { grid-template-columns: 1fr 1fr; }
.flex-section__cols--3 { grid-template-columns: 1fr 1fr 1fr; }
.presta-list > * { flex-basis: min(85vw, 320px); }
.presta a { display: flex; flex-direction: column; gap: 0.5rem; height: 100%; padding: 1.75rem; border-radius: var(--radius); background: var(--pink-100); text-decoration: none; transition: transform var(--dur) var(--ease), background var(--dur); }
.presta a:hover { background: var(--pink-200); transform: translateY(-4px); }
.presta__title { font-family: var(--font-serif); font-style: italic; font-size: 1.5rem; margin: 0; }
.presta__text { color: var(--grey-700); flex: 1; margin: 0; }
.presta__more { color: var(--red); font-weight: 500; }
.flex-section--illu { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 4rem); align-items: center; }
.flex-section__illu { border-radius: var(--radius); overflow: hidden; }
.flex-section__illu-more { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap); }
.flex-section--projets { padding-block: var(--section); margin-top: var(--section); }
.projets-scroller > *, .actus-scroller > * { flex-basis: min(85vw, 360px); }

/* --------------------------------------------------------------------------
   14. Modale (vidéo projet, lightbox)
   -------------------------------------------------------------------------- */
.modal { position: fixed; inset: 0; z-index: 2000; display: grid; place-items: center; padding: var(--gutter); }
.modal__backdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.85); }
.modal__dialog { position: relative; width: min(100%, 1100px); max-height: 90vh; background: var(--black); border-radius: var(--radius); overflow: auto; animation: modalIn 0.35s var(--ease); }
.modal__close { position: absolute; top: 0.75rem; right: 0.75rem; z-index: 2; width: 2.75rem; height: 2.75rem; border-radius: 50%; border: 0; background: var(--white); color: var(--black); display: grid; place-items: center; }
.modal__close:hover { background: var(--red); color: var(--white); }
.modal__content iframe, .modal__content video { width: 100%; aspect-ratio: 16 / 9; height: auto; display: block; }
.modal__content img { width: 100%; height: auto; max-height: 90vh; object-fit: contain; }
@keyframes modalIn { from { opacity: 0; transform: translateY(16px) scale(0.98); } }

/* --------------------------------------------------------------------------
   15. Animations d'apparition
   -------------------------------------------------------------------------- */
.js .reveal { opacity: 0; translate: 0 22px; transition: opacity 0.7s var(--ease), translate 0.7s var(--ease); transition-delay: var(--d, 0ms); }
.js .reveal.is-visible { opacity: 1; translate: 0 0; }
.js .card { opacity: 0; translate: 0 18px; transition: opacity 0.6s var(--ease), translate 0.6s var(--ease); }
.js .card.is-visible, .js .no-reveal .card { opacity: 1; translate: 0 0; }
/* Transitions de page : fondu à l'arrivée et au départ */
.js:not(.is-ready) .site-main, .js:not(.is-ready) .site-footer { opacity: 0; }
.js.is-ready .site-main, .js.is-ready .site-footer { opacity: 1; transition: opacity 0.45s var(--ease); }
.js.is-leaving .site-main, .js.is-leaving .site-footer, .js.is-leaving .site-header { opacity: 0; transition: opacity 0.3s var(--ease); }
/* Curseur personnalisé (souris uniquement) */
.cursor { position: fixed; left: 0; top: 0; width: 14px; height: 14px; margin: -7px 0 0 -7px; border-radius: 50%; background: var(--pink); pointer-events: none; z-index: 5000; mix-blend-mode: difference; transition: width 0.3s var(--ease), height 0.3s var(--ease), margin 0.3s var(--ease), opacity 0.3s; }
.cursor.is-active { width: 44px; height: 44px; margin: -22px 0 0 -22px; }
.cursor.is-text, .cursor.is-hidden { opacity: 0; }
html.has-cursor, html.has-cursor a, html.has-cursor button, html.has-cursor [data-lightbox] { cursor: none; }
html.has-cursor input, html.has-cursor textarea, html.has-cursor select { cursor: auto; }

/* --------------------------------------------------------------------------
   16. Responsive
   -------------------------------------------------------------------------- */
@media (max-width: 1023px) {
	.site-footer__grid { grid-template-columns: 1fr 1fr; }
	.post__layout { grid-template-columns: 1fr; }
	.post__aside { position: static; grid-template-columns: auto 1fr; align-items: center; }
	.projet-intro, .projet-zone { grid-template-columns: 1fr; gap: 1.5rem; }
	.projet-expertise__inner { grid-template-columns: 1fr; }
	.pole-row__link { grid-template-columns: 3rem minmax(0, 1fr) 3rem; grid-template-areas: "i t a" "i x a"; row-gap: 0.5rem; }
	.pole-row__index { grid-area: i; } .pole-row__title { grid-area: t; } .pole-row__text { grid-area: x; } .pole-row__icon { grid-area: a; }
}
@media (max-width: 767px) {
	:root { --header-h: 64px; }
	.site-header__logo img { width: 104px; }
	.hero--v2 .hero__inner { min-height: 0; grid-template-rows: auto auto auto auto; }
	.hero--v2 .hero__media { position: relative; right: auto; top: auto; width: min(70%, 320px); transform: none; margin: 0.5rem auto 1.5rem; }
	.hero--v2 .hero__title { margin: 1.5rem 0 0.5rem; }
	.display__line--2 { padding-left: 4vw; }
	.display__line--3 { padding-left: 8vw; }
	.hero__label { flex-direction: column; gap: 0.2rem; }
	.hero__foot { flex-direction: column; align-items: flex-start; }
	.touche__inner, .agence-intro, .agence-main__inner, .agence-pluri__inner, .membre, .contact, .flex-section--text-photo, .flex-section--photos, .flex-section--illu, .flex-section__illu-more, .flex-section__cols--2, .flex-section__cols--3 { grid-template-columns: 1fr; }
	.touche__body ul { columns: 1; }
	.projet-galerie__grid, .projet-quatre__grid, .projet-zone__images--2, .projet-zone__images--3 { grid-template-columns: 1fr; }
	.section__head, .section__head--split { display: flex; flex-direction: column; align-items: flex-start; }
	.section__head-link { display: none; }
	.site-footer__grid { grid-template-columns: 1fr; gap: 2rem; }
	.site-footer__bottom { flex-direction: column; align-items: flex-start; }
	.card--large { grid-column: auto; }
	.card--large .card__media { aspect-ratio: 4 / 3; }
	.card--large .card__title { font-size: var(--fs-h4); }
	.projet-citation blockquote { max-width: none; }
	.projet-citation__right { text-align: left; }
	.membre__media { position: static; order: -1; aspect-ratio: 4 / 4; }
	.mosaic .card:nth-child(even) { margin-left: 12%; }
	.chapter::before { font-size: 7rem; }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
	.marquee__track, .motif { animation: none; }
	.js .reveal, .js .card { opacity: 1; translate: 0 0; }
	.js .display__line .display__word { transform: none; animation: none; }
	.letter { animation: none; }
	.pile__item { transform: rotate(var(--r)) translate(var(--x), var(--y)); }
	.loader, .cursor { display: none; }
}

@media print {
	.site-header, .site-footer, .loader, .reviews, .hero__media, .marquee, .modal, .projet-nav, .share, .btn, .menu, .cursor { display: none !important; }
	body { padding-top: 0; color: #000; }
	a::after { content: " (" attr(href) ")"; font-size: 0.8em; }
}
