/*
Theme Name: Blocksy Child
Theme URI: https://so-wood.ch
Description: Thème enfant de Blocksy pour So Wood Gravure et Découpe Laser
Author: So Wood
Template: blocksy
Version: 1.0.0
Text Domain: blocksy-child
*/

:root {
	/* Couleurs */
	--color-anthracite: #141414;
	--color-wood: #977464;
	--color-beige: #f0efed;
	--color-terracotta: #d39972;
	--color-neutral-warm: #a68f82;
	--color-text-on-light: #3a2e26;
	--color-hover: #7a5c4f;
	--color-text-on-dark: #ffffff;

	/* Typographie */
	--font-heading: "Space Grotesk", sans-serif;
	--font-body: "IBM Plex Sans", sans-serif;
	--font-label: "IBM Plex Mono", monospace;

	/* Layout */
	--marquee-height: 52px;
	/*
	 * Gouttière latérale des sections en dessous de 600px (voir @media à la
	 * fin du fichier) : la plupart des sections utilisent 48px de padding
	 * fixe à toutes les largeurs, ce qui mange 96px (25% de l'écran) sur un
	 * mobile de 375px de large. Centralisée ici pour n'avoir qu'une seule
	 * valeur à ajuster si besoin.
	 */
	--section-pad-x-mobile: 20px;

	/*
	 * Largeur max du contenu de section (1440px) : ces deux variables sont
	 * lues par theme.json de Blocksy ("contentSize"/"wideSize" y valent déjà
	 * littéralement "var(--theme-block-max-width)" / "var(--theme-block-wide-max-width)")
	 * puis reprises par le CSS natif de WordPress pour tout bloc en layout
	 * "constrained" (.is-layout-constrained > * { max-width: ...; margin-inline: auto }).
	 * Comme ces variables n'étaient définies nulle part, cette contrainte ne
	 * s'appliquait jamais — d'où l'absence totale de largeur max constatée.
	 * Les définir ici active le mécanisme partout, sans toucher au balisage
	 * de chaque page ni aux fonds pleine largeur (qui restent sur l'élément
	 * englobant, jamais lui-même en layout "constrained").
	 */
	--theme-block-max-width: 1440px;
	--theme-block-wide-max-width: 1440px;
}

/*
 * Spécificité "html body" volontaire : Blocksy imprime un <style> inline
 * dynamique (#ct-main-styles-inline-css) APRÈS notre feuille de style, qui
 * contient "body{background-color:var(--theme-palette-color-7)}" (quasi
 * blanc). À spécificité égale (0,0,0,1) le dernier déclaré gagne, donc on
 * monte volontairement à (0,0,1,1) pour rester prioritaire sans !important.
 */
html body {
	font-family: var(--font-body);
	font-weight: 400;
	color: var(--color-text-on-light);
	background-color: var(--color-anthracite);
}

/*
 * ==================== TEXTURE BOIS (fond subtil, global) ====================
 * Traitement unique pour tout le site (remplace les 4 traitements différents
 * qui existaient auparavant sur .sowood-hero, .sowood-sport, .sowood-pro et
 * .sowood-category-page::before). Un seul pseudo-élément sur le body, en
 * position fixed derrière tout le contenu.
 *
 * Pour qu'il reste visible là où c'était déjà le cas (hero accueil, sport,
 * pro, pages catégorie/univers) et masqué là où il ne l'était pas (marquee,
 * footer, et tout le reste des sections anthracite), on ne peut pas se
 * contenter d'ajouter ce pseudo-élément : #main-container/#main/.site-main
 * et ces 4 sections avaient chacun leur PROPRE fond anthracite opaque, qui
 * occulterait ce nouveau fond global. Leur fond opaque local a donc été
 * retiré (il faisait de toute façon double emploi avec celui du body) pour
 * laisser transparaître ce pseudo-élément exactement aux mêmes endroits
 * qu'avant ; le marquee et le footer, eux, gardent leur fond anthracite
 * opaque intact — c'est ce qui les exclut, sans règle CSS dédiée.
 * Le cache-busting de l'URL (?ver=) est géré à part, voir
 * inc/texture-version.php.
 */
body::before {
	content: "";
	position: fixed;
	inset: 0;
	background-image: url("assets/texture-bois.svg");
	background-size: cover;
	background-position: center top;
	background-attachment: fixed;
	background-repeat: no-repeat;
	opacity: 0.3;
	mix-blend-mode: multiply;
	pointer-events: none;
}

/*
 * Pas de background-color ici (contrairement à avant) : #main-container/
 * #main/.site-main héritaient d'un fond anthracite strictement identique à
 * celui du body, redondant en soi, mais qui occulterait le body::before
 * texturé (voir plus haut) sur toute la hauteur de la page. Le supprimer
 * ne change aucune couleur visible, seulement l'empêche de bloquer le
 * pseudo-élément.
 */
#main-container,
#main,
.site-main {
	background-color: transparent;
}

h1,
h2,
h3 {
	font-family: var(--font-heading);
	font-weight: 700;
	letter-spacing: -0.025em;
}

h1 {
	letter-spacing: -0.03em;
}

a {
	color: var(--color-wood);
	transition: color 0.2s ease;
}

a:hover {
	color: var(--color-hover);
}

.btn,
button {
	font-family: var(--font-body);
	font-weight: 600;
	background-color: var(--color-wood);
	color: var(--color-text-on-dark);
	transition: background-color 0.2s ease;
}

.btn:hover,
button:hover {
	background-color: var(--color-hover);
}

.label,
.section-label {
	font-family: var(--font-label);
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: 0.15em;
}

/* ==================== BOUTONS ==================== */

/*
 * Préfixe "body ." volontaire (comme "html body" plus haut) : Blocksy définit
 * un style générique sur le sélecteur [type=submit] (entre autres) dans son
 * bundle CSS chargé APRÈS cette feuille. Sur un <a>, ça n'a aucun effet
 * ([type=submit] ne matche pas un lien) — mais sur le <button type="submit">
 * du formulaire de devis (inc/devis-form.php), à spécificité égale (0,0,1,0)
 * le dernier déclaré gagnerait et repeindrait le bouton dans la couleur
 * d'accent bleue par défaut de Blocksy. On monte donc à (0,0,1,1), sans
 * !important, pour rester prioritaire dans les deux cas.
 */
body .sowood-btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 14px;
	padding: 16px 30px;
	border-radius: 8px;
	border: none;
	cursor: pointer;
	transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

body .sowood-btn--solid {
	background: var(--color-text-on-dark);
	color: var(--color-anthracite);
}

body .sowood-btn--solid:hover {
	background: var(--color-terracotta);
	color: var(--color-anthracite);
}

body .sowood-btn--ghost {
	background: rgba(255, 255, 255, 0.1);
	color: var(--color-text-on-dark);
	border: 1px solid rgba(255, 255, 255, 0.35);
}

body .sowood-btn--ghost:hover {
	background: rgba(255, 255, 255, 0.2);
	color: var(--color-text-on-dark);
}

body .sowood-btn--ghost-dark {
	background: transparent;
	color: var(--color-text-on-dark);
	border: 1px solid rgba(255, 255, 255, 0.45);
	padding: 10px 20px;
	font-size: 13px;
}

body .sowood-btn--ghost-dark:hover {
	background: var(--color-text-on-dark);
	color: var(--color-anthracite);
}

/*
 * ==================== BOUTONS GUTENBERG — base partagée ====================
 * Règle de base unique pour tous les boutons Gutenberg (bloc Bouton natif,
 * style "Remplissage" par défaut ou variation "Contour"), déclarée une
 * seule fois ici plutôt que dupliquée par chaque section. Objectif : ne
 * plus jamais revivre la régression déjà vue deux fois (hero Univers, hero
 * Fleur de Vie) où le moteur de style des blocs core repeint les boutons
 * dans sa couleur d'accent bleue par défaut faute de règle de base. Les
 * sections peuvent toujours surcharger taille/espacement (font-size,
 * padding) par-dessus cette base pour leurs propres besoins.
 *
 * Remplissage : Blocksy définit lui-même .wp-block-button__link (couleur du
 * bouton "Remplissage" par défaut) dans son bundle CSS chargé après cette
 * feuille — à spécificité égale (0,1,0), sans le préfixe "body" ci-dessous,
 * son bleu par défaut gagnerait. Préfixe "body ." volontaire, même principe
 * que "html body" et "body .sowood-btn" plus haut, pour rester prioritaire
 * sans !important.
 * Contour : Blocksy cible cette fois la variation "Contour" avec un
 * sélecteur à 3 classes (.wp-block-buttons .wp-block-button .wp-block-button__link.is-style-outline),
 * qu'aucun sélecteur raisonnable ne peut dépasser sans !important — d'où le
 * !important ci-dessous (déjà la seule solution qui fonctionnait, voir
 * l'historique de ces 2 bugs).
 */
body .wp-block-button__link {
	font-family: var(--font-heading);
	font-weight: 600;
	border-radius: 8px;
	color: var(--color-anthracite);
	background-color: var(--color-text-on-dark);
	border: none;
}

body .wp-block-button__link:hover {
	background-color: var(--color-terracotta);
}

.is-style-outline .wp-block-button__link {
	color: var(--color-text-on-dark) !important;
	background-color: rgba(255, 255, 255, 0.08) !important;
	border: 1px solid rgba(255, 255, 255, 0.32) !important;
}

.is-style-outline .wp-block-button__link:hover {
	background-color: rgba(255, 255, 255, 0.16) !important;
}

/* ==================== HEADER / MEGA-MENU ==================== */

body.home #main-container {
	position: relative;
}

.sowood-header {
	position: sticky;
	top: 0;
	left: 0;
	right: 0;
	z-index: 50;
	background: rgba(20, 20, 20, 0.92);
	backdrop-filter: blur(10px);
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.sowood-header--transparent {
	position: absolute;
	z-index: 30;
	background: transparent;
	backdrop-filter: none;
	border-bottom: none;
}

.sowood-header--transparent[data-open="particuliers"],
.sowood-header--transparent[data-open="sport"],
.sowood-header--transparent[data-open="pro"] {
	background: rgba(20, 20, 20, 0.92);
	backdrop-filter: blur(10px);
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.sowood-header__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 0 48px;
	height: 76px;
}

.sowood-header--transparent .sowood-header__bar {
	height: 84px;
}

.sowood-header__logo {
	display: inline-flex;
	align-items: center;
}

.sowood-header__logo-img {
	height: 22px;
	width: auto;
	display: block;
}

.sowood-header--transparent .sowood-header__logo-img {
	height: 24px;
}

.sowood-nav {
	display: flex;
	align-items: stretch;
	gap: 4px;
	height: 100%;
}

.sowood-nav__item {
	position: relative;
	display: flex;
	align-items: center;
	gap: 7px;
	padding: 0 18px;
	height: 100%;
	cursor: pointer;
	font-family: var(--font-body);
	font-weight: 500;
	font-size: 14px;
	color: rgba(255, 255, 255, 0.9);
	text-decoration: none;
	border-bottom: 2px solid transparent;
	transition: border-color 0.2s ease;
}

/*
 * Titres devenus des liens <a> (voir header.php) : sans ce rappel, le
 * a:hover/a:focus par défaut de Blocksy (color + box-shadow) reprend la main
 * au survol/focus, à spécificité égale à .sowood-nav__item mais chargé
 * après. .sowood-nav__item:hover / :focus grimpe à 2 classes, suffisant
 * pour rester prioritaire sans !important.
 */
.sowood-nav__item:hover,
.sowood-nav__item:focus {
	color: rgba(255, 255, 255, 0.9);
	box-shadow: none;
}

/*
 * "Atelier" est un lien simple, sans méga-menu à ouvrir : pas de data-menu,
 * donc jamais sélectionné par header.js (qui ne cible que
 * .sowood-nav__item[data-menu]) et jamais de classe .is-open — d'où cette
 * barre au survol posée directement en CSS, plutôt que via JS comme les
 * 3 autres, pour un effet cohérent sans lui donner un comportement de menu
 * qu'il n'a pas.
 */
.sowood-nav__item--plain:hover,
.sowood-nav__item--plain:focus {
	color: rgba(255, 255, 255, 0.9);
	border-bottom-color: var(--color-terracotta);
}

.sowood-nav__item--plain {
	color: rgba(255, 255, 255, 0.6);
}

.sowood-nav__caret {
	font-size: 9px;
	opacity: 0.6;
}

.sowood-nav__item[data-menu="particuliers"].is-open {
	border-bottom-color: var(--color-wood);
}

.sowood-nav__item[data-menu="sport"].is-open {
	border-bottom-color: var(--color-neutral-warm);
}

.sowood-nav__item[data-menu="pro"].is-open {
	border-bottom-color: var(--color-text-on-dark);
}

.sowood-header__actions {
	display: flex;
	align-items: center;
	gap: 24px;
}

.sowood-lang {
	display: flex;
	gap: 9px;
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 12px;
	color: rgba(255, 255, 255, 0.5);
}

.sowood-lang span {
	cursor: pointer;
}

.sowood-lang .is-active {
	color: var(--color-text-on-dark);
}

/* panneaux niveau 3 */

.sowood-nav__panel {
	display: none;
	position: absolute;
	left: 0;
	right: 0;
	top: 100%;
	box-sizing: border-box;
	/* Hauteur commune aux 3 panneaux, basée sur celui de "Particuliers"
	   (le plus grand : kicker + une rangée de 4 cartes titre+description) —
	   pour les panneaux plus courts (Sport, Professionnels), le contenu est
	   centré verticalement dans cet espace via flex-direction:column +
	   justify-content:center, sans toucher à leur grille horizontale. */
	min-height: 200px;
	flex-direction: column;
	justify-content: center;
	padding: 28px 48px 34px;
	backdrop-filter: blur(8px);
	border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.sowood-header[data-open="particuliers"] .sowood-nav__panel--particuliers,
.sowood-header[data-open="sport"] .sowood-nav__panel--sport,
.sowood-header[data-open="pro"] .sowood-nav__panel--pro {
	display: flex;
}

.sowood-nav__panel--particuliers {
	background: rgba(20, 17, 14, 0.97);
	border-bottom: 2px solid var(--color-wood);
}

.sowood-nav__panel--sport {
	background: rgba(20, 20, 20, 0.97);
	border-bottom: 2px solid var(--color-neutral-warm);
}

.sowood-nav__panel--pro {
	background: rgba(20, 20, 20, 0.97);
	border-bottom: 2px solid var(--color-text-on-dark);
}

.sowood-nav__panel-kicker {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 11px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	margin-bottom: 20px;
}

.sowood-nav__panel-kicker--wood {
	color: var(--color-terracotta);
}

.sowood-nav__panel-kicker--neutral {
	color: var(--color-neutral-warm);
}

.sowood-nav__panel-kicker--light {
	color: rgba(255, 255, 255, 0.55);
	margin-bottom: 10px;
}

.sowood-nav__cards {
	display: grid;
	gap: 14px;
}

.sowood-nav__cards--4 {
	grid-template-columns: repeat(4, 1fr);
}

.sowood-nav__cards--3 {
	grid-template-columns: repeat(3, 1fr);
}

.sowood-nav__card {
	display: block;
	padding: 16px 18px;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 8px;
	color: var(--color-text-on-dark);
	transition: background-color 0.2s ease, border-color 0.2s ease;
}

.sowood-nav__card:hover {
	background: var(--color-wood);
	border-color: var(--color-wood);
	color: var(--color-text-on-dark);
}

.sowood-nav__panel--sport .sowood-nav__card:hover {
	background: #2a2a2a;
	border-color: rgba(255, 255, 255, 0.07);
}

.sowood-nav__card--pro:hover {
	background: rgba(255, 255, 255, 0.12);
	border-color: rgba(255, 255, 255, 0.3);
	color: var(--color-text-on-dark);
}

.sowood-nav__card-title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 15px;
	margin-bottom: 5px;
}

.sowood-nav__card-desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 12.5px;
	color: rgba(255, 255, 255, 0.55);
}

