/* ============================================================
   Mental Sofa — direction C « fusion » (2026-07-28)
   Nuit & or de la 1c (premium) · arrondis + thème clair de la B
   (accessibilité) · typographie intermédiaire : premium mais humaine.
   Signature : le sofa du monogramme, posé et immobile (sans l'arbre).
   Trois mots à faire sentir dès l'arrivée : expérience, maturité,
   confiance — donc aucune animation permanente.
   ------------------------------------------------------------
   Thème via [data-theme] sur <html> : "dark" (défaut) | "light".
   ============================================================ */

:root{
  /* ---- palette nuit & or (héritée 1c) ---- */
  --noir:#0B0512; --velours:#1A0C2E; --velours-2:#12071F;
  --band:#180D30;                      /* bande alternée — nettement plus claire que --noir */
  --surface-haute:#261646;             /* panneaux flottants : plus clair que tout le reste */
  --violet:#7A4BB0; --violet-deep:#5B2D8E;
  /* Violet réservé aux TRAITS des schémas. Volontairement plus clair que --violet :
     sur le fond sombre, #7A4BB0 plafonne à 2,9:1 même à opacité pleine — sous le
     seuil de 3:1 des éléments graphiques. Monter l'opacité seule ne suffisait pas,
     il fallait un violet plus clair. Ne pas l'utiliser pour des aplats. */
  --violet-trait:#9E72CC;
  /* Violet lisible SUR le panneau d'accès prioritaire (fond violet translucide).
     Calé à ~7:1 : le libellé y est en 10 px capitales, il lui faut de la marge. */
  --violet-clair:#B995E8;
  --or:#E7C878; --or-soft:#F0DCA8;
  --or-ink:#0B0512;                    /* encre lisible SUR un aplat d'or */
  --or-ink-muted:rgba(11,5,18,.72);
  --or-wash:rgba(231,200,120,.07);     /* voile d'or (survols) */
  --or-line:rgba(231,200,120,.3);      /* filet d'or discret */

  --text:#F3ECFA; --heading:#ffffff; --muted:#B3A6C9; --muted-2:#8E82A8; --bold:#EDE6F5;
  --faded:rgba(243,236,250,.42);       /* l'« avant », volontairement flou */
  --border:rgba(216,199,242,.14); --border-2:rgba(216,199,242,.22);
  --hatch:rgba(216,199,242,.06);
  --header-bg:rgba(11,5,18,.88);
  --footer-bg:#080310;
  --shadow:0 24px 60px -24px rgba(0,0,0,.7);
  --glow-a:rgba(122,75,176,.42);

  --serif:"Cormorant Garamond",Georgia,serif;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;

  /* ---- arrondis : repris de la B, resserrés d'un cran ---- */
  --r-xs:8px; --r-sm:12px; --r:18px; --r-lg:26px; --r-pill:999px;

  --maxw:1200px; --pad:44px;
  /* ÉCHELLE VERTICALE — toute cote verticale sort d'ici, jamais d'une valeur libre.
     Entre deux sections : 2 × --s7 = 208px (bureau), 2 × --s6 = 128px (mobile). */
  --s1:8px; --s2:16px; --s3:24px; --s4:32px; --s5:48px; --s6:64px; --s7:104px;
  --hero-haut:88px;   /* distance texte ↔ haut du héros, la même partout */
}

/* ---- thème clair : lecture haute lisibilité (héritée B) ---- */
:root[data-theme="light"]{
  --noir:#F7F1E6; --velours:#FFFFFF; --velours-2:#FBF6EC;
  --band:#EEE4F2;                      /* bande alternée — voile lavande sur l'ivoire */
  --surface-haute:#FFFFFF;             /* panneaux flottants */
  --violet:#6B3FA0; --violet-deep:#5B2D8E;
  /* En thème clair le trait se détache par la profondeur, pas par la clarté :
     on garde le violet dense, c'est l'opacité qui fait le travail. */
  --violet-trait:#6B3FA0;
  /* En clair le panneau d'accès devient un lavande pâle : le libellé s'y détache
     en violet PROFOND, pas en violet clair. Même cible de contraste (~7:1). */
  --violet-clair:#4A2578;
  --or:#8A5F13; --or-soft:#6F4C0F;
  --or-ink:#FFFFFF;
  --or-ink-muted:rgba(255,255,255,.86);
  --or-wash:rgba(166,116,28,.09);
  --or-line:rgba(166,116,28,.34);

  --text:#3A3346; --heading:#2A1642; --muted:#5F556E; --muted-2:#635A72; --bold:#2A1642;
  --faded:rgba(58,51,70,.4);
  --border:#E6DCCC; --border-2:#D8CBB6;
  --hatch:rgba(90,60,130,.07);
  --header-bg:rgba(247,241,230,.94);
  --footer-bg:#EFE6D6;
  --shadow:0 22px 48px -26px rgba(43,15,66,.28);
  --glow-a:rgba(122,75,176,.16);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
/* `overflow-x:hidden` sur body en ferait un conteneur de défilement, et le
   scroll-behavior de html cesserait de s'appliquer aux ancres. `clip` coupe
   le débordement sans créer de conteneur. */
body{scroll-behavior:smooth}
/* l'en-tête collant fait 78px : toute cible d'ancre se décale d'autant */
[id]{scroll-margin-top:96px}
body{margin:0;background:var(--noir);color:var(--text);font-family:var(--sans);font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased;overflow-x:clip;
  transition:background .3s ease,color .3s ease}
img{max-width:100%;display:block}
a{color:var(--or);text-decoration:none}
::selection{background:var(--or);color:var(--or-ink)}

/* ---- typographie intermédiaire ----
   1c : line-height .86 / tracking -.045em (massif, un peu dur)
   B  : line-height 1.06 / tracking -.01em (doux)
   C  : on se pose entre les deux — de la présence, sans la froideur. */
h1,h2,h3{font-family:var(--serif);font-weight:600;letter-spacing:-.026em;line-height:1.0;color:var(--heading);margin:0}
p{margin:0 0 1rem}
b,strong{color:var(--bold);font-weight:600}
em{font-style:italic}
.container{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad)}
.display{font-family:var(--serif);font-weight:600;letter-spacing:-.028em;line-height:.98;color:var(--heading)}
.accent{color:var(--or)}

/* eyebrow — micro-capitales, interlettrage adouci (.34em → .2em) */
/* `inline-flex` posait l'eyebrow sur une ligne de texte, dont l'interligne
   s'ajoutait au-dessus : le titre démarrait 15 à 29px plus bas selon la page.
   En bloc, le premier élément du héros tombe à --hero-haut exactement. */
.eyebrow{display:flex;width:fit-content;align-items:center;gap:12px;font:600 11px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--or);margin:0 0 24px}
.eyebrow::before{content:"";width:30px;height:1px;background:var(--or);border-radius:var(--r-pill)}

/* ---- boutons : la pilule de la B, l'or de la 1c ---- */
.btn{display:inline-block;background:var(--or);color:var(--or-ink);font:600 13px/1 var(--sans);letter-spacing:.06em;padding:17px 30px;border:1px solid var(--or);border-radius:var(--r-pill);cursor:pointer;transition:.2s ease}
.btn:hover{background:var(--or-soft);border-color:var(--or-soft);color:var(--or-ink);transform:translateY(-1px)}
.btn-dark{background:var(--velours);color:var(--or);border-color:var(--border-2)}
.btn-dark:hover{background:var(--velours-2);color:var(--or-soft);border-color:var(--or)}
.btn-ghost{display:inline-block;background:transparent;color:var(--or);border:1px solid var(--or);font:600 13px/1 var(--sans);letter-spacing:.06em;padding:16px 28px;border-radius:var(--r-pill);transition:.2s ease}
.btn-ghost:hover{background:var(--or-wash);color:var(--or-soft);transform:translateY(-1px)}
/* RÈGLE : un appel à l'action tient TOUJOURS sur une seule ligne.
   Sur deux lignes il cesse de se lire comme un bouton. `nowrap` l'empêche de
   se replier, `flex:0 0 auto` l'empêche d'être écrasé par un voisin flexible. */
.btn,.btn-dark,.btn-ghost,.btn-outline,.header-cta{white-space:nowrap}
.cta-in .btn,.cta-in .btn-dark,.hero-cta>a,.cta-stack>a,.offer-cta>a{flex:0 0 auto}
.reassure{font:400 13px/1.5 var(--sans);color:var(--muted-2)}
/* utilitaires : aucun margin-top en style inline dans le HTML */
.mt-2{margin-top:var(--s2)}.mt-3{margin-top:var(--s3)}.mt-4{margin-top:var(--s4)}
.mt-5{margin-top:var(--s5)}.mt-6{margin-top:var(--s6)}
:where(a,button,input,select,textarea):focus-visible{outline:2px solid var(--or);outline-offset:3px;border-radius:var(--r-xs)}

/* ---- header / nav : casse normale (humain) plutôt que capitales ---- */
.site-header{position:sticky;top:0;z-index:60;background:var(--header-bg);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}
.site-header .container{display:flex;align-items:center;gap:26px;height:78px}
.brand{display:flex;align-items:center;gap:10px;margin-right:auto}
.brand img{height:34px;width:auto;border-radius:var(--r-xs)}
.brand span{font-family:var(--serif);font-size:23px;color:var(--heading);font-weight:500}
/* la barre occupe toute la hauteur de l'en-tête, sinon l'élément de menu
   ne peut pas s'étirer jusqu'au panneau et le survol se perd entre les deux */
.nav{display:flex;align-items:center;gap:26px;align-self:stretch}
.nav>a{font:500 15px/1 var(--sans);letter-spacing:.005em;color:var(--text);border-radius:var(--r-pill);transition:color .2s ease}
.nav>a:hover,.nav>a.active{color:var(--or)}
.nav .btn,.header-cta{color:var(--or-ink);padding:13px 24px;font-size:13px}
/* le CTA est sorti de <nav> pour passer à droite du sélecteur de thème :
   il reste donc visible en mobile, quand .nav se replie dans le burger. */
.header-cta{flex:0 0 auto;white-space:nowrap}
/* sur reservation.html le lien porte .active : sans ceci, or sur or = illisible */
.nav>a.btn,.nav>a.btn.active,.nav>a.btn:hover,
.header-cta,.header-cta.active,.header-cta:hover{color:var(--or-ink)}
.burger{display:none;background:none;border:0;flex-direction:column;gap:5px;cursor:pointer;width:42px;height:42px;justify-content:center;border-radius:var(--r-pill)}
.burger span{display:block;height:2px;background:var(--or);border-radius:var(--r-pill)}

/* bascule de thème (reprise de la B) */
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex:0 0 auto;
  background:transparent;border:1px solid var(--border-2);border-radius:var(--r-pill);color:var(--or);cursor:pointer;transition:.2s ease}
.theme-toggle:hover{background:var(--or-wash);border-color:var(--or)}
.theme-toggle svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.theme-toggle .i-sun{display:none}
:root[data-theme="light"] .theme-toggle .i-sun{display:block}
:root[data-theme="light"] .theme-toggle .i-moon{display:none}

/* ---- sections ---- */
.section{padding:var(--s7) 0;position:relative}
.section--velvet{background:var(--band);border-top:0}
/* Une section qui PROLONGE le héros plutôt que d'en ouvrir une nouvelle :
   64 + 48 = 112px, au lieu des 168 d'un héros vers une vraie section. */
.section--suite{padding-top:var(--s5)}
/* Le héros et la section qui suit forment UN SEUL bloc de lecture : 24 + 48 = 72px.
   Cas de Prendre contact, où les quatre voies sont le contenu annoncé par le titre. */
/* Depuis que le héros a une hauteur plancher de 50vh, le resserrement du bas
   n'est plus visible : la marge reste symétrique, comme sur toutes les pages.
   C'est `.section--suite` qui porte encore le rapprochement du bloc suivant. */
.section--velvet::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--or-line) 22%,var(--or-line) 78%,transparent);pointer-events:none}
.section--velvet+.section--velvet::before{display:none}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;margin-bottom:var(--s5)}
.sec-h2{font-size:clamp(38px,5vw,60px);margin-bottom:var(--s3)}
/* Un titre qui est une PHRASE se lit ; à 60px il se subit. Les titres courts
   de la maison (« De quoi il parle. ») gardent leur taille, les questions
   longues descendent d'un cran et respirent mieux. */
.sec-h2--phrase{font-size:clamp(24px,3.2vw,42px);line-height:1.18;text-wrap:nowrap}
@media(max-width:1100px){.sec-h2--phrase{text-wrap:balance}}
.sec-head .sec-h2{margin-bottom:0}
/* règle anti-veuve : jamais un mot seul sur la dernière ligne d'un titre */
.page-h1,.sec-h2,.hero-h1,.tc-t,.t-title{text-wrap:balance}
/* la bande or porte un <br> voulu : l'équilibrage automatique le contredirait */
.cta-title{text-wrap:normal}
.sec-sub{font-size:15px;line-height:1.7;color:var(--muted-2);margin:0;max-width:320px;text-wrap:pretty}

/* ============================================================
   HÉROS C — le monogramme complet, pleine largeur
   Le sofa ET l'arbre : « deux frondaisons, un seul tronc ».
   Objet immobile. Expérience · maturité · confiance :
   aucune animation permanente, une seule apparition au chargement.
   ============================================================ */
/* RÈGLE DU HÉROS, identique sur toutes les pages :
   fond velours (la coupure nette avec la suite), 50% de la hauteur de
   fenêtre au minimum, et le texte ancré EN HAUT à une distance fixe.
   Centrer verticalement ferait danser le titre d'une page à l'autre. */
.sofa-hero{position:relative;display:flex;align-items:flex-start;min-height:50vh;
  overflow:hidden;background:var(--velours)}
.sofa-hero .container{position:relative;z-index:4;width:100%;padding:var(--hero-haut) var(--pad)}
/* `center` faisait démarrer le titre 29px plus bas que sur les autres pages :
   la grille se cale en haut comme partout ailleurs. */
