
:root{
  --paper:#F5EFE3; --ink:#241F18; --gold:#A9823C; --gold-soft:#C19A63;
  --gray:#6B5A43; --card:#FBF7EE; --night:#12100C; --night-ink:#D8CDBA; --cloud-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%}
/* 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. */
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)}
body.night #paperFx{opacity:0}
main, header{position:relative;z-index:1}
/* --- L'œuf : le conseil caché --- */
#egg{display:none; margin:30px auto 2px; background:none; border:none; cursor:pointer;
  font-size:19px; color:var(--gold); opacity:.4; padding:10px;
  animation:eggbreathe 7s ease-in-out infinite}
#egg.show{display:block}
#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}
.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:13px; letter-spacing:.28em; text-transform:uppercase; color:var(--gold)}
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:11.5px; letter-spacing:.24em; text-transform:uppercase; color:var(--gray); margin:18px 0 6px}
h1{font-size:26px; 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 rgba(142,106,47,.28); border-radius:14px;
  padding:18px 18px; font-size:17px; text-align:left; cursor:pointer; color:var(--ink);
  font-family:inherit; transition:border-color .2s, transform .08s;
  display:flex; align-items:baseline; gap:10px;
}
.opt small{color:var(--gray); font-size:13px; font-family:-apple-system,sans-serif}
.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}
.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:20px; padding:20px 8px}
.durrow .opt small{display:block; font-size:12px}
.intens{display:none; margin-top:20px}
.intens.on{display:block; animation:appear .35s ease both}
.intens .ilab{font-size:12px; 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:15px; 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:url('assets/orb-premium-v2.webp?v=113') center/contain no-repeat;
  mask:url('assets/orb-premium-v2.webp?v=113') center/contain no-repeat;
  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. */
@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:12px; letter-spacing:.26em; text-transform:uppercase; color:var(--gray)}
body.night .session-int{color:rgba(216,205,186,.55)}
.session-time{font-size:15px; color:var(--gray); font-family:-apple-system,sans-serif}
.seg-label{min-height:22px; font-size:14px; 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}
.btn{
  font-family:inherit; font-size:16px; padding:14px 26px; border-radius:999px; cursor:pointer;
  border:1px solid var(--gold); background:transparent; color:var(--gold);
}
.btn.solid{background:var(--gold); color:#fff}
.btn:active{transform:scale(.97)}
body.night .btn{border-color:var(--gold-soft); color:var(--gold-soft)}

/* ---------- Fin ---------- */
#sEnd{align-items:center; justify-content:center; text-align:center; gap:16px}
.done-title{font-size:30px}
.chain{display:flex; gap:0; align-items:center; margin:6px 0 2px}
.chain svg{display:block}
.done-sub{color:var(--gray); font-size:15px; 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:20px; 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 ---------- */
.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);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)}
details.grp>summary::-webkit-details-marker{display:none}
details.grp>summary::after{content:"+";font:400 17px/1 Georgia,serif;color:var(--gold);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 rgba(142,106,47,.42);
  border-radius:16px;background:linear-gradient(180deg, rgba(169,130,60,.09), 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:'Fraunces',Georgia,serif;font-size:16.5px;line-height:1.35}
.cardlink .cl-note{font:12.5px/1.5 -apple-system,system-ui,sans-serif;color:var(--gray);margin-top:4px}
.cardlink .cl-fleche{flex:0 0 auto;color:var(--gold);font-size:20px}
.opt.danger{border-color:rgba(162,59,46,.4)}
.opt.danger:active{border-color:rgba(162,59,46,.75)}
/* 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. */
#subtitle{transition:opacity 1.1s ease}
#subtitle.arrive{opacity:.88}
#subtitle.repose{opacity:.28}
#subtitle.parti{opacity:0}
@media (prefers-reduced-motion:reduce){ #subtitle{transition:opacity .2s linear} }
.sheet{position:fixed; top:env(safe-area-inset-top); left:0; right:0; bottom:0;
  background:rgba(200,186,160,.55); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px);
  display:none; z-index:10}
body.night .sheet{background:rgba(18,16,12,.55)}
.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:18px; font-weight:normal; margin-bottom:16px}
.pref{margin-bottom:16px}
.pref .lab{font-size:12px; letter-spacing:.18em; text-transform:uppercase; color:var(--gray); margin-bottom:8px}
.seg-ctrl{display:flex; border:1px solid rgba(142,106,47,.35); 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)}
.seg-ctrl button{flex:1; padding:11px 6px; background:transparent; border:none; font-family:-apple-system,sans-serif; font-size:14px; color:var(--ink); cursor:pointer}
.seg-ctrl button.sel{background:var(--gold); color:#fff}
.demo-note{font-size:12.5px; color:var(--gray); font-family:-apple-system,sans-serif; line-height:1.5; margin-top:10px}
.tipcard{margin-top:16px; background:var(--card); border:1px solid rgba(142,106,47,.24); border-radius:14px; padding:14px 16px 15px; font-size:15px; line-height:1.5; position:relative}
.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:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin:14px 0 8px}
.planlab:first-child{margin-top:0}
.planlab small{color:var(--gray);letter-spacing:.04em;text-transform:none;font-size:11.5px;margin-left:6px}
.tiplab{font-size:11.5px; letter-spacing:.22em; text-transform:uppercase; color:var(--gold); margin-bottom:14px}
.timein{width:100%; border:1px solid rgba(142,106,47,.35); border-radius:10px; padding:12px; font-family:Georgia,serif; font-size:18px; 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:rgba(142,106,47,.3)}
.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:rgba(142,106,47,.35)}
.tlit .tlh{font-size:18px; color:var(--gold)}
.tlit .tll{font-size:15.5px; margin-top:1px}
.tlit .tln{font-size:12.5px; 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}
@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}
.opt.pill .pnum{font-size:12px;color:var(--pc);letter-spacing:.08em;margin-right:6px}
.wchip{font-family:-apple-system,sans-serif;font-size:11.5px;padding:5px 10px;border-radius:999px;border:1px solid rgba(142,106,47,.3);background:transparent;color:var(--gray)}
.wchip.sel{border-color:var(--gold);color:var(--gold)}
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)}
#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) ===== */
.tabbar{position:fixed;left:0;right:0;bottom:0;display:none;gap:0;background:var(--card);border-top:1px solid rgba(169,130,60,.22);padding:6px 4px calc(env(safe-area-inset-bottom) + 6px);z-index:9}
.tabbar button{flex:1;background:none;border:none;font-family:Georgia,serif;font-size:12.5px;color:var(--gray);padding:9px 2px 7px;cursor:pointer;border-radius:10px;letter-spacing:.01em}
.tabbar button.on{color:var(--gold);font-weight:bold}
.tabbar button:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
body.tabbed .screen{padding-bottom:92px}
.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:13.5px;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)}
.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}
@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{background:var(--card);border:1px solid rgba(169,130,60,.18);border-radius:14px;padding:13px 15px;margin-bottom:10px;cursor:pointer}
.jmeta{font-size:11.5px;color:var(--gray);font-family:-apple-system,system-ui,sans-serif;margin-bottom:5px}
.jtext{font-size:14.5px;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 rgba(169,130,60,.3);background:none;border-radius:999px;padding:6px 12px;font-family:Georgia,serif;font-size:12.5px;color:var(--gray);cursor:pointer}
.jfilters button.on{background:var(--gold);color:#fff;border-color:var(--gold)}

/* ===== 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;
  -webkit-mask:url('assets/orb-premium-v2.webp?v=113') center/contain no-repeat;mask:url('assets/orb-premium-v2.webp?v=113') center/contain no-repeat}
.orb-v79-cloud{width:150%;height:150%;max-width:none;object-fit:contain;left:-25%;top:-25%;will-change:transform,opacity;
  filter:grayscale(1) contrast(1.28) brightness(1.18)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 initial, parcours offert et impact Diagnostic */
.discovery-next{background:var(--card);border:1px solid rgba(169,130,60,.22);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);margin-bottom:4px}
.discovery-next .dn-t{font-size:16px;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)}


