/* ---- 00-foundation.css ---- */
/* ==========================================================================
   DFINE MOUVEMENT — Kajabi theme stylesheet
   Source of truth: brand/BRAND.md + brand/tokens.css (v2.1, 2026-10-20).
   Built from kajabi-theme/src/css/*.css by kajabi-theme/tools/build.mjs — edit the
   sources, then rebuild. Only token colours, Instrument Serif 400 + DM Sans 400/500/600,
   what you touch is round (pill buttons/fields/filters, 12px cards and thumbnails), what you look at stays square, no shadows, no decorative gradients (one functional ink scrim on photos).
   ========================================================================== */

/* 00 — Tokens (brand/tokens.css, verbatim values) ------------------------- */
:root {
  --chalk: #F7F6F2;
  --stone: #E8E5DE;
  --ink: #242622;
  --powder-rose: #E4CFCA;
  --old-rose: #A07878;
  --old-rose-deep: #745B58;
  --sage: #A8B09F;
  --text-muted: #62645E;
  --text-on-ink-muted: #C2C6BC;
  --line: #CCCFC5;
  --line-strong: #B5B6AB;
  --field-border: #898D81;
  --select-border: #A3A69B;
  --line-on-ink: #65685D;
  --label-rule-on-ink: #86877D;
  --ink-hover: #41463C;
  --error: #8B3434;
  --paper-raised: #FDFCF9;

  --serif: 'Instrument Serif', Georgia, serif;
  --sans: 'DM Sans', Arial, sans-serif;

  --space-1: 8px; --space-2: 16px; --space-3: 24px; --space-4: 32px;
  --space-5: 48px; --space-6: 64px; --space-7: 96px; --space-8: 128px;
  --radius: 0;
  --radius-card: 12px;
  --radius-panel: 28px;
  --radius-pill: 999px;
  --duration: 200ms;

  /* Theme layer */
  --pad: clamp(20px, 5vw, 96px);
  --maxw: 1760px;
  --gutter: clamp(16px, 2vw, 24px);
  --hdr-h: 80px;
  --ease: cubic-bezier(.22, 1, .36, 1);
  --ease-in-out: cubic-bezier(.65, 0, .35, 1);
  --sp-s: clamp(40px, 5vw, 72px);
  --sp-m: clamp(72px, 9vw, 140px);
  --sp-l: clamp(96px, 12vw, 200px);
  --sp-xl: clamp(128px, 16vw, 260px);
}
@media (max-width: 767px) { :root { --hdr-h: 64px; } }

/* 01 — Schemes: every section picks one; components read the local variables */
.d-scheme-chalk, :root {
  --bg: var(--chalk); --fg: var(--ink); --muted: var(--text-muted);
  --rule: var(--line); --rule-strong: var(--ink); --dot: var(--old-rose);
  --btn-bg: var(--ink); --btn-fg: var(--chalk); --btn-hover: var(--ink-hover);
  --btn2-border: var(--field-border); --surface: var(--stone); --link-hover: var(--old-rose-deep);
}
.d-scheme-stone {
  --bg: var(--stone); --fg: var(--ink); --muted: var(--text-muted);
  --rule: var(--line-strong); --rule-strong: var(--ink); --dot: var(--old-rose);
  --btn-bg: var(--ink); --btn-fg: var(--chalk); --btn-hover: var(--ink-hover);
  --btn2-border: var(--field-border); --surface: var(--chalk); --link-hover: var(--old-rose-deep);
}
.d-scheme-ink {
  --bg: var(--ink); --fg: var(--chalk); --muted: var(--text-on-ink-muted);
  --rule: var(--line-on-ink); --rule-strong: var(--label-rule-on-ink); --dot: var(--powder-rose);
  --btn-bg: var(--chalk); --btn-fg: var(--ink); --btn-hover: var(--stone);
  --btn2-border: var(--label-rule-on-ink); --surface: var(--ink-hover); --link-hover: var(--powder-rose);
}
.d-scheme-rose {
  --bg: var(--powder-rose); --fg: var(--ink); --muted: var(--ink-hover);
  --rule: var(--old-rose); --rule-strong: var(--ink); --dot: var(--ink);
  --btn-bg: var(--ink); --btn-fg: var(--chalk); --btn-hover: var(--ink-hover);
  --btn2-border: var(--ink); --surface: var(--chalk); --link-hover: var(--old-rose-deep);
}
.d-scheme-sage {
  --bg: var(--sage); --fg: var(--ink); --muted: var(--ink);
  --rule: var(--ink-hover); --rule-strong: var(--ink); --dot: var(--ink);
  --btn-bg: var(--ink); --btn-fg: var(--chalk); --btn-hover: var(--ink-hover);
  --btn2-border: var(--ink); --surface: var(--chalk); --link-hover: var(--ink);
}
[class*="d-scheme-"] { background-color: var(--bg); color: var(--fg); }

/* 02 — Base ------------------------------------------------------------------ */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-padding-top: calc(var(--hdr-h) + 16px); }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }
body {
  margin: 0; min-height: 100vh;
  background: var(--chalk); color: var(--ink);
  font: 400 17px/1.6 var(--sans);
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}
@media (max-width: 767px) { body { font-size: 16px; } }
h1, h2, h3, h4, h5, h6, p, figure, blockquote, ol, ul, dl, dd { margin: 0; }
:where(ul[class], ol[class]) { list-style: none; padding: 0; }
h1, h2, h3, h4 { font-family: var(--serif); font-weight: 400; }
em, i { font-style: italic; }
h1 em, h2 em, h3 em, h4 em, .d-serif em, blockquote em { font-family: var(--serif); font-weight: 400; }
strong, b { font-weight: 600; }
img, svg, video, canvas, iframe { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration: none; transition: color var(--duration) ease; }
a:hover { color: var(--link-hover); }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
input, select, textarea { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid currentColor; outline-offset: 5px; }
.d-scheme-chalk :focus-visible, .d-scheme-stone :focus-visible { outline-color: var(--ink); }
::selection { background: var(--powder-rose); color: var(--ink); }
hr { border: 0; border-top: 1px solid var(--rule); margin: 0; }
.d-main { display: block; }
.d-main > div, .d-main [data-dynamic-sections], .d-main [data-section-id] { display: contents; }
/* Kajabi wraps each section in a div: flattened so sticky/pinned sections work, kept as boxes in the editor */
.d-editor .d-main > div, .d-editor .d-main [data-dynamic-sections], .d-editor .d-main [data-section-id] { display: block; }
.sr-only, .d-sr {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.d-skip {
  position: fixed; left: 16px; top: -120px; z-index: 1000;
  background: var(--ink); color: var(--chalk); padding: 12px 18px; font: 500 14px/1.4 var(--sans);
}
.d-skip:focus { top: 12px; color: var(--chalk); }

/* 03 — Type ------------------------------------------------------------------ */
.d-display {
  font: 400 clamp(64px, 10.2vw, 168px)/.92 var(--serif);
  letter-spacing: -.045em;
}
.d-display--m { font-size: clamp(56px, 8.4vw, 136px); line-height: .95; }
.d-display--s { font-size: clamp(48px, 6.6vw, 112px); line-height: .98; letter-spacing: -.04em; }
.d-h2 { font: 400 clamp(44px, 5.6vw, 92px)/1.02 var(--serif); letter-spacing: -.03em; }
.d-h3 { font: 400 clamp(30px, 3vw, 48px)/1.06 var(--serif); letter-spacing: -.02em; }
.d-h4 { font: 400 clamp(24px, 2vw, 32px)/1.12 var(--serif); letter-spacing: -.015em; }
.d-lead { font: 400 clamp(18px, 1.45vw, 21px)/1.5 var(--sans); max-width: 38ch; }
.d-body-text { font-size: 17px; line-height: 1.6; max-width: 60ch; color: var(--fg); }
.d-body-text p + p { margin-top: 1em; }
.d-muted { color: var(--muted); }
.d-annot {
  font: 500 12px/1.6 var(--sans); letter-spacing: .12em; text-transform: uppercase;
}
.d-num { font: 500 12px/1 var(--sans); letter-spacing: .12em; font-variant-numeric: tabular-nums; }

/* Rich text coming from the Kajabi editor */
.d-prose { font-size: 18px; line-height: 1.7; max-width: 68ch; }
.d-prose > * + * { margin-top: 1.1em; }
.d-prose h1, .d-prose h2 { font: 400 clamp(36px, 3.6vw, 56px)/1.05 var(--serif); letter-spacing: -.025em; margin-top: 1.6em; }
.d-prose h3 { font: 400 clamp(28px, 2.6vw, 40px)/1.1 var(--serif); letter-spacing: -.02em; margin-top: 1.5em; }
.d-prose h4, .d-prose h5, .d-prose h6 { font: 600 14px/1.5 var(--sans); letter-spacing: .1em; text-transform: uppercase; margin-top: 2em; }
.d-prose a { text-decoration: underline; text-underline-offset: 5px; text-decoration-thickness: 1px; }
.d-prose a:hover { color: var(--link-hover); }
.d-prose ul, .d-prose ol { padding-left: 1.2em; }
.d-prose ul { list-style: none; padding-left: 0; }
.d-prose ul li { position: relative; padding-left: 1.4em; }
.d-prose ul li::before { content: ""; position: absolute; left: 0; top: .7em; width: 6px; height: 6px; background: var(--dot); }
.d-prose li + li { margin-top: .45em; }
.d-prose blockquote {
  margin: 2em 0; padding: 0 0 0 clamp(20px, 3vw, 40px); border-left: 1px solid var(--fg);
  font: 400 clamp(28px, 2.8vw, 42px)/1.12 var(--serif); letter-spacing: -.02em;
}
.d-prose img, .d-prose video, .d-prose iframe { width: 100%; height: auto; margin: 2em 0; }
.d-prose iframe { aspect-ratio: 16 / 9; height: auto; border: 0; }
.d-prose hr { margin: 2.5em 0; }
.d-prose table { width: 100%; border-collapse: collapse; font-size: 16px; }
.d-prose th, .d-prose td { text-align: left; padding: 12px 8px; border-bottom: 1px solid var(--rule); }
.d-prose > :first-child { margin-top: 0; }
.d-prose strong { font-weight: 600; }

/* 04 — Layout ---------------------------------------------------------------- */
.d-wrap { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: var(--pad); }
.d-sec { position: relative; display: block; width: 100%; }
.d-pt-0 { padding-top: 0; } .d-pb-0 { padding-bottom: 0; }
.d-pt-s { padding-top: var(--sp-s); } .d-pb-s { padding-bottom: var(--sp-s); }
.d-pt-m { padding-top: var(--sp-m); } .d-pb-m { padding-bottom: var(--sp-m); }
.d-pt-l { padding-top: var(--sp-l); } .d-pb-l { padding-bottom: var(--sp-l); }
.d-pt-xl { padding-top: var(--sp-xl); } .d-pb-xl { padding-bottom: var(--sp-xl); }
.d-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--gutter); }
@media (max-width: 767px) { .d-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* The thin rule that opens a section (BRAND §5 gesture 6) */
.d-label {
  position: relative; display: flex; justify-content: space-between; gap: 20px;
  padding: 15px 0; margin-bottom: clamp(40px, 5vw, 64px);
  font: 500 12px/1.6 var(--sans); letter-spacing: .12em; text-transform: uppercase;
}
.d-label::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 1px;
  background: var(--rule-strong); transform-origin: 0 50%;
}
.d-label span:last-child { text-align: right; color: var(--muted); }
.d-label span:empty { display: none; }

/* Editorial media */
.d-media { position: relative; overflow: hidden; background: var(--surface); margin: 0; }
.d-media__in { position: absolute; inset: 0; }
.d-media__in img, .d-media__in video { width: 100%; height: 100%; object-fit: cover; }
.d-media [data-parallax] { inset: -9% 0; }
.d-ratio-1-1 { aspect-ratio: 1 / 1; }
.d-ratio-4-5 { aspect-ratio: 4 / 5; }
.d-ratio-3-4 { aspect-ratio: 3 / 4; }
.d-ratio-2-3 { aspect-ratio: 2 / 3; }
.d-ratio-3-2 { aspect-ratio: 3 / 2; }
.d-ratio-16-9 { aspect-ratio: 16 / 9; }
.d-ratio-21-9 { aspect-ratio: 21 / 9; }
.d-ratio-free { aspect-ratio: auto; }
.d-ratio-free .d-media__in { position: relative; inset: auto; }
.d-ratio-free .d-media__in img { height: auto; }
.d-caption { margin-top: 12px; font-size: 14px; color: var(--muted); }

/* Editor-only hints (never rendered on the live site) */
.d-editor-note {
  padding: 18px; border: 1px dashed var(--field-border); font: 500 13px/1.5 var(--sans); color: var(--muted);
}

/* ---- 01-components.css ---- */
/* 05 — Buttons & links -------------------------------------------------------
   Pill, no shadow, DM Sans 500 14px, min height 48px, arrow ↗. The label rolls
   up on hover (a clone slides in from below) and the arrow leaves diagonally. */
