/* Sidney sur l'accueil : toute la présentation (intro, anneau de fonctions, fiche par
   fonction avec sa voix, finale), jouée dans la section elle-même — la page reste là,
   on scrolle autour. Classes posées sur #sidney-preview : seen (entrée dans l'écran),
   on (lancée), features, panel-open, has-focus, finale, finale-center, finale-done. */
#sidney-section{padding:0 0 70px;margin:100vh 0 0;scroll-margin-top:0}
@media(max-width:640px){#sidney-section{margin:70vh 0 0}}

#sidney-preview{
  --sf-gold-l:#E6C877;--sf-muted:#9AA0B2;--sf-dim:#6C7287;--sf-line:rgba(244,241,234,.14);--sf-glass:rgba(12,15,26,.7);
  --sf-display:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--sf-ease:cubic-bezier(.2,.7,.2,1);
  position:relative;width:100%;height:clamp(600px,100dvh,980px);overflow:hidden;color:#F4F1EA;
  font-family:var(--font-display);font-size:16px;line-height:1.55;
}
#sidney-preview button{font:inherit;color:inherit;cursor:pointer}

/* Seuls le ciel et l'orbe s'estompent en transparence en haut et en bas (pas de bord net,
   pas de démarcation) ; le texte et les boutons, eux, restent nets partout. */
#sidney-preview .sky,#sf-orb{
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 160px,#000 calc(100% - 160px),transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0,#000 160px,#000 calc(100% - 160px),transparent 100%);
}
#sidney-preview .sky{
  position:absolute;inset:0;z-index:0;pointer-events:none;opacity:0;transition:opacity 2.5s ease;
  background:radial-gradient(70% 55% at 50% 46%,rgba(46,96,230,.22),transparent 70%),radial-gradient(60% 50% at 20% 95%,rgba(201,163,74,.1),transparent 70%);
}
#sidney-preview.seen .sky{opacity:1}
#sf-orb{position:absolute;inset:0;width:100%;height:100%;z-index:1;opacity:0;transition:opacity 1.4s ease}
#sidney-preview.seen #sf-orb{opacity:1}

.sidney-heading{
  position:absolute;left:50%;top:7%;transform:translateX(-50%);z-index:5;
  width:min(640px,calc(100% - 48px));text-align:center;opacity:0;transition:opacity 1.2s ease .3s;
}
#sidney-preview.seen .sidney-heading{opacity:1}
#sidney-preview.on .sidney-heading{opacity:0;transition:opacity .6s ease;pointer-events:none}
.sidney-heading .eyebrow{color:var(--gold-light);display:block;margin-bottom:12px}
.sidney-heading h2{font-family:var(--font-display);font-weight:800;letter-spacing:-.02em;color:var(--cream);font-size:clamp(28px,4vw,48px);margin:0}

#sidney-preview .hint{
  position:absolute;left:50%;top:47%;transform:translate(-50%,-50%);z-index:8;
  display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center;opacity:0;transition:opacity 1s ease;pointer-events:none;
}
#sidney-preview .hint.in{opacity:1;pointer-events:auto}
#sidney-preview .hint .pulse{
  width:13px;height:13px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#bee1ff 30%,#2e60e6);
  box-shadow:0 0 0 0 rgba(120,170,255,.5);animation:sf-pulse 2.2s ease-out infinite;
}
@keyframes sf-pulse{0%{box-shadow:0 0 0 0 rgba(120,170,255,.55)}100%{box-shadow:0 0 0 30px rgba(120,170,255,0)}}
#sidney-preview .hint .go{border:0;background:none;font-family:var(--font-display);font-weight:300;font-size:clamp(18px,2.2vw,23px);letter-spacing:.02em;color:var(--cream);padding:6px 10px}
#sidney-preview .hint .go:hover{color:var(--gold-light)}