.sowood-nav__card--plain {
	font-family: var(--font-body);
	font-weight: 500;
	font-size: 14px;
}

.sowood-nav__pro {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 40px;
}

.sowood-nav__pro-actions {
	display: flex;
	align-items: center;
	gap: 12px;
	flex: none;
}

.sowood-nav__pro-title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 20px;
	color: var(--color-text-on-dark);
}

.sowood-nav__pro-subtitle {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 13px;
	color: rgba(255, 255, 255, 0.55);
	margin-top: 5px;
}

/*
 * ==================== HEADER — MENU MOBILE ====================
 * Éléments du menu mobile (bouton hamburger, ligne item+caret, sélecteur de
 * langue dupliqué pour le panneau) : neutres/masqués par défaut ici (rendu
 * desktop inchangé), activés dans la media query plus bas (voir après les
 * @media 960px/600px existants, pour rester prioritaire sur
 * .sowood-nav__cards--4/--3 déjà définis à 960px).
 */

.sowood-nav-toggle {
	display: none;
	flex: none;
	flex-direction: column;
	width: 36px;
	height: 36px;
	align-items: center;
	justify-content: center;
	background: transparent;
	border: none;
	padding: 0;
	cursor: pointer;
}

.sowood-nav-toggle__bar {
	display: block;
	width: 20px;
	height: 2px;
	background: var(--color-text-on-dark);
	transition: transform 0.25s ease, opacity 0.25s ease;
}

.sowood-nav-toggle__bar + .sowood-nav-toggle__bar {
	margin-top: 5px;
}

.sowood-header[data-mobile-open="true"] .sowood-nav-toggle__bar:nth-child(1) {
	transform: translateY(7px) rotate(45deg);
}

.sowood-header[data-mobile-open="true"] .sowood-nav-toggle__bar:nth-child(2) {
	opacity: 0;
}

.sowood-header[data-mobile-open="true"] .sowood-nav-toggle__bar:nth-child(3) {
	transform: translateY(-7px) rotate(-45deg);
}

/* Wrapper item+caret : transparent pour la mise en page desktop (identique à
   l'ancien <a> seul), redevient le conteneur de la ligne en accordéon mobile. */
.sowood-nav__row {
	display: flex;
	align-items: stretch;
	height: 100%;
}

.sowood-nav__caret-btn {
	display: none;
}

.sowood-lang--mobile {
	display: none;
}

/* ==================== HERO + CAROUSEL ==================== */

.sowood-hero {
	position: relative;
	/*
	 * 100svh (small viewport height) plutôt que 100vh : sur mobile, 100vh
	 * inclut la zone que la barre d'adresse du navigateur occupe/libère au
	 * scroll, ce qui provoque un saut de mise en page ou un espace vide au
	 * chargement. 100svh se cale sur la hauteur visible la plus restreinte,
	 * stable dans tous les cas.
	 */
	height: calc(100svh - var(--marquee-height));
	min-height: 480px;
	overflow: hidden;
}

.sowood-hero__carousel {
	position: absolute;
	inset: 0;
}

.sowood-hero__slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 1.2s ease-in-out;
}

.sowood-hero__slide.is-active {
	opacity: 1;
}

.sowood-hero__slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: scale(1);
	transition: transform 5.5s ease-out;
}

.sowood-hero__slide.is-active img {
	transform: scale(1.05);
}

.sowood-hero__scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(
		180deg,
		rgba(20, 20, 20, 0.82) 0%,
		rgba(20, 20, 20, 0.28) 34%,
		rgba(20, 20, 20, 0.35) 60%,
		rgba(20, 20, 20, 0.92) 100%
	);
	pointer-events: none;
}

.sowood-hero__copy {
	position: absolute;
	left: 48px;
	right: 48px;
	bottom: 78px;
	z-index: 10;
	pointer-events: none;
}

.sowood-hero__eyebrow {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 12px;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--color-terracotta);
	margin-bottom: 22px;
}

.sowood-hero__title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 96px;
	line-height: 0.92;
	letter-spacing: -0.03em;
	color: var(--color-text-on-dark);
	margin: 0 0 30px;
	margin-left: -4px;
	max-width: 940px;
}

.sowood-hero__ctas {
	display: flex;
	gap: 14px;
	pointer-events: auto;
}

.sowood-hero__dots {
	position: absolute;
	left: 48px;
	bottom: 36px;
	z-index: 10;
	display: flex;
	align-items: center;
	gap: 8px;
}

.sowood-hero__dot {
	height: 8px;
	width: 8px;
	border: none;
	padding: 0;
	cursor: pointer;
	border-radius: 99px;
	background: rgba(255, 255, 255, 0.4);
	transition: all 0.45s ease;
}

.sowood-hero__dot.is-active {
	width: 30px;
	background: var(--color-terracotta);
}

.sowood-hero__caption {
	position: absolute;
	right: 48px;
	bottom: 34px;
	z-index: 10;
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 12px;
	letter-spacing: 0.08em;
	color: rgba(255, 255, 255, 0.7);
}

/* ==================== MARQUEE ==================== */

.sowood-marquee {
	height: var(--marquee-height);
	display: flex;
	align-items: center;
	background-color: var(--color-anthracite);
	border-top: 1px solid rgba(255, 255, 255, 0.08);
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
	overflow: hidden;
	box-sizing: border-box;
}

.sowood-marquee__viewport {
	width: max-content;
	animation: sowood-marquee-scroll 40s linear infinite;
}

.sowood-marquee__track {
	white-space: nowrap;
}

.sowood-marquee__item {
	display: inline-block;
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 12.5px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.58);
	white-space: nowrap;
	margin: 0;
}

.sowood-marquee__item::after {
	content: "●";
	display: inline-block;
	color: var(--color-terracotta);
	font-size: 9px;
	margin: 0 32px;
}

@keyframes sowood-marquee-scroll {
	from {
		transform: translateX(0);
	}
	to {
		transform: translateX(-50%);
	}
}

@media (prefers-reduced-motion: reduce) {
	.sowood-marquee__viewport {
		animation: none;
	}
}

/* ==================== SECTION PARTICULIERS ==================== */

.sowood-particuliers {
	background: var(--color-beige);
	padding: 64px 48px 72px;
}

.sowood-section-head {
	align-items: flex-end;
	margin-bottom: 32px;
	gap: 20px;
}

.sowood-kicker {
	display: flex;
	align-items: center;
	gap: 10px;
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 12px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	margin: 0 0 16px;
}

.sowood-kicker::before {
	content: "";
	display: inline-block;
	width: 22px;
	height: 2px;
	background: currentColor;
}

.sowood-kicker--wood {
	color: var(--color-wood);
}

.sowood-kicker--neutral {
	color: var(--color-neutral-warm);
}

.sowood-section-title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 46px;
	line-height: 1.02;
	letter-spacing: -0.025em;
	margin: 0;
	max-width: 640px;
}

.sowood-section-title--dark {
	color: var(--color-text-on-light);
}

.sowood-section-title--light {
	color: var(--color-text-on-dark);
}

.sowood-section-intro {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 15px;
	line-height: 1.6;
	max-width: 340px;
	margin: 0;
}

.sowood-section-intro--dark {
	color: var(--color-hover);
}

.sowood-section-intro--light {
	color: rgba(255, 255, 255, 0.55);
}

.sowood-particuliers__grid {
	gap: 20px;
}

.sowood-card {
	display: flex;
	flex-direction: column;
	background: var(--color-text-on-dark);
	border: 1px solid rgba(58, 46, 38, 0.1);
	border-radius: 10px;
	overflow: hidden;
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.sowood-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 18px 40px -18px rgba(58, 46, 38, 0.4);
}

.sowood-card__media {
	position: relative;
	height: 0;
	padding-top: 75%; /* ratio 4:3 */
	margin: 0;
	background: #e7ddd3;
}

.sowood-card__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.sowood-card__body {
	padding: 22px 22px 26px;
}

.sowood-card__tag {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 11px;
	color: var(--color-wood);
	margin: 0 0 9px;
}

.sowood-card__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 20px;
	color: var(--color-text-on-light);
	margin: 0 0 8px;
}

.sowood-card__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 13.5px;
	line-height: 1.5;
	color: var(--color-hover);
	margin: 0 0 16px;
}

.sowood-card__link {
	margin: 0;
}

.sowood-card__link a {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 13px;
	color: var(--color-wood);
}

.sowood-card__link a:hover {
	color: var(--color-hover);
}

.sowood-kicker--light {
	color: rgba(255, 255, 255, 0.55);
}

/* ==================== SECTION SPORT & CLUBS ==================== */

.sowood-sport {
	position: relative;
	padding: 64px 48px 72px;
	overflow: hidden;
}

/* ==================== SECTION PROFESSIONNELS ==================== */

.sowood-pro {
	position: relative;
	padding: 0 48px 96px;
	overflow: hidden;
}

.sowood-pro__content {
	padding: 64px 56px 60px;
}

.sowood-pro__title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 44px;
	line-height: 1.02;
	letter-spacing: -0.025em;
	color: var(--color-text-on-dark);
	margin: 0 0 20px;
}

.sowood-pro__intro {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 16px;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.62);
	max-width: 480px;
	margin: 0 0 30px;
}

.sowood-pro__cta .wp-block-button__link {
	font-size: 14px;
	padding: 16px 30px;
}

@media (max-width: 960px) {
	.sowood-hero__title {
		font-size: 56px;
	}

	.sowood-nav__cards--4,
	.sowood-nav__cards--3 {
		grid-template-columns: 1fr 1fr;
	}

	.sowood-particuliers__grid {
		grid-template-columns: repeat(2, 1fr) !important;
	}
}

@media (max-width: 600px) {
	.sowood-particuliers__grid {
		grid-template-columns: 1fr !important;
	}
}

/*
 * Menu mobile — activé sous 960px (seuil où la barre desktop complète, logo +
 * 4 liens + sélecteur de langue + bouton Devis, dépasse la largeur
 * disponible : calcul détaillé dans l'audit responsive). Déclaré après les
 * @media 960px/600px ci-dessus pour rester prioritaire sur
 * .sowood-nav__cards--4/--3 (2 colonnes là-bas, 1 seule ici, plus adaptée à
 * un accordéon empilé).
 */