.d-btn {
  position: relative; display: inline-flex; align-items: center; gap: 18px;
  min-height: 48px; padding: 13px 24px 13px 26px;
  background: var(--btn-bg); color: var(--btn-fg); border: 1px solid var(--btn-bg); border-radius: var(--radius-pill);
  font: 500 14px/1.2 var(--sans); letter-spacing: .02em; white-space: nowrap;
  transition: background-color var(--duration) ease, color var(--duration) ease, border-color var(--duration) ease;
  will-change: transform; -webkit-tap-highlight-color: transparent;
}
.d-btn:hover { background: var(--btn-hover); border-color: var(--btn-hover); color: var(--btn-fg); }
.d-btn--sm { min-height: 44px; padding: 10px 18px 10px 20px; gap: 14px; font-size: 13px; }
.d-btn--secondary { background: transparent; color: var(--fg); border-color: var(--btn2-border); }
.d-btn--secondary:hover { background: var(--fg); color: var(--bg); border-color: var(--fg); }
.d-btn--inverse { background: var(--chalk); color: var(--ink); border-color: var(--chalk); }
.d-btn--inverse:hover { background: var(--stone); border-color: var(--stone); color: var(--ink); }
.d-scheme-ink .d-btn--inverse, .d-on-photo .d-btn--inverse { background: var(--chalk); color: var(--ink); }
.d-btn__roll { position: relative; display: block; overflow: hidden; height: 1.2em; }
.d-btn__text { display: block; transition: transform .55s var(--ease); }
.d-btn__text--clone { position: absolute; left: 0; top: 0; transform: translateY(110%); }
.d-btn:hover .d-btn__text { transform: translateY(-110%); }
.d-btn:hover .d-btn__text--clone { transform: translateY(0); }
.d-btn__arrow { position: relative; display: block; width: 1em; height: 1em; overflow: hidden; line-height: 1; }
.d-btn__arrow i { position: absolute; inset: 0; font-style: normal; transition: transform .55s var(--ease); }
.d-btn__arrow i + i { transform: translate(-110%, 110%); }
.d-btn:hover .d-btn__arrow i:first-child { transform: translate(110%, -110%); }
.d-btn:hover .d-btn__arrow i + i { transform: translate(0, 0); }
.d-btn[aria-disabled="true"], .d-btn:disabled { opacity: .45; pointer-events: none; }

.d-link {
  display: inline-flex; align-items: center; gap: 10px; min-height: 44px;
  font: 500 14px/1.3 var(--sans); letter-spacing: .04em; text-decoration: none;
}
.d-link > span:first-child { text-decoration: underline; text-underline-offset: 6px; text-decoration-thickness: 1px; }
.d-link__arrow { display: inline-block; text-decoration: none; transition: transform .4s var(--ease); }
.d-link:hover .d-link__arrow { transform: translate(3px, -3px); }
.d-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 28px; }
.d-actions .d-annot { color: var(--muted); }

/* Rolling text for nav links: data-text clone slides in */
.d-roll { position: relative; display: inline-block; overflow: hidden; vertical-align: top; line-height: 1.25; }
.d-roll > span { display: block; transition: transform .5s var(--ease); }
.d-roll::after {
  content: attr(data-text); position: absolute; left: 0; top: 0; transform: translateY(105%);
  font-family: var(--serif); font-style: italic; letter-spacing: 0; text-transform: none; font-size: 1.28em; line-height: 1;
  white-space: nowrap; transition: transform .5s var(--ease);
}
a:hover > .d-roll > span { transform: translateY(-105%); }
a:hover > .d-roll::after, .d-roll:hover::after { transform: translateY(0); }

/* 06 — Forms (Kajabi `form_input` markup: .form-group > label + .form-control) */
.d-form form { display: grid; gap: 14px; }
.d-form .form-group { margin: 0; display: grid; gap: 6px; }
.d-form label, .d-field label { font: 500 12px/1.4 var(--sans); letter-spacing: .1em; text-transform: uppercase; }
.d-form .form-control, .d-form input[type="text"], .d-form input[type="email"], .d-form input[type="tel"],
.d-form input[type="password"], .d-form input[type="number"], .d-form input[type="search"], .d-form select, .d-form textarea,
.d-input {
  width: 100%; min-height: 50px; padding: 13px 22px; margin: 0;
  background: transparent; color: var(--fg);
  border: 1px solid var(--btn2-border); border-radius: var(--radius-pill);
  font: 400 16px/1.4 var(--sans); -webkit-appearance: none; appearance: none;
  transition: border-color var(--duration) ease, background-color var(--duration) ease;
}
.d-form textarea { min-height: 140px; resize: vertical; border-radius: var(--radius-card); padding: 16px 22px; }
.d-form select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23242622' stroke-width='1.5'/%3E%3C/svg%3E");
  background-position: calc(100% - 22px) 50%; background-size: 12px 8px; background-repeat: no-repeat; padding-right: 48px;
}
.d-scheme-ink .d-form select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23F7F6F2' stroke-width='1.5'/%3E%3C/svg%3E"); }
.d-form .form-control::placeholder, .d-input::placeholder { color: var(--muted); opacity: 1; }
.d-form .form-control:hover, .d-input:hover { border-color: var(--fg); }
.d-form .form-control:focus, .d-input:focus { outline: 2px solid var(--fg); outline-offset: 3px; border-color: var(--fg); }
.d-form input[type="checkbox"], .d-form input[type="radio"] {
  width: 20px; height: 20px; margin: 0 10px 0 0; accent-color: var(--ink); vertical-align: middle;
}
.d-form .checkbox, .d-form .checkbox-field label { display: flex; align-items: center; text-transform: none; letter-spacing: 0; font-size: 15px; }
.d-form .parsley-error, .d-form .form-control.parsley-error { border: 2px solid var(--error); }
.d-scheme-ink .d-form .parsley-error { border-color: var(--powder-rose); }
.d-form .parsley-errors-list { list-style: none; padding: 0; margin: 4px 0 0; font: 500 13px/1.4 var(--sans); color: var(--error); }
.d-scheme-ink .d-form .parsley-errors-list { color: var(--powder-rose); }
.d-form button[type="submit"], .d-form input[type="submit"] { justify-self: start; }
.d-form--inline form { grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)) auto; align-items: end; }
.d-form--inline form > div:not(.form-group) { display: contents; }
.d-form--inline .form-group label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.d-form--inline button[type="submit"] { min-height: 50px; }
@media (max-width: 640px) { .d-form--inline form { grid-template-columns: minmax(0, 1fr); } .d-form--inline button[type="submit"] { width: 100%; justify-content: space-between; } }
.d-form__note { margin-top: 14px; font-size: 14px; color: var(--muted); }
.d-form input[type="submit"] { -webkit-appearance: none; appearance: none; border-radius: var(--radius-pill); }

/* Alerts (Kajabi flash messages) */
.d-alerts { position: fixed; z-index: 120; left: 50%; top: calc(var(--hdr-h) + 12px); transform: translateX(-50%); width: min(560px, calc(100% - 32px)); display: grid; gap: 8px; }
.d-alert { display: flex; gap: 12px; align-items: baseline; padding: 14px 24px; border-radius: var(--radius-card); background: var(--ink); color: var(--chalk); font: 500 14px/1.5 var(--sans); }
.d-alert__mark { flex: none; width: 8px; height: 8px; background: var(--powder-rose); transform: translateY(-1px); }
.d-alert--error { background: var(--chalk); color: var(--error); border: 2px solid var(--error); }
.d-alert--error .d-alert__mark { background: var(--error); }

/* Account links (Kajabi filters output bare <a>) */
.d-account { display: flex; align-items: center; gap: 18px; }
.d-account__link, .d-account__link a { font: 500 12px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; white-space: nowrap; }
.d-account__link a:hover, a.d-account__link:hover { color: var(--link-hover); }
.d-account__link--quiet { opacity: .7; }

/* Social text links */
.d-social { display: flex; flex-direction: column; gap: 10px; }
.d-social a { font-size: 16px; }

/* Tags / chips (filters, blog categories) — pill, 1px */
.d-chip {
  display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 8px 18px;
  border: 1px solid var(--select-border); border-radius: var(--radius-pill); background: transparent; color: var(--fg);
  font: 500 13px/1 var(--sans); letter-spacing: .02em; white-space: nowrap;
  transition: background-color var(--duration) ease, color var(--duration) ease, border-color var(--duration) ease;
}
.d-chip:hover { border-color: var(--fg); color: var(--fg); }
.d-chip[aria-pressed="true"], .d-chip.is-active { background: var(--fg); color: var(--bg); border-color: var(--fg); }
.d-chip__mark { width: 6px; height: 6px; background: var(--dot); }

/* Progress (library) */
.d-bar { position: relative; height: 2px; background: var(--rule); overflow: hidden; }
.d-bar > span { position: absolute; inset: 0 auto 0 0; background: var(--fg); width: var(--p, 0%); transition: width 1.2s var(--ease); }

/* Pagination */
.d-pag { display: flex; align-items: center; gap: 6px; margin-top: clamp(48px, 6vw, 80px); flex-wrap: wrap; }
.d-pag a, .d-pag span { display: inline-grid; place-items: center; min-width: 44px; height: 44px; padding: 0 10px; border: 1px solid transparent; font: 500 14px/1 var(--sans); }
.d-pag a:hover { border-color: var(--fg); color: var(--fg); }
.d-pag .is-current { border-color: var(--fg); }
.d-pag .is-disabled { color: var(--muted); opacity: .5; }
.d-pag__dir { gap: 8px; }

/* Powered by (required by Kajabi) */
.d-powered { padding: 18px var(--pad) 24px; background: var(--ink); color: var(--text-on-ink-muted); font-size: 13px; text-align: center; }
.d-powered a { color: var(--text-on-ink-muted); text-decoration: underline; text-underline-offset: 4px; }
.d-body--minimal .d-powered { background: transparent; color: var(--text-muted); }
.d-body--minimal .d-powered a { color: var(--text-muted); }

/* ---- 02-chrome.css ---- */
/* 07 — Header ----------------------------------------------------------------
   Fixed (Kajabi wraps sections in a div, so sticky would not hold).
   States set by dfine.js: .is-top, .is-hidden, .is-dark (over an ink section),
   .is-over-dark (top of page over a photo hero, when "transparent" is on). */
.d-header {
  position: fixed; inset: 0 0 auto 0; z-index: 90; height: var(--hdr-h);
  color: var(--ink); --dot: var(--old-rose); --link-hover: var(--old-rose-deep);
  --btn-bg: var(--ink); --btn-fg: var(--chalk); --btn-hover: var(--ink-hover);
  transition: transform .7s var(--ease), color .35s ease;
}
.d-header::before {
  content: ""; position: absolute; inset: 0;
  background: var(--chalk); border-bottom: 1px solid var(--line);
  transition: opacity .35s ease, background-color .35s ease, border-color .35s ease;
}
.d-header::before { opacity: 0; }
.d-header.is-scrolled::before { opacity: 1; }
.d-header.is-hidden { transform: translateY(-101%); }
.d-header.is-dark { color: var(--chalk); --dot: var(--powder-rose); --link-hover: var(--powder-rose); --btn-bg: var(--chalk); --btn-fg: var(--ink); --btn-hover: var(--stone); }
.d-header.is-dark::before { background: var(--ink); border-color: var(--line-on-ink); }
.d-header.is-over-dark:not(.is-scrolled),
.d-hero-dark .d-header--clear:not(.is-scrolled) { color: var(--chalk); --dot: var(--powder-rose); --link-hover: var(--powder-rose); --btn-bg: var(--chalk); --btn-fg: var(--ink); --btn-hover: var(--stone); }
.d-header-spacer { height: var(--hdr-h); }
.d-hero-first .d-header--clear ~ .d-header-spacer { height: 0; }

.d-header__bar {
  position: relative; height: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 var(--pad);
  display: flex; align-items: center; gap: clamp(20px, 3vw, 48px);
}
.d-header__logo { display: block; flex: none; width: var(--logo-w, 116px); color: currentColor; }
.d-header__logo:hover { color: currentColor; }
.d-logo-wm, .d-logo-img { display: block; width: 100%; height: auto; }
.d-wm__dot { fill: var(--dot); }

.d-header__nav { display: flex; align-items: center; gap: clamp(18px, 2.2vw, 36px); margin-left: auto; }
.d-header__link { position: relative; display: inline-flex; align-items: center; min-height: 44px; font: 500 12px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; }
.d-header__link.is-active::after { content: ""; position: absolute; left: 50%; bottom: 8px; width: 5px; height: 5px; margin-left: -2.5px; background: var(--dot); }
.d-header__actions { display: flex; align-items: center; gap: clamp(16px, 2vw, 28px); margin-left: clamp(8px, 1.5vw, 24px); }
.d-header__nav:empty + .d-header__actions, .d-nav-overlay .d-header__actions { margin-left: auto; }

