/* minutely — feuille de style du site, v2.
   La page vit sur Bone, les cartes se lèvent en blanc, l'encre est réservée au final.
   Toutes les valeurs viennent de brand/tokens.css. Ne rien coder en dur. */

@import url('brand/tokens.css');

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
html, body { margin: 0; padding: 0; }

body {
  background: var(--mn-bg);
  color: var(--mn-text);
  font-family: var(--mn-font-body);
  font-size: var(--mn-text-body);
  line-height: var(--mn-leading-normal);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: clip;
}

img { max-width: 100%; }
::selection { background: var(--mn-orange); color: var(--mn-white); }

/* Un grain de papier, à peine perceptible : la matière du print */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 2000;
  pointer-events: none;
  opacity: 0.30;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' seed='7'/><feColorMatrix values='0 0 0 0 0.078  0 0 0 0 0.071  0 0 0 0 0.063  0 0 0 0.05 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

:focus-visible {
  outline: 2px solid var(--mn-focus-ring);
  outline-offset: 2px;
}

/* ============ LAYOUT ============ */
.wrap {
  max-width: var(--mn-container);
  margin-inline: auto;
  padding-inline: var(--mn-gutter);
}
.section { padding: clamp(5rem, 4rem + 5vw, 8.5rem) 0; }
/* Section sur blanc pur : le rythme des fonds. Les surfaces s'inversent en Bone. */
.section--alt {
  background: var(--mn-white);
  --mn-surface: var(--mn-bone-card);
}
.section--tight { padding: clamp(3.5rem, 3rem + 2.5vw, 5rem) 0; }
section[id], header[id] { scroll-margin-top: 6rem; }

[data-theme="ink"] { background: var(--mn-bg); color: var(--mn-text); }

/* ============ TYPOGRAPHIE ============ */
h1, h2, h3, h4 {
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-bold);
  letter-spacing: var(--mn-tracking-tight);
  line-height: var(--mn-leading-tight);
  color: var(--mn-text);
  margin: 0 0 var(--mn-space-6);
  text-wrap: balance;
}
h1 { font-size: var(--mn-text-hero); font-weight: var(--mn-weight-extrabold); letter-spacing: -0.03em; line-height: 1.02; }
h2 { font-size: var(--mn-text-h2); font-weight: var(--mn-weight-extrabold); letter-spacing: -0.025em; }
h3 { font-size: var(--mn-text-h3); margin-bottom: var(--mn-space-2); }
.card h3 { letter-spacing: -0.02em; }
h4 { font-size: var(--mn-text-small); margin-bottom: var(--mn-space-4); }

p { margin: 0 0 var(--mn-space-4); max-width: var(--mn-container-text); }
p:last-child { margin-bottom: 0; }

a { color: var(--mn-link); }

.lead {
  font-size: var(--mn-text-lead);
  line-height: 1.55;
  color: var(--mn-text-muted);
  max-width: var(--mn-container-text);
}
.muted { color: var(--mn-text-muted); }
.accent { color: var(--mn-orange); }
.mono { font-family: var(--mn-font-mono); }

/* Surtitre — un tic, puis le mot. Toujours au-dessus du titre. */
.eyebrow {
  display: flex;
  align-items: center;
  gap: var(--mn-space-3);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  font-weight: var(--mn-weight-regular);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: var(--mn-accent);
  margin: 0 0 var(--mn-space-5, 1.25rem);
}
.eyebrow::before {
  content: "";
  width: var(--mn-space-4);
  height: 2px;
  background: var(--mn-orange);
  flex: none;
}

/* En-tête de section : numéro sur rail, titre large */
.section-head { margin-bottom: clamp(3rem, 2.5rem + 2.5vw, 4.5rem); }
.section-head h2 { margin-bottom: var(--mn-space-4); max-width: 24ch; }
.section-head .lead { max-width: 52ch; }

/* ============ BOUTONS ============ */
.btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--mn-space-2);
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-bold);
  /* 19 px gras = « grand texte » WCAG : le blanc sur Signal Orange (3,4:1) tient à cette taille. */
  font-size: 1.1875rem;
  line-height: 1.2;
  padding: var(--mn-space-3) var(--mn-space-6);
  border-radius: var(--mn-radius-pill);
  border: var(--mn-border-width) solid transparent;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--mn-duration) var(--mn-ease),
              color var(--mn-duration) var(--mn-ease),
              border-color var(--mn-duration) var(--mn-ease),
              transform var(--mn-duration) var(--mn-ease),
              box-shadow var(--mn-duration) var(--mn-ease);
}
.btn:active { transform: scale(0.98); }
.btn--primary {
  background: var(--mn-orange);
  color: var(--mn-white);
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--mn-white) 30%, transparent),
              0 1px 2px rgba(20,18,16,0.08),
              0 8px 24px -8px color-mix(in srgb, var(--mn-orange) 55%, transparent);
}
.btn--primary:hover {
  background: var(--mn-orange-deep);
  color: var(--mn-white);
  transform: translateY(-1px);
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--mn-white) 24%, transparent),
              0 2px 4px rgba(20,18,16,0.08),
              0 14px 32px -10px color-mix(in srgb, var(--mn-orange) 60%, transparent);
}
.btn--secondary {
  background: transparent;
  color: var(--mn-text);
  border-color: color-mix(in srgb, var(--mn-text) 24%, transparent);
}
.btn--secondary:hover {
  background: var(--mn-surface);
  color: var(--mn-text);
  border-color: color-mix(in srgb, var(--mn-text) 40%, transparent);
}
.btn--sm { padding: var(--mn-space-2) var(--mn-space-4); font-size: var(--mn-text-small); box-shadow: none; }
/* Sous le seuil du « grand texte », l'aplat descend en Deep Orange (5,0:1 avec le blanc). */
.btn--primary.btn--sm { background: var(--mn-orange-deep); }
.btn--primary.btn--sm:hover { background: var(--mn-orange-deep); border-color: var(--mn-white); transform: none; }
.btn svg { flex: none; transition: transform var(--mn-duration) var(--mn-ease); }
.btn:hover svg { transform: translateX(0.1875rem); }

.btn-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--mn-space-3);
  align-items: center;
}

/* ============ CARTES ============ */
.card {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--mn-surface);
  border: var(--mn-border-width) solid color-mix(in srgb, var(--mn-ink) 9%, transparent);
  border-radius: var(--mn-radius-lg);
  padding: clamp(1.5rem, 1.2rem + 1.2vw, 2.25rem);
  /* filet de lumière en crête + ombre étagée : le relief d'un objet posé */
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--mn-white) 85%, transparent),
              var(--mn-shadow-sm);
  transition: box-shadow var(--mn-duration-slow) var(--mn-ease-out),
              transform var(--mn-duration-slow) var(--mn-ease-out),
              border-color var(--mn-duration) var(--mn-ease);
}
/* La carte encre : l'objet sombre posé sur la page claire — le seul noir autorisé
   hors ruban et final. Ses tokens internes passent au thème sombre d'un bloc. */
.card--ink {
  background: var(--mn-ink);
  --mn-surface: var(--mn-ink-raised);
  --mn-surface-sunken: color-mix(in srgb, var(--mn-ink) 88%, black);
  --mn-text: var(--mn-bone);
  --mn-text-muted: var(--mn-warm-grey-light);
  --mn-border: rgba(246, 243, 239, 0.16);
  --mn-link: var(--mn-orange);
  --mn-accent: var(--mn-orange);
  color: var(--mn-text);
  border-color: transparent;
  box-shadow: var(--mn-shadow-lg);
}
.card--ink:hover {
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--mn-white) 8%, transparent),
              0 6px 12px rgba(20,18,16,0.10),
              0 40px 88px -24px rgba(20,18,16,0.38);
}
.card--ink.res--star { border-color: var(--mn-orange); }

/* Sur une bande encre, la carte redevient claire : un objet lumineux posé sur
   la scène sombre. Ses tokens internes repassent au thème clair — tout suit. */
[data-theme="ink"] .card {
  background: var(--mn-bone);
  --mn-surface: var(--mn-white);
  --mn-surface-sunken: var(--mn-bone-card);
  --mn-text: var(--mn-ink);
  --mn-text-muted: var(--mn-warm-grey);
  --mn-border: var(--mn-hairline);
  --mn-link: var(--mn-orange-deep);
  --mn-accent: var(--mn-orange-deep);
  color: var(--mn-text);
  border-color: transparent;
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--mn-white) 70%, transparent),
              0 8px 20px -8px rgba(0,0,0,0.55),
              0 32px 64px -24px rgba(0,0,0,0.5);
}
.card:hover { box-shadow: inset 0 1px 0 color-mix(in srgb, var(--mn-white) 85%, transparent), var(--mn-shadow-md); }
[data-theme="ink"] .card:hover {
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--mn-white) 70%, transparent),
              0 10px 24px -8px rgba(0,0,0,0.6),
              0 40px 80px -24px rgba(0,0,0,0.55);
}
.card--link { text-decoration: none; color: var(--mn-text); }
.card--link:hover {
  transform: translateY(-0.375rem);
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--mn-white) 85%, transparent), var(--mn-shadow-lg);
  border-color: color-mix(in srgb, var(--mn-orange) 28%, var(--mn-border));
}

/* La lumière du curseur : chaque carte s'éclaire sous la main */
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .card::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    z-index: 1;
    background: radial-gradient(18rem circle at var(--mx, 50%) var(--my, 50%),
                color-mix(in srgb, var(--mn-orange) 8%, transparent), transparent 60%);
    opacity: 0;
    transition: opacity 0.35s var(--mn-ease);
  }
  .card:hover::before { opacity: 1; }
  .card--ink::before {
    background: radial-gradient(18rem circle at var(--mx, 50%) var(--my, 50%),
                color-mix(in srgb, var(--mn-orange) 14%, transparent), transparent 60%);
  }
}
.bento-cell { transition: background var(--mn-duration-slow) var(--mn-ease-out), box-shadow var(--mn-duration-slow) var(--mn-ease-out); }
.bento-cell:hover {
  background: color-mix(in srgb, var(--mn-orange) 4%, transparent);
  box-shadow: inset 0 3px 0 var(--mn-orange);
}
.card--link:active { transform: translateY(-2px) scale(0.995); }

/* Le numéro fantôme : filigrane géant gravé dans le papier */
.card-num {
  position: absolute;
  top: 0.25rem;
  right: 1.25rem;
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-extrabold);
  font-size: clamp(4rem, 3.2rem + 3.4vw, 6rem);
  line-height: 1.1;
  letter-spacing: -0.04em;
  color: color-mix(in srgb, var(--mn-text) 7%, transparent);
  font-variant-numeric: tabular-nums;
  pointer-events: none;
  user-select: none;
  transition: color var(--mn-duration-slow) var(--mn-ease-out);
}
.card:hover .card-num { color: color-mix(in srgb, var(--mn-orange) 22%, transparent); }
.card-num--sm { font-size: clamp(3rem, 2.6rem + 1.8vw, 4rem); }

/* La plaque d'icône : le glyphe métier qui s'allume au survol */
.icon-plate {
  width: 3.25rem;
  height: 3.25rem;
  flex: none;
  display: grid;
  place-items: center;
  border-radius: 0.9375rem;
  background: color-mix(in srgb, var(--mn-orange) 10%, transparent);
  color: var(--mn-orange-deep);
  margin-bottom: var(--mn-space-5, 1.25rem);
  transition: background var(--mn-duration-slow) var(--mn-ease-out),
              color var(--mn-duration-slow) var(--mn-ease-out),
              transform var(--mn-duration-slow) var(--mn-ease-out);
}
.card:hover .icon-plate {
  background: var(--mn-orange);
  color: var(--mn-white);
  transform: scale(1.06) rotate(-3deg);
}

