/* VCMC — « Nuit arverne »
   Un ciel étoilé au-dessus des volcans, une aurore qui change de couleur à chaque activité.
   Panneaux en verre liquide, typographie large et tendue, aucune dorure.
   Mise en page : sections plein écran, objet 3D d'un côté, panneau de verre de l'autre. */

@property --accent{syntax:'<color>';inherits:true;initial-value:#5ff2d2}
@property --accent-2{syntax:'<color>';inherits:true;initial-value:#7b6bff}
@font-face{font-family:"Archivo";src:url("../fonts/archivo.woff2") format("woff2");font-weight:100 900;font-stretch:62% 125%;font-display:swap}
@font-face{font-family:"Inter Tight";src:url("../fonts/inter-tight.woff2") format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("../fonts/jbmono-400.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("../fonts/jbmono-500.woff2") format("woff2");font-weight:500;font-display:swap}

:root{
  color-scheme:dark;
  --void:#04060c;            /* nuit */
  --ink:#eef1f7;             /* texte, blanc froid */
  --mist:#9aa3b8;            /* texte secondaire */
  --hair:rgb(255 255 255 / .12);
  --accent:#5ff2d2;          /* couleur de l'aurore, change selon la section */
  --accent-2:#7b6bff;
  --f-display:"Archivo","Helvetica Neue",Arial,sans-serif;
  --f-body:"Inter Tight",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  --gl:max(20px,env(safe-area-inset-left,0px));
  --gr:max(20px,env(safe-area-inset-right,0px));
  --ease:cubic-bezier(.2,.7,.1,1);
  transition:--accent .9s,--accent-2 .9s;
}
/* Une aurore par activité */
:root[data-theme="hero"],:root:not([data-theme]){--accent:#5ff2d2;--accent-2:#7b6bff}
:root[data-theme="rallye"]{--accent:#ff5c74;--accent-2:#9b3cff}
:root[data-theme="optv"]{--accent:#c27bff;--accent-2:#4a62ff}
:root[data-theme="vvigiaccess"]{--accent:#6fd8ff;--accent-2:#3d5cff}
:root[data-theme="lash"]{--accent:#ff9ad5;--accent-2:#7d6bff}
:root[data-theme="vconnect"]{--accent:#4cecff;--accent-2:#2f7dff}

*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--void);color:var(--ink);font-family:var(--f-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:60;background:var(--void)}
img{max-width:100%}
[hidden]{display:none!important}
a{color:inherit}
:focus-visible{outline:1.5px solid var(--accent);outline-offset:3px;border-radius:6px}
h1,h2,h3{margin:0;font-family:var(--f-display);font-weight:600;font-stretch:112%;line-height:1;letter-spacing:-.01em;text-wrap:balance}
p{margin:0 0 1rem}
.skip{position:absolute;left:-999px;top:0;z-index:100;background:var(--ink);color:var(--void);padding:.6rem 1rem}
.skip:focus{left:var(--gl)}
.mono,.label{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.label{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--mist)}
.label.accent{color:var(--accent);transition:color .8s}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}

/* ---------- Ciel (WebGL) ---------- */
#sky{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:0;pointer-events:none;background:
  radial-gradient(120% 70% at 50% 110%,#0d1530 0%,transparent 60%),
  linear-gradient(#03050b,#070b18 70%,#0b1226)}
.orbs{position:fixed;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.orb{position:absolute;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 55%,white 10%) 0%,transparent 68%);opacity:.16;transition:background .8s;will-change:transform}

/* ---------- Verre liquide ---------- */
.glass{
  --mx:30%;--my:0%;
  position:relative;isolation:isolate;border-radius:30px;
  /* verre Apple : noir dense en haut, qui s'éclaircit en verre clair vers le bas */
  background:
    radial-gradient(120% 80% at var(--mx) var(--my),rgb(255 255 255 / .05),transparent 50%),
    linear-gradient(180deg,rgb(0 0 0 / .9) 0%,rgb(0 0 0 / .72) 32%,rgb(8 10 18 / .4) 66%,rgb(150 160 185 / .12) 100%);
  -webkit-backdrop-filter:blur(30px) saturate(180%);backdrop-filter:blur(30px) saturate(180%);
  box-shadow:0 30px 70px -30px rgb(0 0 0 / .85);
}
/* liseré : un filet de verre qui capte la lumière, invisible en haut, brillant en bas — sans couleur */
.glass::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.5px;pointer-events:none;
  background:linear-gradient(180deg,rgb(255 255 255 / .05) 0%,rgb(255 255 255 / .08) 45%,rgb(255 255 255 / .28) 80%,rgb(255 255 255 / .62) 100%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
.glass::after{content:"";position:absolute;inset:1.5px;border-radius:inherit;pointer-events:none;z-index:-1;
  background:radial-gradient(90% 55% at 50% 100%,rgb(255 255 255 / .09),transparent 70%)}
.pill-glass{border-radius:999px}

/* ---------- En-tête ---------- */
.top{position:fixed;z-index:40;left:0;right:0;top:env(safe-area-inset-top,0px);padding:18px var(--gr) 0 var(--gl);display:flex;align-items:center;gap:1.2rem;pointer-events:none}
.top>*{pointer-events:auto}
.brand{display:flex;align-items:center;gap:.7rem;text-decoration:none;color:var(--ink)}
.brand img{width:26px;height:auto;filter:invert(1) brightness(1.2)}
.brand b{font-family:var(--f-display);font-weight:700;font-stretch:125%;font-size:1.15rem;letter-spacing:.14em}
.houses{display:flex;gap:1.6rem;margin-left:1.6rem;padding:.55rem 1.2rem}
.houses a{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--mist);text-decoration:none;transition:color .3s}
.houses a:hover,.houses a[aria-current="page"]{color:var(--ink)}
.top .right{margin-left:auto;display:flex;align-items:center;gap:.7rem}
.btn-login{display:inline-flex;align-items:center;gap:.55rem;padding:.6rem 1.05rem;color:var(--ink);text-decoration:none;font-weight:500;font-size:.88rem}
.btn-login i{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent);transition:background .8s,box-shadow .8s}
.menu-btn{display:inline-flex;align-items:center;gap:.8rem;background:none;border:0;color:var(--ink);cursor:pointer;font-family:var(--f-mono);font-size:.68rem;letter-spacing:.22em;padding:0}
.menu-btn .ring{width:46px;height:46px;border-radius:50%;display:grid;place-items:center}
.menu-btn svg{display:block}
@media (max-width:1300px){.houses{gap:1rem;margin-left:1rem;padding:.5rem .95rem}.houses a{letter-spacing:.12em}}@media (max-width:1140px){.houses{gap:.75rem;margin-left:.7rem;padding:.5rem .8rem}.houses a{letter-spacing:.06em;font-size:.64rem}.menu-btn .word{display:none}}@media (max-width:1020px){.houses{display:none}}
@media (max-width:720px){
  .top{padding-top:12px;gap:.7rem}
  .top .right{display:contents}
  .btn-login{margin-left:auto}
  .menu-btn{order:-1}
  .menu-btn .word{display:none}
  .menu-btn .ring{width:42px;height:42px}
  .brand b{font-size:1rem}
  .btn-login{padding:.5rem .85rem;font-size:.82rem}
}

/* ---------- Menu plein écran ---------- */
.menu{position:fixed;inset:0;z-index:50;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:3rem;padding:calc(110px + env(safe-area-inset-top,0px)) var(--gr) 3rem var(--gl);
  background:linear-gradient(160deg,rgb(4 6 12 / .86),rgb(4 6 12 / .7));-webkit-backdrop-filter:blur(30px) saturate(150%);backdrop-filter:blur(30px) saturate(150%);overflow:auto;
  opacity:0;visibility:hidden;transition:opacity .45s var(--ease),visibility 0s .45s}
.menu.open{opacity:1;visibility:visible;transition:opacity .45s var(--ease)}
.menu nav{display:grid;align-content:start;gap:.2rem}
.menu nav a{display:flex;align-items:baseline;gap:1.2rem;text-decoration:none;color:var(--ink);font-family:var(--f-display);font-weight:600;font-stretch:118%;font-size:clamp(2rem,5.4vw,4.4rem);line-height:1.08;opacity:.9;transform:translateY(14px);transition:transform .6s var(--ease),opacity .3s,color .3s}
.menu.open nav a{transform:none}
.menu nav a span{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.2em;color:var(--mist);font-weight:400}
.menu nav a:hover{color:var(--accent)}
.menu aside{display:grid;align-content:start;gap:2rem}
.menu aside h4{margin:0 0 .7rem}
.menu aside ul{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}
.menu aside a{color:var(--ink);text-decoration:none;opacity:.85}
.menu aside a:hover{opacity:1;color:var(--accent)}
@media (max-width:820px){.menu{grid-template-columns:1fr;gap:2rem}}

/* ---------- Méta-indicateurs (Samana / Montfort) ---------- */
.cue{position:fixed;z-index:30;left:50%;top:calc(84px + env(safe-area-inset-top,0px));transform:translateX(-50%);padding:.55rem 1.1rem .7rem;font-size:.86rem;font-weight:500;display:flex;flex-direction:column;align-items:center;gap:.35rem;transition:opacity .4s}
.cue .bar{width:100%;height:1px;background:rgb(255 255 255 / .15);position:relative;overflow:hidden}
.cue .bar i{position:absolute;inset:0;background:var(--accent);transform-origin:left;transform:scaleX(var(--p,0));transition:background .8s}
body.scrolled .cue{opacity:0;pointer-events:none}
@media (max-width:1180px){.cue{display:none}}
.meter{position:fixed;z-index:30;right:var(--gr);bottom:calc(28px + env(safe-area-inset-bottom,0px));display:grid;grid-template-columns:auto auto;gap:1.2rem;align-items:end;pointer-events:none}
.meter .read{text-align:right}
.meter .num{font-family:var(--f-mono);font-size:1.6rem;line-height:1;letter-spacing:.04em}
.meter .num s{text-decoration:none;color:rgb(255 255 255 / .28)}
.meter .name{display:block;margin-top:.45rem}
.meter .scale{position:relative;width:34px;height:150px}
.meter .scale::before{content:"";position:absolute;right:0;top:0;bottom:0;width:12px;background:repeating-linear-gradient(to bottom,rgb(255 255 255 / .28) 0 1px,transparent 1px 10px)}
.meter .scale i{position:absolute;right:0;width:34px;height:1px;background:var(--accent);box-shadow:0 0 10px var(--accent);top:calc(var(--p,0) * 100%);transition:background .8s}
.meter .scale i::before{content:"";position:absolute;left:-3px;top:-3px;width:7px;height:7px;border-radius:50%;background:var(--accent)}
@media (max-width:720px){.meter{display:none}}
.scroll-cue{position:absolute;left:50%;bottom:calc(26px + env(safe-area-inset-bottom,0px));width:24px;height:38px;margin-left:-12px;border:1px solid rgb(255 255 255 / .35);border-radius:14px}
.scroll-cue::after{content:"";position:absolute;left:50%;top:7px;width:2px;height:7px;margin-left:-1px;border-radius:2px;background:var(--ink);animation:cue 1.8s ease-in-out infinite}
@keyframes cue{0%{opacity:0;transform:translateY(0)}40%{opacity:1}100%{opacity:0;transform:translateY(10px)}}

/* ---------- Pages ---------- */
main{position:relative;z-index:2}
.page[hidden]{display:none!important}

/* Héros */
.hero{position:relative;min-height:100svh;display:grid;align-content:end;padding:0 var(--gr) calc(110px + env(safe-area-inset-bottom,0px)) var(--gl);overflow:hidden}
.wordmark{font-family:var(--f-display);font-weight:800;font-stretch:125%;font-size:clamp(5.2rem,21vw,22rem);line-height:.78;letter-spacing:-.02em;margin:0 0 0 -.05em;
  background:linear-gradient(180deg,#ffffff 0%,#dfe5f2 55%,rgb(223 229 242 / .55) 100%);-webkit-background-clip:text;background-clip:text;color:transparent;will-change:transform}
.wordmark.mid{font-size:clamp(3.2rem,11vw,10rem);font-stretch:118%;line-height:.86}
.hero .sub{display:flex;flex-wrap:wrap;gap:1rem 2.4rem;align-items:end;justify-content:space-between;margin-top:2rem;max-width:1400px}
.hero .lede{font-size:clamp(1.15rem,1.9vw,1.6rem);font-weight:400;line-height:1.3;max-width:28ch;margin:0;color:var(--ink)}
.hero .label{display:block;margin-bottom:.8rem}

/* Chapitres */
.chap{position:relative;height:250svh;max-width:1500px;margin-inline:auto}
.chap>.pin{position:sticky;top:0;height:100svh;display:flex;align-items:center;padding:6rem var(--gr) 4rem var(--gl);overflow:hidden}
.chap[data-side="left"]>.pin{justify-content:flex-end}
/* le panneau se « matérialise » pendant l'épinglage (progression --e de 0 à 1, puis --x pour la sortie) */
.chap>.pin>.panel{opacity:calc(var(--e,1) * (1 - var(--x,0)));transform:translate3d(0,calc((1 - var(--e,1)) * 28px - var(--x,0) * 28px),0) scale(calc(.97 + .03 * var(--e,1)));filter:blur(calc((1 - var(--e,1)) * 8px + var(--x,0) * 8px));will-change:transform,opacity,filter}
@media (prefers-reduced-motion:reduce){.chap{height:auto;min-height:100svh}.chap>.pin{position:relative}.chap>.pin>.panel{opacity:1;transform:none;filter:none}}
.chap .panel{width:min(31rem,44%);padding:2.2rem 2.2rem 2rem;display:grid;gap:1rem;justify-items:start}
.chap .idx{display:flex;align-items:center;gap:.8rem;width:100%}
.chap .idx::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--hair),transparent)}
.chap h2{font-size:clamp(2.6rem,4.6vw,4.6rem);font-weight:650;font-stretch:115%}
.chap h2 sup{font-size:.3em;font-weight:500;vertical-align:top;margin-left:.1em}
.chap p{margin:0;color:#cbd2e2;font-size:1.06rem;line-height:1.55}
.chap ul{margin:0;padding-left:1.1rem;color:#cbd2e2}
.chap ul li{margin-bottom:.3rem}
.chap .acts{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.6rem}
.chap.outro{height:auto;min-height:auto;display:flex;justify-content:center;padding:7rem var(--gr) 8rem var(--gl)}
.chap.outro .panel{width:min(42rem,100%);text-align:center;justify-items:center}
.ghost-title{position:absolute;z-index:-1;left:var(--gl);top:50%;transform:translateY(-50%);font-family:var(--f-display);font-weight:800;font-stretch:125%;font-size:clamp(5rem,15vw,15rem);line-height:.8;color:transparent;-webkit-text-stroke:1px rgb(255 255 255 / .07);white-space:nowrap;pointer-events:none;will-change:transform}
.chap[data-side="right"] .ghost-title{left:auto;right:var(--gr)}
@media (max-width:860px){
  .chap{height:220svh}
  .chap>.pin{align-items:flex-end;padding:0 var(--gr) calc(2rem + env(safe-area-inset-bottom,0px)) var(--gl)}
  .chap .panel{width:100%;padding:1.6rem 1.4rem 1.5rem}
  .chap[data-side="left"]>.pin{justify-content:flex-start}
  .chap.outro{padding-top:5rem;height:auto}
  .ghost-title{top:22svh;font-size:24vw}
}

/* Boutons */
.btn{display:inline-flex;align-items:center;gap:.6rem;padding:.8rem 1.25rem;border-radius:999px;border:0;background:var(--ink);color:var(--void);font:600 .9rem var(--f-body);text-decoration:none;cursor:pointer;transition:transform .3s var(--ease),box-shadow .3s}
.btn:hover{transform:translateY(-1px);box-shadow:0 10px 30px -10px color-mix(in srgb,var(--accent) 70%,transparent)}
.btn .arrow{transition:transform .3s var(--ease)}
.btn:hover .arrow{transform:translateX(3px)}
.btn.glass{background:transparent;color:var(--ink);border-radius:999px}

/* ---------- Pages pratiques ---------- */
.simple{min-height:100svh;padding:calc(130px + env(safe-area-inset-top,0px)) var(--gr) 6rem var(--gl)}
.simple .sheet{max-width:820px;margin-inline:auto;padding:clamp(1.6rem,4vw,3.2rem)}
.simple .eyebrow,.simple .label{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--accent)}
.simple .title{font-size:clamp(2.2rem,5vw,3.6rem);margin:.6rem 0 1.4rem;font-stretch:115%}
.simple .rule{display:none}
.simple h2{font-size:1.5rem;margin:2.4rem 0 .9rem;font-stretch:110%}
.simple h3{font-size:1.15rem;margin:1.6rem 0 .6rem}
.simple ul{margin:0 0 1rem;padding-left:1.2rem}
.simple li{margin-bottom:.35rem}
.simple p,.simple li{color:#d3d9e6}
.simple .lead{font-size:1.15rem;color:var(--ink)}
.simple a{color:var(--accent)}
.simple a.btn{color:var(--void)}
.muted,.meta{color:var(--mist)}
.meta{font-size:.85rem}
.card{background:rgb(255 255 255 / .04);border:1px solid var(--hair);border-radius:20px;padding:1.1rem 1.25rem}
.svc{display:grid;gap:.35rem;margin:1.2rem 0}
.svc b{font-family:var(--f-display);font-weight:600;font-stretch:110%;font-size:1.15rem}
.row{display:flex;flex-wrap:wrap;gap:.4rem .8rem;align-items:center}
.copy-btn{font:500 .72rem var(--f-body);border:1px solid var(--hair);background:transparent;color:var(--mist);border-radius:999px;padding:.2rem .65rem;cursor:pointer}
.copy-btn:hover{color:var(--ink);border-color:rgb(255 255 255 / .35)}
.todo{background:rgb(255 92 116 / .16);border-radius:4px;padding:0 .3em;color:#ffb3bf}
table.list{width:100%;border-collapse:collapse;font-size:.95rem}
table.list td{padding:.7rem .4rem;border-bottom:1px solid var(--hair);vertical-align:top}
table.list td:first-child{font-weight:600;width:42%}
.tablewrap{overflow-x:auto}
@media (max-width:560px){table.list tr{display:block;padding:.7rem 0;border-bottom:1px solid var(--hair)}table.list td{display:block;width:auto!important;border:0;padding:.1rem 0}table.list .mono{word-break:break-all}}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:1rem}
.tile{display:grid;gap:.35rem;align-content:start;background:rgb(255 255 255 / .04);border:1px solid var(--hair);border-radius:20px;padding:1.1rem 1.25rem;text-decoration:none;color:var(--ink);transition:border-color .3s}
.tile:hover{border-color:color-mix(in srgb,var(--accent) 60%,transparent)}
.tile h3{font-size:1.15rem}
.tile p{margin:0;color:var(--mist);font-size:.92rem}
.tile .go{font:500 .72rem var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-top:.3rem}
.logo-plate{background:#f4f2ee;border-radius:20px;padding:1.4rem;display:grid;place-items:center;margin-bottom:2rem}
.logo-plate img{max-height:140px;width:auto}
.alert{display:grid;grid-template-columns:auto 1fr;gap:1rem;margin-bottom:.8rem}
.alert .dot{width:10px;height:10px;border-radius:50%;margin-top:.5rem}
.alert b{display:block;font-family:var(--f-display);font-weight:600;font-stretch:110%;font-size:1.08rem;margin-bottom:.2rem}
.event{display:grid;grid-template-columns:auto 1fr auto;gap:1.2rem;align-items:center}
.date{text-align:center;padding-right:1.2rem;border-right:1px solid var(--hair);min-width:76px}
.date b{display:block;font-family:var(--f-display);font-stretch:118%;font-size:2.2rem;line-height:1}
.date span{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mist)}
.badge{font:500 .7rem var(--f-mono);letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--hair);border-radius:999px;padding:.3rem .7rem;color:var(--mist)}
@media (max-width:560px){.event{grid-template-columns:auto 1fr}.event .badge{grid-column:2}}
.legal h2{font-family:var(--f-body);font-weight:600;font-stretch:100%;font-size:1.05rem;margin:2rem 0 .5rem}
.soon{border-style:dashed}

/* ---------- Pied de page ---------- */
footer{position:relative;z-index:3;padding:0 var(--gr) calc(28px + env(safe-area-inset-bottom,0px)) var(--gl)}
footer .glass{max-width:1500px;margin-inline:auto;padding:clamp(1.8rem,4vw,3rem);border-radius:34px}
footer .cols{display:grid;grid-template-columns:1.4fr repeat(4,minmax(0,1fr));gap:2rem}
@media (max-width:980px){footer .cols{grid-template-columns:repeat(2,minmax(0,1fr))}footer .cols>div:first-child{grid-column:1/-1}}
@media (max-width:480px){footer .cols{grid-template-columns:1fr}}
footer h4{margin:0 0 .8rem}
footer ul{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}
footer a{text-decoration:none;color:var(--ink);opacity:.85;font-size:.94rem}
footer a:hover{opacity:1;color:var(--accent)}
footer p{color:var(--mist);font-size:.92rem}
.foot-word{font-family:var(--f-display);font-weight:800;font-stretch:125%;font-size:clamp(3.4rem,13vw,12rem);line-height:.8;letter-spacing:-.02em;margin:2.4rem 0 0;color:transparent;-webkit-text-stroke:1px rgb(255 255 255 / .16)}
.legalbar{margin-top:1.6rem;padding-top:1.2rem;border-top:1px solid var(--hair);display:flex;flex-wrap:wrap;gap:.5rem 1.6rem;justify-content:space-between;font-size:.8rem;color:var(--mist)}

/* poussière d'étoiles derrière la souris */
#stardust{position:fixed;inset:0;z-index:45;pointer-events:none;width:100%;height:100%;mix-blend-mode:screen}

/* accueil : ciel dessiné */
#fg{position:fixed;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;display:none}
.nightsky{position:absolute;inset:0;z-index:0;background:#0c1128;overflow:hidden;pointer-events:none}
.nightsky img{position:absolute;display:block;user-select:none;-webkit-user-drag:none}
.ns-moon{filter:drop-shadow(0 0 22px rgb(247 240 216 / .28))}
.ns-star{animation:ns-tw var(--d,4s) ease-in-out var(--dl,0s) infinite alternate;will-change:opacity,transform}
@keyframes ns-tw{from{opacity:.45;transform:scale(.88)}to{opacity:1;transform:scale(1.04)}}
.ns-cloud{position:absolute;will-change:transform}
.ns-cloud img{position:relative!important;animation:ns-drift var(--d,80s) ease-in-out var(--dl,0s) infinite alternate}
@keyframes ns-drift{from{transform:translateX(-4%) scaleX(var(--f,1))}to{transform:translateX(4%) scaleX(var(--f,1))}}
.ns-village{left:0;bottom:0;width:100%;height:auto}
body.painted .chap,body.painted .hero{z-index:2}
body.painted .orbs{display:none}
body.village .chap.outro{min-height:calc(101.7vw + 30svh);align-items:flex-start;padding-top:12svh}
@media (max-width:720px){body.village .chap.outro{min-height:calc(101.7vw + 52svh)}}
.ns-comet{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}
.nightsky .ns-comet-head{position:absolute;left:0;top:0;width:14px;height:14px;border-radius:50%;background:radial-gradient(circle,#fff 0 30%,#e6d2ff 45%,rgb(190 120 255 / 0) 72%);box-shadow:0 0 18px 6px rgb(190 120 255 / .55),0 0 60px 20px rgb(160 90 255 / .25);will-change:transform}
/* le sol du hameau se prolonge sous le pied de page, dans la même teinte (#B3927A, relevée dans l'image) */
:root{--sol:#b3927a}
.nightsky .ns-fade{position:absolute;left:0;right:0;bottom:0;height:9vw;background:linear-gradient(180deg,rgb(179 146 122 / 0),var(--sol) 92%)}
body.village{background:var(--sol)}
body.village footer{background:var(--sol);padding-top:0}
body.village footer .glass{background:linear-gradient(180deg,rgb(8 12 32 / .96) 0%,rgb(12 17 40 / .9) 60%,rgb(12 17 40 / .82) 100%)}

/* OPTV : le générique occupe le haut de page, épinglé pendant qu'il se joue */
#p-optv .hero.genre{height:380svh;min-height:0;display:block;padding:0;overflow:visible}
#p-optv .hero.genre>.pin{position:sticky;top:0;height:100svh;display:grid;align-content:end;padding:0 var(--gr) calc(96px + env(safe-area-inset-bottom,0px)) var(--gl);overflow:hidden}
#p-optv .hero.genre .spot{position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(ellipse 46% 52% at 50% 44%,rgb(168 170 184 / calc(var(--spot,.25) * .95)) 0%,rgb(110 113 128 / calc(var(--spot,.25) * .75)) 34%,transparent 72%)}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
body.painted #p-optv .hero.genre{z-index:0}
#p-optv .hero.genre .spot{background:radial-gradient(ellipse 46% 52% at 50% 40%,rgb(168 170 184 / calc(var(--spot,.25) * .9)) 0%,rgb(110 113 128 / calc(var(--spot,.25) * .7)) 34%,transparent 72%)}