.d-header__burger { display: none; align-items: center; gap: 12px; min-height: 44px; padding: 0 2px; font: 500 12px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; }
.d-header__burger-label { position: relative; display: grid; overflow: hidden; height: 1.1em; text-align: right; }
.d-header__burger-label span { grid-area: 1 / 1; display: block; transition: transform .5s var(--ease); }
.d-header__burger-label [data-label-close] { transform: translateY(110%); }
.d-burger { position: relative; width: 24px; height: 10px; }
.d-burger i { position: absolute; left: 0; width: 100%; height: 1.5px; background: currentColor; transition: transform .5s var(--ease), top .5s var(--ease); }
.d-burger i:first-child { top: 0; }
.d-burger i:last-child { top: 8.5px; }

/* Menu open: header sits on the ink menu */
.d-menu-open .d-header { color: var(--chalk); --dot: var(--powder-rose); --link-hover: var(--powder-rose); transform: none; }
.d-menu-open .d-header::before { opacity: 0; }
.d-menu-open .d-header__nav, .d-menu-open .d-header__account, .d-menu-open .d-header__cta { opacity: 0; pointer-events: none; }
.d-header__nav, .d-header__account, .d-header__cta { transition: opacity .3s ease; }
.d-menu-open .d-burger i:first-child { top: 4.25px; transform: rotate(45deg); }
.d-menu-open .d-burger i:last-child { top: 4.25px; transform: rotate(-45deg); }
.d-menu-open .d-header__burger-label [data-label-open] { transform: translateY(-110%); }
.d-menu-open .d-header__burger-label [data-label-close] { transform: translateY(0); }

/* Below 1024px — or always with the "Menu plein écran" option — the burger replaces the inline nav */
@media (max-width: 1023px) {
  .d-header__nav, .d-header__account, .d-header__cta { display: none; }
  .d-header__burger { display: inline-flex; }
  .d-header__actions { margin-left: auto; }
}
.d-nav-overlay .d-header__nav { display: none; }
.d-nav-overlay .d-header__burger { display: inline-flex; }

/* 08 — Full-screen menu -------------------------------------------------------- */
.d-menu {
  position: fixed; inset: 0; z-index: 85; overflow-y: auto; overscroll-behavior: contain;
  visibility: hidden; clip-path: inset(0 0 100% 0);
  transition: clip-path .85s var(--ease-in-out), visibility 0s linear .85s;
}
.d-menu-open .d-menu { visibility: visible; clip-path: inset(0 0 0 0); transition: clip-path .85s var(--ease-in-out), visibility 0s; }
.d-menu__inner {
  min-height: 100%; max-width: var(--maxw); margin: 0 auto;
  padding: calc(var(--hdr-h) + clamp(24px, 5vh, 64px)) var(--pad) clamp(28px, 4vh, 48px);
  display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 6vw, 120px);
}
.d-menu__nav { display: flex; flex-direction: column; justify-content: center; border-top: 1px solid var(--rule); }
.d-menu__link {
  display: grid; grid-template-columns: 56px minmax(0, 1fr); align-items: baseline;
  padding: clamp(10px, 1.6vh, 18px) 0; border-bottom: 1px solid var(--rule); color: var(--chalk);
}
.d-menu__link:hover { color: var(--chalk); }
.d-menu__n { font: 500 12px/1 var(--sans); letter-spacing: .12em; color: var(--muted); transition: color .3s ease; }
.d-menu__t { display: block; overflow: hidden; font: 400 clamp(40px, 6.4vw, 96px)/1.04 var(--serif); letter-spacing: -.03em; }
.d-menu__t span { display: inline-block; transform: translateY(105%); transition: transform .9s var(--ease); transition-delay: calc(var(--i, 0) * 55ms + 250ms); }
.d-menu-open .d-menu__t span { transform: translateY(0); }
.d-menu:not(.is-open-done) .d-menu__t span { will-change: transform; }
.d-menu__nav:hover .d-menu__link { opacity: .38; }
.d-menu__nav .d-menu__link:hover { opacity: 1; }
.d-menu__link:hover .d-menu__t span { font-style: italic; transform: translateX(14px); transition: transform .5s var(--ease); }
.d-menu__link:hover .d-menu__n { color: var(--powder-rose); }
.d-menu__link { transition: opacity .35s ease; }
.d-menu__aside { display: flex; flex-direction: column; justify-content: flex-end; gap: 32px; opacity: 0; transform: translateY(16px); transition: opacity .6s ease .45s, transform .9s var(--ease) .45s; }
.d-menu-open .d-menu__aside { opacity: 1; transform: none; }
.d-menu__media { display: none; position: relative; aspect-ratio: 4 / 5; overflow: hidden; background: var(--ink-hover); max-height: 46vh; }
.d-menu__media img { width: 100%; height: 100%; object-fit: cover; }
.d-menu__foot { display: grid; gap: 26px; justify-items: start; }
.d-menu__account { flex-wrap: wrap; gap: 14px 22px; }
.d-menu__social { flex-direction: row; flex-wrap: wrap; gap: 8px 22px; }
.d-menu__social a { font-size: 15px; }
.d-menu__note { color: var(--muted); }
@media (min-width: 1024px) { .d-menu__media { display: block; } }
@media (max-width: 1023px) {
  .d-menu__inner { grid-template-columns: minmax(0, 1fr); align-content: space-between; }
  .d-menu__link { grid-template-columns: 40px minmax(0, 1fr); }
}

/* 09 — Footer ---------------------------------------------------------------- */
.d-footer { position: relative; overflow: hidden; }
.d-footer__top {
  display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(48px, 8vw, 140px);
  padding-top: clamp(80px, 10vw, 160px); padding-bottom: clamp(56px, 7vw, 110px);
}
.d-footer__eyebrow { color: var(--muted); }
.d-footer__title { margin: 18px 0 36px; max-width: 13ch; font: 400 clamp(44px, 5.6vw, 92px)/1.02 var(--serif); letter-spacing: -.03em; }
.d-footer__form { max-width: 560px; }
.d-footer__note { margin-top: 14px; font-size: 14px; color: var(--muted); }
.d-footer__cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; align-content: end; }
.d-footer__h { position: relative; padding-bottom: 14px; margin-bottom: 18px; color: var(--muted); border-bottom: 1px solid var(--rule); }
.d-footer__col ul { display: grid; gap: 12px; list-style: none; margin: 0; padding: 0; }
.d-footer__col a { font-size: 17px; }
.d-footer__mark { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 var(--pad); color: var(--chalk); }
.d-footer__wm { width: 100%; height: auto; overflow: hidden; }
.d-footer__base {
  position: relative; display: flex; justify-content: space-between; align-items: center; gap: 12px 24px; flex-wrap: wrap;
  padding-top: 20px; padding-bottom: 28px; margin-top: clamp(24px, 3vw, 40px); font-size: 14px; color: var(--muted);
}
.d-footer__base::before { content: ""; position: absolute; top: 0; left: var(--pad); right: var(--pad); height: 1px; background: var(--rule); }
.d-footer__top-link { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; }
.d-footer .d-powered { background: transparent; padding-top: 0; }
@media (max-width: 900px) {
  .d-footer__top { grid-template-columns: minmax(0, 1fr); }
  .d-footer__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
  .d-footer__base { flex-direction: column; align-items: flex-start; }
}

/* 10 — Page chrome: opening, curtain, cursor, progress ------------------------ */
.d-preloader { display: none; }
.d-preload .d-preloader {
  position: fixed; inset: 0; z-index: 200; display: grid; place-items: center; align-content: center; gap: 28px;
  background: var(--chalk); color: var(--ink); --dot: var(--old-rose);
}
.d-preload body { overflow: hidden; }
.d-preloader__mark { width: min(56vw, 520px); }
.d-preloader__wm { width: 100%; height: auto; overflow: hidden; }
.d-preloader__line { font: 400 italic clamp(22px, 2vw, 30px)/1.2 var(--serif); letter-spacing: -.01em; color: var(--text-muted); }
.d-preload .d-preloader__mark { visibility: hidden; }
.d-preload .d-preloader.is-armed .d-preloader__mark { visibility: visible; }
.d-preload .d-preloader__line { opacity: 0; }
.d-failsafe .d-preloader { display: none !important; }
.d-failsafe body { overflow: visible; }

.d-curtain {
  position: fixed; inset: 0; z-index: 190; pointer-events: none;
  background: var(--ink); transform: translateY(101%); display: grid; place-items: center;
}
.d-curtain__dot { width: 14px; height: 14px; background: var(--powder-rose); transform: scale(0); transition: transform .5s var(--ease) .2s; }
.d-leaving .d-curtain { transform: translateY(0); transition: transform .65s var(--ease-in-out); pointer-events: all; animation: none; }
.d-leaving .d-curtain__dot { transform: scale(1); }
.d-entering .d-curtain { transform: translateY(0); animation: d-curtain-out .95s var(--ease-in-out) .12s forwards; }
.d-entering .d-curtain__dot { transform: scale(1); animation: d-dot-out .4s var(--ease) forwards; }
@keyframes d-curtain-out { to { transform: translateY(-101%); } }
@keyframes d-dot-out { to { transform: scale(0); } }

.d-cursor { position: fixed; left: 0; top: 0; z-index: 300; pointer-events: none; display: none; }
.d-cursor-on .d-cursor { display: block; }
.d-cursor__sq {
  position: absolute; left: 0; top: 0; width: 10px; height: 10px; margin: -5px 0 0 -5px;
  background: var(--old-rose); transition: transform .45s var(--ease), background-color .3s ease, opacity .3s ease;
}
.d-cursor.is-link .d-cursor__sq { transform: scale(2.2); background: var(--ink); opacity: .14; }
.d-cursor.is-label .d-cursor__sq { transform: scale(9.2); background: var(--ink); opacity: 1; }
.d-cursor.is-dark.is-label .d-cursor__sq { background: var(--chalk); }
.d-cursor.is-hidden .d-cursor__sq, .d-cursor.is-hidden .d-cursor__label { opacity: 0; }
.d-cursor__label {
  position: absolute; left: 0; top: 0; transform: translate(-50%, -50%) scale(.6); opacity: 0;
  font: 500 12px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--chalk); white-space: nowrap;
  transition: opacity .25s ease, transform .45s var(--ease);
}
.d-cursor.is-label .d-cursor__label { opacity: 1; transform: translate(-50%, -50%) scale(1); }
.d-cursor.is-dark .d-cursor__label { color: var(--ink); }
@media (hover: none), (pointer: coarse) { .d-cursor { display: none !important; } }

.d-progress { position: fixed; left: 0; right: 0; top: 0; z-index: 95; height: 2px; pointer-events: none; }
.d-progress span { display: block; height: 100%; background: var(--old-rose); transform-origin: 0 50%; transform: scaleX(var(--p, 0)); }

