/* tokens.css */
/* 123Apéro · jetons de design · ATLAS
   Direction artistique : A « Maison éditoriale » (docs/design/v2/DIRECTION.md, _design/v2/DIRECTIONS.md).
   Seul fichier qui déclare les jetons : site.css et v3.css les consomment sans les redéclarer.
   Le site est clair par défaut : --paper est le papier chaud, --ink l'encre profonde.
   Les noms historiques (espresso, cream, champagne, bordeaux) restent déclarés : ils sont
   remappés sur la palette A pour que les pages pas encore migrées ne cassent pas. */
:root {
  /* matière : papier chaud, papier de carte, encre */
  --espresso: #141210;
  --brown: #1B1916;
  --brown-2: #26221D;
  --cream: #F7F0E4;
  --cream-2: #FBF6EC;
  --paper: #F2EDE3;
  --paper-2: #EDE5D8;
  --paper-3: #E8E1D4;
  --paper-4: #DED4C2;
  --stage: #EAE3D6;
  --ink: #141210;
  --ink-soft: #3A352C;
  --muted: #6B6255;
  --on-dark-muted: #D8D0C1;
  --line: #D3C8B6;
  --line-strong: #A99D89;
  --field-line: #A99D89;
  --white: #FFFFFF;

  /* accent unique : soufre, et son encre */
  --sulfur: #E3F03C;
  --sulfur-ink: #141210;
  --accent: var(--sulfur);
  --accent-ink: var(--sulfur-ink);

  /* olive : accent secondaire de filet et de texte (AA sur papier) */
  --olive: #57633A;
  --olive-ink: #3F4A2A;
  --champagne: #4F5A30;
  --champagne-light: #5C6836;
  --champagne-deep: #3F4A2A;
  --bordeaux: #A23B2A;
  --bordeaux-deep: #7E2C20;
  --terra: #A75D3F;
  --terra-deep: #8A4A31;
  --brass: #8C7A2E;
  --brass-ink: #4F5A30;
  --sage: #6E6B3C;
  --sage-ink: #3F4A2A;
  --red-wash: #F0E1DA;
  --gold-wash: #F3EEDC;
  --blush: #D9B8A6;
  --success: #4A6B3A;
  --warning: #8A5A19;
  --danger: #A23B2A;

  /* action : l'encre porte l'action, le soufre le survol */
  --action: #141210;
  --action-ink: #F2EDE3;
  --action-hover: #E3F03C;

  /* teintes de famille : terre, bois, kraft, olive */
  --fam-satin: #C9B98F;
  --fam-organza: #C8D3D6;
  --fam-linen: #C0AF92;
  --fam-jute: #B98F5B;
  --fam-sisal: #C7B48C;
  --fam-raffia: #93A06A;
  --fam-crispy: #D9B7A6;
  --fam-curling: #B4553F;
  --fam-paper: #DCD2BF;
  --fam-bunting: #8E2C3A;
  --fam-bows: #C9A15B;
  --fam: var(--olive);

  /* caractère */
  --font-serif: "Instrument Serif", "Fraunces", Georgia, "Times New Roman", serif;
  --font-sans: "Bricolage Grotesque", "Figtree", "Segoe UI", system-ui, -apple-system, "Noto Sans", "Helvetica Neue", Arial, sans-serif;
  --font-mono: "JetBrains Mono", "Cascadia Mono", "SFMono-Regular", ui-monospace, monospace;
  /* marque : mot latin, même police dans toutes les langues, jamais surchargée par :lang() */
  --font-brand: "Instrument Serif", "Fraunces", Georgia, "Times New Roman", serif;
  --font-num: "Bricolage Grotesque", "Figtree", system-ui, sans-serif;

  /* échelle typographique fluide 390 -> 1440+ ; --step--2 est la taille mono/label */
  --step--2: clamp(0.6875rem, 0.67rem + 0.06vw, 0.75rem);
  --step--1: clamp(0.8125rem, 0.78rem + 0.16vw, 0.9375rem);
  --step-0: clamp(1rem, 0.96rem + 0.18vw, 1.125rem);
  --step-1: clamp(1.125rem, 1.04rem + 0.4vw, 1.3125rem);
  --step-2: clamp(1.375rem, 1.2rem + 0.85vw, 1.875rem);
  --step-3: clamp(1.75rem, 1.42rem + 1.6vw, 2.75rem);
  --step-4: clamp(2.25rem, 1.6rem + 3.1vw, 4rem);
  --step-5: clamp(2.6rem, 1.65rem + 4.2vw, 5.2rem);
  --step-6: clamp(3.2rem, 1.8rem + 5.6vw, 7.2rem);
  --text-h2: clamp(2.4rem, 1.7rem + 3.3vw, 5.25rem);
  --text-hero: clamp(3.6rem, 1.9rem + 7.4vw, 11rem);
  --tracking-tight: -0.02em;
  --tracking-display: -0.028em;
  --tracking-label: 0.14em;
  --leading-tight: .92;
  --leading-snug: 1.12;
  --leading-body: 1.55;

  /* grille & rythme */
  --wrap: 1680px;
  --wrap-narrow: 760px;
  --wrap-wide: 1680px;
  --gut: clamp(20px, 3.4vw, 48px);
  --col-gap: clamp(16px, 2vw, 32px);
  --section-y: clamp(72px, 8.4vw, 128px);
  --section-y-md: clamp(56px, 6vw, 96px);
  --section-y-lg: clamp(84px, 10.6vw, 160px);
  --section-y-sm: clamp(44px, 5.4vw, 78px);
  --section-y-head: clamp(30px, 3.6vw, 52px);
  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px; --s5: 24px;
  --s6: 32px; --s7: 48px; --s8: 64px; --s9: 96px; --s10: 128px;
  --radius: 0px;
  --radius-lg: 2px;
  --radius-pill: 999px;
  --hair: 1px solid var(--line);
  --hair-strong: 1px solid var(--line-strong);
  --hair-gold: 1px solid var(--olive);
  --measure: 64ch;
  --measure-tight: 44ch;
  --tap: 44px;
  --header-h: 84px;
  --strip-h: 32px;

  /* mouvement */
  --ease-silk: cubic-bezier(0.2, 0.7, 0.1, 1);
  --ease-fold: cubic-bezier(0.65, 0, 0.35, 1);
  --ease-out: cubic-bezier(.23, 1, .32, 1);
  --dur-fast: 180ms;
  --dur: 360ms;
  --dur-slow: 680ms;
  --dur-img: 560ms;

  /* ombres papier : une ombre douce, une ombre de contact */
  --shadow-card: 0 24px 48px -30px rgb(20 18 16 / .28), 0 2px 4px rgb(20 18 16 / .06);
  --shadow-lift: 0 34px 60px -34px rgb(20 18 16 / .32), 0 3px 6px rgb(20 18 16 / .07);
  --shadow-sheet: 0 30px 80px -50px rgb(20 18 16 / .4);
  --shadow-inset: inset 0 1px 0 rgb(255 255 255 / .6);
  --glow-champagne: radial-gradient(60% 60% at 50% 0%, rgb(227 240 60 / .16), transparent 70%);
  --grain-opacity: 0.045;

  /* profondeur */
  --z-base: 1;
  --z-header: 100;
  --z-sticky: 150;
  --z-drawer: 200;
  --z-overlay: 300;
  --z-toast: 400;

  /* alias de transition : noms anciens, une seule source */
  --red: var(--terra);
  --red-deep: var(--terra-deep);
  --gold: var(--brass);
  --ink-muted: var(--muted);
  --ink-faint: var(--muted);
  --serif: var(--font-serif);
  --sans: var(--font-sans);
  --mono: var(--font-mono);
  --ease: var(--ease-silk);
}
/* cyrillique et grec : piles système tant qu'aucun sous-ensemble de police n'est servi */
:root:lang(bg), :root:lang(uk), :root:lang(el) { --font-serif: Georgia, "Times New Roman", serif; --font-sans: "Segoe UI", system-ui, -apple-system, "Noto Sans", "Helvetica Neue", Arial, sans-serif; }
@media (prefers-reduced-motion: reduce) {
  :root { --dur-fast: 0ms; --dur: 0ms; --dur-slow: 0ms; --dur-img: 0ms; }
}

/* site.css */
/* ==========================================================================
   123Apéro · site.css · ATLAS
   Direction : « Le soir, la table, la lumière » (docs/design/DIRECTION.md).
   Base : espresso, crème, champagne. Fraunces pour les accroches, Figtree pour le
   texte, JetBrains Mono pour les chiffres. La couche de direction est v3.css.
   Sommaire
     01 polices            08 pied
     02 reset              09 lettre et cookies
     03 socle              10 tiroir, recherche, toasts
     04 typographie        11 formulaires
     05 mise en page       12 pastilles, étiquettes, prix
     06 liens et boutons   13 accueil, familles, cartes, entêtes
     07 en-tête            14 catalogue, fiche, pages, tunnel, tableaux, états
   ========================================================================== */

/* 01 · polices auto-hébergées (aucun appel réseau) -------------------------- */
@font-face {
  font-family: "Fraunces";
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url("../fonts/fraunces-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Fraunces";
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url("../fonts/fraunces-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Fraunces";
  font-style: italic;
  font-weight: 300 900;
  font-display: swap;
  src: url("../fonts/fraunces-italic-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Fraunces";
  font-style: italic;
  font-weight: 300 900;
  font-display: swap;
  src: url("../fonts/fraunces-italic-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Figtree";
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url("../fonts/figtree-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Figtree";
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url("../fonts/figtree-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("../fonts/jetbrains-mono-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("../fonts/jetbrains-mono-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("../fonts/jetbrains-mono-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("../fonts/jetbrains-mono-cyrillic-ext.woff2") format("woff2");
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("../fonts/jetbrains-mono-greek.woff2") format("woff2");
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}

/* 02 · reset --------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-h) + 24px);
}
body {
  min-height: 100vh;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: var(--step-0);
  line-height: var(--leading-body);
  font-weight: 400;
  font-optical-sizing: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}
img, svg, video, canvas, picture { display: block; max-width: 100%; }
img { height: auto; border: 0; }
button, input, select, textarea { font: inherit; color: inherit; }
button { background: none; border: 0; padding: 0; cursor: pointer; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; padding: 0; }
table { border-collapse: collapse; width: 100%; }
hr { border: 0; border-top: var(--hair); margin: var(--s7) 0; }
::selection { background: var(--champagne); color: var(--espresso); }
[hidden] { display: none !important; }

/* 03 · socle : anneau de focus, grain et lien d'évitement vivent dans v3.css */
.r-main { position: relative; z-index: var(--z-base); }
.r-sr {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
.r-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.r-icon { width: 1.25em; height: 1.25em; flex: none; }
.r-no-scroll { overflow: hidden; }

/* 04 · typographie --------------------------------------------------------- */
h1, h2, h3, h4 { font-weight: 500; line-height: var(--leading-snug); letter-spacing: var(--tracking-tight); }
h1 { font-size: var(--step-4); }
h2 { font-size: var(--step-3); }
h3 { font-size: var(--step-1); font-weight: 500; }
h4 { font-size: var(--step-0); font-weight: 600; }
p { text-wrap: pretty; }
.r-display {
  font-family: var(--font-serif);
  font-optical-sizing: auto;
  font-variation-settings: "opsz" 120, "SOFT" 40, "WONK" 0;
  font-size: var(--step-5);
  font-weight: 400;
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-display);
  text-wrap: balance;
}
.r-serif {
  font-family: var(--font-serif);
  font-optical-sizing: auto;
  font-variation-settings: "opsz" 60, "SOFT" 30, "WONK" 0;
  font-size: var(--step-3);
  font-weight: 400;
  line-height: var(--leading-snug);
  letter-spacing: var(--tracking-tight);
}
.r-mono {
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  font-size: var(--step--1);
  letter-spacing: .02em;
}
.r-label {
  font-family: var(--font-mono);
  font-size: var(--step--2);
  font-weight: 500;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--brass-ink);
  line-height: 1.4;
}
.r-lead {
  font-size: var(--step-1);
  line-height: 1.55;
  color: var(--ink-soft);
  max-width: var(--measure);
  font-weight: 400;
}
.r-lead--narrow { max-width: var(--measure-tight); }
.r-note {
  font-size: var(--step--1);
  color: var(--muted);
  line-height: 1.55;
}
.r-hint {
  font-family: var(--font-mono);
  font-size: var(--step--2);
  letter-spacing: .06em;
  color: var(--muted);
  text-transform: none;
}
.r-prose { max-width: var(--measure); }
.r-prose > * + * { margin-top: 1.1em; }
.r-prose h2 { margin-top: 1.9em; font-family: var(--font-serif); font-weight: 400; }
.r-prose h3 { margin-top: 1.6em; }
.r-prose p { color: var(--ink-soft); line-height: 1.72; }
.r-prose a { color: var(--brass-ink); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
.r-prose ul, .r-prose ol { padding-left: 1.2em; list-style: disc; }
.r-prose ol { list-style: decimal; }
.r-prose li + li { margin-top: .4em; }
.r-prose blockquote {
  border-left: 1px solid var(--champagne);
  padding-left: var(--s5);
  font-family: var(--font-serif);
  font-size: var(--step-2);
  line-height: 1.35;
  color: var(--ink);
}

/* 05 · mise en page -------------------------------------------------------- */
.r-wrap {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: auto;
  padding-inline: var(--gut);
}
.r-wrap--wide { max-width: var(--wrap-wide); }
.r-wrap--narrow { max-width: var(--wrap-narrow); }
/* le rythme vertical des sections vient de v3.css seule */
.r-section { position: relative; }
.r-section__head { display: flex; flex-direction: column; gap: var(--s3); margin-bottom: var(--s7); max-width: 42rem; }
.r-section__head--row {
  flex-direction: row;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s6);
  max-width: none;
  flex-wrap: wrap;
}
.r-section__head .r-display { font-size: var(--step-4); }
.r-section__head .r-lead { margin-top: var(--s2); }
.r-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: var(--col-gap);
}
.r-split {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
  gap: clamp(28px, 5vw, 88px);
  align-items: center;
}
.r-split--rev .r-split__text { order: 2; }
.r-split--rev .r-split__visual { order: 1; }
.r-split__text > * + * { margin-top: var(--s4); }
.r-two-col {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  gap: clamp(28px, 5vw, 72px);
  align-items: start;
}
.r-close {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s5);
  padding-block: clamp(36px, 6vw, 84px);
}
.r-close .r-display { font-size: var(--step-4); }
.r-close__actions { display: flex; flex-wrap: wrap; gap: var(--s3); justify-content: center; }

/* 06 · liens et boutons ---------------------------------------------------- */
.r-btn {
  --btn-bg: transparent;
  --btn-fg: var(--ink);
  --btn-bd: var(--line-strong);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 50px;
  padding: 0 26px;
  border: 1px solid var(--btn-bd);
  border-radius: var(--radius);
  background: var(--btn-bg);
  color: var(--btn-fg);
  font-family: var(--font-mono);
  font-size: var(--step--2);
  font-weight: 500;
  letter-spacing: .1em;
  text-transform: uppercase;
  line-height: 1;
  transition: background-color var(--dur-fast) var(--ease-silk), color var(--dur-fast) var(--ease-silk), border-color var(--dur-fast) var(--ease-silk);
  position: relative;
  isolation: isolate;
}
.r-btn--primary {
  --btn-bg: var(--action);
  --btn-fg: var(--action-ink);
  --btn-bd: var(--action);
}
.r-btn--ghost { --btn-bg: transparent; --btn-fg: var(--ink); --btn-bd: var(--line-strong); }
.r-btn--quiet { border-color: transparent; padding-inline: 8px; text-transform: none; letter-spacing: 0; min-height: 40px; }
.r-btn--sm { min-height: var(--tap); padding-inline: 16px; font-size: var(--step--2); }
.r-btn--block { width: 100%; }
.r-btn--add { flex: 1; }
.r-btn[disabled], .r-btn[aria-disabled="true"], .r-btn.is-disabled {
  opacity: .45;
  cursor: not-allowed;
  pointer-events: none;
}
/* attente : un filet qui avance une fois vers la fin, jamais une boucle */
.r-btn--loading { pointer-events: none; cursor: progress; }
.r-btn--loading::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 2px;
  background: currentColor;
  transform-origin: left;
  animation: r-wait 2.4s var(--ease-out) forwards;
}
@keyframes r-wait { from { transform: scaleX(0); } to { transform: scaleX(.92); } }

.r-link-arrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-mono);
  font-size: var(--step--2);
  font-weight: 500;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--champagne);
  transition: color var(--dur-fast) var(--ease-silk), border-color var(--dur-fast) var(--ease-silk);
  min-height: 36px;
}
.r-link-arrow:hover { color: var(--champagne-light); border-color: var(--champagne-light); }
.r-link-plain { text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; text-decoration-color: var(--line-strong); }
.r-link-plain:hover { color: var(--champagne-light); text-decoration-color: var(--champagne-light); }

/* 07 · en-tête (structure ; fond et finitions dans v3.css) ------------------ */
.r-header {
  position: sticky;
  top: 0;
  z-index: var(--z-header);
  background: var(--paper);
  border-bottom: 1px solid transparent;
  transition: border-color var(--dur) var(--ease-silk), background var(--dur) var(--ease-silk);
}
.r-header__top { background: var(--brown); color: var(--cream); }
.r-header__strip {
  max-width: var(--wrap);
  min-height: var(--strip-h);
  margin: 0 auto;
  padding: 0 var(--gut);
  display: flex;
  gap: 24px;
  justify-content: center;
  align-items: center;
  font-family: var(--font-mono);
  font-size: var(--step--2);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.r-header__strip > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.r-header__dot { flex: none; width: 3px; height: 3px; border-radius: 50%; background: var(--champagne); }
.r-header__bar {
  max-width: var(--wrap);
  min-height: var(--header-h);
  margin: 0 auto;
  padding: 0 30px;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 30px;
  transition: min-height var(--dur) var(--ease-out);
}
.r-header__nav { display: flex; justify-content: center; gap: 34px; }
.r-header__link {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 30px 0;
  font-family: var(--font-sans);
  font-size: 13.5px;
  font-weight: 500;
  letter-spacing: .01em;
}
.r-header__tools { display: flex; align-items: center; gap: 8px; }
.r-tool {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: var(--tap);
  min-height: var(--tap);
  padding-inline: 8px;
  border-radius: var(--radius);
  transition: color var(--dur-fast) var(--ease-silk);
}
.r-tool svg { width: 20px; height: 20px; }
.r-tool--lang { font-family: var(--font-mono); font-size: var(--step--2); letter-spacing: .1em; text-transform: uppercase; gap: 6px; }
.r-tool--lang svg { width: 9px; height: 9px; transition: transform var(--dur-fast); }
.r-tool--lang[aria-expanded="true"] svg { transform: rotate(180deg); }
.r-tool--cart { position: relative; }
.r-lang { position: relative; }
.r-lang__panel {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: calc(var(--z-base) + 1);
  width: min(560px, calc(100vw - var(--gut) * 2));
  max-height: min(70vh, 520px);
  overflow: auto;
  background: var(--paper-2);
  border: var(--hair);
  box-shadow: var(--shadow-sheet);
  padding: var(--s4);
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 2px 8px;
}
.r-lang__panel[hidden] { display: none; }
.r-lang__item {
  display: flex;
  align-items: baseline;
  gap: 8px;
  min-height: 38px;
  padding: 8px 10px;
  font-size: var(--step--1);
  border-radius: var(--radius);
  transition: background var(--dur-fast);
}
.r-lang__code { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; color: var(--muted); text-transform: uppercase; width: 1.8em; }
.r-lang__name { color: var(--ink-soft); }
.r-lang__item[aria-current="true"] { background: var(--brown); }
.r-lang__item[aria-current="true"] .r-lang__code { color: var(--champagne); }
.r-cart-count {
  position: absolute;
  top: 6px; right: 2px;
  min-width: 17px; height: 17px;
  padding: 0 4px;
  border-radius: var(--radius-pill);
  background: var(--champagne);
  color: var(--espresso);
  font-family: var(--font-mono);
  font-size: 10px;
  line-height: 17px;
  text-align: center;
  font-weight: 600;
}
.r-cart-count[hidden] { display: none; }
.r-logo {
  display: inline-flex;
  align-items: center;
  gap: 11px;
  flex: none;
  min-height: var(--tap);
  color: var(--ink);
}
.r-logo__word {
  font-family: var(--font-brand);
  font-optical-sizing: auto;
  font-variation-settings: "opsz" 40, "SOFT" 40, "WONK" 0;
  font-size: 24px;
  font-weight: 500;
  letter-spacing: -.03em;
  line-height: 1;
  text-transform: lowercase;
}
.r-logo__tag {
  font-family: var(--font-mono);
  font-size: var(--step--2);
  line-height: 1;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--champagne);
  white-space: nowrap;
}
.r-logo__stack { display: flex; flex-direction: column; gap: 4px; }
.r-logo__badge { display: block; flex: none; width: 30px; height: 34px; color: var(--champagne); }
.r-logo__badge svg { display: block; width: 100%; height: 100%; }
/* mega-nav : ouverture dans v3.css */
.r-mega {
  position: absolute;
  top: calc(100% + 2px);
  left: -28px;
  width: min(920px, calc(100vw - var(--gut) * 2));
  background: var(--paper-2);
  border: var(--hair);
  box-shadow: var(--shadow-sheet);
  padding: clamp(20px, 2.4vw, 36px);
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
  gap: clamp(24px, 3vw, 48px);
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  transition: opacity var(--dur) var(--ease-silk), transform var(--dur) var(--ease-silk), visibility 0s linear var(--dur);
}
.r-mega a { display: flex; align-items: center; gap: 14px; padding: 4px 0; font-family: var(--font-serif); font-size: 20px; line-height: 1.15; }
.r-mega img { flex: none; width: 64px; height: 80px; object-fit: cover; background: var(--stage); }
.r-mobile-nav { position: fixed; inset: 0; z-index: var(--z-drawer); height: 100dvh; overflow: auto; padding: 22px var(--gut) 40px; background: var(--paper); }
.r-mobile-nav[hidden] { display: none; }
.r-mobile-nav__head { display: flex; justify-content: space-between; align-items: center; padding-bottom: 18px; border-bottom: var(--hair); font-family: var(--font-mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; }
.r-mobile-nav__head button { display: inline-grid; place-items: center; min-width: var(--tap); min-height: var(--tap); font-size: 28px; }
.r-mobile-nav > a { display: flex; justify-content: space-between; padding: 14px 0; border-bottom: var(--hair); font-family: var(--font-serif); font-size: 26px; }
.r-mobile-nav > a.r-mobile-nav__sub { padding-left: 12px; font-family: var(--font-sans); font-size: 15px; }
.r-mobile-nav span { font-family: var(--font-mono); font-size: var(--step--2); color: var(--muted); }

/* 08 · pied (fond et composition dans v3.css) ------------------------------ */
.r-footer { position: relative; z-index: var(--z-base); background: var(--paper-2); color: var(--ink-soft); }
.r-footer a { color: var(--on-dark-muted); }
.r-footer__brand { max-width: 30ch; }
.r-footer__col { display: flex; flex-direction: column; gap: 2px; }
.r-footer__col h2 { margin-bottom: var(--s3); }
.r-footer__col a {
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  font-size: var(--step--1);
  color: var(--on-dark-muted);
  transition: color var(--dur-fast);
  width: fit-content;
}
.r-footer__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--s3) var(--s6);
  padding-block: var(--s5);
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .06em;
  color: var(--muted);
}

/* 09 · lettre et cookies --------------------------------------------------- */
.r-news {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
  gap: clamp(20px, 4vw, 64px);
  align-items: center;
  padding-block: clamp(32px, 4.4vw, 56px);
}
.r-news__form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--s2); align-items: start; }
.r-news__form input {
  min-height: var(--tap);
  padding: 0 16px;
  background: transparent;
  border: 1px solid var(--line-strong);
  color: var(--ink);
  font-size: var(--step-0);
  border-radius: var(--radius);
  width: 100%;
}
.r-news__consent { grid-column: 1 / -1; font-size: 11px; color: var(--muted); letter-spacing: .02em; margin-top: 2px; }
.r-news__consent a { text-decoration: underline; text-underline-offset: 2px; }
.r-news__msg { grid-column: 1 / -1; font-size: var(--step--1); font-family: var(--font-mono); color: var(--champagne-light); margin: 0; }
.r-news__msg.is-error { color: var(--danger); }
.r-news__msg.is-ok { color: var(--success); }
.r-section .r-news { padding-block: 0; }

/* 10 · tiroir, recherche, toasts ------------------------------------------ */
.r-drawer {
  position: fixed;
  top: 0; right: 0; bottom: 0;
  width: min(460px, 100vw);
  z-index: var(--z-drawer);
  background: var(--paper-2);
  border-left: var(--hair);
  box-shadow: var(--shadow-sheet);
  display: flex;
  flex-direction: column;
  transform: translateX(102%);
  transition: transform var(--dur-slow) var(--ease-silk);
  visibility: hidden;
}
.r-drawer.is-open { transform: none; visibility: visible; }
.r-drawer__head { display: flex; align-items: center; justify-content: space-between; min-height: var(--header-h); padding: 0 var(--s5); border-bottom: var(--hair); }
.r-drawer__head h2 { font-family: var(--font-serif); font-size: var(--step-1); letter-spacing: 0; font-weight: 400; }
.r-drawer__head button { display: inline-grid; place-items: center; min-width: var(--tap); min-height: var(--tap); font-size: 26px; }
.r-drawer__body { flex: 1; overflow-y: auto; padding: var(--s4) var(--s5); display: flex; flex-direction: column; gap: 2px; overscroll-behavior: contain; }
.r-drawer__foot { padding: var(--s5); border-top: var(--hair); display: grid; gap: var(--s3); background: var(--paper); }
.r-drawer__sum { display: flex; justify-content: space-between; align-items: baseline; }
.r-drawer__sum span { font-size: var(--step--1); text-transform: uppercase; letter-spacing: .1em; color: var(--muted); }
.r-drawer__sum strong { font-family: var(--font-mono); font-size: var(--step-1); }
.r-drawer__empty { text-align: center; color: var(--muted); padding-block: var(--s8); font-size: var(--step--1); }
body:has(.r-drawer.is-open)::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: calc(var(--z-drawer) - 1);
  background: rgb(8 5 4 / .62);
  animation: r-fade var(--dur) var(--ease-silk);
  pointer-events: none;
}
@keyframes r-fade { from { opacity: 0; } }

.r-search {
  position: fixed;
  inset: 0;
  z-index: var(--z-overlay);
  background: rgb(17 12 10 / .96);
  overflow-y: auto;
  padding: clamp(28px, 6vw, 80px) var(--gut);
}
.r-search[hidden] { display: none; }
.r-search__panel { width: min(860px, 100%); margin-inline: auto; }
.r-search__form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: var(--s3);
  align-items: center;
  border-bottom: 1px solid var(--champagne);
  padding-bottom: var(--s3);
}
.r-search__form input {
  border: 0;
  background: transparent;
  font-family: var(--font-serif);
  font-size: var(--step-3);
  letter-spacing: var(--tracking-tight);
  min-height: 56px;
  width: 100%;
}
.r-search__form input::placeholder { color: var(--muted); }
.r-search__hint { margin-top: var(--s4); font-size: var(--step--1); color: var(--muted); }
.r-search__results { margin-top: var(--s6); display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--s4); }
.r-search__results a { display: grid; grid-template-columns: 56px 1fr; gap: var(--s3); align-items: center; padding: var(--s2); border: 1px solid transparent; }
.r-search__results a:hover, .r-search__results a:focus-visible { border-color: var(--line-strong); background: var(--paper-2); }
.r-search__results img { width: 56px; height: 56px; object-fit: contain; background: var(--cream); }
.r-search__results a > span { display: grid; gap: 2px; min-width: 0; }
.r-search__results b { font-weight: 600; font-size: var(--step--1); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
.r-search__results a > span > span { font-size: 10.5px; color: var(--muted); font-family: var(--font-mono); letter-spacing: .04em; text-transform: uppercase; }
.r-search__close { position: absolute; top: var(--s4); right: var(--s4); }
.r-search__empty { color: var(--muted); font-size: var(--step--1); }

.r-toasts {
  position: fixed;
  left: 50%;
  bottom: max(24px, env(safe-area-inset-bottom));
  transform: translateX(-50%);
  z-index: var(--z-toast);
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: center;
  pointer-events: none;
  width: min(440px, calc(100vw - 32px));
}
.r-toast {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--cream);
  color: var(--espresso);
  padding: 13px 18px;
  font-size: var(--step--1);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lift);
  animation: r-toast-in var(--dur) var(--ease-silk);
  pointer-events: auto;
  max-width: 100%;
}
.r-toast.is-out { animation: r-toast-out var(--dur) var(--ease-fold) forwards; }
.r-toast--error { background: var(--bordeaux); color: var(--cream); }
.r-toast--ok::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--champagne); flex: none; }
@keyframes r-toast-in { from { opacity: 0; transform: translateY(10px) scale(.98); } }
@keyframes r-toast-out { to { opacity: 0; transform: translateY(6px); } }

/* 11 · formulaires --------------------------------------------------------- */
.r-form, .r-buy, .r-atelier__form, .r-checkout__form { display: grid; gap: var(--s4); }
.r-form label, .r-atelier__form label, .r-checkout__form label {
  display: grid;
  gap: 6px;
  font-family: var(--font-mono);
  font-size: var(--step--2);
  font-weight: 500;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--muted);
}
input, select, textarea {
  width: 100%;
  min-height: 48px;
  padding: 10px 14px;
  background: var(--paper-2);
  border: 1px solid var(--field-line);
  border-radius: var(--radius);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: var(--step-0);
  letter-spacing: 0;
  text-transform: none;
  transition: border-color var(--dur-fast), box-shadow var(--dur-fast);
  appearance: none;
}
input::placeholder, textarea::placeholder { color: var(--muted); opacity: 1; }
input:hover, select:hover, textarea:hover { border-color: var(--line-strong); }
input:focus, select:focus, textarea:focus { border-color: var(--champagne); box-shadow: 0 0 0 3px rgb(201 161 91 / .18); outline: none; }
input:invalid:not(:placeholder-shown) { border-color: var(--danger); }
textarea { min-height: 120px; resize: vertical; }
select {
  background-image: linear-gradient(45deg, transparent 50%, var(--champagne) 50%), linear-gradient(135deg, var(--champagne) 50%, transparent 50%);
  background-position: calc(100% - 18px) 50%, calc(100% - 13px) 50%;
  background-size: 5px 5px, 5px 5px;
  background-repeat: no-repeat;
  padding-right: 40px;
}
input[type="checkbox"], input[type="radio"] {
  appearance: none;
  width: 20px; height: 20px;
  min-height: 20px;
  flex: none;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius);
  background: var(--paper-2);
  display: inline-grid;
  place-content: center;
  padding: 0;
  cursor: pointer;
}
input[type="radio"] { border-radius: 50%; }
input[type="checkbox"]:checked, input[type="radio"]:checked { background: var(--champagne); border-color: var(--champagne); }
input[type="checkbox"]:checked::before { content: ""; width: 10px; height: 6px; border-left: 1.6px solid var(--espresso); border-bottom: 1.6px solid var(--espresso); transform: rotate(-45deg) translate(1px, -1px); }
input[type="radio"]:checked::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--espresso); }
.r-check { display: flex !important; align-items: flex-start; gap: 10px; font-family: var(--font-sans); font-size: var(--step--1); letter-spacing: 0; text-transform: none; color: var(--muted); cursor: pointer; }
.r-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s4); }
.r-form__msg { font-size: var(--step--1); font-family: var(--font-mono); padding: 10px 14px; border: 1px solid var(--line); background: var(--paper-2); }
.r-form__msg.is-error { border-color: var(--danger); color: var(--danger); }
.r-form__msg.is-ok { border-color: var(--success); color: var(--success); }
.r-form--inline { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; align-items: end; }
fieldset { border: 0; padding: 0; margin: 0; }
legend { font-size: var(--step--1); font-weight: 500; padding: 0 0 var(--s3); letter-spacing: .02em; }

/* 12 · pastilles, étiquettes, prix ----------------------------------------- */
.r-swatch {
  width: 12px; height: 12px;
  border-radius: 50%;
  display: inline-block;
  flex: none;
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / .28);
}
.r-dot { width: 3px; height: 3px; border-radius: 50%; background: var(--champagne); display: inline-block; flex: none; }
.r-tag {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 8px;
  background: var(--brown);
  color: var(--cream);
  font-family: var(--font-mono);
  font-size: 9.5px;
  letter-spacing: .12em;
  text-transform: uppercase;
  border-radius: 1px;
}
.r-tag--best { background: var(--bordeaux); }
.r-tag--soft { background: var(--cream); color: var(--espresso); }
.r-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.r-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: var(--tap);
  padding: 0 12px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius);
  font-size: var(--step--1);
  color: var(--ink-soft);
  transition: border-color var(--dur-fast), background var(--dur-fast), color var(--dur-fast);
}
.r-chip span { font-family: var(--font-mono); font-size: 10.5px; color: var(--muted); }
.r-chip-list { display: flex; flex-wrap: wrap; gap: 6px; }
.r-chip--on { background: var(--cream); border-color: var(--cream); color: var(--espresso); }
.r-chip--on span { color: var(--bordeaux-deep); }
.r-empty {
  padding: var(--s6);
  border: 1px dashed var(--line-strong);
  font-size: var(--step--1);
  color: var(--muted);
  text-align: center;
}
.r-empty a { text-decoration: underline; }

/* ==========================================================================
   13 · accueil, familles, cartes, entêtes
   ========================================================================== */
/* teintes de famille disponibles partout via data-fam */
[data-fam="satin"] { --fam: var(--fam-satin); }
[data-fam="organza"] { --fam: var(--fam-organza); }
[data-fam="linen"] { --fam: var(--fam-linen); }
[data-fam="jute"] { --fam: var(--fam-jute); }
[data-fam="sisal"] { --fam: var(--fam-sisal); }
[data-fam="raffia"] { --fam: var(--fam-raffia); }
[data-fam="crispy"] { --fam: var(--fam-crispy); }
[data-fam="curling"] { --fam: var(--fam-curling); }
[data-fam="paper"] { --fam: var(--fam-paper); }
[data-fam="bunting"] { --fam: var(--fam-bunting); }
[data-fam="bows"] { --fam: var(--fam-bows); }
.r-fam[data-fam] { --fam-tint: var(--fam); }

.r-fam {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--s3);
  padding-top: var(--s4);
  border-top: var(--hair-strong);
  min-height: 100%;
  transition: border-color var(--dur) var(--ease-silk);
}
.r-fam__body { display: flex; flex-direction: column; gap: 4px; }
.r-fam__index { font-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; color: var(--champagne); }
.r-fam__name { font-family: var(--font-serif); font-optical-sizing: auto; font-size: var(--step-2); font-weight: 400; letter-spacing: var(--tracking-tight); line-height: 1.1; }
.r-fam__meta { margin-top: var(--s2); font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }

