/* Header and native modal drawer. No JavaScript is needed. The brand scrolls with the page
   (Figma: the logo belongs to the top of each page); Contact and the menu button stay fixed. */
.mm-header { position: absolute; inset: var(--maestra-gutter) var(--maestra-gutter) auto; z-index: 20; display: flex; align-items: center; justify-content: space-between; pointer-events: none; }
.mm-header > * { pointer-events: auto; }
.mm-header__brand { display: flex; align-items: center; min-height: 44px; }
.mm-header__brand img { display: block; width: 213px; height: 27px; object-fit: contain; }
.mm-header--inverse .mm-header__brand { color: var(--maestra-white); } /* White focus ring on the dark hero. */
.mm-header--inverse .mm-header__brand img { filter: brightness(0) invert(1); }
.mm-header--rose .mm-header__brand img { filter: none; } /* Figma 404: pink logo on the brown hero. */
/* Sous un hero photo encadré (photo-hero) : le logo entre dans le cadre de 24 px, comme Figma (48 / 40 px). */
.mm-header--framed { inset: calc(var(--maestra-gutter) + var(--maestra-space-2xs)) calc(2 * var(--maestra-gutter)) auto; }
.mm-header__actions { position: fixed; top: var(--maestra-gutter); right: var(--maestra-gutter); z-index: 20; display: flex; align-items: center; gap: var(--maestra-space-2xs); height: 44px; padding-left: var(--maestra-space-xs); background: var(--maestra-paper); box-shadow: 0 1px 5px color-mix(in srgb, var(--maestra-ink) 15%, transparent); } /* Petite ombre : le bloc flottant ne se fond pas dans le fond crème (Miguel, 29 septembre 2026). */
.mm-header__contact { display: flex; align-items: center; gap: 4px; min-height: 44px; text-decoration: none; font: italic 400 var(--maestra-ui-size)/1.5 var(--maestra-serif); }
.mm-header__contact .mm-icon { transition: transform var(--maestra-hover-motion) var(--maestra-ease); }
.mm-header__contact:focus-visible .mm-icon { transform: translate(2px, -2px); }
.mm-icon-button { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; background: transparent; }
.mm-icon-button img { width: 24px; height: 24px; transition: opacity var(--maestra-hover-fade) ease; }
.mm-icon-button:focus-visible img { opacity: .65; }
.mm-menu { position: fixed; inset: 0; justify-content: flex-end; width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 0; border: 0; background: transparent; color: var(--maestra-ink); overflow: hidden; transition: display 640ms allow-discrete, overlay 640ms allow-discrete; }
.mm-menu[open] { display: flex; }
.mm-menu::backdrop { background: var(--maestra-backdrop); opacity: 0; transition: opacity 440ms ease, display 640ms allow-discrete, overlay 640ms allow-discrete; }
.mm-menu[open]::backdrop { opacity: 1; }
.mm-menu__veil { position: absolute; inset: 0; margin: 0; }
.mm-menu__veil button { width: 100%; height: 100%; border: 0; background: transparent; }
.mm-menu__drawer { position: relative; display: flex; flex-direction: column; width: 388px; max-width: 100%; height: 100%; min-height: 0; background: var(--maestra-paper); transform: translateX(100%); transition: transform 380ms var(--maestra-ease); }
.mm-menu[open] .mm-menu__drawer { transform: translateX(0); transition-duration: 640ms; }
.mm-menu__header { display: flex; align-items: center; justify-content: space-between; flex: none; height: calc(72px + env(safe-area-inset-top, 0px)); padding: env(safe-area-inset-top, 0px) 0 0 var(--maestra-space-xs); border-bottom: 1px solid var(--maestra-grey-light); }
.mm-menu__header form { margin: 0; }
.mm-menu__brand { display: flex; align-items: center; min-height: 44px; }
.mm-menu__brand img { display: block; width: 145px; height: 22px; object-fit: contain; }
.mm-menu__scroll { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: color-mix(in srgb, var(--maestra-brown) 30%, transparent) transparent; padding: var(--maestra-space-xs) var(--maestra-space-xs) var(--maestra-space-s); }
.mm-nav-list { margin: 0; padding: 0; list-style: none; }
.mm-nav-list--0 > .mm-nav-item { border-bottom: 1px solid var(--maestra-line); }
.mm-menu[open] .mm-nav-list--0 > .mm-nav-item { animation: mm-nav-enter 560ms var(--maestra-ease) both; animation-delay: calc(90ms + var(--item-index) * 38ms); }
.mm-nav-row { display: grid; grid-template-columns: 18px minmax(0, 1fr) 18px; align-items: center; gap: 32px; width: 100%; min-height: 59px; padding: .75rem 0 var(--maestra-space-xs); list-style: none; cursor: pointer; text-decoration: none; font: 500 var(--maestra-nav-size)/1.5 var(--maestra-serif); font-variant-caps: small-caps; font-synthesis: none; }
.mm-nav-row::-webkit-details-marker { display: none; }
.mm-nav-row, .mm-nav-link { transition: color var(--maestra-hover-fade) ease; }
.mm-nav-label { min-width: 0; overflow-wrap: break-word; transition: transform var(--maestra-hover-motion) var(--maestra-ease); }
.mm-nav-row:focus-visible .mm-nav-label { transform: translateX(3px); }
.mm-nav-row:focus-visible, .mm-nav-link:focus-visible { color: var(--maestra-brown); }
.mm-nav-mark { position: relative; width: 18px; height: 18px; }
.mm-nav-mark img { position: absolute; inset: 0; width: 18px; height: 18px; transition: opacity 350ms ease; }
.mm-nav-mark__active { opacity: 0; }
.mm-nav-branch[open] > summary .mm-nav-mark > img:first-child { opacity: 0; }
.mm-nav-branch[open] > summary .mm-nav-mark__active { opacity: 1; }
.mm-nav-toggle { width: 18px; height: 18px; transition: transform 500ms var(--maestra-ease), clip-path 350ms var(--maestra-ease); }
.mm-nav-branch[open] > summary .mm-nav-toggle { clip-path: inset(46% 0 46%); transform: rotate(180deg); }
.mm-nav-children { min-height: 0; overflow: hidden; }
.mm-nav-children > div { padding: 0 0 var(--maestra-space-xs) 64px; }
.mm-nav-list--1 .mm-nav-children > div { padding-left: 0; }
.mm-nav-list--1 .mm-nav-row { gap: var(--maestra-space-s); margin-left: -48px; width: calc(100% + 48px); min-height: 54px; }
.mm-nav-link { display: flex; align-items: center; justify-content: space-between; gap: var(--maestra-space-2xs); min-height: 36px; padding: 6px 0; text-decoration: none; font: italic 400 var(--maestra-ui-size)/1.5 var(--maestra-serif); }
.mm-nav-arrow { width: 16px; height: 16px; opacity: 0; transform: translate(-2px, 2px); transition: opacity var(--maestra-hover-fade) ease, transform var(--maestra-hover-motion) var(--maestra-ease); }
.mm-nav-link:focus-visible .mm-nav-arrow, .mm-nav-item--featured .mm-nav-arrow { opacity: 1; transform: translate(0); }
.mm-nav-overview { margin-bottom: 6px; border-bottom: 1px solid var(--maestra-line); font-weight: 500; }
.mm-nav-item--featured { margin-top: 6px; background: var(--maestra-camel-light); }
.mm-nav-item--featured a { padding-inline: var(--maestra-space-2xs); }
.mm-nav-list [aria-current="page"] { color: var(--maestra-brown); text-decoration: underline; }
.mm-nav-branch.contains-current > summary { color: var(--maestra-brown); }
.mm-menu__scroll :focus-visible { outline-offset: -2px; }
.mm-language { display: flex; align-items: center; margin-top: 6px; font: 500 var(--maestra-nav-size)/1.5 var(--maestra-serif); }
.mm-language a { display: grid; place-items: center; width: 44px; min-height: 44px; color: var(--maestra-grey); text-decoration: none; transition: color var(--maestra-hover-fade) ease; }
.mm-language a:first-child { position: relative; }
.mm-language a:first-child::after { position: absolute; right: -.5px; top: 10px; height: 24px; width: 1px; background: color-mix(in srgb, var(--maestra-ink) 15%, transparent); content: ""; }
.mm-language [aria-current] { color: var(--maestra-ink); }
.mm-menu__footer { flex: none; padding: var(--maestra-space-xs) 13px max(var(--maestra-space-xs), env(safe-area-inset-bottom, 0px)); background: var(--maestra-paper); }
/* Lien administrateur vers /design-system/ : jamais rendu pour le public. */

/* Bouton plein — template-parts/components/button.php, Figma « bouton 1 ». */
.mm-button { display: flex; align-items: center; justify-content: center; min-height: 48px; width: fit-content; padding: .75rem var(--maestra-space-s); border: 0; background: var(--maestra-ink); color: var(--maestra-white); text-decoration: none; font: 500 var(--maestra-ui-size)/1.5 var(--maestra-sans); font-synthesis: none; letter-spacing: .03em; text-transform: uppercase; transition: background-color var(--maestra-hover-fade) ease, color var(--maestra-hover-fade) ease; }
.mm-button--full { width: 100%; }
.mm-button--rose:focus-visible { background: var(--maestra-pink); color: var(--maestra-ink); }

/* Lien texte fléché — template-parts/components/text-link.php, Figma « Bouton link ». */
.mm-text-link { position: relative; display: inline-flex; align-items: center; gap: .3em; width: fit-content; max-width: 100%; min-height: 44px; padding-block: .5em; text-decoration: none; font: italic 400 var(--maestra-text-base)/1.5 var(--maestra-serif); }
.mm-text-link > span:first-child { position: relative; }
.mm-text-link > span:first-child::after { content: ''; position: absolute; left: 0; right: 0; bottom: -.2em; height: .5px; background: currentColor; transform: scaleX(0); transform-origin: left center; transition: transform 650ms var(--maestra-ease); }
.mm-text-link .mm-icon { transition: transform 650ms var(--maestra-ease); }
.mm-text-link:focus-visible > span:first-child::after { transform: scaleX(1); }
.mm-text-link:focus-visible .mm-icon { transform: translate(3px, -3px); }

@supports selector(::details-content) {
	.mm-nav-branch::details-content { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 420ms var(--maestra-ease), content-visibility 420ms allow-discrete; }
	.mm-nav-branch[open]::details-content { grid-template-rows: 1fr; }
}
@starting-style {
	.mm-menu[open] .mm-menu__drawer { transform: translateX(100%); }
	.mm-menu[open]::backdrop { opacity: 0; }
}
@keyframes mm-nav-enter { from { opacity: 0; transform: translateX(12px); } to { opacity: 1; transform: translateX(0); } }

/* Shared footer — Figma 12208:59982. */
.mm-footer { position: relative; isolation: isolate; overflow: clip; display: flex; flex-direction: column; gap: var(--maestra-space-xl); padding: var(--maestra-gutter); background: var(--maestra-brown); color: var(--maestra-pink); }
.mm-footer::before { position: absolute; z-index: -1; inset: 0; background: url("../images/footer-grain-tile.webp") repeat; background-size: 256px 256px; opacity: .05; mix-blend-mode: screen; pointer-events: none; content: ""; }
.mm-footer__top { display: grid; grid-template-columns: 213px 394px 213px; justify-content: space-between; gap: 40px; padding-top: var(--maestra-space-s); border-top: 1px solid var(--maestra-rule-inverse); }
.mm-footer__heading { margin: 0 0 var(--maestra-space-s); font: 400 var(--maestra-ui-size)/1.5 var(--maestra-sans); letter-spacing: .03em; text-transform: uppercase; }
.mm-footer__sitemap ul { margin: 0; padding: 0; list-style: none; }
.mm-footer__sitemap a { display: flex; align-items: flex-start; min-height: 29px; text-decoration: none; font-size: var(--maestra-text-sm); line-height: 1.6; }
.mm-newsletter .mm-footer__heading { margin-bottom: 14px; }
.mm-newsletter__intro { margin: 0 0 var(--maestra-space-s); font: italic 400 var(--maestra-ui-size)/1.5 var(--maestra-serif); }
.mm-newsletter__fields { display: flex; min-width: 0; margin: 0; padding: 0; border: 0; border-bottom: 1px solid currentColor; }
.mm-newsletter__fields input { flex: 1; min-width: 0; width: 100%; min-height: 44px; padding: var(--maestra-space-2xs) 12px; border: 0; background: transparent; color: inherit; opacity: 1; -webkit-text-fill-color: currentColor; font: italic 400 var(--maestra-ui-size)/1.5 var(--maestra-serif); }
.mm-newsletter__fields input::placeholder { color: var(--maestra-pink-dark); opacity: 1; }
.mm-newsletter__fields button { display: flex; align-items: center; justify-content: center; gap: var(--maestra-space-2xs); flex: none; min-height: 44px; padding: var(--maestra-space-2xs) 20px; border: 0; background: transparent; color: inherit; opacity: 1; font: italic 400 var(--maestra-ui-size)/1.5 var(--maestra-serif); }
.mm-newsletter__message { margin: 12px 0 0; font-size: var(--maestra-text-xs); line-height: 1.5; }
.mm-newsletter__consent { max-width: 262px; margin: 12px 0 0; font-size: var(--maestra-text-xs); line-height: 1.5; }
.mm-newsletter__consent a { text-decoration: none; }
.mm-footer__contact address { padding-top: var(--maestra-space-2xs); font: 400 var(--maestra-text-xs)/1.5 var(--maestra-sans); }
.mm-footer__contact p { margin: 0 0 18px; }
.mm-footer__contact a { text-decoration: none; overflow-wrap: anywhere; }
.mm-footer__wordmark { display: block; width: 100%; }
/* Logotype en SVG, lettre par lettre (template-parts/footer-wordmark.php) : le masque coupe sous la ligne
   de base, d'où les lettres montent, et laisse de la marge au-dessus pour la vague du survol. */
.mm-footer__wordmark svg { display: block; width: 100%; height: auto; aspect-ratio: 1392 / 183; overflow: visible; clip-path: inset(-12% -1% 0); }
.mm-footer__wordmark svg > * { transform-box: view-box; }
@media (prefers-reduced-motion: no-preference) {
	.mm-footer__wordmark svg > * { transition: translate 1.4s var(--maestra-ease) calc(var(--i) * 45ms); }
	.mm-footer__wordmark:focus-visible svg > * { translate: 0 -5%; transition-duration: .8s; transition-delay: calc(var(--i) * 25ms); }
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.mm-footer__wordmark:hover svg > * { translate: 0 -5%; transition-duration: .8s; transition-delay: calc(var(--i) * 25ms); }
}
/* Entrée, une seule fois, sur toutes les pages (déclencheur CSS, comme contact-details) : les colonnes
   arrivent en cascade (110 ms par rang), puis les lettres du logotype montent de la ligne de base (45 ms par
   lettre, un rang sauté entre les deux mots). La montée anime transform, la vague translate : elles se
   cumulent sans se gêner. Sans prise en charge ou en mouvement réduit : pied de page immobile. */
@supports (timeline-trigger: --t view()) {
	@media (prefers-reduced-motion: no-preference) {
		:is(.mm-footer__top, .mm-footer__bottom) > * { timeline-trigger: --mm-footer-item view() entry 20% exit 100%; animation: mm-reveal 1.2s var(--maestra-ease) both; animation-trigger: --mm-footer-item play-once; }
		:is(.mm-footer__top, .mm-footer__bottom) > :nth-child(2) { animation-delay: .11s; }
		:is(.mm-footer__top, .mm-footer__bottom) > :nth-child(3) { animation-delay: .22s; }
		:is(.mm-footer__top, .mm-footer__bottom) > :nth-child(n + 4) { animation-delay: .33s; }
		.mm-footer__wordmark { timeline-trigger: --mm-footer-mark view() entry 50% exit 100%; }
		.mm-footer__wordmark svg > * { animation: mm-letter-rise 1.4s var(--maestra-ease) calc(var(--i) * 45ms) both; animation-trigger: --mm-footer-mark play-once; }
	}
}
@keyframes mm-letter-rise { from { transform: translateY(108%); } }
/* 48 px sous le logotype à toutes les largeurs, malgré l’écart fluide du pied de page. */
.mm-footer__bottom { display: flex; align-items: center; gap: var(--maestra-space-s); margin-top: calc(3rem - var(--maestra-space-xl)); padding-top: var(--maestra-space-s); border-top: 1px solid var(--maestra-rule-inverse); font-size: var(--maestra-text-xs); line-height: 1.5; }
.mm-footer__bottom p { margin: 0; }
.mm-footer__legal { display: flex; flex-wrap: wrap; align-items: center; gap: var(--maestra-space-s); }
.mm-text-button { margin: 0; padding: 0; border: 0; background: transparent; color: inherit; text-decoration: underline; text-underline-offset: .2em; font: inherit; }
.mm-footer__social { display: grid; place-items: center; width: 24px; height: 24px; margin-left: auto; }
/* Onglet flottant « Gérer le consentement » de Complianz masqué : la bannière se rouvre par « Paramètres cookies » du pied de page (D59). */
#cmplz-manage-consent { display: none; }
.mm-footer__sitemap a, .mm-footer__contact a, .mm-newsletter__consent a { text-decoration: underline; text-decoration-color: transparent; transition: text-decoration-color var(--maestra-hover-fade) ease; }
.mm-footer__sitemap a:focus-visible, .mm-footer__contact a:focus-visible, .mm-newsletter__consent a:focus-visible { text-decoration-color: currentColor; }
@media (hover: hover) {
	.mm-header__contact:hover .mm-icon { transform: translate(2px, -2px); }
	.mm-icon-button:hover img { opacity: .65; }
	.mm-nav-row:hover .mm-nav-label { transform: translateX(3px); }
	.mm-nav-row:hover, .mm-nav-link:hover { color: var(--maestra-brown); }
	.mm-nav-link:hover .mm-nav-arrow { opacity: 1; transform: translate(0); }
	.mm-button:hover { background: var(--maestra-brown); }
	.mm-button--rose:hover { background: var(--maestra-pink); color: var(--maestra-ink); }
	.mm-text-link:hover > span:first-child::after { transform: scaleX(1); }
	.mm-text-link:hover .mm-icon { transform: translate(3px, -3px); }
	.mm-language a:hover { color: var(--maestra-ink); }
	.mm-footer__sitemap a:hover, .mm-footer__contact a:hover, .mm-newsletter__consent a:hover { text-decoration-color: currentColor; }
}
@media (width <= 68.75rem) {
	.mm-footer__top { grid-template-columns: minmax(150px, 1fr) minmax(260px, 1.8fr); }
	.mm-footer__contact { grid-column: 2; }
	.mm-footer__sitemap { grid-row: span 2; }
	.mm-footer__bottom { flex-wrap: wrap; }
}
@media (width <= 47.5rem) {
	.mm-header__brand img { width: 135px; height: 22px; }
	.mm-header__actions { gap: 4px; padding-left: 12px; }
	.mm-menu__drawer { width: 100%; }
	.mm-footer__top { grid-template-columns: 1fr; gap: 40px; }
	.mm-footer__contact, .mm-footer__sitemap { grid-column: auto; grid-row: auto; }
	.mm-footer__sitemap a { min-height: 36px; }
	.mm-newsletter { max-width: 440px; }
	.mm-footer__contact address { max-width: 250px; }
	.mm-footer__bottom { gap: 20px; align-items: flex-start; }
	.mm-footer__bottom > p { flex-basis: 100%; }
	.mm-footer__legal { gap: var(--maestra-space-xs) var(--maestra-space-s); flex: 1; }
	.mm-footer__legal a, .mm-footer__legal button { display: flex; align-items: center; min-height: 32px; }
}
@media (width <= 22.5rem) {
	.mm-header__brand img { width: 108px; }
	.mm-header--framed { left: calc(var(--maestra-gutter) + var(--maestra-space-xs)); }
	.mm-nav-row { gap: var(--maestra-space-s); }
	.mm-nav-children > div { padding-left: 48px; }
	.mm-nav-list--1 .mm-nav-row { gap: var(--maestra-space-xs); margin-left: -32px; width: calc(100% + 32px); }
	.mm-newsletter__fields button { padding-inline: var(--maestra-space-2xs); }
}
/* Fond camel grainé des sections de page (le pied de page a le sien). */
.mm-camel { position: relative; isolation: isolate; color: var(--maestra-white); background: var(--maestra-brown); }
.mm-camel::before { position: absolute; z-index: -1; inset: 0; background: url("../images/footer-grain-tile.webp") repeat; background-size: 256px 256px; opacity: .05; mix-blend-mode: screen; pointer-events: none; content: ""; }
.mm-section { padding-block: var(--maestra-section); }
.mm-page:focus { outline: none; }