/* L'anneau de fonctions */
#sf-lines{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}
#sf-lines line{stroke:rgba(230,200,119,.22);stroke-width:1;stroke-dasharray:3 6;opacity:0;transition:opacity 1.2s ease}
#sf-lines line.in{opacity:1}
#sidney-preview.has-focus #sf-lines line.in{opacity:0}
#sf-ring{position:absolute;inset:0;z-index:4;margin:0;padding:0;list-style:none;pointer-events:none}
#sf-ring li{position:absolute;transform:translate(-50%,-50%)}
#sidney-preview .node{
  position:relative;display:flex;align-items:center;gap:10px;padding:10px 16px 10px 12px;border-radius:999px;
  border:1px solid var(--sf-line);background:var(--sf-glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  font-size:14px;font-weight:500;letter-spacing:.01em;white-space:nowrap;opacity:0;pointer-events:none;transform:scale(.85) translateY(8px);
  transition:opacity .9s var(--sf-ease),transform .9s var(--sf-ease),border-color .3s,background .3s,box-shadow .3s;
}
#sidney-preview .node.in{opacity:1;transform:none;pointer-events:auto}
#sidney-preview .node .n{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;font-size:11px;font-weight:600;color:var(--sf-gold-l);border:1px solid rgba(230,200,119,.45);background:rgba(201,163,74,.1)}
#sidney-preview .node.seen .n{background:var(--sf-gold-l);color:#15110A;border-color:var(--sf-gold-l)}
#sidney-preview .node:hover,#sidney-preview .node:focus-visible,#sidney-preview .node.act{border-color:rgba(230,200,119,.7);background:rgba(30,26,12,.78);box-shadow:0 0 0 1px rgba(230,200,119,.25),0 10px 40px rgba(201,163,74,.2);outline:none}
#sidney-preview.has-focus .node,#sidney-preview.panel-open .node{opacity:0!important;pointer-events:none!important}
#sidney-preview .cue{position:absolute;left:50%;transform:translateX(-50%);bottom:150px;z-index:6;font-size:12px;letter-spacing:.26em;text-transform:uppercase;color:var(--sf-dim);opacity:0;transition:opacity 1.2s ease;text-align:center;pointer-events:none;white-space:nowrap}
#sidney-preview .cue.in{opacity:1}
#sidney-preview.panel-open .cue{opacity:0}

/* Sous-titres */
#sidney-preview .caption{
  position:absolute;left:50%;bottom:24px;transform:translateX(-50%);z-index:20;width:min(920px,calc(100% - 32px));
  text-align:center;white-space:nowrap;overflow:hidden;font-family:var(--sf-display);font-weight:300;font-size:clamp(15px,1.5vw,19px);
  line-height:1.5;letter-spacing:.012em;color:rgba(244,241,234,.4);text-shadow:0 2px 20px rgba(0,0,0,.9);
  opacity:0;transition:opacity .8s ease,left 1s var(--sf-ease);pointer-events:none;margin:0;
}
#sidney-preview .caption.in{opacity:1}
#sidney-preview .caption .w{display:inline;transition:color .25s ease}
#sidney-preview .caption .w.l{color:#F4F1EA}
@keyframes sf-cap-in{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
#sidney-preview .caption.swap{animation:sf-cap-in .5s var(--sf-ease)}
#sidney-preview.panel-open .caption{left:var(--sf-capx,35%);width:var(--sf-capw,360px);font-size:15px}

/* Fiche d'une fonction */
#sidney-preview .panel{
  position:absolute;z-index:30;right:clamp(16px,3vw,44px);top:50%;transform:translate(24px,-50%);
  width:min(400px,calc(100% - 32px));max-height:calc(100% - 48px);overflow:auto;padding:26px 26px 24px;border-radius:26px;
  border:1px solid var(--sf-line);background:rgba(8,10,18,.82);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  box-shadow:0 40px 90px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.05);opacity:0;pointer-events:none;
  transition:opacity .5s var(--sf-ease),transform .6s var(--sf-ease);
}
#sidney-preview .panel.open{opacity:1;pointer-events:auto;transform:translate(0,-50%)}
#sidney-preview .panel .x{position:absolute;right:14px;top:14px;width:34px;height:34px;border-radius:50%;border:1px solid var(--sf-line);background:none;color:var(--sf-muted);font-size:18px;line-height:1}
#sidney-preview .panel .x:hover{color:#fff;border-color:rgba(244,241,234,.4)}
#sidney-preview .panel .k{font-size:11.5px;font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:var(--sf-gold-l)}
#sidney-preview .panel h2{margin:8px 36px 6px 0;font-family:var(--sf-display);font-weight:300;font-size:30px;line-height:1.1;letter-spacing:-.02em;color:#F4F1EA}
#sidney-preview .panel .sum{margin:0 0 18px;color:var(--sf-muted);font-size:15px}
#sidney-preview .panel .zero{margin:0 0 16px;padding:12px 14px;border-radius:14px;border:1px solid rgba(230,200,119,.4);background:rgba(201,163,74,.08);font-size:14.5px}
#sidney-preview .panel .zero b{display:block;margin-bottom:2px;font-size:11px;font-weight:600;letter-spacing:.26em;text-transform:uppercase;color:var(--sf-gold-l)}
#sidney-preview .panel .ex{margin:0;padding:14px 16px;border-radius:16px;background:rgba(255,255,255,.04);border:1px solid var(--sf-line);font-family:var(--sf-display);font-weight:300;font-size:17px;line-height:1.5}
#sidney-preview .panel .ex small{display:block;margin-top:8px;font-size:11.5px;letter-spacing:.04em;color:var(--sf-dim)}
#sidney-preview .panel .nav{display:flex;justify-content:space-between;gap:10px;margin-top:16px}
#sidney-preview .panel .nav button{border:1px solid var(--sf-line);background:none;border-radius:999px;padding:9px 16px;font-size:13px;color:var(--sf-muted)}
#sidney-preview .panel .nav button:hover{color:#fff;border-color:rgba(244,241,234,.4)}