.hero-grid{display:grid;grid-template-columns:1.06fr .94fr;gap:44px;align-items:start}
.hero-glow{position:absolute;inset:0;background:radial-gradient(860px 600px at 76% 52%,var(--glow-a),transparent 72%);pointer-events:none;z-index:1}

.hero-copy{max-width:620px}
.hero-h1{font-size:clamp(40px,5.2vw,64px);margin:0 0 22px;text-wrap:balance}
.hero-lead{font-size:17px;line-height:1.72;color:var(--muted);margin:0 0 28px;max-width:520px;text-wrap:pretty}
.hero-cta{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.hero-reassure{margin:16px 0 0}
/* resserrés pour que les deux CTA tiennent côte à côte */
.hero-cta .btn,.hero-cta .btn-outline{padding:15px 24px;font-size:12.5px}

/* CTA secondaire : contour seul, aucun aplat — il n'entre pas en concurrence */
.btn-outline{display:inline-block;background:transparent;color:var(--heading);border:1px solid var(--border-2);
  font:600 13px/1 var(--sans);letter-spacing:.06em;padding:16px 28px;border-radius:var(--r-pill);transition:.2s ease}
.btn-outline:hover{border-color:var(--heading);background:rgba(255,255,255,.06);transform:translateY(-1px)}
:root[data-theme="light"] .btn-outline:hover{background:rgba(42,22,66,.05)}

/* preuve d'expérience, en chiffres, dès l'arrivée */
.hero-proof{list-style:none;display:flex;gap:0;margin:34px 0 0;padding:24px 0 0;border-top:1px solid var(--border);max-width:560px}
.hero-proof li{flex:1;padding-right:22px}
.hero-proof li+li{padding-left:22px;border-left:1px solid var(--border)}
.hero-proof .n{display:block;font-family:var(--serif);font-weight:600;font-size:34px;line-height:1;letter-spacing:-.02em;color:var(--or)}
.hero-proof .l{display:block;font:400 12px/1.45 var(--sans);color:var(--muted-2);margin-top:8px}

/* le monogramme, pleine largeur, posé au bas du héros */
/* le monogramme, avec une profondeur très légère */
.hero-embleme{position:relative;z-index:3;display:flex;justify-content:center;align-items:center;
  pointer-events:none;perspective:1200px;animation:embleFlotte 11s ease-in-out infinite}
.embleme-img{position:relative;z-index:2;width:100%;height:auto;max-height:min(62vh,540px);object-fit:contain;
  transform-style:preserve-3d;will-change:transform;
  transition:transform .65s cubic-bezier(.22,.61,.36,1);
  filter:drop-shadow(0 38px 56px rgba(0,0,0,.55))}
:root[data-theme="light"] .embleme-img{filter:drop-shadow(0 34px 52px rgba(43,15,66,.24))}

/* respiration lente, indépendante du curseur */
@keyframes embleFlotte{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}

@media(prefers-reduced-motion:reduce){
  .hero-embleme{animation:none}
  .syn-liens path,.syn-noeuds circle,.syn-coeurs path{animation:none}
}

/* une seule apparition, lente — du soin, pas un gadget */
@keyframes heroPose{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.hero-embleme{animation:heroPose 1.2s cubic-bezier(.22,.61,.36,1) .15s both}
.hero-copy>*{animation:heroPose .9s cubic-bezier(.22,.61,.36,1) both}
.hero-copy>*:nth-child(2){animation-delay:.06s}
.hero-copy>*:nth-child(3){animation-delay:.12s}
.hero-copy>*:nth-child(4){animation-delay:.18s}
.hero-copy>*:nth-child(5){animation-delay:.24s}
.hero-copy>*:nth-child(6){animation-delay:.3s}
@media(prefers-reduced-motion:reduce){
  .hero-embleme,.hero-copy>*{animation:none}
}


/* ============================================================
   SYSTÈME SYNAPTIQUE — éléments A et B retenus le 2026-07-29
   (planche `99_UPLOADS/Mental Sofa - Systeme synaptique.html`).
   Points PLEINS partout, y compris dans l'ossature où la planche
   les donnait creux.
   ============================================================ */

/* ---- A · L'EMBLÈME, le resserrement ----
   Ce qui arrive en vrac → LA SYNAPSE (au milieu) → un seul trait
   → trois branches → LE CŒUR (à droite) : ce qui compte. */
/* compagnon du texte, à droite : discret, pas une planche */
/* compagnon du texte, à droite.
   width:100% est indispensable : sur un élément de grille, `margin-left:auto`
   avec une largeur auto fait rétrécir l'élément à son contenu (300 px ici). */
.embleme-resserrement{position:relative;width:100%;max-width:660px;margin-left:auto}
.embleme-resserrement svg{width:100%;height:auto;overflow:visible}

/* Même relèvement de contraste que les schémas de situation (2026-08-02) :
   le grand dessin de l'accueil souffrait exactement du même défaut. */
.er-fils path{fill:none;stroke:var(--violet-trait);stroke-width:1.5;opacity:.76}
.er-fils path:nth-child(odd){opacity:.6}

/* les points en mouvement : ils remontent les fils en or, ressortent
   violets de la synapse, puis disparaissent dans le cœur */
.er-pt-or{fill:var(--or-soft)}
.er-pt-violet{fill:var(--violet-trait)}
@media(prefers-reduced-motion:reduce){.er-mobiles{display:none}}

/* les sources émettent : un halo part avec chaque point */
.er-halos circle{fill:none;stroke:var(--violet-trait);stroke-width:1.5;opacity:0}
@media(prefers-reduced-motion:no-preference){
  .er-halos circle{animation:erEmet 4.2s ease-out infinite}
}
@keyframes erEmet{0%{opacity:.55;r:6}30%{opacity:0;r:17}100%{opacity:0;r:17}}

/* la synapse : sombre au-dedans, cerclée d'or */
/* pleins, pas en contour : les traits disparaissent dedans, c'est le but */
.er-synapse{fill:var(--or);stroke:none}

.er-sortie path{fill:none;stroke:var(--or);stroke-width:2.4;opacity:.95;stroke-linecap:round}

/* le cœur, à droite : contour seul, il bat quand l'influx arrive */
.er-coeur{fill:var(--or);stroke:none}
.er-coeur-halo{fill:none;stroke:var(--or);stroke-width:1.4;opacity:.25}
@media(prefers-reduced-motion:no-preference){
  .er-coeur{animation:erBat 4.6s ease-in-out infinite;transform-origin:1025px 320px}
  .er-coeur-halo{animation:erOnde 4.6s ease-out infinite;transform-origin:1025px 320px}
}
@keyframes erBat{0%,74%,100%{transform:scale(1)}82%{transform:scale(1.05)}90%{transform:scale(1)}}
@keyframes erOnde{0%,74%{opacity:.22;transform:scale(1)}84%{opacity:.5}100%{opacity:0;transform:scale(1.14)}}

/* points PLEINS des deux côtés */
.er-points-entree circle{fill:var(--violet-trait)}


/* le resserrement se trace une fois, à l'apparition */
@media(prefers-reduced-motion:no-preference){
  .reveal .er-fils path{stroke-dasharray:900;stroke-dashoffset:900;
    animation:msDraw 2s ease .25s forwards}
  .reveal .er-fils path:nth-child(2){animation-delay:.33s}
  .reveal .er-fils path:nth-child(3){animation-delay:.41s}
  .reveal .er-fils path:nth-child(4){animation-delay:.49s}
  .reveal .er-fils path:nth-child(5){animation-delay:.57s}
  .reveal .er-fils path:nth-child(6){animation-delay:.65s}
  .reveal .er-fils path:nth-child(7){animation-delay:.73s}
  .reveal .er-fils path:nth-child(8){animation-delay:.81s}
}

/* ---- B · L'OSSATURE, le fil conducteur ----
   Un seul trait relie la page ; l'impulsion suit la lecture. */
.ossature{position:fixed;left:20px;top:0;bottom:0;width:9px;z-index:5;pointer-events:none}
.oss-fil{position:absolute;left:4px;top:0;bottom:0;width:1px;background:var(--border-2)}
.oss-impulsion{position:absolute;left:4px;top:0;width:1px;height:0;
  background:linear-gradient(180deg,transparent,var(--or));opacity:.55;
  transition:height .12s linear}
.oss-noeud{position:absolute;left:1px;width:7px;height:7px;border-radius:50%;
  background:var(--or);opacity:.24;transform:translateY(-50%);
  transition:opacity .45s ease,box-shadow .45s ease}
.oss-noeud.passe{opacity:.95;box-shadow:0 0 0 3px var(--or-wash)}
/* la ramification part du nœud et se TRACE quand on descend */
.oss-ram{position:absolute;left:5px;top:50%;width:32px;height:15px;overflow:visible}
.oss-ram path{fill:none;stroke:var(--or-line);stroke-width:1;stroke-linecap:round;
  stroke-dasharray:70;stroke-dashoffset:70;opacity:0}
/* la branche se trace, le point la parcourt, puis elle s'efface :
   il ne reste que le nœud. Rien ne dépasse dans le vide. */
.oss-noeud.passe .oss-ram path{animation:ossRam 2.4s ease forwards}
@keyframes ossRam{
  0%{stroke-dashoffset:70;opacity:1}
  30%{stroke-dashoffset:0;opacity:1}
  70%{stroke-dashoffset:0;opacity:1}
  100%{stroke-dashoffset:0;opacity:0}
}
@media(prefers-reduced-motion:reduce){
  .oss-noeud.passe .oss-ram path{animation:none;opacity:0}
}
/* un point court sur la ramification : rappel de la synapse */
.oss-pt{fill:var(--or);opacity:0}
/* .voies est déclaré plus bas dans la feuille : il faut deux classes pour le battre */
.voies.voies--quatre{grid-template-columns:repeat(4,1fr);max-width:none;margin-bottom:0;gap:14px}
.voies--quatre .voie{padding:20px}
.voies--quatre .voie-t{font-size:18.5px}
@media(max-width:1040px){.voies.voies--quatre{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.voies.voies--quatre{grid-template-columns:1fr}}
@media(max-width:1180px){.ossature{display:none}}

/* ---- placeholders (hachures) ---- */
.ph-hatch{position:absolute;inset:0;background:repeating-linear-gradient(135deg,var(--hatch) 0 2px,transparent 2px 10px)}
.ph-tag{font:600 10px/1.6 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--muted-2)}
.media-ph{position:relative;overflow:hidden;background:var(--velours);border-radius:var(--r-lg)}
.media-ph .ph-tag{position:absolute;left:22px;bottom:22px}
.media-ph.portrait{aspect-ratio:3/4}
.media-ph.portrait img,.media-ph.wide img{width:100%;height:100%;object-fit:cover;object-position:50% 22%}
.media-ph.wide{aspect-ratio:16/9}

/* ---- portrait cadré sur le visage ----
   Le portrait entier (1000×1500) mangeait la page : on le recadre au 4/5,
   ancré haut, pour garder le regard et perdre le décor. */
.portrait-rond{position:relative;aspect-ratio:4/5;max-width:420px;overflow:hidden;
  border-radius:var(--r-lg);border:1px solid var(--border);box-shadow:var(--shadow)}
.portrait-rond img{width:100%;height:100%;object-fit:cover;object-position:50% 14%}
/* sur l'accueil, le portrait reste une présence, pas un sujet */
.portrait-rond--petit{max-width:330px}

/* sur SA page, en revanche, il prend toute sa place */
.portrait-grand{position:relative;aspect-ratio:3/4;overflow:hidden;border-radius:var(--r-lg);
  border:1px solid var(--border);box-shadow:var(--shadow)}
.portrait-grand img{width:100%;height:100%;object-fit:cover;object-position:50% 16%}
.portrait-rond::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,transparent 55%,rgba(11,5,18,.42))}
:root[data-theme="light"] .portrait-rond::after{background:linear-gradient(180deg,transparent 60%,rgba(43,15,66,.14))}

/* ---- paire de boutons : explorer, puis revenir vers la réservation ---- */
.cta-duo{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:26px}

/* lien de passerelle entre transformations */
.trow--lien{grid-template-columns:1fr 40px}

/* ---- transformations en CARTES, de gauche à droite ----
   Remplace les lignes pleine largeur depuis la v9. Le CSS des lignes
   (.trows/.trow) est conservé plus bas : c'est le point de retour. */
.tcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}
/* Ces cartes ne se lisaient pas comme cliquables : fond plat, bordure discrète, et
   une flèche nue qui passait pour un ornement. Tout l'indice était dans le survol —
   donc invisible au repos, et inexistant au tactile, où il n'y a pas de survol.
   Trois signaux ajoutés le 2026-08-02, tous présents AU REPOS :
   un dégradé violet, un liseré violet en haut, et la flèche transformée en pastille
   cerclée — c'est elle qui fait le plus gros du travail, parce qu'une pastille ronde
   se lit comme un bouton. Le survol ne fait plus qu'intensifier. */
.tcard{position:relative;display:flex;flex-direction:column;overflow:hidden;
  background:linear-gradient(168deg,rgba(122,75,176,.20),rgba(122,75,176,.05) 48%,transparent 80%),var(--velours-2);
  border:1px solid var(--border-2);border-radius:var(--r-lg);
  padding:34px 30px 28px;color:inherit;transition:.24s ease}
.tcard::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,var(--violet-trait),transparent 74%);transition:.24s ease}
.tcard:hover{border-color:var(--or);transform:translateY(-4px);box-shadow:var(--shadow)}
.tcard:hover::before{background:linear-gradient(90deg,var(--or),transparent 74%)}
.tc-t{font-family:var(--serif);font-weight:600;font-size:clamp(24px,2.4vw,30px);line-height:1.06;
  letter-spacing:-.022em;color:var(--heading);margin:0 0 12px}
.tc-d{font:400 15px/1.7 var(--sans);color:var(--muted);margin:0 0 22px;text-wrap:pretty}
.tc-arr{margin-top:auto;display:inline-flex;align-items:center;justify-content:center;
  width:40px;height:40px;flex:0 0 auto;border-radius:50%;
  border:1px solid var(--violet-deep);background:rgba(122,75,176,.20);
  font:600 17px/1 var(--sans);color:var(--or);transition:.24s ease}