/* Hero de page — template-parts/components/page-hero.php, Figma pilier Hospitality 12202:5395. */
.mm-page-hero { display: flex; flex-direction: column; min-height: max(100svh, 45rem); padding: 5.3125rem var(--maestra-gutter) var(--maestra-gutter); }
.mm-page-hero__inner { flex: 1; display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto 1fr auto; column-gap: var(--maestra-space); padding-top: var(--maestra-space-s); border-top: 1px solid var(--maestra-rule-inverse); }
/* Figma centre la colonne de gauche : 24 px de retrait en haut et en bas par rapport à la photo. */
.mm-page-hero__heading { grid-area: 1 / 1; container-type: inline-size; max-width: 44rem; margin-top: var(--maestra-space-s); }
.mm-page-hero__tagline { max-width: 18em; font: italic 400 var(--maestra-text-base)/1.4 var(--maestra-serif); letter-spacing: -.01em; }
/* Aucun mot coupé : plafond = largeur / mot le plus long en em (« réussite », « derrière » ; « Because »). */
.mm-page-hero h1 { margin-top: var(--maestra-space-xs); font-size: min(var(--maestra-h1), 100cqi / 5.6); line-height: .9; color: var(--maestra-pink); text-wrap: initial; }
.language-en .mm-page-hero h1 { font-size: min(var(--maestra-h1), 100cqi / 5.6); }
.mm-page-hero__photo { grid-area: 1 / 2 / 3; width: 33.68vw; aspect-ratio: 485 / 635; }
.mm-page-hero__text { grid-area: 3 / 1; align-self: end; max-width: 21.9em; margin-bottom: var(--maestra-space-s); font: 500 var(--maestra-text-sm)/1.5 var(--maestra-sans); }
.mm-page-hero__next { grid-area: 3 / 2; align-self: end; justify-self: end; margin-right: -10px; }

/* Flèche vers la suite — prototype V6-Accueil (navigation/arrow-down.svg, trait fin, choix de Miguel
   du 25 septembre 2026) : blanche, sur photo ou fond camel ; descend de 6 px au survol. */
.mm-scroll-cue { display: flex; align-items: flex-end; justify-content: center; flex: none; width: 44px; height: 50px; margin-bottom: -3px; }
.mm-scroll-cue img { display: block; width: 15px; height: 43px; object-fit: contain; filter: brightness(0) invert(1); transition: transform 650ms var(--maestra-ease); }
.mm-scroll-cue:focus-visible img { transform: translateY(6px); }

/* Titre de section — template-parts/components/section-heading.php (grille imbriquée). */
.mm-section-heading { grid-column: 1 / -1; align-items: end; row-gap: var(--maestra-space-s); }
.mm-section-heading--top { align-items: start; }
.mm-section-heading h2 { grid-column: 1 / 7; max-width: 13.4em; line-height: .9; text-wrap: initial; }
.mm-section-heading__text { grid-column: 9 / 13; display: flex; flex-direction: column; align-items: flex-start; font-size: var(--maestra-text-sm); line-height: 1.6; }
.mm-section-heading--lead .mm-section-heading__text { font-size: var(--maestra-text-lg); }
.mm-section-heading--lead .mm-section-heading__text p { max-width: 20.7em; }
.mm-section-heading__text .mm-text-link { margin-top: var(--maestra-space-xs); }

/* Cartes d'univers — template-parts/components/cards.php, Figma 12202:5416. */
.mm-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; border-bottom: 1px solid var(--maestra-rule); }
.mm-card { display: flex; flex-direction: column; gap: var(--maestra-space-m); min-width: 0; padding-block: var(--maestra-space-s); border-top: 1px solid var(--maestra-rule); }
.mm-card:nth-child(odd) { padding-right: var(--maestra-space-s); }
.mm-card:nth-child(even) { --mm-delay: .09s; padding-left: var(--maestra-space-s); border-left: 1px solid var(--maestra-rule); }
/* Nombre impair (Création) : la dernière carte garde sa colonne, fermée par ses filets ; sa voisine du dessus prolonge le filet. */
.mm-cards:has(> .mm-card:last-child:nth-child(odd)) { border-bottom: 0; }
.mm-card:last-child:nth-child(odd) { margin-right: -1px; border-right: 1px solid var(--maestra-rule); border-bottom: 1px solid var(--maestra-rule); }
.mm-card:nth-last-child(2):nth-child(even) { box-shadow: 0 1px var(--maestra-rule); }
.mm-card__media { display: block; aspect-ratio: 4 / 3; }
.mm-card__media img { transition: transform 2s var(--maestra-ease); }
.mm-card__title { font: italic 400 var(--maestra-editorial)/1 var(--maestra-serif); }
.mm-card__detail { margin-top: var(--maestra-space-s); padding-left: var(--maestra-space-xl); }
.mm-card__detail p { max-width: 26em; font-size: var(--maestra-text-sm); line-height: 1.6; }
.mm-card__detail .mm-text-link { margin-top: var(--maestra-space-xs); }
/* Souris : les entrées inactives sont grises, l'active à l'encre (au toucher, toutes restent à l'encre). */

/* Hero de sélection — template-parts/components/selection-hero.php, Figma Nos créations hôtelières
   12202:4867. À 1440 px : fil d'Ariane à 160 px du haut, titre 96 px (colonnes 1 à 9), mention de 208 px sous
   filet, centrée sur le titre (colonnes 11 et 12) ; 80 px plus bas, photo 919 × 593 (colonnes 5 à 12), compteur
   et lien calés sur son bas (colonnes 1 à 4, 112 px entre eux) ; 80 px sous la photo, un lien par projet
   (deux colonnes chacun, calés à droite) et, à gauche, le résumé. Tailles : 24 px de Figma en --maestra-h6
   (21 px), compteur 22 px aussi ; libellé gris à 4,7:1 (Figma : 50 % d'encre, 4,2:1). */
.mm-selection-hero { container-type: inline-size; align-items: center; row-gap: 0; padding-block: calc(var(--maestra-section) + var(--maestra-space-l)) var(--maestra-section); }
.mm-selection-hero > .mm-breadcrumbs { grid-column: 1 / -1; grid-row: 1; }
.mm-selection-hero__title { grid-column: 1 / 10; grid-row: 2; margin-top: var(--maestra-space-s); font-size: min(var(--maestra-display), 100cqi / 9); line-height: .9; letter-spacing: .01em; text-wrap: initial; }
.mm-selection-hero__title:focus { outline: none; }
.mm-selection-hero__line { display: block; }
.mm-selection-hero__note { grid-column: 11 / -1; grid-row: 2; margin-top: var(--maestra-space-s); padding-top: var(--maestra-space-s); border-top: 1px solid var(--maestra-rule); font-size: var(--maestra-text-lg); line-height: 1.6; }
.mm-selection-hero__photo { grid-column: 5 / -1; grid-row: 3; aspect-ratio: 919 / 593; margin-top: var(--maestra-space-xl); }
.mm-selection-hero__aside { grid-column: 1 / 5; grid-row: 3; align-self: end; display: flex; flex-direction: column; align-items: flex-start; gap: calc(var(--maestra-section) - .75rem); }
.mm-selection-hero__count { display: flex; align-items: center; gap: var(--maestra-space-xs); font-size: var(--maestra-h6); line-height: 1.5; }
.mm-selection-hero__rule { width: 2.4375rem; height: 1px; background: currentColor; }
.mm-selection-hero__cue { display: inline-flex; align-items: flex-end; gap: var(--maestra-space-2xs); min-height: 44px; margin-bottom: -.625rem; padding-block: .625rem; text-decoration: none; font: italic 400 var(--maestra-h6)/1 var(--maestra-serif); letter-spacing: .01em; }
.mm-selection-hero__cue-line { display: block; }
.mm-selection-hero__cue .mm-icon { margin-bottom: .1em; transform: rotate(90deg); transition: transform 650ms var(--maestra-ease); }
.mm-selection-hero__cue:focus-visible .mm-icon { transform: translateY(4px) rotate(90deg); }
.mm-selection-hero__summary { grid-column: 1 / 5; grid-row: 4; align-self: end; }
.mm-selection-hero__eyebrow { display: block; color: var(--maestra-grey); letter-spacing: -.02em; }
.mm-selection-hero__tagline { display: block; margin-top: var(--maestra-space-2xs); font: italic 400 var(--maestra-h6)/1 var(--maestra-serif); letter-spacing: .01em; }
/* Le résumé finit 48 px sous les liens (Figma). */
.mm-selection-hero__index { grid-column: 5 / -1; grid-row: 4; align-self: start; margin-block: var(--maestra-space-xl) var(--maestra-space-l); }
.mm-selection-hero__index ol { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--maestra-space); margin: 0; padding: 0; list-style: none; }
.mm-selection-hero__index li { flex: 0 0 calc((100% - 3 * var(--maestra-space)) / 4); }
.mm-selection-hero__index a { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; column-gap: var(--maestra-space-2xs); padding-block: var(--maestra-space-s); border-top: 1px solid var(--maestra-rule); text-decoration: none; }
/* Filet qui se dessine sur celui de l'entrée, au survol (comme la liste en perspective). */
.mm-selection-hero__index a::before { position: absolute; top: -1px; left: 0; right: 0; height: 1px; background: var(--maestra-ink); transform: scaleX(0); transform-origin: left center; content: ""; }
.mm-selection-hero__index a:focus-visible::before { transform: scaleX(1); }
.mm-selection-hero__number { color: var(--maestra-brown); font-size: var(--maestra-text-lg); line-height: 1.6; }
.mm-selection-hero__name { font: italic 400 var(--maestra-h6)/1 var(--maestra-serif); letter-spacing: .01em; }
.mm-selection-hero__index .mm-icon { transition: transform 650ms var(--maestra-ease); }
.mm-selection-hero__index a:focus-visible .mm-icon { transform: translate(3px, -3px); }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.mm-selection-hero__cue:hover .mm-icon { transform: translateY(4px) rotate(90deg); }
	.mm-selection-hero__index a::before { transition: transform 850ms var(--maestra-ease); }
	.mm-selection-hero__index a:hover::before { transform: scaleX(1); }
	.mm-selection-hero__index a:hover .mm-icon { transform: translate(3px, -3px); }
}
/* Ouverture, grammaire du hero de page : lignes du titre par masque (1,4 s, 160 ms d'écart) au-delà de sm,
   mention qui monte ; la photo (LCP) se pose de 1,08 à 1 sans jamais être masquée. */
@media (prefers-reduced-motion: no-preference) and (width > 47.5rem) {
	.mm-selection-hero__line { animation: mm-photo-hero-line 1.4s var(--maestra-ease) both; }
	.mm-selection-hero__line + .mm-selection-hero__line { animation-delay: .16s; }
	.mm-selection-hero__note { animation: mm-opening-type 1.25s .3s var(--maestra-ease) both; }
}
@media (prefers-reduced-motion: no-preference) {
	.mm-selection-hero__photo img { --mm-settle: 1.08; animation: mm-photo-settle 2.8s var(--maestra-ease) both; }
}
@media (width <= 68.75rem) {
	.mm-selection-hero__title { grid-column: 1 / 10; }
	.mm-selection-hero__note { grid-column: 10 / -1; }
	.mm-selection-hero__photo { grid-column: 1 / -1; }
	.mm-selection-hero__aside { grid-column: 1 / -1; grid-row: 4; flex-direction: row; align-items: flex-end; justify-content: space-between; margin-top: var(--maestra-space-l); }
	.mm-selection-hero__summary { grid-column: 1 / 6; grid-row: 5; }
	.mm-selection-hero__index { grid-column: 6 / -1; grid-row: 5; margin-bottom: 0; }
	.mm-selection-hero__index li { flex: 1 1 0; }
}
@media (width <= 47.5rem) {
	.mm-selection-hero__title, .mm-selection-hero__note { grid-column: 1 / -1; }
	.mm-selection-hero__note { grid-row: 3; max-width: 16rem; margin-top: var(--maestra-space-l); }
	.mm-selection-hero__photo { grid-row: 4; margin-top: var(--maestra-space-l); }
	.mm-selection-hero__aside { grid-row: 5; }
	.mm-selection-hero__summary { grid-column: 1 / -1; grid-row: 6; margin-top: var(--maestra-space-xl); }
	.mm-selection-hero__index { grid-column: 1 / -1; grid-row: 7; margin-top: var(--maestra-space-l); }
	.mm-selection-hero__index ol { flex-direction: column; gap: 0; }
	.mm-selection-hero__index li:last-child a { border-bottom: 1px solid var(--maestra-rule); }
}
/* Carrousel sur camel : points blancs (Figma), barre de défilement claire. */
.mm-camel .mm-carousel__track { scrollbar-color: color-mix(in srgb, var(--maestra-white) 30%, transparent) transparent; }
.mm-camel .mm-carousel__dot::before { background: color-mix(in srgb, var(--maestra-white) 30%, transparent); }
.mm-camel .mm-carousel__dot[aria-current="true"]::before { background: var(--maestra-white); }
@media (hover: hover) {
	.mm-camel .mm-carousel__dot:not([aria-current]):hover::before { background: color-mix(in srgb, var(--maestra-white) 65%, transparent); }
}

/* Légende du hero de sélection — pages enfants des piliers (Figma 12625:12889) : 24 px sous la photo, « Pilier ·
   Page » à gauche, signature italique à droite ; gris à 4,7:1 (Figma : 50 % d'encre, 4,2:1). */
.mm-selection-hero__caption { grid-column: 1 / -1; grid-row: 4; display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--maestra-space-2xs) var(--maestra-space); margin-top: var(--maestra-space-s); color: var(--maestra-grey); letter-spacing: -.02em; }
.mm-selection-hero__signature { font: italic 400 var(--maestra-text-base)/1 var(--maestra-serif); letter-spacing: .01em; }
@media (width <= 47.5rem) {
	.mm-selection-hero__caption { grid-row: 5; }
}
/* Pages enfants (D48, demande de Miguel du 12 octobre 2026) : la photo d'ouverture s'agrandit jusqu'au plein
   écran au défilement, comme « Nos promesses » (scène collante, CSS seul). Elle part de son cadre 919 × 593
   (colonnes 5 à 12 ; pleine largeur de contenu sous 1100 px), commence quand elle est au milieu de l'écran,
   se pose plein écran et la légende suit, 24 px dessous. Pas sous sm (Miguel, 12 octobre 2026), ni sans
   défilement animé : photo et légende de Figma. */
.mm-selection-hero__scroll { grid-column: 5 / -1; grid-row: 3; margin-top: var(--maestra-space-xl); }
.mm-selection-hero__scroll .mm-selection-hero__photo { margin-top: 0; }
@media (width <= 68.75rem) {
	.mm-selection-hero__scroll { grid-column: 1 / -1; }
}
@media (width <= 47.5rem) {
	.mm-selection-hero__scroll { grid-row: 4; margin-top: var(--maestra-space-l); }
}
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) and (width > 47.5rem) {
		/* Cadre de départ : left et width en % de la scène (pleine largeur), hauteur en vw comme « Nos promesses ». */
		.mm-selection-hero__scroll {
			--mm-expand-span: 8; --mm-expand-skip: 4;
			--mm-expand-col: calc((100% - 2 * var(--maestra-gutter) - 11 * var(--maestra-space)) / 12);
			--mm-expand-left: calc(var(--maestra-gutter) + var(--mm-expand-skip) * (var(--mm-expand-col) + var(--maestra-space)));
			--mm-expand-width: calc(var(--mm-expand-span) * var(--mm-expand-col) + (var(--mm-expand-span) - 1) * var(--maestra-space));
			--mm-expand-rest: min(calc((var(--mm-expand-span) * (100vw - 2 * var(--maestra-gutter) - 11 * var(--maestra-space)) / 12 + (var(--mm-expand-span) - 1) * var(--maestra-space)) * 593 / 919), 74dvh);
			--mm-expand-offset: calc((100dvh - var(--mm-expand-rest)) / 2);
			grid-column: 1 / -1; height: 175dvh; margin: calc(var(--maestra-space-xl) - var(--mm-expand-offset)) calc(-1 * var(--maestra-gutter)) 0;
			view-timeline: --mm-expand block; view-timeline-inset: 0;
		}
		.mm-selection-hero__stage { position: sticky; top: 0; height: 100dvh; overflow: hidden; pointer-events: none; }
		.mm-selection-hero__scroll .mm-selection-hero__photo { position: absolute; aspect-ratio: auto; animation: mm-selection-expand cubic-bezier(.42, 0, .58, 1) both; animation-timeline: --mm-expand; animation-range: contain 0% contain 82%; }
		.mm-selection-hero__scroll .mm-selection-hero__photo img { animation: mm-photo-settle 2.8s var(--maestra-ease) both, mm-promise-zoom cubic-bezier(.42, 0, .58, 1) both; animation-timeline: auto, --mm-expand; animation-range: normal, contain 0% contain 82%; }
		@media (width <= 68.75rem) {
			.mm-selection-hero__scroll { --mm-expand-span: 12; --mm-expand-skip: 0; }
		}
	}
}
@keyframes mm-selection-expand { from { top: var(--mm-expand-offset); left: var(--mm-expand-left); width: var(--mm-expand-width); height: var(--mm-expand-rest); } to { top: 0; left: 0; width: 100%; height: 100%; } }
/* Texte écrit par les clientes, de longueur libre : pas d'introduction fixe sur un écran bas, où sa fin et ses liens resteraient hors de vue. */

/* Texte centré — template-parts/components/statement.php (accueil « Toujours la même exigence »). */
.mm-statement { padding: var(--maestra-section) var(--maestra-gutter); }
.mm-statement:has(.mm-statement__photo) { padding-bottom: 0; }
.mm-statement__inner { width: 31.0625rem; max-width: 100%; margin-inline: auto; }
.mm-statement h2 { max-width: 10.4em; margin-inline: auto; font-size: var(--maestra-editorial); font-style: italic; text-align: center; text-wrap: wrap; }
.mm-statement p { margin-top: var(--maestra-space-s); font-size: var(--maestra-text-base); text-align: justify; hyphens: auto; text-wrap: wrap; letter-spacing: -.02em; }
.mm-statement--small p { font-size: var(--maestra-text-sm); line-height: 1.6; letter-spacing: 0; }
.mm-statement__ornament { display: block; width: 28px; height: 10px; margin: var(--maestra-space-l) auto 0; overflow: visible; fill: var(--maestra-pink); }
.mm-statement__photo { aspect-ratio: 16 / 9; margin-top: var(--maestra-space-xl); }