/* ---- 10-hero.css ---- */
/* 11 — Héros campagne ---------------------------------------------------------- */
.d-hero {
  position: relative; display: flex; flex-direction: column; justify-content: flex-end;
  color: var(--chalk); background: var(--ink); overflow: hidden; isolation: isolate;
  --fg: var(--chalk); --muted: var(--text-on-ink-muted); --dot: var(--powder-rose); --link-hover: var(--powder-rose);
  --btn-bg: var(--chalk); --btn-fg: var(--ink); --btn-hover: var(--stone); --btn2-border: var(--chalk);
}
.d-hero--light { color: var(--ink); background: var(--stone); --fg: var(--ink); --muted: var(--text-muted); --dot: var(--old-rose); --link-hover: var(--old-rose-deep); --btn-bg: var(--ink); --btn-fg: var(--chalk); --btn-hover: var(--ink-hover); }
.d-hero--h-full { min-height: 100vh; min-height: 100svh; }
.d-hero--h-tall { min-height: 88vh; min-height: 88svh; }
.d-hero--h-medium { min-height: 70vh; min-height: 70svh; }
.d-hero__media { position: absolute; inset: 0; z-index: -1; overflow: hidden; }
.d-hero__bg { position: absolute; inset: 0; display: block; width: 100%; height: 100%; will-change: transform; }
.d-hero__bg img, video.d-hero__bg { width: 100%; height: 100%; object-fit: cover; }
.d-motion:not(.d-preload) .d-hero.d-is-first .d-hero__bg img { animation: d-hero-settle 2.4s var(--ease) both; }
@keyframes d-hero-settle { from { transform: scale(1.14); } to { transform: scale(1); } }
.d-hero__scrim { position: absolute; inset: 0; pointer-events: none; }
.d-hero__scrim--light { background: linear-gradient(0deg, rgba(36, 38, 34, .5) 0%, rgba(36, 38, 34, 0) 55%); }
.d-hero__scrim--medium { background: linear-gradient(0deg, rgba(36, 38, 34, .68) 0%, rgba(36, 38, 34, .2) 48%, rgba(36, 38, 34, 0) 78%), linear-gradient(90deg, rgba(36, 38, 34, .38) 0%, rgba(36, 38, 34, 0) 62%); }
.d-hero__scrim--strong { background: linear-gradient(0deg, rgba(36, 38, 34, .82) 0%, rgba(36, 38, 34, .45) 55%, rgba(36, 38, 34, .25) 100%); }
.d-hero__content {
  position: relative; padding-top: calc(var(--hdr-h) + clamp(32px, 6vh, 72px)); padding-bottom: clamp(44px, 6.5vw, 96px);
  will-change: transform, opacity;
}
.d-hero__annot { margin-bottom: clamp(18px, 2vw, 28px); --d: 120ms; }
.d-hero__title { max-width: 12ch; }
.d-hero__foot { display: flex; flex-direction: column; align-items: flex-start; gap: 28px; margin-top: clamp(28px, 3.2vw, 48px); }
.d-hero__lead { --d: 420ms; }
.d-hero__actions { --d: 560ms; }
.d-hero__corner { position: absolute; right: var(--pad); bottom: clamp(44px, 6.5vw, 96px); writing-mode: vertical-rl; transform: rotate(180deg); color: var(--fg); opacity: .9; }
.d-hero--split .d-hero__content { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); column-gap: var(--gutter); align-items: end; }
.d-hero--split .d-hero__annot { grid-column: 1 / -1; }
.d-hero--split .d-hero__foot { margin-top: 0; padding-bottom: .9vw; }
.d-hero--center { justify-content: center; text-align: center; }
.d-hero--center .d-hero__content { display: flex; flex-direction: column; align-items: center; padding-bottom: clamp(72px, 9vw, 140px); }
.d-hero--center .d-hero__title { max-width: 14ch; }
.d-hero--center .d-hero__foot { align-items: center; }
.d-hero--center .d-hero__lead { margin-inline: auto; }
.d-hero__scroll { position: absolute; left: 50%; bottom: 0; width: 1px; height: clamp(48px, 7vh, 80px); overflow: hidden; background: rgba(247, 246, 242, .28); }
.d-hero--light .d-hero__scroll { background: rgba(36, 38, 34, .2); }
.d-hero__scroll i { position: absolute; left: 0; top: 0; width: 1px; height: 100%; background: currentColor; animation: d-scroll-cue 2.4s var(--ease-in-out) infinite; }
@keyframes d-scroll-cue { 0% { transform: translateY(-100%); } 55%, 100% { transform: translateY(100%); } }
.d-preload [data-hero] [data-reveal] { opacity: 0 !important; transform: translate3d(0, 34px, 0) !important; }
@media (max-width: 1023px) {
  .d-hero--split .d-hero__content { grid-template-columns: minmax(0, 1fr); }
  .d-hero--split .d-hero__foot { margin-top: 28px; }
}
@media (max-width: 767px) {
  .d-hero__corner { display: none; }
  .d-hero__scroll { display: none; }
  .d-hero__actions .d-btn { width: 100%; justify-content: space-between; }
  .d-hero__actions { width: 100%; }
}

/* ---- 11-editorial.css ---- */
/* 12 — Manifeste ----------------------------------------------------------------- */
.d-statement__grid { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); gap: clamp(40px, 8vw, 140px); align-items: start; }
.d-statement--wide { grid-template-columns: minmax(0, 1fr); }
.d-statement--offset { grid-template-columns: minmax(0, 1fr); padding-left: clamp(0px, 16vw, 320px); }
.d-statement__text { font: 400 clamp(40px, 5.2vw, 88px)/1.04 var(--serif); letter-spacing: -.03em; }
.d-statement__text--xl { font-size: clamp(52px, 8vw, 136px); line-height: .98; letter-spacing: -.04em; }
.d-statement__text--m { font-size: clamp(32px, 3.6vw, 60px); line-height: 1.08; }
.d-statement--wide .d-statement__text { max-width: 18ch; }
.d-statement__side { padding-top: 12px; font-size: 17px; max-width: 40ch; }
.d-statement__side > p:first-child { color: var(--fg); }
.d-statement__rule { display: block; width: 32px; height: 1px; background: var(--fg); margin: 28px 0; }
.d-statement__btn { margin-top: 20px; }
.d-word { display: inline-block; }
@media (max-width: 900px) { .d-statement__grid { grid-template-columns: minmax(0, 1fr); gap: 36px; } .d-statement--offset { padding-left: 0; } }

/* 13 — Texte & image -------------------------------------------------------------- */
.d-textmedia__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--gutter); row-gap: 40px; }
.d-textmedia__media { grid-column: 1 / span 5; }
.d-textmedia__text { grid-column: 7 / span 6; display: flex; flex-direction: column; gap: 28px; }
.d-textmedia--img-right .d-textmedia__media { grid-column: 8 / span 5; grid-row: 1; }
.d-textmedia--img-right .d-textmedia__text { grid-column: 1 / span 6; grid-row: 1; }
.d-textmedia--v-start .d-textmedia__text { align-self: start; }
.d-textmedia--v-center .d-textmedia__text { align-self: center; }
.d-textmedia--v-end .d-textmedia__text { align-self: end; }
.d-textmedia--offset.d-textmedia--img-left .d-textmedia__media { margin-left: calc(var(--pad) * -1); }
.d-textmedia--offset.d-textmedia--img-right .d-textmedia__media { margin-right: calc(var(--pad) * -1); }
.d-textmedia--offset .d-textmedia__media .d-media { margin-top: clamp(0px, 4vw, 64px); }
.d-textmedia__title { max-width: 14ch; }
.d-textmedia__body { max-width: 46ch; }
.d-textmedia__eyebrow { color: var(--muted); }
@media (max-width: 900px) {
  .d-textmedia__grid { grid-template-columns: minmax(0, 1fr); }
  .d-textmedia__media, .d-textmedia__text, .d-textmedia--img-right .d-textmedia__media, .d-textmedia--img-right .d-textmedia__text { grid-column: 1; grid-row: auto; }
  .d-textmedia__media { order: 2; }
  .d-textmedia--offset .d-textmedia__media .d-media { margin-top: 0; }
  .d-textmedia--offset.d-textmedia--img-left .d-textmedia__media, .d-textmedia--offset.d-textmedia--img-right .d-textmedia__media { margin-inline: calc(var(--pad) * -1) 0; }
  .d-textmedia--offset.d-textmedia--img-right .d-textmedia__media { margin-inline: 0 calc(var(--pad) * -1); }
}

/* 14 — Index éditorial ----------------------------------------------------------- */
.d-index { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); }
.d-index--with-side { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); column-gap: clamp(40px, 7vw, 140px); align-items: start; }
.d-index__side { margin-left: calc(var(--pad) * -1); margin-top: clamp(32px, 5vw, 72px); }
.d-index__main { position: relative; }
.d-index__title { margin-bottom: clamp(32px, 4vw, 56px); max-width: 14ch; }
.d-index__intro { max-width: 46ch; margin: -16px 0 40px; }
.d-index__list { position: relative; border-bottom: 1px solid var(--rule); }
.d-index__item { border-top: 1px solid var(--rule); }
.d-index__row {
  position: relative; display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; column-gap: 16px; row-gap: 6px;
  align-items: baseline; padding: clamp(18px, 2.2vw, 26px) 0; color: var(--fg);
}
.d-index__row:hover { color: var(--fg); }
.d-index__n { color: var(--muted); transition: color .3s ease; }
.d-index__name { font: 400 clamp(34px, 4vw, 60px)/1 var(--serif); letter-spacing: -.025em; transition: transform .6s var(--ease); transform-origin: 0 50%; }
.d-index__desc { grid-column: 2; color: var(--muted); font-size: 15px; }
.d-index__meta { grid-column: 3; grid-row: 1; align-self: center; color: var(--muted); text-align: right; transition: opacity .3s ease; }
.d-index__arrow { position: absolute; right: 0; top: 50%; transform: translate(-8px, -50%); opacity: 0; font-size: 22px; transition: opacity .35s ease, transform .5s var(--ease); }
.d-index__thumb { display: none; }
.d-index__row:hover .d-index__name, .d-index__row:focus-visible .d-index__name { font-style: italic; transform: translateX(14px); }
.d-index__row:hover .d-index__n { color: var(--dot); }
.d-index__row:hover .d-index__arrow { opacity: 1; transform: translate(0, -50%); }
.d-index__row:hover .d-index__meta { opacity: 0; }
.d-index__list:hover .d-index__item { opacity: .45; transition: opacity .35s ease; }
.d-index__list .d-index__item:hover { opacity: 1; }
.d-index__float {
  position: absolute; left: 0; top: 0; z-index: 3; width: clamp(200px, 17vw, 280px); aspect-ratio: 4 / 5; margin: 0;
  pointer-events: none; overflow: hidden; background: var(--surface);
  translate: -50% -60%; opacity: 0; scale: .86; transition: opacity .35s ease, scale .5s var(--ease);
}
.d-index__float.is-on { opacity: 1; scale: 1; }
.d-index__float img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .35s ease; }
.d-index__float img.is-on { opacity: 1; }
.d-index__cta { margin-top: 40px; }
@media (hover: none), (max-width: 1023px) { .d-index__float { display: none; } }
@media (max-width: 900px) {
  .d-index--with-side { grid-template-columns: minmax(0, 1fr); }
  .d-index__side { order: 2; margin: 48px 0 0 calc(var(--pad) * -1); width: 72%; }
  .d-index__row { grid-template-columns: 44px minmax(0, 1fr) 64px; }
  .d-index__meta { display: none; }
  .d-index__thumb { display: block; grid-column: 3; grid-row: 1 / span 2; align-self: center; width: 64px; aspect-ratio: 1; overflow: hidden; background: var(--surface); }
  .d-index__thumb img { width: 100%; height: 100%; object-fit: cover; }
  .d-index__arrow { display: none; }
}

/* 15 — Chiffres géants ------------------------------------------------------------ */
.d-numbers__title { margin-bottom: clamp(40px, 5vw, 64px); max-width: 16ch; }
.d-numbers__row { display: grid; grid-template-columns: repeat(var(--n, 3), minmax(0, 1fr)); border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.d-numbers__cell { position: relative; padding: clamp(24px, 3vw, 40px) clamp(14px, 2vw, 28px) clamp(28px, 3vw, 44px); }
.d-numbers__cell + .d-numbers__cell { border-left: 1px solid var(--rule); }
.d-numbers__cell.is-accent { background: var(--powder-rose); color: var(--ink); --muted: var(--ink-hover); }
.d-numbers__value { display: block; font: 400 clamp(96px, 17vw, 280px)/.82 var(--serif); letter-spacing: -.05em; font-variant-numeric: tabular-nums; }
.d-numbers__unit { display: block; margin: 22px 0 8px; }
.d-numbers__text { font-size: 16px; max-width: 22ch; }
.d-numbers__foot { display: flex; flex-wrap: wrap; gap: 28px; margin-top: 28px; font-size: 15px; }
@media (max-width: 640px) {
  .d-numbers__row { grid-template-columns: minmax(0, 1fr); }
  .d-numbers__cell + .d-numbers__cell { border-left: 0; border-top: 1px solid var(--rule); }
  .d-numbers__cell { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 20px; align-items: end; }
  .d-numbers__value { grid-row: 1 / span 2; font-size: 112px; }
  .d-numbers__unit { margin: 0 0 4px; }
  .d-numbers__text { font-size: 15px; }
}

/* 16 — Moins de → plus de ------------------------------------------------------ */
.d-lessmore__title { margin-bottom: clamp(32px, 4vw, 56px); max-width: 16ch; }
.d-lessmore__list { border-bottom: 1px solid var(--rule); }
.d-lessmore__row {
  display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: 28px; align-items: baseline;
  padding: clamp(18px, 2.2vw, 28px) 0; border-top: 1px solid var(--rule);
  font: 400 clamp(32px, 4.6vw, 76px)/1.02 var(--serif); letter-spacing: -.03em;
}
.d-lessmore__less { position: relative; color: var(--muted); }
.d-lessmore__less > span { position: relative; }
.d-lessmore__less > span::after {
  content: ""; position: absolute; left: -2%; right: -2%; top: 55%; height: 1px; background: currentColor;
  transform: scaleX(0); transform-origin: 0 50%; transition: transform 1s var(--ease) calc(var(--d, 0ms) + 350ms);
}
.d-lessmore__arrow { font: 400 22px/1 var(--sans); color: var(--dot); }
.d-lessmore__more { font-style: italic; }
.d-lessmore__row.is-in .d-lessmore__less > span::after { transform: scaleX(1); }
.d-motion .d-lessmore__less { opacity: 0; transform: translateY(24px); transition: opacity .8s ease var(--d, 0ms), transform 1.1s var(--ease) var(--d, 0ms); }
.d-motion .d-lessmore__arrow { opacity: 0; transform: translateX(-16px); transition: opacity .6s ease calc(var(--d, 0ms) + 500ms), transform .9s var(--ease) calc(var(--d, 0ms) + 500ms); }
.d-motion .d-lessmore__more { opacity: 0; transform: translateX(28px); transition: opacity .9s ease calc(var(--d, 0ms) + 620ms), transform 1.2s var(--ease) calc(var(--d, 0ms) + 620ms); }
.d-motion .d-lessmore__row.is-in > * { opacity: 1; transform: none; }
.d-failsafe .d-lessmore__row > * { opacity: 1 !important; transform: none !important; }
.d-lessmore__cta { margin-top: 48px; }
@media (max-width: 700px) {
  .d-lessmore__row { grid-template-columns: minmax(0, 1fr); gap: 6px; }
  .d-lessmore__arrow { display: none; }
}

/* 17 — Citation & image ---------------------------------------------------------- */
.d-quote { position: relative; padding-bottom: clamp(0px, 4vw, 56px); }
.d-quote__media { width: 70%; }
.d-quote--left .d-quote__media { margin-left: auto; }
.d-quote__box {
  position: absolute; right: 0; bottom: 0; width: min(46%, 640px); margin: 0;
  padding: clamp(28px, 4vw, 56px); background: var(--bg); color: var(--fg);
}
.d-quote--left .d-quote__box { right: auto; left: 0; }
.d-quote__text { font: 400 clamp(30px, 3.6vw, 56px)/1.06 var(--serif); letter-spacing: -.02em; }
.d-quote__cite { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 16px; margin-top: 28px; }
.d-quote__cite cite { font: 400 italic 22px/1.2 var(--serif); }
.d-quote__cite .d-annot { color: var(--muted); }
@media (max-width: 800px) {
  .d-quote { padding-bottom: 0; }
  .d-quote__media { width: 100%; }
  .d-quote__box { position: relative; width: auto; margin: -48px 16px 0; }
  .d-quote--left .d-quote__box { margin: -48px 16px 0; }
}

/* 18 — Appel final --------------------------------------------------------------- */
.d-cta__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(40px, 6vw, 100px); align-items: end; }
.d-cta--with-img { grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); }
.d-cta__title { max-width: 12ch; }
.d-cta__lead { margin-top: 28px; }
.d-cta__actions { margin-top: clamp(32px, 3.6vw, 48px); }
.d-cta--center { justify-items: center; text-align: center; }
.d-cta--center .d-cta__title { margin-inline: auto; }
.d-cta--center .d-cta__lead { margin-inline: auto; }
.d-cta--center .d-actions { justify-content: center; }
.d-cta__wm { margin-top: clamp(56px, 8vw, 120px); padding: 0 var(--pad); overflow: hidden; }
.d-cta__wm svg { width: 100%; height: auto; }
@media (max-width: 900px) { .d-cta--with-img { grid-template-columns: minmax(0, 1fr); } .d-cta__media { width: 78%; justify-self: end; } }