@media (max-width: 1023px) {
  .r-families.is-carousel {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: minmax(230px, 68%);
    grid-template-columns: none;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    background: none;
    border: 0;
    margin-inline: calc(var(--gut) * -1);
    padding-inline: var(--gut);
    scroll-padding-inline: var(--gut);
  }
  .r-families.is-carousel::-webkit-scrollbar { display: none; }
  .r-families.is-carousel .r-fam { scroll-snap-align: start; aspect-ratio: 4 / 5; }
  .r-families.is-carousel .r-fam--wide { grid-column: auto; }
}

.r-occasion {
  display: flex;
  flex-direction: column;
  gap: var(--s2);
  padding: clamp(22px, 2.6vw, 40px);
  border-right: var(--hair);
  border-bottom: var(--hair);
  min-height: 220px;
  position: relative;
  overflow: hidden;
  transition: background var(--dur) var(--ease-silk);
}
.r-occasion::before {
  content: "";
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 2px;
  background: var(--champagne);
  transform: scaleY(0);
  transform-origin: top;
  transition: transform var(--dur-slow) var(--ease-silk);
}
.r-guides { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--col-gap); }
.r-guides--grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.r-story { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: clamp(32px, 6vw, 96px); }
.r-story__intro > * + * { margin-top: var(--s4); }
.r-story__intro .r-display { font-size: var(--step-4); }
.r-story__points { display: grid; gap: 0; align-content: start; border-top: var(--hair-strong); counter-reset: story; }
.r-story__point { padding: var(--s5) 0; border-bottom: var(--hair); display: grid; gap: 6px; }
.r-story__point h3 { font-family: var(--font-serif); font-size: var(--step-1); font-weight: 400; letter-spacing: var(--tracking-tight); }
.r-story__point h3::before {
  counter-increment: story;
  content: "0" counter(story);
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .12em;
  color: var(--champagne);
  display: block;
  margin-bottom: 6px;
}
.r-story__point p { font-size: var(--step--1); color: var(--muted); max-width: 46ch; }

.r-products { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--col-gap); }
.r-products--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.r-products--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.r-products--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.r-card { position: relative; display: flex; flex-direction: column; gap: var(--s3); }
.r-card__media {
  position: relative;
  display: block;
  overflow: hidden;
  background: var(--cream);
  aspect-ratio: 1 / 1;
  isolation: isolate;
  border: 1px solid rgb(23 17 14 / .14);
}
.r-card--photo .r-card__media { background: var(--brown); border-color: rgb(255 255 255 / .1); }
.r-card__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 8%;
  transition: transform var(--dur-img) var(--ease-silk);
  z-index: 1;
}
.r-card--studio .r-card__img, .r-card--detail .r-card__img { mix-blend-mode: multiply; }
.r-card--photo .r-card__img { object-fit: cover; padding: 0; }
.r-card__media .r-tag { position: absolute; top: 10px; left: 10px; z-index: 3; }
.r-card__media .r-tag--best { left: auto; right: 10px; top: 10px; }
.r-card__body { display: flex; flex-direction: column; gap: 6px; }
.r-card__meta { display: flex; align-items: center; gap: 8px; font-family: var(--font-mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.r-card__title { font-family: var(--font-serif); font-optical-sizing: auto; font-size: var(--step-0); font-weight: 400; line-height: 1.28; letter-spacing: -.01em; }
.r-card__title a { display: block; }
.r-card__foot { display: flex; align-items: center; justify-content: space-between; gap: var(--s2); margin-top: 2px; }
.r-card__price { font-family: var(--font-mono); font-size: var(--step--1); letter-spacing: -.01em; }
.r-card__add {
  width: var(--tap); height: var(--tap);
  display: grid;
  place-items: center;
  border: 1px solid var(--line-strong);
  border-radius: 50%;
  font-size: 18px;
  line-height: 1;
  color: var(--ink);
  background: transparent;
  transition: background var(--dur-fast), color var(--dur-fast), border-color var(--dur-fast);
  flex: none;
}
.r-card__add.is-added { background: var(--success); border-color: var(--success); color: var(--espresso); }
.r-guide-teaser {
  display: grid;
  gap: var(--s3);
  max-width: 62ch;
  padding: clamp(24px, 3vw, 44px);
  background: var(--paper-2);
  border-left: 1px solid var(--champagne);
}
.r-guide-teaser .r-serif { font-size: var(--step-2); }

/* 14 · entêtes de page, fil d'Ariane -------------------------------------- */
.r-crumbs { padding-block: var(--s1) 0; font-family: var(--font-mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
.r-crumbs ol { display: flex; flex-wrap: wrap; align-items: center; column-gap: var(--s2); }
.r-crumbs li { display: inline-flex; align-items: center; gap: var(--s2); min-width: 0; }
.r-crumbs li + li::before { content: "/"; color: var(--champagne); }
.r-crumbs a { display: inline-flex; align-items: center; justify-content: center; min-height: var(--tap); min-width: var(--tap); color: var(--muted); transition: color var(--dur-fast) var(--ease-silk); }
.r-crumbs [aria-current="page"] { color: var(--ink); flex: 1 1 0; min-width: 12ch; min-height: var(--tap); }
.r-crumbs [aria-current="page"] span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.r-page-head {
  padding-block: clamp(22px, 3vw, 48px) clamp(26px, 4vw, 56px);
  border-bottom: var(--hair);
  margin-bottom: clamp(26px, 4vw, 56px);
}
.r-page-head .r-display { font-size: var(--step-5); margin-top: var(--s3); }
.r-page-head .r-lead { margin-top: var(--s3); }
.r-page-head__row { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--s6); flex-wrap: wrap; margin-top: var(--s4); }
.r-page-head__count { font-family: var(--font-mono); font-size: var(--step--1); color: var(--muted); letter-spacing: .04em; white-space: nowrap; }
.r-page-head .r-split { margin-top: var(--s5); align-items: center; }

/* 15 · catalogue et filtres ----------------------------------------------- */
.r-shop { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: clamp(24px, 3.4vw, 56px); align-items: start; }
.r-filters { position: sticky; top: calc(var(--header-h) + 24px); display: grid; gap: var(--s3); border-top: var(--hair-strong); padding-top: var(--s4); }
.r-filters__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s3); }
.r-filters__toggle { display: none; min-width: var(--tap); min-height: var(--tap); }
.r-btn.r-filters__toggle { flex: none; padding-inline: var(--s4); }
@media (max-width: 1024px) {
  .r-filters:not([data-open]) { display: none; }
  .r-filters[data-open] { display: grid !important; }
  .r-filters__toggle { display: inline-flex; }
}
.r-filters__head h2 { font-size: var(--step--1); font-family: var(--font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); font-weight: 500; }
.r-filter { border-bottom: var(--hair); padding-block: var(--s2); }
.r-filter summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 44px;
  cursor: pointer;
  font-family: var(--font-serif);
  font-size: var(--step-1);
  list-style: none;
}
.r-filter summary::-webkit-details-marker { display: none; }
.r-filter summary::after { content: "+"; font-family: var(--font-mono); font-size: 14px; color: var(--champagne); }
.r-filter[open] summary::after { content: "\2212"; }
.r-filter ul { display: flex; flex-wrap: wrap; gap: 6px; padding-block: var(--s2) var(--s3); }
.r-shop__main { min-width: 0; }
.r-shop__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s4);
  flex-wrap: wrap;
  padding-bottom: var(--s3);
  margin-bottom: var(--s4);
  border-bottom: var(--hair);
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--muted);
}
.r-sort { display: flex; flex-wrap: wrap; gap: 2px; }
.r-sort__item { display: inline-flex; align-items: center; min-height: 44px; padding: 0 10px; border-bottom: 1px solid transparent; }
.r-sort__item.is-active { color: var(--ink); border-bottom-color: var(--champagne); }
.r-pager { display: flex; align-items: center; justify-content: center; gap: 4px; margin-top: var(--s7); font-family: var(--font-mono); font-size: var(--step--1); }
.r-pager a, .r-pager span { display: inline-flex; align-items: center; justify-content: center; min-width: var(--tap); min-height: var(--tap); border: 1px solid transparent; }
.r-pager a.is-active { background: var(--cream); color: var(--espresso); }
.r-pager a:hover { border-color: var(--line-strong); }

/* 16 · fiche produit ------------------------------------------------------ */
.r-product { padding-block: var(--s4) clamp(28px, 4vw, 60px); }
.r-product__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr);
  gap: clamp(24px, 4.4vw, 84px);
  align-items: start;
  margin-top: var(--s4);
}
.r-product__stage {
  position: relative;
  aspect-ratio: 4 / 5;
  background: var(--brown);
  border: var(--hair);
  overflow: hidden;
  display: grid;
  place-items: center;
  touch-action: pan-y;
}
.r-product__stage--studio, .r-product__stage--detail { background: var(--cream); }
.r-product__stage img { width: 100%; height: 100%; object-fit: cover; }
.r-product__stage--studio img, .r-product__stage--detail img { object-fit: contain; padding: 8%; mix-blend-mode: multiply; }
.r-product__stage.is-spinning { cursor: grabbing; }
.r-product__thumbs { display: flex; flex-wrap: wrap; gap: 6px; margin-top: var(--s3); }
.r-product__thumbs button { width: 80px; height: 100px; padding: 0; overflow: hidden; border: 1px solid var(--line); background: var(--cream); cursor: pointer; }
.r-product__thumbs button.is-active { border-color: var(--champagne); }
.r-product__thumbs img { width: 100%; height: 100%; object-fit: contain; padding: 6%; mix-blend-mode: multiply; }
.r-product__info { display: grid; gap: var(--s3); align-content: start; }
.r-product__family { font-family: var(--font-mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); }
.r-product__family a { display: inline-flex; align-items: center; min-height: var(--tap); min-width: var(--tap); margin-block: -14px; }
.r-product__title {
  font-family: var(--font-serif);
  font-optical-sizing: auto;
  font-variation-settings: "opsz" 96, "SOFT" 40;
  font-size: var(--step-3);
  font-weight: 400;
  letter-spacing: var(--tracking-tight);
  line-height: 1.06;
  text-wrap: balance;
}
.r-product__meta { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; font-family: var(--font-mono); font-size: 11px; letter-spacing: .04em; color: var(--muted); }
.r-product__stock { display: inline-flex; align-items: center; gap: 6px; color: var(--success); }
.r-product__stock::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
.r-product__stock.is-low { color: var(--warning); }
.r-product__stock.is-out { color: var(--danger); }
.r-product__price { font-family: var(--font-serif); font-size: var(--step-2); letter-spacing: -.01em; margin-top: var(--s2); }
.r-product__tax { font-family: var(--font-mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
.r-buy { border-top: var(--hair); border-bottom: var(--hair); padding-block: var(--s4); gap: var(--s4); margin-top: var(--s2); }
.r-buy__options { display: grid; gap: 6px; }
.r-buy__options legend { padding-bottom: var(--s2); }
.r-buy__label { font-family: var(--font-mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
.r-radio {
  display: flex !important;
  align-items: center;
  gap: 10px;
  padding: 13px 14px;
  border: 1px solid var(--line-strong);
  cursor: pointer;
  font-family: var(--font-sans);
  font-size: var(--step--1);
  letter-spacing: 0;
  text-transform: none;
  color: var(--ink-soft);
  grid-template-columns: none !important;
  transition: border-color var(--dur-fast), background var(--dur-fast);
}
.r-radio:hover { border-color: var(--muted); }
.r-radio.is-active, .r-radio:has(input:checked) { border-color: var(--champagne); background: var(--paper-3); }
.r-radio input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.r-radio:focus-within { outline: 2px solid var(--champagne-light); outline-offset: 2px; }
.r-radio__label { font-weight: 500; }
.r-radio__label small { display: block; margin-top: 3px; font-family: var(--font-mono); font-size: var(--step--2); letter-spacing: .06em; color: var(--muted); }
.r-radio__price { margin-left: auto; font-family: var(--font-mono); font-size: var(--step--1); }
.r-buy__row { display: flex; gap: var(--s3); align-items: stretch; flex-wrap: wrap; }
.r-buy__row .r-btn--add { flex: 1; min-width: 200px; }
.r-qty { display: inline-flex; align-items: center; width: max-content; border: 1px solid var(--field-line); border-radius: var(--radius); background: var(--paper-2); flex: none; }
.r-qty button { width: var(--tap); height: 48px; display: grid; place-items: center; font-size: 16px; color: var(--ink-soft); }
.r-qty button:hover { color: var(--champagne-light); }
.r-qty input {
  width: var(--tap);
  height: 48px;
  min-height: 44px;
  border: 0;
  border-left: 1px solid var(--line);
  border-right: 1px solid var(--line);
  border-radius: 0;
  text-align: center;
  font-family: var(--font-mono);
  font-size: var(--step--1);
  padding: 0;
  background: transparent;
  -moz-appearance: textfield;
}
.r-qty input::-webkit-outer-spin-button, .r-qty input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.r-swatches { display: flex; flex-wrap: wrap; gap: 8px; }
.r-swatch-btn { position: relative; width: var(--tap); height: var(--tap); padding: 0; border: 1px solid rgb(255 255 255 / .25); border-radius: 50%; cursor: pointer; transition: border-color var(--dur-fast); }
.r-swatch-btn.is-active::after { content: ""; position: absolute; inset: -5px; border: 1px solid var(--champagne); border-radius: 50%; }
.r-widths { display: flex; flex-wrap: wrap; gap: 6px; }
.r-width-btn { display: inline-flex; align-items: center; justify-content: center; min-width: var(--tap); min-height: var(--tap); padding: 9px 13px; border: 1px solid var(--line-strong); font-family: var(--font-mono); font-size: 11.5px; transition: background-color var(--dur-fast), border-color var(--dur-fast), color var(--dur-fast); }
.r-width-btn.is-active { background: var(--cream); color: var(--espresso); border-color: var(--cream); }
.r-reassure { display: grid; gap: 8px; font-size: var(--step--1); color: var(--ink-soft); }
.r-reassure li { display: flex; align-items: flex-start; gap: 10px; }
.r-reassure li::before { content: ""; width: 14px; height: 1px; background: var(--champagne); margin-top: .62em; flex: none; }
.r-reassure a { text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--line-strong); }
.r-answer { font-size: var(--step--1); line-height: 1.6; color: var(--muted); border-top: var(--hair); padding-top: var(--s4); text-wrap: pretty; }
.r-answer::before { content: "EN BREF"; display: block; margin-bottom: 7px; font-family: var(--font-mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); color: var(--champagne); }
.r-accordion { border-top: var(--hair); }
.r-accordion details { border-bottom: var(--hair); }
.r-accordion summary { display: flex; justify-content: space-between; align-items: center; min-height: 52px; padding: 12px 0; font-size: var(--step-0); list-style: none; cursor: pointer; }
.r-accordion summary::-webkit-details-marker { display: none; }
.r-accordion summary::after { content: "+"; font-family: var(--font-mono); color: var(--champagne); }
.r-accordion details[open] summary::after { content: "\2212"; }
.r-accordion p { padding-bottom: var(--s4); font-size: var(--step--1); color: var(--muted); max-width: 62ch; }
.r-product__specs { border-top: var(--hair); padding-top: var(--s4); }
.r-product__specs h2 { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); font-weight: 500; margin-bottom: var(--s3); }
.r-product__specs-list { display: grid; grid-template-columns: max-content 1fr; margin: 0; }
.r-product__specs-list div { display: contents; }
.r-product__specs-list dt, .r-product__specs-list dd { margin: 0; padding: 10px 0; border-bottom: 1px dotted var(--line-strong); }
.r-product__specs-list dt { padding-right: 24px; font-family: var(--font-mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
.r-product__specs-list dd { font-size: var(--step--1); }
.r-faq { border-top: var(--hair-strong); }
.r-faq details { border-bottom: var(--hair); }
.r-faq details summary { display: flex; align-items: center; justify-content: space-between; gap: var(--s4); min-height: 52px; cursor: pointer; font-family: var(--font-serif); font-size: var(--step-1); font-weight: 400; list-style: none; }
.r-product__faq details summary::-webkit-details-marker, .r-faq details summary::-webkit-details-marker { display: none; }
.r-product__faq details summary::after, .r-faq details summary::after { content: "+"; font-family: var(--font-mono); color: var(--champagne); font-size: 15px; }
.r-product__faq details[open] summary::after, .r-faq details[open] summary::after { content: "\2212"; }
.r-product__faq details p, .r-faq details p { padding-bottom: var(--s4); color: var(--muted); font-size: var(--step--1); max-width: 62ch; }

/* 17 · nuancier, occasions, journal --------------------------------------- */
.r-occasion-list { display: grid; gap: clamp(32px, 5vw, 72px); }
.r-occasion-row {
  display: grid;
  grid-template-columns: minmax(0, .8fr) minmax(0, 1.6fr);
  gap: clamp(20px, 3.4vw, 56px);
  align-items: start;
  padding-top: var(--s5);
  border-top: var(--hair-strong);
}
.r-occasion-row__text h2 { font-size: var(--step-3); margin-bottom: var(--s2); }
.r-occasion-row__text p { font-size: var(--step--1); color: var(--muted); max-width: 40ch; margin-bottom: var(--s4); }
.r-occasion-row__cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s4); }
.r-tips { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--col-gap); }
.r-tip { padding-top: var(--s4); border-top: 1px solid var(--champagne); }
.r-tip span { font-family: var(--font-mono); font-size: 10px; letter-spacing: .14em; color: var(--champagne); text-transform: uppercase; }
.r-tip p { margin-top: var(--s2); font-size: var(--step--1); color: var(--ink-soft); }
.r-other-occ { display: flex; flex-wrap: wrap; gap: var(--s5); margin-top: var(--s3); }
.r-other-occ a { font-family: var(--font-serif); font-size: var(--step-1); border-bottom: 1px solid var(--line-strong); padding-bottom: 2px; }
.r-article { padding-top: var(--s4); }
.r-article__head { max-width: 52rem; padding-block: var(--s6); border-bottom: var(--hair); }
.r-article__head .r-display { font-size: var(--step-4); margin-block: var(--s3); }
.r-article__body { max-width: 70ch; padding-block: var(--s6) var(--s8); }
.r-article__body h2 { font-family: var(--font-serif); font-weight: 400; font-size: var(--step-2); margin-block: 1.8em .6em; }
.r-article__body h3 { font-family: var(--font-serif); font-size: var(--step-1); margin-block: 1.6em .5em; }
.r-article__body p { color: var(--ink-soft); line-height: 1.76; }
.r-article__body p + p { margin-top: 1.05em; }
.r-article__body ul, .r-article__body ol { padding-left: 1.2em; margin-block: 1em; list-style: disc; }
.r-article__body ol { list-style: decimal; }
.r-article__body li { color: var(--ink-soft); margin-bottom: .4em; }
.r-article__body a { color: var(--champagne-light); text-decoration: underline; text-underline-offset: 3px; }
.r-article__body blockquote { margin-block: 1.6em; padding-left: var(--s5); border-left: 1px solid var(--champagne); font-family: var(--font-serif); font-size: var(--step-2); line-height: 1.35; }
.r-article__body img { margin-block: 1.6em; }
.r-article__products { border-top: var(--hair-strong); padding-top: var(--s5); margin-top: var(--s6); }
.r-article__products h2 { margin-bottom: var(--s5); }
.r-article__next { margin-top: var(--s7); border-top: var(--hair); padding-top: var(--s4); display: grid; gap: var(--s2); }
.r-article__next a { display: flex; justify-content: space-between; align-items: baseline; gap: var(--s4); padding-block: var(--s3); border-bottom: var(--hair); }
.r-article__next a span { font-family: var(--font-mono); font-size: 10.5px; color: var(--muted); white-space: nowrap; }

/* 18 · échantillons, atelier, maison, livraison, contact, légal ------------ */
.r-checklist { display: grid; gap: 10px; margin-top: var(--s4); }
.r-checklist li { display: flex; gap: 12px; align-items: flex-start; font-size: var(--step--1); color: var(--ink-soft); line-height: 1.55; }
.r-checklist li::before { content: ""; width: 15px; height: 8px; border-left: 1.5px solid var(--champagne); border-bottom: 1.5px solid var(--champagne); transform: rotate(-45deg) translate(2px, 1px); flex: none; margin-top: 6px; }
.r-numbers { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; border-top: var(--hair-strong); align-content: start; margin: 0; }
.r-numbers > div { padding-block: var(--s4); border-bottom: var(--hair); }
.r-numbers > div:nth-child(odd) { border-right: var(--hair); }
.r-numbers dt { font-family: var(--font-mono); font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.r-numbers dd { font-family: var(--font-serif); font-size: var(--step-3); letter-spacing: -.02em; margin-top: 4px; }
.r-values { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--col-gap); }
.r-value { padding-top: var(--s4); border-top: var(--hair-strong); }
.r-value h3 { font-family: var(--font-serif); font-size: var(--step-1); font-weight: 400; margin-bottom: 6px; }
.r-value p { font-size: var(--step--1); color: var(--muted); line-height: 1.55; }
.r-quote {
  font-family: var(--font-serif);
  font-optical-sizing: auto;
  font-style: italic;
  font-variation-settings: "opsz" 120, "SOFT" 80;
  font-size: var(--step-4);
  line-height: 1.18;
  letter-spacing: -.02em;
  max-width: 34ch;
  text-wrap: balance;
}
.r-quote cite { display: block; margin-top: var(--s5); font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; font-style: normal; color: var(--muted); }
.r-delivery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--col-gap) clamp(24px, 4vw, 64px); }
.r-delivery__block { padding-top: var(--s4); border-top: var(--hair-strong); }
.r-delivery__block h2 { font-size: var(--step-1); margin-bottom: var(--s2); }
.r-delivery__block p { font-size: var(--step--1); color: var(--muted); }
.r-contact { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); gap: clamp(28px, 5vw, 80px); align-items: start; }
.r-legal { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: clamp(24px, 4vw, 64px); align-items: start; }
.r-legal__nav { display: grid; gap: 2px; border-top: var(--hair-strong); padding-top: var(--s3); position: sticky; top: calc(var(--header-h) + 20px); }
.r-legal__nav a { display: flex; align-items: center; min-height: 44px; font-family: var(--font-mono); font-size: var(--step--2); letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.r-legal__nav a.is-active { color: var(--champagne); }

/* 19 · panier, tunnel, suivi ---------------------------------------------- */
.r-cart { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, .8fr); gap: clamp(24px, 4vw, 64px); align-items: start; }
.r-cart__lines { display: grid; gap: var(--s3); }
.r-cart__loading { font-family: var(--font-mono); font-size: var(--step--1); color: var(--muted); }
.r-line { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto 28px; gap: var(--s3); align-items: center; padding-block: var(--s4); border-bottom: var(--hair); }
.r-line > img { width: 64px; height: 64px; object-fit: contain; background: var(--cream); padding: 4px; }
.r-line__info { display: grid; gap: 5px; min-width: 0; }
.r-line__info > a { font-family: var(--font-serif); font-size: var(--step--1); font-weight: 400; line-height: 1.3; }
.r-line__info > span { font-family: var(--font-mono); font-size: 10px; letter-spacing: .07em; text-transform: uppercase; color: var(--muted); }
.r-line__info .r-line__qty { display: inline-flex; align-items: center; width: fit-content; border: 1px solid var(--line); margin-top: 2px; }
.r-line__info .r-line__qty button { width: 32px; height: 32px; display: grid; place-items: center; font-size: 13px; color: var(--ink-soft); }
.r-line__info .r-line__qty span { min-width: 26px; text-align: center; font-family: var(--font-mono); font-size: 11px; }
.r-line__price { font-family: var(--font-mono); font-size: var(--step--1); white-space: nowrap; text-align: right; }
.r-line__x { width: 28px; height: var(--tap); display: grid; place-items: center; color: var(--muted); font-size: 16px; }
.r-line:first-child { border-top: var(--hair); }
.r-cart__aside { position: sticky; top: calc(var(--header-h) + 24px); display: grid; gap: var(--s3); padding: var(--s5); background: var(--paper-2); border: var(--hair); }
.r-cart__aside h2 { font-size: var(--step-1); }
.r-sum { display: grid; gap: var(--s2); margin: 0; }
.r-sum > div { display: flex; justify-content: space-between; gap: var(--s4); font-size: var(--step--1); color: var(--ink-soft); }
.r-sum dd { font-family: var(--font-mono); }
.r-sum--total { padding-top: var(--s3); border-top: var(--hair); font-size: var(--step-0) !important; color: var(--ink) !important; font-weight: 600; }
.r-sum--total dd { font-size: var(--step-1); }
.r-shipmsg { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .04em; color: var(--muted); }
.r-shipmsg.is-free { color: var(--success); }
.r-checkout { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, .8fr); gap: clamp(24px, 4vw, 64px); align-items: start; }
.r-checkout__form fieldset { display: grid; gap: var(--s4); padding-bottom: var(--s5); }
.r-checkout__form fieldset + fieldset { border-top: var(--hair); padding-top: var(--s5); }
.r-checkout__form legend { font-family: var(--font-serif); font-size: var(--step-1); font-weight: 400; letter-spacing: var(--tracking-tight); padding-bottom: var(--s3); }
.r-checkout__summary { position: sticky; top: calc(var(--header-h) + 24px); padding: var(--s5); background: var(--paper-2); border: var(--hair); display: grid; gap: var(--s3); }
.r-checkout__summary h2 { font-size: var(--step-1); }
.r-steps { display: flex; flex-wrap: wrap; gap: var(--s3) var(--s5); margin-top: var(--s4); counter-reset: step; }
.r-steps li { display: flex; align-items: center; gap: 8px; font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); counter-increment: step; }
.r-steps li::before { content: counter(step); display: grid; place-items: center; width: 20px; height: 20px; border: 1px solid currentColor; border-radius: 50%; font-size: 9px; }
.r-steps li.is-on { color: var(--ink); }
.r-steps li.is-on::before { background: var(--champagne); border-color: var(--champagne); color: var(--espresso); }
.r-steps li.is-done { color: var(--success); }
.r-ship-opts { display: grid; gap: 8px; }
.r-track__result { min-height: 40px; }
.r-timeline { display: grid; gap: 0; margin-top: var(--s4); border-left: 1px solid var(--line); padding-left: var(--s5); }
.r-timeline li { position: relative; padding-bottom: var(--s4); font-size: var(--step--1); color: var(--muted); }
.r-timeline li::before { content: ""; position: absolute; left: calc(var(--s5) * -1); top: .5em; width: 7px; height: 7px; border-radius: 50%; background: var(--line-strong); transform: translateX(-3.5px); }
.r-timeline li.is-on { color: var(--ink); }
.r-timeline li.is-on::before { background: var(--champagne); }
.r-timeline time { font-family: var(--font-mono); font-size: 10.5px; color: var(--muted); display: block; }

/* 20 · tableaux ----------------------------------------------------------- */
.r-table { width: 100%; font-size: var(--step--1); border-collapse: collapse; }
.r-table caption { text-align: left; padding: var(--s3) var(--s4); font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.r-table th, .r-table td { padding: 10px 14px; text-align: left; border-bottom: var(--hair); vertical-align: middle; }
.r-table th { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; font-weight: 500; color: var(--muted); background: var(--paper-2); position: sticky; top: 0; z-index: 1; white-space: nowrap; }
.r-table tbody tr:hover { background: var(--paper-2); }
.r-table td.num, .r-table th.num { text-align: right; font-family: var(--font-mono); font-variant-numeric: tabular-nums; }

/* 21 · états, divers, accessibilité --------------------------------------- */
:target { scroll-margin-top: calc(var(--header-h) + 24px); }
[aria-busy="true"] { cursor: progress; }
.r-reveal { opacity: 0; transform: translateY(20px); }
.r-reveal.is-in { opacity: 1; transform: none; transition: opacity var(--dur-slow) var(--ease-silk), transform var(--dur-slow) var(--ease-silk); transition-delay: calc(var(--i, 0) * 60ms); }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
  .r-reveal { opacity: 1; transform: none; }
}

/* 22 · responsive --------------------------------------------------------- */
@media (max-width: 1180px) {
  .r-shop { grid-template-columns: 200px minmax(0, 1fr); }
  .r-values { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1024px) {
  .r-header__bar { gap: var(--s3); }
  .r-logo { margin-right: auto; }
  .r-products, .r-products--4 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .r-products--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-shop { grid-template-columns: minmax(0, 1fr); }
  .r-filters { position: static; border: var(--hair); padding: var(--s4); background: var(--paper-2); }
  .r-product__grid { grid-template-columns: minmax(0, 1fr); }
  .r-product__stage { max-width: 620px; }
  .r-cart, .r-checkout { grid-template-columns: minmax(0, 1fr); }
  .r-cart__aside, .r-checkout__summary { position: static; }
  .r-story, .r-split, .r-two-col, .r-contact, .r-legal, .r-occasion-row { grid-template-columns: minmax(0, 1fr); }
  .r-split--rev .r-split__text, .r-split--rev .r-split__visual { order: 0; }
  .r-legal__nav { position: static; display: flex; flex-wrap: wrap; gap: 6px; border: 0; }
  .r-legal__nav a { padding: 0 12px; border: var(--hair); min-height: var(--tap); }
  .r-legal__nav a.is-active { background: var(--cream); color: var(--espresso); }
  .r-occasion-row__cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-news { grid-template-columns: minmax(0, 1fr); }
  .r-footer__brand { grid-column: 1 / -1; }
  .r-delivery { grid-template-columns: minmax(0, 1fr); }
  .r-form--inline { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
  .r-products, .r-products--4, .r-products--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-guides, .r-guides--grid { grid-template-columns: minmax(0, 1fr); }
  .r-occasion { min-height: 0; }
  .r-occasion-row__cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-tips { grid-template-columns: minmax(0, 1fr); }
  .r-values { grid-template-columns: minmax(0, 1fr); }
  .r-news__form { grid-template-columns: minmax(0, 1fr); }
  .r-news__form .r-btn { width: 100%; }
  .r-lang__panel { grid-template-columns: repeat(2, minmax(0, 1fr)); position: fixed; left: var(--s3); right: var(--s3); top: 72px; width: auto; }
  .r-footer__bottom { flex-direction: column; align-items: flex-start; gap: var(--s2); }
  .r-search__form { grid-template-columns: minmax(0, 1fr) auto; }
  .r-search__form .r-btn--primary { grid-column: 1 / -1; }
  .r-search__form input { font-size: var(--step-2); }
  .r-line { grid-template-columns: 72px minmax(0, 1fr); }
  .r-form__grid { grid-template-columns: minmax(0, 1fr); }
  .r-numbers { grid-template-columns: 1fr 1fr; }
  .r-pager { flex-wrap: wrap; }
  .r-drawer { width: 100vw; }
  .r-page-head .r-display { font-size: var(--step-4); }
}
@media (max-width: 420px) {
  .r-products, .r-products--4, .r-products--3, .r-products--2 { grid-template-columns: minmax(0, 1fr); }
  .r-occasion-row__cards { grid-template-columns: minmax(0, 1fr); }
}
@media print {
  .r-header, .r-footer, [data-cookie], .r-drawer, .r-search, .r-toasts { display: none !important; }
  body { background: #fff; color: #000; }
  .r-card { break-inside: avoid; }
  a[href]::after { content: " (" attr(href) ")"; font-size: 9pt; color: #555; }
}

/* v3.css */
/* 123Apéro · v3 « Le soir, la table, la lumière » · feuille du storefront.
   Direction : docs/design/DIRECTION.md. Jetons : tokens.css, seule source ; aucun jeton n'est redéclaré ici.
   Le site est sombre par défaut. Survols sous @media (hover: hover) and (pointer: fine) ;
   mouvement réduit : un seul bloc, en fin de fichier. */
* { box-sizing: border-box; }
html { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; scrollbar-gutter: stable; overflow-x: clip; }
body.r-page {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  font-size: var(--step-0);
  line-height: 1.58;
  -webkit-font-smoothing: antialiased;
  font-optical-sizing: auto;
}
/* grain de page : seule règle de grain du site, retirée sous 760 px et en mouvement réduit */
body.r-page::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: calc(var(--z-toast) + 1);
  opacity: var(--grain-opacity);
  background-image: url("/assets/img/ambiance/grain.svg");
  background-size: 200px;
  mix-blend-mode: overlay;
}
img { max-width: 100%; display: block; -webkit-user-drag: none; }
a { color: inherit; text-decoration: none; text-underline-offset: 3px; }
button, input, select, textarea { font: inherit; color: inherit; }
h1, h2, h3, .r-display, .r-famhero__title, .r-hero2__title, .r-product__title { font-optical-sizing: auto; }
::selection { background: var(--champagne); color: var(--espresso); }
.r-wrap { width: 100%; max-width: var(--wrap); margin: 0 auto; padding: 0 var(--gut); }
.r-main { min-height: 60vh; }
.r-sr, .r-skip { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.r-skip:focus {
  position: fixed;
  left: 16px;
  top: 16px;
  width: auto;
  height: auto;
  clip: auto;
  background: var(--cream);
  color: var(--espresso);
  padding: 12px 18px;
  z-index: calc(var(--z-toast) + 2);
  font-family: var(--mono);
  font-size: var(--step--2);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
}
.r-no-scroll { overflow: hidden; }
#main { scroll-margin-top: calc(var(--header-h) + var(--s6)); }
fieldset[data-step] { scroll-margin-top: calc(var(--header-h) + var(--s7)); }
.r-price, .r-card__price, .r-product__price, [data-price], [data-checkout-total] { font-variant-numeric: tabular-nums; }

/* focus : une règle, anneau champagne sur le sombre, bordeaux sur la crème */
:focus-visible { outline: 2px solid var(--champagne-light); outline-offset: 3px; }
.r-section--paper :focus-visible, .r-card :focus-visible, .r-hero2__card :focus-visible, .r-toast :focus-visible { outline-color: var(--bordeaux); }
.r-skip:focus-visible { outline: 2px solid var(--espresso); outline-offset: -6px; }

/* ---------- type ---------- */
.r-display {
  font-family: var(--serif);
  font-weight: 400;
  font-size: var(--text-h2);
  line-height: .98;
  letter-spacing: var(--tracking-display);
  margin: 0;
  text-wrap: balance;
}
.r-serif { font-family: var(--serif); font-weight: 400; line-height: 1.06; letter-spacing: -.02em; margin: 0; }
.r-label { font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); margin: 0; }
.r-lead { font-size: clamp(1.05rem, .98rem + .35vw, 1.25rem); line-height: 1.55; color: var(--ink-soft); max-width: 46ch; margin: 0; text-wrap: pretty; }
.r-hint, .r-note { font-size: 13px; color: var(--muted); line-height: 1.55; }
.r-link-arrow {
  font-family: var(--mono);
  font-size: var(--step--2);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--ink);
  border-bottom: 1px solid var(--champagne);
  padding-bottom: 6px;
  display: inline-flex;
  gap: 12px;
  align-items: center;
  transition: color var(--dur-fast) ease, border-color var(--dur-fast) ease;
}

/* ---------- boutons : la crème porte l'action, le bordeaux la conversion ---------- */
.r-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 50px;
  padding: 0 26px;
  border: 1px solid var(--line-strong);
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  font-family: var(--mono);
  font-size: var(--step--2);
  font-weight: 500;
  letter-spacing: .11em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background-color var(--dur-fast) ease, border-color var(--dur-fast) ease, color var(--dur-fast) ease;
}
.r-btn:active { transform: translateY(1px); }
.r-btn--primary { background: var(--cream); border-color: var(--cream); color: var(--espresso); }
.r-btn--ghost { border-color: var(--line-strong); color: var(--ink); }
.r-btn--quiet { border-color: transparent; padding-inline: 8px; text-transform: none; letter-spacing: 0; min-height: var(--tap); }
.r-btn--sm { min-height: var(--tap); padding: 0 18px; font-size: var(--step--2); }
.r-btn--block { width: 100%; }
.r-btn--add { flex: 1; background: var(--bordeaux); border-color: var(--bordeaux); color: var(--cream); }
.r-btn[disabled], .r-btn.is-disabled { opacity: .45; pointer-events: none; }
.r-btn--loading { position: relative; pointer-events: none; cursor: progress; }
.r-btn--loading::after { content: ""; position: absolute; inset: auto 0 0 0; height: 2px; background: currentColor; animation: r-wait 2.4s var(--ease-out) forwards; transform-origin: left; }
@keyframes r-wait { from { transform: scaleX(0); } to { transform: scaleX(.92); } }

/* ---------- en-tête ---------- */
.r-header {
  position: sticky;
  top: calc(var(--strip-h) * -1);
  z-index: var(--z-header);
  background: color-mix(in srgb, var(--paper) 90%, transparent);
  backdrop-filter: saturate(1.05) blur(14px);
  -webkit-backdrop-filter: saturate(1.05) blur(14px);
  border-bottom: 1px solid var(--line);
  transition: box-shadow var(--dur) var(--ease-out), background var(--dur) var(--ease-out);
}
.r-header.is-scrolled { box-shadow: 0 18px 40px -34px rgb(0 0 0 / .9); background: color-mix(in srgb, var(--paper) 97%, transparent); }
.r-header__top { background: var(--brown); color: var(--cream); border-bottom: 1px solid var(--line); }
.r-header__strip { height: var(--strip-h); font-size: var(--step--2); color: var(--on-dark-muted); }
.r-header__dot { background: var(--champagne); }
.r-header__bar { min-height: var(--header-h); padding: 0 30px; gap: 30px; }
.r-header.is-scrolled .r-header__bar { min-height: 68px; }
.r-header__nav { gap: 34px; }
.r-header__link {
  padding: 30px 0;
  font-family: var(--mono);
  font-size: var(--step--2);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.r-header.is-scrolled .r-header__link { padding: 22px 0; }
.r-header__link::after { content: ""; position: absolute; left: 0; right: 0; bottom: 22px; height: 1px; background: var(--champagne); transform: scaleX(0); transform-origin: left; transition: transform var(--dur) var(--ease-out); }
.r-header__link:focus-visible::after { transform: scaleX(1); }
.r-header__tools { gap: 8px; }
.r-tool { border: 0; }
.r-tool--cart { border: 1px solid var(--line-strong); }
.r-tool--lang { width: auto; padding: 0 10px; gap: 6px; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); }
.r-cart-count { top: 3px; right: 2px; min-width: 17px; height: 17px; border-radius: 50%; background: var(--champagne); color: var(--espresso); font-family: var(--mono); font-size: var(--step--2); display: inline-flex; align-items: center; justify-content: center; }
.r-lang { position: relative; }
.r-lang__panel { position: absolute; right: 0; top: 48px; width: 460px; max-height: 70vh; overflow: auto; display: grid; grid-template-columns: 1fr 1fr; gap: 2px; padding: 14px; background: var(--paper-2); border: 1px solid var(--line); box-shadow: var(--shadow-sheet); }
.r-lang__panel[hidden] { display: none; }
.r-lang__item { display: flex; gap: 10px; align-items: baseline; padding: 8px 10px; font-size: 13px; }
.r-lang__code { font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); color: var(--champagne); }
.r-lang__name { color: var(--ink-soft); }
.r-lang__item[aria-current="true"] { background: var(--brown); }
.r-lang__item[aria-current="true"] .r-lang__code { color: var(--champagne-light); }
.r-header__burger { display: none; min-width: var(--tap); min-height: var(--tap); flex-direction: column; gap: 6px; align-items: center; justify-content: center; }
.r-header__burger span { display: block; width: 22px; height: 1.5px; background: var(--ink); }
.r-mobile-nav { position: fixed; inset: 0; z-index: var(--z-drawer); height: 100dvh; overflow: auto; padding: 22px var(--gut) 40px; background: var(--paper); }
.r-mobile-nav[hidden] { display: none; }
.r-mobile-nav__head { display: flex; justify-content: space-between; align-items: center; padding-bottom: 18px; border-bottom: 1px solid var(--line); font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); }
.r-mobile-nav__head button { display: inline-grid; place-items: center; min-width: var(--tap); min-height: var(--tap); font-size: 28px; cursor: pointer; }
.r-mobile-nav > a { display: flex; justify-content: space-between; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--line); font-family: var(--serif); font-size: 26px; }
.r-mobile-nav > a.r-mobile-nav__sub { padding-left: 12px; font-family: var(--sans); font-size: 15px; }
.r-mobile-nav span { font-family: var(--mono); font-size: var(--step--2); color: var(--muted); }