/* La ligne FOMO : la phrase qui referme la grille */
.fomo-line {
  display: flex;
  align-items: center;
  gap: var(--mn-space-3);
  margin-top: var(--mn-space-8);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-small);
  letter-spacing: 0.04em;
  color: var(--mn-text-muted);
}
.fomo-line::before {
  content: "";
  flex: none;
  width: var(--mn-space-4);
  height: 2px;
  background: var(--mn-orange);
}
.fomo-line b { color: var(--mn-text); font-weight: var(--mn-weight-bold); }

/* Index horloger en coin de carte — la petite gravure qui signe l'objet */
.card-index {
  position: absolute;
  top: clamp(1.25rem, 1rem + 1vw, 1.75rem);
  right: clamp(1.25rem, 1rem + 1vw, 1.75rem);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.18em;
  color: color-mix(in srgb, var(--mn-text) 32%, transparent);
  user-select: none;
}
.card-index::before {
  content: "";
  display: inline-block;
  width: 0.5rem;
  height: 2px;
  background: var(--mn-orange);
  vertical-align: 0.2em;
  margin-right: 0.5rem;
}

.grid { display: grid; gap: var(--mn-space-6); }
.grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 64rem) { .grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 56rem) { .grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 40rem) {
  .grid--2, .grid--3, .grid--4 { grid-template-columns: minmax(0, 1fr); }
}

/* ============ BANDEAU D'ANNONCE ============ */
.announce {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--mn-space-3);
  flex-wrap: wrap;
  padding: var(--mn-space-3) var(--mn-gutter);
  background: var(--mn-ink);
  color: var(--mn-bone);
  text-decoration: none;
  font-size: var(--mn-text-caption);
  font-family: var(--mn-font-mono);
  letter-spacing: 0.04em;
}
.announce b { color: var(--mn-orange); font-weight: var(--mn-weight-bold); }
.announce span { color: var(--mn-warm-grey-light); }
.announce:hover b { color: var(--mn-white); }

/* ============ NAV — claire, verre dépoli ============ */
.nav {
  position: sticky;
  top: 0;
  z-index: 50;
  background: color-mix(in srgb, var(--mn-bone) 82%, transparent);
  backdrop-filter: blur(14px) saturate(1.4);
  -webkit-backdrop-filter: blur(14px) saturate(1.4);
  border-bottom: var(--mn-border-width) solid transparent;
  transition: border-color var(--mn-duration) var(--mn-ease),
              background var(--mn-duration) var(--mn-ease);
}
.nav.is-scrolled {
  background: color-mix(in srgb, var(--mn-bone) 92%, transparent);
  border-bottom-color: var(--mn-hairline);
  box-shadow: 0 8px 24px -18px rgba(20, 18, 16, 0.28);
}
/* la nav se resserre en défilant : le geste des grandes maisons */
.nav-inner { transition: min-height 280ms var(--mn-ease-out); }
.nav.is-scrolled .nav-inner { min-height: 3.875rem; }
/* Les pages qui gardent une nav encre la déclarent avec data-theme="ink" */
.nav[data-theme="ink"] {
  background: color-mix(in srgb, var(--mn-ink) 88%, transparent);
}
.nav[data-theme="ink"].is-scrolled {
  background: color-mix(in srgb, var(--mn-ink) 96%, transparent);
  border-bottom-color: var(--mn-border);
}
.nav-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--mn-space-6);
  min-height: 4.75rem;
}
.mn-logo { display: inline-flex; align-items: center; text-decoration: none; }
.mn-logo img { display: block; height: 1.625rem; width: auto; }
/* La signature, enfin lisible : détachée du logotype par un filet */
.logo-sig {
  margin-left: var(--mn-space-4);
  padding-left: var(--mn-space-4);
  border-left: var(--mn-border-width) solid color-mix(in srgb, var(--mn-text) 30%, transparent);
  font-family: var(--mn-font-mono);
  font-weight: var(--mn-weight-bold);
  font-size: var(--mn-text-small);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--mn-text);
  white-space: nowrap;
}

.nav-links {
  display: flex;
  align-items: center;
  gap: var(--mn-space-6);
  list-style: none;
  margin: 0;
  padding: 0;
}
.nav-links a {
  position: relative;
  padding-block: 0.375rem;
  color: var(--mn-text-muted);
  text-decoration: none;
  font-size: var(--mn-text-small);
  transition: color var(--mn-duration) var(--mn-ease);
}
/* le filet orange glisse sous le lien — et reste sous la section active */
.nav-links a::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 2px;
  border-radius: 1px;
  background: var(--mn-orange);
  transform: scaleX(0);
  transform-origin: 100% 50%;
  transition: transform 240ms var(--mn-ease-out);
}
.nav-links a:hover::after,
.nav-links a.is-active::after {
  transform: scaleX(1);
  transform-origin: 0 50%;
}
.nav-links a:hover, .nav-links a.is-active { color: var(--mn-text); }
.nav[data-theme="ink"] .nav-links a { color: var(--mn-warm-grey-light); }
.nav[data-theme="ink"] .nav-links a:hover, .nav[data-theme="ink"] .nav-links a.is-active { color: var(--mn-bone); }

.nav-menu { display: contents; }
.nav-toggle {
  display: none;
  align-items: center;
  justify-content: center;
  width: 2.75rem; height: 2.75rem;
  padding: 0;
  background: transparent;
  border: var(--mn-border-width) solid var(--mn-border);
  border-radius: var(--mn-radius-sm);
  color: var(--mn-text);
  cursor: pointer;
}
.nav-toggle .icon-close { display: none; }
.nav.is-open .nav-toggle .icon-open { display: none; }
.nav.is-open .nav-toggle .icon-close { display: block; }

@media (max-width: 60rem) {
  .nav-toggle { display: inline-flex; }
  .nav-menu {
    display: none;
    position: absolute;
    top: 100%; left: 0; right: 0;
    flex-direction: column;
    gap: var(--mn-space-4);
    padding: var(--mn-space-4) var(--mn-gutter) var(--mn-space-8);
    background: var(--mn-bg);
    border-bottom: var(--mn-border-width) solid var(--mn-border);
    box-shadow: var(--mn-shadow-md);
  }
  .nav.is-open .nav-menu { display: flex; }
  .nav-menu .nav-links a::after { display: none; }
  .nav-menu .nav-links { flex-direction: column; align-items: stretch; gap: 0; }
  .nav-menu .nav-links a {
    display: block;
    padding: var(--mn-space-4) 0;
    font-size: var(--mn-text-body);
    color: var(--mn-text);
    border-bottom: var(--mn-border-width) solid var(--mn-border);
  }
  .nav-menu .btn { width: 100%; }
}

/* ============ HÉROS ============ */
.hero {
  position: relative;
  padding: clamp(4rem, 3rem + 4vw, 7rem) 0 clamp(3.5rem, 3rem + 2.5vw, 5.5rem);
  overflow: clip;
}
.hero .wrap { position: relative; }
.hero h1 { max-width: 19ch; margin-bottom: var(--mn-space-6); }
.hero .lead { margin-bottom: var(--mn-space-8); max-width: 44ch; }

/* La scène : le discours à gauche, la pièce à droite */
.hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(0, 0.88fr);
  gap: clamp(2.5rem, 2rem + 3vw, 5rem);
  align-items: center;
}
.hero-grid h1 { font-size: clamp(2.625rem, 1.7rem + 3vw, 4.35rem); }
@media (max-width: 60rem) {
  .hero-grid { grid-template-columns: 1fr; }
}

/* Garanties sous les boutons — factuelles, en ligne */
.hero-note {
  display: flex;
  flex-wrap: wrap;
  gap: var(--mn-space-3) var(--mn-space-6);
  margin-top: var(--mn-space-6);
}
.hero-note .strip-item { font-size: 0.9375rem; }

/* ============ LA PIÈCE — un document qui s'écrit ============ */
.doc-scene { position: relative; z-index: 1; }
/* Les étiquettes flottantes : deux faits qui gravitent autour du document */
.doc-chip {
  position: absolute;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  font-weight: var(--mn-weight-bold);
  letter-spacing: 0.04em;
  white-space: nowrap;
  background: var(--mn-ink);
  color: var(--mn-bone);
  border-radius: var(--mn-radius-pill);
  padding: 0.4375rem 0.875rem;
  box-shadow: 0 14px 30px -12px rgba(20, 18, 16, 0.45);
}
.doc-chip b { color: var(--mn-orange); font-weight: var(--mn-weight-bold); }
.doc-chip--orange { background: var(--mn-orange); color: var(--mn-white); }
.doc-chip--orange b { color: var(--mn-white); }
.doc-chip--1 { top: 3.25rem; right: -1.125rem; }
.doc-chip--2 { bottom: 3.75rem; left: -1.125rem; }
@keyframes chip-float {
  0%, 100% { translate: 0 0; }
  50% { translate: 0 -0.375rem; }
}
@media (prefers-reduced-motion: no-preference) {
  .doc-chip { animation: chip-float 5.5s ease-in-out infinite; }
  .doc-chip--2 { animation-delay: -2.7s; }
}
@media (max-width: 40rem) {
  .doc-chip--1 { right: 0.5rem; }
  .doc-chip--2 { left: 0.5rem; }
}
.doc {
  position: relative;
  background: var(--mn-white);
  border: var(--mn-border-width) solid color-mix(in srgb, var(--mn-ink) 10%, transparent);
  border-radius: var(--mn-radius-md);
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--mn-white) 90%, transparent),
              var(--mn-shadow-lg);
  rotate: -1.4deg;
  transition: rotate var(--mn-duration-slow) var(--mn-ease-out),
              box-shadow var(--mn-duration-slow) var(--mn-ease-out);
}
.doc-scene:hover .doc { rotate: 0deg; }
/* la feuille de dessous : la pile */
.doc-scene::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--mn-bone-card);
  border: var(--mn-border-width) solid color-mix(in srgb, var(--mn-ink) 8%, transparent);
  border-radius: var(--mn-radius-md);
  rotate: 1.8deg;
  translate: 0.5rem 0.75rem;
}
.doc-bar {
  display: flex;
  align-items: center;
  gap: var(--mn-space-3);
  padding: var(--mn-space-3) var(--mn-space-5, 1.25rem);
  border-bottom: var(--mn-border-width) solid var(--mn-border);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  color: var(--mn-text-muted);
  letter-spacing: 0.04em;
}
.doc-bar::before {
  content: "";
  flex: none;
  width: 0.5rem; height: 0.5rem;
  border-radius: 50%;
  background: var(--mn-orange);
}
.doc-bar .doc-status { margin-left: auto; color: var(--mn-orange-deep); white-space: nowrap; }
.doc-body {
  padding: var(--mn-space-5, 1.25rem) var(--mn-space-5, 1.25rem) var(--mn-space-4);
  font-family: var(--mn-font-mono);
  font-size: 0.8125rem;
  line-height: 1.75;
  color: var(--mn-text);
  white-space: pre-line;
  min-height: 19.5rem;
}
.doc-body .dim { color: var(--mn-text-muted); }
.doc-body .ph { color: var(--mn-orange-deep); }
.doc-caret {
  display: inline-block;
  width: 0.5em; height: 1.05em;
  vertical-align: -0.15em;
  background: var(--mn-orange);
  animation: caret-blink 1.1s steps(1) infinite;
}
@keyframes caret-blink { 50% { opacity: 0; } }
.doc-foot {
  padding: var(--mn-space-3) var(--mn-space-5, 1.25rem);
  border-top: var(--mn-border-width) dashed var(--mn-border);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  color: var(--mn-text-muted);
}
.doc-foot b { color: var(--mn-orange-deep); font-weight: var(--mn-weight-bold); }
.hero-signature {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: var(--mn-text-muted);
  margin-top: var(--mn-space-16);
}

/* Révélation du titre, mot à mot */
.hero h1 .w { display: inline-block; overflow: clip; vertical-align: bottom; }
.hero h1 .w > i {
  display: inline-block;
  font-style: normal;
  transform: translateY(112%);
  animation: word-up 0.9s var(--mn-ease-out) both;
  animation-delay: calc(0.06s * var(--i, 0));
}
@keyframes word-up { to { transform: none; } }