.tcard:hover .tc-arr{background:var(--or);border-color:var(--or);color:var(--or-ink);
  transform:translateX(5px)}
/* le clavier doit voir ce que la souris voit */
.tcard:focus-visible{outline:2px solid var(--or);outline-offset:3px}
.tcard:focus-visible .tc-arr{background:var(--or);border-color:var(--or);color:var(--or-ink)}

/* ---- transformations : lignes pleine largeur, coins adoucis au survol ---- */
.trows{display:flex;flex-direction:column}
.trow{display:grid;grid-template-columns:80px 1fr 420px 40px;gap:28px;align-items:center;padding:34px 24px;margin:0 -24px;border-top:1px solid var(--border);color:inherit;border-radius:var(--r);transition:.22s ease}
.trow:last-child{border-bottom:1px solid var(--border)}
.trow:hover{background:linear-gradient(90deg,var(--or-wash),transparent 46%);transform:translateX(6px)}
.trow .n{font-family:var(--serif);font-size:38px;line-height:1;color:var(--or)}
.trow .name{font-family:var(--serif);font-weight:600;font-size:clamp(27px,3.2vw,38px);line-height:1.02;letter-spacing:-.022em;color:var(--heading)}
.trow .desc{font:400 15px/1.7 var(--sans);color:var(--muted)}
.trow .arr{font:600 18px/1 var(--sans);color:var(--or);text-align:right}

/* ---- split (Lina / contenu + média) ---- */
.split{display:grid;grid-template-columns:6fr 6fr;gap:56px;align-items:center}
.split-lead{font-size:17px;line-height:1.78;color:var(--muted);margin:0 0 26px;max-width:520px;
  text-align:justify;text-justify:inter-word;hyphens:auto;-webkit-hyphens:auto}

/* ---- avant / après ---- */
.beforeafter{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}
.ba-col{padding:56px var(--pad)}
.ba-col+.ba-col{border-left:1px solid var(--border)}
.ba-after{background:var(--velours-2)}
.ba-label{font:600 10px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;margin-bottom:20px}
.ba-before .ba-label{color:var(--muted-2)}
.ba-after .ba-label{color:var(--or)}
.ba-big{font-family:var(--serif);font-weight:600;font-size:clamp(29px,3.8vw,43px);line-height:1.04;letter-spacing:-.026em;margin-bottom:20px}
.ba-before .ba-big{color:var(--faded);filter:blur(1.3px)}
.ba-after .ba-big{color:var(--heading)}
.ba-col ul{margin:0;padding-left:18px;font:400 15px/1.85 var(--sans)}
.ba-before ul{color:var(--muted-2)}
.ba-after ul{color:var(--muted)}

/* ---- bandeau CTA or ---- */
.cta-gold{background:var(--or);border-radius:var(--r-lg);max-width:var(--maxw);
  margin:var(--s7) auto var(--s7)}
.cta-in{display:flex;align-items:center;justify-content:space-between;gap:40px;padding:48px 44px}
.cta-in>div{min-width:0}
.cta-title{font-family:var(--serif);font-weight:600;font-size:clamp(30px,4.2vw,44px);line-height:1.04;letter-spacing:-.026em;color:var(--or-ink)}
.cta-sub{font:400 15px/1.6 var(--sans);color:var(--or-ink-muted);margin:10px 0 0;max-width:560px}
.cta-gold .btn-dark{background:var(--or-ink);color:var(--or);border-color:var(--or-ink)}
.cta-gold .btn-dark:hover{background:var(--or-ink);color:var(--or-soft)}

/* ---- footer ---- */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* La respiration entre la bande or et le pied vit SOUS la bande, dans le fond
   de page : le pied a son propre fond, un padding ici le collerait à la bande. */
.footer{background:var(--footer-bg);border-top:1px solid var(--border);padding:var(--s5) 0 var(--s5)}


.foot-in{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.foot-brand{font-family:var(--serif);font-size:21px;color:var(--text)}
.foot-nav{display:flex;flex-wrap:wrap;gap:20px}
.foot-nav a{font:500 14px/1 var(--sans);color:var(--muted)}
.foot-nav a:hover{color:var(--or)}
.foot-copy{font:400 12px/1 var(--sans);color:var(--muted-2)}

/* ---- reveal au scroll ---- */
/* Sans JavaScript, .reveal resterait invisible À JAMAIS : le masquage est
   donc conditionné au marqueur `js` posé par le script d'en-tête. */
.js .reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}
.js .reveal.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none;transition:none}}

@keyframes msDraw{to{stroke-dashoffset:0}}
@keyframes msPulse{0%,100%{opacity:.4}50%{opacity:1}}

/* ---- méga menu : les trois transformations, en grand ---- */
.megamenu{position:fixed;left:0;right:0;top:78px;background:var(--surface-haute);
  border-bottom:1px solid var(--border-2);
  box-shadow:0 34px 70px -26px rgba(0,0,0,.75);display:none;z-index:70}
:root[data-theme="light"] .megamenu{box-shadow:0 30px 60px -30px rgba(43,15,66,.3)}
.nav-item:hover .megamenu,.nav-item:focus-within .megamenu{display:block}
/* pas de classe .container ici : `.site-header .container` lui imposerait flex + 78px de haut */
.mega-in{display:grid;grid-template-columns:repeat(3,1fr) .9fr;gap:0;
  max-width:var(--maxw);margin:0 auto;padding:30px var(--pad)}
.mega-item{display:block;padding:22px 26px;border-radius:var(--r);color:inherit;transition:.2s ease}
.mega-item:hover{background:var(--or-wash)}
.mega-n{display:block;font-family:var(--serif);font-size:22px;line-height:1;color:var(--or);opacity:.75;margin-bottom:12px}
.mega-t{display:block;font-family:var(--serif);font-weight:600;font-size:25px;line-height:1.1;
  letter-spacing:-.02em;color:var(--heading);margin-bottom:8px}
.mega-d{display:block;font:400 14px/1.6 var(--sans);color:var(--muted)}
.mega-cote{padding:22px 26px;border-left:1px solid var(--border)}
.mega-cote-t{font:600 11px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--or);margin:0 0 12px}
.mega-cote-s{font:400 14px/1.6 var(--sans);color:var(--muted-2);margin:0 0 16px}

/* ---- sous-menu nav ---- */
/* l'élément occupe TOUTE la hauteur de l'en-tête : sans cela il reste un vide
   entre son bas et le panneau, le survol se perd et le menu se referme */
.nav-item{position:relative;display:flex;align-items:center;align-self:stretch}
.nav-item>a{font:500 15px/1 var(--sans);color:var(--text);transition:color .2s ease}
.nav-item>a:hover{color:var(--or)}
.nav-item>a.active{color:var(--or)}
.nav-item>a.parent::after{content:"▾";margin-left:6px;font-size:.8em;color:var(--muted-2)}
.submenu{position:absolute;top:100%;left:-14px;min-width:250px;background:var(--velours);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow);padding:10px 8px;display:none;z-index:70;overflow:hidden}
.nav-item:hover .submenu,.nav-item:focus-within .submenu{display:block}
.submenu a{display:block;padding:11px 14px;font:500 14px/1 var(--sans);color:var(--text);border-radius:var(--r-sm)}
.submenu a:hover{color:var(--or);background:var(--or-wash)}

/* ---- placeholder vidéo ---- */
.video-ph{position:relative;aspect-ratio:16/9;background:var(--velours);border-radius:var(--r-lg);overflow:hidden;display:flex;align-items:center;justify-content:center;border:1px solid var(--border)}
.video-ph .ph-hatch{opacity:.6}
.video-ph .play{position:relative;width:74px;height:74px;border:1px solid var(--or);border-radius:var(--r-pill);display:flex;align-items:center;justify-content:center;background:var(--or-wash)}
.video-ph .play::after{content:"";border-left:19px solid var(--or);border-top:12px solid transparent;border-bottom:12px solid transparent;margin-left:5px}
.video-ph .vdur{position:absolute;top:16px;right:16px;font:600 10px/1 var(--sans);letter-spacing:.14em;color:var(--muted-2)}

/* ---- stats éditoriales ---- */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;margin-top:12px}
.stat{background:var(--noir);padding:32px 26px}
.stat .num{font-family:var(--serif);font-weight:600;font-size:54px;line-height:1;color:var(--or)}
.stat .lbl{font:400 13px/1.5 var(--sans);color:var(--muted);margin-top:8px}

/* ---- avis ---- */
/* ── Avis : carrousel ─────────────────────────────────────────────────────
   Les cartes ne sont plus des boîtes noires posées sur la bande : elles
   partagent son fond et se distinguent par un filet et un guillemet d'or.
   Le défilement est natif (scroll-snap) : sans JavaScript, on fait glisser
   au doigt ou au trackpad ; les flèches ne sont qu'un confort en plus. */
.carrousel{position:relative;margin-top:var(--s5)}
.carrousel-piste{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;
  scroll-behavior:smooth;padding:4px 4px 20px;margin:-4px -4px 0;
  scrollbar-width:none;-ms-overflow-style:none}
.carrousel-piste::-webkit-scrollbar{display:none}
.carrousel-piste:focus-visible{outline:2px solid var(--or);outline-offset:4px;border-radius:var(--r)}
.review{flex:0 0 min(360px,78vw);scroll-snap-align:start;position:relative;margin:0;
  padding:34px 30px 28px;background:transparent;border:1px solid var(--border);
  border-radius:var(--r-lg);transition:.25s ease}
.review::before{content:"«";position:absolute;top:16px;right:24px;font-family:var(--serif);
  font-size:64px;line-height:1;color:var(--or);opacity:.16}
.review:hover{border-color:var(--or-line);background:var(--or-wash)}
.review .stars{color:var(--or);letter-spacing:3px;font-size:13px;margin-bottom:18px}
.review .q{font-family:var(--serif);font-style:italic;font-size:20px;line-height:1.45;
  color:var(--text);margin:0 0 20px;quotes:none}
.review .q p{margin:0 0 .65em}
.review .q p:last-child{margin-bottom:0}
/* Les avis sont du VERBATIM : on ne coupe jamais le texte à la source. Les longs
   sont donc tronqués à l'affichage et rouverts d'un clic, comme le fait le widget
   Google lui-même. Le texte intégral reste toujours dans le DOM et reste lu par
   les lecteurs d'écran, qui ignorent le rognage visuel. */
/* Pas de -webkit-line-clamp ici : .q est un enfant direct de .review, qui est un
   conteneur flex. Un enfant flex voit son display « blockifié », -webkit-box devient
   flow-root et le rognage ne s'applique jamais — silencieusement.
   On borne donc la hauteur, sur un multiple exact de l'interligne (1.45 × 9) : la
   coupe tombe pile entre deux lignes, jamais au milieu d'une. */
.review .q{max-height:calc(1.45em * 9);overflow:hidden}
.review.ouvert .q{max-height:none}
.q-plus{align-self:flex-start;margin:0 0 20px;padding:0;background:none;border:0;
  cursor:pointer;font:600 10px/1.5 var(--sans);letter-spacing:.16em;
  text-transform:uppercase;color:var(--or);border-bottom:1px solid var(--or-line)}
.q-plus:hover{border-bottom-color:var(--or)}
.review .who{font:600 10px/1.5 var(--sans);letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted-2);margin-top:auto}
.review{display:flex;flex-direction:column}
.carrousel-cmd{display:flex;gap:10px;margin-top:var(--s3)}
.carrousel-fleche{width:46px;height:46px;flex:0 0 auto;background:transparent;
  border:1px solid var(--border-2);border-radius:var(--r-pill);color:var(--text);
  font-size:17px;line-height:1;cursor:pointer;transition:.2s ease}
.carrousel-fleche:hover{border-color:var(--or);color:var(--or)}
.carrousel-fleche[disabled]{opacity:.3;cursor:default;border-color:var(--border)}
@media(prefers-reduced-motion:reduce){.carrousel-piste{scroll-behavior:auto}}

/* ---- prose / lead / lien flèche ---- */
.prose{max-width:720px}
.prose p{font-size:17px;line-height:1.85;color:var(--muted)}
/* Les listes n'existaient pas dans .prose tant que les pages légales n'avaient que
   des paragraphes ; les CGV en ont besoin (composition d'un programme, article 8). */
.prose ul{margin:0 0 var(--s3);padding-left:22px;list-style:none}
.prose ul li{position:relative;font-size:17px;line-height:1.85;color:var(--muted);margin-bottom:6px}
.prose ul li::before{content:"";position:absolute;left:-18px;top:.82em;width:7px;height:1px;background:var(--or)}
.prose h3{margin-top:var(--s4)}
.prose h3:first-of-type{margin-top:var(--s3)}
.lead{font-family:var(--serif);font-weight:500;font-size:clamp(19px,2.2vw,24px);line-height:1.52;color:var(--text);text-wrap:pretty}
.arrowlink{font:600 13px/1 var(--sans);letter-spacing:.04em;color:var(--or);border-bottom:1px solid var(--or);padding-bottom:5px;display:inline-block;transition:.2s ease}
.arrowlink:hover{color:var(--or-soft);border-color:var(--or-soft)}


/* ============ composants pages intérieures ============ */
/* fil d'ariane */
.crumb{padding:20px 0;border-bottom:1px solid var(--border);font:500 13px/1 var(--sans);color:var(--muted-2)}
.crumb a{color:var(--muted-2)}.crumb a:hover{color:var(--or)}
.crumb .sep{color:var(--border-2);margin:0 10px}.crumb .cur{color:var(--text)}

/* héros de page intérieure */
/* Le héros appartient à sa page : il se pose un cran plus près de la première
   section (64+104 = 168) que deux sections entre elles (104+104 = 208). */
/* RÈGLE (03.08.2026) : la hauteur d'un héros de page SUIT SON TEXTE, avec la
   même marge en haut et en bas. Aucune hauteur minimale.
   Avant, `min-height:50vh` forçait la moitié de l'écran : sur une page à peu de
   texte (FAQ, Journal), le titre restait collé en haut et la moitié basse était
   vide ; sur une page illustrée, le contenu dépassait. D'où deux hauteurs
   différentes d'une page à l'autre, et une marge basse qui n'était jamais celle
   du haut. Une hauteur imposée ne porte rien ici. */