/* Galerie en carrousel — template-parts/components/gallery.php, Figma 12202:5451 : piste à défilement
   natif et aimantation ; glisser à la souris, points et flèches par assets/js/carousel.js. */
.mm-gallery { row-gap: var(--maestra-space-l); }
.mm-gallery__intro { grid-column: 1 / -1; display: flex; flex-direction: column; align-items: flex-start; }
.mm-gallery__intro h2 { line-height: .9; }
.mm-gallery__intro p { max-width: 28em; margin-top: var(--maestra-space-xs); letter-spacing: -.02em; }
.mm-gallery__intro .mm-text-link { margin-top: var(--maestra-space-xs); }
.mm-carousel { --mm-slide: 73.2vw; position: relative; grid-column: 3 / -1; min-width: 0; margin-right: calc(-1 * var(--maestra-gutter)); }
.mm-carousel__track { position: relative; display: flex; gap: var(--maestra-space); margin: 0; padding: 0 calc(100% - var(--mm-slide)) 0 0; list-style: none; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: thin; scrollbar-color: color-mix(in srgb, var(--maestra-brown) 30%, transparent) transparent; }
.mm-carousel__slide { flex: 0 0 var(--mm-slide); scroll-snap-align: start; }
.mm-carousel__slide .mm-photo { aspect-ratio: 16 / 9; }
/* Commandes affichées par assets/js/carousel.js : carrés roses de 28 px (Figma), cibles de 36 × 44 px
   pour les flèches et 32 × 44 px pour les traits (44 px sur écran tactile) ; la flèche droite s'aligne sur le bord droit de la photo. */
.mm-carousel--enhanced .mm-carousel__track { cursor: grab; scrollbar-width: none; }
.mm-carousel--enhanced .mm-carousel__track::-webkit-scrollbar { display: none; }
.mm-carousel.is-dragging .mm-carousel__track { cursor: grabbing; scroll-snap-type: none; scroll-behavior: auto; user-select: none; }
.mm-carousel__controls { display: flex; align-items: center; justify-content: space-between; width: var(--mm-slide); max-width: 100%; margin-top: var(--maestra-space-xs); }
.mm-carousel__controls[hidden] { display: none; }
.mm-carousel__dots, .mm-carousel__arrows { display: flex; }
.mm-carousel__dots { margin-left: -4px; }
.mm-carousel__arrows { margin-right: -4px; }
.mm-carousel__dot, .mm-carousel__arrow { display: grid; place-items: center; height: 44px; padding: 0; background: none; }
/* Traits de 24 × 2 px au lieu des points ronds de Figma, trop proches des pastilles roses animées
   (Miguel, 13 octobre 2026) ; 8 px entre deux traits. */
.mm-carousel__dot { width: 32px; }
.mm-carousel__dot::before { width: 24px; height: 2px; background: color-mix(in srgb, var(--maestra-brown) 20%, transparent); content: ""; transition: background-color var(--maestra-hover-fade) ease; }
.mm-carousel__dot[aria-current="true"]::before { background: var(--maestra-brown); }
.mm-carousel__arrow { width: 36px; transition: opacity var(--maestra-hover-fade) ease; }
.mm-carousel__arrow::before { grid-area: 1 / 1; width: 28px; height: 28px; background: var(--maestra-pink); content: ""; }
.mm-carousel__arrow img { grid-area: 1 / 1; position: relative; display: block; width: 16px; height: 16px; }
.mm-carousel__arrow:disabled { opacity: .4; cursor: default; }

/* Méthode pas à pas — template-parts/components/method.php, Figma Timeline 12702:1954.
   Géométrie du monogramme (143 × 340 px) : tige haute de 131 à 143 px de son bord gauche, tige basse
   de 0 à 12 px. Les tiges du SVG sont calées sur des pixels entiers et les traits CSS en reprennent
   exactement la position et la largeur : une boîte CSS est arrondie au pixel de l'écran, pas le SVG,
   et un écart de moins d'un pixel se voit comme une marche à la jonction (Miguel, 30 septembre 2026).
   Les étapes commencent à 89 px du bord de la colonne. */
.mm-method { --mm-method-mark: 1.4625rem; overflow: clip; padding: var(--maestra-gutter) var(--maestra-gutter) var(--maestra-section); }
.mm-method__head { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--maestra-space-s); padding-block: var(--maestra-space-s); border-top: 1px solid var(--maestra-rule-inverse); }
.mm-method__head h2 { max-width: 6.2em; font-size: var(--maestra-h1); line-height: .9; text-wrap: initial; }
.mm-method__body { padding-inline: 0; }
.mm-method__track { position: relative; grid-column: 7 / 13; padding: calc(4rem + 340px + 1.875rem) 0 6.25rem 5.5625rem; }
.mm-method__track::before, .mm-method__track::after { position: absolute; background: var(--maestra-pink); pointer-events: none; content: ""; }
.mm-method__track::before { top: -100vh; left: calc(var(--mm-method-mark) + 131px); width: 12px; height: calc(100vh + 4rem + 1px); }
.mm-method__track::after { top: calc(4rem + 339px); bottom: 2.625rem; left: var(--mm-method-mark); width: 12px; background: linear-gradient(var(--maestra-pink) calc(100% - 8.375rem), transparent); }
.mm-method__mark { position: absolute; top: 4rem; left: var(--mm-method-mark); width: 143px; height: 340px; }
.mm-method__steps { margin: 0; padding: 0; list-style: none; }
.mm-method__step { position: relative; container-type: inline-size; }
.mm-method__step + .mm-method__step { margin-top: calc(var(--maestra-space-l) + var(--maestra-space-2xs)); }
/* Pastille devant le trait (Miguel, 30 septembre 2026) : sans z-index, le trait, dessiné après les étapes, passe dessus. */
.mm-method__step::before { position: absolute; z-index: 1; top: .3125rem; left: calc(var(--mm-method-mark) - 9px - 5.5625rem); width: 30px; height: 30px; border-radius: 50%; background: url("../images/method-step.svg") center / 30px no-repeat, var(--maestra-brown); content: ""; }
/* Aucun mot coupé (« transparente », « transparent »). */
.mm-method__step h3 { max-width: 9.15em; font: italic 400 min(var(--maestra-editorial), 100cqi / 5.4)/1 var(--maestra-serif); color: var(--maestra-pink); }
.mm-method__step p { max-width: 17.7em; margin-top: var(--maestra-space-s); letter-spacing: -.02em; }

/* Témoignage et logos — template-parts/components/testimonial.php, Figma 12202:5557. */
.mm-testimonial { row-gap: var(--maestra-space-xl); }
.mm-testimonial__heading { grid-column: 1 / 5; }
.mm-testimonial__heading h2 { font-size: var(--maestra-h6); font-weight: 500; line-height: 1.4; letter-spacing: -.01em; }
.mm-testimonial__heading p { max-width: 15.25em; margin-top: var(--maestra-space-s); font-size: var(--maestra-text-sm); line-height: 1.6; }
.mm-testimonial__quote { grid-column: 5 / 13; }
.mm-testimonial__quote blockquote { margin: 0; }
.mm-testimonial__quote blockquote p { font: italic 400 var(--maestra-editorial)/1.1 var(--maestra-serif); letter-spacing: .01em; }
.mm-testimonial__quote figcaption { display: flex; align-items: center; gap: var(--maestra-space-s); margin-top: var(--maestra-space-s); }
.mm-testimonial__quote figcaption > span:last-child { display: flex; flex-direction: column; letter-spacing: -.02em; }
.mm-testimonial__quote strong { font-weight: 500; letter-spacing: 0; }
.mm-testimonial__avatar { flex: none; width: 48px; height: 48px; border-radius: 50%; background: var(--maestra-camel-light); }
/* Logo de l'établissement à la place de la pastille (D41) : 48 px de haut, 128 px de large au plus. */
.mm-testimonial__logo { flex: none; width: auto; max-width: 8rem; height: 3rem; object-fit: contain; }
/* Variante ruled — Figma Création (12202:6118). */
.mm-testimonial--ruled .mm-testimonial__heading p { max-width: none; text-align: justify; hyphens: auto; text-wrap: wrap; }
.mm-testimonial--ruled .mm-testimonial__quote { padding-left: var(--maestra-space-xl); border-left: 1px solid var(--maestra-rule); }
.mm-testimonial--ruled .mm-testimonial__quote blockquote p { font-size: var(--maestra-h3); }
.mm-testimonial--ruled .mm-testimonial__quote figcaption { justify-content: flex-end; }
.mm-testimonial--ruled .mm-testimonial__avatar { display: none; }
/* Une citation de plus de 200 caractères (D41) : toutes en 32 px au lieu de 42 (36 en variante ruled). */
.mm-testimonial .mm-testimonial__quote--long blockquote p { font-size: var(--maestra-h4); line-height: 1.2; }
/* Plusieurs citations (D41) : carrousel d'une citation par vue, l'auteur sous sa citation ; flèches (Figma 12518:1758 :
   151 px d'un carré à l'autre, points masqués) en bas à droite, sur la ligne de l'auteur de la plus longue. */
.mm-testimonial__quotes.mm-carousel { --mm-slide: 100%; grid-column: 5 / 13; margin-right: 0; }
.mm-testimonial__quotes figcaption { padding-right: 12rem; }
.mm-testimonial__quotes .mm-carousel__controls { position: absolute; right: 0; bottom: -8px; width: auto; margin: 0; }
.mm-testimonial__quotes .mm-carousel__arrows { gap: 7.1875rem; }
/* Bande de logos : grille immobile par défaut (mouvement réduit) ; défilement continu plus bas. */
.mm-testimonial__logos { --mm-logo-columns: 6; grid-column: 1 / -1; display: flex; flex-direction: column; container-type: inline-size; }
.mm-testimonial__marquee { display: flex; border-block: 1px solid var(--maestra-line); }
.mm-testimonial__track { flex: 1; display: grid; grid-template-columns: repeat(var(--mm-logo-columns), minmax(0, 1fr)); column-gap: var(--maestra-space); margin: 0; padding: 0; list-style: none; }
.mm-testimonial__track li { display: grid; place-items: center; height: 11.25rem; }
.mm-testimonial__logos img { width: 76px; height: 76px; object-fit: contain; }
.mm-testimonial__track + .mm-testimonial__track, .mm-testimonial__pause, .mm-testimonial__toggle { display: none; }
.mm-testimonial__toggle { order: 1; align-self: flex-end; align-items: center; gap: .625rem; min-height: 44px; color: var(--maestra-brown); font: italic 400 var(--maestra-text-sm)/1.4 var(--maestra-serif); cursor: pointer; }
.mm-testimonial__toggle img { flex: none; width: 16px; height: 16px; }
.mm-testimonial__pause:checked + .mm-testimonial__toggle .mm-testimonial__toggle-pause, .mm-testimonial__pause:not(:checked) + .mm-testimonial__toggle .mm-testimonial__toggle-play { display: none; }
.mm-testimonial__pause:focus-visible + .mm-testimonial__toggle { outline: 2px solid currentColor; outline-offset: 4px; }
@media (prefers-reduced-motion: no-preference) {
	/* Les deux copies de la liste glissent de leur propre largeur (marge à droite de chaque logo comprise) :
	   la boucle est sans couture. Environ 50 px/s ; pause au survol, au focus et par la case. */
	.mm-testimonial__marquee { overflow: clip; mask-image: linear-gradient(90deg, transparent, var(--maestra-ink) 6%, var(--maestra-ink) 94%, transparent); }
	.mm-testimonial__track, .mm-testimonial__track + .mm-testimonial__track { flex: none; display: flex; column-gap: 0; animation: mm-marquee 90s linear infinite; }
	.mm-testimonial__track li { flex: none; width: calc((100cqi - (var(--mm-logo-columns) - 1) * var(--maestra-space)) / var(--mm-logo-columns)); margin-right: var(--maestra-space); }
	.mm-testimonial__pause { position: absolute; display: block; width: 1px; height: 1px; margin: 0; opacity: 0; }
	.mm-testimonial__toggle { display: flex; }
	.mm-testimonial__logos:has(.mm-testimonial__pause:checked) .mm-testimonial__track, .mm-testimonial__marquee:hover .mm-testimonial__track { animation-play-state: paused; }
}
@keyframes mm-marquee { to { translate: -100% 0; } }

/* Points forts — template-parts/components/highlights.php, Figma 12202:5592. */
.mm-highlights { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--maestra-space-m); margin: 0; padding: 0; list-style: none; }
.mm-highlights li { padding-block: var(--maestra-space-m); border-top: 1px solid var(--maestra-rule); }
.mm-highlights p { max-width: 9.8em; font: italic 400 var(--maestra-h4)/1 var(--maestra-serif); letter-spacing: .01em; }
/* Entrée (mm-motion) : les trois phrases arrivent l'une après l'autre, 110 ms par rang. */
.mm-highlights > li:nth-child(2) { --mm-delay: .11s; }
.mm-highlights > li:nth-child(3) { --mm-delay: .22s; }

/* « Confiez-nous votre projet » — template-parts/components/project-cta.php. */
.mm-project { padding-block: var(--maestra-section); }
.mm-project h2 { grid-column: 2/9; grid-row: 1; align-self: start; z-index: 1; font: italic 400 var(--maestra-display)/.9 var(--maestra-serif); text-wrap: initial; }
.mm-project__detail { grid-column: 7/11; grid-row: 1; margin-top: clamp(5rem, 3rem + 3.5vw, 8rem); }
.mm-project__photo { aspect-ratio: 1; }
/* Photo 684:827 dans le carré : pleine largeur, calée à 68 % de sa hauteur comme Figma 13112:2123. */
.mm-project__photo img { object-position: 50% 68%; }
.mm-project__copy { margin-top: var(--maestra-space-s); }
.mm-project__copy p { font-size: var(--maestra-text-lg); line-height: 1.6; }
.mm-project__copy .mm-button { margin-top: var(--maestra-space-m); }
.mm-project--compact h2 { grid-column: 3/7; font-size: var(--maestra-h1); }
.mm-project--compact .mm-project__detail { margin-top: 2.5625rem; }

@media (hover: hover) {
	.mm-scroll-cue:hover img { transform: translateY(6px); }
	.mm-carousel__arrow:not(:disabled):hover { opacity: .65; }
	.mm-carousel__dot:not([aria-current]):hover::before { background: color-mix(in srgb, var(--maestra-brown) 55%, transparent); }
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.mm-card:has(a:hover, a:focus-visible) .mm-card__media img { transform: scale(1.018); }
}
@media (prefers-reduced-motion: no-preference) and (width > 47.5rem) {
	.mm-page-hero__heading > * { animation: mm-opening-type 1.4s .16s var(--maestra-ease) both; }
	.mm-page-hero h1 { animation-delay: .28s; }
	.mm-page-hero__text { animation: mm-opening-type 1.5s .55s var(--maestra-ease) both; }
}
/* Hero de page : la photo se pose (1,08 → 1) et la flèche se dessine, comme le hero photo ; la photo (LCP)
   reste visible dès le premier affichage. */
@media (prefers-reduced-motion: no-preference) {
	.mm-page-hero__photo img { --mm-settle: 1.08; animation: mm-photo-settle 2.8s var(--maestra-ease) both; }
	.mm-page-hero__next img { animation: mm-cue-draw 1.3s 1.15s var(--maestra-ease-draw) both; }
}
@keyframes mm-opening-type { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: none; } }
@keyframes mm-method-draw { from { clip-path: inset(0 0 100% 0); } to { clip-path: inset(0); } }
@media (47.5rem < width <= 68.75rem) {
	.mm-section-heading h2 { grid-column: 1 / 8; }
	.mm-section-heading__text { grid-column: 8 / 13; }
	.mm-carousel { --mm-slide: 78vw; grid-column: 2 / -1; }
	.mm-project h2 { grid-column: 1/9; }
	.mm-project--compact h2 { grid-column: 2/7; }
	.mm-project__detail { grid-column: 7/12; }
}
@media (width <= 47.5rem) {
	.mm-page-hero { min-height: 0; }
	.mm-page-hero__inner { grid-template-rows: auto; row-gap: var(--maestra-space-l); }
	.mm-page-hero__heading, .mm-page-hero__photo { grid-column: 1 / -1; grid-row: auto; }
	.mm-page-hero__photo { width: 100%; }
	.mm-page-hero__heading { margin-top: 0; }
	.mm-page-hero__text { margin-bottom: 0; }
	.mm-page-hero__text, .mm-page-hero__next { grid-row: 3; }
	.mm-section-heading h2 { grid-column: 1 / -1; }
	.mm-section-heading__text { grid-column: 2 / 7; }
	.mm-cards { grid-template-columns: minmax(0, 1fr); }
	.mm-card:nth-child(n) { padding-inline: 0; border-left: 0; }
	.mm-card:last-child:nth-child(odd) { margin-right: 0; border-right: 0; }
	.mm-card:nth-last-child(2):nth-child(even) { box-shadow: none; }
	.mm-card__detail { padding-left: calc((100% + var(--maestra-space)) / 6); }
	.mm-carousel { --mm-slide: 85vw; grid-column: 1 / -1; }
	.mm-method__track { grid-column: 1 / -1; }
	.mm-method__track::before { top: 0; height: calc(4rem + 1px); }
	.mm-testimonial { row-gap: var(--maestra-space-l); }
	.mm-testimonial__heading, .mm-testimonial__quote { grid-column: 1 / -1; }
	.mm-testimonial__quote blockquote p { font-size: var(--maestra-h4); }
	.mm-testimonial .mm-testimonial__quote--long blockquote p { font-size: var(--maestra-h6); line-height: 1.3; }
	.mm-testimonial__quotes.mm-carousel { grid-column: 1 / -1; }
	.mm-testimonial__quotes figcaption { gap: var(--maestra-space-xs); padding-right: 6rem; }
	.mm-testimonial__logo { max-width: 6rem; height: 2.5rem; }
	.mm-testimonial__quotes .mm-carousel__arrows { gap: 0; }
	.mm-testimonial--ruled .mm-testimonial__quote { padding-left: var(--maestra-space-s); }
	.mm-testimonial__logos { --mm-logo-columns: 3; }
	.mm-testimonial__track li { height: 7.5rem; }
	.mm-highlights { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.mm-highlights p { max-width: none; }
	.mm-project { row-gap: 2.25rem; }
	.mm-project h2 { grid-column: 1/-1; grid-row: 1; line-height: .94; }
	.mm-project__detail { grid-column: 2/7; grid-row: 2; margin-top: 0; }
}
@media (width <= 22.5rem) {
	.mm-section-heading__text, .mm-project__detail { grid-column: 1 / -1; }
	.mm-card__detail { padding-left: 0; }
	.mm-testimonial__logos { --mm-logo-columns: 2; }
}
@media (pointer: coarse) {
	.mm-carousel__dot, .mm-carousel__arrow { width: 44px; }
	.mm-carousel__dots { margin-left: -10px; }
	.mm-carousel__arrows { margin-right: -8px; }
}
@media (hover: none) and (pointer: coarse) and (width <= 68.75rem) { .mm-menu__drawer { width: 100%; } }
@media (height <= 34.375rem) {
	.mm-menu__header { height: 64px; }
	.mm-menu__scroll { padding-top: var(--maestra-space-2xs); }
	.mm-menu__footer { padding-block: 10px max(10px, env(safe-area-inset-bottom, 0px)); }
}
/* Révélations et parallaxe au défilement, en CSS seul. Toujours lisible sans
   prise en charge des scroll-driven animations ; rien en mouvement réduit. */
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.mm-reveal { animation: mm-reveal linear both; animation-timeline: view(); animation-range: entry 0% entry 90%; }
		.mm-media-reveal { animation: mm-media-reveal linear both; animation-timeline: view(); animation-range: entry 0% entry 80%; }
		.mm-parallax { view-timeline: --mm-photo block; view-timeline-inset: 0; --mm-photo-travel: 14px; }
		.mm-parallax > img { animation: mm-photo-parallax linear both; animation-timeline: --mm-photo; animation-range: cover 0% cover 100%; }
		.mm-project__photo { --mm-photo-travel: 17px; }
		.mm-method__track { view-timeline: --mm-method block; }
		/* La pointe de la tige suit le milieu de l'écran : le tracé commence quand son départ (sous le monogramme)
		   atteint le milieu et finit quand son bas y arrive (Miguel, 30 septembre 2026). */
		.mm-method__track::after { animation: mm-method-draw linear both; animation-timeline: --mm-method; animation-range: cover calc(50vh + 4rem + 339px) cover calc(100% - 50vh - 2.625rem); }
	}
}
/* Ornement du texte centré : les points arrivent écartés, en fondu, puis se rejoignent, une seule fois
   quand ils entrent à l'écran (déclencheur CSS). Sans prise en charge : points immobiles à leur place. */
