
:root{
  --paper:#F5EFE3; --ink:#241F18; --gold:#A9823C;--gold-texte:#886624; --gold-soft:#C19A63;
  --gray:#6B5A43; --card:#FBF7EE; --night:#12100C; --night-ink:#D8CDBA; --cloud-rgb:169,130,60;
  --voile-rgb:245,239,227; --pilule:#FCF9F3; --onglet-rgb:169,130,60;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html, body{height:100%}
body{
  font-family:Georgia,'Times New Roman',serif;
  background:var(--paper); color:var(--ink);
  min-height:100dvh; display:flex; flex-direction:column;
  transition:background-color .6s ease, color .6s ease;
}
#paperFx{position:fixed; inset:0; pointer-events:none; z-index:0; opacity:.18;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='2' seed='11'/%3E%3CfeColorMatrix values='0 0 0 0 .14 0 0 0 0 .12 0 0 0 0 .09 0 0 0 .035 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:180px 180px}
:root{color-scheme:light}
html{background:var(--paper); min-height:100%;
  /* rc346 · Le double-tap ne zoome plus : Johnatan, 23 sept. 2026, deux prises de la vidéo pour Apple
     perdues (« quand je double clique pour coller, cela crée un zoom », fenêtre mesurée 344×746 au lieu
     de 393×852). `manipulation` retire le double-tap-zoom sur toute la page et garde le pincement. */
  touch-action:manipulation}
/* La zone de la barre d'etat est peinte par l'app elle-meme : aucune bande
   sombre ne peut apparaitre, quel que soit le reglage systeme du telephone.
   rc268 : cette regle ne servait a rien tant que le meta valait « default », car
   la page ne passait pas sous la barre. Les deux vont ensemble, ne toucher a
   l'une qu'en pensant a l'autre. */
body::before{content:"";position:fixed;top:0;left:0;right:0;height:env(safe-area-inset-top);
  background:var(--paper);z-index:2000;pointer-events:none;transition:background-color .6s ease}
body.night::before{background:var(--night)}
html.night{background:var(--night)}
/* rc368 · L'INTRO. Sombre de jour comme de nuit (le fond de la fin des réels), piliers crème, le central en or.
   Au-dessus de tout (la bande du haut est à 2000). Les tailles vivent dans l'échelle de l'app (rem). */
#intro{position:fixed;inset:0;z-index:3000;background:#231F16;color:#F6EEE3;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:env(safe-area-inset-top) 16px env(safe-area-inset-bottom);pointer-events:auto;outline:none;-webkit-user-select:none;user-select:none;
  transition:opacity .2s ease;animation:introSecours .01s linear 6s forwards!important}
#intro.intro-fondu{opacity:0}
#intro.intro-toucher{transition-duration:.15s}
@keyframes introSecours{to{opacity:0;visibility:hidden;pointer-events:none}}
#intro .intro-bloc{display:flex;flex-direction:column;align-items:center}
#intro .intro-logo{width:58vw;max-width:340px;height:auto;overflow:visible;display:block}
#intro .intro-logo polygon{fill:#F6EEE3;opacity:0;transform-box:fill-box;transform-origin:50% 100%;shape-rendering:geometricPrecision}
#intro .intro-logo polygon.or{fill:#C9A45C}
#intro .intro-trait{width:64px;height:2px;background:#C9A45C;margin-top:20px;transform:scaleX(0);transform-origin:50% 50%}
#intro .intro-nom{text-align:center;margin-top:18px}
#intro .intro-nom b, #intro .intro-nom span, #intro .intro-phrase{opacity:0}
#intro .intro-nom b{display:block;font-family:Georgia,'Times New Roman',serif;font-weight:700;font-size:1.375rem;letter-spacing:.14em;margin-right:-.14em;text-transform:uppercase;line-height:1.1;color:#F6EEE3}
#intro .intro-nom span{display:block;font-family:-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;font-weight:500;font-size:0.8125rem;letter-spacing:.3em;margin-right:-.3em;text-transform:uppercase;color:#E0CFAA;margin-top:8px}
#intro .intro-phrase{position:absolute;left:16px;right:16px;bottom:calc(env(safe-area-inset-bottom) + 20vh);text-align:center}
#intro .intro-phrase small{display:block;font-family:-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;font-size:0.75rem;letter-spacing:.24em;margin-right:-.24em;text-transform:uppercase;color:#E0CFAA;margin-bottom:10px}
#intro .intro-phrase b{display:block;font-family:Georgia,'Times New Roman',serif;font-weight:600;font-size:1.3125rem;line-height:1.15;color:#C9A45C;text-wrap:balance}
#intro.intro-court .intro-trait, #intro.intro-court .intro-nom, #intro.intro-court .intro-phrase{display:none}
body.night #paperFx{opacity:0}
main, header{position:relative;z-index:1}
/* --- L'œuf : le conseil caché --- */
/* rc265 : le petit signe faisait 33 px de large pour 44 de haut, donc sous le
   minimum tactile dans une dimension sur deux, et le doigt le manquait.
   Johnatan : « difficilement accessible ». Il garde exactement la meme discretion
   a l'oeil (meme glyphe, meme taille, meme opacite) et gagne la place qu'il faut
   au doigt. L'explorateur ne mesurait que la hauteur des cibles : corrige aussi. */
#egg{display:none; margin:30px auto 2px; background:none; border:none; cursor:pointer;
  font-size:1.1875rem; color:var(--gold-texte); opacity:.4; padding:10px;
  min-width:44px; min-height:44px; line-height:1;
  animation:eggbreathe 7s ease-in-out infinite}
#egg.show{display:grid; place-items:center}
#egg.found{opacity:.18; animation:none}
@keyframes eggbreathe{0%,100%{opacity:.32}50%{opacity:.5}}
#tipPop{position:fixed; bottom:calc(env(safe-area-inset-bottom) + 128px); right:16px; left:16px; max-width:480px; margin-left:auto; z-index:9;
  display:none; box-shadow:0 8px 30px rgba(35,31,22,.14); transform-origin:bottom right}
