/* ==========================================================================
   Maison Sonnet · feuille de style du thème
   Palette : noir #121110, blanc, beige #F3EEE6. La couleur vient des fleurs.
   ========================================================================== */

:root {
	--ms-noir: #121110;
	--ms-blanc: #ffffff;
	--ms-beige: #f3eee6;
	--ms-encre: #2e2c29;
	--ms-ardoise: #4a4743;
	--ms-taupe: #6b6560;
	--ms-gris: #9c958f;
	--ms-pierre: #b5afa9;
	--ms-sable: #cfc8c1;
	--ms-filet: #e4ded6;
	--ms-gutter: clamp(16px, 5.6vw, 80px);
	--ms-header-h: 97px;
	--ms-serif: 'Playfair Display', Georgia, serif;
	--ms-sans: Manrope, system-ui, -apple-system, 'Segoe UI', sans-serif;
	--ms-section-y: clamp(72px, 8vw, 120px);
}

html { scroll-behavior: smooth; }
body { margin: 0; overflow-x: clip; -webkit-font-smoothing: antialiased; }
img, video { max-width: 100%; height: auto; }
a { color: inherit; text-underline-offset: 5px; text-decoration-thickness: 1px; }
a:hover { opacity: .8; }
:where(a, button, summary, input, select, textarea):focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
em { font-style: italic; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Les titres en Playfair : l'italique sert d'accent ------------------------- */
:where(h1, h2, h3, h4) { margin: 0; letter-spacing: -0.01em; }
:where(h1, h2, h3, h4) em { font-weight: inherit; }
.wp-site-blocks p { margin: 0; }

/* Conteneur ----------------------------------------------------------------- */
.ms-wrap { max-width: 1440px; margin-inline: auto; padding-inline: var(--ms-gutter); box-sizing: border-box; width: 100%; }
.wp-site-blocks > * { margin-block: 0; }
.ms-section { padding-block: var(--ms-section-y); }
.ms-section.is-compact { padding-block: clamp(48px, 6vw, 88px); }
.ms-stack { display: flex; flex-direction: column; gap: 22px; }
.ms-stack.is-tight { gap: 12px; }
.ms-measure { max-width: 560px; }
.ms-measure-wide { max-width: 760px; }

/* Couleurs de section --------------------------------------------------------- */
.has-noir-background-color { color: var(--ms-beige); }
.has-noir-background-color :where(p, li) { color: var(--ms-sable); }
.has-noir-background-color :where(h1, h2, h3, strong, .ms-eyebrow + h2) { color: var(--ms-beige); }
.has-noir-background-color .ms-eyebrow { color: var(--ms-pierre); }
:where(.has-beige-background-color, .has-blanc-background-color) :where(p, li) { color: var(--ms-encre); }

/* Sur-titre ----------------------------------------------------------------- */
.ms-eyebrow, p.ms-eyebrow { font-size: 12px; letter-spacing: .24em; text-transform: uppercase; color: var(--ms-taupe); line-height: 1.5; }
.ms-lead { font-size: 18px; }
.ms-note { font-size: 13px; color: var(--ms-taupe); }
.has-noir-background-color .ms-note { color: var(--ms-gris); }

/* Titres ---------------------------------------------------------------------- */
.ms-h1 { font-family: var(--ms-serif); font-weight: 300; font-size: clamp(40px, 4vw, 60px); line-height: .98; }
.ms-h2 { font-family: var(--ms-serif); font-weight: 300; font-size: clamp(38px, 4vw, 60px); line-height: 1; }
.ms-h2.is-small { font-size: clamp(34px, 3.4vw, 52px); }
.ms-h3 { font-family: var(--ms-serif); font-weight: 400; font-size: clamp(26px, 2.2vw, 32px); line-height: 1.05; }

/* Grille 12 colonnes ---------------------------------------------------------- */
.ms-row { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; row-gap: 40px; }
.ms-row > * { min-width: 0; }
.ms-c2 { grid-column: span 2; } .ms-c3 { grid-column: span 3; } .ms-c4 { grid-column: span 4; }
.ms-c5 { grid-column: span 5; } .ms-c6 { grid-column: span 6; } .ms-c7 { grid-column: span 7; }
.ms-c8 { grid-column: span 8; } .ms-c12 { grid-column: span 12; }
.ms-row.is-bottom { align-items: end; }
.ms-row.is-top { align-items: start; }
.ms-row.is-center { align-items: center; }
.ms-cols { display: grid; gap: 40px 24px; grid-template-columns: repeat(var(--ms-cols, 3), minmax(0, 1fr)); }
.ms-cols > * { min-width: 0; }
.ms-cols.is-2 { --ms-cols: 2; } .ms-cols.is-3 { --ms-cols: 3; } .ms-cols.is-4 { --ms-cols: 4; }
@media (max-width: 1024px) {
	.ms-c2 { grid-column: span 4; } .ms-c3 { grid-column: span 6; }
	.ms-c4, .ms-c5, .ms-c6, .ms-c7, .ms-c8 { grid-column: span 12; }
	.ms-cols.is-4 { --ms-cols: 2; } .ms-cols.is-3 { --ms-cols: 2; }
}
@media (max-width: 600px) {
	.ms-c2, .ms-c3 { grid-column: span 12; }
	.ms-cols.is-4, .ms-cols.is-3, .ms-cols.is-2 { --ms-cols: 1; }
}

/* Séparation par filet ---------------------------------------------------------- */
.ms-rule-top { border-top: 1px solid currentColor; padding-top: 18px; }
.has-noir-background-color .ms-rule-top { border-top-color: rgba(243, 238, 230, .3); }
.ms-rule-soft { border-top: 1px solid var(--ms-filet); padding-top: 14px; }

/* Split 50/50 plein écran ----------------------------------------------------------- */
.ms-split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ms-split > .ms-split__media { position: relative; overflow: hidden; min-height: 720px; margin: 0; }
.ms-split > .ms-split__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ms-split > .ms-split__media figcaption { position: absolute; left: 20px; bottom: 14px; margin: 0; font-size: 12px; color: #fff; z-index: 1; }
.ms-split > .ms-split__content { display: flex; align-items: center; padding: clamp(56px, 7vw, 120px) clamp(24px, 6vw, 112px); }
.ms-split > .ms-split__content > * { max-width: 560px; width: 100%; }
.ms-split.is-media-right > .ms-split__media { order: 2; }
@media (max-width: 820px) {
	.ms-split { grid-template-columns: 1fr; }
	.ms-split > .ms-split__media { min-height: 440px; order: -1 !important; }
}

/* Hero des pages : tient dans un écran -------------------------------------------- */
.ms-hero > .ms-split__content { padding-block: clamp(40px, 4vw, 64px); }
.ms-hero > .ms-split__content > * { max-width: 600px; }
.ms-hero .ms-stack { gap: 18px; }
.ms-hero p:not(.ms-eyebrow):not(.ms-note) { font-size: 16px; }
@media (min-width: 821px) {
	.ms-hero { min-height: min(calc(100svh - var(--ms-header-h)), 803px); }
	.ms-hero > .ms-split__media { min-height: 0; }
}

/* Fil d'Ariane ------------------------------------------------------------------- */
.ms-breadcrumb { font-size: 13px; color: var(--ms-taupe); display: flex; flex-wrap: wrap; gap: 8px; }
.ms-breadcrumb a { color: var(--ms-ardoise); }
.has-noir-background-color .ms-breadcrumb { color: var(--ms-gris); }
.has-noir-background-color .ms-breadcrumb a { color: var(--ms-sable); }
.ms-breadcrumb .sep { opacity: .7; }

/* Boutons -------------------------------------------------------------------------- */
.wp-block-buttons { display: flex; flex-wrap: wrap; gap: 12px; }
.wp-block-button__link { display: inline-flex; align-items: center; min-height: 52px; box-sizing: border-box; padding: 0 28px !important; border-radius: 999px; font-size: 15px; text-decoration: none; transition: opacity .2s; }
.wp-block-button.is-style-ms-contour .wp-block-button__link { background: transparent !important; color: inherit !important; border: 1px solid currentColor; }
.wp-block-button.is-style-ms-clair .wp-block-button__link { background: var(--ms-beige) !important; color: var(--ms-noir) !important; }
.has-noir-background-color .wp-block-button:not(.is-style-ms-contour) .wp-block-button__link { background: var(--ms-beige); color: var(--ms-noir); }
.ms-link-cta { font-size: 13px; letter-spacing: .12em; text-transform: uppercase; text-underline-offset: 5px; }

/* Cartes produit / prestation --------------------------------------------------------- */
.ms-card { display: flex; flex-direction: column; gap: 14px; }
.ms-card .wp-block-image, .ms-card figure { margin: 0; overflow: hidden; }
.ms-card img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; display: block; transition: transform .8s cubic-bezier(.2, .7, .2, 1); }
.ms-card:hover img { transform: scale(1.04); }
.ms-card.is-portrait img { aspect-ratio: 3 / 4; }
.ms-card .ms-card__meta { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding-top: 12px; border-top: 1px solid var(--ms-filet); font-size: 15px; }
.has-noir-background-color .ms-card .ms-card__meta { border-top-color: rgba(243, 238, 230, .2); }
.ms-num { font-size: 12px; letter-spacing: .16em; color: var(--ms-taupe); }

/* Engagements / chiffres ------------------------------------------------------------- */
.ms-stat { display: flex; flex-direction: column; gap: 6px; padding-top: 18px; border-top: 1px solid currentColor; }
.has-noir-background-color .ms-stat { border-top-color: rgba(243, 238, 230, .3); }
.ms-stat .ms-stat__value { font-family: var(--ms-serif); font-size: clamp(30px, 2.8vw, 40px); line-height: 1.05; }
.ms-stat .ms-stat__big { font-family: var(--ms-serif); font-size: 52px; line-height: 1; }

/* Listes à filets ----------------------------------------------------------------- */
.ms-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid currentColor; }
.ms-list > li { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--ms-filet); }
.ms-list.is-plain > li { display: block; }
.ms-columns-list { list-style: none; margin: 8px 0 0; padding: 0; columns: 2 220px; column-gap: 32px; }
.ms-columns-list > li { padding: 9px 0; border-bottom: 1px solid var(--ms-filet); font-size: 15px; break-inside: avoid; }