.page-hero{position:relative;padding:var(--hero-haut) 0;overflow:hidden;
  display:flex;align-items:flex-start;background:var(--velours)}
.page-hero>.container,.page-hero>.glow~.container{width:100%;position:relative;z-index:2}
/* sur Approche le schéma monte dans le héros : il remplit ce qui était vide */
.page-hero--schema{padding-bottom:var(--hero-haut)}
/* le texte se cale en haut comme partout ; c'est le schéma qui se centre */
.page-hero--schema .split{align-items:center;gap:30px;grid-template-columns:5fr 7fr}
.page-hero--schema .split>div:first-child{align-self:start;padding-top:0}
/* le schéma est plus haut que le texte : centrer le texte contre lui le fait
   descendre trop bas. Il se cale en haut, le dessin garde le centre. */

.page-hero--schema .embleme-resserrement{max-width:none;margin-left:0}
.page-hero .glow{position:absolute;inset:0;background:radial-gradient(640px 400px at 16% 8%,var(--glow-a),transparent 72%);pointer-events:none}
.page-hero .container{position:relative;z-index:1}
.page-h1{font-size:clamp(42px,7vw,80px);margin:0 0 22px}
.page-lead{font-size:17px;line-height:1.78;color:var(--muted);max-width:600px;margin:0 0 28px;text-wrap:pretty}
.eyebrow-num{display:flex;align-items:baseline;gap:18px;margin-bottom:22px}
.eyebrow-num .n{font-family:var(--serif);font-size:38px;line-height:1;color:var(--or)}
.eyebrow-num .lbl{font:600 10px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--muted)}

/* ligne transformation avec prix (hub) */
.trow--hub{grid-template-columns:70px 1.1fr 1.5fr 40px}
.trow .fmt{display:block;font:400 12px/1.45 var(--sans);color:var(--muted-2);margin-top:6px}

/* gains numérotés (I / II / III) */
.gains{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--border);margin-top:8px}
.gain{padding:34px 28px;border-right:1px solid var(--border)}
.gain:first-child{padding-left:0}.gain:last-child{border-right:0;padding-right:0}
.gain .r{font-family:var(--serif);font-size:29px;line-height:1;color:var(--or);margin-bottom:14px}
.gain p{font:400 15px/1.72 var(--sans);color:var(--muted);margin:0}
.gain.dark{background:var(--velours-2);padding:34px 28px;border-radius:var(--r)}

/* bloc offre / prix */
.offer{border:1px solid var(--or);background:var(--velours-2);border-radius:var(--r-lg);padding:40px;max-width:560px;box-shadow:var(--shadow)}
.offer .pname{font:600 10px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--or);margin-bottom:14px}
/* Le prix se lit APRÈS ce qu'on reçoit, et sans crier : à 70px en tête de carte,
   il faisait peur avant d'avoir rien promis. */
.offer-prix{display:flex;align-items:baseline;justify-content:space-between;gap:20px;
  margin-top:20px;padding-top:18px;border-top:1px solid var(--border)}
.offer-prix .lbl{font:600 10px/1.4 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--muted-2)}
.offer-prix .price{font-family:var(--serif);font-weight:600;font-size:38px;line-height:1;
  letter-spacing:-.02em;color:var(--heading);white-space:nowrap}
.offer .desc{font-size:15px;line-height:1.72;color:var(--muted);margin:0 0 14px}
.offer .offer-fmt{font-size:14px;line-height:1.72;color:var(--muted-2);font-style:italic;margin:0 0 18px}
.offer .incl{border-top:1px solid var(--border);padding-top:16px;font-size:14px;line-height:1.72;color:var(--text)}
.offer .incl b{color:var(--or)}
.offer .offer-fmt{margin-bottom:22px}
.offer-specs{list-style:none;margin:0 0 20px;padding:20px 0 0;border-top:1px solid var(--border);
  display:flex;flex-direction:column;gap:11px}
.offer-specs li{display:flex;align-items:baseline;gap:16px;font-size:14.5px;line-height:1.5}
.offer-specs b{flex:0 0 110px;font:600 10px/1.5 var(--sans);letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted-2);font-weight:600}
.offer-specs span{color:var(--heading);font-weight:500}
.offer .offer-note{font:400 13px/1.6 var(--sans);color:var(--muted-2);margin:14px 0 0}
/* le CTA vit hors de la carte d'offre */
.offer-cta{max-width:560px;margin-top:26px;display:flex;flex-direction:column;gap:12px;align-items:flex-start}

/* ---- accès prioritaire · le bloc VIOLET ----------------------------------
   Répartition des deux couleurs de la marque : l'OR dit le prix et le résultat,
   le VIOLET dit la relation. Le bloc se colle sous l'offre, sans bordure haute,
   pour se lire comme la suite du prix — pas comme un encart détaché.
   Ce composant n'existe que sur dirigeants.html : c'est ce qui le rend lisible. */
.acces{max-width:560px;margin-top:-1px;padding:30px 40px 34px;
  background:linear-gradient(180deg,rgba(91,45,142,.24),rgba(91,45,142,.10));
  border:1px solid var(--violet-deep);border-top-color:transparent;
  border-radius:0 0 var(--r-lg) var(--r-lg)}
.acces-t{font:600 10px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;
  color:var(--violet-clair);margin:0 0 16px;display:flex;align-items:center;gap:10px}
.acces-t::before{content:"";width:22px;height:1px;background:var(--violet-clair);flex:0 0 auto}
.acces-l{list-style:none;margin:0;padding:0;display:grid;gap:15px}
.acces-l li{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:baseline}
.acces-l li::before{content:"";width:6px;height:6px;border-radius:50%;
  background:var(--violet-clair);transform:translateY(-2px)}
.acces-l b{display:block;font-size:15px;line-height:1.5;color:var(--heading);font-weight:600}
.acces-l span{display:block;font-size:14px;line-height:1.7;color:var(--muted)}
/* marque les deux lignes qui n'existent QUE dans ce programme : c'est le contraste
   qui fait comprendre la valeur, pas le superlatif */
/* Sélecteur volontairement plus spécifique que `.acces-l span` ci-dessus, qui
   imposerait sinon `display:block` et la couleur du texte courant — le badge
   deviendrait un bloc gris illisible. Ne pas le raccourcir en `.acces-seul`. */
.acces-l b .acces-seul{display:inline-block;margin-left:8px;padding:3px 9px;
  border-radius:var(--r-pill);background:var(--violet-deep);color:#fff;
  font:600 9px/1.5 var(--sans);letter-spacing:.12em;text-transform:uppercase;
  vertical-align:middle;white-space:nowrap}
@media(max-width:600px){.acces{padding:26px 24px 30px}}

/* ---- les trois mots, en grand ---- */
.triptyque{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;
  background:var(--border);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;margin:0;padding:0}
.triptyque li{background:var(--noir);padding:38px 32px}
.t-mot{display:block;font-family:var(--serif);font-weight:600;font-size:clamp(30px,3.6vw,44px);
  line-height:1;letter-spacing:-.03em;color:var(--or)}
.t-sub{display:block;font:400 14px/1.6 var(--sans);color:var(--muted);margin-top:14px;text-wrap:pretty}

/* ---- chapitres : des blocs empilés, plus schématiques que de la prose ---- */
.chapitres{list-style:none;margin:40px 0 0;padding:0;display:flex;flex-direction:column;gap:18px;counter-reset:ch}
.chapitre{display:grid;grid-template-columns:88px 1fr;gap:28px;align-items:start;
  background:var(--noir);border:1px solid var(--border);border-radius:var(--r-lg);padding:34px 36px}
.chapitre--garde{border-left:3px solid var(--or)}
.ch-n{font-family:var(--serif);font-weight:600;font-size:42px;line-height:1;color:var(--or);opacity:.75}
.ch-t{font-family:var(--serif);font-weight:600;font-size:26px;line-height:1.15;letter-spacing:-.022em;
  color:var(--heading);margin:0 0 12px}
.ch-corps p{font-size:16px;line-height:1.75;color:var(--muted);margin:0 0 12px}
.ch-corps p:last-child{margin-bottom:0}
.ch-corps .ticks{margin:16px 0}

/* listes à filets */
.ticks{list-style:none;margin:0 0 1rem;padding:0}
.ticks li{position:relative;padding:12px 0 12px 26px;border-bottom:1px solid var(--border);color:var(--text);font-size:15px;line-height:1.62}
.ticks li::before{content:"";position:absolute;left:0;top:21px;width:10px;height:2px;border-radius:var(--r-pill);background:var(--or)}
.ticks b{color:var(--bold)}

/* callout */
.callout{border-left:3px solid var(--or);background:var(--velours-2);border-radius:0 var(--r) var(--r) 0;padding:22px 26px;color:var(--muted);font-size:15px;line-height:1.78;text-wrap:pretty}

/* formulaires */
/* ============================================================
   Widget Amelia — reproduction statique
   Il garde son propre habillage (clair), c'est l'outil externe
   tel qu'il se présente. Volontairement distinct du site.
   ============================================================ */
/* ── Widget Amelia ────────────────────────────────────────────────────────
   Reproduction statique du tunnel de réservation, REDESSINÉE AUX JETONS de la
   marque : aucune couleur en dur, donc elle suit le thème clair comme le
   sombre. Ces règles sont écrites pour être reportées telles quelles en
   surcharge du vrai widget WordPress (voir TRANSMISSION-technique.md).
   ------------------------------------------------------------------------ */
.amelia{display:grid;grid-template-columns:290px 1fr;border-radius:var(--r-lg);overflow:hidden;
  box-shadow:var(--shadow);max-width:920px;font-family:var(--sans);
  border:1px solid var(--or-line);background:var(--velours-2)}
.amelia svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}

.amelia-nav{background:var(--noir);padding:22px 18px;display:flex;flex-direction:column;
  min-height:420px;border-right:1px solid var(--border)}
.amelia-etapes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.amelia-etapes li{display:flex;align-items:center;gap:12px;padding:14px;border-radius:var(--r-sm);
  color:var(--muted);font-size:15px;transition:.2s ease}
.amelia-etapes li.on{background:var(--or-wash);color:var(--heading)}
.amelia-etapes li.on svg{color:var(--or)}
.amelia-etapes li span{margin-right:auto}
.pastille{width:18px;height:18px;border-radius:50%;background:var(--border-2);flex:0 0 auto}
.pastille.on{background:transparent;border:3px solid var(--or)}
.amelia-reduire{margin-top:auto;padding-top:22px;border-top:1px solid var(--border);display:flex;
  align-items:center;justify-content:space-between;color:var(--muted);font-size:15px}
.amelia-reduire i{width:26px;height:26px;border-radius:50%;background:var(--or);color:var(--or-ink);
  display:flex;align-items:center;justify-content:center;font-style:normal;font-size:14px}

.amelia-corps{background:var(--velours-2);color:var(--text);display:flex;flex-direction:column}
.amelia-titre{padding:22px 26px;font-family:var(--serif);font-weight:600;font-size:25px;
  letter-spacing:-.02em;color:var(--heading);border-bottom:1px solid var(--border)}
.amelia-panneau{padding:22px 26px;flex:1;background:var(--band)}
.amelia-filtres{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px}
.amelia-champ{display:flex;align-items:center;gap:10px;background:var(--velours-2);
  border:1px solid var(--border);border-radius:var(--r-sm);padding:13px 15px;
  color:var(--muted-2);font-size:15px}
.amelia-champ svg{color:var(--muted-2)}
.amelia-select{justify-content:space-between}
.amelia-select b{color:var(--muted-2);font-weight:400}

.amelia-service{display:flex;gap:18px;align-items:flex-start;background:var(--surface-haute);
  border:1px solid var(--or-line);border-radius:var(--r);padding:18px 20px}
.amelia-vignette{width:74px;height:74px;border-radius:50%;border:1px solid var(--or-line);
  color:var(--or);display:flex;align-items:center;justify-content:center;flex:0 0 auto;
  background:var(--or-wash)}
.amelia-vignette svg{width:34px;height:34px}
.amelia-detail{flex:1;min-width:0}
.amelia-ligne{display:flex;align-items:center;justify-content:space-between;gap:16px}
.amelia-nom{font-family:var(--serif);font-weight:600;font-size:21px;letter-spacing:-.015em;
  color:var(--heading)}
.amelia-tarif{background:var(--or);color:var(--or-ink);font:600 11px/1 var(--sans);
  letter-spacing:.1em;text-transform:uppercase;padding:8px 15px;border-radius:var(--r-pill);
  white-space:nowrap}
.amelia-meta{list-style:none;display:flex;flex-wrap:wrap;gap:8px 18px;margin:12px 0 0;padding:0;
  font-size:14px;color:var(--muted)}
.amelia-meta li{display:flex;align-items:center;gap:7px}
.amelia-meta svg{width:16px;height:16px;color:var(--or)}
.amelia-plus{margin-top:14px;padding-top:12px;border-top:1px solid var(--border);
  font-size:14px;color:var(--muted-2)}

.amelia-pied{padding:16px 26px;border-top:1px solid var(--border);display:flex;
  justify-content:flex-end;background:var(--velours-2)}
.amelia-continuer{background:var(--or);color:var(--or-ink);font:600 13px/1 var(--sans);
  letter-spacing:.06em;padding:16px 32px;border:1px solid var(--or);border-radius:var(--r-pill);
  white-space:nowrap;transition:.2s ease}
.amelia-continuer:hover{background:var(--or-soft);border-color:var(--or-soft);transform:translateY(-1px)}

@media(max-width:760px){
  .amelia{grid-template-columns:1fr}
  .amelia-nav{min-height:0;border-right:0;border-bottom:1px solid var(--border)}
  .amelia-filtres{grid-template-columns:1fr}
  .amelia-service{flex-direction:column}
  .amelia-ligne{flex-direction:column;align-items:flex-start;gap:8px}
}