@supports (timeline-trigger: --t view()) {
	@media (prefers-reduced-motion: no-preference) {
		.mm-statement__ornament { timeline-trigger: --mm-ornament view() contain 15% contain 100%; }
		.mm-statement__ornament circle { --mm-ornament-spread: -1.75rem; animation: mm-ornament 1.9s both; animation-trigger: --mm-ornament play-once; }
		.mm-statement__ornament circle + circle { --mm-ornament-spread: 1.75rem; }
	}
}
@keyframes mm-ornament {
	from { opacity: 0; translate: var(--mm-ornament-spread) 0; animation-timing-function: ease-out; }
	35% { opacity: 1; translate: var(--mm-ornament-spread) 0; animation-timing-function: var(--maestra-ease); }
	to { opacity: 1; translate: 0 0; }
}
/* Grammaire de mouvement de l'accueil (D21, règles 1 à 4) dans les composants, en CSS seul (D22). Chaque
   élément arrive une fois, quand 6 % en sont visibles au-dessus des 5 % bas de l'écran (mêmes seuils que
   home-motion.js), par un déclencheur CSS ; avant, il attend à son état de départ, sans transition. Un
   composant l'adopte par la classe mm-motion de sa section ; à l'intérieur : .mm-reveal (bloc), .mm-split
   (mots d'un titre, maisonmaestra_split_words()), .mm-cascade (ses enfants), .mm-media-reveal (photos, D23).
   Sur l'accueil, home-motion.js joue la même grammaire (.mm-home--enhanced), d'où l'exclusion. Sans prise
   en charge (Safari, Firefox), les révélations liées au défilement ci-dessus restent ; en mouvement réduit,
   tout est immobile. */
@supports (timeline-trigger: --t view()) {
	@media (prefers-reduced-motion: no-preference) {
		.mm-motion:not(.mm-home--enhanced *) :is(.mm-reveal, .mm-split, .mm-cascade, .mm-media-reveal) { timeline-trigger: --mm-arrive view(block 0% 5%) entry 6% exit 100%; }
		/* Bloc : fondu (1,2 s) et montée de 1,5 rem (1,4 s). */
		.mm-motion:not(.mm-home--enhanced *) .mm-reveal { --mm-rise: 1.5rem; animation: mm-arrive-fade 1.2s var(--maestra-ease) var(--mm-delay, 0s) backwards, mm-arrive-rise 1.4s var(--maestra-ease) var(--mm-delay, 0s) backwards; animation-timeline: auto; animation-range: normal; animation-trigger: --mm-arrive play-once, --mm-arrive play-once; }
		/* Titre découpé ou groupe : l'hôte reste en place, son contenu arrive. */
		.mm-motion:not(.mm-home--enhanced *) :is(.mm-split, .mm-cascade) { animation: none; }
		/* Titres : chaque mot monte derrière son propre masque (1,3 s, 45 ms par mot, après le rang du titre dans son groupe). */
		.mm-motion:not(.mm-home--enhanced *) .mm-split .mm-word { display: inline-block; clip-path: inset(-.35em -.15em); }
		.mm-motion:not(.mm-home--enhanced *) .mm-split .mm-word > span { display: inline-block; animation: mm-word-rise 1.3s var(--maestra-ease) calc(var(--mm-delay, 0s) + var(--mm-step, 0) * 110ms + var(--i, 0) * 45ms) backwards; animation-trigger: --mm-arrive play-once; }
		/* Groupes : texte, lien et bouton en fondu (1,1 s) et montée de 1,1 rem (1,3 s), 110 ms par rang ; un
		   pictogramme éclôt (0,4 → 1). Un titre découpé, un sous-groupe ou une photo du groupe gardent leur entrée. */
		.mm-motion:not(.mm-home--enhanced *) .mm-cascade > * { --mm-step: 0; }
		.mm-motion:not(.mm-home--enhanced *) .mm-cascade > :nth-child(2) { --mm-step: 1; }
		.mm-motion:not(.mm-home--enhanced *) .mm-cascade > :nth-child(3) { --mm-step: 2; }
		.mm-motion:not(.mm-home--enhanced *) .mm-cascade > :nth-child(4) { --mm-step: 3; }
		.mm-motion:not(.mm-home--enhanced *) .mm-cascade > :nth-child(n + 5) { --mm-step: 4; }
		.mm-motion:not(.mm-home--enhanced *) .mm-cascade > :not(.mm-split, .mm-cascade, .mm-media-reveal) { --mm-rise: 1.1rem; animation: mm-arrive-fade 1.1s var(--maestra-ease) calc(var(--mm-delay, 0s) + var(--mm-step) * 110ms) backwards, mm-arrive-rise 1.3s var(--maestra-ease) calc(var(--mm-delay, 0s) + var(--mm-step) * 110ms) backwards; animation-trigger: --mm-arrive play-once, --mm-arrive play-once; }
		.mm-motion:not(.mm-home--enhanced *) .mm-cascade > img:not(.mm-media-reveal) { animation-name: mm-arrive-fade, mm-arrive-pop; }
		/* Photos (D23) : même matière pour toutes. Le cadre s'ouvre (1,7 s, fondu 0,9 s) pendant que l'image se
		   pose (1,18 → 1, 2,4 s, scale) et suit la découpe de 8 % (translate, synchrone du cadre), sans gêner la
		   parallaxe (transform). La découpe dit la place de la photo : modificateurs .mm-media-reveal--* plus bas. */
		.mm-motion:not(.mm-home--enhanced *) .mm-media-reveal { animation: mm-unveil 1.7s var(--maestra-ease-draw) var(--mm-delay, 0s) backwards, mm-arrive-fade .9s ease var(--mm-delay, 0s) backwards; animation-timeline: auto; animation-range: normal; animation-trigger: --mm-arrive play-once, --mm-arrive play-once; }
		.mm-motion:not(.mm-home--enhanced *) .mm-media-reveal:is(.mm-photo, .mm-media-reveal--vanish) > img { animation: mm-photo-settle 2.4s var(--maestra-ease) var(--mm-delay, 0s) backwards, mm-photo-shift 1.7s var(--maestra-ease-draw) var(--mm-delay, 0s) backwards; animation-trigger: --mm-arrive play-once, --mm-arrive play-once; }
		.mm-motion:not(.mm-home--enhanced *) .mm-media-reveal.mm-parallax > img { animation: mm-photo-settle 2.4s var(--maestra-ease) var(--mm-delay, 0s) backwards, mm-photo-shift 1.7s var(--maestra-ease-draw) var(--mm-delay, 0s) backwards, mm-photo-parallax linear both; animation-timeline: auto, auto, --mm-photo; animation-range: normal, normal, cover 0% cover 100%; animation-trigger: --mm-arrive play-once, --mm-arrive play-once, none; }
	}
}
/* Découpes des photos (D23), selon leur place dans la composition ; sans modificateur, diaphragme (photo seule,
   ouverte depuis son centre). Rideau : de bas en haut (photo verticale, série). Store : de haut en bas (photo
   sous un titre, en contrepoint d'un rideau voisin). Volet : depuis le texte voisin, à gauche. Point de fuite :
   un dessin se déploie en cercle depuis son point de fuite en reculant. Propriétés seulement, lues par
   mm-unveil et mm-photo-shift (ici et dans pages/home.css) : sans déclencheurs, aucun effet. */
.mm-media-reveal--rise { --mm-unveil: inset(100% 0 0); --mm-unveil-shift: 0 8%; }
.mm-media-reveal--fall { --mm-unveil: inset(0 0 100%); --mm-unveil-shift: 0 -8%; }
.mm-media-reveal--side { --mm-unveil: inset(0 100% 0 0); --mm-unveil-shift: -8% 0; }
.mm-media-reveal--vanish { --mm-unveil: circle(0% at 52% 46%); --mm-unveiled: circle(80% at 52% 46%); }
.mm-media-reveal--vanish > img { --mm-settle: 1.1; transform-origin: 52% 46%; }
@keyframes mm-arrive-fade { from { opacity: 0; } }
@keyframes mm-arrive-rise { from { transform: translate3d(0, var(--mm-rise, 1.1rem), 0); } }
@keyframes mm-arrive-pop { from { transform: scale(.4); } }
@keyframes mm-word-rise { from { transform: translate3d(0, calc(100% + .6em), 0); } }
@keyframes mm-unveil { from { clip-path: var(--mm-unveil, inset(9% 7%)); } to { clip-path: var(--mm-unveiled, inset(-12px)); } }
@keyframes mm-photo-shift { from { translate: var(--mm-unveil-shift, 0 0); } }
@keyframes mm-photo-settle { from { scale: var(--mm-settle, 1.18); } }
@keyframes mm-reveal { from { opacity: 0; transform: translateY(1.25rem); } to { opacity: 1; transform: none; } }
@keyframes mm-media-reveal { from { clip-path: inset(0 0 5% 0); } to { clip-path: inset(0); } }
@keyframes mm-photo-parallax { from { transform: translateY(calc(-1 * var(--mm-photo-travel))) scale(1.07); } to { transform: translateY(var(--mm-photo-travel)) scale(1.07); } }
/* Perspective et liste numérotée — template-parts/components/perspective-list.php, Figma La Maison
   12202:3127 et Le sur-mesure 12538:2488. Dessin 678 px (colonnes 1 à 6) ; liste en colonnes 8 à 12,
   numéros 40 px à gauche du filet ; texte de 407 px calé à droite. */
.mm-perspective-list { container-type: inline-size; row-gap: var(--maestra-space-xl); }
/* Aucun mot coupé (« stratégique, » ; « understanding »). */
.mm-perspective-list > h2 { grid-column: 1 / -1; max-width: 16em; font-size: min(var(--maestra-h2), 100cqi / 7.4); line-height: .9; text-wrap: initial; }
.mm-perspective-list__drawing { grid-column: 1 / 7; align-self: center; width: 100%; max-width: 42.375rem; }
.mm-perspective-list__drawing img { display: block; width: 100%; height: auto; aspect-ratio: 1; }
.mm-perspective-list__list { grid-column: 8 / -1; align-self: center; margin: 0 0 0 -2.5rem; padding: 0; list-style: none; }
.mm-perspective-list__item { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr); }
/* Numéro centré sur la première ligne du titre (même hauteur de ligne). */
.mm-perspective-list__number { padding-top: var(--maestra-space-s); color: var(--maestra-grey); font: 400 var(--maestra-text-sm) / calc(var(--maestra-h5) * 1.2) var(--maestra-sans); }
.mm-perspective-list__body { position: relative; padding-block: var(--maestra-space-s); border-top: 1px solid var(--maestra-rule); }
.mm-perspective-list h3 { max-width: 10.3em; font-size: var(--maestra-h5); font-weight: 500; line-height: 1.2; letter-spacing: -.01em; }
.mm-perspective-list__body p { width: min(100%, 25.4375rem); margin: var(--maestra-space-xs) 0 0 auto; text-align: justify; hyphens: auto; text-wrap: wrap; letter-spacing: -.02em; }
/* Filet qui se dessine sur celui de l'entrée, au survol. */
.mm-perspective-list__body::before { position: absolute; top: -1px; left: 0; right: 0; height: 1px; background: var(--maestra-ink); transform: scaleX(0); transform-origin: left center; content: ""; }
@media (47.5rem < width <= 68.75rem) {
	.mm-perspective-list__drawing { grid-column: 1 / 6; }
	.mm-perspective-list__list { grid-column: 7 / -1; }
}
@media (width <= 47.5rem) {
	.mm-perspective-list__drawing { grid-column: 2 / 6; justify-self: center; max-width: 21rem; }
	.mm-perspective-list__list { grid-column: 1 / -1; margin-left: 0; }
	.mm-perspective-list__item { grid-template-columns: 2rem minmax(0, 1fr); }
	.mm-perspective-list__body p { width: auto; margin-left: 0; text-align: left; hyphens: none; text-wrap: pretty; }
}
@media (width <= 22.5rem) {
	.mm-perspective-list__drawing { grid-column: 1 / -1; }
}
/* Survol (prototype V1-La-Maison) : le dessin s'incline selon l'entrée survolée, le filet se dessine.
   Variante still (sur-mesure, demande de Miguel du 25 septembre 2026) : le dessin reste immobile. */
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.mm-perspective-list__drawing img { transition: transform 1.8s var(--maestra-ease); }
	.mm-perspective-list__body::before { transition: transform 850ms var(--maestra-ease); }
	.mm-perspective-list__item:hover .mm-perspective-list__body::before { transform: scaleX(1); }
	.mm-perspective-list:not(.mm-perspective-list--still):has(.mm-perspective-list__item:nth-child(4n + 1):hover) .mm-perspective-list__drawing img { transform: perspective(1200px) rotateY(-8deg) rotateX(6deg); }
	.mm-perspective-list:not(.mm-perspective-list--still):has(.mm-perspective-list__item:nth-child(4n + 2):hover) .mm-perspective-list__drawing img { transform: perspective(1200px) rotateY(6deg) rotateX(-6deg); }
	.mm-perspective-list:not(.mm-perspective-list--still):has(.mm-perspective-list__item:nth-child(4n + 3):hover) .mm-perspective-list__drawing img { transform: perspective(1200px) rotateY(9deg) rotateX(5deg); }
	.mm-perspective-list:not(.mm-perspective-list--still):has(.mm-perspective-list__item:nth-child(4n + 4):hover) .mm-perspective-list__drawing img { transform: perspective(1200px) rotateY(-5deg) rotateX(-8deg); }
}
/* Entrée du dessin en point de fuite (D23), qui ne laisse aucune découpe. Sans déclencheurs, pas de
   découpe liée au défilement : elle resterait et couperait l'inclinaison, qui déborde du cadre. */
@supports not (timeline-trigger: --t view()) { .mm-perspective-list__drawing.mm-media-reveal { animation: none; } }

/* Titre italique et deux photos décalées — template-parts/components/editorial-duo.php, Figma La Maison
   12202:3093. À 1440 px : titre à 590 px (620 px de large), grande photo colonnes 7 à 11 (558 × 438),
   photo 3:4 de 363 px à gauche, 124 px sous le haut du titre ; texte colonnes 4 à 6. */
.mm-editorial-duo { row-gap: 0; padding-bottom: calc(var(--maestra-section) + var(--maestra-space-xl) + var(--maestra-space-s)); }
.mm-editorial-duo h2 { grid-column: 6 / -1; grid-row: 1; max-width: 12.9em; margin-left: calc(-1 * var(--maestra-space)); font-style: italic; line-height: 1.1; }
.mm-editorial-duo__side { grid-column: 1 / 5; grid-row: 1 / 3; align-self: start; width: 81%; aspect-ratio: 3 / 4; margin-top: calc(var(--maestra-space-xl) + var(--maestra-space-l) - .25rem); }
.mm-editorial-duo__main { --mm-delay: 90ms; grid-column: 7 / 12; grid-row: 2; aspect-ratio: 558 / 438; margin-top: calc(var(--maestra-space-l) - .75rem); }
.mm-editorial-duo__text { grid-column: 4 / 7; grid-row: 3; margin-top: calc(var(--maestra-space-l) + var(--maestra-space-xs)); font-size: var(--maestra-text-sm); line-height: 1.6; text-align: justify; hyphens: auto; text-wrap: wrap; }
.mm-editorial-duo__text > p:not(.mm-editorial-duo__aside) { text-wrap: inherit; }
@media (47.5rem < width <= 68.75rem) {
	.mm-editorial-duo h2 { grid-column: 5 / -1; margin-left: 0; }
	.mm-editorial-duo__side { width: 100%; }
	.mm-editorial-duo__main { grid-column: 6 / -1; }
	.mm-editorial-duo__text { grid-column: 3 / 7; }
}
@media (width <= 47.5rem) {
	.mm-editorial-duo { row-gap: 0; padding-bottom: var(--maestra-section); }
	.mm-editorial-duo h2 { grid-column: 1 / -1; margin-left: 0; }
	.mm-editorial-duo__main { grid-column: 2 / -1; grid-row: 2; }
	.mm-editorial-duo__side { grid-column: 1 / 4; grid-row: 3; width: 100%; margin-top: var(--maestra-space-l); }
	.mm-editorial-duo__text { grid-column: 2 / -1; grid-row: 4; margin-top: var(--maestra-space-l); }
}
@media (width <= 22.5rem) {
	.mm-editorial-duo__main, .mm-editorial-duo__text { grid-column: 1 / -1; }
	.mm-editorial-duo__side { grid-column: 1 / 5; }
}

/* Variante split — Figma Le sur-mesure « Avant l'objet » 12202:6640 (112 px en haut, 224 en bas) :
   titre pleine largeur, photo carrée colonnes 1 à 3, grande photo 684 × 827 colonnes 7 à 12, filet
   vertical de 102 px colonne 2, texte colonnes 3 à 5 souligné d'un filet, phrase italique dessous. */