/* logo : signe à gauche, mot en bas de casse, tout en currentColor */
.r-logo { display: inline-flex; align-items: center; gap: 11px; color: var(--ink); }
.r-logo__badge { width: 30px; height: 34px; color: var(--champagne); transition: color var(--dur-fast) ease; }
.r-logo__word { font-family: var(--font-brand); font-size: 24px; font-weight: 500; line-height: 1; letter-spacing: -.03em; text-transform: lowercase; }
.r-logo__tag { font-family: var(--mono); font-size: var(--step--2); line-height: 1; letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); white-space: nowrap; }
.r-header .r-logo__tag { display: none; }
.r-footer .r-logo { gap: 14px; color: var(--cream); }
.r-footer .r-logo__badge { width: 42px; height: 49px; }
.r-footer .r-logo__word { font-size: 38px; }
.r-footer .r-logo__tag { font-size: var(--step--2); color: var(--on-dark-muted); }

/* mega-menu : ouvert par le premier lien seul, au survol et au clavier */
.r-mega { position: absolute; left: 0; right: 0; top: 100%; width: auto; padding: 0; display: block; transform: none; background: var(--paper-2); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); box-shadow: var(--shadow-sheet); opacity: 0; visibility: hidden; transition: opacity var(--dur-fast) var(--ease-out), visibility 0s linear var(--dur-fast); }
.r-mega::before { content: ""; position: absolute; inset: -16px 0 auto 0; height: 16px; }
.r-header__link:first-child:hover + .r-mega, .r-header__link:first-child:focus-visible + .r-mega, .r-mega:hover, .r-mega:focus-within { opacity: 1; visibility: visible; transition-delay: 0s; }
.r-mega__inner { max-width: var(--wrap); margin: 0 auto; padding: 28px var(--gut) 34px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) 260px; gap: 4px 26px; }
.r-mega a { display: flex; align-items: center; gap: 14px; padding: 6px 0; font-family: var(--font-serif); font-size: 20px; line-height: 1.15; color: var(--ink-soft); }
.r-mega img { flex: none; width: 64px; height: 80px; object-fit: cover; background: var(--stage); border: 1px solid var(--line); }
.r-mega__feature { grid-column: 4; grid-row: 1 / span 4; align-self: start; padding-left: 26px; border-left: 1px solid var(--line); }
.r-mega__feature a { display: grid; grid-template-columns: 64px minmax(0, 1fr); column-gap: 14px; align-items: center; }
.r-mega__feature img { grid-row: span 2; }
.r-mega__feature span { align-self: end; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); }
.r-mega__feature strong { align-self: start; font-weight: 400; }

/* ---------- confiance : quatre preuves, filets d'or ---------- */
.r-trust { border-bottom: 1px solid var(--line); background: var(--brown); color: var(--cream); }
.r-trust__inner { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.r-trust__item { display: flex; gap: 12px; align-items: flex-start; padding: 22px 26px; border-right: 1px solid rgb(201 161 91 / .18); }
.r-trust__item:last-child { border-right: 0; }
.r-trust__item svg { flex: none; margin-top: 3px; color: var(--champagne); }
.r-trust__item strong { display: block; font-size: 13px; font-weight: 600; letter-spacing: .01em; }
.r-trust__item span { font-size: 12.5px; line-height: 1.45; color: var(--on-dark-muted); }

/* ---------- sections : rythme par jetons ---------- */
.r-section { padding-block: var(--section-y); border-bottom: 1px solid var(--line); }
.r-section--tight { padding-block: var(--section-y-sm); }
.r-page--home .r-section { padding-block: var(--section-y-md); }
.r-page--home #bibliotheque, .r-section--dark { padding-block: var(--section-y-lg); }
.r-page-head + .r-section { padding-top: var(--section-y-head); }
/* nappe crème : une par page au plus, lecture longue ou sélection */
.r-section--paper { background: var(--cream); color: var(--espresso); border-bottom: 0; }
.r-section--paper .r-display, .r-section--paper h2, .r-section--paper h3 { color: var(--espresso); }
.r-section--paper .r-label { color: var(--bordeaux); }
.r-section--paper .r-lead, .r-section--paper .r-note, .r-section--paper .r-hint { color: var(--olive-ink); }
.r-section--paper .r-btn--primary { background: var(--bordeaux); border-color: var(--bordeaux); color: var(--cream); }
.r-section--paper .r-btn--ghost { border-color: rgb(23 17 14 / .28); color: var(--espresso); }
.r-section--paper .r-link-arrow, .r-section--paper .r-crumbs a { color: var(--espresso); }
.r-section--dark { background: var(--brown); color: var(--cream); border-bottom: 1px solid var(--line); }
.r-section--dark .r-label, .r-section--dark .r-lead, .r-section--dark .r-hint { color: var(--on-dark-muted); }
.r-section__head { display: grid; max-width: none; grid-template-columns: minmax(0, 1fr) minmax(0, 40ch); align-items: end; gap: clamp(24px, 4vw, 72px); margin-bottom: 34px; }
.r-section__head .r-display, .r-section__head h2 { max-width: 20ch; font-size: var(--text-h2); line-height: .98; letter-spacing: var(--tracking-display); text-wrap: balance; }
.r-section__head .r-lead { justify-self: end; max-width: 38ch; }
/* numéro de section : un point qui pétille, puis le filet */
.r-section__num { display: flex; align-items: center; gap: 10px; margin-bottom: var(--s4); font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); color: var(--champagne); }
.r-section__num::before { content: ""; flex: none; width: 4px; height: 4px; border-radius: 50%; background: var(--champagne-light); box-shadow: 0 0 0 3px rgb(228 200 140 / .14); }
.r-section__num::after { content: ""; width: 32px; height: 1px; background: var(--champagne); opacity: .55; }
.r-section--paper .r-section__num { color: var(--bordeaux); }
.r-section--paper .r-section__num::before { background: var(--bordeaux); box-shadow: none; }
.r-section--paper .r-section__num::after { background: var(--bordeaux); }

/* ---------- familles : tuiles photo, légende sur voile ---------- */
.r-families { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2px; background: var(--line); border: 1px solid var(--line); }
.r-fam { position: relative; display: block; min-width: 0; aspect-ratio: 4 / 5; overflow: hidden; background: var(--brown); }
.r-fam--wide { grid-column: span 2; aspect-ratio: auto; min-height: 420px; }
.r-fam--cta { display: none; }
.r-fam__media { position: absolute; inset: 0; overflow: hidden; background: var(--cream); }
.r-fam__media img { width: 100%; height: 100%; padding: 0; object-fit: cover; transition: transform var(--dur-img) var(--ease-silk); }
.r-fam__body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; padding: 64px 18px 18px; background: linear-gradient(0deg, rgb(23 17 14 / .94) 0%, rgb(23 17 14 / .78) 56%, rgb(23 17 14 / 0) 100%); color: var(--cream); }
.r-fam__name { font-family: var(--serif); font-size: clamp(1.5rem, 1.2rem + .8vw, 2rem); font-weight: 400; letter-spacing: -.02em; color: var(--cream); }
.r-fam--wide .r-fam__name { font-size: clamp(2.2rem, 1.6rem + 2.4vw, 4rem); }
.r-fam__meta { font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--on-dark-muted); white-space: nowrap; }
.r-fam__index { position: absolute; top: 12px; left: 12px; z-index: 2; padding: 4px 8px; background: var(--paper-2); color: var(--brass-ink); font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); border: 1px solid var(--line); }
.r-fam__arrow { position: absolute; top: 12px; right: 12px; z-index: 2; display: grid; place-items: center; width: var(--tap); height: var(--tap); border-radius: 50%; border: 1px solid var(--champagne); color: var(--champagne-light); background: rgb(23 17 14 / .55); opacity: 0; transform: translateY(6px); transition: opacity var(--dur) var(--ease-out), transform var(--dur) var(--ease-out); }
.r-fam:focus-visible .r-fam__arrow { opacity: 1; transform: none; }

/* ---------- cartes produit : une étiquette crème sur la table sombre ---------- */
.r-products, .r-products--3 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 26px 16px; }
.r-page--product .r-products > .r-card:nth-child(n+9) { display: none; }
.r-card { position: relative; background: transparent; }
/* Le catalogue vit sur espresso (décision du 11/11) : le produit est le seul point clair.
   Halo teinté par la finition (--finish), faux sol, ombre portée sur la silhouette, liseré or à 12 %.
   Les packshots sont transparents (pack 4:5, produit cadré à 80 %) : rien n est baké. */
.r-card__media { position: relative; display: block; aspect-ratio: 4 / 5; overflow: hidden; border: 1px solid var(--line-strong); background: radial-gradient(46% 34% at 50% 40%, color-mix(in srgb, var(--finish, var(--champagne)) 17%, transparent) 0%, rgb(31 23 19 / 0) 74%), radial-gradient(52% 40% at 50% 38%, var(--brown-2) 0%, rgb(31 23 19 / 0) 74%), linear-gradient(170deg, var(--brown) 0%, var(--espresso) 84%); transition: border-color var(--dur) var(--ease-out); }
.r-card__media::before { content: ""; position: absolute; left: 16%; right: 16%; bottom: 8%; height: 10%; border-radius: 50%; background: radial-gradient(50% 50% at 50% 50%, rgb(0 0 0 / .6), rgb(0 0 0 / 0) 72%); filter: blur(7px); pointer-events: none; }
.r-card__media::after { content: ""; position: absolute; inset: 0; box-shadow: inset 0 0 0 1px rgb(201 161 91 / .12); pointer-events: none; }
.r-card .r-card__img, .r-card__media img { position: relative; z-index: 1; width: 100%; height: 100%; padding: 13%; object-fit: contain; mix-blend-mode: normal; filter: drop-shadow(0 16px 22px rgb(0 0 0 / .72)) brightness(1.04) contrast(1.02); transition: transform var(--dur-img) var(--ease-silk); }
.r-card__media .r-tag { background: var(--champagne); border-color: var(--champagne); color: var(--espresso); }
/* Variante papier, réservée au hero et aux bandeaux éditoriaux (body.r-cards--a). */
body.r-cards--a .r-card__media { background: radial-gradient(58% 44% at 50% 36%, #FFFDF8 0%, rgb(255 253 248 / 0) 72%), linear-gradient(168deg, #FBF7F0 0%, #F4EBDC 58%, #EADFCB 100%); border-color: rgb(201 161 91 / .34); }
body.r-cards--a .r-card__media::before { background: radial-gradient(50% 50% at 50% 50%, rgb(42 33 29 / .26), rgb(42 33 29 / 0) 72%); }
body.r-cards--a .r-card__media::after { box-shadow: inset 0 0 0 1px rgb(255 255 255 / .5); }
body.r-cards--a .r-card__media img { filter: drop-shadow(0 14px 16px rgb(23 17 14 / .3)) drop-shadow(0 2px 2px rgb(23 17 14 / .18)); }
body.r-cards--a .r-card__media .r-tag { background: var(--espresso); border-color: var(--champagne); color: var(--cream); }
.r-card__body { padding: 11px 2px 0; }
.r-card__meta { display: flex; align-items: center; gap: 8px; font-family: var(--mono); font-size: var(--step--2); letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.r-card__title { margin: 4px 0 7px; min-height: 38px; font-family: var(--serif); font-size: 15.5px; font-weight: 400; line-height: 1.28; letter-spacing: -.01em; }
.r-card__title a { transition: color var(--dur-fast) ease; }
.r-card__title a::after { content: ""; position: absolute; inset: 0; }
.r-card__foot { display: flex; align-items: center; justify-content: space-between; gap: var(--s2); }
.r-card__price { font-family: var(--mono); font-size: 12px; letter-spacing: .02em; color: var(--champagne-light); }
.r-card__add { position: relative; z-index: 2; display: grid; place-items: center; min-width: var(--tap); min-height: var(--tap); border: 1px solid var(--line-strong); border-radius: 50%; background: transparent; color: var(--ink); font-size: 18px; line-height: 1; cursor: pointer; transition: background-color var(--dur-fast) ease, border-color var(--dur-fast) ease, color var(--dur-fast) ease; }
/* étiquettes : aplat sombre sur la crème, or sur bordeaux, jamais d'or clair sur or */
.r-tag { position: absolute; top: 12px; left: 12px; z-index: 2; padding: 6px 9px; background: var(--espresso); color: var(--cream); font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; border: 1px solid var(--champagne); }
.r-tag--best { background: var(--champagne); color: var(--espresso); border-color: var(--champagne); }
.r-card__media .r-tag { top: 12px; left: 12px; right: auto; }

/* ---------- rail horizontal ---------- */
.r-rail { display: flex; gap: var(--s4); overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 8px; scrollbar-width: thin; }
.r-rail > * { flex: 0 0 calc((100% - 3 * var(--s4)) / 4); min-width: 0; scroll-snap-align: start; }
.r-rail-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; }
.r-rail-nav { display: flex; gap: 8px; }
.r-rail-nav:has(+ .r-families) { justify-content: flex-end; margin-bottom: var(--s3); }
.r-section__head:has(+ .r-rail-nav) { margin-bottom: var(--s5); }
@media (max-width: 1023px) {
  .r-rail-head:has(> .r-rail-nav) { flex-wrap: wrap; row-gap: var(--s5); margin-bottom: var(--s3); }
  .r-rail-head > .r-rail-nav { flex-basis: 100%; justify-content: flex-end; }
}
.r-rail-nav button { width: var(--tap); height: var(--tap); border: 1px solid var(--line-strong); background: transparent; cursor: pointer; color: var(--ink); }

/* ---------- la palette : bande de 25 tons, filet d'or ---------- */
.r-wall { display: grid; grid-template-columns: repeat(25, minmax(0, 1fr)); border: 1px solid var(--line-strong); background: var(--paper); }
.r-wall a { position: relative; display: block; height: 132px; border-right: 1px solid rgb(23 17 14 / .25); }
.r-wall a span { position: absolute; inset: auto 0 0 0; padding: 6px 8px; background: var(--espresso); color: var(--cream); font-family: var(--mono); font-size: var(--step--2); line-height: 1.3; letter-spacing: .04em; text-transform: uppercase; }
@media (hover: hover) and (pointer: fine) {
  .r-wall a span { right: auto; width: max-content; min-width: 100%; white-space: nowrap; opacity: 0; transition: opacity var(--dur-fast) var(--ease-out); }
  .r-wall a:nth-child(n+13) span { left: auto; right: 0; }
  .r-wall a:hover, .r-wall a:focus-visible { z-index: 1; }
  .r-wall a:hover span, .r-wall a:focus-visible span { opacity: 1; }
}
@media (hover: none) { .r-wall a span { opacity: 1; white-space: normal; padding-inline: 4px; letter-spacing: 0; hyphens: auto; } }

/* ---------- nuancier : la pastille est la couleur ---------- */
.r-colour-list { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1px; background: var(--line); }
.r-colour-card { position: relative; display: block; overflow: hidden; background: var(--paper-2); scroll-margin-top: calc(var(--header-h) + var(--s5)); }
.r-colour-card__chip { display: block; width: 100%; height: clamp(110px, 11vw, 168px); background: var(--c); box-shadow: inset 0 0 0 1px rgb(23 17 14 / .18); }
.r-colour-card:focus-visible .r-colour-card__chip { box-shadow: inset 0 0 0 2px var(--champagne-light); }
.r-colour-card__name { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 13px 15px 15px; background: var(--paper-2); font-family: var(--sans); font-size: 13.5px; letter-spacing: .01em; color: var(--ink); }
.r-colour-card__name span:first-child { text-transform: capitalize; }
.r-colour-card__name span:last-child { font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); color: var(--muted); }

/* ---------- les moments : deux grandes histoires ---------- */
.r-stories { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; background: var(--line); border: 1px solid var(--line); }
.r-story { position: relative; display: flex; align-items: flex-end; min-height: 560px; overflow: hidden; background: var(--brown); }
.r-story img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .92; transition: transform var(--dur-img) var(--ease-silk); }
.r-story::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgb(23 17 14 / .96) 0%, rgb(23 17 14 / .7) 48%, rgb(23 17 14 / 0) 84%); }
.r-story__body { position: relative; z-index: 2; padding: 34px; color: var(--cream); }
.r-story__body .r-label { color: var(--champagne); }
.r-story__body h3 { margin: 10px 0 10px; font-family: var(--serif); font-weight: 400; font-size: clamp(1.8rem, 1.4rem + 1.6vw, 2.9rem); letter-spacing: -.02em; }
.r-story__body p { max-width: 42ch; margin: 0 0 18px; color: var(--on-dark-muted); }
.r-story__link { display: inline-flex; align-items: center; min-height: var(--tap); padding-bottom: 5px; border-bottom: 1px solid var(--champagne); font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne-light); }
.r-other-occ { display: flex; flex-wrap: wrap; gap: 2px; margin-top: 2px; background: var(--line); border: 1px solid var(--line); }
.r-other-occ a { flex: 1 1 calc((100% - 4px) / 3); min-width: 0; display: flex; justify-content: space-between; align-items: center; min-height: var(--tap); padding: 18px; background: var(--paper-2); font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--ink-soft); transition: background-color var(--dur-fast) ease, color var(--dur-fast) ease; }

/* ---------- l'atelier : bande brune, photo fondue ---------- */
.r-atelier-band { display: grid; grid-template-columns: 1fr 1fr; gap: 0; max-width: var(--wrap); margin: 0 auto; background: var(--brown); color: var(--cream); }
.r-atelier-band__text { align-self: center; padding-block: clamp(40px, 6vw, 90px); padding-inline: var(--gut); }
.r-atelier-band__text .r-display { color: var(--cream); }
.r-atelier-band__text .r-lead { margin-top: var(--s5); color: var(--on-dark-muted); }
.r-atelier-band__preview { position: relative; display: grid; place-items: center; min-height: 460px; padding: 40px; overflow: hidden; background: var(--brown); }
.r-atelier-canvas { width: 100%; height: auto; max-height: 380px; }
.r-atelier-poster { width: 100%; height: 100%; object-fit: cover; opacity: .78; mask-image: radial-gradient(78% 78% at 50% 50%, #000 40%, transparent 100%); }
.r-atelier-caption { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%) rotate(-2deg); font-family: var(--serif); font-style: italic; font-size: clamp(2rem, 3vw, 3.4rem); letter-spacing: -.02em; color: var(--cream); }

/* ---------- le journal ---------- */
.r-guides { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(26px, 3vw, 44px); }
.r-guide-card { display: block; }
.r-guide-card__media { display: block; aspect-ratio: 4 / 3; margin-bottom: 16px; overflow: hidden; background: var(--cream); border: 1px solid var(--line); }
.r-guide-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--dur-img) var(--ease-silk); }
.r-guide-card__body { display: block; padding-top: 14px; border-top: 1px solid var(--line-strong); }
.r-guide-card__meta { font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); }
.r-guide-card__title { display: block; margin: 10px 0 8px; font-family: var(--serif); font-size: clamp(1.3rem, 1.1rem + .7vw, 1.8rem); font-weight: 400; line-height: 1.1; letter-spacing: var(--tracking-tight); text-wrap: balance; transition: color var(--dur-fast) ease; }
.r-guide-card__excerpt { display: block; margin-bottom: 12px; font-size: 14px; line-height: 1.55; color: var(--muted); }
.r-guide-card__cta { font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne-light); }
.r-guide-teaser { display: grid; grid-template-columns: 1fr .8fr; gap: clamp(30px, 5vw, 70px); align-items: center; }
.r-guide-teaser__img { margin: 0; aspect-ratio: 4 / 3; overflow: hidden; }
.r-guide-teaser__img img { width: 100%; height: 100%; object-fit: cover; }

/* ---------- la lettre ---------- */
.r-news { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; align-items: end; padding: 46px 0; border-top: 1px solid var(--line-strong); }
.r-news h2 { font-size: clamp(1.8rem, 1.4rem + 1.6vw, 2.6rem); }
.r-news__form { display: flex; gap: 10px; padding-bottom: 6px; border-bottom: 1px solid var(--champagne); transition: border-color var(--dur-fast) ease; }
.r-news__form input { flex: 1; min-width: 0; padding: 10px 0; border: 0; background: transparent; outline: none; font-size: 16px; color: var(--ink); }
.r-news__consent { grid-column: 1 / -1; margin-top: 10px; font-size: 12px; color: var(--muted); }
.r-news__msg { font-size: 13px; color: var(--champagne-light); }

/* ---------- pied de page : une seule définition ---------- */
.r-footer { background: var(--brown); color: var(--ink-soft); border-top: 1px solid var(--champagne); padding: 0 0 26px; }
.r-footer__claim { display: flex; align-items: baseline; justify-content: space-between; gap: 40px; padding-top: clamp(40px, 5vw, 72px); padding-bottom: clamp(26px, 3vw, 40px); border-bottom: 1px solid rgb(201 161 91 / .22); }
.r-footer__claim p { max-width: 18ch; margin: 0; font-family: var(--serif); font-weight: 400; font-size: clamp(28px, 3.4vw, 52px); line-height: 1.02; letter-spacing: -.03em; color: var(--cream); }
.r-footer__claim span { max-width: 30ch; text-align: right; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--on-dark-muted); }
.r-footer__grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr 1fr; gap: clamp(26px, 3vw, 54px); padding-top: 54px; padding-bottom: 46px; }
.r-footer__brand p { max-width: 38ch; font-size: 13.5px; line-height: 1.65; color: var(--on-dark-muted); text-wrap: pretty; }
.r-footer__col h2 { margin: 0 0 18px; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); }
.r-footer__col:nth-child(2) { display: grid; grid-template-columns: 1fr 1fr; column-gap: 18px; align-content: start; }
.r-footer__col:nth-child(2) h2 { grid-column: 1 / -1; }
.r-footer__col:nth-child(2) a { padding: 4px 0; font-size: 12.5px; }
.r-footer__bottom { margin-top: 44px; padding: 18px var(--gut) 24px; border-top: 1px solid rgb(201 161 91 / .22); font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--on-dark-muted); }
.r-footer .r-hint, .r-footer .r-news__consent, .r-footer .r-news p, .r-footer .r-news__msg { color: var(--on-dark-muted); }
.r-footer .r-news { grid-template-columns: 1.1fr 1fr; gap: 40px; padding: clamp(38px, 4vw, 58px) 0; border-top: 1px solid rgb(201 161 91 / .22); border-bottom: 0; }
.r-footer .r-news h2 { color: var(--cream); }
.r-footer .r-news input { color: var(--cream); }
.r-footer .r-news__form { border-bottom-color: var(--champagne); }
.r-footer .r-news__form input::placeholder { color: var(--on-dark-muted); opacity: 1; }
.r-footer .r-btn { border-color: var(--champagne); color: var(--cream); }

/* ---------- têtes de page ---------- */
.r-page-head { padding: 30px 0 34px; border-bottom: 1px solid var(--line); }
.r-page-head__row { display: flex; justify-content: space-between; align-items: flex-end; gap: 30px; margin-top: 26px; }
.r-page-head h1 { font-size: clamp(2.4rem, 1.6rem + 4vw, 5rem); }
.r-page-head .r-lead { margin-top: 18px; }
.r-page-head__count { align-self: end; white-space: nowrap; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
/* tête sur scène brune, lumière de fin de soirée */
.r-page-head--stage { padding: 44px 0 52px; background: var(--brown); color: var(--cream); border-bottom: 1px solid var(--line); }
.r-page-head--stage::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: var(--glow-champagne); }
.r-page-head--stage .r-wrap { position: relative; z-index: 1; }
.r-page-head--stage .r-display { color: var(--cream); }
.r-page-head--stage .r-label { color: var(--champagne); }
.r-page-head--stage .r-lead, .r-page-head--stage .r-page-head__count, .r-page-head--stage .r-crumbs ol, .r-page-head--stage .r-crumbs a { color: var(--on-dark-muted); }
.r-page-head--stage .r-crumbs [aria-current] { color: var(--cream); }
.r-page-head--stage .r-crumbs li + li::before { color: var(--champagne); }

/* ---------- catalogue ---------- */
.r-page--shop .r-page-head--stage { padding: 20px 0 24px; }
.r-page--shop .r-page-head .r-display { font-size: clamp(2.1rem, 1.5rem + 2.2vw, 3.6rem); margin-top: 8px; }
.r-page--shop .r-page-head .r-lead { margin-top: 10px; max-width: 62ch; }
.r-page--shop .r-page-head__row { margin-top: 10px; }
.r-page--shop .r-page-head .r-crumbs { margin-bottom: 0; }
.r-shop { display: grid; grid-template-columns: 250px 1fr; gap: 40px; max-width: var(--wrap); margin: 0 auto; padding: clamp(26px, 3.4vw, 44px) var(--gut) clamp(60px, 7vw, 100px); }
.r-filters { position: sticky; top: calc(var(--header-h) + var(--s5)); align-self: start; }
.r-filters__head { display: flex; justify-content: space-between; align-items: center; padding-bottom: 12px; border-bottom: 1px solid var(--champagne); }
.r-filters__head h2 { margin: 0; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); }
.r-filter { padding: 4px 0 10px; border-bottom: 1px solid var(--line); }
.r-filter summary { display: flex; justify-content: space-between; align-items: center; padding: 12px 0 8px; font-family: var(--serif); font-size: 20px; list-style: none; cursor: pointer; color: var(--ink); }
.r-filter summary::-webkit-details-marker { display: none; }
.r-filter summary::after { content: "+"; font-family: var(--mono); font-size: 15px; color: var(--champagne); }
.r-filter[open] summary::after { content: "\2212"; }
.r-filter ul { display: block; margin: 0; padding: 0; list-style: none; }
.r-filter li { width: 100%; }
.r-filters li { border-bottom: 1px solid var(--line); }
.r-chip { display: inline-flex; align-items: center; gap: 7px; min-width: var(--tap); min-height: var(--tap); padding: 8px 12px; border: 1px solid var(--line-strong); background: none; color: var(--ink-soft); font-family: var(--mono); font-size: var(--step--2); letter-spacing: .06em; text-transform: uppercase; cursor: pointer; transition: background-color var(--dur-fast) ease, color var(--dur-fast) ease, border-color var(--dur-fast) ease; }
.r-chip span { font-family: var(--mono); font-size: var(--step--2); color: var(--muted); }
.r-chip--on, .r-chip.is-active { background: var(--cream); color: var(--espresso); border-color: var(--cream); }
.r-chip--on span { color: var(--bordeaux); }
.r-filters .r-chip { display: flex; justify-content: space-between; gap: 12px; width: 100%; padding: 7px 0; border: 0; background: none; font-family: var(--sans); font-size: 13px; letter-spacing: 0; text-transform: none; color: var(--ink-soft); }
.r-filters .r-chip span { letter-spacing: .08em; color: var(--muted); }
.r-filters .r-chip--on, .r-filters .r-chip--on span { color: var(--champagne); }
.r-filters .r-swatch { width: 10px; height: 10px; margin-right: 8px; }
.r-shop__bar { display: flex; flex-wrap: nowrap; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 26px; padding-bottom: 13px; border-bottom: 1px solid var(--line); font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
.r-shop__bar > span { flex: none; white-space: nowrap; }
.r-sort { display: flex; flex-wrap: nowrap; gap: 22px; min-width: 0; overflow-x: auto; scrollbar-width: none; }
.r-sort::-webkit-scrollbar { display: none; }
.r-sort__item { flex: none; color: var(--muted); }
.r-sort__item.is-active { color: var(--ink); border-bottom: 1px solid var(--champagne); }
.r-pager { display: flex; gap: 8px; justify-content: center; padding: 50px 0 0; font-family: var(--mono); font-size: 12px; }
.r-pager a, .r-pager span { display: grid; place-items: center; min-width: var(--tap); min-height: var(--tap); border: 1px solid var(--line-strong); }
.r-pager a.is-active { background: var(--cream); color: var(--espresso); border-color: var(--cream); }
.r-empty { padding: 60px 0; font-family: var(--serif); font-size: 26px; }

/* ---------- page famille ---------- */
.r-famhero { padding-top: 8px; background: var(--brown); color: var(--cream); border-bottom: 1px solid var(--line); }
.r-famhero .r-crumbs a, .r-famhero .r-crumbs [aria-current="page"] { color: var(--on-dark-muted); }
.r-famhero .r-crumbs [aria-current="page"] { color: var(--cream); }
.r-famhero__grid { display: grid; grid-template-columns: 1.02fr 1fr; gap: clamp(30px, 5vw, 78px); align-items: start; padding-bottom: clamp(48px, 6vw, 84px); }
.r-famhero__copy { padding-top: 10px; }
.r-famhero__eyebrow { color: var(--champagne); }
.r-famhero__title { margin: 14px 0 18px; font-family: var(--serif); font-weight: 400; font-size: clamp(58px, 7vw, 106px); line-height: .92; letter-spacing: -.04em; text-transform: capitalize; text-wrap: balance; color: var(--cream); }
.r-famhero__lead { max-width: 40ch; font-size: 19px; line-height: 1.5; color: var(--on-dark-muted); }
.r-famhero__answer { max-width: 52ch; margin: 20px 0 0; padding-left: 13px; border-left: 1px solid var(--champagne); font-size: 12.5px; line-height: 1.65; color: var(--on-dark-muted); }
.r-famhero__answer::first-letter { text-transform: uppercase; }
.r-famhero__actions { display: flex; flex-wrap: wrap; gap: 12px; }
.r-famhero__media { position: relative; margin: 0; aspect-ratio: 4 / 5; overflow: hidden; background: var(--espresso); border: 1px solid var(--line-strong); }
.r-famhero__media img { width: 100%; height: 100%; object-fit: cover; }
.r-famhero__media figcaption { position: absolute; left: 0; right: 0; bottom: 0; display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 18px; background: rgb(23 17 14 / .72); border-top: 1px solid var(--line-strong); }
.r-famhero__media figcaption span { font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); }
.r-famhero__media figcaption strong { font-family: var(--serif); font-weight: 400; font-size: 14px; color: var(--cream); }
.r-collection { padding-bottom: clamp(60px, 7vw, 100px); background: var(--paper); border-top: 0; }
.r-collection .r-products { padding-top: 34px; }
.r-collection__empty { padding: 60px 0; text-align: center; font-family: var(--serif); font-size: 22px; color: var(--muted); }
.r-collection__layout { display: grid; grid-template-columns: 236px minmax(0, 1fr); gap: clamp(30px, 4vw, 68px); padding-top: clamp(30px, 4vw, 52px); }
.r-collection__aside { position: sticky; top: calc(var(--header-h) + var(--s5)); align-self: start; }
.r-collection__filterhead { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding-bottom: 12px; border-bottom: 1px solid var(--line-strong); }
.r-collection__toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: clamp(22px, 2.6vw, 34px); padding-bottom: 14px; border-bottom: 1px solid var(--line-strong); }
.r-collection__toolbar .r-label { margin: 0; color: var(--muted); }
.r-filter-reset { padding: 0; border: 0; background: none; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.r-facet { padding: 18px 0 20px; border-bottom: 1px solid var(--line); }
.r-facet h2, .r-facet h3 { margin: 0 0 10px; font-family: var(--mono); font-size: var(--step--2); font-weight: 400; letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); }
.r-facet__row { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; min-height: var(--tap); padding: 7px 0; border: 0; background: none; color: var(--ink-soft); font-family: var(--sans); font-size: 13.5px; text-align: left; cursor: pointer; }
.r-facet__row em { font-style: normal; font-family: var(--mono); font-size: var(--step--2); letter-spacing: .08em; color: var(--muted); }
.r-facet__row.is-active, .r-facet__row.is-active em { color: var(--champagne-light); }
.r-facet__dot { flex: none; width: 12px; height: 12px; border-radius: 50%; background: var(--c); box-shadow: inset 0 0 0 1px rgb(255 255 255 / .3); }
.r-facet__row--color span:nth-child(2) { flex: 1; margin-left: 10px; }
.r-filter-toggle { display: none; min-height: var(--tap); padding: 10px 16px; border: 1px solid var(--line-strong); background: none; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; cursor: pointer; }