@media (max-width: 960px) {
	.sowood-header__bar {
		padding: 0 20px;
	}

	.sowood-header--transparent .sowood-header__bar {
		height: 68px;
	}

	.sowood-nav-toggle {
		display: inline-flex;
	}

	.sowood-header__actions .sowood-lang {
		display: none;
	}

	.sowood-nav {
		display: none;
		position: absolute;
		left: 0;
		right: 0;
		top: 100%;
		flex-direction: column;
		gap: 0;
		height: auto;
		max-height: calc(100vh - 68px);
		overflow-y: auto;
		background: rgba(15, 15, 15, 0.98);
		backdrop-filter: blur(10px);
		border-top: 1px solid rgba(255, 255, 255, 0.08);
		padding: 4px 0 12px;
	}

	.sowood-header[data-mobile-open="true"] .sowood-nav {
		display: flex;
	}

	/*
	 * .sowood-nav a un max-height + overflow-y:auto (pour scroller si le menu
	 * dépasse l'écran) : par défaut flex-shrink:1 sur les enfants d'un flex
	 * column contraint par max-height les comprime AVANT de laisser le
	 * scroll agir, ce qui écrasait le panneau ouvert sous sa propre hauteur
	 * de contenu (le justify-content:center hérité du panneau centrait alors
	 * le contenu en trop, débordant par-dessus la ligne suivante). Chaque
	 * enfant direct garde donc sa hauteur naturelle, et c'est le scroll du
	 * conteneur qui gère le dépassement, pas la compression.
	 */
	.sowood-nav > * {
		flex-shrink: 0;
	}

	.sowood-nav__row {
		padding: 0 20px;
	}

	.sowood-nav__item {
		flex: 1;
		height: auto;
		padding: 17px 0;
		border-bottom: 1px solid rgba(255, 255, 255, 0.08);
	}

	/*
	 * Flèche inline (dans le libellé, ex. "Particuliers ▼") masquée en mode
	 * mobile : elle ferait doublon avec celle du bouton caret dédié, aligné
	 * à droite, seul indicateur d'accordéon conservé ici.
	 */
	.sowood-nav__item > .sowood-nav__caret {
		display: none;
	}

	.sowood-nav__item--plain {
		padding: 17px 20px;
		border-bottom: 1px solid rgba(255, 255, 255, 0.08);
	}

	.sowood-nav__caret-btn {
		display: flex;
		align-items: center;
		justify-content: center;
		width: 48px;
		/* Pas de height explicite : "stretch" (hérité de .sowood-nav__row) doit
		   l'étirer à la hauteur du lien voisin — une valeur en % ici (même
		   100%) sort le bouton de l'étirement flex quand le parent fait
		   height:auto, et le réduit à sa hauteur de contenu (~16px). */
		align-self: stretch;
		flex: none;
		background: none;
		border: none;
		border-bottom: 1px solid rgba(255, 255, 255, 0.08);
		color: rgba(255, 255, 255, 0.6);
		cursor: pointer;
	}

	.sowood-nav__caret-btn .sowood-nav__caret {
		display: inline-block;
		transition: transform 0.2s ease;
	}

	.sowood-nav__caret-btn[aria-expanded="true"] .sowood-nav__caret {
		transform: rotate(180deg);
	}

	.sowood-nav__panel {
		position: static;
		min-height: 0;
		padding: 4px 20px 22px;
		border-top: none;
		backdrop-filter: none;
	}

	.sowood-nav__cards--4,
	.sowood-nav__cards--3 {
		grid-template-columns: 1fr;
	}

	.sowood-nav__pro {
		flex-direction: column;
		align-items: flex-start;
		gap: 16px;
	}

	.sowood-nav__pro-actions {
		flex-direction: column;
		align-items: stretch;
		width: 100%;
		gap: 10px;
	}

	.sowood-lang--mobile {
		display: flex;
		gap: 14px;
		padding: 18px 20px 6px;
	}
}

.sowood-category-page {
	position: relative;
	overflow: hidden;
}

/* ==================== FOOTER ==================== */

.sowood-footer {
	position: relative;
	background-color: var(--color-anthracite);
	border-top: 1px solid rgba(255, 255, 255, 0.08);
	overflow: hidden;
}

.sowood-footer__inner {
	position: relative;
	padding: 56px 48px 40px;
}

.sowood-footer__top {
	align-items: flex-start;
	gap: 40px;
	margin-bottom: 40px;
}

.sowood-footer__brand {
	max-width: 300px;
}

.sowood-footer__logo-img {
	margin: 0 0 16px;
}

.sowood-footer__logo-img img {
	height: 22px;
	width: auto;
}

.sowood-footer__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 13.5px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.5);
	margin: 0;
}

.sowood-footer__col-title {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 11px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.4);
	margin: 0 0 16px;
}

.sowood-footer__links,
.sowood-footer__contact {
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 0;
	padding: 0;
	font-family: var(--font-body);
	font-weight: 400;
	font-size: 14px;
	color: rgba(255, 255, 255, 0.72);
}

.sowood-footer__links a {
	color: inherit;
}

.sowood-footer__links a:hover {
	color: var(--color-terracotta);
}

.sowood-footer__bottom {
	align-items: center;
	gap: 12px;
	padding-top: 24px;
	border-top: 1px solid rgba(255, 255, 255, 0.08);
	font-family: var(--font-body);
	font-weight: 400;
	font-size: 12px;
	color: rgba(255, 255, 255, 0.35);
}

.sowood-footer__copyright,
.sowood-footer__badge {
	margin: 0;
}

.sowood-footer__badge {
	font-family: var(--font-label);
}

@media (max-width: 700px) {
	.sowood-footer__top {
		flex-direction: column;
	}
}

/* ==================== GABARIT PAGE CATÉGORIE / RÉALISATION ==================== */

.sowood-breadcrumb {
	position: relative;
	z-index: 1;
	padding: 26px 48px 0;
	display: flex;
	align-items: center;
	gap: 9px;
	font-family: var(--font-body);
	font-weight: 400;
	font-size: 12.5px;
}

.sowood-breadcrumb a {
	color: rgba(255, 255, 255, 0.5);
}

.sowood-breadcrumb a:hover {
	color: var(--color-terracotta);
}

.sowood-breadcrumb__sep {
	color: rgba(255, 255, 255, 0.28);
}

.sowood-breadcrumb__current {
	color: var(--color-text-on-dark);
	font-weight: 500;
}

.sowood-breadcrumb__plain {
	color: rgba(255, 255, 255, 0.5);
}

.sowood-cat-hero {
	position: relative;
	z-index: 1;
	padding: 36px 48px 56px;
}

.sowood-cat-hero__row {
	align-items: flex-end;
	gap: 48px;
}

.sowood-cat-hero__main {
	max-width: 660px;
}

.sowood-cat-title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 72px;
	line-height: 0.98;
	letter-spacing: -0.03em;
	color: var(--color-text-on-dark);
	margin: 0;
}

.sowood-cat-intro {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 16px;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.62);
	max-width: 440px;
	margin: 0;
}

.sowood-gallery {
	position: relative;
	z-index: 1;
	padding: 0 48px 40px;
}

.sowood-gallery__label-row {
	align-items: center;
	gap: 12px;
	margin-bottom: 24px;
}

.sowood-gallery__label {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 11px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
	margin: 0;
}

/*
 * Grille volontairement plus étroite que le reste du contenu (68 % de la
 * largeur disponible), centrée horizontalement dans l'espace disponible —
 * choix éditorial pour ne pas laisser la mosaïque envahir toute la largeur
 * de la page.
 */
.sowood-gallery__grid {
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
	max-width: 68%;
	margin: 0 auto;
}

.sowood-gallery__grid .sowood-gallery__item {
	aspect-ratio: 1 / 1;
}

.sowood-gallery__item {
	position: relative;
	overflow: hidden;
	border-radius: 10px;
	background: #1a1a1a;
	transition: transform 0.3s ease;
}

.sowood-gallery__item:hover {
	transform: translateY(-4px);
}

/*
 * Mosaïque fidèle à la maquette : 1 grande photo (2 colonnes × 2 lignes) en
 * haut à gauche, 2 photos de même taille empilées à sa droite (1 par ligne),
 * puis 3 photos égales sur une nouvelle ligne. Placement explicite par
 * position (nth-child) requis : le placement automatique de CSS Grid
 * remplit les cellules dans l'ordre de lecture et ne peut pas, de lui-même,
 * "sauter" la colonne 3 des lignes 1 et 2 pour la réserver aux 2 photos
 * empilées — d'où le bug précédent (image 2 étirée en portrait, image 3
 * qui retombait en colonne 1).
 *
 * Scopé à .sowood-gallery__grid (pas un sélecteur nu) : .sowood-gallery__item
 * est aussi le nom de classe des cellules générées par le shortcode
 * [sowood_realizations_grid] (page "Nos réalisations"), qui vit dans un
 * conteneur différent (.sowood-realizations-grid, grille simple sans
 * mosaïque) — un sélecteur nu ferait fuiter ce positionnement dans cette
 * grille-là aussi.
 */
.sowood-gallery__grid .sowood-gallery__item:nth-child(1) {
	grid-column: 1 / 3;
	grid-row: 1 / 3;
}

.sowood-gallery__grid .sowood-gallery__item:nth-child(2) {
	grid-column: 3;
	grid-row: 1;
}

.sowood-gallery__grid .sowood-gallery__item:nth-child(3) {
	grid-column: 3;
	grid-row: 2;
}

.sowood-gallery__grid .sowood-gallery__item:nth-child(4) {
	grid-column: 1;
	grid-row: 3;
}

.sowood-gallery__grid .sowood-gallery__item:nth-child(5) {
	grid-column: 2;
	grid-row: 3;
}

.sowood-gallery__grid .sowood-gallery__item:nth-child(6) {
	grid-column: 3;
	grid-row: 3;
}

.sowood-gallery__media {
	position: absolute;
	inset: 0;
	margin: 0;
	display: block;
}

.sowood-gallery__media a {
	position: absolute;
	inset: 0;
	display: block;
}

.sowood-gallery__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	margin: 0;
}

.sowood-gallery__item::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 45%, rgba(10, 9, 8, 0.82) 100%);
	pointer-events: none;
	z-index: 1;
}

.sowood-gallery__caption {
	position: absolute;
	left: 20px;
	right: 20px;
	bottom: 18px;
	margin: 0;
	pointer-events: none;
	z-index: 2;
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 16px;
	color: var(--color-text-on-dark);
}

.sowood-gallery__caption strong {
	display: block;
	font-family: var(--font-body);
	font-weight: 500;
	font-size: 11px;
	margin-bottom: 5px;
}

.sowood-gallery__caption.sowood-kicker--wood strong {
	color: var(--color-wood);
}

.sowood-gallery__caption.sowood-kicker--neutral strong {
	color: var(--color-neutral-warm);
}

.sowood-cta {
	position: relative;
	z-index: 1;
	padding: 52px 48px 84px;
}

.sowood-cta-shop {
	position: relative;
	overflow: hidden;
	border-radius: 8px;
	border: 1px solid rgba(255, 255, 255, 0.1);
	background: linear-gradient(120deg, #1c1815 0%, #141414 60%);
	padding: 64px 56px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 48px;
	flex-wrap: wrap;
}

.sowood-cta-shop__text {
	max-width: 560px;
}

.sowood-cta-shop__heading {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 40px;
	line-height: 1.05;
	letter-spacing: -0.025em;
	color: var(--color-text-on-dark);
	margin: 0 0 16px;
}

.sowood-cta-shop__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 15.5px;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.6);
	margin: 0;
}

.sowood-cta-shop__aside {
	display: flex;
	flex-direction: column;
	gap: 14px;
	align-items: flex-start;
	flex: none;
}

.sowood-cta-shop__note {
	font-family: var(--font-body);
	font-weight: 400;
	font-size: 13px;
	color: rgba(255, 255, 255, 0.4);
	margin: 0;
}

.sowood-cta-devis {
	border-radius: 8px;
	border: 1px solid rgba(255, 255, 255, 0.1);
	background: #141414;
	overflow: hidden;
	display: grid;
	grid-template-columns: 0.9fr 1.1fr;
}

.sowood-cta-devis__info {
	padding: 56px 48px;
	border-right: 1px solid rgba(255, 255, 255, 0.08);
}

.sowood-cta-devis__heading {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 38px;
	line-height: 1.05;
	letter-spacing: -0.025em;
	color: var(--color-text-on-dark);
	margin: 0 0 18px;
}

.sowood-cta-devis__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 15px;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.6);
	margin: 0 0 28px;
}

.sowood-cta-devis__benefits {
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 14px;
	margin: 0;
	padding: 0;
}

.sowood-cta-devis__benefits li {
	font-family: var(--font-body);
	font-weight: 400;
	font-size: 14px;
	color: rgba(255, 255, 255, 0.75);
}

.sowood-cta-devis__benefits li::before {
	content: "→";
	color: var(--color-terracotta);
	margin-right: 12px;
}

.sowood-cta-devis__contact {
	font-family: var(--font-body);
	font-weight: 400;
	font-size: 13px;
	color: rgba(255, 255, 255, 0.5);
	margin: 20px 0 0;
}

.sowood-cta-devis__contact a {
	color: rgba(255, 255, 255, 0.75);
	text-decoration: underline;
}

.sowood-cta-devis__contact a:hover {
	color: var(--color-terracotta);
}

.sowood-cta-devis__form-wrap {
	padding: 52px 48px 48px;
}

/* ==================== FORMULAIRE DE DEVIS ==================== */

.sowood-devis-form {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.sowood-devis-form__row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
}

.sowood-devis-form__hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.sowood-devis-form label {
	display: block;
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 12px;
	letter-spacing: 0.06em;
	color: rgba(255, 255, 255, 0.55);
	margin-bottom: 7px;
}

.sowood-devis-form input[type="text"],
.sowood-devis-form input[type="email"],
.sowood-devis-form textarea {
	width: 100%;
	background: #1c1c1c;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 8px;
	padding: 13px 14px;
	color: var(--color-text-on-dark);
	font-family: var(--font-body);
	font-size: 14px;
	outline: none;
}

.sowood-devis-form input[type="text"]:focus,
.sowood-devis-form input[type="email"]:focus,
.sowood-devis-form textarea:focus {
	border-color: var(--color-terracotta);
}

.sowood-devis-form textarea {
	resize: vertical;
	line-height: 1.55;
}

.sowood-devis-form__field-note {
	color: rgba(255, 255, 255, 0.3);
	text-transform: none;
	letter-spacing: 0;
}

.sowood-devis-form__file {
	display: flex;
	align-items: center;
	gap: 12px;
	background: #1c1c1c;
	border: 1px dashed rgba(255, 255, 255, 0.2);
	border-radius: 8px;
	padding: 14px;
	cursor: pointer;
	color: rgba(255, 255, 255, 0.55);
	font-size: 13.5px;
}