.mm-editorial-duo--split { padding-bottom: calc(2 * var(--maestra-section)); }
.mm-editorial-duo.mm-editorial-duo--split h2 { grid-column: 1 / -1; margin: 0 0 var(--maestra-space-xl); letter-spacing: .01em; text-wrap: initial; }
.mm-editorial-duo--split .mm-editorial-duo__side { grid-column: 1 / 4; grid-row: 2; width: 100%; aspect-ratio: 1; margin-top: 0; }
.mm-editorial-duo--split .mm-editorial-duo__main { grid-column: 7 / 13; grid-row: 2 / 4; aspect-ratio: 684 / 827; margin-top: var(--maestra-space-xl); }
.mm-editorial-duo__thread { grid-column: 2; grid-row: 3; justify-self: center; align-self: start; width: 1px; height: 6.375rem; margin-top: calc(var(--maestra-space-xl) + var(--maestra-space-l)); background: var(--maestra-rule); }
.mm-editorial-duo--split .mm-editorial-duo__text { grid-column: 3 / 6; grid-row: 3; align-self: start; margin-top: calc(var(--maestra-space-xl) + var(--maestra-space-l)); }
.mm-editorial-duo--split .mm-editorial-duo__text > p:first-child { padding-bottom: var(--maestra-space-s); border-bottom: 1px solid var(--maestra-rule); }
.mm-editorial-duo__aside { margin-top: var(--maestra-space-s); font: italic 400 var(--maestra-text-lg) / 1.5 var(--maestra-serif); text-align: left; hyphens: none; }
@media (47.5rem < width <= 68.75rem) {
	.mm-editorial-duo--split .mm-editorial-duo__side { grid-column: 1 / 5; }
	.mm-editorial-duo--split .mm-editorial-duo__main { grid-column: 7 / 13; }
	.mm-editorial-duo__thread { grid-column: 1; }
	.mm-editorial-duo--split .mm-editorial-duo__text { grid-column: 2 / 7; }
}
@media (width <= 47.5rem) {
	.mm-editorial-duo--split .mm-editorial-duo__side { grid-column: 1 / 4; grid-row: 2; margin-top: 0; }
	.mm-editorial-duo--split .mm-editorial-duo__main { grid-column: 3 / 7; grid-row: 3; margin-top: var(--maestra-space-l); }
	.mm-editorial-duo__thread { display: none; }
	.mm-editorial-duo--split .mm-editorial-duo__text { grid-column: 2 / 7; grid-row: 4; margin-top: var(--maestra-space-xl); }
}
@media (width <= 22.5rem) {
	.mm-editorial-duo--split .mm-editorial-duo__main { grid-column: 3 / 7; }
	.mm-editorial-duo--split .mm-editorial-duo__text { grid-column: 1 / -1; }
}

/* Valeurs — template-parts/components/values.php, Figma La Maison 12202:3104. Lignes de 276 px :
   emplacement du symbole (180 px, vide) et 48 px de marge ; nom et sous-titre à partir de la
   colonne 5 (6 une ligne sur deux), texte de 362 px calé à droite, alignés sur leur dernière ligne. */
.mm-values { row-gap: var(--maestra-space-l); }
.mm-values > h2 { grid-column: 1 / 5; line-height: .9; text-wrap: initial; }
.mm-values__list { grid-column: 1 / -1; margin: 0; padding: 0; list-style: none; border-bottom: 1px solid var(--maestra-rule); }
.mm-values__item { padding-block: var(--maestra-space-l); border-top: 1px solid var(--maestra-rule); }
.mm-values__symbol { grid-column: 1 / 3; grid-row: 1; width: 100%; max-width: 11.25rem; aspect-ratio: 1; }
.mm-values__item:nth-child(even) .mm-values__symbol { grid-column: 3 / 5; }
.mm-values__content { grid-column: 5 / -1; grid-row: 1; align-self: center; display: grid; grid-template-columns: subgrid; align-items: end; }
.mm-values__item:nth-child(even) .mm-values__content { grid-column: 6 / -1; }
.mm-values__content h3 { grid-column: 1 / -5; font-size: var(--maestra-h2); }
.mm-values__name { display: block; font-style: italic; }
.mm-values__subtitle { display: block; max-width: 14.2em; font: 500 var(--maestra-h6) / 1.4 var(--maestra-serif); font-variant-caps: small-caps; letter-spacing: -.01em; }
.mm-values__content p { grid-column: -5 / -1; justify-self: end; width: min(100%, 22.75rem); text-align: justify; hyphens: auto; text-wrap: wrap; letter-spacing: -.02em; }
@media (47.5rem < width <= 68.75rem) {
	.mm-values > h2 { grid-column: 1 / 7; }
	.mm-values__item:nth-child(even) .mm-values__symbol { grid-column: 1 / 3; }
	.mm-values__content, .mm-values__item:nth-child(even) .mm-values__content { grid-column: 3 / -1; }
}
@media (width <= 47.5rem) {
	.mm-values > h2 { grid-column: 1 / -1; }
	.mm-values__symbol { display: none; }
	.mm-values__content, .mm-values__item:nth-child(even) .mm-values__content { grid-column: 1 / -1; grid-template-columns: subgrid; row-gap: var(--maestra-space-s); }
	.mm-values__content h3 { grid-column: 1 / -1; }
	.mm-values__content p { grid-column: 2 / -1; justify-self: stretch; width: auto; text-align: left; hyphens: none; text-wrap: pretty; }
}
@media (width <= 22.5rem) {
	.mm-values__content p { grid-column: 1 / -1; }
}

/* Équipe — template-parts/components/team.php, Figma La Maison 12202:3250 : introduction de 354 px
   collante sous l'en-tête ; liste de 833 px calée à droite, membres de 260 px (portrait 212 px). */
.mm-team { align-items: start; padding-block: var(--maestra-space-xl); }
.mm-team__intro { grid-column: 1 / 5; position: sticky; top: 6rem; max-width: 22.125rem; margin-top: var(--maestra-space-xl); }
.mm-team__intro > img { display: block; width: 24px; height: 24px; }
.mm-team__intro h2 { margin-top: var(--maestra-space-s); line-height: .9; text-wrap: initial; }
.mm-team__intro p { margin-top: var(--maestra-space-s); font-size: var(--maestra-text-xs); }
.mm-team__list { grid-column: 5 / -1; justify-self: end; width: min(100%, 52.0625rem); margin: var(--maestra-space-xl) 0 0; padding: 0; list-style: none; }
.mm-team__member { display: flex; justify-content: space-between; gap: var(--maestra-space); padding-block: var(--maestra-space-s); border-top: 1px solid var(--maestra-rule); }
.mm-team__identity { container-type: inline-size; flex: 1; min-width: 0; }
/* Aucun mot coupé (mot le plus long : « Struchen », « Juliette »). */
.mm-team__identity h3 { max-width: 12em; font: italic 400 min(var(--maestra-editorial), 100cqi / 4.2) / 1 var(--maestra-serif); }
.mm-team__identity p { max-width: 30em; font-size: var(--maestra-text-sm); line-height: 1.6; }
.mm-team__portrait { --mm-delay: 90ms; flex: none; width: min(13.25rem, 40%); aspect-ratio: 1; }
@media (width <= 47.5rem) {
	.mm-team { row-gap: var(--maestra-space-l); }
	.mm-team__intro { grid-column: 1 / -1; position: static; max-width: 30rem; margin-top: 0; }
	.mm-team__list { grid-column: 1 / -1; margin-top: 0; }
	.mm-team__identity h3 { font-size: min(var(--maestra-h4), 100cqi / 4.2); }
	.mm-team__identity p { margin-top: var(--maestra-space-2xs); }
	.mm-team__portrait { width: min(13.25rem, 34%); }
}

/* Nos promesses — template-parts/components/promises.php, Figma accueil 12202:7323 et La Maison
   12885:1704 (règles déplacées de pages/home.css). La photo s'agrandit jusqu'au plein écran au
   défilement (scène collante), CSS seul : centrée dans la scène, elle commence à s'agrandir quand elle
   est au milieu de l'écran (demande de Miguel du 25 septembre 2026) ; la scène remonte d'autant. */
.mm-promises { padding-top: var(--maestra-section); padding-bottom: var(--maestra-space-xl); }
.mm-promises__heading { grid-column: 1/-1; align-items: end; padding-bottom: var(--maestra-space-s); }
.mm-promises__heading h2 { grid-column: 1/7; line-height: .9; max-width: 13em; text-wrap: initial; }
.mm-promises__heading p { grid-column: 9/13; font-size: var(--maestra-text-sm); max-width: 29.4em; text-align: justify; hyphens: auto; text-wrap: wrap; line-height: 1.6; }
.mm-promises__scroll { grid-column: 1/-1; position: relative; min-width: 0; }
.mm-promises__stage, .mm-promises__window { position: relative; }
.mm-promises__window { overflow: hidden; }
.mm-promises__photo { width: 100%; aspect-ratio: 1392/556; }
.mm-promises__list { grid-column: 3/13; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--maestra-space); margin: 0; padding: 0; list-style: none; }
.mm-promises__list li { border-top: 1px solid var(--maestra-rule); padding-top: var(--maestra-space-s); }
.mm-promises__list p { font: italic 400 var(--maestra-quote)/1.2 var(--maestra-serif); letter-spacing: .01em; }
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.mm-promises__scroll { view-timeline: --mm-promises block; view-timeline-inset: 0; height: 175dvh; margin: calc(-1 * var(--mm-promise-offset)) calc(-1 * var(--maestra-gutter)) 0; --mm-promise-rest: min(calc((100vw - 2 * var(--maestra-gutter)) / 2.503597), 74dvh); --mm-promise-offset: calc((100dvh - var(--mm-promise-rest)) / 2); }
		.mm-promises__stage { position: sticky; top: 0; width: 100%; height: 100dvh; overflow: hidden; pointer-events: none; }
		.mm-promises__window { position: absolute; inset: 0; }
		.mm-promises__photo { position: absolute; top: 0; aspect-ratio: auto; animation: mm-promise-expand cubic-bezier(.42, 0, .58, 1) both; animation-timeline: --mm-promises; animation-range: contain 0% contain 82%; }
		.mm-promises__photo img { animation: mm-promise-zoom cubic-bezier(.42, 0, .58, 1) both; animation-timeline: --mm-promises; animation-range: contain 0% contain 82%; }
	}
}
@keyframes mm-promise-expand { from { top: var(--mm-promise-offset); left: var(--maestra-gutter); width: calc(100% - 2 * var(--maestra-gutter)); height: var(--mm-promise-rest); } to { top: 0; left: 0; width: 100%; height: 100%; } }
@keyframes mm-promise-zoom { from { transform: scale(1); } to { transform: scale(1.12); } }
@media (47.5rem < width <= 68.75rem) {
	.mm-promises__list { grid-column: 2/13; }
}
@media (width <= 47.5rem) {
	.mm-promises { padding-top: 2.5rem; padding-bottom: 3.75rem; }
	.mm-promises__heading { row-gap: 2rem; }
	.mm-promises__heading h2 { grid-column: 1/-1; line-height: .98; }
	.mm-promises__heading p { grid-column: 2/7; text-align: left; hyphens: manual; text-wrap: pretty; }
	.mm-promises__photo { aspect-ratio: 1.25; }
	.mm-promises__list { grid-column: 1/-1; grid-template-columns: 1fr 1fr; row-gap: 1.75rem; }
	@supports (animation-timeline: view()) {
		@media (prefers-reduced-motion: no-preference) {
			.mm-promises__scroll { height: 160dvh; --mm-promise-rest: min(calc((100vw - 2 * var(--maestra-gutter)) / 1.25), 74dvh); }
		}
	}
}
/* Hero sur photo encadrée — template-parts/components/photo-hero.php, Figma sur-mesure 12518:2257,
   La Maison 12408:3641 : photo dans un cadre de 24 px, titre centré à gauche au-dessus d'un filet,
   texte et flèche en bas à droite. */
.mm-photo-hero { position: relative; isolation: isolate; display: flex; min-height: max(100svh, 45rem); padding: var(--maestra-gutter); color: var(--maestra-white); }
/* Fond sombre de secours (comme .mm-hero__photo de l'accueil) : texte blanc lisible avant ou sans la photo.
   Pas de z-index négatif : la photo (contexte d’empilement à 0), puis le contenu positionné, se superposent dans l’ordre du document
   (les outils d'audit de contraste retrouvent ainsi le fond réel). */
.mm-photo-hero__photo { position: absolute; z-index: 0; inset: var(--maestra-gutter); background: var(--maestra-brown-dark); }
/* Variante shade (prototype V1-La-Maison) : voile en dégradé, sombre en bas (texte de droite) et à gauche
   (titre) seulement ; sous sm, plus dense en bas, où le texte passe sous le titre, et voilé en haut et au
   milieu, où le recadrage portrait place le titre sur la zone claire de la photo. */
.mm-photo-hero--shade .mm-photo-hero__photo::before { position: absolute; inset: 0; z-index: 1; background: linear-gradient(0deg, color-mix(in srgb, var(--maestra-ink) 38%, transparent), transparent 52%), linear-gradient(90deg, color-mix(in srgb, var(--maestra-ink) 30%, transparent), transparent 75%); content: ""; }
/* Voile réglé par le paramètre overlay (pourcentage d'encre, style en ligne). */
.mm-photo-hero--overlay .mm-photo-hero__photo::after { position: absolute; inset: 0; z-index: 1; background: color-mix(in srgb, var(--maestra-ink) var(--mm-photo-hero-overlay), transparent); content: ""; }
.mm-photo-hero__inner { position: relative; flex: 1; display: grid; grid-template-columns: minmax(0, 1fr) min(26.5625rem, 42%); column-gap: var(--maestra-space); padding: var(--maestra-gutter); }
.mm-photo-hero__heading { position: relative; container-type: inline-size; display: flex; flex-direction: column; justify-content: center; padding-block: 4rem; border-bottom: 1px solid var(--maestra-rule-inverse); }
/* Aucun mot coupé : plafond = largeur / mot le plus long en em des deux pages (« l’inoubliable » ;
   « unforgettable. »). */
.mm-photo-hero h1 { font-size: min(var(--maestra-h1), 100cqi / 7.1); line-height: .9; text-wrap: initial; }
.language-en .mm-photo-hero h1 { font-size: min(var(--maestra-h1), 100cqi / 8); }
.mm-photo-hero__tagline { display: block; margin-bottom: var(--maestra-space-l); font: 500 var(--maestra-text-sm)/1.5 var(--maestra-sans); font-variant-caps: normal; letter-spacing: .06em; text-transform: uppercase; }
.mm-photo-hero__line { display: block; max-width: 10em; }
.mm-photo-hero__aside { align-self: end; display: flex; flex-direction: column; }
.mm-photo-hero__aside p { text-align: justify; hyphens: auto; text-wrap: wrap; letter-spacing: -.02em; }
.mm-photo-hero__next { align-self: flex-end; margin-right: -10px; }
@media (width <= 47.5rem) {
	.mm-photo-hero { min-height: max(100svh, 40rem); }
	.mm-photo-hero__inner { grid-template-columns: minmax(0, 1fr); grid-template-rows: 1fr auto; }
	.mm-photo-hero__heading { padding-block: 5rem var(--maestra-space-l); }
	.mm-photo-hero__aside { padding-top: var(--maestra-space-s); }
	.mm-photo-hero__aside p { text-align: left; hyphens: manual; text-wrap: pretty; }
	.mm-photo-hero--shade .mm-photo-hero__photo::before { background: linear-gradient(180deg, color-mix(in srgb, var(--maestra-ink) 50%, transparent), color-mix(in srgb, var(--maestra-ink) 50%, transparent) 55%, transparent 75%), linear-gradient(0deg, color-mix(in srgb, var(--maestra-ink) 70%, transparent), transparent 65%), linear-gradient(90deg, color-mix(in srgb, var(--maestra-ink) 25%, transparent), transparent); }
}
/* Ouverture, comme celle de l'accueil (D22), environ 2,3 s à toutes les largeurs : la photo se pose
   (1,08 → 1, scale : la ressource LCP n'est ni masquée ni retardée), le surtitre puis chaque ligne du titre
   montent derrière leur masque (120 ms d'écart), puis le texte et la flèche ; le filet reste fixe. Le
   dézoom au premier défilement reste propre à l'accueil (Miguel, 29 septembre 2026). Variante dot : un
   point parcourt une fois le filet, de gauche à droite, après l'entrée du titre. */
.mm-photo-hero--dot .mm-photo-hero__heading::after { position: absolute; bottom: -2px; left: 0; width: 3px; height: 3px; border-radius: 50%; background: var(--maestra-white); opacity: 0; content: ""; }
@media (prefers-reduced-motion: no-preference) {
	.mm-photo-hero__photo img { --mm-settle: 1.08; animation: mm-photo-settle 2.8s var(--maestra-ease) both; }
	.mm-photo-hero h1 > span { clip-path: inset(-.3em -.15em -.35em); }
	.mm-photo-hero h1 > span > span { display: block; animation: mm-line-rise 1.6s .22s var(--maestra-ease) both; }
	.mm-photo-hero h1 > :nth-child(2) > span { animation-delay: .34s; }
	.mm-photo-hero h1 > :nth-child(3) > span { animation-delay: .46s; }
	.mm-photo-hero h1 > :nth-child(n + 4) > span { animation-delay: .58s; }
	.mm-photo-hero__aside p { animation: mm-opening-type 1.5s .8s var(--maestra-ease) both; }
	.mm-photo-hero__next img { animation: mm-cue-draw 1.3s 1.15s var(--maestra-ease-draw) both; }
	.mm-photo-hero--dot .mm-photo-hero__heading::after { animation: mm-photo-hero-dot 2.4s 1.1s var(--maestra-ease) both; }
}
@keyframes mm-photo-hero-line { from { opacity: 0; transform: translateY(22px); clip-path: inset(-.2em -.1em 100%); } to { opacity: 1; transform: none; clip-path: inset(-.2em -.1em); } }
@keyframes mm-photo-hero-dot { from { opacity: 0; translate: 0 0; } 15% { opacity: 1; } to { opacity: 1; translate: calc(100cqi - 3px) 0; } }
@keyframes mm-line-rise { from { transform: translate3d(0, calc(100% + .6em), 0); } to { transform: none; } }
@keyframes mm-cue-draw { from { clip-path: inset(0 0 100% 0); } to { clip-path: inset(0 0 -2px 0); } }
@keyframes mm-photo-hero-zoom { from { transform: scale(1.02); } to { transform: translateY(4%) scale(1.065); } }

/* Photo et notes numérotées — template-parts/components/figure-notes.php, Figma sur-mesure « La méthode » 12202:6658. */
.mm-figure-notes { padding-top: var(--maestra-space-s); border-top: 1px solid var(--maestra-rule); }
.mm-figure-notes__photo { aspect-ratio: 16 / 9; }
.mm-figure-notes__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--maestra-space-xs); margin: var(--maestra-space-s) 0 0; padding: 0; list-style: none; }
.mm-figure-notes__list li { display: flex; align-items: flex-start; gap: var(--maestra-space-xs); min-width: 0; padding-block: var(--maestra-space-s); border-block: 1px solid var(--maestra-rule); }
.mm-figure-notes__number { flex: none; font: italic 400 var(--maestra-editorial)/1 var(--maestra-serif); color: var(--maestra-brown); }
.mm-figure-notes__list p { min-width: 0; letter-spacing: -.02em; }
/* Entrée (mm-motion) : les trois notes se suivent, 110 ms par rang. */
.mm-figure-notes__list li:nth-child(2) { --mm-delay: .11s; }
.mm-figure-notes__list li:nth-child(3) { --mm-delay: .22s; }

/* Galerie, variante wide — template-parts/components/gallery.php, Figma sur-mesure 12202:6677 :
   piste en colonnes 1 à 12, photos 14:9 de 1120 px, points à gauche et flèches au bord du conteneur. */
.mm-gallery--wide .mm-gallery__intro h2 { max-width: 12.5em; }
.mm-gallery--wide .mm-carousel { --mm-slide: 78.6vw; grid-column: 1 / -1; }
.mm-gallery--wide .mm-carousel__slide .mm-photo { aspect-ratio: 14 / 9; }
.mm-gallery--wide .mm-carousel__controls { width: calc(100% - var(--maestra-gutter)); margin-top: var(--maestra-space-m); }

