:root{
--color-sage:#9BB7A2;
--color-peach:#F6AA80;
--color-plum:#914C93;
--color-lavender:#A586B6;
--color-wine:#550527;
--color-blush:#F1E2E5;
--color-cream:#FEF6F3;
--color-white:#FFFFFF;
--color-ink:#341421;
--color-ink-soft:#6E4657;

--surface-page:var(--color-cream);
--surface-card:var(--color-white);
--surface-tint:var(--color-blush);
--surface-tint-strong:color-mix(in oklch, var(--color-blush) 60%, var(--color-peach) 40%);
--surface-inverse:var(--color-wine);
--surface-inverse-soft:color-mix(in oklch, var(--color-wine) 82%, var(--color-plum) 18%);

--text-primary:var(--color-ink);
--text-secondary:var(--color-ink-soft);
--text-muted:color-mix(in oklch, var(--color-ink-soft) 60%, var(--color-cream) 40%);
--text-inverse:var(--color-cream);
--text-on-accent:var(--color-cream);

--accent-plum:var(--color-plum);
--accent-sage:var(--color-sage);
--accent-peach:var(--color-peach);
--accent-lavender:var(--color-lavender);
--accent-wine:var(--color-wine);

--accent-primary:var(--color-plum);
--accent-primary-hover:color-mix(in oklch, var(--color-plum) 85%, var(--color-wine) 15%);
--accent-primary-active:color-mix(in oklch, var(--color-plum) 70%, var(--color-wine) 30%);
--accent-secondary-a:var(--color-sage);
--accent-secondary-b:var(--color-peach);
--accent-rare-a:var(--color-lavender);
--accent-rare-b:var(--color-wine);

--border-subtle:color-mix(in oklch, var(--color-wine) 12%, var(--color-cream) 88%);
--border-default:color-mix(in oklch, var(--color-wine) 24%, var(--color-cream) 76%);
--border-strong:color-mix(in oklch, var(--color-wine) 45%, var(--color-cream) 55%);

--focus-ring:var(--color-plum);

--state-success:var(--color-sage);
--state-warning:var(--color-peach);
--state-error:#A5334A;
}
@font-face{font-family:'Ivy Ora Text';src:url('../fonts/ivy-ora/IvyOraText-Thin.woff2') format('woff2');font-weight:100;font-style:normal;font-display:swap}
@font-face{font-family:'Ivy Ora Text';src:url('../fonts/ivy-ora/IvyOraText-ThinItalic.woff2') format('woff2');font-weight:100;font-style:italic;font-display:swap}
@font-face{font-family:'Ivy Ora Text';src:url('../fonts/ivy-ora/IvyOraText-Light.woff2') format('woff2');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:'Ivy Ora Text';src:url('../fonts/ivy-ora/IvyOraText-LightItalic.woff2') format('woff2');font-weight:300;font-style:italic;font-display:swap}
@font-face{font-family:'Ivy Ora Text';src:url('../fonts/ivy-ora/IvyOraText-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Ivy Ora Text';src:url('../fonts/ivy-ora/IvyOraText-RegularItalic.woff2') format('woff2');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:'Ivy Ora Text';src:url('../fonts/ivy-ora/IvyOraText-Medium.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Ivy Ora Text';src:url('../fonts/ivy-ora/IvyOraText-MediumItalic.woff2') format('woff2');font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:'Ivy Ora Text';src:url('../fonts/ivy-ora/IvyOraText-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Ivy Ora Text';src:url('../fonts/ivy-ora/IvyOraText-BoldItalic.woff2') format('woff2');font-weight:700;font-style:italic;font-display:swap}
:root{
--font-display:'Ivy Ora Text', 'Georgia', serif;
--font-body:'Urbanist', 'Segoe UI', sans-serif;

--text-display-xl:4.25rem;
--text-display-lg:3rem;
--text-display-md:2.125rem;
--text-display-sm:1.5rem;

--text-body-lg:1.25rem;
--text-body-md:1.0625rem;
--text-body-sm:0.9375rem;
--text-caption:0.8125rem;
--text-eyebrow:0.8125rem;

--lh-display:1.12; /* @kind other */
--lh-heading:1.25; /* @kind other */
--lh-body:1.65; /* @kind other */
--lh-tight:1.35; /* @kind other */

--ls-eyebrow:0.14em;
--ls-display:0.005em;
}
:root{
--space-1:4px;
--space-2:8px;
--space-3:12px;
--space-4:16px;
--space-5:20px;
--space-6:24px;
--space-8:32px;
--space-10:40px;
--space-12:48px;
--space-16:64px;
--space-20:80px;
--space-24:96px;
--space-32:128px;

--radius-sm:8px;
--radius-md:14px;
--radius-lg:24px;
--radius-xl:36px;
--radius-full:999px;

--shadow-sm:0 2px 8px color-mix(in oklch, var(--color-wine) 10%, transparent);
--shadow-md:0 8px 24px color-mix(in oklch, var(--color-wine) 14%, transparent);
--shadow-lg:0 20px 48px color-mix(in oklch, var(--color-wine) 18%, transparent);

--ease-standard:cubic-bezier(.4,0,.2,1);
--duration-fast:150ms;
--duration-base:250ms;
--duration-slow:420ms;
}
:root{
--gradient-peach-cta:linear-gradient(112deg,#F9C39B,#F3A878);
--gradient-sage-mauve:linear-gradient(122deg,#B7CCB8 0%,#9BB7A2 38%,#D5B1C8 100%);
--gradient-peach-plum:linear-gradient(114deg,#EF9D70 0%,#F4AE7D 46%,#C879A9 100%);
--gradient-cream-mauve:linear-gradient(118deg,#FFF9F3 0%,#F7EEE8 59%,#EEE2EF 100%);
--gradient-warm-cream:linear-gradient(116deg,#FFF0DF 0%,#F9E5E0 46%,#E4D1E2 100%);
--gradient-violet-gris:linear-gradient(160deg,#8E6FA3 0%,#A79FA6 100%);
--gradient-corail-lilas:linear-gradient(150deg,#C7A6D9 0%,#E8B497 55%,#F3A878 100%);
}
*{box-sizing:border-box}
body{margin:0;background:var(--surface-page);color:var(--text-primary);font-family:var(--font-body);font-size:var(--text-body-md);line-height:var(--lh-body)}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:500;line-height:var(--lh-heading);margin:0;color:var(--text-primary)}
h1{font-size:var(--text-display-lg);line-height:var(--lh-display)}
h2{font-size:var(--text-display-md)}
h3{font-size:var(--text-display-sm)}
p{margin:0}
a{color:var(--accent-primary)}
a:hover{color:var(--accent-primary-hover)}

@media (max-width:640px){
	h1{font-size:40px; line-height:1.02; letter-spacing:-.03em}
}
/* Reveal des titres au scroll (H1/H2) — glissement masqué, la première fois que le
   titre entre dans l'écran (cf. glyphic.bio). Le script title-reveal.js enveloppe le
   contenu du titre dans .mb-reveal__inner puis ajoute .is-visible via IntersectionObserver.
   ".js-reveal" est posée très tôt sur <html> par mb_reveal_head_script (functions.php),
   seulement si JS est actif et que l'utilisateur n'a pas demandé de réduire les animations
   — c'est elle qui masque le titre AVANT que le script ne l'enveloppe, pour éviter un flash
   "visible → caché → animé" au chargement. Sans JS (ou avec ces préférences), le titre
   reste toujours affiché normalement : rien de tout ceci ne s'applique. */
.js-reveal main h1:not(.mb-reveal),
.js-reveal main h2:not(.mb-reveal){ opacity:0; }
.mb-reveal{ overflow:hidden; }
.mb-reveal__inner{
	display:block;
	/* Distance fixe (pas un %, relatif à la hauteur propre de CHAQUE titre — donnait un
	   mouvement énorme sur un H1 de 3 lignes et presque invisible sur un H2 d'une ligne) :
	   même amplitude perçue, quelle que soit la hauteur du titre. */
	transform:translateY(28px);
	opacity:0;
	/* Courbe "ease-out" prononcée (plutôt que --ease-standard, pensée pour de courtes
	   micro-interactions) : une décélération plus douce en fin de course, moins mécanique
	   sur un mouvement de cette amplitude. */
	transition:transform 550ms cubic-bezier(.16,1,.3,1), opacity 550ms ease-out;
}
.mb-reveal.is-visible .mb-reveal__inner{ transform:translateY(0); opacity:1; }

/* Boutons — variantes du design system (composant Button.jsx : angles droits, pas de pilule) */
.wp-block-button__link{
	display:inline-flex;
	align-items:center;
	gap:8px;
	border-radius:0;
	font-family:var(--font-body);
	font-weight:500;
	letter-spacing:.01em;
	font-size:var(--text-body-md);
	padding:12px 26px;
	border:1px solid transparent;
	transition:background-color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);
}
.mb-btn-chevron{ font-size:1.1em; line-height:1; }
.wp-block-button__link:active{ transform:scale(.97); }

/* Tailles — à poser en style inline sur l'instance quand la maquette demande sm/lg (défaut = md) */
.mb-btn-sm .wp-block-button__link{ padding:8px 20px; font-size:var(--text-body-sm); }
.mb-btn-lg .wp-block-button__link{ padding:16px 34px; }

.wp-block-button.is-style-plum .wp-block-button__link{
	background-color:var(--accent-plum);
	color:var(--text-on-accent);
}
.wp-block-button.is-style-plum .wp-block-button__link:hover{ background-color:var(--accent-primary-hover); }

.wp-block-button.is-style-sage .wp-block-button__link{
	background-color:var(--accent-secondary-a);
	color:var(--text-primary);
}
.wp-block-button.is-style-sage .wp-block-button__link:hover{
	background-color:color-mix(in oklch, var(--accent-secondary-a) 88%, white 12%);
}

.wp-block-button.is-style-outline-wine .wp-block-button__link{
	background:transparent;
	border-color:var(--border-strong);
	color:var(--accent-wine);
}
.wp-block-button.is-style-outline-wine .wp-block-button__link:hover{ background:var(--surface-tint); }

/* Navigation principale — angles droits (pas de pilule, cf. maquette) */
.mb-header{ position:sticky; top:16px; z-index:50; padding:0 24px; }
.mb-nav{
	display:flex;
	align-items:center;
	justify-content:space-between;
	width:min(920px,100%);
	margin:0 auto 40px;
	padding:14px 26px;
	border:1px solid var(--border-subtle);
	border-radius:0;
	background:color-mix(in oklch, var(--color-cream) 85%, transparent);
	backdrop-filter:blur(14px);
	box-shadow:var(--shadow-md);
}
.mb-nav__logo img{ height:34px; width:auto; display:block; }
.mb-nav__menu{ display:flex; align-items:center; gap:24px; list-style:none; margin:0; padding:0; }
.mb-nav__menu a{ font-size:13px; color:var(--text-primary); text-decoration:none; display:inline-flex; align-items:center; gap:4px; }
.mb-nav__menu a:hover{ text-decoration:underline; }
.mb-nav__menu li{ position:relative; }
/* Chevron des sous-menus : automatique dès qu'un item a des enfants (menu WordPress ou de secours) */
.mb-nav__menu li.menu-item-has-children > a::after{ content:"⌄"; font-size:.65em; color:var(--text-secondary); margin-left:2px; }
.mb-nav__menu .sub-menu{
	position:absolute;
	top:28px;
	left:50%;
	transform:translateX(-50%);
	min-width:220px;
	margin:0;
	padding:10px;
	list-style:none;
	background:var(--color-cream);
	border:1px solid var(--border-subtle);
	box-shadow:var(--shadow-md);
	opacity:0;
	pointer-events:none;
	transition:opacity var(--duration-fast) var(--ease-standard);
}
.mb-nav__menu li:hover > .sub-menu,
.mb-nav__menu li:focus-within > .sub-menu{ opacity:1; pointer-events:auto; }
.mb-nav__menu .sub-menu a{ display:block; padding:8px 10px; font-size:12px; }
/* Bouton "Prendre RDV" : le dernier item du menu est toujours stylé comme un bouton,
   quelle que soit son URL (modifiable librement dans Apparence > Menus). */
.mb-nav__menu > li:last-child > a{
	background-color:var(--accent-plum);
	color:var(--text-on-accent);
	border-radius:0;
	padding:8px 20px;
	font-size:13px;
	text-decoration:none;
	display:inline-flex;
}
.mb-nav__menu > li:last-child > a:hover{
	background-color:var(--accent-primary-hover);
	text-decoration:none;
}
.mb-nav__toggle{ display:none; }
.mb-nav__mobile-actions{ display:none; }

@media (max-width:900px){
	/* Empêche la page de fond de défiler pendant que le panneau du menu,
	   lui-même scrollable, est ouvert par-dessus. */
	body.mb-nav-open{ overflow:hidden; }
	.mb-header{
		top:0;
		padding:0;
		background:color-mix(in oklch, var(--color-cream) 96%, transparent);
	}
	.mb-nav{
		flex-wrap:wrap;
		width:100%;
		margin:0;
		padding:14px 20px;
		border:none;
		border-radius:0;
		background:transparent;
		backdrop-filter:none;
		box-shadow:none;
	}
	.mb-nav__logo img{ height:30px; }
	.mb-nav__mobile-actions{ display:flex; align-items:center; gap:10px; order:2; }
	.mb-nav__cta-icon{
		display:flex;
		align-items:center;
		justify-content:center;
		width:44px;
		height:44px;
		border:1px solid var(--border-subtle);
		border-radius:var(--radius-full);
		background:var(--accent-plum);
		color:#fff;
	}
	.mb-nav__menu{
		display:none;
		flex-direction:column;
		align-items:stretch;
		gap:0;
		width:100%;
		order:3;
		margin:0;
		padding:8px 20px 24px;
		border-top:none;
		position:fixed;
		/* #mb-nav-menu est imbriqué DANS .mb-header (position:sticky + z-index),
		   qui crée son propre contexte d'empilement : le z-index ci-dessous ne
		   se compare donc qu'aux autres enfants du header (logo, bouton — tous
		   deux z-index:auto), jamais au header lui-même. Un top:0 couvrirait
		   donc le logo/bouton au lieu de rester dessous. Seul un "top" qui
		   évite tout chevauchement géométrique avec le header fonctionne ici.
		   Recalculé en JS (nav.js) selon la hauteur réelle du header, qui varie
		   selon que la bannière d'info est affichée ou non. */
		top:var(--mb-nav-offset,72px);
		left:0;
		right:0;
		bottom:0;
		z-index:40;
		background:var(--color-cream);
		overflow-y:auto;
	}
	.mb-nav__menu.is-open{ display:flex; }
	.mb-nav__menu li{ width:100%; }
	.mb-nav__menu > li > a{
		display:flex;
		align-items:center;
		justify-content:space-between;
		padding:16px 4px;
		border-bottom:1px solid var(--border-subtle);
		font-size:17px;
	}
	.mb-nav__menu .sub-menu{
		position:static;
		transform:none;
		opacity:1;
		pointer-events:auto;
		box-shadow:none;
		border:none;
		padding:4px 0 12px 16px;
		display:none;
	}
	.mb-nav__menu li.is-expanded > .sub-menu{ display:block; }
	.mb-nav__menu .sub-menu a{ display:block; padding:10px 0; font-size:15px; }
	.mb-nav__menu > li:last-child{ margin-top:auto; padding-top:24px; }
	.mb-nav__menu > li:last-child > a{
		width:100%;
		justify-content:center;
		padding:12px;
		font-size:15px;
		border-bottom:none;
	}
	.mb-nav__toggle{
		display:flex;
		align-items:center;
		justify-content:center;
		width:44px;
		height:44px;
		padding:0;
		border:1px solid var(--border-subtle);
		border-radius:var(--radius-full);
		background:color-mix(in oklch, var(--color-cream) 85%, transparent);
		color:var(--accent-wine);
		cursor:pointer;
	}
	.mb-nav__toggle-icon-close{ display:none; }
	.mb-nav__toggle.is-active .mb-nav__toggle-icon-open{ display:none; }
	.mb-nav__toggle.is-active .mb-nav__toggle-icon-close{ display:block; }
}
@media (min-width:901px){
	.mb-nav__toggle{ display:none; }
	.mb-nav__mobile-actions{ display:none; }
}

/* Filigrane décoratif pétale — purement décoratif, jamais inséré comme image de contenu */
.mb-petal{ position:relative; overflow:hidden; }
.mb-petal::before{
	content:"";
	position:absolute;
	width:560px;
	height:560px;
	background:url('../images/petale-filigrane.svg') no-repeat center / contain;
	pointer-events:none;
	z-index:0;
}
.mb-petal > *{ position:relative; z-index:1; }
.mb-petal--tr::before{ right:-140px; top:-160px; opacity:.13; transform:rotate(13deg); }
.mb-petal--br-strong::before{ right:-220px; bottom:-260px; width:600px; height:600px; opacity:.4; transform:rotate(26deg); }
.mb-petal--tl::before{ left:-220px; top:-230px; width:540px; height:540px; opacity:.34; transform:rotate(29deg); }
.mb-petal--tr-soft::before{ right:-160px; top:-190px; width:520px; height:520px; opacity:.22; transform:rotate(20deg); }
.mb-petal--br-soft::before{ right:-240px; bottom:-320px; width:600px; height:600px; opacity:.29; transform:rotate(-15deg); }
.mb-petal--bl::before{ left:-140px; bottom:-180px; width:480px; height:480px; opacity:.2; transform:rotate(-21deg); }
.mb-petal--tr-xl::before{ right:-200px; top:-150px; width:540px; height:540px; opacity:.2; transform:rotate(21deg); }
.mb-petal--ph::before{ left:-80px; bottom:-110px; width:320px; height:320px; opacity:.28; transform:rotate(-16deg); }
.mb-petal--br-xs::before{ right:-70px; bottom:-90px; width:290px; height:290px; opacity:.22; transform:rotate(17deg); }
.mb-petal--quote-ap::before{ right:-260px; bottom:-350px; width:610px; height:610px; opacity:.29; transform:rotate(-15deg); }
.mb-petal--final-cta-ap::before{ left:-140px; bottom:-180px; width:480px; height:480px; opacity:.2; transform:rotate(-21deg); }
.mb-petal--tl-soft::before{ left:-150px; top:-190px; width:520px; height:520px; opacity:.18; transform:rotate(-19deg); }

/* Page À propos — filigranes visibles aussi en mobile (contrairement aux autres
   pages) : maquette dédiée avec tailles réduites par section, donc modificateurs
   propres plutôt que réutilisation des .mb-petal--* masqués en mobile ailleurs. */
@media (max-width:640px){
	.mb-petal--tr-xl::before{ right:-140px; top:-100px; width:340px; height:340px; }
	.mb-petal--ph::before{ left:-60px; bottom:-80px; width:220px; height:220px; }
	.mb-petal--br-xs::before{ right:-50px; bottom:-70px; width:220px; height:220px; }
	.mb-petal--tl-soft::before{ left:-100px; top:-130px; width:320px; height:320px; }
}

/* Liste numérotée (prestations) */
.mb-num-list{ list-style:none; margin:36px 0 0; padding:0; border-top:1px solid color-mix(in oklch, var(--accent-wine) 55%, transparent); }
.mb-num-row{
	display:grid;
	grid-template-columns:64px 1fr 1fr;
	gap:24px;
	align-items:start;
	padding:32px 0;
	border-bottom:1px solid color-mix(in oklch, var(--accent-wine) 55%, transparent);
}
.mb-num-row__n{ font-family:var(--font-display); font-size:34px; color:var(--accent-wine); margin:0; align-self:center; transition:transform var(--duration-base) var(--ease-standard); }
.mb-num-row__title{ margin:0; align-self:center; transition:transform var(--duration-base) var(--ease-standard); }
.mb-num-row__body{ display:flex; flex-direction:column; align-items:flex-start; gap:12px; align-self:start; transition:transform var(--duration-base) var(--ease-standard); }
.mb-num-row:hover .mb-num-row__title,
.mb-num-row:focus-within .mb-num-row__title{ transform:translateX(24px); }
.mb-num-row:hover .mb-num-row__body,
.mb-num-row:focus-within .mb-num-row__body{ transform:translateX(16px); }
.mb-num-row:hover .mb-num-row__n,
.mb-num-row:focus-within .mb-num-row__n{ transform:translateX(-4px); }

/* Liens "petites capitales" à soulignement révélé au survol (Explorer, EN SAVOIR PLUS, Réserver…).
   Marche que la classe soit posée directement sur le <a> (patterns du thème)
   ou sur un bloc paragraphe qui contient le lien (cas de l'éditeur : le champ
   "Classe(s) CSS supplémentaire(s)" du panneau Avancé cible le bloc, donc le
   <p>, pas le texte du lien) — sinon le style de lien par défaut de WordPress
   (couleur + soulignement) l'emporte sur le <a> dans ce second cas. */
a.mb-link-caps,
.mb-link-caps a{
	font-size:12px;
	font-weight:600;
	letter-spacing:.12em;
	text-transform:uppercase;
	color:var(--accent-wine);
	text-decoration:none;
	border-bottom:1px solid transparent;
	padding-bottom:4px;
	transition:border-color var(--duration-fast) var(--ease-standard);
	width:fit-content;
}
a.mb-link-caps:hover,
.mb-link-caps a:hover{ border-bottom-color:currentColor; }

/* Lien avec flèche (Lire les témoignages, Demander un devis…) */
.mb-link-arrow{
	display:inline-flex;
	align-items:center;
	gap:10px;
	font-size:12px;
	letter-spacing:.08em;
	text-transform:uppercase;
	font-weight:600;
	color:var(--accent-wine);
	text-decoration:none;
	border-bottom:1px solid transparent;
	padding-bottom:4px;
	transition:border-color var(--duration-fast) var(--ease-standard);
}
.mb-link-arrow:hover{ border-bottom-color:currentColor; }

/* Grille de dates (ateliers) */
.mb-date-grid{ display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid color-mix(in oklch, var(--accent-wine) 55%, transparent); margin:0; }
.mb-date-cell{ margin:0 0 0 -1px; padding:20px 16px 8px; border-right:1px solid color-mix(in oklch, var(--accent-wine) 55%, transparent); border-left:1px solid color-mix(in oklch, var(--accent-wine) 55%, transparent); align-self:start; }
.mb-date-cell__month{ font-size:13px; letter-spacing:.12em; text-transform:uppercase; color:var(--accent-wine); }
.mb-date-cell__day{ font-family:var(--font-display); font-size:44px; color:var(--accent-wine); margin:8px 0; }
.mb-date-cell__place{ font-size:14px; color:var(--accent-wine); display:block; }
.mb-date-cell__link{ display:block; margin-top:12px; width:fit-content; }

@media (max-width:768px){
	.mb-date-grid{ grid-template-columns:repeat(2,1fr); }
	.mb-num-row{ grid-template-columns:1fr; gap:8px; }
}

/* Cartes témoignages */
.mb-testimonial{
	height:280px;
	padding:32px;
	display:flex;
	flex-direction:column;
	align-items:flex-start;
	justify-content:center;
	overflow:hidden;
	border:1px solid color-mix(in oklch, var(--accent-wine) 27%, transparent);
	background:color-mix(in oklch, var(--color-cream) 66%, transparent);
	transition:background var(--duration-base) var(--ease-standard), color var(--duration-base) var(--ease-standard), border-color var(--duration-base) var(--ease-standard);
}
.mb-testimonial__mark{ margin:0 0 8px; }
.mb-testimonial__quote{
	margin:0 0 16px;
	display:-webkit-box;
	-webkit-box-orient:vertical;
	-webkit-line-clamp:5;
	overflow:hidden;
}
.mb-testimonial:hover{ background:var(--accent-plum); border-color:var(--accent-plum); color:#fff; }
.mb-testimonial:hover .mb-testimonial__quote,
.mb-testimonial:hover .mb-testimonial__author{ color:#fff; }

/* Témoignage tronqué (5 lignes) : bouton pour lire le texte complet dans une fenêtre */
.mb-testimonial__more{
	appearance:none; background:none; border:none; cursor:pointer;
	margin-top:8px; padding:0;
	font-size:11px; font-weight:600; letter-spacing:.1em; text-transform:uppercase;
	color:var(--accent-wine);
}
.mb-testimonial:hover .mb-testimonial__more{ color:#fff; }
.mb-testimonial__more:hover{ text-decoration:underline; }

.mb-testimonial-modal{ position:fixed; inset:0; z-index:100; display:flex; align-items:center; justify-content:center; padding:24px; }
.mb-testimonial-modal[hidden]{ display:none; }
.mb-testimonial-modal__backdrop{ position:absolute; inset:0; background:color-mix(in oklch, var(--color-ink) 55%, transparent); }
.mb-testimonial-modal__box{
	position:relative; z-index:1; max-width:520px; width:100%;
	max-height:calc(100vh - 48px); overflow-y:auto;
	background:var(--color-cream); border-radius:4px; padding:40px;
	box-shadow:0 20px 60px color-mix(in oklch, var(--color-ink) 30%, transparent);
}
@media (max-width:640px){
	.mb-testimonial-modal{ padding:16px; }
	.mb-testimonial-modal__box{ max-height:calc(100vh - 32px); padding:28px 24px; }
	.mb-testimonial-modal__mark{ font-size:36px; }
}
.mb-testimonial-modal__close{
	position:absolute; top:12px; right:16px; appearance:none; background:none; border:none; cursor:pointer;
	font-size:24px; line-height:1; color:var(--text-secondary);
}
.mb-testimonial-modal__mark{ margin:0 0 8px; font:44px/.7 Georgia,serif; color:var(--accent-peach); }
.mb-testimonial-modal__quote{ margin:0 0 16px; font-size:1.05rem; line-height:1.6; }
.mb-testimonial-modal__author{ margin:0; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-wine); }
.mb-testimonial__mark{ font:44px/.7 Georgia,serif; color:var(--accent-peach); }
.mb-testimonial__author{ margin:0; font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-wine); }

/* Carrousel de témoignages */
.mb-testimonials-carousel{ position:relative; }
.mb-testimonials-viewport{ overflow:hidden; }
.mb-testimonials-track{ display:flex; gap:16px; transition:transform .45s cubic-bezier(.4,0,.2,1); }
.mb-testimonials-track > .mb-testimonial{ flex:0 0 calc(33.333% - 11px); min-width:0; margin:0; }

/* Dans l'éditeur, le script du carrousel (qui fait glisser les avis) ne
   tourne pas — sans cette règle, les avis au-delà des 3 premiers sont
   présents mais invisibles (hors champ). On les affiche tous, les uns
   sous les autres, pour pouvoir les modifier sans passer par la Vue de
   la liste. Le site public garde le vrai carrousel, inchangé. */
.editor-styles-wrapper .mb-testimonials-viewport{ overflow:visible; }
.editor-styles-wrapper .mb-testimonials-track{ flex-wrap:wrap; transform:none !important; }
.editor-styles-wrapper .mb-testimonials-track > .mb-testimonial{ flex-basis:calc(33.333% - 11px); margin-bottom:16px; }
.mb-testimonials-nav{
	position:absolute;
	top:50%;
	transform:translateY(-50%);
	width:44px;
	height:44px;
	padding:0;
	margin:0;
	border-radius:var(--radius-full);
	border:1px solid var(--border-strong);
	background:var(--color-cream);
	color:var(--accent-wine);
	font-size:18px;
	line-height:1;
	font-family:inherit;
	cursor:pointer;
	display:flex;
	align-items:center;
	justify-content:center;
	box-shadow:var(--shadow-sm);
	z-index:2;
}
.mb-testimonials-nav:disabled{ opacity:.35; cursor:default; }
.mb-testimonials-prev{ left:-20px; }
.mb-testimonials-next{ right:-20px; }
.mb-testimonials-dots{ display:flex; justify-content:center; gap:8px; margin-top:32px; }
.mb-testimonials-dot{ width:7px; height:7px; border-radius:50%; cursor:pointer; background:var(--border-strong); padding:0; border:none; }
.mb-testimonials-dot.is-active{ background:var(--accent-wine); }

@media (max-width:1024px){
	.mb-testimonials-track > .mb-testimonial{ flex-basis:calc(50% - 8px); }
}
@media (max-width:640px){
	.mb-testimonial{ height:260px; }
	.mb-testimonial__mark{ font-size:40px; }
	.mb-testimonials-track > .mb-testimonial{ flex-basis:100%; }
	.mb-testimonials-carousel{
		display:grid;
		grid-template-columns:1fr auto auto auto 1fr;
		align-items:center;
		column-gap:24px;
		row-gap:20px;
	}
	.mb-testimonials-viewport{ grid-column:1/-1; }
	.mb-testimonials-prev{ grid-column:2; position:static; transform:none; }
	.mb-testimonials-dots{ grid-column:3; margin-top:0; }
	.mb-testimonials-next{ grid-column:4; position:static; transform:none; }
}

/* Carte (offre entreprise, etc.) */
.mb-card{
	background:var(--surface-card);
	border:1px solid var(--border-subtle);
	border-radius:var(--radius-lg);
	box-shadow:var(--shadow-sm);
	padding:24px;
}
.mb-card .mb-card__media{
	height:140px;
	background:var(--surface-tint);
	display:flex;
	align-items:center;
	justify-content:center;
	color:var(--text-muted);
	font-size:12px;
	margin-bottom:16px;
	border-radius:var(--radius-md);
	overflow:hidden;
}
.mb-card .mb-card__media img{ width:100%; height:100%; object-fit:cover; }
.mb-entreprise-cols.wp-block-columns{ gap:20px; }

/* Utilitaires de mise en page — sections page d'accueil */
.mb-text-center{ text-align:center; }

/* Masquer un élément sans le supprimer :
   - dans le contenu d'une page : onglet "Styles" du bloc → "Masqué"
   - dans un menu (Apparence > Menus) : champ "Classe CSS" → mb-hidden
   Le retrait réel du site public se fait côté PHP (voir mb_strip_masked_blocks
   dans functions.php), pas ici — pour que le bloc reste visible (grisé) dans
   l'éditeur et rester lisible/modifiable même une fois "masqué". */
.mb-hidden{ display:none !important; }
.editor-styles-wrapper .is-style-masque{
	opacity:.35;
	outline:1px dashed var(--accent-wine);
	outline-offset:4px;
}

/* Lien inactif : même apparence qu'un lien (Explorer, Réserver…) mais en texte simple —
   pour un statut du type "À venir". À utiliser après avoir retiré le lien (bouton
   "dissocier" dans la barre d'outils) : le style s'applique directement au texte,
   sans dépendre d'un <a>, donc rien ne reste cliquable/crawlable dans le code. */
.is-style-lien-inactif{
	font-size:12px;
	font-weight:600;
	letter-spacing:.12em;
	text-transform:uppercase;
	color:var(--accent-wine);
}
/* Filet de sécurité si un <a> est resté malgré tout : au moins désactiver l'interaction visuelle. */
.is-style-lien-inactif a{ pointer-events:none; cursor:default; border-bottom-color:transparent; }

.mb-eyebrow{ font-size:0.8125rem; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-wine); display:inline-block; }
.mb-eyebrow--plum{ color:var(--accent-plum); }
.mb-body{ font-size:1rem; line-height:1.55; }

.mb-hero__grid{ display:grid; grid-template-columns:1fr .82fr; gap:56px; align-items:center; }
.mb-hero__content{ display:flex; flex-direction:column; gap:24px; }
.mb-hero__content > *{ margin:0; }
.mb-hero__portrait{ width:100%; aspect-ratio:4/5; max-width:340px; margin:0 auto; overflow:hidden; border-radius:var(--radius-lg); }
.mb-hero__portrait img{ width:100%; height:100%; object-fit:cover; display:block; }

.mb-split{ display:grid; grid-template-columns:520px 1fr; gap:48px; align-items:center; }
/* Le texte (H2) précède la photo (H3) dans le code pour une hiérarchie de titres
   correcte, mais l'image doit rester affichée à gauche visuellement. */
.mb-split__text{ order:2; }
.mb-split .mb-media-caption{ order:1; max-width:520px; }
.mb-approche-grid{ display:grid; grid-template-columns:150px 1fr; gap:40px; }
.mb-approche-grid > *{ margin:0; }

.mb-media-caption{ position:relative; aspect-ratio:3/4; overflow:hidden; border-radius:var(--radius-lg); color:#fff; background:var(--surface-tint); }
.mb-media-caption img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; }
.mb-media-caption::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(45,37,48,0) 37%,rgba(45,37,48,.74) 100%); z-index:1; }
.mb-media-caption__text{ position:absolute; bottom:26px; left:28px; right:28px; z-index:2; display:flex; flex-direction:column; gap:14px; }
.mb-media-caption__text > *{ margin:0; }
.mb-media-caption__text .mb-eyebrow{ display:block; }
.mb-media-caption__text h3{ line-height:1.2; }

@media (max-width:900px){
	.mb-hero__grid,
	.mb-split,
	.mb-approche-grid{ grid-template-columns:1fr; }
	.mb-hero__grid .mb-hero__portrait{ order:-1; }
}

/* Gabarit mobile (390px) — cf. maquette "Version responsive mobile" */
@media (max-width:640px){
	/* Padding de section : la maquette mobile utilise des marges bien plus resserrées.
	   Les valeurs desktop sont posées en style inline (contrainte de validation Gutenberg),
	   d'où le !important pour les surcharger ici. */
	.mb-petal--tr{ padding:16px 20px 32px !important; }
	.mb-petal--br-strong{ padding:40px 20px !important; }
	.mb-section-approche{ padding:40px 20px !important; }
	.mb-section-parcours{ padding:40px 20px 80px !important; }
	.mb-petal--tl{ padding:48px 20px !important; }
	.mb-petal--bl{ padding:48px 20px !important; }
	.mb-section-temoignages{ padding:40px 20px !important; }
	.mb-section-entreprise{ padding:40px 20px 48px !important; }
	.mb-petal--br-soft{ padding:56px 24px !important; }

	/* Filigranes pétale : absents des sections mobile de la maquette (sauf le héros, réduit).
	   Un filigrane utilise un décalage négatif (ex. top:-230px) — Safari/WebKit peut ne pas le
	   découper correctement avec overflow:hidden, provoquant un débordement visuel du fond de
	   section suivante. On les retire donc à cette largeur, en plus d'être fidèle à la maquette. */
	.mb-petal--tr::before{ right:-120px; top:-100px; width:280px; height:280px; opacity:.13; transform:rotate(13deg); }
	.mb-petal--br-strong::before,
	.mb-petal--tl::before,
	.mb-petal--tr-soft::before,
	.mb-petal--bl::before{ display:none; }

	/* Héros : l'image se glisse entre le H1 et le paragraphe (au lieu d'être toute en haut) */
	.mb-hero__grid{ display:flex; flex-direction:column; align-items:stretch; gap:20px; }
	.mb-hero__grid .mb-hero__portrait{ order:3; margin:0; max-width:none; aspect-ratio:4/5; }
	.mb-hero__content{ display:contents; }
	.mb-hero__content .mb-eyebrow{ order:1; }
	.mb-hero__content h1{ order:2; }
	.mb-hero__content .mb-hero__lead{ order:4; }
	.mb-hero__content .wp-block-buttons{ order:5; align-self:flex-start; }

	/* Prestations : numéro → titre → description → lien (le lien n'est plus collé au titre) */
	.mb-num-row{ display:flex; flex-direction:column; gap:10px; padding:24px 0; }
	.mb-num-row__n{ align-self:flex-start; font-size:28px; }
	.mb-num-row__title{ align-self:flex-start; font-size:22px; }

	/* Ateliers : liste de lignes plutôt qu'une grille de cartes */
	.mb-date-grid{ display:block; border-top:1px solid color-mix(in oklch, var(--accent-wine) 55%, transparent); }
	.mb-date-cell{
		position:relative;
		display:block;
		margin:0;
		padding:18px 90px 18px 0;
		border:none;
		border-bottom:1px solid color-mix(in oklch, var(--accent-wine) 55%, transparent);
	}
	.mb-date-cell__month{ font-size:12px; margin:0; }
	.mb-date-cell__day{ margin:0; font-size:32px; line-height:1.15; }
	.mb-date-cell__place{ margin:0; }
	.mb-date-cell__link{ position:absolute; top:50%; right:0; transform:translateY(-50%); margin-top:0; }

	/* Accompagnement personnalisé : espace resserré entre la photo et le sur-titre suivant, CTA pleine largeur */
	.mb-split > *{ margin:0; }
	.mb-section-parcours .wp-block-buttons{ margin-bottom:24px; }

	/* Citation */
	.mb-citation__quote{ font-size:26px !important; line-height:1.2; }
	.mb-petal--br-soft::before{ display:none; }

	/* Pied de page */
	.mb-footer{ padding:40px 20px 20px !important; }
	.mb-footer__row{ flex-direction:column; gap:32px; }
	.mb-footer__cols{ flex-direction:column; gap:32px; }
}

/* Pied de page */
.mb-footer{ background:var(--surface-inverse); color:var(--text-inverse); }
.mb-footer a{ color:color-mix(in oklch, var(--text-inverse) 78%, transparent); text-decoration:none; }
.mb-footer a:hover{ text-decoration:underline; }
/* Les vrais menus WordPress (Apparence > Menus) génèrent des <li> même sans <ul> visible
   — on retire la puce et l'espacement de liste par défaut du navigateur. */
.mb-footer li{ list-style:none; margin:0; padding:0; }
.mb-footer h3{ font-size:16px; margin:0 0 4px; color:var(--text-inverse); font-family:var(--font-display); font-weight:400; }
.mb-footer__link{ font-size:12px; }
.mb-footer__bottom{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; margin-top:48px; padding-top:16px; border-top:1px solid color-mix(in oklch, var(--text-inverse) 20%, transparent); font-size:11px; color:color-mix(in oklch, var(--text-inverse) 55%, transparent); }
.mb-footer__bottom a{ color:inherit; }

/* Newsletter (pied de page) — habille le formulaire du plugin Brevo (shortcode
   [sibwp_form], classes sib-* imposées par le plugin) pour un fond sombre :
   ses styles par défaut sont pensés pour un fond clair, inutilisables tels
   quels ici. !important nécessaire par endroits car le plugin injecte son
   propre <style> scopé par ID juste après le formulaire (spécificité
   supérieure à une simple classe) — même logique que .mb-footer en mobile.
   Sélecteurs vérifiés sur le HTML réel rendu en prod (form id 1) : le champ
   prénom utilise l'attribut Brevo "PRENOM" (pas le "FIRSTNAME" du gabarit par
   défaut), et la case RGPD ("Ajouter conditions d'utilisation") n'est PAS
   entourée d'un <p> — un <input> + du texte brut + un <a> directement dans
   .sib_signup_box_inside_1. Prénom précède déjà Email dans le DOM réel,
   donc pas de réordonnancement flex nécessaire. */
.mb-newsletter{ width:100%; max-width:320px; }
.mb-newsletter__intro{ font-size:13px; line-height:1.6; margin:0 0 16px; color:color-mix(in oklch, var(--text-inverse) 78%, transparent); }
.mb-newsletter .sib_signup_form{
	margin:0; font-size:11px; line-height:1.6; color:color-mix(in oklch, var(--text-inverse) 75%, transparent) !important;
}
.mb-newsletter .sib_signup_form p{ margin:0 0 10px; clear:both; }
.mb-newsletter .sib_signup_form p:has(.sib-default-btn){ margin-top:5px; }
/* Case RGPD : flottante pour que le texte + le lien qui suivent (bruts, sans
   wrapper) s'enroulent normalement autour d'elle comme du texte classique. */
.mb-newsletter input[name="terms"]{ float:left; width:16px; height:16px; margin:3px 13px 12px 0; accent-color:var(--color-sage); }
.mb-newsletter label.sib-email-area,
.mb-newsletter label.sib-PRENOM-area{
	display:block; margin:0 0 6px; font-size:12px; font-weight:500;
	color:color-mix(in oklch, var(--text-inverse) 78%, transparent) !important;
}
.mb-newsletter input.sib-email-area,
.mb-newsletter input.sib-PRENOM-area{
	width:100% !important; box-sizing:border-box; font-family:var(--font-body) !important; font-size:var(--text-body-sm) !important;
	color:var(--text-inverse) !important; padding:11px 16px !important; border-radius:var(--radius-md) !important;
	background:color-mix(in oklch, var(--text-inverse) 10%, transparent) !important;
	border:1px solid color-mix(in oklch, var(--text-inverse) 30%, transparent) !important;
	outline:none;
	transition:border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);
}
.mb-newsletter input.sib-email-area:focus,
.mb-newsletter input.sib-PRENOM-area:focus{ border-color:var(--color-sage) !important; box-shadow:0 0 0 3px color-mix(in oklch, var(--color-sage) 35%, transparent); }
.mb-newsletter .sib-default-btn{
	appearance:none !important; border:none !important; border-radius:3px !important; cursor:pointer;
	background:var(--color-sage) !important; color:var(--color-cream) !important; font-family:var(--font-body) !important;
	font-size:13px !important; font-weight:500; letter-spacing:.07em; text-transform:uppercase;
	padding:12px 22px !important; transition:background var(--duration-fast) var(--ease-standard), opacity var(--duration-fast) var(--ease-standard);
}
.mb-newsletter .sib-default-btn:hover{ background:color-mix(in oklch, var(--color-sage) 88%, white 12%) !important; }
.mb-newsletter .sib-default-btn[disabled]{ opacity:.6; cursor:default; }
.mb-newsletter .sib_msg_disp{ margin-top:10px; clear:both; }
/* Pas de surcharge des couleurs de fond/texte de .sib-alert-message-* : le
   plugin les injecte scopées par ID (spécificité supérieure à nos classes),
   et son contraste clair-sur-clair par défaut reste lisible tel quel, y
   compris posé sur le fond sombre du footer. */

/* Pages classiques (mentions légales, confidentialité, cookies…) : mise en
   page et typographie du design system appliquées automatiquement au
   contenu, pour que les blocs par défaut (Titre, Paragraphe, Tableau…)
   soient déjà bien stylés sans classe ni réglage manuel.
   Exclut .mb-petal (bandeaux plein format avec filigrane), .alignfull et
   .alignwide (sections volontairement pleine largeur/large, ex. les patterns
   Accompagnements et Contact) — seul le contenu "brut", non habillé par un
   pattern, est concerné. */
article.page > :not(.mb-petal):not(.alignfull):not(.alignwide){
	max-width:680px;
	margin-left:auto;
	margin-right:auto;
	padding-left:32px;
	padding-right:32px;
}
article.page > .mb-petal + *:not(.alignfull):not(.alignwide){ margin-top:64px; }
article.page > :last-child{ padding-bottom:64px; }
/* :where() = spécificité nulle : ce sont des valeurs par défaut, jamais
   prioritaires sur une classe de composant (.mb-eyebrow, .mb-body, etc.)
   même plus loin dans la cascade — sans quoi elles écrasaient par erreur
   la taille des eyebrows/paragraphes dans les sections pleine largeur
   (Accompagnements, Contact) qui n'ont pas besoin de ce traitement. */
:where(article.page) h2,
:where(article.page) h3{ font-family:var(--font-display); color:var(--accent-wine); }
:where(article.page) p,
:where(article.page) li{ font-size:1rem; line-height:1.55; }
:where(article.page) .wp-block-table table{ border-collapse:collapse; width:100%; font-size:0.9rem; }
:where(article.page) .wp-block-table th,
:where(article.page) .wp-block-table td{ padding:10px 12px; border:1px solid var(--border-default); text-align:left; }
:where(article.page) .wp-block-table thead th{ background:var(--color-blush); font-weight:600; }
@media (max-width:700px){
	article.page > :not(.mb-petal):not(.alignfull):not(.alignwide){ padding-left:20px; padding-right:20px; }
	article.page .wp-block-table{ overflow-x:auto; }
}

/* Bannière informative (Apparence > Personnaliser), au-dessus du header sur toutes les pages */
.mb-banner{ background:var(--accent-wine); color:var(--text-inverse); }
.mb-banner__inner{
	max-width:1280px; margin:0 auto; padding:10px 44px 10px 24px;
	display:flex; align-items:center; justify-content:center; position:relative;
}
.mb-banner__text{ margin:0; font-size:13px; letter-spacing:.02em; color:inherit; text-decoration:none; text-align:center; }
a.mb-banner__text:hover{ text-decoration:underline; }
.mb-banner__close{
	position:absolute; right:16px; top:50%; transform:translateY(-50%);
	appearance:none; background:none; border:none; color:inherit;
	font-size:18px; line-height:1; cursor:pointer; opacity:.75; padding:4px;
}
.mb-banner__close:hover{ opacity:1; }
@media (max-width:640px){
	.mb-banner__inner{ padding:8px 40px 8px 16px; }
	.mb-banner__text{ font-size:11.5px; }
}

/* Page Accompagnements — placeholder photo du héros : icône tant qu'aucune photo n'est fournie.
   Dès qu'une vraie photo est mise via "Remplacer" dans l'éditeur, elle remplit tout le cadre
   (l'icône n'était qu'un repère temporaire) — supprimer alors le texte "Photo à venir" resté sous. */
.mb-hero__portrait--placeholder{
	position:relative;
	display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px;
	background:var(--surface-tint); color:var(--text-muted); font-size:12px; text-align:center;
}
.mb-hero__portrait--placeholder figure.wp-block-image{ position:absolute; inset:0; margin:0; }
.mb-hero__portrait--placeholder img{ display:block; width:100%; height:100%; margin:0; opacity:1; object-fit:cover; }
.mb-hero__portrait--placeholder p{ position:relative; margin:0; }

/* Page Contact — placeholder photo du cabinet : format paysage (4:3), avec bordure et icône.
   Même logique que ci-dessus : la vraie photo remplit le cadre une fois ajoutée. */
.mb-hero__portrait--cabinet{
	aspect-ratio:4/3; max-width:none;
	flex-direction:column; gap:12px;
	border:1px solid var(--border-subtle);
}
.mb-hero__portrait--cabinet p{ position:relative; font-size:11px; letter-spacing:.17em; text-transform:uppercase; color:var(--accent-wine); opacity:.55; }

/* Page Accompagnements — "À qui s'adressent les séances" */
.mb-qui-cols.wp-block-columns{ gap:48px; }
.mb-qui-cols .wp-block-column:first-child{ display:flex; flex-direction:column; gap:24px; }
.mb-qui-cols .wp-block-column:first-child > *{ margin:0; }
.mb-qui-cols em{ font-family:var(--font-display); font-size:var(--text-display-sm); }
.mb-diamond-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
.mb-diamond-list li{ display:flex; align-items:flex-start; gap:20px; font-size:1rem; line-height:1.55; padding:20px 0; border-bottom:1px solid color-mix(in oklch, var(--color-wine) 22%, transparent); }
.mb-diamond-list li::before{ content:"✦"; color:var(--accent-wine); flex:0 0 auto; line-height:1.55; }

/* Page Accompagnements — "Motifs de consultation" : grille 2x2 + carte CTA photo */
.mb-motifs{ display:grid; grid-template-columns:2fr 1fr; gap:32px; margin-top:40px; align-items:stretch; }
.mb-motifs > *{ margin:0; }
.mb-motifs-grid{ display:grid; grid-template-columns:1fr 1fr; gap:32px 24px; }
.mb-motifs-grid > *{ margin:0; }
.mb-motifs-item{
	display:flex; flex-direction:column; gap:12px;
	background:var(--surface-card); border:1px solid var(--border-subtle); border-radius:var(--radius-lg);
	box-shadow:var(--shadow-sm); padding:30px 28px;
	transition:box-shadow 200ms var(--ease-standard), transform 200ms var(--ease-standard), border-color 200ms var(--ease-standard);
}
.mb-motifs-item:hover{ box-shadow:var(--shadow-md); transform:translateY(-4px); border-color:var(--accent-sage); }
.mb-motifs-item > *{ margin:0; }
.mb-motifs-cta{ aspect-ratio:auto; min-height:100%; }

/* Page Accompagnements — "Ce que ça peut vous apporter" (tableau 3 colonnes) */
.mb-apports-cols.wp-block-columns{
	gap:0; margin-top:32px;
	border:1px solid color-mix(in oklch, var(--color-wine) 28%, transparent);
}
.mb-apports-cols .wp-block-column{
	padding:22px 24px;
	border-right:1px solid color-mix(in oklch, var(--color-wine) 28%, transparent);
	display:flex; flex-direction:column; gap:6px;
}
.mb-apports-cols .wp-block-column:last-child{ border-right:none; }
.mb-apports-cols .wp-block-column > *{ margin:0; }

/* Page Accompagnements — "Formules" (2 cartes) */
.mb-formules-cols.wp-block-columns{ max-width:900px; margin-left:auto; margin-right:auto; gap:32px; align-items:stretch; }
.mb-formule-card{ display:flex; flex-direction:column; gap:18px; height:100%; padding:40px; text-align:left; }
.mb-formule-card > *{ margin:0; }
.mb-formule-card .wp-block-buttons{ margin-top:auto; }
.mb-formule-card--elevated{ box-shadow:var(--shadow-md); }
.mb-formule-card__label{ margin:0; font-size:0.8125rem; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-wine); }
.mb-formule-tags{ display:flex; flex-wrap:wrap; gap:10px; }
.mb-formule-tags > *{ margin:0; }

/* Badge — composant design system réutilisable (étiquettes de statut) */
.mb-badge{
	display:inline-flex; align-items:center; padding:4px 14px; border-radius:0;
	font-family:var(--font-body); font-size:var(--text-caption); font-weight:500;
	letter-spacing:.04em; text-transform:uppercase;
}
.mb-badge--plum{ background:color-mix(in oklch, var(--accent-plum) 16%, white); color:var(--accent-wine); }
.mb-badge--sage{ background:color-mix(in oklch, var(--accent-sage) 30%, white); color:#2F4A3B; }
.mb-badge--peach{ background:color-mix(in oklch, var(--accent-peach) 30%, white); color:#7A3E15; }
.mb-badge--lavender{ background:color-mix(in oklch, var(--accent-lavender) 24%, white); color:#3F2C55; }
.mb-badge--wine{ background:color-mix(in oklch, var(--accent-wine) 14%, white); color:var(--accent-wine); }

/* Callout — composant design system réutilisable (encart de note) */
.mb-callout{
	display:flex; gap:12px; padding:var(--space-5) var(--space-6); border-radius:var(--radius-md);
	background:var(--surface-tint); font-size:var(--text-body-sm); color:var(--text-primary); line-height:var(--lh-body);
	text-align:left;
}
.mb-callout > *{ margin:0; }
.mb-callout--plum{ border-left:3px solid var(--accent-plum); }
.mb-callout--sage{ border-left:3px solid var(--accent-sage); }
.mb-callout--peach{ border-left:3px solid var(--accent-peach); }

/* Page Accompagnements — FAQ (accordéon) */
.mb-faq{
	max-width:820px; margin-left:auto; margin-right:auto;
	border-top:1px solid color-mix(in oklch, var(--accent-wine) 55%, transparent); text-align:left;
}
.mb-faq > *{ margin:0; }
.mb-faq-item{ border-bottom:1px solid color-mix(in oklch, var(--accent-wine) 55%, transparent); }
.mb-faq-item > *{ margin:0; }
.mb-faq-item__q{
	display:flex; align-items:center; justify-content:space-between; gap:24px;
	padding:22px 0; cursor:pointer;
}
.mb-faq-item__q > *{ margin:0; }
.mb-faq-item__question-text{ font-family:var(--font-display); font-size:var(--text-display-sm); color:var(--text-primary); }
.mb-faq-item__icon{ position:relative; flex:0 0 auto; width:20px; text-align:center; font-size:18px; color:var(--accent-wine); }
.mb-faq-item__icon-minus{ display:none; }
.mb-faq-item.is-open .mb-faq-item__icon-plus{ display:none; }
.mb-faq-item.is-open .mb-faq-item__icon-minus{ display:inline; }
.mb-faq-item__answer{
	max-height:0; overflow:hidden;
	transition:max-height 280ms var(--ease-standard);
}
.mb-faq-item__answer-inner > p{
	margin:0; padding:0 0 44px;
	opacity:0; transform:translateY(-6px);
	transition:opacity 240ms var(--ease-standard) 60ms, transform 240ms var(--ease-standard) 60ms;
}
.mb-faq-item.is-open .mb-faq-item__answer{ max-height:var(--mb-faq-answer-height, 500px); }
.mb-faq-item.is-open .mb-faq-item__answer-inner > p{ opacity:1; transform:translateY(0); }
/* L'accordéon replie les réponses via max-height:0 (JS gère l'ouverture au clic
   en front) — sans ce correctif elles resteraient invisibles dans l'éditeur. */
.editor-styles-wrapper .mb-faq-item__answer{ max-height:none; overflow:visible; }
.editor-styles-wrapper .mb-faq-item__answer-inner > p{ opacity:1; transform:none; }
@media (max-width:900px){
	.mb-motifs,
	.mb-motifs-grid{ grid-template-columns:1fr; }
	.mb-motifs-cta{ min-height:320px; }
}

@media (max-width:782px){
	.mb-apports-cols .wp-block-column{
		border-right:none;
		border-bottom:1px solid color-mix(in oklch, var(--color-wine) 28%, transparent);
	}
	.mb-apports-cols .wp-block-column:last-child{ border-bottom:none; }
}

@media (max-width:640px){
	.mb-faq-item__q{ padding:18px 0; }
	.mb-faq-item__question-text{ font-size:1.15rem; }
	.mb-formule-card{ padding:26px; }
	.mb-section-motifs,
	#formules,
	.mb-section-faq{ padding:40px 20px !important; }
	.mb-section-reassurance{ padding:48px 20px !important; }
	.mb-section-contact-hero{ padding:40px 20px 16px !important; }
	.mb-section-contact-form{ padding:8px 20px 40px !important; }
	.mb-section-contact-hero .mb-hero__portrait{ display:none; }
}

/* Page Contact — cartes "motif du message" (choix unique) */
.mb-motif-intro{ font-size:13px; line-height:1.6; color:var(--text-secondary); }
.mb-motif-cards{ display:grid; grid-template-columns:repeat(3,1fr); align-items:stretch; gap:14px; margin-top:24px; }
.mb-motif-cards > *{ margin:0; }
.mb-motif-card{
	appearance:none; text-align:left; cursor:pointer; font-family:var(--font-body);
	padding:14px 16px; display:flex; flex-direction:column; gap:6px; height:100%; box-sizing:border-box;
	background:var(--surface-card); border:1px solid var(--border-subtle); border-radius:3px;
	transition:border-color var(--duration-fast) var(--ease-standard), background var(--duration-fast) var(--ease-standard);
}
.mb-motif-card.is-selected{ background:var(--surface-tint); border-color:var(--accent-wine); }
.mb-motif-card:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:2px; }
.mb-motif-card__title{ font-family:var(--font-display); font-weight:700; font-size:17px; line-height:1.25; color:var(--accent-wine); }
.mb-motif-card__desc{ font-size:12px; line-height:1.5; color:var(--text-secondary); }

/* Page Contact — grille formulaire + colonne coordonnées */
.mb-contact-grid{ display:grid; grid-template-columns:minmax(0,1fr) 330px; gap:28px; align-items:start; margin-top:36px; }
.mb-contact-context{
	display:flex; flex-direction:column; gap:6px; margin-bottom:22px; padding-bottom:20px;
	border-bottom:1px solid var(--border-subtle);
}
.mb-contact-context__label{ font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-secondary); }
.mb-contact-context__title{ font-family:var(--font-display); font-size:var(--text-display-sm); color:var(--accent-wine); }
.mb-contact-context__text{ font-size:13px; line-height:1.6; color:var(--text-secondary); }

.wpcf7-form{ background:var(--surface-card); border:1px solid var(--border-subtle); box-shadow:var(--shadow-sm); padding:36px 34px; }
.mb-field-row{ display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-bottom:18px; }
.mb-field-atelier{ padding:20px; background:var(--surface-tint); border:1px solid var(--border-subtle); }
.mb-field-atelier[hidden]{ display:none; }
.mb-field{ display:flex; flex-direction:column; gap:8px; margin-bottom:18px; }
.mb-field__label{ font-size:var(--text-body-sm); color:var(--text-secondary); font-weight:500; }
.mb-field__label em{ font-size:.85em; opacity:.65; font-style:italic; }
.wpcf7-form-control.wpcf7-text,
.wpcf7-form-control.wpcf7-email,
.wpcf7-form-control.wpcf7-tel,
.wpcf7-form-control.wpcf7-textarea{
	width:100%; font-family:var(--font-body); font-size:var(--text-body-md); color:var(--text-primary);
	padding:13px 18px; border-radius:var(--radius-md); border:1px solid var(--border-default);
	background:var(--surface-card); outline:none;
	transition:border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);
}
.wpcf7-form-control.wpcf7-textarea{ resize:vertical; line-height:var(--lh-body); }
.wpcf7-form-control.wpcf7-text:focus,
.wpcf7-form-control.wpcf7-email:focus,
.wpcf7-form-control.wpcf7-tel:focus,
.wpcf7-form-control.wpcf7-textarea:focus{
	border-color:var(--focus-ring); box-shadow:0 0 0 3px color-mix(in oklch, var(--focus-ring) 20%, transparent);
}
.wpcf7-form-control.wpcf7-not-valid{ border-color:var(--state-error); }
.wpcf7-not-valid-tip{ display:block; margin-top:6px; font-size:12px; color:var(--state-error); }
.mb-checkbox-field{ display:flex; align-items:flex-start; gap:10px; margin-bottom:16px; cursor:pointer; }
.mb-checkbox-field .wpcf7-acceptance .wpcf7-list-item{ margin:0; }
.mb-checkbox-field label{ display:flex; align-items:flex-start; gap:10px; font-size:var(--text-body-sm); color:var(--text-primary); cursor:pointer; }
.mb-checkbox-field input[type="checkbox"]{ width:18px; height:18px; flex:none; margin-top:2px; accent-color:var(--accent-primary); border-radius:var(--radius-sm); }
.mb-form-required{ display:block; font-size:12px; color:var(--text-secondary); margin-bottom:16px; }
.mb-form-submit .wpcf7-form-control.wpcf7-submit{
	appearance:none; border:none; border-radius:3px; cursor:pointer;
	background:var(--color-sage); color:var(--color-cream); font-family:var(--font-body);
	font-size:14px; font-weight:500; letter-spacing:.07em; text-transform:uppercase;
	padding:17px 26px; transition:background var(--duration-fast) var(--ease-standard);
}
.mb-form-submit .wpcf7-form-control.wpcf7-submit:hover{ background:var(--accent-primary-hover); }
.mb-form-legal{ margin:18px 0 0; padding-top:18px; border-top:1px solid var(--border-subtle); font-size:11px; line-height:1.75; color:var(--text-secondary); }
.mb-form-legal a{ color:var(--accent-wine); }
.wpcf7-spinner{ margin-left:12px; }
.wpcf7 .screen-reader-response{ position:absolute; width:1px; height:1px; overflow:hidden; }
.wpcf7-response-output{ margin:20px 0 0; padding:14px 18px; border-radius:var(--radius-md); font-size:13px; display:none; }
/* CF7 6.x ajoute une classe d'état courte ("sent","invalid","spam","aborted","failed")
   directement sur le <form>, pas sur le message lui-même — d'où le ciblage via le parent. */
.wpcf7-form.sent .wpcf7-response-output{ display:block; border:1px solid var(--state-success); color:var(--accent-wine); background:color-mix(in oklch, var(--state-success) 18%, var(--color-cream) 82%); }
.wpcf7-form.invalid .wpcf7-response-output,
.wpcf7-form.spam .wpcf7-response-output,
.wpcf7-form.aborted .wpcf7-response-output,
.wpcf7-form.failed .wpcf7-response-output{ display:block; border:1px solid var(--state-error); color:var(--state-error); background:color-mix(in oklch, var(--state-error) 10%, var(--color-cream) 90%); }

.mb-contact-aside{ display:flex; flex-direction:column; gap:16px; }
.mb-contact-aside__card{ background:var(--surface-card); border:1px solid var(--border-subtle); padding:26px 24px; display:flex; flex-direction:column; gap:22px; }
.mb-contact-aside__card > *{ margin:0; }
.mb-contact-aside__section{ display:flex; flex-direction:column; gap:14px; }
.mb-contact-aside__section > *{ margin:0; }
.mb-contact-aside__section + .mb-contact-aside__section{ padding-top:20px; border-top:1px solid var(--border-subtle); }
.mb-contact-aside__label{ font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--accent-wine); }
.mb-contact-aside__row{ display:flex; justify-content:space-between; gap:14px; font-size:13px; color:var(--text-secondary); }
.mb-contact-aside__row > *{ margin:0; }
.mb-contact-aside__row span:last-child{ color:var(--text-primary); text-align:right; }
.mb-contact-aside__row a{ color:var(--text-primary); text-decoration:none; }
/* "Me joindre directement" : libellé au-dessus de la valeur (pas côte à côte, contrairement aux Horaires) */
.mb-contact-aside__field{ display:flex; flex-direction:column; gap:2px; }
.mb-contact-aside__field > *{ margin:0; }
.mb-contact-aside__field p:first-child{ font-size:11px; color:var(--text-secondary); }
.mb-contact-aside__field a,
.mb-contact-aside__field p:last-child{ font-size:var(--text-body-sm); color:var(--text-primary); text-decoration:none; }
.mb-contact-social{ display:flex; align-items:center; gap:10px; }
.mb-contact-social > *{ margin:0; }
.mb-contact-social a{
	width:40px; height:40px; border:1px solid var(--border-default); display:flex; align-items:center;
	justify-content:center; text-decoration:none; color:var(--accent-wine);
	transition:background var(--duration-fast) var(--ease-standard);
}
.mb-contact-social a:hover{ background:var(--surface-tint); }

@media (max-width:900px){
	.mb-motif-cards{ grid-template-columns:1fr; }
	.mb-contact-grid{ grid-template-columns:1fr; }
	.mb-field-row,
	.mb-field-atelier{ grid-template-columns:1fr; }
	.wpcf7-form{ padding:26px 22px; }
}

/* Page À propos — hero */
.mb-hero-lead-narrow{ max-width:600px; margin-left:auto; margin-right:auto; }

/* Page À propos — bloc citation (QuoteBlock du design system) */
.mb-quote-block{ position:relative; overflow:hidden; text-align:center; padding:92px 17%; }
.mb-quote-block__quote{
	position:relative; font-family:var(--font-display); font-weight:400; color:var(--accent-wine);
	font-size:clamp(34px,4vw,54px); line-height:1.08; letter-spacing:-.045em; margin:0;
}
.mb-quote-block__author{
	position:relative; display:block; margin-top:26px; font-size:11px;
	letter-spacing:.15em; text-transform:uppercase; color:var(--accent-plum);
}

/* Page À propos — frise chronologique */
.mb-timeline{ display:grid; grid-template-columns:11px minmax(0,1fr); gap:14px; }
.mb-timeline__rail{ display:flex; flex-direction:column; align-items:center; padding-top:12px; }
.mb-timeline__rail > *{ margin:0; }
.mb-timeline__dot{ width:11px; height:11px; border-radius:50%; border:1px solid var(--accent-sage); flex:0 0 auto; }
.mb-timeline__dot--filled{ background:var(--accent-plum); border-color:var(--accent-plum); }
.mb-timeline__line{ width:1px; flex:1; background:var(--border-default); }
.mb-timeline__chapters{ display:flex; flex-direction:column; gap:72px; }
.mb-timeline__chapters > *{ margin:0; }
.mb-timeline__chapter{ display:flex; flex-direction:column; gap:16px; }
.mb-timeline__chapter > *{ margin:0; }
.mb-timeline__chapter--wide{ gap:20px; }
.mb-timeline__eyebrow{ font-size:11px; letter-spacing:.17em; text-transform:uppercase; color:var(--accent-plum); }
.mb-timeline__media-row{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.8fr); gap:40px; align-items:start; }
.mb-timeline__media-row > *{ margin:0; }
.mb-timeline__text{ display:flex; flex-direction:column; gap:18px; }
.mb-timeline__text > *{ margin:0; }
.mb-timeline__text--narrow{ max-width:600px; }
.mb-timeline__photo{ margin:0; }
.mb-timeline__photo img{ width:100%; aspect-ratio:3/4; object-fit:cover; border-radius:var(--radius-lg); box-shadow:var(--shadow-sm); display:block; }

/* Page À propos — placeholder "photo à fournir" : icône tant qu'aucune photo n'est fournie.
   Dès qu'une vraie photo est mise via "Remplacer" dans l'éditeur, elle remplit tout le cadre
   (l'icône n'était qu'un repère temporaire) — supprimer alors le texte "Photo à fournir" resté sous. */
.mb-photo-placeholder{
	position:relative; overflow:hidden; aspect-ratio:3/4; border-radius:var(--radius-lg);
	background:var(--surface-tint); border:1px solid var(--border-subtle);
	display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px;
}
.mb-photo-placeholder figure.wp-block-image{ position:absolute; inset:0; margin:0; }
.mb-photo-placeholder img{ display:block; width:100%; height:100%; margin:0; opacity:1; object-fit:cover; }
.mb-photo-placeholder__text{
	position:relative; margin:0; font-size:var(--text-body-sm); letter-spacing:.1em; text-transform:uppercase;
	color:var(--text-secondary); opacity:.75; text-align:center; padding:0 16px;
}

/* Page À propos — "Ma vision du soin" */
.mb-vision-grid{ display:grid; grid-template-columns:minmax(0,.42fr) minmax(0,1fr); gap:56px; align-items:start; }
.mb-vision-seal{
	aspect-ratio:1/1; display:flex; align-items:center; justify-content:center; margin:0;
}
.mb-vision-seal__img{ width:60%; height:auto; display:block; }
.mb-vision-text{ display:flex; flex-direction:column; gap:18px; }
.mb-vision-text > *{ margin:0; }
.mb-vision-callout-wrap{ margin:32px auto 0; font-size:12px; }

/* Page À propos — "Mes formations" (tableau 4 colonnes) */
.mb-formations-cols.wp-block-columns{
	gap:0; margin-top:26px;
	border:1px solid color-mix(in oklch, var(--color-wine) 22%, transparent);
}
.mb-formations-cols .wp-block-column{
	padding:34px 32px 38px;
	border-left:1px solid color-mix(in oklch, var(--color-wine) 22%, transparent);
	display:flex; flex-direction:column; gap:10px;
}
.mb-formations-cols .wp-block-column:first-child{ border-left:none; }
.mb-formations-cols .wp-block-column > *{ margin:0; }
.mb-formations-desc{ opacity:.72; }
.mb-formations-eyebrow{ opacity:.65; letter-spacing:.2em; }
.mb-formations-wrap{ max-width:1000px; margin-left:auto; margin-right:auto; }
.mb-formations-lead{ opacity:.8; max-width:620px; }
.mb-formations-heading{ max-width:620px; }

@media (max-width:782px){
	.mb-formations-cols .wp-block-column{
		border-left:none;
		border-top:1px solid color-mix(in oklch, var(--color-wine) 22%, transparent);
	}
	.mb-formations-cols .wp-block-column:first-child{ border-top:none; }
}

@media (max-width:640px){
	.mb-timeline{ grid-template-columns:9px minmax(0,1fr); gap:12px; }
	.mb-timeline__rail{ padding-top:10px; }
	.mb-timeline__dot{ width:9px; height:9px; }
	.mb-timeline__chapters{ gap:48px; }
	.mb-timeline__chapter{ gap:14px; }
	.mb-timeline__media-row{ display:flex; flex-direction:column; gap:14px; }
	.mb-timeline__text{ gap:14px; }
	.mb-photo-placeholder{ aspect-ratio:4/3; }
	.mb-photo-placeholder__text{ font-size:12px; }
	.mb-timeline__photo img{ aspect-ratio:4/3; }
	.mb-vision-grid{ display:flex; flex-direction:column; gap:28px; }
	.mb-vision-grid .mb-vision-seal{ order:2; }
	.mb-vision-grid .mb-vision-text{ order:1; }
	.mb-vision-seal{ aspect-ratio:4/3; }
	.mb-vision-seal__img{ width:45%; }
	.mb-formations-cols.wp-block-columns{ grid-template-columns:1fr; }
}