.sowood-devis-form__file:hover {
	border-color: var(--color-terracotta);
	color: rgba(255, 255, 255, 0.8);
}

.sowood-devis-form__file input[type="file"] {
	display: none;
}

.sowood-devis-form__file-icon {
	font-size: 16px;
	color: var(--color-terracotta);
}

.sowood-devis-form__submit {
	margin-top: 6px;
	width: 100%;
	justify-content: center;
}

.sowood-devis-error {
	color: #e07a5f;
	font-family: var(--font-body);
	font-size: 13px;
	margin: 0 0 8px;
}

.sowood-devis-sent {
	min-height: 300px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-start;
	gap: 14px;
}

.sowood-devis-sent__icon {
	width: 52px;
	height: 52px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 24px;
	color: var(--color-text-on-dark);
}

.sowood-devis-sent__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 24px;
	color: var(--color-text-on-dark);
}

.sowood-devis-sent__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 15px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.6);
	margin: 0;
	max-width: 360px;
}

.sowood-devis-sent__reset {
	margin-top: 8px;
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 13px;
	color: var(--color-terracotta);
	background: none;
	border: none;
	cursor: pointer;
	padding: 0;
}

/* ==================== GABARIT PAGE DEVIS ==================== */

.sowood-kicker--terracotta {
	color: var(--color-terracotta);
}

.sowood-devis-hero {
	position: relative;
	z-index: 1;
	padding: 34px 48px 20px;
}

.sowood-devis-title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 72px;
	line-height: 0.98;
	letter-spacing: -0.03em;
	color: var(--color-text-on-dark);
	margin: 0 0 22px;
	max-width: 800px;
}

.sowood-devis-lead {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 17px;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.64);
	max-width: 620px;
	margin: 0;
}

.sowood-devis-badges {
	gap: 12px;
	margin-top: 24px;
}

.sowood-devis-badge {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 99px;
	padding: 11px 18px;
	font-family: var(--font-body);
	font-weight: 500;
	font-size: 13px;
	color: rgba(255, 255, 255, 0.75);
	margin: 0;
}

.sowood-devis-badge::before {
	content: "→";
	color: var(--color-terracotta);
}

.sowood-devis-layout {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1.35fr 0.65fr;
	gap: 22px;
	align-items: start;
	padding: 12px 48px 84px;
	scroll-margin-top: 100px;
}

.sowood-devis-layout__form {
	border-radius: 12px;
	border: 1px solid rgba(255, 255, 255, 0.1);
	background: var(--color-anthracite);
	padding: 44px 44px 40px;
}

.sowood-devis-layout__aside {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.sowood-devis-steps {
	border-radius: 12px;
	border: 1px solid rgba(255, 255, 255, 0.09);
	background: linear-gradient(180deg, #1a1613 0%, #141414 100%);
	padding: 32px 30px;
}

.sowood-devis-steps__label {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 11px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--color-terracotta);
	margin: 0 0 24px;
}

.sowood-devis-step {
	display: flex;
	gap: 16px;
	align-items: flex-start;
}

.sowood-devis-step + .sowood-devis-step {
	margin-top: 22px;
}

.sowood-devis-step__num {
	flex: none;
	display: inline-flex;
	width: 38px;
	height: 38px;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	border: 1px solid rgba(211, 153, 114, 0.4);
	background: rgba(211, 153, 114, 0.1);
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 15px;
	color: var(--color-terracotta);
	margin: 0;
}

.sowood-devis-step__text {
	padding-top: 2px;
}

.sowood-devis-step__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 16px;
	color: var(--color-text-on-dark);
	margin: 0 0 5px;
}

.sowood-devis-step__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 13.5px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.58);
	margin: 0;
}

.sowood-devis-contact {
	border-radius: 12px;
	border: 1px solid rgba(255, 255, 255, 0.09);
	background: rgba(255, 255, 255, 0.03);
	padding: 28px 30px;
}

.sowood-devis-contact__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 16px;
	color: var(--color-text-on-dark);
	margin: 0 0 14px;
}

.sowood-devis-contact__item {
	display: flex;
	align-items: center;
	gap: 11px;
	font-family: var(--font-body);
	font-weight: 400;
	font-size: 14px;
	color: rgba(255, 255, 255, 0.72);
	margin: 0 0 11px;
}

.sowood-devis-contact__item:last-child {
	margin-bottom: 0;
}

.sowood-devis-contact__item::before {
	flex: none;
	color: var(--color-terracotta);
}

.sowood-devis-contact__item--mail::before {
	content: "✉";
}

.sowood-devis-contact__item--time::before {
	content: "◷";
}

.sowood-devis-contact__item--location::before {
	content: "⌖";
}

.sowood-devis-contact__item a:hover {
	color: var(--color-terracotta);
}

@media (max-width: 960px) {
	.sowood-devis-title {
		font-size: 44px;
	}

	.sowood-devis-layout {
		grid-template-columns: 1fr;
	}

	.sowood-devis-layout__form {
		padding: 32px 26px 28px;
	}
}

/* ==================== GABARIT PAGE RÉALISATION ==================== */

.sowood-real-hero {
	position: relative;
	z-index: 1;
	padding: 34px 48px 32px;
}

.sowood-real-title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 72px;
	line-height: 0.98;
	letter-spacing: -0.03em;
	color: var(--color-text-on-dark);
	margin: 0 0 22px;
	max-width: 900px;
}

.sowood-real-lead {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 20px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.62);
	max-width: 720px;
	margin: 0;
}

.sowood-real-hero-image,
.sowood-real-full-image {
	position: relative;
	z-index: 1;
	padding: 0 48px 20px;
}

/*
 * Photos volontairement plus étroites que le reste du contenu (68 % de la
 * largeur disponible), centrées horizontalement : à hauteur fixe égale, une
 * case moins large recadre beaucoup moins un sujet vertical (ex. un
 * trophée) qu'une case pleine largeur.
 */
.sowood-real-hero-image img,
.sowood-real-full-image img {
	display: block;
	width: 100%;
	max-width: 68%;
	margin: 0 auto;
	height: 520px;
	object-fit: cover;
	border-radius: 8px;
}

.sowood-real-hero-image img {
	height: 560px;
}

.sowood-real-meta {
	position: relative;
	z-index: 1;
	margin: 8px 48px 44px;
	grid-template-columns: repeat(4, 1fr);
	gap: 1px;
	background: rgba(255, 255, 255, 0.08);
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 8px;
	overflow: hidden;
}

.sowood-real-meta__cell {
	background: var(--color-anthracite);
	padding: 22px 24px;
}

.sowood-real-meta__label {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 11px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.42);
	margin: 0 0 8px;
}

.sowood-real-meta__value {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 16px;
	color: var(--color-text-on-dark);
	margin: 0;
}

.sowood-real-brief {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 220px 1fr;
	gap: 40px;
	max-width: 1080px;
	padding: 0 48px 48px;
}

.sowood-real-brief__label {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 11px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
	margin: 8px 0 0;
}

.sowood-real-brief__text p {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 18px;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.82);
	margin: 0 0 20px;
}

.sowood-real-brief__text p:last-child {
	margin-bottom: 0;
}

.sowood-real-images {
	position: relative;
	z-index: 1;
	padding: 0 48px 48px;
}

.sowood-real-images .wp-block-columns {
	max-width: 68%;
	margin: 0 auto;
	gap: 16px;
}

.sowood-real-images img {
	display: block;
	width: 100%;
	height: 400px;
	object-fit: cover;
	border-radius: 8px;
}

.sowood-real-points {
	position: relative;
	z-index: 1;
	padding: 0 48px 48px;
}

.sowood-real-points__label {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 11px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
	margin: 0 0 28px;
}

.sowood-real-points__grid {
	grid-template-columns: repeat(3, 1fr);
	gap: 32px;
}

.sowood-real-points__num {
	font-family: var(--font-label);
	font-weight: 600;
	font-size: 14px;
	color: var(--color-terracotta);
	margin: 0 0 12px;
}

.sowood-real-points__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 20px;
	color: var(--color-text-on-dark);
	margin: 0 0 10px;
}

.sowood-real-points__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 15px;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.58);
	margin: 0;
}

.sowood-real-quote {
	position: relative;
	z-index: 1;
	max-width: 960px;
	margin: 0 auto;
	padding: 8px 48px 56px;
	text-align: center;
}

.sowood-real-quote__text {
	font-family: var(--font-heading);
	font-weight: 400;
	font-size: 28px;
	line-height: 1.4;
	letter-spacing: -0.015em;
	color: var(--color-text-on-dark);
	margin: 0 0 20px;
}

.sowood-real-quote__author {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 13px;
	letter-spacing: 0.06em;
	color: rgba(255, 255, 255, 0.5);
	margin: 0;
}

.sowood-real-back {
	position: relative;
	z-index: 1;
	padding: 8px 48px 76px;
}

.sowood-real-back__link {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 15px;
	color: var(--color-text-on-dark);
	border: 1px solid rgba(255, 255, 255, 0.25);
	border-radius: 8px;
	padding: 15px 26px;
}

.sowood-real-back__link:hover {
	border-color: var(--color-terracotta);
	color: var(--color-terracotta);
}

@media (max-width: 960px) {
	.sowood-cat-title {
		font-size: 48px;
	}

	.sowood-real-title {
		font-size: 44px;
	}

	/* Bloc Gutenberg grid — remonté à 2 classes via le parent (voir plus
	   haut pour l'explication détaillée du conflit de spécificité). */
	.sowood-category-page .sowood-real-meta {
		grid-template-columns: repeat(2, 1fr);
	}

	.sowood-real-brief {
		grid-template-columns: 1fr;
		gap: 12px;
	}

	/* Bloc Gutenberg grid — remonté à 2 classes via le parent (voir plus
	   haut pour l'explication détaillée du conflit de spécificité). */
	.sowood-real-points .sowood-real-points__grid {
		grid-template-columns: 1fr;
	}

	.sowood-real-hero-image img {
		height: 340px;
		max-width: 100%;
	}

	.sowood-real-full-image img {
		height: 300px;
		max-width: 100%;
	}

	.sowood-real-images .wp-block-columns {
		max-width: 100%;
	}

	.sowood-real-images img {
		height: 260px;
	}

	.sowood-real-quote__text {
		font-size: 22px;
	}

	.sowood-gallery__grid {
		grid-template-columns: repeat(2, 1fr) !important;
		max-width: 100%;
	}

	.sowood-gallery__grid .sowood-gallery__item:nth-child(1) {
		grid-column: 1 / 3;
		grid-row: 1 / 3;
	}

	.sowood-gallery__grid .sowood-gallery__item:nth-child(2),
	.sowood-gallery__grid .sowood-gallery__item:nth-child(3),
	.sowood-gallery__grid .sowood-gallery__item:nth-child(4),
	.sowood-gallery__grid .sowood-gallery__item:nth-child(5),
	.sowood-gallery__grid .sowood-gallery__item:nth-child(6) {
		grid-column: auto;
		grid-row: auto;
	}

	.sowood-cta-devis {
		grid-template-columns: 1fr !important;
	}

	.sowood-cta-devis__info {
		border-right: none;
		border-bottom: 1px solid rgba(255, 255, 255, 0.08);
	}

}

@media (max-width: 600px) {
	.sowood-gallery__grid {
		grid-template-columns: 1fr !important;
	}

	.sowood-gallery__grid .sowood-gallery__item:nth-child(1) {
		grid-column: 1;
		grid-row: auto;
	}

	.sowood-devis-form__row {
		grid-template-columns: 1fr;
	}
}

/* ==================== PAGE "NOS RÉALISATIONS" ==================== */

.sowood-realizations-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: 16px;
}

.sowood-realizations-grid .sowood-gallery__item {
	aspect-ratio: 4 / 3;
}

.sowood-realizations-empty {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 15px;
	color: rgba(255, 255, 255, 0.6);
}

/* ==================== PAGE UNIVERS (grille des catégories enfants) ==================== */

.sowood-universe-children {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 20px;
	margin-top: 32px;
}

.sowood-sticky-devis {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 40;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 24px;
	flex-wrap: wrap;
	padding: 16px 48px;
	background: rgba(20, 20, 20, 0.96);
	backdrop-filter: blur(10px);
	border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.sowood-sticky-devis__text {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 15px;
	color: var(--color-text-on-dark);
}

body.page-template-realizations .sowood-category-page {
	padding-bottom: 90px;
}

/* ==================== ACCUEIL — SECTIONS ==================== */

.sowood-section-title--sm {
	font-size: 38px;
	line-height: 1.05;
	letter-spacing: -0.02em;
}

.sowood-section-cta-link {
	margin: 0;
	flex: none;
}

.sowood-section-cta-link a {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 14px;
	color: var(--color-terracotta);
	display: inline-flex;
	align-items: center;
	gap: 8px;
}

.sowood-section-cta-link a:hover {
	color: var(--color-hover);
}

.sowood-icon-badge {
	display: inline-flex;
	width: 52px;
	height: 52px;
	border-radius: 8px;
	background: rgba(211, 153, 114, 0.12);
	border: 1px solid rgba(211, 153, 114, 0.28);
	align-items: center;
	justify-content: center;
	color: var(--color-terracotta);
	flex: none;
}

/* ---- Un atelier, trois univers ---- */

.sowood-univers-intro {
	padding: 96px 48px 56px;
}

.sowood-univers-intro__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
	gap: 56px;
	align-items: start;
}

.sowood-univers-intro__title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 46px;
	line-height: 1.03;
	letter-spacing: -0.025em;
	color: var(--color-text-on-dark);
	margin: 0 0 22px;
}