/* Le cadran — 60 tics, une aiguille orange qui balaie sa minute */
.dial {
  position: absolute;
  top: 50%;
  right: calc(-1 * clamp(6rem, 14vw, 11rem));
  translate: 0 -50%;
  width: clamp(24rem, 42vw, 44rem);
  aspect-ratio: 1;
  pointer-events: none;
  user-select: none;
}
.dial circle.ticks {
  fill: none;
  /* currentColor : encre sur fond clair, os sur fond encre — le cadran suit le thème */
  stroke: color-mix(in srgb, currentColor 20%, transparent);
  /* 60 tics : un tiret fin par minute sur la circonférence */
  stroke-width: 26;
  stroke-dasharray: 1.6 17.25;
}
.dial circle.ring {
  fill: none;
  stroke: color-mix(in srgb, currentColor 10%, transparent);
  stroke-width: 1.5;
}
/* le quart d'heure : l'arc des 15 minutes, gravé en orange */
.dial circle.arc {
  fill: none;
  stroke: var(--mn-orange);
  stroke-width: 3;
  stroke-linecap: round;
  stroke-dasharray: 307.9 923.6;
  transform: rotate(-90deg);
  transform-origin: 200px 200px;
  opacity: 0.75;
}
.dial .hand {
  stroke: var(--mn-orange);
  stroke-width: 3;
  stroke-linecap: round;
  transform-origin: 200px 200px;
  animation: dial-sweep 60s linear infinite;
}
.dial .hand-dot { fill: var(--mn-orange); }
@keyframes dial-sweep { to { transform: rotate(360deg); } }
@media (max-width: 56rem) {
  .dial { display: none; }
}

/* Stat de base — utilisable partout, y compris dans une carte */
.stat {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--mn-space-3);
}
.stat-kicker {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: var(--mn-text-muted);
}
.stat b {
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-extrabold);
  font-size: clamp(2rem, 1.7rem + 1.4vw, 2.9rem);
  line-height: 1;
  letter-spacing: -0.025em;
  color: var(--mn-text);
  font-variant-numeric: tabular-nums;
}
.stat b .unit { color: var(--mn-orange); }
.stat span:not(.unit):not(.count):not(.stat-kicker) {
  font-size: var(--mn-text-small);
  color: var(--mn-text-muted);
  max-width: 22ch;
}

/* Preuve chiffrée sous le héros — colonnes bornées de filets, tic orange en crête */
.hero-proof {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
  margin-top: clamp(3rem, 2.5rem + 2.5vw, 4.5rem);
  border-top: var(--mn-border-width) solid var(--mn-border);
}
.hero-proof .stat { padding: var(--mn-space-8) var(--mn-space-8) 0 0; }
.hero-proof .stat + .stat { padding-left: var(--mn-space-8); border-left: var(--mn-border-width) solid var(--mn-border); }
/* le tic : chaque colonne repart du rail du temps */
.hero-proof .stat::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  width: var(--mn-space-8);
  height: 2px;
  background: var(--mn-orange);
}
.hero-proof .stat + .stat::before { left: var(--mn-space-8); }
.hero-proof .stat b { font-size: clamp(2.5rem, 2rem + 2.2vw, 3.9rem); }
@media (max-width: 40rem) {
  .hero-proof { grid-template-columns: 1fr; }
  .hero-proof .stat + .stat { padding-left: 0; border-left: 0; border-top: var(--mn-border-width) solid var(--mn-border); }
  .hero-proof .stat { padding: var(--mn-space-6) 0 var(--mn-space-2); }
  .hero-proof .stat + .stat::before { left: 0; }
}

/* ============ RUBAN DÉFILANT — le vocabulaire du métier ============ */
.marquee {
  background: var(--mn-bg);
  overflow: clip;
  padding: var(--mn-space-6) 0;
  border-top: var(--mn-border-width) solid var(--mn-border);
  border-bottom: var(--mn-border-width) solid var(--mn-border);
  mask-image: linear-gradient(to right, transparent, black 8%, black 92%, transparent);
  -webkit-mask-image: linear-gradient(to right, transparent, black 8%, black 92%, transparent);
}
.marquee-track {
  display: flex;
  gap: var(--mn-space-12);
  width: max-content;
  animation: marquee 46s linear infinite;
}
.marquee:hover .marquee-track { animation-play-state: paused; }
.marquee-track span {
  display: flex;
  align-items: center;
  gap: var(--mn-space-12);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-small);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--mn-text-muted);
  white-space: nowrap;
}
.marquee-track span::after {
  content: "";
  width: 0.375rem; height: 0.375rem;
  border-radius: 50%;
  background: var(--mn-orange);
}
@keyframes marquee { to { transform: translateX(-50%); } }

/* ============ OFFRES (deux métiers) ============ */
.offer {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--mn-space-6);
  padding: clamp(2rem, 1.6rem + 1.8vw, 3rem);
}
.offer-audience {
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-extrabold);
  font-size: clamp(1.9rem, 1.55rem + 1.5vw, 2.75rem);
  letter-spacing: -0.025em;
  line-height: 1.05;
  color: var(--mn-text);
  margin-bottom: var(--mn-space-2);
}
.offer p { color: var(--mn-text-muted); margin: 0; }
/* La ligne de gain : une rangée bornée de filets, comme une gravure au dos du boîtier */
.offer-gain {
  display: flex;
  align-items: center;
  gap: var(--mn-space-3);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--mn-accent);
  border-block: var(--mn-border-width) solid var(--mn-border);
  padding-block: var(--mn-space-3);
}
.offer-gain::before {
  content: "";
  flex: none;
  width: 0.5rem; height: 0.5rem;
  border-radius: 50%;
  border: 2px solid var(--mn-orange);
}

.list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--mn-space-3);
}
.list li {
  display: flex;
  gap: var(--mn-space-3);
  align-items: flex-start;
  font-size: var(--mn-text-small);
  color: var(--mn-text-muted);
  line-height: 1.5;
}
.list svg {
  flex: none;
  margin-top: 0.125rem;
  color: var(--mn-accent);
  background: color-mix(in srgb, var(--mn-orange) 10%, transparent);
  border-radius: 50%;
  padding: 0.1875rem;
}

/* La plaque gravée : papier blanc, double filet intérieur — le beau papier du métier */
.card--plaque {
  background: var(--mn-white);
  border-color: color-mix(in srgb, var(--mn-ink) 16%, transparent);
  padding: clamp(2.25rem, 1.8rem + 2vw, 3.25rem);
  box-shadow: inset 0 1px 0 var(--mn-white),
              var(--mn-shadow-lg);
}
.card--plaque::after {
  content: "";
  position: absolute;
  inset: 0.875rem;
  border: var(--mn-border-width) solid var(--mn-hairline);
  border-radius: calc(var(--mn-radius-lg) - 0.5rem);
  pointer-events: none;
  transition: border-color var(--mn-duration-slow) var(--mn-ease-out);
}
.card--plaque.card--link:hover { border-color: color-mix(in srgb, var(--mn-orange) 55%, transparent); }
.card--plaque.card--link:hover::after { border-color: color-mix(in srgb, var(--mn-orange) 30%, var(--mn-hairline)); }
.card--plaque .card-index { top: 1.875rem; right: 2rem; }
/* Sur la plaque, la pastille d'appel est le bouton orange */
.card--plaque .offer-cta {
  background: var(--mn-orange);
  border-color: transparent;
  color: var(--mn-white);
  font-size: 1.1875rem;
  padding: var(--mn-space-3) var(--mn-space-6);
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--mn-white) 30%, transparent),
              0 8px 24px -8px color-mix(in srgb, var(--mn-orange) 55%, transparent);
}
.card--plaque.card--link:hover .offer-cta {
  background: var(--mn-orange-deep);
  border-color: transparent;
  color: var(--mn-white);
}

/* Le chiffre-résultat : la raison d'acheter, en très grand corps */
.offer-hours {
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-extrabold);
  font-size: clamp(2.25rem, 1.9rem + 1.5vw, 3.25rem);
  line-height: 0.95;
  letter-spacing: -0.025em;
  color: var(--mn-orange);
  font-variant-numeric: tabular-nums;
  margin: var(--mn-space-2) 0 0;
}
.offer .offer-hours { color: var(--mn-orange); }
.offer-hours small {
  display: block;
  font-family: var(--mn-font-mono);
  font-weight: var(--mn-weight-regular);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--mn-text-muted);
  margin-top: var(--mn-space-3);
}

/* Sur carte encre, la pastille d'appel devient le bouton orange de la carte */
.card--ink .offer-cta {
  background: var(--mn-orange);
  border-color: transparent;
  color: var(--mn-white);
  font-size: 1.1875rem;
  padding: var(--mn-space-3) var(--mn-space-6);
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--mn-white) 30%, transparent),
              0 8px 24px -8px color-mix(in srgb, var(--mn-orange) 55%, transparent);
}
.card--ink.card--link:hover .offer-cta {
  background: var(--mn-orange-deep);
  border-color: transparent;
  color: var(--mn-white);
}

/* Le chiffre d'une stat posée sur plaque : présence maximale */
.card--plaque .stat b { font-size: clamp(2.25rem, 1.9rem + 1.6vw, 3.25rem); }

/* Conditions gravées au pied de l'offre */
.offer-meta {
  margin-top: auto;
  padding-top: var(--mn-space-4);
  border-top: var(--mn-border-width) solid var(--mn-border);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--mn-text-muted);
}

/* Le CTA de carte : une vraie pastille, qui s'encre au survol de la carte */
.offer-cta {
  margin-top: 0;
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: var(--mn-space-2);
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-bold);
  font-size: var(--mn-text-small);
  color: var(--mn-text);
  border: var(--mn-border-width) solid color-mix(in srgb, var(--mn-text) 24%, transparent);
  border-radius: var(--mn-radius-pill);
  padding: var(--mn-space-2) var(--mn-space-5, 1.25rem);
  transition: background var(--mn-duration) var(--mn-ease),
              color var(--mn-duration) var(--mn-ease),
              border-color var(--mn-duration) var(--mn-ease);
}
.offer-cta svg { transition: transform var(--mn-duration) var(--mn-ease); }
.card--link:hover .offer-cta {
  background: var(--mn-orange-deep);
  border-color: var(--mn-orange-deep);
  color: var(--mn-white);
}
.card--link:hover .offer-cta svg { transform: translateX(0.375rem); }