#tipPop.show{display:block; animation:unfold .45s cubic-bezier(.2,.9,.3,1) both}
@keyframes unfold{from{opacity:0; transform:scale(.9) translateY(10px)} to{opacity:1; transform:none}}
body.night{background:var(--night); color:var(--night-ink); background-image:none; --gold-texte:var(--gold);
  --voile-rgb:18,16,12; --pilule:#1C1913; --onglet-rgb:193,154,99}
.sans{font-family:-apple-system,'Segoe UI',Helvetica,Arial,sans-serif}
header{padding:calc(env(safe-area-inset-top) + 18px) 22px 10px; text-align:center}
.logoInk{fill:#231F16}.logoGold{fill:var(--gold)}
body.night .logoInk{fill:var(--night-ink)}
body.night .logoGold{fill:var(--gold-soft)}
.brand{font-size:0.8125rem; letter-spacing:.28em; text-transform:uppercase; color:var(--gold-texte)}
.brand small{display:block; font-size:0.6875rem; letter-spacing:.20em; margin-top:2px; opacity:.85}
body.night .brand{color:var(--gold-soft)}
.rule{width:64px; height:8px; margin:10px auto 0; opacity:.9}
main{flex:1; display:flex; flex-direction:column; padding:6px 22px calc(env(safe-area-inset-bottom) + 22px); max-width:520px; width:100%; margin:0 auto}
.screen{display:none; flex:1; flex-direction:column}
.screen.on{display:flex; animation:appear .5s ease both; animation:screenIn .22s ease-out}
@keyframes appear{from{opacity:0; transform:translateY(8px)} to{opacity:1; transform:none}}
@media (prefers-reduced-motion:reduce){ *{animation:none!important; transition:none!important} }

/* ---------- Check-in ---------- */
.q-eyebrow{font-size:0.75rem; letter-spacing:.24em; text-transform:uppercase; color:var(--gray); margin:18px 0 6px}
h1{font-size:1.625rem; font-weight:normal; line-height:1.25; margin-bottom:22px}
.opts{display:flex; flex-direction:column; gap:12px}
.opt{
  background:var(--card); border:1px solid var(--filet); border-radius:14px;
  padding:18px 18px; font-size:1.0625rem; text-align:left; cursor:pointer; color:var(--ink);
  font-family:inherit; transition:border-color .2s, transform .08s;
  /* rc178 : le bouton reste une ligne souple (le numéro de pilier colle à son titre),
     mais le sous-titre prend toujours sa propre ligne, pleine largeur. En colonne
     unique, « 01 » serait parti seul sur sa ligne ; en ligne stricte, un titre long
     et un sous-titre long se partageaient la largeur, un mot par ligne. */
  display:flex; flex-wrap:wrap; align-items:baseline; gap:5px 10px;
}
.opt small{color:var(--gray); font-size:0.8125rem; font-family:-apple-system,sans-serif; flex:1 0 100%; line-height:1.5}
.opt:active{transform:scale(.985)}
#sOnb .opt{display:block;padding:18px 18px 17px}
#sOnb .opt small{display:block;margin-top:6px;line-height:1.45}
#sApporteur .opt{display:block;padding:15px 18px 14px;font-size:1rem}
#sApporteur .opt small{display:block;margin-top:5px;line-height:1.45}
#sPartager .opt{display:block;padding:15px 18px 14px;font-size:1rem}
#sPartager .opt small{display:block;margin-top:5px;line-height:1.45}
.opt.voile{opacity:.5}
#sOnb .opts{gap:12px}
.opt.sel, .opt:focus-visible{border-color:var(--gold); outline:none; box-shadow:0 0 0 1px var(--gold)}
.durrow{display:flex; gap:12px}
.durrow .opt{flex:1; justify-content:center; font-size:1.3125rem; padding:20px 8px}
.durrow .opt small{display:block; font-size:0.75rem; text-align:center}   /* rc384 · socle 2 : « min » centré sous le chiffre (il prend toute la largeur, flex:1 0 100%) */
.intens{display:none; margin-top:20px}
.intens.on{display:block; animation:appear .35s ease both}
.intens .ilab{font-size:0.75rem; letter-spacing:.22em; text-transform:uppercase; color:var(--gray); margin-bottom:10px}
.intens .irow{display:flex; gap:10px}
.intens .opt{flex:1; flex-direction:column; align-items:center; gap:4px; font-size:0.9375rem; padding:14px 6px; text-align:center}
.intens .dots{display:flex; gap:4px}
.intens .dots i{width:6px; height:6px; border-radius:50%; background:var(--gold); opacity:.9}
.stepdots{display:flex; gap:8px; justify-content:center; margin-top:auto; padding-top:26px}
.stepdots i{width:7px; height:7px; border-radius:50%; background:rgba(108,104,95,.35)}
.stepdots i.done{background:var(--gold)}

/* ---------- Session ---------- */
#sSession{align-items:center; justify-content:center; text-align:center; gap:8px}
.halo-wrap{position:relative;width:230px;height:230px;margin:8px auto 4px;isolation:isolate}
/* Orbe vivante v68 : texture HD réelle + circulation interne en profondeur.
   L’anneau reste or = le temps. L’orbe prend la couleur du pilier. */
.halo{position:absolute;inset:16px;border-radius:50%;pointer-events:none;z-index:1;overflow:hidden;contain:paint;
  transform:translateZ(0);will-change:transform,opacity;filter:drop-shadow(0 10px 22px rgba(36,31,24,.055));
  --orb-pillar:#2F8C7A;--orb-pillar-rgb:47,140,122;}
.orb-layer{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block;pointer-events:none;
  image-rendering:auto;-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0);}
/* La matière d’origine est neutralisée avant colorisation pour éviter le bleu/violet résiduel de l’asset. */
.orb-base{z-index:1;opacity:.98;filter:grayscale(1) saturate(0) contrast(1.14) brightness(1.06)}
.orb-color{position:absolute;inset:0;z-index:2;border-radius:50%;pointer-events:none;will-change:opacity,transform;
  background:rgba(var(--orb-pillar-rgb),.97);
  -webkit-mask:radial-gradient(circle closest-side,#000 93%,rgba(0,0,0,.6) 96%,transparent 99.5%);
  mask:radial-gradient(circle closest-side,#000 93%,rgba(0,0,0,.6) 96%,transparent 99.5%);
  mix-blend-mode:color;opacity:.90;}
.orb-depth{z-index:3;opacity:.40;mix-blend-mode:multiply;filter:grayscale(1) saturate(0) contrast(1.34) brightness(.70)}
.orb-aura{position:absolute;inset:4%;z-index:0;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,rgba(var(--orb-pillar-rgb),.30) 0%,rgba(var(--orb-pillar-rgb),.16) 42%,rgba(var(--orb-pillar-rgb),.06) 64%,transparent 82%);
  filter:blur(18px);opacity:.86;transform:translateZ(0)}
/* Fenêtres de parallax. Le cadre ne bouge presque pas{position:absolute;z-index:6;overflow:hidden;border-radius:50%;pointer-events:none;isolation:isolate;
  -webkit-mask-image:radial-gradient(ellipse at center,#000 0%,rgba(0,0,0,.96) 45%,rgba(0,0,0,.58) 67%,transparent 86%);
  mask-image:radial-gradient(ellipse at center,#000 0%,rgba(0,0,0,.96) 45%,rgba(0,0,0,.58) 67%,transparent 86%);
  opacity:.18;mix-blend-mode:soft-light;filter:contrast(1.10) brightness(1.01)}
.orb-shine{position:absolute;inset:11%;z-index:10;border-radius:50%;pointer-events:none;
  background:
    radial-gradient(ellipse at 37% 26%, rgba(255,255,255,.44) 0%, rgba(255,255,255,.13) 20%, transparent 48%),
    radial-gradient(ellipse at 63% 70%, rgba(255,255,255,.10) 0%, transparent 28%);
  mix-blend-mode:screen;filter:blur(7px);opacity:.42}
.orb-coreglow{position:absolute;inset:18%;z-index:11;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle at 50% 52%, rgba(255,255,255,.18) 0%, rgba(var(--orb-pillar-rgb),.12) 24%, rgba(var(--orb-pillar-rgb),.04) 45%, transparent 68%);
  mix-blend-mode:screen;filter:blur(10px);opacity:.72}
.orb-rim{position:absolute;inset:6%;z-index:13;border-radius:50%;pointer-events:none;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.08), inset 0 0 18px rgba(255,255,255,.06), 0 0 0 1px rgba(var(--orb-pillar-rgb),.12);
  opacity:.70}
/* v76 : nébuleuse procédurale SVG. Elle utilise le même pipeline CSS que la respiration{display:none!important}


/* Les amplitudes sont volontairement suffisantes pour être visibles en 2–4 secondes, mais les cycles restent lents et contemplatifs. */








@media (prefers-reduced-motion:reduce){
  
}
/* Matière interne : amplitudes petites, cycles longs et non synchronisés. */
.halo.souffle-6, body.session-playing .halo.souffle-6{ animation:ccSouffle 10s ease-in-out infinite!important }
.halo.souffle-carre, body.session-playing .halo.souffle-carre{ animation:ccCarre 16s ease-in-out infinite!important }
.halo.souffle-46, body.session-playing .halo.souffle-46{ animation:cc46 10s ease-in-out infinite!important }
.halo.souffle-48, body.session-playing .halo.souffle-48{ animation:cc48 12s ease-in-out infinite!important }
body.paused .halo.souffle-6, body.paused .halo.souffle-carre,
body.paused .halo.souffle-46, body.paused .halo.souffle-48{ animation-play-state:paused!important }
@media (prefers-reduced-motion: reduce){ .halo.souffle-6, .halo.souffle-carre, .halo.souffle-46, .halo.souffle-48,
  body.session-playing .halo.souffle-6, body.session-playing .halo.souffle-carre,
  body.session-playing .halo.souffle-46, body.session-playing .halo.souffle-48{ animation:none!important } }
@keyframes ccSouffle{ 0%{transform:scale(.78) translateZ(0)} 50%{transform:scale(1.06) translateZ(0)} 100%{transform:scale(.78) translateZ(0)} }
/* le souffle carré : 4 dedans, 4 plein, 4 dehors, 4 vide */
@keyframes ccCarre{ 0%{transform:scale(.78) translateZ(0)} 25%{transform:scale(1.06) translateZ(0)} 50%{transform:scale(1.06) translateZ(0)} 75%{transform:scale(.78) translateZ(0)} 100%{transform:scale(.78) translateZ(0)} }
/* 4 secondes qui entrent, 6 qui sortent */
@keyframes cc46{ 0%{transform:scale(.78) translateZ(0)} 40%{transform:scale(1.06) translateZ(0)} 100%{transform:scale(.78) translateZ(0)} }
/* 4 secondes qui entrent, 8 qui sortent */
@keyframes cc48{ 0%{transform:scale(.78) translateZ(0)} 33%{transform:scale(1.06) translateZ(0)} 100%{transform:scale(.78) translateZ(0)} }
@keyframes orbDepthDrift{
  0%,100%{transform:translate3d(-1px,1px,0) rotate(-.7deg) scale(1.03)}
  45%{transform:translate3d(2px,-2px,0) rotate(.9deg) scale(1.058)}
  72%{transform:translate3d(0,1px,0) rotate(.2deg) scale(1.042)}
}












@keyframes orbAura{
  0%,100%{transform:scale(.975);opacity:.72}
  50%{transform:scale(1.035);opacity:.90}
}
@keyframes orbShine{
  0%,100%{transform:translate3d(-3px,-2px,0) scale(.95);opacity:.38}
  50%{transform:translate3d(5px,4px,0) scale(1.08);opacity:.66}
}
@keyframes coreGlow{
  0%,100%{transform:scale(.985);opacity:.62}
  50%{transform:scale(1.025);opacity:.84}
}
@keyframes rimGlow{
  0%,100%{opacity:.50;transform:scale(.988)}
  50%{opacity:.82;transform:scale(1.012)}
}



body.session-playing .halo{animation:orbBreath 17.5s cubic-bezier(.42,.05,.58,.95) infinite}
body.session-playing .orb-depth{animation:orbDepthDrift 34s ease-in-out infinite}
body.session-playing .orb-aura{animation:orbAura 18s ease-in-out infinite}
body.session-playing .orb-shine{animation:orbShine 26s ease-in-out infinite}
body.session-playing .orb-coreglow{animation:coreGlow 18s ease-in-out infinite}
body.session-playing .orb-rim{animation:rimGlow 16s ease-in-out infinite}
/* La voix augmente la luminosité, pas la vitesse : l’orbe reste contemplative. */
body.session-playing.speaking .halo{filter:drop-shadow(0 11px 26px rgba(36,31,24,.065)) brightness(1.05)}
body.session-playing.speaking .orb-color{opacity:.93}
body.session-playing.speaking .orb-aura{opacity:.96}
body.session-playing.speaking .orb-coreglow{opacity:.88}
body.session-playing.speaking .orb-rim{opacity:.86}
body.paused .halo, body.paused .orb-depth, body.paused .orb-aura, body.paused .orb-shine, body.paused .orb-coreglow, body.paused .orb-rim{animation-play-state:paused!important}
@media (prefers-reduced-motion:reduce){
  .halo,.orb-depth,.orb-aura,.orb-shine,.orb-coreglow,.orb-rim{animation:none!important;transform:none!important}
}
svg.ring{position:absolute; inset:0; transform:rotate(-90deg);z-index:3}
.ring circle{fill:none; stroke-width:2.5}
.ring .track{stroke:rgba(142,106,47,.18)}
.ring .prog{stroke:var(--gold); stroke-linecap:round; transition:stroke-dashoffset 1s linear}
.session-int{font-size:0.75rem; letter-spacing:.26em; text-transform:uppercase; color:var(--gray)}
body.night .session-int{color:rgba(216,205,186,.55)}
.session-time{font-size:0.9375rem; color:var(--gray); font-family:-apple-system,sans-serif}
.seg-label{min-height:22px; font-size:0.875rem; font-style:italic; color:var(--gray); font-family:-apple-system,sans-serif}
body.night .seg-label{color:rgba(216,205,186,.5)}
.playbtns{display:flex; gap:14px; margin-top:18px; flex-wrap:wrap; justify-content:center}
.btn{
  font-family:inherit; font-size:1rem; padding:14px 26px; border-radius:999px; cursor:pointer;
  border:1px solid var(--gold); background:transparent; color:var(--gold-texte);
}
.btn.solid{background:var(--gold); color:#fff;font-weight:700}
.btn:active{transform:scale(.97)}
body.night .btn{border-color:var(--gold-soft); color:var(--gold-soft)}
/* rc255 : la nuit repeignait AUSSI le bouton plein, qui se retrouvait ecrit en or
   sur un fond or. « Terminer », sur l'ecran de nuit, tombait a 1,9 pour 1 : quasiment
   invisible. Le bouton plein garde son blanc, de jour comme de nuit.
   Trouve par l'explorateur le jour ou il a enfin regarde l'ecran de nuit. */
body.night .btn.solid{ color:#fff; border-color:var(--gold-plein) }

/* ---------- Fin ---------- */
#sEnd{align-items:center; justify-content:center; text-align:center; gap:16px}
.done-title{font-size:1.875rem}
.chain{display:flex; gap:0; align-items:center; margin:6px 0 2px}
.chain svg{display:block}
.done-sub{color:var(--gray); font-size:0.9375rem; max-width:280px; line-height:1.5}
#sNight{align-items:center; justify-content:center; text-align:center;gap:14px}
#sNight .night-actions{display:flex;flex-direction:column;gap:8px;width:min(280px,90%);margin-top:14px}
#sNight .night-sub{max-width:320px;font:13px/1.55 -apple-system,system-ui,sans-serif;color:rgba(216,205,186,.58)}
.night-word{font-size:1.3125rem; color:rgba(216,205,186,.7); letter-spacing:.1em; animation:fadeword 6s ease forwards}
@keyframes fadeword{0%{opacity:0} 25%{opacity:1} 75%{opacity:1} 100%{opacity:0}}

/* ---------- Réglages ---------- */
/* rc356 · la roue et ☰ gardent leur dessin de 38 px, avec une zone de toucher de 50 px. */
.gear::after{content:"";position:absolute;inset:-6px;border-radius:999px}
.gear{position:fixed; top:calc(env(safe-area-inset-top) + 12px); right:14px; width:38px;height:38px;display:grid;place-items:center;background:rgba(253,248,240,.78);border:1px solid rgba(142,106,47,.22);border-radius:999px;box-shadow:0 5px 18px rgba(35,31,22,.06);color:var(--gold-texte);cursor:pointer;z-index:5;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
/* Voile dans la teinte du papier : aucun pixel sombre en haut de page, donc
   aucune barre de navigateur qui se teinte en noir. Et c’est plus fidele a la charte. */
/* Sections dépliantes de Mon espace : le commercial reste visible, le reste se déplie. */
details.grp{margin:18px 0 0;border-top:1px solid rgba(142,106,47,.16);padding-top:4px}
details.grp>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;
  padding:12px 2px;font:600 11.5px/1 -apple-system,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-texte)}
details.grp>summary::-webkit-details-marker{display:none}
details.grp>summary::after{content:"+";font:400 17px/1 Georgia,serif;color:var(--gold-texte);opacity:.7;transition:transform .25s ease}
details.grp[open]>summary::after{content:"–"}
details.grp>summary:active{opacity:.7}
details.grp .opts{margin-top:2px}
/* Cliquables de Mon espace : une seule grammaire.
   .opt = une action de réglage · .cardlink = une carte qui mène ailleurs · .opt.danger = un geste irréversible */
.cardlink{display:block;width:100%;text-align:left;padding:15px 16px;border:1px solid var(--filet-fort);
  border-radius:16px;background:linear-gradient(180deg, var(--lueur), rgba(169,130,60,.04));
  cursor:pointer;font-family:inherit;color:var(--ink);transition:border-color .2s ease, background .2s ease}
.cardlink:active{border-color:rgba(142,106,47,.7)}
.cardlink .cl-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.cardlink .cl-titre{font-family:Georgia,'Times New Roman',serif;font-size:1.0625rem;line-height:1.35}
.cardlink .cl-note{font:12.5px/1.5 -apple-system,system-ui,sans-serif;color:var(--gray);margin-top:4px}
.opt.danger{border-color:rgba(162,59,46,.4);color:#a23b2e}   /* rc350 · revue du 25 sept. (4B) : le texte d’un geste qui efface prend la couleur de son bord */
.opt.danger:active{border-color:rgba(162,59,46,.75)}
/* rc358 · audit complet (10A) : un seul style pour un geste qui efface, et « Revenir » toujours discret. */
.btn.danger{border-color:rgba(162,59,46,.4);color:#a23b2e}
.btn.danger:active{border-color:rgba(162,59,46,.75)}
.btn.retour{background:transparent!important;border-color:transparent!important;font-weight:400!important}
/* rc224 · Mon espace : une même respiration pour toutes les cartes. */
#sProfil{--profil-gap:16px;--profil-radius:16px}
#sProfil .profil-dots{display:flex;gap:7px;justify-content:center;margin:2px 0 24px}
#sProfil #profilPillars{margin:0 0 var(--profil-gap);line-height:1.65}
#sProfil .profil-card{margin:0 0 var(--profil-gap);padding:16px;border:1px solid var(--filet);border-radius:var(--profil-radius);background:var(--card)}
#sProfil #sessionCard{background:var(--lueur)}
#sProfil .tiplab{color:#7C5B1F}   /* rc384 · socle 2 : sur --lueur, --gold-texte tombait à 4,2:1 ; ici 4,9 à 5,3:1 */
#sProfil #profilLogout{margin-top:var(--profil-gap)}
#sProfil #aboActions{display:flex;flex-wrap:wrap;gap:12px;margin-top:var(--profil-gap)}
#sProfil #partCarte{margin:0 0 var(--profil-gap)}
#sProfil .profil-social{margin:0;text-align:center;font-size:0.8125rem;line-height:1.65;color:var(--gray)}
#sProfil details.grp{margin:24px 0 0;padding:0;border-color:var(--filet)}
#sProfil details.grp>summary{justify-content:flex-start;gap:10px;min-height:52px;padding:16px 2px;line-height:1.4}
#sProfil details.grp>summary>span{flex-shrink:0}
#sProfil details.grp>summary::after{margin-left:auto;flex-shrink:0}
#sProfil details.grp>summary:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:8px}
#sProfil details.grp .opts{gap:var(--profil-gap);margin:0;padding:0}
#sProfil .opt,#sProfil .cardlink{width:100%;min-width:0;padding:16px;border-radius:var(--profil-radius);line-height:1.35;overflow-wrap:anywhere}
#sProfil .opt small{line-height:1.5}
#sProfil .profil-inset{margin:0;padding:16px;border:1px solid var(--filet);border-radius:var(--profil-radius);background:var(--card)}
#sProfil #passageCard{border-color:var(--filet-fort);background:var(--lueur);margin-top:var(--profil-gap)}   /* rc364 : dans la carte de l'abonnement, sous Gérer / Restaurer */
#sProfil #apProfilCarte,#sProfil #journalSonProfilOut{margin:0}
#sProfil #journalSonProfilOut:empty,#sProfil #restoreInfo:empty,#sProfil #aboActions:empty{display:none}
#sProfil .profil-note{margin:24px 0 0;line-height:1.65}
#sProfil #profilBack{margin-top:var(--profil-gap)}
/* Une feuille ouverte fait taire tout ce qui flotte : rien ne recouvre la lecture. */
body.sheeted .boirechip{display:none !important}
body.sheeted #tipPop{display:none !important}
/* Le texte de séance respire : il apparaît en fondu, s’estompe dans les silences.
   Aucun défilement, aucun clignotement : la lecture se pose, elle ne court pas. */
/* rc259 · Écran calme. Pendant une séance, six choses s'affichent sous la sphère.
   L'écran calme n'en garde que la sphère, le fond et les deux boutons : il retire le
   temps, le nom du passage et les mots. C'est un CHOIX, jamais le défaut : les mots
   dits à l'écran sont ce qui rend une pratique suivable sans entendre, et les retirer
   d'office priverait en silence ceux qui en dépendent. */
body.ecran-calme #sSession #subtitle,
body.ecran-calme #sSession #timeLabel,
body.ecran-calme #sSession .seg-label{display:none}
/* rc261 : l'opacite vivait dans la balise, donc elle battait .arrive/.repose/.parti
   qui n'ont pas de !important : les trois etats etaient inertes depuis toujours et les
   mots restaient a 0,85 quoi qu'il arrive. Elle rejoint la feuille, les etats reprennent
   vie. Trouve par l'audit « sans le son » du 19 septembre 2026. */
#subtitle{opacity:.85; transition:opacity 1.1s ease}
/* Et la fin d'une seance se VOIT : pendant les quatre secondes ou le son se retire,
   l'ecran ne bougeait pas. Sans entendre, cette fenetre ressemble a un blocage. */
body.seance-se-retire #sSession .halo{transition:opacity 3.4s ease, transform 3.4s ease; opacity:.25; transform:scale(.94)}
@media (prefers-reduced-motion:reduce){ body.seance-se-retire #sSession .halo{transition:opacity .3s linear; transform:none} }
#subtitle.arrive{opacity:.88}
#subtitle.repose{opacity:.28}
#subtitle.parti{opacity:0}
@media (prefers-reduced-motion:reduce){ #subtitle{transition:opacity .2s linear} }
/* rc267 · Le voile des feuilles ne floute plus la page. Il portait un
   backdrop-filter PLEIN ECRAN : sur iPhone, un tel calque demande de recomposer
   toute la page derriere lui, et le systeme peut tuer le processus web quand la
   page travaille deja beaucoup. C'est ce qui arrive en pleine seance : moteur
   audio, orbe anime, voix dans l'espace. L'app repart alors sur Aujourd'hui,
   ce qui se lit comme un plantage. Remonte par Johnatan a rc244 (« l'app plante
   quand je touche parametre en haut a droite ») puis le 19 septembre pendant un
   repos profond guide. Le voile garde son role : il assombrit et il separe. Il
   est un peu plus dense pour compenser le flou retire, et il ne coute plus rien. */
.sheet{position:fixed; top:env(safe-area-inset-top); left:0; right:0; bottom:0;
  background:rgba(200,186,160,.66);
  display:none; z-index:10}
body.night .sheet{background:rgba(18,16,12,.68)}
.sheet.on{display:block}
.sheet-in{position:absolute; left:0; right:0; bottom:0; background:var(--card); border-radius:20px 20px 0 0; padding:24px 22px calc(env(safe-area-inset-bottom) + 24px); max-height:80dvh; overflow:auto; color:var(--ink)}
.sheet-in h2{font-size:1.125rem; font-weight:normal; margin-bottom:16px}
.pref{margin-bottom:16px}
.pref .lab{font-size:0.75rem; letter-spacing:.18em; text-transform:uppercase; color:var(--gray); margin-bottom:8px}
/* rc356 · audit complet : sur les écrans d’écriture, la question est le contenu principal ; une phrase, pas des capitales espacées. */
.pref:has(> textarea) > .lab{font-size:0.9375rem; letter-spacing:0; text-transform:none; color:var(--ink); line-height:1.45}
.seg-ctrl{display:flex; border:1px solid var(--filet); border-radius:10px; overflow:hidden}
.seg-ctrl.wrap{display:grid; grid-template-columns:1fr 1fr 1fr; border-radius:12px}
.seg-ctrl.wrap button{border:1px solid rgba(142,106,47,.15)}
/* rc451 · l'explorateur (mise en page) : sur l'Assiette, chaque case gardait sa bordure à 1 px du cadre, deux traits presque
   collés aux bords. Une seule rangée de trois : de simples séparateurs entre les cases, le cadre extérieur suffit. */
#assJournee button,#assEnvie button{border:0}
#assJournee button+button,#assEnvie button+button{border-left:1px solid rgba(142,106,47,.15)}
.seg-ctrl button{flex:1; padding:11px 6px; background:transparent; border:none; font-family:-apple-system,sans-serif; font-size:0.875rem; color:var(--ink); cursor:pointer}
.seg-ctrl button.sel{background:var(--gold); color:#fff;font-weight:700}
.avis-case{display:flex;align-items:center;gap:12px;min-height:44px;font-size:0.9375rem;color:var(--ink);cursor:pointer}
.avis-case input{width:22px;height:22px;margin:0;accent-color:#8E6A2F;flex:none}
.demo-note{font-size:0.8125rem; color:var(--gray); font-family:-apple-system,sans-serif; line-height:1.5; margin-top:10px}
/* rc424 · Ce qu'il y a dedans (Se nourrir › Comprendre) */
.dedans-ligne{display:grid;grid-template-columns:1fr 112px;gap:8px;align-items:stretch}
.dedans-ligne input[type=search]{width:100%;box-sizing:border-box;border:1px solid var(--filet);border-radius:12px;padding:12px 14px;font:inherit;font-size:1rem;background:var(--card);color:var(--ink);min-height:48px}
.dedans-g{display:flex;align-items:center;gap:6px;border:1px solid var(--filet);border-radius:12px;padding:0 10px 0 4px;background:var(--card);color:var(--gray)}
.dedans-g::after{content:"g"}
.dedans-g input{width:100%;min-width:0;border:0;background:transparent;font:inherit;font-size:1rem;color:var(--ink);padding:12px 6px;text-align:right;font-variant-numeric:tabular-nums}
.dedans-sugg{margin-top:10px}.dedans-sugg:empty{display:none}
.dedans-sugg .opt{padding:12px 14px;font-size:1rem}
.dedans-carte{background:var(--card);border:1px solid var(--filet);border-radius:14px;padding:16px 16px 12px;margin-top:12px}
.dedans-carte h3{font-size:1.125rem;line-height:1.3;margin:0 0 2px}
.dedans-carte .dedans-portion{font-size:.8125rem;color:var(--gray);margin:0 0 10px}
.dedans-nut{display:grid;grid-template-columns:1fr auto;gap:0 12px;font-size:.9375rem}
.dedans-nut>span{padding:7px 0;border-bottom:1px solid var(--filet)}
.dedans-nut .k{color:var(--ink)}.dedans-nut .k.sous{color:var(--gray);padding-left:14px;font-size:.875rem}
.dedans-nut .v{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.dedans-nut .v small{color:var(--gray);font-size:.75rem;margin-left:6px}
.dedans-nut>span:nth-last-child(-n+2){border-bottom:0}
.dedans-plus{width:100%;margin-top:10px;border-color:transparent;color:var(--gold-texte)}
.dedans-ped{font-size:.875rem;line-height:1.55;color:var(--ink);background:var(--card);border:1px solid var(--filet);border-radius:10px;padding:10px 12px;margin-top:12px}
.dedans-puces{display:flex;flex-wrap:wrap;gap:8px}
.dedans-puces button{border:1px solid var(--filet);background:var(--card);color:var(--ink);border-radius:999px;padding:9px 14px;font:inherit;font-size:.9375rem;min-height:44px;cursor:pointer}
.dedans-puces button.sel{background:var(--ink);color:var(--card);border-color:var(--ink)}
.dedans-calc{color:var(--gray);font-size:.75rem}
/* DEDANS-01 sous-lot A · la DA de Se nourrir dans l'écran Comprendre : cuivre, encre, Georgia ; une ligne se touche */
#dedansBloc{--manger-cuivre:#9c5027;--manger-encre:#48382d;--manger-doux:#72665b;--manger-ligne:#e2d9cd}
#dedansBloc .manger-kicker{color:var(--manger-cuivre)}
#dedansBloc .seg-ctrl button.sel{background:var(--manger-cuivre);border-color:var(--manger-cuivre);color:#fff}
#dedansBloc .dedans-puces button.sel{background:var(--manger-cuivre);border-color:var(--manger-cuivre);color:#fff}
.dedans-ligne-btn{display:grid;grid-template-columns:1fr auto;gap:0 12px;width:100%;text-align:left;background:transparent;border:0;border-bottom:1px solid var(--filet);padding:9px 0;font:inherit;font-size:.9375rem;color:var(--ink);cursor:pointer;min-height:44px;align-items:center}
.dedans-ligne-btn .k{font-family:Georgia,serif}.dedans-ligne-btn .k.sous{color:var(--gray);padding-left:14px;font-size:.875rem}
.dedans-ligne-btn .v{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.dedans-ligne-btn .v small{display:block;color:var(--gray);font-size:.75rem}
.dedans-ligne-btn.on{color:var(--manger-cuivre,#9c5027)}.dedans-ligne-btn.on .k{color:var(--manger-cuivre,#9c5027)}
.dedans-nut .dedans-ligne-btn:last-child{border-bottom:0}
.dedans-nut>.dedans-ligne-btn,.dedans-nut>.dedans-fiche{grid-column:1/-1}
.dedans-fiche{background:var(--bg);border:1px solid var(--filet);border-radius:12px;padding:12px 14px;margin:6px 0 10px;font-size:.9375rem;line-height:1.55}
.dedans-fiche p{margin:0 0 8px}.dedans-fiche .dedans-ou{color:var(--manger-encre,#48382d)}.dedans-fiche .dedans-note{color:var(--gray);font-size:.8125rem}
.dedans-barre{height:8px;background:var(--filet);border-radius:4px;margin:4px 0 10px;overflow:hidden}.dedans-barre i{display:block;height:100%;background:var(--manger-cuivre,#9c5027);border-radius:4px}
.dedans-groupe{font:600 .6875rem/1.7 -apple-system,sans-serif;text-transform:uppercase;letter-spacing:.12em;color:var(--manger-cuivre,#9c5027);margin:14px 0 2px}
.dedans-actions{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:1fr;align-items:stretch;gap:8px;margin-top:10px}.dedans-actions .btn{display:flex;align-items:center;justify-content:center;height:100%;min-height:44px;box-sizing:border-box;margin:0;border-color:var(--filet);color:var(--manger-cuivre,#9c5027);font-size:.875rem;padding:8px 6px;line-height:1.2;text-align:center}
.dedans-savoir{margin-top:18px;border:1px solid var(--filet);border-radius:14px;padding:12px 14px;background:var(--card)}
.dedans-savoir summary{cursor:pointer;list-style:none}.dedans-savoir summary::-webkit-details-marker{display:none}.dedans-savoir summary small{color:var(--gray)}
.dedans-savoir-q{display:block;margin:12px 0 10px;font-size:.8125rem;color:var(--gray)}.dedans-savoir-q input{display:block;width:100%;box-sizing:border-box;margin-top:6px;border:1px solid var(--filet);border-radius:12px;padding:11px 12px;font:inherit;font-size:1rem;background:var(--card);color:var(--ink)}
.dedans-manger{width:100%;margin-top:10px;background:var(--manger-cuivre,#9c5027);border-color:var(--manger-cuivre,#9c5027);color:#fff}
.dedans-manger:disabled{opacity:.55}
.dedans-ajoute{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;padding:10px 12px;border:1px solid var(--filet);border-radius:12px;background:var(--bg);font-size:.875rem;color:var(--ink)}
.dedans-lien{background:transparent;border:0;padding:6px 8px;min-height:44px;font:inherit;font-size:.875rem;color:var(--manger-cuivre,#9c5027);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.dedans-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);margin:0}
.dedans-jour-tete{margin-bottom:10px}.dedans-jour-puces{margin-bottom:12px}
.dedans-jauge-bloc{display:grid;grid-template-columns:120px 1fr;gap:14px;align-items:center;margin:6px 0 10px}
.dedans-jauge{width:120px;height:auto}.dedans-jauge-fond polygon{fill:var(--filet)}.dedans-jauge-plein polygon{fill:var(--manger-cuivre,#9c5027)}
.dedans-jauge-plein rect{transition:y .5s ease,height .5s ease}
.dedans-jauge-txt b{display:block;font-family:Georgia,serif;font-size:1.625rem;line-height:1.1;font-variant-numeric:tabular-nums}.dedans-jauge-txt small{display:block;color:var(--gray);font-size:.8125rem;line-height:1.45;margin-top:4px}
.dedans-vide{margin:8px 0 6px;font-size:.9375rem;line-height:1.5}
.dedans-entrees{margin-top:10px}.dedans-entree{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--filet);font-size:.9375rem}.dedans-entree .k{font-family:Georgia,serif;min-width:0}
/* rc451 · « deux cadres se chevauchent » (Johnatan, 7 oct.) : le champ de Ma journée portait sa bordure DANS le cadre « g »,
   décalée de 4 px. Un seul cadre, comme dans « Un aliment » : c'est le contour .dedans-g qui le dessine. */
.dedans-entree .dedans-g input{width:64px;border:0;border-radius:10px;padding:8px 6px;font:inherit;font-size:1rem;text-align:right;background:transparent;color:var(--ink);min-height:44px;box-sizing:border-box}
.dedans-decouverte{display:block;width:100%;text-align:left;background:transparent;border:0;border-bottom:1px solid var(--filet);padding:10px 0;min-height:44px;font:inherit;font-size:.9375rem;color:var(--ink);cursor:pointer}.dedans-decouverte.on{color:var(--manger-cuivre,#9c5027)}
.dedans-recette summary small{color:var(--gray);font-weight:400}.dedans-recette-corps{padding-top:6px}
.dedans-recette-lignes{margin:6px 0}.dedans-recette-ligne{display:grid;grid-template-columns:1fr auto;gap:0 12px;padding:7px 0;border-bottom:1px solid var(--filet);font-size:.9375rem}.dedans-recette-ligne:last-child{border-bottom:0}
.dedans-recette-ligne .k{font-family:Georgia,serif}.dedans-recette-ligne .k.sous{color:var(--gray);padding-left:14px;font-size:.875rem}.dedans-recette-ligne .v{font-variant-numeric:tabular-nums;white-space:nowrap}
.dedans-g-portion::after{content:attr(data-unite) !important;font-size:.6875rem}.dedans-portions{margin:8px 0 4px}
.dedans-recette-micros{margin:8px 0}.dedans-recette-micros summary{cursor:pointer;font-size:.875rem;color:var(--manger-cuivre,#9c5027)}
.dedans-savoir-item{padding:8px 0;border-bottom:1px solid var(--filet);font-size:.9375rem;line-height:1.5}.dedans-savoir-item:last-child{border-bottom:0}.dedans-savoir-item .dedans-ou{display:block;color:var(--gray);font-size:.8125rem}
.tipcard{margin-top:16px; background:var(--card); border:1px solid var(--filet); border-radius:14px; padding:14px 16px 15px; font-size:0.9375rem; line-height:1.5; position:relative}
/* rc364 · La nuit, la carte reste claire (var(--card)) mais son titre serif héritait de l'encre de nuit : 1,47:1, mesuré
   par la revue du 27 sept. 2026 sur « Ton prochain pas ». Le titre garde l'encre du jour ; l'explorateur le mesure
   (--preuve-contraste remet l'ancienne couleur et exige un rouge). */
body.night .tipcard .serif{color:var(--ink)}
.tiplab{position:relative; padding-bottom:9px}
.tiplab::after{content:""; position:absolute; left:0; right:0; bottom:0; height:2px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 4' preserveAspectRatio='none'%3E%3Cpath d='M1 2.5 C 14 1, 30 3.5, 44 2 S 60 1.5, 63 2.2' stroke='%238E6A2F' stroke-width='0.9' fill='none' stroke-linecap='round' opacity='.65'/%3E%3C/svg%3E") no-repeat center/100% 100%}
.planlab{font-family:-apple-system,sans-serif;font-size:0.75rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-texte);margin:14px 0 8px}
.planlab:first-child{margin-top:0}
.planlab small{color:var(--gray);letter-spacing:.04em;text-transform:none;font-size:0.75rem;margin-left:6px}
.tiplab{font-size:0.75rem; letter-spacing:.22em; text-transform:uppercase; color:var(--gold-texte); margin-bottom:14px}
.timein{width:100%; border:1px solid var(--filet); border-radius:10px; padding:12px; font-family:Georgia,serif; font-size:1.125rem; background:var(--card); color:var(--ink)}
.tl{position:relative; padding-left:26px}
.tl::before{content:""; position:absolute; left:8px; top:6px; bottom:6px; width:1.5px; background:var(--filet)}
.tlit{position:relative; padding:0 0 16px}
.tlit::before{content:""; position:absolute; left:-22.5px; top:6px; width:8px; height:8px; border-radius:50%; background:var(--gold)}
.tlit.soft::before{background:var(--filet)}
.tlit .tlh{font-size:1.125rem; color:var(--gold-texte)}
.tlit .tll{font-size:1rem; margin-top:1px}
.tlit .tln{font-size:0.8125rem; color:var(--gray); font-family:-apple-system,sans-serif; margin-top:2px; line-height:1.45}
.opt:active{transform:scale(.985)}
#sOnb .opt{display:block;padding:18px 18px 17px}
#sOnb .opt small{display:block;margin-top:6px;line-height:1.45}
#sOnb .opts{gap:12px}
.btn:active{transform:scale(.97)}
.opt, .btn{transition:transform .12s ease}
body.retour-vers-droite .screen.on{ animation:arriveDeGauche .30s cubic-bezier(.32,.72,0,1) }
.screen.retour-vers-droite.on{ animation:arriveDeGauche .30s cubic-bezier(.32,.72,0,1) }
body.retour-vers-gauche .screen.on{ animation:arriveDeDroite .30s cubic-bezier(.32,.72,0,1) }
/* L'ecran d'arrivee entre d'aussi loin que le sortant s'en va, et sur la meme
   courbe : sans ca, l'un partait vite et l'autre arrivait de trois centimetres,
   ce qui donnait un geste brutal. */
@keyframes arriveDeGauche{ from{opacity:.45; transform:translateX(-46%)} to{opacity:1; transform:none} }
@keyframes arriveDeDroite{ from{opacity:.45; transform:translateX(46%)} to{opacity:1; transform:none} }
@media (prefers-reduced-motion: reduce){
  body.retour-vers-droite .screen.on, body.retour-vers-gauche .screen.on{ animation:none }
  .screen.retour-vers-droite.on{ animation:none }
}
.eau-victoire{ position:fixed; left:50%; bottom:96px; transform:translateX(-50%) translateY(14px);
  background:var(--card); color:var(--ink); border:1px solid var(--filet-fort); border-radius:14px;
  padding:12px 18px; font-size:0.875rem; line-height:1.5; max-width:320px; text-align:center;
  box-shadow:0 10px 30px rgba(36,31,24,.18); opacity:0; transition:opacity .4s ease, transform .4s ease; z-index:80; pointer-events:none }
.eau-victoire.on{ opacity:1; transform:translateX(-50%) translateY(0) }
@keyframes screenIn{from{opacity:0; transform:translateY(6px)} to{opacity:1; transform:none}}
@media (prefers-reduced-motion: reduce){ .screen.on{animation:none} }
.opt.pill{border-left:3px solid var(--pc); padding-left:15px; position:relative}
.opt.pill:has(.pbadge){padding-top:30px}
.pbadge{position:absolute;top:8px;right:12px;font-size:0.6875rem;letter-spacing:.08em;text-transform:uppercase;padding:2px 7px;border-radius:999px;background:rgba(169,130,60,.15);color:var(--gold-texte);font-family:-apple-system,sans-serif}
#nMenus{position:relative}#nMenus:has(.pbadge){padding-top:30px}
.pbadge.sub{background:transparent;border:1px solid var(--filet);color:var(--gray)}
/* rc255 : le trait de gauche garde la couleur pleine du pilier (un filet de 3 px,
   pas du texte) ; le numero « 07 » est du texte de 12 px et prend la variante lisible. */
.opt.pill .pnum{font-size:0.75rem;color:var(--pct,var(--pc));letter-spacing:.08em;margin-right:6px}
.wchip{font-family:-apple-system,sans-serif;font-size:0.75rem;padding:5px 10px;border-radius:999px;border:1px solid var(--filet);background:transparent;color:var(--gray)}
/* rc258 · Le fond sonore se deroule. Sept pastilles sous l'orbe tenaient sur deux
   rangees et encombraient l'ecran pendant toute la seance, alors qu'on change de
   fond une fois, ou jamais. Repliee, la rangee ne montre que le fond en cours ;
   un appui la deroule, un choix la replie. Aucun menu natif : sur iPhone il
   couvrirait l'orbe en pleine meditation et demanderait deux gestes au lieu d'un. */
#worldRow.plie .wchip{display:none}
#worldRow.plie .wchip.sel{display:inline-flex; align-items:center; gap:7px}
#worldRow.plie .wchip.sel::after{content:""; width:7px; height:7px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:translateY(-2px) rotate(45deg); opacity:.7}
#worldRow .wchip.sel::after{content:none}
.wchip.sel{border-color:var(--gold);color:var(--gold-texte)}
body.night .wchip{border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.5)}
body.night .wchip.sel{border-color:var(--gold);color:var(--gold-texte)}
#heart, #heartGlow{transform-origin:115px 115px;transform-box:view-box}
#heart{opacity:.38;visibility:hidden}
#heartGlow{opacity:.08}
#heartHit{outline:none}
#heartHit:focus-visible{stroke:var(--heartc,#A9823C);stroke-width:2;stroke-opacity:.65}
body.session-playing #heart{animation:heartIdle 8.4s ease-in-out infinite}
body.session-playing #heartGlow{animation:heartGlow 8.4s ease-in-out infinite}
body.session-playing.speaking #heart{animation:heartSpeak 2.35s ease-in-out infinite}
body.session-playing.speaking #heartGlow{animation:heartGlowSpeak 2.35s ease-in-out infinite}
body.paused #heart, body.paused #heartGlow{animation-play-state:paused}
@keyframes heartIdle{0%,100%{transform:scale(.92);opacity:.34}50%{transform:scale(1.35);opacity:.54}}
@keyframes heartGlow{0%,100%{transform:scale(.85);opacity:.06}50%{transform:scale(1.55);opacity:.14}}
@keyframes heartSpeak{0%,100%{transform:scale(1);opacity:.52}50%{transform:scale(1.75);opacity:.82}}
@keyframes heartGlowSpeak{0%,100%{transform:scale(1.1);opacity:.10}50%{transform:scale(2.15);opacity:.20}}
@media (prefers-reduced-motion: reduce){#heart,#heartGlow{animation:none!important}}

/* ===== Navigation principale (Sprint A) ===== */
/* rc291 · LA BANDE DU BAS, ENFIN COMPRISE. Johnatan, trois fois : « on a un décalage en bas »,
   « toujours cette putain de bande en bas ». Jamais vu dans Chrome, parce que sans marge de
   sécurité la barre touche le bas de la fenêtre et rien ne se remarque. Reproduit en simulant la
   marge d'un iPhone 15 (59 px en haut, 34 en bas) : la barre couvre bien tout le bas, mais elle est
   d'une couleur PLUS CLAIRE que la page (celle des cartes), et la réserve de l'indicateur
   d'accueil devient alors un grand pavé crème vide sous les libellés. C'était ça, la bande.
   Ce n'était donc ni un ancrage perdu ni quelque chose qui peignait par-dessus : c'était un
   contraste. La barre prend la couleur de la page ; le bas redevient la continuité de l'écran, et
   seul le filet du haut la sépare encore du contenu.
   rc288 avait ajouté six pixels d'air au-dessus des libellés en supposant que c'était la gêne :
   ils n'étaient pas la réponse, et rc293 les reprend.
   rc293 · LA HAUTEUR. « C'est toujours gros et pas esthétique ». La barre mesurait 96 px : douze
   d'air en haut, quarante-quatre de cible tactile, quarante en bas. Or la réserve de l'indicateur
   d'accueil (trente-quatre) SUFFIT déjà à dégager le bas : lui ajouter six pixels revenait à payer
   deux fois. On passe donc de « réserve + 6 » à « la plus grande des deux : réserve ou 8 », ce qui
   garde une marge là où il n'y a pas d'indicateur du tout. Total : 82 px, la hauteur d'une barre
   d'onglets iOS. La cible tactile de quarante-quatre pixels, elle, ne se négocie jamais. */
/* rc299 · UNE BARRE QUI FLOTTE, ET LA QUESTION DEVIENT SANS OBJET.
   J'ai passé le 20 septembre à rétrécir une barre collée au bas de l'écran : 97, puis 83,
   puis 71, puis 55. Johnatan la voyait toujours, parce que le défaut n'était pas sa hauteur.
   Sa fenêtre fait 793 points sur un écran de 852 : cinquante-neuf points que l'application
   n'occupe pas et qu'aucun CSS ne peindra jamais. Une barre collée au bord les désigne.
   Une barre qui flotte les absorbe : l'espace en dessous n'est plus un reste, c'est une
   marge. C'est lui qui a proposé de la redessiner, et c'était la bonne idée.
   Elle se centre, ne prend que la largeur de ses mots, et l'onglet ouvert porte sa capsule.
   Le voile ci-dessous éteint le contenu qui passe derrière : sans lui, le texte défile
   dans les marges de la pilule et c'est sale. 54 px de haut, bouton à 44 d'appui. */
body.tabbed::after{content:"";position:fixed;left:0;right:0;bottom:0;height:128px;z-index:7;pointer-events:none;
  background:linear-gradient(to bottom, rgba(var(--voile-rgb),0) 0%, rgba(var(--voile-rgb),.86) 38%, rgba(var(--voile-rgb),1) 68%)}
.tabbar{position:fixed;left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:calc(100% - 28px);bottom:max(calc(env(safe-area-inset-bottom) - 4px), 10px);display:none;gap:2px;background:var(--pilule);border:1px solid var(--filet);border-radius:999px;padding:4px 6px;box-shadow:0 8px 28px rgba(36,31,24,.11), 0 2px 6px rgba(36,31,24,.05);z-index:9}
.tabbar button{flex:0 0 auto;background:none;border:none;font-family:Georgia,serif;font-size:0.75rem;color:var(--gray);padding:8px 13px 7px;cursor:pointer;border-radius:999px;letter-spacing:.01em}
/* rc311 : la capsule prend un doré FIXE. Elle utilisait --cloud-rgb, que le code repeint
   à la couleur du pilier visité pour l'orbe : après un passage dans S’hydrater, l'onglet actif
   virait au bleu. Une variable vivante ne se réemprunte pas pour du mobilier. */
.tabbar button.on{color:var(--gold-texte);font-weight:bold;background:rgba(var(--onglet-rgb),.14)}
.tabbar button:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
@media (max-width:379px){ .tabbar{max-width:calc(100% - 16px);padding:4px} .tabbar button{padding:8px 7px 7px} }   /* rc382 : seuil 380 px (le clone a mesuré « Mon espace » rogné de 370 à 373 px avec 370). À 320 px, 344 px d’onglets pour 292 : « Mon espace » était coupé. Seuls les petits écrans changent. */
/* rc297 · NE PAS RÉSERVER DE PLACE POUR UNE BARRE QUI N'EST PAS CHEZ NOUS.
   Mesuré sur la capture de Johnatan du 20 septembre : la pastille « + 1 verre », qui se
   place par rapport au bas de la fenêtre, tombe à 687,7 points. Son CSS dit « zone sûre
   + 72 ». Une fenêtre de 793 donne une zone sûre de 33,3 : les 34 attendus. Donc sa
   fenêtre fait 793 points sur un écran de 852 : cinquante-neuf points de son écran
   n'appartiennent pas à l'application, et iOS les peint avec la couleur de thème, le même
   crème que le papier. C'est ce qu'il voyait, et ce n'était pas la barre : elle mesurait
   bien ses 70 points.
   Ces cinquante-neuf points, on ne peut pas les peindre. Mais quand la fenêtre est plus
   courte que l'écran, la barre de geste d'iOS se tient DEHORS, sous nos pieds : la réserve
   qu'on lui garde ne protège plus rien. On la rend : 1 de filet + 4 d'air + 44 de bouton
   + 6 de plancher. 70 points deviennent 55, mesurés dans un vrai navigateur. */
/* rc299 : une pilule qui flotte n'a plus de réserve à rendre, elle se rapproche du bord. */
body.fenetre-courte .tabbar{ bottom:2px; box-shadow:0 -2px 12px rgba(36,31,24,.06), 0 0 0 0 transparent }   /* rc319 : au ras de la fenêtre courte, 59 pt de papier sous elle (iOS 26 translucide). rc320 : posée au ras, son ombre descendait sous le bord de la fenêtre et iOS la tranchait net : « une toute petite barre en bas ». L'ombre ne descend plus. */
body.tabbed .screen{padding-bottom:104px}   /* rc315 : rc314 avait porté la réserve à 124 px pour la pastille « + 1 verre » ; le décalage du bas est revenu sur l'iPhone de Johnatan. On rend la valeur mesurée de rc297. */
body.tabbed.fenetre-courte .screen{padding-bottom:84px}

/* ===== LA PISTE DES QUATRE ONGLETS =====================================
   Un conteneur persistant : les quatre panneaux y vivent en permanence,
   cote a cote, et c'est le NAVIGATEUR qui fait le glisse et l'accrochage.
   Rien n'est monte ni demonte, aucun display ne change entre eux, aucune
   animation d'entree ne se declenche : c'etaient les trois causes du saut.
   Contrainte du procede : un conteneur qui defile en X ne peut pas laisser
   deborder le Y. Le defilement vertical vit donc DANS chaque panneau, et
   l'en-tete cesse de defiler avec le contenu. C'est assume. */
body{ height:100dvh; overflow:hidden }
main{ padding-left:0; padding-right:0; min-height:0; position:relative }

/* ══ rc156 · CHAQUE ECRAN DEFILE CHEZ LUI ═══════════════════════════
   Suite directe de la piste. Le document ne defile plus du tout : il ne
   peut donc plus etre recale quand un ecran en remplace un autre, et
   l'ecran d'arrivee peut etre pose DESSOUS pendant le geste de retour,
   a sa propre position, sans que rien ne soit demonte.
   Les quatre onglets, eux, vivent dans #piste et ont leurs regles. */
main > .screen{
  position:absolute; inset:0;
  overflow-y:auto; -webkit-overflow-scrolling:touch; overscroll-behavior-y:contain;
  padding:0 22px calc(env(safe-area-inset-bottom) + 22px);
}
/* Un ecran qui defile chez lui est une colonne flex de hauteur ferme : ses
   enfants ne doivent JAMAIS retrecir pour y tenir, ils doivent deborder et
   faire defiler. Sans cela, tout ce qui porte overflow:hidden (les .seg-ctrl,
   donc les trois espaces d'un pilier) s'ecrase jusqu'a disparaitre. */
main > .screen > *, #piste > .screen > *{ flex-shrink:0 }
/* rc172 · à portée de main.
   L'or clair (--gold, #A9823C) contraste à 3,53:1 sous du blanc : il reste pour les
   filets, les bordures et les accents ; les surfaces pleines qui portent du texte
   blanc prennent l'or plein (#8E6A2F, 4,94:1). Toute cible tactile fait 44 px.
   Le clavier et le Contrôle de sélection voient où ils sont (focus-visible). */
:root{ --gold-plein:#8E6A2F;
  /* rc174 · le système graphique, écrit une fois. La même bordure or était écrite
     quarante façons (var(--filet) à .5, var(--filet) à .45) : une
     bordure, une bordure forte, une lueur. Les sept couleurs de pilier vivent ici,
     pas dans les attributs. */
  --filet:rgba(142,106,47,.28); --filet-fort:rgba(142,106,47,.42); --lueur:rgba(169,130,60,.10);
  --p1:#2F8C7A; --p2:#3A6B8C; --p3:#B5651D; --p4:#C0622D; --p5:#4B4E7D; --p6:#A65A57; --p7:#C19A3E;
  /* rc255 · La même couleur, pour les petits textes. Les sept teintes de marque sont faites pour
     des orbes et des aplats ; posées en 12 px sur le papier crème, cinq d'entre elles descendaient
     sous le seuil de lisibilité (S'élever à 2,30 pour 1, là où il en faut 4,5). Ces variantes
     gardent la teinte au degré près et ne baissent que la clarté, le strict nécessaire. Les orbes,
     les aplats et les grands nombres continuent d'utiliser --p1 à --p7.
     Trouvé le 19 septembre 2026, quand le contrôle de contraste de l'explorateur s'est remis à voir. */
  --p1t:#267263; --p2t:#3A6B8C; --p3t:#9a5519; --p4t:#9f5125; --p5t:#4B4E7D; --p6t:#995251; --p7t:#7c6328 }
.btn.solid{ background:var(--gold-plein) }
.seg-ctrl button.sel{ background:var(--gold-plein) }
.btn{ min-height:44px }
.seg-ctrl button{ min-height:44px }
:focus-visible{ outline:2px solid var(--gold); outline-offset:2px }
/* rc180 : trois boutons de texte (le choix de langue à l'entrée, « Code oublié ? »,
   « Mes goûts ») tombaient sous la cible de 44 px : ils ne portent pas la classe
   .btn, donc la règle de rc172 les ignorait. Un bouton reste un bouton, quelle
   que soit son allure. Trouvé par l'explorateur, sur un vrai rendu. */
button{ min-height:44px }
button.wchip, button.opt, .seg-ctrl button, .tabbar button, #heartHit{ min-height:0 }
.seg-ctrl button{ min-height:44px }
.tabbar button{ min-height:44px }
/* Le retour en haut de l'écran : le même geste que le bouton « Revenir » du bas,
   pour qui n'a pas défilé. Posé par poserRetourHaut, seulement sur les écrans qui
   ont ce bouton en bas. Il défile avec l'écran, jamais par-dessus le header. */
.retour-haut{ position:absolute; top:4px; left:4px; width:44px; height:44px; border:0; background:none; padding:0;
              font:32px/44px Georgia,'Times New Roman',serif; color:var(--gold-texte); cursor:pointer; z-index:3; text-align:center }
.screen.avec-retour > .q-eyebrow:first-of-type{ padding-left:36px }
/* Les trois phrases du rituel de fermeture : le meme papier que le journal. */
.deposer-champ{width:100%;border:1px solid var(--filet);border-radius:12px;padding:11px 13px;
  font-family:Georgia,serif;font-size:1rem;line-height:1.55;background:var(--card);color:var(--ink);resize:vertical}
/* Pendant le geste : le sortant passe DEVANT et devient opaque (sinon les
   deux textes se superposent), l'entrant attend DESSOUS, hors du doigt. */
main > .screen.on{ z-index:2 }
main > .screen.dessous{ display:flex !important; z-index:1; pointer-events:none }
main > .screen.glisse{ transition:none }
main > .screen.repose{ transition:transform .30s cubic-bezier(.32,.72,0,1) }
main > .screen.ressort{ transition:transform .30s cubic-bezier(.22,.9,.3,1.18) }
main > .screen.glisse.on, main > .screen.repose.on, main > .screen.ressort.on{ background:var(--paper) }
body.night main > .screen.glisse.on, body.night main > .screen.repose.on, body.night main > .screen.ressort.on{ background:var(--night) }
/* Le raccord : a la fin du geste les deux ecrans sont DEJA en place,
   aucune animation d'entree ne doit rejouer par-dessus. */
body.sans-entree .screen.on{ animation:none !important }
/* rc205 : le menu deja amene par le doigt reste pose jusqu'a son depart.
   Retirer cette regle a l'image suivante relancait screenIn : flash et +6 px. */
.screen.sans-entree.on{ animation:none !important }
/* Le clavier de l'iPhone : le document ne defile plus, donc un ecran court
   ne pourrait pas remonter un champ resté sous le clavier. On lui donne de
   quoi defiler tant qu'un champ a le doigt. (Lecon de rc128 : c'est sur
   l'ecran d'entree que ca coute le plus cher.) */
body.clavier main > .screen.on{ padding-bottom:calc(env(safe-area-inset-bottom) + 46vh) }
@media (prefers-reduced-motion:reduce){ main > .screen.repose, main > .screen.ressort{ transition:none } }
#piste{
  flex:1 1 auto; min-height:0; display:none;
  overflow-x:auto; overflow-y:hidden;
  scroll-snap-type:x mandatory; scroll-behavior:auto;
  overscroll-behavior-x:contain; -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
}
#piste::-webkit-scrollbar{ display:none }
body.tabbed #piste{ display:flex }
/* rc204 : le retour d'un pilier retrouve la piste deja montee, sous le
   doigt. On deplace son conteneur, jamais ses quatre panneaux. */
#piste.dessous{ display:flex; position:absolute; inset:6px 0 calc(env(safe-area-inset-bottom) + 22px); z-index:1; pointer-events:none }
#piste.glisse{ transition:none }
#piste.repose{ transition:transform .30s cubic-bezier(.32,.72,0,1) }
#piste.ressort{ transition:transform .30s cubic-bezier(.22,.9,.3,1.18) }
@media (prefers-reduced-motion:reduce){ #piste.repose, #piste.ressort{ transition:none } }
#piste > .screen{
  display:flex !important;               /* jamais de display:none entre eux */
  animation:none !important;             /* jamais screenIn, jamais appear */
  flex:0 0 100%; width:100%; min-width:100%;
  scroll-snap-align:start; scroll-snap-stop:always;
  overflow-y:auto; -webkit-overflow-scrolling:touch; overscroll-behavior-y:contain;
  /* rc264 : le glissement vertical appartient a l'ecran, jamais a la piste.
     La piste est un conteneur a accrochage HORIZONTAL (scroll-snap-type:x) ;
     sur WebKit elle peut capter un geste vertical commence sur un de ses
     panneaux, et l'ecran ne defile alors plus sous le doigt, alors qu'il
     defile parfaitement par programme. On le declare, plutot que de l'esperer.
     Remonte par Johnatan : « on ne peut plus descendre dans le menu
     d'aujourd'hui », seul onglet dont le contenu depasse la hauteur. */
  touch-action:pan-y;
  /* rc358 · audit complet (9A) : la goutte « + 1 verre » (bas à 72 px, 54 px de haut) couvrait le bout des derniers
     boutons des onglets. La marge basse passe au-dessus d’elle et du voile de la barre. */
  padding:0 22px calc(env(safe-area-inset-bottom) + 150px);
}
/* Une feuille ouverte neutralise le glisse entre onglets. */
body.sheeted #piste{ overflow-x:hidden }
@media (prefers-reduced-motion:reduce){ #piste{ scroll-behavior:auto } }
.boirechip{position:fixed;right:16px;bottom:calc(env(safe-area-inset-bottom) + 72px);z-index:8;display:none;align-items:center;gap:8px;background:rgba(251,247,238,.94);border:1px solid rgba(58,107,140,.42);color:#3A6B8C;border-radius:999px;padding:9px 14px 9px 11px;font-family:Georgia,serif;font-size:0.875rem;box-shadow:0 5px 18px rgba(58,107,140,.12);cursor:pointer;overflow:visible;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.boirechip .water-drop{position:relative;width:26px;height:26px;display:grid;place-items:center;border-radius:50%;background:rgba(58,107,140,.11);box-shadow:inset 0 0 0 1px rgba(58,107,140,.12);overflow:hidden;transition:transform .3s ease,background .3s ease}
.boirechip .water-drop::before{content:"";position:absolute;left:0;right:0;bottom:-2px;height:48%;background:rgba(58,107,140,.20);border-radius:50% 50% 0 0;transform-origin:bottom;transition:height .45s ease}.boirechip .water-drop svg{position:relative;z-index:1;width:14px;height:18px;display:block;fill:#3A6B8C}.boirechip.splash .water-drop::before{height:88%}
.boirechip.splash .water-drop{animation:waterDropPop .7s cubic-bezier(.2,.8,.2,1)}
/* rc350 · revue du 25 sept. (5A) : au repos, la goutte seule dans un rond de 52 px (26 + 2 × 13), sans texte :
   elle ne recouvre plus le bord des boutons pleine largeur. Le compte (« 3 / 8 · reçu ») s'ouvre en bulle
   au toucher, le temps du « splash », puis se replie. La réserve du bas des écrans n'est pas touchée (rc315). */
.boirechip{padding:13px;gap:0}
.boirechip .boire-label{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;transition:max-width .35s ease,opacity .25s ease,margin .35s ease}
.boirechip.splash .boire-label{max-width:160px;opacity:1;margin-left:8px}
/* rc350 · revue du 25 sept. (2B, 3B) : l'écran santé relié, en tuiles et en lignes. */
.sante-tuiles{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sante-tuile{background:var(--paper,#fbf8f2);border:1px solid var(--filet,#e6dfd2);border-radius:12px;padding:9px 11px}
.sante-tuile small{display:block;font:600 0.625rem/1.3 var(--sans,system-ui,sans-serif);letter-spacing:.08em;text-transform:uppercase;color:var(--gold-texte,#8c6d2f)}
.sante-tuile strong{display:block;font-weight:400;font-size:1.1875rem;line-height:1.35}
.sante-lignes div{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:7px 0;border-bottom:1px solid var(--filet,#efe8da);font-size:0.9375rem}
.sante-lignes div:last-child{border-bottom:0}
.sante-lignes em{font:600 0.8125rem var(--sans,system-ui,sans-serif);font-style:normal;color:var(--gold-texte,#8c6d2f);white-space:nowrap;margin-left:6px}
.sante-lignes + p{margin:8px 0 0;font-size:0.875rem;color:var(--gray)}
.boirechip.splash::after{content:"";position:absolute;left:20px;top:50%;width:18px;height:18px;border:1px solid rgba(58,107,140,.48);border-radius:50%;transform:translate(-50%,-50%);animation:waterRipple .75s ease-out forwards;pointer-events:none}
/* rc363 · La goutte quitte la colonne du contenu. Fixe en bas à droite au-dessus de la pilule, elle couvrait le bord droit
   de ce qui passait à sa hauteur (Exporter mon journal, les cartes Se reposer / Se reproduire, revue du 23 sept.) : un
   calque fixe posé sur une liste qui défile couvre toujours quelque chose. Elle prend la place libre en haut à gauche,
   en miroir de la roue des réglages (#profBtn y vit hors des onglets ; la goutte n'existe que sur les onglets), hors de
   tout défilement. Le compte s'ouvre en bulle sous elle, jamais sur le logo. La réserve du bas (rc315, rc358) et la
   pilule (rc320) restent intactes. L'explorateur mesure désormais chaque bouton pleine largeur par ses points de contact. */
.boirechip{top:calc(env(safe-area-inset-top) + 12px);left:14px;right:auto;bottom:auto;width:38px;height:38px;padding:6px;box-sizing:border-box;justify-content:center;border-radius:999px}
.boirechip::before{content:"";position:absolute;inset:-6px;border-radius:999px}   /* la même cible de 50 px que la roue (.gear::after), le rond reste à 38 px */
.boirechip .boire-label{position:absolute;top:calc(100% + 6px);left:0;max-width:none;width:max-content;padding:5px 10px;border-radius:999px;background:rgba(251,247,238,.96);border:1px solid rgba(58,107,140,.42);box-shadow:0 5px 18px rgba(58,107,140,.12);transform:translateY(-4px);transition:opacity .25s ease,transform .25s ease;pointer-events:none}
.boirechip.splash .boire-label{max-width:none;margin-left:0;transform:translateY(0)}
@keyframes waterDropPop{0%{transform:scale(1)}35%{transform:scale(.82) translateY(2px)}65%{transform:scale(1.18) translateY(-2px)}100%{transform:scale(1)}}
@keyframes waterRipple{0%{opacity:.75;transform:translate(-50%,-50%) scale(.55)}100%{opacity:0;transform:translate(-50%,-50%) scale(2.7)}}
.jentry{display:block;width:100%;text-align:left;font:inherit;color:inherit;background:var(--card);border:1px solid rgba(169,130,60,.18);border-radius:14px;padding:13px 15px;margin-bottom:10px;cursor:pointer}
.jmeta{display:block;font-size:0.75rem;color:var(--gray);font-family:-apple-system,system-ui,sans-serif;margin-bottom:5px}
.jtext{display:block;font-size:0.9375rem;line-height:1.55;color:var(--ink);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.jfilters{display:flex;gap:6px;overflow-x:auto;padding-bottom:8px;margin-bottom:10px;-webkit-overflow-scrolling:touch}
.jfilters button{flex:0 0 auto;border:1px solid var(--filet);background:none;border-radius:999px;padding:6px 12px;font-family:Georgia,serif;font-size:0.8125rem;color:var(--gray);cursor:pointer}
.jfilters button.on{background:var(--gold-plein);color:#fff;border-color:var(--gold-plein);font-weight:700}   /* rc384 · socle 2 : blanc sur --gold = 3,5:1 ; sur --gold-plein = 4,9:1 */
/* --- rc108 · Ma journée idéale, Sous la douche, le « ? » des pratiques --- */
/* rc109 : listes pleine largeur, une coche à droite */
.jour-list{display:flex;flex-direction:column;gap:8px;margin:6px 0 6px}
.jour-list button{display:flex;align-items:center;gap:12px;width:100%;min-height:50px;border:1px solid var(--filet);background:var(--card);border-radius:14px;padding:11px 14px;font-family:Georgia,serif;font-size:1rem;color:var(--ink);cursor:pointer;text-align:left}
.jour-list button .lab{flex:1}
.jour-list button .chk{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--filet-fort);flex:none;position:relative}
.jour-list button.on{border-color:var(--gold);background:var(--lueur)}
.jour-list button.on .chk{background:var(--gold);border-color:var(--gold)}
.jour-list button.on .chk::after{content:"";position:absolute;left:7px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.jour-list button .num{width:24px;height:24px;border-radius:50%;flex:none;display:inline-flex;align-items:center;justify-content:center;font-family:-apple-system,sans-serif;font-size:0.8125rem;font-weight:700;border:1px solid var(--filet);color:var(--gold-texte)}
.jour-list button.on .num{background:var(--gold);color:#fff;border-color:var(--gold)}
.jour-ajout{display:flex;gap:8px;margin:0 0 10px}
.jour-ajout input{flex:1;min-width:0;border:1px solid var(--filet);border-radius:12px;padding:10px 12px;font-family:Georgia,serif;font-size:1rem;background:var(--card);color:var(--ink);min-height:46px}
.jour-ajout .btn{width:auto;flex:none;padding:0 16px;margin:0;min-height:46px}
.jour-curseur .val{font-size:1.625rem;font-weight:700;color:var(--gold-texte);text-align:center;margin-bottom:2px;font-variant-numeric:tabular-nums}
.jour-curseur input[type=range]{margin:6px 0 2px}
.jour-curseur .reperes{display:flex;justify-content:space-between;font-size:0.75rem;color:var(--gray);margin-top:2px}
.jour-chips{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 16px}
.jour-chips button{min-height:44px;border:1px solid var(--filet);background:var(--card);border-radius:999px;padding:9px 14px;font-family:Georgia,serif;font-size:0.9375rem;color:var(--ink);cursor:pointer;text-align:left;display:inline-flex;align-items:center}
.jour-chips button.on{background:var(--gold);color:#fff;border-color:var(--gold);font-weight:700}
.jour-chips button .num{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.3);font-size:0.75rem;margin-right:7px;font-family:-apple-system,sans-serif;font-weight:700}
.jour-row{padding:11px 0;border-bottom:1px solid var(--lueur)}
.jour-row:last-child{border-bottom:none}
.jour-row .lab{font-size:1rem;margin-bottom:7px}
.jour-mom{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.jour-mom button{min-height:36px;border:1px solid var(--filet);background:none;border-radius:999px;padding:5px 6px;font-family:-apple-system,sans-serif;font-size:0.8125rem;color:var(--gray);cursor:pointer;text-align:center}
.jour-mom button.on{background:var(--gold);color:#fff;border-color:var(--gold);font-weight:700}
.jour-time{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--lueur)}
.jour-time:last-child{border-bottom:none}
.jour-time input{border:1px solid var(--filet);border-radius:10px;padding:9px 12px;font-family:Georgia,serif;font-size:1.0625rem;background:var(--card);color:var(--ink);min-height:44px}
.jour-tl{border-left:2px solid var(--filet);margin:10px 0 6px 8px;padding-left:18px}
.jour-pt{position:relative;padding:0 0 16px}
.jour-pt::before{content:"";position:absolute;left:-25px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--gold)}
.jour-pt .lab{font-family:-apple-system,sans-serif;font-size:0.75rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-texte);margin-bottom:3px}
.jour-pt .val{font-size:1rem;line-height:1.5}
.jour-pt .val.vide{color:var(--gray);font-style:italic}
.jour-dots{display:flex;gap:5px;margin:10px 0 4px}
.jour-dots span{width:10px;height:10px;border-radius:50%;background:rgba(169,130,60,.16)}
.jour-dots span.s1{background:var(--filet)}
.jour-dots span.s2{background:rgba(169,130,60,.6)}
.jour-dots span.s3{background:var(--gold)}
.jour-dots span.s4{background:var(--gold);box-shadow:0 0 0 2px var(--filet)}
.pq{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:22px;height:22px;margin-left:auto;align-self:center;border:1px solid var(--filet-fort);border-radius:50%;font:italic 600 12px Georgia,serif;color:var(--gold-texte);cursor:pointer}
/* rc358 · le « ? » à côté de la carte : même place à l’œil (en bas à droite), zone de toucher de 44 px. */
.pq-wrap{position:relative;display:block}
/* revue UX rc358 : sans sous-titre, le titre des piliers ne garde pas la marge qui le séparait de lui. */
.resp-hero h1:last-child,.manger-hero h1:last-child,.mouvoir-hero h1:last-child,.repos-hero h1:last-child,.lien-hero h1:last-child,.elever-hero h1:last-child{margin-bottom:0}
.pq-wrap>.opt{width:100%;padding-bottom:45px!important}
.pq-wrap>.pq{position:absolute;right:18px;bottom:12px;margin:0;padding:0;background:transparent;z-index:1;width:22px;height:22px;min-height:0!important;min-width:0!important}
.pq-wrap>.pq::before{content:"";position:absolute;inset:-11px;border-radius:50%}
.pq:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
/* rc387 · les liens du pied de Mon espace (14 px de haut) se touchent sur 44 px, le dessin ne bouge pas. Les « ? » gardent la zone de rc358 (.pq-wrap) : un halo sur les « ? » collés aux cartes volerait leurs touchers (seconde lame). */
#sProfil a[target="_blank"]{display:inline-block;padding:15px 0;margin:-15px 0}

/* ===== v79 DIAGNOSTIC : ORBE CSS TEXTURE VIVANTE =====
   Même moteur CSS que la respiration. Aucun Canvas/WebGL/SVG/video/WebP animé.
   Trois copies de la vraie texture HD circulent au-dessus de la base. */
.orb-v79-base, .orb-v79-cloud, .orb-v79-spiral, .orb-v79-glow, .orb-v79-pearl{position:absolute;pointer-events:none}
.orb-v79-base{inset:0;width:100%;height:100%;object-fit:contain;z-index:1;opacity:.62;filter:grayscale(1) contrast(1.18) brightness(.88)}
.orb-v79-live{position:absolute;inset:0;z-index:4;overflow:hidden;border-radius:50%;pointer-events:none;
  /* Un degrade dessine le disque, rond et fondu sur les bords : la couleur du pilier arrive
     AVEC l’ecran, sans attendre aucune image. C’est le rendu que Johnatan a choisi le
     3 septembre 2026 (l’ancienne silhouette de nuage, un masque de 500 Ko, est abandonnee). */
  -webkit-mask:radial-gradient(circle closest-side,#000 93%,rgba(0,0,0,.6) 96%,transparent 99.5%);mask:radial-gradient(circle closest-side,#000 93%,rgba(0,0,0,.6) 96%,transparent 99.5%)}
.orb-v79-cloud{width:150%;height:150%;max-width:none;object-fit:contain;left:-25%;top:-25%;will-change:transform,opacity;transform:translateZ(0)}
.orb-v79-c1{z-index:4;opacity:.72;mix-blend-mode:screen}
.orb-v79-c2{z-index:5;opacity:.58;mix-blend-mode:soft-light;filter:grayscale(1) contrast(1.42) brightness(.90)}
.orb-v79-c3{z-index:6;opacity:.46;mix-blend-mode:screen;filter:grayscale(1) contrast(1.18) brightness(1.34)}
.orb-v79-spiral{inset:5%;z-index:7;border-radius:50%;opacity:.34;mix-blend-mode:screen;filter:blur(8px);
  background:conic-gradient(from 20deg,transparent 0 9%,rgba(255,255,255,.19) 14%,transparent 24%,rgba(var(--orb-pillar-rgb),.25) 34%,transparent 45%,rgba(255,255,255,.14) 58%,transparent 69%,rgba(var(--orb-pillar-rgb),.20) 82%,transparent 94%)}
.orb-v79-glow{inset:8%;z-index:8;border-radius:50%;mix-blend-mode:screen;opacity:.68;filter:blur(9px);
  background:radial-gradient(ellipse at 34% 28%,rgba(255,255,255,.42),transparent 30%),radial-gradient(ellipse at 68% 62%,rgba(var(--orb-pillar-rgb),.28),transparent 34%)}
.orb-v79-pearl{width:18px;height:18px;z-index:9;border-radius:50%;left:48%;top:47%;opacity:.38;mix-blend-mode:screen;filter:blur(5px);
  background:radial-gradient(circle,rgba(255,255,255,.85) 0%,rgba(var(--orb-pillar-rgb),.42) 38%,transparent 75%)}
.orb-v79-sheen{position:absolute;inset:2%;z-index:10;border-radius:50%;pointer-events:none;box-shadow:inset 0 0 26px rgba(255,255,255,.10),0 0 20px rgba(var(--orb-pillar-rgb),.13)}
@keyframes v79Cloud1{0%,100%{transform:translate3d(-7%,-5%,0) rotate(-9deg) scale(1.04)}35%{transform:translate3d(5%,-1%,0) rotate(2deg) scale(1.13)}68%{transform:translate3d(2%,7%,0) rotate(10deg) scale(1.08)}}
@keyframes v79Cloud2{0%,100%{transform:translate3d(7%,5%,0) rotate(12deg) scale(1.10)}42%{transform:translate3d(-6%,2%,0) rotate(-3deg) scale(1.18)}75%{transform:translate3d(-2%,-7%,0) rotate(-12deg) scale(1.12)}}
@keyframes v79Cloud3{0%,100%{transform:translate3d(-3%,7%,0) rotate(-4deg) scale(1.06)}48%{transform:translate3d(7%,-7%,0) rotate(13deg) scale(1.16)}}
@keyframes v79Spiral{0%{transform:rotate(-8deg) scale(.97)}50%{transform:rotate(16deg) scale(1.04)}100%{transform:rotate(40deg) scale(.97)}}
@keyframes v79Glow{0%,100%{transform:translate3d(-6px,-4px,0) scale(.94);opacity:.48}50%{transform:translate3d(8px,7px,0) scale(1.08);opacity:.82}}
@keyframes v79Pearl{0%,100%{transform:translate3d(-52px,-22px,0) scale(.65);opacity:.18}25%{transform:translate3d(18px,-48px,0) scale(1.05);opacity:.54}55%{transform:translate3d(49px,19px,0) scale(.78);opacity:.30}80%{transform:translate3d(-19px,45px,0) scale(1.10);opacity:.48}}
body.session-playing .orb-v79-c1{animation:v79Cloud1 18s ease-in-out infinite}
body.session-playing .orb-v79-c2{animation:v79Cloud2 23s ease-in-out infinite reverse}
body.session-playing .orb-v79-c3{animation:v79Cloud3 29s ease-in-out infinite}
body.session-playing .orb-v79-spiral{animation:v79Spiral 72s linear infinite}
body.session-playing .orb-v79-glow{animation:v79Glow 15s ease-in-out infinite}
body.session-playing .orb-v79-pearl{animation:v79Pearl 21s ease-in-out infinite}
body.session-playing.speaking .orb-v79-c1{opacity:.80}body.session-playing.speaking .orb-v79-c2{opacity:.66}body.session-playing.speaking .orb-v79-glow{opacity:.88}
body.paused .orb-v79-c1, body.paused .orb-v79-c2, body.paused .orb-v79-c3, body.paused .orb-v79-spiral, body.paused .orb-v79-glow, body.paused .orb-v79-pearl{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.orb-v79-c1,.orb-v79-c2,.orb-v79-c3,.orb-v79-spiral,.orb-v79-glow,.orb-v79-pearl{animation:none!important}}


/* ===== v81 : retour des couleurs pilier + respiration visible ===== */
.orb-color, .orb-aura, .orb-coreglow, .orb-shine, .orb-rim{display:block!important}
.orb-v79-c1{opacity:.74!important}
.orb-v79-c2{opacity:.60!important}
.orb-v79-c3{opacity:.44!important}
.halo-wrap{transform:translateZ(0)}
@keyframes orbBreath{
  0%,100%{transform:scale(.972)}
  50%{transform:scale(1.036)}
}
body.session-playing .halo{animation:orbBreath 12s cubic-bezier(.42,.05,.58,.95) infinite!important}
body.paused .halo{animation-play-state:paused!important}
body.session-playing.speaking .orb-aura{opacity:.98!important}
body.session-playing.speaking .orb-coreglow{opacity:.92!important}


/* ===== v83 : textures PNG nativement colorées par pilier ===== */
.orb-v79-base{
  opacity:.88!important;
  filter:contrast(1.05) brightness(1.10)!important;
}
.orb-v79-cloud{
  filter:contrast(1.06) brightness(1.08)!important;
}
.orb-v79-c1{opacity:.52!important;mix-blend-mode:screen!important}
.orb-v79-c2{opacity:.38!important;mix-blend-mode:soft-light!important}
.orb-v79-c3{opacity:.30!important;mix-blend-mode:screen!important}
.orb-v79-glow{
  opacity:.68!important;
  background:radial-gradient(ellipse at 34% 28%,rgba(255,255,255,.36),transparent 30%),radial-gradient(ellipse at 68% 62%,rgba(var(--orb-pillar-rgb),.25),transparent 34%)!important;
}
.orb-v79-sheen{box-shadow:inset 0 0 26px rgba(255,255,255,.12),0 0 20px rgba(var(--orb-pillar-rgb),.16)!important}
/* v84 : bordures fondues, pour éviter un contour trop net */
.orb-v79-live{
  box-shadow:inset 0 0 1px rgba(255,255,255,.28), inset 0 0 18px rgba(255,255,255,.10);
}
.orb-v79-edgefade{
  position:absolute;inset:-1.4%;z-index:16;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,
    rgba(245,239,227,0) 58%,
    rgba(245,239,227,.03) 66%,
    rgba(245,239,227,.12) 74%,
    rgba(245,239,227,.28) 82%,
    rgba(245,239,227,.58) 90%,
    rgba(245,239,227,.92) 97%,
    rgba(245,239,227,1) 100%);
  filter:blur(2.4px);
  opacity:.98;
}
body.session-playing.speaking .orb-v79-edgefade{opacity:.92}


/* v95 · aperçu du test, parcours offert et impact Diagnostic */
.discovery-next{background:var(--card);border:1px solid var(--filet);border-radius:14px;padding:13px 15px;margin-bottom:9px;text-align:left}
.discovery-next .dn-k{font:700 10.5px/1.2 -apple-system,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-texte);margin-bottom:4px}
.discovery-next .dn-t{font-size:1rem;line-height:1.35}
.discovery-next .dn-s{font:12.5px/1.45 -apple-system,system-ui,sans-serif;color:var(--gray);margin-top:4px}
.diag-hint{display:block;margin-top:6px;font:700 11.5px/1.35 -apple-system,system-ui,sans-serif;color:var(--gold-texte)}


/* ===== v97 · Diagnostic perceptible ===== */
.diag-active-strip{display:none;margin:0 0 14px;padding:12px 14px;border:1px solid rgba(193,154,62,.34);border-radius:14px;background:linear-gradient(135deg,rgba(193,154,62,.11),rgba(251,247,238,.78));text-align:left;cursor:pointer}
.diag-active-strip .das-k{font:700 10.5px/1.2 -apple-system,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-texte);margin-bottom:4px}
.diag-active-strip .das-t{font-size:0.875rem;line-height:1.45;color:var(--ink)}
.diag-active-strip .das-s{font:12px/1.45 -apple-system,system-ui,sans-serif;color:var(--gray);margin-top:4px}
/* rc380 · la première orientation d'abord (UX-ANNUEL-01, 04) */
.diag-intro{margin:0 0 14px;font-size:0.9375rem;line-height:1.55;color:var(--gray)}
.diag-route{border:1px solid rgba(193,154,62,.34);border-radius:18px;padding:16px 18px;background:var(--card)}
.diag-route .k{font-size:0.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-texte);margin-bottom:6px}
.diag-route .p{font-family:Georgia,serif;font-size:1.375rem;line-height:1.2;color:var(--ink)}
.diag-route .d{font-size:0.9375rem;color:var(--gray);margin-top:2px}
.diag-route details{margin-top:10px;font-size:0.875rem;color:var(--gray)}
.diag-route summary,.diag-detail>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;color:var(--gold-texte);font-size:0.9375rem}
.diag-note{margin:8px 0 0;font-size:0.8125rem;line-height:1.5;color:var(--gray);text-align:center}
.diag-detail{margin:16px 0 0;border-top:1px solid rgba(140,109,47,.25);padding-top:4px}
.diag-detail-intro{margin:4px 0 12px;font-size:0.875rem;line-height:1.55;color:var(--gray)}
.diag-activation-hero{border:1px solid rgba(193,154,62,.34);border-radius:18px;padding:18px;background:linear-gradient(160deg,rgba(193,154,62,.12),rgba(251,247,238,.9));margin-bottom:14px}
.diag-activation-hero .k{font:700 10.5px/1.2 -apple-system,system-ui,sans-serif;letter-spacing:.15em;text-transform:uppercase;color:var(--gold-texte);margin-bottom:7px}
.diag-activation-hero .t{font-size:1.3125rem;line-height:1.3;margin-bottom:7px}
.diag-activation-hero .s{font:13.5px/1.6 -apple-system,system-ui,sans-serif;color:var(--gray)}
.diag-signal-grid{display:grid;grid-template-columns:1fr;gap:9px;margin:12px 0}
.diag-signal{border:1px solid rgba(142,106,47,.2);border-radius:13px;padding:12px 13px;background:var(--card)}
.diag-signal .k{font:700 10px/1.2 -apple-system,system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--gray);margin-bottom:3px}
.diag-signal .v{font-size:1rem;line-height:1.35}
.diag-signal .sub{font:12.5px/1.45 -apple-system,system-ui,sans-serif;color:var(--gray);margin-top:3px}
.diag-compare{border-left:3px solid var(--gold);padding:10px 0 10px 13px;margin:14px 0;font:13.5px/1.6 -apple-system,system-ui,sans-serif;color:var(--gray)}
.diag-rec-banner{margin:0 0 11px;padding:10px 12px;border-radius:12px;background:rgba(193,154,62,.10);border:1px solid rgba(193,154,62,.26);font:12.5px/1.5 -apple-system,system-ui,sans-serif;color:var(--ink)}
.diag-rec-banner b{color:var(--gold-texte)}
.diag-impact-detail{display:none;margin:8px 0 0;padding:11px 12px;border-radius:12px;background:var(--lueur);border:1px solid rgba(142,106,47,.16);font:12.5px/1.55 -apple-system,system-ui,sans-serif;color:var(--gray)}

/* v98 · la carte avant la météo */
.diag-door-arrival{background:linear-gradient(135deg,var(--lueur),rgba(169,130,60,.025));border:1px solid var(--filet);border-radius:14px;padding:14px 15px;margin:0 0 14px;text-align:left}
.diag-door-arrival .dda-k{font:700 10.5px/1.2 -apple-system,system-ui,sans-serif;letter-spacing:.13em;text-transform:uppercase;color:var(--gold-texte);margin-bottom:5px}
.diag-door-arrival .dda-t{font-size:1.0625rem;line-height:1.35;margin-bottom:4px}
.diag-door-arrival .dda-s{font:12.5px/1.5 -apple-system,system-ui,sans-serif;color:var(--gray)}

/* v99 · pédagogie Carte / Présent / Trajectoire */
.diag-pedagogy{display:grid;grid-template-columns:1fr;gap:8px;margin:12px 0 4px}
.diag-pedagogy .dp{background:rgba(255,255,255,.32);border:1px solid rgba(142,106,47,.20);border-radius:13px;padding:12px 13px;text-align:left}
.diag-pedagogy .dp .n{font:700 10.5px/1.2 -apple-system,system-ui,sans-serif;letter-spacing:.13em;text-transform:uppercase;color:var(--gold-texte);margin-bottom:4px}
.diag-pedagogy .dp .t{font-size:1rem;line-height:1.35;margin-bottom:2px}
.diag-pedagogy .dp .s{font:12.5px/1.48 -apple-system,system-ui,sans-serif;color:var(--gray)}
.diag-legacy-note{background:var(--lueur);border:1px solid var(--filet);border-radius:13px;padding:12px 13px;margin:10px 0;font:12.5px/1.5 -apple-system,system-ui,sans-serif;color:var(--gray)}
.diag-legacy-note b{color:var(--ink)}

/* Insigne d’accès */
.beta-badge{display:inline-flex;align-items:center;gap:6px;font:700 10px/1 -apple-system,system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-texte);border:1px solid var(--filet);border-radius:999px;padding:6px 9px;margin:0 0 12px;background:rgba(255,255,255,.32)}
.beta-grid{display:grid;gap:10px;margin:12px 0}
.beta-field{width:100%;box-sizing:border-box;border:1px solid var(--filet);border-radius:12px;padding:12px 13px;font:14px/1.5 -apple-system,system-ui,sans-serif;background:var(--card);color:var(--ink);resize:vertical}
.beta-status{min-height:20px;margin-top:8px;font:12.5px/1.45 -apple-system,system-ui,sans-serif;color:var(--gray)}
.beta-tech{font:11.5px/1.55 -apple-system,system-ui,sans-serif;color:var(--gray);white-space:pre-wrap;background:var(--lueur);border-radius:10px;padding:10px 12px;margin-top:12px}
/* rc229 · L'enveloppe iOS pose la classe natif au démarrage : le web seulement disparaît, l'Apple seulement apparaît. */
.natif-seul{display:none}
.natif .natif-seul{display:block}
.natif .web-seul{display:none!important}


/* rc224 · Compléments d’Aujourd’hui : aucune animation ni mesure au défilement. */
.home-signaux{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;width:100%;margin:10px 0 0;padding:10px 14px;border:1px solid var(--filet);border-radius:14px;background:var(--card);font-size:.875rem;color:var(--ink);text-align:left;cursor:pointer;min-height:44px}
.home-signaux span{white-space:nowrap}
.home-signaux small{display:block;width:100%;font-size:.75rem;color:var(--gray);margin-top:2px}
.sante-phases{margin:12px 0 4px}
.sante-phases-barre{display:flex;height:14px;border-radius:999px;overflow:hidden;border:1px solid var(--filet)}
.sante-phases-barre i{display:block;height:100%}
.sante-phases-barre .ph-leger{background:#C9B48B}.sante-phases-barre .ph-profond{background:#5B4A8A}.sante-phases-barre .ph-paradoxal{background:#8E6A2F}.sante-phases-barre .ph-eveil{background:#E6DED0}
.sante-phases-legende{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;margin:8px 0 0;font-size:.8125rem;color:var(--gray)}
.sante-phases-legende b{color:var(--ink);font-weight:600}
.sante-explications{display:grid;gap:10px;margin:12px 0 0}
.sante-explications h3{font-size:.9375rem;margin:0}
.sante-explications p{margin:0;font-size:.875rem;line-height:1.6;color:var(--gray)}
.home-widgets-ligne{margin:16px 0 0;padding:12px 14px;border:1px solid var(--filet);border-radius:14px;background:var(--card);font-size:.875rem;line-height:1.55;color:var(--gray)}
.home-widgets-ligne .liens{display:flex;gap:14px;margin-top:6px}
.home-widgets-ligne button{background:none;border:0;padding:8px 0;min-height:44px;color:var(--gold-texte);font:600 .875rem -apple-system,system-ui,sans-serif;cursor:pointer}
.home-widgets-ligne ol{margin:8px 0 0;padding-left:18px;display:grid;gap:4px}
.home-guide{margin:0 0 20px;text-align:left;color:var(--ink)}   /* rc410 · fond clair, texte sombre, aussi sous la nuit (clone du 3 oct.) */
.home-guide-title{font-size:1.125rem;line-height:1.35;margin:12px 0 8px}
.home-guide-copy{font-size:.875rem;line-height:1.6;margin:0 0 12px}
.home-guide .btn{width:100%;min-height:44px;white-space:normal}
/* rc410 · la semaine : sept étapes serrées, le geste à garder, les trois heures du rappel */
.home-guide-steps.sept{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-top:10px}
.home-guide-steps.sept li{padding-top:6px;font-size:.6875rem;letter-spacing:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.home-guide-steps.sept li span{font-size:.8125rem;margin-bottom:1px}
.home-guide-steps.sept li i{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);font-style:normal}   /* les noms restent lus par VoiceOver ; l'en-tête dit celui du jour */
.home-guide .btn small{display:block;font-size:.8125rem;font-weight:400;opacity:.85;margin-top:2px}
.home-guide-steps.sept li.fait span{opacity:.55}
.semaine-geste{font-size:.875rem;line-height:1.6;margin:10px 0 0;color:var(--ink)}
.semaine-geste b{display:block;font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-texte);margin-bottom:2px}
.semaine-rappel{margin:14px 0 4px;padding:12px 14px;border:1px solid var(--filet);border-radius:14px;background:var(--lueur)}
.semaine-rappel-titre{font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-texte);margin:0 0 6px}
.semaine-heures{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin:0 0 8px}
.home-guide .semaine-heures .btn{font-size:.8125rem;padding:10px 6px}
.home-guide-note{margin:12px 0 0;font-size:.75rem;line-height:1.5}
.home-guide-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;list-style:none;padding:0;margin:12px 0 0;font:12px/1.4 -apple-system,system-ui,sans-serif;color:var(--gray)}
.home-guide-steps li{border-top:2px solid var(--filet);padding-top:8px}
.home-guide-steps li[aria-current]{border-color:var(--gold);color:var(--gold-texte);font-weight:700}
.home-guide-steps span{display:block;margin-bottom:3px;font-size:.875rem}
.home-chosen{margin:18px 0 22px}
.home-chosen h2{margin:0 0 10px}
.home-chosen-list{display:grid;gap:8px}
.home-chosen-list .opt{min-height:56px;margin:0;overflow-wrap:anywhere}
.home-secondary{min-height:44px;margin-top:6px;padding:10px 4px;border-color:transparent;color:var(--gold-texte);font-size:.8125rem}
/* V102 · Aujourd’hui = décider, Explorer = choisir */
.today-choice-intro{margin:0 0 12px;padding:14px 15px;border:1px solid var(--filet);border-radius:14px;background:rgba(255,255,255,.22)}
.today-choice-intro .t{font-size:1.0625rem;line-height:1.35;margin-bottom:5px}
.today-choice-intro .s{font:13px/1.55 -apple-system,system-ui,sans-serif;color:var(--gray)}
.today-entry{margin:0 0 10px;padding:15px;border:1px solid var(--filet);border-radius:14px;background:var(--card);text-align:left}
.today-entry .k{font:700 10.5px/1.2 -apple-system,system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-texte);margin-bottom:5px}
.today-entry .t{font-size:1.125rem;line-height:1.3;margin-bottom:5px}
.today-entry .s{font:13px/1.55 -apple-system,system-ui,sans-serif;color:var(--gray)}
.today-entry .route{font:700 14px/1.4 -apple-system,system-ui,sans-serif;color:var(--ink);margin-top:9px}
.today-entry .why{display:none;margin-top:9px;padding-top:9px;border-top:1px solid rgba(169,130,60,.18);font:12.5px/1.55 -apple-system,system-ui,sans-serif;color:var(--gray)}
.today-entry-actions{display:flex;gap:8px;margin-top:11px}
.today-entry-actions .btn{margin:0}
.today-foundation-link{width:100%;margin-top:8px;font-size:0.8125rem;padding:9px;border-color:var(--filet)}


/* V102.2 · aucun chrome interactif avant l’entrée réelle dans l’app */
body.landing-locked #brandHome{
  pointer-events:none !important;
  cursor:default !important;
  -webkit-user-select:none;
  user-select:none;
}
body.tabbed #profBtn{display:none !important}
body.landing-locked #gearBtn,
body.landing-locked #profBtn{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
}


/* Petits écrans : les cinq choix d’énergie ne doivent pas être rognés. */
@media(max-width:360px){
  .seg-ctrl.wrap button{ font-size:0.75rem; padding-left:4px; padding-right:4px; }
}

/* Zones tactiles : 44 px, seuil au-delà duquel un pouce ne rate pas sa cible.
   Le contrôle segmenté et les boutons portent 53 des 60 cas mesurés. */
/* rc199 · le didacticiel se feuillette au doigt : le geste horizontal nous
   revient, le defilement vertical reste au navigateur. */
#tutoSlides{ touch-action: pan-y; }
.seg-ctrl button{ min-height:44px; }
.btn{ min-height:44px; }

/* rc211 · Une démonstration individuelle, à grande échelle, dans la page. */
#mouvFigure[hidden],#mouvIllustration[hidden],#mouvVideoSecours[hidden],#mouvVideoRevoir[hidden]{display:none!important}
.mouv-illustration{width:100%;min-width:0;margin:0 auto;text-align:center}
.mouv-video-cadre{position:relative;height:clamp(300px,39svh,370px);overflow:hidden;border:0;background:transparent}
.mouv-video-vue{position:relative;height:100%;aspect-ratio:.75;max-width:100%;margin:auto;overflow:hidden}
.mouv-video-vue canvas,.mouv-video-vue img{width:100%;height:100%;object-fit:contain;display:block;background:transparent}
.mouv-video-vue img{position:absolute;inset:0}
#mouvVideo{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
#mouvRendu[hidden]{display:none!important}
#jwBrouillon[hidden],#versTestVoulu[hidden],#entreeTerme[hidden]{display:none!important}
/* rc450 · un élément marqué caché l'est vraiment, quelle que soit sa classe (.opt{display:flex} montrait « Entrer sans code »
   dans Mon espace sur un appareil sans clé d'accès : vu par l'explorateur le 7 oct.). Une règle pour toute la famille. */
[hidden]{display:none!important}
#sReminders [hidden]{display:none!important}   /* rc371 · les états des rappels natifs se montrent et se cachent par hidden */
/* rc365 · le test des 7 questions dans l'app : une question par écran, trois réponses, retour */
#testIntro[hidden],#testRetour[hidden]{display:none!important}
/* rc366 · « J'ai un code » (formules, Mon abonnement), la mention treize mois, le code de l'apporteur, les leviers de la carte */
.porte-code{margin-top:10px;text-align:center}
.porte-code-ouvrir{width:100%;border-color:transparent;color:var(--gray);font-size:0.8125rem;padding:10px}
.porte-code-champ{display:flex;flex-direction:column;gap:8px;margin-top:4px;text-align:left}
.porte-code-champ[hidden],#payYearApport[hidden],#mapLeviers[hidden]{display:none!important}
.porte-code-champ input{width:100%;padding:13px 14px;border:1px solid var(--filet);border-radius:12px;font-family:inherit;font-size:1rem;background:var(--card);color:var(--ink)}
.porte-code-champ .btn{width:100%;font-size:0.875rem;padding:11px}
.porte-code-etat{min-height:18px;margin:0;font-size:0.875rem;line-height:1.5;color:var(--gold-texte);text-align:center}
.porte-code-abo{margin-top:8px}
.pay-apport{display:block;margin-top:6px;font-size:0.8125rem;color:var(--gold-texte)}
/* rc378 · UX-ANNUEL-01 : les composantes de l'année et la ligne du mensuel, sous leur bouton */
.pay-intro{margin:0 0 14px;font-size:0.9375rem;line-height:1.55;color:var(--gray)}
.pay-plus{list-style:none;margin:-2px 0 6px;padding:0 6px;display:grid;gap:10px}
.pay-plus li{font-size:0.875rem;line-height:1.5}
.pay-plus li b{display:block;font-weight:600;color:var(--ink)}
.pay-plus li span{display:block;color:var(--gray)}
/* rc384 · socle 2 (choix A) : un verbe dans chaque carte de formule. Posé par la feuille de style depuis data-verbe :
   Apple réécrit b/small et l’adaptateur Google réécrit tout le texte du bouton, l’attribut reste. */
#payYear:is(:disabled,[aria-disabled="true"])::after,#payMonth:is(:disabled,[aria-disabled="true"])::after{content:none}   /* rc384 · seconde lame : pas de verbe sur un bouton qui ne répond pas */
#payYear::after,#payMonth::after{content:attr(data-verbe);flex-basis:100%;margin-top:6px;font-family:var(--sans,system-ui),sans-serif;font-size:0.875rem;font-weight:700;color:var(--gold-texte);text-align:right}
.pay-plus-mois{margin:-2px 0 0;padding:0 6px;font-size:0.875rem;line-height:1.5;color:var(--gray)}
/* rc378 · la carte Diagnostic de Mon abonnement */
.abo-diag{margin:14px 0 4px;padding:14px 0 0;border-top:1px solid rgba(140,109,47,.25)}
.abo-diag .abo-diag-titre{margin:0 0 10px;font-family:Georgia,serif;font-size:1.125rem;line-height:1.3;color:var(--ink)}
/* rc389 · ta lecture écrite de Johnatan : le bloc d'arrivée dans la carte, et l'écran de lecture (police de lecture, colonne étroite). */
.abo-diag .abo-lecture{margin:0 0 16px;padding:0 0 14px;border-bottom:1px solid var(--line)}
.abo-diag .abo-lecture .abo-diag-k{margin:0 0 4px}
#lectureEcriteTexte{font-family:Georgia,serif;font-size:1.0625rem;line-height:1.7;color:var(--ink);max-width:34em}
#lectureEcriteTexte p{margin:0 0 1em;overflow-wrap:anywhere}
#lectureEcriteDate{margin:0 0 18px;font-size:0.875rem;color:var(--gray)}
#lectureEcriteEtat{margin:0 0 18px;font-size:0.9375rem;line-height:1.55;color:var(--ink)}
.abo-diag p{margin:0 0 8px;font-size:0.875rem;line-height:1.55;color:var(--gray)}
.abo-diag .abo-diag-apart{margin:6px 0 0;padding-top:10px;border-top:1px dashed rgba(140,109,47,.25)}
.abo-diag .abo-diag-k{margin:0 0 4px;font-size:0.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-texte)}
.abo-diag ul{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:8px}
.abo-diag li{font-size:0.875rem;line-height:1.5;color:var(--gray)}
.abo-diag li b{display:block;color:var(--ink);font-weight:600}
.abo-diag .abo-diag-actions{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 8px}
.abo-diag .abo-diag-actions .btn{flex:1;min-width:140px;font-size:0.875rem;padding:11px}
.abo-diag details{margin:2px 0 0;font-size:0.875rem;color:var(--gray)}
.abo-diag summary{cursor:pointer;min-height:44px;display:flex;align-items:center;color:var(--gold-texte)}
.ap-code-bloc{display:flex;align-items:center;gap:10px;margin:0 0 8px}
.ap-code-clair{flex:1;padding:12px 14px;border:1px solid var(--filet-fort);border-radius:12px;background:var(--lueur);font-family:Georgia,'Times New Roman',serif;font-size:1.125rem;letter-spacing:.12em;text-align:center}
.ap-code-bloc .btn{flex:0 0 auto;font-size:0.875rem;padding:11px 14px}
.ap-code-note{margin:0 0 20px;font-size:0.8125rem;line-height:1.55;color:var(--gray)}
#mapLeviers .lev{margin-top:6px;line-height:1.55}
#mapLeviers .lev+.tiplab{margin-top:16px}   /* un pilier après l'autre : de l'air entre les deux blocs */
#mapLeviers .lev b{color:var(--gold-texte)}
#sTest .opt{display:block;padding:16px 18px 15px;font-size:1rem;line-height:1.45;width:100%}
#sTest .opt.sel{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold);background:var(--lueur)}
#sTest .opt:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
/* rc356 · afficher ou masquer son code pendant la saisie (demande de Johnatan, audit complet). */
.champ-code{position:relative}
.voir-code{position:absolute;right:4px;top:50%;transform:translateY(-50%);min-height:44px;min-width:44px;padding:0 12px;background:none;border:none;cursor:pointer;font-family:-apple-system,system-ui,sans-serif;font-size:0.8125rem;color:var(--gold-texte);text-decoration:underline;text-underline-offset:3px}
.mouv-personnages{display:inline-flex;justify-content:center;gap:3px;margin:0 auto 10px;padding:4px;border-radius:28px;background:color-mix(in srgb,var(--p4) 7%,transparent)}
.mouv-personnages button{min-height:44px;padding:6px 23px;border:1px solid transparent;border-radius:24px;background:transparent;color:color-mix(in srgb,var(--p4) 80%,#241f18);font:inherit;font-size:.75rem;cursor:pointer}
.mouv-personnages button[aria-pressed="true"]{background:color-mix(in srgb,var(--p4) 90%,#241f18);color:#fff;border-color:var(--p4)}
.mouv-personnages button:focus-visible{outline:2px solid var(--p4);outline-offset:3px}
.mouv-variante{font-size:.6875rem;letter-spacing:.13em;text-transform:uppercase;color:var(--gray);margin-top:4px}
.mouv-conseil{font-size:.875rem;line-height:1.5;margin:7px auto 0;max-width:340px;color:var(--ink)}
.mouv-revoir{position:absolute;bottom:0;right:0;z-index:2;background:transparent;font-size:.75rem;padding:8px 14px;min-height:44px;margin:2px auto 0;border-color:transparent;color:var(--p4);text-decoration:underline;text-underline-offset:4px}
.mouv-etat{font-size:.75rem;margin:3px 0}.mouv-etat:empty{display:none}
/* L'espace est réservé au geste ; les commandes restent regroupées. */
#sMouvRun{gap:12px;align-items:stretch;text-align:center;justify-content:flex-start}
.mouv-entete{padding-top:8px}
#mouvRoutineName{font-size:.6875rem;letter-spacing:.16em;line-height:1.5}
#mouvStepCount{font-size:.6875rem;letter-spacing:.12em;color:var(--p4t);padding:9px 0 6px}
#mouvStepName{font-size:1.875rem;line-height:1.1;letter-spacing:-.025em}
.mouv-repere{display:flex;align-items:center;justify-content:center;gap:18px;text-align:left;padding-top:14px;border-top:1px solid color-mix(in srgb,var(--p4) 20%,transparent)}
#mouvClock{font-size:2.75rem;line-height:1;color:var(--p4);font-variant-numeric:tabular-nums;min-width:85px}
#mouvNext{max-width:220px;font-size:.75rem;line-height:1.5}
.mouv-ecoute{font-size:.6875rem;line-height:1.45;margin:14px 0 0;color:var(--gray)}
#sMouvRun .playbtns{gap:8px;flex-wrap:nowrap;margin-top:12px}
#sMouvRun .playbtns .btn{font-size:.875rem;padding:12px 16px}
#mouvPause{background:color-mix(in srgb,var(--p4) 90%,#241f18);color:white;border-color:transparent}
#mouvSkip{border-color:color-mix(in srgb,var(--p4) 35%,transparent)!important;color:var(--p4t)!important}
body:has(#sMouvRun.on) #brandHome{padding-top:calc(env(safe-area-inset-top) + 12px);padding-bottom:6px}
body:has(#sMouvRun.on) #brandHome>svg:first-child{width:32px!important;height:21px!important;margin-bottom:3px!important}
body:has(#sMouvRun.on) #brandHome .brand{font-size:.6875rem;letter-spacing:.18em}
body:has(#sMouvRun.on) #brandHome .brand small{font-size:.6875rem}
body:has(#sMouvRun.on) #brandHome .rule{display:none}
@media(min-width:800px){
  main:has(#sMouvRun.on){max-width:1000px;padding:24px 50px 32px}
  #sMouvRun.on{display:grid;grid-template-columns:minmax(270px,1fr) minmax(320px,1.2fr);grid-template-rows:1fr 1fr;column-gap:55px;row-gap:28px;text-align:left;align-content:center}
  .mouv-entete{grid-column:1;grid-row:1;align-self:end;padding-bottom:5px}
  #mouvStepCount{padding:20px 0 12px}
  #mouvStepName{font-size:2.75rem;max-width:360px}
  .mouv-illustration{grid-column:2;grid-row:1 / 3;align-self:center}
  .mouv-commandes{grid-column:1;grid-row:2;align-self:start}
  .mouv-video-cadre{height:clamp(350px,56svh,480px)}
  .mouv-repere{justify-content:flex-start}
  #sMouvRun .playbtns{justify-content:flex-start}
  #mouvClock{font-size:2.75rem;min-width:105px}
}
@media(max-width:799px) and (max-height:780px){
  #sMouvRun{gap:12px}
  .mouv-video-cadre{height:300px}
  #mouvStepName{font-size:1.625rem}
}
.mouv-video-cadre:has([data-geste="gainage"]){display:grid;align-items:center}
.mouv-video-vue[data-geste="gainage"]{width:100%;height:auto;aspect-ratio:1.5}


/* Pilier Se nourrir : cartes légères, contrôles tactiles, navigation racine inchangée. */
#sSemaine .btn,#assResultat>.btn{width:100%;margin-top:8px;min-height:44px}
.ass-description{color:var(--gray);font-size:.9375rem;line-height:1.6}
.ass-bloc{border:1px solid var(--filet);border-radius:16px;background:var(--card);padding:14px;margin:12px 0}
.ass-carte h2{font-family:Georgia,'Times New Roman',serif;font-weight:400;font-size:1.375rem;line-height:1.3;margin:8px 0}
.ass-carte .demo-note{line-height:1.55}.ass-carte summary{min-height:44px;cursor:pointer;padding:9px 0}
.ass-ingredient{display:flex;gap:11px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--filet);font-size:.875rem;line-height:1.5}
.ass-ingredient:last-child{border-bottom:0}.ass-ingredient input:checked+span{text-decoration:line-through;color:var(--gray)}
/* rc221 : une case à cocher est une cible, donc 44 px (règle rc172). La case dessinée garde 22 px, la zone tactile déborde autour, invisible : les marges négatives la remettent là où était la case de 20 px de rc220. */
.ass-ingredient input,.sem-repas-choix input,.sem-course input{appearance:none;-webkit-appearance:none;width:44px;height:44px;margin:-11px 0 -11px -11px;flex-shrink:0;display:grid;place-items:center;background:none;border:0;padding:0;border-radius:12px;cursor:pointer}
.ass-ingredient input::before,.sem-repas-choix input::before,.sem-course input::before{content:"";width:22px;height:22px;box-sizing:border-box;border:1.5px solid var(--filet-fort);border-radius:6px;background:var(--card);transition:background .12s,border-color .12s}
.ass-ingredient input:checked::before,.sem-repas-choix input:checked::before,.sem-course input:checked::before{background:var(--p3) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M2.5 7.5l3 3 6-6.5' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/14px no-repeat;border-color:var(--p3)}
.ass-ingredient input:focus-visible::before,.sem-repas-choix input:focus-visible::before,.sem-course input:focus-visible::before{outline:2px solid var(--p3);outline-offset:2px}
@media (prefers-reduced-motion:reduce){.ass-ingredient input::before,.sem-repas-choix input::before,.sem-course input::before{transition:none}}
.ass-gestes{padding-left:23px;font-size:.875rem;line-height:1.65}.ass-gestes li{margin:10px 0;padding-left:4px}
.ass-pourquoi p{font-size:.875rem;line-height:1.55}.ass-precision{font-size:.8125rem;line-height:1.6;border-left:3px solid var(--p3);padding:9px 12px;background:var(--card)}
.ass-portions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:.875rem}
.ass-portions select,.sem-reglages input,.sem-reglages select,.sem-course select,.sem-choisir{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--filet-fort);border-radius:10px;min-height:44px;padding:8px;max-width:100%}
.sem-reglages{display:grid;grid-template-columns:1fr 1fr;gap:12px;font-size:.8125rem}.sem-reglages label{display:flex;flex-direction:column;gap:6px}.sem-reglages label:first-child{grid-column:1/-1}
.sem-repas-choix{display:flex;gap:10px;flex-wrap:wrap;border:0;margin:12px 0;padding:0;font-size:.875rem}.sem-repas-choix label{display:flex;align-items:center;gap:7px;min-height:44px}.sem-repas-choix legend{font-size:.75rem;color:var(--gray);margin-bottom:4px}
.sem-onglets{display:flex;gap:6px;margin:12px 0}.sem-onglets button{flex:1;min-height:44px;padding:9px 5px;border:1px solid var(--filet-fort);border-radius:10px;background:var(--card);color:var(--ink);font:inherit;font-size:.8125rem}.sem-onglets button[aria-pressed=true]{background:var(--p3t);color:#fff}
.sem-jour{padding:14px;border:1px solid var(--filet);border-radius:16px;background:var(--card);margin:12px 0}.sem-jour>h2{font-size:1.125rem;margin:0 0 8px}.sem-jour>h2::first-letter{text-transform:uppercase}.sem-repas{border-top:1px solid var(--filet);padding:9px 0}.sem-repas summary{cursor:pointer;min-height:44px;font-size:.875rem;line-height:1.6}.sem-repas summary b{display:inline-block;color:var(--p3t);min-width:44px}.sem-actions{display:flex;flex-wrap:wrap;gap:7px}.sem-actions .btn{flex:1;width:auto!important;min-width:100px;font-size:.8125rem}
.sem-course{display:grid;grid-template-columns:auto 1fr;gap:10px;border-bottom:1px solid var(--filet);padding:12px 0;align-items:start}.sem-course label{font-size:.875rem;line-height:1.55}.sem-course select{grid-column:2;width:100%;font-size:.8125rem}.sem-course.done label{color:var(--gray);text-decoration:line-through}.sem-course small{display:block;color:var(--gray);font-size:.75rem}.ass-message{font-size:.875rem;line-height:1.5;color:var(--gold-texte);min-height:22px}
#semExportTexte{width:100%;padding:10px;border:1px solid var(--filet);border-radius:10px;background:var(--card);color:var(--ink);font-size:.8125rem;line-height:1.5}
#sSemaine [hidden]{display:none!important}#sSemaine summary:focus-visible,#sSemaine button:focus-visible,#sSemaine input:focus-visible,#sSemaine select:focus-visible,.ass-carte input:focus-visible,.ass-carte select:focus-visible{outline:2px solid var(--p3);outline-offset:3px}

.ass-portions select,.sem-reglages input,.sem-reglages select,.sem-course select,.sem-choisir{font-size:1rem}

/* rc223 : les petites commandes ont une surface de contact de 44 px. */
button.wchip{min-height:44px;min-width:44px}
button[data-foyer],.jour-mom button,#assJournee button{min-height:44px;min-width:44px}
#semReglages>summary,.ass-bloc>summary{min-height:44px;padding:10px 0;cursor:pointer;box-sizing:border-box}
#bedVol{min-height:44px}
.info-i::before{content:"i"}   /* le « i » est dessiné par la feuille : pas un texte à traduire */

/* S’hydrater · présentation locale au pilier ; les styles du halo de séance restent intacts. */
/* La palette se limite aux écrans de S’hydrater, y compris ses besoins et son carnet. */
:is(#sBoire,#sMoments,#eauSheet,#sBesoin[data-pilier="boire"]){--eau-bleu:#3A6B8C;--eau-action:#3A6B8C;--eau-ligne:#d8dedb;--eau-encre:#273d48;--eau-doux:#5e6d75;--eau-fond:#e7eff0;--ink:#273d48;--gray:#5e6d75;--gold:var(--eau-bleu);--gold-plein:var(--eau-action);--gold-texte:var(--eau-bleu);--gold-soft:var(--eau-bleu);--filet:var(--eau-ligne);--filet-fort:var(--eau-bleu);--lueur:var(--eau-fond);--pilier-navigation:var(--eau-bleu);color:var(--eau-encre)}
:is(#sBoire,#sMoments,#sBesoin[data-pilier="boire"]) .opt{color:var(--eau-bleu)}
:is(#sBoire,#sMoments,#sBesoin[data-pilier="boire"]) .btn.solid{background:var(--eau-action);border-color:var(--eau-action);color:#fff}
#sBoire .seg-ctrl button{color:var(--eau-bleu);border-color:var(--eau-ligne)}
#sBoire .seg-ctrl button.sel{background:var(--eau-action);color:#fff}
#sBoire .boire-rituel .opt{color:var(--eau-bleu)}
.boire-hero{margin:8px 0 18px}.boire-hero h1{font-size:2.75rem;line-height:1.05;letter-spacing:-.04em;margin:0 0 15px}.boire-hero h1 em{color:var(--eau-bleu);font-weight:normal}.boire-intro{font-size:0.8125rem;line-height:1.75;color:var(--eau-doux);margin:0 0 15px}.boire-doctrine{font-size:0.75rem;line-height:1.65;color:var(--eau-doux);margin:0 0 16px}.boire-doctrine summary{color:var(--eau-bleu);cursor:pointer;min-height:44px;display:flex;align-items:center}.boire-doctrine summary:after{content:'+';margin-left:auto;padding-left:10px}.boire-doctrine[open] summary:after{content:'−'}.boire-doctrine summary::-webkit-details-marker{display:none}.boire-besoin{margin-bottom:18px}
#sBoire .boire-besoin .opt{padding:12px 14px;font-size:0.875rem;background:transparent;border-color:var(--eau-ligne)}
#sBoire #boireDoors{border:0;border-bottom:1px solid var(--eau-ligne);border-radius:0;background:transparent}#sBoire #boireDoors button{border:0;background:transparent;color:var(--eau-bleu);border-bottom:2px solid transparent;padding:13px 4px}#sBoire #boireDoors button.sel{color:var(--eau-bleu);border-bottom-color:var(--eau-bleu)}
.boire-surface{border:1px solid var(--eau-ligne);border-radius:24px;background:var(--card);padding:23px;margin-bottom:15px}.boire-kicker{font-size:0.6875rem;text-transform:uppercase;letter-spacing:.14em;font-weight:600;color:var(--eau-bleu);display:flex;gap:8px;align-items:center}.boire-kicker>span{margin-left:auto;font-size:0.6875rem;letter-spacing:0;text-transform:none;font-weight:400;color:var(--eau-doux)}.boire-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.boire-count{display:flex;align-items:center;justify-content:space-between;margin:23px 0 15px;gap:10px}.boire-count>div{display:flex;align-items:baseline;gap:12px}.boire-count strong{font:2.75rem/1 Georgia,serif;letter-spacing:-.06em;color:var(--eau-bleu)}.boire-count span{font-size:0.8125rem;color:var(--eau-doux)}.boire-count p{text-align:right;font-size:0.75rem;line-height:1.7;color:var(--eau-doux)}.boire-count b{font-weight:500;color:var(--eau-encre)}
#sBoire #glassRow{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 14px}#sBoire #glassRow svg{width:24px;height:34px}#sBoire #waterMsg{color:var(--eau-doux);font-size:0.75rem;min-height:20px;margin:12px 0 17px}#sBoire #waterPlus,#sBoire #waterStart{width:100%;min-height:49px;background:var(--eau-action);border-color:var(--eau-action);color:#fff;border-radius:13px;font:500 .9rem/1.4 -apple-system,sans-serif;padding:13px 12px}
#sBoire #waterPlus{display:flex;align-items:center;justify-content:center;gap:14px;min-height:78px;padding:15px 20px;border-radius:19px;box-shadow:0 5px 14px rgba(37,79,104,.14);text-align:left}
.water-plus-icon{display:grid;place-items:center;width:44px;height:46px;flex:none;border-radius:12px;background:rgba(255,255,255,.12)}
.water-plus-icon svg{width:24px;height:32px;display:block}
.water-plus-label{display:flex;flex-direction:column;gap:3px}
.water-plus-label strong{font:600 1.0625rem/1.3 -apple-system,sans-serif;letter-spacing:.01em}
.water-plus-label small{font:400 .75rem/1.4 -apple-system,sans-serif;color:rgba(255,255,255,.85)}
#sBoire #waterPlus:active{transform:translateY(1px);box-shadow:0 1px 4px rgba(37,79,104,.1)}
@media(prefers-reduced-motion:reduce){#sBoire #waterPlus{transition:none}#sBoire #waterPlus:active{transform:none}}
.boire-repere{margin-top:15px}.boire-repere>summary{cursor:pointer;color:var(--eau-bleu);font-size:0.75rem;min-height:44px;display:flex;align-items:center;justify-content:space-between}.boire-repere>summary:after{content:'+'}.boire-repere[open]>summary:after{content:'−'}.boire-repere>summary::-webkit-details-marker{display:none}.boire-repere #boireAudit{padding-top:12px}.boire-repere .pref .lab{line-height:1.6}.boire-repere .seg-ctrl button{font-size:0.75rem;padding:10px 6px;min-height:44px}.boire-repere .demo-note{font-size:0.75rem;line-height:1.7}
.boire-rituel,.boire-porte{background:linear-gradient(145deg,var(--eau-fond),var(--card))}.boire-rituel h2{font:1.875rem/1.13 Georgia,serif;letter-spacing:-.02em;margin:18px 0 13px}.boire-rituel>p{font-size:0.8125rem;line-height:1.8;color:var(--eau-doux);margin-bottom:14px}.boire-rituel .opt{width:100%;background:transparent;border:0;border-top:1px solid var(--eau-ligne);border-radius:0;padding:15px 0;font-size:0.875rem;color:var(--eau-encre)}.boire-rituel .opt small{color:var(--eau-doux);line-height:1.6}.boire-porte{padding:24px;border:1px solid var(--eau-ligne);border-radius:24px}.boire-porte .planlab{color:var(--eau-bleu)}.boire-porte .opt{border-color:var(--eau-ligne)}
.boire-collection{margin-top:35px}.boire-collection-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.boire-collection h2{font:1.875rem/1.1 Georgia,serif;letter-spacing:-.025em;margin-top:10px}.boire-collection-head>p{font-size:0.75rem;line-height:1.6;color:var(--eau-doux);border-left:1px solid var(--eau-ligne);padding-left:12px;white-space:nowrap}
.eaux-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:22px 0}.eau-carte{border:1px solid var(--eau-ligne);border-radius:19px;background:var(--card);padding:0;overflow:hidden;text-align:left;color:var(--eau-encre);display:flex;flex-direction:column;cursor:pointer;font:inherit}.eau-art{background:var(--eau-art);width:100%;display:grid;place-items:center;border-bottom:1px solid var(--eau-ligne)}.eau-art img{width:100%;height:130px;object-fit:contain}.eau-info{padding:14px 13px;display:flex;flex-direction:column;flex:1;gap:8px}.eau-saveur{font-size:0.6875rem;letter-spacing:.1em;text-transform:uppercase;font-weight:600;color:var(--eau-doux)}.eau-info h3{color:var(--eau-bleu);font:1.3125rem/1.13 Georgia,serif;letter-spacing:-.02em;min-height:47px;margin:0}.eau-delai{display:flex;align-items:center;justify-content:space-between;gap:5px;font-size:0.6875rem;line-height:1.5;color:var(--eau-doux);margin-top:auto}.eau-delai span{font-size:1.125rem;color:var(--eau-bleu)}.boire-conserver h3{font:1.375rem Georgia,serif;margin:0 0 9px}.boire-conserver p{font-size:0.75rem;line-height:1.75;color:var(--eau-doux);margin:0 0 12px}.boire-conserver summary{font-size:0.75rem;color:var(--eau-bleu);min-height:44px;padding:10px 0;cursor:pointer}.eaux-sources a{color:var(--eau-bleu);font-size:0.6875rem;text-decoration:underline;text-underline-offset:3px}
#eauSheet{z-index:1150}#eauSheet .sheet-in{max-width:560px;left:14px;right:14px;margin:auto;bottom:max(14px,env(safe-area-inset-bottom));max-height:90dvh;border:1px solid var(--eau-ligne);border-radius:25px;padding:24px;overscroll-behavior:contain}#eauSheet .eau-fermer{float:right;position:sticky;top:0;z-index:2;width:44px;height:44px;border:1px solid var(--eau-ligne);border-radius:50%;color:var(--eau-bleu);background:var(--card);font:1.375rem/1 Georgia,serif;cursor:pointer}#eauSheet h2{font:1.875rem/1.1 Georgia,serif;letter-spacing:-.025em;margin:20px 0 14px}#eauSheet .boire-kicker{padding-top:12px;font-size:0.6875rem}#eauSheet .eau-art{border:0;border-radius:18px;margin:16px 0;overflow:hidden}#eauSheet .eau-art img{height:155px}#eauSheet p{font-size:0.875rem;line-height:1.8;color:var(--eau-doux)}.eau-meta{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.eau-meta span{font-size:0.6875rem;border:1px solid var(--eau-ligne);padding:5px 8px;border-radius:6px;color:var(--eau-doux)}.eau-volumes{border-top:1px solid var(--eau-ligne);padding-top:18px;margin:20px 0 16px;display:flex;align-items:center;justify-content:space-between;gap:10px}#eauSheet .eau-volumes>p{font-size:0.75rem}.eau-choix{display:flex;gap:3px;border:1px solid var(--eau-ligne);border-radius:10px;padding:3px}.eau-choix button{min-height:44px;min-width:62px;padding:7px 10px;border:0;border-radius:7px;font:0.8125rem -apple-system,sans-serif;white-space:nowrap;color:var(--eau-bleu);background:transparent;cursor:pointer}.eau-choix button[aria-pressed=true]{background:var(--eau-action);color:#fff}.eau-ingredients{list-style:none;margin:0 0 24px;padding:0}.eau-ingredients li{border-bottom:1px solid var(--eau-ligne);padding:10px 0;font-size:0.875rem}.eau-ingredients li:before{content:'·';margin-right:8px;color:var(--eau-bleu)}#eauSheet h3{font:1.375rem Georgia,serif;margin:20px 0 12px}.eau-etapes{list-style:none;padding:0;counter-reset:eau}.eau-etapes li{counter-increment:eau;display:flex;gap:12px;margin:15px 0;font-size:0.875rem;line-height:1.75}.eau-etapes li:before{content:counter(eau,decimal-leading-zero);color:var(--eau-bleu);font:1.125rem Georgia,serif;min-width:22px;padding-top:4px}.eau-stockage{padding:16px;background:var(--eau-fond);border-radius:13px;margin:22px 0 18px}#eauSheet .eau-stockage p,#eauSheet .eau-allergies{font-size:0.75rem}.eau-stockage strong{font-size:0.8125rem;font-weight:500;display:block;margin-bottom:5px}.eau-astuce{border-left:2px solid var(--gold-texte);padding-left:13px;margin:18px 0}.eau-allergies{margin:18px 0 0}
#sBoire button:focus-visible,#sBoire summary:focus-visible,#eauSheet button:focus-visible,#eauSheet a:focus-visible{outline:3px solid var(--eau-bleu);outline-offset:3px}
@media(max-width:360px){.boire-hero h1{font-size:1.875rem}.boire-surface,.boire-porte{padding:19px}.eau-info{padding:12px 10px}.eau-info h3{font-size:1.1875rem}.eau-saveur{letter-spacing:.03em}.eau-art img{height:110px}#eauSheet .sheet-in{padding:20px}}

/* S’aérer · même famille visuelle que S’hydrater, avec le vert propre au souffle. */
:is(#sRespirer,#sBesoin[data-pilier="respirer"]){--resp-vert:#286f60;--resp-action:#286f60;--resp-encre:#28433c;--resp-doux:#5d7069;--resp-ligne:#d6e0d7;--resp-fond:#e9f0e8;--ink:var(--resp-encre);--gray:var(--resp-doux);--gold:var(--resp-vert);--gold-plein:var(--resp-action);--gold-texte:var(--resp-vert);--gold-soft:var(--resp-vert);--filet:var(--resp-ligne);--filet-fort:var(--resp-vert);--lueur:var(--resp-fond);--pilier-navigation:var(--resp-vert);color:var(--resp-encre)}
.resp-hero{margin:8px 0 22px;padding:0;text-align:left}.resp-hero h1{font:2.75rem/1.05 Georgia,serif;letter-spacing:-.04em;margin:0 0 18px}.resp-hero h1 em{color:var(--resp-vert);font-weight:normal}.resp-intro{font-size:.8125rem;line-height:1.75;color:var(--resp-doux);margin:0}
.resp-doctrine{font-size:.75rem;line-height:1.75;color:var(--resp-doux);margin:0 0 16px}.resp-doctrine summary{display:flex;align-items:center;justify-content:space-between;min-height:44px;color:var(--resp-vert);cursor:pointer}.resp-doctrine summary:after{content:'+';padding-left:12px}.resp-doctrine[open] summary:after{content:'−'}.resp-doctrine summary::-webkit-details-marker{display:none}.resp-doctrine p{padding:4px 0 12px}
#sRespirer .resp-besoin{margin-bottom:18px}#sRespirer .resp-besoin .opt{background:transparent;border-color:var(--resp-ligne);padding:12px 14px;font-size:.875rem}
:is(#sRespirer,#sBesoin[data-pilier="respirer"]) .opt{color:var(--resp-vert)}
#sRespirer #respDoors{border:0;border-bottom:1px solid var(--resp-ligne);border-radius:0;background:transparent;margin-bottom:23px}
#sRespirer #respDoors button{border:0;border-bottom:2px solid transparent;background:transparent;color:var(--resp-vert);padding:13px 4px}
#sRespirer #respDoors button.sel{border-bottom-color:var(--resp-vert);font-weight:700}
.resp-carte{border:1px solid var(--resp-ligne);border-radius:24px;background:var(--card);padding:23px;margin-bottom:15px;position:relative}
.resp-carte:nth-child(2){background:linear-gradient(145deg,var(--resp-fond),var(--card))}
#sRespirer .resp-kicker{font:600 .6875rem/1.7 -apple-system,sans-serif;text-transform:uppercase;letter-spacing:.12em;color:var(--resp-vert);margin:0 0 16px;padding-right:48px;min-height:38px;display:flex;align-items:center}
.resp-dessin{position:absolute;right:20px;top:21px;width:44px;height:40px;color:var(--resp-vert);opacity:.7;pointer-events:none}
#sRespirer .resp-carte .opt{background:transparent;border:0;border-top:1px solid var(--resp-ligne);border-radius:0;padding:17px 0 2px;font-size:1.3125rem;line-height:1.35;gap:9px 10px;box-shadow:none}
#sRespirer .resp-carte .opt small{font-size:.8125rem;color:var(--resp-doux);line-height:1.75}
#sRespirer .resp-carte .opts{gap:18px}
#sRespirer .resp-pratique{background:linear-gradient(155deg,var(--resp-fond),var(--card))}
#sRespirer .resp-pratique .resp-kicker{padding-right:0;min-height:0}
#sRespirer .resp-pratique #respMedit{border:1px solid var(--resp-action);border-radius:16px;background:var(--resp-action);color:#fff;padding:19px 16px;font-size:1.1875rem}
#sRespirer #respMedit small{color:#fff}
#sRespirer #respMedit + .pq{color:#fff;border-color:rgba(255,255,255,.65)}
#sRespirer .resp-comprendre{margin-top:23px}
#sRespirer .resp-comprendre .opt{background:transparent;border-color:var(--resp-ligne);font-size:.9375rem;padding:16px}
#sRespirer #respBack{color:var(--resp-vert)}
:is(#sRespirer,#sBesoin[data-pilier="respirer"]) button:focus-visible,#sRespirer summary:focus-visible{outline:3px solid var(--resp-vert);outline-offset:3px}
@media(max-width:360px){.resp-hero h1{font-size:1.875rem}.resp-carte{padding:19px}.resp-dessin{right:17px;top:18px}.resp-hero{margin-bottom:16px}}

/* Se nourrir · cuivre du pilier, des pratiques à l'assiette et aux menus. */
:is(#sNourrir,#sAssiette,#sSemaine,#sFaimEnvie,#sPlacard,#sBesoin[data-pilier="manger"]){--manger-cuivre:#9c5027;--manger-action:#9c5027;--manger-encre:#48382d;--manger-doux:#72665b;--manger-ligne:#e2d9cd;--manger-fond:#f3e7d8;--ink:var(--manger-encre);--gray:var(--manger-doux);--p3:var(--manger-cuivre);--gold:var(--manger-cuivre);--gold-plein:var(--manger-action);--gold-texte:var(--manger-cuivre);--gold-soft:var(--manger-cuivre);--filet:var(--manger-ligne);--filet-fort:var(--manger-cuivre);--lueur:var(--manger-fond);--pilier-navigation:var(--manger-cuivre);color:var(--manger-encre)}
:is(#sNourrir,#sAssiette,#sSemaine,#sFaimEnvie,#sPlacard,#sBesoin[data-pilier="manger"]) .opt{color:var(--manger-cuivre)}
:is(#sNourrir,#sAssiette,#sSemaine,#sFaimEnvie,#sPlacard,#sBesoin[data-pilier="manger"]) .btn.solid{background:var(--manger-action);border-color:var(--manger-action);color:#fff;border-radius:14px}
.manger-hero{margin:8px 0 22px}.manger-hero h1{font:2.75rem/1.05 Georgia,serif;letter-spacing:-.04em;margin:0 0 18px}.manger-hero h1 em{color:var(--manger-cuivre);font-weight:normal}.manger-intro{font-size:.8125rem;line-height:1.75;color:var(--manger-doux);margin:0}
.manger-doctrine{font-size:.75rem;line-height:1.75;color:var(--manger-doux);margin:0 0 16px}.manger-doctrine summary{display:flex;align-items:center;justify-content:space-between;min-height:44px;color:var(--manger-cuivre);cursor:pointer}.manger-doctrine summary:after{content:'+';padding-left:12px}.manger-doctrine[open] summary:after{content:'−'}.manger-doctrine summary::-webkit-details-marker{display:none}.manger-doctrine p{padding:4px 0 12px}
#sNourrir .manger-besoin{margin-bottom:18px}#sNourrir .manger-besoin .opt{background:transparent;border-color:var(--manger-ligne);padding:12px 14px;font-size:.875rem}
#sNourrir #nDoors{border:0;border-bottom:1px solid var(--manger-ligne);border-radius:0;background:transparent;margin-bottom:23px}
#sNourrir #nDoors button{border:0;border-bottom:2px solid transparent;background:transparent;color:var(--manger-cuivre);padding:13px 4px}
#sNourrir #nDoors button.sel{border-bottom-color:var(--manger-cuivre);font-weight:700}
.manger-carte{border:1px solid var(--manger-ligne);border-radius:24px;background:var(--card);padding:23px;margin-bottom:15px;position:relative}
#sNourrir .manger-kicker{font:600 .6875rem/1.7 -apple-system,sans-serif;text-transform:uppercase;letter-spacing:.12em;color:var(--manger-cuivre);margin:0 0 16px}
.manger-assiette{background:linear-gradient(140deg,var(--manger-fond),var(--card))}
.manger-assiette-entete{margin:0 0 16px}
#sNourrir .manger-assiette-entete .manger-kicker{margin:0}
#sNourrir #nAssiette{padding:18px 17px;background:var(--manger-action);border-color:var(--manger-action);color:#fff;border-radius:17px;font-size:1.375rem;line-height:1.3;gap:9px 10px}
#sNourrir #nAssiette small{color:#fff;line-height:1.65}#sNourrir #nAssiette + .pq{color:#fff;border-color:rgba(255,255,255,.65)}
.manger-pratiques h2{font:1.875rem/1.15 Georgia,serif;letter-spacing:-.02em;margin:0 0 14px}
.manger-pratiques>p{font-size:.8125rem;color:var(--manger-doux);line-height:1.75;margin:0 0 16px}
#sNourrir .manger-pratiques .opt,#sNourrir .manger-porte .opt{background:transparent;border:0;border-top:1px solid var(--manger-ligne);border-radius:0;padding:17px 0 2px;font-size:1.1875rem;line-height:1.4;gap:9px 10px;box-shadow:none}
#sNourrir .manger-pratiques .opt small,#sNourrir .manger-porte .opt small{font-size:.8125rem;line-height:1.75}
#sNourrir .manger-pratiques .opts,#sNourrir .manger-porte .opts{gap:18px}
#sNourrir .manger-porte .tipcard{background:var(--manger-fond);border-color:var(--manger-ligne);border-radius:18px;padding:18px}
#sNourrir .manger-comprendre{margin-top:23px}#sNourrir .manger-comprendre .opt{background:transparent;border-color:var(--manger-ligne);font-size:.9375rem;padding:16px}
:is(#sAssiette,#sSemaine)>h1{font:1.875rem/1.12 Georgia,serif;letter-spacing:-.025em;margin:10px 0 22px}
#sAssiette #assSemaine{background:var(--manger-fond);border-color:var(--manger-ligne);color:var(--manger-cuivre);border-radius:18px;padding:18px 14px;line-height:1.6}
/* rc376 · choix B de Johnatan (29 sept.) : un appui sur les menus, profil déjà ouvert, mène au geste qui manque */
#assProfilConsigne{font-size:0.9375rem;line-height:1.55;color:var(--manger-cuivre);font-weight:600;margin:4px 0 12px}
#profOk.a-toucher{box-shadow:0 0 0 3px rgba(140,109,47,.35);transition:box-shadow .3s}
#sAssiette .btn,#sSemaine .btn{border-radius:14px;line-height:1.5}
#sAssiette .seg-ctrl button{color:var(--manger-cuivre);border-color:var(--manger-ligne)}
#sAssiette .seg-ctrl button.sel,#sAssiette .jfilters button.on{background:var(--manger-action);color:#fff;border-color:var(--manger-action)}
:is(#sAssiette,#sSemaine) .ass-bloc,:is(#sAssiette,#sSemaine) .sem-jour{border-radius:22px;padding:20px;margin:15px 0}
#sSemaine .sem-onglets button{color:var(--manger-cuivre);border-color:var(--manger-ligne);min-height:48px}
#sSemaine .sem-onglets button[aria-pressed=true]{background:var(--manger-action);color:#fff;border-color:var(--manger-action)}
:is(#sAssiette,#sSemaine) :is(.ass-ingredient,.sem-repas-choix,.sem-course) input:checked::before{background-color:var(--manger-action);border-color:var(--manger-action)}
:is(#sNourrir,#sAssiette,#sSemaine,#sFaimEnvie,#sPlacard,#sBesoin[data-pilier="manger"]) button:focus-visible,#sNourrir summary:focus-visible{outline:3px solid var(--manger-cuivre);outline-offset:3px}
@media(max-width:360px){.manger-hero h1{font-size:1.875rem}.manger-carte{padding:19px}:is(#sAssiette,#sSemaine) .ass-bloc,:is(#sAssiette,#sSemaine) .sem-jour{padding:16px}}

/* Se mouvoir · terracotta, accueil et cartes ; le lecteur reste indépendant. */
:is(#sMouv,#sBesoin[data-pilier="se_mouvoir"]){--mouvoir-terre:#a34e29;--mouvoir-action:#a34e29;--mouvoir-encre:#49372f;--mouvoir-doux:#73645b;--mouvoir-ligne:#e4d7cc;--mouvoir-fond:#f3e4d9;--ink:var(--mouvoir-encre);--gray:var(--mouvoir-doux);--p4:var(--mouvoir-terre);--gold:var(--mouvoir-terre);--gold-plein:var(--mouvoir-action);--gold-texte:var(--mouvoir-terre);--gold-soft:var(--mouvoir-terre);--filet:var(--mouvoir-ligne);--filet-fort:var(--mouvoir-terre);--lueur:var(--mouvoir-fond);--pilier-navigation:var(--mouvoir-terre);color:var(--mouvoir-encre)}
.mouvoir-hero{margin:8px 0 22px}.mouvoir-hero h1{font:2.75rem/1.05 Georgia,serif;letter-spacing:-.04em;margin:0 0 18px}.mouvoir-hero h1 em{color:var(--mouvoir-terre);font-weight:normal}.mouvoir-intro{font-size:.8125rem;line-height:1.75;color:var(--mouvoir-doux);margin:0}
.mouvoir-doctrine{font-size:.75rem;line-height:1.75;color:var(--mouvoir-doux);margin:0 0 16px}.mouvoir-doctrine summary{display:flex;align-items:center;justify-content:space-between;min-height:44px;color:var(--mouvoir-terre);cursor:pointer}.mouvoir-doctrine summary:after{content:'+';padding-left:12px}.mouvoir-doctrine[open] summary:after{content:'−'}.mouvoir-doctrine summary::-webkit-details-marker{display:none}.mouvoir-doctrine p{padding:4px 0 12px}
:is(#sMouv,#sBesoin[data-pilier="se_mouvoir"]) .opt{color:var(--mouvoir-terre)}
#sMouv .mouvoir-besoin{margin-bottom:18px}#sMouv .mouvoir-besoin .opt{background:transparent;border-color:var(--mouvoir-ligne);padding:12px 14px;font-size:.875rem}
#sMouv #mouvDoors{border:0;border-bottom:1px solid var(--mouvoir-ligne);border-radius:0;background:transparent;margin-bottom:23px}
#sMouv #mouvDoors button{border:0;border-bottom:2px solid transparent;background:transparent;color:var(--mouvoir-terre);padding:13px 4px}
#sMouv #mouvDoors button.sel{border-bottom-color:var(--mouvoir-terre);font-weight:700}
.mouvoir-carte{border:1px solid var(--mouvoir-ligne);border-radius:24px;background:var(--card);padding:23px;margin-bottom:15px}
#sMouv .mouvoir-kicker{font:600 .6875rem/1.7 -apple-system,sans-serif;text-transform:uppercase;letter-spacing:.12em;color:var(--mouvoir-terre);margin:0 0 16px}
#sMouv .mouvoir-carte .opt{background:transparent;border:0;border-top:1px solid var(--mouvoir-ligne);border-radius:0;padding:17px 0 2px;font-size:1.3125rem;line-height:1.35;gap:9px 10px;box-shadow:none}
#sMouv .mouvoir-carte .opt small{font-size:.8125rem;color:var(--mouvoir-doux);line-height:1.75}
#sMouv .mouvoir-carte .opts{gap:18px}
#sMouv .mouvoir-quotidien{background:linear-gradient(155deg,var(--mouvoir-fond),var(--card))}
#sMouv #mouvEnviron{border:1px solid var(--mouvoir-action);border-radius:16px;background:var(--mouvoir-action);color:#fff;padding:19px 16px;font-size:1.1875rem}
#sMouv #mouvEnviron small{color:#fff}#sMouv #mouvEnviron + .pq{color:#fff;border-color:rgba(255,255,255,.65)}#sMouv #mouvEnviron ~ .coeur{color:#fff}#sMouv #mouvEnviron ~ .coeur[aria-pressed="true"]{--fav-coeur:#fff}
#sMouv .mouvoir-emporter{text-align:left;margin:23px 0 18px;padding:22px;border-radius:20px;background:transparent;border:1px solid var(--mouvoir-ligne);box-shadow:none}
#sMouv #emporterEtat{font-size:.8125rem;line-height:1.75;color:var(--mouvoir-doux)}#sMouv #emporterCarte .tiplab{color:var(--mouvoir-terre);font-size:.6875rem;margin-bottom:12px}
#sMouv #emporterGo{color:var(--mouvoir-terre);border-color:var(--mouvoir-ligne);border-radius:14px;min-height:48px;line-height:1.5}
#sMouv .mouvoir-ecoute{font-size:.75rem;line-height:1.8;margin:20px 0;color:var(--mouvoir-doux)}
#sMouv .mouvoir-comprendre{margin-top:23px}#sMouv .mouvoir-comprendre .opt{background:transparent;border-color:var(--mouvoir-ligne);font-size:.9375rem;padding:16px}
#sMouv #mouvBack{color:var(--mouvoir-terre)}
:is(#sMouv,#sBesoin[data-pilier="se_mouvoir"]) button:focus-visible,#sMouv summary:focus-visible{outline:3px solid var(--mouvoir-terre);outline-offset:3px}
@media(max-width:360px){.mouvoir-hero h1{font-size:1.875rem}.mouvoir-carte{padding:19px}.mouvoir-hero{margin-bottom:16px}}

/* Fin de pratique · mêmes couleurs que le pilier, sans toucher au lecteur. */
#sEnd{justify-content:flex-start}#sEnd>*{flex-shrink:0}#sEnd>.done-title{margin-top:auto}#sEnd>#againBtn{margin-bottom:auto}
:is(#sEnd,#sNight){--fin-jour:#856229;--fin-nuit:#d9bc81;--fin-action-jour:#8e6a2f;--fin-action-nuit:#785821;--fin-accent:var(--fin-jour);--fin-action:var(--fin-action-jour);--fin-bord:color-mix(in srgb,var(--fin-accent) 30%,transparent);--gold:var(--fin-accent);--gold-texte:var(--fin-accent);--gold-soft:var(--fin-accent)}
#sEnd[data-pilier="respirer"]{--fin-jour:#286f60;--fin-nuit:#a1cdb9;--fin-action-jour:#286f60;--fin-action-nuit:#315f50}
#sEnd[data-pilier="boire"]{--fin-jour:#3A6B8C;--fin-nuit:#9bc1d4;--fin-action-jour:#3A6B8C;--fin-action-nuit:#315e77}
#sEnd[data-pilier="manger"]{--fin-jour:#9c5027;--fin-nuit:#e1b28f;--fin-action-jour:#9c5027;--fin-action-nuit:#87472c}
#sEnd[data-pilier="se_mouvoir"]{--fin-jour:#a34e29;--fin-nuit:#e9b291;--fin-action-jour:#a34e29;--fin-action-nuit:#914927}
:is(#sEnd,#sNight)[data-pilier="se_reposer"]{--fin-jour:#4B4E7D;--fin-nuit:#b9b9e4;--fin-action-jour:#4B4E7D;--fin-action-nuit:#4B4E7D}
#sEnd[data-pilier="se_reproduire"]{--fin-jour:#99514f;--fin-nuit:#e3b3ad;--fin-action-jour:#A65A57;--fin-action-nuit:#894c49}
#sEnd[data-pilier="s_elever"]{--fin-jour:#856229;--fin-nuit:#d9bc81;--fin-action-jour:#8e6a2f;--fin-action-nuit:#785821}
body.night :is(#sEnd,#sNight){--fin-accent:var(--fin-nuit);--fin-action:var(--fin-action-nuit)}
:is(#sEnd,#sNight) .btn{color:var(--fin-accent);border-color:var(--fin-bord);min-height:44px;line-height:1.5}
:is(#sEnd,#sNight) .btn.solid{color:#fff;background:var(--fin-action);border-color:var(--fin-action);border-radius:15px;font-weight:500}
#sEnd #feelRow{flex-wrap:wrap;justify-content:center;max-width:100%}
#sEnd #feelRow .btn{background:transparent}
#sEnd .end-actions{display:flex;flex-direction:column;gap:8px;margin:8px 0 0;width:min(320px,100%)}
#sEnd #reproBtn{width:100%;border-radius:15px;padding:13px 18px;font-size:.9375rem;font-weight:400;background:color-mix(in srgb,var(--fin-accent) 5%,transparent);box-shadow:none}
#sEnd .end-repro-help{font-size:.75rem;line-height:1.65;color:var(--gray);margin:10px 6px 0}
#sEnd #reproNote{color:var(--fin-accent);font-size:.8125rem;line-height:1.7;margin:0}
#sEnd #reproNote:not(:empty){padding:10px 14px}
#sEnd #endJournal{border-color:transparent;border-radius:12px;font-size:.875rem;padding:10px 14px;font-weight:400;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;text-decoration-color:var(--fin-bord)}
#sEnd #againBtn{width:min(220px,100%);padding:13px 24px;font-size:.9375rem}
#sEnd #endEcho .btn{border-radius:13px}
:is(#sEnd,#sNight) .btn:focus-visible{outline:3px solid var(--fin-accent);outline-offset:3px}

/* Se reposer · indigo de la nuit, accueil et outils du soir. */
:is(#sSoir,#sDeposer,#sBesoin[data-pilier="se_reposer"]){--repos-indigo:#4B4E7D;--repos-action:#4B4E7D;--repos-encre:#38384c;--repos-doux:#676677;--repos-ligne:#dbd9e3;--repos-fond:#ece9f1;--ink:var(--repos-encre);--gray:var(--repos-doux);--p5:var(--repos-indigo);--gold:var(--repos-indigo);--gold-plein:var(--repos-action);--gold-texte:var(--repos-indigo);--gold-soft:var(--repos-indigo);--filet:var(--repos-ligne);--filet-fort:var(--repos-indigo);--lueur:var(--repos-fond);--pilier-navigation:var(--repos-indigo);color:var(--repos-encre)}
.repos-hero{margin:8px 0 22px}.repos-hero h1{font:2.75rem/1.05 Georgia,serif;letter-spacing:-.04em;margin:0 0 18px}.repos-hero h1 em{color:var(--repos-indigo);font-weight:normal}.repos-intro{font-size:.8125rem;line-height:1.75;color:var(--repos-doux);margin:0}
.repos-doctrine{font-size:.75rem;line-height:1.75;color:var(--repos-doux);margin:0 0 16px}.repos-doctrine summary{display:flex;align-items:center;justify-content:space-between;min-height:44px;color:var(--repos-indigo);cursor:pointer}.repos-doctrine summary:after{content:'+';padding-left:12px}.repos-doctrine[open] summary:after{content:'−'}.repos-doctrine summary::-webkit-details-marker{display:none}.repos-doctrine p{padding:4px 0 12px}
:is(#sSoir,#sDeposer,#sBesoin[data-pilier="se_reposer"]) .opt{color:var(--repos-indigo)}
:is(#sSoir,#sDeposer,#sBesoin[data-pilier="se_reposer"]) .btn.solid{background:var(--repos-action);border-color:var(--repos-action);color:#fff;border-radius:14px;font-weight:500}
#sSoir .repos-besoin{margin-bottom:18px}#sSoir .repos-besoin .opt{background:transparent;border-color:var(--repos-ligne);padding:12px 14px;font-size:.875rem}
#sSoir #soirMode{grid-template-columns:repeat(4,1fr)}
#sSoir #soirDoors{border:0;border-bottom:1px solid var(--repos-ligne);border-radius:0;background:transparent;margin-bottom:23px}
#sSoir #soirDoors button{border:0;border-bottom:2px solid transparent;background:transparent;color:var(--repos-indigo);padding:13px 4px}
#sSoir #soirDoors button.sel{border-bottom-color:var(--repos-indigo);font-weight:700}
.repos-carte{border:1px solid var(--repos-ligne);border-radius:24px;background:var(--card);padding:23px;margin-bottom:15px}
#sSoir .repos-kicker{font:600 .6875rem/1.7 -apple-system,sans-serif;text-transform:uppercase;letter-spacing:.12em;color:var(--repos-indigo);margin:0 0 16px}
#sSoir .repos-pratiques .opt{background:transparent;border:0;border-top:1px solid var(--repos-ligne);border-radius:0;padding:17px 0 2px;font-size:1.3125rem;line-height:1.35;gap:9px 10px;box-shadow:none}
#sSoir .repos-pratiques .opt small{font-size:.8125rem;color:var(--repos-doux);line-height:1.75}
#sSoir .repos-pratiques .opts{gap:18px}
/* rc260 : la carte mise en avant de chaque pilier doit se traiter pareil. S’aérer
   la fond dans un degrade doux qui rejoint la couleur des autres cartes ; Se reposer
   et Se mouvoir posaient un aplat teinte franc, si bien que deux cartes voisines
   n'avaient pas le meme fond et que la page semblait cassee en deux. Meme degrade
   partout. Remonte par Johnatan depuis son iPhone (« meme pb »). */
#sSoir .repos-profond{background:linear-gradient(155deg,var(--repos-fond),var(--card))}
#sSoir #soirProfond{border:1px solid var(--repos-action);border-radius:16px;background:var(--repos-action);color:#fff;padding:19px 16px;font-size:1.1875rem}
#sSoir #soirProfond small{color:#fff}#sSoir #soirProfond + .pq{color:#fff;border-color:rgba(255,255,255,.65)}
#sSoir #soirProfondChoix{margin-top:22px}
#sSoir .repos-carte .demo-note{font-size:.75rem;line-height:1.75}
/* rc257 : « L'architecte du soir » etait le seul titre en 30 px serif au milieu de
   l'ecran, quand les trois autres cartes du meme pilier s'ouvrent sur une petite
   etiquette : deux titres de tete se suivaient sur la meme page. Il prend l'etiquette
   de ses voisines, la regle de .repos-kicker suffit. */
/* rc257 : les champs respiraient deux fois plus large qu'ailleurs (20 px en haut ET en
   bas, soit 40 px entre deux champs, contre 16 sur le formulaire jumeau de S’hydrater) : ils
   flottaient separement au lieu de faire un bloc. Leurs intitules etaient a 13 px quand
   tous les autres sont a 12. On revient a la grille commune. */
#sSoir .repos-architecte .lab{color:var(--repos-doux);margin-bottom:10px}
#sSoir .repos-architecte .seg-ctrl{gap:4px}#sSoir .repos-architecte .seg-ctrl button{font-size:.75rem;line-height:1.5;padding:10px 4px;min-height:44px;border-color:var(--repos-ligne);color:var(--repos-indigo);background:transparent;white-space:normal}
#sSoir .repos-architecte .seg-ctrl button.sel{background:var(--repos-action);border-color:var(--repos-action);color:#fff}
/* Les champs horaires iOS gardent leur sélecteur natif, avec une boîte bornée
   à la largeur utile de la carte : ni largeur intrinsèque ni padding en débord. */
/* rc263 · Une fois la largeur bornée par rc262, les champs restaient hors du rythme de
   leur carte : 51 px de haut quand les groupes de boutons voisins font 46, un texte de
   18 px quand tout le reste de la carte est en 16, et trois rayons dans une même carte
   (12 pour les groupes, 13 pour les champs, 14 pour le bouton). Ils prennent la hauteur,
   le rayon et le corps de leurs voisins. Le bouton plein garde ses 14 px : c'est le
   rayon de famille des sept piliers, vérifié. */
#sSoir .timein{display:block;width:100%;min-width:0;max-width:100%;box-sizing:border-box;-webkit-appearance:none;appearance:none;border-color:var(--repos-ligne);border-radius:12px;color:var(--repos-indigo);min-height:46px;font-size:1rem;padding:11px 12px}
#sSoir .repos-architecte .btn{min-height:44px;line-height:1.5}   /* le rayon vient de la famille : 14 px sur le bouton plein des sept piliers */
#sSoir .tl{margin:22px 0 8px;padding-left:28px}#sSoir .tlit{padding-bottom:24px}#sSoir .tlit .tlh{font-size:1.3125rem}#sSoir .tlit .tll{margin-top:6px;line-height:1.5}#sSoir .tlit .tln{margin-top:6px;line-height:1.7}
#sSoir .repos-comprendre{margin-top:23px}#sSoir .repos-comprendre .opt{background:transparent;border-color:var(--repos-ligne);font-size:.9375rem;padding:16px}
#sSoir #soirBack{color:var(--repos-indigo)}#sDeposer .deposer-champ{border-color:var(--repos-ligne);border-radius:15px}
:is(#sSoir,#sDeposer,#sBesoin[data-pilier="se_reposer"]) button:focus-visible,#sSoir summary:focus-visible,#sSoir input:focus-visible{outline:3px solid var(--repos-indigo);outline-offset:3px}
@media(max-width:360px){.repos-hero h1{font-size:1.875rem}.repos-carte{padding:19px}.repos-hero{margin-bottom:16px}#sSoir #soirMode{grid-template-columns:1fr 1fr}}

/* Se reproduire · rose terre, des liens aux pratiques choisies. */
:is(#sLien,#sJournee,#sUneChose,#sConscient,#sReproduire,#sBesoin[data-pilier="se_reproduire"]){--lien-rose:#99514f;--lien-action:#A65A57;--lien-encre:#493737;--lien-doux:#746261;--lien-ligne:#e4d5d1;--lien-fond:#f2e3df;--ink:var(--lien-encre);--gray:var(--lien-doux);--p6:var(--lien-rose);--gold:var(--lien-rose);--gold-plein:var(--lien-action);--gold-texte:var(--lien-rose);--gold-soft:var(--lien-rose);--filet:var(--lien-ligne);--filet-fort:var(--lien-rose);--lueur:var(--lien-fond);--pilier-navigation:var(--lien-rose);color:var(--lien-encre)}
.lien-hero{margin:8px 0 22px}.lien-hero h1{font:2.75rem/1.05 Georgia,serif;letter-spacing:-.04em;margin:0 0 18px}.lien-hero h1 em{color:var(--lien-rose);font-weight:normal}.lien-intro{font-size:.8125rem;line-height:1.75;color:var(--lien-doux);margin:0}
.lien-doctrine{font-size:.75rem;line-height:1.75;color:var(--lien-doux);margin:0 0 16px}.lien-doctrine summary{display:flex;align-items:center;justify-content:space-between;min-height:44px;color:var(--lien-rose);cursor:pointer}.lien-doctrine summary:after{content:'+';padding-left:12px}.lien-doctrine[open] summary:after{content:'−'}.lien-doctrine summary::-webkit-details-marker{display:none}.lien-doctrine p{padding:4px 0 12px}
:is(#sLien,#sJournee,#sUneChose,#sConscient,#sReproduire,#sBesoin[data-pilier="se_reproduire"]) .opt{color:var(--lien-rose)}
:is(#sLien,#sJournee,#sUneChose,#sConscient,#sReproduire,#sBesoin[data-pilier="se_reproduire"]) .btn.solid{background:var(--lien-action);border-color:var(--lien-action);color:#fff;border-radius:14px;font-weight:500}
#sLien .lien-besoin{margin-bottom:18px}#sLien .lien-besoin .opt{background:transparent;border-color:var(--lien-ligne);padding:12px 14px;font-size:.875rem}
#sLien #lienDoors{border:0;border-bottom:1px solid var(--lien-ligne);border-radius:0;background:transparent;margin-bottom:23px}
#sLien #lienDoors button{border:0;border-bottom:2px solid transparent;background:transparent;color:var(--lien-rose);padding:13px 4px}
#sLien #lienDoors button.sel{border-bottom-color:var(--lien-rose);font-weight:700}
.lien-carte{border:1px solid var(--lien-ligne);border-radius:24px;background:var(--card);padding:23px;margin-bottom:15px}
#sLien .lien-kicker{font:600 .6875rem/1.7 -apple-system,sans-serif;text-transform:uppercase;letter-spacing:.12em;color:var(--lien-rose);margin:0 0 16px}
#sLien .lien-carte .opt{background:transparent;border:0;border-top:1px solid var(--lien-ligne);border-radius:0;padding:17px 0 2px;font-size:1.3125rem;line-height:1.35;gap:9px 10px;box-shadow:none}
#sLien .lien-carte .opt small{font-size:.8125rem;color:var(--lien-doux);line-height:1.75}
#sLien .lien-carte .opts{gap:18px}
#sLien #lienJournee{border:1px solid var(--lien-action);border-radius:16px;background:var(--lien-action);color:#fff;padding:19px 16px;font-size:1.1875rem}
#sLien #lienJournee small{color:#fff}#sLien #lienJournee + .pq{color:#fff;border-color:rgba(255,255,255,.65)}
#sLien .lien-comprendre{margin-top:23px}#sLien .lien-comprendre .opt{background:transparent;border-color:var(--lien-ligne);font-size:.9375rem;padding:16px}
#sLien #lienBack{color:var(--lien-rose)}
:is(#sJournee,#sUneChose,#sConscient,#sReproduire) .btn{border-radius:14px;min-height:48px;line-height:1.5}
:is(#sUneChose,#sConscient) .deposer-champ{border-color:var(--lien-ligne);border-radius:15px}
:is(#sJournee,#sUneChose,#sConscient,#sReproduire) .tipcard{border-color:var(--lien-ligne);border-radius:20px;padding:20px;background:var(--card)}
#sJournee .jour-list button{border-radius:15px;padding:14px;line-height:1.5}
#sJournee .jour-list button.on{border-color:var(--lien-rose);background:var(--lien-fond)}
#sJournee .jour-list button.on :is(.chk,.num){background:var(--lien-action);border-color:var(--lien-action);color:#fff}
#sJournee .jour-ajout input{border-radius:13px}#sJournee .jour-time input{border-radius:13px;color:var(--lien-rose)}
#sJournee .jour-mom button{color:var(--lien-rose);border-radius:10px;line-height:1.5;min-height:44px;white-space:normal}#sJournee .jour-mom button.on{background:var(--lien-action);border-color:var(--lien-action);color:#fff}
#sJournee .jour-dots span{background:color-mix(in srgb,var(--lien-rose) 16%,transparent)}#sJournee .jour-dots span.s1{background:var(--lien-ligne)}#sJournee .jour-dots span.s2{background:color-mix(in srgb,var(--lien-rose) 60%,transparent)}#sJournee .jour-dots :is(span.s3,span.s4){background:var(--lien-rose)}
#sJournee .jour-tl{border-color:var(--lien-ligne);padding-left:20px}#sJournee .jour-pt{padding-bottom:22px}
#sReproduire #reproListe .opt{border-color:var(--lien-ligne);border-radius:18px;padding:18px;line-height:1.5}
:is(#sLien,#sJournee,#sUneChose,#sConscient,#sReproduire,#sBesoin[data-pilier="se_reproduire"]) button:focus-visible,#sLien summary:focus-visible{outline:3px solid var(--lien-rose);outline-offset:3px}
@media(max-width:360px){.lien-hero h1{font-size:1.875rem}.lien-carte{padding:19px}.lien-hero{margin-bottom:16px}#sJournee .jour-mom{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Silence intérieur (rc360) · l'indigo de Se reposer, la scène de nuit de l'app pendant la pratique (body.night,
   posé par le module et rendu au sommaire). Aucun flou plein écran : sur iPhone c'est de la mémoire (rc267). */
#sSilence{--repos-indigo:#4B4E7D;--repos-action:#4B4E7D;--repos-encre:#38384c;--repos-doux:#676677;--repos-ligne:#dbd9e3;--repos-fond:#ece9f1;--ink:var(--repos-encre);--gray:var(--repos-doux);--p5:var(--repos-indigo);--gold:var(--repos-indigo);--si-accent:var(--repos-indigo);--si-bouton:var(--repos-action);--si-sur:#fff;padding-bottom:24px}
#sSilence:is([data-etat="pratique"],[data-etat="note"],[data-etat="pause"],[data-etat="interrompu"]){--si-accent:#cfcaef;--si-bouton:#ded9f4;--si-sur:#27243d;--ink:#f2eef6;--gray:#bcb8cd;--repos-ligne:#45445c;--gold:#cfcaef;--card:#1b1e2e;background:radial-gradient(ellipse at 50% 34%,rgba(92,88,153,.22),rgba(68,66,112,.04) 55%,transparent 72%)}   /* la scène de nuit suit l'état de l'écran ; le module pose body.night pour le reste de l'app, sans règle de nuit ici (rc271) */
#sSilence .si-repere{color:var(--si-accent)}
#sSilence:is([data-etat="pratique"],[data-etat="note"],[data-etat="pause"],[data-etat="interrompu"]) .si-repere{text-align:center;letter-spacing:.22em}
#sSilence .si-etape{display:none;flex-direction:column}
#sSilence [hidden]{display:none!important}   /* le bloc du Journal : caché tant qu'il n'y a rien à garder, malgré display:flex */
#sSilence[data-etat="intro"] .si-etape[data-etape="intro"],   /* à idle, rien : l'écran ne s'ouvre que par SilenceInterieur.ouvrir(), qui pose intro et ses gestes (comme Se délester) */
#sSilence[data-etat="pratique"] .si-etape[data-etape="pratique"],#sSilence[data-etat="pause"] .si-etape[data-etape="pratique"],
#sSilence[data-etat="note"] .si-etape[data-etape="note"],#sSilence[data-etat="interrompu"] .si-etape[data-etape="interrompu"],
#sSilence[data-etat="sommaire"] .si-etape[data-etape="sommaire"]{display:flex}
#sSilence .si-titre{font:2.5rem/1.08 Georgia,serif;letter-spacing:-.045em;margin:0 0 14px;color:var(--ink);text-wrap:balance}
#sSilence .si-titre em{color:var(--si-accent);font-weight:normal}
#sSilence .si-centre{text-align:center}
#sSilence .si-sous{font-size:.9375rem;line-height:1.7;color:var(--gray);margin:0 0 6px}
#sSilence .si-copy{font-size:.8125rem;line-height:1.8;color:var(--gray);margin:10px auto 16px;max-width:30ch}
#sSilence .si-etape[data-etape="sommaire"] .si-copy{margin-left:0;max-width:none}
#sSilence .si-lab{font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;margin:16px 0 8px;color:var(--gray)}
#sSilence .seg-ctrl button.sel{background:var(--si-accent);border-color:var(--si-accent);color:var(--si-sur)}
#sSilence .si-actions{display:flex;flex-direction:column;gap:8px;margin:14px 0 0}
#sSilence .btn.solid.si-primaire{background:var(--si-bouton);border-color:var(--si-bouton);color:var(--si-sur);border-radius:16px;font:normal 1.125rem/1.3 Georgia,serif;min-height:54px}
#sSilence .btn.solid.si-pensee{max-width:260px;width:100%;margin:0 auto;border-radius:32px;font:400 1rem/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
#sSilence .btn.si-secondaire{border-color:transparent;color:var(--gray);min-height:44px;font-size:.875rem;font-weight:400}
#sSilence .si-bas{display:flex;gap:12px;justify-content:space-between;margin-top:8px}
#sSilence .si-bas .btn{flex:1}
#sSilence .si-note{font-size:.75rem;line-height:1.65;color:var(--gray);text-align:center;margin:12px 0 0}
#sSilence .si-gauche{text-align:left}
#sSilence .si-ecoute{font-size:.6875rem;letter-spacing:.13em;text-transform:uppercase;text-align:center;color:var(--si-accent);margin:0}
#sSilence .si-statut{font-size:.6875rem;letter-spacing:.18em;text-transform:uppercase;color:var(--si-accent);text-align:center;margin:8px 0 10px}
#sSilence .si-aide{border-top:1px solid var(--repos-ligne);margin:22px 0 0;padding-top:6px;font-size:.75rem;color:var(--gray)}
#sSilence .si-aide summary{min-height:44px;display:flex;align-items:center;color:var(--si-accent);cursor:pointer}
#sSilence .si-aide p{line-height:1.7;margin:8px 0}
#sSilence .si-champ{display:block;width:100%;resize:vertical;min-height:110px;background:var(--card);color:var(--ink);border:1px solid var(--repos-ligne);border-radius:16px;padding:14px;line-height:1.6;font-family:inherit;font-size:1rem}
#sSilence[data-etat="note"] .si-champ{background:#1b1e2e;border-color:#44435b;color:#ece8f4}
#sSilence .si-totaux{display:flex;gap:20px;border-top:1px solid var(--repos-ligne);border-bottom:1px solid var(--repos-ligne);padding:22px 0;margin:20px 0 0}
#sSilence .si-totaux>div{flex:1}
#sSilence .si-totaux span{display:block;font:2rem/1.2 Georgia,serif;color:var(--si-accent);font-variant-numeric:tabular-nums}
#sSilence .si-totaux small{display:block;margin-top:6px;font-size:.75rem;color:var(--gray)}
#sSilence .si-intervalle{display:flex;justify-content:space-between;gap:16px;padding:8px 0;border-bottom:1px solid var(--repos-ligne);font-variant-numeric:tabular-nums}
#sSilence .si-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
/* L'orbe : le markup de la séance construit par SilenceInterieur.fabriquerOrbe(), texture de Se reposer, sans point.
   Ses animations sont celles de la séance, armées ici sans body.session-playing ; elles ne tournent que pendant l'écoute. */
#sSilence .si-orbe-slot{display:contents}
#sSilence .si-orbe{position:relative;flex:0 0 auto;margin:14px auto 6px;transform-origin:50% 50%}
#sSilence .si-orbe-grande{width:230px;height:230px}
#sSilence .si-orbe-petite{transform:scale(.4434782609);transform-origin:center center;margin:-60px auto -58px}   /* 230 px réduits à ~102 : la boîte garde 230, les marges la rendent */
#sSilence .si-orbe .halo{inset:7%}
#sSilence .si-orbe .ring .prog{stroke:var(--si-accent);stroke-linecap:round;transition:stroke-dashoffset 1s linear}
#sSilence .si-orbe .orb-v79-c1{animation:v79Cloud1 18s ease-in-out infinite}
#sSilence .si-orbe .orb-v79-c2{animation:v79Cloud2 23s ease-in-out infinite reverse}
#sSilence .si-orbe .orb-v79-c3{animation:v79Cloud3 29s ease-in-out infinite}
#sSilence .si-orbe .orb-v79-spiral{animation:v79Spiral 72s linear infinite}
#sSilence .si-orbe .orb-v79-glow{animation:v79Glow 15s ease-in-out infinite}
#sSilence .si-orbe .orb-v79-pearl{animation:v79Pearl 21s ease-in-out infinite}
#sSilence .si-orbe .halo{animation:orbBreath 12s cubic-bezier(.42,.05,.58,.95) infinite}
#sSilence:not([data-etat="pratique"]) .si-orbe .halo,#sSilence:not([data-etat="pratique"]) .si-orbe .orb-v79-live>*{animation-play-state:paused!important}
@media (prefers-reduced-motion:reduce){ #sSilence .si-orbe .halo,#sSilence .si-orbe .orb-v79-live>*{animation:none!important} }

/* S’élever · or doux, accueil et exercices écrits ; séances et orbes inchangés. */
:is(#sElever,#sDepend,#sEcart,#sReflex,#sDouche,#sDelester,#sBesoin[data-pilier="s_elever"]){--elever-or:#856229;--elever-action:#8e6a2f;--elever-encre:#433b2d;--elever-doux:#716756;--elever-ligne:#e3daca;--elever-fond:#f1e8d6;--ink:var(--elever-encre);--gray:var(--elever-doux);--p7:var(--elever-or);--gold:var(--elever-or);--gold-plein:var(--elever-action);--gold-texte:var(--elever-or);--gold-soft:var(--elever-or);--filet:var(--elever-ligne);--filet-fort:var(--elever-or);--lueur:var(--elever-fond);--pilier-navigation:var(--elever-or);color:var(--elever-encre)}
.elever-hero{margin:8px 0 22px}.elever-hero h1{font:2.75rem/1.05 Georgia,serif;letter-spacing:-.04em;margin:0 0 18px}.elever-hero h1 em{color:var(--elever-or);font-weight:normal}.elever-intro{font-size:.8125rem;line-height:1.75;color:var(--elever-doux);margin:0}
.elever-doctrine{font-size:.75rem;line-height:1.75;color:var(--elever-doux);margin:0 0 16px}.elever-doctrine summary{display:flex;align-items:center;justify-content:space-between;min-height:44px;color:var(--elever-or);cursor:pointer}.elever-doctrine summary:after{content:'+';padding-left:12px}.elever-doctrine[open] summary:after{content:'−'}.elever-doctrine summary::-webkit-details-marker{display:none}.elever-doctrine p{padding:4px 0 12px}
:is(#sElever,#sDepend,#sEcart,#sReflex,#sDouche,#sDelester,#sBesoin[data-pilier="s_elever"]) .opt{color:var(--elever-or)}
:is(#sElever,#sDepend,#sEcart,#sReflex,#sDouche,#sDelester,#sBesoin[data-pilier="s_elever"]) .btn.solid{background:var(--elever-action);border-color:var(--elever-action);color:#fff;border-radius:14px;font-weight:500}
#sElever .elever-besoin{margin-bottom:18px}#sElever .elever-besoin .opt{background:transparent;border-color:var(--elever-ligne);padding:12px 14px;font-size:.875rem}
#sElever #eleverDoors{border:0;border-bottom:1px solid var(--elever-ligne);border-radius:0;background:transparent;margin-bottom:23px}
#sElever #eleverDoors button{border:0;border-bottom:2px solid transparent;background:transparent;color:var(--elever-or);padding:13px 4px}
#sElever #eleverDoors button.sel{border-bottom-color:var(--elever-or);font-weight:700}
.elever-carte{border:1px solid var(--elever-ligne);border-radius:24px;background:var(--card);padding:23px;margin-bottom:15px}
/* ===== SE DÉLESTER · prototype (branche claude/se-delester-prototype). Aucun jeton nouveau :
   le papier, l'or, l'encre, la nuit, Georgia, les rayons et les courbes de l'app. Composition
   centrée, phrase entre guillemets, orbe de S'élever et son fil, tons de nuit à la descente. ===== */
.delester{justify-content:flex-start;text-align:center;transition:background-color .9s cubic-bezier(.42,.05,.58,.95)}
.delester .dl-repere{color:var(--p7t);margin:6px 0 4px;text-align:center}
.delester .dl-etape{display:none;flex-direction:column;align-items:center;flex:1 1 auto;min-height:0}
.delester[data-etat="intro"] .dl-etape[data-etape="intro"],
.delester[data-etat="writing"] .dl-etape[data-etape="writing"],
.delester[data-etat="contemplating"] .dl-etape[data-etape="contemplating"],
.delester[data-etat="selecting"] .dl-etape[data-etape="geste"],
.delester[data-etat="breathing"] .dl-etape[data-etape="geste"],
.delester[data-etat="releasing"] .dl-etape[data-etape="geste"],
.delester[data-etat="remaining"] .dl-etape[data-etape="geste"],
.delester[data-etat="integrating"] .dl-etape[data-etape="integrating"],
.delester[data-etat="done"] .dl-etape[data-etape="integrating"]{display:flex;animation:dlArrive .6s cubic-bezier(.32,.72,0,1) both}
@keyframes dlArrive{from{opacity:0;transform:translate3d(0,6px,0)}to{opacity:1;transform:none}}
/* La ligne de progression : six pas, un point allumé, en or. Invisible à l'entrée. */
.delester .dl-progres{display:none;justify-content:center;align-items:center;gap:0;margin:6px auto 2px;height:14px}
.delester .dl-progres span{width:5px;height:5px;border-radius:50%;background:rgba(var(--onglet-rgb),.28);position:relative}
.delester .dl-progres span+span{margin-left:22px}
.delester .dl-progres span+span::before{content:"";position:absolute;right:7px;top:2px;width:18px;height:1px;background:rgba(var(--onglet-rgb),.28)}
.delester .dl-progres span.dl-on{background:var(--gold);width:7px;height:7px;box-shadow:0 0 0 3px rgba(var(--onglet-rgb),.16)}
.delester:not([data-etat="idle"]):not([data-etat="intro"]) .dl-progres{display:flex}
.delester:not([data-etat="idle"]):not([data-etat="intro"]) .dl-repere{display:none}
/* L'orbe de S'élever et son fil */
.delester .dl-orbe{position:relative;flex:0 0 auto;margin:18px auto 6px;transform-origin:50% 50%}
.delester .dl-orbe-grande{width:170px;height:170px;margin-top:26px}
.delester .dl-orbe-petite{width:96px;height:96px;margin-top:22px}
/* L'orbe du souffle : 120 px, centrée dans l'espace libre sous la phrase (« qu'on la voie bien »), gonflée ×1,35 à l'inspiration. */
.delester .dl-apres-souffle .dl-orbe{margin:auto 0;min-height:120px;--dl-gonfle:1.35}   /* l'amplitude du gonflement vit ici, la CSS la règle par hauteur d'écran */
.delester .dl-apres-souffle .dl-fil{display:none}
.delester .dl-apres-souffle{justify-content:center;min-height:0;padding-top:28px}   /* gonflée, l'orbe ne touche jamais la phrase */
/* Petites hauteurs (320×568 : 150 px libres sous la phrase, mesurés) : orbe 84 px, marges serrées, rien ne se chevauche. */
@media (max-height:640px){ .delester .dl-apres-souffle{padding-top:12px} .delester .dl-apres-souffle .dl-orbe{width:84px;height:84px;min-height:84px;--dl-gonfle:1.2} .delester .dl-apres-souffle .dl-legende-bas{padding-top:14px;margin-bottom:6px} }   /* 14 px : l'orbe gonflée (+8,4 px) ne touche pas la légende, mesuré */
.delester .dl-orbe-moyenne{width:120px;height:120px;margin-top:14px}
/* L'orbe des méditations, exactement la même (Johnatan, 21 sept. au soir) : le markup de la séance (base +
   trois nuages + spirale, lueur, perle, reflet, lisière) dans .halo, l'anneau d'or de la séance autour, la couleur et
   la texture de S'élever. Construite à l'ouverture par fabriquerOrbe(), à nos tailles. Ses animations sont celles de
   la séance (v79Cloud1..3, v79Spiral, v79Glow, v79Pearl, orbBreath), armées ici sans body.session-playing. */
.delester .dl-orbe-slot{display:contents}   /* l'emplacement s'efface : l'orbe est l'enfant direct de la colonne */
.delester .dl-orbe .halo{inset:7%}
.delester .dl-orbe .orb-v79-c1{animation:v79Cloud1 18s ease-in-out infinite}
.delester .dl-orbe .orb-v79-c2{animation:v79Cloud2 23s ease-in-out infinite reverse}
.delester .dl-orbe .orb-v79-c3{animation:v79Cloud3 29s ease-in-out infinite}
.delester .dl-orbe .orb-v79-spiral{animation:v79Spiral 72s linear infinite}
.delester .dl-orbe .orb-v79-glow{animation:v79Glow 15s ease-in-out infinite}
.delester .dl-orbe .orb-v79-pearl{animation:v79Pearl 21s ease-in-out infinite}
.delester .dl-orbe .halo{animation:orbBreath 12s cubic-bezier(.42,.05,.58,.95) infinite}
.delester .dl-apres-souffle .dl-orbe .halo{animation:none}   /* pendant le souffle, c'est l'orbe entière qui gonfle et se rend */
@media (prefers-reduced-motion:reduce){ .delester .dl-orbe .halo{animation:none} }
.delester .dl-fil{position:absolute;left:50%;top:calc(100% - 4px);width:1px;height:58px;transform:translateX(-.5px);background:repeating-linear-gradient(to bottom,var(--gold) 0 2px,transparent 2px 7px);opacity:.7}
.delester .dl-fil::after{content:"";position:absolute;left:-2px;bottom:-4px;width:5px;height:5px;border-radius:50%;background:var(--gold)}
.delester .dl-orbe-petite .dl-fil{height:0;display:none}
.delester .dl-orbe-grande{margin-bottom:64px}.delester .dl-orbe-moyenne{margin-bottom:64px}
/* Titres et textes, centrés, en Georgia */
.delester .dl-titre{font:2.375rem/1.1 Georgia,serif;letter-spacing:-.02em;margin:46px 0 12px}
.delester .dl-sous{font-family:Georgia,serif;font-size:1rem;line-height:1.5;color:var(--elever-doux);margin:0 18px;max-width:280px}
.delester .dl-question{font:1.375rem/1.35 Georgia,serif;margin:38px 12px 22px;max-width:320px}
.delester .dl-legende{font-family:Georgia,serif;font-size:1rem;color:var(--elever-doux);margin:38px 0 22px}
.delester .dl-legende-bas{margin:auto 0 18px;padding-top:24px;min-height:1.5em}   /* sa place est réservée : l'orbe ne bouge pas quand le texte arrive */
.delester .dl-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);margin:0}
/* Sous le paragraphe figé : l'orbe pendant le souffle et la descente, puis la question et les gestes.
   Le paragraphe, lui, ne bouge pas d'un pixel entre le souffle et ce qui reste (mesuré au banc). */
.delester .dl-haut{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;width:100%;flex:0 0 auto}
.delester .dl-haut .dl-question,.delester .dl-haut .dl-legende{display:none}
.delester[data-etat="selecting"] .dl-question-choix{display:block}
.delester[data-etat="breathing"] #dlSouffle,.delester[data-etat="releasing"] #dlSouffle{display:block;animation:dlArrive .6s cubic-bezier(.32,.72,0,1) both}
.delester .dl-apres-choix,.delester .dl-apres-souffle,.delester .dl-apres-reste{display:none;flex-direction:column;align-items:center;width:100%;flex:1 0 auto;min-height:0}   /* jamais écrasé : sous un texte long, l'écran défile (mesuré : le bloc tombait à 12 px) */
.delester[data-etat="selecting"] .dl-apres-choix{display:flex}
.delester[data-etat="breathing"] .dl-apres-souffle,.delester[data-etat="releasing"] .dl-apres-souffle{display:flex;animation:dlArrive .6s cubic-bezier(.32,.72,0,1) both}
.delester[data-etat="remaining"] .dl-apres-reste{display:flex;animation:dlArrive .6s cubic-bezier(.32,.72,0,1) both}
.delester .dl-question-reste{margin-top:30px}
.delester .dl-reformuler{margin:6px 16px 0;font-size:.9375rem}
.delester[data-etat="remaining"] .dl-reformuler.dl-vu{display:none}
.delester:not([data-etat="selecting"]) .dl-mots{pointer-events:none}
.delester .dl-saisie{width:100%;max-width:340px;border:1px solid var(--filet);border-radius:14px;padding:16px;font-family:-apple-system,sans-serif;font-size:.9375rem;line-height:1.55;background:var(--card);color:var(--ink);resize:none;min-height:150px;text-align:left}
.delester .dl-saisie::placeholder{color:var(--gray);opacity:.7}
.delester .dl-saisie:focus{outline:2px solid var(--gold);outline-offset:2px}
.delester .dl-sobre{min-height:88px;margin-top:12px}
.delester .dl-note{margin-top:14px;max-width:300px}
/* La phrase devient matière : entre guillemets, centrée, en Georgia, jamais réduite jusqu'à l'illisible. */
.delester .dl-phrase{font-family:Georgia,serif;font-size:1.375rem;line-height:1.5;letter-spacing:-.005em;color:var(--ink);margin:0 4px;max-width:340px;white-space:pre-wrap;overflow-wrap:break-word;flex:0 0 auto}
/* Un texte long ne rétrécit pas : 22 px partout, et l'écran défile si la phrase le demande (règle de la passe du 21 sept.). */
.delester .dl-phrase.dl-longue{margin:0 4px}
.delester .dl-citation::before{content:"« "}.delester .dl-citation::after{content:" »"}
.delester .dl-citation[lang="en"]::before{content:"“ "}.delester .dl-citation[lang="en"]::after{content:" ”"}
/* Les mots : des cibles de 44 px de haut (ligne + marges), la ligne intacte. Pas de sélection système. */
.delester .dl-mots{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;line-height:2}
.delester .dl-mot{display:inline;padding:7px 3px;margin:0 -3px;border-radius:7px;cursor:pointer;transition:background-color .28s cubic-bezier(.32,.72,0,1),color .28s,box-shadow .5s;-webkit-tap-highlight-color:transparent;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.delester .dl-mot:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.delester .dl-mot[aria-pressed="true"]{background:rgba(var(--onglet-rgb),.22);color:var(--ink);box-shadow:0 0 0 1px rgba(var(--onglet-rgb),.35)}
.delester .dl-mot.dl-parti{visibility:hidden}
/* Les boutons : ceux de l'app, avec la flèche de la maquette pour le geste principal. */
.delester .dl-actions{margin-top:auto;padding-top:22px;display:flex;flex-direction:column;gap:10px;width:100%;max-width:340px;align-items:stretch}
.delester .dl-primaire{display:flex;align-items:center;justify-content:center;gap:10px;position:relative}
.delester .dl-primaire::after{content:"→";position:absolute;right:20px;font-weight:normal;opacity:.9}
/* La flèche dit « on avance » : elle n'a rien à faire sur le dernier geste (Johnatan, rc327 : « une flèche qui s'est glissée à la fin »). */
.delester #dlGarder::after,.delester .dl-apres-reste .dl-primaire::after{content:none}
/* Après s'être délesté : les trois gestes en fondu nuit → or, à égalité, lisibles d'un coup (Johnatan, rc327 :
   « les trois options sont peu distinguées entre elles »). Blanc sur nuit et sur or ≥ 4,5:1. */
#sDelester .dl-apres-reste .dl-actions .btn,#sDelester .dl-apres-reste .dl-actions .btn.solid{border:0;border-radius:16px;background:linear-gradient(135deg,var(--night) 0%,#3b2e15 52%,var(--elever-or) 100%);color:#fff;padding:16px 18px;font-size:1.0625rem;font-weight:500;min-height:52px}
#sDelester .dl-apres-reste .dl-actions .btn:disabled{opacity:.45}
.delester .dl-secondaire{border-color:transparent;color:var(--gray);padding-top:8px;padding-bottom:8px}
.delester .dl-secondaire-cadre{border-color:var(--filet);color:var(--gold-texte);background:var(--card)}
.delester .dl-retour{display:none}
/* La descente dans les tons de nuit : body.night est la nuit de l'app, rien de neuf. */
body.night .delester .dl-phrase{color:var(--night-ink)}
body.night .delester .dl-legende{color:rgba(216,205,186,.9)}
body.night .delester .dl-mot[aria-pressed="true"]{background:rgba(var(--onglet-rgb),.16);color:var(--night-ink);box-shadow:0 0 0 1px rgba(var(--onglet-rgb),.55),0 0 18px rgba(var(--onglet-rgb),.28)}
body.night .delester .dl-fil{opacity:.45}
.dl-clone{position:fixed;left:0;top:0;margin:0;pointer-events:none;z-index:40;font-family:Georgia,serif;color:var(--ink);background:rgba(var(--onglet-rgb),.22);box-shadow:0 0 0 1px rgba(var(--onglet-rgb),.35);border-radius:7px;will-change:transform,opacity;white-space:nowrap;text-align:center;line-height:normal}
body.night .dl-clone{color:var(--night-ink);background:rgba(var(--onglet-rgb),.16);box-shadow:0 0 0 1px rgba(var(--onglet-rgb),.5),0 0 18px rgba(var(--onglet-rgb),.28)}
/* L'intégration : le rythme d'apparition */
.delester .dl-integration{margin-top:6px;flex:0 0 auto}
.delester .dl-verite{opacity:0;transition:opacity 1.8s cubic-bezier(.42,.05,.58,.95);font-size:1.375rem;max-width:300px}
.delester .dl-verite2{opacity:0;transition:opacity 1.8s cubic-bezier(.42,.05,.58,.95)}
.delester .dl-verite2 p{font-size:.8125rem;line-height:1.6;color:var(--elever-doux);margin:8px 12px 0}
.delester[data-etat="integrating"] .dl-verite.dl-vu,.delester[data-etat="integrating"] .dl-verite2.dl-vu,.delester[data-etat="done"] .dl-verite,.delester[data-etat="done"] .dl-verite2{opacity:1}
.delester #dlSortie{opacity:0;transition:opacity 1s;pointer-events:none}
.delester #dlSortie.dl-vu{opacity:1;pointer-events:auto}
@media (prefers-reduced-motion:reduce){ .delester .dl-etape{animation:none!important} }

#sElever .elever-kicker{font:600 .6875rem/1.7 -apple-system,sans-serif;text-transform:uppercase;letter-spacing:.12em;color:var(--elever-or);margin:0 0 16px}
#sElever .elever-principe{font-size:.875rem;line-height:1.55;color:var(--elever-doux);margin:-6px 0 14px}
/* Le bouton de Se délester : un fondu de la nuit vers l'or de S'élever, comme l'expérience elle-même (la descente se vit
   dans la nuit, l'orbe est d'or). Demandé par Johnatan le 21 sept. au soir ; blanc sur nuit et sur or ≥ 4,5:1. */
#sElever #eleverDelester{border:0;border-radius:16px;background:linear-gradient(135deg,var(--night) 0%,#3b2e15 52%,var(--elever-or) 100%);color:#fff;padding:19px 16px;font-size:1.1875rem}
#sElever #eleverDelester small{color:rgba(255,255,255,.84)}#sElever #eleverDelester + .pq{color:#fff;border-color:rgba(255,255,255,.65);background:#3b2e15!important}   /* sur le dégradé, le « ? » garde un fond sombre : blanc lisible */
#sElever .elever-carte .opt{background:transparent;border:0;border-top:1px solid var(--elever-ligne);border-radius:0;padding:17px 0 2px;font-size:1.3125rem;line-height:1.35;gap:9px 10px;box-shadow:none}
#sElever .elever-carte .opt small{font-size:.8125rem;color:var(--elever-doux);line-height:1.75}
#sElever .elever-carte .opts{gap:18px}
#sElever #eleverDepend{border:1px solid var(--elever-action);border-radius:16px;background:var(--elever-action);color:#fff;padding:19px 16px;font-size:1.1875rem}
#sElever #eleverDepend small{color:#fff}#sElever #eleverDepend + .pq{color:#fff;border-color:rgba(255,255,255,.65)}
#sElever .elever-comprendre{margin-top:23px}#sElever .elever-comprendre .opt{background:transparent;border-color:var(--elever-ligne);font-size:.9375rem;padding:16px}
#sElever #eleverBack{color:var(--elever-or)}
#sElever .elever-carte:first-child{background:linear-gradient(145deg,var(--elever-fond),var(--card))}
:is(#sDepend,#sEcart,#sReflex,#sDouche) .btn{border-radius:14px;min-height:48px;line-height:1.5}
:is(#sDepend,#sEcart) .deposer-champ{border-color:var(--elever-ligne);border-radius:15px}
#sReflex #reflexA{border-color:var(--elever-ligne);border-radius:15px}
#reflexA{border-radius:12px}
:is(#sDepend,#sEcart) .tipcard{border-color:var(--elever-ligne);border-radius:20px;padding:20px;background:var(--card)}
:is(#sElever,#sDepend,#sEcart,#sReflex,#sDouche,#sDelester,#sBesoin[data-pilier="s_elever"]) :is(button,textarea):focus-visible,#sElever summary:focus-visible{outline:3px solid var(--elever-or);outline-offset:3px}
@media(max-width:360px){.elever-hero h1{font-size:1.875rem}.elever-carte{padding:19px}.elever-hero{margin-bottom:16px}}


/* Prototype : lecture du souffle, limitée à la cohérence de trois minutes. */
#sSession.cc-visuel{justify-content:flex-start}
#sSession.cc-visuel>*{flex-shrink:0}
#sSession.cc-visuel #ccGuide{position:relative;width:100%;border:1px solid #d6e0d7;border-radius:22px;background:linear-gradient(155deg,#e9f0e8,var(--card));padding:14px 18px;margin:8px auto 12px;max-width:360px;color:#28433c}
#ccPhase{font-size:1.1875rem}
#sSession.cc-visuel #ccPhase{font:normal 1.625rem/1.25 Georgia,serif;color:#286f60;margin:5px 0}
.cc-reperes-entete{padding-right:48px;text-align:left}
.cc-reperes-titre{font:600 .6875rem/1.5 -apple-system,sans-serif;letter-spacing:.10em;text-transform:uppercase;color:#286f60}
#ccTexteGrand{position:absolute;top:8px;right:10px;min-width:44px;min-height:44px;border:1px solid #d6e0d7;border-radius:50%;background:var(--card);color:#286f60;font:600 1rem -apple-system,sans-serif;cursor:pointer}
#ccTexteGrand[aria-pressed="true"]{background:#286f60;color:#fff}
#ccTexteGrand::before{content:"Aa"}
#ccCompte{font:500 .875rem/1.5 -apple-system,sans-serif;color:#465e54;min-height:1.5em;font-variant-numeric:tabular-nums}
#sSession.cc-visuel #ccLecture{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 12px;padding-top:5px;text-align:left}
#ccEntete[hidden],#ccEtapes[hidden]{display:none}
#ccEtapes{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px;font:400 .8125rem/1.5 -apple-system,sans-serif}
#ccEtapes span{border-bottom:2px solid #b5c5ba;padding:5px 2px;color:#465e54}
#ccEtapes [aria-current="step"]{border-color:#286f60;font-weight:700;color:#286f60}
#sSession.cc-visuel #subtitle{opacity:1;transition:none;max-width:36ch;line-height:1.75;text-align:center}
/* rc275 · Pas de dérogation à « Écran calme ». Le réglage promet « il ne reste que la sphère » :
   une pratique n'a pas à défaire un choix que la personne a posé elle-même, même pour son bien. Qui a
   besoin des mots ne choisit pas Écran calme, et les mots restent le défaut. La carte du souffle, elle,
   reste visible : elle est un guide de respiration, pas les mots de la séance, et le guide de la
   cohérence s'affichait déjà ainsi avant ce lot. */
#sSession.cc-visuel #subtitle:empty{min-height:0;margin:0!important}
#sSession.cc-visuel.cc-grand #subtitle{font-size:1.3125rem!important}
#sSession.cc-visuel.cc-grand #ccPhase{font-size:1.875rem!important}
#sSession.cc-visuel.cc-grand #ccCompte,#sSession.cc-visuel.cc-grand #ccEtapes{font-size:1rem}
#sSession.cc-visuel .playbtns{flex-wrap:wrap}
#sSession.cc-visuel #pauseBtn{border-color:#286f60;color:#286f60}

/* rc446 · Mon espace · les clés d'accès de cet espace */
.cle-liste{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.cle-liste li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 6px 6px 12px;border:1px solid var(--filet);border-radius:12px;font-size:0.875rem;color:var(--ink)}
.cle-liste li span{min-width:0;overflow-wrap:anywhere}
.cle-liste .cle-retirer{min-height:44px;padding:0 14px;font-size:0.8125rem;color:var(--gold-texte)}
/* rc445 · Mes favoris : les cartes lisibles (variante B de Codex, choisie par Johnatan le 5 oct.), le cœur, le petit message */
.fav-tete{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:0 0 10px}
.fav-tete h2{margin:0}
.fav-modifier{min-height:44px;min-width:44px;padding:0 4px;background:none;border:0;cursor:pointer;font-size:.8125rem;color:var(--gold-texte);text-decoration:underline;text-underline-offset:3px}
.fav-cartes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.fav-carte{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-width:0;min-height:112px;padding:14px 12px;border:1px solid var(--filet);border-top:2px solid var(--fav,var(--gold));border-radius:14px;background:var(--card);color:var(--ink);text-align:left;cursor:pointer;font-family:inherit}
.fav-carte:focus-visible,.fav-modifier:focus-visible,.fav-bouge:focus-visible,.fav-retirer:focus-visible,.coeur:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.fav-symbole{font:1.375rem/1 Georgia,serif;color:var(--fav,var(--gold-texte))}
.fav-carte strong{font-weight:400;font-size:1rem;line-height:1.3;overflow-wrap:anywhere}
.fav-carte small{font-size:.75rem;color:var(--gray)}
@media (max-width:330px){.fav-cartes{grid-template-columns:1fr}}
.fav-ordre{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.fav-ordre li{display:flex;align-items:center;gap:6px;padding:4px 4px 4px 12px;border:1px solid var(--filet);border-radius:12px;background:var(--card)}
.fav-ordre li span{margin-right:auto;min-width:0;overflow-wrap:anywhere;font-size:.9375rem}
.fav-bouge,.fav-retirer{min-height:44px;min-width:44px;padding:0 10px;border:1px solid var(--filet);border-radius:10px;background:transparent;color:var(--ink);cursor:pointer;font-size:.875rem}
.fav-bouge:disabled{opacity:.35;cursor:default}
.fav-retirer{color:var(--gold-texte)}
.fav-aide{margin:10px 0 0;font-size:.8125rem;color:var(--gray)}
.pq-wrap>.coeur{position:absolute;right:62px;bottom:12px;margin:0;padding:0;z-index:1;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;font:1.125rem/1 Georgia,serif;color:var(--gold-texte);cursor:pointer;min-height:0!important;min-width:0!important}
.pq-wrap>.coeur::before{content:"";position:absolute;inset:-11px;border-radius:50%}
.pq-wrap>.coeur[aria-pressed="true"]{color:var(--fav-coeur,#B4473F)}
.fav-toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom,0px));transform:translate(-50%,8px);max-width:min(92vw,420px);padding:11px 16px;border-radius:14px;background:var(--ink);color:var(--paper);font-size:.875rem;line-height:1.45;text-align:center;opacity:0;pointer-events:none;z-index:60;transition:opacity .2s,transform .2s}
.fav-toast.on{opacity:1;transform:translate(-50%,0)}
.fav-toast.lu.on{opacity:0}
@media (prefers-reduced-motion:reduce){.fav-toast{transition:none}}
/* ═══ rc454 · ALLURE-01 « Natif, épuré » (Codex, 8 oct. 2026 ; direction C choisie par Johnatan, surcharge validée telle quelle
   le 8 oct. sur la page de choix 6usS6hxLA3GsmDPBDBzr2X ; SHA-256 de la source cd053c70…). Placée en dernier : elle surcharge. ═══ */
/* ALLURE-01 C « Natif, épuré » : surcharge de proposition rc452.
   Agostini Accompagnements uniquement. Aucun HTML, aucune logique produit.
   Les !important neutralisent les nombreuses déclarations inline existantes.
   L'intro, le logo, les icônes, l'orbe et les anneaux ne sont jamais redessinés. */
:root {
  --allure-interface: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", Roboto, Arial, sans-serif;
  --allure-voix: Georgia, "Times New Roman", serif;
  --allure-xs: .8125rem;
  --allure-sm: .9375rem;
  --allure-md: 1.0625rem;
  --allure-lg: 1.3125rem;
  --allure-xl: 2rem;
  --allure-rayon: .75rem;
}
/* 1. Interface. Le réglage de taille du navigateur reste l'autorité : pas de html à 16px,
   pas de text-size-adjust:none. L'adaptation Dynamic Type native est à recetter dans WKWebView. */
body {font-family:var(--allure-interface);font-size:var(--allure-sm);line-height:1.55;background-image:none!important}
body :where(main, .tabbar, .boirechip, .sheet, #tipPop) :where(button,input,textarea,select,p,div,span,small,summary,label,h2,h3,h4,a,em,b,strong):not(#sDelester):not(#sDelester *){
  font-family:var(--allure-interface)!important;
}
body :is(main,.sheet,#tipPop) :is(button,input,textarea,select,p,div,span,small,summary,label,h2,h3,h4,a,em,b,strong):not(#sDelester):not(#sDelester *){
  letter-spacing:normal!important;text-transform:none!important;
}
body :is(main,.sheet,#tipPop) em:not(#sDelester):not(#sDelester *){font-style:normal!important}
/* Une citation réellement marquée, ou le journal cité, conserve l'italique. */
body :is(main,.sheet) :is(blockquote, q, cite, blockquote *, q *, cite *):not(#sDelester):not(#sDelester *), body #echoHomeTexte:not(#sDelester):not(#sDelester *){font-style:italic!important}
body .brand:not(#sDelester):not(#sDelester *){font-family:var(--allure-voix)}
body .brand small:not(#sDelester):not(#sDelester *){font-family:var(--allure-interface)}
body main :where(*:not(svg):not(svg *):not(.halo):not(.halo *):not(.halo-wrap):not(.halo-wrap *):not(.pq):not(.coeur):not(.retour-haut):not(.fav-symbole)):not(#sDelester):not(#sDelester *){font-size:var(--allure-sm)!important}
body h1:not(#sDelester):not(#sDelester *), body h1 *:not(#sDelester):not(#sDelester *), body .pq-wrap > .opt:not(#sDelester):not(#sDelester *), body .home-chosen-list .opt:not(#sDelester):not(#sDelester *){
  font-family:var(--allure-voix)!important;font-style:normal!important;font-weight:400!important;
}
body h1:not(#sDelester):not(#sDelester *){font-size:var(--allure-xl)!important;line-height:1.18!important;letter-spacing:normal!important}
body h1 *:not(#sDelester):not(#sDelester *){font-size:inherit!important;line-height:inherit!important}
body .pq-wrap > .opt:not(#sDelester):not(#sDelester *), body .home-chosen-list .opt:not(#sDelester):not(#sDelester *){font-size:var(--allure-md)!important;line-height:1.4!important}
body .pq-wrap > .opt small:not(#sDelester):not(#sDelester *), body .home-chosen-list .opt small:not(#sDelester):not(#sDelester *){font-family:var(--allure-interface)!important;font-size:var(--allure-xs)!important;font-weight:400!important;line-height:1.55!important}
body :is(.btn,.seg-ctrl button,.tabbar button):not(#sDelester):not(#sDelester *){font-size:var(--allure-sm)!important;line-height:1.4!important;font-weight:600!important}
body :is(input,textarea,select):not(#sDelester):not(#sDelester *){font-size:var(--allure-md)!important;line-height:1.5!important}
body :is(.demo-note,.micro,.done-sub,.end-repro-help,.home-signaux small,.home-guide-note,.seg-label,.session-time):not(#sDelester):not(#sDelester *){font-size:var(--allure-xs)!important;line-height:1.55!important}
body :is(.done-title,.today-entry .t,.home-guide-title,.dedans-titre,.sante-tuile strong):not(#sDelester):not(#sDelester *){font-size:var(--allure-lg)!important;line-height:1.35!important}
body :is(.tiplab,.q-eyebrow,.planlab,.pref .lab,.session-int,.intens .ilab,.jour-pt .lab,.dedans-groupe,.mouv-variante,.semaine-geste b,.semaine-rappel-titre,.today-entry .k,.sante-tuile small,[class^="diag-"] .k,[class*=" diag-"] .k):not(#sDelester):not(#sDelester *){
  font-family:var(--allure-interface)!important;font-size:var(--allure-xs)!important;font-weight:600!important;
  line-height:1.5!important;letter-spacing:normal!important;text-transform:none!important;
}
body .tiplab:not(#sDelester):not(#sDelester *){padding-bottom:0!important}
body .tiplab:not(#sDelester):not(#sDelester *)::after{content:none!important;display:none!important}
/* 2. Fond uni, sans grain ni ombre. Séance/orbe et intro explicitement exclus. */
#paperFx:not(#sDelester):not(#sDelester *){display:none!important}
body :is(header,main,.tabbar,.sheet,#tipPop) *:not(#sSession *):not(#sNight *):not(.halo):not(.halo *):not(.halo-wrap):not(.halo-wrap *):not([class*="orb-"]):not(#sDelester):not(#sDelester *){box-shadow:none!important}
body :is(main,.sheet,#tipPop) *:not(#sSession *):not(#sNight *):not(.halo):not(.halo *):not(.halo-wrap):not(.halo-wrap *):not([class*="orb-"]):not(svg *):not(#sDelester):not(#sDelester *){background-image:none!important}
body :is(.btn,.opt,.tipcard,.profil-card,.profil-inset,.today-entry,.today-choice-intro,.home-guide,.sheet,.sante-tuile,.dedans-carte,.dedans-lecture,.seg-ctrl,input,textarea,select):not(#sDelester):not(#sDelester *){
  border-radius:var(--allure-rayon)!important;box-shadow:none!important;
}
/* Les boutons purement textuels n'ont pas de capsule. Les groupes segmentés gardent leur forme de groupe. */
body :is(.retour,.home-secondary,#endJournal,#profilLogout):not(#sDelester):not(#sDelester *){border-radius:0!important}
body .seg-ctrl button:not(#sDelester):not(#sDelester *){border-radius:0!important}
/* 3. Carte = une action/pratique/séance/abonnement. Ligne = information ou navigation secondaire.
   Ne pas viser toutes les .opt : les pratiques dans .pq-wrap doivent garder leur carte. */
body :is(.home-signaux,.home-widgets-ligne,.today-choice-intro,#homeCle,#healthIntro .tipcard,#healthPanel .tipcard,#healthReperes,
  #sProfil .profil-inset,#sProfil .cardlink,#sProfil details.grp .opt,
  #sProfil #sessionCard,#sProfil #partCarte,#sProfil #apProfilCarte,#mapDepth,#mapLeviers,
  .resp-carte,.manger-carte,.mouvoir-carte,.repos-carte,.lien-carte,.elever-carte,
  #respBesoinCarte,#nBesoinCarte,#mouvBesoinCarte,#soirBesoinCarte,#lienBesoinCarte,#eleverBesoinCarte):not(#sDelester):not(#sDelester *){
  border:0!important;border-top:1px solid var(--filet)!important;border-radius:0!important;
  background:transparent!important;box-shadow:none!important;
  padding-left:0!important;padding-right:0!important;
}
body :is(.resp-carte,.manger-carte,.mouvoir-carte,.repos-carte,.lien-carte,.elever-carte):not(#sDelester):not(#sDelester *){padding-top:1rem!important;padding-bottom:1rem!important}
body :is(#homeCle,#healthIntro .tipcard,#healthPanel .tipcard,#healthReperes,#sProfil .profil-inset,#sProfil #sessionCard,#sProfil #partCarte,#sProfil #apProfilCarte):not(#sDelester):not(#sDelester *){padding-top:1rem!important;padding-bottom:1rem!important}
body .pq-wrap > .opt:not(#sDelester):not(#sDelester *), body .home-chosen-list .opt:not(#sDelester):not(#sDelester *){
  background:var(--card)!important;border:1px solid var(--filet)!important;border-radius:var(--allure-rayon)!important;
}
body :is(#aboCard,.abo-diag,.today-entry,#recCard .tipcard,.home-guide):not(#sDelester):not(#sDelester *){border:1px solid var(--filet)!important;border-radius:var(--allure-rayon)!important;background:var(--card)!important}
/* 4. Contraste : réutilisation exclusive des encres déjà présentes.
   L'or du logo n'est jamais foncé ; seuls les textes/boutons emploient l'or-texte/plein existant. */
body .btn.solid:not(#sDelester):not(#sDelester *){background:var(--gold-plein,var(--gold-texte))!important;border-color:var(--gold-plein,var(--gold-texte))!important;color:#fff!important}
body :is(.session-int,.seg-label,.session-time):not(#sDelester):not(#sDelester *){color:var(--gray)!important}
body.night :is(main > .screen:not(#sDelester),.sheet,#tipPop,#tabbar) {--card:var(--pilule);--gray:var(--night-ink);--ink:var(--night-ink);--gold-texte:var(--gold-soft)}
body.night :is(.tiplab,.q-eyebrow,.planlab,.pref .lab,.session-int,.intens .ilab,.jour-pt .lab,.dedans-groupe,.mouv-variante,.semaine-geste b,.semaine-rappel-titre,.today-entry .k,.sante-tuile small,[class^="diag-"] .k,[class*=" diag-"] .k):not(#sDelester):not(#sDelester *){color:var(--night-ink)!important}
body.night :is(.opt,.tipcard,.today-entry,.profil-card,.abo-diag,.sheet):not(#sDelester):not(#sDelester *){background:var(--card)!important;color:var(--night-ink)!important}
body.night :is(.opt small,.btn:not(.solid),.demo-note,.micro,.end-repro-help,.session-time,.seg-label,.done-title,.done-sub,.sante-tuile strong):not(#sDelester):not(#sDelester *){color:var(--night-ink)!important}
body.night :is(.today-entry .t,.today-entry .s,.home-guide-title,.home-guide-copy,.semaine-geste,.semaine-geste b):not(#sDelester):not(#sDelester *){color:var(--night-ink)!important}
body.night .btn.solid:not(#sDelester):not(#sDelester *){color:#fff!important}
/* 5. Cibles : les ? et cœurs gardent leur zone pseudo-élément de 44px (rc358), sans chevauchement ajouté. */
body :is(main,.sheet) :is(button,summary,input,select):not(.pq):not(.coeur):not([type="range"]):not([type="checkbox"]):not([type="radio"]):not(#sDelester):not(#sDelester *){min-height:44px;min-width:44px}
body :is(main,.sheet) :is(button,summary,input,textarea,select):focus-visible:not(#sDelester):not(#sDelester *){outline:2px solid var(--gold-texte);outline-offset:3px}
/* Aucune nouvelle animation, aucun changement des animations de l'intro ou de l'orbe. */
@media (prefers-reduced-motion:reduce) {
  body :is(.btn,.opt,.tipcard,.profil-card,.today-entry):not(#sDelester):not(#sDelester *){transition:none!important}
}

/* Finition sur les composants exacts de rc452, vérifiés au navigateur. */
body :is(#gearBtn,#profBtn,#boireChip,#tabbar):not(#sDelester):not(#sDelester *){box-shadow:none!important;min-width:44px;min-height:44px}
body #tabbar:not(#sDelester):not(#sDelester *){border-radius:var(--allure-rayon)!important;background-image:none!important;max-width:calc(100vw - 28px)!important}
body #tabbar button:not(#sDelester):not(#sDelester *){font-size:var(--allure-xs)!important;flex:1 1 0!important;min-width:0!important;min-height:44px!important;padding:8px 4px!important;white-space:normal!important;line-height:1.2!important}
body #tabbar button.on:not(#sDelester):not(#sDelester *){border-radius:calc(var(--allure-rayon) - .25rem)!important}
body #recCard .serif:not(#sDelester):not(#sDelester *){font-size:var(--allure-lg)!important;line-height:1.35!important;font-family:var(--allure-interface)!important}
body .fav-carte:not(#sDelester):not(#sDelester *){border-radius:var(--allure-rayon)!important;background-image:none!important;box-shadow:none!important}
body .fav-carte strong:not(#sDelester):not(#sDelester *){font-family:var(--allure-voix)!important;font-weight:400!important;font-size:var(--allure-md)!important;line-height:1.35!important}
body .fav-carte small:not(#sDelester):not(#sDelester *){font-size:var(--allure-xs)!important}
body :is(main,.sheet,#tipPop) :is(.seg-label,.pq):not(#sDelester):not(#sDelester *){font-style:normal!important}
body.tabbed::after {height:76px;background:var(--paper)!important}
body.night.tabbed::after {background:var(--night)!important}
body #tabbar:not(#sDelester):not(#sDelester *){width:calc(100% - 28px)!important;max-width:400px!important}

/* Dépliants éducatifs et articles : navigation secondaire, pas de deuxième couche de carte. */
body :is(.dedans-ped,#dedansSavoir,#capsuleListe .opt):not(#sDelester):not(#sDelester *){border:0!important;border-top:1px solid var(--filet)!important;border-radius:0!important;background:transparent!important;padding-left:0!important;padding-right:0!important}
body .dedans-carte h3:not(#sDelester):not(#sDelester *){font-size:var(--allure-lg)!important}
/* Le fond du guide respiratoire de nuit n'est pas un fond de l'orbe. */
body.night #ccGuide:not(#sDelester):not(#sDelester *){background:var(--card)!important;background-image:none!important;color:var(--night-ink)!important}
body.night #ccGuide :is(div,span,button):not(#sDelester):not(#sDelester *){color:var(--night-ink)!important}
body.night :is(#gearBtn,#profBtn,#boireChip):not(#sDelester):not(#sDelester *){background:var(--pilule)!important;color:var(--gold-soft)!important}

/* Gardes mesurées : le plein des pratiques reste plein, et les encres restent lisibles. */
body .pq-wrap > .opt.solid:not(#sDelester):not(#sDelester *){background:var(--gold-plein)!important;color:#fff!important}
body .pq-wrap > .opt.solid small:not(#sDelester):not(#sDelester *){color:#fff!important}
body #tabbar button.on:not(#sDelester):not(#sDelester *){color:var(--ink)!important}
body .brand small:not(#sDelester):not(#sDelester *){opacity:1!important}
body .fav-symbole:not(#sDelester):not(#sDelester *){color:var(--gold-texte)!important}
body #egg:not(#sDelester):not(#sDelester *){opacity:1!important;color:var(--gold-texte)!important}
body :is(#gearBtn,#profBtn,#boireChip) *:not(#sDelester):not(#sDelester *){box-shadow:none!important}
/* Cinq tailles de texte hors marque, pictogrammes et nombres de la jauge. */
body main :is(p,small,.meta,.micro,.note,.intro,.hint,.seg-label,.cc-reperes-titre,.dedans-note,.dedans-source):not(#sDelester):not(#sDelester *){font-size:var(--allure-xs)!important;line-height:1.55!important}
body main p:not(#sDelester):not(#sDelester *){font-size:var(--allure-sm)!important}
body main :is(h2,h3,h4):not(#sDelester):not(#sDelester *){font-size:var(--allure-lg)!important;line-height:1.35!important}
body #ccPhase:not(#sDelester):not(#sDelester *){font-size:var(--allure-lg)!important}
body #ccCompte:not(#sDelester):not(#sDelester *){font-size:var(--allure-sm)!important}
body main .opt:not(.pq-wrap > .opt):not(.home-chosen-list .opt):not(#sDelester):not(#sDelester *){font-size:var(--allure-sm)!important;line-height:1.45!important}

/* rc454 · la pratique mise en avant de chaque pilier garde SA couleur pleine (l’explorateur : texte blanc sur crème à 1,07:1
   sur Se nourrir, Se mouvoir, Se reproduire, S’élever ; S’aérer passait à l’or au lieu de son vert). Spécificité renforcée
   par deux :not(#…) : la règle générale du fond, elle-même chargée d’identifiants, ne doit pas l’emporter. */
body #sRespirer #respMedit:not(#allure-a):not(#allure-b):not(#sDelester):not(#sDelester *){background:var(--resp-action)!important;border-color:var(--resp-action)!important;color:#fff!important}
body #sRespirer #respMedit:not(#allure-a):not(#allure-b) small:not(#sDelester):not(#sDelester *){color:#fff!important}
body #sNourrir #nAssiette:not(#allure-a):not(#allure-b):not(#sDelester):not(#sDelester *){background:var(--manger-action)!important;border-color:var(--manger-action)!important;color:#fff!important}
body #sNourrir #nAssiette:not(#allure-a):not(#allure-b) small:not(#sDelester):not(#sDelester *){color:#fff!important}
body #sMouv #mouvEnviron:not(#allure-a):not(#allure-b):not(#sDelester):not(#sDelester *){background:var(--mouvoir-action)!important;border-color:var(--mouvoir-action)!important;color:#fff!important}
body #sMouv #mouvEnviron:not(#allure-a):not(#allure-b) small:not(#sDelester):not(#sDelester *){color:#fff!important}
body #sSoir #soirProfond:not(#allure-a):not(#allure-b):not(#sDelester):not(#sDelester *){background:var(--repos-action)!important;border-color:var(--repos-action)!important;color:#fff!important}
body #sSoir #soirProfond:not(#allure-a):not(#allure-b) small:not(#sDelester):not(#sDelester *){color:#fff!important}
body #sLien #lienJournee:not(#allure-a):not(#allure-b):not(#sDelester):not(#sDelester *){background:var(--lien-action)!important;border-color:var(--lien-action)!important;color:#fff!important}
body #sLien #lienJournee:not(#allure-a):not(#allure-b) small:not(#sDelester):not(#sDelester *){color:#fff!important}
body #sElever #eleverDepend:not(#allure-a):not(#allure-b):not(#sDelester):not(#sDelester *){background:var(--elever-action)!important;border-color:var(--elever-action)!important;color:#fff!important}
body #sElever #eleverDepend:not(#allure-a):not(#allure-b) small:not(#sDelester):not(#sDelester *){color:#fff!important}
body #sElever #eleverDelester:not(#allure-a):not(#allure-b):not(#sDelester):not(#sDelester *){background:linear-gradient(135deg,var(--night) 0%,#3b2e15 52%,var(--elever-or) 100%)!important;color:#fff!important;border:0!important}
body #sElever #eleverDelester:not(#allure-a):not(#allure-b) small:not(#sDelester):not(#sDelester *){color:rgba(255,255,255,.84)!important}
body.night main :is(h1,h1 em,.resp-hero p,summary,.retour-haut,.seg-ctrl button:not(.sel),#egg):not(#sDelester):not(#sDelester *){color:var(--night-ink)!important}
body.night .seg-ctrl button.sel:not(#sDelester):not(#sDelester *){background:var(--gold-plein)!important;color:#fff!important}

body main :is(.q-eyebrow,.tiplab,.planlab,.dedans-groupe,.pref .lab,.session-int,.intens .ilab,.jour-pt .lab,.mouv-variante,.semaine-geste b,.semaine-rappel-titre,.today-entry .k,.sante-tuile small,.cc-reperes-titre):not(#sDelester):not(#sDelester *){font-size:var(--allure-xs)!important}
body main :is(.today-entry .t,.home-guide-title,.dedans-titre,.sante-tuile strong,.done-title):not(#sDelester):not(#sDelester *){font-size:var(--allure-lg)!important}
body main .pq-wrap > .opt:not(#sDelester):not(#sDelester *){font-size:var(--allure-md)!important}
body main .pq-wrap > .opt small:not(#sDelester):not(#sDelester *){font-size:var(--allure-xs)!important}
body main .fav-carte strong:not(#sDelester):not(#sDelester *){font-size:var(--allure-md)!important}
body main .fav-carte small:not(#sDelester):not(#sDelester *){font-size:var(--allure-xs)!important}
body main .pq:not(#sDelester):not(#sDelester *){font-family:Georgia,serif!important;font-size:1rem!important}
/* Les symboles et la jauge ne sont pas des tailles de texte éditorial. */

/* rc454 : la règle de nuit de S’aérer (#sRespirer) est retirée, l’écran d’un pilier ne s’assombrit jamais (décision du 20 sept., testnuitretiree). */
/* Même un lien court (« Terms ») conserve une zone de toucher de 44 × 44. */
body main a[href]:not(#sDelester):not(#sDelester *){display:inline-flex;align-items:center;min-width:44px;min-height:44px}
/* Les encres jour/nuit basculent ensemble : la transition du fond seule créait
   pendant 600 ms un texte clair sur crème. Intro et animations de séance intactes. */
body {transition:none!important}
/* Les mots déterminent la largeur de leur onglet, notamment à 125 % :
   quatre parts égales coupaient « Aujourd’hui ». Mon espace peut rester sur deux lignes. */
body #tabbar button:not(#sDelester):not(#sDelester *){flex:1 1 auto!important;min-width:min-content!important;padding:8px 2px!important}
@media (max-width:379px) {body #tabbar:not(#sDelester):not(#sDelester *){width:calc(100% - 16px)!important}}
/* rc454 · vu sur les captures réelles (ni la batterie ni l'explorateur ne le mesuraient) :
   1. S’aérer : une pratique y était une ligne dans une grande carte, sans marge propre ; devenue carte, elle reprend sa marge.
   2. Se nourrir : la règle générale portait l'étiquette « ta lecture d'abord » à 15 px dans un espace de 30 px, sur le titre. */
/*    Les pratiques de S’aérer, Se mouvoir, Se reproduire et S’élever étaient des lignes (padding horizontal 0) : le « ? »
      et le cœur se placent au démarrage d’après ce padding, il doit donc exister avant l’emballage .pq-wrap. */
body :is(#sRespirer .resp-carte,#sMouv .mouvoir-carte,#sLien .lien-carte,#sElever .elever-carte) .opt:not(#allure-a):not(#sDelester):not(#sDelester *),
body .pq-wrap > .opt:not(#allure-a):not(#sDelester):not(#sDelester *){padding-left:18px!important;padding-right:18px!important}
body main .pbadge:not(#allure-a):not(#sDelester):not(#sDelester *){font-size:var(--allure-xs)!important;line-height:1.3!important}
/* rc454 · relevé du clone (PAS PRÊT du 8 oct.) :
   1. Point du jour : les grilles de cinq choix (« Préciser ») coupaient « Saturation », « Mauvaise », « Correcte » à 15 px gras ;
      elles reprennent la taille d'avant (14 px, 12 px sous 360 px) et un poids moyen. */
body .seg-ctrl.wrap button:not(#allure-a):not(#sDelester):not(#sDelester *){font-size:.8125rem!important;font-weight:400!important;line-height:1.25!important;white-space:normal!important;overflow-wrap:break-word!important;-webkit-hyphens:auto!important;hyphens:auto!important;padding-left:4px!important;padding-right:4px!important}
@media (max-width:360px) {body .seg-ctrl.wrap button:not(#allure-a):not(#sDelester):not(#sDelester *){font-size:.6875rem!important;padding-left:2px!important;padding-right:2px!important}}
/* 2. Un lien dans une phrase reste dans la phrase : la cible de 44 px ne vaut que pour un lien seul (interligne irrégulier
      autour de « Pourquoi ça prend du temps », écran de fin). */
body main :is(p,li,small) a[href]:not(#allure-a):not(#sDelester):not(#sDelester *){display:inline!important;min-width:0!important;min-height:0!important}
/* 3. Mes favoris › Modifier, petit écran : « Retirer » sortait de son bouton (15 px gras dans une rangée de trois boutons). */
body .fav-ordre li button:not(#allure-a):not(#sDelester):not(#sDelester *){font-size:var(--allure-xs)!important;flex:0 0 auto!important;white-space:nowrap!important;padding:0 8px!important}
/* 4. Se nourrir › Ce qu'il y a dedans, petit écran : « Où en trouver » débordait (335 px pour 320) et « Annuler » se coupait ;
      les quantités et le lien reprennent leurs tailles d'avant, plus petites que la lecture. */
body .dedans-ligne-btn .v small:not(#allure-a):not(#sDelester):not(#sDelester *){font-size:.75rem!important}
body .dedans-ligne-btn .v:not(#allure-a):not(#sDelester):not(#sDelester *){font-size:.875rem!important}
body .dedans-lien:not(#allure-a):not(#sDelester):not(#sDelester *){font-size:.875rem!important;font-weight:400!important;padding:6px 8px!important;min-width:44px!important;flex-shrink:0!important;white-space:nowrap!important}
/* 5. « Où trouver » : la quantité par portion et la valeur pour 100 g tenaient sur une ligne insécable ; plus grandes, elles
      sortaient de l'écran à 320 px. Sous 380 px, la valeur pour 100 g passe sous la portion. */
body .dedans-nut .v:not(#allure-a):not(#sDelester):not(#sDelester *) {font-size:.9375rem!important}
body .dedans-nut .v small:not(#allure-a):not(#sDelester):not(#sDelester *) {font-size:.75rem!important}
@media (max-width:379px) {body .dedans-nut .v small:not(#allure-a):not(#sDelester):not(#sDelester *) {display:block!important;margin-left:0!important}}
/* 6. (deuxième passe du clone) « Préciser » : cinq colonnes de mots longs (« Saturation », « Très mauvaise ») ; le mot se coupe
      avec un trait d'union plutôt que de déborder. Mes favoris › Modifier : « environnement » se coupait en plein mot. */
body .fav-ordre li span:not(#allure-a):not(#sDelester):not(#sDelester *){overflow-wrap:break-word!important;-webkit-hyphens:auto!important;hyphens:auto!important}
/* 7. Mes favoris › Modifier : la rangée encadrée et ses boutons encadrés à 5 px faisaient un cadre doublé (déjà en rc453) ;
      direction C : la rangée devient une ligne, les boutons gardent leur cadre. */
body .fav-ordre li:not(#allure-a):not(#sDelester):not(#sDelester *){border:0!important;border-bottom:1px solid var(--filet)!important;border-radius:0!important;background:transparent!important;padding-left:0!important;padding-right:0!important}
/* 8. Seconde lame de Codex (A454-01) : avec le texte agrandi (125 %), l'étiquette « ta lecture d'abord » touchait encore la
      première ligne du titre (la place réservée était fixe : 30 px). Elle suit désormais la taille du texte. */
body :is(.opt.pill:has(.pbadge),#nMenus:has(.pbadge)):not(#allure-a):not(#sDelester):not(#sDelester *){padding-top:2.375rem!important}

/* PARCOURS · TRANCHE-01 (9 oct. 2026) : « Ton chemin » sur Mon Diagnostic, derrière l'interrupteur du parcours. */
.parcours-chemin{background:var(--card);border:1px solid var(--filet);border-radius:14px;padding:16px 16px 14px;margin:14px 0 10px}
.parcours-ligne{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:9px 0;border-top:1px solid var(--filet);font-size:.9375rem}
.parcours-ligne:first-of-type{border-top:0}
.parcours-lab{color:var(--gray);min-width:0}
.parcours-ligne b{text-align:right;flex:none}
.parcours-phrase{margin:10px 0 0;font-size:.875rem;line-height:1.5;color:var(--gray)}
.btn.parcours-detail{width:100%;margin:0 0 14px;min-height:44px}

/* PARCOURS · LE MOIS (9 oct. 2026) */
.btn.parcours-mois{width:100%;margin:0 0 10px;min-height:44px}
.mois-intro{margin:6px 0 14px;font-size:.9375rem;line-height:1.5;color:var(--gray)}
.mois-semaine{margin:0 0 22px}
.mois-semaine h2{font-size:1.0625rem;margin:0 0 4px}
.mois-intention{margin:0 0 10px;font-size:.875rem;color:var(--gray)}
.mois-jour{background:var(--card);border:1px solid var(--filet);border-radius:14px;padding:12px 14px;margin:0 0 8px}
.mois-jour.auj{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}
.mois-jour.libre{background:transparent}
.mois-k{font-size:.75rem;letter-spacing:.04em;color:var(--gold-texte);margin-bottom:4px}
.mois-nom{font-size:1rem;font-weight:600;line-height:1.35}
.mois-min{font-weight:400;font-size:.8125rem;color:var(--gray);white-space:nowrap}
.mois-raison{margin:4px 0 0;font-size:.875rem;line-height:1.45;color:var(--gray)}
.mois-q{margin:6px 0 0;font-size:.875rem;line-height:1.45;font-style:italic}
.mois-actions{display:flex;gap:8px;margin-top:10px}
.mois-actions .btn{flex:1;min-height:44px;font-size:.875rem;padding:10px 6px}
.mois-jour.vecu{border-color:var(--gold)}
.mois-vecu{font-weight:700}
.mois-vecus{color:var(--ink)}
/* MOIS-LUDIQUE-01 · C « Les chapitres » (Codex, choix de Johnatan du 9 oct. 2026) : quatre chapitres, la couleur des
   moments vécus, un trait qui se pose une fois ; aucun vide à remplir, aucun jour manqué. */
.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}
.mois-compte{margin:0 0 10px;font-size:.9375rem}
.mois-neuf{margin:0 0 12px;padding:10px 12px;border-radius:12px;background:var(--card);border:1px solid var(--gold);font-size:.9375rem;line-height:1.45}
.btn.mois-image-go{width:100%;min-height:44px;margin:0 0 14px}
.mois-semaine{margin:0;border-top:1px solid var(--filet)}
.mois-semaine:last-child{border-bottom:1px solid var(--filet)}
.mois-chapitre{display:grid;grid-template-columns:3rem 1fr 1.2rem;align-items:start;gap:10px;width:100%;min-height:44px;padding:16px 2px;background:none;border:0;text-align:left;color:var(--ink);font:inherit;cursor:pointer}
.mois-num{font-family:Georgia,"Times New Roman",serif;font-size:1.625rem;line-height:1;color:var(--gold-texte)}
.mois-ch-txt{display:grid;gap:3px;min-width:0}
.mois-ch-txt strong{font-size:1.0625rem}
.mois-ch-txt small{font-size:.875rem;line-height:1.4;color:var(--gray)}
.mois-ch-txt small.mois-etat{color:var(--ink)}
.mois-note{display:inline-block;width:.5rem;height:.5rem;border-radius:50%;background:var(--gold);margin-left:.35rem;vertical-align:.15rem}
.mois-chev{color:var(--gray);transition:transform .2s;justify-self:end;font-size:1.125rem;line-height:1}
.mois-chapitre[aria-expanded="true"] .mois-chev{transform:rotate(90deg)}
.mois-filet{display:flex;gap:3px;height:4px;margin-top:8px}
.mois-filet i{flex:1;border-radius:2px;transform-origin:left center}
.mois-filet i.neuf{animation:moisTrait .45s ease-out both}
@keyframes moisTrait{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media (prefers-reduced-motion:reduce){.mois-filet i.neuf{animation:none}.mois-chev{transition:none}}
.mois-jours{padding:0 0 14px}
.mois-vecu{color:var(--gold-texte)}
.mois-refaire{margin:0 0 12px;font-size:.875rem;color:var(--gray)}
.mois-refaire summary{min-height:44px;display:flex;align-items:center;cursor:pointer;color:var(--gold-texte)}
.mois-refaire p{margin:0 0 6px;line-height:1.45}
.mois-image{display:grid;gap:10px;margin:0 0 14px}
.mois-image img{width:100%;border-radius:12px;border:1px solid var(--filet)}
.mois-image .btn{min-height:44px}
/* 9 oct. 2026 · Johnatan : « attention le point d'interrogation et le cadrage des cases, rien ne respire ».
   1. Le « ? » se plaçait au démarrage d'après le padding de la carte, encore à 0 sur certaines portes (S’hydrater, Se nourrir,
      Se reposer) : il tombait sur le cadre. Il prend désormais une place fixe DANS la carte, le cœur à côté.
   2. Hors des listes en flex (gap), les cartes se touchaient (S’hydrater · Corps) : 12 px entre deux cartes.
   L'explorateur le mesure maintenant à chaque porte (« les cartes respirent »). */
body .pq-wrap>.pq:not(#sDelester):not(#sDelester *){right:16px!important;bottom:14px!important}
body .pq-wrap>.coeur:not(#sDelester):not(#sDelester *){right:56px!important;bottom:14px!important}
body main .pq-wrap+.pq-wrap:not(#sDelester):not(#sDelester *){margin-top:12px}
body main :is(.opts,.home-chosen-list)>.pq-wrap+.pq-wrap:not(#sDelester):not(#sDelester *){margin-top:0}
/* rc468 · MON ESPACE RESPIRE. Johnatan, 10 oct. 2026 : « police qui ne respire pas assez dans Mon espace ».
   Mesuré dans Chrome à 390 px (rc467) : texte courant à 1,55, titres de carte à 1,35, sous-titre collé à son titre
   (5 px), blocs du haut à 16 px quand les groupes sont à 24. Ni taille, ni police, ni couleur ne changent (charte) :
   seulement l'interligne (1,6 pour le texte courant), l'écart titre → sous-titre et un pas régulier de 24 px entre
   les blocs. Tout est limité à #sProfil ; les autres écrans ne bougent pas. */
html body #sProfil :is(p,small,.demo-note,.cl-note,#profilPillars,#sessionQui,#aboState,#aboUntil):not(#sDelester):not(#sDelester *){line-height:1.6!important}
html body #sProfil .profil-note:not(#sDelester):not(#sDelester *){line-height:1.65!important}
html body #sProfil :is(.opt,.cardlink .cl-titre):not(#sDelester):not(#sDelester *){line-height:1.45!important}
html body #sProfil .opt:not(#sDelester):not(#sDelester *){row-gap:8px!important}
html body #sProfil .cardlink .cl-note:not(#sDelester):not(#sDelester *){margin-top:8px}
html body #sProfil :is(#aboCard,#sessionCard,#partCarte,#profilPillars):not(#sDelester):not(#sDelester *){margin-bottom:24px}
html body #sProfil #aboState:not(#sDelester):not(#sDelester *){margin-bottom:8px!important}
html body #sProfil #sessionQui:not(#sDelester):not(#sDelester *){margin-top:6px!important}
/* rc469 · MON ESPACE, « PLUS MARQUÉ ». Johnatan, 10 oct. 2026, après l'avant/après de rc468 : « texte courant un cran plus
   grand et un peu plus d'espace entre les lettres des titres ». Mesuré dans Chrome à 390 px (rc468) : texte courant à 15 px
   (--allure-sm), texte secondaire à 13 px (--allure-xs), titres sans espacement. Chaque palier monte d'un cran dans Mon espace
   seulement (16 et 14 px, en rem : le réglage de taille du téléphone reste l'autorité) ; les titres de groupes et de cartes
   prennent 0,015 em. Police, couleurs, or et charte ALLURE-01 C inchangés ; les autres écrans ne bougent pas. */
html body #sProfil:not(#sDelester){--allure-sm:1rem;--allure-xs:.875rem}
html body #sProfil :is(details.grp>summary,.tiplab,.cl-titre):not(#sDelester):not(#sDelester *){letter-spacing:.015em!important}
/* rc472 · le trimestre à l'écran : mêmes cartes que le mois, plus les choix de départ */
.trim-choix{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 12px}
.trim-choix .btn{min-height:40px;padding:8px 12px;font-size:.875rem}
.trim-choix .btn.on{background:var(--ink);color:var(--card);border-color:var(--ink)}
.trim-nav{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:0 0 10px}
.trim-nav .btn{min-height:40px;padding:6px 12px}
.mois-jour.passee{opacity:.72}
.trim-posture{font-weight:400;font-size:.8125rem;color:var(--gray)}
/* rc473 · la lecture 2.1 : silhouette, escaliers, texte en neuf parties, visuels */
.lec21-sil{background:var(--card);border:1px solid var(--filet);border-radius:14px;padding:10px 14px;margin:0 0 12px}
.lec21-l{display:grid;grid-template-columns:7.4em 1fr 3em;gap:8px;align-items:center;padding:7px 0;border-top:1px solid var(--filet)}
.lec21-l:first-child{border-top:0}
.lec21-n{font-size:.9375rem;line-height:1.2}.lec21-n small{display:block;font-size:.75rem;color:var(--gray)}
.lec21-b{height:14px;background:var(--filet);border-radius:7px;overflow:hidden}.lec21-b i{display:block;height:100%;border-radius:7px}
.lec21-v{text-align:right;font-variant-numeric:tabular-nums;font-size:.9375rem}
.lec21-tags{grid-column:1/-1;margin-top:-4px}
.lec21-badge{display:inline-block;font-size:.6875rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;padding:2px 7px;border-radius:999px;background:rgba(193,154,62,.16);color:var(--gold-texte);margin-right:4px}
.lec21-badge.encre{background:rgba(75,78,125,.14);color:var(--ink)}
.lec21-det{margin:0 0 14px}.lec21-det summary{cursor:pointer;font-size:.9375rem;padding:8px 0;color:var(--gold-texte)}
.lec21-esc3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;align-items:end;height:92px;margin:8px 0 2px}
.lec21-esc3 div{display:flex;flex-direction:column;justify-content:flex-end;height:100%}
.lec21-esc3 i{display:block;border-radius:6px 6px 2px 2px;min-height:3px}
.lec21-esc3 span{font-size:.75rem;color:var(--gray);text-align:center;margin-top:4px}.lec21-esc3 span b{display:block;color:var(--ink);font-variant-numeric:tabular-nums}
.lec21-k{font-size:.8125rem;letter-spacing:.06em;text-transform:uppercase;color:var(--gold-texte);margin:18px 0 6px;font-weight:600}
.lec21-p{margin:0 0 10px;font-size:1rem;line-height:1.5}
.lec21-cite{border-left:3px solid var(--gold);padding:2px 10px;margin:.4em 0 .8em;color:var(--gray);font-size:.9375rem;line-height:1.45}
.lec21-sig{margin:14px 0 0;font-size:.8125rem;color:var(--gray);line-height:1.45}
.lec21-visuel{background:var(--card);border:1px solid var(--filet);border-radius:14px;padding:12px 14px;margin:0 0 12px}
.lec21-visuel svg{max-width:100%;height:auto;display:block}
/* rc477 · la passation 2.1 : affirmations, ancres en mots, sorties */
.pass21-prog{height:6px;background:var(--filet);border-radius:3px;overflow:hidden;margin:10px 0 4px}.pass21-prog i{display:block;height:100%;background:var(--gold);width:0}
/* rc483 · la passation, belle : chaque pilier colore ses affirmations (palette des piliers), les cinq ancres en mots sur cinq lignes
   pleines (plus rien ne déborde à 320 px), une petite échelle de cinq traits dit la place de l'ancre sans chiffre, le choix retenu se
   remplit de la couleur du pilier ; les sorties restent discrètes. */
.pass21-q{background:var(--card);border:1px solid var(--filet);border-left:4px solid var(--pc,var(--gold));border-radius:14px;padding:12px 14px 12px 14px;margin:0 0 10px}
.pass21-t{margin:0 0 10px;font-size:1.0625rem;line-height:1.45;font-weight:600;color:var(--ink)}
.pass21-anc{display:grid;grid-template-columns:1fr;gap:6px}
.pass21-anc button{display:flex;align-items:center;gap:10px;min-height:44px;width:100%;text-align:left;border:1px solid var(--filet);background:transparent;color:var(--ink);border-radius:12px;padding:8px 12px;font-family:-apple-system,sans-serif;font-size:.9375rem;line-height:1.3;cursor:pointer}
.pass21-anc button span{flex:1 1 auto;min-width:0}
.pass21-ech{display:inline-flex;gap:2px;flex:0 0 auto}
.pass21-ech b{display:block;width:5px;height:14px;border-radius:2px;background:var(--filet)}
.pass21-ech b.plein{background:var(--pc,var(--gold))}
.pass21-anc button.on{background:var(--pc-fond,rgba(193,154,62,.14));border-color:var(--pc,var(--gold));font-weight:600}
.pass21-anc button.on .pass21-ech b{background:var(--pc,var(--gold));opacity:.45}.pass21-anc button.on .pass21-ech b.plein{opacity:1}
.pass21-sorties{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.pass21-sorties button{min-height:44px;border:1px dashed var(--filet);background:transparent;color:var(--gray);border-radius:999px;padding:6px 12px;font-family:-apple-system,sans-serif;font-size:.8125rem;cursor:pointer}
.pass21-sorties button.on{border-style:solid;border-color:var(--pc,var(--gold));color:var(--ink);background:var(--pc-fond,rgba(193,154,62,.14))}
.pass21-nav{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.pass21-nav .btn{flex:0 0 auto;padding-left:12px;padding-right:12px;background:var(--pc-fond,rgba(193,154,62,.14));border-color:var(--pc,var(--gold));color:var(--pc-fonce,var(--gold-texte))}
/* la règle ALLURE (body .btn.solid … !important) impose l'or à tout bouton plein : ici le pilier courant garde SA couleur */
body #sPass21 .pass21-nav .btn.solid.pass21-pil:not(#allure-a):not(#allure-b){background:var(--pc-fonce,var(--gold-plein))!important;border-color:var(--pc-fonce,var(--gold-plein))!important;color:#fff!important}
/* rc488 (clone) : un bouton Terminer inactif se voit inactif ; Effacer demande une confirmation ; le texte des cartes garde l'encre */
body #sPass21 #pass21Terminer[disabled]:not(#allure-a):not(#allure-b){opacity:.45!important;filter:saturate(.4)}
/* rc491 (clone du 12 oct., gênant 1) : « Voir mes repères » inactif se voit inactif, comme Terminer ; le texte sous lui dit ce qui manque */
body #sSport #sportVoir[disabled]:not(#allure-a):not(#allure-b){opacity:.45!important;filter:saturate(.4);cursor:default}
.pass21-danger{color:#8a2d1e!important;border-color:#8a2d1e!important}
/* rc483 · la carte de Mon espace : ses boutons se posent l'un sous l'autre, pleine largeur */
/* la carte entière du Diagnostic (ALLURE lui donne bordure et fond) prend une vraie marge intérieure : plus aucun texte contre le bord ;
   le bloc 2.1 y vit sans boîte dans la boîte, séparé du reste par un filet */
body #aboDiagInfo.abo-diag:not(#allure-a):not(#allure-b){padding:14px 16px!important}
body .abo-diag .espace-diag21:not(#allure-a):not(#allure-b){padding:0 0 6px!important;border:0!important;border-bottom:1px solid var(--filet)!important;border-radius:0!important;background:transparent!important;margin:0 0 14px!important}
.abo-diag .espace-diag21 .abo-diag-titre{margin:0 0 12px}
.abo-diag .espace-diag21 .abo-diag-actions{flex-direction:column;gap:8px;margin:0 0 4px}.abo-diag .espace-diag21 .abo-diag-actions .btn{width:100%}
.pass21-plan{display:flex;align-items:center;gap:8px}.pass21-plan i{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--pc,var(--gold))}
.pass21-prog i{background:var(--pc,var(--gold))}
.pass21-refus{border:1px solid var(--gold);border-radius:12px;padding:10px 12px;margin:6px 0 10px}
.pass21-conflit{border-color:var(--gold)}
/* rc484 · la lecture 2.1 en couleur : résumé en tuiles, silhouette et escaliers aux couleurs des piliers, titres de parties, lignes de piliers */
.lec21-hero{position:relative;background:var(--pc-fond,var(--card));border:1px solid var(--pc,var(--filet));border-left:6px solid var(--pc,var(--gold));border-radius:16px;padding:14px 16px 12px;margin:0 0 10px}
.lec21-hero .lec21-eyebrow{display:block;font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-texte);margin:0 0 4px}
.lec21-hero strong{display:inline-block;font-family:Georgia,'Times New Roman',serif;font-weight:600;font-size:1.875rem;line-height:1.15;color:var(--pc-fonce,var(--ink));margin:0 10px 6px 0;vertical-align:middle}
.lec21-hero p{margin:4px 0 0;font-size:.9375rem;line-height:1.45;color:var(--ink)}
.lec21-bande{display:inline-block;vertical-align:middle;font-size:.6875rem;letter-spacing:.06em;text-transform:uppercase;font-weight:700;padding:3px 8px;border-radius:999px;color:var(--bc,var(--gold-texte));border:1px solid var(--bc,var(--gold));background:transparent}
.lec21-n .lec21-bande{margin-top:3px}
.lec21-resume{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 12px}
.lec21-tuile{background:var(--pc-fond,var(--card));border:1px solid var(--pc,var(--filet));border-radius:12px;padding:10px 12px;min-width:0}
.lec21-tuile span{display:block;font-size:.75rem;letter-spacing:.04em;text-transform:uppercase;color:var(--gray);margin-bottom:2px}
.lec21-tuile b{display:block;font-size:.9375rem;line-height:1.3;color:var(--pc-fonce,var(--ink));overflow-wrap:anywhere}
.lec21-l .lec21-n b{display:block;color:var(--pc-fonce,var(--ink));font-weight:600}
.lec21-l .lec21-v{color:var(--pc-fonce,var(--ink));font-weight:700}
.lec21-l .lec21-b i{background:var(--pc,var(--gold))}
.lec21-esc .lec21-esc3 i{background:var(--pc,var(--gold))!important}
.lec21-texte .lec21-titre{display:flex;align-items:center;gap:10px;font-family:Georgia,'Times New Roman',serif;font-size:1.3125rem;letter-spacing:0;text-transform:none;font-weight:600;color:var(--ink);margin:24px 0 10px;padding-top:14px;border-top:1px solid var(--filet)}
.lec21-num{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--gold-texte);color:#fff;font-family:-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;font-size:.875rem;font-weight:700;flex:0 0 auto}
.lec21-pil{display:flex;gap:10px;align-items:flex-start;background:var(--pc-fond,var(--card));border-left:4px solid var(--pc,var(--gold));border-radius:0 12px 12px 0;padding:10px 12px 10px 10px;margin:0 0 8px}.lec21-pil i{display:block;flex:0 0 auto;width:10px;height:10px;border-radius:50%;background:var(--pc,var(--gold));margin-top:7px}.lec21-pil span{min-width:0}.lec21-pil b{color:var(--pc-fonce,var(--ink))}
.lec21-completer{width:100%;margin:4px 0 10px}
.lec21-print-tete{display:none}
@media print{
  body.impression-lecture{background:#fff!important}
  body.impression-lecture > *:not(main){display:none!important}
  body.impression-lecture main > *:not(#sLecture21){display:none!important}
  body.impression-lecture .screen:not(#sLecture21){display:none!important}
  body.impression-lecture #sLecture21{display:block!important;position:static!important;overflow:visible!important;height:auto!important;max-height:none!important;padding:0 8mm!important;transform:none!important;opacity:1!important}
  body.impression-lecture #sLecture21 .lec21-print-tete{display:block;font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;color:#8a6d2f;margin:0 0 6mm}
  body.impression-lecture #lec21PdfGo,body.impression-lecture #lec21PdfAide,body.impression-lecture #lec21TrimGo,body.impression-lecture #lec21Back,body.impression-lecture #lec21Completer,body.impression-lecture #lec21CompleterHaut,body.impression-lecture #sLecture21 .retour-haut,body.impression-lecture #sLecture21 [class*="back"],body.impression-lecture #sLecture21 .q-back{display:none!important}
  body.impression-lecture #sLecture21,body.impression-lecture main{background:#fff!important}
  body.impression-lecture #sLecture21 *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.impression-lecture .lec21-q,body.impression-lecture .lec21-pil,body.impression-lecture .lec21-visuel,body.impression-lecture .lec21-hero,body.impression-lecture .lec21-sil{break-inside:avoid}
  body.impression-lecture .lec21-titre{break-after:avoid}
}
/* la carte du trimestre dans Aujourd'hui, et la passation en mode « compléter » */
.home-trim{border-left:4px solid var(--pc,var(--gold));padding-left:12px}
.pass21-q.a-completer{border-style:dashed;border-color:var(--pc,var(--gold))}
.pass21-tag{display:inline-block;font-size:.6875rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;padding:2px 7px;border-radius:999px;background:var(--pc-fond,rgba(193,154,62,.14));color:var(--ink);margin:0 0 8px}
.pass21-suivante{position:sticky;bottom:12px;width:100%;margin:10px 0}
/* rc487 · le Mode sportif : blocs calmes, cases à cocher, segments, lignes de repères */
.sport-bloc{margin:0 0 12px}
.sport-case{display:flex;gap:10px;align-items:flex-start;min-height:44px;padding:6px 0;font-size:.9375rem;line-height:1.4;cursor:pointer}.sport-case input{width:22px;height:22px;flex:0 0 auto;margin:2px 0 0;accent-color:var(--gold)}
.sport-champ{display:block;font-size:.8125rem;color:var(--gray);margin:8px 0 4px}
#sportPoids{width:100%;box-sizing:border-box;min-height:48px;font-size:1.0625rem;padding:10px 12px;border:1px solid var(--filet);border-radius:12px;background:var(--card);color:var(--ink)}#sportPoids[aria-invalid="true"]{border-color:#C0622D}
.sport-seg{flex-wrap:wrap}.sport-seg button{flex:1 1 auto;min-height:44px}
.sport-ligne{display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:baseline;padding:8px 0;border-top:1px solid var(--filet)}.sport-ligne b{font-size:1rem}.sport-ligne .sport-val{font-variant-numeric:tabular-nums;font-weight:700;color:var(--gold-texte);text-align:right}.sport-ligne small{grid-column:1/-1;font-size:.8125rem;color:var(--gray);line-height:1.4}
.sport-aliments{display:flex;flex-wrap:wrap;gap:6px}.sport-aliments .btn{margin:0;padding:8px 12px;font-size:.875rem}
.sport-erreur{color:#C0622D}.sport-ferme{font-weight:600}

/* rc496 · armée du 12 oct. (UX P1) : un bouton inactif se VOIT inactif, partout (avant : seuls pass21Terminer et sportVoir) */
.btn:is(:disabled,[aria-disabled="true"]){opacity:.45;filter:saturate(.4);cursor:default}

/* rc502 · LE FOND QUI VIT (Johnatan, 14 oct. 2026 : « on peut le mettre dans toute l'app, c'est génial »).
   Un calque fixe sous l'app, comme le grain d'autrefois : le papier reste la base, une lumière douce le teinte selon
   le moment (matin, midi, soir, nuit). Les teintes restent basses et vivent surtout vers le bas et les bords : le
   texte garde son contraste partout (voir « Contraste : le pire des fonds »). Le haut reste papier, la bande du haut
   ne change pas. Sans animation pour qui a demandé moins de mouvement. Les écrans sombres (nuit, Se délester,
   Silence intérieur) gardent le leur. */
#fondVivant{position:fixed;inset:0;pointer-events:none;z-index:0;background-color:var(--paper);background-repeat:no-repeat;
  background-size:140% 140%,140% 140%;background-position:0% 100%,100% 60%;transition:opacity 1.2s ease}
#fondVivant[data-moment="matin"]{background-image:radial-gradient(90% 65% at 15% 100%,rgba(238,180,120,.55),rgba(238,180,120,0) 72%),radial-gradient(75% 55% at 95% 50%,rgba(170,206,214,.42),rgba(170,206,214,0) 72%)}
#fondVivant[data-moment="midi"]{background-image:radial-gradient(90% 65% at 85% 100%,rgba(160,204,226,.52),rgba(160,204,226,0) 72%),radial-gradient(75% 55% at 5% 55%,rgba(196,222,170,.45),rgba(196,222,170,0) 72%)}
#fondVivant[data-moment="soir"]{background-image:radial-gradient(90% 65% at 20% 100%,rgba(226,146,120,.50),rgba(226,146,120,0) 72%),radial-gradient(75% 55% at 95% 60%,rgba(160,146,204,.44),rgba(160,146,204,0) 72%)}
#fondVivant[data-moment="nuit"]{background-image:radial-gradient(90% 65% at 50% 100%,rgba(84,92,160,.40),rgba(84,92,160,0) 72%),radial-gradient(75% 55% at 100% 50%,rgba(126,104,172,.34),rgba(126,104,172,0) 72%)}
@media (prefers-reduced-motion:no-preference){ #fondVivant{animation:fondDerive 48s ease-in-out infinite alternate} }
@keyframes fondDerive{to{background-position:20% 80%,80% 75%}}
.night #fondVivant{opacity:0}   /* la nuit (body.night) garde son propre fond */
/* pendant le geste de retour, l'écran qui glisse porte le papier : le fond qui vit reste dessous, inchangé */

/* rc502 · DEUX ENTRÉES */
.de-sous{font-size:.9375rem;line-height:1.6;color:var(--gray);margin:0 0 16px}
.de-petit{font-size:.8125rem;line-height:1.55;color:var(--gray);margin:14px 0 6px}
.de-h2{font-size:1.125rem;margin:22px 0 6px}
.de-propos{font-size:.875rem;color:var(--gray);margin:8px 0 4px}
.de-libre{width:100%;font-size:1rem;padding:14px;border:1px solid var(--filet-fort);border-radius:12px;background:var(--card);color:var(--ink);margin:0 0 6px}
.de-libre:focus-visible{outline:2px solid var(--gold-texte);outline-offset:2px}
.de-bascule button[aria-pressed="true"]{background:var(--gold-plein);color:#fff;font-weight:700}   /* rc503 : le doré plein, comme les autres choix (AA) */
.home-decouverte{display:flex;flex-direction:column;gap:10px;margin:4px 0 14px}
.home-decouverte .de-titre{font-size:1.3125rem;line-height:1.3;margin:2px 0 8px}
.de-jours{display:flex;gap:5px}
.de-jours i{flex:1;height:6px;border-radius:3px;background:var(--filet)}
.de-jours i.fait{background:var(--gold-texte)}
.de-jours i.ici{background:var(--gold-soft)}
.de-carte{background:var(--card);border:1px solid var(--filet);border-radius:12px;padding:12px 14px}
.de-carte b{display:block;font-size:.9375rem;line-height:1.4;color:var(--ink)}
.de-carte p{font-size:.875rem;line-height:1.55;color:var(--gray);margin:4px 0 0}
.de-carte.de-or{background:#F6EBD3;border-color:transparent}
.de-plein{width:100%;padding:14px;font-size:.9375rem;background:var(--gold-texte);border-color:var(--gold-texte);color:#fff;font-weight:600}
.de-puces{display:flex;flex-wrap:wrap;gap:6px}
.de-puces button{border:1px solid var(--filet);background:var(--card);color:var(--ink);border-radius:16px;padding:7px 12px;font-size:.8125rem;cursor:pointer}
.de-plusloin{border-top:1px dashed var(--filet-fort);margin-top:6px;padding-top:10px}
button.lien{background:none;border:none;padding:4px 0;color:var(--gold-texte);font-weight:600;font-size:.875rem;cursor:pointer;text-align:left}
.de-mois{margin:6px 0 0 1.1em;font-size:.875rem;line-height:1.6;color:var(--ink)}
.de-autonomie{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;font-size:.75rem;color:var(--gray);margin:2px 0}
.de-autonomie i{display:block;height:6px;border-radius:3px;background:var(--gold-soft);border-right:40px solid var(--gold-texte)}
.de-offres{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:4px}
.de-offre{background:var(--card);border:1px solid var(--filet);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:4px}
.de-offre span{font-size:.8125rem;line-height:1.45;color:var(--gray)}
#planContenu{display:flex;flex-direction:column;gap:10px}
/* DECOUVERTE-TRIMESTRE-01 · les trois mois de découverte : une seule carte pleine, la séance longue en entrée secondaire */
.de-etapes{display:flex;gap:6px;list-style:none;margin:0;padding:0;font-size:.75rem;color:var(--gray)}
.de-etapes li{flex:1;border-top:2px solid var(--filet);padding-top:6px}
.de-etapes li[aria-current="step"]{border-top-color:var(--gold-texte);color:var(--ink);font-weight:700}
.de-choix{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.de-longue{border-top:1px solid var(--filet);padding-top:12px;margin-top:4px;display:flex;flex-direction:column;gap:6px}
.de-longue .q-eyebrow{outline:none}
.de-longue-nom{font-size:1.0625rem;line-height:1.35;color:var(--ink)}
.de-longue p{font-size:.875rem;line-height:1.55;color:var(--gray);margin:0}
.de-contour{width:100%;min-height:44px;padding:12px;font-size:.9375rem;background:transparent;border:1px solid var(--gold-texte);color:var(--gold-texte);font-weight:600}
.de-vecue{color:var(--ink)!important;font-weight:600}
.de-semaine{margin-top:10px}
.de-semaine b{display:block;font-size:.875rem;color:var(--ink);margin-bottom:6px}
.de-jours-sem{display:flex;gap:8px;list-style:none;margin:0;padding:0}
.de-jours-sem li{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:.75rem;color:var(--gray)}
.de-jours-sem i{display:block;width:16px;height:16px;border-radius:50%;border:2px solid var(--gold-texte);box-sizing:border-box}
.de-jours-sem i.fait{background:var(--gold-texte)}
.de-suite{display:flex;flex-direction:column;gap:6px;border-top:1px dashed var(--filet-fort);padding-top:8px}
.de-boite{display:flex;flex-direction:column;gap:8px}
#homeDecouverte button.lien{min-height:44px}
/* Q2B-R7 (A) : deux lignes dépliantes ; Q2B-R8 (A) : sur le fond qui vit, l'or des liens et contours des trois mois s'approfondit
   (#5C3F18 ≥ 4,64:1 sur la borne sombre du soir, preuve du studio). Les boutons pleins, la marque, les piliers et la nuit gardent leurs couleurs. */
.de-question{font-size:.9375rem;line-height:1.45;color:var(--ink);margin:6px 0 0}
#homeDecouverte .de-deplier{display:flex;align-items:center;justify-content:space-between;width:100%;border-top:1px solid var(--filet)}
#homeDecouverte .de-deplier::after{content:"+";font:400 1.0625rem/1 Georgia,serif;padding-left:12px}
#homeDecouverte .de-deplier[aria-expanded="true"]::after{content:"−"}
.de-deplie{display:flex;flex-direction:column;gap:6px}
#homeDecouverte[data-trois]{--de-or-lien:var(--gold-texte)}
body:not(.night) #homeDecouverte[data-trois]{--de-or-lien:#5C3F18}
/* lame du 15 oct. · la vraie nuit d'Aujourd'hui (22 h – 6 h) est le fond clair voilé de bleu, pas body.night : sur sa borne sombre
   (156,152,188), #5C3F18 tombe à 3,50:1 ; #422D0E y tient 4,73:1 (soir 6,27:1). */
body[data-fond="nuit"]:not(.night) #homeDecouverte[data-trois]{--de-or-lien:#422D0E}
#homeDecouverte[data-trois] button.lien,#homeDecouverte[data-trois] .de-contour{color:var(--de-or-lien);border-color:var(--de-or-lien)}
#homeDecouverte[data-trois] button.lien{border-color:var(--filet)}
/* seconde lame (RPORT2-01) · les petits textes gris de la carte posés sur le fond vivant : #6B5A43 y tombe à 3,19:1 le soir et 2,41:1 la nuit.
   Encre douce plus forte, la hiérarchie reste portée par la taille et la graisse. Bornes : matin 6,10 · midi 6,74 · soir 4,89 (#4E3F2C) ; nuit 4,79 (#3A2E20). */
body:not(.night) #homeDecouverte[data-trois]{--gray:#4E3F2C}
body[data-fond="nuit"]:not(.night) #homeDecouverte[data-trois]{--gray:#3A2E20}

:root{--feuille-ok:1}