.sowood-univers-intro__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 17px;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.66);
	max-width: 560px;
	margin: 0 0 28px;
}

.sowood-univers-intro__pastilles {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 10px;
	max-width: 560px;
}

.sowood-univers-pastille {
	background: var(--color-anthracite);
	border: 1px solid rgba(255, 255, 255, 0.1);
	border-radius: 12px;
	transition: border-color 0.2s ease, background-color 0.2s ease;
}

.sowood-univers-pastille:hover {
	background: #181818;
}

.sowood-univers-pastille--wood:hover {
	border-color: var(--color-terracotta);
}

.sowood-univers-pastille--neutral:hover {
	border-color: var(--color-neutral-warm);
}

.sowood-univers-pastille--light:hover {
	border-color: var(--color-text-on-dark);
}

.sowood-univers-pastille__link {
	display: flex;
	flex-direction: column;
	padding: 14px 14px 15px;
}

.sowood-univers-pastille__num {
	flex: none;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 13px;
	border: 1px solid currentColor;
	margin-bottom: 10px;
}

.sowood-univers-pastille--wood .sowood-univers-pastille__num {
	color: var(--color-terracotta);
}

.sowood-univers-pastille--neutral .sowood-univers-pastille__num {
	color: var(--color-neutral-warm);
}

.sowood-univers-pastille--light .sowood-univers-pastille__num {
	color: var(--color-text-on-dark);
}

.sowood-univers-pastille__title {
	display: block;
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 18px;
	color: var(--color-text-on-dark);
}

.sowood-univers-pastille__desc {
	display: block;
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 11.5px;
	line-height: 1.35;
	color: rgba(255, 255, 255, 0.55);
	margin-top: 0px;
}

.sowood-univers-intro__media {
	position: relative;
	height: 420px;
	border-radius: 12px;
	overflow: hidden;
	background: #1a1a1a;
}

.sowood-univers-intro__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* ---- Vitrine produits ---- */

.sowood-produits {
	padding: 88px 48px 56px;
}

.sowood-produits__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px;
}

.sowood-product {
	background: #141414;
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 12px;
	overflow: hidden;
	display: flex;
	flex-direction: column;
}

.sowood-product__media {
	position: relative;
	height: 300px;
	background: #1a1a1a;
}

.sowood-product__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.sowood-product__body {
	padding: 22px 24px 24px;
	display: flex;
	flex-direction: column;
	flex: 1;
}

.sowood-product__body .sowood-product__tag {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 10.5px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	margin: 0 0 6px;
}

.sowood-product__body .sowood-product__name {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 19px;
	color: var(--color-text-on-dark);
	margin: 0 0 4px;
}

.sowood-product__body .sowood-product__price {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 20px;
	color: var(--color-text-on-dark);
	margin: 4px 0 16px;
}

.sowood-product .wp-block-buttons {
	margin-top: auto;
}

.sowood-product .sowood-btn {
	width: 100%;
	justify-content: center;
}

/* ---- Notre savoir-faire & nos technologies ---- */

.sowood-savoir-faire {
	padding: 56px 48px 32px;
}

.sowood-savoir-faire__head {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 36px;
}

.sowood-savoir-faire__label {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 11px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
	margin: 0;
	flex: none;
}

.sowood-savoir-faire__rule {
	flex: 1;
	height: 1px;
	background: rgba(255, 255, 255, 0.1);
}

.sowood-savoir-faire__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 40px 40px;
}

.sowood-savoir-faire__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 19px;
	color: var(--color-text-on-dark);
	margin: 18px 0 9px;
}

.sowood-savoir-faire__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 14px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.58);
	margin: 0;
}

/* ---- Nos réalisations (accueil) ---- */

.sowood-home-realisations {
	padding: 88px 48px 56px;
}

.sowood-home-real-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px;
}

.sowood-home-real-card {
	position: relative;
	overflow: hidden;
	border-radius: 10px;
	background: #1a1a1a;
}

.sowood-home-real-card__link {
	position: relative;
	display: block;
	aspect-ratio: 3 / 2;
	transition: transform 0.25s ease;
}

.sowood-home-real-card:hover .sowood-home-real-card__link {
	transform: translateY(-3px);
}

.sowood-home-real-card__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.sowood-home-real-card__overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(10, 9, 8, 0.1) 40%, rgba(10, 9, 8, 0.9) 100%);
	pointer-events: none;
}

.sowood-home-real-card__text {
	position: absolute;
	left: 24px;
	right: 24px;
	bottom: 22px;
	display: block;
}

.sowood-home-real-card__tag {
	display: block;
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 10.5px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	margin: 0 0 7px;
}

.sowood-home-real-card__title {
	display: block;
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 20px;
	color: var(--color-text-on-dark);
}

/* ---- Teaser Atelier ---- */

/*
 * Un seul élément (pas de section wrapper séparée) sert à la fois de section
 * et de carte : le padding habituel des sections (64px 48px 56px) est donc
 * porté en margin autour de la carte elle-même.
 */
/*
 * Pas de layout "constrained" ici : cette carte EST directement la grille à
 * 2 colonnes (pas de wrapper "row" intermédiaire comme dans les autres
 * sections), donc le mécanisme .is-layout-constrained > * (qui plafonne les
 * enfants directs) n'aurait aucune prise sur elle-même. Plafond appliqué ici
 * en dur : width en calc() garde le gouttière de 48px minimum de chaque
 * côté sur les écrans normaux, max-width + margin auto prennent le relais
 * au-delà de 1440px.
 */
.sowood-atelier-teaser {
	display: grid;
	grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
	align-items: center;
	background: #141414;
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 12px;
	overflow: hidden;
	width: calc(100% - 96px);
	max-width: 1440px;
	margin: 64px auto 56px;
}

.sowood-atelier-teaser__media {
	position: relative;
	height: 360px;
	background: #1a1a1a;
}

.sowood-atelier-teaser__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.sowood-atelier-teaser__body {
	padding: 48px 52px 48px 8px;
}

.sowood-atelier-teaser__title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 31px;
	line-height: 1.1;
	letter-spacing: -0.02em;
	color: var(--color-text-on-dark);
	margin: 0 0 16px;
}

.sowood-atelier-teaser__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 15.5px;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.62);
	max-width: 480px;
	margin: 0 0 26px;
}

/* ---- Comment naît une pièce ---- */

.sowood-process {
	padding: 56px 48px 32px;
}

/*
 * !important nécessaire : .sowood-process est en layout "constrained" (voir
 * --theme-block-max-width dans :root) depuis la correction de la largeur de
 * conteneur sur l'accueil — la règle .is-layout-constrained > * force des
 * margin-inline auto en !important sur tout enfant direct, ce qui centrait
 * ce bloc au lieu de le laisser aligné à gauche (son max-width sert à
 * limiter la largeur du texte, pas à le centrer).
 *
 * margin-left n'est pas simplement 0 : sur un écran large, .sowood-process__grid
 * (l'autre enfant direct, lui pleine largeur) est plafonné à 1440px et centré
 * par ce même mécanisme — son bord gauche se retrouve donc décalé du padding
 * de section (48px) PLUS la moitié de l'espace restant au-delà de 1440px.
 * Ce calc() reproduit exactement ce même décalage pour que les deux bords
 * gauches restent alignés, au lieu de recoller ce titre au padding seul.
 */
.sowood-process__head {
	max-width: 620px;
	margin: 0 auto 36px max( 0px, calc( ( 100% - 1440px ) / 2 ) ) !important;
}

.sowood-process__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 16px;
}

.sowood-process__step {
	background: #141414;
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 12px;
	padding: 28px 26px;
}

.sowood-process__step-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 18px;
}

.sowood-process__num {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 22px;
	color: rgba(211, 153, 114, 0.5);
}

.sowood-process__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 18px;
	color: var(--color-text-on-dark);
	margin: 0 0 9px;
}

.sowood-process__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 13.5px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.55);
	margin: 0;
}

/*
 * CTA final : dégradé très léger (glow radial à 12% d'opacité + variation de
 * ton quasi imperceptible entre #1a1512 et #141313) — jamais un dégradé
 * franc, même recette que .sowood-cta-shop déjà utilisé sur les pages
 * catégorie/réalisation.
 */
.sowood-cta-final {
	padding: 64px 48px 96px;
}

.sowood-cta-final__card {
	position: relative;
	overflow: hidden;
	border: 1px solid rgba(255, 255, 255, 0.1);
	border-radius: 12px;
	background: radial-gradient(900px 380px at 12% 0%, rgba(211, 153, 114, 0.12), transparent 60%),
		linear-gradient(120deg, #1a1512 0%, #141313 60%);
	padding: 60px 56px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 48px;
	flex-wrap: wrap;
}

.sowood-cta-final__text {
	max-width: 560px;
}

.sowood-cta-final__title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 40px;
	line-height: 1.05;
	letter-spacing: -0.025em;
	color: var(--color-text-on-dark);
	margin: 0 0 16px;
}

.sowood-cta-final__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 15.5px;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.62);
	margin: 0;
}

.sowood-cta-final__action {
	display: flex;
	flex-direction: column;
	gap: 14px;
	align-items: flex-start;
	flex: none;
}

.sowood-cta-final__note {
	font-family: var(--font-body);
	font-weight: 400;
	font-size: 13px;
	color: rgba(255, 255, 255, 0.4);
	margin: 0;
}

@media (max-width: 960px) {
	.sowood-univers-intro__grid {
		grid-template-columns: 1fr;
	}

	/*
	 * Blocs Gutenberg "Groupe" en layout grid : même cause que pour
	 * .sowood-savoir-faire__grid/.sowood-uni-capabilities__grid (voir plus
	 * bas) — la règle inline générée par WP pour chaque bloc
	 * (.wp-container-core-group-is-layout-xxxxx) gagnait la cascade sur ces
	 * 4 sélecteurs à une seule classe, qui ne s'appliquaient donc jamais en
	 * production. Corrigés en remontant à 2 classes via le parent.
	 */
	.sowood-univers-intro__text .sowood-univers-intro__pastilles {
		grid-template-columns: 1fr;
	}

	.sowood-produits .sowood-produits__grid,
	.sowood-home-realisations .sowood-home-real-grid {
		grid-template-columns: 1fr;
	}

	/*
	 * ".sowood-savoir-faire .sowood-savoir-faire__grid" (2 classes) : ce bloc
	 * Gutenberg "Groupe" en layout grid génère un style inline par bloc
	 * (.wp-container-core-group-is-layout-xxxxx) à la même spécificité (1
	 * classe) que ".sowood-savoir-faire__grid" seul, imprimé après cette
	 * feuille — cette règle (déjà présente avant la présente correction) ne
	 * s'appliquait donc jamais en production. Même cause que pour
	 * .sowood-uni-capabilities__row/__grid plus bas dans ce fichier.
	 */
	.sowood-savoir-faire .sowood-savoir-faire__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.sowood-process .sowood-process__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.sowood-atelier-teaser {
		grid-template-columns: 1fr;
	}

	.sowood-atelier-teaser__body {
		padding: 32px 26px;
	}

	.sowood-cta-final__card {
		padding: 40px 30px;
	}
}

/* ====================================================================
   PAGES UNIVERS (Particuliers / Sport & Clubs / Professionnels)
   ==================================================================== */

.sowood-uni-hero-eyebrow {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 22px;
}

.sowood-uni-hero-eyebrow__bar {
	width: 26px;
	height: 2px;
	background: currentColor;
}

.sowood-uni-hero-eyebrow__label {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 12px;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	margin: 0;
}

.sowood-uni-hero-eyebrow--wood {
	color: var(--color-terracotta);
}

.sowood-uni-hero-eyebrow--neutral {
	color: var(--color-neutral-warm);
}

.sowood-uni-hero-eyebrow--light {
	color: rgba(255, 255, 255, 0.62);
}

/*
 * Sections pleine largeur des pages univers (jusqu'à .sowood-uni-cta plus
 * bas) : pas de background ici, volontairement — l'audit "texture bois"
 * mené sur l'accueil n'avait couvert que .sowood-hero/.sowood-sport/
 * .sowood-pro/.sowood-category-page, jamais ces classes propres aux pages
 * univers, qui gardaient donc chacune leur fond anthracite opaque hérité
 * d'avant l'unification — masquant totalement body::before sur ces 3 pages
 * (Particuliers, Sport & Clubs, Professionnels) tandis que les pages
 * catégorie, elles, n'avaient jamais eu ce fond en premier lieu.
 */

/* ---- Hero split (texte + photo latérale) — Particuliers / Professionnels ---- */

.sowood-uni-hero-split {
	position: relative;
	z-index: 1;
	padding: 58px 48px 64px;
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

.sowood-uni-hero-split__row {
	display: grid;
	grid-template-columns: 1.06fr 0.94fr;
	gap: 56px;
	align-items: center;
}

.sowood-uni-hero-split__title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 68px;
	line-height: 1;
	letter-spacing: -0.03em;
	color: var(--color-text-on-dark);
	margin: 0 0 24px;
}

.sowood-uni-hero-split__lead {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 18px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.66);
	max-width: 520px;
	margin: 0;
}

.sowood-uni-hero-split__ctas {
	display: flex;
	gap: 14px;
	flex-wrap: wrap;
	margin-top: 32px;
}

.sowood-uni-hero-split__ctas .wp-block-button__link {
	font-size: 14px;
	padding: 16px 30px;
}

.sowood-uni-hero-split__media {
	position: relative;
	height: 440px;
	border-radius: 8px;
	overflow: hidden;
	background: #1a1a1a;
	box-shadow: 0 30px 60px -30px rgba(0, 0, 0, 0.65);
	margin: 0;
}

.sowood-uni-hero-split__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	margin: 0;
}