/* 19 — Bandeau défilant ------------------------------------------------------------ */
.d-marquee { position: relative; overflow: hidden; padding: clamp(14px, 1.6vw, 22px) 0; }
.d-marquee--lines { border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.d-marquee__row { display: flex; width: max-content; will-change: transform; }
.d-marquee__unit { display: flex; align-items: center; flex: none; }
.d-marquee__item { white-space: nowrap; padding: 0 .45em; }
.d-marquee__sep { flex: none; width: .16em; height: .16em; background: var(--dot); margin: 0 .3em; transform: translateY(-.05em); }
.d-marquee-xl .d-marquee__item { font: 400 clamp(64px, 10vw, 168px)/1 var(--serif); letter-spacing: -.04em; }
.d-marquee-m .d-marquee__item { font: 400 clamp(36px, 4.6vw, 72px)/1.1 var(--serif); letter-spacing: -.03em; }
.d-marquee-xl .d-marquee__item.is-italic, .d-marquee-m .d-marquee__item.is-italic { font-style: italic; }
.d-marquee-annot .d-marquee__item { font: 500 12px/1.6 var(--sans); letter-spacing: .12em; text-transform: uppercase; padding: 0 1.4em; }
.d-marquee-annot .d-marquee__sep { width: 6px; height: 6px; margin: 0; }
.d-marquee-annot .d-marquee__item.is-italic { font-style: normal; }

/* 20 — Grand DFINE ------------------------------------------------------------------ */
.d-s-wordmark { overflow: hidden; }
.d-wordmark__top { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; margin-bottom: clamp(16px, 2vw, 28px); }
.d-wordmark__phrase { font: 400 clamp(26px, 2.6vw, 40px)/1.1 var(--serif); letter-spacing: -.02em; text-align: right; }
.d-wordmark__mark { padding: 0 var(--pad); max-width: var(--maxw); margin: 0 auto; }
.d-wordmark__mark svg { width: 100%; height: auto; overflow: hidden; }
.d-s-wordmark.d-pb-0 .d-wordmark__mark { margin-bottom: -1px; }
@media (max-width: 600px) { .d-wordmark__top { flex-direction: column; align-items: flex-start; } .d-wordmark__phrase { text-align: left; } }

/* ---- 12-offer.css ---- */
/* 21 — Défilement horizontal ------------------------------------------------------ */
.d-hscroll { position: relative; display: flex; flex-direction: column; justify-content: center; gap: clamp(28px, 4vh, 56px); overflow: hidden; }
.d-s-hscroll { overflow: hidden; }
@media (min-width: 1024px) {
  /* pinned: everything must fit one screen */
  .d-motion .d-hscroll { height: 100vh; min-height: 620px; padding-block: calc(var(--hdr-h) + 8px) 28px; gap: clamp(18px, 3vh, 36px); justify-content: space-between; }
  .d-motion .d-s-hscroll { padding-top: 0; padding-bottom: 0; }
  .d-motion .d-hscroll__title { font-size: clamp(40px, min(4.4vw, 7vh), 76px); max-width: 20ch; }
  .d-motion .d-hscroll__media, .d-motion .d-hscroll__endlink { height: clamp(220px, 36vh, 500px); }
  .d-motion .d-hscroll__text { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .d-motion .d-hscroll__head .d-label { margin-bottom: clamp(14px, 2vh, 28px); }
}
.d-hscroll__head .d-label { margin-bottom: clamp(20px, 3vh, 40px); }
.d-hscroll__intro { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 40px; align-items: end; }
.d-hscroll__title { max-width: 15ch; }
.d-hscroll__lead { max-width: 42ch; justify-self: end; }
.d-hscroll__viewport { position: relative; }
.d-hscroll__track { display: flex; gap: clamp(16px, 2vw, 32px); width: max-content; padding: 0 var(--pad); will-change: transform; }
.d-hscroll__item { flex: none; }
.d-hscroll__item--tall { width: clamp(260px, 24vw, 420px); }
.d-hscroll__item--wide { width: clamp(340px, 38vw, 640px); }
.d-hscroll__card { display: block; color: var(--fg); }
.d-hscroll__card:hover { color: var(--fg); }
.d-hscroll__media { position: relative; overflow: hidden; margin: 0 0 18px; background: var(--surface); height: clamp(300px, 48vh, 560px); }
.d-hscroll__media img { position: absolute; top: 0; left: -8%; width: 116%; max-width: none; height: 100%; object-fit: cover; transition: scale 1.2s var(--ease); }
.d-hscroll__card:hover .d-hscroll__media img { scale: 1.04; }
.d-hscroll__meta { display: flex; gap: 16px; align-items: baseline; color: var(--muted); margin-bottom: 8px; }
.d-hscroll__name { transition: transform .6s var(--ease); }
.d-hscroll__card:hover .d-hscroll__name { transform: translateX(8px); }
.d-hscroll__text { margin-top: 8px; color: var(--muted); font-size: 15px; max-width: 34ch; }
.d-hscroll__end { width: clamp(260px, 22vw, 380px); display: flex; }
.d-hscroll__endlink { display: flex; flex-direction: column; justify-content: space-between; width: 100%; height: clamp(300px, 48vh, 560px); padding: 28px; border: 1px solid var(--rule-strong); font: 400 clamp(34px, 3.2vw, 52px)/1.04 var(--serif); letter-spacing: -.02em; transition: background-color .4s ease, color .4s ease; }
.d-hscroll__endlink:hover { background: var(--fg); color: var(--bg); }
.d-hscroll__endarrow { font: 400 32px/1 var(--sans); align-self: flex-end; transition: transform .5s var(--ease); }
.d-hscroll__endlink:hover .d-hscroll__endarrow { transform: translate(6px, -6px); }
.d-hscroll__foot { display: flex; align-items: center; gap: 20px; }
.d-hscroll__bar { position: relative; flex: 1; height: 1px; background: var(--rule); overflow: hidden; }
.d-hscroll__bar i { position: absolute; inset: 0; background: var(--fg); transform-origin: 0 50%; transform: scaleX(0); }
.d-hscroll__hint { color: var(--muted); }
/* touch / small screens: native swipe with snap */
.d-hscroll.is-native .d-hscroll__viewport, .no-js .d-hscroll__viewport { overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; overscroll-behavior-x: contain; }
.d-hscroll.is-native .d-hscroll__viewport::-webkit-scrollbar { display: none; }
.d-hscroll.is-native .d-hscroll__item { scroll-snap-align: start; scroll-margin-left: var(--pad); }
.d-hscroll.is-native .d-hscroll__track { transform: none !important; }
@media (max-width: 1023px) {
  .d-hscroll__viewport { overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
  .d-hscroll__viewport::-webkit-scrollbar { display: none; }
  .d-hscroll__item { scroll-snap-align: start; scroll-margin-left: var(--pad); }
  .d-hscroll__item--tall { width: 72vw; }
  .d-hscroll__item--wide { width: 84vw; }
  .d-hscroll__end { width: 64vw; }
  .d-hscroll__media, .d-hscroll__endlink { height: 62vw; max-height: 480px; }
  .d-hscroll__media img { left: 0; width: 100%; }
  .d-hscroll__intro { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .d-hscroll__lead { justify-self: start; }
  .d-hscroll__hint { display: none; }
}

/* 22 — Méthode (étapes empilées) ---------------------------------------------------- */
.d-steps { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: clamp(32px, 6vw, 112px); align-items: start; }
.d-steps__sticky { position: sticky; top: calc(var(--hdr-h) + 32px); display: grid; gap: 24px; }
.d-steps__lead { max-width: 38ch; }
.d-steps__list { display: grid; gap: clamp(16px, 2vw, 24px); }
.d-steps__item { position: sticky; top: calc(var(--hdr-h) + 24px + var(--i, 0) * 14px); }
.d-steps__card { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); min-height: clamp(320px, 42vh, 460px); overflow: hidden; transform-origin: 50% 0; }
.d-steps__card.has-img { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); }
.d-steps__body { display: flex; flex-direction: column; justify-content: space-between; gap: 28px; padding: clamp(24px, 3vw, 44px); }
.d-steps__n { font: 400 clamp(72px, 9vw, 140px)/.8 var(--serif); letter-spacing: -.05em; }
.d-steps__tag { color: var(--muted); margin-bottom: 10px; }
.d-steps__text { margin-top: 14px; max-width: 36ch; font-size: 16px; }
.d-steps__media { position: relative; margin: 0; overflow: hidden; }
.d-steps__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 900px) {
  .d-steps { grid-template-columns: minmax(0, 1fr); }
  .d-steps__sticky { position: static; }
  .d-steps__item { top: calc(var(--hdr-h) + 12px + var(--i, 0) * 10px); }
  .d-steps__card.has-img { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 200px; }
  .d-steps__card { min-height: 0; }
}

/* 23 — Séances (filtres) ------------------------------------------------------------- */
.d-sessions__head { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 40px; align-items: end; margin-bottom: clamp(32px, 4vw, 48px); }
.d-sessions__intro { max-width: 40ch; justify-self: end; }
.d-sessions__filters { display: grid; gap: 12px; padding: 20px 0; border-top: 1px solid var(--rule-strong); border-bottom: 1px solid var(--rule); margin-bottom: clamp(24px, 3vw, 40px); }
.d-sessions__group { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.d-sessions__glabel { width: 96px; color: var(--muted); }
.d-sessions__tools { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding-top: 6px; }
.d-sessions__count { font-size: 14px; color: var(--muted); }
.d-sessions__count [data-filters-count] { font-variant-numeric: tabular-nums; color: var(--fg); font-weight: 500; }
.d-sessions__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: clamp(14px, 1.6vw, 22px); }
.d-session[hidden] { display: none; }
.d-session__link { display: flex; flex-direction: column; height: 100%; border: 1px solid var(--rule); border-radius: var(--radius-card); overflow: hidden; background: var(--bg); color: var(--fg); transition: border-color .3s ease; }
.d-session__link:hover { border-color: var(--fg); color: var(--fg); }
.d-session__media { position: relative; aspect-ratio: 4 / 5; margin: 0; overflow: hidden; background: var(--surface); }
.d-session__media img { width: 100%; height: 100%; object-fit: cover; transition: scale 1.1s var(--ease); }
.d-session__link:hover .d-session__media img { scale: 1.05; }
.d-session__dur { position: absolute; left: 12px; top: 12px; padding: 6px 12px; border-radius: var(--radius-pill); background: var(--chalk); color: var(--ink); }
.d-session__body { display: grid; gap: 6px; padding: 16px 16px 18px; }
.d-session__disc { display: flex; align-items: center; gap: 8px; color: var(--muted); }
.d-session__title { font: 400 26px/1.08 var(--serif); letter-spacing: -.015em; transition: color .3s ease; }
.d-session__link:hover .d-session__title { font-style: italic; }
.d-session__meta { font-size: 14px; color: var(--muted); }
.d-sessions__empty { display: grid; justify-items: start; gap: 14px; padding: clamp(40px, 6vw, 80px) 0; border-bottom: 1px solid var(--rule); }
.d-sessions__empty[hidden] { display: none; }
.d-sessions__cta { margin-top: clamp(32px, 4vw, 48px); }
@media (max-width: 767px) {
  .d-sessions__head { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .d-sessions__intro { justify-self: start; }
  .d-sessions__group { flex-wrap: nowrap; overflow-x: auto; margin-inline: calc(var(--pad) * -1); padding-inline: var(--pad); scrollbar-width: none; }
  .d-sessions__group::-webkit-scrollbar { display: none; }
  .d-sessions__glabel { width: auto; flex: none; margin-right: 6px; }
  .d-sessions__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .d-session__title { font-size: 21px; }
  .d-session__body { padding: 12px 12px 14px; }
}

/* 24 — Offres ------------------------------------------------------------------------- */
.d-pricing__head { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 40px; align-items: end; margin-bottom: clamp(40px, 5vw, 64px); }
.d-pricing__intro { max-width: 36ch; justify-self: end; }
.d-pricing__grid { display: grid; grid-template-columns: repeat(var(--n, 2), minmax(0, 1fr)); border-top: 1px solid var(--rule-strong); }
.d-plan { display: flex; flex-direction: column; gap: 22px; padding: clamp(28px, 3.4vw, 48px); border-bottom: 1px solid var(--rule); }
.d-plan + .d-plan { border-left: 1px solid var(--rule); }
.d-plan.is-highlight { background: var(--powder-rose); color: var(--ink); --muted: var(--ink-hover); --rule: var(--old-rose); --btn-bg: var(--ink); --btn-fg: var(--chalk); --btn-hover: var(--ink-hover); --dot: var(--ink); }
.d-plan__head { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; flex-wrap: wrap; }
.d-plan__name { font: 400 clamp(36px, 3.4vw, 56px)/1 var(--serif); letter-spacing: -.025em; }
.d-plan__badge { color: var(--muted); }
.d-plan__price { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 14px; }
.d-plan__amount { font: 400 clamp(56px, 6vw, 96px)/.9 var(--serif); letter-spacing: -.04em; font-variant-numeric: tabular-nums; }
.d-plan__period { font: 500 12px/1.4 var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.d-plan__desc { color: var(--muted); max-width: 40ch; }
.d-plan__features { display: grid; gap: 10px; padding-top: 22px; border-top: 1px solid var(--rule); font-size: 16px; }
.d-plan__features li { position: relative; padding-left: 22px; }
.d-plan__features li::before { content: ""; position: absolute; left: 0; top: .62em; width: 6px; height: 6px; background: var(--dot); }
.d-plan__cta { margin-top: auto; padding-top: 12px; }
.d-pricing__note { margin-top: 24px; color: var(--muted); }
@media (max-width: 800px) {
  .d-pricing__head { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .d-pricing__intro { justify-self: start; }
  .d-pricing__grid { grid-template-columns: minmax(0, 1fr); }
  .d-plan + .d-plan { border-left: 0; }
  .d-plan .d-btn { width: 100%; justify-content: space-between; }
}

/* ---- 13-content.css ---- */
/* 25 — Questions fréquentes ---------------------------------------------------------- */
.d-faq { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: clamp(32px, 6vw, 112px); align-items: start; }
.d-faq__intro { position: sticky; top: calc(var(--hdr-h) + 32px); display: grid; gap: 22px; justify-items: start; }
.d-faq__lead { max-width: 34ch; }
.d-faq__list { border-bottom: 1px solid var(--rule); }
.d-acc { border-top: 1px solid var(--rule); }
.d-acc__h { font: inherit; margin: 0; }
.d-acc__btn { display: grid; grid-template-columns: 48px minmax(0, 1fr) 24px; align-items: baseline; gap: 12px; width: 100%; padding: clamp(18px, 2vw, 26px) 0; text-align: left; color: var(--fg); }
.d-acc__n { color: var(--muted); transition: color .3s ease; }
.d-acc__q { font: 400 clamp(24px, 2.2vw, 34px)/1.15 var(--serif); letter-spacing: -.015em; transition: transform .5s var(--ease); }
.d-acc__btn:hover .d-acc__q { transform: translateX(6px); }
.d-acc__icon { position: relative; width: 16px; height: 16px; align-self: center; }
.d-acc__icon i { position: absolute; left: 0; top: 50%; width: 100%; height: 1.5px; margin-top: -.75px; background: currentColor; transition: transform .5s var(--ease); }
.d-acc__icon i + i { transform: rotate(90deg); }
.d-acc__btn[aria-expanded="true"] .d-acc__icon i + i { transform: rotate(0deg); }
.d-acc__btn[aria-expanded="true"] .d-acc__n { color: var(--dot); }
.d-acc__btn[aria-expanded="true"] .d-acc__q { font-style: italic; }
.d-acc__panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .6s var(--ease); }
.d-acc.is-open .d-acc__panel { grid-template-rows: 1fr; }
.d-acc__inner { overflow: hidden; }
.d-acc__a { padding: 0 40px 26px 60px; font-size: 17px; color: var(--muted); max-width: 64ch; }
@media (max-width: 900px) {
  .d-faq { grid-template-columns: minmax(0, 1fr); }
  .d-faq__intro { position: static; }
  .d-acc__btn { grid-template-columns: 36px minmax(0, 1fr) 20px; }
  .d-acc__a { padding: 0 0 22px 48px; }
}

/* 26 — Formulaire (opt-in) -------------------------------------------------------------- */
.d-optin { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(32px, 7vw, 128px); align-items: center; }
.d-optin--right .d-optin__media { order: 2; }
.d-optin--none { grid-template-columns: minmax(0, 1fr); max-width: 760px; }
.d-optin__body { display: grid; gap: 24px; }
.d-optin__eyebrow { color: var(--muted); }
.d-optin__title { max-width: 13ch; }
.d-optin__text { font-size: 17px; max-width: 46ch; }
.d-optin__form { max-width: 520px; }
@media (max-width: 900px) { .d-optin { grid-template-columns: minmax(0, 1fr); } .d-optin__media { width: 82%; } .d-optin--right .d-optin__media { order: 0; justify-self: end; } }

/* 27 — Vidéo ------------------------------------------------------------------------------- */
.d-video__head { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 32px; align-items: end; margin-bottom: clamp(28px, 4vw, 48px); }
.d-video--narrow { max-width: 1080px; margin-inline: auto; }
.d-video__frame { position: relative; overflow: hidden; background: var(--ink); }
.d-video__slot, .d-video__slot iframe, .d-video__slot .kjb-video-responsive { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.d-video__cover { position: absolute; inset: 0; z-index: 2; display: block; width: 100%; height: 100%; padding: 0; color: var(--chalk); cursor: pointer; transition: opacity .6s ease, visibility 0s linear .6s; }
.d-video__cover img { width: 100%; height: 100%; object-fit: cover; transition: scale 1.2s var(--ease); }
.d-video__cover:hover img { scale: 1.03; }
.d-video__play { position: absolute; left: 50%; top: 50%; display: grid; place-items: center; width: clamp(72px, 8vw, 112px); aspect-ratio: 1; margin: 0; transform: translate(-50%, -50%); background: var(--chalk); transition: transform .5s var(--ease), background-color .3s ease; }
.d-video__cover:hover .d-video__play { transform: translate(-50%, -50%) scale(1.08); }
.d-video__tri { width: 0; height: 0; border-style: solid; border-width: 9px 0 9px 15px; border-color: transparent transparent transparent var(--ink); margin-left: 4px; }
.d-video__caption { position: absolute; left: clamp(16px, 2vw, 28px); bottom: clamp(16px, 2vw, 24px); }
.d-video.is-playing .d-video__cover { opacity: 0; visibility: hidden; }
@media (hover: hover) and (pointer: fine) { .d-cursor-on .d-video__play { opacity: 0; } }
@media (max-width: 767px) { .d-video__head { grid-template-columns: minmax(0, 1fr); gap: 14px; } }

/* 28 — La coach ---------------------------------------------------------------------------- */
.d-coach { display: grid; gap: clamp(32px, 6vw, 112px); align-items: start; }
.d-coach--img { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
.d-coach__media { margin-left: calc(var(--pad) * -1); }
.d-coach__body { display: grid; gap: 22px; }
.d-coach__eyebrow { color: var(--muted); }
.d-coach__name { font: 400 clamp(64px, 10.2vw, 168px)/.92 var(--serif); letter-spacing: -.045em; }
.d-coach--img .d-coach__name { font-size: clamp(56px, 7.4vw, 124px); }
.d-coach__role { font-size: clamp(18px, 1.4vw, 21px); max-width: 44ch; }
.d-coach__cols { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: clamp(28px, 4vw, 64px); margin-top: 12px; }
.d-coach--img .d-coach__cols { grid-template-columns: minmax(0, 1fr); }
.d-coach__bio { font-size: 17px; }
.d-coach__list { border-bottom: 1px solid var(--rule); align-self: start; }
.d-coach__list li { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 8px; align-items: baseline; padding: 14px 0; border-top: 1px solid var(--rule); font-size: 16px; }
.d-coach__list .d-num { color: var(--muted); }
.d-coach__sig { font: 400 italic clamp(40px, 4vw, 64px)/1 var(--serif); letter-spacing: -.02em; }
@media (max-width: 900px) { .d-coach--img, .d-coach__cols { grid-template-columns: minmax(0, 1fr); } .d-coach__media { width: 80%; } }

/* 29 — Paroles ---------------------------------------------------------------------------- */
.d-quotes { position: relative; outline-offset: 8px; }
.d-quotes__stage { display: grid; }
.d-quotes__slide { grid-area: 1 / 1; margin: 0; opacity: 0; visibility: hidden; transition: opacity .9s ease, visibility 0s linear .9s; }
.d-quotes__slide.is-on { opacity: 1; visibility: visible; transition: opacity .9s ease .15s, visibility 0s; }
.d-quotes__text { margin: 0; font: 400 clamp(40px, 5.6vw, 96px)/1.02 var(--serif); letter-spacing: -.03em; max-width: 20ch; }
.d-quotes__slide .d-quotes__text { transform: translateY(18px); transition: transform 1.2s var(--ease) .1s; }
.d-quotes__slide.is-on .d-quotes__text { transform: none; }
.d-quotes__cite { display: flex; gap: 16px; align-items: baseline; margin-top: clamp(24px, 3vw, 40px); font: 400 italic 22px/1.2 var(--serif); }
.d-quotes__cite .d-annot { font-style: normal; color: var(--muted); }
.d-quotes__nav { display: flex; align-items: center; gap: 8px; margin-top: clamp(32px, 4vw, 56px); }
.d-quotes__nav .d-num { margin-right: 16px; }
.d-quotes__arrow { display: grid; place-items: center; width: 48px; height: 48px; border: 1px solid var(--btn2-border); font-size: 18px; transition: background-color .3s ease, color .3s ease, border-color .3s ease; }
.d-quotes__arrow:hover { background: var(--fg); color: var(--bg); border-color: var(--fg); }

/* 30 — Article cards (journal, récents) --------------------------------------------------- */
.d-recent__head { display: flex; justify-content: space-between; align-items: end; gap: 24px; flex-wrap: wrap; margin-bottom: clamp(32px, 4vw, 56px); }
.d-recent__head .d-h2 { max-width: 16ch; }
.d-recent__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(28px, 3vw, 48px) var(--gutter); }
.d-recent--feature > .d-post:first-child { grid-column: span 2; grid-row: span 2; }
.d-recent--feature > .d-post:first-child .d-post__media { aspect-ratio: 4 / 3; border-radius: 0; }
.d-recent--feature > .d-post:first-child .d-post__title { font-size: clamp(32px, 3.4vw, 52px); }
.d-post__link { display: grid; gap: 12px; color: var(--fg); }
.d-post__link:hover { color: var(--fg); }
.d-post__media { position: relative; aspect-ratio: 3 / 2; margin: 0 0 6px; overflow: hidden; background: var(--surface); border-radius: var(--radius-card); }
.d-post__media img { width: 100%; height: 100%; object-fit: cover; transition: scale 1.2s var(--ease); }
.d-post__link:hover .d-post__media img { scale: 1.045; }
.d-post__meta { display: flex; flex-wrap: wrap; gap: 6px 14px; color: var(--muted); }
.d-post__meta span + span::before { content: ""; display: inline-block; width: 4px; height: 4px; margin-right: 14px; background: var(--dot); vertical-align: middle; transform: translateY(-1px); }
.d-post__title { font: 400 clamp(24px, 2vw, 32px)/1.1 var(--serif); letter-spacing: -.015em; transition: transform .6s var(--ease); }
.d-post__link:hover .d-post__title { font-style: italic; }
.d-post__excerpt { color: var(--muted); font-size: 15px; max-width: 52ch; }
.d-post__more { min-height: 0; margin-top: 4px; }
@media (max-width: 1023px) { .d-recent__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .d-recent--feature > .d-post:first-child { grid-column: 1 / -1; grid-row: auto; } }
@media (max-width: 640px) { .d-recent__grid { grid-template-columns: minmax(0, 1fr); } }

/* 31 — Mosaïque ----------------------------------------------------------------------------- */
.d-gallery__title { margin-bottom: clamp(36px, 5vw, 72px); max-width: 14ch; }
.d-gallery { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--gutter); row-gap: clamp(24px, 4vw, 64px); align-items: start; }
.d-gallery__item { margin: 0; }
.d-gallery__item--0 { grid-column: 1 / span 5; }
.d-gallery__item--1 { grid-column: 7 / span 6; margin-top: clamp(40px, 10vw, 180px); }
.d-gallery__item--2 { grid-column: 2 / span 4; }
.d-gallery__item--3 { grid-column: 8 / span 4; margin-top: clamp(-120px, -6vw, -40px); }
.d-gallery__item--4 { grid-column: 1 / span 7; }
.d-gallery__item--5 { grid-column: 9 / span 4; margin-top: clamp(40px, 8vw, 140px); }
@media (max-width: 767px) {
  .d-gallery { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .d-gallery__item { margin-top: 0 !important; }
  .d-gallery__item--0, .d-gallery__item--4 { grid-column: 1 / span 5; }
  .d-gallery__item--1, .d-gallery__item--5 { grid-column: 2 / span 5; }
  .d-gallery__item--2 { grid-column: 1 / span 4; }
  .d-gallery__item--3 { grid-column: 3 / span 4; }
}

/* 32 — Colonnes --------------------------------------------------------------------------- */
.d-columns__head { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 32px; align-items: end; margin-bottom: clamp(36px, 5vw, 64px); }
.d-columns__head .d-h2 { max-width: 15ch; }
.d-columns { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(28px, 3vw, 48px) var(--gutter); }
.d-columns--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.d-columns--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.d-columns__item { display: grid; align-content: start; gap: 14px; padding-top: 18px; border-top: 1px solid var(--rule-strong); }
.d-columns__n { color: var(--muted); }
.d-columns__text { color: var(--muted); font-size: 16px; max-width: 38ch; }
@media (max-width: 1023px) { .d-columns, .d-columns--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .d-columns, .d-columns--2, .d-columns--4 { grid-template-columns: minmax(0, 1fr); } .d-columns__head { grid-template-columns: minmax(0, 1fr); gap: 14px; } }

/* 33 — Texte, code, espace ----------------------------------------------------------------- */
.d-richtext { display: grid; gap: 28px; }
.d-richtext--narrow { max-width: 620px; }
.d-richtext--medium { max-width: 780px; }
.d-richtext--wide { max-width: 1040px; }
.d-richtext--offset { margin-left: clamp(0px, 25%, 420px); }
.d-richtext--center { margin-inline: auto; }
.d-richtext__title { max-width: 16ch; }
.d-code--full { width: 100%; }
.d-spacer__rule { border: 0; height: 1px; background: var(--rule-strong); margin: 0; }
@media (max-width: 900px) { .d-richtext--offset { margin-left: 0; } }

/* 34 — Héros éditorial -------------------------------------------------------------------- */
.d-herosplit { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); column-gap: var(--gutter); align-items: end; min-height: calc(92vh - var(--hdr-h)); padding-top: clamp(24px, 4vw, 64px); }
.d-herosplit__text { position: relative; z-index: 2; display: grid; gap: clamp(22px, 2.6vw, 36px); padding-bottom: 8px; }
.d-herosplit__annot { color: var(--muted); }
.d-herosplit__title { margin-right: -24%; }
.d-herosplit__foot { display: grid; gap: 26px; justify-items: start; }
.d-herosplit__index { display: flex; flex-wrap: wrap; gap: 8px 28px; padding-top: 18px; border-top: 1px solid var(--rule); font: 500 12px/1.6 var(--sans); letter-spacing: .12em; text-transform: uppercase; }
.d-herosplit__index .d-num { color: var(--muted); }
.d-herosplit__media { margin-right: calc(var(--pad) * -1); align-self: stretch; display: flex; flex-direction: column; justify-content: flex-end; }
@media (max-width: 900px) {
  .d-herosplit { grid-template-columns: minmax(0, 1fr); min-height: 0; row-gap: 36px; }
  .d-herosplit__title { margin-right: 0; }
  .d-herosplit__media { margin-right: calc(var(--pad) * -1); margin-left: 18%; }
}

/* 35 — Empty states ------------------------------------------------------------------------- */
.d-empty { display: grid; justify-items: start; gap: 14px; padding: clamp(40px, 6vw, 96px) 0; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.d-empty .d-muted { max-width: 46ch; }

/* ---- 14-system.css ---- */
/* 36 — Le journal (blog index & search) --------------------------------------------------- */
.d-blog__head { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 32px; align-items: end; margin-bottom: clamp(28px, 4vw, 48px); }
.d-blog__head .d-lead { justify-self: end; max-width: 36ch; }
.d-blog__title { max-width: 12ch; }
.d-blog__tools { display: flex; justify-content: space-between; align-items: center; gap: 16px 32px; flex-wrap: wrap; padding: 18px 0; margin-bottom: clamp(32px, 4vw, 56px); border-top: 1px solid var(--rule-strong); border-bottom: 1px solid var(--rule); }
.d-blog__tags { display: flex; flex-wrap: wrap; gap: 8px; }
.d-search { position: relative; display: flex; align-items: center; min-width: min(100%, 320px); border: 1px solid var(--btn2-border); border-radius: var(--radius-pill); }
.d-search--wide { max-width: 640px; margin: clamp(24px, 3vw, 40px) 0 clamp(32px, 4vw, 56px); }
.d-search__input { flex: 1; min-width: 0; min-height: 48px; padding: 10px 48px 10px 22px; border: 0; background: transparent; color: var(--fg); font: 400 17px/1.4 var(--sans); -webkit-appearance: none; appearance: none; border-radius: 0; }
.d-search__input::placeholder { color: var(--muted); opacity: 1; }
.d-search:focus-within { border-color: var(--fg); }
.d-search__btn { position: absolute; right: 2px; top: 50%; display: grid; place-items: center; width: 44px; height: 44px; transform: translateY(-50%); }
.d-blog__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(40px, 5vw, 72px) var(--gutter); }
.d-post--feature { grid-column: 1 / -1; }
.d-post--feature .d-post__link { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(24px, 4vw, 64px); align-items: end; }
.d-post--feature .d-post__media { aspect-ratio: 16 / 10; margin: 0; border-radius: 0; }
.d-post--feature .d-post__body { display: grid; gap: 14px; padding-bottom: 8px; }
.d-post--feature .d-post__title { font-size: clamp(36px, 4.2vw, 68px); line-height: 1.02; letter-spacing: -.03em; }
.d-post__body { display: grid; gap: 10px; }
@media (max-width: 1023px) { .d-blog__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) {
  .d-blog__head { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .d-blog__head .d-lead { justify-self: start; }
  .d-blog__grid { grid-template-columns: minmax(0, 1fr); }
  .d-post--feature .d-post__link { grid-template-columns: minmax(0, 1fr); }
  .d-blog__tags { flex-wrap: nowrap; overflow-x: auto; margin-inline: calc(var(--pad) * -1); padding-inline: var(--pad); scrollbar-width: none; width: calc(100% + var(--pad) * 2); }
  .d-blog__tags::-webkit-scrollbar { display: none; }
  .d-search { width: 100%; }
}
.d-results { border-bottom: 1px solid var(--rule); }
.d-results__item { border-top: 1px solid var(--rule); }
.d-results__link { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 6px 16px; padding: 24px 0; color: var(--fg); }
.d-results__link:hover { color: var(--fg); }
.d-results__link .d-num { color: var(--muted); padding-top: 10px; }
.d-results__title { font: 400 clamp(26px, 2.4vw, 38px)/1.1 var(--serif); letter-spacing: -.02em; }
.d-results__link:hover .d-results__title { font-style: italic; }
.d-results__excerpt { grid-column: 2; color: var(--muted); font-size: 15px; max-width: 70ch; }

/* 37 — Article -------------------------------------------------------------------------- */
.d-article__back { display: inline-flex; min-height: 24px; align-items: center; }
.d-article__head .d-label a:hover { color: var(--link-hover); }
.d-article__title { max-width: 16ch; }
.d-article__sub { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 32px; align-items: end; margin-top: clamp(24px, 3vw, 40px); }
.d-article__lead { max-width: 44ch; }
.d-article__meta { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px 14px; color: var(--muted); }
.d-article__meta span + span::before { content: ""; display: inline-block; width: 4px; height: 4px; margin-right: 14px; background: var(--dot); vertical-align: middle; transform: translateY(-1px); }
.d-article__hero { margin-top: clamp(36px, 5vw, 72px); }
.d-article__video { position: relative; }
.d-article__layout { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 8fr) minmax(0, 1fr); column-gap: var(--gutter); margin-top: clamp(48px, 6vw, 96px); }
.d-article__aside { position: relative; }
.d-article__share { position: sticky; top: calc(var(--hdr-h) + 32px); display: grid; gap: 14px; }
.d-article__share ul { display: grid; gap: 8px; list-style: none; margin: 0; padding: 0; }
.d-article__share a, .d-article__share button { font-size: 15px; text-decoration: underline; text-underline-offset: 5px; text-decoration-thickness: 1px; min-height: 32px; text-align: left; }
.d-article__share a:hover, .d-article__share button:hover { color: var(--link-hover); }
.d-article__body { font-size: 19px; line-height: 1.72; }
.d-article__body > p:first-of-type { font-size: clamp(21px, 1.7vw, 24px); line-height: 1.55; }
.d-article__body > p:first-of-type::first-letter { float: left; font: 400 5.2em/.78 var(--serif); margin: .06em .1em 0 -.02em; letter-spacing: -.04em; }
.d-article__sig { margin-top: 3em; padding-top: 24px; border-top: 1px solid var(--rule); }
.d-article__sig-close { font-size: 17px; margin: 0; }
.d-article__sig-name { margin: 6px 0 0 !important; font: 400 italic clamp(40px, 4vw, 60px)/1 var(--serif); letter-spacing: -.02em; }
.d-article__cta { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 64px); align-items: end; margin-top: clamp(64px, 8vw, 128px); padding: clamp(28px, 4vw, 56px); }
.d-article__cta .d-h3 { margin-top: 10px; }
.d-article__cta-text { margin-top: 12px; color: var(--muted); max-width: 40ch; }
.d-article__related { margin-top: clamp(72px, 9vw, 140px); }
@media (max-width: 1023px) {
  .d-article__layout { grid-template-columns: minmax(0, 1fr); }
  .d-article__aside { order: 2; margin-top: 48px; }
  .d-article__share { position: static; }
  .d-article__share ul { display: flex; flex-wrap: wrap; gap: 8px 24px; }
}
@media (max-width: 767px) {
  .d-article__sub { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .d-article__meta { justify-content: flex-start; }
  .d-article__body { font-size: 18px; }
  .d-article__cta { grid-template-columns: minmax(0, 1fr); }
  .d-article__hero .d-ratio-21-9 { aspect-ratio: 4 / 3; }
}

/* 38 — Ma bibliothèque ------------------------------------------------------------------- */
.d-library__head { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 32px; align-items: end; margin-bottom: clamp(32px, 4vw, 56px); }
.d-library__head .d-lead { justify-self: end; max-width: 34ch; }
.d-resume { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); min-height: 300px; margin-bottom: clamp(40px, 5vw, 72px); color: var(--fg); overflow: hidden; }
.d-resume:hover { color: var(--fg); }
.d-resume__text { display: flex; flex-direction: column; justify-content: space-between; gap: 22px; padding: clamp(24px, 3.4vw, 48px); }
.d-resume__label { display: flex; align-items: center; gap: 10px; }
.d-resume__product { font-size: 15px; color: var(--muted); margin-top: -8px; }
.d-resume__post { max-width: 20ch; }
.d-resume__progress { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 14px; align-items: center; max-width: 420px; }
.d-resume__progress .d-bar { background: var(--line-on-ink); }
.d-resume__media { position: relative; margin: 0; overflow: hidden; min-height: 220px; }
.d-resume__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: scale 1.2s var(--ease); }
.d-resume:hover .d-resume__media img { scale: 1.04; }
.d-resume__play { position: absolute; left: 50%; top: 50%; display: grid; place-items: center; width: 72px; height: 72px; transform: translate(-50%, -50%); background: var(--chalk); }
.d-library__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: clamp(16px, 2vw, 28px); }
.d-product__link { display: flex; flex-direction: column; height: 100%; border: 1px solid var(--rule); border-radius: var(--radius-card); overflow: hidden; background: var(--paper-raised); color: var(--fg); transition: border-color .3s ease; }
.d-product__link:hover { border-color: var(--fg); color: var(--fg); }
.d-product__media { aspect-ratio: 16 / 10; margin: 0; overflow: hidden; background: var(--surface); }
.d-product__media img { width: 100%; height: 100%; object-fit: cover; transition: scale 1.2s var(--ease); }
.d-product__link:hover .d-product__media img { scale: 1.04; }
.d-product__body { display: grid; gap: 12px; padding: 20px 20px 22px; flex: 1; align-content: start; }
.d-product__title { font: 400 30px/1.06 var(--serif); letter-spacing: -.02em; }
.d-product__desc { font-size: 15px; color: var(--muted); }
.d-product__progress { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: center; margin-top: 4px; }
.d-product__progress .d-num { color: var(--muted); }
.d-product__cta { min-height: 0; margin-top: 6px; }
@media (max-width: 767px) {
  .d-library__head { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .d-library__head .d-lead { justify-self: start; }
  .d-resume { grid-template-columns: minmax(0, 1fr); }
  .d-resume__media { order: -1; aspect-ratio: 16 / 10; min-height: 0; }
}

/* 39 — Connexion & mot de passe ------------------------------------------------------------ */
.d-auth { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); min-height: 100vh; min-height: 100svh; }
.d-auth--solo { grid-template-columns: minmax(0, 1fr); }
.d-auth__visual { position: relative; overflow: hidden; display: flex; flex-direction: column; justify-content: flex-end; padding: clamp(28px, 4vw, 64px); }
.d-auth__visual > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; animation: d-hero-settle 2.4s var(--ease) both; }
.d-auth__veil { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(36, 38, 34, .62) 0%, rgba(36, 38, 34, 0) 58%); }
.d-auth__quote { position: relative; font: 400 clamp(44px, 5vw, 84px)/1 var(--serif); letter-spacing: -.035em; max-width: 10ch; }
.d-auth__note { position: relative; margin-top: 20px; color: var(--text-on-ink-muted); }
.d-auth__panel { display: flex; flex-direction: column; justify-content: space-between; gap: 40px; padding: clamp(28px, 4vw, 64px) clamp(24px, 6vw, 112px); }
.d-auth--solo .d-auth__panel { max-width: 720px; width: 100%; margin: 0 auto; }
.d-auth__logo { display: block; width: var(--logo-w, 116px); color: var(--ink); }
.d-auth__body { display: grid; gap: 20px; width: 100%; max-width: 440px; }
.d-auth__body form { display: grid; gap: 18px; }
.d-auth__title { font: 400 clamp(48px, 5vw, 80px)/.98 var(--serif); letter-spacing: -.035em; }
.d-auth__lead { color: var(--muted); font-size: 17px; margin-bottom: 8px; }
.d-field { display: grid; gap: 8px; }
.d-field label { font: 500 12px/1.4 var(--sans); letter-spacing: .1em; text-transform: uppercase; }
.d-field.is-error .d-input { border: 2px solid var(--error); }
.d-field__error, .d-auth__error { color: var(--error); font: 500 14px/1.5 var(--sans); }
.d-auth__error { padding: 12px 14px; border: 2px solid var(--error); }
.d-auth__notice { padding: 12px 14px; background: var(--stone); font-size: 15px; }
.d-auth__row { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.d-check { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; font-size: 15px; cursor: pointer; }
.d-check input { width: 20px; height: 20px; margin: 0; accent-color: var(--ink); }
.d-auth__forgot { font-size: 15px; text-decoration: underline; text-underline-offset: 5px; text-decoration-thickness: 1px; }
.d-auth__submit { width: 100%; justify-content: space-between; margin-top: 4px; }
.d-auth__alt { font-size: 15px; color: var(--muted); }
.d-auth__alt a { color: var(--fg); }
.d-auth__foot { color: var(--muted); }
.d-auth__social { display: grid; gap: 16px; }
.d-auth__social form { display: block; }
.d-auth__oauth { width: 100%; justify-content: center; gap: 12px; }
.d-auth__or { display: flex; align-items: center; gap: 14px; color: var(--muted); font: 500 12px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; }
.d-auth__or::before, .d-auth__or::after { content: ""; flex: 1; height: 1px; background: var(--rule); }
@media (max-width: 900px) {
  .d-auth { grid-template-columns: minmax(0, 1fr); }
  .d-auth__visual { min-height: 34vh; order: -1; }
  .d-auth__quote { font-size: 44px; }
  .d-auth__panel { gap: 32px; }
}

/* 40 — Merci & 404 --------------------------------------------------------------------------- */
.d-thanks__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(40px, 6vw, 112px); align-items: end; }
.d-thanks__title { max-width: 11ch; }
.d-thanks__body { margin-top: 28px; font-size: 18px; max-width: 46ch; }
.d-thanks__actions { margin-top: clamp(28px, 3vw, 44px); }
.d-thanks__steps { border-bottom: 1px solid var(--rule); }
.d-thanks__steps li { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 12px; padding: 22px 0; border-top: 1px solid var(--rule); }
.d-thanks__steps .d-num { color: var(--muted); padding-top: 8px; }
.d-thanks__steps .d-muted { margin-top: 6px; font-size: 15px; }
.d-404__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(32px, 6vw, 112px); align-items: end; min-height: calc(70vh - var(--hdr-h)); }
.d-404__num { font: 400 clamp(160px, 28vw, 460px)/.8 var(--serif); letter-spacing: -.06em; }
.d-404__text { display: grid; gap: 24px; justify-items: start; padding-bottom: 2vw; }
@media (max-width: 900px) { .d-thanks__grid, .d-404__grid { grid-template-columns: minmax(0, 1fr); } .d-404__grid { min-height: 0; } }