/* ---------- fiche produit ---------- */
.r-product { padding: 30px 0 0; }
.r-product__grid { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); gap: clamp(28px, 4.2vw, 64px); align-items: start; padding: 24px 0 54px; }
.r-product__media { position: sticky; top: calc(var(--header-h) + var(--s5)); }
/* la galerie est composée sur crème (studio, détail) ou brun (mise en situation) : plein cadre */
.r-product__stage { position: relative; aspect-ratio: 4 / 5; overflow: hidden; border: 1px solid var(--line-strong); background: radial-gradient(46% 34% at 50% 40%, color-mix(in srgb, var(--finish, var(--champagne)) 17%, transparent) 0%, rgb(31 23 19 / 0) 74%), radial-gradient(52% 40% at 50% 38%, var(--brown-2) 0%, rgb(31 23 19 / 0) 74%), linear-gradient(170deg, var(--brown) 0%, var(--espresso) 84%); }
.r-product__stage::before { content: ""; position: absolute; left: 16%; right: 16%; bottom: 7%; height: 9%; border-radius: 50%; background: radial-gradient(50% 50% at 50% 50%, rgb(0 0 0 / .66), rgb(0 0 0 / 0) 72%); filter: blur(8px); pointer-events: none; }
.r-product__stage img { position: relative; z-index: 1; width: 100%; height: 100%; padding: 12%; object-fit: contain; filter: drop-shadow(0 20px 28px rgb(0 0 0 / .8)) brightness(1.04) contrast(1.02); transition: opacity var(--dur) var(--ease-out); }
body.r-cards--a .r-product__stage { background: radial-gradient(58% 44% at 50% 36%, #FFFDF8 0%, rgb(255 253 248 / 0) 72%), linear-gradient(168deg, #FBF7F0 0%, #F4EBDC 58%, #EADFCB 100%); border-color: rgb(201 161 91 / .34); }
body.r-cards--a .r-product__stage::before { background: radial-gradient(50% 50% at 50% 50%, rgb(42 33 29 / .26), rgb(42 33 29 / 0) 72%); }
body.r-cards--a .r-product__stage img { filter: drop-shadow(0 18px 20px rgb(23 17 14 / .3)) drop-shadow(0 2px 3px rgb(23 17 14 / .2)); }
.r-product__stage--photo { background: var(--brown); }
.r-product__stage.r-product__stage--studio img, .r-product__stage.r-product__stage--detail img { object-fit: cover; padding: 0; mix-blend-mode: normal; }
.r-product__thumbs { display: flex; gap: 8px; margin-top: 8px; }
.r-product__thumbs button { width: 86px; height: 108px; padding: 0; overflow: hidden; border: 1px solid var(--line); background: var(--cream); cursor: pointer; }
.r-product__thumbs button.is-active { border-color: var(--champagne); }
.r-product__thumbs img { width: 100%; height: 100%; object-fit: cover; }
.r-product__info { padding-top: 6px; scroll-margin-top: calc(var(--header-h) + var(--s7)); }
.r-product__family { font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); }
.r-product__family a { display: inline-flex; align-items: center; min-height: var(--tap); min-width: var(--tap); margin-block: -14px; }
.r-product__title { margin: 10px 0 16px; font-family: var(--serif); font-size: clamp(2.1rem, 1.6rem + 2vw, 3.2rem); font-weight: 400; line-height: 1.04; letter-spacing: -.035em; text-wrap: balance; }
.r-product__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
.r-dot { width: 3px; height: 3px; border-radius: 50%; background: var(--champagne); }
.r-product__price { margin: 22px 0 6px; font-family: var(--serif); font-size: 30px; font-weight: 400; }
.r-product__tax { margin-bottom: 26px; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
.r-buy { margin-top: 22px; padding-top: 24px; border-top: 1px solid var(--line); }
.r-buy__options { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin: 0 0 18px; padding: 0; border: 0; }
.r-buy__options legend, .r-buy__label { display: block; margin-bottom: 10px; padding: 0; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
.r-buy__label { margin-top: 24px; }
.r-radio { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 13px 16px; border: 1px solid var(--line-strong); font-family: var(--sans); font-size: 14px; letter-spacing: 0; text-transform: none; cursor: pointer; }
.r-radio input { position: absolute; opacity: 0; pointer-events: none; }
.r-radio.is-active, .r-radio:has(input:checked) { border-color: var(--champagne); background: var(--paper-3); }
.r-radio__price { margin-left: auto; display: grid; justify-items: end; gap: 2px; font-family: var(--mono); font-size: var(--step--1); line-height: 1.25; text-align: right; }
.r-radio__amount { display: block; white-space: nowrap; font-size: 12.5px; }
.r-radio__price small { display: block; max-width: 16ch; font-size: 11px; letter-spacing: .03em; line-height: 1.25; color: var(--muted); white-space: normal; }
.r-radio__label small { display: block; margin-top: 3px; font-family: var(--mono); font-size: var(--step--2); letter-spacing: .06em; color: var(--champagne); }
.r-buy__row { display: flex; gap: 10px; align-items: stretch; }
.r-qty { display: inline-flex; align-items: center; width: max-content; border: 1px solid var(--field-line); background: var(--paper-2); }
.r-qty button { width: var(--tap); height: 48px; border: 0; background: none; font-size: 19px; cursor: pointer; }
.r-qty > span { min-width: var(--tap); text-align: center; font-family: var(--mono); font-size: 14px; }
.r-qty input { width: var(--tap); height: 48px; border: 0; background: transparent; text-align: center; font-family: var(--mono); font-size: 14px; }
.r-qty input:focus, .r-qty input:focus-visible { outline: 2px solid var(--champagne); outline-offset: -2px; }
.r-swatches { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 22px; }
.r-swatch-btn { position: relative; width: var(--tap); height: var(--tap); padding: 0; border: 1px solid rgb(255 255 255 / .24); border-radius: 50%; cursor: pointer; transition: border-color var(--dur-fast) ease; }
.r-swatch-btn.is-active::after { content: ""; position: absolute; inset: -5px; border: 1px solid var(--champagne); border-radius: 50%; }
.r-widths { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 22px; }
.r-width-btn { display: inline-flex; align-items: center; justify-content: center; min-width: var(--tap); min-height: var(--tap); padding: 9px 13px; border: 1px solid var(--line-strong); background: transparent; font-family: var(--mono); font-size: 11.5px; cursor: pointer; transition: background-color var(--dur-fast) ease, border-color var(--dur-fast) ease, color var(--dur-fast) ease; }
.r-width-btn.is-active { background: var(--cream); color: var(--espresso); border-color: var(--cream); }
.r-reassure { display: grid; gap: 9px; margin: 26px 0 0; padding: 20px 0 0; list-style: none; border-top: 1px solid var(--line); font-size: 13px; color: var(--muted); }
.r-reassure li { display: flex; gap: 10px; align-items: flex-start; }
.r-reassure li::before { content: ""; flex: none; width: 12px; height: 1px; margin-top: .75em; background: var(--champagne); }
.r-answer { max-width: none; margin: 30px 0 0; padding: 16px 0 0; border: 0; border-top: 1px solid var(--line); background: transparent; font-size: 13px; line-height: 1.6; color: var(--muted); text-wrap: pretty; }
.r-answer::before { content: "EN BREF"; display: block; margin-bottom: 7px; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); color: var(--champagne); }
.r-product__specs { border-top: 1px solid var(--line); padding-top: var(--s4); }
.r-product__specs-list { display: grid; grid-template-columns: max-content 1fr; margin: 0 0 18px; }
.r-product__specs-list div { display: contents; }
.r-product__specs-list dt, .r-product__specs-list dd { margin: 0; padding: 10px 0; border-bottom: 1px dotted var(--line-strong); }
.r-product__specs-list dt { padding-right: 24px; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
.r-product__specs-list dd { font-size: 14px; }
.r-accordion { margin-top: 26px; border-top: 1px solid var(--line); }
.r-accordion details { border-bottom: 1px solid var(--line); }
.r-accordion summary { display: flex; justify-content: space-between; align-items: center; min-height: var(--tap); padding: 16px 0; font-size: 14.5px; list-style: none; cursor: pointer; }
.r-accordion summary::-webkit-details-marker { display: none; }
.r-accordion summary::after { content: "+"; font-family: var(--mono); color: var(--champagne); }
.r-accordion details[open] summary::after { content: "\2212"; }
.r-accordion p { margin: 0 0 18px; font-size: 14px; color: var(--muted); }
.r-prose { max-width: 68ch; }
.r-prose p { margin: 0 0 16px; }
.r-prose h2 { margin: 28px 0 10px; font-size: 28px; }
.r-prose blockquote { margin: 24px 0; padding-left: 20px; border-left: 1px solid var(--champagne); font-family: var(--serif); font-size: 24px; }
.r-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 18px 0 0; padding: 0; list-style: none; }

/* ---------- blocs secondaires ---------- */
.r-split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(30px, 5vw, 80px); align-items: center; }
.r-products--2 { grid-template-columns: repeat(2, 1fr); }
.r-two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 50px; }
.r-numbers { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; margin: 0; }
.r-numbers dt { font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
.r-numbers dd { margin: 4px 0 0; font-family: var(--serif); font-size: 40px; }
.r-values { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 30px; }
.r-value { padding-top: 16px; border-top: 1px solid var(--line-strong); }
.r-value h3 { margin: 0 0 8px; font-family: var(--serif); font-weight: 400; font-size: 24px; }
.r-quote { margin: 0; font-family: var(--serif); font-size: clamp(1.8rem, 1.5rem + 1.8vw, 3rem); line-height: 1.15; }
.r-quote cite { display: block; margin-top: 20px; font-family: var(--mono); font-size: var(--step--2); font-style: normal; letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); }
.r-faq { max-width: 860px; }
.r-faq details { border-bottom: 1px solid var(--line); }
.r-faq summary { padding: 18px 0; font-family: var(--serif); font-size: 22px; list-style: none; cursor: pointer; }
.r-faq summary::-webkit-details-marker { display: none; }
.r-faq p { max-width: 68ch; color: var(--muted); }
.r-prose--legal { max-width: 780px; }
.r-legal { display: grid; grid-template-columns: 240px 1fr; gap: 50px; }
.r-legal__nav { position: sticky; top: calc(var(--header-h) + var(--s5)); align-self: start; display: flex; flex-direction: column; gap: 10px; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; }
.r-legal__nav a { display: flex; align-items: center; min-height: var(--tap); color: var(--muted); }
.r-legal__nav a.is-active { color: var(--champagne); }
.r-delivery { display: grid; grid-template-columns: 1fr 1fr; gap: 30px 50px; }
.r-delivery__block { padding-top: 16px; border-top: 1px solid var(--line-strong); }
.r-contact { display: grid; grid-template-columns: 1.4fr 1fr; gap: 60px; }
.r-form { display: grid; gap: 16px; }
.r-form label { display: flex; flex-direction: column; gap: 7px; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
.r-form input, .r-form select, .r-form textarea { padding: 13px 14px; border: 1px solid var(--field-line); background: var(--paper-2); font-family: var(--sans); font-size: 15px; letter-spacing: 0; text-transform: none; color: var(--ink); }
.r-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.r-form__actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 18px; }
.r-steps { display: flex; gap: 20px; margin: 26px 0 0; padding: 0; list-style: none; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
.r-steps li { display: flex; gap: 8px; align-items: center; font-size: var(--step--2); color: var(--muted); }
.r-steps li::before { content: ""; width: 22px; height: 1px; border: 0; border-radius: 0; background: var(--line-strong); }
.r-steps li.is-on { color: var(--champagne); }
.r-checkout { display: grid; grid-template-columns: 1.4fr .8fr; gap: 60px; }
.r-checkout__summary { position: sticky; top: calc(var(--header-h) + var(--s5)); align-self: start; padding: 26px; background: var(--paper-2); border: 1px solid var(--line); }
.r-sum { margin: 18px 0 0; }
.r-sum div { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid var(--line); font-size: 14px; }
.r-sum dt { color: var(--muted); }
.r-sum dd { margin: 0; font-family: var(--mono); font-size: 13px; }
.r-sum .r-sum--total { margin-top: 6px; padding-top: 14px; border-top: 1px solid var(--champagne); border-bottom: 0; font-family: var(--serif); font-size: 22px; }
.r-sum--total dt { font-family: var(--serif); font-size: 22px; color: var(--ink); }
.r-sum--total dd { font-family: var(--serif); font-size: 22px; }
.r-mini { display: flex; justify-content: space-between; gap: 14px; padding: 8px 0; border-bottom: 1px solid var(--line); font-size: 13px; }
.r-cart { display: grid; grid-template-columns: 1.5fr .8fr; gap: 60px; }
.r-cart__aside { position: sticky; top: calc(var(--header-h) + var(--s5)); align-self: start; padding: 26px; background: var(--paper-2); border: 1px solid var(--line); }
.r-cart.is-empty .r-cart__aside, .is-empty .r-cart__aside { display: none; }
[data-cart-lines]:has(.r-cart__loading) { min-height: 240px; }
.r-cart-line { display: grid; grid-template-columns: 120px minmax(0, 1fr) auto; gap: 18px; padding: 20px 0; border-bottom: 1px solid var(--line); }
.r-cart-line__media { min-height: 110px; aspect-ratio: 4 / 5; overflow: hidden; background: var(--cream); }
.r-cart-line__media img { width: 100%; height: 100%; object-fit: contain; padding: 6%; mix-blend-mode: multiply; }
.r-cart-line__media--empty { display: block; background: var(--paper-3); }
.r-cart-line__name { display: block; font-family: var(--serif); font-size: 22px; }
.r-cart-line__opt { margin: 3px 0 12px; font-size: 13px; color: var(--muted); }
.r-cart-line__price { font-family: var(--mono); font-size: 13px; text-align: right; }
.r-cart-line__x { display: grid; place-items: center; width: var(--tap); height: var(--tap); border: 0; background: none; font-size: 18px; color: var(--muted); cursor: pointer; }
.r-empty-cart { padding: 40px 0; }
.r-shipmsg { font-size: 12px; color: var(--success); }
.r-check { display: flex; gap: 10px; align-items: flex-start; font-size: 13px; letter-spacing: 0; text-transform: none; color: var(--muted); }
.r-tips { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.r-tip { padding-top: 14px; border-top: 1px solid var(--line-strong); }
.r-tip span { font-family: var(--mono); font-size: var(--step--2); color: var(--champagne); }
.r-tip p { margin: 8px 0 0; font-size: 14px; color: var(--muted); }
.r-occasion-list { display: grid; gap: 60px; }
.r-occasion-row { display: grid; grid-template-columns: 320px 1fr; gap: 40px; align-items: center; }
.r-occasion-row__cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.r-occasion h2 { font-size: 40px; }
.r-checklist { display: grid; gap: 10px; margin: 20px 0 0; padding: 0; list-style: none; counter-reset: step; }
.r-checklist li { position: relative; padding-left: 34px; font-size: 14px; color: var(--muted); counter-increment: step; }
.r-checklist li::before { content: counter(step, decimal-leading-zero); position: absolute; left: 0; top: .2em; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); color: var(--champagne); }
.r-timeline { margin: 24px 0; padding: 0; list-style: none; }
.r-track-step { display: flex; gap: 14px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.r-track-step strong { display: block; font-size: 14px; }
.r-track-step span { font-family: var(--mono); font-size: var(--step--2); color: var(--muted); }
.r-track-step__dot { flex: none; width: 8px; height: 8px; margin-top: 7px; border-radius: 50%; background: var(--champagne); }
.r-article__body { max-width: 68ch; font-size: 18px; }
.r-article__body h2 { margin-top: 40px; }

/* ---------- tiroir, recherche, toast, cookies ---------- */
.r-drawer { position: fixed; top: 0; right: 0; bottom: 0; z-index: var(--z-drawer); display: flex; flex-direction: column; width: min(460px, 94vw); background: var(--paper-2); border-left: 1px solid var(--line); transform: translateX(102%); transition: transform var(--dur) var(--ease-out); }
.r-drawer.is-open { transform: none; }
.r-drawer__head { display: flex; justify-content: space-between; align-items: center; padding: 20px 24px; border-bottom: 1px solid var(--line); }
.r-drawer__head h2 { margin: 0; font-family: var(--serif); font-weight: 400; font-size: 24px; }
.r-drawer__head button { display: inline-grid; place-items: center; min-width: var(--tap); min-height: var(--tap); background: none; border: 0; font-size: 26px; cursor: pointer; }
.r-drawer__body { flex: 1; overflow: auto; padding: 8px 24px; }
.r-drawer__foot { display: grid; gap: 10px; padding: 20px 24px 26px; border-top: 1px solid var(--line); }
.r-drawer__sum { display: flex; justify-content: space-between; font-family: var(--mono); font-size: 13px; }
.r-line { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; grid-template-areas: "media info price" "media info x"; gap: 4px 12px; align-items: start; padding: 14px 0; border-bottom: 1px solid var(--line); }
.r-line:not(:has(> img)) { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "info price" "info x"; }
.r-line > img { grid-area: media; width: 64px; height: 80px; padding: 0; object-fit: cover; background: var(--cream); mix-blend-mode: normal; }
.r-line__info { grid-area: info; min-width: 0; }
.r-line__info a { display: block; font-family: var(--serif); font-size: 14px; font-weight: 400; }
.r-line__info span { font-size: 12px; color: var(--muted); }
.r-line__qty { display: inline-flex; align-items: center; gap: 8px; margin-top: 8px; }
.r-line__info .r-line__qty button { min-width: var(--tap); min-height: var(--tap); border: 1px solid var(--line-strong); background: none; cursor: pointer; }
.r-line__price { grid-area: price; font-family: var(--mono); font-size: 12.5px; text-align: right; }
.r-line__x { grid-area: x; align-self: end; justify-self: end; display: grid; place-items: center; min-width: var(--tap); min-height: var(--tap); border: 0; background: none; color: var(--muted); cursor: pointer; }
.r-search { position: fixed; inset: 0; z-index: calc(var(--z-drawer) + 10); display: grid; place-items: start center; padding: 8vh 20px 20px; background: rgb(10 7 6 / .72); }
.r-search[hidden] { display: none; }
.r-search__panel { position: relative; display: grid; width: min(760px, 96vw); padding: 12px 26px 26px; background: var(--paper-2); border: 1px solid var(--line-strong); box-shadow: var(--shadow-sheet); }
.r-search__close { justify-self: end; display: grid; place-items: center; min-width: var(--tap); min-height: var(--tap); margin-right: -14px; border: 0; background: none; font-size: 26px; color: var(--ink); cursor: pointer; }
.r-search__form { display: flex; gap: 10px; padding-bottom: 10px; border-bottom: 1px solid var(--champagne); }
.r-search__form input { flex: 1; min-width: 0; border: 0; background: transparent; font-family: var(--serif); font-size: 26px; }
.r-search__hint { font-size: 12px; color: var(--muted); }
.r-search__results { display: grid; gap: 2px; max-height: 52vh; margin-top: 12px; overflow: auto; }
.r-search-hit { display: flex; gap: 12px; align-items: center; padding: 8px; }
.r-search-hit img { width: 46px; height: 58px; object-fit: contain; background: var(--cream); }
.r-search-hit span { display: flex; flex-direction: column; }
.r-search-hit em { font-family: var(--mono); font-size: var(--step--2); font-style: normal; color: var(--muted); }
.r-toast { position: fixed; left: 50%; bottom: 30px; z-index: calc(var(--z-drawer) - 2); padding: 13px 22px; background: var(--cream); color: var(--espresso); font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; opacity: 0; pointer-events: none; transform: translate(-50%, 20px); transition: opacity var(--dur) var(--ease-out), transform var(--dur) var(--ease-out); }
.r-toast.is-on { opacity: 1; transform: translate(-50%, 0); }
.r-cookie { position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--z-sticky); display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; gap: var(--s3) var(--s5); padding: 12px var(--gut) calc(12px + env(safe-area-inset-bottom)); background: var(--paper-2); border-top: 1px solid var(--champagne); box-shadow: 0 -18px 40px -30px rgb(0 0 0 / .9); }
.r-cookie p { flex: 1 1 320px; margin: 0; font-size: 12px; color: var(--muted); }
.r-cookie__actions { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s3); flex: 1 0 260px; max-width: 360px; }
.r-cookie .r-btn { min-height: var(--tap); padding: 0 18px; font-size: var(--step--2); }

/* ---------- héros de l'accueil : effervescence ---------- */
.r-hero2 { position: relative; display: flex; align-items: center; min-height: clamp(620px, calc(100svh - var(--header-h) - var(--strip-h)), 860px); overflow: clip; background: var(--espresso); color: var(--cream); border-bottom: 1px solid var(--line); }
.r-hero2__marquee, .r-hero2__silk, .r-hero2__wave, .r-hero2__scroll, .r-hero2__grain { display: none; }
/* parallaxe 0 à 8 % : --hero-p écrit par home.js, absent en mouvement réduit */
.r-hero2__bg { position: absolute; inset: 0; z-index: 0; transform: translate3d(0, calc(var(--hero-p, 0) * 8%), 0); }
.r-hero2__bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, var(--espresso) 0%, rgb(23 17 14 / .96) 34%, rgb(23 17 14 / .55) 62%, rgb(23 17 14 / .2) 100%), linear-gradient(0deg, rgb(23 17 14 / .96) 0%, transparent 42%); }
.r-hero2__plate { position: absolute; margin: 0; overflow: hidden; }
.r-hero2__plate img { display: block; width: 100%; max-width: 100%; height: 100%; object-fit: cover; }
/* Un seul produit en scène : détouré, sans cadre, ombre portée sur le halo.
   Un second objet plus petit, en profondeur, flou léger. */
.r-hero2__product { position: absolute; z-index: 3; right: 13%; bottom: 3%; width: clamp(210px, 24vw, 360px); aspect-ratio: 4 / 5; margin: 0; pointer-events: none; }
.r-hero2__product img { width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 38px 46px rgb(0 0 0 / .72)) drop-shadow(0 4px 6px rgb(0 0 0 / .45)); }
.r-hero2__depth { position: absolute; z-index: 2; right: 34%; top: 7%; width: clamp(64px, 7vw, 110px); aspect-ratio: 4 / 5; margin: 0; opacity: .45; filter: blur(1.6px); pointer-events: none; }
.r-hero2__depth img { width: 100%; height: 100%; object-fit: contain; }
.r-hero2__depth + .r-hero2__depth { display: none; }
.r-hero2__canvas { position: absolute; z-index: 1; top: 0; left: 30%; width: 50%; height: 100%; opacity: 0; transition: opacity 1.1s var(--ease-silk); pointer-events: none; }
.r-hero2.is-gl .r-hero2__canvas { opacity: 1; }
/* version statique soignée : visible sans WebGL, masquée quand la toile prend le relais */
.r-hero2__fallback { position: absolute; z-index: 1; top: 50%; left: 42%; width: min(520px, 42%); transform: translateY(-50%); color: var(--champagne); }
.r-hero2.is-gl .r-hero2__fallback { display: none; }
.r-hero2__fallback svg { width: 100%; height: auto; }
.r-hero2__fallback .r-hero2__bubble { transform-origin: center; animation: r-bubble 7s var(--ease-silk) both; }
.r-hero2__fallback .r-hero2__bubble--2 { animation-delay: 1.1s; }
.r-hero2__fallback .r-hero2__bubble--3 { animation-delay: 2.2s; }
.r-hero2__fallback .r-hero2__bubble--4 { animation-delay: 3.4s; }
@keyframes r-bubble { from { opacity: 0; transform: translateY(26px) scale(.7); } 30% { opacity: .9; } to { opacity: .55; transform: translateY(-10px) scale(1); } }
.r-hero2__glow { position: absolute; inset: 0; z-index: 0; pointer-events: none; background: radial-gradient(46% 46% at 74% 28%, rgb(201 161 91 / .16), transparent 72%), radial-gradient(60% 60% at 16% 90%, rgb(110 34 48 / .16), transparent 70%); }
.r-hero2__inner { position: relative; z-index: 4; display: grid; grid-template-columns: minmax(0, 1fr) 120px; gap: 40px; width: 100%; padding-block: 76px; }
.r-hero2__copy { max-width: 840px; }
.r-hero2__kicker { display: flex; align-items: center; gap: 14px; margin: 0 0 22px; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); }
.r-hero2__rule { display: inline-block; width: 46px; height: 1px; background: var(--champagne); }
.r-hero2__claim { margin: 0 0 22px; font-family: var(--serif); font-style: italic; font-size: clamp(1.25rem, 1rem + 1vw, 1.9rem); font-weight: 300; line-height: 1.2; letter-spacing: -.01em; color: var(--champagne-light); }
.r-hero2__title { margin: 0; font-family: var(--serif); font-weight: 400; font-size: clamp(50px, 6.6vw, 102px); line-height: .94; letter-spacing: -.038em; color: var(--cream); text-wrap: balance; }
.r-hero2__title span { display: block; opacity: 0; transform: translateY(22px); animation: h2line var(--dur-slow) var(--ease-silk) forwards; }
.r-hero2__title span:nth-child(2) { animation-delay: .1s; }
.r-hero2__title span:nth-child(3) { animation-delay: .2s; }
@keyframes h2line { to { opacity: 1; transform: none; } }
.r-hero2__title em { font-style: italic; color: var(--champagne-light); }
.r-hero2__lead { max-width: 47ch; margin: 28px 0 30px; font-size: 17px; line-height: 1.6; color: var(--on-dark-muted); }
.r-hero2__actions { display: flex; flex-wrap: wrap; gap: 14px; }
.r-hero2__actions .r-btn--ghost { border-color: rgb(228 200 140 / .55); color: var(--cream); }
.r-hero2__stats { display: flex; gap: 38px; margin: 44px 0 0; padding: 22px 0 0; border-top: 1px solid rgb(201 161 91 / .3); }
.r-hero2__stats div { display: flex; flex-direction: column-reverse; }
.r-hero2__stats dt { font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--on-dark-muted); }
.r-hero2__stats dd { margin: 0 0 4px; font-family: var(--serif); font-size: 32px; line-height: 1; color: var(--cream); }
.r-hero2__rail { align-self: end; justify-self: end; display: flex; flex-direction: column; align-items: flex-end; gap: 16px; padding-bottom: 8px; }
.r-hero2__rail-label { writing-mode: vertical-rl; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--on-dark-muted); }
.r-hero2__dots { display: grid; grid-template-columns: repeat(2, 22px); gap: 5px; }
.r-hero2__dot:nth-child(n+13) { display: none; }
.r-hero2__dot { position: relative; display: grid; place-items: center; width: var(--tap); height: var(--tap); margin: -11px; }
.r-hero2__dot::before { content: ""; width: 22px; height: 22px; border-radius: 50%; background: var(--c); box-shadow: inset 0 0 0 1px rgb(255 255 255 / .25); transition: transform var(--dur-fast) var(--ease-out); }
.r-hero2__rail-link { padding-bottom: 3px; border-bottom: 1px solid rgb(201 161 91 / .5); font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--champagne); }
.r-hero2__card { position: absolute; z-index: 5; right: 8%; bottom: 7%; width: 196px; padding: 12px 12px 14px; background: var(--cream); color: var(--espresso); transform: rotate(-2.5deg); box-shadow: var(--shadow-lift); border: 1px solid var(--champagne); transition: transform var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out); }
.r-hero2__card-media { display: block; aspect-ratio: 1 / 1; overflow: hidden; background: var(--cream-2); }
.r-hero2__card-media img { width: 100%; height: 100%; object-fit: cover; }
.r-hero2__card-body { display: block; padding-top: 11px; }
.r-hero2__card-kicker { display: block; margin-bottom: 5px; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--bordeaux); }
.r-hero2__card-body strong { display: block; font-family: var(--serif); font-weight: 400; font-size: 15px; line-height: 1.2; }
.r-hero2__card-price { display: block; margin-top: 6px; font-family: var(--mono); font-size: 11px; }

/* ---------- bandeau de démonstration ---------- */
/* Dans le flux, avant l'en-tête : rendu par le serveur, donc aucun décalage de mise en page. */
.r-demo-banner { margin: 0; padding: 10px var(--gut); background: var(--brown); color: var(--cream); font-family: var(--mono); font-size: var(--step--2); letter-spacing: .08em; line-height: 1.5; text-align: center; border-bottom: 1px solid rgb(201 161 91 / .3); }

/* ---------- survols : pointeur fin seulement ---------- */
@media (hover: hover) and (pointer: fine) {
  .r-link-arrow:hover { color: var(--champagne-light); border-color: var(--champagne-light); }
  .r-btn--primary:hover { background: var(--champagne-light); border-color: var(--champagne-light); }
  .r-btn--ghost:hover { background: var(--cream); border-color: var(--cream); color: var(--espresso); }
  .r-btn--add:hover { background: var(--bordeaux-deep); border-color: var(--bordeaux-deep); }
  .r-footer .r-btn:hover { background: var(--cream); border-color: var(--cream); color: var(--espresso); }
  .r-hero2__actions .r-btn--ghost:hover { background: rgb(247 241 230 / .1); border-color: var(--champagne-light); color: var(--cream); }
  .r-header__link:hover { color: var(--cream); }
  .r-header__link:hover::after { transform: scaleX(1); }
  .r-tool:hover { color: var(--champagne-light); }
  .r-lang__item:hover { background: var(--brown); }
  .r-logo:hover .r-logo__badge { color: var(--champagne-light); }
  .r-mega a:hover { color: var(--cream); }
  .r-fam:hover .r-fam__media img, .r-card:hover .r-card__media img, .r-story:hover img, .r-guide-card:hover .r-guide-card__media img { transform: scale(1.03); }
  .r-fam:hover .r-fam__arrow { opacity: 1; transform: none; }
  .r-card:hover .r-card__media { border-color: var(--champagne); }
  .r-card:hover .r-card__title a, .r-guide-card:hover .r-guide-card__title { color: var(--champagne-light); }
  .r-card__add:hover { background: var(--cream); border-color: var(--cream); color: var(--espresso); }
  .r-rail-nav button:hover { background: var(--cream); color: var(--espresso); border-color: var(--cream); }
  .r-colour-card:hover .r-colour-card__chip { box-shadow: inset 0 0 0 2px var(--champagne-light); }
  .r-other-occ a:hover { background: var(--brown); color: var(--cream); }
  .r-footer__col a:hover { color: var(--cream); }
  .r-chip:hover { background: var(--brown); color: var(--cream); border-color: var(--line-strong); }
  .r-chip:hover span { color: var(--champagne); }
  .r-filters .r-chip:hover { background: none; color: var(--champagne); }
  .r-filters .r-chip:hover span { color: var(--muted); }
  .r-sort__item:hover { color: var(--ink); border-bottom: 1px solid var(--champagne); }
  .r-pager a:hover { border-color: var(--champagne); }
  .r-facet__row:hover { color: var(--champagne); }
  .r-swatch-btn:hover { border-color: var(--champagne); }
  .r-width-btn:hover { background: var(--brown); color: var(--cream); border-color: var(--line-strong); }
  .r-search-hit:hover { background: var(--brown); }
  .r-hero2__dot:hover::before { transform: scale(1.35); }
  .r-hero2__card:hover { transform: rotate(0) translateY(-4px); box-shadow: var(--shadow-sheet); }
}

/* ---------- formulaires : états, sans style en page ---------- */
input:invalid:not(:placeholder-shown), textarea:invalid:not(:placeholder-shown) { border-color: var(--line-strong); box-shadow: none; }
.r-form input.is-invalid, .r-checkout__form input.is-invalid, .r-form textarea.is-invalid { border-color: var(--danger); box-shadow: 0 0 0 3px rgb(217 130 116 / .16); }
.r-figure__legend { display: flex; justify-content: space-between; align-items: baseline; gap: var(--s4); }

/* ---------- filtres de finition : la pastille est la finition ---------- */
.r-filters__finishes { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 6px; padding-block: var(--s2) var(--s3); }
.r-finish-chip { display: flex; align-items: center; gap: 8px; min-height: var(--tap); padding: 4px 6px; border: 1px solid transparent; font-size: 12.5px; line-height: 1.2; color: var(--ink-soft); }
.r-finish-chip.is-active { border-color: var(--champagne); color: var(--champagne-light); }
.r-finish-chip__dot { flex: none; width: 14px; height: 14px; border-radius: 50%; background: var(--c); box-shadow: inset 0 0 0 1px rgb(255 255 255 / .3); }
.r-finish-chip__label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.r-swatch-btn { background: var(--c); }