/* ===== 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);margin-bottom:4px}
.diag-active-strip .das-t{font-size:14px;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}
.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);margin-bottom:7px}
.diag-activation-hero .t{font-size:20px;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:16px;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)}
.diag-impact-detail{display:none;margin:8px 0 0;padding:11px 12px;border-radius:12px;background:rgba(142,106,47,.055);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,rgba(169,130,60,.10),rgba(169,130,60,.025));border:1px solid rgba(169,130,60,.34);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);margin-bottom:5px}
.diag-door-arrival .dda-t{font-size:17px;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);margin-bottom:4px}
.diag-pedagogy .dp .t{font-size:15.5px;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:rgba(142,106,47,.07);border:1px solid rgba(142,106,47,.24);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);border:1px solid rgba(142,106,47,.28);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 rgba(142,106,47,.32);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:rgba(142,106,47,.055);border-radius:10px;padding:10px 12px;margin-top:12px}


/* V102 · Aujourd'hui = décider, Explorer = choisir */
.today-choice-intro{margin:0 0 12px;padding:14px 15px;border:1px solid rgba(169,130,60,.24);border-radius:14px;background:rgba(255,255,255,.22)}
.today-choice-intro .t{font-size:17px;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 rgba(169,130,60,.24);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);margin-bottom:5px}
.today-entry .t{font-size:18px;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:12.5px;padding:9px;border-color:rgba(142,106,47,.30)}


/* 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.landing-locked #gearBtn,
body.landing-locked #profBtn{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
}