/* ---- 90-motion.css ---- */
/* 90 — Motion states ---------------------------------------------------------
   Hidden "before" states exist ONLY under html.d-motion (motion allowed, not the
   Kajabi editor, not "reduce motion"). dfine.js adds .is-in / .is-split.
   html.d-failsafe (JS did not boot within 3.5 s) forces everything visible. */
.d-motion [data-reveal="up"], .d-motion [data-reveal=""], .d-motion [data-reveal="stagger"] > * {
  opacity: 0; transform: translate3d(0, 34px, 0);
  transition: opacity .9s ease var(--d, 0ms), transform 1.2s var(--ease) var(--d, 0ms);
}
.d-motion [data-reveal="up"].is-in, .d-motion [data-reveal=""].is-in, .d-motion [data-reveal="stagger"].is-in > * { opacity: 1; transform: none; }
.d-motion [data-reveal="stagger"] > * { transition-delay: calc(var(--i, 0) * 80ms + var(--d, 0ms)); }
.d-motion [data-reveal="fade"] { opacity: 0; transition: opacity 1.2s ease var(--d, 0ms); }
.d-motion [data-reveal="fade"].is-in { opacity: 1; }

/* Thin rule draws from the left, labels follow */
.d-motion [data-reveal="rule"]::before { transform: scaleX(0); transition: transform 1.4s var(--ease) var(--d, 0ms); }
.d-motion [data-reveal="rule"] > * { opacity: 0; transform: translateY(10px); transition: opacity .8s ease .25s, transform 1s var(--ease) .25s; }
.d-motion [data-reveal="rule"].is-in::before { transform: scaleX(1); }
.d-motion [data-reveal="rule"].is-in > * { opacity: 1; transform: none; }