/*
 * ---- Hero carte (texte à gauche, visuel encadré à droite) — Sport & Clubs ----
 * Même structure que .sowood-fdv-hero (carte à bord arrondi, dégradé, grille
 * 2 colonnes) mais avec un cadre photo à la place du motif SVG animé : le
 * cadre attend une vraie photo, ajoutée par Matt depuis l'éditeur (bloc
 * Image standard, voir sowood_render_universe_sport() dans
 * inc/universe-content.php).
 */
.sowood-uni-hero-card {
	position: relative;
	z-index: 1;
	padding: 22px 48px 0;
}

.sowood-uni-hero-card__row {
	position: relative;
	overflow: hidden;
	border-radius: 12px;
	border: 1px solid rgba(255, 255, 255, 0.09);
	background: radial-gradient(120% 120% at 82% 30%, #241d17 0%, #171310 46%, #100d0b 100%);
	min-height: 480px;
	display: grid;
	grid-template-columns: 1.05fr 0.95fr;
	align-items: center;
}

.sowood-uni-hero-card__text {
	padding: 64px 56px;
	position: relative;
	z-index: 2;
}

.sowood-uni-hero-card__title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 68px;
	line-height: 1;
	letter-spacing: -0.03em;
	color: var(--color-text-on-dark);
	margin: 0 0 18px;
}

.sowood-uni-hero-card__lead {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 17px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.72);
	max-width: 460px;
	margin: 0;
}

.sowood-uni-hero-card__media-wrap {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 40px;
}

.sowood-uni-hero-card__media {
	width: 100%;
	max-width: 360px;
	aspect-ratio: 1 / 1;
	margin: 0;
	border-radius: 24px;
	overflow: hidden;
	border: 1px solid rgba(255, 255, 255, 0.12);
	background: #1a1512;
}

.sowood-uni-hero-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* ---- Bandeau réassurance 3 colonnes — Particuliers ---- */

.sowood-uni-strip {
	position: relative;
	z-index: 1;
	padding: 20px 48px 60px;
}

.sowood-uni-strip__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1px;
	background: rgba(255, 255, 255, 0.08);
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 8px;
	overflow: hidden;
}

.sowood-uni-strip__cell {
	background: var(--color-anthracite);
	padding: 30px 32px;
}

.sowood-uni-strip__cell-title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 22px;
	color: var(--color-terracotta);
	margin: 0 0 10px;
}

.sowood-uni-strip__cell-desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 14px;
	line-height: 1.55;
	color: rgba(255, 255, 255, 0.6);
	margin: 0;
}

/* ---- Bandeau stats 3 colonnes — Sport & Clubs ---- */

.sowood-uni-stat-rail {
	position: relative;
	z-index: 1;
	padding: 20px 48px 8px;
}

.sowood-uni-stat-rail__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
}

.sowood-uni-stat-rail__cell {
	display: flex;
	align-items: baseline;
	gap: 14px;
	padding: 22px 26px;
	background: #141414;
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 8px;
}

.sowood-uni-stat-rail__num {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 30px;
	color: var(--color-neutral-warm);
	flex: none;
	margin: 0;
}

.sowood-uni-stat-rail__text-title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 15px;
	color: var(--color-text-on-dark);
	margin: 0 0 3px;
}

.sowood-uni-stat-rail__text-desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 13px;
	color: rgba(255, 255, 255, 0.55);
	margin: 0;
}

/* ---- En-tête de section grille ("Explorer les catégories" / "Nos prestations") ---- */

.sowood-uni-grid-section {
	position: relative;
	z-index: 1;
	padding: 60px 48px 44px;
}

.sowood-uni-grid-section__head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 30px;
	margin-bottom: 30px;
	flex-wrap: wrap;
}

.sowood-uni-grid-section__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 30px;
	line-height: 1.05;
	letter-spacing: -0.02em;
	color: var(--color-text-on-dark);
	margin: 0;
}

.sowood-uni-grid-section__meta {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 11px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.4);
	margin: 0;
}

/*
 * Thème sombre des cartes générées par le shortcode [sowood_universe_children]
 * (voir inc/universe-children-grid.php, non modifié) : le shortcode reste
 * inchangé, seul cet habillage CSS — ciblé via la classe portée par le bloc
 * Groupe qui l'entoure dans le contenu de la page — retravaille l'apparence
 * des mêmes éléments .sowood-card déjà générés.
 */
.sowood-uni-grid--dark .sowood-universe-children {
	margin-top: 0;
}

.sowood-uni-grid--dark .sowood-card {
	background: #141414;
	border: 1px solid rgba(255, 255, 255, 0.09);
	border-radius: 10px;
}

.sowood-uni-grid--dark .sowood-card:hover {
	border-color: var(--color-neutral-warm);
	transform: translateY(-3px);
	box-shadow: none;
}

.sowood-uni-grid--dark .sowood-card__media {
	padding-top: 0;
	height: 200px;
	background: #1a1a1a;
}

.sowood-uni-grid--dark .sowood-card__body {
	padding: 28px 28px 30px;
}

.sowood-uni-grid--dark .sowood-card__title {
	color: var(--color-text-on-dark);
	font-size: 21px;
	letter-spacing: -0.015em;
}

.sowood-uni-grid--dark .sowood-card__desc {
	color: rgba(255, 255, 255, 0.62);
	font-size: 14px;
}

.sowood-uni-grid--dark .sowood-card__link a {
	color: var(--color-terracotta);
	font-size: 14px;
}

/* Sport & Clubs : grille uniforme à 3 colonnes (pas de mosaïque). */
.sowood-uni-grid--uniform .sowood-universe-children {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px;
	margin-top: 0;
}

/*
 * Particuliers : mosaïque éditoriale approximée par positionnement explicite
 * (nth-child) — même technique déjà éprouvée sur .sowood-gallery__item.
 * Le shortcode restant dynamique, l'ordre visuel dépend de l'attribut
 * "Ordre" des pages enfants (voir Attributs de page dans l'admin) : si une
 * page catégorie est ajoutée/réordonnée, la mosaïque se recompose selon ces
 * 5 emplacements fixes — au-delà de 5 cartes, les suivantes retombent en
 * flux normal (1 cellule chacune).
 */
.sowood-uni-grid--mosaic .sowood-universe-children {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
	margin-top: 0;
}

.sowood-uni-grid--mosaic .sowood-card {
	position: relative;
	aspect-ratio: 1 / 1;
	background: #1a1a1a;
	border: none;
	border-radius: 10px;
	overflow: hidden;
	display: block;
}

.sowood-uni-grid--mosaic .sowood-card:hover {
	transform: translateY(-3px);
	box-shadow: none;
}

.sowood-uni-grid--mosaic .sowood-card__media {
	position: absolute;
	inset: 0;
	height: 100%;
	padding-top: 0;
	margin: 0;
}

.sowood-uni-grid--mosaic .sowood-card__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.sowood-uni-grid--mosaic .sowood-card::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(10, 9, 8, 0.12) 40%, rgba(10, 9, 8, 0.88) 100%);
	pointer-events: none;
	z-index: 1;
}

.sowood-uni-grid--mosaic .sowood-card__body {
	position: absolute;
	left: 22px;
	right: 22px;
	bottom: 20px;
	z-index: 2;
	padding: 0;
	background: none;
}

.sowood-uni-grid--mosaic .sowood-card__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 19px;
	color: var(--color-text-on-dark);
	margin: 0 0 4px;
}

.sowood-uni-grid--mosaic .sowood-card__desc {
	font-size: 13px;
	line-height: 1.45;
	color: rgba(255, 255, 255, 0.72);
	margin: 6px 0 0;
	max-width: 380px;
}

.sowood-uni-grid--mosaic .sowood-card__link {
	margin-top: 8px;
}

.sowood-uni-grid--mosaic .sowood-card__link a {
	font-size: 12.5px;
	color: var(--color-terracotta);
}

.sowood-uni-grid--mosaic .sowood-card:nth-child(1) {
	grid-column: 1 / 3;
	grid-row: 1 / 3;
}

.sowood-uni-grid--mosaic .sowood-card:nth-child(1) .sowood-card__title {
	font-size: 32px;
}

.sowood-uni-grid--mosaic .sowood-card:nth-child(1) .sowood-card__body {
	left: 32px;
	right: 32px;
	bottom: 30px;
}

.sowood-uni-grid--mosaic .sowood-card:nth-child(2) {
	grid-column: 3;
	grid-row: 1;
}

.sowood-uni-grid--mosaic .sowood-card:nth-child(3) {
	grid-column: 3;
	grid-row: 2;
}

.sowood-uni-grid--mosaic .sowood-card:nth-child(4) {
	grid-column: 1 / 3;
	grid-row: 3;
}

.sowood-uni-grid--mosaic .sowood-card:nth-child(5) {
	grid-column: 3;
	grid-row: 3;
}

/* ---- Nos savoir-faire (pictogrammes, Professionnels) ---- */

.sowood-icon-badge--neutral {
	background: rgba(166, 143, 130, 0.14);
	border-color: rgba(166, 143, 130, 0.3);
	color: var(--color-neutral-warm);
}

.sowood-uni-capabilities {
	position: relative;
	z-index: 1;
	padding: 56px 48px 20px;
}

.sowood-uni-capabilities__row {
	display: grid;
	grid-template-columns: 0.8fr 1.2fr;
	gap: 56px;
	align-items: start;
}

.sowood-uni-capabilities__intro {
	position: sticky;
	top: 100px;
}

.sowood-uni-capabilities__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 32px;
	line-height: 1.05;
	letter-spacing: -0.02em;
	color: var(--color-text-on-dark);
	margin: 0 0 18px;
}

.sowood-uni-capabilities__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 15px;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.6);
	margin: 0 0 26px;
}

.sowood-uni-capabilities__intro .wp-block-button__link {
	font-size: 14px;
	padding: 15px 26px;
}

.sowood-uni-capabilities__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 36px 40px;
}

.sowood-uni-capabilities__item-title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 18px;
	color: var(--color-text-on-dark);
	margin: 16px 0 8px;
}

.sowood-uni-capabilities__item-desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 13.5px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.58);
	margin: 0;
}

/* ---- Portfolio B2B (Professionnels) — réutilise .sowood-realizations-grid ---- */

.sowood-uni-portfolio {
	position: relative;
	z-index: 1;
	padding: 56px 48px 20px;
}

.sowood-uni-portfolio__head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 30px;
	margin-bottom: 30px;
	flex-wrap: wrap;
}

.sowood-uni-portfolio__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 30px;
	line-height: 1.05;
	letter-spacing: -0.02em;
	color: var(--color-text-on-dark);
	margin: 0;
	max-width: 520px;
}

.sowood-uni-portfolio__link {
	margin: 0;
	flex: none;
}

.sowood-uni-portfolio__link a {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 14px;
	color: var(--color-terracotta);
}

/* ---- CTA final (boutique / devis) ---- */

.sowood-uni-cta {
	position: relative;
	z-index: 1;
	padding: 44px 48px 72px;
}

.sowood-uni-cta__card {
	position: relative;
	overflow: hidden;
	border-radius: 8px;
	border: 1px solid rgba(255, 255, 255, 0.1);
	background: radial-gradient(900px 380px at 12% 0%, rgba(211, 153, 114, 0.1), transparent 60%),
		linear-gradient(120deg, #1a1512 0%, #141313 60%);
	padding: 60px 56px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 48px;
	flex-wrap: wrap;
}

.sowood-uni-cta__text {
	max-width: 560px;
}

.sowood-uni-cta__title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 38px;
	line-height: 1.05;
	letter-spacing: -0.025em;
	color: var(--color-text-on-dark);
	margin: 0 0 16px;
}

.sowood-uni-cta__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 15.5px;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.65);
	margin: 0;
}

.sowood-uni-cta__action {
	display: flex;
	flex-direction: column;
	gap: 14px;
	align-items: flex-start;
	flex: none;
}

.sowood-uni-cta__action .wp-block-button__link {
	font-size: 15px;
	padding: 18px 34px;
}

.sowood-uni-cta__note {
	font-family: var(--font-body);
	font-weight: 400;
	font-size: 13px;
	color: rgba(255, 255, 255, 0.45);
	margin: 0;
}

/* Variante Professionnels : carte divisée en 2, liste d'arguments + bouton à droite. */
.sowood-uni-cta--pro .sowood-uni-cta__card {
	display: grid;
	grid-template-columns: 1fr 1fr;
	padding: 0;
	background: var(--color-anthracite);
}

.sowood-uni-cta--pro .sowood-uni-cta__text {
	padding: 56px 48px;
	max-width: none;
}

.sowood-uni-cta--pro .sowood-uni-cta__aside {
	padding: 56px 48px;
	border-left: 1px solid rgba(255, 255, 255, 0.08);
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 18px;
}

.sowood-uni-cta--pro .sowood-uni-cta__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.sowood-uni-cta--pro .sowood-uni-cta__list li {
	font-family: var(--font-body);
	font-weight: 400;
	font-size: 14.5px;
	color: rgba(255, 255, 255, 0.8);
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0;
}

.sowood-uni-cta--pro .sowood-uni-cta__list li::before {
	content: "→";
	color: var(--color-terracotta);
}

.sowood-uni-cta--pro .sowood-uni-cta__aside .wp-block-button__link {
	font-size: 15px;
	padding: 16px 30px;
	margin-top: 4px;
	text-align: center;
	width: 100%;
}