/* Une onde part de la boule à chaque nouvelle phrase */
#sf-scene{position:absolute;inset:0;z-index:3;pointer-events:none}
#sidney-preview .sc-ripple{position:absolute;width:60px;height:60px;margin:-30px 0 0 -30px;border-radius:50%;border:1.5px solid rgba(230,200,119,.7);animation:sf-ripple 2.2s ease-out forwards}
@keyframes sf-ripple{from{transform:scale(1);opacity:.8}to{transform:scale(8);opacity:0}}

/* Finale */
#sidney-preview .fin-words{position:absolute;left:6vw;top:50%;transform:translateY(-50%);z-index:21;display:flex;flex-direction:column;align-items:flex-start;gap:10px;pointer-events:none;width:min(44vw,600px)}
#sidney-preview .fin-words span{font-family:var(--sf-display);font-weight:300;font-size:clamp(24px,3.4vw,46px);line-height:1.12;letter-spacing:-.01em;opacity:0;transform:translateX(-14px);transition:opacity 1s var(--sf-ease),transform 1.1s var(--sf-ease)}
#sidney-preview .fin-words span.on{opacity:1;transform:none}
#sidney-preview .fin-words span.gold{color:var(--sf-gold-l);font-size:clamp(28px,4.2vw,56px)}
#sidney-preview .fin-words span.off{opacity:0;transform:translateX(-10px)}
#sidney-preview.finale #sf-ring,#sidney-preview.finale #sf-lines,#sidney-preview.finale .cue,#sidney-preview.finale .panel{opacity:0!important;pointer-events:none!important}
#sidney-preview.finale:not(.finale-done) .dl{opacity:0;pointer-events:none;transform:translate(-50%,20px)}

/* Téléchargement */
#sidney-preview .dl{position:absolute;left:50%;bottom:70px;transform:translate(-50%,20px);z-index:25;display:flex;flex-wrap:wrap;gap:12px;justify-content:center;opacity:0;pointer-events:none;transition:opacity 1.2s var(--sf-ease),transform 1.2s var(--sf-ease)}
#sidney-preview .dl.in{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
#sidney-preview.panel-open .dl,#sidney-preview.has-focus .dl{opacity:0!important;pointer-events:none!important}
#sidney-preview .store{position:relative;display:flex;align-items:center;gap:12px;padding:11px 22px 11px 16px;border-radius:16px;border:1px solid rgba(244,241,234,.3);background:rgba(0,0,0,.72);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);text-decoration:none;color:#F4F1EA;transition:transform .25s var(--sf-ease),border-color .25s,box-shadow .25s}
#sidney-preview .store:hover{transform:translateY(-3px);border-color:var(--sf-gold-l);box-shadow:0 14px 40px rgba(201,163,74,.25)}
#sidney-preview .store svg{width:26px;height:26px;flex:none}
#sidney-preview .store small{display:block;font-size:10.5px;letter-spacing:.08em;color:var(--sf-muted);line-height:1.1}
#sidney-preview .store b{display:block;font-size:17px;font-weight:600;line-height:1.2;letter-spacing:-.01em}
#sidney-preview .toast{position:absolute;left:50%;bottom:130px;transform:translateX(-50%);z-index:40;padding:10px 18px;border-radius:999px;background:rgba(8,10,18,.92);border:1px solid var(--sf-line);font-size:13px;opacity:0;pointer-events:none;transition:opacity .4s}
#sidney-preview .toast.in{opacity:1}

@media (max-height:780px){
  #sidney-preview .panel{padding:18px 22px 16px}
  #sidney-preview .panel h2{font-size:25px;margin:6px 34px 4px 0}
  #sidney-preview .panel .sum{margin-bottom:10px;font-size:14px}
  #sidney-preview .panel .zero{margin-bottom:10px;padding:9px 12px;font-size:13.5px}
  #sidney-preview .panel .ex{padding:10px 14px;font-size:15px}
}

/* Téléphone (section étroite) : les fonctions s'empilent sous la boule, la fiche monte
   du bas comme un tiroir, la finale s'écrit au-dessus de la boule. */