/* ---------- tunnel : panier, commande, recherche ---------- */
.r-search-form { display: flex; gap: 14px; align-items: center; max-width: 760px; margin-top: var(--s6); padding-bottom: var(--s3); border-bottom: 1px solid var(--champagne); }
.r-search-form input { flex: 1; min-width: 0; border: 0; background: transparent; font-family: var(--serif); font-size: clamp(1.2rem, 1rem + 1vw, 1.7rem); padding: 10px 0; outline: none; color: var(--cream); }
.r-search-form input::placeholder { color: var(--on-dark-muted); }
.r-field { display: flex; flex-direction: column; gap: var(--s1); }
.r-field__err { margin: 0; color: var(--danger); font-size: var(--step--1); }
.r-field__req { color: var(--muted); font-size: var(--step--2); }
.r-checkout-empty { display: grid; gap: var(--s5); justify-items: start; }
.r-checkout-empty[hidden], .r-checkout[hidden] { display: none; }
.r-form__msg:empty { display: none; }
.r-tunnel-alert { display: grid; gap: var(--s3); justify-items: start; margin: var(--s4) 0; padding: var(--s4); border-left: 3px solid var(--danger); background: var(--paper-3); }
.r-tunnel-alert[hidden] { display: none; }
.r-tunnel-alert p { margin: 0; color: var(--danger); }
.r-checkout__form fieldset + fieldset { border-top: 0; padding-top: 0; }
.r-ship-opts .r-radio > span:first-of-type { display: flex; align-items: center; gap: 10px; }
.r-ship-opts .r-radio > span:first-of-type::before { content: ""; width: 14px; height: 14px; border: 1px solid var(--line-strong); border-radius: 50%; flex: none; }
.r-ship-opts .r-radio:has(input:checked) > span:first-of-type::before { border-color: var(--champagne); background: radial-gradient(circle, var(--champagne) 0 40%, transparent 42%); }
.r-ship-opts .r-radio[hidden] { display: none !important; }
/* lignes du panier dessinées par cart.js */
.r-cart__lines .r-cart-line { grid-template-columns: 120px minmax(0, 1fr) auto; align-items: start; gap: var(--s5); }
.r-cart__lines .r-cart-line__media { aspect-ratio: 4 / 5; background: var(--cream); }
.r-cart__lines .r-cart-line__name { font-family: var(--serif); font-size: 22px; line-height: 1.15; }
.r-cart__lines .r-cart-line__opt { font-family: var(--mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.r-cart__lines .r-cart-line__price { display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
.r-cart__lines .r-line__qty { display: inline-flex; align-items: center; border: 1px solid var(--line-strong); margin-top: 10px; width: fit-content; }
.r-cart__lines .r-line__qty button { width: var(--tap); height: var(--tap); border: 0; background: none; font-size: 16px; cursor: pointer; }
.r-cart__lines .r-line__qty span { min-width: 34px; text-align: center; font-family: var(--mono); font-size: 12px; }
.r-cart__lines .r-line__x { display: grid; place-items: center; width: var(--tap); height: var(--tap); border: 1px solid var(--line-strong); background: none; color: var(--muted); font-size: 16px; cursor: pointer; }
.r-cart__lines .r-drawer__empty, .r-cart__lines .r-empty-cart { display: grid; gap: var(--s5); justify-items: start; padding: var(--s5) 0; }
.r-cart__lines .r-drawer__empty p, .r-cart__lines .r-empty-cart p { font-family: var(--serif); font-size: clamp(1.5rem, 1.2rem + 1vw, 2.2rem); margin: 0; }
.r-cart__lines .r-cart-cap { margin: 0 0 var(--s4); padding: var(--s3) var(--s4); border-left: 3px solid var(--line-strong); background: var(--paper-3); }
.r-cart__lines .r-cart-cap a { text-decoration: underline; text-underline-offset: 3px; }
.r-thanks__back { margin: var(--s5) 0 0; }
.r-thanks__sum { max-width: 320px; margin-top: var(--s5); }

/* ---------- studio : composez votre coffret ---------- */
.r-studio { display: grid; grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr); gap: clamp(28px, 4vw, 64px); align-items: start; }
.r-studio__compose { position: sticky; top: calc(var(--header-h) + var(--s5)); display: grid; gap: var(--s5); }
.r-studio__slots { display: grid; gap: 2px; border: 1px solid var(--line); background: var(--line); }
.r-studio__slot { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 2px 12px; min-height: 78px; padding: var(--s4) var(--s5); background: var(--paper-2); }
.r-studio__slot-num { font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); color: var(--champagne); }
.r-studio__slot-label { font-family: var(--serif); font-size: var(--step-1); color: var(--ink); }
.r-studio__slot-empty { grid-column: 1 / -1; font-family: var(--mono); font-size: var(--step--2); letter-spacing: .04em; color: var(--muted); }
.r-studio__slot.is-filled .r-studio__slot-empty { display: none; }
.r-studio__picked { grid-column: 1 / -1; display: grid; gap: 4px; margin: 0; padding: 0; list-style: none; }
.r-studio__picked li { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 13px; color: var(--ink-soft); }
.r-studio__picked button { display: grid; place-items: center; width: var(--tap); height: var(--tap); margin-right: -12px; border: 0; background: none; font-size: 18px; color: var(--muted); cursor: pointer; }
.r-studio__total { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; padding-top: var(--s4); border-top: 1px solid var(--line-strong); }
.r-studio__total-value { margin: 0; font-family: var(--serif); font-size: var(--step-2); }
.r-studio__qty { display: grid; gap: 6px; font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
.r-studio__qty input { width: 84px; min-height: var(--tap); text-align: center; font-size: 16px; }
.r-studio__piece { padding: 0; border: 0; background: transparent; text-align: left; cursor: pointer; }
.r-studio__piece .r-card__media { border-color: var(--line-strong); }
.r-studio__piece .r-card__body { display: flex; flex-direction: column; gap: 6px; }
.r-studio__piece[aria-pressed="true"] .r-card__media { border-color: var(--champagne); box-shadow: 0 0 0 1px var(--champagne); }
.r-studio__piece[aria-pressed="true"] .r-card__title { color: var(--champagne-light); }
.r-studio__add-mark { display: grid; place-items: center; width: 32px; height: 32px; border: 1px solid var(--line-strong); border-radius: 50%; font-size: 16px; line-height: 1; }
.r-studio__piece[aria-pressed="true"] .r-studio__add-mark { background: var(--champagne); border-color: var(--champagne); color: var(--espresso); }
.r-studio .r-btn[disabled] { opacity: .45; pointer-events: none; }

/* ---------- utilitaires de composition (remplacent les styles en page) ---------- */
.r-stack > * + * { margin-top: var(--s5); }
.r-stack--tight > * + * { margin-top: var(--s3); }
.r-mt-4 { margin-top: var(--s4); }
.r-mt-5 { margin-top: var(--s5); }
.r-mt-6 { margin-top: var(--s6); }
.r-mt-7 { margin-top: var(--s7); }
.r-mb-5 { margin-bottom: var(--s5); }
.r-mb-6 { margin-bottom: var(--s6); }
.r-center { text-align: center; }
.r-actions { display: flex; flex-wrap: wrap; gap: var(--s3); }
.r-actions--end { align-self: end; justify-content: flex-end; }
.r-narrow { max-width: 46ch; }
.r-measure { max-width: var(--measure); }
.r-figure { margin: 0; overflow: hidden; background: var(--brown); border: 1px solid var(--line); }
.r-figure img { width: 100%; height: 100%; object-fit: cover; }
.r-figure--photo { aspect-ratio: 4 / 5; }
.r-figure--wide { aspect-ratio: 16 / 10; }
.r-figure--cream { background: var(--cream); border-color: rgb(23 17 14 / .16); }
.r-figure--cream img { object-fit: contain; padding: 8%; mix-blend-mode: multiply; }

/* ---------- manifeste sur la nappe : photo et points numérotés ---------- */
/* manifeste éditorial : grille propre, aucune collision avec les tuiles .r-story */
.r-editorial { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: clamp(32px, 6vw, 96px); align-items: start; }
.r-editorial__intro > * + * { margin-top: var(--s4); }
.r-editorial__side { display: grid; gap: var(--s6); align-content: start; }
.r-editorial__points { display: grid; border-top: 1px solid rgba(23 17 14 / .18); counter-reset: edit; }
.r-editorial__point { display: grid; gap: 6px; padding: var(--s5) 0; border-bottom: 1px solid rgba(23 17 14 / .14); }
.r-editorial__point h3 { font-family: var(--serif); font-weight: 400; font-size: var(--step-1); letter-spacing: var(--tracking-tight); color: var(--espresso); }
.r-editorial__point h3::before { counter-increment: edit; content: "0" counter(edit); display: block; margin-bottom: 6px; font-family: var(--mono); font-size: 11px; letter-spacing: var(--tracking-label); color: var(--bordeaux); }
.r-editorial__point p { font-size: var(--step--1); color: var(--olive-ink); max-width: 46ch; }
.r-editorial__figure { margin: 0; aspect-ratio: 4 / 5; overflow: hidden; border: 1px solid rgba(23 17 14 / .2); background: var(--cream-2); }
.r-editorial__figure img { width: 100%; height: 100%; object-fit: contain; padding: 5%; }
.r-section--paper .r-link-arrow { border-color: var(--bordeaux); }
.r-section--paper .r-quote, .r-section--paper .r-numbers dd { color: var(--espresso); }
.r-section--paper .r-numbers dt { color: var(--olive-ink); }
.r-section--paper .r-numbers > div, .r-section--paper .r-value { border-color: rgb(23 17 14 / .16); }
.r-section--paper .r-value p, .r-section--paper .r-note { color: var(--olive-ink); }
.r-close { border-bottom: 0; }
.r-close .r-label { color: var(--champagne); }
.r-close .r-lead { margin-inline: auto; text-align: center; }
/* ---------- gabarits ---------- */
@media (max-width: 1180px) {
  .r-products { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .r-products.r-products--3 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .r-wall { grid-template-columns: repeat(13, minmax(0, 1fr)); }
  .r-rail > * { flex: 0 0 calc((100% - 2 * var(--s4)) / 3); }
  .r-trust__inner { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-trust__item { border-bottom: 1px solid rgb(201 161 91 / .18); }
  .r-trust__item:nth-child(2n) { border-right: 0; }
  .r-trust__item:nth-last-child(-n+2) { border-bottom: 0; }
}
@media (max-width: 1100px) {
  .r-products.r-products--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .r-hero2__card, .r-hero2__rail { display: none; }
  .r-hero2__inner { grid-template-columns: 1fr; }
  .r-families { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-fam--wide { grid-column: span 2; }
  .r-hero2__canvas { left: auto; right: 0; width: 48%; opacity: .82; }
  .r-hero2__fallback { left: auto; right: 8%; width: min(420px, 40%); }
  .r-footer__grid { grid-template-columns: 1.4fr 1fr 1fr; }
  .r-collection__layout { grid-template-columns: 200px minmax(0, 1fr); }
}
@media (min-width: 1100px) {
  .r-product__info { position: sticky; top: calc(var(--header-h) + var(--s5)); align-self: start; }
}
/* catalogue : colonne unique au même seuil que site.css et shop.js */
@media (max-width: 1024px) {
  .r-shop { grid-template-columns: minmax(0, 1fr); }
  .r-filters { position: static; }
  .r-filter ul { max-height: 190px; overflow: auto; }
}
@media (min-width: 901px) { .r-buybar { display: none; } }
@media (max-width: 900px) {
  .r-header { backdrop-filter: none; -webkit-backdrop-filter: none; background: var(--paper); }
  .r-header__nav { display: none; }
  .r-header__burger { display: flex; }
  .r-header__bar { gap: 10px; }
  .r-section__head { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .r-section__head .r-lead { justify-self: start; }
  .r-families { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-fam__name { font-size: 22px; }
  .r-products, .r-products.r-products--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-rail > * { flex: 0 0 calc((100% - 2 * var(--s4)) / 2.5); }
  .r-stories, .r-atelier-band, .r-split, .r-two-col, .r-contact, .r-checkout, .r-cart, .r-legal, .r-occasion-row, .r-delivery, .r-guides, .r-values, .r-news, .r-guide-teaser { grid-template-columns: 1fr; }
  .r-product__grid { grid-template-columns: minmax(0, 1fr); gap: 22px; padding-bottom: 40px; }
  .r-product__media { position: static; }
  .r-buy__options { grid-template-columns: 1fr; }
  .r-buy__row { flex-wrap: wrap; }
  .r-stories .r-story { min-height: 440px; }
  .r-other-occ a { flex-basis: calc((100% - 2px) / 2); }
  .r-wall { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .r-wall a { height: 84px; }
  .r-colour-list { grid-template-columns: repeat(2, 1fr); }
  .r-colour-card__chip { height: 120px; }
  .r-guide-card__media { aspect-ratio: 16 / 9; }
  .r-cart__aside, .r-checkout__summary { position: static; }
  .r-drawer { width: 100%; }
  .r-lang__panel { width: 300px; grid-template-columns: 1fr; }
  .r-article__body { font-size: 17px; }
  .r-page-head { padding: 22px 0 26px; }
  .r-famhero__grid { grid-template-columns: 1fr; gap: 30px; padding-bottom: 40px; }
  .r-famhero__media { order: -1; aspect-ratio: 4 / 3; }
  .r-famhero__title { font-size: clamp(48px, 14vw, 72px); }
  .r-famhero__lead { font-size: 16px; }
  .r-collection__layout { grid-template-columns: 1fr; gap: 0; }
  .r-collection__aside { display: none; position: static; margin-bottom: 22px; }
  .r-collection__aside.is-open { display: block; }
  .r-collection__filterhead { padding-top: 4px; }
  .r-filter-toggle { display: inline-flex; }
  .r-facet__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 18px; }
  .r-editorial { grid-template-columns: minmax(0, 1fr); gap: 28px; }
  .r-studio { grid-template-columns: minmax(0, 1fr); gap: 26px; }
  .r-studio__compose { position: static; order: 2; }
  .r-cart__lines .r-cart-line { grid-template-columns: 84px minmax(0, 1fr) auto; gap: var(--s3); }
  .r-search-form { gap: 10px; }
  .r-search-form .r-btn { flex: none; padding: 0 18px; }
  .r-hero2 { display: block; min-height: 0; padding: 26px 0 0; }
  .r-hero2__bg { transform: none; }
  .r-hero2__bg::after { background: linear-gradient(0deg, var(--espresso) 0%, rgb(23 17 14 / .9) 46%, rgb(23 17 14 / .55) 100%); }
  .r-hero2__plate--0, .r-hero2__plate--1, .r-hero2__canvas { display: none; }
  .r-hero2__product { z-index: 1; right: -6%; bottom: 2%; width: min(300px, 62%); opacity: .5; }
  .r-hero2__depth { display: none; }
  .r-hero2__fallback { position: absolute; top: auto; left: 50%; right: auto; bottom: 0; width: min(300px, 62%); margin: 0; transform: translateX(-50%); opacity: .35; z-index: 1; }
  .r-hero2__inner { grid-template-columns: 1fr; padding-block: 54px 0; }
  .r-buybar { position: fixed; left: 0; right: 0; bottom: 0; z-index: calc(var(--z-header) + 20); display: flex; align-items: center; gap: 12px; padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); background: var(--paper-2); border-top: 1px solid var(--champagne); transform: translateY(110%); transition: transform var(--dur) var(--ease-out); }
  .r-buybar.is-on { transform: none; }
  .r-buybar__price { flex: 1; display: flex; flex-direction: column; }
  .r-buybar__price strong { font-family: var(--serif); font-size: 22px; font-weight: 400; }
  .r-buybar__price span { font-family: var(--mono); font-size: var(--step--2); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }
  .r-buybar .r-btn { min-height: 46px; padding: 13px 20px; white-space: nowrap; }
}
/* cibles tactiles de 44 px : tri, facettes, liens fléchés, pied */
@media (pointer: coarse), (max-width: 900px) {
  .r-sort__item, .r-facet__row, .r-link-arrow, .r-filter-reset, .r-filter-toggle, .r-lang__item, .r-reassure a { display: inline-flex; align-items: center; min-height: var(--tap); }
  .r-footer__col a, .r-line__info > a { display: flex; align-items: center; min-height: var(--tap); padding-block: 0; }
  .r-footer__col a { width: fit-content; min-width: var(--tap); }
}
@media (max-width: 760px) {
  body.r-page::before { display: none; }
  .r-header__bar { min-height: 72px; padding: 0 14px; gap: 8px; }
  .r-header__strip { gap: 12px; }
  .r-logo { gap: 8px; }
  .r-logo__word { font-size: 23px; letter-spacing: -.02em; }
  .r-logo__badge { width: 27px; height: 31px; }
  .r-header__tools { gap: 4px; }
  .r-tool--lang { padding: 0 6px; gap: 2px; }
  .r-tool--lang svg { width: 8px; height: 8px; }
  .r-demo-banner { padding: 8px var(--gut); letter-spacing: .02em; }
  .r-hero2__title { font-size: clamp(42px, 11.5vw, 66px); }
  .r-hero2__lead { margin: 22px 0 26px; font-size: 15.5px; }
  .r-hero2__stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 24px; margin-top: 34px; }
  .r-hero2__stats dd { font-size: 24px; }
  .r-hero2__kicker { gap: 10px; }
  .r-hero2__rule { width: 28px; }
  .r-hero2__actions { display: grid; justify-items: start; gap: 12px; }
  .r-hero2__actions .r-btn { width: auto; min-width: 0; padding: 15px 22px; }
  .r-footer__claim { flex-direction: column; gap: 14px; }
  .r-footer__claim span { text-align: left; }
  .r-footer__grid { grid-template-columns: 1fr 1fr; }
  .r-footer__brand { grid-column: 1 / -1; }
  .r-footer .r-news { grid-template-columns: 1fr; }
  .r-footer__bottom { flex-direction: column; align-items: flex-start; gap: 8px; }
  .r-page-head__count { white-space: normal; max-width: 100%; }
  .r-news__form { flex-wrap: wrap; gap: 8px; }
  .r-news__form input { flex: 1 1 100%; width: 100%; }
  .r-news__form .r-btn { width: auto; margin-left: auto; }
  .r-occasion-row { grid-template-columns: 1fr; gap: 22px; }
  .r-story::after { background: linear-gradient(0deg, rgb(23 17 14 / .96) 0%, rgb(23 17 14 / .82) 72%, rgb(23 17 14 / .2) 100%); }
  .r-occasion-row__cards { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(200px, 62%); gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory; }
  .r-occasion-row__cards > * { scroll-snap-align: start; }
  .r-occasion-row__cards .r-card__title { font-size: 13.5px; }
  .r-page-head--stage { padding: 28px 0 32px; }
}
/* mur en tactile étroit : la bande défile, le dernier bloc invite au geste */
@media (hover: none) and (max-width: 760px) {
  .r-wall { display: flex; overflow-x: auto; scroll-snap-type: x proximity; overscroll-behavior-x: contain; }
  .r-wall a { flex: 0 0 auto; display: flex; align-items: flex-end; min-width: calc(100% / 4.5); height: 120px; scroll-snap-align: start; }
  .r-wall a span { position: static; width: 100%; padding: 4px 8px; white-space: nowrap; line-height: 1.25; }
}
@media (max-width: 600px) {
  .r-trust__inner { grid-template-columns: minmax(0, 1fr); }
  .r-trust__item { border-right: 0; padding: 16px 0; }
  .r-trust__item:nth-last-child(2) { border-bottom: 1px solid rgb(201 161 91 / .18); }
  .r-trust__item:last-child { border-bottom: 0; }
  .r-cart-line { gap: 12px; }
  .r-rail > * { flex: 0 0 calc((100% - var(--s4)) / 1.5); }
  .r-form input, .r-form select, .r-form textarea, .r-qty input { font-size: 16px; }
}
@media (max-width: 360px) {
  .r-logo__word { display: none; }
  .r-header__bar { padding: 0 10px; gap: 6px; }
  .r-header__tools { gap: 2px; }
}

/* ---------- transitions de page ---------- */
@view-transition { navigation: auto; }
::view-transition-old(root) { animation: rbVtOut .16s ease both; }
::view-transition-new(root) { animation: rbVtIn var(--dur-fast) var(--ease-out) both; }
@keyframes rbVtOut { to { opacity: 0; } }
@keyframes rbVtIn { from { opacity: 0; } to { opacity: 1; } }

/* ---------- mouvement réduit : tout est statique ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  body.r-page::before { display: none; }
  .r-hero2__title span { animation: none; opacity: 1; transform: none; }
  .r-hero2__fallback .r-hero2__bubble { animation: none; opacity: .7; transform: none; }
  .r-hero2__bg { transform: none; }
  .r-reveal { opacity: 1; transform: none; transition: none; }
  ::view-transition-old(root), ::view-transition-new(root) { animation: none; }
}

/* ==== A · MAISON ÉDITORIALE — couche d intégration (2026-11-11) ==== */


/* ==========================================================================
   A · MAISON ÉDITORIALE — couche d'intégration · 2026-11-11
   Ajoutée en fin de site.css : elle a le dernier mot sur le chrome, la
   typographie et les composants partagés. v3.css porte l'accueil A.
   ========================================================================== */

/* --- fontes auto-hébergées (nouvelles familles) --------------------------- */
@font-face { font-family: "Instrument Serif"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("../fonts/instrument-serif-normal-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Instrument Serif"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("../fonts/instrument-serif-normal-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Instrument Serif"; font-style: italic; font-weight: 400; font-display: swap;
  src: url("../fonts/instrument-serif-italic-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Instrument Serif"; font-style: italic; font-weight: 400; font-display: swap;
  src: url("../fonts/instrument-serif-italic-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Bricolage Grotesque"; font-style: normal; font-weight: 200 800; font-display: swap;
  src: url("../fonts/bricolage-normal-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Bricolage Grotesque"; font-style: normal; font-weight: 200 800; font-display: swap;
  src: url("../fonts/bricolage-normal-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }

/* --- socle ---------------------------------------------------------------- */
html { scroll-padding-top: calc(var(--header-h) + 18px); }
body { background: var(--paper); color: var(--ink); font-family: var(--font-sans); font-size: var(--step-0); line-height: var(--leading-body); font-weight: 400; }
::selection { background: var(--sulfur); color: var(--ink); }
:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }
h1, h2, h3, h4 { font-family: var(--font-serif); font-weight: 400; line-height: var(--leading-snug); letter-spacing: var(--tracking-tight); }
h1 { font-size: var(--step-6); }
h2 { font-size: var(--step-3); }
h3 { font-size: var(--step-1); }
p { text-wrap: pretty; }
.r-display, .r-serif { font-family: var(--font-serif); font-weight: 400; font-optical-sizing: auto; font-variation-settings: normal; letter-spacing: var(--tracking-display); }
.r-display { font-size: var(--step-5); line-height: var(--leading-tight); text-wrap: balance; }
.r-display em, .r-serif em { font-style: italic; }
.r-serif { font-size: var(--step-3); line-height: var(--leading-snug); }
.r-label { font-family: var(--font-sans); font-size: 11px; font-weight: 600; letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--olive); line-height: 1.3; }
.r-lead { font-size: var(--step-1); line-height: 1.5; color: var(--ink-soft); max-width: 52ch; font-weight: 400; }
.r-note { font-size: var(--step--1); color: var(--muted); line-height: 1.55; }
.r-hint { font-family: var(--font-mono); font-size: var(--step--2); letter-spacing: .04em; color: var(--muted); }
.r-mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.r-skip { background: var(--ink); color: var(--paper); }
.r-demo-banner { display: flex; align-items: center; justify-content: center; min-height: 32px; margin: 0; padding: 6px var(--gut); background: var(--paper-2); color: var(--ink-soft); border-bottom: 1px solid var(--line); font-family: var(--font-sans); font-size: 10.5px; font-weight: 500; letter-spacing: .1em; text-transform: uppercase; text-align: center; }
.r-wrap { max-width: var(--wrap); padding-inline: var(--gut); }

/* --- boutons et liens ----------------------------------------------------- */
.r-btn { min-height: 52px; padding: 0 26px; gap: 16px; border: 1px solid var(--ink); border-radius: 0; background: var(--ink); color: var(--paper); font-family: var(--font-sans); font-size: 13px; font-weight: 600; letter-spacing: .005em; text-transform: none; transition: background-color var(--dur-fast) var(--ease-silk), color var(--dur-fast) var(--ease-silk), border-color var(--dur-fast) var(--ease-silk), transform var(--dur-fast) var(--ease-silk); }
.r-btn:hover { background: var(--sulfur); color: var(--ink); border-color: var(--sulfur); transform: translateY(-2px); }
.r-btn--primary { --btn-bg: var(--ink); --btn-fg: var(--paper); --btn-bd: var(--ink); }
.r-btn--ghost { --btn-bg: transparent; --btn-fg: var(--ink); --btn-bd: var(--line-strong); }
.r-btn--ghost:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.r-btn--quiet { min-height: 44px; padding-inline: 4px; border-color: transparent; }
.r-btn--sm { min-height: 44px; padding-inline: 16px; font-size: 12px; }
.r-btn--add { flex: 1; }
.r-btn--paper { background: var(--paper); color: var(--ink); border-color: var(--paper); }
.r-btn--paper:hover { background: var(--sulfur); border-color: var(--sulfur); }
.r-link-arrow { min-height: 44px; padding-bottom: 4px; gap: 12px; border-bottom: 1px solid var(--ink); font-family: var(--font-sans); font-size: 12px; font-weight: 600; letter-spacing: .02em; text-transform: none; color: var(--ink); }
.r-link-arrow:hover { color: var(--olive); border-color: var(--olive); }
.r-link-plain { color: var(--ink); text-decoration-color: var(--line-strong); }
.r-link-plain:hover { color: var(--olive); text-decoration-color: var(--olive); }

/* --- en-tête -------------------------------------------------------------- */
.r-header { background: color-mix(in srgb, var(--paper) 96%, transparent); backdrop-filter: blur(10px); border-bottom: 1px solid var(--line); }
.r-header.is-scrolled { background: color-mix(in srgb, var(--paper) 98%, transparent); box-shadow: 0 1px 0 var(--line); }
.r-header__top { background: var(--paper-2); color: var(--ink-soft); border-bottom: 1px solid var(--line); }
.r-header__strip { min-height: var(--strip-h); height: auto; padding-block: 6px; gap: 18px; font-family: var(--font-sans); font-size: 10px; font-weight: 500; letter-spacing: .12em; }
.r-header__strip > span { color: var(--ink-soft); }
.r-header__dot { width: 4px; height: 4px; background: var(--sulfur); }
.r-header__bar { min-height: var(--header-h); padding: 0 var(--gut); gap: 28px; grid-template-columns: auto 1fr auto; }
.r-header.is-scrolled .r-header__bar { min-height: 66px; }
.r-header__nav { gap: 30px; text-transform: none; }
.r-header__link { padding: 28px 0; font-family: var(--font-sans); font-size: 13px; font-weight: 500; letter-spacing: .005em; text-transform: none; color: var(--ink); }
.r-header.is-scrolled .r-header__link { padding: 20px 0; }
.r-header__link::after { bottom: 19px; height: 1px; background: var(--olive); }
.r-header__burger { display: none; }
.r-tool { min-width: var(--tap); min-height: var(--tap); color: var(--ink); }
.r-tool:hover { color: var(--olive); }
.r-tool--lang { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; }
.r-cart-count { background: var(--sulfur); color: var(--ink); font-weight: 700; top: 4px; right: 0; }
.r-lang__panel { background: var(--paper); border: 1px solid var(--line); box-shadow: var(--shadow-sheet); }
.r-lang__item[aria-current="true"] { background: var(--paper-2); }
.r-lang__item[aria-current="true"] .r-lang__code { color: var(--olive); }
.r-lang__name { color: var(--ink-soft); }
.r-mega { background: var(--paper); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); box-shadow: var(--shadow-sheet); }
.r-mega a { font-family: var(--font-serif); font-size: 22px; color: var(--ink); }
.r-mega img { background: var(--paper-2); border: 1px solid var(--line); }
.r-mega__feature { border-left: 1px solid var(--line); }
.r-mega__feature span { font-family: var(--font-sans); font-size: 10px; font-weight: 600; letter-spacing: .12em; color: var(--olive); }
.r-logo { gap: 0; min-height: var(--tap); color: var(--ink); }
.r-logo__mark { display: inline-grid; grid-template-columns: auto 9px; grid-template-rows: auto auto; align-items: end; column-gap: 5px; line-height: 1; }
.r-logo__num { grid-column: 1 / span 2; grid-row: 1; font-family: var(--font-sans); font-size: 10px; font-weight: 800; letter-spacing: .18em; line-height: 1; color: var(--ink); padding-bottom: 3px; }
.r-logo__name { grid-column: 1; grid-row: 2; font-family: var(--font-brand); font-style: italic; font-weight: 400; font-size: 31px; line-height: .86; letter-spacing: -.025em; color: var(--ink); text-transform: lowercase; }
.r-logo__dot { grid-column: 2; grid-row: 2; align-self: end; justify-self: end; width: 7px; height: 7px; border-radius: 50%; background: var(--terra); margin-bottom: 5px; }
.r-footer .r-logo__name, .r-footer .r-logo__num { color: var(--ink); }
.r-footer .r-logo__dot { background: var(--terra); }
.r-footer .r-logo__name { font-size: 42px; }
.r-footer .r-logo__num { font-size: 11px; }
.r-mobile-nav { background: var(--paper); }
.r-mobile-nav__head { border-bottom: 1px solid var(--ink); font-family: var(--font-sans); font-weight: 600; letter-spacing: .12em; }
.r-mobile-nav > a { border-bottom: 1px solid var(--line); font-family: var(--font-serif); font-size: 30px; }
.r-mobile-nav > a.r-mobile-nav__sub { font-family: var(--font-sans); font-size: 15px; color: var(--ink-soft); }

/* --- sections ------------------------------------------------------------- */
.r-section { padding-block: var(--section-y); border-bottom: 1px solid var(--line); }
.r-section--paper { background: var(--paper-2); color: var(--ink); border-bottom: 1px solid var(--line); }
.r-section--paper .r-display, .r-section--paper h2, .r-section--paper h3 { color: var(--ink); }
.r-section--paper .r-label { color: var(--olive); }
.r-section--paper .r-lead, .r-section--paper .r-note, .r-section--paper .r-hint { color: var(--ink-soft); }
.r-section--dark { background: var(--ink); color: var(--paper); border-bottom: 1px solid var(--ink); }
.r-section--dark .r-label, .r-section--dark .r-lead, .r-section--dark .r-hint { color: var(--on-dark-muted); }
.r-section__head { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 40ch); align-items: end; gap: clamp(24px, 4vw, 72px); margin-bottom: 40px; max-width: none; }
.r-section__head .r-display, .r-section__head h2 { max-width: 18ch; font-size: var(--text-h2); line-height: .94; letter-spacing: var(--tracking-display); text-wrap: balance; }
.r-section__head .r-lead { justify-self: end; max-width: 38ch; }
.r-section__num { display: inline-flex; align-items: center; gap: 12px; margin-bottom: var(--s4); font-family: var(--font-mono); font-size: 10px; letter-spacing: .14em; color: var(--olive); }
.r-section__num::before { content: ""; flex: none; width: 34px; height: 1px; border-radius: 0; background: currentColor; box-shadow: none; }
.r-section__num::after { display: none; }

/* --- cartes produit ------------------------------------------------------- */
.r-card { gap: 0; }
.r-card__media { border: 1px solid var(--line); background: radial-gradient(58% 48% at 50% 46%, color-mix(in srgb, var(--finish, var(--olive)) 12%, transparent) 0%, rgb(20 18 16 / 0) 70%), linear-gradient(180deg, var(--paper-3) 0%, var(--paper) 86%); }
.r-card__media::before { left: 18%; right: 18%; bottom: 7%; height: 8%; background: radial-gradient(50% 50% at 50% 50%, rgb(20 18 16 / .26), rgb(20 18 16 / 0) 72%); filter: blur(8px); }
.r-card__media::after { display: none; }
.r-card .r-card__img, .r-card__media img { padding: 12%; filter: drop-shadow(0 22px 26px rgb(20 18 16 / .2)); mix-blend-mode: normal; }
.r-card:hover .r-card__media { border-color: var(--ink); }
.r-card:hover .r-card__img { transform: translateY(-6px) scale(1.015); }
.r-card__media .r-tag { top: 12px; left: 12px; background: var(--sulfur); border-color: var(--sulfur); color: var(--ink); font-family: var(--font-sans); font-size: 9px; font-weight: 700; letter-spacing: .12em; padding: 6px 9px; }
.r-card__body { padding: 14px 0 0; gap: 4px; }
.r-card__meta { font-family: var(--font-sans); font-size: 9.5px; font-weight: 600; letter-spacing: .1em; color: var(--muted); }
.r-card__title { margin: 4px 0 8px; min-height: 0; font-family: var(--font-serif); font-size: 21px; line-height: 1.06; letter-spacing: -.015em; }
.r-card__title a { display: inline-block; padding-block: 15px; margin-block: -15px; }
.r-card__title a:hover { color: var(--olive); }
.r-card__price { font-family: var(--font-mono); font-size: 12.5px; color: var(--ink); }
.r-card__add { min-width: var(--tap); min-height: var(--tap); border: 1px solid var(--ink); border-radius: 0; color: var(--ink); font-size: 18px; }
.r-card__add:hover { background: var(--sulfur); border-color: var(--ink); }
.r-card__add.is-added { background: var(--ink); color: var(--paper); }

/* --- familles (utilisé plus loin, déjà aux couleurs A) -------------------- */
.r-fam { background: var(--paper-2); border: 1px solid var(--line); }
.r-fam:hover { border-color: var(--ink); }
.r-fam__media { background: var(--paper-3); }
.r-fam__media img { object-fit: contain; padding: 9%; background: var(--paper-3); }
.r-fam__body { background: linear-gradient(0deg, rgb(242 237 227 / .98) 0%, rgb(242 237 227 / .86) 58%, rgb(242 237 227 / 0) 100%); color: var(--ink); }
.r-fam__name { color: var(--ink); font-family: var(--font-serif); }
.r-fam__meta { color: var(--muted); }
.r-fam__index { background: transparent; border: 0; color: var(--olive); padding: 0; font-family: var(--font-mono); }
.r-fam__arrow { border-color: var(--ink); color: var(--ink); background: var(--sulfur); }

/* --- fil rouge coloris ---------------------------------------------------- */
.r-wall { display: grid; grid-template-columns: repeat(auto-fit, minmax(86px, 1fr)); background: var(--line); border: 1px solid var(--line); gap: 1px; }
.r-wall a { height: 112px; border: 0; }
.r-wall a span { position: absolute; inset: auto 0 0 0; padding: 7px 8px; background: var(--paper); color: var(--ink); font-family: var(--font-sans); font-size: 9px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; opacity: .96; }
.r-wall a:hover span { background: var(--sulfur); }
.r-colour-card { background: var(--paper-2); }
.r-colour-card__chip { box-shadow: inset 0 0 0 1px rgb(20 18 16 / .14); }
.r-colour-card__name { background: var(--paper); color: var(--ink); }
.r-colour-card:focus-visible .r-colour-card__chip { box-shadow: inset 0 0 0 2px var(--ink); }

/* --- guides et récits ----------------------------------------------------- */
.r-guide-card { background: var(--paper-2); border: 1px solid var(--line); }
.r-guide-card__body { padding: 18px; }
.r-guide-card__title { font-family: var(--font-serif); font-size: var(--step-2); }
.r-guide-card:hover { border-color: var(--ink); }
.r-story { background: var(--paper-3); }
.r-story::after { background: linear-gradient(0deg, rgb(20 18 16 / .88) 0%, rgb(20 18 16 / .5) 48%, rgb(20 18 16 / 0) 84%); }
.r-story__body { color: var(--paper); }
.r-story__body .r-label { color: var(--sulfur); }

/* --- lettre / newsletter -------------------------------------------------- */
.r-cookie { background: var(--paper); border-top: 1px solid var(--ink); box-shadow: none; }
.r-cookie p { color: var(--ink-soft); }
.r-cookie a { text-decoration: underline; text-underline-offset: 3px; min-height: 44px; display: inline-flex; align-items: center; }
.r-news { border-top: 1px solid var(--line); padding-block: clamp(36px, 5vw, 64px); }
.r-news h2 { font-family: var(--font-serif); font-size: var(--step-3); font-weight: 400; letter-spacing: -.02em; color: var(--ink); }
.r-news .r-hint, .r-news__consent, .r-news__msg { color: var(--muted); }
.r-news__form input { color: var(--ink); }
.r-news__form { border-bottom: 1px solid var(--ink); align-items: center; gap: 12px; }
.r-news__form input { min-height: 52px; font-family: var(--font-sans); font-size: 15px; color: var(--ink); }
.r-news__form input::placeholder { color: var(--muted); }
.r-news__form .r-btn { background: transparent; border: 0; color: var(--ink); min-height: 52px; padding-inline: 8px; font-size: 13px; }
.r-news__form .r-btn:hover { color: var(--olive); transform: none; }
.r-news__consent, .r-news__msg { font-size: 11px; color: var(--muted); }
.r-news .r-hint { color: var(--muted); }

/* --- pied ---------------------------------------------------------------- */
.r-footer { background: var(--paper); color: var(--ink-soft); border-top: 1px solid var(--ink); }
.r-footer a { color: var(--ink-soft); }
.r-footer__claim { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; padding-block: 48px 34px; border-bottom: 1px solid var(--line); }
.r-footer__claim p { font-family: var(--font-serif); font-size: clamp(2rem, 4.6vw, 4.4rem); line-height: .96; letter-spacing: -.03em; color: var(--ink); margin: 0; max-width: 18ch; }
.r-footer__claim span { font-family: var(--font-mono); font-size: 10px; letter-spacing: .06em; color: var(--muted); max-width: 36ch; text-align: right; }
.r-footer__grid { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1fr 1fr; gap: 32px; padding-block: 40px 34px; border-bottom: 1px solid var(--line); }
.r-footer__brand { max-width: 30ch; }
.r-footer__brand .r-note { color: var(--muted); margin-top: 20px; }
.r-footer__col { display: flex; flex-direction: column; gap: 0; }
.r-footer__col h2 { margin-bottom: 10px; font-family: var(--font-sans); font-size: 10px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--olive); }
.r-footer__col a { min-height: 44px; min-width: 44px; font-size: 13px; color: var(--ink-soft); border-bottom: 1px solid transparent; width: fit-content; }
.r-footer__col a:hover { color: var(--olive); border-bottom-color: var(--olive); }
.r-footer__bottom { padding-block: 20px 28px; gap: 10px 28px; font-family: var(--font-mono); font-size: 10px; letter-spacing: .03em; color: var(--muted); }
.r-footer .r-logo { color: var(--ink); }

/* --- focus, états, mouvement --------------------------------------------- */
.r-reveal { transform: translateY(18px); }
.r-card:focus-within .r-card__media { border-color: var(--ink); }
@media (prefers-reduced-motion: reduce) {
  .r-card:hover .r-card__img { transform: none; }
}

/* --- responsive shell ----------------------------------------------------- */
@media (max-width: 1100px) {
  .r-header__nav { display: none; }
  .r-header__burger { display: inline-flex; }
  .r-header__bar { grid-template-columns: auto auto 1fr auto; gap: 12px; }
  .r-logo { margin-right: 0; }
  .r-header__tools { justify-self: end; }
  .r-header__strip { justify-content: flex-start; overflow-x: auto; scrollbar-width: none; }
  .r-header__strip::-webkit-scrollbar { display: none; }
  .r-footer__grid { grid-template-columns: 1.3fr 1fr 1fr; }
  .r-footer__brand { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
  .r-header__bar { min-height: 66px; padding: 0 18px; gap: 8px; }
  .r-header__top { display: none; }
  .r-header.is-scrolled .r-header__bar { min-height: 58px; }
  .r-logo__name { font-size: 26px; }
  .r-logo__num { font-size: 9px; }
  .r-logo__dot { width: 6px; height: 6px; }
  .r-tool { min-width: 44px; min-height: 44px; padding-inline: 6px; }
  .r-demo-banner { font-size: 9px; letter-spacing: .06em; padding: 8px 12px; }
  .r-section { padding-block: clamp(48px, 11vw, 72px); }
  .r-section__head { grid-template-columns: minmax(0, 1fr); align-items: start; gap: 18px; margin-bottom: 28px; }
  .r-section__head .r-lead { justify-self: start; }
  .r-section__head .r-display, .r-section__head h2 { max-width: none; }
  .r-footer__claim { flex-direction: column; align-items: flex-start; gap: 14px; padding-block: 36px 26px; }
  .r-footer__claim span { text-align: left; }
  .r-footer__grid { grid-template-columns: 1fr 1fr; gap: 24px 18px; padding-block: 28px; }
  .r-footer__brand { grid-column: 1 / -1; }
  .r-footer__bottom { flex-direction: column; align-items: flex-start; }
  .r-news__form { grid-template-columns: minmax(0, 1fr) auto; }
}
@media (max-width: 420px) {
  .r-footer__grid { grid-template-columns: 1fr; }
}



/* ==========================================================================
   A · MAISON ÉDITORIALE — accueil · 2026-11-11
   Couche ajoutée en fin de v3.css. Elle remplace l'ancien hero WebGL.
   ========================================================================== */

/* --- héro ----------------------------------------------------------------- */
.r-a-hero { position: relative; padding: 0 0 0; background: var(--paper); overflow: hidden; }
.r-a-hero__meta { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; border-top: 1px solid var(--ink); padding: 14px 0 10px; }
.r-a-hero__meta .r-label { color: var(--ink); }
.r-a-hero__meta span:last-child { font-family: var(--font-mono); font-size: 10px; letter-spacing: .04em; color: var(--muted); text-align: right; }
.r-a-hero__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--col-gap); align-items: end; padding-top: clamp(24px, 3.4vw, 44px); }
.r-a-hero__copy { grid-column: 1 / span 8; position: relative; z-index: 2; }
.r-a-title { margin: 0; font-family: var(--font-serif); font-weight: 400; font-size: var(--text-hero); line-height: .84; letter-spacing: -.035em; color: var(--ink); }
.r-a-title > span { display: block; }
.r-a-title em { font-style: italic; }
.r-a-title__line { display: block; overflow: hidden; padding-bottom: .02em; }
.r-a-lead { max-width: 38ch; margin-top: clamp(24px, 3vw, 40px); font-size: var(--step-1); line-height: 1.5; color: var(--ink); }
.r-a-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 30px; }
.r-a-hero__fig { grid-column: 9 / span 4; position: relative; align-self: end; margin: 0; }
.r-a-plate { position: relative; border: 1px solid var(--line); background: linear-gradient(180deg, var(--paper-3) 0%, var(--paper) 82%); padding: 28px 22px 0; }
.r-a-plate__num { position: absolute; top: 12px; right: 16px; z-index: 0; font-family: var(--font-serif); font-style: italic; font-size: 46px; line-height: 1; color: rgb(20 18 16 / .26); }
.r-a-plate__sulfur { position: absolute; left: 0; bottom: 0; width: 58%; height: 34%; background: var(--sulfur); z-index: 0; }
.r-a-plate img { position: relative; z-index: 1; width: 100%; height: clamp(340px, 40vw, 540px); object-fit: contain; filter: drop-shadow(0 26px 30px rgb(20 18 16 / .2)); }
.r-a-fig { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 18px; align-items: start; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line); }
.r-a-fig__name { font-family: var(--font-serif); font-size: clamp(20px, 1.8vw, 25px); line-height: 1.04; letter-spacing: -.015em; }
.r-a-fig__meta { grid-column: 1; font-family: var(--font-sans); font-size: 10px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.r-a-fig__price { grid-column: 2; grid-row: 1; font-family: var(--font-mono); font-size: 15px; font-variant-numeric: tabular-nums; white-space: nowrap; text-align: right; }
.r-a-fig__note { grid-column: 2; grid-row: 2; font-size: 9px; color: var(--muted); text-align: right; }
.r-a-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(18px, 3vw, 40px); margin-top: clamp(34px, 4.4vw, 54px); padding: 18px 0 34px; border-top: 1px solid var(--ink); }
.r-a-stats > div { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.r-a-stats__n { font-family: var(--font-serif); font-size: clamp(34px, 3.6vw, 54px); line-height: .95; letter-spacing: -.02em; }
.r-a-stats__l { font-family: var(--font-sans); font-size: 11px; font-weight: 500; color: var(--muted); }

/* animation d'ouverture, coupée en mouvement réduit */
@keyframes r-a-rise { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: none; } }
@keyframes r-a-fade { from { opacity: 0; transform: scale(1.02); } to { opacity: 1; transform: none; } }
.r-a-hero__copy .r-a-title { animation: r-a-rise .9s var(--ease-silk) both; }
.r-a-hero__copy .r-a-lead { animation: r-a-rise .9s .08s var(--ease-silk) both; }
.r-a-hero__copy .r-a-actions { animation: r-a-rise .9s .16s var(--ease-silk) both; }
.r-a-hero__fig { animation: r-a-fade 1.1s .1s var(--ease-silk) both; }
.r-a-stats { animation: r-a-rise .9s .2s var(--ease-silk) both; }

/* --- tête de section ------------------------------------------------------ */
.r-a-sec { padding-block: var(--section-y); border-top: 1px solid var(--line); }
.r-a-toc { border-top: 1px solid var(--ink); }
.r-a-head { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--col-gap); align-items: start; }
.r-a-head > .r-label { grid-column: 1 / span 3; color: var(--olive); padding-top: 10px; }
.r-a-h2 { grid-column: 4 / span 9; margin: 0; font-family: var(--font-serif); font-weight: 400; font-size: var(--text-h2); line-height: .92; letter-spacing: -.03em; text-wrap: balance; max-width: 18ch; }
.r-a-h2 em { font-style: italic; }
.r-a-head__lead { grid-column: 4 / span 5; margin-top: 22px; font-size: var(--step-0); line-height: 1.6; color: var(--ink-soft); max-width: 44ch; }
.r-a-head__side { grid-column: 10 / span 3; margin-top: 22px; justify-self: end; align-self: start; }

/* --- sommaire ------------------------------------------------------------- */
.r-a-toc__list { margin: 52px 0 0; padding: 0; list-style: none; border-top: 1px solid var(--line); }
.r-a-toc__item { border-bottom: 1px solid var(--line); }
.r-a-toc__row { display: grid; grid-template-columns: 46px minmax(0, 1fr) minmax(28px, 1fr) auto auto 50px 26px; gap: clamp(10px, 1.4vw, 20px); align-items: center; min-height: 80px; padding: 10px 0; transition: background-color var(--dur) var(--ease-silk), padding var(--dur) var(--ease-silk); }
.r-a-toc__row:hover { background: var(--paper-2); padding-inline: 12px; }
.r-a-toc__index { font-family: var(--font-mono); font-size: 10px; letter-spacing: .06em; color: var(--muted); }
.r-a-toc__name { font-family: var(--font-serif); font-size: clamp(23px, 2.5vw, 34px); line-height: 1.02; letter-spacing: -.015em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.r-a-toc__leader { border-bottom: 1px dotted var(--line-strong); align-self: center; height: 0; }
.r-a-toc__meta { font-family: var(--font-sans); font-size: 10px; font-weight: 500; letter-spacing: .06em; color: var(--muted); white-space: nowrap; }
.r-a-toc__from { font-family: var(--font-mono); font-size: 10px; letter-spacing: .02em; color: var(--ink); white-space: nowrap; }
.r-a-toc__thumb { width: 50px; height: 62px; object-fit: contain; filter: drop-shadow(0 10px 12px rgb(20 18 16 / .16)); }
.r-a-toc__row:hover .r-a-toc__thumb { transform: translateY(-3px); }
.r-a-toc__arrow { font-size: 14px; text-align: right; color: var(--muted); }
.r-a-toc__row:hover .r-a-toc__arrow { color: var(--ink); }
.r-a-more { margin-top: 26px; }

/* --- sélection ------------------------------------------------------------ */
.r-a-picks { padding-block: var(--section-y) var(--section-y); }
.r-a-picks__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(34px, 3.4vw, 48px) clamp(16px, 1.8vw, 26px); margin-top: 40px; }
.r-a-picks__grid > .r-card:first-child { grid-column: span 2; }
.r-a-picks__grid > .r-card:first-child .r-card__media { aspect-ratio: auto; height: clamp(360px, 32vw, 520px); }
.r-a-picks__grid > .r-card:first-child .r-card__img { padding: 6%; }
.r-a-picks__grid > .r-card:first-child .r-card__title { font-size: clamp(24px, 2.2vw, 32px); }
.r-a-picks__grid > .r-card:nth-child(2) { margin-top: clamp(0px, 3.4vw, 52px); }
.r-a-picks__grid > .r-card:nth-child(3) { margin-top: clamp(0px, 1.6vw, 24px); }
.r-a-picks .r-card__title { min-height: 2.1em; }

/* --- bande soufre --------------------------------------------------------- */
.r-a-link { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-family: var(--font-sans); font-size: 12px; font-weight: 600; letter-spacing: .01em; color: var(--ink); border-bottom: 1px solid var(--ink); }
.r-a-link:hover { color: var(--olive); border-color: var(--olive); }
.r-a-band { margin-top: var(--section-y); background: var(--sulfur); border-block: 1px solid var(--ink); overflow: hidden; }
.r-a-band__track { display: flex; width: max-content; will-change: transform; animation: r-a-band 54s linear infinite; }
.r-a-band:hover .r-a-band__track { animation-play-state: paused; }
.r-a-band__track > span { display: inline-flex; align-items: center; gap: 14px; padding: 15px 24px; font-family: var(--font-serif); font-size: clamp(22px, 2.5vw, 38px); line-height: 1; letter-spacing: -.01em; white-space: nowrap; }
.r-a-band__track i { font-style: normal; font-family: var(--font-mono); font-size: 9px; line-height: 1; letter-spacing: .04em; border: 1px solid currentColor; border-radius: 50%; width: 21px; height: 21px; display: inline-grid; place-items: center; }
@keyframes r-a-band { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* --- récit / maison ------------------------------------------------------- */
.r-a-story { border-top: 1px solid var(--ink); }
.r-a-story__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--col-gap); align-items: center; }
.r-a-story__copy { grid-column: 1 / span 6; }
.r-a-story__copy .r-label { color: var(--olive); }
.r-a-story__copy .r-a-h2 { font-size: clamp(2.4rem, 4.6vw, 5rem); margin-top: 16px; }
.r-a-story__lead { margin-top: 22px; max-width: 44ch; font-size: var(--step-0); line-height: 1.6; color: var(--ink-soft); }
.r-a-points { margin-top: 34px; border-top: 1px solid var(--line); }
.r-a-point { display: grid; grid-template-columns: minmax(0, 11rem) minmax(0, 1fr); gap: 18px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.r-a-point__t { font-family: var(--font-serif); font-size: 19px; line-height: 1.1; letter-spacing: -.01em; }
.r-a-point p { font-size: 13px; line-height: 1.55; color: var(--muted); }
.r-a-story__fig { grid-column: 8 / span 5; margin: 0; }
.r-a-story__fig .r-a-frame { border: 1px solid var(--line); background: linear-gradient(180deg, var(--paper-3) 0%, var(--paper-2) 100%); padding: 10px; }
.r-a-story__fig img { width: 100%; height: clamp(380px, 42vw, 600px); object-fit: contain; filter: drop-shadow(0 26px 30px rgb(20 18 16 / .18)); }
.r-a-story__fig figcaption { margin-top: 12px; font-family: var(--font-mono); font-size: 10px; letter-spacing: .04em; color: var(--muted); display: flex; justify-content: space-between; gap: 16px; }
.r-a-story__cta { margin-top: 30px; }

/* --- finitions ------------------------------------------------------------ */
.r-a-colours .r-a-head__lead { grid-column: 4 / span 5; }
.r-a-wall { display: grid; grid-template-columns: repeat(auto-fit, minmax(82px, 1fr)); gap: 1px; margin-top: 42px; background: var(--line); border: 1px solid var(--line); }
.r-a-wall a { position: relative; display: block; height: 118px; background: var(--swatch, var(--paper-3)); }
.r-a-wall a > span { position: absolute; inset: auto 0 0 0; display: flex; justify-content: space-between; align-items: baseline; gap: 6px; padding: 7px 8px; background: var(--paper); color: var(--ink); opacity: .94; font-family: var(--font-sans); font-size: 9px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.r-a-wall a > span em { font-style: normal; font-family: var(--font-mono); font-size: 9px; color: var(--muted); }
.r-a-wall a:hover { outline: 1px solid var(--ink); outline-offset: -1px; }
.r-a-wall a:hover > span { background: var(--sulfur); }

/* --- moments -------------------------------------------------------------- */
.r-a-stories { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(20px, 2.6vw, 36px); margin-top: 42px; }
.r-a-storycard { display: flex; flex-direction: column; border: 1px solid var(--line); background: var(--paper-2); }
.r-a-storycard:hover { border-color: var(--ink); }
.r-a-storycard img { width: 100%; height: clamp(300px, 32vw, 460px); object-fit: cover; }
.r-a-storycard__body { display: grid; gap: 8px; padding: 20px 22px 24px; border-top: 1px solid var(--line); }
.r-a-storycard__t { font-family: var(--font-serif); font-size: clamp(26px, 2.4vw, 34px); line-height: 1.02; letter-spacing: -.02em; }
.r-a-storycard p { font-size: 13px; line-height: 1.55; color: var(--ink-soft); max-width: 40ch; }
.r-a-storycard .r-a-link { margin-top: 6px; }
.r-a-other { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-top: 28px; padding-top: 16px; border-top: 1px solid var(--line); }
.r-a-other a { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-size: 12px; font-weight: 600; color: var(--ink-soft); border-bottom: 1px solid var(--line-strong); }
.r-a-other a:hover { color: var(--olive); border-color: var(--olive); }

/* --- atelier (bande encre) ------------------------------------------------ */
.r-a-atelier { margin-top: var(--section-y); padding-block: clamp(56px, 7.4vw, 104px); background: var(--ink); color: var(--paper); overflow: hidden; }
.r-a-atelier__inner { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--col-gap); align-items: center; }
.r-a-atelier__copy { grid-column: 1 / span 6; }
.r-a-atelier .r-label { color: var(--sulfur); }
.r-a-atelier .r-a-h2 { color: var(--paper); font-size: clamp(2.4rem, 4.8vw, 5.4rem); margin-top: 16px; }
.r-a-atelier p { margin-top: 22px; max-width: 40ch; font-size: var(--step-0); line-height: 1.6; color: var(--on-dark-muted); }
.r-a-atelier .r-a-actions { margin-top: 30px; }
.r-a-atelier__fig { grid-column: 8 / span 5; margin: 0; position: relative; }
.r-a-atelier__fig::before { content: ""; position: absolute; inset: 8% 6% -8% 6%; background: var(--sulfur); opacity: .9; }
.r-a-atelier__fig .r-a-frame { position: relative; border: 1px solid rgb(242 237 227 / .28); background: linear-gradient(180deg, var(--paper-3) 0%, var(--paper-2) 100%); padding: 8px; }
.r-a-atelier__fig img { width: 100%; height: clamp(340px, 38vw, 520px); object-fit: contain; filter: drop-shadow(0 26px 30px rgb(20 18 16 / .22)); }
.r-a-atelier__fig figcaption { position: relative; margin-top: 12px; font-family: var(--font-mono); font-size: 10px; letter-spacing: .04em; color: var(--on-dark-muted); }

/* --- carnet --------------------------------------------------------------- */
.r-a-guides { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(18px, 2.2vw, 30px); margin-top: 40px; }

/* --- clôture -------------------------------------------------------------- */
.r-a-close { padding-block: var(--section-y-lg); border-top: 1px solid var(--ink); }
.r-a-close .r-a-inner { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--col-gap); align-items: start; }
.r-a-close .r-label { grid-column: 1 / span 3; color: var(--olive); padding-top: 10px; }
.r-a-close .r-a-h2 { grid-column: 4 / span 6; }
.r-a-close .r-a-lead { grid-column: 4 / span 5; margin-top: 18px; font-size: var(--step-0); color: var(--ink-soft); }
.r-a-close .r-a-actions { grid-column: 4 / span 8; margin-top: 26px; }

/* --- mouvement : état réduit --------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .r-a-hero__copy .r-a-title, .r-a-hero__copy .r-a-lead, .r-a-hero__copy .r-a-actions,
  .r-a-hero__fig, .r-a-stats { animation: none; }
  .r-a-band__track { animation: none; }
}

/* --- responsive accueil --------------------------------------------------- */
@media (max-width: 1100px) {
  .r-a-hero__copy { grid-column: 1 / -1; }
  .r-a-hero__fig { grid-column: 1 / -1; margin-top: 38px; max-width: 560px; }
  .r-a-plate img { height: clamp(340px, 56vw, 500px); }
  .r-a-head > .r-label { grid-column: 1 / -1; padding-top: 0; }
  .r-a-h2 { grid-column: 1 / -1; }
  .r-a-head__lead, .r-a-head__side { grid-column: 1 / -1; margin-top: 18px; justify-self: start; }
  .r-a-toc__row { grid-template-columns: 38px minmax(0, 1fr) minmax(20px, 1fr) auto 44px 22px; }
  .r-a-toc__from { display: none; }
  .r-a-toc__thumb { width: 42px; height: 54px; }
  .r-a-picks__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-a-picks__grid > .r-card:first-child { grid-column: span 2; }
  .r-a-picks__grid > .r-card:first-child .r-card__media { min-height: 420px; }
  .r-a-picks__grid > .r-card:nth-child(2), .r-a-picks__grid > .r-card:nth-child(3) { margin-top: 0; }
  .r-a-story__copy, .r-a-story__fig { grid-column: 1 / -1; }
  .r-a-story__fig { max-width: 620px; }
  .r-a-atelier__copy, .r-a-atelier__fig { grid-column: 1 / -1; }
  .r-a-atelier__fig { max-width: 560px; margin-top: 34px; }
  .r-a-guides { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-a-close .r-label, .r-a-close .r-a-h2, .r-a-close .r-a-lead, .r-a-close .r-a-actions { grid-column: 1 / -1; }
  .r-a-close .r-label { padding-top: 0; }
  .r-a-stories { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
  .r-a-hero__meta { flex-direction: column; gap: 4px; }
  .r-a-hero__meta span:last-child { text-align: left; }
  .r-a-title { font-size: clamp(3.1rem, 14.5vw, 5.4rem); line-height: .86; }
  .r-a-lead { font-size: 15px; margin-top: 22px; }
  .r-a-hero__fig { margin-top: 28px; }
  .r-a-plate { padding: 22px 16px 0; }
  .r-a-plate img { height: clamp(290px, 78vw, 430px); }
  .r-a-fig__name { font-size: 19px; }
  .r-a-stats { grid-template-columns: 1fr 1fr; gap: 16px 18px; padding-bottom: 24px; }
  .r-a-stats__n { font-size: 34px; }
  .r-a-sec { padding-block: clamp(52px, 12vw, 76px); }
  .r-a-h2 { font-size: clamp(2.1rem, 9.4vw, 3.2rem); line-height: .95; }
  .r-a-toc__list { margin-top: 30px; }
  .r-a-toc__row { grid-template-columns: 30px minmax(0, 1fr) auto 38px; gap: 10px; min-height: 64px; padding: 8px 0; }
  .r-a-toc__leader, .r-a-toc__from, .r-a-toc__arrow { display: none; }
  .r-a-toc__name { font-size: 21px; }
  .r-a-toc__meta { font-size: 9px; }
  .r-a-toc__thumb { width: 34px; height: 44px; }
  .r-a-toc__row:hover { padding-inline: 4px; }
  .r-a-picks { padding-block: 52px; }
  .r-a-picks__grid { grid-template-columns: 1fr; gap: 34px; margin-top: 28px; }
  .r-a-picks__grid > .r-card:first-child { grid-column: auto; }
  .r-a-picks__grid > .r-card:first-child .r-card__media { min-height: 0; aspect-ratio: 4 / 5; }
  .r-a-picks__grid > .r-card:first-child .r-card__title { font-size: 24px; }
  .r-a-band { margin-top: 52px; }
  .r-a-band__track > span { font-size: 20px; padding: 12px 18px; }
  .r-a-point { grid-template-columns: 1fr; gap: 4px; }
  .r-a-story__copy .r-a-h2 { font-size: clamp(2.3rem, 10vw, 3.4rem); }
  .r-a-story__fig img { height: min(108vw, 430px); }
  .r-a-wall { grid-template-columns: repeat(auto-fit, minmax(64px, 1fr)); margin-top: 30px; }
  .r-a-wall a { height: 86px; }
  .r-a-stories { margin-top: 28px; }
  .r-a-storycard img { height: min(64vw, 300px); }
  .r-a-storycard__body { padding: 16px 18px 20px; }
  .r-a-atelier { margin-top: 52px; }
  .r-a-atelier .r-a-h2 { font-size: clamp(2.2rem, 9.6vw, 3.4rem); }
  .r-a-atelier__fig img { height: min(96vw, 400px); }
  .r-a-guides { grid-template-columns: 1fr; margin-top: 26px; }
  .r-a-close { padding-block: 72px; }
}


/* ==========================================================================
   A · MAISON ÉDITORIALE — boutique + carte produit · étape (b)
   En-tête resserré, filtres 5 groupes, tri, grille éditoriale 48/page,
   pagination, états vide et erreur. Aucune URL de filtre modifiée.
   ========================================================================== */

/* --- en-tête de page ------------------------------------------------------ */
.r-page-head { border-top: 1px solid var(--ink); padding-top: 18px; background: var(--paper); }
.r-crumbs { font-family: var(--font-mono); font-size: 10px; letter-spacing: .04em; color: var(--muted); }
.r-crumbs ol { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; list-style: none; margin: 0; padding: 0; }
.r-crumbs li + li::before { content: "/"; margin-right: 8px; color: var(--line-strong); }
.r-crumbs a { min-height: 44px; display: inline-flex; align-items: center; }
.r-crumbs a:hover { color: var(--olive); }
.r-page-head__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 32px; align-items: end; padding: 22px 0 30px; border-bottom: 1px solid var(--ink); }
.r-page-head .r-label { color: var(--olive); }
.r-page-head h1 { margin: 14px 0 0; font-family: var(--font-serif); font-weight: 400; font-size: clamp(3.4rem, 6.6vw, 7.4rem); line-height: .9; letter-spacing: -.035em; }
.r-page-head .r-lead { margin-top: 20px; max-width: 52ch; font-size: var(--step-0); }
.r-page-head__count { font-family: var(--font-mono); font-size: 10px; letter-spacing: .04em; color: var(--muted); white-space: nowrap; padding-bottom: 6px; }

/* --- layout boutique ------------------------------------------------------ */
.r-shop { display: grid; grid-template-columns: 264px minmax(0, 1fr); gap: clamp(32px, 4.2vw, 68px); align-items: start; padding-block: 42px 96px; }
.r-filters { position: sticky; top: calc(var(--header-h) + 26px); border-top: 1px solid var(--ink); padding-top: 14px; }
.r-filters__head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-bottom: 4px; }
.r-filters__head h2 { margin: 0; }
.r-filters__reset { text-transform: none; letter-spacing: .02em; color: var(--muted); border-bottom: 1px solid var(--line-strong); min-height: 44px; display: inline-flex; align-items: center; }
.r-filters__reset:hover { color: var(--ink); }
.r-filters__toggle { display: none; }
.r-filters__close { display: none; }

.r-filter { border-bottom: 1px solid var(--line); }
.r-filter summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 48px; padding: 10px 0; list-style: none; cursor: pointer; font-family: var(--font-serif); font-size: 20px; line-height: 1.05; letter-spacing: -.01em; }
.r-filter summary::-webkit-details-marker { display: none; }
.r-filter summary::after { content: "+"; flex: none; font-family: var(--font-sans); font-size: 14px; font-weight: 500; color: var(--muted); }
.r-filter[open] summary::after { content: "–"; }
.r-filter__list { display: grid; gap: 0; padding: 2px 0 12px; list-style: none; margin: 0; }
.r-chip { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 44px; padding: 0 8px; font-family: var(--font-sans); font-size: 13px; line-height: 1.2; color: var(--ink-soft); border: 1px solid transparent; }
.r-chip span { font-family: var(--font-mono); font-size: 9px; letter-spacing: .02em; color: var(--muted); }
.r-chip:hover { color: var(--olive); }
.r-filters .r-chip--on { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.r-filters .r-chip--on span { color: var(--on-dark-muted); }
.r-filters .r-chip--on:hover, .r-filters .r-chip--on:hover span { color: var(--paper); }
.r-filter__list--inline { display: flex; flex-wrap: wrap; gap: 4px; padding: 2px 0 12px; }
.r-filter__list--inline .r-chip { min-height: 44px; border: 1px solid var(--line); padding: 0 10px; font-size: 11px; }
.r-filter__list--inline .r-chip--on { border-color: var(--ink); }

.r-filters__finishes { display: flex; flex-wrap: wrap; gap: 5px; padding: 4px 0 14px; }
.r-finish-chip { display: inline-flex; align-items: center; gap: 7px; min-height: 44px; padding: 0 9px; border: 1px solid var(--line); font-family: var(--font-sans); font-size: 11px; color: var(--ink-soft); }
.r-finish-chip__dot { width: 13px; height: 13px; border-radius: 50%; flex: none; background: var(--c); box-shadow: inset 0 0 0 1px rgb(20 18 16 / .22); }
.r-finish-chip:hover { border-color: var(--ink); color: var(--ink); }
.r-finish-chip.is-active { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.r-finish-chip.is-active .r-finish-chip__dot { box-shadow: 0 0 0 2px var(--ink), 0 0 0 3px var(--paper); }

/* --- barre de tri --------------------------------------------------------- */
.r-shop__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 20px; min-height: 58px; padding: 6px 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--line); }
.r-shop__count { font-family: var(--font-mono); font-size: 10px; letter-spacing: .04em; color: var(--muted); }
.r-sort { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 16px; }
.r-sort__item { display: inline-flex; align-items: center; min-height: 44px; padding: 0 8px; font-family: var(--font-sans); font-size: 12px; font-weight: 500; color: var(--muted); border: 1px solid transparent; }
.r-sort__item:hover { color: var(--ink); }
.r-sort__item.is-active { background: var(--sulfur); border-color: var(--sulfur); color: var(--ink); font-weight: 700; }

/* --- grille éditoriale ---------------------------------------------------- */
.r-products--shop { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-auto-flow: dense; gap: clamp(32px, 3.4vw, 50px) clamp(16px, 2vw, 26px); margin-top: 28px; }
.r-products--shop > .r-card { grid-column: span 3; }
.r-products--shop > .r-card:nth-child(-n+2) { grid-column: span 6; }
.r-products--shop > .r-card:nth-child(-n+2) .r-card__media { aspect-ratio: auto; height: clamp(360px, 33vw, 500px); }
.r-products--shop > .r-card:nth-child(-n+2) .r-card__img { padding: 7%; }
.r-products--shop > .r-card:nth-child(-n+2) .r-card__title { font-size: clamp(23px, 2.1vw, 31px); }
.r-products--shop .r-card__title { font-size: 16.5px; line-height: 1.12; min-height: 2.25em; }
.r-products--shop .r-card__add { min-width: 40px; min-height: 40px; font-size: 16px; }
.r-products--shop .r-card__meta { min-height: 14px; flex-wrap: wrap; row-gap: 2px; }
.r-products--shop .r-card__ref { margin-left: auto; }

/* --- état vide / erreur --------------------------------------------------- */
.r-empty { display: flex; flex-direction: column; align-items: flex-start; text-align: left; color: var(--ink); margin-top: 32px; padding: clamp(30px, 5vw, 64px); border: 1px solid var(--line); background: var(--paper-2); }
.r-empty .r-link-arrow { text-decoration: none; }
.r-empty .r-label { color: var(--olive); }
.r-empty .r-display { font-size: clamp(2.1rem, 4vw, 4rem); line-height: .96; margin: 14px 0 20px; max-width: 18ch; }
.r-empty .r-lead { margin: 0; }
.r-empty--error { background: color-mix(in srgb, var(--blush) 38%, var(--paper)); border-color: var(--blush); }
.r-shop-error { padding-block: 48px 96px; }
.r-empty--error .r-label { color: var(--terra); }

/* --- pagination ----------------------------------------------------------- */
.r-pager { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 3px; margin-top: 56px; padding-top: 28px; border-top: 1px solid var(--line); }
.r-pager a, .r-pager span { display: inline-grid; place-items: center; min-width: 44px; min-height: 44px; padding: 0 8px; font-family: var(--font-mono); font-size: 11px; color: var(--ink-soft); border: 1px solid transparent; }
.r-pager a:hover { border-color: var(--ink); }
.r-pager a.is-active { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.r-pager span { color: var(--muted); }
.r-pager a[rel="prev"], .r-pager a[rel="next"] { font-size: 14px; }

/* --- carte produit : référence discrète ----------------------------------- */
.r-card__ref { font-family: var(--font-mono); font-size: 9px; letter-spacing: .02em; color: var(--muted); }

/* --- responsive ----------------------------------------------------------- */
@media (max-width: 1180px) {
  .r-shop { grid-template-columns: 224px minmax(0, 1fr); gap: 32px; }
}
@media (max-width: 1024px) {
  .r-shop { grid-template-columns: minmax(0, 1fr); padding-block: 28px 72px; }
  .r-filters { position: static; display: none; border: 1px solid var(--line); background: var(--paper-2); padding: 16px 18px; margin-bottom: 12px; }
  .r-filters[data-open] { display: block; position: fixed; left: 0; right: 0; bottom: 0; top: auto; max-height: min(82vh, 760px); overflow: auto; z-index: calc(var(--z-drawer) + 2); border: 1px solid var(--ink); border-bottom: 0; background: var(--paper); padding: 18px 20px calc(24px + env(safe-area-inset-bottom)); box-shadow: 0 -30px 60px -40px rgb(20 18 16 / .5); }
  .r-filters[data-open] .r-filters__head { position: sticky; top: -18px; background: var(--paper); padding-top: 6px; z-index: 2; }
  .r-filters__close { display: inline-grid; place-items: center; min-width: 44px; min-height: 44px; margin-left: auto; font-size: 22px; line-height: 1; color: var(--ink); }
  .r-filters__toggle { display: inline-flex; order: -1; }
  .r-filters__head { margin-bottom: 6px; }
  .r-shop__bar { gap: 8px; }
  .r-shop__count { order: 1; }
  .r-sort { order: 2; flex: 1 1 100%; gap: 0 10px; }
  .r-sort__item { font-size: 11px; padding: 0 6px; }
  .r-products--shop > .r-card { grid-column: span 4; }
  .r-products--shop > .r-card:nth-child(-n+2) { grid-column: span 6; }
  .r-page-head__row { grid-template-columns: minmax(0, 1fr); }
  .r-page-head__count { justify-self: start; padding-bottom: 0; }
}
@media (max-width: 760px) {
  .r-page-head h1 { font-size: clamp(3rem, 13vw, 4.4rem); }
  .r-page-head .r-lead { font-size: 15px; }
  .r-products--shop > .r-card { grid-column: span 6; }
  .r-products--shop > .r-card:nth-child(-n+2) { grid-column: span 12; }
  .r-products--shop > .r-card:nth-child(-n+2) .r-card__media { height: min(82vw, 400px); }
  .r-products--shop > .r-card:nth-child(-n+2) .r-card__title { font-size: 22px; }
  .r-products--shop .r-card__title { font-size: 15px; min-height: 2.4em; }
  .r-sort { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .r-sort::-webkit-scrollbar { display: none; }
  .r-sort__item { white-space: nowrap; }
  .r-pager { margin-top: 40px; }
  .r-crumbs { font-size: 9px; }
}
@media (max-width: 460px) {
  .r-products--shop > .r-card { grid-column: span 6; }
  .r-products--shop > .r-card:nth-child(-n+2) { grid-column: span 12; }
  .r-products--shop .r-card__title { font-size: 13.5px; }
  .r-products--shop .r-card__meta { font-size: 9px; }
  .r-products--shop .r-card__price { font-size: 11px; }
  .r-products--shop .r-card__add { min-width: 44px; min-height: 44px; }
}
@media (prefers-reduced-motion: reduce) {
  .r-card__media img, .r-card__img { transition: none; }
}


/* ==========================================================================
   A · MAISON ÉDITORIALE — fiche produit + finitions · étape (c)
   La fiche garde tous les data-hooks de product.js (galerie, options, quantité,
   ajout, buybar). Les finitions sont triées par teinte à l'affichage.
   ========================================================================== */

/* --- fiche ---------------------------------------------------------------- */
.r-product { padding-bottom: 8px; background: var(--paper); }
.r-product__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(28px, 4vw, 64px); align-items: start; padding-block: 22px 64px; }
.r-product__media { grid-column: 1 / span 7; min-width: 0; }
.r-product__info { grid-column: 8 / span 5; min-width: 0; }

.r-product__stage { position: relative; display: grid; place-items: center; min-height: clamp(420px, 44vw, 640px); padding: clamp(18px, 3vw, 40px); border: 1px solid var(--line); overflow: hidden;
  background: radial-gradient(60% 48% at 50% 46%, color-mix(in srgb, var(--finish, var(--olive)) 16%, transparent) 0%, rgb(20 18 16 / 0) 72%), linear-gradient(180deg, var(--paper-3) 0%, var(--paper) 88%); }
.r-product__stage::after { content: ""; position: absolute; left: 18%; right: 18%; bottom: 7%; height: 9%; border-radius: 50%; background: radial-gradient(50% 50% at 50% 50%, rgb(20 18 16 / .26), rgb(20 18 16 / 0) 72%); filter: blur(8px); pointer-events: none; }
.r-product__stage img { position: relative; z-index: 1; width: 100%; height: clamp(380px, 40vw, 590px); object-fit: contain; filter: drop-shadow(0 28px 34px rgb(20 18 16 / .22)); will-change: transform; }
.r-product__stage .r-tag { position: absolute; z-index: 2; top: 16px; left: 16px; background: var(--sulfur); color: var(--ink); border: 1px solid var(--sulfur); font-family: var(--font-sans); font-size: 9px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; padding: 7px 10px; }
.r-product__thumbs { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.r-product__thumbs button { width: 64px; height: 80px; min-width: 44px; min-height: 44px; border: 1px solid var(--line); background: var(--paper-2); display: grid; place-items: center; padding: 5px; cursor: pointer; }
.r-product__thumbs button:hover { border-color: var(--ink); }
.r-product__thumbs button.is-active { border-color: var(--ink); background: var(--sulfur); }
.r-product__thumbs img { width: 100%; height: 100%; object-fit: contain; }
.r-product__stage-note { margin-top: 12px; font-family: var(--font-mono); font-size: 10px; letter-spacing: .04em; color: var(--muted); display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; }

.r-product__family { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 12px; font-family: var(--font-mono); font-size: 10px; letter-spacing: .06em; color: var(--muted); text-transform: uppercase; }
.r-product__family a { color: var(--olive); border-bottom: 1px solid transparent; min-height: 44px; display: inline-flex; align-items: center; }
.r-product__family a:hover { border-color: var(--olive); }
.r-product__title { margin: 10px 0 16px; font-family: var(--font-serif); font-weight: 400; font-size: clamp(2.5rem, 4.4vw, 4.2rem); line-height: .92; letter-spacing: -.03em; }
.r-product__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 7px 9px; font-family: var(--font-sans); font-size: 11px; font-weight: 500; letter-spacing: .04em; color: var(--ink-soft); }
.r-product__meta .r-swatch { width: 13px; height: 13px; border-radius: 50%; border: 1px solid var(--line-strong); display: inline-block; }
.r-product__meta .r-dot { width: 3px; height: 3px; border-radius: 50%; background: var(--line-strong); display: inline-block; }
.r-product__stock { color: var(--muted); display: inline-flex; align-items: center; gap: 6px; }
.r-product__stock::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: var(--line-strong); display: inline-block; }
.r-product__stock.is-low::before { background: var(--sulfur); }
.r-product__stock.is-out::before { background: var(--terra); }
.r-product__stock.is-low { color: var(--ink); }
.r-product__stock.is-out { color: var(--terra); }
.r-product__pricebox { display: flex; align-items: baseline; gap: 14px; margin: 22px 0 8px; padding-top: 18px; border-top: 1px solid var(--line); }
.r-product__price { font-family: var(--font-mono); font-size: clamp(26px, 2.6vw, 34px); line-height: 1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.r-product__tax { font-size: 10px; color: var(--muted); }

.r-buy { margin-top: 18px; }
.r-buy__options { border: 0; padding: 0; margin: 0; display: grid; gap: 6px; }
.r-buy__options legend { margin-bottom: 8px; }
.r-radio { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: center; min-height: 66px; padding: 10px 14px; border: 1px solid var(--line); background: var(--paper); cursor: pointer; transition: border-color var(--dur-fast), background var(--dur-fast); }
.r-radio input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; }
.r-radio:hover { border-color: var(--ink); }
.r-radio.is-active { border-color: var(--ink); background: var(--paper-2); }
.r-radio.is-best { border-color: var(--sulfur); box-shadow: inset 3px 0 0 var(--sulfur); }
.r-radio__label { display: flex; flex-direction: column; gap: 2px; font-family: var(--font-sans); font-size: 14px; font-weight: 600; }
.r-radio__label small { font-family: var(--font-mono); font-size: 9.5px; font-weight: 400; letter-spacing: .02em; color: var(--muted); }
.r-radio__price { text-align: right; display: flex; flex-direction: column; gap: 2px; align-items: flex-end; }
.r-radio__amount { font-family: var(--font-mono); font-size: 14px; font-variant-numeric: tabular-nums; }
.r-radio__price small { font-size: 9px; letter-spacing: .02em; color: var(--muted); }
.r-buy__row { display: flex; align-items: stretch; gap: 10px; margin-top: 16px; flex-wrap: wrap; }
.r-qty { display: inline-flex; align-items: stretch; border: 1px solid var(--line); }
.r-qty button { min-width: 44px; min-height: 50px; display: grid; place-items: center; font-size: 16px; color: var(--ink); }
.r-qty button:hover { background: var(--paper-2); }
.r-qty input { width: 52px; min-height: 50px; border: 0; border-inline: 1px solid var(--line); text-align: center; font-family: var(--font-mono); font-size: 13px; background: transparent; -moz-appearance: textfield; }
.r-qty input::-webkit-outer-spin-button, .r-qty input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.r-buy .r-btn--add { flex: 1; min-width: 180px; }
.r-btn--add[disabled] { background: var(--paper-3); color: var(--muted); border-color: var(--line); cursor: not-allowed; }
.r-form__msg { margin-top: 12px; font-size: 12px; }
.r-form__msg.is-ok { color: var(--olive); }
.r-form__msg.is-error { color: var(--terra); }

.r-reassure { list-style: none; margin: 22px 0 0; padding: 14px 0 0; border-top: 1px solid var(--line); display: grid; gap: 2px; }
.r-reassure li { font-size: 11px; line-height: 1.5; color: var(--muted); }
.r-reassure a { display: inline-flex; align-items: center; min-height: 44px; color: var(--ink); border-bottom: 1px solid var(--line-strong); }
.r-reassure a:hover { color: var(--olive); border-color: var(--olive); }

.r-product__variant { margin-top: 20px; }
.r-product__variant .r-label { margin-bottom: 8px; color: var(--olive); }
.r-swatches { display: flex; flex-wrap: wrap; gap: 8px; }
.r-finish-choices { display: flex; flex-wrap: wrap; gap: 6px; }
.r-finish-choice { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 11px; border: 1px solid var(--line); font-family: var(--font-sans); font-size: 11px; color: var(--ink-soft); }
.r-finish-choice__dot { width: 13px; height: 13px; border-radius: 50%; flex: none; background: var(--c); box-shadow: inset 0 0 0 1px rgb(20 18 16 / .22); }
.r-finish-choice:hover { border-color: var(--ink); color: var(--ink); }
.r-swatch-btn { width: 34px; height: 34px; min-width: 44px; min-height: 44px; border: 1px solid transparent; border-radius: 50%; background: var(--c); box-shadow: inset 0 0 0 2px var(--paper), inset 0 0 0 3px rgb(20 18 16 / .18); }
.r-swatch-btn:hover { box-shadow: inset 0 0 0 2px var(--paper), inset 0 0 0 3px var(--ink); }
.r-widths { display: flex; flex-wrap: wrap; gap: 6px; }
.r-width-btn { display: inline-flex; align-items: center; min-height: 44px; padding: 0 12px; border: 1px solid var(--line); font-family: var(--font-mono); font-size: 11px; color: var(--ink-soft); }
.r-width-btn:hover { border-color: var(--ink); color: var(--ink); }

.r-answer { margin-top: 22px; font-size: 12px; line-height: 1.65; color: var(--muted); border-top: 1px solid var(--line); padding-top: 16px; }

.r-accordion { margin-top: 8px; border-top: 1px solid var(--line); }
.r-accordion details { border-bottom: 1px solid var(--line); }
.r-accordion summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 52px; padding: 10px 0; cursor: pointer; list-style: none; font-family: var(--font-serif); font-size: 20px; }
.r-accordion summary::-webkit-details-marker { display: none; }
.r-accordion summary::after { content: "+"; font-family: var(--font-sans); font-size: 14px; color: var(--muted); }
.r-accordion details[open] summary::after { content: "–"; }
.r-accordion p { font-size: 13px; line-height: 1.6; color: var(--ink-soft); margin: 0 0 12px; }
.r-product__specs-list { display: grid; grid-template-columns: 1fr 1fr; gap: 0 24px; margin: 0 0 14px; }
.r-product__specs-list > div { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--line); }
.r-product__specs-list dt { font-size: 11px; color: var(--muted); }
.r-product__specs-list dd { margin: 0; font-family: var(--font-mono); font-size: 10.5px; text-align: right; }
.r-product__faq p { margin-bottom: 14px; }
.r-product__faq strong { font-family: var(--font-sans); font-size: 13px; font-weight: 600; color: var(--ink); }