@media (max-width: 960px) {
	.sowood-uni-hero-split__row {
		grid-template-columns: 1fr;
	}

	.sowood-uni-hero-split__media {
		height: 320px;
	}

	.sowood-uni-hero-split__title,
	.sowood-uni-hero-card__title {
		font-size: 42px;
	}

	.sowood-uni-hero-card__row {
		grid-template-columns: 1fr;
	}

	.sowood-uni-hero-card__media-wrap {
		padding: 0 40px 40px;
	}

	/* Blocs Gutenberg grid — remontés à 2 classes via le parent. */
	.sowood-uni-strip .sowood-uni-strip__grid,
	.sowood-uni-stat-rail .sowood-uni-stat-rail__grid {
		grid-template-columns: 1fr;
	}

	.sowood-uni-grid--uniform .sowood-universe-children {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.sowood-uni-grid--mosaic .sowood-universe-children {
		grid-template-columns: repeat(2, 1fr);
	}

	.sowood-uni-grid--mosaic .sowood-card:nth-child(n) {
		grid-column: auto;
		grid-row: auto;
	}

	.sowood-uni-grid--mosaic .sowood-card:nth-child(1) {
		grid-column: 1 / 3;
		aspect-ratio: 2 / 1;
	}

	/*
	 * ".sowood-uni-capabilities .sowood-uni-capabilities__row" (2 classes)
	 * volontaire : ce bloc Gutenberg "Groupe" en layout grid génère un style
	 * inline par bloc (.wp-container-core-group-is-layout-xxxxx) à la même
	 * spécificité (1 classe) qu'un ".sowood-uni-capabilities__row" seul, et
	 * imprimé après cette feuille — il gagnait la cascade et cette règle
	 * (déjà présente avant la présente correction) ne s'appliquait jamais
	 * en production. Même cause que pour .sowood-uni-capabilities__grid
	 * juste en dessous.
	 */
	.sowood-uni-capabilities .sowood-uni-capabilities__row {
		grid-template-columns: 1fr;
	}

	.sowood-uni-capabilities__intro {
		position: static;
	}

	.sowood-uni-cta__card,
	.sowood-uni-cta--pro .sowood-uni-cta__card {
		grid-template-columns: 1fr;
	}

	.sowood-uni-cta--pro .sowood-uni-cta__aside {
		border-left: none;
		border-top: 1px solid rgba(255, 255, 255, 0.08);
	}
}

@media (max-width: 600px) {
	.sowood-uni-grid--uniform .sowood-universe-children,
	.sowood-uni-grid--mosaic .sowood-universe-children {
		grid-template-columns: 1fr;
	}

	.sowood-uni-grid--mosaic .sowood-card:nth-child(n) {
		grid-column: 1;
		grid-row: auto;
	}
}

/* ====================================================================
   GABARIT PAGE CATÉGORIE — "Boutique" (specs pictogrammes, galerie
   uniforme, lien retour univers)
   ==================================================================== */

.sowood-cat-specs {
	position: relative;
	z-index: 1;
	padding: 0 48px 48px;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px;
}

.sowood-cat-specs__item {
	display: flex;
	gap: 16px;
	align-items: flex-start;
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 10px;
	padding: 22px 24px;
}

.sowood-cat-specs__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 15px;
	color: var(--color-text-on-dark);
	margin: 0 0 5px;
}

.sowood-cat-specs__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 12.5px;
	line-height: 1.5;
	color: rgba(255, 255, 255, 0.55);
	margin: 0;
}

/*
 * Grille de galerie "uniforme" (gabarit Boutique) : remplace la mosaïque à
 * photo vedette par des cartes toutes au même format, qui s'enroulent
 * naturellement quel que soit le nombre de photos. Portée par le modificateur
 * .sowood-gallery__grid--uniform (ajouté par sowood_render_gallery() quand
 * $uniform=true) pour ne pas affecter .sowood-gallery__grid ailleurs (pages
 * réalisation, catégories "devis" pas encore retouchées).
 */
.sowood-gallery__grid.sowood-gallery__grid--uniform {
	grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
	grid-auto-rows: auto;
	max-width: none;
	margin: 0;
	gap: 18px;
}

.sowood-gallery__grid--uniform .sowood-gallery__item {
	aspect-ratio: 4 / 3;
}

.sowood-gallery__grid--uniform .sowood-gallery__item:nth-child(n) {
	grid-column: auto;
	grid-row: auto;
}

@media (max-width: 960px) {
	/* Bloc Gutenberg grid — remonté à 2 classes via le parent. */
	.sowood-category-page .sowood-cat-specs {
		grid-template-columns: 1fr;
	}

	.sowood-gallery__grid.sowood-gallery__grid--uniform {
		grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	}
}

/* ====================================================================
   PAGE CATÉGORIE "FLEUR DE VIE" — dossier éditorial dédié
   ==================================================================== */

.sowood-fdv-hero {
	position: relative;
	z-index: 1;
	padding: 34px 48px 20px;
}

.sowood-fdv-hero__row {
	position: relative;
	overflow: hidden;
	border-radius: 12px;
	border: 1px solid rgba(255, 255, 255, 0.09);
	background: radial-gradient(120% 120% at 82% 30%, #241d17 0%, #171310 46%, #100d0b 100%);
	min-height: 560px;
	display: grid;
	grid-template-columns: 1.02fr 0.98fr;
}

.sowood-fdv-hero__text {
	padding: 64px 56px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	position: relative;
	z-index: 2;
}

.sowood-fdv-hero__title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 88px;
	line-height: 0.92;
	letter-spacing: -0.035em;
	color: var(--color-text-on-dark);
	margin: 0 0 26px;
}

.sowood-fdv-hero__lead {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 18px;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.66);
	max-width: 460px;
	margin: 0 0 34px;
}

.sowood-fdv-hero__ctas .wp-block-button__link {
	font-size: 15px;
	padding: 16px 30px;
}

/*
 * Variante propre à Fleur de Vie : fond transparent (plutôt que le fond
 * légèrement teinté de la base) et survol en accent terracotta (plutôt que
 * le simple éclaircissement blanc de la base) — conservé tel quel, c'est la
 * seule section à vouloir ce rendu précis pour son bouton "Contour".
 */
.sowood-fdv-hero__ctas .is-style-outline .wp-block-button__link {
	background-color: transparent !important;
}

.sowood-fdv-hero__ctas .is-style-outline .wp-block-button__link:hover {
	border-color: var(--color-terracotta) !important;
	background-color: transparent !important;
	color: var(--color-terracotta) !important;
}

.sowood-fdv-hero__motif-wrap {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}

.sowood-fdv-hero__glow {
	position: absolute;
	width: 150%;
	height: 150%;
	background: radial-gradient(circle at center, rgba(211, 153, 114, 0.16) 0%, transparent 60%);
	pointer-events: none;
}

.sowood-fdv-hero__motif-wrap svg {
	position: relative;
	z-index: 1;
	max-width: 100%;
	height: auto;
}

/*
 * Rotation lente en CSS pur (aucun JS requis) — le motif est un SVG statique
 * dont les positions de cercles sont calculées une fois côté PHP
 * (sowood_fdv_circles()), voir inc/fleur-de-vie-content.php.
 */
.sowood-fdv-motif {
	animation: sowood-fdv-spin 90s linear infinite;
}

@keyframes sowood-fdv-spin {
	to {
		transform: rotate(360deg);
	}
}

@media (prefers-reduced-motion: reduce) {
	.sowood-fdv-motif {
		animation: none;
	}
}

/* ---- Bandeau specs (4 colonnes clé/valeur) ---- */

.sowood-fdv-specs {
	position: relative;
	z-index: 1;
	padding: 14px 48px 40px;
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 16px;
}

.sowood-fdv-specs__cell {
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 10px;
	padding: 20px 22px;
}

.sowood-fdv-specs__key {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 11px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--color-wood);
	margin: 0 0 8px;
}

.sowood-fdv-specs__value {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 15px;
	color: var(--color-text-on-dark);
	margin: 0;
}

/* ---- Label de section générique ("Origine & symbolique", filet horizontal) ---- */

.sowood-fdv-section-label {
	align-items: center;
	gap: 12px;
	margin-bottom: 34px;
}

.sowood-fdv-section-label__text {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 11px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
	margin: 0;
	flex: none;
}

.sowood-fdv-section-label__rule {
	flex: 1;
	height: 1px;
	background: rgba(255, 255, 255, 0.1);
}

/* ---- Origine & symbolique ---- */

.sowood-fdv-symbolic {
	position: relative;
	z-index: 1;
	padding: 44px 48px 24px;
}

.sowood-fdv-symbolic__row {
	grid-template-columns: 1.15fr 0.85fr;
	gap: 56px;
	align-items: start;
}

.sowood-fdv-symbolic__title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 40px;
	line-height: 1.08;
	letter-spacing: -0.025em;
	color: var(--color-text-on-dark);
	margin: 0 0 24px;
	max-width: 620px;
}

.sowood-fdv-symbolic__text {
	columns: 2;
	column-gap: 40px;
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 15.5px;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.66);
}

.sowood-fdv-symbolic__text p {
	margin: 0 0 18px;
	break-inside: avoid;
}

.sowood-fdv-symbolic__text p:last-child {
	margin-bottom: 0;
}

.sowood-fdv-meanings {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.sowood-fdv-meaning {
	gap: 16px;
	align-items: flex-start;
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 10px;
	padding: 20px 22px;
}

.sowood-fdv-meaning__glyph {
	flex: none;
	font-family: var(--font-label);
	font-weight: 600;
	font-size: 18px;
	color: var(--color-terracotta);
	margin: 0;
	padding-top: 2px;
}

.sowood-fdv-meaning__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 16px;
	color: var(--color-text-on-dark);
	margin: 0 0 6px;
}

.sowood-fdv-meaning__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 13.5px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.58);
	margin: 0;
}

/* ---- La construction (3 étapes) ---- */

.sowood-fdv-construction {
	position: relative;
	z-index: 1;
	padding: 44px 48px 24px;
}

.sowood-fdv-construction__card {
	border-radius: 12px;
	border: 1px solid rgba(255, 255, 255, 0.08);
	background: linear-gradient(180deg, #161311 0%, #111111 100%);
	padding: 48px 52px;
}

.sowood-fdv-construction__head {
	max-width: 560px;
	margin-bottom: 40px;
}

.sowood-fdv-construction__title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 34px;
	line-height: 1.1;
	letter-spacing: -0.02em;
	color: var(--color-text-on-dark);
	margin: 0;
}

.sowood-fdv-construction__grid {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
}

.sowood-fdv-step {
	display: flex;
	flex-direction: column;
	gap: 20px;
	background: rgba(255, 255, 255, 0.02);
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 10px;
	padding: 28px 28px 30px;
}

.sowood-fdv-step__diagram {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 180px;
}

.sowood-fdv-step__diagram svg {
	max-width: 100%;
	height: auto;
}

.sowood-fdv-step__num {
	font-family: var(--font-label);
	font-weight: 600;
	font-size: 13px;
	color: var(--color-wood);
	margin: 0 0 8px;
}

.sowood-fdv-step__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 18px;
	color: var(--color-text-on-dark);
	margin: 0 0 8px;
}

.sowood-fdv-step__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 13.5px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.58);
	margin: 0;
}

/* ---- En-tête éditorial de la galerie ---- */

.sowood-fdv-gallery-head {
	position: relative;
	z-index: 1;
	align-items: flex-end;
	gap: 24px;
	margin: 0 48px 26px;
}

.sowood-fdv-gallery-head__title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 38px;
	line-height: 1.05;
	letter-spacing: -0.025em;
	color: var(--color-text-on-dark);
	margin: 0;
}

.sowood-fdv-gallery-head__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 15px;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.55);
	max-width: 400px;
	margin: 0;
}

/* ---- Encart "Dossier en cours d'écriture" ---- */

.sowood-fdv-notice {
	position: relative;
	z-index: 1;
	align-items: center;
	gap: 18px;
	margin: 20px 48px 24px;
	border: 1px dashed rgba(255, 255, 255, 0.16);
	border-radius: 10px;
	padding: 22px 26px;
	background: rgba(255, 255, 255, 0.02);
}

.sowood-fdv-notice__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 15px;
	color: var(--color-text-on-dark);
	margin: 0 0 3px;
}

.sowood-fdv-notice__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 13.5px;
	line-height: 1.55;
	color: rgba(255, 255, 255, 0.55);
	margin: 0;
}

/* ---- CTA boutique ---- */

.sowood-fdv-cta {
	position: relative;
	z-index: 1;
	padding: 36px 48px 16px;
}

@media (max-width: 960px) {
	.sowood-fdv-hero__row {
		grid-template-columns: 1fr;
		min-height: 0;
	}

	.sowood-fdv-hero__motif-wrap {
		min-height: 320px;
	}

	.sowood-fdv-hero__title {
		font-size: 56px;
	}

	/* Blocs Gutenberg grid — remontés à 2 classes via le parent. */
	.sowood-category-page .sowood-fdv-specs {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.sowood-fdv-symbolic__row {
		grid-template-columns: 1fr;
	}

	.sowood-fdv-symbolic__text {
		columns: 1;
	}

	.sowood-fdv-construction__card .sowood-fdv-construction__grid {
		grid-template-columns: 1fr;
	}

	.sowood-fdv-gallery-head {
		align-items: flex-start;
	}
}

@media (max-width: 600px) {
	.sowood-category-page .sowood-fdv-specs {
		grid-template-columns: 1fr;
	}
}

/* ====================================================================
   GABARIT PAGE CATÉGORIE "PORTFOLIO" (sur devis — Trophées, Marquage,
   Badges, Signalétique)
   ==================================================================== */

.sowood-cat-featured-section {
	position: relative;
	z-index: 1;
	padding: 0 48px 40px;
}

.sowood-cat-featured-head {
	align-items: flex-end;
	gap: 24px;
	margin-bottom: 28px;
}

.sowood-cat-featured-head__note {
	font-family: var(--font-body);
	font-weight: 400;
	font-size: 13px;
	color: rgba(255, 255, 255, 0.45);
	margin: 0;
}

.sowood-cat-featured {
	grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
	gap: 20px;
}

.sowood-cat-featured__item {
	background: #141414;
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 10px;
	overflow: hidden;
	transition: transform 0.3s ease, border-color 0.2s ease;
}

.sowood-cat-featured__item:hover {
	transform: translateY(-4px);
	border-color: var(--color-neutral-warm);
}

.sowood-cat-featured__media {
	position: relative;
	aspect-ratio: 3 / 2;
	background: #1a1a1a;
	margin: 0;
}

.sowood-cat-featured__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	margin: 0;
}