/* ---- voies de contact directes ---- */
.voies{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:34px;max-width:640px}
.voies--trois{max-width:none;margin-bottom:0}
.voie--phare{border-color:var(--or);background:var(--or-wash)}
.voie--phare .voie-t{color:var(--or)}
.voie{display:block;padding:22px 24px;background:var(--velours-2);border:1px solid var(--border);
  border-radius:var(--r);color:inherit;transition:.2s ease}
.voie:hover{border-color:var(--or);background:var(--or-wash);transform:translateY(-2px)}
.voie-t{display:block;font-family:var(--serif);font-weight:600;font-size:21px;color:var(--heading);letter-spacing:-.02em}
.voie-s{display:block;font:400 13px/1.5 var(--sans);color:var(--muted-2);margin-top:6px}
.foot-copy a{color:inherit;border-bottom:1px solid var(--border-2)}
.foot-copy a:hover{color:var(--or);border-color:var(--or)}

.form{max-width:600px;display:flex;flex-direction:column;gap:16px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form label{display:flex;flex-direction:column;gap:6px;font:600 12px/1.4 var(--sans);letter-spacing:.06em;color:var(--muted)}
.form input,.form select,.form textarea{font-family:var(--sans);font-size:15px;padding:14px 16px;background:var(--velours);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm)}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--or)}
.form input::placeholder,.form textarea::placeholder{color:var(--muted-2)}
.form .btn{align-self:flex-start}

/* réservation — bloc rendez-vous */
.booking{border:1px solid var(--border);background:var(--velours-2);border-radius:var(--r-lg);padding:30px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.booking .svc{font-family:var(--serif);font-size:25px;color:var(--heading)}
.booking .free{font:600 11px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--or);border:1px solid var(--or);border-radius:var(--r-pill);padding:8px 16px}

/* FAQ */
.qa{padding:26px 0;border-bottom:1px solid var(--border)}
.qa h3{font-family:var(--serif);font-weight:600;font-size:24px;color:var(--heading);margin:0 0 8px;letter-spacing:-.018em}
.qa p{font-size:15px;line-height:1.78;color:var(--muted);margin:0}

/* livres */
.books{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:32px;max-width:640px}
.books-more{margin-top:30px;font-size:15px;color:var(--muted)}
/* format livre : les couvertures font 5:8 — en 3/4 + cover, les titres étaient rognés */
/* Le livre se retourne au survol et montre sa quatrième de couverture.
   `overflow:hidden` ne peut PAS vivre sur le conteneur 3D (il aplatit la scène
   dans plusieurs moteurs) : ce sont les deux faces qui le portent. */
.book .cover{aspect-ratio:5/8;position:relative;perspective:1400px}
.book .face{position:absolute;inset:0;background:var(--velours-2);border:1px solid var(--or-line);
  border-radius:var(--r);overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;
  transform-style:preserve-3d;transition:transform .75s cubic-bezier(.22,.61,.36,1)}
.book .face img{width:100%;height:100%;object-fit:contain}
.book .face--dos{transform:rotateY(180deg)}
.book:hover .face--recto,.book:focus-visible .face--recto{transform:rotateY(180deg)}
.book:hover .face--dos,.book:focus-visible .face--dos{transform:rotateY(360deg)}
.book:hover .face,.book:focus-visible .face{border-color:var(--or)}
a.book{display:block;color:inherit}
/* ⚠ MÊME PIÈGE QUE POUR L'EMBLÈME : sur un élément de grille, `margin-left:auto`
   sans largeur explicite réduit la boîte à `fit-content`. Les deux faces étant
   en position absolue, ce contenu vaut ZÉRO : la couverture disparaissait.
   `width:100%` est donc indispensable. */
/* Page livre : héros court, l'objet vit plus bas et en grand. La hauteur du
   héros n'est plus imposée, elle suit son contenu. */
/* `overflow:hidden` du héros coupait le menu de la boutique à sa bordure basse.
   Ce héros n'a ni emblème ni image débordante : il peut laisser passer.
   Le z-index le fait passer AU-DESSUS de la section suivante, qui vient après
   lui dans le document et le recouvrirait sinon. */
.page-hero.page-hero--court{overflow:visible;z-index:5}
/* Moitié-moitié : l'objet pèse autant que le texte. La couverture occupe
   toute sa colonne, le texte est justifié avec césures (sinon rivières). */
.livre-bloc{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:56px;align-items:start}
.book--solo{width:100%;max-width:520px;margin:0}
.livre-bloc .lead-p{text-align:justify;hyphens:auto;-webkit-hyphens:auto}
.livre-astuce{margin:14px 0 0;text-align:center}
@media(max-width:860px){
  .livre-bloc{grid-template-columns:1fr;gap:36px}
  .book--solo{width:min(340px,80vw);margin:0 auto}
}

/* Choix de la boutique : <details> natif, donc clavier et sans JavaScript. */
.achat{position:relative;flex:0 0 auto}
.achat>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:9px}
.achat>summary::-webkit-details-marker{display:none}
.achat>summary::after{content:"";width:7px;height:7px;border-right:1.5px solid currentColor;
  border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:.2s ease}
.achat[open]>summary::after{transform:translateY(1px) rotate(-135deg)}
.achat-liste{position:absolute;top:calc(100% + 8px);left:0;z-index:30;min-width:100%;
  list-style:none;margin:0;padding:6px;background:var(--surface-haute);
  border:1px solid var(--or-line);border-radius:var(--r);box-shadow:var(--shadow)}
.achat-liste a{display:block;padding:11px 18px;border-radius:var(--r-sm);white-space:nowrap;
  font:500 14px/1 var(--sans);color:var(--text);transition:.15s ease}
.achat-liste a:hover,.achat-liste a:focus-visible{background:var(--or-wash);color:var(--or)}
/* Revue de presse : des noms, pas des logos. Un logo de média suppose une
   autorisation d'usage ; le nom cité avec un lien vers l'article est à la fois
   plus honnête et juridiquement neutre. */
/* Bande de presse en bas d'accueil : discrète, centrée, sans lien par titre.
   Elle signale, elle ne détaille pas ; la revue complète est sur la page Lina. */
.presse-bande{padding-top:var(--s6);padding-bottom:var(--s6);text-align:center}
.presse-intro{font:600 11px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;
  color:var(--muted-2);margin:0 0 var(--s4)}
.presse-noms{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;
  align-items:center;justify-content:center;gap:14px 38px}
.presse-noms li{font-family:var(--serif);font-weight:600;font-size:clamp(19px,2vw,25px);
  letter-spacing:-.015em;color:var(--muted);opacity:.72;transition:.25s ease}
.presse-bande:hover .presse-noms li{opacity:.9}
@media(max-width:620px){.presse-noms{gap:12px 24px}}

.medias{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:10px;grid-auto-rows:1fr}
/* Chaque case porte sa propre bordure : le gap-comme-filet laissait une case
   fantôme éclairée au bout de la dernière rangée. */
.medias li{background:var(--velours-2);border:1px solid var(--border);
  border-radius:var(--r-sm);transition:.2s ease}
.medias li:hover{border-color:var(--or)}
/* Ces cases tiennent lieu de logos : un bandeau de presse centre ses marques.
   Aligné à gauche dans une case large, le nom se lisait comme un élément de
   liste ; centré, la grille se lit comme un ensemble. */
.medias a{display:flex;align-items:center;justify-content:center;text-align:center;
  min-height:78px;padding:16px 18px;
  font-family:var(--serif);font-weight:600;font-size:20px;letter-spacing:-.015em;color:var(--muted);transition:.2s ease}
.medias a:hover,.medias a:focus-visible{background:var(--or-wash);color:var(--or)}
@media(max-width:560px){
  .medias{grid-template-columns:1fr}
  .medias a{padding:16px 20px;font-size:19px}
}
/* ── Journal ──────────────────────────────────────────────────────────── */
.jgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}
/* Les vignettes reprises de WordPress sont des CARRÉS de 400px : les seules
   tailles capturées. On les traite donc en carré, jamais en bandeau large
   (agrandies, elles seraient floues). */
.jcard-img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--r);
  margin-bottom:20px;background:var(--band)}
.jcard-img--vide{display:block;border:1px dashed var(--border-2)}
.art-vignette{width:200px;aspect-ratio:1;object-fit:cover;border-radius:var(--r);
  margin-top:var(--s4)}
.jcard{display:block;padding:26px 24px 22px;background:var(--velours-2);
  border:1px solid var(--border);border-radius:var(--r-lg);color:inherit;transition:.2s ease}
.jcard:hover,.jcard:focus-visible{border-color:var(--or);background:var(--or-wash);transform:translateY(-4px)}
.jcard-meta{display:block;font:600 10px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;
  color:var(--or);margin-bottom:16px}
.jcard-t{font-family:var(--serif);font-weight:600;font-size:clamp(20px,1.9vw,24px);line-height:1.08;
  letter-spacing:-.02em;color:var(--heading);margin:0 0 12px;text-wrap:balance}
.jcard-d{font:400 15px/1.7 var(--sans);color:var(--muted);margin:0 0 20px;text-wrap:pretty}

/* Corps d'article : une seule colonne étroite, la lecture prime. */
.article{max-width:720px}
.article h2{font-size:clamp(28px,3.2vw,38px);line-height:1.1;margin:var(--s6) 0 var(--s3)}
.article h3{font-size:clamp(21px,2.2vw,25px);line-height:1.2;margin:var(--s5) 0 var(--s2)}
.article h2:first-child,.article h3:first-child{margin-top:0}
.article p{font-size:17px;line-height:1.8;color:var(--muted);margin:0 0 var(--s3);text-wrap:pretty}
.art-liste{list-style:none;margin:0 0 var(--s3);padding:0;display:flex;flex-direction:column;gap:14px}
.art-liste li{position:relative;padding-left:26px;font-size:17px;line-height:1.75;color:var(--muted)}
.art-liste li::before{content:"";position:absolute;left:0;top:13px;width:12px;height:1px;background:var(--or)}

/* ── Liseuse de documents ────────────────────────────────────────────────
   Un article de presse en PDF s'ouvre SUR PLACE : sortir le visiteur du site
   pour lui montrer un scan de 2009 casse la lecture. Les émissions en ligne,
   elles, partent chez le média : leur lecteur ne s'embarque pas.
   `position:fixed` est ici légitime, la liseuse couvre la fenêtre. */
.liseuse{position:fixed;inset:0;z-index:200;display:flex;align-items:center;
  justify-content:center;padding:24px}
.liseuse[hidden]{display:none}
.liseuse-fond{position:absolute;inset:0;background:rgba(3,1,6,.82);backdrop-filter:blur(3px)}
.liseuse-panneau{position:relative;z-index:1;width:min(980px,100%);height:min(88vh,900px);
  display:flex;flex-direction:column;background:var(--velours-2);
  border:1px solid var(--or-line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow)}
.liseuse-tete{display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:18px 22px;border-bottom:1px solid var(--border);flex:0 0 auto}
.liseuse-titre{font-family:var(--serif);font-weight:600;font-size:23px;letter-spacing:-.02em;
  color:var(--heading);margin:0}
.liseuse-actions{display:flex;align-items:center;gap:12px;flex:0 0 auto}
.liseuse-actions .btn-ghost{padding:11px 18px;font-size:12px}
.liseuse-fermer{width:40px;height:40px;flex:0 0 auto;background:transparent;
  border:1px solid var(--border-2);border-radius:var(--r-pill);color:var(--text);
  font-size:22px;line-height:1;cursor:pointer;transition:.2s ease}
.liseuse-fermer:hover{border-color:var(--or);color:var(--or)}
.liseuse-corps{position:relative;flex:1;min-height:0;background:var(--noir)}
.liseuse-cadre{width:100%;height:100%;border:0;display:block}
/* Le repli vit SOUS le cadre : si le document s'affiche, il le recouvre ;
   s'il refuse, le cadre reste vide et le repli se lit. */
.liseuse-repli{position:absolute;inset:0;z-index:-1;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:6px;margin:0;padding:32px;text-align:center;
  font:400 15px/1.7 var(--sans);color:var(--muted)}
@media(max-width:620px){
  .liseuse{padding:0}
  .liseuse-panneau{width:100%;height:100%;border-radius:0;border:0}
  .liseuse-titre{font-size:19px}
  .liseuse-actions .btn-ghost{display:none}
}
.fiche{display:grid;grid-template-columns:auto 1fr;gap:8px 22px;margin:0;font-size:14.5px}
.fiche dt{font:600 10px/1.9 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--muted-2)}
.fiche dd{margin:0;color:var(--heading)}
.lead-p{font-size:16.5px;line-height:1.78;color:var(--muted);margin:0 0 18px;text-wrap:pretty}
a.book h3{transition:color .2s ease}
a.book:hover h3,a.book:focus-visible h3{color:var(--or)}
.book-lien{display:block;font:600 11px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;
  color:var(--or);margin-top:10px;opacity:0;transform:translateY(4px);transition:.2s ease}
a.book:hover .book-lien,a.book:focus-visible .book-lien,a.jcard:hover .book-lien,a.jcard:focus-visible .book-lien{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  .book .face{transition:none}
  .book-lien{opacity:1;transform:none;transition:none}
}
.book h3{font-family:var(--serif);font-weight:600;font-size:20px;color:var(--heading);margin:14px 0 4px;letter-spacing:-.012em}
.book p{font-size:14px;color:var(--muted);margin:0}

/* timeline (parcours) */
.timeline{list-style:none;margin:0;padding:0}
.timeline li{padding:14px 0;border-bottom:1px solid var(--border);color:var(--muted);font-size:15px;line-height:1.62}
.timeline b{color:var(--heading);font-weight:600}

/* 404 */
.err{text-align:center;padding:140px 0}
.err .code{font-family:var(--serif);font-weight:600;font-size:clamp(80px,16vw,150px);line-height:1;color:var(--or);letter-spacing:-.03em}