.r-buybar { display: none; }
.r-product__related { border-top: 1px solid var(--line); }
.r-product__related .r-products { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 40px 22px; margin-top: 30px; }

/* --- finitions ------------------------------------------------------------ */
.r-page-head--finitions { padding-bottom: 0; margin-bottom: 0; }
.r-page-head--finitions .r-page-head__row { padding-bottom: 18px; }
.r-page-head--finitions h1 { font-size: clamp(2.8rem, 5.2vw, 5.8rem); }
.r-colour-page { padding-top: 14px; border-top: 0; }
.r-colour-page .r-colour-groups { margin-top: 10px; }
.r-colour-toolbar { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 24px; border-top: 1px solid var(--ink); padding-top: 10px; }
.r-colour-toolbar .r-note { max-width: 44ch; }
.r-colour-groups { margin-top: 10px; }
.r-colour-group { display: grid; gap: 6px; border-top: 1px solid var(--line); padding-top: 8px; margin-top: 12px; }
.r-colour-group:first-child { border-top-color: var(--ink); }
.r-colour-group > .r-label { color: var(--olive); margin: 0; }
.r-colour-group .r-colour-wall { margin-top: 0; }
.r-colour-wall { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); gap: 4px; margin-top: 12px; background: transparent; border: 0; }
.r-colour-tile { display: flex; flex-direction: column; background: var(--paper); border: 1px solid var(--line); min-width: 0; }
.r-colour-tile__chip { display: block; height: 56px; background: var(--c); box-shadow: inset 0 0 0 1px rgb(20 18 16 / .14); }
.r-colour-tile__body { display: grid; gap: 1px; align-content: start; padding: 5px 7px 7px; border-top: 1px solid var(--line); }
.r-colour-tile__name { font-family: var(--font-serif); font-size: 13px; line-height: 1.06; letter-spacing: -.01em; min-height: 2.12em; }
.r-colour-tile__meta { font-family: var(--font-mono); font-size: 9px; letter-spacing: .02em; color: var(--muted); white-space: nowrap; }
.r-colour-tile:hover { outline: 1px solid var(--ink); outline-offset: -1px; }
.r-colour-tile:hover .r-colour-tile__chip { outline: 1px solid var(--ink); outline-offset: -2px; }
.r-colour-selected .r-products--shop { margin-top: 30px; }
.r-colour-selected .r-a-head__side { align-self: start; }