/* Photo et texte sur fond camel — template-parts/components/spotlight.php, Figma sur-mesure « La joie » 12202:6715.
   Bloc décentré de Figma : photo de 371 px calée à droite des colonnes 3 à 6, texte de 387 px dans les colonnes 7 à 10. */
.mm-spotlight { padding-block: calc(2 * var(--maestra-section)); }
.mm-spotlight__photo { grid-column: 3 / 7; justify-self: end; align-self: start; width: 82.8%; aspect-ratio: 371 / 484; --mm-photo-travel: 24px; }
.mm-spotlight__copy { grid-column: 7 / 11; display: flex; flex-direction: column; justify-content: center; width: 86.4%; padding-block: var(--maestra-space-s); border-block: 1px solid var(--maestra-rule-inverse); }
.mm-spotlight h2 { font: italic 400 var(--maestra-editorial)/1 var(--maestra-serif); color: var(--maestra-pink); }
.mm-spotlight p { margin-top: var(--maestra-space-s); font-size: var(--maestra-text-sm); line-height: 1.6; text-align: justify; hyphens: auto; text-wrap: wrap; }
/* Entrée (mm-motion) : le texte suit la photo de 90 ms quand ils arrivent ensemble. */
.mm-spotlight__copy > .mm-cascade { --mm-delay: .09s; }

/* Pastille « Découvrir » de toutes les photos cliquables du site (assets/js/cursor.js, règle générale) :
   souris seulement, jamais en mouvement réduit. */
.mm-cursor { position: fixed; top: 0; left: 0; z-index: 30; display: grid; place-items: center; width: 6rem; height: 6rem; margin: -3rem 0 0 -3rem; border-radius: 50%; background: var(--maestra-pink); color: var(--maestra-ink); font: italic 400 var(--maestra-text-base)/1 var(--maestra-serif); pointer-events: none; opacity: 0; scale: .2; transition: scale var(--maestra-hover-motion) var(--maestra-ease), opacity 300ms ease; }
.mm-cursor.is-visible { opacity: 1; scale: 1; }
.mm-cursor.is-visible.is-pressed { scale: .88; }
.mm-cursor-target { cursor: none; }
/* Contraste élevé (Windows) : la pastille perdrait son disque ; flèche du système à la place. */
@media (forced-colors: active) {
	.mm-cursor { display: none; }
	.mm-cursor-target { cursor: pointer; }
}

/* Univers d'expertise en trois colonnes — template-parts/components/worlds.php, Figma sur-mesure 12202:6721. */
.mm-world-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--maestra-space); margin: 0; padding: 0; list-style: none; }
.mm-world-card { display: flex; flex-direction: column; min-width: 0; padding-block: var(--maestra-space-s); border-block: 1px solid var(--maestra-rule); }
.mm-world-card__media { display: block; aspect-ratio: 448 / 593; }
.mm-world-card__media img { transition: transform 2s var(--maestra-ease); }
.mm-world-card__body { container-type: inline-size; flex: 1; display: flex; flex-direction: column; align-items: flex-start; margin-top: var(--maestra-space-xs); }
/* Deux lignes réservées pour aligner les textes ; aucun mot coupé (« Horlogerie », « d’exception » ; « Watchmaking »). */
.mm-world-card h3 { max-width: 7.6em; min-height: 1.8em; font-size: min(var(--maestra-h3), 100cqi / 5.95); line-height: .9; }
.language-en .mm-world-card h3 { font-size: min(var(--maestra-h3), 100cqi / 7.1); }
.mm-world-card p { max-width: 19.6em; margin-top: var(--maestra-space-s); font-size: var(--maestra-text-sm); line-height: 1.6; }
.mm-world-card .mm-text-link { margin-block: var(--maestra-space-xs) -.5rem; }
/* Entrée (mm-motion) : les trois cartes se suivent, 110 ms par colonne. */
.mm-world-card:nth-child(2) { --mm-delay: .11s; }
.mm-world-card:nth-child(3) { --mm-delay: .22s; }
/* Variante side — Figma Création (12659:1758) : deux univers côte à côte, photo et texte sur deux demi-colonnes. */
.mm-world-cards--side { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.mm-world-cards--side .mm-world-card { flex-direction: row; gap: var(--maestra-space-xs); }
.mm-world-cards--side .mm-world-card__media { flex: 1; aspect-ratio: 688 / 910; }
.mm-world-cards--side .mm-world-card__body { margin-top: 0; }
.mm-world-cards--side .mm-world-card .mm-text-link { margin-top: auto; }

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.mm-world-card:has(a:hover, a:focus-visible) .mm-world-card__media img { transform: scale(1.025); }
}
@media (47.5rem < width <= 68.75rem) {
	.mm-spotlight__photo { grid-column: 2 / 7; width: 85%; }
	.mm-spotlight__copy { grid-column: 7 / 12; width: 100%; }
}
@media (width <= 47.5rem) {
	.mm-figure-notes__list { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.mm-figure-notes__list li + li { border-top: 0; }
	/* Empilées, les notes et les cartes arrivent chacune à leur tour : pas de décalage. */
	.mm-figure-notes__list li:nth-child(n), .mm-world-card:nth-child(n) { --mm-delay: 0s; }
	.mm-gallery--wide .mm-carousel { --mm-slide: 85vw; }
	.mm-spotlight { row-gap: var(--maestra-space-l); }
	.mm-spotlight__photo { grid-column: 1 / 5; justify-self: start; width: 100%; }
	.mm-spotlight__copy { grid-column: 2 / 7; width: 100%; }
	.mm-world-cards { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.mm-world-card + .mm-world-card { border-top: 0; }
	.mm-world-card h3 { min-height: 0; }
}
@media (width <= 22.5rem) {
	.mm-editorial-duo--split .mm-editorial-duo__text, .mm-spotlight__copy { grid-column: 1 / -1; }
}

/* Mouvements liés au défilement, en CSS seul ; rien en mouvement réduit, rendu fixe sans prise en charge. */
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		/* Zoom lent de la photo du hero pendant qu'elle quitte l'écran (prototype : 1,02 → 1,065), en plus
		   de sa pose à l'ouverture (scale, distinct de ce transform). */
		.mm-photo-hero { view-timeline: --mm-photo-hero block; }
		.mm-photo-hero__photo img { animation: mm-photo-settle 2.8s var(--maestra-ease) both, mm-photo-hero-zoom linear both; animation-timeline: auto, --mm-photo-hero; animation-range: normal, exit 0% exit 100%; }
		/* Texte centré, variante unfold (statement.php, matière du sur-mesure) : scène collante ; le cadre de 24 px s'ouvre jusqu'au plein écran et la photo zoome
		   (1 → 1,12), puis l'image reste plein écran sur les derniers 18 % du parcours. Repos : photo 16:9
		   centrée dans l'écran, placée à 80 px du texte comme la base. */
		.mm-statement--unfold { --mm-unfold-y: max(var(--maestra-gutter), (100svh - (100vw - 2 * var(--maestra-gutter)) * var(--mm-unfold-ratio, .5625)) / 2); }
		.mm-statement--unfold .mm-statement__stage { height: 160svh; margin: calc(var(--maestra-space-xl) - var(--mm-unfold-y)) calc(-1 * var(--maestra-gutter)) 0; view-timeline: --mm-unfold block; }
		.mm-statement--unfold .mm-statement__photo { position: sticky; top: 0; height: 100svh; margin: 0; aspect-ratio: auto; animation: mm-unfold linear both; animation-timeline: --mm-unfold; animation-range: contain 0% contain 82%; }
		.mm-statement--unfold .mm-statement__photo img { animation: mm-unfold-zoom linear both; animation-timeline: --mm-unfold; animation-range: contain 0% contain 82%; }
		@media (width <= 47.5rem) { .mm-statement--unfold { --mm-unfold-ratio: .96; } }
	}
}
@keyframes mm-unfold { from { clip-path: inset(var(--mm-unfold-y) var(--maestra-gutter)); } to { clip-path: inset(0); } }
@keyframes mm-unfold-zoom { from { transform: scale(1); } to { transform: scale(1.12); } }
/* ——— Journal : fil d’Ariane, hero typographique, une, miniature d’article, sommaire et pagination (D17) ——— */
/* Fil d'Ariane — template-parts/components/breadcrumbs.php, Figma 12202:2016 et 12202:1574. */
.mm-breadcrumbs ol { display: flex; flex-wrap: wrap; margin: 0; padding: 0; list-style: none; font: 400 var(--maestra-text-sm)/1.5 var(--maestra-sans); letter-spacing: -.01em; }
.mm-breadcrumbs li + li::before { margin-inline: 1em; content: "/" / ""; }
/* Cible de 44 px sans changer la hauteur de la ligne. */
.mm-breadcrumbs a { display: inline-block; padding-block: .625rem; margin-block: -.625rem; text-decoration: none; }
.mm-breadcrumbs a:focus-visible { text-decoration: underline; }
.mm-breadcrumbs [aria-current] { color: var(--maestra-brown); }

/* Flèche vers la suite sur fond clair (modificateur de .mm-scroll-cue, blanche par défaut). */
.mm-scroll-cue--ink img { filter: none; }

/* Hero typographique — template-parts/components/text-hero.php, Figma Journal 12202:2014 et 12608:2084.
   Titre de 96 px à 1440 (--maestra-display), seconde ligne camel décalée de deux colonnes. */
.mm-text-hero { container-type: inline-size; padding: calc(var(--maestra-section) + var(--maestra-space-l)) var(--maestra-gutter) 0; }
.mm-text-hero__top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--maestra-space-2xs) var(--maestra-space-s); }
.mm-text-hero__note { font: italic 400 var(--maestra-text-base)/1.5 var(--maestra-serif); }
/* Aucun mot coupé : plafond = largeur / mot le plus long en em (« Histoires » 4,69 em ; « Maison » décalé
   d'un sixième, 4,33 em). */
.mm-text-hero__title { margin-top: var(--maestra-space-s); font-size: min(var(--maestra-display), 100cqi / 4.8); line-height: .9; text-wrap: initial; }
.language-en .mm-text-hero__title { font-size: min(var(--maestra-display), 100cqi / 4.4); }
.mm-text-hero__title:focus { outline: none; }
.mm-text-hero__line { display: block; }
.mm-text-hero__line--accent { padding-left: calc((100% + var(--maestra-space)) / 6); color: var(--maestra-brown); }
.mm-text-hero__bottom { display: flex; align-items: center; justify-content: space-between; gap: var(--maestra-space-xs) var(--maestra-space-s); margin-top: var(--maestra-space-xl); padding-top: var(--maestra-space-l); border-top: 1px solid var(--maestra-rule); }
.mm-text-hero__eyebrow { font: 500 var(--maestra-text-sm)/1.5 var(--maestra-sans); letter-spacing: .06em; text-transform: uppercase; }
.mm-text-hero__text { letter-spacing: -.02em; }
/* Flèche de 50 px dans une ligne de 24 px (Figma) : elle déborde sans agrandir la ligne. */
.mm-text-hero__next { margin-block: -.8125rem; margin-right: -10px; }

/* Article à la une — template-parts/components/article-feature.php, Figma 12608:2061 : aplat camel de
   24 px de marge intérieure, réserve de texte de 502 px et photo de 818 × 514 à 1440. */
.mm-article-feature__link { display: grid; grid-template-columns: minmax(0, 502fr) minmax(0, 818fr); grid-template-rows: auto 1fr auto; gap: var(--maestra-space-s); padding: var(--maestra-space-s); color: inherit; text-decoration: none; }
.mm-article-feature__link:focus-visible { outline-color: var(--maestra-ink); }
.mm-article-feature__label { grid-area: 1 / 1; display: flex; align-items: center; justify-content: space-between; gap: var(--maestra-space-s); max-width: 26.5rem; color: var(--maestra-pink); }
.mm-article-feature__label .mm-eyebrow { color: inherit; }
.mm-article-feature__number { font: italic 400 var(--maestra-text-base)/1.5 var(--maestra-serif); }
.mm-article-feature__body { grid-area: 2 / 1 / 4; align-self: end; container-type: inline-size; display: flex; flex-direction: column; align-items: flex-start; }
.mm-article-feature__meta { display: flex; flex-wrap: wrap; gap: 0 var(--maestra-space-xs); color: var(--maestra-pink); font-size: var(--maestra-text-sm); line-height: 1.6; }
/* Aucun mot coupé (titres libres : plafond calé sur « extraordinaire », 7,83 em). */
.mm-article-feature__title { max-width: 13.75em; margin-top: var(--maestra-space-xs); font-size: min(var(--maestra-h2), 100cqi / 8); line-height: .9; text-wrap: initial; }
.mm-article-feature__title > span { display: block; }
.mm-article-feature__accent { color: var(--maestra-pink); transition: color var(--maestra-hover-fade) ease; }
.mm-article-feature__excerpt { max-width: 21.4375em; margin-top: var(--maestra-space-s); letter-spacing: -.02em; }
.mm-article-feature__more { margin-block: .375rem -.625rem; }
.mm-article-feature__photo { grid-area: 1 / 2 / 3; aspect-ratio: 818 / 514; }
.mm-article-feature__caption { grid-area: 3 / 2; display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 0 var(--maestra-space-s); color: var(--maestra-pink); font-size: var(--maestra-text-sm); line-height: 1.6; }
.mm-article-feature__caption span { font: italic 400 var(--maestra-text-base)/1.5 var(--maestra-serif); }

/* Miniature d'article — template-parts/components/article-card.php, Figma 12202:2047 et 12608:12638 :
   photo, rubrique · date · temps de lecture, titre H4 (36 px), extrait de 333 px, « Lire plus », filet bas. */
.mm-article-card { min-width: 0; padding-bottom: var(--maestra-space-s); border-bottom: 1px solid var(--maestra-rule); }
.mm-article-card__link { display: flex; flex-direction: column; gap: var(--maestra-space-s); color: inherit; text-decoration: none; }
.mm-article-card__link:focus-visible { outline-offset: 6px; }
.mm-article-card__media { position: relative; }
.mm-article-card__photo { aspect-ratio: 448 / 361; }
.mm-article-card--portrait .mm-article-card__photo { aspect-ratio: 448 / 536; }
.mm-article-card--wide .mm-article-card__photo { aspect-ratio: 448 / 302; }
.mm-article-card--landscape .mm-article-card__photo { aspect-ratio: 448 / 318; }
.mm-article-card__body { container-type: inline-size; display: flex; flex-direction: column; align-items: flex-start; gap: var(--maestra-space-s); }
.mm-article-card__meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--maestra-space-s); width: 100%; font-size: var(--maestra-text-xs); line-height: 1.5; }
.mm-article-card__category { color: var(--maestra-brown); }
.mm-article-card__time { margin-left: auto; }
/* Aucun mot coupé (titres libres : plafond calé sur « extraordinaire », 7,83 em). */
.mm-article-card__title { font-size: min(var(--maestra-h3), 100cqi / 8); line-height: 1; transition: color var(--maestra-hover-fade) ease; }
.mm-article-card__line { display: block; }
.mm-article-card__excerpt { max-width: 23.8em; font-size: var(--maestra-text-sm); line-height: 1.6; text-align: justify; hyphens: auto; text-wrap: wrap; }
.mm-article-card__more { margin-block: -.625rem; }
.mm-article-card__link:focus-visible .mm-text-link > span:first-child::after, .mm-article-feature__link:focus-visible .mm-text-link > span:first-child::after { transform: scaleX(1); }
.mm-article-card__link:focus-visible .mm-text-link .mm-icon, .mm-article-feature__link:focus-visible .mm-text-link .mm-icon { transform: translate(3px, -3px); }

/* Sommaire du Journal — template-parts/components/journal-filters.php, Figma 12202:2021. */
.mm-journal-filters { display: flex; flex-direction: column; gap: var(--maestra-space-l); }
.mm-journal-filters__title { max-width: 9.1em; margin-top: var(--maestra-space-s); font-size: var(--maestra-h3); line-height: 1; }
.mm-journal-filters__nav ul { max-width: 18.8125rem; margin: 0; padding: 0; list-style: none; }
.mm-journal-filters__nav a { position: relative; display: flex; align-items: baseline; justify-content: space-between; gap: var(--maestra-space-s); min-height: 3rem; padding-block: .75rem; text-decoration: none; letter-spacing: -.02em; transition: color var(--maestra-hover-fade) ease; }
/* Filet qui se dessine sous la rubrique survolée ; plein sous la rubrique consultée (camel). */
.mm-journal-filters__nav a::after { position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left center; transition: transform 650ms var(--maestra-ease); content: ""; }
.mm-journal-filters__nav a[aria-current] { color: var(--maestra-brown); }
.mm-journal-filters__nav a[aria-current]::after, .mm-journal-filters__nav a:focus-visible::after { transform: scaleX(1); }
.mm-journal-filters__count { color: var(--maestra-ink); font: italic 400 var(--maestra-text-base)/1.5 var(--maestra-serif); letter-spacing: 0; }
.mm-journal-filters__search { max-width: 18.8125rem; }
.mm-journal-filters__search label { display: block; }
.mm-journal-filters__field { display: flex; align-items: center; border-bottom: 1px solid var(--maestra-rule); }
.mm-journal-filters__field input { flex: 1; min-width: 0; padding: .6875rem 0; border: 0; background: transparent; font: italic 400 var(--maestra-text-base)/1.5 var(--maestra-serif); }
/* Figma : noir à 50 % ; gris du thème pour un contraste AA. */
.mm-journal-filters__field input::placeholder { color: var(--maestra-grey); opacity: 1; }
.mm-journal-filters__field input::-webkit-search-cancel-button { cursor: pointer; }
.mm-journal-filters__submit { display: grid; place-items: center; flex: none; width: 44px; height: 44px; margin-right: -15px; padding: 0; background: none; }
.mm-journal-filters__submit .mm-icon { transition: transform var(--maestra-hover-motion) var(--maestra-ease); }
.mm-journal-filters__submit:focus-visible .mm-icon { transform: translate(2px, -2px); }

/* Pagination — template-parts/components/pagination.php, Figma 12608:12507 : numéros de 44 px (cible
   tactile), filet de la page courante à la taille de Figma (38 × 34 px). */
.mm-pagination { display: flex; align-items: center; justify-content: space-between; gap: var(--maestra-space-xs); padding-block: var(--maestra-space-xs); border-top: 1px solid var(--maestra-rule); font: italic 400 var(--maestra-text-base)/1.5 var(--maestra-serif); }
.mm-pagination__direction { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; transition: color var(--maestra-hover-fade) ease; }
.mm-pagination__direction[aria-disabled] { color: color-mix(in srgb, var(--maestra-ink) 40%, transparent); }
.mm-pagination__pages { display: flex; align-items: center; margin: 0; padding: 0; list-style: none; }
.mm-pagination__pages a { position: relative; display: grid; place-items: center; width: 44px; height: 44px; text-decoration: none; transition: color var(--maestra-hover-fade) ease; }
.mm-pagination__pages a[aria-current]::before { position: absolute; inset: 5px 3px; border: 1px solid var(--maestra-rule); content: ""; }
.mm-pagination__gap { width: 1.5em; text-align: center; }