/* ============ MÉTHODE — un rail de temps gradué ============ */
.rail { position: relative; }
/* le fil du temps : il part en Signal et se perd dans le papier — à vous d'aller au bout */
.rail::before {
  content: "";
  position: absolute;
  top: 0.4375rem;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg,
    var(--mn-orange) 0,
    color-mix(in srgb, var(--mn-orange) 45%, var(--mn-border)) 55%,
    var(--mn-border) 100%);
}
/* la graduation : un tic par minute, sous le rail */
.rail::after {
  content: "";
  position: absolute;
  top: 0.5625rem;
  left: 0;
  right: 0;
  height: 0.375rem;
  background-image: repeating-linear-gradient(
    to right,
    color-mix(in srgb, var(--mn-ink) 14%, transparent) 0 1px,
    transparent 1px 0.625rem
  );
}
.rail-step { position: relative; padding-top: var(--mn-space-10, 2.5rem); }
.rail-step::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 1rem; height: 1rem;
  border-radius: 50%;
  background: var(--mn-white);
  border: 2.5px solid var(--mn-orange);
  z-index: 1;
  transition: background var(--mn-duration) var(--mn-ease), box-shadow var(--mn-duration) var(--mn-ease);
}
.rail-step:hover::before {
  background: var(--mn-orange);
  box-shadow: 0 0 0 5px color-mix(in srgb, var(--mn-orange) 16%, transparent);
}
.rail-step.is-core::before {
  background: var(--mn-orange);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--mn-orange) 16%, transparent);
}
/* le temps fort respire : c'est là que tout se joue */
@media (prefers-reduced-motion: no-preference) {
  .rail-step.is-core::before { animation: shelf-pulse 2.2s var(--mn-ease) infinite; }
}
.step-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--mn-space-3);
  margin-bottom: var(--mn-space-3);
}
.step-num {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  color: var(--mn-accent);
  margin-bottom: var(--mn-space-3);
}
.step-head .step-num { margin-bottom: 0; }
.step-chip {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.08em;
  color: var(--mn-text-muted);
  border: var(--mn-border-width) solid var(--mn-border);
  border-radius: var(--mn-radius-pill);
  padding: 0.125rem var(--mn-space-3);
  white-space: nowrap;
  transition: color var(--mn-duration) var(--mn-ease), border-color var(--mn-duration) var(--mn-ease);
}
.rail-step:hover .step-chip { border-color: var(--mn-orange); color: var(--mn-orange-deep); }
.rail-step.is-core .step-chip {
  background: var(--mn-orange);
  border-color: var(--mn-orange);
  color: var(--mn-white);
  font-weight: var(--mn-weight-bold);
}
.rail-step h3 { margin-bottom: var(--mn-space-2); transition: color var(--mn-duration) var(--mn-ease); }
.rail-step:hover h3 { color: var(--mn-orange-deep); }
.rail-step > p { font-size: var(--mn-text-small); color: var(--mn-text-muted); padding-right: var(--mn-space-6); }
/* la gravure au pied de chaque temps : ce que vous emportez */
.step-tag {
  margin-top: var(--mn-space-4);
  margin-right: var(--mn-space-6);
  padding-top: var(--mn-space-3);
  border-top: var(--mn-border-width) solid var(--mn-border);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--mn-text-muted);
}
.step-tag b { color: var(--mn-accent); font-weight: var(--mn-weight-regular); }
@media (max-width: 56rem) {
  .rail::before { top: 0; bottom: 0; left: 0.4375rem; right: auto; width: 2px; height: auto; }
  .rail::after { display: none; }
  .rail-step { padding-top: 0; padding-left: var(--mn-space-8); }
}

/* ============ LA CONSOLE DE LA MÉTHODE — quatre temps cliquables, une scène ============ */
/* L'aperçu vit sur le rail ; chaque temps est un onglet. En dessous, la scène
   affiche le détail du temps choisi : le contenu, les faits, ce qu'on y gagne, le CTA. */
.mx { position: relative; }
.mx-rail {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--mn-space-4);
  margin-bottom: var(--mn-space-8);
}
/* le fil du temps, sous les jalons */
.mx-rail::before {
  content: "";
  position: absolute;
  top: 0.4375rem;
  left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg,
    var(--mn-orange) 0,
    color-mix(in srgb, var(--mn-orange) 45%, var(--mn-border)) 55%,
    var(--mn-border) 100%);
}
.mx-tab {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--mn-space-2);
  padding: var(--mn-space-8) var(--mn-space-2) var(--mn-space-3) 0;
  background: none;
  border: 0;
  border-radius: var(--mn-radius-sm);
  cursor: pointer;
  text-align: left;
  font: inherit;
  color: var(--mn-text-muted);
}
/* le jalon de chaque temps */
.mx-tab::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 1rem; height: 1rem;
  border-radius: 50%;
  background: var(--mn-white);
  border: 2.5px solid var(--mn-orange);
  transition: background var(--mn-duration) var(--mn-ease), box-shadow var(--mn-duration) var(--mn-ease);
}
.mx-tab:hover::before,
.mx-tab.is-on::before {
  background: var(--mn-orange);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--mn-orange) 16%, transparent);
}
@media (prefers-reduced-motion: no-preference) {
  .mx-tab.is-on::before { animation: shelf-pulse 2.2s var(--mn-ease) infinite; }
}
.mx-num {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  color: var(--mn-accent);
}
.mx-name {
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-extrabold);
  font-size: clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem);
  letter-spacing: var(--mn-tracking-tight);
  line-height: 1.15;
  color: var(--mn-text-muted);
  transition: color var(--mn-duration) var(--mn-ease);
}
.mx-tab:hover .mx-name, .mx-tab.is-on .mx-name { color: var(--mn-text); }
.mx-chip {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.08em;
  color: var(--mn-text-muted);
  border: var(--mn-border-width) solid var(--mn-border);
  border-radius: var(--mn-radius-pill);
  padding: 0.125rem var(--mn-space-3);
  white-space: nowrap;
  transition: color var(--mn-duration) var(--mn-ease), border-color var(--mn-duration) var(--mn-ease), background var(--mn-duration) var(--mn-ease);
}
.mx-tab:hover .mx-chip { border-color: var(--mn-orange); color: var(--mn-orange-deep); }
.mx-tab.is-on .mx-chip {
  background: var(--mn-orange);
  border-color: var(--mn-orange);
  color: var(--mn-white);
  font-weight: var(--mn-weight-bold);
}
/* La scène : les panneaux empilés au même endroit ; seul l'actif est visible.
   Sans JavaScript, tout est déplié — rien ne se perd. */
.mx-stage { display: grid; }
.mx-panel {
  grid-area: 1 / 1;
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr);
  gap: clamp(1.5rem, 1rem + 2.5vw, 3rem);
  background: var(--mn-white);
  border: var(--mn-border-width) solid color-mix(in srgb, var(--mn-ink) 10%, transparent);
  border-radius: var(--mn-radius-lg);
  padding: clamp(1.75rem, 1.3rem + 2vw, 3rem);
  box-shadow: var(--mn-shadow-md);
  overflow: clip;
}
.js .mx-panel { transition: opacity 300ms var(--mn-ease-out), transform 300ms var(--mn-ease-out); }
.js .mx-panel:not(.is-on) {
  opacity: 0;
  transform: translateY(0.625rem);
  visibility: hidden;
  pointer-events: none;
}
html:not(.js) .mx-panel { grid-area: auto; }
html:not(.js) .mx-panel + .mx-panel { margin-top: var(--mn-space-6); }
.mx-main h3 {
  font-size: clamp(1.625rem, 1.3rem + 1.4vw, 2.375rem);
  letter-spacing: var(--mn-tracking-tight);
  margin-bottom: var(--mn-space-3);
}
.mx-main > p { color: var(--mn-text-muted); }
.mx-label {
  margin-top: var(--mn-space-6);
  margin-bottom: var(--mn-space-2);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: var(--mn-accent);
}
/* La colonne des faits : gravée, bornée d'un filet */
.mx-side {
  display: flex;
  flex-direction: column;
  border-left: var(--mn-border-width) solid var(--mn-border);
  padding-left: clamp(1.25rem, 1rem + 1.5vw, 2.25rem);
}
/* ce que le client y gagne : la phrase qui reste */
.mx-gain {
  margin-top: var(--mn-space-4);
  padding: var(--mn-space-3) var(--mn-space-4);
  background: color-mix(in srgb, var(--mn-orange) 7%, transparent);
  border-left: 3px solid var(--mn-orange);
  border-radius: 0 var(--mn-radius-sm) var(--mn-radius-sm) 0;
  font-size: var(--mn-text-small);
  font-weight: var(--mn-weight-semibold);
  color: var(--mn-text);
}
.mx-gain b { color: var(--mn-orange-deep); }
.mx-side .btn { margin-top: var(--mn-space-6); align-self: flex-start; }
.mx-side .res-foot { margin-top: var(--mn-space-2); }
@media (max-width: 56rem) {
  .mx-rail { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--mn-space-4) var(--mn-space-6); }
  .mx-rail::before { display: none; }
  .mx-tab { padding-top: var(--mn-space-6); }
  .mx-chip { white-space: normal; }
  .mx-panel { grid-template-columns: 1fr; }
  .mx-side {
    border-left: 0;
    border-top: var(--mn-border-width) solid var(--mn-border);
    padding-left: 0;
    padding-top: var(--mn-space-6);
  }
}

/* ============ RESSOURCES ============ */
/* Deux étages : les guides offerts en pile, la bibliothèque en pièce maîtresse */
.res-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr);
  gap: var(--mn-space-6);
  align-items: stretch;
}
.res-stack { display: grid; gap: var(--mn-space-6); align-content: stretch; }
.res--feature { padding: clamp(2rem, 1.6rem + 1.8vw, 3rem); }
.res--feature .res-count { font-size: clamp(4rem, 3rem + 4vw, 6.5rem); }
.res--mini .res-count { font-size: var(--mn-text-h2); }
@media (max-width: 60rem) {
  .res-layout { grid-template-columns: 1fr; }
}
.res { display: flex; flex-direction: column; gap: var(--mn-space-3); }
.res-count {
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-extrabold);
  font-size: clamp(3rem, 2.4rem + 2.6vw, 4.5rem);
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--mn-orange);
  font-variant-numeric: tabular-nums;
}
.res-price {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.06em;
  color: var(--mn-text-muted);
}
.res .btn { margin-top: var(--mn-space-4); align-self: flex-start; }
.res-foot { font-size: var(--mn-text-caption); color: var(--mn-text-muted); }
/* La pièce maîtresse de la rangée */
.res--star {
  border-color: color-mix(in srgb, var(--mn-orange) 55%, var(--mn-border));
  box-shadow: var(--mn-shadow-md), 0 0 0 4px color-mix(in srgb, var(--mn-orange) 9%, transparent);
}

/* ============ L'ÉTAGÈRE — les ressources posées sur leur rail, en libre accès ============ */
/* Les cartes reposent sur un rail d'encre : un vrai meuble, pas une grille. */
.shelf { position: relative; padding-bottom: 2.125rem; }
.shelf::before,
.shelf::after {
  content: "";
  position: absolute;
  bottom: 1.25rem;
  height: 0.875rem;
}
.shelf::after {
  left: -1.25rem; right: -1.25rem;
  border-radius: 0.4375rem;
  background: linear-gradient(180deg, var(--mn-ink-raised), var(--mn-ink));
  box-shadow: inset 0 1px 0 rgba(246, 243, 239, 0.14),
              0 20px 32px -16px rgba(20, 18, 16, 0.4);
}
.shelf::before {
  left: -1.25rem; width: 3.75rem;
  border-radius: 0.4375rem 0 0 0.4375rem;
  background: var(--mn-orange);
  z-index: 1;
}
/* L'inventaire : la barre gravée au-dessus du meuble — les faits, rien que les faits */
.shelf-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--mn-space-3) var(--mn-space-8);
  margin-bottom: var(--mn-space-8);
  padding-block: var(--mn-space-3);
  border-block: var(--mn-border-width) solid var(--mn-border);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: var(--mn-text-muted);
}
.shelf-bar b {
  color: var(--mn-text);
  font-weight: var(--mn-weight-bold);
  font-variant-numeric: tabular-nums;
}
.shelf-bar .push { margin-left: auto; color: var(--mn-orange-deep); font-weight: var(--mn-weight-bold); }
.shelf-live {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--mn-orange-deep);
  font-weight: var(--mn-weight-bold);
}
.shelf-dot {
  width: 0.5rem; height: 0.5rem;
  border-radius: 50%;
  background: var(--mn-orange);
}
@media (prefers-reduced-motion: no-preference) {
  .shelf-dot { animation: shelf-pulse 2.2s var(--mn-ease) infinite; }
}
@keyframes shelf-pulse {
  0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--mn-orange) 45%, transparent); }
  55% { box-shadow: 0 0 0 7px transparent; }
}
/* La gravure sous le rail : l'étiquette du meuble */
.shelf-caption {
  margin-top: var(--mn-space-4);
  text-align: center;
  text-wrap: balance;
  font-family: var(--mn-font-mono);
  font-size: 0.875rem;
  letter-spacing: 0.1em;
  color: var(--mn-text-muted);
}
.shelf-caption b { color: var(--mn-orange-deep); font-weight: var(--mn-weight-bold); }
@media (max-width: 40rem) {
  .shelf::before { left: -0.5rem; }
  .shelf::after { left: -0.5rem; right: -0.5rem; }
  .shelf-bar { gap: var(--mn-space-2) var(--mn-space-4); }
  .shelf-bar .push { display: none; }
}