@media (max-width:699px){
  #sidney-preview{height:clamp(600px,100dvh,780px)}
  #sidney-preview .sky,#sf-orb{
    -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 90px,#000 calc(100% - 90px),transparent 100%);
    mask-image:linear-gradient(to bottom,transparent 0,#000 90px,#000 calc(100% - 90px),transparent 100%);
  }
  #sidney-preview .hint{top:42%}
  #sidney-preview .node{padding:8px 14px 8px 10px;font-size:13px;gap:8px}
  #sidney-preview .node .n{width:22px;height:22px;font-size:10px}
  #sidney-preview .cue{top:45%;bottom:auto;font-size:10px;letter-spacing:.2em}
  #sidney-preview .caption{font-size:14px;bottom:16px}
  #sidney-preview.panel-open .caption{left:50%;width:calc(100% - 32px);top:33%;bottom:auto;font-size:14px}
  #sidney-preview .panel{left:12px;right:12px;width:auto;top:auto;bottom:12px;max-height:56%;transform:translateY(24px);padding:18px 18px 16px;border-radius:22px}
  #sidney-preview .panel.open{transform:none}
  #sidney-preview .panel h2{font-size:22px;margin:6px 34px 4px 0}
  #sidney-preview .panel .sum{font-size:13.5px;margin-bottom:10px}
  #sidney-preview .panel .zero{font-size:13px;padding:9px 12px;margin-bottom:10px}
  #sidney-preview .panel .ex{font-size:14.5px;padding:10px 12px}
  #sidney-preview .panel .nav{margin-top:10px}
  #sidney-preview .fin-words{left:50%;top:14%;transform:translateX(-50%);align-items:center;text-align:center;width:calc(100% - 32px)}
  #sidney-preview .fin-words span{font-size:clamp(22px,6.4vw,30px);transform:translateY(-8px)}
  #sidney-preview .fin-words span.gold{font-size:clamp(24px,7vw,34px)}
  #sidney-preview .fin-words span.off{transform:translateY(-6px)}
  #sidney-preview:not(.finale-done) .dl{opacity:0;pointer-events:none}
  #sidney-preview .dl{bottom:64px;gap:8px;flex-wrap:nowrap}
  #sidney-preview .store{padding:8px 14px 8px 10px;gap:8px;border-radius:12px}
  #sidney-preview .store svg{width:20px;height:20px}
  #sidney-preview .store b{font-size:13.5px}
}

/* Le reste de l'accueil autour de Sidney : un bandeau compact juste sous la boule —
   les 5 points sur une ligne, puis le téléchargement sur une ligne. */
#sidney-points{padding:16px 0 56px}
#sidney-points .section-head{margin-bottom:26px}
#sidney-points .section-title{font-size:clamp(24px,2.6vw,34px);margin-bottom:10px}
#sidney-points .section-lead{font-size:15px;line-height:1.6}
.sidney-points-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin-bottom:34px}
/* Chaque carte ouvre le point correspondant dans la présentation de Sidney, juste au-dessus. */
.sidney-point{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 16px 16px;transition:transform .25s,border-color .25s;cursor:pointer;position:relative}
.sidney-point:hover,.sidney-point:focus-visible{transform:translateY(-3px);border-color:var(--gold-light);outline:none}
.sidney-point::after{content:"Écouter ▸";position:absolute;right:14px;top:17px;font-family:var(--font-display);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-light);opacity:0;transition:opacity .25s}
.sidney-point:hover::after,.sidney-point:focus-visible::after{opacity:1}
.sidney-point-n{font-family:var(--font-display);font-weight:800;font-size:11.5px;letter-spacing:.08em;color:var(--gold)}
.sidney-point h3{font-family:var(--font-display);font-weight:700;font-size:15px;line-height:1.25;margin:8px 0 6px;color:var(--cream)}
.sidney-point p{font-size:12.5px;line-height:1.5;color:var(--muted);margin:0}
/* Écran plus étroit : les 5 cartes défilent horizontalement sur une ligne au lieu de s'empiler. */
@media(max-width:999px){
  .sidney-points-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;padding:4px 2px 10px;margin:0 -2px 26px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .sidney-points-grid::-webkit-scrollbar{display:none}
  .sidney-point{flex:0 0 clamp(200px,42vw,240px);scroll-snap-align:start}
}


/* Barre G-MASTER : s'efface pendant que Sidney est à l'écran, revient quand on ne voit plus la boule */
.site-header{transition:opacity .9s ease,transform .9s ease}
.site-header.sidney-nav-hidden{opacity:0;transform:translateY(-14px);pointer-events:none}

@media(prefers-reduced-motion:reduce){
  #sidney-preview .sky,#sf-orb,.sidney-heading,#sidney-preview .hint,#sidney-preview .node,#sidney-preview .caption,#sidney-preview .panel,#sidney-preview .dl,#sidney-preview .cue,#sidney-preview .fin-words span{transition-duration:.01s!important}
  #sidney-preview .hint .pulse,#sidney-preview .sc-ripple,#sidney-preview .caption.swap{animation:none}
  .site-header{transition:none}
}