/* FAQ et dépliants (bloc Détails natif) --------------------------------------------- */
.wp-block-details { border-bottom: 1px solid var(--ms-sable); padding: 0; margin: 0; }
.ms-faq > .wp-block-details:first-child, .ms-faq > .wp-block-details:first-of-type { border-top: 1px solid currentColor; }
.wp-block-details summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 22px 0; font-weight: 600; font-size: 17px; }
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after { content: "+"; font-weight: 300; font-size: 26px; line-height: 1; transition: transform .25s; flex: none; }
.wp-block-details[open] summary::after { transform: rotate(45deg); }
.wp-block-details > :not(summary) { padding-bottom: 22px; max-width: 760px; }
.has-noir-background-color .wp-block-details { border-bottom-color: rgba(243, 238, 230, .2); }

/* Citation ------------------------------------------------------------------------- */
.ms-quote { margin: 0; display: flex; flex-direction: column; gap: 18px; }
.ms-quote p { font-family: var(--ms-serif); font-size: clamp(22px, 2vw, 28px); line-height: 1.35; }
.ms-quote cite { font-style: normal; font-size: 14px; color: var(--ms-taupe); }
.wp-block-quote.is-style-ms-filet { margin: 40px 0; padding: 4px 0 4px 24px; border-left: 3px solid var(--ms-noir); font-family: var(--ms-serif); font-style: italic; font-size: 26px; line-height: 1.35; }
.wp-block-quote.is-style-ms-filet p { color: var(--ms-noir); }