/* ============ LA COLLECTION — le défilé des pièces, une par une ============ */
/* Chaque produit est un objet physique posé dans sa vitrine : le packshot en
   pièce maîtresse, son propre fond prolongé en flou derrière lui (aucune couture),
   et la carte entière est le lien vers la page du produit. */
.collection { position: relative; }
.col-track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: min(30rem, 86%);
  gap: var(--mn-space-6);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding: 0.75rem 0.375rem 0.25rem;
  margin: -0.75rem -0.375rem -0.25rem;
  scrollbar-width: none;
}
.col-track::-webkit-scrollbar { display: none; }
/* La table de présentation : on peut saisir le rail à la souris */
@media (pointer: fine) {
  .col-track { cursor: grab; }
  .col-track.is-drag { cursor: grabbing; scroll-snap-type: none; }
  .col-track.is-drag .product-card { pointer-events: none; }
}
.col-track img { -webkit-user-drag: none; user-select: none; }
/* Le podium : la pièce présentée est seule en pleine lumière — les voisines reculent.
   Piloté par le script du défilé ; sans lui (ou en mouvement réduit), tout reste plein. */
.product-card { will-change: scale, opacity; }
.product-card {
  scroll-snap-align: start;
  position: relative;
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: var(--mn-text);
  background: var(--mn-white);
  border: var(--mn-border-width) solid color-mix(in srgb, var(--mn-ink) 10%, transparent);
  border-radius: var(--mn-radius-lg);
  overflow: clip;
  box-shadow: var(--mn-shadow-sm);
  transition: transform var(--mn-duration-slow) var(--mn-ease-out),
              box-shadow var(--mn-duration-slow) var(--mn-ease-out),
              border-color var(--mn-duration) var(--mn-ease);
}
.product-card:hover {
  transform: translateY(-0.375rem);
  box-shadow: var(--mn-shadow-lg);
  border-color: color-mix(in srgb, var(--mn-orange) 38%, var(--mn-border));
}
/* La vitrine : l'image contenue, son propre reflet flouté derrière elle */
.pc-stage {
  position: relative;
  margin: 0;
  aspect-ratio: 4 / 3;
  overflow: clip;
  background: var(--mn-bone-card);
}
.pc-blur {
  position: absolute;
  inset: -12%;
  width: 124%;
  height: 124%;
  object-fit: cover;
  filter: blur(2.25rem) saturate(1.06);
}
.pc-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  transition: transform 700ms var(--mn-ease-out);
}
.product-card:hover .pc-img { transform: scale(1.04); }
.pc-badge {
  position: absolute;
  top: var(--mn-space-4);
  left: var(--mn-space-4);
  z-index: 2;
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.08em;
  color: var(--mn-orange-deep);
  background: color-mix(in srgb, var(--mn-white) 88%, transparent);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  border: var(--mn-border-width) solid color-mix(in srgb, var(--mn-orange) 45%, var(--mn-border));
  border-radius: var(--mn-radius-pill);
  padding: 0.25rem 0.75rem;
}
.pc-body {
  display: flex;
  flex-direction: column;
  gap: var(--mn-space-2);
  padding: var(--mn-space-6);
  border-top: var(--mn-border-width) solid var(--mn-border);
  flex: 1;
}
.pc-kicker {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: var(--mn-accent);
}
.pc-body h3 { margin: 0; }
.pc-spec {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.06em;
  color: var(--mn-text-muted);
}
.pc-cta {
  margin-top: auto;
  padding-top: var(--mn-space-4);
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  align-self: flex-start;
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-bold);
  font-size: var(--mn-text-small);
  color: var(--mn-orange-deep);
}
.pc-cta svg { transition: transform var(--mn-duration) var(--mn-ease); }
.product-card:hover .pc-cta svg { transform: translateX(0.375rem); }
/* La régie du défilé : flèches horlogères + compteur */
.col-nav {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--mn-space-4);
  margin-top: var(--mn-space-6);
}
/* Le cadran de régie : l'aiguille orange balaie pendant qu'on parcourt la collection */
.col-dial { width: 2.125rem; height: 2.125rem; color: var(--mn-text-muted); flex: none; }
.col-hand {
  transform-origin: 20px 20px;
  transition: transform 500ms var(--mn-ease-out);
}
.col-count {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.12em;
  color: var(--mn-text-muted);
}
.col-count b { color: var(--mn-text); font-weight: var(--mn-weight-bold); font-variant-numeric: tabular-nums; }
.col-btn {
  width: 2.75rem;
  height: 2.75rem;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: var(--mn-border-width) solid var(--mn-border);
  background: var(--mn-white);
  color: var(--mn-text);
  cursor: pointer;
  transition: background var(--mn-duration) var(--mn-ease), border-color var(--mn-duration) var(--mn-ease), color var(--mn-duration) var(--mn-ease);
}
.col-btn:hover:not(:disabled) { background: var(--mn-orange); border-color: var(--mn-orange); color: var(--mn-white); }
.col-btn:disabled { opacity: 0.35; cursor: default; }
@media (max-width: 40rem) {
  .col-track { grid-auto-columns: 88%; }
  .col-nav { justify-content: center; }
}

/* ============ PAGE PRODUIT — la pièce sur son socle ============ */
.pp-hero { padding: clamp(3.5rem, 3rem + 3vw, 6rem) 0 clamp(3rem, 2.5rem + 2.5vw, 5rem); }
.pp-hero h1 { font-size: var(--mn-text-h1); }
.pp-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(2rem, 1.5rem + 3.5vw, 4.5rem);
  align-items: center;
}
.pp-figure {
  border-radius: var(--mn-radius-lg);
  border: var(--mn-border-width) solid color-mix(in srgb, var(--mn-ink) 10%, transparent);
  box-shadow: var(--mn-shadow-lg);
}
.pp-figure--tall { aspect-ratio: 4 / 4.6; }
.pp-spec {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--mn-text-muted);
  display: flex;
  flex-wrap: wrap;
  gap: var(--mn-space-2) var(--mn-space-4);
  padding-block: var(--mn-space-4);
  border-block: var(--mn-border-width) solid var(--mn-border);
  margin-block: var(--mn-space-6);
}
.pp-spec b { color: var(--mn-orange-deep); font-weight: var(--mn-weight-bold); }
@media (max-width: 56rem) {
  .pp-grid { grid-template-columns: 1fr; }
  .pp-grid .pp-figure { order: -1; max-width: 26rem; }
}

/* ============ BENTO — un monolithe divisé par filets ============ */
/* Blanc explicite : posé dans une section --alt, --mn-surface bascule en Bone
   et délaverait le monolithe. Ici, l'objet reste du papier blanc, quoi qu'il arrive. */
.bento {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  background: var(--mn-white);
  border: var(--mn-border-width) solid color-mix(in srgb, var(--mn-ink) 11%, transparent);
  border-radius: var(--mn-radius-lg);
  overflow: clip;
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--mn-white) 85%, transparent),
              var(--mn-shadow-md);
}
.bento-cell {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: clamp(1.75rem, 1.4rem + 1.4vw, 2.5rem);
}
.bento-tag {
  margin-top: auto;
  padding-top: var(--mn-space-6);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--mn-text-muted);
}
.bento-tag b { color: var(--mn-accent); font-weight: var(--mn-weight-regular); }
.bento--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.bento-cell + .bento-cell { border-left: var(--mn-border-width) solid var(--mn-border); }
.bento-cell h3 { margin-top: var(--mn-space-8); margin-bottom: var(--mn-space-2); }
.bento-cell .icon-plate + h3 { margin-top: var(--mn-space-6); }
.bento-cell p { font-size: var(--mn-text-small); color: var(--mn-text-muted); }
@media (max-width: 64rem) {
  .bento { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bento-cell:nth-child(odd) { border-left: 0; }
  .bento-cell:nth-child(n+3) { border-top: var(--mn-border-width) solid var(--mn-border); }
}
@media (max-width: 40rem) {
  .bento { grid-template-columns: 1fr; }
  .bento-cell { border-left: 0 !important; }
  .bento-cell + .bento-cell { border-top: var(--mn-border-width) solid var(--mn-border); }
}

/* ============ LA BASCULE — avant / après, le théâtre du gain ============ */
.ba {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: var(--mn-space-6);
  align-items: stretch;
}
.ba-panel {
  display: flex;
  flex-direction: column;
  border-radius: var(--mn-radius-lg);
  padding: clamp(1.75rem, 1.4rem + 1.4vw, 2.5rem);
}
.ba-panel { position: relative; }
.ba-before {
  background: var(--mn-bone-card);
  border: var(--mn-border-width) solid var(--mn-border);
}
.ba-after {
  background: var(--mn-white);
  border: var(--mn-border-width) solid color-mix(in srgb, var(--mn-ink) 16%, transparent);
  box-shadow: inset 0 1px 0 var(--mn-white),
              var(--mn-shadow-lg);
}
.ba-after::after {
  content: "";
  position: absolute;
  inset: 0.875rem;
  border: var(--mn-border-width) solid var(--mn-hairline);
  border-radius: calc(var(--mn-radius-lg) - 0.5rem);
  pointer-events: none;
}
.ba-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--mn-space-3);
  padding-bottom: var(--mn-space-4);
  border-bottom: var(--mn-border-width) solid var(--mn-border);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: var(--mn-text-muted);
}
.ba-head b { color: var(--mn-text); font-weight: var(--mn-weight-bold); }
.ba-timer {
  font-family: var(--mn-font-mono);
  font-weight: var(--mn-weight-bold);
  color: var(--mn-orange-deep);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.ba-after .ba-timer { color: var(--mn-orange-deep); }
.ba-row {
  display: flex;
  flex-direction: column;
  gap: var(--mn-space-1);
  padding-block: var(--mn-space-4);
  border-top: var(--mn-border-width) solid var(--mn-border);
}
.ba-row:first-of-type { border-top: 0; }
.ba-task {
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-bold);
  font-size: var(--mn-text-small);
  color: var(--mn-text);
}
.ba-val { font-size: var(--mn-text-small); color: var(--mn-text-muted); }
.ba-before .ba-val::before {
  content: "";
  display: inline-block;
  width: 0.8125rem;
  height: 0.8125rem;
  margin-right: 0.5rem;
  vertical-align: -0.09375rem;
  border-radius: 50%;
  background: color-mix(in srgb, var(--mn-text) 38%, transparent);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'><path d='M6 6l12 12M18 6 6 18' stroke='black' stroke-width='3.4' stroke-linecap='round'/></svg>") center / contain no-repeat;
  mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'><path d='M6 6l12 12M18 6 6 18' stroke='black' stroke-width='3.4' stroke-linecap='round'/></svg>") center / contain no-repeat;
}
.ba-after .ba-val::before {
  content: "";
  display: inline-block;
  width: 0.875rem;
  height: 0.875rem;
  margin-right: 0.5rem;
  vertical-align: -0.125rem;
  border-radius: 50%;
  background: var(--mn-orange);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'><path d='M5 13l4 4L19 7' stroke='black' stroke-width='3.5' stroke-linecap='round'/></svg>") center / contain no-repeat;
  mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'><path d='M5 13l4 4L19 7' stroke='black' stroke-width='3.5' stroke-linecap='round'/></svg>") center / contain no-repeat;
}
.ba-total {
  margin-top: auto;
  padding-top: var(--mn-space-6);
  border-top: 2px solid var(--mn-border);
}
.ba-total b {
  display: block;
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-extrabold);
  font-size: clamp(2.5rem, 2rem + 2vw, 3.6rem);
  line-height: 1;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
  color: var(--mn-text);
}
.ba-total span { font-size: var(--mn-text-small); color: var(--mn-text-muted); }
.ba-arrow {
  align-self: center;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 50%;
  background: var(--mn-orange);
  color: var(--mn-white);
  display: grid;
  place-items: center;
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--mn-white) 30%, transparent),
              0 10px 28px -8px color-mix(in srgb, var(--mn-orange) 60%, transparent);
}
@media (max-width: 60rem) {
  .ba { grid-template-columns: 1fr; }
  .ba-arrow { rotate: 90deg; justify-self: center; }
}