.sowood-cat-featured__body {
	padding: 22px 24px 26px;
}

.sowood-cat-featured__tag {
	font-family: var(--font-label);
	font-weight: 500;
	font-size: 10.5px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	margin: 0 0 10px;
}

.sowood-cat-featured__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 19px;
	color: var(--color-text-on-dark);
	margin: 0 0 8px;
}

.sowood-cat-featured__legend {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 13.5px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.58);
	margin: 0;
}

/* ---- Rangée de navigation (retour + "voir toutes les réalisations") ---- */

.sowood-cat-portfolio-nav {
	position: relative;
	z-index: 1;
	align-items: center;
	gap: 20px;
	padding: 8px 48px 20px;
}

.sowood-cat-portfolio-nav__all .wp-block-button__link {
	font-size: 14px;
	padding: 14px 26px;
}

.sowood-cat-portfolio-nav__all .wp-block-button__link:hover {
	background: var(--color-neutral-warm);
}

@media (max-width: 960px) {
	.sowood-cat-featured {
		grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	}

	.sowood-cat-portfolio-nav {
		align-items: flex-start;
	}
}

/* ====================================================================
   PAGE ATELIER
   ==================================================================== */

.sowood-atelier-hero {
	position: relative;
	z-index: 1;
	padding: 66px 48px 56px;
	max-width: 960px;
}

.sowood-atelier-hero__title {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 72px;
	line-height: 0.98;
	letter-spacing: -0.03em;
	color: var(--color-text-on-dark);
	margin: 0 0 28px;
}

.sowood-atelier-hero__lead {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 21px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.7);
	max-width: 720px;
	margin: 0;
}

.sowood-atelier-hero-banner {
	position: relative;
	z-index: 1;
	padding: 26px 48px 0;
}

.sowood-atelier-hero-banner .wp-block-image,
.sowood-atelier-hero-banner figure {
	margin: 0;
}

.sowood-atelier-hero-banner img {
	display: block;
	width: 100%;
	height: 440px;
	object-fit: cover;
	border-radius: 10px;
}

/* ---- Section image + texte ("Le savoir-faire") ---- */

.sowood-atelier-feature {
	position: relative;
	z-index: 1;
	padding: 72px 48px 40px;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	align-items: center;
}

.sowood-atelier-feature__media {
	position: relative;
	height: 440px;
	border-radius: 8px;
	overflow: hidden;
	background: #1a1a1a;
	margin: 0;
}

.sowood-atelier-feature__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	margin: 0;
}

.sowood-atelier-feature__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 38px;
	line-height: 1.05;
	letter-spacing: -0.02em;
	color: var(--color-text-on-dark);
	margin: 0 0 22px;
}

.sowood-atelier-feature__text {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 16.5px;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.66);
	margin: 0 0 18px;
}

.sowood-atelier-feature__text:last-child {
	margin-bottom: 0;
}

.sowood-atelier-feature__text strong {
	color: var(--color-text-on-dark);
	font-weight: 500;
}

/* ---- "Le bois" (bloc encadré + badges) ---- */

.sowood-atelier-wood {
	position: relative;
	z-index: 1;
	padding: 40px 48px 20px;
}

.sowood-atelier-wood__card {
	border-radius: 10px;
	border: 1px solid rgba(255, 255, 255, 0.09);
	background: var(--color-anthracite);
	padding: 56px 52px;
	gap: 56px;
	align-items: start;
}

.sowood-atelier-wood .sowood-atelier-feature__text {
	color: rgba(255, 255, 255, 0.72);
}

.sowood-atelier-badges {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.sowood-atelier-badge {
	gap: 18px;
	align-items: center;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(255, 255, 255, 0.1);
	border-radius: 8px;
	padding: 22px 24px;
}

.sowood-atelier-badge__label {
	flex: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 15px;
	color: var(--color-text-on-dark);
	background: rgba(255, 255, 255, 0.1);
	border-radius: 8px;
	padding: 12px 14px;
	margin: 0;
	white-space: nowrap;
}

.sowood-atelier-badge__label--solid {
	color: var(--color-anthracite);
	background: var(--color-terracotta);
}

.sowood-atelier-badge__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 16px;
	color: var(--color-text-on-dark);
	margin: 0 0 3px;
}

.sowood-atelier-badge__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 13.5px;
	color: rgba(255, 255, 255, 0.6);
	margin: 0;
}

/* ---- "L'esprit artisanal" (3 cartes sans icône) ---- */

.sowood-atelier-values-section {
	position: relative;
	z-index: 1;
	padding: 60px 48px 24px;
}

.sowood-atelier-values-section__head {
	max-width: 620px;
	margin-bottom: 36px;
}

.sowood-atelier-values {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
}

.sowood-atelier-value {
	background: var(--color-anthracite);
	border: 1px solid rgba(255, 255, 255, 0.09);
	border-radius: 8px;
	padding: 34px 32px;
}

.sowood-atelier-value__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 21px;
	color: var(--color-text-on-dark);
	margin: 0 0 12px;
}

.sowood-atelier-value__desc {
	font-family: var(--font-body);
	font-weight: 300;
	font-size: 15px;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.6);
	margin: 0;
}

/* ---- Bandeau statistiques ---- */

.sowood-atelier-stats {
	position: relative;
	z-index: 1;
	padding: 44px 48px 20px;
}

.sowood-atelier-stats__row {
	border-radius: 10px;
	border: 1px solid rgba(255, 255, 255, 0.09);
	background: var(--color-anthracite);
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

.sowood-atelier-stats__cell {
	padding: 40px 34px;
	border-right: 1px solid rgba(255, 255, 255, 0.08);
}

.sowood-atelier-stats__cell:last-child {
	border-right: none;
}

.sowood-atelier-stats__num {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 44px;
	line-height: 1;
	color: var(--color-text-on-dark);
	margin: 0 0 8px;
}

.sowood-atelier-stats__label {
	font-family: var(--font-body);
	font-weight: 400;
	font-size: 13.5px;
	color: rgba(255, 255, 255, 0.6);
	margin: 0;
}

@media (max-width: 960px) {
	.sowood-atelier-hero__title {
		font-size: 48px;
	}

	.sowood-atelier-hero-banner img,
	.sowood-atelier-feature__media {
		height: 320px;
	}

	/* Idem, blocs Gutenberg grid — remontés à 2 classes via le parent. */
	.sowood-category-page .sowood-atelier-feature,
	.sowood-atelier-wood .sowood-atelier-wood__card {
		grid-template-columns: 1fr;
	}

	/*
	 * Blocs Gutenberg "Groupe" en layout grid, même cause que
	 * .sowood-savoir-faire__grid — remontés à 2 classes via le parent.
	 */
	.sowood-atelier-values-section .sowood-atelier-values {
		grid-template-columns: 1fr;
	}

	.sowood-atelier-stats .sowood-atelier-stats__row {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.sowood-atelier-stats__cell:nth-child(2n) {
		border-right: none;
	}

	.sowood-atelier-stats__cell:nth-child(1),
	.sowood-atelier-stats__cell:nth-child(2) {
		border-bottom: 1px solid rgba(255, 255, 255, 0.08);
	}
}

@media (max-width: 600px) {
	.sowood-atelier-stats .sowood-atelier-stats__row {
		grid-template-columns: 1fr;
	}

	.sowood-atelier-stats__cell {
		border-right: none !important;
		border-bottom: 1px solid rgba(255, 255, 255, 0.08);
	}

	.sowood-atelier-stats__cell:last-child {
		border-bottom: none;
	}
}

/*
 * ====================================================================
 * GOUTTIÈRE LATÉRALE MOBILE — correction transversale
 * ====================================================================
 * Constat de l'audit responsive : la quasi-totalité des sections de
 * contenu gardent un padding (ou margin) fixe de 48px de chaque côté à
 * toutes les largeurs — sur un mobile de 375px, ça mange 96px (25% de
 * l'écran) sur CHAQUE section. Plutôt que de toucher individuellement
 * chacune des ~50 déclarations d'origine (dispersées sur tout le fichier,
 * risque d'oubli ou de régression), cette règle unique les override toutes
 * en une fois : override en propriété longhand (padding-left/right ou
 * margin-left/right) uniquement, jamais le raccourci complet, pour ne
 * jamais toucher aux valeurs haut/bas déjà définies plus haut — la
 * spécificité est identique (sélecteur à une classe) mais cette règle est
 * déclarée en dernier dans le fichier, donc elle l'emporte en cascade.
 * Seuil à 600px (pas 960px) : à 768px (tablette), 48px de chaque côté
 * laisse déjà ~672px de contenu, largement confortable — le problème ne
 * devient réellement gênant qu'en dessous.
 */
@media (max-width: 600px) {
	.sowood-particuliers,
	.sowood-sport,
	.sowood-pro,
	.sowood-footer__inner,
	.sowood-breadcrumb,
	.sowood-cat-hero,
	.sowood-gallery,
	.sowood-cta,
	.sowood-cta-devis__info,
	.sowood-cta-devis__form-wrap,
	.sowood-devis-hero,
	.sowood-devis-layout,
	.sowood-real-hero,
	.sowood-real-hero-image,
	.sowood-real-full-image,
	.sowood-real-brief,
	.sowood-real-images,
	.sowood-real-points,
	.sowood-real-quote,
	.sowood-real-back,
	.sowood-univers-intro,
	.sowood-produits,
	.sowood-savoir-faire,
	.sowood-home-realisations,
	.sowood-process,
	.sowood-cta-final,
	.sowood-uni-hero-split,
	.sowood-uni-hero-card,
	.sowood-uni-strip,
	.sowood-uni-stat-rail,
	.sowood-uni-grid-section,
	.sowood-uni-capabilities,
	.sowood-uni-portfolio,
	.sowood-uni-cta,
	.sowood-uni-cta--pro .sowood-uni-cta__text,
	.sowood-uni-cta--pro .sowood-uni-cta__aside,
	.sowood-cat-specs,
	.sowood-fdv-hero,
	.sowood-fdv-specs,
	.sowood-fdv-symbolic,
	.sowood-fdv-construction,
	.sowood-fdv-cta,
	.sowood-cat-featured-section,
	.sowood-cat-portfolio-nav,
	.sowood-atelier-hero,
	.sowood-atelier-hero-banner,
	.sowood-atelier-feature,
	.sowood-atelier-wood,
	.sowood-atelier-values-section,
	.sowood-atelier-stats,
	.sowood-sticky-devis {
		padding-left: var(--section-pad-x-mobile);
		padding-right: var(--section-pad-x-mobile);
	}

	.sowood-real-meta,
	.sowood-fdv-gallery-head,
	.sowood-fdv-notice {
		margin-left: var(--section-pad-x-mobile);
		margin-right: var(--section-pad-x-mobile);
	}
}

/*
 * ====================================================================
 * HERO — titre surdimensionné + alignement avec la gouttière mobile
 * ====================================================================
 * .sowood-hero__copy/dots/caption utilisent left/right (positionnement
 * absolu), pas padding — même valeur fixe 48px que les ~53 sections
 * corrigées plus haut, jamais réduite. On les aligne ici sur la même
 * variable --section-pad-x-mobile pour que le kicker/titre du hero
 * retombe exactement sous le même bord gauche que le contenu des
 * sections suivantes une fois qu'on descend sous 600px.
 */
@media (max-width: 600px) {
	.sowood-hero__title {
		font-size: 38px;
	}

	.sowood-hero__copy {
		left: var(--section-pad-x-mobile);
		right: var(--section-pad-x-mobile);
	}

	.sowood-hero__dots {
		left: var(--section-pad-x-mobile);
	}

	.sowood-hero__caption {
		right: var(--section-pad-x-mobile);
	}

	/* Voir commentaire plus haut (règle @media 960px) sur la nécessité des
	   2 classes ici aussi, même cause (bloc Gutenberg grid). */
	.sowood-savoir-faire .sowood-savoir-faire__grid {
		grid-template-columns: 1fr;
	}
}

/*
 * Pages Professionnels — "Nos savoir-faire" : .sowood-uni-capabilities__grid
 * n'avait ABSOLUMENT aucun palier (contrairement à .sowood-uni-capabilities__row,
 * déjà réduit à 1 colonne à ≤960px) — restait à 2 colonnes jusqu'à 0px.
 *
 * Sélecteur ".sowood-uni-capabilities__row .sowood-uni-capabilities__grid"
 * (2 classes) volontaire, pas juste ".sowood-uni-capabilities__grid" seul :
 * ce bloc Gutenberg "Groupe" en layout grid génère son propre style inline
 * (.wp-container-core-group-is-layout-xxxxx { grid-template-columns: ... }),
 * même spécificité (1 classe) et imprimé après cette feuille — il gagnait la
 * cascade et l'override à 1 colonne ne s'appliquait jamais. Monter à 2
 * classes règle ça sans dépendre de l'ordre de déclaration.
 */
@media (max-width: 700px) {
	.sowood-uni-capabilities__row .sowood-uni-capabilities__grid {
		grid-template-columns: 1fr;
	}
}