/* Bandeau défilant --------------------------------------------------------------------- */
.ms-marquee { overflow: hidden; padding: 64px 0 56px; }
.ms-marquee__track { display: flex; width: max-content; animation: ms-marquee 48s linear infinite; }
.ms-marquee__track > span { display: inline-flex; align-items: center; gap: 48px; padding-right: 48px; white-space: nowrap; font-family: var(--ms-serif); font-weight: 300; font-style: italic; font-size: clamp(64px, 8vw, 128px); line-height: 1; }
@keyframes ms-marquee { to { transform: translateX(-50%); } }

/* Animations au défilement : CSS natif quand le navigateur le permet, sinon theme.js (classe ms-io) */
@media (prefers-reduced-motion: no-preference) {
	.ms-io .ms-reveal { opacity: 0; translate: 0 36px; transition: opacity .9s ease, translate .9s cubic-bezier(.2, .7, .2, 1); }
	.ms-io .ms-reveal.is-in { opacity: 1; translate: 0 0; }
}
@supports (animation-timeline: view()) {
	.ms-reveal { animation: ms-reveal linear both; animation-timeline: view(); animation-range: entry 0% cover 30%; }
	@keyframes ms-reveal { from { opacity: 0; translate: 0 36px; } to { opacity: 1; translate: 0 0; } }
	.ms-zoom img { animation: ms-zoom linear both; animation-timeline: view(); animation-range: entry 0% exit 100%; }
	@keyframes ms-zoom { from { scale: 1.1; } to { scale: 1; } }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } html { scroll-behavior: auto; } }

/* En-tête --------------------------------------------------------------------------- */
.ms-header { background: var(--ms-noir); color: var(--ms-beige); border-bottom: 1px solid rgba(243, 238, 230, .14); position: relative; z-index: 50; }
.ms-header__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 32px; padding-block: 18px; }
.ms-header__logo { display: block; line-height: 0; }
.ms-header__logo img { height: 60px; width: auto; display: block; filter: invert(1); }
.ms-header .wp-block-navigation { gap: 4px 26px; font-size: 14px; letter-spacing: .04em; }
.ms-header .wp-block-navigation a { text-decoration: none; padding: 10px 0; display: inline-block; }
.ms-header .wp-block-navigation .current-menu-item > a, .ms-header .wp-block-navigation [aria-current="page"] { text-decoration: underline; text-underline-offset: 8px; }
.ms-header__actions { display: flex; align-items: center; gap: 18px; }
.ms-header .wc-block-mini-cart__button { border: 0; border-radius: 0; padding: 8px; background: none; color: inherit; font-size: 14px; }
.ms-header .wc-block-mini-cart__badge { background: var(--ms-beige) !important; color: var(--ms-noir) !important; border: 0; font-weight: 600; }
.ms-is-home.ms-hero-light:not(.ms-header-solid) .ms-header .wc-block-mini-cart__badge { background: var(--ms-noir) !important; color: var(--ms-beige) !important; }
.ms-header .wp-block-navigation__responsive-container.is-menu-open { background: var(--ms-noir); color: var(--ms-beige); padding: 24px var(--ms-gutter); }
.ms-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { font-family: var(--ms-serif); font-size: 30px; gap: 8px; }
/* Accueil : l'en-tête se superpose à la vidéo */
/* En-tête fixe en haut de l'écran, sur toutes les pages */
.wp-block-template-part:has(> .ms-header) { position: sticky; top: var(--wp-admin--admin-bar--height, 0px); z-index: 100; }
@media (max-width: 600px) { .admin-bar .wp-block-template-part:has(> .ms-header) { top: 0; } }
html { scroll-padding-top: calc(var(--ms-header-h) + 16px); }
/* Accueil : l'en-tête reste fixe et se superpose à la vidéo, puis devient noir une fois la vidéo passée */
.ms-is-home .wp-block-template-part:has(> .ms-header) { position: fixed; left: 0; right: 0; }
.ms-is-home .ms-header { background: transparent; border-bottom-color: transparent; transition: background-color .4s, border-color .4s, color .4s; }
.ms-is-home .ms-header__logo { transition: opacity .4s; }