/* ============ LE DUEL — un tableau, trois colonnes, zéro désalignement ============ */
/* v2 : objet blanc massif, en-tête encre, colonne minutely cadrée d'orange. */
.vs {
  background: var(--mn-white);
  border: var(--mn-border-width) solid color-mix(in srgb, var(--mn-ink) 11%, transparent);
  border-radius: var(--mn-radius-lg);
  overflow: clip;
  box-shadow: var(--mn-shadow-lg);
}
.vs-row {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr) minmax(0, 1.15fr);
  align-items: center;
}
.vs-row + .vs-row .vs-task,
.vs-row + .vs-row .vs-old { border-top: var(--mn-border-width) solid var(--mn-border); }
.vs-c { padding: var(--mn-space-5, 1.25rem) var(--mn-space-6); min-height: 100%; }
.vs-task {
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-bold);
  font-size: var(--mn-text-body);
  color: var(--mn-text);
}
.vs-old { font-size: var(--mn-text-small); color: var(--mn-text-muted); }
/* la colonne du passé : un papier poussiéreux, hachuré comme un brouillon barré */
.vs-row:not(.vs-head) .vs-old {
  background:
    repeating-linear-gradient(135deg,
      transparent 0 0.4375rem,
      color-mix(in srgb, var(--mn-ink) 3%, transparent) 0.4375rem 0.5rem),
    color-mix(in srgb, var(--mn-bone-card) 62%, transparent);
}
@media (hover: hover) {
  .vs-row:not(.vs-head):hover .vs-task { color: var(--mn-orange-deep); }
  .vs-row:not(.vs-head):hover .vs-new { background: color-mix(in srgb, var(--mn-orange) 4%, var(--mn-white)); }
}
.vs-old .x::before {
  content: "";
  display: inline-block;
  width: 0.8125rem; height: 0.8125rem;
  margin-right: 0.5rem;
  vertical-align: -0.09375rem;
  background: color-mix(in srgb, var(--mn-text) 38%, transparent);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'><path d='M6 6l12 12M18 6 6 18' stroke='black' stroke-width='3.4' stroke-linecap='round'/></svg>") center / contain no-repeat;
  mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'><path d='M6 6l12 12M18 6 6 18' stroke='black' stroke-width='3.4' stroke-linecap='round'/></svg>") center / contain no-repeat;
}
/* la colonne-projecteur : blanche, continue, cadrée d'orange sur toute la hauteur */
.vs-new {
  background: var(--mn-white);
  border-inline: var(--mn-border-width) solid color-mix(in srgb, var(--mn-orange) 32%, var(--mn-border));
  font-size: var(--mn-text-small);
  color: var(--mn-text);
}
.vs-row + .vs-row .vs-new { border-top: var(--mn-border-width) solid var(--mn-hairline); }
/* l'en-tête : une barre d'encre, et la case minutely s'allume en Signal */
.vs-head { background: var(--mn-ink); }
.vs-head .vs-c { color: var(--mn-warm-grey-light); }
.vs-head b { color: var(--mn-bone); }
/* le chrono du temps perdu : une pastille qui brûle dans l'encre */
.vs-head .ba-timer {
  color: var(--mn-orange);
  background: color-mix(in srgb, var(--mn-orange) 18%, transparent);
  padding: 0.25rem 0.625rem;
  border-radius: var(--mn-radius-pill);
}
.vs-head .vs-new {
  position: relative;
  background: var(--mn-orange);
  border-inline-color: var(--mn-orange);
  color: var(--mn-white);
  padding-left: 3.25rem;
}
.vs-head .vs-new b, .vs-head .vs-new span { color: var(--mn-white); }
.vs-head .vs-new > span {
  background: color-mix(in srgb, var(--mn-white) 20%, transparent);
  padding: 0.25rem 0.625rem;
  border-radius: var(--mn-radius-pill);
}
/* le médaillon du duel, frappé à la jonction des deux mondes */
.vs-head .vs-new::before {
  content: "VS";
  position: absolute;
  left: 0; top: 50%;
  transform: translate(-50%, -50%);
  width: 2.75rem; height: 2.75rem;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--mn-ink);
  border: 3px solid var(--mn-white);
  color: var(--mn-white);
  font-family: var(--mn-font-mono);
  font-weight: var(--mn-weight-bold);
  font-size: 0.8125rem;
  letter-spacing: 0.06em;
  box-shadow: 0 8px 18px -8px rgba(20, 18, 16, 0.6);
  z-index: 2;
}
/* le pied : la colonne minutely se referme sur sa crête orange */
.vs-foot .vs-new { box-shadow: inset 0 -3px 0 var(--mn-orange); }
.vs-new .v::before {
  content: "";
  display: inline-block;
  width: 0.875rem; height: 0.875rem;
  margin-right: 0.5rem;
  vertical-align: -0.09375rem;
  background: var(--mn-orange);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'><path d='M5 13l4 4L19 7' stroke='black' stroke-width='3.5' stroke-linecap='round'/></svg>") center / contain no-repeat;
  mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'><path d='M5 13l4 4L19 7' stroke='black' stroke-width='3.5' stroke-linecap='round'/></svg>") center / contain no-repeat;
}
.vs-head .vs-c,
.vs-foot .vs-c {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--mn-space-3);
}
.vs-foot .vs-c { color: var(--mn-text-muted); }
.vs-foot b { color: var(--mn-text); font-weight: var(--mn-weight-bold); }
.vs-head b { font-weight: var(--mn-weight-bold); }
.vs-foot .vs-c {
  font-family: var(--mn-font-body);
  letter-spacing: 0;
  text-transform: none;
  font-size: var(--mn-text-small);
  display: block;
  padding-block: var(--mn-space-6);
}
.vs-foot .vs-new { font-size: var(--mn-text-body); }
@media (max-width: 56rem) {
  .vs-head, .vs-note { display: none; }
  .vs-row { grid-template-columns: 1fr; }
  .vs-c { padding-block: var(--mn-space-2); min-height: 0; }
  .vs-task { padding-top: var(--mn-space-5, 1.25rem); }
  .vs-old { border-top: 0 !important; }
  .vs-new { border-top: 0 !important; border-inline: 0; padding-bottom: var(--mn-space-5, 1.25rem); }
}

/* ============ RÉFÉRENCES v3 — la preuve par les chiffres ============ */
.ref-hero {
  display: flex;
  flex-direction: column;
  gap: var(--mn-space-1);
  padding: var(--mn-space-6) 0 var(--mn-space-4);
  border-top: var(--mn-border-width) solid var(--mn-border);
}
.ref-hero b {
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-extrabold);
  font-size: clamp(3.25rem, 2.5rem + 3.2vw, 4.75rem);
  line-height: 0.95;
  letter-spacing: -0.03em;
  color: var(--mn-text);
  font-variant-numeric: tabular-nums;
}
.ref-hero b .unit { color: var(--mn-orange); font-size: 0.52em; font-weight: var(--mn-weight-extrabold); }
.ref-hero span { font-size: var(--mn-text-small); color: var(--mn-text-muted); }
/* faits secondaires : une ligne inline, jamais de casse */
.ref-mini {
  display: block;
  padding-block: var(--mn-space-3);
  border-top: var(--mn-border-width) solid var(--mn-border);
  font-size: var(--mn-text-small);
  color: var(--mn-text-muted);
}
.ref-mini b {
  color: var(--mn-text);
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-extrabold);
  font-variant-numeric: tabular-nums;
  margin-right: 0.375rem;
}

/* ============ RÉFÉRENCES v4 — la carte à bandeau d'encre ============ */
/* Pas de carte noire : le papier reste blanc. Le nom du client vit sur un fin
   bandeau d'encre à quille orange — l'écho de l'en-tête du duel. */
.ref-card { padding: 0; overflow: clip; }
.ref-band {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--mn-space-3);
  background: var(--mn-ink);
  padding: 1rem clamp(1.5rem, 1.2rem + 1.2vw, 2.25rem);
  box-shadow: inset 0 -3px 0 var(--mn-orange);
}
.ref-band .ref-name {
  color: var(--mn-bone);
  font-size: clamp(1.125rem, 1rem + 0.5vw, 1.3125rem);
  white-space: nowrap;
}
.ref-badge {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: var(--mn-orange);
  white-space: nowrap;
}
.ref-body {
  position: relative;
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: clamp(1.25rem, 1rem + 1vw, 1.75rem) clamp(1.5rem, 1.2rem + 1.2vw, 2.25rem) clamp(1.5rem, 1.2rem + 1.2vw, 2.25rem);
}
.ref-card:hover .ref-band { box-shadow: inset 0 -4px 0 var(--mn-orange); }
/* l'étiquette gravée au-dessus du chiffre : le cartel du musée */
.ref-kicker {
  padding-top: var(--mn-space-4);
  border-top: var(--mn-border-width) solid var(--mn-border);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: var(--mn-text-muted);
}
.ref-kicker b { color: var(--mn-orange); font-weight: var(--mn-weight-regular); }
.ref-card .ref-hero { border-top: 0; padding-top: var(--mn-space-2); }
/* la jauge horlogère : le gain se lit d'un regard, carte contre carte */
.ref-gauge {
  position: relative;
  height: 2px;
  margin: var(--mn-space-2) 0 var(--mn-space-4);
  background: var(--mn-border);
}
.ref-gauge::before {
  content: "";
  position: absolute;
  top: 5px; left: 0; right: 0;
  height: 0.3125rem;
  background-image: repeating-linear-gradient(
    to right,
    color-mix(in srgb, var(--mn-ink) 14%, transparent) 0 1px,
    transparent 1px 0.5rem);
}
.ref-fill {
  position: absolute;
  top: -1px; left: 0;
  height: 4px;
  width: var(--gain, 50%);
  border-radius: var(--mn-radius-pill);
  background: linear-gradient(90deg, var(--mn-orange-deep), var(--mn-orange));
}
.ref-fill::after {
  content: "";
  position: absolute;
  right: -0.25rem; top: 50%;
  translate: 0 -50%;
  width: 0.5rem; height: 0.5rem;
  border-radius: 50%;
  background: var(--mn-orange);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--mn-orange) 18%, transparent);
  transition: box-shadow var(--mn-duration) var(--mn-ease);
}
.card--link:hover .ref-fill::after { box-shadow: 0 0 0 5px color-mix(in srgb, var(--mn-orange) 24%, transparent); }
/* la barre se déploie quand la carte apparaît */
.js .ref-fill { transition: width 900ms var(--mn-ease-out) 350ms; }
.js .rv:not(.in) .ref-fill { width: 0; }

/* ============ CAS CLIENT — l'avant/après par métier ============ */
/* Deux lignes étiquetées : AVANT en gris qui s'efface, APRÈS en encre qui s'impose. */
.case-io { display: grid; gap: var(--mn-space-3); margin-top: var(--mn-space-4); }
.io-row {
  display: grid;
  grid-template-columns: 3.75rem minmax(0, 1fr);
  gap: var(--mn-space-3);
  align-items: baseline;
  font-size: var(--mn-text-small);
}
.io-tag {
  width: 3.75rem;
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.io-before { color: var(--mn-text-muted); }
.io-before .io-tag { color: var(--mn-warm-grey-light); }
.io-after { color: var(--mn-text); }
.io-after .io-tag { color: var(--mn-orange-deep); font-weight: var(--mn-weight-bold); }
.io-after b { font-weight: var(--mn-weight-bold); }

/* L'emplacement libre : votre cabinet, en pointillés */
.ref-slot {
  text-decoration: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--mn-space-4);
  flex-wrap: wrap;
  margin-top: var(--mn-space-6);
  padding: var(--mn-space-6) clamp(1.5rem, 1.2rem + 1.2vw, 2.25rem);
  border: 2px dashed color-mix(in srgb, var(--mn-ink) 30%, transparent);
  border-radius: var(--mn-radius-lg);
  transition: border-color var(--mn-duration) var(--mn-ease);
}
.ref-slot:hover { border-color: var(--mn-orange); }
.ref-slot-label {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-small);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--mn-text-muted);
}
.ref-slot-label b { color: var(--mn-text); font-weight: var(--mn-weight-bold); }