/* ---------- responsive ---------- */
@media(max-width:860px){
  :root{--pad:22px}
  .nav{position:fixed;inset:78px 0 auto 0;flex-direction:column;align-items:stretch;gap:0;background:var(--noir);border-bottom:1px solid var(--border);padding:8px 22px 20px;display:none}
  .nav.open{display:flex}
  .nav>a{padding:15px 0;border-bottom:1px solid var(--border);border-radius:0}
  .nav .btn{margin-top:12px;text-align:center;border-radius:var(--r-pill)}
  .burger{display:flex}
  .section{padding:var(--s6) 0}
  .section--suite{padding-top:var(--s4)}

  .sec-head{flex-direction:column;align-items:flex-start;gap:14px}

  /* le héros s'empile : la copie d'abord, le sofa dessous */
  .sofa-hero{min-height:0}
  .sofa-hero .container{grid-template-columns:1fr;gap:34px;padding-top:48px;padding-bottom:var(--s5)}
  .sofa-stage{max-width:420px;margin:0 auto}
  .hero-proof{margin-top:28px;padding-top:22px;gap:0}
  .hero-proof li{padding-right:14px}
  .hero-proof li+li{padding-left:14px}
  .hero-proof .n{font-size:27px}
  .hero-proof .l{font-size:11px}

  .trow{grid-template-columns:44px 1fr;gap:14px 16px;padding:26px 14px;margin:0 -14px}
  .trow:hover{transform:none}
  .trow .desc{grid-column:2}
  .trow .arr{display:none}
  .split{grid-template-columns:1fr;gap:30px}
  .beforeafter{grid-template-columns:1fr}
  .ba-col+.ba-col{border-left:0;border-top:1px solid var(--border)}
  .cta-gold{margin:var(--s6) var(--pad)}
  .footer{padding:var(--s4) 0 var(--s4)}
  .cta-in{flex-direction:column;align-items:flex-start;gap:24px;padding:44px 26px}

  .nav-item{display:block}
  .nav-item>a.parent::after{content:""}
  /* en mobile le méga menu s'aplatit en simple liste */
  .megamenu{position:static;display:block;background:transparent;border:0;box-shadow:none}
  .mega-in{grid-template-columns:1fr;padding:0 0 8px 14px;gap:0}
  .mega-item{padding:12px 0}
  .mega-n,.mega-d{display:none}
  .mega-t{font-size:18px;margin:0}
  .mega-cote{display:none}
  .stats,.reviews{grid-template-columns:1fr}

  .embleme-resserrement{margin-top:26px}
  .triptyque{grid-template-columns:1fr}
  .chapitre{grid-template-columns:1fr;gap:12px;padding:26px 22px}
  .ch-n{font-size:32px}
  .gains{grid-template-columns:1fr}
  .gain,.gain:first-child,.gain:last-child{border-right:0;border-bottom:1px solid var(--border);padding:26px 0}
  .page-hero{padding:54px 0 var(--s5);min-height:0}
  .sofa-hero{min-height:0}
  .trow--hub{grid-template-columns:44px 1fr;gap:12px 16px}
  .trow--hub .desc{grid-column:2}
  .booking{flex-direction:column;align-items:flex-start}
}
/* Le CTA d'en-tête reste visible en mobile (il n'est plus dans le burger) :
   il faut donc qu'il tienne dans la barre avec le logo, le sélecteur et le burger. */
@media(max-width:620px){
  .site-header .container{gap:12px;padding:0 18px}
  .header-cta{padding:11px 15px;font-size:12px;letter-spacing:.03em}
  .brand span{font-size:19px}
}
@media(max-width:400px){
  .brand span{display:none}
}
@media(max-width:600px){.form-row{grid-template-columns:1fr}}

/* ---- correctifs de revue, 2026-08-02 ---- */
/* .page-hero--suite : héros resserré quand un fil d'Ariane le précède (livres, réservation) */
/* .page-hero--suite ne règle plus la hauteur non plus : le fil d'Ariane vit HORS du héros, il n'a donc pas à en changer les marges. */
.form label{flex-direction:column}
.form label>span:first-child{display:flex;align-items:baseline}

/* ---- REVUE DE PRESSE (2026-08-02) : à la une + archives par année ---- */
.presse-sous-titre{font:600 10px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--or);margin:var(--s6) 0 var(--s3)}
.presse-sous-titre:first-of-type{margin-top:var(--s4)}

/* à la une : cartes */
.presse-une{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:var(--s2)}
.pcard{display:flex;flex-direction:column;gap:8px;padding:var(--s3);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--velours-2);color:inherit;transition:.2s}
.pcard:hover{border-color:var(--or-line);background:var(--or-wash);text-decoration:none}
.pcard-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.pcard-m{font:600 10px/1.2 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--or)}
.pcard-d{font:400 11px/1.2 var(--sans);color:var(--muted-2);white-space:nowrap}
.pcard-t{font-family:var(--serif);font-weight:600;font-size:19px;line-height:1.22;letter-spacing:-.018em;color:var(--heading);text-wrap:pretty}
.pcard-n{font:400 12px/1.5 var(--sans);color:var(--muted-2);margin-top:auto;padding-top:6px}
.pcard--top{background:var(--surface-haute);border-color:var(--or-line)}
.pcard--top .pcard-t{font-size:22px}

/* archives : liste par année */
.pyear{display:flex;align-items:center;gap:14px;font-family:var(--serif);font-weight:600;font-size:26px;color:var(--muted);margin:var(--s4) 0 var(--s1)}
.pyear::after{content:"";flex:1;height:1px;background:var(--border)}
.plist{list-style:none;margin:0;padding:0}
.plist li{border-bottom:1px solid var(--border)}
.pitem{display:grid;grid-template-columns:170px 1fr 92px;gap:var(--s2);align-items:baseline;padding:14px 0;color:inherit;transition:.18s}
.pitem:hover{padding-left:8px;text-decoration:none;background:var(--or-wash)}
.pitem-m{font:600 11px/1.3 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--or)}
.pitem-m span{display:block;font-weight:400;letter-spacing:0;text-transform:none;color:var(--muted-2);margin-top:3px}
.pitem-t{font-size:15px;line-height:1.45;color:var(--text);text-wrap:pretty}
.pitem-x{font:400 11px/1.3 var(--sans);color:var(--muted-2);text-align:right}
.plist--partenaires .pitem-m{color:var(--muted)}

@media(max-width:860px){
  .pitem{grid-template-columns:1fr;gap:4px;padding:16px 0}
  .pitem-x{text-align:left}
  .pyear{font-size:22px;margin-top:var(--s3)}
}
/* carte dont le titre porte le lien (cas des pièces à deux sources) */
.pcard-lien{color:var(--heading);text-decoration:none}
.pcard-lien:hover{color:var(--or)}
.pcard-n a{color:var(--or)}
/* repère des parutions mises en avant, dans les archives */
.pitem--une{box-shadow:inset 2px 0 0 var(--or);padding-left:14px}
.pitem--une:hover{padding-left:20px}

/* ---- filtre de la revue de presse ---- */
.pfiltre{display:flex;flex-wrap:wrap;gap:8px;margin:var(--s2) 0 var(--s3)}
.pf-btn{font:600 11px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);
  background:transparent;border:1px solid var(--border);border-radius:var(--r-pill);
  padding:10px 16px;cursor:pointer;transition:.18s;display:inline-flex;align-items:center;gap:7px}
.pf-btn:hover{border-color:var(--or-line);color:var(--text)}
.pf-btn.on{background:var(--or);border-color:var(--or);color:var(--or-ink)}
.pf-n{font-weight:400;opacity:.6;letter-spacing:0}
.pf-vide{color:var(--muted-2);font-style:italic;padding:var(--s3) 0}
@media(max-width:860px){.pf-btn{padding:9px 13px;font-size:10px}}

/* ---- correctifs revue de presse, 2ᵉ passe ----
   [hidden] doit l'emporter sur les display: explicites (.pyear est en flex,
   sinon l'attribut hidden reste sans effet et l'année vide s'affiche). */
[hidden]{display:none !important}

