*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--fond);color:var(--texte);font-family:var(--police);line-height:1.6;font-size:17px}
img,video,canvas,iframe{max-width:100%;display:block}
a{color:var(--accent-texte,var(--accent))}
a:hover{color:var(--accent2-texte,var(--accent2))}
h1,h2,h3,h4{line-height:1.2;margin:0 0 .5em;font-weight:650;letter-spacing:-.01em}
h1{font-size:clamp(2rem,5vw,3.4rem)}h2{font-size:clamp(1.5rem,3vw,2.2rem)}h3{font-size:1.25rem}
p{margin:0 0 1em}
code{background:var(--carte);padding:.1em .35em;border-radius:6px;font-size:.92em}
.fs-ligne{width:min(var(--largeur),100% - 2rem);margin-inline:auto}
.fs-bloc{padding:clamp(1.2rem,3vw,2.4rem) 0}
.fs-bloc>*:not(.fs-fond){width:min(var(--largeur),100% - 2rem);margin-inline:auto}
.fs-al-centre{text-align:center}.fs-al-droite{text-align:right}.fs-al-gauche{text-align:left}
.fs-al-centre .fs-media,.fs-al-centre figure{margin-inline:auto}
.fs-al-droite .fs-media{margin-left:auto;margin-right:0}
.fs-al-gauche .fs-media{margin-left:0}
/* en-tête */
.fs-entete{padding:.6rem 0;background:color-mix(in srgb,var(--fond) 82%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--bord);z-index:50}
.fs-collant{position:sticky;top:0}
.fs-entete .fs-ligne{display:flex;align-items:center;gap:1rem}
.fs-marque{display:flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--texte);font-weight:700;font-size:1.15rem;margin-right:auto}
.fs-marque img{height:36px;width:auto;border-radius:8px}
.fs-entete nav ul{list-style:none;margin:0;padding:0;display:flex;gap:.25rem;flex-wrap:wrap}
.fs-entete nav a{display:block;padding:.45rem .8rem;border-radius:999px;text-decoration:none;color:var(--texte)}
.fs-entete nav a:hover,.fs-entete nav a.actif{background:var(--carte);color:var(--accent-texte,var(--accent))}
.fs-menu-bouton{display:none;background:var(--carte);color:var(--texte);border:0;border-radius:10px;padding:.4rem .7rem;font-size:1.2rem;cursor:pointer}
@media (max-width:760px){.fs-menu-bouton{display:block}.fs-entete nav{display:none;width:100%}.fs-entete.ouvert nav{display:block}.fs-entete nav ul{flex-direction:column}.fs-entete .fs-ligne{flex-wrap:wrap}}
/* héros */
.fs-hero{position:relative;overflow:hidden;display:grid;place-items:center;padding:0;isolation:isolate}
.fs-hero-petite{min-height:38vh}.fs-hero-moyenne{min-height:62vh}.fs-hero-pleine{min-height:100vh}
.fs-hero .fs-fond{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-1;opacity:.9}
.fs-hero-contenu{padding:clamp(2rem,6vw,5rem) 1rem;max-width:900px;text-shadow:0 2px 24px rgba(0,0,0,.45)}
.fs-hero .fs-sous-titre{font-size:clamp(1.05rem,2vw,1.4rem);color:var(--texte);opacity:.92}
.fs-hero::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(0,0,0,.15),rgba(0,0,0,.45))}
/* boutons */
.fs-bouton{display:inline-block;background:var(--accent-plein,var(--accent));color:var(--sur-accent,#fff);border:2px solid var(--accent-plein,var(--accent));padding:.7rem 1.4rem;border-radius:999px;text-decoration:none;font-weight:600;cursor:pointer;font-size:1rem;transition:transform .12s,filter .12s}
.fs-bouton:hover{filter:brightness(1.1);transform:translateY(-1px);color:var(--sur-accent,#fff)}
.fs-bouton.fs-contour{background:transparent;color:var(--accent-texte,var(--accent))}
.fs-bouton.fs-grand{padding:1rem 2rem;font-size:1.15rem}
/* grilles, cartes */
.fs-grille{display:grid;gap:1.2rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.fs-grille-1{grid-template-columns:1fr}.fs-grille-2{grid-template-columns:repeat(2,1fr)}.fs-grille-3{grid-template-columns:repeat(3,1fr)}.fs-grille-4{grid-template-columns:repeat(4,1fr)}
.fs-grille-5{grid-template-columns:repeat(5,1fr)}.fs-grille-6{grid-template-columns:repeat(6,1fr)}
@media (max-width:900px){.fs-grille-3,.fs-grille-4,.fs-grille-5,.fs-grille-6{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.fs-grille-2,.fs-grille-3,.fs-grille-4,.fs-grille-5,.fs-grille-6{grid-template-columns:1fr}}
.fs-carte{background:var(--carte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:1.2rem;color:var(--texte);text-decoration:none;display:block;transition:transform .15s,border-color .15s}
a.fs-carte:hover{transform:translateY(-3px);border-color:var(--accent)}
.fs-carte img{border-radius:calc(var(--arrondi) - 4px);margin-bottom:.8rem;aspect-ratio:16/9;object-fit:cover;width:100%}
.fs-carte h3{margin-bottom:.3rem}.fs-carte p{margin:0;color:var(--muet)}
.fs-plat .fs-carte{background:transparent;border:0;padding:0}
.fs-col h3{color:var(--accent-texte,var(--accent))}
/* séparateurs */
hr{border:0;height:1px;background:var(--bord);margin:0}
hr.fs-sep-points{background:none;height:auto;text-align:center}
hr.fs-sep-points::after{content:"• • •";content:"• • •" / "";color:var(--muet);letter-spacing:.6em}
hr.fs-sep-vague{height:14px;background:radial-gradient(circle at 10px -5px,transparent 12px,var(--bord) 13px,transparent 14px) repeat-x;background-size:20px 20px}
/* texte */
.fs-prose{max-width:72ch}.fs-al-centre .fs-prose{margin-inline:auto}
.fs-prose.fs-grand{font-size:1.2rem}
.fs-prose ul,.fs-prose ol{padding-left:1.4em}
blockquote{margin:0;padding:1.2rem 1.6rem;border-left:4px solid var(--accent);background:var(--carte);border-radius:0 var(--arrondi) var(--arrondi) 0;font-size:1.2rem;font-style:italic;max-width:72ch}
blockquote p{margin:0}blockquote cite{display:block;margin-top:.6rem;font-style:normal;color:var(--muet);font-size:.95rem}
.fs-faq details{background:var(--carte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:.9rem 1.2rem;margin-bottom:.6rem}
.fs-faq summary{cursor:pointer;font-weight:600;list-style:none;display:flex;justify-content:space-between;align-items:center}
.fs-faq summary::after{content:"+";content:"+" / "";color:var(--accent-texte,var(--accent));font-size:1.4rem}
.fs-faq details[open] summary::after{content:"−";content:"−" / ""}
.fs-faq details>div{padding-top:.6rem;color:var(--muet)}
.fs-reseaux{display:flex;flex-wrap:wrap;gap:.6rem}.fs-al-centre .fs-reseaux{justify-content:center}.fs-al-droite .fs-reseaux{justify-content:flex-end}
.fs-pastille{background:var(--carte);border:1px solid var(--bord);border-radius:999px;padding:.45rem 1rem;text-decoration:none;color:var(--texte)}
.fs-pastille:hover{border-color:var(--accent);color:var(--accent-texte,var(--accent))}
/* médias */
.fs-media{margin:0}.fs-media img,.fs-media video{width:100%}
.fs-media.fs-l-petite{max-width:420px}.fs-media.fs-l-moyenne{max-width:760px}.fs-media.fs-l-pleine{max-width:none}
.fs-arrondi,.fs-media video,.fs-media img{border-radius:var(--arrondi)}
figcaption{color:var(--muet);font-size:.92rem;margin-top:.5rem;text-align:center}
.fs-galerie{display:grid;gap:.6rem}
.fs-vignette img{aspect-ratio:1;object-fit:cover;width:100%;border-radius:calc(var(--arrondi) - 4px);transition:transform .15s}
.fs-vignette:hover img{transform:scale(1.03)}
.fs-ratio{position:relative;width:100%;border-radius:var(--arrondi);overflow:hidden;background:#000}
.fs-ratio-16-9{aspect-ratio:16/9}.fs-ratio-4-3{aspect-ratio:4/3}.fs-ratio-9-16{aspect-ratio:9/16;max-width:420px;margin-inline:auto}
.fs-ratio iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
iframe.fs-carte,iframe.fs-iframe{width:100%;border:0;border-radius:var(--arrondi);background:var(--carte)}
audio{width:100%}
pre.fs-code{background:var(--carte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:1rem 1.2rem;overflow:auto;font-size:.92rem;position:relative}
pre.fs-code[data-langage]::before{content:attr(data-langage);position:absolute;top:.4rem;right:.8rem;color:var(--muet);font-size:.75rem;text-transform:uppercase}
.fs-vide{background:var(--carte);border:1px dashed var(--bord);border-radius:var(--arrondi);color:var(--muet);display:grid;place-items:center;min-height:120px;font-size:2rem;padding:1rem;text-align:center}
.fs-actif-absent{font-size:1rem}
/* WebGL */
canvas.fs-webgl{width:100%;height:360px;border-radius:var(--arrondi);background:#000;display:block;color:var(--muet);transition:opacity .5s}
canvas.fs-webgl.fs-plein-fond{position:fixed;inset:0;width:100vw;height:100vh !important;z-index:-2;border-radius:0}
.fs-fs_webgl.fs-l-petite canvas{max-width:420px;margin-inline:auto}.fs-fs_webgl.fs-l-moyenne canvas{max-width:760px;margin-inline:auto}
.fs-note{color:var(--muet);font-size:.9rem;margin:.5rem 0 0;text-align:center}
.fs-micro-bouton{position:absolute;margin:-48px 0 0 12px;background:var(--accent-plein,var(--accent));color:var(--sur-accent,#fff);border:0;border-radius:999px;padding:.4rem .9rem;cursor:pointer}
/* funscript */
.fs-funscript{position:relative;background:var(--carte);border:1px solid var(--bord);border-radius:var(--arrondi);overflow:hidden}
.fs-funscript canvas{width:100%;height:100%;display:block;cursor:crosshair}
.fs-funscript .fs-stats{position:absolute;right:.7rem;top:.4rem;font-size:.78rem;color:var(--muet);background:color-mix(in srgb,var(--fond) 70%,transparent);padding:.15rem .5rem;border-radius:999px;pointer-events:none}
.fs-funscript p{position:absolute;left:.7rem;top:.3rem;margin:0;font-size:.85rem;font-weight:600;pointer-events:none}
.fs-lecteur video{width:100%;border-radius:var(--arrondi)}
.fs-lecteur .fs-funscript{margin-top:.6rem}
.fs-lecteur-actions{margin:.8rem 0 0;text-align:center}
/* contact */
.fs-contact{display:grid;gap:.9rem;max-width:640px}
.fs-contact label{display:grid;gap:.3rem;font-weight:600;font-size:.95rem}
.fs-contact input,.fs-contact textarea{font:inherit;padding:.7rem .9rem;border-radius:10px;border:1px solid var(--bord);background:var(--carte);color:var(--texte)}
.fs-contact input:focus,.fs-contact textarea:focus{outline:2px solid var(--accent);border-color:transparent}
.fs-contact .fs-bouton{justify-self:start}
/* pied */
.fs-pied{border-top:1px solid var(--bord);color:var(--muet);font-size:.95rem;margin-top:2rem}
.fs-pied-liens{display:flex;gap:1rem;flex-wrap:wrap;margin:.5rem 0}
.fs-mention{font-size:.8rem;opacity:var(--mention-opacite,.7)}
/* lightbox */
.fs-lightbox{position:fixed;inset:0;background:rgba(0,0,0,.92);display:grid;place-items:center;z-index:1000;padding:2rem}
.fs-lightbox img{max-width:92vw;max-height:82vh;object-fit:contain;border-radius:8px;box-shadow:0 10px 60px rgba(0,0,0,.6)}
.fs-lightbox figcaption{color:#ddd;margin-top:.8rem}
.fs-lightbox button{position:absolute;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.12);color:#fff;border:0;font-size:2rem;width:52px;height:52px;border-radius:50%;cursor:pointer}
.fs-lightbox .prec{left:1rem}.fs-lightbox .suiv{right:1rem}.fs-lightbox .fermer{top:1rem;right:1rem;transform:none;font-size:1.4rem}
/* accessibilité (2026-09-25, Claude) : lien d'évitement montré au clavier, texte pour lecteurs d'écran seulement.
   « content: X / "" » : texte décoratif généré par CSS, muet pour les lecteurs d'écran (repli : la ligne d'avant). */
.fs-saut{position:absolute;left:.75rem;top:-5rem;z-index:10000;padding:.6rem 1rem;border-radius:10px;background:var(--texte);color:var(--fond);font-weight:650;text-decoration:none}
.fs-saut:focus{top:.75rem}
.fs-lecteur{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important}
/* aperçu Studio */
.fs-selection{outline:3px solid var(--accent2);outline-offset:-3px;box-shadow:inset 0 0 0 9999px color-mix(in srgb,var(--accent2) 6%,transparent)}
body.fs-apercu .fs-bloc{cursor:pointer}
@media print{.fs-entete,.fs-menu-bouton,canvas.fs-webgl{display:none}}

/* ══════════════ vitrine & marketing — animations de site ══════════════ */
:root{--fs-ease:cubic-bezier(.2,.7,.2,1)}
[hidden]{display:none !important}
body{overflow-x:clip}
.fs-reveal{opacity:0;transform:translateY(26px);transition:opacity .8s var(--fs-ease),transform .8s var(--fs-ease)}
.fs-reveal.fs-vu{opacity:1;transform:none}
body[data-anim="intenses"] .fs-reveal{transform:translateY(48px) scale(.97);filter:blur(6px);transition-duration:1s}
body[data-anim="intenses"] .fs-reveal.fs-vu{filter:none}
.fs-cascade>*{opacity:0;transform:translateY(18px);transition:opacity .6s var(--fs-ease),transform .6s var(--fs-ease);transition-delay:calc(var(--i,0) * 70ms)}
.fs-vu .fs-cascade>*,.fs-cascade.fs-vu>*{opacity:1;transform:none}
.fs-barre-progression{position:fixed;top:0;left:0;height:3px;width:0;z-index:2000;background:linear-gradient(90deg,var(--accent),var(--accent2));box-shadow:0 0 12px var(--accent2);transition:width .1s linear}
.fs-halo{position:fixed;left:0;top:0;width:520px;height:520px;border-radius:50%;pointer-events:none;z-index:0;opacity:0;transform:translate(-50%,-50%);background:radial-gradient(circle,color-mix(in srgb,var(--accent) 26%,transparent),color-mix(in srgb,var(--accent2) 10%,transparent) 40%,transparent 68%);mix-blend-mode:screen;transition:opacity .4s}
.fs-halo.fs-halo-visible{opacity:1}
body>.fs-bloc,body>header,body>footer,body>main>.fs-bloc{position:relative;z-index:1}
/* ── en-tête : actions, compte, verre ── */
.fs-entete-actions{display:flex;align-items:center;gap:.5rem;margin-left:.5rem}
.fs-entete-action{padding:.45rem 1rem;font-size:.95rem}
.fs-entete-compte{display:inline-flex;align-items:center;gap:.45rem;padding:.35rem .9rem .35rem .5rem;transition:border-color .2s,box-shadow .2s}
.fs-entete-compte:hover{border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 18%,transparent)}
.fs-entete-compte.fs-connecte .fs-avatar{background:linear-gradient(135deg,var(--degrade-a,var(--accent)),var(--degrade-b,var(--accent2)));color:var(--sur-degrade,#fff)}
.fs-avatar{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--carte);font-size:.9rem}
.fs-entete-verre{background:color-mix(in srgb,var(--fond) 55%,transparent);backdrop-filter:blur(18px) saturate(1.4)}
@media (max-width:760px){.fs-entete-actions{margin-left:auto}.fs-entete-action{display:none}}
/* ── héros enrichi ── */
.fs-hero-badge{display:inline-block;margin:0 0 1rem;padding:.35rem .95rem;border-radius:999px;font-size:.85rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--texte);background:color-mix(in srgb,var(--accent) 22%,transparent);border:1px solid color-mix(in srgb,var(--accent) 55%,transparent);backdrop-filter:blur(8px)}
.fs-hero-boutons{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap;margin:1.4rem 0 0}
.fs-al-gauche .fs-hero-boutons{justify-content:flex-start}.fs-al-droite .fs-hero-boutons{justify-content:flex-end}
.fs-hero-etiquettes{list-style:none;padding:0;margin:1.4rem 0 0;display:flex;gap:.5rem 1.4rem;justify-content:center;flex-wrap:wrap;color:var(--muet);font-size:.92rem}
.fs-hero-etiquettes li::before{content:"✓";content:"✓" / "";color:var(--accent2-texte,var(--accent2));margin-right:.4rem;font-weight:700}
.fs-bloc>.fs-hero-indicateur,.fs-hero-indicateur{position:absolute;left:50%;bottom:1.4rem;transform:translateX(-50%);width:26px;margin:0;height:42px;border:2px solid color-mix(in srgb,var(--texte) 60%,transparent);border-radius:14px;display:block;z-index:2}
.fs-hero-indicateur span{position:absolute;left:50%;top:7px;width:4px;height:8px;margin-left:-2px;border-radius:2px;background:var(--accent2);animation:fs-molette 1.8s infinite}
@keyframes fs-molette{0%{transform:translateY(0);opacity:1}70%{transform:translateY(14px);opacity:0}100%{opacity:0}}
.fs-hero h1{font-size:clamp(2.4rem,6.4vw,4.6rem);letter-spacing:-.02em;line-height:1.05}
.fs-hero .fs-fond{transform:translate3d(calc(var(--px,0) * 1px),calc(var(--py,0) * 1px),0) scale(1.08);transition:transform .25s ease-out;will-change:transform}
.fs-anim-fondu>*{animation:fs-monte .9s var(--fs-ease) backwards}
.fs-anim-fondu>*:nth-child(2){animation-delay:.15s}.fs-anim-fondu>*:nth-child(3){animation-delay:.3s}.fs-anim-fondu>*:nth-child(4){animation-delay:.45s}.fs-anim-fondu>*:nth-child(5){animation-delay:.6s}
.fs-anim-glissement>*{animation:fs-glisse .9s var(--fs-ease) backwards}
.fs-anim-glissement>*:nth-child(2){animation-delay:.15s}.fs-anim-glissement>*:nth-child(3){animation-delay:.3s}.fs-anim-glissement>*:nth-child(4){animation-delay:.45s}
.fs-mot-l{white-space:nowrap;display:inline-block}
.fs-anim-lettres h1 .fs-mot-l span{display:inline-block;animation:fs-lettre .7s var(--fs-ease) both;animation-delay:calc(var(--i) * 38ms)}
/* fill-mode BACKWARDS (pas both) : une animation « remplie » garde une couche composée et le texte en dégradé (background-clip:text) du mot qui tourne ne se peint plus */
.fs-anim-lettres h1 .fs-mots{animation:fs-monte .7s var(--fs-ease) backwards;animation-delay:.9s}
.fs-anim-lettres>*:not(h1){animation:fs-monte .9s var(--fs-ease) backwards;animation-delay:.9s}
@keyframes fs-monte{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes fs-glisse{from{opacity:0;transform:translateX(-40px)}to{opacity:1;transform:none}}
@keyframes fs-lettre{from{opacity:0;transform:translateY(.6em) rotate(6deg);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
.fs-mots{display:inline-block;vertical-align:bottom;text-align:left}
/* le dégradé est sur l'élément qui PORTE le texte : background-clip:text ne traverse pas un descendant inline-block */
.fs-mot{display:inline-block;transition:opacity .35s,transform .35s var(--fs-ease);background:linear-gradient(90deg,var(--accent-texte,var(--accent)),var(--accent2-texte,var(--accent2)));-webkit-background-clip:text;background-clip:text;color:transparent}
.fs-mot.fs-sort{opacity:0;transform:translateY(-.5em)}.fs-mot.fs-entre{opacity:0;transform:translateY(.5em)}
/* ── titre animé ── */
.fs-ta{font-size:clamp(2rem,5.4vw,3.8rem);margin:0;line-height:1.1}
.fs-ta-geante{font-size:clamp(2.6rem,8vw,6rem)}
.fs-ta-sous{color:var(--muet);font-size:clamp(1.05rem,2vw,1.35rem);max-width:60ch;margin:.8rem auto 0}
.fs-al-gauche .fs-ta-sous{margin-left:0}
.fs-ta-degrade{background:linear-gradient(90deg,var(--accent-texte,var(--accent)),var(--accent2-texte,var(--accent2)),var(--accent-texte,var(--accent)));background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:fs-coule 5s linear infinite}
@keyframes fs-coule{to{background-position:220% 0}}
.fs-ta-lettres .fs-mot-l span{display:inline-block;opacity:0;transform:translateY(.7em)}
.fs-vu .fs-ta-lettres .fs-mot-l span,.fs-ta-lettres.fs-vu .fs-mot-l span{animation:fs-lettre .7s var(--fs-ease) both;animation-delay:calc(var(--i) * 34ms)}
.fs-ta-machine::after{content:"▍";content:"▍" / "";color:var(--accent2-texte,var(--accent2));animation:fs-curseur 1s steps(1) infinite;font-weight:300}
@keyframes fs-curseur{50%{opacity:0}}
.fs-ta-neon{color:var(--ta-neon,#fff);text-shadow:0 0 .06em #fff,0 0 .22em var(--accent2),0 0 .5em var(--accent2),0 0 1.1em var(--accent);animation:fs-neon 3.6s ease-in-out infinite}
@keyframes fs-neon{0%,100%{opacity:1}47%{opacity:.86}49%{opacity:.42}51%{opacity:.95}53%{opacity:.6}}
.fs-ta-vague .fs-mot-l span{display:inline-block;animation:fs-onde 2.6s ease-in-out infinite;animation-delay:calc(var(--i) * 62ms)}
@keyframes fs-onde{0%,100%{transform:translateY(0)}30%{transform:translateY(-.22em)}60%{transform:translateY(.1em)}}
.fs-ta-mots .fs-mot-l{display:inline-block;opacity:0;transform:translateY(.55em) rotateX(35deg);transform-origin:50% 100%}
.fs-vu .fs-ta-mots .fs-mot-l,.fs-ta-mots.fs-vu .fs-mot-l{animation:fs-mot .8s var(--fs-ease) both;animation-delay:calc(var(--m) * 105ms)}
@keyframes fs-mot{to{opacity:1;transform:none}}
.fs-ta-decoupe .fs-mot-l span{display:inline-block;clip-path:inset(0 0 100% 0);opacity:0}
.fs-vu .fs-ta-decoupe .fs-mot-l span,.fs-ta-decoupe.fs-vu .fs-mot-l span{animation:fs-decoupe .8s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(var(--i) * 26ms)}
@keyframes fs-decoupe{from{clip-path:inset(0 0 100% 0);opacity:0}to{clip-path:inset(0 0 0 0);opacity:1}}
.fs-ta-relief{color:var(--texte);text-shadow:1px 1px 0 color-mix(in srgb,var(--accent) 70%,transparent),2px 2px 0 color-mix(in srgb,var(--accent) 52%,transparent),3px 3px 0 color-mix(in srgb,var(--accent) 34%,transparent),4px 4px 0 color-mix(in srgb,var(--accent) 20%,transparent),6px 7px 14px rgba(0,0,0,.45);animation:fs-relief 6s ease-in-out infinite}
@keyframes fs-relief{0%,100%{transform:translate(0,0)}50%{transform:translate(-2px,-2px)}}
.fs-ta-secousse{position:relative;color:var(--texte)}
.fs-ta-secousse::before,.fs-ta-secousse::after{content:attr(data-texte);content:attr(data-texte) / "";position:absolute;inset:0;clip-path:inset(0 0 55% 0);opacity:.85}
.fs-ta-secousse::before{color:var(--accent2-texte,var(--accent2));animation:fs-sec-a 3.4s steps(2) infinite}
.fs-ta-secousse::after{color:var(--accent-texte,var(--accent));clip-path:inset(52% 0 0 0);animation:fs-sec-b 3.4s steps(2) infinite}
@keyframes fs-sec-a{0%,88%,100%{transform:none}90%{transform:translate(-3px,1px)}94%{transform:translate(2px,-1px)}}
@keyframes fs-sec-b{0%,88%,100%{transform:none}91%{transform:translate(3px,-1px)}96%{transform:translate(-2px,1px)}}
/* la galerie des animations : une frame, son nom, son genre */
.fs-w-ganims{padding:1.2rem 0}
.fs-ga-frame{display:grid;align-content:center;justify-items:center;gap:.9rem;min-height:34vh;text-align:center;padding:1rem}
.fs-ga-frame .fs-ta{margin:0}
.fs-ga-nom{margin:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.55rem;color:var(--muet);font-size:.95rem}
.fs-ga-id{font-family:ui-monospace,Consolas,monospace;font-size:.8rem;padding:.14rem .5rem;border-radius:999px;background:color-mix(in srgb,var(--texte) 10%,transparent);color:color-mix(in srgb,var(--muet),var(--texte) var(--encre-teinte,0%))}
.fs-ga-genre{font-size:.76rem;padding:.14rem .55rem;border-radius:999px;border:1px solid var(--bord);color:var(--muet)}
/* DISSOLUTION — les lettres se délitent une à une, se reforment, recommencent.
   Le décalage vient de ``--i`` : chaque lettre part à son tour, jamais toutes
   ensemble (ce serait un fondu, pas une dissolution). */
.fs-ta-dissolution .fs-mot-l span{display:inline-block;animation:fs-dissout 4.6s ease-in-out infinite both;animation-delay:calc(var(--i) * 55ms)}
@keyframes fs-dissout{
  0%,8%{opacity:1;filter:none;transform:none}
  38%{opacity:0;filter:blur(.32em) brightness(1.7);transform:translateY(-.55em) scale(1.16) rotate(4deg)}
  39%{opacity:0;filter:blur(.32em);transform:translateY(.5em) scale(.86)}
  70%,100%{opacity:1;filter:none;transform:none}}
/* COUPÉ EN DEUX, SUR LA VAGUE — le haut et le bas de chaque lettre prennent
   deux couleurs, et la ligne de coupe ondule pendant qu'une vague la parcourt.
   Deux calques ``::before``/``::after`` du même texte, découpés en miroir. */
.fs-ta-coupe{position:relative;color:transparent;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='18' viewBox='0 0 96 18'%3E%3Cpath d='M0 9 Q12 1 24 9 T48 9 T72 9 T96 9' fill='none' stroke='%23ffffff' stroke-opacity='.55' stroke-width='2.2'/%3E%3C/svg%3E");
  background-repeat:repeat-x;background-position:0 52%;background-size:96px 18px;
  animation:fs-coupe-vague 3.2s linear infinite}
@keyframes fs-coupe-vague{from{background-position:0 52%}to{background-position:96px 52%}}
.fs-ta-coupe::before,.fs-ta-coupe::after{content:attr(data-texte);content:attr(data-texte) / "";position:absolute;inset:0;pointer-events:none}
.fs-ta-coupe::before{color:var(--accent2-texte,var(--accent2));animation:fs-coupe-haut 3.2s ease-in-out infinite}
.fs-ta-coupe::after{color:var(--accent-texte,var(--accent));animation:fs-coupe-bas 3.2s ease-in-out infinite}
@keyframes fs-coupe-haut{0%,100%{clip-path:inset(0 0 48% 0)}50%{clip-path:inset(0 0 56% 0)}}
@keyframes fs-coupe-bas{0%,100%{clip-path:inset(52% 0 0 0)}50%{clip-path:inset(44% 0 0 0)}}
/* MARBRE LIQUIDE — des veines qui coulent dans les lettres */
.fs-ta-marbre{background-image:conic-gradient(from 0deg at 30% 40%,var(--accent-texte,var(--accent)),var(--accent2-texte,var(--accent2)),#f8fafc,var(--accent2-texte,var(--accent2)),var(--accent-texte,var(--accent))),radial-gradient(60% 80% at 70% 60%,#ffffff88,transparent 60%);
  background-size:220% 220%,180% 180%;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:fs-marbre 9s ease-in-out infinite}
@keyframes fs-marbre{0%,100%{background-position:0% 50%,100% 0%}50%{background-position:100% 50%,0% 100%}}
/* ── DANS LA GALERIE, tout tourne en boucle ──
   Une animation d'ENTRÉE dure une seconde et la frame en dure trois : on
   arrive après, et elle paraît morte. Ici chaque entrée devient un CYCLE
   (apparaît, tient, s'efface, recommence) — ailleurs dans le site elle reste
   une entrée, parce qu'un titre de page ne doit pas rejouer sans fin. */
@keyframes fs-cyc-monte{0%{opacity:0;transform:translateY(.7em)}16%,66%{opacity:1;transform:none}88%,100%{opacity:0;transform:translateY(-.5em)}}
@keyframes fs-cyc-mot{0%{opacity:0;transform:translateY(.55em) rotateX(35deg)}18%,68%{opacity:1;transform:none}90%,100%{opacity:0;transform:translateY(-.4em) rotateX(-25deg)}}
@keyframes fs-cyc-decoupe{0%{clip-path:inset(0 0 100% 0);opacity:0}18%,70%{clip-path:inset(0 0 0 0);opacity:1}92%,100%{clip-path:inset(100% 0 0 0);opacity:0}}
@keyframes fs-cyc-cascade{0%{opacity:0;transform:translateY(-.8em)}16%,66%{opacity:1;transform:none}88%,100%{opacity:0;transform:translateY(.6em)}}
@keyframes fs-cyc-bascule{0%{opacity:0;transform:rotateY(96deg)}18%,68%{opacity:1;transform:none}90%,100%{opacity:0;transform:rotateY(-96deg)}}
@keyframes fs-cyc-apparait{0%{opacity:0;filter:blur(.24em)}20%,70%{opacity:1;filter:none}92%,100%{opacity:0;filter:blur(.24em)}}
@keyframes fs-cyc-rideau{0%{clip-path:inset(0 50% 0 50%)}20%,70%{clip-path:inset(0 0 0 0)}94%,100%{clip-path:inset(0 50% 0 50%)}}
@keyframes fs-cyc-pivot{0%{opacity:0;transform:perspective(900px) rotateX(72deg)}20%,70%{opacity:1;transform:none}94%,100%{opacity:0;transform:perspective(900px) rotateX(-56deg)}}
@keyframes fs-cyc-elastique{0%{opacity:0;transform:scale(.55)}22%,70%{opacity:1;transform:none}94%,100%{opacity:0;transform:scale(1.35)}}
@keyframes fs-cyc-zoomflou{0%{opacity:0;transform:scale(1.5);filter:blur(.5em)}22%,70%{opacity:1;transform:none;filter:none}94%,100%{opacity:0;transform:scale(.7);filter:blur(.35em)}}
.fs-w-ganims .fs-ta-lettres .fs-mot-l span{animation:fs-cyc-monte 3.6s ease-in-out infinite both;animation-delay:calc(var(--i) * 34ms)}
.fs-w-ganims .fs-ta-mots .fs-mot-l{animation:fs-cyc-mot 3.8s ease-in-out infinite both;animation-delay:calc(var(--m) * 105ms)}
.fs-w-ganims .fs-ta-decoupe .fs-mot-l span{animation:fs-cyc-decoupe 3.6s cubic-bezier(.22,1,.36,1) infinite both;animation-delay:calc(var(--i) * 26ms)}
.fs-w-ganims .fs-ta-cascade .fs-mot-l span{animation:fs-cyc-cascade 3.4s cubic-bezier(.3,1.4,.5,1) infinite both;animation-delay:calc(var(--i) * 42ms)}
.fs-w-ganims .fs-ta-bascule .fs-mot-l span{animation:fs-cyc-bascule 3.8s ease-in-out infinite both;animation-delay:calc(var(--i) * 46ms)}
.fs-w-ganims .fs-ta-apparition .fs-mot-l span{animation:fs-cyc-apparait 3.6s ease-in-out infinite both;animation-delay:calc(var(--i) * 30ms)}
.fs-w-ganims .fs-ta-rideau{animation:fs-cyc-rideau 3.6s cubic-bezier(.22,1,.36,1) infinite both}
.fs-w-ganims .fs-ta-pivot{animation:fs-cyc-pivot 3.6s ease-in-out infinite both}
.fs-w-ganims .fs-ta-elastique{animation:fs-cyc-elastique 3.4s cubic-bezier(.2,1.5,.4,1) infinite both}
.fs-w-ganims .fs-ta-zoom_flou{animation:fs-cyc-zoomflou 3.6s ease-in-out infinite both}
/* ── les animations de texte ajoutées le 2026-08-21 (« une trentaine ») ── */
.fs-ta-chrome{background:linear-gradient(100deg,#6b7280 0%,#f8fafc 22%,#94a3b8 38%,#e2e8f0 52%,#64748b 70%,#f1f5f9 88%,#6b7280 100%);background-size:280% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:fs-coule 6s linear infinite}
.fs-ta-braise{color:var(--ta-braise,#ffd9a0);text-shadow:0 0 .05em #fff3d6,0 0 .2em #ff9a3c,0 0 .55em #ff5e1a,0 .04em .9em #b91c1c;animation:fs-braise 2.4s ease-in-out infinite}
@keyframes fs-braise{0%,100%{text-shadow:0 0 .05em #fff3d6,0 0 .2em #ff9a3c,0 0 .55em #ff5e1a,0 .04em .9em #b91c1c}50%{text-shadow:0 0 .06em #fffaf0,0 0 .28em #ffb45c,0 0 .8em #ff7a2a,0 .05em 1.2em #dc2626}}
.fs-ta-givre{color:var(--ta-givre,#eaf6ff);text-shadow:0 0 .05em #fff,0 0 .25em #a5d8ff,0 0 .7em #4dabf7,0 .03em 1em #1864ab;animation:fs-givre 5s ease-in-out infinite}
@keyframes fs-givre{0%,100%{letter-spacing:normal;filter:none}50%{letter-spacing:.014em;filter:brightness(1.14)}}
.fs-ta-arc_en_ciel{background:linear-gradient(90deg,#ff5e5e,#ffb02e,#ffe66d,#66d97a,#4dabf7,#9b7bff,#ff5e5e);background-size:340% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:fs-coule 7s linear infinite}
.fs-ta-scan{position:relative;color:color-mix(in srgb,var(--texte) 55%,transparent);background:linear-gradient(90deg,transparent 42%,var(--accent2) 50%,transparent 58%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;animation:fs-scan 3.2s linear infinite}
@keyframes fs-scan{from{background-position:180% 0}to{background-position:-80% 0}}
.fs-ta-ombre_longue{color:var(--texte);animation:fs-ombrelongue 5s ease-in-out infinite}
@keyframes fs-ombrelongue{0%,100%{text-shadow:.06em .06em 0 color-mix(in srgb,var(--accent) 62%,transparent),.12em .12em 0 color-mix(in srgb,var(--accent) 40%,transparent),.2em .2em .3em rgba(0,0,0,.5)}50%{text-shadow:-.06em .06em 0 color-mix(in srgb,var(--accent2) 62%,transparent),-.12em .12em 0 color-mix(in srgb,var(--accent2) 40%,transparent),-.2em .2em .3em rgba(0,0,0,.5)}}
.fs-ta-pulsation{animation:fs-pulse 2.4s ease-in-out infinite;transform-origin:50% 50%}
@keyframes fs-pulse{0%,100%{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.045);filter:brightness(1.2)}}
.fs-ta-flottement{animation:fs-flotte 5.5s ease-in-out infinite}
@keyframes fs-flotte{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-.14em) rotate(-.5deg)}}
.fs-ta-tremblement{animation:fs-tremble 4.5s steps(3) infinite}
@keyframes fs-tremble{0%,82%,100%{transform:none}85%{transform:translate(-.02em,.015em)}90%{transform:translate(.025em,-.02em)}95%{transform:translate(-.015em,-.01em)}}
.fs-ta-souffle{animation:fs-souffle 6s ease-in-out infinite}
@keyframes fs-souffle{0%,100%{letter-spacing:normal;opacity:1}50%{letter-spacing:.05em;opacity:.86}}
.fs-ta-spectre{position:relative;color:var(--texte)}
.fs-ta-spectre::before,.fs-ta-spectre::after{content:attr(data-texte);content:attr(data-texte) / "";position:absolute;inset:0;mix-blend-mode:screen;pointer-events:none}
.fs-ta-spectre::before{color:#ff3b3b;animation:fs-spec-a 4s ease-in-out infinite}
.fs-ta-spectre::after{color:#3bd7ff;animation:fs-spec-b 4s ease-in-out infinite}
@keyframes fs-spec-a{0%,100%{transform:translate(-.012em,0)}50%{transform:translate(.016em,.008em)}}
@keyframes fs-spec-b{0%,100%{transform:translate(.012em,0)}50%{transform:translate(-.016em,-.008em)}}
.fs-ta-contour{color:transparent;-webkit-text-stroke:1px var(--accent2);animation:fs-contour 4.5s ease-in-out infinite}
@keyframes fs-contour{0%,100%{color:transparent;-webkit-text-stroke-color:var(--accent2)}50%{color:color-mix(in srgb,var(--accent) 80%,transparent);-webkit-text-stroke-color:var(--accent)}}
.fs-ta-ondulation .fs-mot-l span{display:inline-block;animation:fs-ondule 3.4s ease-in-out infinite;animation-delay:calc(var(--i) * 48ms)}
@keyframes fs-ondule{0%,100%{transform:translateY(0) rotate(0)}25%{transform:translateY(-.12em) rotate(-4deg)}75%{transform:translateY(.1em) rotate(4deg)}}
.fs-ta-neige .fs-mot-l span{display:inline-block;animation:fs-scintille 2.8s ease-in-out infinite;animation-delay:calc(var(--i) * 130ms)}
@keyframes fs-scintille{0%,100%{opacity:.55;filter:none}45%{opacity:1;filter:drop-shadow(0 0 .28em var(--accent2))}}
/* — les ENTRÉES : elles ne jouent qu'une fois, la galerie les relance — */
.fs-ta-cascade .fs-mot-l span{display:inline-block;opacity:0;transform:translateY(-.8em)}
.fs-vu .fs-ta-cascade .fs-mot-l span,.fs-ta-cascade.fs-vu .fs-mot-l span{animation:fs-cascade-l .62s cubic-bezier(.3,1.5,.5,1) both;animation-delay:calc(var(--i) * 42ms)}
@keyframes fs-cascade-l{to{opacity:1;transform:none}}
.fs-ta-bascule .fs-mot-l span{display:inline-block;opacity:0;transform:rotateY(96deg);transform-origin:50% 50%}
.fs-vu .fs-ta-bascule .fs-mot-l span,.fs-ta-bascule.fs-vu .fs-mot-l span{animation:fs-bascule-l .7s var(--fs-ease) both;animation-delay:calc(var(--i) * 46ms)}
@keyframes fs-bascule-l{to{opacity:1;transform:none}}
.fs-ta-apparition .fs-mot-l span{display:inline-block;opacity:0;filter:blur(.24em)}
.fs-vu .fs-ta-apparition .fs-mot-l span,.fs-ta-apparition.fs-vu .fs-mot-l span{animation:fs-apparait .9s ease-out both;animation-delay:calc(var(--i) * 30ms)}
@keyframes fs-apparait{to{opacity:1;filter:none}}
.fs-ta-rideau{clip-path:inset(0 50% 0 50%)}
.fs-vu .fs-ta-rideau,.fs-ta-rideau.fs-vu{animation:fs-rideau .95s cubic-bezier(.22,1,.36,1) both}
@keyframes fs-rideau{to{clip-path:inset(0 0 0 0)}}
.fs-ta-pivot{opacity:0;transform:perspective(900px) rotateX(72deg);transform-origin:50% 0}
.fs-vu .fs-ta-pivot,.fs-ta-pivot.fs-vu{animation:fs-pivot .9s var(--fs-ease) both}
@keyframes fs-pivot{to{opacity:1;transform:none}}
.fs-ta-elastique{opacity:0;transform:scale(.55)}
.fs-vu .fs-ta-elastique,.fs-ta-elastique.fs-vu{animation:fs-elastique .95s cubic-bezier(.2,1.7,.4,1) both}
@keyframes fs-elastique{to{opacity:1;transform:none}}
.fs-ta-zoom_flou{opacity:0;transform:scale(1.5);filter:blur(.5em)}
.fs-vu .fs-ta-zoom_flou,.fs-ta-zoom_flou.fs-vu{animation:fs-zoomflou 1s var(--fs-ease) both}
@keyframes fs-zoomflou{to{opacity:1;transform:none;filter:none}}
.fs-ta-brillance{position:relative;background:linear-gradient(110deg,var(--texte) 40%,var(--accent2-texte,var(--accent2)) 50%,var(--texte) 60%);background-size:260% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:fs-brille 4s ease-in-out infinite}
@keyframes fs-brille{0%{background-position:120% 0}100%{background-position:-120% 0}}
/* ── compteurs ── */
.fs-v-compteurs{text-align:center}
.fs-compteur{background:var(--carte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:1.4rem 1rem;position:relative;overflow:hidden}
.fs-compteur::before{content:"";position:absolute;inset:-40% -40% auto;height:80%;background:radial-gradient(circle at 50% 0,color-mix(in srgb,var(--accent) 30%,transparent),transparent 65%);pointer-events:none}
.fs-plat .fs-compteur{background:transparent;border:0}
.fs-compteur-val{font-size:clamp(2rem,4.5vw,3.2rem);font-weight:800;letter-spacing:-.03em;line-height:1;background:linear-gradient(180deg,var(--texte),color-mix(in srgb,var(--texte) 70%,var(--accent2-texte,var(--accent2))));-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums}
.fs-compteur-lib{color:var(--muet);margin-top:.5rem;font-size:.95rem}
/* ── mosaïque bento ── */
.fs-bento{display:grid;gap:1rem;grid-template-columns:repeat(var(--cols,4),1fr);grid-auto-rows:minmax(170px,auto);grid-auto-flow:dense}
.fs-tuile{position:relative;overflow:hidden;border-radius:var(--arrondi);background:var(--carte);border:1px solid var(--bord);padding:1.3rem;color:var(--texte);text-decoration:none;display:flex;flex-direction:column;justify-content:flex-end;min-height:170px;transform:perspective(900px) rotateX(var(--rx,0)) rotateY(var(--ry,0));transition:transform .25s ease-out,border-color .25s,box-shadow .25s;isolation:isolate}
.fs-tuile:hover{border-color:color-mix(in srgb,var(--accent) 70%,var(--bord));box-shadow:0 18px 50px -18px color-mix(in srgb,var(--accent) 55%,transparent)}
.fs-tuile::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:var(--tuile-degrade,linear-gradient(180deg,rgba(0,0,0,.05) 20%,rgba(5,4,12,.72) 100%))}
.fs-tuile::after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--tuile,var(--accent)) 22%,transparent),transparent 60%);opacity:0;transition:opacity .3s;pointer-events:none;z-index:1}
.fs-tuile:hover::after{opacity:1}
.fs-t-2{grid-column:span 2}.fs-t-3{grid-column:span 2;grid-row:span 2}.fs-t-4{grid-row:span 2}
.fs-tuile-media{position:absolute;inset:0;width:100%;height:100% !important;object-fit:cover;z-index:0;opacity:.62;border-radius:0;transition:opacity .3s,transform .6s var(--fs-ease)}
.fs-tuile:hover .fs-tuile-media{opacity:.85;transform:scale(1.04)}
.fs-tuile-corps{position:relative;z-index:2;text-shadow:0 1px 12px var(--tuile-ombre,rgba(0,0,0,.5))}
.fs-tuile-icone{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:12px;background:color-mix(in srgb,var(--tuile,var(--accent)) 28%,transparent);border:1px solid color-mix(in srgb,var(--tuile,var(--accent)) 50%,transparent);font-size:1.4rem;margin-bottom:.7rem;backdrop-filter:blur(6px)}
.fs-tuile h3{margin:0 0 .3rem;font-size:1.25rem}.fs-tuile p{margin:0;color:color-mix(in srgb,var(--texte) 82%,transparent);font-size:.95rem}
@media (max-width:900px){.fs-bento{grid-template-columns:repeat(2,1fr)}.fs-t-3{grid-column:span 2}}
@media (max-width:560px){.fs-bento{grid-template-columns:1fr}.fs-t-2,.fs-t-3{grid-column:span 1}.fs-t-3,.fs-t-4{grid-row:span 1}}
/* ── onglets ── */
.fs-onglets-barre{position:relative;display:flex;gap:.3rem;flex-wrap:wrap;padding:.3rem;border-radius:999px;background:var(--carte);border:1px solid var(--bord);width:max-content;max-width:100%;margin:0 auto 1.4rem}
.fs-onglet{position:relative;z-index:1;background:transparent;border:0;color:var(--muet);font:inherit;font-weight:600;padding:.6rem 1.1rem;border-radius:999px;cursor:pointer;transition:color .25s;display:inline-flex;align-items:center;gap:.45rem}
.fs-onglet.actif{color:#fff}.fs-onglet:hover{color:var(--texte)}
.fs-onglets-indicateur{position:absolute;top:.3rem;bottom:.3rem;left:0;width:0;border-radius:999px;background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 60%,var(--accent2)));transition:left .35s var(--fs-ease),width .35s var(--fs-ease);z-index:0;box-shadow:0 6px 20px -6px var(--accent)}
.fs-onglets-souligne .fs-onglets-barre{border-radius:0;background:transparent;border:0;border-bottom:1px solid var(--bord);padding:0}
.fs-onglets-souligne .fs-onglet{border-radius:0}.fs-onglets-souligne .fs-onglet.actif{color:var(--texte)}
.fs-onglets-souligne .fs-onglets-indicateur{top:auto;bottom:-1px;height:3px;border-radius:3px;box-shadow:none}
.fs-onglets-vertical{display:grid;grid-template-columns:240px 1fr;gap:1.4rem;align-items:start}
.fs-onglets-vertical .fs-onglets-barre{flex-direction:column;border-radius:var(--arrondi);width:100%;margin:0}
.fs-onglets-vertical .fs-onglet{justify-content:flex-start;border-radius:calc(var(--arrondi) - 4px)}
.fs-onglets-vertical .fs-onglets-indicateur{left:.3rem;right:.3rem;width:auto;top:0;height:0;border-radius:calc(var(--arrondi) - 4px);transition:top .35s var(--fs-ease),height .35s var(--fs-ease)}
.fs-panneau{display:grid;grid-template-columns:1fr 1fr;gap:1.6rem;align-items:center;animation:fs-monte .5s var(--fs-ease) both}
.fs-panneau[hidden]{display:none}
.fs-panneau:not(:has(.fs-panneau-media)){grid-template-columns:1fr}
.fs-panneau-media canvas,.fs-panneau-media img,.fs-panneau-media video{width:100%;border-radius:var(--arrondi);object-fit:cover}
@media (max-width:760px){.fs-panneau,.fs-onglets-vertical{grid-template-columns:1fr}}
/* ── étapes ── */
.fs-v-etapes{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.4rem;position:relative;counter-reset:etape}
.fs-etapes-ligne::before{content:"";position:absolute;left:10%;right:10%;top:30px;height:2px;background:var(--bord);z-index:0}
.fs-etapes-ligne::after{content:"";position:absolute;left:10%;right:10%;top:30px;height:2px;background:linear-gradient(90deg,var(--accent),var(--accent2));transform:scaleX(0);transform-origin:left;transition:transform 1.4s var(--fs-ease) .3s;z-index:0}
.fs-vu .fs-etapes-ligne::after,.fs-etapes-ligne.fs-vu::after{transform:scaleX(1)}
.fs-etape{position:relative;z-index:1;text-align:center;opacity:0;transform:translateY(18px);transition:opacity .6s var(--fs-ease),transform .6s var(--fs-ease);transition-delay:calc(var(--i) * 180ms + .2s)}
.fs-vu .fs-etape,.fs-v-etapes.fs-vu .fs-etape{opacity:1;transform:none}
.fs-etapes-cartes .fs-etape{background:var(--carte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:1.4rem 1.2rem}
.fs-etape-num{width:60px;height:60px;border-radius:50%;margin:0 auto 1rem;display:grid;place-items:center;font-weight:800;font-size:1.4rem;color:var(--sur-degrade,#fff);background:linear-gradient(135deg,var(--degrade-a,var(--accent)),var(--degrade-b,var(--accent2)));box-shadow:0 10px 30px -10px var(--accent),0 0 0 8px var(--fond)}
.fs-etape h3{margin-bottom:.3rem}.fs-etape p{color:var(--muet);margin:0}
/* ── zigzag ── */
.fs-zigzag{display:grid;gap:3rem;overflow-x:clip}
.fs-zig{display:grid;grid-template-columns:1fr 1fr;gap:2.2rem;align-items:center}
.fs-zig-inverse .fs-zig-texte{order:2}.fs-zig-inverse .fs-zig-media{order:1}
.fs-zig-texte,.fs-zig-media{opacity:0;transition:opacity .8s var(--fs-ease),transform .8s var(--fs-ease)}
.fs-zig-texte{transform:translateX(-40px)}.fs-zig-media{transform:translateX(40px)}
.fs-zig-inverse .fs-zig-texte{transform:translateX(40px)}.fs-zig-inverse .fs-zig-media{transform:translateX(-40px)}
.fs-vu .fs-zig-texte,.fs-vu .fs-zig-media,.fs-zig.fs-vu>*{opacity:1;transform:none}
.fs-zig-media canvas,.fs-zig-media img,.fs-zig-media video{width:100%;border-radius:var(--arrondi);object-fit:cover;box-shadow:0 30px 60px -30px rgba(0,0,0,.7)}
.fs-zig h3{font-size:1.7rem}
@media (max-width:760px){.fs-zig{grid-template-columns:1fr}.fs-zig-inverse .fs-zig-texte{order:1}.fs-zig-inverse .fs-zig-media{order:2}}
/* ── tarifs ── */
.fs-bascule{display:inline-flex;padding:.3rem;gap:.2rem;border-radius:999px;background:var(--carte);border:1px solid var(--bord);margin:0 auto 1.8rem;position:relative;left:50%;transform:translateX(-50%)}
.fs-bascule button{background:transparent;border:0;color:var(--muet);font:inherit;font-weight:600;padding:.55rem 1.2rem;border-radius:999px;cursor:pointer;transition:background .25s,color .25s;display:inline-flex;align-items:center;gap:.5rem}
.fs-bascule button.actif{background:linear-gradient(135deg,var(--degrade-a,var(--accent)),color-mix(in srgb,var(--degrade-a,var(--accent)) 60%,var(--degrade-b,var(--accent2))));color:var(--sur-degrade,#fff)}
.fs-bascule-note{font-size:.72rem;padding:.1rem .5rem;border-radius:999px;background:color-mix(in srgb,var(--accent2) 25%,transparent);color:var(--texte)}
.fs-v-tarifs{display:grid;gap:1.2rem;align-items:stretch}
.fs-offre{position:relative;background:var(--carte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:1.8rem 1.5rem;display:flex;flex-direction:column;transition:transform .3s var(--fs-ease),box-shadow .3s,border-color .3s}
.fs-offre:hover{transform:translateY(-6px);border-color:color-mix(in srgb,var(--accent) 60%,var(--bord))}
.fs-offre-avant{border-color:transparent;background:linear-gradient(var(--carte),var(--carte)) padding-box,linear-gradient(135deg,var(--accent),var(--accent2)) border-box;border:2px solid transparent;box-shadow:0 30px 70px -30px color-mix(in srgb,var(--accent) 70%,transparent);transform:scale(1.03)}
.fs-offre-avant:hover{transform:scale(1.03) translateY(-6px)}
.fs-offre-badge{position:absolute;top:-13px;left:50%;transform:translateX(-50%);padding:.25rem .9rem;border-radius:999px;font-size:.78rem;font-weight:700;color:var(--sur-degrade,#fff);background:linear-gradient(90deg,var(--degrade-a,var(--accent)),var(--degrade-b,var(--accent2)));white-space:nowrap;letter-spacing:.03em}
.fs-offre h3{font-size:1.3rem;margin-bottom:.2rem}.fs-offre-desc{color:var(--muet);min-height:2.6em;margin-bottom:.6rem}
.fs-prix{font-size:2.6rem;font-weight:800;letter-spacing:-.03em;line-height:1.1;margin:.4rem 0 1rem;min-height:1.2em}
.fs-prix small{font-size:1rem;font-weight:500;color:var(--muet);margin-left:.25rem;letter-spacing:0}
.fs-prix-gratuit{background:linear-gradient(90deg,var(--accent2-texte,var(--accent2)),var(--accent-texte,var(--accent)));-webkit-background-clip:text;background-clip:text;color:transparent}
.fs-prix-avenir{font-size:1.15rem;font-weight:600;color:var(--muet);letter-spacing:0}
.fs-prix>span{display:inline-block;animation:fs-monte .4s var(--fs-ease) both}
.fs-avantages{list-style:none;margin:0 0 1.4rem;padding:0;flex:1;display:grid;gap:.55rem}
.fs-avantages li{display:flex;gap:.6rem;align-items:flex-start;line-height:1.4}
.fs-avantages .fs-non{color:var(--muet)}
.fs-coche{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;font-size:.8rem;font-weight:800;flex:none}
.fs-coche.fs-oui{background:color-mix(in srgb,var(--accent2) 22%,transparent);color:color-mix(in srgb,var(--accent2-texte,var(--accent2)),var(--texte) var(--encre-teinte,0%))}
.fs-coche.fs-non{background:color-mix(in srgb,var(--muet) 18%,transparent);color:color-mix(in srgb,var(--muet),var(--texte) var(--encre-teinte,0%))}
.fs-coche.fs-partiel{background:color-mix(in srgb,var(--accent) 22%,transparent);color:color-mix(in srgb,var(--accent-texte,var(--accent)),var(--texte) var(--encre-teinte,0%))}
.fs-offre .fs-bouton{text-align:center;margin-top:auto}
.fs-tarifs-note{text-align:center;margin-top:1.2rem}
@media (max-width:760px){.fs-offre-avant{transform:none}.fs-offre-avant:hover{transform:translateY(-6px)}}
/* ── comparatif ── */
.fs-comparatif-cadre{overflow-x:auto;border-radius:var(--arrondi);border:1px solid var(--bord);background:var(--carte)}
.fs-v-comparatif{width:100%;border-collapse:separate;border-spacing:0;font-size:.97rem}
.fs-v-comparatif thead th{position:sticky;top:0;background:color-mix(in srgb,var(--carte) 85%,var(--fond));padding:1rem .9rem;text-align:center;font-weight:700;border-bottom:1px solid var(--bord);z-index:1}
.fs-v-comparatif thead th:first-child,.fs-v-comparatif tbody th{text-align:left}
.fs-v-comparatif tbody th{font-weight:500;padding:.75rem .9rem;color:var(--texte)}
.fs-v-comparatif td{padding:.75rem .9rem;text-align:center;border-top:1px solid color-mix(in srgb,var(--bord) 60%,transparent)}
.fs-v-comparatif tbody tr:hover td,.fs-v-comparatif tbody tr:hover th{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.fs-v-comparatif .fs-groupe th{padding:1.1rem .9rem .4rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--accent2-texte,var(--accent2));font-weight:700;border-top:1px solid var(--bord)}
.fs-v-comparatif .fs-c-avant{background:color-mix(in srgb,var(--accent) 12%,transparent);box-shadow:inset 2px 0 0 color-mix(in srgb,var(--accent) 50%,transparent),inset -2px 0 0 color-mix(in srgb,var(--accent) 50%,transparent)}
.fs-v-comparatif thead .fs-c-avant{background:color-mix(in srgb,var(--accent) 25%,var(--carte))}
.fs-v-comparatif .fs-coche{margin:0 auto;transform:scale(0);transition:transform .4s var(--fs-ease)}
.fs-vu .fs-v-comparatif .fs-coche{transform:scale(1)}
/* ── téléchargement ── */
.fs-dls{display:grid;gap:1.2rem;margin-top:1.4rem}
.fs-dl{position:relative;background:var(--carte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:1.8rem 1.4rem;text-align:center;transition:transform .3s var(--fs-ease),border-color .3s,box-shadow .3s}
.fs-dl:hover{transform:translateY(-5px)}
.fs-dl-recommande{border-color:transparent;background:linear-gradient(var(--carte),var(--carte)) padding-box,linear-gradient(135deg,var(--accent),var(--accent2)) border-box;border:2px solid transparent;box-shadow:0 30px 60px -30px color-mix(in srgb,var(--accent) 60%,transparent)}
.fs-dl-reco{position:absolute;top:-12px;left:50%;transform:translateX(-50%);padding:.2rem .8rem;border-radius:999px;font-size:.74rem;font-weight:700;color:var(--sur-degrade,#fff);background:linear-gradient(90deg,var(--degrade-a,var(--accent)),var(--degrade-b,var(--accent2)));white-space:nowrap}
.fs-dl-icone{font-size:2.8rem;line-height:1;margin-bottom:.6rem;filter:drop-shadow(0 8px 20px color-mix(in srgb,var(--accent) 50%,transparent))}
.fs-dl-meta{color:var(--muet);font-size:.9rem;margin:-.2rem 0 1rem}
.fs-dl-note{color:var(--muet);font-size:.88rem;margin:.9rem 0 0}
.fs-bouton-inactif{background:color-mix(in srgb,var(--muet) 22%,transparent);border-color:transparent;color:color-mix(in srgb,var(--muet),var(--texte) var(--encre-teinte,0%));cursor:not-allowed;pointer-events:none}
.fs-dl-config{margin:2rem auto 0;max-width:64ch;text-align:left;background:var(--carte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:1.2rem 1.4rem;color:var(--muet)}
.fs-dl-config h2,.fs-dl-config h3{color:var(--texte)}
/* ── compte ── */
.fs-v-compte{display:grid;grid-template-columns:minmax(0,480px) minmax(0,1fr);gap:2rem;align-items:center;justify-content:center;overflow-x:clip}
.fs-v-compte:not(:has(.fs-compte-avantages)){grid-template-columns:minmax(0,520px)}
.fs-compte-carte{background:var(--carte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:2rem 1.8rem;text-align:center;position:relative;overflow:hidden}
.fs-compte-carte::before{content:"";position:absolute;inset:-60% -30% auto;height:90%;background:radial-gradient(circle at 50% 0,color-mix(in srgb,var(--accent) 28%,transparent),transparent 60%);pointer-events:none}
.fs-compte-carte>*{position:relative}
.fs-compte-boutons{display:grid;gap:.7rem;margin:1.4rem 0 1rem}
.fs-bouton-google{display:inline-flex;align-items:center;justify-content:center;gap:.7rem;width:100%;padding:.8rem 1.2rem;border-radius:999px;border:1px solid #dadce0;background:#fff;color:#3c4043;font:inherit;font-weight:600;font-size:1rem;cursor:pointer;transition:box-shadow .2s,transform .15s}
.fs-bouton-google:hover{box-shadow:0 8px 24px -8px rgba(0,0,0,.6),0 0 0 4px color-mix(in srgb,var(--accent) 20%,transparent);transform:translateY(-1px)}
.fs-bouton-google:disabled{opacity:.7;cursor:progress}
.fs-compte-etat{font-weight:600;color:var(--accent2-texte,var(--accent2));min-height:1.4em;margin:.2rem 0 .6rem}
.fs-compte-avantages{list-style:none;padding:0;margin:0;display:grid;gap:.9rem}
.fs-compte-avantages li{display:flex;gap:.9rem;align-items:center;padding:.9rem 1.1rem;background:color-mix(in srgb,var(--carte) 60%,transparent);border:1px solid var(--bord);border-radius:calc(var(--arrondi) - 4px);opacity:0;transform:translateX(20px);transition:opacity .6s var(--fs-ease),transform .6s var(--fs-ease);transition-delay:calc(var(--i,0) * 120ms + .3s)}
.fs-vu .fs-compte-avantages li{opacity:1;transform:none}
.fs-compte-avantages li>span:first-child{font-size:1.5rem;width:44px;height:44px;display:grid;place-items:center;border-radius:12px;background:color-mix(in srgb,var(--accent) 22%,transparent);flex:none}
@media (max-width:760px){.fs-v-compte{grid-template-columns:1fr}}
/* ── appel à l'action ── */
.fs-v-cta{position:relative;overflow:hidden;border-radius:calc(var(--arrondi) + 6px);padding:clamp(2.4rem,6vw,4.5rem) 1.5rem;text-align:center;isolation:isolate}
.fs-cta-contenu{position:relative;z-index:2;max-width:760px;margin:0 auto}
.fs-v-cta h2{font-size:clamp(1.8rem,4vw,3rem);color:#fff;text-shadow:0 2px 20px rgba(0,0,0,.35)}
.fs-v-cta p{color:rgba(255,255,255,.9);font-size:1.1rem}
.fs-v-cta .fs-fond{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;opacity:.9}
.fs-cta-degrade{background:linear-gradient(120deg,var(--accent),var(--accent2),var(--accent));background-size:300% 300%;animation:fs-degrade 9s ease infinite}
@keyframes fs-degrade{0%{background-position:0 50%}50%{background-position:100% 50%}100%{background-position:0 50%}}
.fs-cta-verre{background:color-mix(in srgb,var(--carte) 70%,transparent);backdrop-filter:blur(16px);border:1px solid var(--bord)}
.fs-cta-verre h2,.fs-cta-verre p{color:var(--texte);text-shadow:none}.fs-cta-verre p{color:var(--muet)}
.fs-cta-bordure{background:var(--carte)}
.fs-cta-bordure::before{content:"";position:absolute;inset:-50%;background:conic-gradient(from 0deg,transparent 0 60%,var(--accent) 75%,var(--accent2) 85%,transparent 95%);animation:fs-tourne 5s linear infinite;z-index:0}
.fs-cta-bordure::after{content:"";position:absolute;inset:2px;border-radius:inherit;background:var(--carte);z-index:1}
.fs-cta-bordure h2,.fs-cta-bordure p{color:var(--texte);text-shadow:none}.fs-cta-bordure p{color:var(--muet)}
@keyframes fs-tourne{to{transform:rotate(360deg)}}
.fs-v-cta .fs-bouton{background:#fff;color:#1a1030;border-color:#fff}
.fs-v-cta .fs-bouton.fs-contour{background:transparent;color:#fff;border-color:rgba(255,255,255,.7)}
.fs-cta-verre .fs-bouton,.fs-cta-bordure .fs-bouton{background:var(--accent-plein,var(--accent));color:var(--sur-accent,#fff);border-color:var(--accent-plein,var(--accent))}
.fs-cta-verre .fs-bouton.fs-contour,.fs-cta-bordure .fs-bouton.fs-contour{background:transparent;color:var(--accent-texte,var(--accent))}
.fs-vit-boutons{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap;margin:1.4rem 0 0}
/* ── ruban défilant ── */
.fs-bandeau_defilant{padding:.8rem 0}
.fs-bloc.fs-bandeau_defilant>.fs-ruban{width:100%;max-width:none}
.fs-ruban{overflow:hidden;border-top:1px solid var(--bord);border-bottom:1px solid var(--bord);background:color-mix(in srgb,var(--carte) 50%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.fs-ruban-piste{display:flex;width:max-content;gap:2.2rem;padding:.9rem 1.1rem;animation:fs-ruban var(--duree,28s) linear infinite;will-change:transform}
.fs-ruban[data-sens="droite"] .fs-ruban-piste{animation-direction:reverse}
.fs-ruban-pause:hover .fs-ruban-piste{animation-play-state:paused}
.fs-ruban-item{font-weight:600;font-size:1.05rem;letter-spacing:.02em;white-space:nowrap;display:inline-flex;align-items:center;gap:.5rem}
.fs-ruban-sep{color:var(--accent2-texte,var(--accent2))}
@keyframes fs-ruban{to{transform:translateX(-50%)}}
/* ── galerie de visuels ── */
.fs-visuels{display:grid;gap:1rem}
.fs-visuel-carte{margin:0;border-radius:var(--arrondi);overflow:hidden;background:var(--carte);border:1px solid var(--bord);transition:transform .3s var(--fs-ease),box-shadow .3s}
.fs-visuel-carte:hover{transform:translateY(-4px) scale(1.01);box-shadow:0 20px 50px -20px color-mix(in srgb,var(--accent) 70%,transparent)}
.fs-visuel-carte canvas{border-radius:0}
.fs-visuel-carte figcaption{padding:.6rem .9rem;text-align:left;color:var(--texte);font-weight:600;font-size:.95rem}
/* ── chronologie ── */
.fs-v-chrono{list-style:none;margin:0;padding:0 0 0 1.6rem;position:relative}
.fs-chrono-verticale::before{content:"";position:absolute;left:7px;top:8px;bottom:8px;width:2px;background:linear-gradient(180deg,var(--accent),var(--accent2),var(--bord))}
.fs-jalon{position:relative;padding:0 0 1.8rem 1.4rem;opacity:0;transform:translateX(-16px);transition:opacity .6s var(--fs-ease),transform .6s var(--fs-ease);transition-delay:calc(var(--i) * 140ms)}
.fs-vu .fs-jalon,.fs-v-chrono.fs-vu .fs-jalon{opacity:1;transform:none}
.fs-jalon-point{position:absolute;left:-1.6rem;top:.35rem;width:16px;height:16px;border-radius:50%;background:var(--bord);border:3px solid var(--fond);box-shadow:0 0 0 2px var(--bord)}
.fs-jalon-fait .fs-jalon-point{background:var(--accent2);box-shadow:0 0 0 2px var(--accent2)}
.fs-jalon-en_cours .fs-jalon-point{background:var(--accent);box-shadow:0 0 0 2px var(--accent);animation:fs-pouls 1.6s ease-out infinite}
@keyframes fs-pouls{0%{box-shadow:0 0 0 2px var(--accent)}70%{box-shadow:0 0 0 12px transparent}100%{box-shadow:0 0 0 2px var(--accent)}}
.fs-jalon-date{font-weight:700;color:var(--accent2-texte,var(--accent2));margin-right:.6rem}
.fs-jalon-etat{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;padding:.15rem .55rem;border-radius:999px;background:var(--carte);border:1px solid var(--bord);color:var(--muet)}
.fs-jalon h3{margin:.3rem 0 .2rem}.fs-jalon p{margin:0;color:var(--muet)}
.fs-chrono-horizontale{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(220px,1fr);gap:1rem;padding:1.4rem 0 0;overflow-x:auto}
.fs-chrono-horizontale::before{content:"";position:absolute;left:0;right:0;top:7px;height:2px;background:linear-gradient(90deg,var(--accent),var(--accent2),var(--bord))}
.fs-chrono-horizontale .fs-jalon{padding:.6rem 1rem 0 0;transform:translateY(16px)}
.fs-chrono-horizontale .fs-jalon-point{left:0;top:-1.05rem}
/* ── canevas WebGL : un fond dessiné quand le contexte manque (plafond, capture) ── */
canvas.fs-webgl{background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--accent) 40%,#000),color-mix(in srgb,var(--accent2) 18%,#000) 55%,#000 100%)}
/* ── médias de fiche ── */
.fs-vit-media{width:100%;border-radius:var(--arrondi);object-fit:cover}
/* ── mouvement réduit : un site complet, immobile ── */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
  .fs-reveal,.fs-cascade>*,.fs-etape,.fs-jalon,.fs-zig-texte,.fs-zig-media,.fs-ta span,.fs-ta .fs-mot-l,.fs-ta,.fs-compte-avantages li{opacity:1 !important;transform:none !important;filter:none !important;clip-path:none !important;animation:none !important}
  .fs-v-comparatif .fs-coche{transform:scale(1) !important}
  .fs-hero .fs-fond{transform:none !important}
}

/* ══════════════ éditeur complet — conteneurs, éléments, style universel ══════════════ */
/* Racines de blocs HISTORIQUES dont la classe de type (fs-<id>) est aussi une
   classe intérieure du socle (le bouton, le formulaire, les réseaux, la
   galerie) : on neutralise sur la racine, à spécificité (0,1,0) pour que les
   classes du style universel gardent la main. Le gendarme interdit toute
   NOUVELLE collision de ce genre (préfixe fs-w- pour l'intérieur). */
.fs-bloc:where(.fs-bouton){display:block;background:transparent;border:0;border-radius:0;padding:clamp(1.2rem,3vw,2.4rem) 0;color:inherit;font-weight:inherit;font-size:inherit;cursor:default;transition:none;transform:none;filter:none}
.fs-bloc:where(.fs-bouton):hover{filter:none;transform:none;color:inherit}
.fs-bloc:where(.fs-contact){display:block;max-width:none;gap:0}
.fs-bloc:where(.fs-reseaux),.fs-bloc:where(.fs-galerie){display:block;gap:0}
/* blocs imbriqués : le conteneur a déjà centré ; l'enfant prend toute la place */
.fs-imbrique{padding:.55rem 0}
.fs-imbrique>*:not(.fs-fond){width:100%;max-width:none}
.fs-imbrique,.fs-panneau>*,.fs-section-contenu>*,.fs-fixe-etape>*{min-width:0;max-width:100%}
.fs-imbrique.fs-entete,.fs-imbrique.fs-pied{margin:0}
/* style universel */
.fs-esp-h-aucun{padding-top:0}.fs-esp-h-petit{padding-top:.8rem}.fs-esp-h-grand{padding-top:clamp(2.6rem,6vw,5rem)}.fs-esp-h-enorme{padding-top:clamp(4rem,10vw,9rem)}
.fs-esp-b-aucun{padding-bottom:0}.fs-esp-b-petit{padding-bottom:.8rem}.fs-esp-b-grand{padding-bottom:clamp(2.6rem,6vw,5rem)}.fs-esp-b-enorme{padding-bottom:clamp(4rem,10vw,9rem)}
.fs-bloc.fs-larg-etroite>*:not(.fs-fond){width:min(720px,100% - 2rem)}
.fs-bloc.fs-larg-normale>*:not(.fs-fond){width:min(var(--largeur),100% - 2rem)}
.fs-bloc.fs-larg-large>*:not(.fs-fond){width:min(1400px,100% - 2rem)}
.fs-bloc.fs-larg-pleine>*:not(.fs-fond){width:100%;max-width:none}
@media (max-width:760px){.fs-cache-mobile{display:none !important}}
@media (min-width:761px){.fs-cache-bureau{display:none !important}}
.fs-ancre{display:block;position:relative;top:-84px;height:0;width:0 !important;margin:0 !important;visibility:hidden}
/* animations d'entrée par bloc (le révélateur de la vitrine pose fs-reveal / fs-vu) */
.fs-reveal.fs-vu{filter:none}
.fs-reveal[data-anim-bloc="gauche"]{transform:translateX(-56px)}
.fs-reveal[data-anim-bloc="droite"]{transform:translateX(56px)}
.fs-reveal[data-anim-bloc="zoom"]{transform:scale(.88)}
.fs-reveal[data-anim-bloc="rotation"]{transform:rotate(-4deg) translateY(24px);transform-origin:left bottom}
.fs-reveal[data-anim-bloc="flou"]{transform:none;filter:blur(14px)}
.fs-reveal[data-anim-bloc]{transition-duration:.9s}
.fs-reveal[data-delai]{transition-delay:var(--delai,0ms)}
/* en-tête : la marque et les actions ne se coupent pas ; le menu passe à la ligne s'il le faut */
.fs-marque span,.fs-entete-compte,.fs-entete-action{white-space:nowrap}
.fs-entete nav a{white-space:nowrap;padding:.45rem .7rem}
/* ── section (bande) ─────────────────────────────────────────────────── */
.fs-bloc.fs-section{position:relative;isolation:isolate;overflow:hidden;padding:0;display:flex;flex-direction:column}
.fs-section-demi{min-height:50vh}.fs-section-ecran{min-height:100vh}
.fs-section.fs-alv-haut{justify-content:flex-start}.fs-section.fs-alv-centre{justify-content:center}.fs-section.fs-alv-bas{justify-content:flex-end}
.fs-bloc.fs-section>.fs-fond{position:absolute;inset:0;width:100%;height:100% !important;max-width:none;margin:0;object-fit:cover;z-index:0;border-radius:0;transform:translateY(var(--py,0px)) scale(var(--zoom,1))}
.fs-bloc.fs-section>.fs-voile{position:absolute;inset:0;width:100%;max-width:none;margin:0;background:#000;opacity:var(--voile,.35);z-index:0;pointer-events:none}
.fs-section.fs-parallaxe>.fs-fond{--zoom:1.18;will-change:transform}
.fs-section-contenu{position:relative;z-index:1;padding:clamp(1.6rem,4vw,3.2rem) 0}
.fs-section-contenu.fs-disp-pile{display:flex;flex-direction:column}
.fs-section-contenu.fs-disp-ligne{display:flex;flex-wrap:wrap;gap:1.4rem;align-items:center}.fs-disp-ligne>*{flex:1 1 260px;min-width:0}
.fs-section-contenu.fs-disp-grille_2{display:grid;grid-template-columns:repeat(2,1fr);gap:1.4rem;align-items:start}
.fs-section-contenu.fs-disp-grille_3{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;align-items:start}
@media (max-width:760px){.fs-section-contenu.fs-disp-grille_2,.fs-section-contenu.fs-disp-grille_3{grid-template-columns:1fr}}
.fs-section-contenu.fs-al-centre .fs-prose,.fs-section-contenu.fs-al-centre .fs-w-boutons{margin-inline:auto}
.fs-bloc.fs-section>.fs-sep-forme{position:absolute;left:0;right:0;width:100%;max-width:none;margin:0;height:clamp(40px,7vw,120px);color:var(--fond);line-height:0;z-index:2;pointer-events:none}
.fs-sep-haut{top:-1px}.fs-sep-bas{bottom:-1px}
.fs-sep-forme svg{width:100%;height:100%;display:block}
.fs-sep-seul{position:relative;color:var(--carte);line-height:0;width:100% !important;max-width:none !important;margin:0 !important}
.fs-bloc.fs-separateur_svg{padding:0}
/* ── TOILE LIBRE : les enfants sont posés où on les met ──────────────── */
.fs-bloc.fs-zone_libre{position:relative;isolation:isolate;overflow:hidden;padding:0}
.fs-bloc.fs-zone_libre>.fs-fond{position:absolute;inset:0;width:100%;height:100% !important;max-width:none;margin:0;object-fit:cover;z-index:0;border-radius:0}
.fs-bloc.fs-zone_libre>.fs-voile{position:absolute;inset:0;width:100%;max-width:none;margin:0;background:#000;opacity:var(--voile,.35);z-index:0}
.fs-w-zone{position:relative;z-index:1;height:var(--zh,600px)}
.fs-libre{position:absolute;box-sizing:border-box;min-width:24px}
.fs-libre>.fs-bloc{padding:0}
.fs-libre-h{overflow:hidden}
.fs-libre-h>.fs-bloc,.fs-libre-h .fs-media,.fs-libre-h .fs-media img,.fs-libre-h .fs-media video,.fs-libre-h canvas.fs-webgl,.fs-libre-h .fs-w-boite{height:100%}
.fs-zone-bords .fs-libre{outline:1px dashed color-mix(in srgb,var(--texte) 25%,transparent);outline-offset:0}
@media (max-width:760px){
  .fs-zone-empile{height:auto !important;display:flex;flex-direction:column;gap:1.2rem;padding:1rem 0}
  .fs-zone-empile .fs-libre{position:static;left:auto;top:auto;width:auto !important;height:auto !important;overflow:visible}
}
/* ── grille libre, colonne ───────────────────────────────────────────── */
.fs-grille-libre{display:grid;gap:1.4rem;min-width:0}
.fs-grille-libre.fs-ecart-aucun{gap:0}.fs-grille-libre.fs-ecart-petit{gap:.6rem}.fs-grille-libre.fs-ecart-grand{gap:2.8rem}
.fs-grille-libre.fs-alv-haut{align-items:start}.fs-grille-libre.fs-alv-centre{align-items:center}.fs-grille-libre.fs-alv-bas{align-items:end}.fs-grille-libre.fs-alv-etirer{align-items:stretch}
.fs-grille-libre>*{min-width:0}
@media (max-width:760px){.fs-grille-libre{grid-template-columns:1fr !important}.fs-grille-libre.fs-inverse-mobile{display:flex;flex-direction:column-reverse}}
.fs-bloc.fs-colonne{display:flex;flex-direction:column;padding:0;min-width:0}
.fs-colonne.fs-alv-haut{justify-content:flex-start}.fs-colonne.fs-alv-centre{justify-content:center}.fs-colonne.fs-alv-bas{justify-content:flex-end}
.fs-colonne.fs-alv-etirer>.fs-bloc{flex:1 1 auto}
.fs-colonne.fs-al-centre .fs-prose,.fs-colonne.fs-al-centre .fs-w-boutons,.fs-colonne.fs-al-centre .fs-media{margin-inline:auto}
/* ── boîte, panneau ──────────────────────────────────────────────────── */
.fs-bloc.fs-boite{padding:0}
.fs-w-boite{padding:1.4rem;min-width:0}
.fs-boite-arrondie{border-radius:var(--arrondi)}
.fs-boite-carte{background:var(--carte);border:1px solid var(--bord)}
.fs-boite-verre{background:color-mix(in srgb,var(--carte) 55%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid color-mix(in srgb,var(--texte) 14%,transparent)}
.fs-boite-contour{border:2px solid var(--accent)}
.fs-boite-lueur{background:var(--carte);border:1px solid color-mix(in srgb,var(--accent) 50%,var(--bord));box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 25%,transparent),0 16px 60px -18px var(--accent)}
.fs-boite-plat{background:transparent}
.fs-w-boite.fs-rempl-aucun{padding:0}.fs-w-boite.fs-rempl-petit{padding:.7rem}.fs-w-boite.fs-rempl-grand{padding:2.4rem}
.fs-boite-ombre{box-shadow:0 24px 70px -24px rgba(0,0,0,.55)}
.fs-w-boite>.fs-bloc:first-child{padding-top:0}.fs-w-boite>.fs-bloc:last-child{padding-bottom:0}
.fs-bloc.fs-panneau_titre{padding:0}
.fs-panneau-libre{min-width:0}
.fs-panneau-libre-titre{display:flex;align-items:center;gap:.55rem;margin-bottom:.8rem}
.fs-panneau.fs-panneau-1col{grid-template-columns:1fr}
.fs-onglets-panneaux>.fs-panneau>.fs-bloc{padding-top:0}
.fs-bloc.fs-onglets_libres .fs-onglets-barre{margin-bottom:1.2rem}
.fs-bloc.fs-onglets_libres.fs-al-gauche .fs-onglets-barre{margin-left:0}
/* accordéon libre : le corps garde la couleur du texte */
.fs-accordeon-libre details>div.fs-accordeon-corps{color:inherit;padding-top:.8rem}
.fs-accordeon-corps>.fs-bloc:first-child{padding-top:0}.fs-accordeon-corps>.fs-bloc:last-child{padding-bottom:0}
/* ── carrousel ───────────────────────────────────────────────────────── */
.fs-w-carrousel{position:relative;--par-vue:1}
.fs-car-avec-fleches{padding:0 3.4rem}
.fs-car-fenetre{overflow:hidden;border-radius:var(--arrondi)}
.fs-car-piste{display:flex;transition:transform .65s var(--fs-ease);will-change:transform;touch-action:pan-y}
.fs-w-carrousel.fs-glisse .fs-car-piste{transition:none}
.fs-diapo{flex:0 0 calc(100% / var(--par-vue));min-width:0;padding:.5rem;box-sizing:border-box}
.fs-diapo>.fs-bloc{padding:0}
.fs-car-fleche{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;border:1px solid var(--bord);background:color-mix(in srgb,var(--carte) 82%,transparent);color:var(--texte);font-size:1.7rem;line-height:1;cursor:pointer;z-index:3;backdrop-filter:blur(8px);transition:transform .2s,background .2s;display:grid;place-items:center;padding:0 0 .2rem}
.fs-car-fleche:hover{background:var(--accent-plein,var(--accent));color:var(--sur-accent,#fff);transform:translateY(-50%) scale(1.06)}
.fs-car-prec{left:.2rem}.fs-car-suiv{right:.2rem}
.fs-car-points{display:flex;justify-content:center;gap:.45rem;padding:.9rem 0 .2rem}
.fs-car-points:empty{display:none}
.fs-car-points button{width:10px;height:10px;border-radius:50%;border:0;background:var(--bord);cursor:pointer;padding:0;transition:transform .25s,background .25s,width .25s}
.fs-car-points button.actif{background:var(--accent);width:26px;border-radius:999px}
@media (max-width:760px){.fs-w-carrousel{--par-vue:1 !important}.fs-car-avec-fleches{padding:0 2.6rem}.fs-car-fleche{width:36px;height:36px;font-size:1.4rem}.fs-car-prec{left:0}.fs-car-suiv{right:0}}
/* ── modale ──────────────────────────────────────────────────────────── */
.fs-w-modale{position:fixed;inset:0;z-index:1500;display:grid;place-items:center;padding:1rem;--modale-l:640px}
.fs-modale-petite{--modale-l:440px}.fs-modale-grande{--modale-l:980px}
.fs-modale-fond{position:absolute;inset:0;background:rgba(0,0,0,.72);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);animation:fs-apparait .3s both}
.fs-modale-boite{position:relative;background:var(--fond);color:var(--texte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:1.8rem;max-height:90vh;overflow:auto;width:min(var(--modale-l),100%);box-shadow:0 40px 120px rgba(0,0,0,.55);animation:fs-monte .4s var(--fs-ease) both}
.fs-modale-boite>h3{margin-right:2.4rem}
.fs-modale-boite>.fs-bloc{padding:.5rem 0}
.fs-modale-boite .fs-bloc>*:not(.fs-fond){width:100%;max-width:none}
.fs-modale-x{position:absolute;top:.7rem;right:.7rem;width:36px;height:36px;border-radius:50%;border:0;background:var(--carte);color:var(--texte);cursor:pointer;font-size:1rem;display:grid;place-items:center}
.fs-modale-x:hover{background:var(--accent-plein,var(--accent));color:var(--sur-accent,#fff)}
body.fs-modale-ouverte{overflow:hidden}
@keyframes fs-apparait{from{opacity:0}to{opacity:1}}
/* ── récit épinglé ───────────────────────────────────────────────────── */
.fs-fixe{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.4rem,4vw,3.5rem);align-items:start}
.fs-fixe-droite .fs-fixe-media{order:2}
.fs-fixe-media{position:sticky;top:clamp(4.5rem,12vh,8rem);min-width:0}
.fs-fixe-media>.fs-bloc{padding:0}
.fs-fixe-media canvas.fs-webgl{height:min(62vh,520px)}
.fs-fixe-etapes{display:flex;flex-direction:column;min-width:0}
.fs-fixe-etape{min-height:64vh;display:flex;align-items:center;opacity:.28;transform:translateY(18px) scale(.98);transition:opacity .55s var(--fs-ease),transform .55s var(--fs-ease)}
.fs-fixe-etape.actif{opacity:1;transform:none}
.fs-fixe-etape>.fs-bloc{padding:0;width:100%}
.fs-fixe-h-courte .fs-fixe-etape{min-height:42vh}.fs-fixe-h-ecran .fs-fixe-etape{min-height:100vh}
@media (max-width:760px){.fs-fixe{grid-template-columns:1fr}.fs-fixe-media{position:relative;top:0;order:0 !important}.fs-fixe-etape{min-height:0;opacity:1;transform:none;padding:1rem 0}}
/* ── liste, tableau, badges, alerte, progression, boutons ───────────── */
.fs-w-liste{list-style:none;padding:0;margin:0;display:grid;gap:.6rem;font-size:1.05rem}
.fs-w-liste li{display:flex;gap:.65rem;align-items:flex-start}
.fs-liste-icone{color:var(--accent-texte,var(--accent));font-weight:700;flex:0 0 auto;min-width:1.2em;text-align:center}
.fs-liste-etoiles .fs-liste-icone{color:#f5b301}
.fs-liste-numerotee{counter-reset:fsl}.fs-liste-numerotee li{counter-increment:fsl}
.fs-liste-numerotee .fs-liste-icone::before{content:counter(fsl);display:inline-grid;place-items:center;width:1.7em;height:1.7em;border-radius:50%;background:var(--accent-plein,var(--accent));color:var(--sur-accent,#fff);font-size:.85em}
.fs-al-centre .fs-w-liste li{justify-content:center}
.fs-tableau-legende{color:var(--muet);font-size:.92rem;margin:0 0 .5rem}
.fs-tableau-cadre{overflow:auto;border-radius:var(--arrondi);border:1px solid var(--bord);background:color-mix(in srgb,var(--carte) 40%,transparent)}
.fs-w-tableau{width:100%;border-collapse:collapse;font-size:.98rem;min-width:420px}
.fs-w-tableau th,.fs-w-tableau td{padding:.8rem 1rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--bord)}
.fs-w-tableau thead th{background:var(--carte);font-weight:700;position:sticky;top:0;z-index:1}
.fs-w-tableau tbody tr:last-child td{border-bottom:0}
.fs-zebre tbody tr:nth-child(even){background:color-mix(in srgb,var(--carte) 60%,transparent)}
.fs-bordures th,.fs-bordures td{border:1px solid var(--bord)}
.fs-compact th,.fs-compact td{padding:.4rem .65rem}
.fs-triable th[data-tri]{cursor:pointer;user-select:none;white-space:nowrap}
.fs-triable th[data-tri]::after{content:" ↕";color:var(--muet);font-size:.85em}
.fs-triable th[data-tri="asc"]::after{content:" ↑";color:var(--accent-texte,var(--accent))}.fs-triable th[data-tri="desc"]::after{content:" ↓";color:var(--accent-texte,var(--accent))}
.fs-w-badges{display:flex;flex-wrap:wrap;gap:.5rem}
.fs-w-badges.fs-al-centre{justify-content:center}.fs-w-badges.fs-al-droite{justify-content:flex-end}
.fs-badge{--badge:var(--accent);--badge-plein:var(--accent-plein,var(--badge));--sur-badge:var(--sur-accent,#fff);--badge-texte:var(--accent-texte,var(--badge));display:inline-flex;align-items:center;padding:.28rem .8rem;border-radius:999px;font-size:.85rem;font-weight:650;background:var(--badge-plein);color:var(--sur-badge);letter-spacing:.01em}
.fs-badge-contour{background:transparent;color:color-mix(in srgb,var(--badge-texte),var(--texte) var(--encre-teinte,0%));border:1.5px solid var(--badge)}
.fs-badge-lueur{background:color-mix(in srgb,var(--badge) 16%,transparent);color:color-mix(in srgb,var(--badge-texte),var(--texte) var(--encre-teinte,0%));border:1px solid color-mix(in srgb,var(--badge) 45%,transparent);box-shadow:0 0 20px -5px var(--badge)}
.fs-w-alerte{--al:#3b82f6;display:flex;gap:.85rem;align-items:flex-start;padding:1rem 1.2rem;border-radius:var(--arrondi);background:color-mix(in srgb,var(--al) 12%,var(--carte));border:1px solid color-mix(in srgb,var(--al) 45%,transparent);border-left-width:4px}
.fs-alerte-succes{--al:#22c55e}.fs-alerte-attention{--al:#f59e0b}.fs-alerte-erreur{--al:#ef4444}
.fs-alerte-icone{font-size:1.3rem;line-height:1.3;color:color-mix(in srgb,var(--al),var(--texte) var(--alerte-encre,0%))}
.fs-w-alerte>div{flex:1;min-width:0}.fs-w-alerte strong{display:block;margin-bottom:.15rem}.fs-w-alerte p:last-child{margin:0}
.fs-alerte-x{background:transparent;border:0;color:var(--muet);cursor:pointer;font-size:1rem;padding:.1rem .3rem}
.fs-alerte-x:hover{color:var(--texte)}
.fs-progressions{display:grid;gap:1.1rem}
.fs-prog-tete{display:flex;justify-content:space-between;gap:.6rem;font-weight:600;margin-bottom:.4rem}
.fs-prog-tete>span:last-child:not(.fs-prog-val){color:var(--muet);font-weight:400}
.fs-prog-val{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--accent-texte,var(--accent))}
.fs-prog-barre{height:12px;border-radius:999px;background:var(--carte);border:1px solid var(--bord);overflow:hidden}
.fs-prog-barre span{display:block;height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--accent2));transition:width 1.3s var(--fs-ease);box-shadow:0 0 14px -2px var(--accent2)}
.fs-vu .fs-prog-barre span,.fs-progressions.fs-vu .fs-prog-barre span{width:var(--pct)}
.fs-progressions-fines .fs-prog-barre{height:5px}
.fs-w-boutons{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center}
.fs-w-boutons.fs-al-centre{justify-content:center}.fs-w-boutons.fs-al-droite{justify-content:flex-end}
.fs-boutons-empiles{flex-direction:column;align-items:stretch;max-width:380px}
.fs-boutons-empiles.fs-al-centre{margin-inline:auto}.fs-boutons-empiles .fs-bouton{text-align:center}
.fs-bouton.fs-bouton-doux{background:color-mix(in srgb,var(--accent) 15%,transparent);color:color-mix(in srgb,var(--accent-texte,var(--accent)),var(--texte) var(--encre-teinte,0%));border-color:transparent}
.fs-bouton.fs-bouton-doux:hover{background:color-mix(in srgb,var(--accent) 25%,transparent);color:color-mix(in srgb,var(--accent-texte,var(--accent)),var(--texte) var(--encre-teinte,0%))}
.fs-bouton.fs-bouton-lien{background:transparent;border-color:transparent;color:var(--accent-texte,var(--accent));padding-inline:.5rem}
.fs-bouton-icone{margin-right:.45rem}
/* ── avant / après ───────────────────────────────────────────────────── */
.fs-avant-apres{position:relative;overflow:hidden;border-radius:var(--arrondi);user-select:none;-webkit-user-select:none;touch-action:none;background:#000;--pos:50%;cursor:ew-resize}
.fs-aa-apres,.fs-aa-avant{position:absolute;inset:0}
.fs-aa-avant{clip-path:inset(0 calc(100% - var(--pos)) 0 0)}
.fs-aa-apres>img,.fs-aa-avant>img,.fs-aa-apres>canvas,.fs-aa-avant>canvas,.fs-aa-apres>.fs-vide,.fs-aa-avant>.fs-vide{width:100%;height:100% !important;object-fit:cover;border-radius:0;max-width:none}
.fs-aa-etiquette{position:absolute;top:.9rem;padding:.28rem .75rem;border-radius:999px;background:rgba(0,0,0,.6);color:#fff;font-size:.8rem;font-weight:650;letter-spacing:.04em;text-transform:uppercase;pointer-events:none}
.fs-aa-avant .fs-aa-etiquette{left:.9rem}.fs-aa-apres .fs-aa-etiquette{right:.9rem}
.fs-aa-poignee{position:absolute;top:0;bottom:0;left:var(--pos);width:2px;background:#fff;transform:translateX(-50%);box-shadow:0 0 12px rgba(0,0,0,.5)}
.fs-aa-poignee span{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:46px;height:46px;border-radius:50%;background:#fff;color:#111;display:grid;place-items:center;font-weight:700;font-size:1.1rem;box-shadow:0 6px 24px rgba(0,0,0,.45)}
.fs-aa-poignee:focus-visible{outline:none}.fs-aa-poignee:focus-visible span{box-shadow:0 0 0 4px var(--accent)}
/* ── formulaires ─────────────────────────────────────────────────────── */
.fs-w-formulaire{display:grid;gap:1rem;max-width:760px}
.fs-al-centre .fs-w-formulaire{margin-inline:auto}
.fs-form-2{grid-template-columns:1fr 1fr}
.fs-form-2 .fs-champ:has(textarea),.fs-form-2 fieldset,.fs-form-2 .fs-form-actions,.fs-form-2 .fs-form-etat{grid-column:1/-1}
@media (max-width:560px){.fs-form-2{grid-template-columns:1fr}}
.fs-champ{display:grid;gap:.35rem;font-weight:600;font-size:.95rem;min-width:0}
.fs-champ input,.fs-champ textarea,.fs-champ select{font:inherit;font-weight:400;width:100%;padding:.75rem .95rem;border-radius:10px;border:1px solid var(--bord);background:var(--carte);color:var(--texte)}
.fs-champ input:focus,.fs-champ textarea:focus,.fs-champ select:focus{outline:2px solid var(--accent);border-color:transparent}
.fs-champ input[type=file]{padding:.5rem}
fieldset.fs-champ{border:1px solid var(--bord);border-radius:10px;padding:.7rem 1rem .9rem;margin:0}
fieldset.fs-champ legend{padding:0 .4rem}
.fs-choix{display:flex;flex-wrap:wrap;gap:.5rem 1.3rem;font-weight:400}
.fs-choix-item{display:inline-flex;gap:.45rem;align-items:center;cursor:pointer}
.fs-choix-item input{width:auto;accent-color:var(--accent)}
.fs-req{color:#ef4444}
.fs-form-actions{display:flex;gap:.6rem;align-items:center}
.fs-form-etat{color:var(--accent-texte,var(--accent));font-weight:600;margin:0}
.fs-form-etat.fs-echec{color:#ef4444}
.fs-w-inscription h3{margin-bottom:.3rem}
.fs-inscription-form{display:flex;gap:.5rem;max-width:560px;flex-wrap:wrap}
.fs-w-inscription.fs-al-centre .fs-inscription-form{margin-inline:auto;justify-content:center}
.fs-w-inscription.fs-al-droite .fs-inscription-form{margin-left:auto;justify-content:flex-end}
.fs-inscription-form input{flex:1 1 220px;font:inherit;padding:.8rem 1.1rem;border-radius:999px;border:1px solid var(--bord);background:var(--carte);color:var(--texte)}
.fs-inscription-form input:focus{outline:2px solid var(--accent);border-color:transparent}
.fs-inscription-form .fs-form-etat{flex-basis:100%}
/* ── compte à rebours ────────────────────────────────────────────────── */
.fs-rebours h3{margin-bottom:1rem}
.fs-rebours-unites{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap}
.fs-car-unite{display:grid;gap:.25rem;min-width:92px;text-align:center}
.fs-rebours-cartes .fs-car-unite{background:var(--carte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:1rem .6rem .8rem}
.fs-car-val{font-size:clamp(1.9rem,5vw,3.2rem);font-weight:800;font-variant-numeric:tabular-nums;line-height:1;background:linear-gradient(135deg,var(--accent-texte,var(--accent)),var(--accent2-texte,var(--accent2)));-webkit-background-clip:text;background-clip:text;color:transparent}
.fs-car-lib{font-size:.78rem;color:var(--muet);text-transform:uppercase;letter-spacing:.1em}
.fs-rebours-ligne .fs-car-unite{min-width:0;grid-auto-flow:column;align-items:baseline;gap:.4rem}
.fs-rebours-ligne .fs-car-val{font-size:clamp(1.4rem,3vw,2rem)}
.fs-rebours-fin{font-size:clamp(1.3rem,3vw,2rem);font-weight:800;text-align:center}
/* ── équipe, logos, témoignages ──────────────────────────────────────── */
.fs-w-equipe{display:grid;gap:1.2rem}
.fs-equipe-carte{background:var(--carte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:1.5rem 1.2rem;text-align:center;color:var(--texte);text-decoration:none;display:block;transition:transform .2s,border-color .2s,box-shadow .2s}
a.fs-equipe-carte:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:0 16px 40px -20px var(--accent)}
.fs-equipe-portrait{width:96px;height:96px;border-radius:50%;margin:0 auto 1rem;overflow:hidden;background:linear-gradient(135deg,var(--degrade-a,var(--accent)),var(--degrade-b,var(--accent2)));display:grid;place-items:center;box-shadow:0 10px 30px -12px var(--accent)}
.fs-equipe-portrait img{width:100%;height:100%;object-fit:cover;border-radius:0}
.fs-equipe-initiales{font-size:1.8rem;font-weight:800;color:var(--sur-degrade,#fff);letter-spacing:.02em}
.fs-equipe-carte h3{margin-bottom:.1rem}
.fs-equipe-role{color:var(--accent-texte,var(--accent));font-weight:600;font-size:.9rem;margin-bottom:.6rem}
.fs-equipe-carte p:last-child{margin:0;color:var(--muet);font-size:.95rem}
.fs-w-logos{display:flex;flex-wrap:wrap;gap:1.2rem 2.6rem;justify-content:center;align-items:center}
.fs-logo{display:inline-flex;align-items:center;justify-content:center;min-height:48px;text-decoration:none;transition:filter .3s,opacity .3s,transform .25s}
.fs-logo img{max-height:48px;width:auto;border-radius:0}
.fs-logo-texte{font-weight:800;font-size:1.35rem;letter-spacing:.02em;color:var(--texte);white-space:nowrap}
.fs-logos-gris .fs-logo{filter:grayscale(1);opacity:.55}
.fs-logos-gris .fs-logo:hover{filter:none;opacity:1;transform:scale(1.06)}
.fs-logos-ruban .fs-ruban-piste{gap:3.2rem;align-items:center}
.fs-bloc.fs-logos>.fs-ruban{width:100%;max-width:none}
.fs-w-temoignages{display:grid;gap:1.2rem}
.fs-temoignage{margin:0;background:var(--carte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:1.5rem;display:flex;flex-direction:column;gap:.9rem;height:100%}
.fs-temoignage blockquote{background:transparent;border:0;padding:0;font-size:1.05rem;font-style:normal;border-radius:0;max-width:none;line-height:1.6}
.fs-temoignage blockquote p:last-child{margin:0}
.fs-temoignage figcaption{display:flex;align-items:center;gap:.75rem;margin-top:auto;text-align:left;font-size:.95rem;color:var(--texte)}
.fs-temoignage figcaption img,.fs-temoignage .fs-avatar{width:44px;height:44px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:var(--fond);font-size:1.3rem;flex:0 0 auto}
.fs-temoignage figcaption div{display:grid;line-height:1.3}
.fs-temoignage figcaption span{color:var(--muet);font-size:.85rem}
.fs-etoiles{color:#f5b301;letter-spacing:.12em;font-size:1.05rem}
.fs-diapo .fs-temoignage{height:auto}
/* ── retour en haut, cookies, partage, fil d'Ariane, menu, plan ──────── */
.fs-bloc.fs-retour_haut,.fs-bloc.fs-cookies{padding:0}
.fs-retour-haut{position:fixed;right:1.2rem;bottom:1.2rem;width:48px;height:48px;border:0;background:var(--accent-plein,var(--accent));color:var(--sur-accent,#fff);font-size:1.3rem;cursor:pointer;z-index:900;box-shadow:0 12px 30px -8px var(--accent);transition:transform .3s var(--fs-ease),opacity .3s;opacity:0;transform:translateY(18px);display:grid;place-items:center}
.fs-retour-haut.fs-visible{opacity:1;transform:none}
.fs-retour-haut:hover{filter:brightness(1.1)}
.fs-retour-rond{border-radius:50%}.fs-retour-carre{border-radius:12px}
.fs-w-cookies{position:fixed;z-index:1400;background:var(--carte);color:var(--texte);border:1px solid var(--bord);border-radius:var(--arrondi);padding:1rem 1.2rem;box-shadow:0 24px 70px rgba(0,0,0,.4);display:flex;gap:1rem;align-items:center;flex-wrap:wrap;animation:fs-monte .5s var(--fs-ease) both}
.fs-w-cookies p{margin:0;flex:1 1 280px;font-size:.95rem}
.fs-cookies-bas{left:1rem;right:1rem;bottom:1rem;max-width:760px;margin-inline:auto}
.fs-cookies-haut{left:1rem;right:1rem;top:1rem;max-width:760px;margin-inline:auto}
.fs-cookies-coin{right:1rem;bottom:1rem;max-width:min(400px,calc(100% - 2rem))}
.fs-cookies-boutons{display:flex;gap:.5rem;flex-wrap:wrap}
.fs-w-cookies .fs-bouton{padding:.5rem 1rem;font-size:.9rem}
.fs-partage-titre{align-self:center;color:var(--muet);font-weight:600;margin-right:.3rem}
.fs-w-partage .fs-pastille{cursor:pointer}
.fs-w-partage .fs-pastille.fs-copie{border-color:var(--accent);color:var(--accent-texte,var(--accent))}
.fs-bloc.fs-fil_ariane{padding:.6rem 0}
.fs-ariane{font-size:.92rem;color:var(--muet);display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.fs-ariane a{text-decoration:none}.fs-ariane [aria-current]{color:var(--texte);font-weight:600}
.fs-menu-liens ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.3rem}
.fs-menu-liens a{display:inline-flex;align-items:center;gap:.45rem;padding:.5rem .9rem;border-radius:10px;text-decoration:none;color:var(--texte);font-weight:600;transition:background .2s,color .2s}
.fs-menu-liens a:hover{background:var(--carte);color:var(--accent-texte,var(--accent))}
.fs-menu-vertical ul{flex-direction:column;align-items:flex-start}
.fs-menu-pilules a{border-radius:999px;background:var(--carte);border:1px solid var(--bord)}
.fs-menu-pilules a:hover{border-color:var(--accent)}
.fs-menu-liens.fs-al-centre ul{justify-content:center}.fs-menu-liens.fs-al-droite ul{justify-content:flex-end}
.fs-menu-vertical.fs-al-centre ul{align-items:center}
.fs-plan-site ul{list-style:none;padding:0;margin:0;display:grid;gap:.7rem}
.fs-plan-site a{font-weight:600;text-decoration:none}
.fs-plan-desc{display:block;color:var(--muet);font-size:.9rem}
/* ── cadre d'appareil ────────────────────────────────────────────────── */
.fs-cadre{position:relative;margin:0;background:#0b0b10;border-radius:14px;overflow:hidden;box-shadow:0 0 0 1px rgba(255,255,255,.08);transform:perspective(1400px) rotateX(var(--rx,0)) rotateY(var(--ry,0));transition:transform .25s ease-out;width:100%}
.fs-cadre-ombre{box-shadow:0 0 0 1px rgba(255,255,255,.08),0 50px 120px -40px rgba(0,0,0,.75)}
.fs-cadre-barre{display:flex;align-items:center;gap:.45rem;padding:.65rem .85rem;background:#16161d;border-bottom:1px solid rgba(255,255,255,.06)}
.fs-cadre-barre>span{width:11px;height:11px;border-radius:50%;background:#ff5f57;display:block}
.fs-cadre-barre>span:nth-child(2){background:#febc2e}.fs-cadre-barre>span:nth-child(3){background:#28c840}
.fs-cadre-url{margin-left:.8rem;flex:1;background:#0b0b10;border-radius:6px;padding:.22rem .8rem;font-size:.78rem;color:#9aa0ae;text-align:center;max-width:62%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fs-cadre-ecran{position:relative;background:#000;aspect-ratio:16/9;height:var(--cadre-h,auto);overflow:hidden}
.fs-cadre-ecran>*{width:100%;height:100% !important;object-fit:cover;border-radius:0;display:block;max-width:none;margin:0}
.fs-cadre-ecran>.fs-vide{min-height:0}
.fs-app-fenetre .fs-cadre-barre{background:#1d1d26}
.fs-bloc>.fs-cadre.fs-app-telephone,.fs-app-telephone{border-radius:40px;padding:12px;background:#111;width:min(360px,100% - 2rem);margin-inline:auto;box-shadow:0 0 0 2px #2a2a33,0 40px 90px -30px rgba(0,0,0,.8)}
.fs-app-telephone .fs-cadre-ecran{aspect-ratio:9/19.5;border-radius:30px;height:var(--cadre-h,auto)}
.fs-cadre-encoche{position:absolute;top:12px;left:50%;transform:translateX(-50%);width:34%;height:26px;background:#111;border-radius:0 0 18px 18px;z-index:2}
.fs-bloc>.fs-cadre.fs-app-tablette,.fs-app-tablette{border-radius:28px;padding:16px;background:#111;width:min(760px,100% - 2rem);margin-inline:auto}
.fs-app-tablette .fs-cadre-ecran{aspect-ratio:4/3;border-radius:14px}
.fs-app-tablette .fs-cadre-encoche{width:10%;height:8px;border-radius:0 0 6px 6px}
.fs-app-ecran{padding:10px 10px 0;background:#1a1a22;border-radius:12px 12px 4px 4px}
.fs-app-ecran::after{content:"";display:block;width:26%;height:18px;margin:0 auto;background:#1a1a22;border-radius:0 0 10px 10px;box-shadow:0 10px 0 -4px #2a2a33}
.fs-cadre-legende{padding:.6rem .8rem .2rem;text-align:center;color:var(--muet);font-size:.92rem;background:transparent}
.fs-cadre_appareil.fs-l-petite .fs-cadre{max-width:460px}.fs-cadre_appareil.fs-l-moyenne .fs-cadre{max-width:900px}
.fs-cadre_appareil.fs-al-centre .fs-cadre{margin-inline:auto}.fs-cadre_appareil.fs-al-droite .fs-cadre{margin-left:auto}
/* ── transitions WebGL ───────────────────────────────────────────────── */
.fs-w-gtitres{display:grid;gap:1.1rem;grid-template-columns:repeat(var(--gt-col,3),minmax(0,1fr))}
.fs-gt-carte{margin:0;border-radius:var(--arrondi);overflow:hidden;background:color-mix(in srgb,var(--carte) 70%,transparent);border:1px solid var(--bord)}
.fs-gt-carte video,.fs-gt-carte img{width:100%;display:block;aspect-ratio:16/9;object-fit:cover;background:#05040a}
.fs-gt-carte figcaption{padding:.5rem .7rem;font-size:.82rem;color:var(--texte-doux);text-align:center}
@media (max-width:900px){.fs-w-gtitres{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}}
.fs-transitions{position:relative;border-radius:var(--arrondi);overflow:hidden;background:#000;isolation:isolate}
.fs-fs_transitions.fs-l-petite .fs-transitions{max-width:460px;margin-inline:auto}.fs-fs_transitions.fs-l-moyenne .fs-transitions{max-width:900px;margin-inline:auto}
.fs-transitions-canevas{width:100%;display:block;background:#000;transition:opacity .5s}
.fs-transitions-barre{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:1rem;padding:1.4rem 1.1rem .9rem;background:linear-gradient(transparent,rgba(0,0,0,.72));color:#fff;z-index:2}
.fs-transitions-barre:empty{display:none}
.fs-transitions-nom{font-weight:700;text-shadow:0 2px 10px rgba(0,0,0,.7);white-space:nowrap;cursor:pointer;padding:.3rem .8rem;border-radius:999px;background:rgba(255,255,255,.12);backdrop-filter:blur(6px);transition:background .2s}
.fs-transitions-nom:hover{background:rgba(255,255,255,.24)}
.fs-transitions-nom::before{content:"▸ ";content:"▸ " / "";opacity:.7}
.fs-transitions-curseur{flex:1;accent-color:var(--accent2);min-width:120px;cursor:pointer}
.fs-transitions-etape{position:absolute;top:.9rem;right:.9rem;z-index:2;font-size:.8rem;color:#fff;background:rgba(0,0,0,.45);padding:.25rem .7rem;border-radius:999px;font-variant-numeric:tabular-nums}
@media (prefers-reduced-motion:reduce){
  .fs-car-piste,.fs-prog-barre span,.fs-fixe-etape,.fs-cadre{transition:none !important}
  .fs-fixe-etape{opacity:1 !important;transform:none !important}
  .fs-modale-boite,.fs-modale-fond,.fs-w-cookies{animation:none !important}
}
/* ── ANIMATIONS MAISON des listes et des tableaux (2026-08-21) ──
   ``--r`` = rang de la ligne : c'est lui qui décale la cascade. L'entrée
   attend ``.fs-vu`` (posé quand le bloc arrive à l'écran) — sans quoi elle
   aurait déjà joué quand on arrive dessus. */
.fs-anim-cascade>li,.fs-anim-cascade tbody tr{opacity:0;transform:translateY(.7em)}
.fs-vu .fs-anim-cascade>li,.fs-vu .fs-anim-cascade tbody tr,
.fs-anim-cascade.fs-vu>li,.fs-anim-cascade.fs-vu tbody tr{animation:fs-l-cascade .55s var(--fs-ease) both;animation-delay:calc(var(--r) * 70ms)}
@keyframes fs-l-cascade{to{opacity:1;transform:none}}
.fs-anim-balayage>li,.fs-anim-balayage tbody tr{opacity:0;transform:translateX(-1.2em)}
.fs-vu .fs-anim-balayage>li,.fs-vu .fs-anim-balayage tbody tr,
.fs-anim-balayage.fs-vu>li,.fs-anim-balayage.fs-vu tbody tr{animation:fs-l-balayage .5s var(--fs-ease) both;animation-delay:calc(var(--r) * 55ms)}
@keyframes fs-l-balayage{to{opacity:1;transform:none}}
.fs-anim-decoupe>li,.fs-anim-decoupe tbody tr{clip-path:inset(0 0 100% 0);opacity:0}
.fs-vu .fs-anim-decoupe>li,.fs-vu .fs-anim-decoupe tbody tr,
.fs-anim-decoupe.fs-vu>li,.fs-anim-decoupe.fs-vu tbody tr{animation:fs-l-decoupe .6s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(var(--r) * 65ms)}
@keyframes fs-l-decoupe{to{clip-path:inset(0 0 0 0);opacity:1}}
.fs-anim-zoom>li,.fs-anim-zoom tbody tr{opacity:0;transform:scale(.82)}
.fs-vu .fs-anim-zoom>li,.fs-vu .fs-anim-zoom tbody tr,
.fs-anim-zoom.fs-vu>li,.fs-anim-zoom.fs-vu tbody tr{animation:fs-l-zoom .6s cubic-bezier(.2,1.6,.4,1) both;animation-delay:calc(var(--r) * 60ms)}
@keyframes fs-l-zoom{to{opacity:1;transform:none}}
.fs-anim-pivot>li,.fs-anim-pivot tbody tr{opacity:0;transform:perspective(700px) rotateX(58deg);transform-origin:50% 0}
.fs-vu .fs-anim-pivot>li,.fs-vu .fs-anim-pivot tbody tr,
.fs-anim-pivot.fs-vu>li,.fs-anim-pivot.fs-vu tbody tr{animation:fs-l-pivot .65s var(--fs-ease) both;animation-delay:calc(var(--r) * 70ms)}
@keyframes fs-l-pivot{to{opacity:1;transform:none}}
.fs-surv-lueur>li,.fs-surv-lueur tbody tr{transition:box-shadow .25s,background .25s}
.fs-surv-lueur>li:hover,.fs-surv-lueur tbody tr:hover{background:color-mix(in srgb,var(--accent) 14%,transparent);box-shadow:inset .18em 0 0 var(--accent)}
.fs-surv-glisse>li,.fs-surv-glisse tbody tr{transition:transform .25s var(--fs-ease)}
.fs-surv-glisse>li:hover,.fs-surv-glisse tbody tr:hover{transform:translateX(.45em)}
.fs-surv-relief>li,.fs-surv-relief tbody tr{transition:transform .25s,box-shadow .25s}
.fs-surv-relief>li:hover,.fs-surv-relief tbody tr:hover{transform:translateY(-.14em) scale(1.012);box-shadow:0 .5em 1.4em rgba(0,0,0,.28)}
/* ══ SCÉNARIO : des étapes qui prennent la scène l'une après l'autre ══ */
.fs-w-scenario{position:relative;isolation:isolate}
.fs-sc-scene{position:relative;display:grid}
.fs-sc-etape{grid-area:1/1;opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .7s var(--fs-ease),transform .7s var(--fs-ease),filter .7s var(--fs-ease);will-change:opacity,transform}
.fs-sc-h-demi .fs-sc-scene{min-height:52vh;align-content:center}
.fs-sc-h-plein .fs-sc-scene{min-height:88vh;align-content:center}
/* les transitions : l'état de repos d'une étape qui n'est pas à l'écran */
.fs-sc-t-glisse .fs-sc-etape{transform:translateX(6%)}
.fs-sc-t-glisse .fs-sc-etape.fs-sc-sortie{transform:translateX(-6%)}
.fs-sc-t-zoom .fs-sc-etape{transform:scale(.9)}
.fs-sc-t-zoom .fs-sc-etape.fs-sc-sortie{transform:scale(1.08)}
.fs-sc-t-bascule .fs-sc-etape{transform:perspective(1200px) rotateY(14deg)}
.fs-sc-t-bascule .fs-sc-etape.fs-sc-sortie{transform:perspective(1200px) rotateY(-14deg)}
.fs-sc-t-flou .fs-sc-etape{filter:blur(14px);transform:scale(1.03)}
.fs-sc-t-montee .fs-sc-etape{transform:translateY(8%)}
.fs-sc-t-montee .fs-sc-etape.fs-sc-sortie{transform:translateY(-8%)}
.fs-sc-t-aucune .fs-sc-etape{transition:none}
/* ⚠ APRÈS les variantes, et plus spécifique : à spécificité égale c'est la
   dernière règle qui gagne, et l'étape ACTIVE gardait le flou (ou le décalage)
   de son état de repos. Tout scénario paraissait alors figé et flou. */
.fs-w-scenario .fs-sc-etape.fs-sc-on{opacity:1;visibility:visible;pointer-events:auto;
  transform:none;filter:none}
/* ⚠ TOUTES LES ÉTAPES AU MÊME FORMAT : sans cela, l'une est en haut, l'autre
   au milieu, et les médias n'ont pas la même taille — le show paraît
   brouillon. On centre, on impose une hauteur commune et un cadre de média
   unique. */
.fs-w-scenario .fs-sc-etape{align-content:center;justify-items:center;text-align:center;
  padding:.6rem 0;min-height:var(--sc-h,26rem)}
.fs-w-scenario .fs-sc-etape>*{width:100%}
.fs-w-scenario .fs-media,.fs-w-scenario .fs-transitions,.fs-w-scenario canvas.fs-webgl{
  max-width:min(880px,100%);margin-inline:auto}
.fs-w-scenario .fs-media video,.fs-w-scenario .fs-media img{width:100%;aspect-ratio:16/9;object-fit:cover;
  border-radius:var(--arrondi);background:#05040a}
.fs-w-scenario .fs-transitions,.fs-w-scenario canvas.fs-webgl{border-radius:var(--arrondi)}
.fs-w-scenario .fs-panneau-titre,.fs-w-scenario .fs-sc-etape h2,.fs-w-scenario .fs-sc-etape h3{text-align:center}
.fs-sc-barre{position:relative;height:3px;margin-top:.9rem;border-radius:999px;
  background:color-mix(in srgb,var(--texte) 14%,transparent);overflow:hidden}
.fs-sc-barre span{position:absolute;inset:0 auto 0 0;width:0;border-radius:999px;
  background:linear-gradient(90deg,var(--accent),var(--accent2,var(--accent)))}
.fs-sc-cmd{display:flex;align-items:center;gap:.4rem;justify-content:center;margin-top:.6rem}
.fs-sc-cmd button{width:2.2rem;height:2.2rem;border-radius:999px;border:1px solid var(--bord);
  background:color-mix(in srgb,var(--carte) 80%,transparent);color:var(--texte);cursor:pointer;
  font-size:1.05rem;line-height:1;display:grid;place-items:center;transition:background .2s,transform .2s}
.fs-sc-cmd button:hover{background:var(--accent-plein,var(--accent));color:var(--sur-accent,#fff);transform:scale(1.07)}
.fs-sc-points{display:flex;flex-wrap:wrap;gap:.34rem;justify-content:center;margin-top:.6rem}
.fs-sc-point{width:.62rem;height:.62rem;border-radius:999px;border:0;padding:0;cursor:pointer;
  background:color-mix(in srgb,var(--texte) 26%,transparent);transition:background .2s,transform .2s}
.fs-sc-point:hover{transform:scale(1.35)}
.fs-sc-point[aria-current="true"]{background:var(--accent);transform:scale(1.35)}
.fs-sc-compte{font-size:.8rem;color:var(--texte-doux);font-variant-numeric:tabular-nums;margin-left:.4rem}

/* ══ OUVERTURE : le rideau du site ══ */
.fs-ouverture{position:fixed;inset:0;z-index:9000;display:grid;place-items:center;overflow:hidden;
  background:var(--fond,#0b0a12);transition:opacity .8s var(--fs-ease),visibility .8s}
.fs-ouverture.fs-ouv-partie{opacity:0;visibility:hidden;pointer-events:none}
.fs-ouv-fond{position:absolute;inset:0;width:100%;height:100%;display:block}
.fs-ouv-voile{position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 40%,transparent,#05040a 78%)}
.fs-ouv-scene{position:relative;z-index:2;width:min(1100px,92vw);text-align:center}
.fs-ouv-scene .fs-sc-scene{min-height:56vh;align-content:center}
.fs-ouv-outils{position:absolute;z-index:3;right:1.1rem;bottom:1.1rem;display:flex;gap:.5rem;align-items:center}
.fs-ouv-outils .fs-son{position:static}
.fs-ouv-passer{border:1px solid color-mix(in srgb,#fff 35%,transparent);border-radius:999px;
  background:rgba(8,6,16,.5);color:#fff;padding:.42rem 1.05rem;font-size:.86rem;cursor:pointer;
  backdrop-filter:blur(6px);transition:background .2s,transform .2s}
.fs-ouv-passer:hover{background:var(--accent);transform:scale(1.04)}
body.fs-ouv-verrou{overflow:hidden}
/* dans l'aperçu du Studio, le rideau ne doit pas manger l'éditeur */
.fs-ouv-apercu{position:absolute;min-height:70vh}
@media (prefers-reduced-motion:reduce){
  [class*="fs-anim-"]>li,[class*="fs-anim-"] tbody tr{opacity:1 !important;transform:none !important;clip-path:none !important;animation:none !important}
  .fs-sc-etape{transition:none;transform:none !important;filter:none !important;
    opacity:1;visibility:visible;position:static;pointer-events:auto}
  .fs-sc-scene{display:block}
  .fs-sc-barre,.fs-sc-points,.fs-ouverture{display:none}
}
@media print{.fs-ouverture{display:none !important}}
/* ── le son d'une animation : un petit haut-parleur, jamais de son imposé ── */
.fs-media{position:relative}
.fs-son{position:absolute;top:.6rem;right:.6rem;z-index:3;width:2.1rem;height:2.1rem;border:0;
  border-radius:999px;cursor:pointer;font-size:.95rem;line-height:1;display:grid;place-items:center;
  color:#fff;background:rgba(8,6,16,.55);backdrop-filter:blur(6px);
  box-shadow:0 1px 6px rgba(0,0,0,.35);transition:background .2s,transform .2s,opacity .2s;opacity:.75}
.fs-son:hover,.fs-son:focus-visible{opacity:1;transform:scale(1.08);background:var(--fs-accent,#8b5cf6)}
.fs-son[aria-pressed="true"]{opacity:1;background:var(--fs-accent,#8b5cf6)}
.fs-son-piste{display:none}
@media (prefers-reduced-motion:reduce){.fs-son{transition:none}}
@media print{.fs-retour-haut,.fs-w-cookies,.fs-w-modale,.fs-transitions-barre,.fs-son{display:none !important}}

/* ══════════════ diaporama (chantier DIAPORAMA WEB, 2026-08-22) ══════════════ */
/* Aucune couleur « inventée » : les teintes viennent du thème (--accent,
   --carte, --texte, --bord, --arrondi) ; seuls les VOILES au-dessus d'une
   image sont des noirs/blancs transparents, comme la barre du terrain de jeu. */
.fs-dp{position:relative}
.fs-dp-scene{position:relative;width:100%;overflow:hidden;border-radius:var(--arrondi);
  background:var(--carte);isolation:isolate}
.fs-dp-scene:not(.fs-dp-auto){height:0;padding-top:var(--dp-ratio,56.25%)}
.fs-dp-pile{position:absolute;inset:0}
.fs-dp-scene.fs-dp-auto .fs-dp-pile{position:relative;inset:auto}
.fs-dp-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;
  opacity:0;transition:opacity var(--dp-trans,600ms) ease-in-out;will-change:opacity}
.fs-dp-scene.fs-dp-auto .fs-dp-image:first-child{position:relative;height:auto}
.fs-dp-image.fs-dp-actif{opacity:1}
/* Ken Burns : une loi (échelle + dérive) sur la durée de la diapositive.
   Le sens vient du rang de l'image (--dp-sens), pas du hasard : deux
   chargements de la page donnent la même image. */
@keyframes fs-dp-kb{from{transform:scale(1) translate3d(0,0,0)}
  to{transform:scale(1.12) translate3d(calc(var(--dp-sens,1) * 2.2%),calc(var(--dp-sens,1) * -1.6%),0)}}
.fs-dp-image.fs-dp-kb.fs-dp-actif{animation:fs-dp-kb var(--dp-duree,4000ms) linear forwards}
/* canevas WebGL : au-dessus de la pile, et seulement quand il sert */
.fs-dp-canevas{position:absolute;inset:0;width:100%;height:100%;display:none;z-index:1}
.fs-dp.fs-dp-gl .fs-dp-canevas{display:block}
.fs-dp.fs-dp-gl .fs-dp-pile{opacity:0;pointer-events:none}
/* légendes */
.fs-dp-legende{position:absolute;left:0;right:0;bottom:0;margin:0;z-index:2;color:#fff;
  padding:2.4rem 1.2rem .9rem;font-size:.95rem;line-height:1.4;
  background:linear-gradient(transparent,rgba(0,0,0,.72))}
.fs-dp-legende:empty{display:none}
.fs-dp-sous{margin:.6rem 0 0;color:var(--muet);font-size:.9rem;text-align:center;min-height:1.2em}
/* flèches */
.fs-dp-fleche{position:absolute;top:50%;transform:translateY(-50%);z-index:3;
  width:2.6rem;height:2.6rem;border:0;border-radius:999px;cursor:pointer;line-height:1;
  font-size:1.6rem;color:#fff;background:rgba(0,0,0,.42);backdrop-filter:blur(6px);
  opacity:0;transition:opacity .25s,background .2s}
.fs-dp-scene:hover .fs-dp-fleche,.fs-dp-fleche:focus-visible{opacity:1}
.fs-dp-fleche:hover{background:rgba(0,0,0,.66)}
.fs-dp-prec{left:.7rem}.fs-dp-suiv{right:.7rem}
/* pastilles */
.fs-dp-pastilles{position:absolute;left:0;right:0;bottom:.7rem;z-index:3;
  display:flex;justify-content:center;gap:.45rem;flex-wrap:wrap;padding:0 1rem}
.fs-dp-pastille{width:.62rem;height:.62rem;padding:0;border:0;border-radius:999px;cursor:pointer;
  background:rgba(255,255,255,.42);transition:background .2s,transform .2s}
.fs-dp-pastille:hover{transform:scale(1.25)}
.fs-dp-pastille.fs-dp-active{background:var(--accent)}
.fs-dp.fs-dp-legendes-dessous .fs-dp-pastilles{bottom:.5rem}
/* largeurs (comme les autres blocs médias) */
.fs-bloc.fs-fs_diaporama.fs-l-petite .fs-dp{max-width:460px;margin-inline:auto}
.fs-bloc.fs-fs_diaporama.fs-l-moyenne .fs-dp{max-width:900px;margin-inline:auto}
@media (prefers-reduced-motion:reduce){
  .fs-dp-image{transition-duration:1ms}
  .fs-dp-image.fs-dp-kb.fs-dp-actif{animation:none}
}
@media print{.fs-dp-fleche,.fs-dp-pastilles,.fs-dp-canevas{display:none !important}}

.fs-matiere{position:relative;display:inline-flex;align-items:center;
  justify-content:center;border:0;background:transparent;cursor:pointer;
  text-decoration:none;isolation:isolate}
/* ⚠⚠ ``max-width:none`` N'EST PAS DÉCORATIF. La feuille du site pose
   ``img,video,canvas{max-width:100%}`` (une bonne règle : rien ne déborde de
   sa colonne). Elle RABOTAIT la toile de 472 px à 250 px — la largeur du
   bouton — et la matière se retrouvait écrasée dans la boîte, décalée à
   gauche, le libellé à côté. Autrement dit : le rectangle revenait, par une
   règle CSS, alors que le calcul de marge était juste. Mesuré dans un vrai
   navigateur ; aucune relecture ne le montre. */
.fs-matiere-toile{position:absolute;z-index:0;pointer-events:none;
  max-width:none;max-height:none;min-width:0;min-height:0}
.fs-matiere>.fs-matiere-txt{position:relative;z-index:1;font-weight:700;
  letter-spacing:.01em;padding:0 .9em;white-space:nowrap}
/* ⚠ Repli SANS WebGL : un bouton doit rester un bouton lisible et cliquable.
   Un site qui n'affiche rien du tout parce que la carte graphique manque
   n'est pas un site dégradé, c'est un site cassé. */
.fs-matiere-repli{background:linear-gradient(180deg,var(--fs-mat-haut),var(--fs-mat-bas));
  border-radius:999px;box-shadow:0 2px 10px rgba(0,0,0,.35)}
@media (prefers-reduced-motion:reduce){.fs-matiere-toile{display:none}
  .fs-matiere{background:linear-gradient(180deg,var(--fs-mat-haut),var(--fs-mat-bas));
  border-radius:999px}}

/* ══════════════ fs-web.css · 🎬 mise en scène — régie, actes, porte, HUD (lot 1 Traversée, 2026-10-15) ══════════════ */
.fs-bloc.fs-regie{position:relative;padding:0;isolation:isolate;background:var(--fond)}
.fs-bloc.fs-regie>.fs-mes-piste{width:100%;max-width:none;margin:0}
.fs-mes-scene{position:relative;min-height:60vh}
.fs-mes-ciel{position:absolute;inset:0;width:100% !important;height:100% !important;max-width:none;margin:0;z-index:0;border-radius:0}
.fs-mes-actes{position:relative;z-index:1}
.fs-bloc.fs-acte{position:relative;padding:0;min-height:60vh;display:flex;flex-direction:column;justify-content:center;isolation:isolate;overflow:hidden}
.fs-bloc.fs-acte>.fs-mes-fond-boite{position:absolute;inset:0;width:100%;max-width:none;margin:0;z-index:0;pointer-events:none}
.fs-mes-fond-boite>.fs-mes-fond{position:absolute;inset:0;width:100% !important;height:100% !important;max-width:none;margin:0;border-radius:0}
.fs-mes-fond-boite>.fs-mes-voile{position:absolute;inset:0;background:#000;opacity:var(--mes-voile,.35)}
.fs-bloc.fs-acte>.fs-mes-contenu{position:relative;z-index:1;width:min(var(--largeur),100% - 2rem);margin-inline:auto;padding:clamp(1.2rem,4vh,3rem) 0;display:flex;flex-direction:column;gap:.2rem;min-height:0;will-change:transform,opacity}
.fs-mes-al-gauche{text-align:left;align-items:flex-start}.fs-mes-al-centre{text-align:center;align-items:center}.fs-mes-al-droite{text-align:right;align-items:flex-end}
.fs-mes-contenu>.fs-bloc{width:100%;max-width:none}
.fs-mes-contenu>.fs-bloc.fs-imbrique{padding:.45rem 0}
/* la scène ÉPINGLÉE : seulement quand la boucle JS tourne (classe posée par le runtime) */
.fs-mes-actif>.fs-mes-piste{height:calc(var(--mes-ecrans,1)*100vh);height:calc(var(--mes-ecrans,1)*100svh)}
.fs-mes-actif .fs-mes-scene{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;min-height:0}
.fs-mes-actif .fs-mes-actes{position:absolute;inset:0}
.fs-mes-actif .fs-bloc.fs-acte{position:absolute;inset:0;min-height:0;opacity:0;pointer-events:none}
.fs-mes-actif .fs-bloc.fs-acte.fs-mes-en-cours{pointer-events:auto}
.fs-mes-actif .fs-bloc.fs-acte.fs-mes-cache{visibility:hidden}
.fs-mes-actif .fs-bloc.fs-acte.fs-mes-cache>.fs-mes-fond-boite{display:none}   /* le ciel d'un acte caché s'arrête (IntersectionObserver du visuel) */
.fs-mes-actif .fs-bloc.fs-acte>.fs-mes-contenu{max-height:100%;overflow:visible}
.fs-mes-actif .fs-mes-alv-haut{justify-content:flex-start}.fs-mes-actif .fs-mes-alv-centre{justify-content:center}.fs-mes-actif .fs-mes-alv-bas{justify-content:flex-end}
.fs-mes-actif .fs-mes-alv-haut>.fs-mes-contenu{margin-top:clamp(3rem,12vh,7rem)}.fs-mes-actif .fs-mes-alv-bas>.fs-mes-contenu{margin-bottom:clamp(3rem,12vh,7rem)}
/* la fine barre, la consigne, la pastille de visite guidée */
.fs-mes-barre{position:absolute;left:0;right:0;bottom:0;height:3px;background:color-mix(in srgb,var(--texte) 12%,transparent);z-index:4;pointer-events:none;display:none}
.fs-mes-actif .fs-mes-barre{display:block}
.fs-mes-barre>span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--accent2));box-shadow:0 0 12px color-mix(in srgb,var(--accent) 60%,transparent)}
.fs-mes-consigne,.fs-mes-pastille{position:absolute;left:50%;transform:translateX(-50%);margin:0;z-index:4;font-size:.9rem;color:var(--texte);background:color-mix(in srgb,var(--carte) 70%,transparent);border:1px solid var(--bord);border-radius:999px;padding:.45rem .95rem;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);opacity:0;transition:opacity .6s ease;pointer-events:none;white-space:nowrap;max-width:calc(100% - 2rem);overflow:hidden;text-overflow:ellipsis}
.fs-mes-consigne{bottom:clamp(2.2rem,9vh,5rem);animation:fs-mes-souffle 2.6s ease-in-out 1s infinite}
.fs-mes-pastille{top:clamp(.8rem,2.5vh,1.6rem)}
.fs-mes-consigne.fs-mes-visible,.fs-mes-pastille.fs-mes-visible{opacity:1}
@keyframes fs-mes-souffle{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-6px)}}
/* ── la porte ── */
.fs-bloc.fs-porte{text-align:center}
.fs-bloc.fs-porte>a.fs-mes-porte{width:auto;max-width:100%;margin-inline:0}
.fs-mes-porte-al-gauche{text-align:left}.fs-mes-porte-al-droite{text-align:right}
.fs-mes-porte{--mes-porte:var(--accent);display:inline-flex;flex-direction:column;align-items:center;gap:.15rem;text-decoration:none;color:#fff;background:linear-gradient(135deg,var(--mes-porte),color-mix(in srgb,var(--mes-porte) 70%,#000));padding:.9rem 1.6rem;border-radius:999px;font-weight:700;font-size:1.05rem;box-shadow:0 10px 30px color-mix(in srgb,var(--mes-porte) 35%,transparent),inset 0 1px 0 rgba(255,255,255,.25);transition:transform .25s ease,box-shadow .25s ease;cursor:pointer}
.fs-mes-porte:hover,.fs-mes-porte:focus-visible{transform:translateY(-2px) scale(1.02);box-shadow:0 16px 40px color-mix(in srgb,var(--mes-porte) 50%,transparent),inset 0 1px 0 rgba(255,255,255,.3);outline:none}
.fs-mes-porte:focus-visible{box-shadow:0 0 0 3px var(--fond),0 0 0 6px var(--mes-porte)}
.fs-mes-porte-carte{border-radius:var(--arrondi);padding:1.1rem 1.8rem;align-items:flex-start;text-align:left;min-width:min(320px,100%)}
.fs-mes-porte-carte .fs-mes-porte-texte{font-size:1.25rem}
.fs-mes-porte-sous{font-weight:400;opacity:.85;font-size:.9rem}
.fs-mes-porte-lien{background:none;box-shadow:none;color:var(--mes-porte);padding:.2rem 0;border-radius:0;border-bottom:1px solid currentColor;font-weight:600}
.fs-mes-porte-lien:hover,.fs-mes-porte-lien:focus-visible{transform:none;box-shadow:none}
.fs-mes-porte-lien:focus-visible{outline:2px solid currentColor;outline-offset:4px}   /* lot 6 b : le lien garde un focus visible */
.fs-mes-porte-element-boite a:focus-visible{outline:3px solid #fff;outline-offset:3px}   /* lot 6 b : le bouton du Studio Interface aussi */
.fs-mes-porte-voile{position:fixed;inset:0;z-index:9000;pointer-events:none;background:var(--mes-porte,var(--accent))}
canvas.fs-mes-porte-voile{background:transparent;width:100%;height:100%}
/* ── le HUD ── */
.fs-bloc.fs-hud{padding:0}
.fs-bloc.fs-hud>.fs-mes-hud{width:100%;max-width:none;margin:0}
.fs-mes-hud{display:flex;align-items:center;gap:1rem;padding:.6rem clamp(1rem,3vw,2rem);color:var(--texte);font-size:.85rem;box-sizing:border-box}
.fs-mes-hud-verre{background:color-mix(in srgb,var(--fond) 55%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid color-mix(in srgb,var(--texte) 10%,transparent)}
.fs-mes-hud-sobre{background:transparent}
.fs-mes-hud-lumineux{background:linear-gradient(transparent,color-mix(in srgb,var(--fond) 80%,transparent))}
.fs-mes-hud-barre{position:relative;flex:1 1 120px;height:4px;border-radius:2px;background:color-mix(in srgb,var(--texte) 14%,transparent);min-width:60px}
.fs-mes-hud-barre>span{display:block;height:100%;width:0;border-radius:2px;background:linear-gradient(90deg,var(--accent),var(--accent2))}
.fs-mes-hud-lumineux .fs-mes-hud-barre>span{box-shadow:0 0 10px var(--accent)}
.fs-mes-hud-reperes{display:flex;gap:.2rem .9rem;list-style:none;margin:0;padding:0;flex-wrap:wrap;justify-content:center}
.fs-mes-hud-repere{display:inline-flex;align-items:center;gap:.4rem;color:var(--muet);text-decoration:none;padding:.2rem .35rem;border-radius:999px;transition:color .25s}
.fs-mes-hud-repere>i{width:9px;height:9px;border-radius:50%;border:2px solid currentColor;box-sizing:border-box;transition:background .25s,transform .25s;flex:none}
.fs-mes-hud-repere:hover,.fs-mes-hud-repere:focus-visible{color:var(--texte);outline:none}
/* lot 6 b (Claude 5.5) : un focus VISIBLE au clavier, pas seulement une couleur (WCAG 2.4.7) */
.fs-mes-hud-repere:focus-visible{box-shadow:0 0 0 2px var(--fond),0 0 0 4px var(--accent)}
.fs-mes-hud-repere.fs-mes-hud-passe{color:var(--texte)}.fs-mes-hud-repere.fs-mes-hud-passe>i{background:currentColor}
.fs-mes-hud-repere.fs-mes-hud-actif{color:var(--accent)}.fs-mes-hud-repere.fs-mes-hud-actif>i{background:currentColor;transform:scale(1.25);box-shadow:0 0 10px var(--accent)}
.fs-mes-hud-compteur{font-variant-numeric:tabular-nums;color:var(--muet);white-space:nowrap}
.fs-mes-actif .fs-mes-scene .fs-bloc.fs-hud{position:absolute;left:0;right:0;z-index:5}
.fs-mes-actif .fs-mes-scene .fs-hud.fs-mes-hud-en-bas{bottom:0}.fs-mes-actif .fs-mes-scene .fs-hud.fs-mes-hud-en-haut{top:0}
.fs-mes-actif .fs-mes-scene .fs-hud.fs-mes-hud-en-droite{left:auto;right:0;top:50%;transform:translateY(-50%);width:auto}
.fs-mes-hud-en-droite .fs-mes-hud{flex-direction:column;align-items:flex-end;padding:1rem}
.fs-mes-hud-en-droite .fs-mes-hud-reperes{flex-direction:column;align-items:flex-end}
.fs-mes-hud-en-droite .fs-mes-hud-barre{display:none}
html.fs-mes-js .fs-bloc.fs-hud.fs-mes-hud-fixe{position:fixed;left:0;right:0;z-index:60;transition:opacity .4s;opacity:0;pointer-events:none}
html.fs-mes-js .fs-bloc.fs-hud.fs-mes-hud-fixe.fs-mes-hud-visible{opacity:1;pointer-events:auto}
html.fs-mes-js .fs-hud.fs-mes-hud-fixe.fs-mes-hud-en-bas{bottom:0}html.fs-mes-js .fs-hud.fs-mes-hud-fixe.fs-mes-hud-en-haut{top:0}
html.fs-mes-js .fs-hud.fs-mes-hud-fixe.fs-mes-hud-en-droite{left:auto;right:0;top:50%;transform:translateY(-50%);width:auto}
@media (max-width:640px){.fs-mes-hud{font-size:.78rem;gap:.6rem}.fs-mes-hud-repere>span{display:none}.fs-mes-hud-repere.fs-mes-hud-actif>span{display:inline}
  .fs-mes-consigne,.fs-mes-pastille{white-space:normal;text-align:center;line-height:1.3;max-width:calc(100% - 1.6rem)}
  .fs-mes-actif .fs-bloc.fs-acte>.fs-mes-contenu{max-height:calc(100% - 3.2rem);overflow:auto;overscroll-behavior:auto;-webkit-overflow-scrolling:touch}   /* filet : un acte plus haut que l'écran se déroule dedans */
  .fs-mes-contenu h1{font-size:clamp(1.9rem,9vw,3rem)}.fs-mes-contenu h2{font-size:clamp(1.4rem,6.5vw,2.2rem)}}
/* ── mouvement réduit, impression, capture : un site complet, immobile ── */
@media (prefers-reduced-motion:reduce){
  .fs-mes-actif>.fs-mes-piste{height:auto}.fs-mes-actif .fs-mes-scene{position:static;height:auto;overflow:visible}
  .fs-mes-actif .fs-mes-actes,.fs-mes-actif .fs-bloc.fs-acte{position:relative;inset:auto;opacity:1 !important;transform:none !important;visibility:visible !important;pointer-events:auto;min-height:60vh}
  .fs-mes-consigne{animation:none}
}
@media print{.fs-mes-actif>.fs-mes-piste{height:auto}.fs-mes-actif .fs-mes-scene{position:static;height:auto;overflow:visible}
  .fs-mes-actif .fs-mes-actes,.fs-mes-actif .fs-bloc.fs-acte{position:relative;inset:auto;opacity:1 !important;transform:none !important;visibility:visible !important}
  .fs-mes-barre,.fs-mes-consigne,.fs-mes-pastille,.fs-hud{display:none !important}}

/* ── 🎬 scènes 3D (lot 2 Traversée ; refonte du rendu 2026-10-16) ─────────────── */
.fs-bloc.fs-scene_3d{position:relative;overflow:hidden;min-height:40vh;background:#070a14;border-radius:var(--arrondi,0)}
.fs-bloc.fs-scene_3d.fs-s3d-pleine{min-height:100svh;border-radius:0}
.fs-s3d-boite{position:absolute;inset:0;overflow:hidden}
.fs-s3d-boite>.fs-webgl{position:absolute;inset:0;width:100%;height:100%;display:block}
.fs-s3d-canevas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:pan-y}
.fs-s3d-repli{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.95)}
.fs-s3d-pret .fs-s3d-repli{opacity:0;transition:opacity .9s ease;pointer-events:none}
.fs-s3d-contenu{position:relative;z-index:2;padding:var(--esp-4,2rem) var(--esp-3,1.25rem)}
.fs-s3d-etat{position:absolute;left:.8rem;bottom:.6rem;z-index:3;font:500 .72rem/1.3 var(--police-ui,system-ui);color:#fff;opacity:.55;background:rgba(0,0,0,.35);padding:.2rem .5rem;border-radius:.6rem;pointer-events:none}
.fs-s3d-sans{position:absolute;inset:auto .8rem .6rem auto;z-index:3;font:500 .78rem/1.3 var(--police-ui,system-ui);color:#fff;background:rgba(0,0,0,.45);padding:.3rem .6rem;border-radius:.6rem}
/* la scène en DÉCOR d'une régie : derrière les actes, pleine scène */
html.fs-mes-js .fs-mes-scene>.fs-mes-decor{position:absolute;inset:0;z-index:0;min-height:0;border-radius:0}
html:not(.fs-mes-js) .fs-mes-scene>.fs-mes-decor{position:relative;height:60svh;min-height:0;border-radius:0}
.fs-mes-scene>.fs-mes-decor .fs-s3d-contenu{display:none}
@media (prefers-reduced-motion:reduce){.fs-s3d-pret .fs-s3d-repli{transition:none}}
@media print{.fs-s3d-canevas{display:none}.fs-s3d-pret .fs-s3d-repli{opacity:1}}

/* ── 🎬 titres vivants (lot 3 Traversée) ──────────────────────────────── */
.fs-bloc.fs-titre_vivant{position:relative;display:block;text-align:center;padding:calc(var(--tv-taille,3rem)*.4) 0;overflow:visible}
.fs-bloc.fs-titre_vivant.fs-tv-plein{min-height:100svh;display:flex;align-items:center;justify-content:center;padding:0}
.fs-tv-texte{position:relative;z-index:1;margin:0;font-weight:var(--tv-graisse,700);line-height:1.08;letter-spacing:var(--tv-tracking,.04em);color:var(--tv-couleur,var(--texte,#fff));white-space:nowrap;text-shadow:var(--tv-ombre,none);font-family:var(--tv-police,inherit);transition:color .25s ease}
.fs-titre_vivant>.fs-tv-texte{font-size:var(--tv-taille-sure,var(--tv-taille,clamp(2rem,9vw,10rem)))}   /* plus fort que « .fs-mes-contenu h1 » du téléphone : le titre vivant tient son corps (le runtime pose le corps demandé en ligne, puis l'ajuste) */
.fs-tv-texte.fs-tv-multi{white-space:normal}
.fs-tv-canevas{position:absolute;left:0;top:calc(var(--tv-taille,3rem)*-.6);width:100%;height:calc(100% + var(--tv-taille,3rem)*1.2);display:block;pointer-events:none;z-index:2}
.fs-tv-pret>.fs-tv-texte{color:transparent;-webkit-text-fill-color:transparent;text-shadow:none}
.fs-tv-pret>.fs-tv-texte::selection{color:#fff;background:rgba(94,225,255,.6)}
.fs-tv-sans{position:absolute;right:.5rem;bottom:.3rem;z-index:3;font:500 .7rem/1.3 var(--police-ui,system-ui);color:#fff;opacity:.5;background:rgba(0,0,0,.35);padding:.15rem .45rem;border-radius:.5rem;pointer-events:none}
@media (prefers-reduced-motion:reduce){.fs-tv-canevas{display:none}.fs-tv-pret>.fs-tv-texte{color:var(--tv-couleur,var(--texte,#fff));-webkit-text-fill-color:var(--tv-couleur,var(--texte,#fff));text-shadow:var(--tv-ombre,none)}}
@media print{.fs-tv-canevas{display:none}.fs-tv-pret>.fs-tv-texte{color:var(--tv-couleur,#000);-webkit-text-fill-color:var(--tv-couleur,#000)}}

/* ── 🎮 jeu web (lot J Traversée) ───────────────────────────────────────── */
.fs-bloc.fs-jeu_web{position:relative;display:block;margin:0 auto;max-width:100%}
.fs-jeu-cadre{position:relative;width:100%;aspect-ratio:var(--jeu-ratio,16/9);max-height:100svh;background:var(--jeu-fond,#0b0d12);border-radius:var(--rayon,.8rem);overflow:hidden}
.fs-jeu_web.fs-jeu-plein .fs-jeu-cadre{aspect-ratio:auto;height:100svh;border-radius:0}
.fs-jeu-canevas{position:relative;display:block;width:100%;height:100%;touch-action:none;outline:none;z-index:1}
.fs-jeu-canevas:focus-visible{box-shadow:inset 0 0 0 3px var(--accent,#5ee1ff)}
.fs-jeu-fond{position:absolute;z-index:0;pointer-events:none}
.fs-jeu-barre{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.4rem .2rem;font-size:.82rem;color:var(--texte-faible,#9aa6bd)}
.fs-jeu-barre button{font:inherit;color:inherit;background:transparent;border:1px solid currentColor;border-radius:.5rem;padding:.2rem .6rem;cursor:pointer;opacity:.8}
.fs-jeu-barre button:hover,.fs-jeu-barre button:focus-visible{opacity:1}
.fs-jeu-barre .fs-jeu-diag{margin-left:auto;opacity:.7}
.fs-jeu-repli{display:none;width:100%;height:auto}
.fs-jeu-sans{padding:1.2rem;text-align:center;color:var(--texte-faible,#9aa6bd)}
html:not(.fs-mes-js) .fs-jeu-repli{display:block}html:not(.fs-mes-js) .fs-jeu-canevas,html:not(.fs-mes-js) .fs-jeu-barre{display:none}
/* dans une régie : par-dessus la scène, transparent, les clics passent sauf sur une zone du jeu */
.fs-mes-scene>.fs-bloc.fs-jeu_web.fs-jeu-regie{position:absolute;inset:0;z-index:45;margin:0;max-width:none;pointer-events:none}
.fs-jeu-regie .fs-jeu-cadre{aspect-ratio:auto;height:100%;max-height:none;background:transparent;border-radius:0;overflow:visible}
.fs-jeu-regie .fs-jeu-canevas{pointer-events:none}
.fs-jeu-regie .fs-jeu-barre,.fs-jeu-regie .fs-jeu-repli{display:none}
/* le jeu a la scène (une épreuve, un panneau) : les actes s'effacent et ne prennent plus les clics */
.fs-regie:has(.fs-jeu-pret) .fs-mes-actes{transition:opacity .45s ease,filter .45s ease}
.fs-regie.fs-jeu-scene .fs-mes-actes{opacity:.08;filter:blur(4px);pointer-events:none}
/* mouvement réduit : la régie ne s'épingle plus (les actes se suivent) — le jeu redevient un cadre dans le flux */
@media (prefers-reduced-motion:reduce){.fs-mes-scene>.fs-bloc.fs-jeu_web.fs-jeu-regie{position:relative;inset:auto;z-index:1;pointer-events:auto}
.fs-jeu-regie .fs-jeu-cadre{aspect-ratio:var(--jeu-ratio,16/9);height:auto;background:var(--jeu-fond,#0b0d12)}}
@media print{.fs-jeu-canevas,.fs-jeu-fond,.fs-jeu-barre{display:none}.fs-jeu-repli{display:block}.fs-mes-scene>.fs-bloc.fs-jeu_web.fs-jeu-regie{display:none}}

/* ── 🎬 chorégraphies du Diaporama (lot 4 Traversée) ───────────────────── */
.fs-bloc.fs-choregraphie{position:relative;display:block;margin:0 auto;max-width:100%}
.fs-ch-scene{position:relative;width:100%;aspect-ratio:var(--ch-ratio,16/9);max-height:100svh;overflow:hidden;border-radius:var(--rayon,.8rem);background:var(--ch-fond,transparent);perspective:none}
.fs-choregraphie.fs-ch-plein .fs-ch-scene{width:min(100%,calc(100svh * (var(--ch-ratio,16/9))));margin:0 auto;border-radius:0}
.fs-mes-acte .fs-choregraphie .fs-ch-scene,.fs-mes-scene>.fs-choregraphie .fs-ch-scene{border-radius:0}
.fs-ch-calque{position:absolute;inset:0;will-change:opacity;pointer-events:none}
.fs-ch-carte{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;backface-visibility:visible;overflow:hidden}
.fs-ch-photo{position:absolute;overflow:hidden}
.fs-ch-photo>img{position:absolute;max-width:none;display:block;user-select:none;-webkit-user-drag:none}
.fs-ch-dos{position:absolute;inset:0;display:none}
.fs-ch-defo{position:absolute;left:0;top:0;width:100%;height:100%;display:block}
.fs-ch-repli{display:none;position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
html:not(.fs-mes-js) .fs-ch-repli{display:block}html:not(.fs-mes-js) .fs-ch-calque{display:none}
.fs-ch-vide{position:absolute;inset:0;display:grid;place-items:center;color:var(--texte-faible,#9aa6bd);font-size:.9rem;text-align:center;padding:1rem}
@media print{.fs-ch-calque{display:none}.fs-ch-repli{display:block}}

/* ── possibilités (lot 5) ── */
.fs-possibilites{--poss-gap:clamp(14px,2.6vw,36px)}
.fs-poss-liste{display:grid;grid-template-columns:100%;position:relative;list-style:none;margin:0;padding:0}
.fs-poss-item{grid-area:1/1;display:none;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--poss-gap);align-items:center;opacity:0;transform:translateY(14px);transition:opacity .42s ease,transform .42s ease;pointer-events:none}
.fs-poss-item.fs-poss-entrant,.fs-poss-item.fs-poss-actif,.fs-poss-item.fs-poss-sortant{display:grid}
.fs-poss-item.fs-poss-actif{opacity:1;transform:none;pointer-events:auto}
.fs-poss-item.fs-poss-sortant{opacity:0;transform:translateY(-10px)}
.fs-poss-demo-gauche .fs-poss-item>.fs-poss-texte{order:2}
.fs-poss-alternee .fs-poss-item:nth-child(even)>.fs-poss-texte{order:2}
.fs-poss-texte{display:flex;flex-direction:column;gap:.55rem;text-align:left;min-width:0}
.fs-poss-num{font-size:.82rem;letter-spacing:.14em;color:var(--accent);opacity:.9;font-variant-numeric:tabular-nums}
.fs-poss-texte h3{margin:0;font-size:clamp(1.35rem,2.6vw,2.15rem);line-height:1.08;letter-spacing:-.01em}
.fs-poss-texte p{margin:0;color:var(--muet);font-size:clamp(1rem,1.25vw,1.15rem);line-height:1.5;max-width:44ch}
.fs-poss-demo{position:relative;width:100%;aspect-ratio:16/9;max-height:min(56svh,540px);border-radius:var(--arrondi,18px);overflow:hidden;background:color-mix(in srgb,var(--carte) 62%,transparent);border:1px solid color-mix(in srgb,var(--texte) 14%,transparent);box-shadow:0 24px 70px -34px rgba(0,0,0,.75);isolation:isolate}
.fs-poss-demo>.fs-bloc{position:absolute;inset:0;width:100%;max-width:none;margin:0;padding:0;display:flex;align-items:center;justify-content:center;overflow:hidden}
.fs-poss-demo>.fs-bloc>*:not(.fs-cadre){width:100%!important;max-width:none!important;margin:0!important}
.fs-poss-demo>.fs-bloc.fs-fs_webgl>canvas.fs-webgl,.fs-poss-demo .fs-avant-apres,.fs-poss-demo .fs-transitions,.fs-poss-demo .fs-ch-scene{height:100%!important;width:100%;border-radius:0;max-height:none}
/* une galerie de visuels : la grille remplit le cadre, chaque carte prend sa part (légende comprise) */
.fs-poss-demo>.fs-bloc.fs-galerie_visuels>.fs-visuels{height:100%;grid-auto-rows:minmax(0,1fr);gap:.5rem;padding:.5rem;box-sizing:border-box}
.fs-poss-demo .fs-visuel-carte{display:flex;flex-direction:column;min-height:0;border-radius:calc(var(--arrondi,18px) * .6)}
.fs-poss-demo .fs-visuel-carte:hover{transform:none;box-shadow:none}
.fs-poss-demo .fs-visuel-carte canvas{flex:1 1 auto;min-height:0;height:auto!important;width:100%}
.fs-poss-demo .fs-visuel-carte figcaption{padding:.3rem .7rem;font-size:.8rem}
.fs-poss-demo>.fs-bloc.fs-choregraphie>.fs-ch-scene{position:absolute;inset:0;aspect-ratio:auto}
/* un cadre d'appareil : la fenêtre, le navigateur, l'écran prennent toute la hauteur (barre + écran) ; le téléphone reste debout, à sa hauteur */
.fs-poss-demo>.fs-bloc.fs-fs_capture,.fs-poss-demo>.fs-bloc.fs-cadre_appareil{padding:clamp(8px,2.2%,18px)}
.fs-poss-demo .fs-cadre{max-width:100%!important;margin:0 auto!important;transform:none!important;height:100%;display:flex;flex-direction:column}
.fs-poss-demo .fs-cadre:not(.fs-app-telephone){width:100%}
.fs-poss-demo .fs-cadre:not(.fs-app-telephone) .fs-cadre-ecran{flex:1 1 auto;min-height:0;height:auto!important;aspect-ratio:auto}
.fs-poss-demo .fs-app-telephone{width:auto!important;height:100%;aspect-ratio:9/19.5;box-sizing:border-box;padding:8px;border-radius:26px}
.fs-poss-demo .fs-app-telephone .fs-cadre-ecran{flex:1 1 auto;min-height:0;height:auto!important;width:100%;aspect-ratio:auto;border-radius:20px}
.fs-poss-demo .fs-cadre-ecran>canvas,.fs-poss-demo .fs-cadre-ecran>img,.fs-poss-demo .fs-cadre-ecran>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.fs-poss-demo>.fs-bloc.fs-titre_vivant{padding:0 6%}
.fs-poss-demo>.fs-bloc.fs-fs_funscript{padding:4% 5%}
.fs-poss-demo>.fs-bloc.fs-fs_funscript>*{height:100%}
.fs-poss-demo img,.fs-poss-demo video{width:100%;height:100%;object-fit:cover;display:block}
.fs-poss-demo .fs-vide{background:transparent}
.fs-poss-sans-demo{grid-template-columns:1fr!important;text-align:center;min-height:min(56svh,540px)}
.fs-poss-sans-demo .fs-poss-texte{text-align:center;align-items:center}
.fs-poss-nav{display:flex;align-items:center;justify-content:center;gap:.7rem;margin-top:1rem}
.fs-poss-points{display:flex;gap:.5rem;list-style:none;margin:0;padding:0}
.fs-poss-point{width:.6rem;height:.6rem;border-radius:50%;border:0;padding:0;cursor:pointer;background:color-mix(in srgb,var(--texte) 28%,transparent);transition:transform .25s,background .25s}
.fs-poss-point-actif{background:var(--accent);transform:scale(1.4)}
.fs-poss-prec,.fs-poss-suiv{width:2.2rem;height:2.2rem;border-radius:50%;border:1px solid color-mix(in srgb,var(--texte) 18%,transparent);background:color-mix(in srgb,var(--carte) 60%,transparent);color:var(--texte);cursor:pointer;font-size:1rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:background .2s,transform .2s}
.fs-poss-prec:hover,.fs-poss-suiv:hover{background:color-mix(in srgb,var(--accent) 30%,var(--carte));transform:scale(1.06)}
.fs-poss-prec:focus-visible,.fs-poss-suiv:focus-visible,.fs-poss-point:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.fs-poss-compteur{font-size:.8rem;color:var(--muet);min-width:3.4em;text-align:center;font-variant-numeric:tabular-nums}
.fs-poss-regie .fs-poss-prec,.fs-poss-regie .fs-poss-suiv{display:none}
@media (max-width:760px){.fs-poss-item{grid-template-columns:1fr;gap:.85rem;align-items:start}.fs-poss-item>.fs-poss-texte{order:2!important}.fs-poss-demo{max-height:44svh}.fs-poss-texte p{max-width:none}.fs-poss-texte h3{font-size:1.3rem}}
html:not(.fs-mes-js) .fs-poss-liste{display:flex;flex-direction:column;gap:2.2rem}
html:not(.fs-mes-js) .fs-poss-item{display:grid;opacity:1;transform:none;pointer-events:auto}
html:not(.fs-mes-js) .fs-poss-nav{display:none}
@media print{.fs-poss-liste{display:block}.fs-poss-item{display:grid!important;opacity:1!important;transform:none!important;break-inside:avoid;margin-bottom:1.5rem}.fs-poss-nav{display:none}}
@media (prefers-reduced-motion:reduce){.fs-poss-item{transition:none;transform:none}}