@media (max-width: 1100px) {
  .r-product__media, .r-product__info { grid-column: 1 / -1; }
  .r-product__stage { min-height: 0; }
  .r-product__stage img { height: clamp(320px, 56vw, 520px); }
  .r-product__info { margin-top: 8px; }
  .r-product__related .r-products { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .r-colour-wall { grid-template-columns: repeat(8, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .r-colour-wall { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .r-product__grid { padding-block: 14px 92px; gap: 24px; }
  .r-product__title { font-size: clamp(2.2rem, 9.6vw, 3.2rem); }
  .r-product__thumbs button { width: 56px; height: 70px; }
  .r-product__stage img { height: min(74vw, 430px); }
  .r-product__pricebox { margin-top: 16px; }
  .r-buy__row { gap: 8px; }
  .r-buy .r-btn--add { min-width: 0; width: 100%; flex: 1 1 100%; }
  .r-qty { flex: 1; }
  .r-qty input { flex: 1; }
  .r-product__specs-list { grid-template-columns: 1fr; }
  .r-product__related .r-products { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px 16px; }
  .r-colour-wall { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .r-colour-tile__chip { height: 56px; }
  .r-colour-tile__name { font-size: 13px; }
  .r-buybar { display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--z-sticky); align-items: center; justify-content: space-between; gap: 12px; padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); background: color-mix(in srgb, var(--paper) 96%, transparent); border-top: 1px solid var(--ink); backdrop-filter: blur(10px); transform: translateY(105%); transition: transform var(--dur) var(--ease-silk); }
  .r-buybar.is-on { transform: none; }
  .r-buybar__price strong { font-family: var(--font-mono); font-size: 15px; display: block; }
  .r-buybar__price span { font-size: 9px; color: var(--muted); }
  .r-buybar .r-btn { min-height: 44px; padding-inline: 16px; }
}
@media (max-width: 560px) {
  .r-colour-wall { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 460px) {
  .r-colour-wall { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .r-product__related .r-products { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  .r-buybar { transition: none; }
}


/* ==========================================================================
   A · MAISON ÉDITORIALE — moments, carnet, studio, échantillons · étape (d)
   ========================================================================== */

/* --- moments (liste) ------------------------------------------------------ */
.r-moments-section { border-top: 0; padding-top: 0; }
.r-moments-section .r-moment:first-child { border-top: 0; }
.r-moments { counter-reset: moment; }
.r-moment { counter-increment: moment; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(24px, 3.4vw, 52px); padding-block: clamp(34px, 4.4vw, 64px); border-top: 1px solid var(--line); }
.r-moment:first-child { border-top: 1px solid var(--ink); }
.r-moment__head { grid-column: 1 / span 4; display: grid; grid-template-columns: 38px minmax(0, 1fr); gap: 16px; align-items: start; }
.r-moment__index::before { content: counter(moment, decimal-leading-zero); font-family: var(--font-mono); font-size: 10px; letter-spacing: .04em; color: var(--muted); }
.r-moment__copy .r-label { color: var(--olive); }
.r-moment__title { margin: 8px 0 10px; font-family: var(--font-serif); font-size: clamp(28px, 3.2vw, 42px); line-height: .98; letter-spacing: -.025em; }
.r-moment__title a { display: inline-flex; align-items: center; min-height: 44px; border-bottom: 1px solid transparent; }
.r-moment__title a:hover { border-color: var(--ink); }
.r-moment__cards:empty { display: none; }
.r-moment:has(.r-moment__cards:empty) .r-moment__head { grid-column: 1 / -1; max-width: 980px; }
.r-moment:has(.r-moment__cards:empty) .r-moment__lead { max-width: 58ch; }
.r-moment__lead { font-size: 13px; line-height: 1.6; color: var(--ink-soft); max-width: 34ch; }
.r-moment__cards { grid-column: 5 / -1; min-width: 0; }
.r-moment__cards.r-products { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px 18px; margin: 0; }

/* --- moment (page) -------------------------------------------------------- */
.r-occasion-intro .r-two-col { align-items: start; }
.r-occasion-intro .r-prose { max-width: 62ch; }
.r-occasion-intro .r-prose p { font-size: 15px; line-height: 1.7; color: var(--ink-soft); margin-bottom: 18px; }
.r-tips { counter-reset: tip; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); margin-top: 28px; }
.r-tip { background: var(--paper); padding: 22px 20px 24px; display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 12px; align-items: start; }
.r-tip__num { counter-increment: tip; }
.r-tip__num::before { content: counter(tip, decimal-leading-zero); font-family: var(--font-mono); font-size: 10px; color: var(--olive); }
.r-tip p { font-size: 13px; line-height: 1.6; color: var(--ink-soft); margin: 0; }
.r-occasion-products .r-products--shop { margin-top: 32px; }
.r-other-occ { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; }
.r-occ-chip { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 14px; border: 1px solid var(--line); font-family: var(--font-sans); font-size: 12px; font-weight: 600; color: var(--ink-soft); }
.r-occ-chip:hover { border-color: var(--ink); color: var(--ink); }

/* --- carnet --------------------------------------------------------------- */
.r-journal-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(24px, 3vw, 40px); }
.r-journal-card { display: flex; flex-direction: column; border-top: 1px solid var(--ink); padding-top: 14px; }
.r-journal-card__media { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--paper-2); }
.r-journal-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--dur-slow) var(--ease-silk); }
.r-journal-card:hover .r-journal-card__media img { transform: scale(1.03); }
.r-journal-card__body { padding-top: 14px; }
.r-journal-card__title { margin: 8px 0 10px; font-family: var(--font-serif); font-size: clamp(24px, 2.2vw, 30px); line-height: 1.04; letter-spacing: -.02em; }
.r-journal-card__title a:hover { text-decoration: underline; text-underline-offset: 4px; }
.r-journal-card__excerpt { font-size: 13px; line-height: 1.6; color: var(--ink-soft); max-width: 40ch; margin-bottom: 14px; }

.r-journal-empty { padding-block: clamp(44px, 7vw, 96px); }
.r-journal-empty__inner { border-top: 1px solid var(--ink); padding-top: clamp(30px, 4vw, 56px); display: grid; justify-items: start; max-width: 760px; }
.r-journal-empty__soon { margin: 18px 0 12px; font-family: var(--font-serif); font-size: clamp(64px, 8.4vw, 132px); line-height: .86; letter-spacing: -.04em; color: var(--ink); }
.r-journal-empty__text { max-width: 52ch; font-size: 15px; line-height: 1.65; color: var(--ink-soft); margin-bottom: 26px; }
.r-journal-preview { padding-block: 10px 64px; }
.r-journal-lines { margin-top: 30px; display: grid; gap: 1px; background: var(--line); border: 1px solid var(--line); }
.r-journal-lines span { display: block; height: 14px; background: var(--paper); }
.r-journal-lines span:nth-child(2) { width: 74%; }
.r-journal-lines span:nth-child(3) { width: 46%; }

/* --- studio --------------------------------------------------------------- */
.r-studio { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(28px, 4vw, 64px); align-items: start; }
.r-studio__compose { grid-column: 1 / span 5; position: sticky; top: calc(var(--header-h, 84px) + 18px); border: 1px solid var(--line); background: var(--paper-2); padding: clamp(18px, 2.4vw, 28px); }
.r-studio__slots { counter-reset: slot; display: grid; gap: 1px; background: var(--line); border: 1px solid var(--line); }
.r-studio__slot { counter-increment: slot; display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 10px; align-items: start; background: var(--paper); padding: 14px 14px 12px; min-height: 94px; }
.r-studio__slot-num::before { content: counter(slot, decimal-leading-zero); font-family: var(--font-mono); font-size: 10px; color: var(--muted); }
.r-studio__slot-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--line); padding-bottom: 8px; }
.r-studio__slot-label { font-family: var(--font-serif); font-size: 21px; line-height: 1; letter-spacing: -.01em; }
.r-studio__slot-empty { width: 10px; height: 10px; border: 1px solid var(--line-strong); border-radius: 50%; flex: none; }
.r-studio__slot.is-filled .r-studio__slot-empty { background: var(--sulfur); border-color: var(--sulfur); }
.r-studio__picked { list-style: none; grid-column: 2; margin: 6px 0 0; padding: 0; display: grid; gap: 4px; }
.r-studio__picked:empty { min-height: 28px; }
.r-studio__picked li { display: grid; grid-template-columns: minmax(0, 1fr) auto 44px; gap: 10px; align-items: center; min-height: 44px; border-top: 1px solid var(--line); font-size: 11px; }
.r-studio__picked li span:first-child { font-family: var(--font-sans); font-weight: 600; color: var(--ink-soft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.r-studio__picked li span:nth-child(2) { font-family: var(--font-mono); font-size: 10px; white-space: nowrap; }
.r-studio__picked li button { min-width: 44px; min-height: 44px; display: grid; place-items: center; font-size: 16px; color: var(--muted); }
.r-studio__picked li button:hover { color: var(--terra); }
.r-studio__total { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--ink); }
.r-studio__total-value { font-family: var(--font-serif); font-size: clamp(30px, 3vw, 40px); line-height: 1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.r-studio__qty { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px; font-family: var(--font-mono); font-size: 10px; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.r-studio__qty input { width: 76px; min-height: 44px; border: 1px solid var(--line); background: var(--paper); text-align: center; font-family: var(--font-mono); font-size: 13px; }
.r-studio__compose .r-btn--block { width: 100%; margin-top: 12px; }
.r-studio__compose .r-note { margin-top: 14px; }
.r-studio__tray { grid-column: 6 / -1; min-width: 0; }
.r-studio__tray-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 24px; border-top: 1px solid var(--ink); padding-top: 12px; }
.r-studio__tray-head .r-note { max-width: 42ch; }
.r-studio__tray .r-products { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 18px; margin-top: 20px; }
.r-studio__piece { text-align: left; width: 100%; border: 1px solid transparent; background: transparent; padding: 0; cursor: pointer; }
.r-studio__piece .r-card__media { aspect-ratio: 4 / 5; background: var(--paper-2); display: grid; place-items: center; overflow: hidden; }
.r-studio__piece .r-card__img { width: 86%; height: 86%; object-fit: contain; transition: transform var(--dur) var(--ease-silk); }
.r-studio__piece:hover .r-card__img { transform: scale(1.025); }
.r-studio__piece[aria-pressed="true"] { border-color: var(--ink); background: var(--paper-2); }
.r-studio__piece[aria-pressed="true"] .r-card__media { background: var(--sulfur); }
.r-studio__piece[aria-pressed="true"] .r-studio__add-mark { background: var(--ink); color: var(--sulfur); }
.r-studio__add-mark { width: 28px; height: 28px; border: 1px solid var(--line-strong); display: grid; place-items: center; font-size: 15px; line-height: 1; }
.r-studio__piece .r-card__body { display: block; padding-top: 10px; }
.r-studio__piece .r-card__title { font-family: var(--font-serif); font-size: 19px; line-height: 1.08; display: block; }
.r-studio__piece .r-card__foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 8px; }

/* --- échantillons --------------------------------------------------------- */
.r-sample-head { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(28px, 4vw, 64px); align-items: end; }
.r-sample-head__copy { grid-column: 1 / span 6; }
.r-sample-head__copy .r-display { margin: 8px 0 18px; }
.r-sample-price { margin: 22px 0 4px; font-family: var(--font-mono); font-size: clamp(26px, 2.8vw, 36px); line-height: 1; letter-spacing: -.02em; }
.r-sample-head__copy .r-note { margin-bottom: 20px; }
.r-sample-cta { margin-top: 18px; }
.r-sample-fig { grid-column: 7 / -1; margin: 0; border: 1px solid var(--line); background: var(--paper-2); padding: clamp(20px, 3vw, 40px); display: grid; place-items: center; }
.r-sample-fig img { width: 100%; max-height: 440px; object-fit: contain; }
.r-sample-fig figcaption { margin-top: 14px; font-family: var(--font-mono); font-size: 10px; letter-spacing: .04em; color: var(--muted); text-align: center; }
.r-sample-body { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(28px, 4vw, 64px); align-items: start; }
.r-sample-points { grid-column: 1 / span 5; }
.r-sample-list { margin-top: 24px; counter-reset: sample; list-style: none; padding: 0; }
.r-sample-list li { position: relative; font-size: 13px; line-height: 1.6; color: var(--ink-soft); padding: 12px 0 12px 40px; border-top: 1px solid var(--line); }
.r-sample-list li::before { counter-increment: sample; content: counter(sample, decimal-leading-zero); position: absolute; left: 0; top: 14px; font-family: var(--font-mono); font-size: 9px; letter-spacing: .04em; color: var(--olive); }
.r-sample-body > .r-products { grid-column: 6 / -1; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 18px; margin: 0; }

@media (max-width: 1100px) {
  .r-moment { grid-template-columns: 1fr; }
  .r-moment__head, .r-moment__cards { grid-column: 1 / -1; }
  .r-moment__cards.r-products { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .r-journal-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-studio__compose { grid-column: 1 / -1; position: static; }
  .r-studio__tray { grid-column: 1 / -1; }
  .r-studio__tray .r-products { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .r-sample-head__copy { grid-column: 1 / span 7; }
  .r-sample-fig { grid-column: 8 / -1; }
  .r-sample-points { grid-column: 1 / -1; }
  .r-sample-body > .r-products { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
  .r-tips { grid-template-columns: 1fr; }
  .r-moment__cards.r-products { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 14px; }
  .r-journal-grid { grid-template-columns: 1fr; }
  .r-journal-empty__soon { font-size: clamp(56px, 17vw, 88px); }
  .r-studio__tray .r-products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-studio__slot { grid-template-columns: 26px minmax(0, 1fr); }
  .r-studio__slot-label { font-size: 19px; }
  .r-sample-head { grid-template-columns: 1fr; }
  .r-sample-head__copy, .r-sample-fig { grid-column: 1 / -1; }
  .r-sample-fig { margin-top: 8px; }
  .r-sample-body > .r-products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 460px) {
  .r-moment__cards.r-products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-sample-body > .r-products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-studio__tray .r-products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}


/* ==========================================================================
   A · MAISON ÉDITORIALE — panier, tunnel, merci, recherche, 404 · étape (e)
   ========================================================================== */

/* --- étapes communes ------------------------------------------------------ */
.r-steps { display: flex; flex-wrap: wrap; gap: 0; margin: 24px 0 0; padding: 0; list-style: none; border-top: 1px solid var(--line); }
.r-steps li { flex: 1 1 0; min-width: 120px; padding: 12px 0 0; border-top: 1px solid transparent; margin-top: -1px; font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.r-steps li.is-on { border-top-color: var(--ink); color: var(--ink); }
.r-steps li.is-done { border-top-color: var(--olive); color: var(--olive); }

/* --- panier --------------------------------------------------------------- */
.r-cart-layout { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(28px, 4vw, 64px); align-items: start; }
.r-cart-main { grid-column: 1 / span 7; min-width: 0; }
.r-cart-aside { grid-column: 8 / -1; position: sticky; top: calc(var(--header-h, 84px) + 18px); border-top: 1px solid var(--ink); padding-top: 16px; }
.r-cart-aside__title { font-family: var(--font-serif); font-size: clamp(26px, 2.6vw, 34px); line-height: 1; letter-spacing: -.02em; margin-bottom: 18px; }
.r-cart__sample { margin-bottom: 14px; padding: 12px 14px; border: 1px solid var(--sulfur); background: color-mix(in srgb, var(--sulfur) 20%, var(--paper)); font-size: 11px; line-height: 1.5; color: var(--ink); }
.r-cart__lines { border-top: 1px solid var(--ink); }
.r-cart__loading { padding: 26px 0; font-family: var(--font-mono); font-size: 10px; letter-spacing: .04em; color: var(--muted); }
.r-cart-line { display: grid; grid-template-columns: 96px minmax(0, 1fr) auto; gap: 16px; align-items: start; padding: 18px 0; border-bottom: 1px solid var(--line); }
.r-cart-line__media { display: grid; place-items: center; width: 96px; height: 120px; border: 1px solid var(--line); background: var(--paper-2); overflow: hidden; }
.r-cart-line__media img { width: 88%; height: 88%; object-fit: contain; }
.r-cart-line__media--empty { background: repeating-linear-gradient(135deg, var(--paper-2), var(--paper-2) 8px, var(--paper) 8px, var(--paper) 16px); }
.r-cart-line__info { display: grid; gap: 6px; min-width: 0; }
.r-cart-line__name { display: inline-block; padding-block: 10px; margin-block: -10px; font-family: var(--font-serif); font-size: clamp(20px, 1.8vw, 25px); line-height: 1.02; letter-spacing: -.015em; color: var(--ink); }
.r-cart-line__name:hover { text-decoration: underline; text-underline-offset: 3px; }
.r-cart-line__opt { font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .04em; color: var(--muted); }
.r-cart-line__price { display: grid; justify-items: end; gap: 12px; }
.r-cart-line__price > span { font-family: var(--font-mono); font-size: 15px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.r-cart-line__x { display: grid; place-items: center; min-width: 44px; min-height: 44px; border: 1px solid var(--line); color: var(--muted); font-size: 18px; }
.r-cart-line__x:hover { border-color: var(--terra); color: var(--terra); }
.r-qty { display: inline-flex; align-items: stretch; border: 1px solid var(--line); width: fit-content; margin-top: 2px; }
.r-qty button { min-width: 44px; min-height: 44px; display: grid; place-items: center; color: var(--ink); font-size: 15px; }
.r-qty button:hover { background: var(--paper-2); }
.r-qty [data-line-qty] { min-width: 44px; min-height: 44px; display: grid; place-items: center; border-inline: 1px solid var(--line); font-family: var(--font-mono); font-size: 12px; }
.r-empty-cart { padding: 28px 0 36px; }
.r-empty-cart p { font-family: var(--font-serif); font-size: clamp(26px, 3vw, 38px); line-height: 1.02; margin-bottom: 18px; }
.r-cart-aside .r-sum { margin-top: 4px; }
.r-cart-aside .r-btn { margin-top: 10px; }
.r-cart-aside .r-hint { margin-top: 12px; }
.r-shipmsg { min-height: 18px; margin: 2px 0 4px; font-size: 11px; color: var(--olive); }
.r-shipmsg:empty { display: none; }

/* --- tunnel --------------------------------------------------------------- */
.r-checkout { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(28px, 4vw, 64px); align-items: start; }
.r-checkout__form { grid-column: 1 / span 7; min-width: 0; }
.r-checkout__summary { grid-column: 8 / -1; position: sticky; top: calc(var(--header-h, 84px) + 18px); border-top: 1px solid var(--ink); padding-top: 16px; }
.r-checkout__step { border: 0; padding: 0; margin: 0 0 26px; }
.r-checkout__step[hidden] { display: none; }
.r-checkout__step > legend { width: 100%; display: flex; align-items: baseline; gap: 12px; padding: 14px 0 12px; border-top: 1px solid var(--ink); margin-bottom: 18px; font-family: var(--font-serif); font-size: clamp(24px, 2.6vw, 34px); line-height: 1; }
.r-step-num { font-family: var(--font-mono); font-size: 10px; letter-spacing: .06em; color: var(--olive); }
.r-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 22px; }
.r-form__grid > .r-field, .r-form__grid > label, .r-field { display: grid; gap: 6px; align-content: start; font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .05em; text-transform: uppercase; color: var(--muted); }
.r-form__grid input, .r-form__grid select, .r-form__grid textarea, .r-field input, .r-field select { width: 100%; min-height: 46px; padding: 10px 0; border: 0; border-bottom: 1px solid var(--line-strong); background: transparent; font-family: var(--font-sans); font-size: 15px; letter-spacing: 0; text-transform: none; color: var(--ink); border-radius: 0; }
.r-form__grid textarea { min-height: 86px; resize: vertical; }
.r-form__grid input:focus-visible, .r-form__grid select:focus-visible, .r-form__grid textarea:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.r-field__req { color: var(--muted); font-size: 9px; }
.r-field__err { margin-top: 2px; font-family: var(--font-sans); font-size: 11px; letter-spacing: 0; text-transform: none; color: var(--terra); }
.r-form__grid .is-invalid { border-bottom-color: var(--terra); }
.r-form__grid .r-field:has(.r-field__err:not([hidden])) input, .r-form__grid .r-field:has(.r-field__err:not([hidden])) select { border-bottom-color: var(--terra); }
.r-check { display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 10px; align-items: start; min-height: 44px; font-family: var(--font-sans); font-size: 13px; letter-spacing: 0; text-transform: none; color: var(--ink-soft); }
.r-check input { width: 20px; height: 20px; min-height: 0; margin-top: 2px; accent-color: var(--ink); }
.r-form__actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: space-between; align-items: center; margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--line); }
.r-form__actions .r-btn--primary { margin-left: auto; }
.r-ship-opts { display: grid; gap: 6px; margin-top: 18px; }
.r-ship { min-height: 58px; }
.r-ship .r-radio__price { font-family: var(--font-mono); font-size: 12px; }
.r-checkout__summary .r-mini { display: flex; justify-content: space-between; gap: 16px; padding: 8px 0; border-bottom: 1px solid var(--line); font-size: 11px; }
.r-checkout__summary .r-mini span:first-child { max-width: 70%; }
.r-checkout__summary .r-mini span:last-child { font-family: var(--font-mono); font-size: 11px; white-space: nowrap; }
.r-checkout__summary .r-hint a { border-bottom: 1px solid var(--line-strong); }
.r-checkout-empty { padding-block: 30px 50px; }

/* --- merci ---------------------------------------------------------------- */
.r-thanks__body { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(28px, 4vw, 64px); align-items: start; }
.r-thanks__timeline { grid-column: 1 / span 5; }
.r-thanks__delivery { grid-column: 7 / -1; }
.r-thanks__steps { counter-reset: thank; list-style: none; padding: 0; margin: 20px 0 0; border-top: 1px solid var(--ink); }
.r-thanks__steps li { counter-increment: thank; display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 12px; align-items: baseline; padding: 14px 0; border-bottom: 1px solid var(--line); font-size: 13px; color: var(--ink-soft); }
.r-thanks__steps li::before { content: counter(thank, decimal-leading-zero); font-family: var(--font-mono); font-size: 9px; color: var(--olive); }
.r-thanks__sum { max-width: 420px; margin-top: 22px; }
.r-thanks__back { margin-top: 12px; }

/* --- recherche ------------------------------------------------------------ */
.r-search-form { display: flex; gap: 10px; align-items: center; max-width: 860px; margin-top: 24px; padding-bottom: 8px; border-bottom: 1px solid var(--ink); }
.r-search-form input { flex: 1; min-width: 0; min-height: 46px; border: 0; background: transparent; font-family: var(--font-serif); font-size: clamp(22px, 2.6vw, 34px); line-height: 1.1; color: var(--ink); }
.r-search-form input::placeholder { color: var(--muted); }
.r-search-form input:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
.r-search-form .r-btn { flex: none; }
.r-empty .r-display { max-width: 24ch; }

/* --- overlay de recherche ------------------------------------------------- */
.r-search { background: rgb(20 18 16 / .78); padding: clamp(20px, 7vh, 90px) 20px 20px; }
.r-search__panel { width: min(860px, 96vw); padding: 10px 24px 24px; background: var(--paper); border: 1px solid var(--ink); box-shadow: none; }
.r-search__close { color: var(--ink); font-size: 24px; }
.r-search__form { display: flex; gap: 10px; padding-bottom: 8px; border-bottom: 1px solid var(--ink); }
.r-search__form input { flex: 1; min-width: 0; min-height: 46px; border: 0; background: transparent; font-family: var(--font-serif); font-size: clamp(24px, 3vw, 36px); color: var(--ink); }
.r-search__hint { margin-top: 10px; font-size: 11px; color: var(--muted); }
.r-search__results { display: grid; grid-template-columns: 1fr; gap: 1px; max-height: 56vh; margin-top: 12px; background: var(--line); border: 1px solid var(--line); overflow: auto; }
.r-search__form input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; }
.r-search__results:empty { display: none; }
.r-search-hit { display: grid; grid-template-columns: 46px minmax(0, 1fr); gap: 12px; align-items: center; padding: 10px 12px; background: var(--paper); }
.r-search-hit:hover { background: var(--paper-2); }
.r-search-hit .r-swatch { width: 34px; height: 42px; border-radius: 0; border: 1px solid var(--line-strong); }
.r-search-hit img { width: 42px; height: 52px; object-fit: contain; background: var(--paper-2); border: 1px solid var(--line); }
.r-search-hit span { display: flex; flex-direction: column; gap: 2px; }
.r-search-hit strong, .r-search-hit b { font-family: var(--font-serif); font-size: 19px; font-weight: 400; line-height: 1.05; }
.r-search-hit em, .r-search-hit__body > span { font-family: var(--font-mono); font-size: 9.5px; font-style: normal; color: var(--muted); }
.r-search-note, .r-search__empty { padding: 16px 12px; background: var(--paper); font-family: var(--font-sans); font-size: 12px; color: var(--muted); }
.r-search-hit { grid-template-columns: 46px minmax(0, 1fr); }

/* --- 404 ------------------------------------------------------------------ */
.r-notfound__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(20px, 4vw, 56px); align-items: end; padding: 18px 0 34px; border-bottom: 1px solid var(--ink); }
.r-notfound__num { grid-column: 1 / span 5; margin: 0; font-family: var(--font-serif); font-size: clamp(120px, 19vw, 280px); line-height: .76; letter-spacing: -.07em; color: var(--ink); }
.r-notfound__copy { grid-column: 6 / -1; padding-bottom: 8px; }
.r-notfound__copy .r-display { font-size: clamp(34px, 4.6vw, 66px); }

@media (max-width: 1100px) {
  .r-cart-main, .r-cart-aside, .r-checkout__form, .r-checkout__summary { grid-column: 1 / -1; }
  .r-cart-aside, .r-checkout__summary { position: static; }
  .r-thanks__timeline, .r-thanks__delivery { grid-column: 1 / -1; }
  .r-notfound__num { grid-column: 1 / -1; }
  .r-notfound__copy { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
  .r-cart-line { grid-template-columns: 72px minmax(0, 1fr); gap: 12px; }
  .r-cart-line__media { width: 72px; height: 90px; }
  .r-cart-line__price { grid-column: 2; display: flex; align-items: center; justify-content: space-between; }
  .r-form__grid { grid-template-columns: 1fr; }
  .r-steps li { min-width: 0; font-size: 9px; }
  .r-checkout__step > legend { font-size: 24px; }
  .r-thanks__body { gap: 32px; }
  .r-notfound__num { font-size: clamp(104px, 42vw, 200px); }
  .r-form__actions .r-btn { flex: 1; }
}


/* ==========================================================================
   A · VAGUE 2 — familles, fiche (compléments), panier, recherche, studio,
   carte cadeau, carnet.
   ========================================================================== */


/* --- fiche produit : compléments + table de 6 ----------------------------- */
.r-product-complements .r-products { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px 20px; margin-top: 30px; }
.r-product-bundle { background: var(--paper-2); border-top: 1px solid var(--ink); border-bottom: 1px solid var(--line); }
.r-product-bundle .r-wrap { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(28px, 4vw, 56px); align-items: center; padding-block: clamp(34px, 4.6vw, 64px); }
.r-product-bundle__copy { grid-column: 1 / span 5; }
.r-product-bundle__copy h2 { margin: 8px 0 10px; font-family: var(--font-serif); font-size: clamp(30px, 3.6vw, 50px); line-height: .98; letter-spacing: -.03em; }
.r-product-bundle__lead { font-size: 13px; line-height: 1.6; color: var(--ink-soft); max-width: 38ch; }
.r-product-bundle__price { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin: 18px 0 14px; }
.r-product-bundle__price strong { font-family: var(--font-mono); font-size: 25px; letter-spacing: -.02em; }
.r-product-bundle__price del { font-family: var(--font-mono); font-size: 11px; color: var(--muted); }
.r-product-bundle__price em { font-family: var(--font-mono); font-style: normal; font-size: 10px; color: var(--olive); }
.r-product-bundle__pieces { grid-column: 6 / -1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.r-product-bundle__piece { display: flex; flex-direction: column; background: var(--paper); min-width: 0; text-align: left; }
.r-product-bundle__piece img { width: 100%; height: 150px; object-fit: contain; padding: 12px; }
.r-product-bundle__piece span { padding: 8px 10px 10px; border-top: 1px solid var(--line); font-family: var(--font-serif); font-size: 14px; line-height: 1.1; }
.r-product-bundle__piece small { padding: 0 10px 10px; font-family: var(--font-mono); font-size: 9px; color: var(--muted); }

/* --- panier : upsell, boîte, note livraison ------------------------------- */
.r-cart__shipnote { margin: 8px 0 0; padding: 8px 10px; border: 1px solid var(--line); font-size: 10px; line-height: 1.5; color: var(--muted); }
.r-cart-extra { border-top: 1px solid var(--line); padding-block: clamp(32px, 4vw, 54px); }
.r-cart-extra__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 24px; border-top: 1px solid var(--ink); padding-top: 12px; margin-bottom: 24px; }
.r-cart-extra .r-products { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px 18px; }
.r-cart-sample-box { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(24px, 3vw, 48px); align-items: center; border-top: 1px solid var(--ink); padding-top: 14px; margin-top: 8px; }
.r-cart-sample-box__copy { grid-column: 1 / span 7; }
.r-cart-sample-box__title { font-family: var(--font-serif); font-size: clamp(25px, 2.8vw, 36px); line-height: 1; }
.r-cart-sample-box__copy p { margin-top: 8px; font-size: 12px; color: var(--ink-soft); }
.r-cart-sample-box__side { grid-column: 8 / -1; display: flex; align-items: center; justify-content: flex-end; gap: 14px; }
.r-cart-sample-box__price { font-family: var(--font-mono); font-size: 18px; }

/* --- recherche : suggestions + pagination --------------------------------- */
.r-search-suggestions { margin-top: 28px; border-top: 1px solid var(--ink); padding-top: 14px; }
.r-search-suggestions__lead { margin: 4px 0 14px; font-size: 12px; color: var(--muted); }
.r-search-suggestions .r-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.r-search-suggestions .r-chip { min-height: 36px; padding: 4px 10px; font-size: 11px; }
.r-search-main .r-pager { margin-top: 44px; }
.r-search-empty { max-width: 760px; }

/* --- studio : offre table de 6 + carte cadeau ----------------------------- */
.r-box-offer { padding-block: clamp(26px, 3.4vw, 46px); }
.r-box-offer__head { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 14px 30px; }
.r-box-offer__head h2 { margin: 6px 0 0; font-family: var(--font-serif); font-size: clamp(30px, 4vw, 54px); line-height: .96; letter-spacing: -.03em; }
.r-box-offer__lead { max-width: 44ch; font-size: 13px; line-height: 1.6; color: var(--ink-soft); }
.r-box-offer__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(24px, 3.4vw, 48px); align-items: center; margin-top: 24px; }
.r-box-offer__pieces { grid-column: 1 / span 8; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.r-box-offer__piece { display: flex; flex-direction: column; background: var(--paper); min-width: 0; }
.r-box-offer__piece img { width: 100%; height: 170px; object-fit: contain; padding: 14px; }
.r-box-offer__piece span { padding: 9px 11px 11px; border-top: 1px solid var(--line); font-family: var(--font-serif); font-size: 15px; line-height: 1.08; }
.r-box-offer__aside { grid-column: 9 / -1; border-top: 1px solid var(--ink); padding-top: 12px; }
.r-box-offer__price { font-family: var(--font-serif); font-size: clamp(34px, 3.4vw, 46px); line-height: 1; letter-spacing: -.02em; }
.r-box-offer__was { margin-top: 4px; font-family: var(--font-mono); font-size: 10px; color: var(--muted); }
.r-box-offer__save { margin-top: 8px; font-family: var(--font-mono); font-size: 10px; color: var(--olive); }
.r-box-offer__aside .r-btn { margin-top: 16px; }

.r-giftcards__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(24px, 3.6vw, 52px); align-items: start; }
.r-giftcards__copy { grid-column: 1 / span 5; }
.r-giftcards__copy h2 { margin: 6px 0 10px; font-family: var(--font-serif); font-size: clamp(30px, 3.6vw, 48px); line-height: .98; letter-spacing: -.03em; }
.r-giftcards__copy p { font-size: 13px; line-height: 1.6; color: var(--ink-soft); max-width: 38ch; }
.r-giftcards__cards { grid-column: 6 / -1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.r-giftcard { display: grid; gap: 4px; background: var(--paper); padding: 16px 14px; min-height: 100px; align-content: space-between; }
.r-giftcard span { font-family: var(--font-mono); font-size: 9px; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.r-giftcard strong { font-family: var(--font-serif); font-size: clamp(24px, 2.4vw, 32px); line-height: 1; font-weight: 400; }
.r-giftcard-form { grid-column: 6 / -1; margin-top: 18px; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 12px; align-items: end; }
.r-giftcard-form__check { grid-column: 1 / -1; display: flex; align-items: flex-start; gap: 9px; min-height: 44px; font-size: 11px; line-height: 1.5; color: var(--ink-soft); }
.r-giftcard-form__check input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--ink); }
.r-giftcard-form input[type=email] { min-height: 44px; border: 1px solid var(--line-strong); background: var(--paper); padding: 8px 10px; font-family: var(--font-sans); font-size: 13px; }
.r-giftcard-form .r-btn { min-height: 44px; }
.r-giftcard-msg { grid-column: 1 / -1; font-size: 11px; color: var(--olive); }
.r-giftcard-msg.is-error { color: var(--terra); }

@media (max-width: 1100px) {
  .r-product-complements .r-products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .r-product-bundle__copy, .r-product-bundle__pieces { grid-column: 1 / -1; }
  .r-cart-sample-box__copy, .r-cart-sample-box__side { grid-column: 1 / -1; }
  .r-cart-sample-box__side { justify-content: flex-start; }
  .r-studio__compose { order: 0; }
  .r-studio__tray { order: 1; }
  .r-box-offer__pieces { grid-column: 1 / -1; }
  .r-box-offer__aside { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; }
  .r-box-offer__aside .r-btn { margin-top: 0; margin-left: auto; }
  .r-giftcards__copy, .r-giftcards__cards, .r-giftcard-form { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
  .r-cart-extra .r-products { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 14px; }
  .r-product-bundle__pieces { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .r-product-bundle__piece img { height: 100px; }
  .r-giftcards__cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .r-giftcard-form { grid-template-columns: 1fr; }
  .r-giftcard-form .r-btn { width: 100%; }
  .r-box-offer__pieces { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .r-box-offer__piece img { height: 100px; }
}
@media (max-width: 460px) {
  .r-giftcards__cards { grid-template-columns: 1fr; }
  .r-search-form { flex-wrap: wrap; }
  .r-search-form input { flex: 1 1 100%; }
  .r-search-form .r-btn { width: 100%; }
  .r-product-complements .r-products, .r-cart-extra .r-products { grid-template-columns: 1fr; }
  .r-product-bundle__pieces { grid-template-columns: 1fr; }
  .r-product-bundle__piece img { height: 140px; }
  .r-box-offer__pieces { grid-template-columns: 1fr; }
  .r-box-offer__piece img { height: 140px; }
}


/* --- carnet : suppression de la bande morte ------------------------------ */
.r-page-head--carnet { margin-bottom: 0; padding-bottom: 0; }
.r-journal-section { border-top: 0; padding-top: clamp(20px, 3vw, 34px); }
.r-journal-section .r-journal-grid { margin-top: 0; }
.r-journal-section.r-journal-empty { padding-block: 0 clamp(40px, 5vw, 64px); }
.r-journal-empty .r-journal-empty__inner { padding-top: clamp(18px, 2.6vw, 34px); }
.r-journal-empty .r-journal-empty__soon { margin-top: 14px; }

/* --- article : lecture 60-75 caractères ---------------------------------- */
.r-page-head--article { margin-bottom: 0; padding-bottom: 0; }
.r-article-section { border-top: 0; padding-top: clamp(20px, 3vw, 32px); }
.r-article-layout { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 0 24px; }
.r-article__body { grid-column: 3 / span 8; justify-self: center; max-width: 50ch; width: 100%; font-size: 18px; line-height: 1.68; color: var(--ink-soft); }
.r-article__body p { margin: 0 0 1.15em; }
.r-article__body h2 { margin: 1.7em 0 .55em; font-family: var(--font-serif); font-weight: 400; font-size: clamp(28px, 2.6vw, 38px); line-height: 1.02; letter-spacing: -.025em; color: var(--ink); }
.r-article__body h3 { margin: 1.5em 0 .5em; font-family: var(--font-serif); font-weight: 400; font-size: 24px; line-height: 1.08; color: var(--ink); }
.r-article__body ul { margin: 0 0 1.2em; padding-left: 1.1em; }
.r-article__body li { margin-bottom: .4em; }
.r-article__body a { border-bottom: 1px solid var(--line-strong); color: var(--ink); }
.r-article__body blockquote { margin: 1.6em 0; padding: 2px 0 2px 20px; border-left: 2px solid var(--sulfur); font-family: var(--font-serif); font-size: 24px; line-height: 1.2; color: var(--ink); }
.r-article__note { grid-column: 3 / span 8; max-width: 68ch; margin-top: 22px; }
.r-article-related .r-a-head, .r-article-next .r-a-head { border-top: 1px solid var(--ink); padding-top: 12px; }
.r-other-guides { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px 18px; margin-top: 24px; }
.r-other-guide { display: grid; gap: 6px; border-top: 1px solid var(--line); padding-top: 12px; align-content: start; }
.r-other-guide__title { font-family: var(--font-serif); font-size: 23px; line-height: 1.05; letter-spacing: -.02em; }
.r-other-guide__excerpt { font-size: 12px; line-height: 1.55; color: var(--muted); }
.r-other-guide .r-link-arrow { margin-top: 4px; }

@media (max-width: 1100px) {
  .r-article__body, .r-article__note { grid-column: 1 / -1; max-width: 68ch; }
  .r-article-layout { gap: 0; }
  .r-other-guides { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .r-article__body { font-size: 17px; line-height: 1.65; }
  .r-article__body h2 { margin-top: 1.35em; }
  .r-other-guides { grid-template-columns: 1fr; }
}

/* --- fiche de famille ----------------------------------------------------- */
.r-family-hero { padding-bottom: clamp(36px, 5vw, 64px); }
.r-family-hero__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(28px, 4vw, 64px); align-items: end; padding-top: 18px; border-top: 1px solid var(--ink); }
.r-family-hero__copy { grid-column: 1 / span 6; min-width: 0; }
.r-family-hero__copy .r-label { color: var(--olive); }
.r-family-hero__copy h1 { margin: 14px 0 18px; font-family: var(--font-serif); font-weight: 400; font-size: clamp(3.2rem, 7vw, 6.8rem); line-height: .86; letter-spacing: -.045em; }
.r-family-hero__copy .r-lead { max-width: 46ch; }
.r-answer { margin-top: 14px; font-size: 12px; line-height: 1.6; color: var(--muted); max-width: 56ch; }
.r-family-hero__stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 24px 0 22px; padding-top: 12px; border-top: 1px solid var(--line); }
.r-family-hero__stats dt { font-family: var(--font-mono); font-size: 9px; letter-spacing: .05em; text-transform: uppercase; color: var(--muted); }
.r-family-hero__stats dd { margin: 4px 0 0; font-family: var(--font-serif); font-size: 20px; line-height: 1; }
.r-family-hero__fig { grid-column: 7 / -1; margin: 0; position: relative; border: 1px solid var(--line); background: radial-gradient(60% 60% at 50% 42%, color-mix(in srgb, var(--tint) 24%, transparent), rgb(20 18 16 / 0) 72%), var(--paper-2); padding: clamp(18px, 3vw, 36px); display: grid; place-items: center; overflow: hidden; }
.r-family-hero__fig img { width: 100%; height: clamp(300px, 32vw, 470px); object-fit: contain; filter: drop-shadow(0 22px 26px rgb(20 18 16 / .18)); }
.r-family-hero__fig figcaption { width: 100%; margin-top: 12px; display: flex; justify-content: space-between; gap: 16px; border-top: 1px solid var(--line); padding-top: 8px; font-family: var(--font-mono); font-size: 9px; letter-spacing: .03em; color: var(--muted); }
.r-family-hero__fig figcaption strong { color: var(--ink); font-weight: 400; white-space: nowrap; }

.r-family-collection { border-top: 1px solid var(--line); padding-block: clamp(26px, 3.6vw, 48px); }
.r-family-collection__layout { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(24px, 3vw, 48px); align-items: start; }
.r-family-filters { grid-column: 1 / span 3; position: sticky; top: calc(var(--header-h, 84px) + 16px); }
.r-page--family .r-main { z-index: auto; }
body.r-page--family.r-no-scroll::after { content: ""; position: fixed; inset: 0; z-index: calc(var(--z-overlay) - 1); background: rgb(20 18 16 / .48); }
.r-family-filters__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; padding-bottom: 8px; border-bottom: 1px solid var(--ink); }
.r-family-filters__reset { font-family: var(--font-mono); font-size: 9px; color: var(--muted); min-height: 44px; display: inline-flex; align-items: center; }
.r-family-filters__reset:hover { color: var(--ink); }
.r-family-filters__close { display: none; min-width: 44px; min-height: 44px; border: 1px solid var(--line); font-size: 20px; }
.r-family-filter { border-bottom: 1px solid var(--line); }
.r-family-filter summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 44px; cursor: pointer; list-style: none; font-family: var(--font-sans); font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-soft); }
.r-family-filter summary::-webkit-details-marker { display: none; }
.r-family-filter summary::after { content: "+"; color: var(--muted); font-family: var(--font-sans); font-size: 13px; }
.r-family-filter[open] summary::after { content: "–"; }
.r-family-filter__list { list-style: none; margin: 0; padding: 0 0 10px; display: grid; gap: 3px; }
.r-family-chip { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 32px; padding: 3px 7px; font-size: 11px; color: var(--ink-soft); border: 1px solid transparent; }
.r-family-chip span { font-family: var(--font-mono); font-size: 9px; color: var(--muted); }
.r-family-chip:hover { border-color: var(--line); color: var(--ink); }
.r-family-chip.is-active { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.r-family-chip.is-active span { color: var(--sulfur); }
.r-family-filter__list--finishes { gap: 2px; }
.r-family-finish { display: grid; grid-template-columns: 12px minmax(0, 1fr) auto; gap: 7px; align-items: center; min-height: 30px; padding: 3px 7px; font-size: 11px; border: 1px solid transparent; }
.r-family-finish__dot { width: 11px; height: 11px; border-radius: 50%; background: var(--c); box-shadow: inset 0 0 0 1px rgb(20 18 16 / .25); }
.r-family-finish span:last-child { font-family: var(--font-mono); font-size: 9px; color: var(--muted); }
.r-family-finish:hover { border-color: var(--line); }
.r-family-finish.is-active { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.r-family-finish.is-active span:last-child { color: var(--sulfur); }

.r-family-main { grid-column: 4 / -1; min-width: 0; }
.r-family-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 20px; padding-bottom: 10px; border-bottom: 1px solid var(--ink); }
.r-family-sorts { display: flex; flex-wrap: wrap; gap: 2px; }
.r-family-sorts a { display: inline-flex; align-items: center; min-height: 32px; padding: 2px 8px; font-family: var(--font-mono); font-size: 9px; letter-spacing: .03em; color: var(--muted); border: 1px solid transparent; }
.r-family-sorts a:hover { color: var(--ink); border-color: var(--line); }
.r-family-sorts a.is-active { color: var(--ink); border-color: var(--ink); }
.r-family-filter-toggle { display: none; min-height: 44px; padding: 0 14px; border: 1px solid var(--ink); font-family: var(--font-mono); font-size: 10px; letter-spacing: .05em; text-transform: uppercase; }
.r-family-active { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.r-family-active__chip { display: inline-flex; align-items: center; gap: 7px; min-height: 32px; padding: 2px 9px; background: var(--paper-2); border: 1px solid var(--line); font-size: 10px; color: var(--ink); }
.r-family-active__chip span { color: var(--muted); }
.r-family-active__reset { font-family: var(--font-mono); font-size: 9px; color: var(--olive); border-bottom: 1px solid var(--olive); min-height: 32px; display: inline-flex; align-items: center; }
.r-family-main .r-products--shop { margin-top: 24px; }
.r-family-main .r-pager { margin-top: 40px; }
.r-family-guide { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(28px, 4vw, 64px); align-items: center; }
.r-family-guide > .r-stack { grid-column: 1 / span 6; }
.r-family-guide__fig { grid-column: 7 / -1; margin: 0; border: 1px solid var(--line); background: var(--paper-2); padding: 18px; }
.r-family-guide__fig img { width: 100%; height: 280px; object-fit: contain; }

/* --- carnet : grille 6-8 articles ---------------------------------------- */
.r-journal-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(20px, 2.6vw, 34px); }
.r-journal-card__title { font-size: clamp(21px, 1.9vw, 27px); }
.r-journal-card__excerpt { font-size: 12px; }

@media (max-width: 1100px) {
  .r-family-hero__copy { grid-column: 1 / -1; }
  .r-family-hero__fig { grid-column: 1 / -1; }
  .r-family-hero__fig img { height: clamp(280px, 46vw, 430px); }
  .r-family-filters { grid-column: 1 / -1; position: fixed; z-index: var(--z-overlay); inset: 0 auto 0 0; width: min(88vw, 360px); margin: 0; padding: 18px 18px 28px; background: var(--paper); border-right: 1px solid var(--ink); overflow: auto; transform: translateX(-105%); transition: transform var(--dur) var(--ease-silk); }
  .r-family-filters.is-open { transform: none; }
  .r-family-filters__close { display: inline-grid; place-items: center; }
  .r-family-main { grid-column: 1 / -1; }
  .r-family-filter-toggle { display: inline-flex; align-items: center; }
  .r-journal-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .r-journal-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .r-family-hero__copy h1 { font-size: clamp(2.9rem, 13vw, 4.6rem); }
  .r-family-hero__stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 18px; }
  .r-family-bar { align-items: flex-start; }
  .r-family-sorts { order: 3; width: 100%; overflow-x: auto; flex-wrap: nowrap; }
  .r-family-sorts a { white-space: nowrap; }
  .r-family-main .r-products--shop { margin-top: 18px; }
  .r-family-guide > .r-stack, .r-family-guide__fig { grid-column: 1 / -1; }
  .r-journal-grid { grid-template-columns: 1fr; }
}