/* Straight-edged image wipe: the frame opens upward, the photo settles.
   The clip sits on the CHILDREN: a target clipped to nothing is never reported by IntersectionObserver. */
.d-motion [data-reveal="wipe"] > * { clip-path: inset(100% 0 0 0); transition: clip-path 1.4s var(--ease-in-out) var(--d, 0ms); }
.d-motion [data-reveal="wipe"] img, .d-motion [data-reveal="wipe"] video { transform: scale(1.18); transition: transform 2s var(--ease) var(--d, 0ms); }
.d-motion [data-reveal="wipe"].is-in > * { clip-path: inset(0 0 0 0); }
.d-motion [data-reveal="wipe"].is-in img, .d-motion [data-reveal="wipe"].is-in video { transform: scale(1); }
.d-motion [data-reveal="wipe-x"] { transform: scaleX(0); transform-origin: 0 50%; transition: transform 1.4s var(--ease-in-out) var(--d, 0ms); }
.d-motion [data-reveal="wipe-x"].is-in { transform: none; }

/* Split headings wait for SplitText (avoids a flash of the un-split title) */
.d-motion [data-split]:not(.is-split) { visibility: hidden; }
.d-line { padding-bottom: .06em; margin-bottom: -.06em; }

/* Giant wordmark letters rise one after another */
.d-motion [data-wordmark] .d-wm__l { transform-box: fill-box; transform: translateY(105%); transition: transform 1.3s var(--ease); }
.d-motion [data-wordmark] .d-wm__l:nth-child(2) { transition-delay: .07s; }
.d-motion [data-wordmark] .d-wm__l:nth-child(3) { transition-delay: .14s; }
.d-motion [data-wordmark] .d-wm__l:nth-child(4) { transition-delay: .21s; }
.d-motion [data-wordmark] .d-wm__l:nth-child(5) { transition-delay: .28s; }
.d-motion [data-wordmark] .d-wm__dot { transform-box: fill-box; transform-origin: 50% 50%; transform: scale(0); transition: transform .7s var(--ease) .75s; }
.d-motion [data-wordmark].is-in .d-wm__l { transform: none; }
.d-motion [data-wordmark].is-in .d-wm__dot { transform: none; }