/* ============ RÉFÉRENCES — l'orange redevient un signal ============ */
.ref-name {
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-extrabold);
  font-size: var(--mn-text-h3);
  letter-spacing: -0.01em;
  color: var(--mn-text);
}
.ref-logo { height: 2.25rem; width: auto; display: block; }
.ref-sector {
  font-size: var(--mn-text-small);
  color: var(--mn-text-muted);
  margin: var(--mn-space-2) 0 var(--mn-space-6);
  min-height: 3.2em;
}
.ref-kpis {
  display: flex;
  flex-direction: column;
  margin-top: auto;
}
.ref-kpi {
  display: flex;
  flex-direction: column;
  gap: var(--mn-space-1);
  padding-block: var(--mn-space-4);
  border-top: var(--mn-border-width) solid var(--mn-border);
}
.ref-kpi:last-child { padding-bottom: 0; }
.ref-kpi b {
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-extrabold);
  font-size: clamp(1.5rem, 1.3rem + 0.9vw, 2rem);
  line-height: 1;
  letter-spacing: -0.015em;
  color: var(--mn-text);
  font-variant-numeric: tabular-nums;
}
.ref-kpi span { font-size: var(--mn-text-caption); color: var(--mn-text-muted); }

/* ============ QUI JE SUIS ============ */
.about {
  display: grid;
  grid-template-columns: 18rem 1fr;
  gap: clamp(2.5rem, 2rem + 3vw, 5rem);
  align-items: start;
}
.about-photo {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: 50% 20%;
  border-radius: var(--mn-radius-lg);
  box-shadow: var(--mn-shadow-md);
}
.about-quote {
  font-size: var(--mn-text-lead);
  line-height: 1.55;
  color: var(--mn-text);
  margin: var(--mn-space-6) 0;
  padding-left: var(--mn-space-6);
  border-left: 2px solid var(--mn-orange);
  max-width: 52ch;
}
@media (max-width: 48rem) {
  .about { grid-template-columns: 1fr; gap: var(--mn-space-8); }
  .about-photo { max-width: 14rem; }
}

/* ============ CONTACT ============ */
.contact-mail {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-small);
  color: var(--mn-text-muted);
}
.contact-mail a { color: var(--mn-link); text-decoration: none; }
.contact-mail a:hover { text-decoration: underline; }

/* ============ ACCESSIBILITÉ ============ */
.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
.skip-link {
  position: absolute;
  left: var(--mn-gutter);
  top: -100%;
  z-index: 100;
  padding: var(--mn-space-3) var(--mn-space-6);
  background: var(--mn-orange-deep);
  color: var(--mn-white);
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-bold);
  font-size: var(--mn-text-small);
  border-radius: var(--mn-radius-pill);
  text-decoration: none;
}
.skip-link:focus { top: var(--mn-space-3); color: var(--mn-white); }

/* ============ FINAL — l'encre, une seule fois ============ */
.finale {
  background: var(--mn-ink);
  color: var(--mn-bone);
  border-radius: var(--mn-radius-lg) var(--mn-radius-lg) 0 0;
}
.finale-head {
  position: relative;
  overflow: clip;
  padding: clamp(5rem, 4rem + 5vw, 8rem) 0 clamp(3rem, 2.5rem + 2vw, 4.5rem);
}
.finale-head .wrap { position: relative; }
.finale-head .dial {
  top: 50%;
  right: calc(-1 * clamp(8rem, 16vw, 13rem));
  width: clamp(22rem, 38vw, 40rem);
}
.finale-head h2 {
  font-size: clamp(2.5rem, 1.8rem + 3.4vw, 4.6rem);
  max-width: 16ch;
}

/* ============ PIED DE PAGE ============ */
.footer { padding: var(--mn-space-16) 0 var(--mn-space-8); }
.footer-inner {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: var(--mn-space-12);
  margin-bottom: var(--mn-space-16);
}
.footer .mn-logo img { height: 2.5rem; }
.footer-brand p {
  margin-top: var(--mn-space-4);
  font-size: var(--mn-text-small);
  color: var(--mn-text-muted);
  max-width: 26rem;
}
.footer-col h4 {
  font-family: var(--mn-font-mono);
  font-weight: var(--mn-weight-regular);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: var(--mn-text-muted);
}
.footer-col ul {
  list-style: none;
  margin: 0; padding: 0;
  display: flex; flex-direction: column;
  gap: var(--mn-space-3);
}
.footer-col a {
  color: var(--mn-text);
  text-decoration: none;
  font-size: var(--mn-text-small);
  transition: color var(--mn-duration) var(--mn-ease);
}
.footer-col a:hover { color: var(--mn-orange); }
.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--mn-space-6);
  flex-wrap: wrap;
  padding-top: var(--mn-space-8);
  border-top: var(--mn-border-width) solid var(--mn-border);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  color: var(--mn-text-muted);
}
.footer-bottom .links { display: flex; gap: var(--mn-space-6); }
.footer-bottom a { color: var(--mn-text-muted); text-decoration: none; }
.footer-bottom a:hover { color: var(--mn-text); }

/* Le logotype, pleine page — la dernière image qu'on retient */
.footer-giant {
  margin-top: var(--mn-space-16);
  overflow: clip;
}
.footer-giant img {
  display: block;
  width: 100%;
  height: auto;
  opacity: 0.95;
  translate: 0 12%;
}

@media (max-width: 60rem) {
  .footer-inner { grid-template-columns: 1fr 1fr; gap: var(--mn-space-8); }
}
@media (max-width: 36rem) {
  .footer-inner { grid-template-columns: 1fr; }
  .btn-row .btn { width: 100%; }
}
@media (max-width: 40rem) {
  .btn { white-space: normal; text-align: center; max-width: 100%; }
}

/* ============ BANDE DE RÉASSURANCE ============ */
.strip {
  display: flex;
  flex-wrap: wrap;
  gap: var(--mn-space-4) var(--mn-space-12);
  margin-top: var(--mn-space-12);
  padding-top: var(--mn-space-8);
  border-top: var(--mn-border-width) solid var(--mn-border);
}
.strip-item {
  display: flex;
  align-items: center;
  gap: var(--mn-space-2);
  font-size: var(--mn-text-small);
  color: var(--mn-text-muted);
}
.strip-item svg { flex: none; color: var(--mn-orange); }

/* ============ FORMULAIRE ============ */
.form {
  display: flex;
  flex-direction: column;
  gap: var(--mn-space-6);
  max-width: var(--mn-container-text);
}
.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--mn-space-6);
}
.form-field { display: flex; flex-direction: column; gap: var(--mn-space-2); }
.form-field label {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: var(--mn-text-muted);
}
.form-field input,
.form-field textarea {
  width: 100%;
  font-family: var(--mn-font-body);
  font-size: var(--mn-text-body);
  line-height: var(--mn-leading-normal);
  color: var(--mn-text);
  background: var(--mn-surface);
  /* Warm Grey : la limite du champ tient les 3:1 exigés (WCAG 1.4.11). */
  border: var(--mn-border-width) solid var(--mn-text-muted);
  border-radius: var(--mn-radius-sm);
  padding: var(--mn-space-3) var(--mn-space-4);
  appearance: none;
  transition: border-color var(--mn-duration) var(--mn-ease),
              box-shadow var(--mn-duration) var(--mn-ease);
}
.form-field textarea { resize: vertical; min-height: 8rem; }
.card .form-field input,
.card .form-field textarea { background: var(--mn-surface-sunken); }
.form-field input::placeholder,
.form-field textarea::placeholder { color: var(--mn-text-muted); opacity: 1; }
.form-field input:focus-visible,
.form-field textarea:focus-visible {
  border-color: var(--mn-orange);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--mn-orange) 18%, transparent);
  outline: none;
}
.form .btn { align-self: flex-start; }
.form-hp {
  position: absolute;
  left: -9999px;
  width: 1px; height: 1px;
  opacity: 0;
  pointer-events: none;
}
.form-note {
  display: flex;
  align-items: center;
  gap: var(--mn-space-2);
  font-size: var(--mn-text-caption);
  color: var(--mn-text-muted);
}
.form-note svg { flex: none; color: var(--mn-orange); }
@media (max-width: 36rem) {
  .form-row { grid-template-columns: 1fr; }
}

/* ============ FAQ ============ */
.faq { max-width: var(--mn-container-text); display: grid; gap: var(--mn-space-3); }
/* v5 : chaque objection est un objet blanc qui s'ouvre — plus un simple filet */
.faq-item {
  background: var(--mn-white);
  border: var(--mn-border-width) solid color-mix(in srgb, var(--mn-ink) 9%, transparent);
  border-radius: var(--mn-radius-md);
  box-shadow: var(--mn-shadow-sm);
  overflow: clip;
  transition: border-color var(--mn-duration) var(--mn-ease), box-shadow var(--mn-duration-slow) var(--mn-ease-out);
}
.faq-item:hover { border-color: color-mix(in srgb, var(--mn-orange) 32%, var(--mn-border)); }
.faq-item[open] {
  border-color: color-mix(in srgb, var(--mn-orange) 50%, var(--mn-border));
  box-shadow: var(--mn-shadow-md), inset 3px 0 0 var(--mn-orange);
}
.faq-item summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--mn-space-6);
  padding: var(--mn-space-4) var(--mn-space-6);
  cursor: pointer;
  list-style: none;
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-bold);
  font-size: var(--mn-text-body);
  color: var(--mn-text);
}
.faq-item summary::-webkit-details-marker { display: none; }
/* la plaque « + » : le même orange que les plaques d'icônes, qui s'encre à l'ouverture */
.faq-item summary::after {
  content: "+";
  flex: none;
  width: 1.75rem; height: 1.75rem;
  display: grid;
  place-items: center;
  border-radius: 0.5rem;
  background: color-mix(in srgb, var(--mn-orange) 10%, transparent);
  color: var(--mn-orange-deep);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-lead);
  line-height: 1;
  transition: transform var(--mn-duration) var(--mn-ease), background var(--mn-duration) var(--mn-ease), color var(--mn-duration) var(--mn-ease);
}
.faq-item[open] summary::after {
  transform: rotate(45deg);
  background: var(--mn-orange);
  color: var(--mn-white);
}
.faq-answer {
  padding: 0 var(--mn-space-6) var(--mn-space-6);
  color: var(--mn-text-muted);
  font-size: var(--mn-text-small);
}

/* ============ PRIX ============ */
.price { align-items: flex-start; gap: var(--mn-space-4); }
.price-amount {
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-extrabold);
  font-size: var(--mn-text-hero);
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--mn-text);
  font-variant-numeric: tabular-nums;
}
.price-terms {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.06em;
  color: var(--mn-text-muted);
}

/* ============ BADGE ============ */
.badge {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  gap: var(--mn-space-2);
  padding: var(--mn-space-1) var(--mn-space-3);
  border: var(--mn-border-width) solid var(--mn-border);
  border-radius: var(--mn-radius-pill);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.04em;
  color: var(--mn-text-muted);
}
.badge--signal {
  border-color: var(--mn-orange);
  color: var(--mn-accent);
  background: color-mix(in srgb, var(--mn-orange) 7%, transparent);
}