/* ==========================================================================
   A · COMPTE CLIENT + AVIS · chantier 4
   ========================================================================== */

/* étoiles : formes CSS, aucun emoji */
.r-stars { display: inline-flex; gap: 2px; --n: 0; line-height: 1; vertical-align: middle; }
.r-stars i { display: block; width: 13px; height: 13px; background: linear-gradient(90deg, var(--ink) calc((var(--n) - var(--i) + 1) * 100%), var(--line) 0); clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%); }
.r-stars i:nth-child(1) { --i: 1; }
.r-stars i:nth-child(2) { --i: 2; }
.r-stars i:nth-child(3) { --i: 3; }
.r-stars i:nth-child(4) { --i: 4; }
.r-stars i:nth-child(5) { --i: 5; }

/* lien compte du header */
.r-tool--account { display: inline-grid; place-items: center; min-width: 44px; min-height: 44px; }

/* --- compte --------------------------------------------------------------- */
.r-page-head--account { margin-bottom: 0; padding-bottom: 0; }
.r-account-section { border-top: 0; padding-top: clamp(20px, 3vw, 34px); }
.r-account-layout { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(28px, 4vw, 56px); align-items: start; }
.r-account-side { grid-column: 1 / span 3; position: sticky; top: calc(var(--header-h, 84px) + 16px); border-top: 1px solid var(--ink); padding-top: 12px; }
.r-account-side .r-label { color: var(--olive); }
.r-account-side__mail { margin: 10px 0 4px; font-family: var(--font-serif); font-size: 22px; line-height: 1.05; letter-spacing: -.01em; overflow-wrap: anywhere; }
.r-account-side form { margin-top: 18px; }
.r-account-main { grid-column: 4 / -1; min-width: 0; }
.r-account-block { border-top: 1px solid var(--ink); padding-top: 14px; margin-bottom: 34px; }
.r-account-block .r-a-head { margin-bottom: 18px; }
.r-account-reviews { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; border-top: 1px solid var(--line); }
.r-account-review { display: grid; gap: 8px; padding: 16px 0; border-bottom: 1px solid var(--line); }
.r-account-review__top { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.r-account-review__status, .r-account-review__date { font-family: var(--font-mono); font-size: 9px; letter-spacing: .04em; color: var(--muted); text-transform: uppercase; }
.r-account-review__status { color: var(--olive); }
.r-account-review h3 { margin: 0; font-family: var(--font-serif); font-size: 22px; font-weight: 400; line-height: 1.05; }
.r-account-review p { margin: 0; font-size: 13px; line-height: 1.6; color: var(--ink-soft); max-width: 66ch; }
.r-account-empty { padding: 18px 0 22px; border-bottom: 1px solid var(--line); font-size: 13px; color: var(--muted); }
.r-account-guest { max-width: 620px; border-top: 1px solid var(--ink); padding-top: 16px; }
.r-account-guest .r-lead { max-width: 44ch; }

/* --- connexion / inscription --------------------------------------------- */
.r-account-auth { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); }
.r-account-form { grid-column: 4 / span 6; max-width: 560px; }
.r-account-form .r-field { display: grid; gap: 6px; margin-bottom: 16px; font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .05em; text-transform: uppercase; color: var(--muted); }
.r-account-form .r-field input { width: 100%; min-height: 48px; border: 0; border-bottom: 1px solid var(--line-strong); background: transparent; padding: 8px 0; font-family: var(--font-sans); font-size: 16px; letter-spacing: 0; text-transform: none; color: var(--ink); border-radius: 0; }
.r-account-form .r-field input:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.r-account-form .r-hint { margin-top: 2px; font-family: var(--font-sans); font-size: 10px; letter-spacing: 0; text-transform: none; color: var(--muted); }
.r-account-form .r-check { display: flex; align-items: flex-start; gap: 10px; min-height: 44px; margin: 10px 0; font-family: var(--font-sans); font-size: 12px; line-height: 1.45; letter-spacing: 0; text-transform: none; color: var(--ink-soft); }
.r-account-form .r-check input { width: 18px; height: 18px; margin-top: 2px; flex: none; accent-color: var(--ink); }
.r-account-form .r-form__msg { min-height: 18px; margin: 8px 0 4px; font-size: 12px; color: var(--olive); }
.r-account-form .r-form__msg.is-error { color: var(--terra); }
.r-account-form .r-btn { margin-top: 8px; }
.r-account-switch { grid-column: 4 / span 6; margin-top: 18px; font-size: 12px; color: var(--muted); }
.r-account-switch a { color: var(--ink); border-bottom: 1px solid var(--line-strong); }

/* --- avis produit --------------------------------------------------------- */
.r-review-head { align-items: end; }
.r-review-summary { display: inline-flex; align-items: center; gap: 10px; margin: 0; font-family: var(--font-mono); font-size: 11px; color: var(--ink-soft); }
.r-review-lead { max-width: 58ch; margin: 8px 0 22px; font-size: 12px; line-height: 1.6; color: var(--muted); }
.r-reviews-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.r-reviews-list > .r-review-card:only-child { grid-column: 1 / -1; }
.r-review-card { display: grid; gap: 8px; align-content: start; background: var(--paper); padding: 18px 18px 20px; min-height: 150px; }
.r-review-card__top { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.r-review-card__date { font-family: var(--font-mono); font-size: 9px; color: var(--muted); }
.r-review-card__title { margin: 0; font-family: var(--font-serif); font-size: 22px; font-weight: 400; line-height: 1.05; }
.r-review-card__body { margin: 0; font-size: 13px; line-height: 1.65; color: var(--ink-soft); }
.r-review-card__author { margin: 4px 0 0; font-family: var(--font-mono); font-size: 9px; letter-spacing: .04em; text-transform: uppercase; color: var(--olive); }
.r-review-empty { margin: 0 0 22px; padding: 20px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); font-family: var(--font-serif); font-size: 22px; line-height: 1.15; color: var(--ink-soft); max-width: 46ch; }
.r-review-login { margin: 8px 0 0; }
.r-review-form { margin-top: 26px; padding-top: 16px; border-top: 1px solid var(--ink); max-width: 760px; }
.r-review-form__head { margin-bottom: 14px; }
.r-review-form__head .r-note { max-width: 58ch; margin-top: 6px; }
.r-review-form__grid { display: grid; grid-template-columns: 160px minmax(0, 1fr); gap: 16px 24px; align-items: start; }
.r-review-form .r-field { display: grid; gap: 6px; font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .05em; text-transform: uppercase; color: var(--muted); }
.r-review-form select, .r-review-form textarea { width: 100%; border: 1px solid var(--line-strong); background: var(--paper); color: var(--ink); font-family: var(--font-sans); font-size: 14px; letter-spacing: 0; text-transform: none; border-radius: 0; }
.r-review-form select { min-height: 46px; padding: 8px 10px; }
.r-review-form textarea { min-height: 130px; padding: 10px; resize: vertical; }
.r-review-form select:focus-visible, .r-review-form textarea:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.r-review-form .r-form__msg { min-height: 18px; margin: 10px 0 4px; font-size: 12px; color: var(--olive); }
.r-review-form .r-form__msg.is-error { color: var(--terra); }

@media (max-width: 1100px) {
  .r-account-side, .r-account-main { grid-column: 1 / -1; }
  .r-account-side { position: static; }
  .r-account-form, .r-account-switch { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
  .r-reviews-list { grid-template-columns: 1fr; }
  .r-review-form__grid { grid-template-columns: 1fr; }
  .r-account-side__mail { font-size: 20px; }
}



/* ==========================================================================
   A · bandeaux de page en papier + blocs-réponse GEO (12 novembre, soir)
   Les variantes « stage » étaient restées en crème sur papier (1,03:1) : en
   direction A tout est papier/encre. Les blocs-réponse ont besoin de leur
   propre mise en page (tableau lisible, questions-réponses en liste).
   ========================================================================== */
body .r-page-head--stage { background: var(--paper); color: var(--ink); }
body .r-page-head--stage::after { display: none; }
body .r-page-head--stage .r-display,
body .r-page-head--stage h1 { color: var(--ink); }
body .r-page-head--stage .r-label { color: var(--olive); }
body .r-page-head--stage .r-lead,
body .r-page-head--stage .r-page-head__count,
body .r-page-head--stage .r-crumbs ol,
body .r-page-head--stage .r-crumbs a { color: var(--muted); }
body .r-page-head--stage .r-crumbs [aria-current] { color: var(--ink); }

.r-answer-block { padding-top: clamp(24px, 3vw, 40px); padding-bottom: clamp(24px, 3vw, 40px); }
.r-answer-block__inner { max-width: 78ch; }
.r-answer-block__inner > p:first-child { font-family: var(--font-serif); font-size: clamp(1.15rem, 1.5vw, 1.45rem); line-height: 1.45; color: var(--ink); }
.r-answer-block__inner > p + .r-table-wrap { margin-top: 22px; }
.r-table-wrap { overflow-x: auto; border: 1px solid var(--line-strong); background: transparent; }
.r-table { width: 100%; border-collapse: collapse; font-size: 0.95rem; }
.r-table th, .r-table td { padding: 10px 14px; text-align: left; border-bottom: 1px solid var(--line); }
.r-table th { font-family: var(--font-mono); font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); background: rgb(20 18 16 / .04); }
.r-table tr:last-child td { border-bottom: 0; }
.r-qa { margin: 26px 0 0; padding: 0; display: grid; gap: 14px; }
.r-qa dt { font-weight: 600; color: var(--ink); }
.r-qa dd { margin: 4px 0 0; color: var(--ink-soft); }