/* Failsafe & no-motion: everything visible */
.d-failsafe [data-reveal], .d-failsafe [data-reveal] > *, .d-failsafe [data-reveal] img,
.d-failsafe [data-split], .d-failsafe [data-wordmark] .d-wm__l, .d-failsafe [data-wordmark] .d-wm__dot,
.d-failsafe [data-reveal]::before {
  opacity: 1 !important; transform: none !important; clip-path: none !important; visibility: visible !important;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
}

/* Démos : l'infobulle d'un badge passe au-dessus de la rangée suivante.
   Chaque bouton a un transform (animation GSAP) donc son propre plan d'empilement : le survolé doit monter. */
.ui .badge-btn:hover, .ui .badge-btn:focus-visible, .ui .badge-btn:focus-within { z-index: 30; }

/* Boutons et liens : pas de flèche (elle s'affichait mal sur mobile) */
.d-btn__arrow, .d-link__arrow { display: none !important; }
.d-btn, .d-btn--sm { gap: 0; padding: 13px 24px; }
.d-btn--sm { padding: 10px 18px; }
.d-link { gap: 0; }
.d-auth__submit, .d-hero__actions .d-btn, .d-plan .d-btn { justify-content: center !important; }

/* Images du blogue : 1280 × 720 (16:9), le format de toutes les photos d'articles */
.d-post__media, .d-post--feature .d-post__media, .d-recent--feature > .d-post:first-child .d-post__media,
.d-article__hero .d-media, .d-article__hero .d-ratio-21-9 { aspect-ratio: 16 / 9; }
.d-post__media img, .d-article__hero .d-media img { object-fit: cover; }

/* Survol des liens de navigation : le « Trait » (menu, compte, pied de page).
   Un filet de 1 px se dessine de gauche à droite et repart vers la droite. Même police, même geste pour tous les liens. */
.d-roll::after { content: none !important; }
.d-roll > span { transform: none !important; }
a:hover > .d-roll { color: inherit; }
.d-header__link, .d-account__link a, a.d-account__link, .d-footer__col a, .d-footer__top-link { position: relative; }
.d-header__link::before, .d-account__link a::before, a.d-account__link::before, .d-footer__col a::before {
  content: ""; position: absolute; left: 0; right: 0; bottom: 6px; height: 1px; background: currentColor;
  transform: scaleX(0); transform-origin: 100% 50%; transition: transform .6s var(--ease);
}
.d-footer__col a::before { bottom: -2px; }
.d-header__link:hover::before, .d-account__link a:hover::before, a.d-account__link:hover::before, .d-footer__col a:hover::before,
.d-header__link:focus-visible::before, .d-account__link a:focus-visible::before, .d-footer__col a:focus-visible::before { transform: scaleX(1); transform-origin: 0 50%; }
.d-header__link:hover, .d-account__link a:hover, a.d-account__link:hover, .d-footer__col a:hover { color: inherit; }
.d-account__link a { display: inline-flex; align-items: center; min-height: 44px; }


/* Menu : un seul rythme entre tous les liens, et le filet toujours sous le mot */
.d-header__bar { gap: 0; }
.d-header__logo { margin-right: clamp(20px, 3vw, 48px); }
.d-header__nav { gap: clamp(18px, 2.2vw, 36px); }
.d-header__actions { margin-left: clamp(18px, 2.2vw, 36px); gap: clamp(18px, 2.2vw, 36px); }
.d-header__nav:empty + .d-header__actions, .d-nav-overlay .d-header__actions { margin-left: auto; }
.d-account { gap: clamp(18px, 2.2vw, 36px); }
a.d-account__link, .d-account__link a { display: inline-flex; align-items: center; min-height: 44px; position: relative; }