/* ============ ÉCHANTILLON DE PROMPT ============ */
.sample {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  line-height: 1.7;
  color: var(--mn-text-muted);
  background: var(--mn-surface-sunken);
  border-radius: var(--mn-radius-sm);
  padding: var(--mn-space-6);
  white-space: pre-line;
  overflow-x: auto;
}
.sample .ph { color: var(--mn-accent); }

/* ============ PAGE DE CONFIRMATION ============ */
.confirm {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-height: 60vh;
  justify-content: center;
}

/* ============ MOUVEMENT ============ */
/* À l'arrivée de la page (héros) */
.reveal { animation: reveal-in 0.7s var(--mn-ease-out) both; }
.reveal--2 { animation-delay: 0.08s; }
.reveal--3 { animation-delay: 0.16s; }
@keyframes reveal-in {
  from { opacity: 0; transform: translateY(1rem); }
  to   { opacity: 1; transform: none; }
}

/* Au défilement : .rv observé par script, .in quand visible.
   Sans JavaScript, tout reste visible — l'état caché n'existe que si le script tourne. */
.js .rv {
  opacity: 0;
  transform: translateY(1.5rem);
  filter: blur(5px);
  transition: opacity 0.8s var(--mn-ease-out),
              transform 0.8s var(--mn-ease-out),
              filter 0.8s var(--mn-ease-out);
  transition-delay: calc(70ms * var(--d, 0));
}
.js .rv.in { opacity: 1; transform: none; filter: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal, .hero h1 .w > i { animation: none; transform: none; }
  .dial .hand { animation: none; }
  .marquee-track { animation: none; }
  .doc-caret { animation: none; }
  .js .rv { opacity: 1; transform: none; filter: none; transition: none; }
  * { transition-duration: 0.01ms !important; }
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; }
}

/* ============ LA BARRE D'ACTION MOBILE — le geste reste sous le pouce ============ */
.sticky-cta {
  position: fixed;
  left: 1rem; right: 1rem;
  bottom: calc(0.75rem + env(safe-area-inset-bottom, 0px));
  z-index: 60;
  display: none;
  justify-content: center;
  box-shadow: 0 18px 40px -14px rgba(20, 18, 16, 0.5), 0 0 0 1px color-mix(in srgb, var(--mn-white) 30%, transparent);
  transform: translateY(140%);
  transition: transform 320ms var(--mn-ease-out);
}
@media (max-width: 60rem) {
  .sticky-cta { display: inline-flex; }
  .sticky-cta.is-visible { transform: none; }
}

/* ============ LE SÉLECTEUR D'AUDIENCE — avocat ou syndic, dès le héros ============ */
.aud {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.25rem;
  margin-bottom: var(--mn-space-6);
  border: var(--mn-border-width) solid var(--mn-border);
  border-radius: var(--mn-radius-pill);
  background: color-mix(in srgb, var(--mn-white) 70%, transparent);
}
.aud-btn {
  font: inherit;
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-bold);
  font-size: var(--mn-text-small);
  color: var(--mn-text-muted);
  background: none;
  border: 0;
  border-radius: var(--mn-radius-pill);
  padding: 0.5rem 1rem;
  cursor: pointer;
  transition: background var(--mn-duration) var(--mn-ease), color var(--mn-duration) var(--mn-ease);
}
.aud-btn:hover { color: var(--mn-text); }
.aud-btn.is-on { background: var(--mn-ink); color: var(--mn-bone); }
.aud-label {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--mn-text-muted);
  padding: 0 0.5rem 0 0.75rem;
}

/* ============ LA CONSOLE EN ACCORDÉON — sur mobile, chaque temps s'ouvre sous son onglet ============ */
.mx-side .btn-row { margin-top: var(--mn-space-6); }
.mx-side .btn-row .btn { margin-top: 0; }
@media (max-width: 56rem) {
  .mx { display: grid; }
  .mx-rail, .mx-stage { display: contents; }
  .mx-tab { order: 1; }
  .mx-tab:nth-child(2) { order: 3; }
  .mx-tab:nth-child(3) { order: 5; }
  .mx-tab:nth-child(4) { order: 7; }
  .mx-panel { order: 2; }
  .mx-panel:nth-child(2) { order: 4; }
  .mx-panel:nth-child(3) { order: 6; }
  .mx-panel:nth-child(4) { order: 8; }
  .mx-tab {
    flex-direction: row;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--mn-space-2) var(--mn-space-3);
    width: 100%;
    padding: var(--mn-space-4) 0 var(--mn-space-4) 1.875rem;
    border-top: var(--mn-border-width) solid var(--mn-border);
    border-radius: 0;
  }
  .mx-tab::before { top: 50%; translate: 0 -50%; }
  .mx-tab .mx-name { font-size: 1.125rem; }
  .mx-tab .mx-num { order: -1; }
  .mx-panel { grid-area: auto; margin: 0 0 var(--mn-space-4); }
  .js .mx-panel:not(.is-on) { display: none; }
  .js .mx-panel { transition: none; }
}

/* ============ PIED DE PAGE SLIM — une ligne de liens, la signature reste ============ */
.footer-inner--slim {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-end;
  gap: var(--mn-space-8);
  margin-bottom: var(--mn-space-12);
}
.footer-links {
  list-style: none;
  margin: 0; padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--mn-space-2) var(--mn-space-6);
}
.footer-links a {
  color: var(--mn-text);
  text-decoration: none;
  font-size: var(--mn-text-small);
  transition: color var(--mn-duration) var(--mn-ease);
}
.footer-links a:hover { color: var(--mn-orange); }

/* ============ LE CALENDRIER INTÉGRÉ — les vrais créneaux, sans quitter la page ============ */
.cal-embed {
  margin-top: var(--mn-space-8);
  border: var(--mn-border-width) solid var(--mn-border);
  border-radius: var(--mn-radius-lg);
  overflow: clip;
  background: var(--mn-surface);
  box-shadow: var(--mn-shadow-lg);
  max-width: 62rem;
}
.cal-embed .calendly-inline-widget { position: relative; z-index: 1; min-width: 0 !important; height: 680px; }
.cal-embed { position: relative; }
.cal-fallback {
  position: absolute; inset: 0; z-index: 0;
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: var(--mn-space-2);
  padding: var(--mn-space-6); text-align: center;
  font-family: var(--mn-font-mono); font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide); text-transform: uppercase;
  color: var(--mn-text-muted);
}
.cal-fallback a { color: var(--mn-orange); text-decoration: none; }
.cal-fallback a:hover { text-decoration: underline; text-underline-offset: .2em; }
.cal-fallback-dot { width: .5rem; height: .5rem; border-radius: 50%; background: var(--mn-orange); animation: shelf-pulse 1.6s ease-in-out infinite; }
.cal-kicker {
  margin-top: var(--mn-space-12);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: var(--mn-text-muted);
}
.cal-kicker b { color: var(--mn-orange); font-weight: var(--mn-weight-regular); }
@media (max-width: 40rem) { .cal-embed .calendly-inline-widget { height: 900px; } }

/* ============ NAV : jamais de retour à la ligne ============ */
.nav-links { flex: none; }
.nav-links a { white-space: nowrap; }
.nav-inner .btn--sm { white-space: nowrap; flex: none; }
.nav-alt a { color: var(--mn-text-muted); }
.nav-alt a::before {
  content: "";
  display: inline-block;
  width: 1px; height: 0.875rem;
  margin-right: var(--mn-space-6);
  vertical-align: -0.125rem;
  background: var(--mn-border);
}
/* largeurs moyennes : la signature s'efface, le lien de l'autre métier aussi */
@media (max-width: 80rem) and (min-width: 60.01rem) {
  .nav-alt { display: none; }
}
@media (max-width: 72rem) and (min-width: 60.01rem) {
  .logo-sig { display: none; }
  .nav-inner { gap: var(--mn-space-5, 1.25rem); }
  .nav-links { gap: var(--mn-space-5, 1.25rem); }
}
@media (max-width: 60rem) {
  .nav-alt a::before { display: none; }
}

/* ============ LES GAINS : la plaque instrument ============ */
.gain {
  gap: 0;
  isolation: isolate;
}
/* la coiffe orange : un trait qui court sur toute la largeur au survol */
.gain::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--mn-orange), var(--mn-orange-deep));
  transform: scaleX(0.18);
  transform-origin: 0 50%;
  transition: transform 640ms var(--mn-ease-out);
  z-index: 1;
}
.gain:hover::before { transform: scaleX(1); }
.gain:hover { transform: translateY(-4px); }
.gain-head {
  display: flex;
  align-items: center;
  gap: var(--mn-space-4);
  margin-bottom: var(--mn-space-6);
}
.gain-head .icon-plate {
  width: 2.75rem; height: 2.75rem;
  border-radius: 0.75rem;
  margin-bottom: 0;
}
.gain-kicker {
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: var(--mn-text-muted);
}
.gain-kicker::before { content: "— "; color: var(--mn-orange); }
.gain-fig {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--mn-space-3);
}
.gain-fig { --fig: clamp(3rem, 2.3rem + 2.6vw, 4.5rem); }
.gain-fig b {
  display: block;
  font-family: var(--mn-font-display);
  font-weight: var(--mn-weight-extrabold);
  font-size: var(--fig);
  height: calc(var(--fig) * 0.95); /* hauteur fixe : les chiffres longs, plus petits, gardent la même boîte */
  line-height: calc(var(--fig) * 0.95);
  letter-spacing: -0.035em;
  color: var(--mn-text);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.gain-fig--long b { font-size: clamp(2.125rem, 1.15rem + 2.1vw, 3.5rem); letter-spacing: -0.03em; }
.gain-fig b .unit { color: var(--mn-orange); }
.gain-fig b .unit--arrow { font-size: 0.6em; vertical-align: 0.2em; margin-inline: 0.06em; }
.gain-sub {
  font-size: var(--mn-text-small);
  line-height: 1.45;
  color: var(--mn-text-muted);
  max-width: 30ch;
  min-height: 2.9em; /* deux lignes réservées : la réglette s'aligne carte contre carte */
}
/* la réglette : graduée comme le rail, et son index orange qui balaie au survol */
.gain-rule {
  position: relative;
  display: block;
  height: 0.75rem;
  margin: var(--mn-space-7, 1.75rem) 0 var(--mn-space-6, 1.5rem);
  background:
    repeating-linear-gradient(90deg, var(--mn-border) 0 1px, transparent 1px 2.5rem) 0 0 / 100% 0.75rem no-repeat,
    repeating-linear-gradient(90deg, var(--mn-border) 0 1px, transparent 1px 0.5rem) 0 0.375rem / 100% 0.375rem no-repeat;
}
.gain-rule::before {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 1px;
  background: var(--mn-border);
}
.gain-rule::after {
  content: "";
  position: absolute;
  left: 0; bottom: -0.25rem;
  width: 0.5rem; height: 0.5rem;
  border-radius: 50%;
  background: var(--mn-orange);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--mn-orange) 20%, transparent);
  transition: left 1100ms var(--mn-ease-out), box-shadow var(--mn-duration) var(--mn-ease);
}
.gain:hover .gain-rule::after {
  left: calc(100% - 0.5rem);
  box-shadow: 0 0 0 6px color-mix(in srgb, var(--mn-orange) 26%, transparent);
}
.gain-body { margin: 0; color: var(--mn-text-muted); }
.gain-foot {
  margin: auto 0 0;
  padding-top: var(--mn-space-6);
  font-family: var(--mn-font-mono);
  font-size: var(--mn-text-caption);
  letter-spacing: var(--mn-tracking-wide);
  text-transform: uppercase;
  color: color-mix(in srgb, var(--mn-text-muted) 80%, transparent);
}
.gain-foot i { font-style: normal; color: var(--mn-orange); }
@media (prefers-reduced-motion: reduce) {
  .gain:hover { transform: none; }
  .gain::before, .gain-rule::after { transition: none; }
}