/* « À la une » : les 5 sur une seule ligne, cartes resserrées */
.presse-une{grid-template-columns:repeat(5,1fr);gap:12px}
.presse-une .pcard{padding:var(--s2) 16px;gap:6px}
.presse-une .pcard-t,.presse-une .pcard--top .pcard-t{font-size:15px;line-height:1.28;letter-spacing:-.012em}
.presse-une .pcard-m{font-size:9px;letter-spacing:.14em}
.presse-une .pcard-d{font-size:10px}
.presse-une .pcard-n{font-size:11px;line-height:1.45;padding-top:4px}
@media(max-width:1100px){.presse-une{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.presse-une{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.presse-une{grid-template-columns:1fr}}

/* ---- « À la une » : lisibilité (3ᵉ passe) ----
   Les dates sont retirées et toutes les cartes ont le même traitement :
   la hiérarchie passe par l'ordre, pas par la couleur. */
.presse-une .pcard-t{font-size:17.5px;line-height:1.3}
.presse-une .pcard-m{font-size:10.5px;letter-spacing:.1em;line-height:1.35}
.presse-une .pcard-n{font-size:12.5px;line-height:1.5;padding-top:8px}
.presse-une .pcard{padding:18px 18px 20px;gap:9px}
.presse-une .pcard-h{display:block}

/* ============================================================
   THÈME CLAIR — refonte 2026-08-02
   L'ancien clair était un ivoire beige, trop blanc et sans marque.
   Nouveau parti : un ivoire VIOLETTÉ. Et surtout, inversion des rôles —
   en sombre l'or porte l'action ; en clair c'est le VIOLET qui la porte,
   l'or redevient un filet d'accent. L'or sur ivoire vire toujours au kaki.
   ============================================================ */
:root[data-theme="light"]{
  --noir:#F5F0FA; --velours:#FFFFFF; --velours-2:#F3ECFA;
  --band:#EAE0F5; --surface-haute:#FFFFFF;
  --violet:#6B3FA0; --violet-deep:#4E2580;
  --or:#8A5F13; --or-soft:#6F4C0F;
  --or-ink:#FFFFFF; --or-ink-muted:rgba(255,255,255,.86);
  --or-wash:rgba(107,63,160,.07); --or-line:rgba(138,95,19,.32);
  --text:#3B3350; --heading:#2A1642; --muted:#5C5270; --muted-2:#635A72; --bold:#2A1642;
  --faded:rgba(59,51,80,.4);
  --border:#E1D6EF; --border-2:#CFC0E2; --hatch:rgba(90,60,130,.07);
  --header-bg:rgba(245,240,250,.94); --footer-bg:#EBE2F4;
  --shadow:0 22px 48px -26px rgba(43,15,66,.26);
  --glow-a:rgba(122,75,176,.18);
}
/* L'ACTION passe au violet en thème clair */
:root[data-theme="light"] .btn{background:var(--violet-deep);border-color:var(--violet-deep);color:#fff}
:root[data-theme="light"] .btn:hover{background:#3E1D68;border-color:#3E1D68}
:root[data-theme="light"] .btn-outline{color:var(--violet-deep);border-color:var(--border-2)}
:root[data-theme="light"] .btn-outline:hover{border-color:var(--violet-deep);background:var(--or-wash)}
:root[data-theme="light"] .cta-gold{background:var(--violet-deep)}
:root[data-theme="light"] .cta-gold .cta-title{color:#fff}
:root[data-theme="light"] .cta-gold .cta-sub{color:rgba(255,255,255,.82)}
:root[data-theme="light"] .cta-gold .btn-dark{background:#fff;color:var(--violet-deep);border-color:#fff}
:root[data-theme="light"] .pf-btn.on{background:var(--violet-deep);border-color:var(--violet-deep);color:#fff}

/* ---- SCHÉMAS DE SITUATION (pages transformation) ----
   Même grammaire que l'emblème d'Approche : filets violets fins pour
   ce qui est épars, forme pleine en or pour ce qui se resserre. */
.schema-situation{width:100%;max-width:460px;margin-left:auto;opacity:.96}
.schema-situation svg{width:100%;height:auto;overflow:visible}
/* Contraste relevé le 2026-08-02 : les filaments violets étaient à peine lisibles.
   Le trait passe d'environ 1,6:1 à environ 3,8:1 sur le fond sombre — au-dessus du
   seuil de 3:1 des éléments graphiques, sans perdre le côté ténu du dessin. */
.ss-fil{fill:none;stroke:var(--violet-trait);stroke-width:1.5;opacity:.78;stroke-linecap:round}
.ss-fil--pale{opacity:.5}
.ss-ordre{fill:none;stroke:var(--violet-trait);stroke-width:1.5;opacity:.85;stroke-linecap:round}
.ss-noeud{fill:var(--or)}
.ss-halo{fill:none;stroke:var(--or);stroke-width:1.4;opacity:.42}
.ss-sortie{fill:none;stroke:var(--or);stroke-width:2.4;opacity:.95;stroke-linecap:round}
.ss-pt{fill:var(--violet-trait);opacity:.9}
@media(prefers-reduced-motion:no-preference){
  .js .reveal .ss-fil,.js .reveal .ss-ordre,.js .reveal .ss-sortie{
    stroke-dasharray:600;stroke-dashoffset:600}
  .js .reveal.in .ss-fil,.js .reveal.in .ss-ordre,.js .reveal.in .ss-sortie{
    animation:ssDraw 1.5s ease forwards}
  .js .reveal.in .ss-sortie{animation-delay:.5s}
}
@keyframes ssDraw{to{stroke-dashoffset:0}}

/* ---- respiration des schémas de situation -------------------------------
   Les schémas ne bougeaient qu'au tracé initial ; passé une seconde ils
   figeaient. Ceux de l'approche, eux, respirent en permanence — d'où un
   déséquilibre entre les pages.
   Le geste ajouté est UNE SEULE respiration lente, partagée par tous les
   éléments, en 7 secondes : le centre s'éclaire pendant que la périphérie
   s'estompe, et l'inverse. C'est la convergence du schéma, dite en mouvement.
   AMPLITUDES VOLONTAIREMENT MINUSCULES — 0,16 d'opacité, 6 % d'échelle. Le
   mouvement doit se sentir sans se voir : une animation qu'on remarque ici
   redevient le « gadget » écarté sur le sofa de l'accueil. Ne pas les monter.
   Le nœud central se distingue par son rayon (8.5 ou 9) ; les autres nœuds,
   plus petits, restent immobiles pour ne pas faire scintiller tout le dessin. */
@media(prefers-reduced-motion:no-preference){
  /* transform-box:fill-box évite d'avoir à écrire un transform-origin en
     coordonnées SVG, qui diffère d'un schéma à l'autre. */
  .schema-situation .ss-halo,
  .schema-situation circle.ss-noeud[r="9"],
  .schema-situation circle.ss-noeud[r="8.5"]{
    transform-box:fill-box;transform-origin:center}
  .schema-situation .ss-halo{animation:ssRespire 7s ease-in-out infinite}
  .schema-situation circle.ss-noeud[r="9"],
  .schema-situation circle.ss-noeud[r="8.5"]{animation:ssCoeur 7s ease-in-out infinite}
  .schema-situation .ss-pt{animation:ssAmont 7s ease-in-out infinite}
}
@keyframes ssRespire{0%,100%{opacity:.42;transform:scale(1)}
                     50%{opacity:.58;transform:scale(1.06)}}
@keyframes ssCoeur{0%,100%{transform:scale(1)}50%{transform:scale(1.04)}}
/* contre-phase : la périphérie s'estompe quand le centre s'éclaire */
@keyframes ssAmont{0%,100%{opacity:.9}50%{opacity:.68}}

/* ---- points mobiles des schémas de situation ----------------------------
   Même grammaire que les schémas de l'approche : des points remontent les
   tracés en <animateMotion>, avec un <mpath> vers le chemin lui-même. Le
   mouvement suit donc EXACTEMENT le dessin, il n'est pas approximé.
   La couleur est inversée par rapport à l'approche, et c'est voulu : ici le
   violet est ce qui ARRIVE (les fils, l'enchevêtrement) et l'or ce qui SORT
   (la ligne de résultat). Un point violet à l'aller, or au retour.
   Cycle de 7 s à l'aller, 3,5 s au retour — 3,5 divise 7, donc la boucle est
   sans couture : aucun saut au raccord.
   Les points sont dans le SVG (animateMotion), pas en CSS : seul SMIL sait
   suivre une courbe de Bézier. Le CSS ne fait ici que la couleur. */
.ss-mobiles circle{opacity:0}
.ss-mob-in{fill:var(--violet-trait)}
.ss-mob-out{fill:var(--or)}
@media(prefers-reduced-motion:reduce){.ss-mobiles{display:none}}
@media(max-width:900px){.schema-situation{max-width:340px;margin:var(--s3) auto 0}}

/* Pages légales : le texte suit directement le titre.
   Un demi-écran vide n'a aucun sens sur un document qu'on vient lire. */
/* .page-hero--legal : même marge que partout ailleurs. */
.page-hero--legal+.section{padding-top:var(--s4)}

/* ============================================================
   CONSENTEMENT AUX COOKIES — bandeau + fenêtre de préférences
   Le balisage est injecté par js/main.js : inutile de le recopier
   sur chaque page, et il disparaît une fois le choix mémorisé.
   ============================================================ */
.ck-bandeau{position:fixed;left:0;right:0;bottom:0;z-index:200;background:var(--velours-2);
  border-top:1px solid var(--border);box-shadow:0 -18px 50px -24px rgba(0,0,0,.6)}
.ck-bandeau-in{max-width:var(--maxw);margin:0 auto;padding:22px var(--pad);
  display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.ck-txt{flex:1;min-width:280px}
.ck-t{font-family:var(--serif);font-weight:600;font-size:20px;color:var(--heading);margin:0 0 6px}
.ck-p{font-size:13.5px;line-height:1.6;color:var(--muted);margin:0;max-width:78ch}
.ck-actions{display:flex;gap:10px;flex-wrap:wrap}

.ck-fond{position:fixed;inset:0;z-index:210;background:rgba(6,3,12,.72);
  display:flex;align-items:center;justify-content:center;padding:22px}
.ck-panneau{width:100%;max-width:560px;background:var(--surface-haute);border:1px solid var(--border);
  border-radius:var(--r);padding:30px;max-height:88vh;overflow:auto;box-shadow:var(--shadow)}
.ck-panneau h2{font-size:24px;margin-bottom:8px}
.ck-choix{display:flex;flex-direction:column;gap:12px;margin:22px 0}
.ck-item{border:1px solid var(--border);border-radius:var(--r-sm);padding:18px 20px;
  display:flex;align-items:flex-start;justify-content:space-between;gap:18px;background:var(--velours-2)}
.ck-item-t{font-weight:600;font-size:15px;color:var(--heading);margin:0 0 4px}
.ck-item-d{font-size:13px;line-height:1.55;color:var(--muted);margin:0}
.ck-inter{flex:0 0 auto;width:46px;height:26px;border-radius:var(--r-pill);border:0;cursor:pointer;
  background:var(--border-2);position:relative;transition:.22s}
.ck-inter::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;
  background:#fff;transition:.22s}
.ck-inter[aria-checked="true"]{background:var(--or)}
.ck-inter[aria-checked="true"]::after{transform:translateX(20px)}
.ck-inter[disabled]{opacity:.55;cursor:not-allowed}
:root[data-theme="light"] .ck-inter[aria-checked="true"]{background:var(--violet-deep)}
.ck-pied{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}

.foot-cookies{background:none;border:0;padding:0;cursor:pointer;font:inherit;color:inherit}
.foot-cookies:hover{color:var(--or)}
@media(max-width:700px){
  .ck-bandeau-in{padding:18px var(--pad);gap:16px}
  .ck-actions{width:100%}.ck-actions .btn,.ck-actions .btn-outline{flex:1;text-align:center}
}

/* ---- PIED DE PAGE : harmonisation (2026-08-02) ----
   Le copyright était en serif 21px, plus gros que la navigation qu'il côtoie.
   Il redescend au niveau du « Propulsé par ». Et « Cookies » est un <button> :
   sans règle propre il héritait de la taille du conteneur, d'où son décalage. */
.foot-brand{font:400 12px/1.5 var(--sans);color:var(--muted-2);font-family:var(--sans)}
.foot-cookies{font:500 14px/1 var(--sans);color:var(--muted)}
.foot-cookies:hover{color:var(--or)}
.foot-nav{align-items:center}

/* ---- ÉQUILIBRAGE DES LIGNES ----
   « pretty » évite le mot orphelin, mais laisse passer une dernière ligne de
   deux mots pendant que la précédente touche la marge. Sur les chapôs et les
   sous-titres — toujours courts — « balance » égalise les lignes. La prose
   longue garde « pretty », où balance n'a plus d'effet au-delà de quelques lignes. */
.page-lead,.split-lead,.sec-sub,.pcard-t,.ck-p{text-wrap:balance}

/* ---- HÉROS DES PAGES TRANSFORMATION (correctif 2026-08-02) ----
   Ces pages réutilisaient la grille de la page Approche (5fr 7fr), pensée pour
   un emblème large : le texte se retrouvait dans la colonne étroite, le titre
   partait sur quatre lignes et les deux boutons s'empilaient.
   Ici c'est l'inverse : le texte prend deux tiers, le schéma accompagne. */
/* .page-hero--situation : même marge que partout ailleurs. */
.page-hero--situation .split{grid-template-columns:2fr 1fr;gap:44px;align-items:center}
.page-hero--situation .schema-situation{max-width:none;width:100%;margin-left:0}
.page-hero--situation .cta-duo{flex-wrap:nowrap}
@media(max-width:1000px){
  .page-hero--situation .split{grid-template-columns:1fr;gap:24px}
  .page-hero--situation .schema-situation{max-width:380px;margin:0 auto}
  .page-hero--situation .cta-duo{flex-wrap:wrap}
}

/* ============================================================
   RÈGLE DES HÉROS — 2026-08-02, systématique sur tout le site.

     Illustration à droite  →  DEUX TIERS texte · UN TIERS illustration,
                               et l'illustration remplit tout son tiers.
     Pas d'illustration     →  PLEINE LARGEUR.

   Une seule classe porte le cas illustré : .page-hero--illus.
   Elle remplace les anciennes --schema et --situation, qui faisaient
   diverger la page Approche des pages transformation.
   ============================================================ */
/* .page-hero--illus ne règle plus la hauteur : une seule marge pour tous les héros (voir --hero-haut). */
.page-hero--illus .split{grid-template-columns:2fr 1fr;gap:44px;align-items:center}
.page-hero--illus .page-lead{max-width:none}
.page-hero--illus .cta-duo{flex-wrap:nowrap}
/* l'illustration occupe tout son tiers, sans bride ni marge auto */
.page-hero--illus .schema-situation,
.page-hero--illus .embleme-resserrement{width:100%;max-width:none;margin:0}

/* Accueil : même règle. La mesure du chapô reste lisible (70 caractères)
   plutôt que d'aller au bord — au-delà, l'œil perd la ligne suivante. */
.hero-grid{grid-template-columns:2fr 1fr}
.hero-copy{max-width:none}
.hero-lead{max-width:70ch}

/* Sans illustration : le titre prend toute la largeur, le chapô garde une
   mesure lisible au lieu des 600 px qui laissaient la moitié droite vide. */
.page-hero:not(.page-hero--illus) .page-lead{max-width:80ch}

@media(max-width:1000px){
  .page-hero--illus .split,.hero-grid{grid-template-columns:1fr;gap:26px}
  .page-hero--illus .schema-situation{max-width:380px;margin:0 auto}
  .page-hero--illus .cta-duo{flex-wrap:wrap}
}

/* ---- NETTOYAGE : .schema-situation avait cinq déclarations de largeur
   concurrentes, restes des classes --schema puis --situation. Une seule
   source désormais : l'illustration remplit son tiers, point. ---- */
.page-hero--illus .schema-situation{width:100%!important;max-width:none!important;margin:0!important}

/* Accueil : le monogramme descend d'une hauteur d'eyebrow pour que le haut
   de l'arbre s'aligne sur le haut du titre, et non sur le sur-titre. */
.hero-embleme{margin-top:32px}

/* Mini-schémas dans les cartes du hub : la même signature qu'en page, en
   réduction. On reconnaît le dessin en arrivant sur la sous-page. */
.tc-schema{display:block;width:100%;max-width:128px;margin:0 0 18px;opacity:.9;transition:opacity .25s}
.tc-schema svg{width:100%;height:auto;overflow:visible}
.tcard:hover .tc-schema{opacity:1}
.tc-schema .ss-fil{stroke-width:1.6}
.tc-schema .ss-sortie,.tc-schema .ss-ordre{stroke-width:2}
@media(max-width:1000px){.hero-embleme{margin-top:0}}

/* ============================================================
   CORRECTIF « le texte n'occupe pas ses deux tiers » — 2026-08-02

   La cause : text-wrap:balance sur les titres. Cette propriété ÉGALISE la
   longueur des lignes ; sur un titre de quatre mots elle fabrique quatre
   lignes courtes plutôt que deux lignes pleines, et la colonne paraît
   deux fois plus étroite qu'elle ne l'est. Le gabarit était juste, c'est
   la typographie qui rétrécissait le texte.

   Règle retenue : « balance » uniquement sur les titres COURTS de carte,
   où égaliser deux lignes est un gain. Les grands titres et les chapôs
   passent en « pretty » : orphelin évité, mesure conservée.
   ============================================================ */
.page-h1,.hero-h1,.sec-h2{text-wrap:pretty}
.page-lead,.split-lead{text-wrap:pretty}

/* Sans illustration, le chapô va vraiment au bout de la ligne. */
.page-hero:not(.page-hero--illus) .page-lead{max-width:none}

/* ---- Titre des héros illustrés : calé sur la colonne qu'il occupe ----
   À 80 px, un titre de six mots ne tient PAS dans les deux tiers : il part
   sur quatre lignes et fait paraître la colonne deux fois plus étroite.
   Le corps descend donc là où il y a moins de largeur disponible. */
.page-hero--illus .page-h1{font-size:clamp(36px,4.6vw,60px)}

/* Page de contact : les voies vivent dans le héros, la grille reste à quatre. */
.page-hero .voies--quatre{grid-template-columns:repeat(4,1fr)}
@media(max-width:1000px){.page-hero .voies--quatre{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.page-hero .voies--quatre{grid-template-columns:1fr}}

/* ============================================================
   THÈME CLAIR — 2ᵉ passe : l'or moins terreux, et de l'impact.
   ============================================================

   1. L'OR ÉTAIT TROP SOMBRE parce qu'un seul ton servait à tout.
      Or les seuils de contraste diffèrent : un GRAND titre passe à 3:1,
      un texte de 11 px exige 4,5:1. En calant l'or unique sur le cas le
      plus dur, on le rendait kaki partout. On le dédouble donc :
        --or        #8A5F13  → petits textes, eyebrows, liens   (5,1:1)
        --or-titre  #A87A1E  → accents dans les grands titres   (3,4:1)
      Le titre gagne en lumière, la lisibilité reste conforme.

   2. L'IMPACT MANQUANT ne venait pas d'un manque de couleur mais d'un
      manque d'ÉCART TONAL : le fond de page (#F5F0FA) et les surfaces
      (#FFF) étaient à 4 % l'un de l'autre, donc rien ne se détachait.
      On creuse le fond, on garde les cartes blanches : les cartes se
      posent enfin sur la page au lieu de s'y fondre. Halo, bordures et
      ombres suivent le même mouvement.
   ============================================================ */
:root[data-theme="light"]{
  --or-titre:#A87A1E;
  --noir:#EFE8F8;            /* fond creusé : les surfaces blanches ressortent */
  --velours:#FFFFFF;
  --velours-2:#F7F2FC;
  --band:#E4D8F2;            /* alternance des bandes enfin perceptible */
  --surface-haute:#FFFFFF;
  --border:#DCCFEE; --border-2:#C3AFDB;
  --glow-a:rgba(122,75,176,.30);        /* le halo du héros existe vraiment */
  --shadow:0 20px 44px -22px rgba(43,15,66,.30);
  --or-line:rgba(138,95,19,.38);
}
:root[data-theme="dark"] ,:root:not([data-theme]){--or-titre:var(--or)}

/* l'accent des grands titres prend l'or clair */
:root[data-theme="light"] .display .accent,
:root[data-theme="light"] .page-h1 .accent,
:root[data-theme="light"] .hero-h1 .accent,
:root[data-theme="light"] .sec-h2 .accent{color:var(--or-titre)}

/* les cartes se détachent du fond */
:root[data-theme="light"] .tcard,
:root[data-theme="light"] .voie,
:root[data-theme="light"] .pcard,
:root[data-theme="light"] .review,
:root[data-theme="light"] .offer{background:var(--velours);box-shadow:0 2px 10px -4px rgba(43,15,66,.10)}
:root[data-theme="light"] .tcard:hover,
:root[data-theme="light"] .voie:hover,
:root[data-theme="light"] .pcard:hover{box-shadow:0 14px 32px -16px rgba(43,15,66,.28)}

/* ---------------------------------------------------------------------------
   SÉLECTEUR DE LANGUE (03.08.2026) — français, anglais, italien.
   Même pastille que le sélecteur de thème, ouverte en <details> natif.
   Zéro JS pour la navigation : la page équivalente est le MÊME nom de fichier
   dans un autre dossier, parce que les noms de fichiers ne se traduisent pas.
   C'est ce choix qui rend le sélecteur trivial ; le changer casserait tout.
   --------------------------------------------------------------------------- */
.lang{position:relative;flex:0 0 auto}
.lang>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
  gap:5px;height:40px;padding:0 12px;background:transparent;border:1px solid var(--border-2);
  border-radius:var(--r-pill);color:var(--or);font:600 12px/1 var(--sans);
  letter-spacing:.08em;transition:.2s ease}
.lang>summary::-webkit-details-marker{display:none}
.lang>summary:hover{background:var(--or-wash);border-color:var(--or)}
.lang-chev{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:2.2;
  stroke-linecap:round;transition:transform .2s ease}
.lang[open] .lang-chev{transform:rotate(180deg)}
/* ancré à DROITE : le sélecteur vit en fin d'en-tête, une liste ancrée à gauche
   déborderait de la fenêtre sur les petits écrans. */
.lang-liste{position:absolute;top:calc(100% + 8px);right:0;z-index:70;min-width:150px;
  padding:6px;background:var(--surface-haute);border:1px solid var(--or-line);
  border-radius:var(--r);box-shadow:var(--shadow)}
.lang-liste a{display:block;padding:10px 14px;border-radius:var(--r-sm);white-space:nowrap;
  font:500 14px/1 var(--sans);color:var(--text);transition:.15s ease}
.lang-liste a:hover,.lang-liste a:focus-visible{background:var(--or-wash);color:var(--or)}
.lang-liste a[aria-current]{color:var(--or);background:var(--or-wash)}
@media(max-width:1024px){.lang>summary{padding:0 9px;letter-spacing:.04em}}

/* ---------------------------------------------------------------------------
   EN-TÊTE · le menu replié arrive plus tôt (03.08.2026).
   Le menu déplié ne basculait qu'à 860 px. Entre 861 et 1024 px la barre était
   déjà trop serrée : « Mental Sofa » et « Lina Hadid » passaient sur DEUX
   LIGNES. Défaut préexistant — mesuré identique en français — que l'arrivée du
   sélecteur de langue rendait systématique, puisqu'il prend sa place dans la
   même barre.
   On reprend ici les seules règles de bascule du bloc mobile ; tout le reste de
   la mise en page continue de basculer à 860 px, inchangé.
   --------------------------------------------------------------------------- */
@media(max-width:1024px){
  .nav{position:fixed;inset:78px 0 auto 0;flex-direction:column;align-items:stretch;gap:0;
    background:var(--noir);border-bottom:1px solid var(--border);
    padding:8px 22px 20px;display:none}
  .nav.open{display:flex}
  .nav>a{padding:15px 0;border-bottom:1px solid var(--border);border-radius:0}
  .nav .btn{margin-top:12px;text-align:center;border-radius:var(--r-pill)}
  .burger{display:flex}
  .nav-item{display:block}
  .nav-item>a.parent::after{content:""}
  .megamenu{position:static;display:block;background:transparent;border:0;box-shadow:none}
  .mega-in{grid-template-columns:1fr;padding:0 0 8px 14px;gap:0}
  .mega-item{padding:12px 0}
  .mega-n,.mega-d{display:none}
  .mega-t{font-size:18px;margin:0}
  .mega-cote{display:none}
}
/* Le nom de la marque ne se coupe jamais : c'est un nom propre. */
.brand span{white-space:nowrap}

/* ---------------------------------------------------------------------------
   MENU REPLIÉ · remise au propre (03.08.2026)
   Deux reproches, tous deux fondés :
   1. la liste de langues de l'en-tête, ancrée à droite mais posée dans une
      barre étroite, SORTAIT DE L'ÉCRAN en mobile : on lisait « rançais »,
      « nglish », « taliano » ;
   2. la typographie du menu n'était pas raccord — « Accueil » en sans-serif,
      « Dirigeant·e » en serif 25 px, hérité du méga-menu de bureau.
   Les langues descendent donc AU BAS DU MENU, où elles ont toute la largeur,
   et la pastille d'en-tête disparaît sous 1024 px : deux façons d'appeler la
   même chose dans la même barre, c'en est une de trop.
   --------------------------------------------------------------------------- */
.nav-langues{display:none}

@media(max-width:1024px){
  /* la pastille d'en-tête cède la place */
  .lang{display:none}

  /* Le panneau occupe TOUTE la hauteur et défile. Avant, il s'arrêtait à la
     hauteur de son contenu : sur un petit écran, le bloc des langues tombait
     sous le bandeau cookies et devenait inatteignable. */
  /* ⚠️ PIÈGE : `.site-header` porte `backdrop-filter`, ce qui en fait le BLOC
     CONTENEUR des descendants `position:fixed`. Un `bottom:0` sur le panneau se
     calerait donc sur une barre de 78 px, pas sur l'écran — mesuré : panneau de
     307 px au lieu de 734. On garde donc `bottom:auto` et on borne la hauteur
     par une unité de fenêtre, qui elle reste relative à l'écran. */
  .nav{inset:78px 0 auto 0;max-height:calc(100dvh - 78px);
    overflow-y:auto;overscroll-behavior:contain;
    padding:6px 22px 32px}
  /* Le bandeau de consentement est posé PAR-DESSUS le menu. Sans réserve, le
     bloc des langues finit dessous et devient inatteignable. On ne réserve la
     place que TANT QUE le bandeau existe : une fois le choix fait, il
     disparaît du DOM et le menu retrouve sa respiration normale. */
  body:has(.ck-bandeau) .nav{padding-bottom:250px}

  /* UNE seule famille, UNE seule graisse, deux tailles : le niveau se lit au
     décalage et à la couleur, jamais à un changement de police. */
  .nav>a,.nav-item>a.parent{
    display:block;font:500 17px/1.2 var(--sans);letter-spacing:.005em;
    color:var(--text);padding:17px 0;border-bottom:1px solid var(--border);border-radius:0}
  .nav>a:hover,.nav>a.active,.nav-item>a.parent:hover,.nav-item>a.parent.active{color:var(--or)}
  .nav-item{border-bottom:0}
  /* le dernier lien ne porte pas de filet : celui du bloc des langues suit
     immédiatement, et deux traits collés font sale. */
  .nav>a:last-of-type{border-bottom:0}

  /* les trois transformations : mêmes lettres, plus petites, tenues par un
     filet or qui dit « ceci dépend de ce qui précède ». */
  .megamenu{padding:0}
  .mega-in{grid-template-columns:1fr;padding:4px 0 14px;gap:0}
  .mega-item{padding:12px 0 12px 18px;border-left:1px solid var(--or-line);border-radius:0}
  .mega-item:hover{background:transparent}
  .mega-t{font:500 15px/1.3 var(--sans);letter-spacing:0;color:var(--muted);margin:0}
  .mega-item:hover .mega-t,.mega-item:focus-visible .mega-t{color:var(--or)}
  .mega-d,.mega-n,.mega-cote{display:none}

  /* --- les langues, en bas, à parts égales --- */
  .nav-langues{display:block;margin-top:20px;padding-top:18px;border-top:1px solid var(--border)}
  .nav-langues-t{display:block;font:600 11px/1 var(--sans);letter-spacing:.2em;
    text-transform:uppercase;color:var(--or);margin-bottom:12px}
  .nav-langues-l{display:flex;gap:8px}
  .nav-langues-l a{flex:1 1 0;text-align:center;padding:12px 4px;
    border:1px solid var(--border-2);border-radius:var(--r-pill);
    font:500 14px/1 var(--sans);color:var(--text);white-space:nowrap;transition:.15s ease}
  .nav-langues-l a:hover{border-color:var(--or);color:var(--or)}
  .nav-langues-l a[aria-current]{border-color:var(--or);color:var(--or);background:var(--or-wash)}
}

/* ---------------------------------------------------------------------------
   BASCULE DE THÈME · dans le pied de page (03.08.2026)
   Elle vivait dans l'en-tête. Un sélecteur de thème y est une convention
   d'outils et de documentation, pas de site de marque : à l'arrivée, il dit
   « fait par un développeur » avant que la marque ait parlé.
   Le pied de page est l'endroit conventionnel des préférences. Et surtout, on
   y VOIT la page changer en cliquant — ce que le menu replié interdisait, son
   panneau opaque couvrant 90 % de l'écran.
   Elle se range là où un contrôle vit déjà : à côté de « Cookies », dans le
   même habit que les liens voisins.
   --------------------------------------------------------------------------- */
.foot-theme{display:inline-flex;align-items:center;gap:7px;background:none;border:0;
  padding:0;cursor:pointer;font:500 14px/1 var(--sans);color:var(--muted);
  transition:color .2s ease}
.foot-theme:hover,.foot-theme:focus-visible{color:var(--or)}
.foot-theme svg{width:15px;height:15px;flex:0 0 auto;fill:none;stroke:currentColor;
  stroke-width:1.7;stroke-linecap:round}
/* On montre l'icône de la DESTINATION, jamais de l'état courant : l'icône et le
   libellé disent alors la même chose, « voilà où tu vas ». Un soleil quand on
   est dans le noir. */
.foot-theme .i-moon{display:none}
:root[data-theme="light"] .foot-theme .i-sun{display:none}
:root[data-theme="light"] .foot-theme .i-moon{display:block}

/* Les DEUX libellés vivent dans la page, superposés dans la même cellule de
   grille. Le plus large impose la largeur du bouton, et elle ne bouge plus :
   basculer le thème ne déplace plus rien.
   Mesuré le 03.08 : en français, « Thème clair » fait 79 px et « Thème sombre »
   101 px. Ces 22 px suffisaient à faire passer toute la rangée du pied de page
   d'une ligne à deux, à chaque clic. (L'anglais et l'italien ne variaient que
   de 2 à 4 px — le défaut était invisible hors du français.)
   `visibility` et non `display` : l'espace doit rester occupé, et le libellé
   masqué cesse d'être lu par les lecteurs d'écran. */
.foot-theme-t{display:inline-grid}
.foot-theme-t>i{grid-area:1/1;font-style:normal;white-space:nowrap;text-align:left}
.foot-theme-t>.t-sombre{visibility:hidden}
:root[data-theme="light"] .foot-theme-t>.t-clair{visibility:hidden}
:root[data-theme="light"] .foot-theme-t>.t-sombre{visibility:visible}

/* Lettre d'information (04.08.2026) : le titre et le sous-titre ont été
   retirés. Ils vivaient à l'extrême gauche pendant que le formulaire tenait
   l'extrême droite, et l'écart entre les deux crevait les yeux sur grand
   écran. Il ne reste que le formulaire, calé à droite. */

/* ---------------------------------------------------------------------------
   PIED DE PAGE · trois colonnes (04.08.2026)
   La lettre d'information flottait seule à droite, une ligne entière vide à sa
   gauche. On lui rend un titre, et on remplit la largeur avec ce qui manquait
   vraiment : les canaux. La page LinkedIn de Lina est SON canal — elle a donc
   sa ligne propre, pas une icône anonyme.
   --------------------------------------------------------------------------- */
.foot-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:38px;
  padding-bottom:var(--s5);border-bottom:1px solid var(--border);margin-bottom:var(--s5)}
.foot-col{display:flex;flex-direction:column;align-items:flex-start;gap:11px}
/* le surtitre porte l'icône : « LinkedIn » se dit une fois, pas quatre */
.foot-col-t{display:flex;align-items:center;gap:8px;font:600 10.5px/1 var(--sans);
  letter-spacing:.2em;text-transform:uppercase;color:var(--or);margin:0 0 6px}
.foot-col-t .i-li{width:14px;height:14px;fill:currentColor;flex:0 0 auto}
.foot-col>a{font:500 14px/1.35 var(--sans);color:var(--muted);transition:color .2s ease;
  display:inline-flex;align-items:center;gap:9px}
.foot-col>a:hover{color:var(--or)}


@media(max-width:900px){
  .foot-cols{grid-template-columns:1fr 1fr;gap:34px}
}
@media(max-width:560px){
  .foot-cols{grid-template-columns:1fr;gap:30px}
}

/* Quatre colonnes (04.08.2026) : la FAQ et les pages juridiques remontent du
   bandeau du bas, qui ne garde que les CONTRÔLES — cookies et thème. Un lien
   de contenu n'a rien à faire dans une barre de réglages.
   La boîte d'inscription à la newsletter a été retirée le 04.08 : elle ne
   sera pas mise en service. Il reste trois colonnes, réparties à parts égales
   sur toute la largeur. La lettre existe toujours, mais sur LinkedIn — elle
   vit donc dans la colonne « Suivre ». */
@media(max-width:800px){.foot-cols{grid-template-columns:1fr 1fr;gap:30px}}
@media(max-width:560px){.foot-cols{grid-template-columns:1fr;gap:26px}}

/* « Cookies » a rejoint la colonne Informations (04.08.2026) : c'est un
   réglage de confidentialité, sa place est avec les pages qui en parlent.
   Le bouton doit alors se lire comme les liens voisins, pas comme un bouton. */
.foot-col .foot-cookies{font:500 14px/1.35 var(--sans);color:var(--muted);
  background:none;border:0;padding:0;cursor:pointer;text-align:left;transition:color .2s ease}
.foot-col .foot-cookies:hover{color:var(--or)}