@media (hover: hover) {
	.mm-breadcrumbs a:hover { text-decoration: underline; }
	.mm-article-card__link:hover .mm-article-card__title, .mm-journal-filters__nav a:hover, .mm-pagination a:hover { color: var(--maestra-brown); }
	.mm-article-feature__link:hover .mm-article-feature__accent { color: var(--maestra-white); }
	.mm-article-card__link:hover .mm-text-link > span:first-child::after, .mm-article-feature__link:hover .mm-text-link > span:first-child::after { transform: scaleX(1); }
	.mm-article-card__link:hover .mm-text-link .mm-icon, .mm-article-feature__link:hover .mm-text-link .mm-icon { transform: translate(3px, -3px); }
	.mm-journal-filters__nav a:hover::after { transform: scaleX(1); }
	.mm-journal-filters__submit:hover .mm-icon { transform: translate(2px, -2px); }
}
/* Entrée du titre (prototype : 1,4 s, 160 ms entre les lignes), puis de la ligne du bas ; au-delà de sm. */
@media (prefers-reduced-motion: no-preference) and (width > 47.5rem) {
	.mm-text-hero__line { animation: mm-photo-hero-line 1.4s var(--maestra-ease) both; }
	.mm-text-hero__line + .mm-text-hero__line { animation-delay: .16s; }
	.mm-text-hero__bottom { animation: mm-opening-type 1.25s .3s var(--maestra-ease) both; }
}
/* Photo de la une : zoom de 1,035 à 1,125 et glissement de 26 px pendant sa traversée de l'écran
   (prototype, motion.js), en CSS seul. Jamais masquée : c'est la ressource LCP probable. */
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.mm-article-feature__photo img { animation: mm-feature-zoom linear both; animation-timeline: view(); animation-range: cover 0% cover 100%; }
	}
}
@keyframes mm-feature-zoom { from { transform: translateY(-13px) scale(1.035); } to { transform: translateY(13px) scale(1.125); } }

@media (width <= 68.75rem) {
	.mm-article-feature__link { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
	.mm-article-feature__photo { aspect-ratio: 4 / 3; }
}
@media (width <= 47.5rem) {
	.mm-text-hero__bottom { flex-wrap: wrap; align-items: flex-end; }
	.mm-text-hero__eyebrow { flex-basis: 100%; }
	.mm-text-hero__text { flex: 1; }
	.mm-text-hero__next { margin-block: 0; }
	.mm-article-feature__link { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto; padding: var(--maestra-space-xs); }
	.mm-article-feature__label { grid-area: auto; max-width: none; }
	.mm-article-feature__photo { grid-area: auto; order: 1; aspect-ratio: 5 / 4; }
	.mm-article-feature__body { grid-area: auto; order: 2; }
	.mm-article-feature__caption { grid-area: auto; order: 3; padding-top: var(--maestra-space-xs); border-top: 1px solid var(--maestra-rule-inverse); }
	.mm-article-card__excerpt { max-width: none; text-align: left; hyphens: manual; text-wrap: pretty; }
	.mm-pagination { display: grid; grid-template-columns: auto auto; }
	.mm-pagination__direction--next { justify-self: end; }
	.mm-pagination__pages { grid-column: 1 / -1; grid-row: 2; justify-content: center; }
}

/* ——— Article du journal : en-tête, sommaire, corps mis en forme, articles associés (D17) ——— */
/* En-tête d'article — template-parts/components/article-header.php, Figma 12202:1570.
   Fil d'Ariane, titre 96 px (lignes suivantes en retrait), infos en colonnes 7 à 12, photo 1392 × 652. */
.mm-article-header { container-type: inline-size; row-gap: 0; padding-top: calc(var(--maestra-section) + var(--maestra-space-l)); padding-bottom: var(--maestra-space-l); }
.mm-article-header > .mm-breadcrumbs { grid-column: 1 / -1; }
/* Aperçu de l'anglais non publié : bandeau discret, réservé à qui peut modifier l'article. */
.mm-article-header__notice { grid-column: 1 / -1; justify-self: start; margin-bottom: var(--maestra-space-s); padding: var(--maestra-space-2xs) var(--maestra-space-xs); background: var(--maestra-camel-light); font-size: var(--maestra-text-sm); line-height: 1.5; }
/* Figma : seconde ligne décalée de 2,5 em (237 px). Aucun mot coupé : taille plafonnée par la largeur. */
.mm-article-header__title { grid-column: 1 / -1; margin-top: var(--maestra-space-s); font-size: min(var(--maestra-display), 100cqi / 8); line-height: .9; }
.mm-article-header__line { display: block; }
.mm-article-header__line + .mm-article-header__line { padding-left: 2.5em; }
.mm-article-header__info { grid-column: 7 / -1; margin-top: var(--maestra-space-l); }
.mm-article-header__meta, .mm-article-header__excerpt { max-width: 29.375rem; }
.mm-article-header__meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--maestra-space-2xs) var(--maestra-space-xs); font-size: var(--maestra-text-sm); line-height: 1.6; }
.mm-article-header__category { color: var(--maestra-brown); text-decoration: none; }
.mm-article-header__category:focus-visible { text-decoration: underline; }
.mm-article-header__date { margin-left: auto; }
.mm-article-header__excerpt { margin-top: var(--maestra-space-xs); letter-spacing: -.02em; }
.mm-article-header__figure { grid-column: 1 / -1; margin-top: var(--maestra-space-xl); }
/* Même amplitude que le prototype (24 px au plus) ; cadre à la taille de Figma. */
.mm-article-header__photo { aspect-ratio: 1392 / 652.5; --mm-photo-travel: 1.5rem; }
.mm-article-header__caption { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--maestra-space-2xs) var(--maestra-space-s); margin-top: var(--maestra-space-s); }
.mm-article-header__caption > span:first-child { font: 500 var(--maestra-text-sm)/1.5 var(--maestra-sans); letter-spacing: .06em; text-transform: uppercase; }
.mm-article-header__credit { margin-left: auto; letter-spacing: -.02em; }
@media (hover: hover) {
	.mm-article-header__category { text-underline-offset: .25em; text-decoration: underline transparent; transition: text-decoration-color var(--maestra-hover-fade) ease; }
	.mm-article-header__category:hover { text-decoration-color: currentColor; }
}
@media (width <= 68.75rem) {
	.mm-article-header__info { grid-column: 6 / -1; }
}
@media (width <= 47.5rem) {
	.mm-article-header__line + .mm-article-header__line { padding-left: 1em; }
	.mm-article-header__info { grid-column: 1 / -1; }
	/* Prototype : photo presque carrée sur téléphone. */
	.mm-article-header__photo { aspect-ratio: 1.04; }
}

/* Sommaire — template-parts/components/article-toc.php, Figma 12608:12590 (encadré de 316 px).
   Section en cours en CSS seul (scroll-target-group) ; sinon, simple liste de liens. */
.mm-article-toc { display: flex; flex-direction: column; gap: var(--maestra-space-s); padding: var(--maestra-space-s); border: 1px solid var(--maestra-rule); background: var(--maestra-paper); }
.mm-article-toc__title { font: 500 var(--maestra-text-sm)/1.5 var(--maestra-sans); letter-spacing: .06em; text-transform: uppercase; }
.mm-article-toc__list, .mm-article-toc__actions { margin: 0; padding: 0; list-style: none; }
.mm-article-toc__list a { position: relative; display: flex; align-items: baseline; min-height: 44px; padding-block: .625rem; color: var(--maestra-grey); text-decoration: none; font: italic 400 var(--maestra-text-base)/1.5 var(--maestra-serif); transition: color var(--maestra-hover-fade) ease, padding var(--maestra-hover-motion) var(--maestra-ease); }
.mm-article-toc__list a::before { flex: none; width: 0; height: 1px; margin-right: 0; align-self: center; background: var(--maestra-brown); content: ""; transition: width var(--maestra-hover-motion) var(--maestra-ease), margin var(--maestra-hover-motion) var(--maestra-ease); }
.mm-article-toc__list a:focus-visible { color: var(--maestra-ink); }
/* Figma : actions en retrait de 66 px dans l'encadré. */
.mm-article-toc__actions { display: flex; flex-direction: column; gap: 0; padding-left: 4.125rem; }
.mm-article-toc__action { display: inline-flex; align-items: center; gap: 4px; min-height: 40px; text-decoration: none; font: italic 400 var(--maestra-text-base)/1.5 var(--maestra-serif); transition: color var(--maestra-hover-fade) ease; }
.mm-article-toc__action .mm-icon { transition: transform var(--maestra-hover-motion) var(--maestra-ease); }
.mm-article-toc__action:focus-visible { color: var(--maestra-brown); }
.mm-article-toc__action:focus-visible .mm-icon { transform: translateX(-3px); }
@media (hover: hover) {
	.mm-article-toc__list a:hover { color: var(--maestra-ink); }
	.mm-article-toc__action:hover { color: var(--maestra-brown); }
	/* Prototype : l'icône de retour recule de quelques pixels. */
	.mm-article-toc__action:hover .mm-icon { transform: translateX(-3px); }
}
@supports (scroll-target-group: auto) {
	.mm-article-toc__list { scroll-target-group: auto; }
	.mm-article-toc__list a:target-current { color: var(--maestra-ink); }
	.mm-article-toc__list a:target-current::before { width: .75rem; margin-right: var(--maestra-space-2xs); }
}
@media (width <= 68.75rem) {
	.mm-article-toc__actions { padding-left: 0; }
}

/* Corps d'article — template-parts/components/article-body.php, Figma Rich Text 12202:1616.
   Colonne de 768 px ; texte en retrait de 66 px (8,6 %), citations et images sur toute la colonne.
   Tout vient du contenu brut de l'éditeur de blocs : aucune classe à ajouter par la rédactrice. */
.mm-article-body { --mm-article-inset: 8.6%; }
.mm-article-body__content > * { margin: 0 0 0 var(--mm-article-inset); }
.mm-article-body__content > * + * { margin-top: var(--maestra-space-l); }
.mm-article-body__content > :is(p, ul, ol) + :is(p, ul, ol) { margin-top: var(--maestra-space-s); }
.mm-article-body__content > * + h2 { margin-top: var(--maestra-space-xl); }
.mm-article-body__content > p:first-child + h2 { margin-top: var(--maestra-space-l); }
.mm-article-body__content > * + h3 { margin-top: var(--maestra-space-l); }
.mm-article-body__content > h3 + * { margin-top: var(--maestra-space-s); }
.mm-article-body__content :is(p, li) { font-size: var(--maestra-text-base); line-height: 1.8; letter-spacing: -.02em; }
/* Premier paragraphe en chapeau (Figma : STIX 30 px ; token le plus proche, 28 px). */
.mm-article-body__content > p:first-child { font: 400 var(--maestra-h5)/1.5 var(--maestra-serif); letter-spacing: -.02em; text-wrap: pretty; }
.mm-article-body__content h2 { font-size: var(--maestra-h3); font-variant-caps: small-caps; font-synthesis: none; line-height: 1; }
.mm-article-body__content h3 { font-size: var(--maestra-h6); line-height: 1.2; }
.mm-article-body__content :is(ul, ol) { padding-left: 1.5em; }
.mm-article-body__content li + li { margin-top: var(--maestra-space-2xs); }
.mm-article-body__content ul > li::marker { content: "—  "; color: var(--maestra-brown); }
.mm-article-body__content ol > li::marker { color: var(--maestra-brown); font: italic 400 var(--maestra-text-base) var(--maestra-serif); }
.mm-article-body__content a { color: inherit; text-decoration: underline; text-decoration-thickness: 1px; transition: color var(--maestra-hover-fade) ease; }
.mm-article-body__content a:focus-visible { color: var(--maestra-brown); }
/* Citation — Figma : STIX italique 42 px camel, sur toute la colonne. */
.mm-article-body__content > blockquote { margin: calc(2 * var(--maestra-space-m)) 0; padding: 0; border: 0; }
.mm-article-body__content > blockquote + * { margin-top: 0; }
.mm-article-body__content blockquote p { color: var(--maestra-brown); font: italic 400 var(--maestra-editorial)/1 var(--maestra-serif); letter-spacing: .01em; text-wrap: balance; }
.mm-article-body__content blockquote p + p { margin-top: var(--maestra-space-s); }
.mm-article-body__content blockquote cite { display: block; margin-top: var(--maestra-space-s); font: normal 400 var(--maestra-text-sm)/1.6 var(--maestra-sans); }
/* Images de la Médiathèque : pleine colonne quel que soit l'alignement choisi, légende en dessous. */
.mm-article-body__content > figure { margin-left: 0; }
.mm-article-body__content > figure:has(.mm-article-portrait) { width: min(100% - var(--mm-article-inset), 28.75rem); margin-left: var(--mm-article-inset); }
.mm-article-body__content figure img { display: block; width: 100%; height: auto; background: var(--maestra-camel-light); }
.mm-article-body__content figcaption { margin-top: var(--maestra-space-xs); color: var(--maestra-grey); font-size: var(--maestra-text-sm); line-height: 1.6; }
.mm-article-body__content > hr { height: 1px; border: 0; background: var(--maestra-rule); }
.mm-article-body__end { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--maestra-space-2xs) var(--maestra-space-s); margin: calc(2 * var(--maestra-space-m)) 0 0 var(--mm-article-inset); padding-top: var(--maestra-space-l); border-top: 1px solid var(--maestra-rule); font-size: var(--maestra-text-sm); line-height: 1.6; }
@media (hover: hover) {
	.mm-article-body__content a:hover { color: var(--maestra-brown); }
}
/* Photos du corps : même découpe à l'entrée que les médias du site (.mm-media-reveal), CSS seul. */
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.mm-article-body__content > figure img { animation: mm-media-reveal linear both; animation-timeline: view(); animation-range: entry 0% entry 80%; }
	}
}
@media (width <= 68.75rem) {
	.mm-article-body { --mm-article-inset: 0%; }
}
@media (width <= 47.5rem) {
	.mm-article-body__content > blockquote { margin-block: var(--maestra-space-xl); }
}

/* Articles associés — template-parts/components/related-articles.php, Figma « La lecture continue » 12202:1669.
   Filet haut, titre à gauche (colonnes 1 à 3), deux miniatures en colonnes 5 à 12. */
.mm-related { container-type: inline-size; align-items: start; row-gap: var(--maestra-space-l); padding-block: var(--maestra-section); border-top: 1px solid var(--maestra-rule); }
.mm-related__title { grid-column: 1 / 4; font-size: min(var(--maestra-h2), 100cqi / 22); line-height: .9; }
.mm-related__title span { display: block; }
.mm-related__accent { color: var(--maestra-brown); }
.mm-related__list { grid-column: 5 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--maestra-space); align-items: start; }
@media (width <= 68.75rem) {
	.mm-related__title { grid-column: 1 / 4; font-size: min(var(--maestra-h2), 100cqi / 26); }
	.mm-related__list { grid-column: 4 / -1; }
}
@media (width <= 47.5rem) {
	.mm-related__title, .mm-related__list { grid-column: 1 / -1; }
	.mm-related__title { font-size: min(var(--maestra-h2), 100cqi / 6); }
	.mm-related__list { grid-template-columns: minmax(0, 1fr); row-gap: var(--maestra-space-xl); }
}

/* ——— Contact : hero `plain`, formulaire, coordonnées (Figma 12202:1128, prototype V1-Contact) ——— */

/* Hero typographique, variante `plain` (Contact, Figma 12635:13198) : seconde ligne à l'encre, décalée d'une
   colonne (120 px à 1440) au lieu de deux ; sans surtitre, texte ni flèche, le bas du hero et son filet
   ne sont pas rendus. */
.mm-text-hero--plain .mm-text-hero__line--accent { padding-left: calc((100% + var(--maestra-space)) / 12); color: inherit; }
/* Aucun mot coupé : « rencontre. » (5,63 em) après le décalage d'une colonne. */
.language-fr .mm-text-hero--plain .mm-text-hero__title { font-size: min(var(--maestra-display), 100cqi / 6.2); }

/* Formulaire de contact — template-parts/components/contact-form.php, Figma 12202:1180 : cadre à filet de
   24 px de marge intérieure, 32 px entre le titre et les champs ; titre H4 (36 px) en petites capitales, texte
   18 px ; labels STIX italiques, champs de 48 px à filet (message : 180 px), case de 18 px, bouton pleine largeur. */
.mm-contact-form { display: flex; flex-direction: column; gap: var(--maestra-space-m); padding: var(--maestra-space-s); border: 1px solid var(--maestra-rule); scroll-margin-top: var(--maestra-space-xl); }
.mm-contact-form:focus { outline: none; }
.mm-contact-form__title { font-size: var(--maestra-h3); line-height: 1; }
.mm-contact-form__text { margin-top: var(--maestra-space-s); font-size: var(--maestra-text-lg); line-height: 1.6; }
.mm-contact-form__form { display: flex; flex-direction: column; gap: var(--maestra-space-s); }
.mm-contact-form__pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--maestra-space-s); }
.mm-contact-form__field { display: flex; flex-direction: column; gap: var(--maestra-space-2xs); min-width: 0; }
.mm-contact-form__field label { font: italic 400 var(--maestra-text-base)/1.5 var(--maestra-serif); }
.mm-contact-form :is(input:not([type="checkbox"]), textarea) { display: block; width: 100%; min-height: 48px; margin: 0; padding: var(--maestra-space-2xs) .75rem; border: 1px solid var(--maestra-rule); border-radius: 0; background: transparent; color: var(--maestra-ink); font: 400 var(--maestra-text-base)/1.5 var(--maestra-sans); appearance: none; transition: border-color var(--maestra-hover-fade) ease, box-shadow var(--maestra-hover-fade) ease; }
.mm-contact-form textarea { min-height: 11.25rem; padding-block: .75rem; resize: vertical; }
.mm-contact-form textarea::placeholder { color: var(--maestra-grey); opacity: 1; font: italic 400 var(--maestra-text-base)/1.5 var(--maestra-serif); }
.mm-contact-form :is(input, textarea):focus-visible { border-color: var(--maestra-brown); outline: 2px solid var(--maestra-brown); outline-offset: -1px; }
/* Erreurs : filet camel doublé et message sous le champ (serveur : aria-invalid ; navigateur : :user-invalid). */
.mm-contact-form :is(input, textarea):is([aria-invalid="true"], :user-invalid) { border-color: var(--maestra-brown); box-shadow: inset 0 0 0 1px var(--maestra-brown); }
.mm-contact-form__error { color: var(--maestra-brown); font-size: var(--maestra-text-sm); line-height: 1.5; }
.mm-contact-form__summary { display: flex; flex-direction: column; gap: var(--maestra-space-2xs); padding: var(--maestra-space-xs); background: color-mix(in srgb, var(--maestra-brown) 8%, transparent); color: var(--maestra-brown); font-size: var(--maestra-text-sm); line-height: 1.6; }
.mm-contact-form__summary ul { margin: 0; padding-left: 1.2em; }
.mm-contact-form__summary a { overflow-wrap: anywhere; }
/* Case « J'accepte la politique de confidentialité » (Figma : carré de 18 px à filet, DM Sans 14 px) ;
   le label agrandit la cible. Cochée : carré encre dans le cadre. */
