:root{
  --bg:#02040a;--fg:#f7fbff;--muted:#91a0b7;
  --accent1:#00e6ff;--accent2:#5a48ff;--accent3:#22e375;
  --panel:rgba(3,9,18,.56);--line:rgba(255,255,255,.13);
  --sceneScale:1;--sceneRotate:0deg;--sceneSkew:0deg;--sceneBlur:0px;
}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;background:var(--bg);color:var(--fg);font-family:Inter,Segoe UI,Arial,sans-serif;overflow:hidden}
body{transition:background .7s ease,color .7s ease}button{font:inherit}.locked{touch-action:none}
#fx{position:fixed;inset:0;width:100%;height:100%;z-index:0}
#flash{position:fixed;inset:0;z-index:90;pointer-events:none;opacity:0;background:linear-gradient(135deg,var(--accent1),var(--accent2),var(--accent3));mix-blend-mode:screen}
#scan{position:fixed;inset:-40% 0 auto 0;height:45%;z-index:8;pointer-events:none;background:linear-gradient(180deg,transparent,rgba(255,255,255,.08),transparent);opacity:.22;animation:scan 6s linear infinite}
@keyframes scan{to{transform:translateY(360%)}}
#grain{position:fixed;inset:0;z-index:7;pointer-events:none;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E")}
.gate{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 35%,rgba(0,230,255,.12),transparent 28%),#01030a;transition:opacity .75s ease,visibility .75s ease}
.gate.hidden{opacity:0;visibility:hidden}.gate-core{text-align:center;max-width:420px}.gate-logo{width:min(280px,68vw);filter:drop-shadow(0 0 25px rgba(0,230,255,.3))}.gate-africa{display:inline-block;margin-top:-8px;padding:7px 16px;border-radius:999px;background:linear-gradient(90deg,var(--accent3),var(--accent1));color:#001;font-weight:950;letter-spacing:.22em;font-size:11px}
.gate p{font-size:13px;letter-spacing:.18em;color:#c8d3e2;line-height:1.55;margin:30px auto 18px}.gate button{border:0;border-radius:18px;padding:15px 28px;font-weight:950;letter-spacing:.15em;color:#001;background:linear-gradient(90deg,var(--accent1),var(--accent3));box-shadow:0 0 34px rgba(0,230,255,.24);cursor:pointer}.gate small{display:block;margin-top:16px;color:#6f8098;font-size:10px}
.hud{position:fixed;left:10px;right:10px;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border:1px solid var(--line);background:rgba(1,5,12,.52);backdrop-filter:blur(18px);box-shadow:0 10px 35px rgba(0,0,0,.2)}
.top-hud{top:max(8px,env(safe-area-inset-top));border-radius:18px}.bottom-hud{bottom:max(8px,env(safe-area-inset-bottom));border-radius:18px}.hud-brand{display:flex;align-items:center;gap:8px}.hud-brand img{height:24px;width:auto}.hud-brand b{font-size:9px;letter-spacing:.18em;color:var(--accent3)}
.hud-center{display:flex;align-items:center;gap:6px;font-weight:900;font-size:12px}.hud-center i{font-style:normal;color:#6f8098;font-size:9px}.timer{width:54px;height:3px;border-radius:8px;overflow:hidden;background:rgba(255,255,255,.1)}.timer em{display:block;width:100%;height:100%;background:linear-gradient(90deg,var(--accent1),var(--accent2),var(--accent3));transform-origin:left}.hud-actions{display:flex;gap:6px}.hud-actions button{width:34px;height:34px;border-radius:11px;border:1px solid var(--line);background:rgba(255,255,255,.05);color:#fff;cursor:pointer}
.stage{position:relative;z-index:5;width:100%;height:100%;display:grid;place-items:center;padding:68px 14px 62px;perspective:1100px}.scene-shell{position:relative;width:100%;height:100%;max-width:1240px;display:grid;grid-template-rows:1fr auto;overflow:hidden;border-radius:26px;border:1px solid var(--line);background:linear-gradient(150deg,rgba(255,255,255,.045),rgba(255,255,255,.012));box-shadow:0 30px 90px rgba(0,0,0,.38);transform:scale(var(--sceneScale)) rotate(var(--sceneRotate)) skew(var(--sceneSkew));filter:blur(var(--sceneBlur));transition:all .85s cubic-bezier(.2,.7,.1,1)}
.scene-copy{position:relative;z-index:12;align-self:end;padding:24px 22px 132px;max-width:800px}.kicker{font-size:10px;font-weight:900;letter-spacing:.28em;color:var(--accent1);margin-bottom:10px}.scene-copy h1{margin:0;font-size:clamp(39px,12vw,118px);line-height:.88;letter-spacing:-.055em;font-weight:1000;text-transform:uppercase;text-shadow:0 0 30px color-mix(in srgb,var(--accent1) 18%,transparent)}.scene-copy h2{margin:12px 0 0;font-size:clamp(17px,4.9vw,42px);line-height:1.02;letter-spacing:-.03em;color:var(--accent3);font-weight:950;text-transform:uppercase}.scene-copy p{max-width:650px;font-size:clamp(14px,3.7vw,20px);line-height:1.45;color:#c3cfdd;margin:17px 0 0}.scene-copy p strong{color:#fff}
.visual{position:absolute;inset:0;z-index:3;overflow:hidden}.africa-wrap{position:absolute;width:min(86vw,700px);height:min(86vw,700px);right:-18%;top:7%;display:grid;place-items:center;transition:all .8s ease}.africa-svg{width:100%;height:100%;filter:drop-shadow(0 0 30px color-mix(in srgb,var(--accent1) 32%,transparent));animation:africaBreath 3.2s ease-in-out infinite}.africa,.mada{fill:url(#africaGradient);stroke:var(--accent1);stroke-width:2}.nodes{fill:#fff}.orbit{position:absolute;border:1px solid color-mix(in srgb,var(--accent1) 44%,transparent);border-radius:50%;animation:spin 8s linear infinite}.o1{width:68%;height:68%}.o2{width:84%;height:84%;animation-duration:13s;animation-direction:reverse}.o3{width:100%;height:100%;animation-duration:18s}.core-pulse{position:absolute;width:80px;height:80px;border-radius:50%;background:radial-gradient(circle,#fff 0 4%,var(--accent1) 8%,transparent 60%);animation:pulseCore 1.3s ease-in-out infinite}
@keyframes spin{to{transform:rotate(360deg)}}@keyframes africaBreath{50%{transform:scale(1.03) rotate(.7deg)}}@keyframes pulseCore{50%{transform:scale(1.35);opacity:.45}}
.speed-lines{position:absolute;inset:0;opacity:0;background:repeating-linear-gradient(100deg,transparent 0 34px,color-mix(in srgb,var(--accent1) 28%,transparent) 35px 37px,transparent 38px 72px);transform:translateX(-100%)}
.portal{position:absolute;width:72vw;height:72vw;max-width:630px;max-height:630px;right:-10%;top:10%;border-radius:50%;border:22px solid transparent;background:conic-gradient(from 0deg,var(--accent1),var(--accent2),var(--accent3),var(--accent1)) border-box;mask:linear-gradient(#000 0 0) padding-box,linear-gradient(#000 0 0);mask-composite:exclude;opacity:0;filter:drop-shadow(0 0 35px var(--accent1))}
.road{position:absolute;left:50%;bottom:-20%;width:160%;height:70%;transform:translateX(-50%) perspective(600px) rotateX(65deg);opacity:0;background:linear-gradient(90deg,transparent 48%,var(--accent1) 49% 51%,transparent 52%),linear-gradient(180deg,transparent,rgba(255,255,255,.04));border-left:2px solid var(--accent3);border-right:2px solid var(--accent3)}.road i{position:absolute;left:50%;width:8px;height:80px;background:#fff;transform:translateX(-50%);animation:roadDash .55s linear infinite}.road i:nth-child(2){top:30%;animation-delay:-.2s}.road i:nth-child(3){top:65%;animation-delay:-.4s}@keyframes roadDash{from{transform:translate(-50%,-160px)}to{transform:translate(-50%,350px)}}
.equalizer{position:absolute;left:50%;bottom:8%;transform:translateX(-50%);display:flex;align-items:end;gap:7px;height:120px;opacity:0}.equalizer i{width:9px;height:20%;border-radius:8px;background:linear-gradient(var(--accent1),var(--accent3));animation:eq .5s ease-in-out infinite alternate}.equalizer i:nth-child(2){animation-delay:-.1s}.equalizer i:nth-child(3){animation-delay:-.22s}.equalizer i:nth-child(4){animation-delay:-.31s}.equalizer i:nth-child(5){animation-delay:-.15s}.equalizer i:nth-child(6){animation-delay:-.36s}.equalizer i:nth-child(7){animation-delay:-.05s}@keyframes eq{to{height:100%}}
.manifesto-strip{position:absolute;left:0;right:0;bottom:0;z-index:15;display:flex;gap:26px;padding:14px 18px;background:rgba(1,6,14,.65);border-top:1px solid var(--line);overflow:hidden;white-space:nowrap}.manifesto-strip span{font-size:9px;letter-spacing:.14em;font-weight:900;color:#d8e1eb;animation:ticker 12s linear infinite}@keyframes ticker{to{transform:translateX(-220px)}}
.mission{font-size:9px;letter-spacing:.13em;color:#bcc8d6}.mission b{color:var(--accent3)}.telemetry{display:flex;align-items:center;gap:6px;font-size:8px;color:#6e7c90}.telemetry b{font-size:10px;color:#fff}

/* Scene choreography classes */
.scene-shell.mode-race .road,.scene-shell.mode-race .speed-lines{opacity:1}.scene-shell.mode-race .speed-lines{animation:speedSweep .38s linear infinite}.scene-shell.mode-race .africa-wrap{right:-6%;top:3%;transform:rotate(-8deg) scale(1.05)}@keyframes speedSweep{to{transform:translateX(100%)}}
.scene-shell.mode-portal .portal{opacity:.75;animation:portalSpin 2.2s linear infinite}.scene-shell.mode-portal .africa-wrap{right:0;top:12%;transform:scale(.72)}@keyframes portalSpin{to{transform:rotate(360deg)}}
.scene-shell.mode-film{border-radius:0;box-shadow:inset 0 0 0 10px #000}.scene-shell.mode-film:before,.scene-shell.mode-film:after{content:"";position:absolute;left:0;right:0;height:9%;z-index:30;background:#000}.scene-shell.mode-film:before{top:0}.scene-shell.mode-film:after{bottom:0}.scene-shell.mode-film .scene-copy{padding-bottom:170px}.scene-shell.mode-film .africa-wrap{filter:sepia(.3) contrast(1.25)}
.scene-shell.mode-game{background-image:linear-gradient(rgba(0,255,106,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(0,255,106,.05) 1px,transparent 1px);background-size:24px 24px}.scene-shell.mode-game .scene-copy h1{font-family:Consolas,monospace}.scene-shell.mode-game .africa-wrap{transform:translate(8%,-3%) scale(.9)}
.scene-shell.mode-bounce .africa-wrap{animation:bounceWorld .8s cubic-bezier(.3,.8,.2,1) infinite alternate}@keyframes bounceWorld{to{transform:translateY(-34px) rotate(3deg) scale(1.04)}}
.scene-shell.mode-glitch .scene-copy{animation:glitchJitter .11s steps(2,end) infinite}.scene-shell.mode-glitch .africa-wrap{filter:drop-shadow(9px 0 0 #ff2d7a) drop-shadow(-9px 0 0 #00dfff)}@keyframes glitchJitter{50%{transform:translate(2px,-1px) skewX(1deg)}}
.scene-shell.mode-music .equalizer{opacity:1}.scene-shell.mode-music .africa-wrap{transform:scale(.82);right:-2%;top:3%}
.scene-shell.mode-zoom .africa-wrap{transform:scale(1.45);right:-22%;top:0}.scene-shell.mode-zoom .scene-copy{mix-blend-mode:screen}
.scene-shell.mode-orbit .africa-wrap{right:4%;top:2%}.scene-shell.mode-orbit .orbit{border-width:2px}.scene-shell.mode-orbit .o1{animation-duration:2.6s}.scene-shell.mode-orbit .o2{animation-duration:4s}.scene-shell.mode-orbit .o3{animation-duration:6s}
.scene-shell.mode-minimal .orbit,.scene-shell.mode-minimal .nodes,.scene-shell.mode-minimal .core-pulse{display:none}.scene-shell.mode-minimal{background:#fff;color:#071425}.scene-shell.mode-minimal .scene-copy p{color:#425168}.scene-shell.mode-minimal .scene-copy h1{color:#071425;text-shadow:none}.scene-shell.mode-minimal .kicker{color:#1273ff}.scene-shell.mode-minimal .africa,.scene-shell.mode-minimal .mada{opacity:.16}.scene-shell.mode-minimal .manifesto-strip{background:#f5f7fb}.scene-shell.mode-minimal .manifesto-strip span{color:#091a31}
.scene-shell.mode-shockwave:after{content:"";position:absolute;left:50%;top:50%;width:60px;height:60px;border:3px solid var(--accent1);border-radius:50%;z-index:25;transform:translate(-50%,-50%);animation:shock 1.1s ease-out infinite}@keyframes shock{to{width:1000px;height:1000px;opacity:0}}
.scene-shell.mode-flip .africa-wrap{transform:rotateY(180deg) rotate(8deg);right:-6%}.scene-shell.mode-slice{clip-path:polygon(0 0,100% 0,100% 78%,83% 78%,83% 100%,0 100%)}
.scene-shell.mode-tilt{transform:perspective(900px) rotateX(4deg) rotateY(-4deg)}.scene-shell.mode-drop .scene-copy{animation:dropIn .7s cubic-bezier(.12,.9,.2,1)}@keyframes dropIn{from{transform:translateY(-120%);opacity:0}}
.scene-shell.mode-slide .scene-copy{animation:slideIn .7s cubic-bezier(.12,.9,.2,1)}@keyframes slideIn{from{transform:translateX(-120%);opacity:0}}
.scene-shell.mode-spin .africa-wrap{animation:spinWorld 2.8s linear infinite}@keyframes spinWorld{to{transform:rotate(360deg)}}
.scene-shell.mode-punch .scene-copy h1{animation:punch .72s ease-in-out infinite alternate}@keyframes punch{to{transform:scale(1.04);letter-spacing:-.08em}}
.scene-shell.mode-waves:before{content:"";position:absolute;inset:-40%;z-index:2;background:repeating-radial-gradient(circle at 50% 50%,transparent 0 28px,color-mix(in srgb,var(--accent1) 20%,transparent) 30px 32px);animation:waves 4s linear infinite}@keyframes waves{to{transform:scale(1.15) rotate(20deg)}}
.scene-shell.mode-spot:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 72% 40%,rgba(255,255,255,.26),transparent 19%);z-index:4;animation:spot 2.2s ease-in-out infinite alternate}@keyframes spot{to{background-position:15vw -8vh}}
.scene-shell.mode-strobe{animation:strobe 1.4s steps(1,end) infinite}@keyframes strobe{0%,88%,100%{filter:none}90%{filter:invert(1)}92%{filter:hue-rotate(160deg)}94%{filter:none}}
.scene-shell.mode-mirror .visual{transform:scaleX(-1)}.scene-shell.mode-mirror .scene-copy{margin-left:auto;text-align:right}.scene-shell.mode-mirror .scene-copy p{margin-left:auto}
.scene-shell.mode-tunnel .portal{opacity:.9;border-width:55px;animation:portalPulse .8s ease-in-out infinite alternate}.scene-shell.mode-tunnel .africa-wrap{transform:scale(.55);right:5%;top:15%}@keyframes portalPulse{to{transform:scale(1.08) rotate(25deg)}}
.scene-shell.mode-vertical .scene-copy h1{writing-mode:vertical-rl;transform:rotate(180deg);max-height:58vh;font-size:clamp(34px,8vw,70px)}.scene-shell.mode-vertical .scene-copy{display:flex;gap:16px;align-items:flex-end;padding-bottom:125px}.scene-shell.mode-vertical h2,.scene-shell.mode-vertical p{max-width:250px}
.scene-shell.mode-cardstack:before,.scene-shell.mode-cardstack:after{content:"";position:absolute;inset:18px;border:1px solid var(--line);border-radius:26px;z-index:-1;transform:translate(12px,12px)}.scene-shell.mode-cardstack:after{transform:translate(24px,24px);opacity:.5}
.scene-shell.mode-spectrum{filter:hue-rotate(0deg);animation:spectrum 3.4s linear infinite}@keyframes spectrum{to{filter:hue-rotate(360deg)}}
.scene-shell.mode-rocket .africa-wrap{animation:rocket 1.2s ease-in-out infinite alternate}.scene-shell.mode-rocket .speed-lines{opacity:1;transform:rotate(90deg);animation:speedSweep .38s linear infinite}@keyframes rocket{to{transform:translateY(-55px) scale(.95)}}
.scene-shell.mode-heartbeat .scene-copy h1,.scene-shell.mode-heartbeat .core-pulse{animation:heart .78s ease-in-out infinite}@keyframes heart{0%,100%{transform:scale(1)}35%{transform:scale(1.06)}55%{transform:scale(.98)}}
.scene-shell.mode-finale .africa-wrap{right:50%;transform:translateX(50%) scale(.78);top:-3%;opacity:.3}.scene-shell.mode-finale .scene-copy{max-width:none;text-align:center;align-self:center;padding:30px}.scene-shell.mode-finale .scene-copy p{margin-left:auto;margin-right:auto}.scene-shell.mode-finale .scene-copy h1{font-size:clamp(48px,14vw,150px)}

body.transitioning #flash{animation:flash .72s ease}@keyframes flash{0%{opacity:0}28%{opacity:.46}100%{opacity:0}}
body.transitioning .scene-shell{animation:sceneKick .72s cubic-bezier(.2,.8,.1,1)}@keyframes sceneKick{0%{transform:scale(.8) rotate(-2deg);opacity:.1}60%{transform:scale(1.03) rotate(.6deg)}100%{transform:scale(1);opacity:1}}

@media(min-width:760px){.stage{padding:78px 20px 68px}.scene-copy{padding:40px 44px 150px}.africa-wrap{right:-4%;top:-4%;width:min(60vw,760px);height:min(60vw,760px)}.scene-copy p{font-size:18px}.hud{left:18px;right:18px}.manifesto-strip{padding:17px 30px}.manifesto-strip span{font-size:10px}.mission{font-size:10px}}
@media(min-width:1050px){.scene-copy{max-width:62%;align-self:center;padding-bottom:90px}.africa-wrap{right:-1%;top:4%;width:54vw;height:54vw}.scene-shell.mode-race .scene-copy{align-self:end;padding-bottom:130px}.scene-shell.mode-vertical .scene-copy{max-width:60%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}


/* V2 — démarrage immédiat, aucun écran d'entrée */
.gate{display:none!important}
.locked{touch-action:auto!important}

/* Masquer le chargeur/progression des transitions */
.timer{display:none!important}

/* Contacts */
.contact-mini{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center}
.contact-mini a{color:#fff;text-decoration:none;font-size:9px;font-weight:800;letter-spacing:.06em;opacity:.9}
.contact-mini a:hover{color:var(--accent1)}
.network-hidden{display:none}

/* Couche d'images officielles xGO / BIOX */
.scene-image-layer{
  position:absolute;inset:0;z-index:2;display:grid;place-items:center;
  pointer-events:none;opacity:0;transition:opacity .7s ease, transform .7s ease;
}
.scene-image-layer img{
  max-width:min(76vw,720px);max-height:62vh;object-fit:contain;
  filter:drop-shadow(0 0 38px color-mix(in srgb,var(--accent1) 38%,transparent));
  transform:scale(.9) rotate(-2deg);
  transition:transform .8s cubic-bezier(.2,.7,.1,1),filter .8s ease;
}
.scene-shell.show-image .scene-image-layer{opacity:.92}
.scene-shell.show-image .scene-image-layer img{transform:scale(1) rotate(0)}
.scene-shell.show-image .africa-wrap{opacity:.13;transform:scale(.74)}
.scene-shell.image-x .scene-image-layer img{max-height:74vh}
.scene-shell.image-biox .scene-image-layer img{max-height:70vh}
.scene-shell.image-logo .scene-image-layer img{max-width:min(88vw,900px)}
.scene-shell.image-white .scene-image-layer img{max-width:min(82vw,820px)}

/* Certaines scènes mettent l'image en plein impact */
.scene-shell.mode-punch.show-image .scene-image-layer img,
.scene-shell.mode-strobe.show-image .scene-image-layer img{
  animation:imagePunch .7s cubic-bezier(.2,.9,.2,1) infinite alternate;
}
@keyframes imagePunch{to{transform:scale(1.06) rotate(.7deg)}}

.scene-shell.mode-race.show-image .scene-image-layer{justify-items:end}
.scene-shell.mode-race.show-image .scene-image-layer img{transform:translateX(8%) rotate(-5deg) scale(1.02)}
.scene-shell.mode-spin.show-image .scene-image-layer img{animation:imageSpin 4s ease-in-out infinite}
@keyframes imageSpin{50%{transform:scale(1.04) rotate(4deg)}}

@media(max-width:700px){
  .bottom-hud{align-items:center}
  .mission{font-size:8px}
  .contact-mini{gap:6px;max-width:48vw}
  .contact-mini a{font-size:7.5px}
  .telemetry{display:none}
  .scene-image-layer img{max-width:88vw;max-height:48vh}
  .scene-shell.show-image .africa-wrap{opacity:.08}
}


/* ===========================
   V3 ULTRA — transparent assets + chaos x50
   =========================== */
#fx2{position:fixed;inset:0;width:100%;height:100%;z-index:3;pointer-events:none}
.cinema-fx{position:absolute;inset:0;z-index:8;pointer-events:none;overflow:hidden;mix-blend-mode:screen}
.scene-copy{z-index:40!important}.manifesto-strip,.top-hud,.bottom-hud{z-index:60!important}

/* Les logos/images deviennent des filigranes lumineux */
.scene-image-layer{
  z-index:5!important;opacity:0!important;mix-blend-mode:screen!important;
  filter:saturate(1.15) contrast(1.05);
}
.scene-shell.show-image .scene-image-layer{opacity:.14!important}
.scene-image-layer img{
  opacity:.72!important;mix-blend-mode:screen!important;
  max-width:min(66vw,680px)!important;max-height:52vh!important;
  filter:drop-shadow(0 0 24px color-mix(in srgb,var(--accent1) 38%,transparent)) saturate(1.1);
}
.scene-shell.image-white .scene-image-layer{opacity:.05!important;mix-blend-mode:multiply!important}
.scene-shell.image-white .scene-image-layer img{mix-blend-mode:multiply!important}
.scene-shell.show-image .africa-wrap{opacity:.78!important;transform:none!important}
.scene-shell.image-x .scene-image-layer{place-items:end center}
.scene-shell.image-logo .scene-image-layer{place-items:center}
.scene-shell.image-biox .scene-image-layer{place-items:center end}
.scene-shell.image-white .scene-image-layer{place-items:start center}

/* faisceaux, comètes, vortex */
.scanbeam{position:absolute;left:-20%;top:-25%;width:140%;height:2px;background:linear-gradient(90deg,transparent,var(--accent1),#fff,var(--accent2),transparent);box-shadow:0 0 18px var(--accent1);opacity:.35;animation:scanBeam 2.7s linear infinite}
@keyframes scanBeam{to{transform:translateY(150vh)}}
.laser{position:absolute;width:45vw;height:1px;background:linear-gradient(90deg,transparent,var(--accent1),transparent);opacity:.18}
.l1{left:-10vw;top:22%;transform:rotate(17deg);animation:laser1 4.8s ease-in-out infinite}
.l2{right:-10vw;top:62%;transform:rotate(-22deg);animation:laser2 5.4s ease-in-out infinite}
.l3{left:20vw;top:80%;transform:rotate(4deg);animation:laser3 3.9s ease-in-out infinite}
@keyframes laser1{50%{transform:translateX(50vw) rotate(-12deg);opacity:.55}}
@keyframes laser2{50%{transform:translateX(-50vw) rotate(14deg);opacity:.5}}
@keyframes laser3{50%{transform:translateY(-55vh) rotate(-8deg);opacity:.45}}
.comet{position:absolute;width:130px;height:3px;border-radius:10px;background:linear-gradient(90deg,transparent,#fff,var(--accent1));filter:drop-shadow(0 0 10px var(--accent1));opacity:.35}
.c1{left:-160px;top:30%;animation:comet1 4.4s linear infinite}
.c2{right:-160px;top:72%;transform:rotate(180deg);animation:comet2 5.7s linear infinite}
@keyframes comet1{to{transform:translate(140vw,-28vh) rotate(-12deg)}}
@keyframes comet2{to{transform:translate(-140vw,-18vh) rotate(195deg)}}
.vortex{position:absolute;width:64vmax;height:64vmax;right:-28vmax;bottom:-36vmax;border-radius:50%;background:repeating-conic-gradient(from 0deg,color-mix(in srgb,var(--accent1) 15%,transparent) 0 4deg,transparent 4deg 15deg);filter:blur(3px);opacity:.08;animation:vortex 12s linear infinite}
@keyframes vortex{to{transform:rotate(360deg) scale(1.08)}}
.flash-grid{position:absolute;inset:0;background-image:linear-gradient(color-mix(in srgb,var(--accent1) 12%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--accent2) 10%,transparent) 1px,transparent 1px);background-size:46px 46px;mask-image:linear-gradient(to bottom,transparent,#000 35%,#000 75%,transparent);opacity:.08;animation:gridDrift 10s linear infinite}
@keyframes gridDrift{to{background-position:92px 46px}}

/* 50 mutations visuelles */
.fx01 .visual{transform:scale(1.03)} .fx02 .visual{transform:rotate(.8deg) scale(1.02)}
.fx03 .visual{transform:rotate(-.8deg) scale(1.02)} .fx04 .africa-wrap{filter:hue-rotate(35deg) saturate(1.4)}
.fx05 .africa-wrap{filter:hue-rotate(-35deg) saturate(1.5)} .fx06 .africa-wrap{transform:translateX(5vw) scale(.96)}
.fx07 .africa-wrap{transform:translateX(-4vw) scale(1.05)} .fx08 .africa-wrap{transform:translateY(-3vh) rotate(2deg)}
.fx09 .africa-wrap{transform:translateY(4vh) rotate(-2deg)} .fx10 .scene-image-layer{opacity:.22!important}
.fx11 .scene-image-layer img{transform:scale(1.08) rotate(3deg)!important} .fx12 .scene-image-layer img{transform:scale(.88) rotate(-5deg)!important}
.fx13 .orbit{animation-duration:1.2s!important} .fx14 .orbit{animation-direction:reverse!important}
.fx15 .core-pulse{transform:scale(1.28)} .fx16 .visual{filter:contrast(1.22) saturate(1.35)}
.fx17 .visual{filter:brightness(1.13) hue-rotate(20deg)} .fx18 .visual{filter:brightness(.82) saturate(1.7)}
.fx19 .nodes{opacity:.25} .fx20 .nodes{opacity:1;filter:drop-shadow(0 0 8px var(--accent1))}
.fx21 .portal{transform:scale(1.28);opacity:.72} .fx22 .portal{transform:scale(.72);opacity:.95}
.fx23 .speed-lines{opacity:.92!important;transform:rotate(13deg)} .fx24 .speed-lines{opacity:.92!important;transform:rotate(-16deg)}
.fx25 .equalizer{opacity:1!important;transform:scaleY(1.4)} .fx26 .equalizer{opacity:.8!important;transform:scaleX(1.35)}
.fx27 .cinema-fx{transform:skewX(2deg)} .fx28 .cinema-fx{transform:skewX(-2deg)}
.fx29 .flash-grid{opacity:.2} .fx30 .vortex{opacity:.22}
.fx31 .scanbeam{height:5px;opacity:.7} .fx32 .laser{opacity:.5}
.fx33 .comet{opacity:.75} .fx34 .africa-wrap{animation:microShake .19s linear 3}
.fx35 .visual{animation:microZoom .65s ease} .fx36 .visual{animation:microTilt .7s ease}
.fx37 .scene-image-layer{animation:microFade .75s ease} .fx38 .africa-wrap{animation:microFlip .8s ease}
.fx39 .visual{clip-path:polygon(0 2%,100% 0,98% 100%,2% 98%)} .fx40 .visual{clip-path:polygon(2% 0,98% 2%,100% 98%,0 100%)}
.fx41 .africa-wrap{filter:drop-shadow(12px 0 0 color-mix(in srgb,var(--accent2) 30%,transparent))}
.fx42 .africa-wrap{filter:drop-shadow(-12px 0 0 color-mix(in srgb,var(--accent3) 30%,transparent))}
.fx43 .scene-image-layer img{filter:blur(.6px) drop-shadow(0 0 45px var(--accent1))}
.fx44 .scene-image-layer img{filter:contrast(1.5) saturate(1.7)}
.fx45 .visual{transform-origin:20% 80%;transform:rotate(.6deg) scale(1.04)}
.fx46 .visual{transform-origin:80% 20%;transform:rotate(-.6deg) scale(1.04)}
.fx47 .africa-wrap{transform:scale(1.1);opacity:.55!important} .fx48 .africa-wrap{transform:scale(.78);opacity:.92!important}
.fx49 .cinema-fx{filter:hue-rotate(90deg)} .fx50 .cinema-fx{filter:hue-rotate(210deg)}
@keyframes microShake{25%{transform:translate(7px,-3px)}50%{transform:translate(-5px,4px)}75%{transform:translate(3px,2px)}}
@keyframes microZoom{50%{transform:scale(1.07)}} @keyframes microTilt{50%{transform:perspective(700px) rotateY(4deg) rotateX(-3deg)}}
@keyframes microFade{50%{opacity:.3}} @keyframes microFlip{50%{transform:rotateY(12deg) rotateZ(1deg)}}

.visit-chip{font-size:8px;font-weight:900;letter-spacing:.15em;color:var(--accent1);opacity:.82}

@media(max-width:700px){
  .scene-shell.show-image .scene-image-layer{opacity:.09!important}
  .scene-image-layer img{max-width:92vw!important;max-height:40vh!important}
  .cinema-fx{opacity:.8}.scanbeam{opacity:.2}.flash-grid{background-size:30px 30px;opacity:.05}
  .vortex{width:88vmax;height:88vmax}.scene-copy{padding-left:18px!important;padding-right:18px!important}
}