/* Pied de page ----------------------------------------------------------------------- */
.ms-footer { background: var(--ms-noir); color: #cfc6c1; font-size: 15px; padding: 72px 0 28px; border-top: 1px solid rgba(207, 198, 193, .18); overflow: hidden; }
.ms-footer a { color: #cfc6c1; }
.ms-footer__title { font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: #8f8580; margin-bottom: 4px; }
.ms-footer__col { display: flex; flex-direction: column; gap: 6px; }
.ms-footer__logo { height: 72px; width: auto; filter: invert(1); align-self: flex-start; }
.ms-footer__muted { color: var(--ms-gris); }
.ms-footer__wordmark { margin: 64px 0 0; font-family: var(--ms-serif); font-weight: 400; font-size: clamp(44px, 10vw, 148px); line-height: 1.05; letter-spacing: -.01em; color: rgba(243, 238, 230, .08); white-space: nowrap; text-align: center; user-select: none; }
.ms-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; margin-top: 28px; padding-top: 20px; border-top: 1px solid rgba(207, 198, 193, .2); font-size: 13px; color: #8f8580; }
.ms-footer__bottom a { color: #8f8580; }


/* Contenu éditorial (articles, pages légales) ----------------------------------------------- */
.ms-prose { font-size: 17px; line-height: 1.75; color: var(--ms-encre); }
.ms-prose > * + * { margin-top: 1em; }
.ms-prose h2 { margin: 48px 0 12px; font-size: 34px; font-weight: 400; line-height: 1.15; }
.ms-prose h3 { margin: 32px 0 8px; font-size: 26px; }
.ms-prose ul, .ms-prose ol { padding-left: 22px; }
.ms-prose a { color: var(--ms-noir); }

/* Formulaires (Contact, Sur-mesure) ----------------------------------------------------- */
.ms-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 18px 20px; }
.ms-form .is-full { grid-column: 1 / -1; }
.ms-form label { display: block; font-size: 14px; font-weight: 500; margin-bottom: 6px; }
.ms-form :where(input[type=text], input[type=email], input[type=tel], input[type=date], select, textarea),
.ms-input { font: inherit; width: 100%; box-sizing: border-box; min-height: 50px; padding: 0 14px; border: 1px solid var(--ms-sable); background: #fff; color: var(--ms-noir); border-radius: 0; }
.ms-form textarea { padding: 12px 14px; min-height: 140px; resize: vertical; }
.ms-form .ms-consent { display: flex; gap: 12px; align-items: flex-start; font-size: 14px; font-weight: 400; }
.ms-form .ms-consent input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--ms-noir); flex: none; }
.ms-form button[type=submit] { justify-self: start; min-height: 56px; padding: 0 32px; border: 0; border-radius: 999px; background: var(--ms-noir); color: var(--ms-beige); font: inherit; font-size: 16px; cursor: pointer; }
.ms-form .ms-form__notice { grid-column: 1 / -1; padding: 18px 20px; background: var(--ms-beige); }
.ms-form .ms-form__notice.is-error { background: #f6e3e1; }
.ms-hp { position: absolute !important; left: -9999px !important; }

/* Carte (Google Maps sous consentement) ------------------------------------------------ */
.ms-map { position: relative; aspect-ratio: 16 / 10; background: var(--ms-filet); display: flex; align-items: center; justify-content: center; text-align: center; padding: 24px; }
.ms-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* Vidéos au défilement ------------------------------------------------------------------- */
.ms-scrub { position: relative; height: calc(min(100vh, 1080px) + 1600px); background: var(--ms-noir); }
.ms-scrub--section { height: calc(min(100vh, 1080px) + 1400px); color: var(--ms-noir); }
.ms-scrub__stage { position: sticky; top: 0; height: min(100vh, 1080px); overflow: hidden; }
.ms-scrub__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; background: inherit; }
.ms-scrub--section .ms-scrub__video { object-position: 100% 50%; }
.ms-scrub__shade { position: absolute; inset: 0; pointer-events: none; background: rgba(10, 10, 9, .32); }
.ms-scrub__shade::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10, 10, 9, .5) 0%, rgba(10, 10, 9, 0) 24%, rgba(10, 10, 9, 0) 66%, rgba(10, 10, 9, .5) 100%); }
.ms-scrub__grain { position: absolute; inset: 0; background-size: 128px 128px; opacity: .07; mix-blend-mode: overlay; pointer-events: none; }
.ms-scrub__veil { position: absolute; inset: 0; background: var(--ms-beige); pointer-events: none; opacity: 0; }
.ms-scrub__black { position: absolute; inset: 0; background: #000; pointer-events: none; z-index: 2; }
.ms-scrub__biglogo { position: absolute; left: 50%; top: 50%; width: min(640px, 72vw); height: auto; z-index: 2; pointer-events: none; filter: invert(1); opacity: .14; transform: translate(-50%, -54%); }
.ms-scrub__cue { position: absolute; z-index: 3; left: 50%; bottom: 60px; transform: translateX(-50%); color: #fff; pointer-events: none; display: flex; flex-direction: column; align-items: center; gap: 14px; font-size: 12px; letter-spacing: .24em; text-transform: uppercase; }
.ms-scrub__cue > * { animation: ms-fadein 1.2s ease 1.1s both; }
.ms-scrub__cue.is-dark { color: var(--ms-noir); }
.ms-cue-line { position: relative; display: block; width: 1px; height: 64px; overflow: hidden; background: rgba(255, 255, 255, .22); }
.ms-scrub__cue.is-dark .ms-cue-line { background: rgba(18, 17, 16, .18); }
.ms-cue-line::after { content: ""; position: absolute; left: 0; top: -45%; width: 1px; height: 45%; background: currentColor; animation: ms-cue 2s cubic-bezier(.65, 0, .35, 1) infinite; }
@keyframes ms-cue { 0% { top: -45%; } 100% { top: 100%; } }
@keyframes ms-fadein { from { opacity: 0; } to { opacity: 1; } }
.ms-scrub__line { position: absolute; z-index: 3; left: 0; right: 0; margin: 0; padding: 0 24px; text-align: center; color: #fff; font-family: var(--ms-serif); font-weight: 300; font-size: clamp(44px, 6vw, 96px); line-height: 1; text-shadow: 0 2px 30px rgba(0, 0, 0, .35); pointer-events: none; opacity: 0; }
.wp-site-blocks .ms-scrub__line { color: #fff; }
.ms-scrub__line--1 { top: 40%; }
.ms-scrub__line--2 { top: 52%; }
.ms-scrub__final { position: absolute; z-index: 3; left: 50%; top: 50%; width: min(1100px, calc(100% - 32px)); transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; gap: 22px; text-align: center; color: var(--ms-noir); opacity: 0; visibility: hidden; }
.ms-scrub__final .ms-eyebrow { color: var(--ms-ardoise); }
.ms-scrub__title { font-family: var(--ms-serif); font-weight: 300; font-size: clamp(44px, 5.6vw, 88px); line-height: 1; text-wrap: balance; color: var(--ms-noir); }
.ms-scrub__intro { max-width: 680px; font-size: 18px; line-height: 1.6; color: var(--ms-encre); }
.ms-scrub__final .wp-block-buttons { justify-content: center; }
.ms-scrub__rating { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: var(--ms-encre); }
.ms-scrub__rating strong { font-weight: 600; }
.ms-scrub__cardwrap { position: relative; height: 100%; display: flex; align-items: center; }
.ms-scrub__card { width: min(620px, 100%); display: flex; flex-direction: column; gap: 22px; background: #fff; padding: clamp(32px, 4vw, 56px); box-sizing: border-box; opacity: 0; visibility: hidden; }
.ms-scrub__card :where(p, li) { color: var(--ms-encre); }
/* Mouvement réduit ou connexion lente : image fixe, état final directement lisible. */
.ms-scrub.is-static { height: auto; }
.ms-scrub.is-static .ms-scrub__stage { position: relative; height: min(100vh, 1080px); }
.ms-scrub.is-static .ms-scrub__black, .ms-scrub.is-static .ms-scrub__biglogo, .ms-scrub.is-static .ms-scrub__cue, .ms-scrub.is-static .ms-scrub__line { display: none; }
.ms-scrub--hero.is-static .ms-scrub__veil { opacity: .86; }
.ms-scrub.is-static .ms-scrub__final, .ms-scrub.is-static .ms-scrub__card { opacity: 1; visibility: visible; }
.ms-scrub.is-static .ms-scrub__video { background-size: cover; }
/* En-tête de l'accueil : clair sur la vidéo, foncé sur le voile beige */
.ms-is-home .ms-header { color: #fff; transition: color .4s; }
.ms-is-home .ms-header__logo img { filter: invert(1); transition: filter .4s, opacity .4s; }
.ms-is-home.ms-hero-light .ms-header { color: var(--ms-noir); }
.ms-is-home.ms-hero-light .ms-header__logo img { filter: none; }
.ms-is-home.ms-header-solid .ms-header { background: var(--ms-noir); color: var(--ms-beige); border-bottom-color: rgba(243, 238, 230, .14); }
.ms-is-home.ms-header-solid .ms-header__logo img { filter: invert(1); }

/* Grille produits et onglets ----------------------------------------------------------- */
.ms-tabs { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 48px; }
.ms-tab { min-height: 44px; padding: 0 20px; border-radius: 999px; font: inherit; font-size: 14px; cursor: pointer; background: transparent; color: inherit; border: 1px solid currentColor; opacity: .75; }
.ms-tab[aria-pressed="true"] { background: var(--ms-noir); color: var(--ms-beige); border-color: var(--ms-noir); opacity: 1; }
.has-noir-background-color .ms-tab[aria-pressed="true"] { background: var(--ms-beige); color: var(--ms-noir); border-color: var(--ms-beige); }
.ms-products__grid { list-style: none; margin: 0; padding: 0; row-gap: 56px; }
.ms-card__media { position: relative; display: block; overflow: hidden; }
.ms-badge { position: absolute; left: 14px; top: 14px; padding: 6px 12px; background: var(--ms-beige); color: var(--ms-noir); font-size: 11px; letter-spacing: .16em; text-transform: uppercase; border-radius: 999px; }
.ms-card__cat { font-size: 12px; letter-spacing: .16em; text-transform: uppercase; color: var(--ms-taupe); }
.has-noir-background-color .ms-card__cat { color: var(--ms-gris); }
.ms-card__title { font-family: var(--ms-serif); font-weight: 400; font-size: 28px; line-height: 1.1; }
.ms-card__title a { text-decoration: none; }

/* Accueil : éléments propres ---------------------------------------------------------------- */
.ms-small, p.ms-small { font-size: 15px; color: var(--ms-ardoise); }
.has-noir-background-color .ms-small { color: var(--ms-pierre); }
.ms-section-head { margin-bottom: 48px; }
.ms-h2.is-large { font-size: clamp(44px, 5.4vw, 84px); line-height: .98; }
.ms-split .ms-h2 { font-size: clamp(40px, 4.4vw, 66px); }
.ms-mt-64 { margin-top: 64px; }
.ms-engagements { overflow: hidden; }
.ms-engagements__list { border-top: 1px solid rgba(18, 17, 16, .18); padding: 40px 0 72px; }
.ms-engagements .ms-stat__value { font-family: var(--ms-serif); font-size: 30px; line-height: 1.1; }
.ms-lead-serif, p.ms-lead-serif { font-family: var(--ms-serif); font-style: italic; font-size: 26px; line-height: 1.3; }
.has-noir-background-color .ms-lead-serif { color: var(--ms-beige); }
.ms-occasions { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); border-top: 1px solid var(--ms-noir); border-left: 1px solid var(--ms-filet); counter-reset: occ; }
.ms-occasion { counter-increment: occ; }
.ms-occasion a { display: flex; flex-direction: column; justify-content: flex-end; gap: 6px; min-height: 150px; padding: 26px 56px 24px 26px; border-right: 1px solid var(--ms-filet); border-bottom: 1px solid var(--ms-filet); text-decoration: none; box-sizing: border-box; font-family: var(--ms-serif); font-size: 34px; line-height: 1.05; position: relative; color: var(--ms-noir); }
.ms-occasion a::before { content: counter(occ, decimal-leading-zero); font-family: var(--ms-sans); font-size: 12px; letter-spacing: .16em; color: var(--ms-taupe); }
.ms-occasion a::after { content: "→"; position: absolute; right: 26px; bottom: 28px; font-family: var(--ms-sans); font-size: 20px; }
.ms-occasion a:hover { background: var(--ms-beige); opacity: 1; }
.ms-list.is-plain { border-top: 1px solid rgba(18, 17, 16, .25); }
.ms-list.is-plain > li { border-bottom: 1px solid rgba(18, 17, 16, .25); padding: 14px 0; }
.has-noir-background-color .ms-list.is-plain { border-top-color: rgba(237, 230, 225, .22); }
.has-noir-background-color .ms-list.is-plain > li { border-bottom-color: rgba(237, 230, 225, .22); color: var(--ms-beige); }
.ms-list.is-2-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; }
.ms-list.is-prices > li { display: flex; justify-content: space-between; gap: 12px; }
.ms-list.is-dated > li { position: relative; padding-left: 122px !important; }
.ms-list.is-dated > li > span:first-child { position: absolute; left: 0; top: 17px; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--ms-taupe); }
.ms-list strong { font-weight: 600; }
.ms-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.ms-step { display: flex; flex-direction: column; gap: 6px; padding-top: 14px; border-top: 1px solid var(--ms-noir); }
.ms-step strong { font-weight: 600; font-size: 15px; }
.ms-step .ms-small { font-size: 14px; }
@media (max-width: 600px) { .ms-steps { grid-template-columns: 1fr; } }
.ms-stat__label { font-size: 14px; }
.has-noir-background-color .ms-stat__label { color: var(--ms-pierre); }
.ms-rule-top.ms-cols { gap: 16px; }
.ms-rule-top .ms-stat { border: 0; padding: 0; }
.ms-rule-top .ms-stat__value { font-size: 40px; line-height: 1; }
.ms-review { background: #fff; padding: 36px 32px; display: flex; }
.ms-review .ms-quote { justify-content: space-between; gap: 28px; margin: 0; padding: 0; border: 0; }
.ms-review .ms-quote p { font-size: 25px; color: var(--ms-noir); }
.ms-review cite { font-weight: 600; color: var(--ms-noir); font-size: 14px; }
.ms-rating-big { display: flex; justify-content: flex-end; align-items: baseline; gap: 14px; font-size: 15px; color: var(--ms-ardoise); }
.ms-big-number { font-family: var(--ms-serif); font-size: 64px; line-height: 1; color: var(--ms-noir); }
.ms-zones { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ms-noir); display: grid; grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr)); column-gap: 32px; }
.ms-zones > li { display: flex; align-items: baseline; gap: 8px; padding: 16px 0; border-bottom: 1px solid var(--ms-filet); }
.ms-zones strong { font-weight: 600; }
.ms-zones .ms-cp { font-size: 14px; color: var(--ms-taupe); }
.ms-zones .ms-delay { margin-left: auto; font-size: 15px; }
.ms-pad-left { padding-left: clamp(0px, 3vw, 48px); }
.ms-align-right { text-align: right; }
@media (max-width: 1024px) { .ms-align-right, .ms-rating-big { text-align: left; justify-content: flex-start; } }
.ms-latest-post .wp-block-post-template { list-style: none; margin: 0; padding: 0; }
.ms-post-teaser { background: #fff; }
.ms-post-teaser .wp-block-post-featured-image { margin: 0; }
.ms-post-teaser .wp-block-post-featured-image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ms-post-teaser > .ms-c5 { padding: 32px clamp(24px, 3vw, 48px) 32px 0; }
.ms-post-teaser > .ms-c5:first-child { padding-left: clamp(24px, 3vw, 48px); }
@media (max-width: 1024px) { .ms-post-teaser > .ms-c5 { padding: 0 24px 32px; } }
.ms-h3.is-large { font-size: clamp(30px, 2.8vw, 42px); line-height: 1.08; }
.ms-h3 a { text-decoration: none; }
.wp-block-read-more { font-size: 15px; text-decoration: underline; text-underline-offset: 6px; }
.ms-cta { padding-bottom: 100px; }
.wp-block-buttons.is-content-justification-right { justify-content: flex-end; }
.wp-block-buttons.is-content-justification-center { justify-content: center; }
@media (max-width: 1024px) { .wp-block-buttons.is-content-justification-right { justify-content: flex-start; } }
.wp-block-post-terms a { text-decoration: none; }

/* Pages intérieures ------------------------------------------------------------------------- */
.ms-muted, p.ms-muted { color: var(--ms-ardoise); }
.has-noir-background-color .ms-muted { color: var(--ms-sable); }
.ms-mt-24 { margin-top: 24px !important; }
.ms-mt-48 { margin-top: 48px !important; }
.ms-page-head { padding-block: 56px 88px; }
.ms-page-head .ms-breadcrumb { margin-bottom: 0; }
.ms-hero .ms-breadcrumb { margin-bottom: 8px; }
.ms-rule-items > * { padding-top: 18px; border-top: 1px solid currentColor; }
.has-noir-background-color .ms-rule-items > * { border-top-color: rgba(243, 238, 230, .3); }
.ms-callout { margin-top: 64px; padding: 40px clamp(24px, 4vw, 56px); }
.ms-gallery { row-gap: 24px; }
.ms-gallery .wp-block-image { margin: 0; overflow: hidden; }
.ms-gallery img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ms-gallery .is-landscape img { aspect-ratio: 4 / 3; }
.ms-gallery .is-portrait img { aspect-ratio: 4 / 5; }
.ms-steps-big { gap: 40px 24px; }
.ms-step-num { font-family: var(--ms-serif); font-size: 44px; line-height: 1; }
.ms-step-title { font-family: var(--ms-sans); font-size: 18px; font-weight: 600; line-height: 1.3; letter-spacing: 0; }
.ms-list.is-roman { list-style: none; counter-reset: rom; }
.ms-list.is-roman > li { counter-increment: rom; display: grid; grid-template-columns: 48px minmax(0, 1fr); }
.ms-list.is-roman > li::before { content: counter(rom, lower-roman) "."; font-family: var(--ms-serif); font-size: 22px; }
.ms-address { line-height: 1.8; }
.ms-form-card { background: #fff; padding: clamp(24px, 4vw, 48px); box-sizing: border-box; }
.ms-field label .ms-muted { font-weight: 400; color: var(--ms-taupe); }
.ms-card__excerpt { font-size: 15px; color: var(--ms-ardoise); }
.ms-card__excerpt p { margin: 0; }
.ms-card__model { font-size: 13px; color: var(--ms-taupe); }
.ms-zone strong { font-weight: 600; }
.ms-zone-list > li { grid-template-columns: 120px minmax(0, 1fr); }
.ms-zone-list > li span { font-size: 15px; color: var(--ms-ardoise); }
.ms-communes { border-bottom: 1px solid var(--ms-noir); }
.ms-communes summary { padding: 14px 0; }
.ms-columns-list > li span { color: var(--ms-taupe); float: right; }
.ms-hours { gap: 24px; }
.ms-contact-aside { gap: 32px; }

/* Programme des cours ----------------------------------------------------------------------- */
.ms-programme { border-top: 1px solid rgba(243, 238, 230, .3); }
.ms-prog-row { display: grid; grid-template-columns: 180px minmax(0, 1fr) minmax(0, 1.2fr); gap: 24px; align-items: baseline; padding: 22px 0; border-bottom: 1px solid rgba(243, 238, 230, .18); }
.ms-prog-month { font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--ms-pierre) !important; }
.ms-prog-theme { font-family: var(--ms-serif); font-weight: 400; font-size: clamp(24px, 2.2vw, 30px); color: var(--ms-beige); }
.ms-prog-dates { font-size: 15px; }
.ms-prog-row.is-past { opacity: .4; }
.ms-prog-row.is-next .ms-prog-month::after { content: "Prochain cours"; display: inline-block; margin-left: 10px; padding: 3px 10px; border-radius: 999px; background: var(--ms-beige); color: var(--ms-noir); font-size: 10px; letter-spacing: .14em; }
.ms-prog-row.is-past .ms-prog-month::after { content: "Terminé"; display: inline-block; margin-left: 10px; font-size: 10px; letter-spacing: .14em; }
@media (max-width: 820px) { .ms-prog-row { grid-template-columns: 1fr; gap: 6px; } }
.ms-prog-bar { margin-top: 40px; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 16px; padding: 18px 24px; background: var(--ms-beige); color: var(--ms-noir); }
.ms-prog-bar p { color: var(--ms-encre) !important; }
.ms-prog-bar .wp-block-button__link { background: var(--ms-noir) !important; color: var(--ms-beige) !important; }

/* Carte sous consentement --------------------------------------------------------------------- */
.ms-map p { font-size: 14px; color: var(--ms-ardoise); }
.ms-map__btn { margin-top: 12px; min-height: 44px; padding: 0 20px; border: 1px solid var(--ms-noir); border-radius: 999px; background: transparent; font: inherit; cursor: pointer; }

/* Neutralise le rembourrage automatique des groupes colorés (WordPress) : la grille gère les marges. */
.wp-block-group.has-background { padding: 0; }
.wp-block-group.ms-section { padding-block: var(--ms-section-y); }
.wp-block-group.ms-section.is-compact { padding-block: clamp(48px, 6vw, 88px); }
.wp-block-group.ms-page-head { padding-block: 56px 88px; }
.wp-block-group.ms-callout { padding: 40px clamp(24px, 4vw, 56px); }
.wp-block-group.ms-section.ms-cta { padding-bottom: 100px; }

/* Gabarits : page générique, article, carnet, 404 ---------------------------------------------- */
.ms-center { align-items: center; text-align: center; }
.ms-404 { min-height: 60vh; display: flex; align-items: center; }
.ms-404__links { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 22px; margin-top: 24px; font-size: 14px; color: var(--ms-sable); }
.ms-legal .ms-toc { position: sticky; top: calc(var(--ms-header-h) + 24px); display: flex; flex-direction: column; }
.ms-legal .ms-toc a { padding: 8px 0; border-bottom: 1px solid var(--ms-filet); text-decoration: none; font-size: 14px; color: var(--ms-ardoise); }
.ms-legal .ms-prose { grid-column: 5 / span 8; }
.ms-legal .ms-toc[hidden] + .ms-prose { grid-column: 1 / span 9; }
@media (max-width: 1024px) { .ms-legal .ms-toc { position: static; grid-column: span 12; } .ms-legal .ms-prose { grid-column: span 12 !important; } }
.ms-prose h2 { scroll-margin-top: 24px; }
.ms-article, .wp-block-group.ms-article { padding: clamp(48px, 5vw, 80px) 0 clamp(96px, 10vw, 152px); }
.ms-article__col { max-width: 880px; margin: clamp(40px, 4vw, 64px) auto 0; }
.ms-article__head { display: flex; flex-direction: column; align-items: center; gap: 14px; text-align: center; margin-bottom: 40px; }
.ms-article__title { font-family: var(--ms-serif); font-weight: 400; font-size: clamp(36px, 3.6vw, 52px); line-height: 1.15; }
.ms-article__image { margin: 0 0 40px; }
.ms-article__image img { width: 100%; height: auto; display: block; }
.ms-article .ms-prose blockquote { margin: 40px 0; padding: 4px 0 4px 24px; border-left: 3px solid var(--ms-noir); font-family: var(--ms-serif); font-style: italic; font-size: 26px; line-height: 1.35; }
.ms-cat-tabs { list-style: none; display: flex; flex-wrap: wrap; gap: 10px; margin: 48px 0 0; padding: 0; }
.ms-cat-tabs li a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 20px; border: 1px solid rgba(18, 17, 16, .3); border-radius: 999px; text-decoration: none; font-size: 14px; }
.ms-cat-tabs li.current-cat a { background: var(--ms-noir); color: var(--ms-beige); border-color: var(--ms-noir); }
.ms-post-list .wp-block-post-template { display: flex; flex-direction: column; gap: 32px; }
.ms-post-list .ms-post-teaser { background: var(--ms-beige); }
.wp-block-post-excerpt__more-link { font-size: 15px; text-decoration: underline; text-underline-offset: 6px; }
.ms-form :where(input[type=number]) { font: inherit; width: 100%; box-sizing: border-box; min-height: 50px; padding: 0 14px; border: 1px solid var(--ms-sable); background: #fff; color: var(--ms-noir); border-radius: 0; }
.ms-toc[hidden] { display: none !important; }

/* Le hero est visible dès l'arrivée : pas d'animation d'apparition (meilleur affichage initial). */
.ms-hero .ms-reveal { animation: none !important; opacity: 1 !important; translate: none !important; }
/* Signature du pied de page : décorative, en contenu généré (ignorée par les lecteurs d'écran). */
.ms-footer__wordmark [data-w]::before { content: attr(data-w); }


/* Mini-panier (tiroir), présent sur toutes les pages ------------------------------------------------------------------------- */
.wc-block-mini-cart__drawer .wc-block-components-drawer__close { top: 14px; right: 14px; width: 44px; height: 44px; min-height: 0; padding: 0; display: flex; align-items: center; justify-content: center; border: 0; border-radius: 0; background: transparent; color: var(--ms-noir); opacity: 1; }
.wc-block-mini-cart__drawer .wc-block-components-drawer__close svg { width: 22px; height: 22px; fill: currentColor; }
.wc-block-mini-cart__drawer .wc-block-mini-cart__title { padding-right: 56px; }
.wc-block-mini-cart__drawer .wc-block-mini-cart__footer .wc-block-mini-cart__footer-actions { display: flex; gap: 10px; }
.wc-block-mini-cart__drawer .wc-block-mini-cart__footer .wc-block-mini-cart__footer-actions .wc-block-components-button { flex: 1 1 0; height: auto; min-height: 48px; margin: 0; padding: 0 18px; display: inline-flex; align-items: center; justify-content: center; border-radius: 999px; font-size: 14px; line-height: 1.2; letter-spacing: .01em; white-space: nowrap; box-shadow: none; }
.wc-block-mini-cart__drawer .wc-block-mini-cart__footer .wc-block-mini-cart__footer-actions .wc-block-components-button.wc-block-mini-cart__footer-cart { background: transparent; color: var(--ms-noir); border: 1px solid var(--ms-noir); }
.wc-block-mini-cart__drawer .wc-block-mini-cart__footer .wc-block-mini-cart__footer-actions .wc-block-components-button.wc-block-mini-cart__footer-checkout { background: var(--ms-noir); color: var(--ms-beige); border: 1px solid var(--ms-noir); }
.wc-block-mini-cart__drawer .wc-block-mini-cart__footer .wc-block-components-button .wc-block-components-button__text { line-height: 1.2; }
.wc-block-mini-cart__drawer .wc-block-mini-cart__footer-subtotal { font-size: 15px; }
.wc-block-mini-cart__drawer .wc-block-mini-cart__footer .wc-block-components-totals-item__description { font-size: 13px; color: var(--ms-taupe); }

/* Transition douce entre les pages ------------------------------------------------------------ */
/* Chrome, Edge, Safari : fondu natif entre deux pages, l'en-tête reste en place. */
@view-transition { navigation: auto; }
.wp-block-template-part:has(> .ms-header) { view-transition-name: ms-header; }
::view-transition-old(root) { animation: ms-page-out .2s ease both; }
::view-transition-new(root) { animation: ms-page-in .42s cubic-bezier(.2, .7, .2, 1) both; }
::view-transition-group(ms-header) { animation-duration: .3s; }
@keyframes ms-page-out { to { opacity: 0; } }
@keyframes ms-page-in { from { opacity: 0; } }
/* Firefox : simple fondu d'arrivée du contenu (classe posée dans le <head>). */
.ms-fade .wp-site-blocks > main { animation: ms-page-in .42s ease both; }
@media (prefers-reduced-motion: reduce) {
	@view-transition { navigation: none; }
	.ms-fade .wp-site-blocks > main { animation: none; }
}