.mm-contact-form__consent { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; column-gap: var(--maestra-space-2xs); }
.mm-contact-form__consent input { flex: none; width: 18px; height: 18px; margin: 0; border: 1px solid var(--maestra-rule); background: transparent; appearance: none; cursor: pointer; transition: background-color var(--maestra-hover-fade) ease; }
.mm-contact-form__consent input:checked { background: var(--maestra-ink); box-shadow: inset 0 0 0 3px var(--maestra-paper); }
.mm-contact-form__consent label { padding-block: .125rem; font-size: var(--maestra-text-sm); line-height: 1.6; cursor: pointer; }
.mm-contact-form__consent a { text-decoration-thickness: 1px; transition: color var(--maestra-hover-fade) ease; }
.mm-contact-form__consent .mm-contact-form__error { grid-column: 1 / -1; }
/* Champ piège : hors de l'écran et de l'arbre d'accessibilité (aria-hidden), jamais atteint au clavier. */
.mm-turnstile { max-width: 100%; }
.mm-turnstile:not(:empty) { margin-top: var(--maestra-space-2xs); }
.mm-turnstile__fallback { margin: var(--maestra-space-2xs) 0 0; font-size: var(--maestra-text-xs); line-height: 1.5; }
.mm-contact-form__trap, .mm-newsletter__trap { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
/* Confirmation (absente de Figma) : dans le même cadre et avec le même titre, liens vers la suite. */
.mm-contact-form__done { display: flex; flex-direction: column; align-items: flex-start; min-height: 20rem; }
.mm-contact-form__links { display: flex; flex-direction: column; align-items: flex-start; margin-top: auto; padding-top: var(--maestra-space-l); }
.mm-contact-form__back { display: inline-flex; align-items: center; min-height: 44px; font-size: var(--maestra-text-sm); text-decoration-thickness: 1px; transition: color var(--maestra-hover-fade) ease; }
@media (hover: hover) {
	.mm-contact-form__consent a:hover, .mm-contact-form__back:hover { color: var(--maestra-brown); }
	.mm-contact-form__consent input:hover { border-color: var(--maestra-ink); }
}
@media (width <= 47.5rem) {
	.mm-contact-form__pair { grid-template-columns: minmax(0, 1fr); }
}
@media (width <= 22.5rem) {
	.mm-contact-form { padding: var(--maestra-space-xs); }
}
@media (forced-colors: active) {
	.mm-contact-form__summary { border: 1px solid CanvasText; }
	.mm-contact-form__consent input { border-color: CanvasText; }
	.mm-contact-form__consent input:checked { background: CanvasText; }
}

/* Coordonnées — template-parts/components/contact-details.php, Figma 12202:1200 : titre H2 (48 px) en
   petites capitales colonnes 1 à 6, lignes colonnes 7 à 12 entre filets, 48 px entre elles ; pictogramme
   de 48 px, intitulé en capitales (DM Sans 500, 14 px), valeur STIX 32 px, flèche des liens au survol
   (déplacement diagonal de 2 px sur 600 ms). */
.mm-contact-details { align-items: start; }
.mm-contact-details__title { grid-column: 1 / 7; font-size: var(--maestra-h2); line-height: .9; text-wrap: initial; }
.mm-contact-details__list { grid-column: 7 / -1; display: flex; flex-direction: column; gap: var(--maestra-space-l); margin: 0; padding: 0; list-style: none; }
.mm-contact-details__item { display: flex; align-items: flex-start; gap: var(--maestra-space-s); padding-top: var(--maestra-space-s); border-top: 1px solid var(--maestra-rule); }
.mm-contact-details__icon { flex: none; width: 3rem; height: 3rem; }
.mm-contact-details__content { container-type: inline-size; display: flex; flex-direction: column; gap: var(--maestra-space-xs); flex: 1; min-width: 0; font-style: normal; }
.mm-contact-details__label { font: 500 var(--maestra-text-sm)/1.5 var(--maestra-sans); letter-spacing: .06em; text-transform: uppercase; }
/* La valeur la plus longue (l'adresse email, 13,4 em, flèche comprise) tient sur une ligne tant que le texte
   garde 18 px ; en deçà, elle passe à la ligne avant l'arobase (<wbr>), jamais au milieu d'un mot. */
.mm-contact-details__value { font: 400 clamp(1.125rem, (100cqi - 2.25rem) / 13.6, var(--maestra-h4))/1.1 var(--maestra-serif); letter-spacing: .01em; overflow-wrap: anywhere; }
.mm-contact-details__link { display: flex; align-items: center; justify-content: space-between; gap: var(--maestra-space-xs); min-height: 44px; margin-block: -.375rem; text-decoration: none; transition: color var(--maestra-hover-fade) ease; }
.mm-contact-details__link .mm-icon { transition: transform var(--maestra-hover-motion) var(--maestra-ease); }
.mm-contact-details__link:focus-visible .mm-icon { transform: translate(2px, -2px); }
.mm-contact-details__note { font-size: var(--maestra-text-base); line-height: 1.5; letter-spacing: -.02em; }
@media (hover: hover) {
	.mm-contact-details__link:hover { color: var(--maestra-brown); }
	.mm-contact-details__link:hover .mm-icon { transform: translate(2px, -2px); }
}
/* Apparition une seule fois à l'entrée à l'écran (déclencheur CSS, comme l'ornement de statement) :
   titre, puis les trois lignes à 120 ms d'intervalle. Sans prise en charge : visibles d'emblée. */
@supports (timeline-trigger: --t view()) {
	@media (prefers-reduced-motion: no-preference) {
		.mm-contact-details { timeline-trigger: --mm-contact-details view() entry 30% exit 100%; }
		.mm-contact-details__title, .mm-contact-details__item { animation: mm-reveal 1.2s var(--maestra-ease) both; animation-trigger: --mm-contact-details play-once; }
		.mm-contact-details__item:nth-child(1) { animation-delay: .12s; }
		.mm-contact-details__item:nth-child(2) { animation-delay: .24s; }
		.mm-contact-details__item:nth-child(3) { animation-delay: .36s; }
	}
}
@media (width <= 68.75rem) {
	.mm-contact-details__title { grid-column: 1 / 6; }
	.mm-contact-details__list { grid-column: 6 / -1; }
}
@media (width <= 47.5rem) {
	.mm-contact-details { row-gap: var(--maestra-space-l); }
	.mm-contact-details__title, .mm-contact-details__list { grid-column: 1 / -1; }
	.mm-contact-details__item { gap: var(--maestra-space-xs); }
	.mm-contact-details__icon { width: 2.25rem; height: 2.25rem; }
}

/* Ouverture d'erreur .mm-error-hero — Figma 404 (12202:886), mouvements du prototype V1-404 en CSS seul. */
.mm-error-hero { align-content: center; align-items: center; min-height: max(100svh, 45rem); padding-block: 7.5rem; }
.mm-error-hero__copy { grid-column: 1 / 7; max-width: 35rem; container-type: inline-size; }
.mm-error-hero__notice { display: block; margin-bottom: var(--maestra-space-s); font: 500 var(--maestra-h5)/1.2 var(--maestra-serif); font-variant-caps: small-caps; letter-spacing: -.01em; color: var(--maestra-white); }
/* « votre chemin. » mesure 6,95 em : taille plafonnée pour ne jamais couper un mot (règle responsive 3). */
.mm-error-hero__line { display: block; font-size: min(var(--maestra-h1), 100cqi / 7.2); line-height: .9; color: var(--maestra-pink); }
.mm-error-hero__text { max-width: 22.0625rem; margin-top: var(--maestra-space-s); font: italic 400 var(--maestra-text-base)/1.5 var(--maestra-serif); }
.mm-error-hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--maestra-space-xs); margin-top: var(--maestra-space-m); }
.mm-error-hero :focus-visible { outline-color: var(--maestra-white); }
/* Bouton crème (Figma « Accueil ») : modificateur du composant button, avec `rose` pour le survol. */
.mm-button--paper { background: var(--maestra-paper); color: var(--maestra-ink); }

/* Code — Figma : trois chiffres STIX 400 de 340 px à 1440 (50 % de la colonne), alignés à droite,
   interlettrage −8 %, 4 roses et 0 blanc. Chaque chiffre a deux calques : l'extérieur s'écarte
   au défilement, l'intérieur porte l'entrée ; au repos, aucun décalage. */
.mm-error-hero__code { grid-column: 7 / 13; container-type: inline-size; user-select: none; pointer-events: none; }
/* top : place les chiffres de Figma (haut du 4 à 338 px), le bloc de STIX étant centré plus haut que celui de Figma. */
.mm-error-hero__digits { position: relative; top: .056em; display: flex; justify-content: flex-end; padding-right: .08em; font: 400 50cqi/.9 var(--maestra-serif); font-variant-numeric: lining-nums; font-synthesis: none; letter-spacing: -.08em; color: var(--maestra-pink); }
.mm-error-hero__digit > span { display: block; }
.mm-error-hero__digit:nth-child(2) { color: var(--maestra-white); }

/* Entrée unique (prototype V1-404) : les chiffres, visibles d'emblée (élément LCP possible), montent
   jusqu'à leur place Figma ; le texte et les actions montent en fondu. Le h1 n'est jamais masqué. */
@media (prefers-reduced-motion: no-preference) {
	.mm-error-hero__digit:nth-child(1) > span { animation: mm-error-rise 1.7s .05s var(--maestra-ease) both; --mm-error-from: .12em; }
	.mm-error-hero__digit:nth-child(2) > span { animation: mm-error-rise 2s .18s var(--maestra-ease) both; --mm-error-from: .1em; }
	.mm-error-hero__digit:nth-child(3) > span { animation: mm-error-rise 1.8s .3s var(--maestra-ease) both; --mm-error-from: .115em; }
	.mm-error-hero__text, .mm-error-hero__actions { animation: mm-opening-type 1.25s .36s var(--maestra-ease) both; }
	.mm-error-hero__actions { animation-delay: .44s; }
}
@keyframes mm-error-rise { from { transform: translateY(var(--mm-error-from)); } }

/* Au défilement, les chiffres s'écartent un peu pendant que l'ouverture quitte l'écran
   (prototype : 12, −20 et 7 px pour 340 px). */
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.mm-error-hero { view-timeline: --mm-error-hero; }
		.mm-error-hero__digit { animation: mm-error-drift linear both; animation-timeline: --mm-error-hero; animation-range: exit 0% exit 100%; }
		.mm-error-hero__digit:nth-child(1) { --mm-error-drift: .035em; }
		.mm-error-hero__digit:nth-child(2) { --mm-error-drift: -.06em; }
		.mm-error-hero__digit:nth-child(3) { --mm-error-drift: .02em; }
	}
}
@keyframes mm-error-drift { to { translate: 0 var(--mm-error-drift); } }

/* Téléphones (responsive proposé par l’IA, D12) : les chiffres au-dessus du texte, alignés à droite. */
@media (width <= 47.5rem) {
	.mm-error-hero { row-gap: var(--maestra-space-xl); min-height: 100svh; padding-block: 6.5rem var(--maestra-section); }
	.mm-error-hero__code { grid-column: 2 / -1; grid-row: 1; justify-self: end; width: 100%; max-width: 23rem; }
	.mm-error-hero__digits { font-size: 74cqi; }
	.mm-error-hero__copy { grid-column: 1 / -1; grid-row: 2; }
}

/* ——— Pages légales : hero simple, chapitres numérotés, sommaire numéroté (Figma Mentions légales 12202:575) ——— */
/* Hero simple — template-parts/components/simple-hero.php, Figma 12202:624 : 192 px au-dessus du fil d'Ariane
   (112 + 80) et sous le titre ; titre H1 64 px colonnes 1 à 6, introduction 18 px colonnes 9 à 12, en bas. */
.mm-simple-hero { container-type: inline-size; align-items: end; row-gap: 0; padding-block: calc(var(--maestra-section) + var(--maestra-space-xl)); }
.mm-simple-hero > .mm-breadcrumbs { grid-column: 1 / -1; }
.mm-simple-hero__title { grid-column: 1 / 7; margin-top: var(--maestra-space-s); line-height: .9; text-wrap: initial; }
.mm-simple-hero__title:focus { outline: none; }
.mm-simple-hero__line { display: block; }
.mm-simple-hero__text { grid-column: 9 / 13; font-size: var(--maestra-text-lg); line-height: 1.6; }
/* Tablette : colonnes resserrées ; téléphone : introduction sous le titre, décalée d'une colonne (règle
   responsive 4), pleine largeur sous xs. Aucun mot coupé : titre plafonné par la largeur (« confidentialité »,
   8,02 em, mot le plus long des pages légales). */
@media (width <= 68.75rem) {
	.mm-simple-hero__title { grid-column: 1 / 8; }
	.mm-simple-hero__text { grid-column: 8 / 13; }
}
@media (width <= 47.5rem) {
	.mm-simple-hero__title { grid-column: 1 / -1; font-size: min(var(--maestra-h1), 100cqi / 8.2); }
	.mm-simple-hero__text { grid-column: 2 / 7; margin-top: var(--maestra-space-l); }
}
@media (width <= 22.5rem) {
	.mm-simple-hero__text { grid-column: 1 / -1; }
}

/* Chapitres numérotés — template-parts/components/chapters.php, Figma 12202:633 : titre H2 48 px, puis
   48 px entre les chapitres ; chacun sous un filet, 24 px de marge, numéro italique camel (Figma : 24 px,
   token le plus proche 21 px), intitulé 36 px, texte justifié de 642 px au plus. */
.mm-chapters__title { font-size: var(--maestra-h2); line-height: .9; }
.mm-chapters__list { display: flex; flex-direction: column; gap: var(--maestra-space-l); margin: var(--maestra-space-l) 0 0; padding: 0; list-style: none; }
.mm-chapters__item { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: first baseline; column-gap: var(--maestra-space-s); padding-block: var(--maestra-space-s); border-top: 1px solid var(--maestra-rule); }
.mm-chapters__number { color: var(--maestra-brown); font: italic 400 var(--maestra-h6)/1.5 var(--maestra-serif); }
.mm-chapters__body { display: flex; flex-direction: column; align-items: flex-start; gap: var(--maestra-space-s); max-width: 40.125rem; }
.mm-chapters__heading { font-size: var(--maestra-h3); line-height: 1; }
.mm-chapters__body p { align-self: stretch; letter-spacing: -.02em; text-align: justify; hyphens: auto; text-wrap: wrap; }
/* Lien texte : 24 px sous le texte, comme Figma, sans que sa cible de 44 px n'agrandisse le chapitre. */
.mm-chapters__body .mm-text-link { margin-block: -.625rem; }
/* Variante figure — Figma Nos engagements (12202:2475) : photo 469 × 623 collante à gauche (colonnes 2 à 5),
   chapitres colonnes 7 à 12, intitulés de 476 px et texte 14 px de 430 px au plus. */
.mm-chapters--figure { grid-column: 1 / -1; align-items: start; }
.mm-chapters--figure .mm-chapters__photo { grid-column: 2 / 6; position: sticky; top: var(--maestra-space-l); aspect-ratio: 469 / 623; }
.mm-chapters--figure .mm-chapters__list { grid-column: 7 / 13; margin: 0; }
.mm-chapters--figure .mm-chapters__body { max-width: 29.75rem; }
.mm-chapters--figure .mm-chapters__body p { max-width: 26.875rem; font-size: var(--maestra-text-sm); line-height: 1.6; letter-spacing: 0; }
@media (47.5rem < width <= 68.75rem) {
	.mm-chapters--figure .mm-chapters__photo { grid-column: 1 / 6; }
}
@media (width <= 47.5rem) {
	.mm-chapters__body p { text-align: left; hyphens: manual; text-wrap: pretty; }
	.mm-chapters--figure { row-gap: var(--maestra-space-l); }
	.mm-chapters--figure .mm-chapters__photo { position: static; grid-column: 1 / 6; }
	.mm-chapters--figure .mm-chapters__list { grid-column: 1 / -1; }
}
/* Apparition unique des intitulés (prototype : fondu et montée de 14 px, 1 à 1,2 s), quand ils entrent à
   l'écran ; déclencheur CSS, comme l'ornement de statement. Les textes restent toujours visibles.
   Sans prise en charge ou en mouvement réduit : intitulés immobiles, visibles. */
@supports (timeline-trigger: --t view()) {
	@media (prefers-reduced-motion: no-preference) {
		.mm-chapters__title { timeline-trigger: --mm-chapters-title view() entry 100% cover 100%; animation: mm-chapter-in 1.2s var(--maestra-ease) both; animation-trigger: --mm-chapters-title play-once; }
		.mm-chapters__item { timeline-trigger: --mm-chapter view() entry 30% cover 100%; }
		.mm-chapters__number, .mm-chapters__heading { animation: mm-chapter-in 1.2s var(--maestra-ease) both; animation-trigger: --mm-chapter play-once; }
		.mm-chapters__heading { animation-delay: 80ms; }
	}
}
@keyframes mm-chapter-in { from { opacity: 0; translate: 0 .875rem; } to { opacity: 1; translate: 0 0; } }

/* Sommaire, variante numbered — article-toc.php, Figma 12635:24271 : numéro italique à gauche, intitulé
   à droite en DM Sans ; section en cours en camel, soulignée d'un filet qui se dessine (CSS seul,
   scroll-target-group) ; « Retour en haut » sous un filet, sans retrait. */
.mm-article-toc--numbered .mm-article-toc__list a { justify-content: space-between; gap: var(--maestra-space-s); min-height: 3rem; padding-block: .75rem; color: var(--maestra-ink); font: 400 var(--maestra-text-base)/1.5 var(--maestra-sans); letter-spacing: -.02em; }
.mm-article-toc--numbered .mm-article-toc__list a::before { display: none; }
.mm-article-toc--numbered .mm-article-toc__list a::after { position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: var(--maestra-brown); transform: scaleX(0); transform-origin: left center; transition: transform 650ms var(--maestra-ease); content: ""; }
.mm-article-toc__number { color: var(--maestra-ink); font: italic 400 var(--maestra-text-base)/1.5 var(--maestra-serif); letter-spacing: 0; }
.mm-article-toc__label { text-align: right; }
.mm-article-toc--numbered .mm-article-toc__list a:focus-visible { color: var(--maestra-brown); }
.mm-article-toc--numbered .mm-article-toc__actions { padding: var(--maestra-space-s) 0 0; border-top: 1px solid var(--maestra-rule); }
.mm-article-toc--numbered .mm-article-toc__action:focus-visible .mm-icon { transform: translate(3px, -3px); }
@media (hover: hover) {
	.mm-article-toc--numbered .mm-article-toc__list a:hover { color: var(--maestra-brown); }
	/* Flèche diagonale : elle monte vers la droite, comme le lien texte. */
	.mm-article-toc--numbered .mm-article-toc__action:hover .mm-icon { transform: translate(3px, -3px); }
}
@supports (scroll-target-group: auto) {
	.mm-article-toc--numbered .mm-article-toc__list a:target-current { color: var(--maestra-brown); }
	.mm-article-toc--numbered .mm-article-toc__list a:target-current::after { transform: scaleX(1); }
}
/* Contraste forcé : le filet de la section en cours reste visible (fond système). */
@media (forced-colors: active) {
	.mm-article-toc--numbered .mm-article-toc__list a::after { background: CanvasText; }
}

@media (forced-colors: active) {
	.mm-menu__drawer { border: 1px solid CanvasText; }
	.mm-icon { forced-color-adjust: none; }
	.mm-button { border: 1px solid ButtonText; }
}
/* White (inverted) pictures would vanish on a light forced-colours canvas: show their dark original. */
@media (forced-colors: active) and (prefers-color-scheme: light) {
	.mm-header--inverse .mm-header__brand img, .mm-icon--white, .mm-scroll-cue img { filter: none; }
}
