:root{--bg:#06041a;--ink:#e9fff4;--mint:#35ffb0;--vio:#8a5bff;--pink:#ff4fd8;--gold:#ffc83d;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font-family:'Chakra Petch',system-ui,sans-serif;overflow-x:hidden}
canvas#stars{position:fixed;inset:0;width:100%;height:100%;z-index:0}
.scene{position:fixed;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .8s}
.hide{opacity:0;pointer-events:none}
/* landing UFO */
h1{font-family:Bungee,sans-serif;font-size:clamp(2rem,7vw,4.5rem);margin:0 0 1rem;letter-spacing:.02em;text-shadow:0 0 24px var(--vio)}
.ufo{position:relative;width:min(420px,78vw);aspect-ratio:2/1.1;animation:bob 4s ease-in-out infinite}
.dome{position:absolute;left:28%;width:44%;height:52%;top:0;border-radius:50% 50% 10% 10%;background:radial-gradient(circle at 35% 30%,#bff,#3a7 55%,#134);box-shadow:0 0 30px #35ffb099;display:flex;align-items:center;justify-content:center;font-size:clamp(2rem,8vw,3.6rem)}
.hull{position:absolute;left:0;right:0;bottom:12%;height:42%;border-radius:50%;background:linear-gradient(#cfd6ff,#6c6fb8 55%,#2a2a5c);box-shadow:0 8px 40px #8a5bff88;display:flex;align-items:center;justify-content:center;font-family:Bungee;font-size:clamp(.9rem,3.2vw,1.4rem);color:#14123a}
.lights{position:absolute;left:12%;right:12%;bottom:8%;display:flex;justify-content:space-between}
.lights i{width:12px;height:12px;border-radius:50%;background:var(--pink);box-shadow:0 0 12px var(--pink);animation:blink 1.2s infinite}
.lights i:nth-child(even){background:var(--mint);box-shadow:0 0 12px var(--mint);animation-delay:.6s}
.beam{position:absolute;top:70%;left:30%;width:40%;height:0;background:linear-gradient(#35ffb0aa,#35ffb000);clip-path:polygon(25% 0,75% 0,100% 100%,0 100%);transition:height 1.2s}
.going .beam{height:420px}
.go{margin-top:2rem;font-family:Bungee;font-size:1.1rem;padding:.9rem 2rem;border-radius:99px;border:2px solid var(--mint);background:#35ffb01a;color:var(--ink);cursor:pointer;box-shadow:0 0 18px #35ffb066;transition:.2s}
.go:hover,.go:focus-visible{background:var(--mint);color:#06041a;transform:translateY(-4px);box-shadow:0 0 34px var(--mint)}
.flash{position:fixed;inset:0;background:#fff;opacity:0;z-index:5;pointer-events:none;transition:opacity .5s}
.flash.on{opacity:1}
/* console */
#cons{justify-content:flex-start;padding:16px;overflow-y:auto;background:radial-gradient(ellipse at 50% 120%,#2a1b6b,transparent 60%)}
.proj{width:min(900px,100%);margin-top:6px;border:2px solid #35ffb055;border-radius:18px;background:#021a14cc;box-shadow:0 0 50px #35ffb033 inset,0 0 40px #35ffb022;padding:12px;position:relative;overflow:hidden}
.proj::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(#0000 0 3px,#35ffb00d 3px 4px);pointer-events:none}
.ph{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;font-size:.85rem;color:var(--mint)}
.ph b{font-family:Bungee;font-weight:400}
#px{font-family:Bungee;font-size:1.5rem}
.up{color:var(--mint)}.dn{color:#ff6b8a}
#chart{width:100%;height:210px;display:block}
.note{font-size:.72rem;opacity:.65;margin-top:4px}
.panel{width:min(900px,100%);margin:14px 0 24px;padding:26px 18px 30px;border-radius:50% 50% 24px 24px/18% 18% 24px 24px;background:linear-gradient(#2c2a63,#14123a);border:2px solid #8a5bff66;box-shadow:0 -8px 40px #8a5bff33 inset,0 20px 50px #0008}
.grid{display:flex;flex-wrap:nowrap;gap:18px;padding:30px 22px 22px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--vio) #14123a}
.grid::-webkit-scrollbar{height:8px}.grid::-webkit-scrollbar-thumb{background:var(--vio);border-radius:8px}
.grid>.btn{flex:0 0 112px;scroll-snap-align:center}
.btn{--c:var(--mint);display:flex;flex-direction:column;align-items:center;gap:8px;text-decoration:none;color:var(--ink);font-weight:600;font-size:.92rem;text-align:center;cursor:pointer;background:none;border:0;font-family:inherit}
.cap{width:78px;height:78px;border-radius:50%;display:grid;place-items:center;font-size:1.9rem;background:radial-gradient(circle at 35% 30%,#fff3,#0004 60%),#1b1946;border:3px solid color-mix(in srgb,var(--c) 40%,#000);box-shadow:0 6px 0 #0b0a25,0 0 0 #0000;transition:transform .2s,box-shadow .2s,border-color .2s,background .2s}
.btn:hover .cap,.btn:focus-visible .cap{border-color:var(--c);background:radial-gradient(circle at 35% 30%,#fff9,transparent 60%),var(--c);box-shadow:0 0 14px var(--c),0 0 42px var(--c),0 6px 0 #0b0a25;animation:hov 1.6s ease-in-out infinite}
.btn:hover span,.btn:focus-visible span{color:var(--c);text-shadow:0 0 10px var(--c)}
.btn.game .cap{width:78px;height:78px}
@keyframes hov{0%,100%{transform:translateY(-8px)}50%{transform:translateY(-15px)}}
@keyframes bob{50%{transform:translateY(-14px)}}
@keyframes blink{50%{opacity:.25}}
/* game */
#game{position:fixed;inset:0;z-index:10;background:#000e;display:none;flex-direction:column;align-items:center;justify-content:center;padding:10px}
#game.on{display:flex}
#g{width:min(800px,100%);aspect-ratio:16/9;background:#050320;border:2px solid var(--vio);border-radius:12px;touch-action:none;box-shadow:0 0 40px #8a5bff66}
.hud{width:min(800px,100%);display:flex;justify-content:space-between;font-family:Bungee;font-size:.85rem;padding:6px 4px;color:var(--gold)}
.x{margin-top:8px;padding:.5rem 1.2rem;border-radius:99px;border:2px solid var(--pink);background:none;color:var(--ink);font-family:Bungee;cursor:pointer}
.x:hover{background:var(--pink);box-shadow:0 0 20px var(--pink)}
.help{font-size:.75rem;opacity:.7;margin-top:6px;text-align:center}
.top{width:min(900px,100%);display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.brand{font-family:Bungee;font-size:.95rem}.brand b{color:var(--pink);font-weight:400}
.stat{font-size:.75rem;color:var(--mint);letter-spacing:.08em}
.sm{font-family:Bungee;font-size:.78rem;padding:.55rem 1rem;border-radius:99px;border:2px solid var(--mint);background:#35ffb01a;color:var(--ink);cursor:pointer;transition:.2s}
.sm:hover,.sm:focus-visible{background:var(--mint);color:#06041a;transform:translateY(-3px);box-shadow:0 0 24px var(--mint)}
.sm.pk{border-color:var(--pink);background:#ff4fd81a}.sm.pk:hover,.sm.pk:focus-visible{background:var(--pink);color:#06041a;box-shadow:0 0 24px var(--pink)}
.mets{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px;position:relative;z-index:1}
.met{border:1px solid #35ffb033;border-radius:10px;padding:8px;background:#021a1499}.met small{display:block;font-size:.66rem;opacity:.7}.met strong{color:var(--mint);font-size:.95rem}
.lk{display:flex;gap:8px;margin-top:10px;position:relative;z-index:2}
.lk input{flex:1;min-width:0;background:#050b1a;border:1px solid #35ffb066;border-radius:9px;padding:9px;color:var(--ink);font-family:inherit}
.stt{font-size:.74rem;border-left:3px solid var(--pink);padding-left:8px;margin-top:8px;position:relative;z-index:1;opacity:.85}
.mc{width:min(900px,100%);margin-bottom:18px;padding:16px;border:2px solid #8a5bff66;border-radius:18px;background:#14123acc;display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.mc h3{font-family:Bungee;font-weight:400;margin:0 0 6px;font-size:1rem;color:var(--gold)}.mc p{margin:0 0 6px;font-size:.85rem;opacity:.8}.mc ul{margin:0;padding-left:1.1rem;font-size:.85rem}
.ft{font-size:.68rem;opacity:.55;text-align:center;width:min(900px,100%);padding-bottom:22px}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:#101b35;border:1px solid var(--mint);box-shadow:0 0 24px #35ffb055;padding:10px 16px;border-radius:12px;z-index:30;max-width:90vw;font-size:.85rem;opacity:0;pointer-events:none;transition:opacity .25s}.toast.on{opacity:1}
.pad{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:8px}.pad button{min-width:48px;touch-action:none;user-select:none}
@media(max-width:560px){.mets{grid-template-columns:repeat(2,1fr)}}
/* command center */
#cons{background:none}
#cons>*{position:relative;z-index:1}
#cons::before{content:'';position:fixed;z-index:0;top:62px;left:50%;transform:translateX(-50%);width:min(1100px,96vw);height:36vh;border-radius:50%/60%;border:7px solid #5a5ab0;background:radial-gradient(circle 70px at 84% 72%,#8fd0ff,#2a55c8 68%,#0000 70%),radial-gradient(circle 14px at 15% 30%,#d8d8ee,#7c7c9e 70%,#0000 72%);box-shadow:0 0 40px #8a5bff88,inset 0 0 50px #8a5bff55,0 0 0 100vmax #0a0925;pointer-events:none}
#cons::after{content:'';position:fixed;inset:0;z-index:0;pointer-events:none;background:repeating-linear-gradient(90deg,#0000 0 139px,#8a5bff1c 139px 141px),radial-gradient(ellipse at 50% 110%,#35ffb022,transparent 55%)}
.top{background:linear-gradient(#34327a,#171545);border:1px solid #8a5bff88;border-radius:14px;padding:8px 14px;box-shadow:0 0 22px #8a5bff44,inset 0 1px 0 #fff3}
.stat::before{content:'';display:inline-block;width:9px;height:9px;margin-right:6px;border-radius:50%;background:var(--mint);box-shadow:0 0 10px var(--mint);animation:blink 1.4s infinite}
.stat{font-size:0;display:flex;align-items:center}.stat span{font-size:.75rem}.stat::before{order:-2}.stat::after{content:'SYSTEMS ONLINE';font-size:.75rem;margin-right:10px;order:-1}
.proj{margin-top:14px;border-color:#35ffb099;background:linear-gradient(#35ffb0,#35ffb0) 6px 6px/22px 2px no-repeat,linear-gradient(#35ffb0,#35ffb0) 6px 6px/2px 22px no-repeat,linear-gradient(#35ffb0,#35ffb0) right 6px top 6px/22px 2px no-repeat,linear-gradient(#35ffb0,#35ffb0) right 6px top 6px/2px 22px no-repeat,linear-gradient(#35ffb0,#35ffb0) 6px bottom 6px/22px 2px no-repeat,linear-gradient(#35ffb0,#35ffb0) 6px bottom 6px/2px 22px no-repeat,linear-gradient(#35ffb0,#35ffb0) right 6px bottom 6px/22px 2px no-repeat,linear-gradient(#35ffb0,#35ffb0) right 6px bottom 6px/2px 22px no-repeat,#021a14b8;box-shadow:0 0 60px #35ffb044,inset 0 0 40px #35ffb022;backdrop-filter:blur(2px)}
.proj::before{content:'';position:absolute;left:0;right:0;top:-50px;height:50px;background:linear-gradient(#0000,#35ffb02e,#0000);animation:sweep 5s linear infinite;pointer-events:none}
@keyframes sweep{to{top:100%}}
#cons>.emit{width:min(900px,100%);height:38px;display:flex;justify-content:center;z-index:2;margin-top:-2px}
.emit::before{content:'';width:44%;background:linear-gradient(#35ffb000,#35ffb066);clip-path:polygon(0 0,100% 0,80% 100%,20% 100%)}
.emit::after{content:'';position:absolute;left:50%;bottom:-4px;transform:translateX(-50%);width:64px;height:12px;border-radius:50%;background:radial-gradient(#d8fff0,var(--mint));box-shadow:0 0 22px var(--mint)}
.panel{margin-top:0;border-color:#8a5bffaa;background:linear-gradient(#3a3880,#1a1850 40%,#100f35)}
.panel::before{content:'';display:block;height:6px;margin:-8px 30px 6px;background:repeating-linear-gradient(90deg,var(--mint) 0 10px,#0000 10px 26px,var(--pink) 26px 36px,#0000 36px 52px,var(--gold) 52px 62px,#0000 62px 78px);filter:drop-shadow(0 0 5px var(--mint));animation:blink 2.6s infinite}
.mc{background:linear-gradient(#232167,#12113a);border-color:#8a5bffaa;box-shadow:0 0 30px #8a5bff33,inset 0 1px 0 #fff2}
/* VR flight deck */
#cons::before{transform:translateX(calc(-50% + var(--lx,0)*-26px)) translateY(calc(var(--ly,0)*-14px))}
.proj{transform:perspective(1100px) translateX(calc(var(--lx,0)*-14px)) rotateY(calc(var(--lx,0)*7deg)) rotateX(calc(var(--ly,0)*-5deg))}
.panel{transform:perspective(900px) translateX(calc(var(--lx,0)*-26px)) rotateX(calc(14deg + var(--ly,0)*-4deg)) rotateY(calc(var(--lx,0)*5deg));transform-origin:50% 100%}
.mc{transform:perspective(900px) translateX(calc(var(--lx,0)*-30px)) rotateX(8deg) rotateY(calc(var(--lx,0)*6deg));transform-origin:50% 100%}
#cons>.floor{position:fixed;z-index:0;left:-20%;right:-20%;bottom:-4vh;height:34vh;background:repeating-linear-gradient(90deg,#8a5bff55 0 2px,#0000 2px 70px),repeating-linear-gradient(0deg,#8a5bff55 0 2px,#0000 2px 50px);transform:perspective(380px) rotateX(62deg);transform-origin:50% 100%;-webkit-mask:linear-gradient(#0000,#000 60%);mask:linear-gradient(#0000,#000 60%);pointer-events:none}
#cons>.wing{position:fixed;top:30vh;width:200px;padding:14px;border:2px solid #35ffb088;border-radius:14px;background:#021a14d0;box-shadow:0 0 30px #35ffb044,inset 0 0 30px #35ffb022;display:none;z-index:2;font-size:.72rem;color:var(--mint)}
.wing b{font-family:Bungee;font-weight:400;font-size:.8rem}
#cons>.wing.l{left:calc(50% - 700px);transform:perspective(700px) rotateY(32deg) translateX(calc(var(--lx,0)*-34px))}
#cons>.wing.r{left:calc(50% + 500px);transform:perspective(700px) rotateY(-32deg) translateX(calc(var(--lx,0)*-34px))}
@media(min-width:1300px){#cons>.wing{display:block}}
.radar{width:100%;aspect-ratio:1;border-radius:50%;border:2px solid #35ffb066;background:repeating-radial-gradient(circle,#0000 0 22px,#35ffb033 23px 24px);position:relative;overflow:hidden;margin-top:10px}
.radar::after{content:'';position:absolute;inset:0;background:conic-gradient(from 0deg,#35ffb077,#0000 25%);animation:spin 3s linear infinite}
@keyframes spin{to{transform:rotate(1turn)}}
.radar i{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--pink);box-shadow:0 0 8px var(--pink)}
.bar{height:8px;border-radius:5px;background:#35ffb022;margin:4px 0 12px;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--mint),var(--vio))}
#cons>.vh{position:fixed;inset:0;z-index:4;pointer-events:none;background:radial-gradient(ellipse at center,#0000 58%,#000a 100%);font-size:.7rem;color:var(--mint);font-family:Bungee}
.vh .rt{position:absolute;left:50%;top:50%;width:46px;height:46px;margin:-23px;border:2px solid #35ffb066;border-radius:50%;box-shadow:0 0 14px #35ffb044}
.vh .rt::after{content:'';position:absolute;left:50%;top:50%;width:4px;height:4px;margin:-2px;border-radius:50%;background:var(--mint)}
.vh span{position:absolute;bottom:calc(14px + env(safe-area-inset-bottom,0px));text-shadow:0 0 8px var(--mint)}.vh .a{left:18px}.vh .b{right:18px}
body.vr #cons>.vh{background:radial-gradient(ellipse at center,#0000 38%,#000 98%)}
/* saucer interior */
.grid{perspective:640px;padding-bottom:58px}
.grid>.btn{transform-origin:50% 60%;will-change:transform}
.panel{border-radius:46% 46% 30px 30px/22% 22% 30px 30px}
#cons::after{background:repeating-conic-gradient(from 0deg at 50% -25%,#0000 0 2deg,#8a5bff26 2deg 2.8deg,#0000 2.8deg 11deg),repeating-radial-gradient(ellipse 100% 60% at 50% -25%,#0000 0 150px,#35ffb02e 150px 153px),radial-gradient(ellipse at 50% 110%,#35ffb022,transparent 55%)}
#cons>.proj,#cons>.panel,#cons>.mc{animation:hum 7s ease-in-out infinite}
@keyframes hum{50%{translate:0 -4px;rotate:.25deg}}
body.vr #cons>.wing{display:block}
body.vr #cons>.wing.l{transform:perspective(700px) rotateY(32deg) translateX(calc(var(--lx,0)*-300px))}
body.vr #cons>.wing.r{transform:perspective(700px) rotateY(-32deg) translateX(calc(var(--lx,0)*-300px))}
/* stationary cabin around the pilot */
#cons{overflow:hidden;perspective:var(--P,1100px);touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab}
.lk input{-webkit-user-select:text;user-select:text}
#cons::before{display:none}
#cons::after{z-index:3;background:radial-gradient(ellipse at 50% 50%,#0000 58%,#06041add 100%)}
#cons>.cabin{position:absolute;inset:0;z-index:0;transform-style:preserve-3d;transform-origin:50% 50% var(--P,1100px);transform:rotateX(0deg) rotateY(0deg)}
#cons>.top{z-index:6}
.cabin>*{position:absolute;inset:0;margin:auto;height:fit-content;transform-origin:50% 50% var(--P,1100px)}
.cabin>.proj{width:min(760px,88vw);transform:translateY(-14vh)}
.cabin>.wing{display:block;width:210px;padding:14px;border:2px solid #35ffb088;border-radius:14px;background:#021a14d0;box-shadow:0 0 30px #35ffb044,inset 0 0 30px #35ffb022;font-size:.72rem;color:var(--mint)}
.cabin>.wing.l{transform:rotateY(95deg)}.cabin>.wing.r{transform:rotateY(-95deg)}
.cabin>.mc{width:min(560px,88vw);transform:rotateY(180deg) translateY(-6vh)}
.cabin>.ft{width:min(560px,88vw);transform:rotateY(180deg) translateY(22vh)}
.cabin>.emit{display:none}
.cabin>.panel{height:auto;padding:0;background:none;border:0;border-radius:0;box-shadow:none;transform:none;transform-style:preserve-3d;pointer-events:none}
.cabin>.panel::before{display:none}
.cabin .grid{position:absolute;inset:0;padding:0;overflow:visible;display:block;perspective:none;transform-style:preserve-3d}
.cabin .grid>.btn{position:absolute;left:50%;top:50%;width:112px;margin:-60px 0 0 -56px;flex:none;pointer-events:auto;will-change:auto;transform-origin:50% 50% var(--P,1100px)}
.cabin>.floor,.cabin>.ceil{inset:auto;left:50%;top:50%;width:2600px;height:2600px;margin:-1300px 0 0 -1300px;border-radius:50%;transform-origin:50% 50%;pointer-events:none;-webkit-mask:radial-gradient(circle,#0000 0 24%,#000 38%,#0000 70%);mask:radial-gradient(circle,#0000 0 24%,#000 38%,#0000 70%)}
.cabin>.floor{transform:translateZ(var(--P,1100px)) translateY(330px) rotateX(90deg);background:repeating-radial-gradient(circle,#0000 0 100px,#8a5bff66 100px 104px),repeating-conic-gradient(#0000 0 9deg,#8a5bff44 9deg 9.7deg)}
.cabin>.ceil{transform:translateZ(var(--P,1100px)) translateY(-330px) rotateX(-90deg);background:repeating-radial-gradient(circle,#0000 0 100px,#35ffb066 100px 104px),repeating-conic-gradient(#0000 0 9deg,#8a5bff44 9deg 9.7deg)}
@media(max-height:620px){.cabin>.proj{transform:translateY(-6vh) scale(.62)}}
.vh .c{left:50%;transform:translateX(-50%);opacity:.6}
.cabin>.proj.s2{width:min(560px,86vw)}
.cabin>.proj.pe{transform:rotateY(40deg) translateY(-14vh)}
.cabin>.proj.bt{transform:rotateY(-40deg) translateY(-14vh)}
.c2{width:100%;height:150px;display:block}
.px2{font-family:Bungee;font-size:1.1rem}
.hl{font-size:.74rem;opacity:.8;position:relative;z-index:1;margin-top:6px;color:var(--mint)}
@media(max-height:620px){.cabin>.proj.pe{transform:rotateY(40deg) translateY(-6vh) scale(.62)}.cabin>.proj.bt{transform:rotateY(-40deg) translateY(-6vh) scale(.62)}}
.radar::after{pointer-events:none}
.radar i{width:14px;height:14px;margin:-7px 0 0 -7px;z-index:2;cursor:pointer;transition:transform .15s}
.radar i:hover{transform:scale(1.5)}
.radar i::after{content:attr(data-n);position:absolute;left:17px;top:0;font-size:9px;color:var(--mint);white-space:nowrap;text-shadow:0 0 6px #000}
.radar i[data-k=earth]{background:#4fa8ff;box-shadow:0 0 10px #4fa8ff}
.radar i[data-k=moon]{background:#d8d8ee;box-shadow:0 0 10px #d8d8ee}
.radar i[data-k=mars]{background:#ff7a45;box-shadow:0 0 10px #ff7a45}
.cabin>.wing.l{transform:rotateY(95deg) translateY(-120px)}
.cabin>.wing.r{transform:rotateY(-95deg) translateY(-120px)}
.cabin>.wing.w2{transform:rotateY(-95deg) translateY(130px)}
.cabin>.mc{width:210px;padding:14px;transform:rotateY(95deg) translateY(130px)}
.cabin>.mc h3{font-size:.85rem}
.wr{display:grid;grid-template-columns:1fr auto;gap:3px 8px;align-items:center;margin-top:8px}.wr .bar{margin:0}
.fb{font-family:Bungee;font-size:.62rem;padding:.3rem .65rem;border-radius:99px;border:1px solid var(--pink);background:#ff4fd81a;color:var(--ink);cursor:pointer;transition:.2s}
.fb:hover,.fb:focus-visible{background:var(--pink);color:#06041a;box-shadow:0 0 16px var(--pink)}
.vh.fired{box-shadow:inset 0 0 140px #ff4fd8aa}
#warp{position:fixed;inset:0;z-index:20;display:none;background:#000}
#warp.on{display:block}
#wc{position:absolute;inset:0;width:100%;height:100%}
#pv{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:16px}
#warp.arr #pv{display:flex}
#pc{width:min(60vmin,420px);aspect-ratio:1;border-radius:50%;box-shadow:0 0 90px var(--wc,#35ffb0)}
#pn{font-family:Bungee;font-weight:400;margin:0;font-size:clamp(1.4rem,5vw,2.4rem);color:var(--wc,#35ffb0)}
#pd{max-width:46ch;margin:0;font-size:.9rem;opacity:.85}
.fb{--fc:var(--pink);border-color:var(--fc);background:color-mix(in srgb,var(--fc) 15%,transparent)}
.fb:hover,.fb:focus-visible,.fb.on{background:var(--fc);color:#06041a;box-shadow:0 0 16px var(--fc)}
a.fb{display:inline-block;text-decoration:none;text-align:center;position:relative;z-index:1}
.bolt{position:fixed;left:50%;bottom:0;height:70vh;z-index:5;pointer-events:none;transform-origin:bottom;background:linear-gradient(var(--bc),transparent);box-shadow:0 0 24px var(--bc);animation:bolt .4s ease-out forwards}
@keyframes bolt{from{opacity:1;transform:scaleY(.15)}to{opacity:0;transform:scaleY(1)}}
.cabin>.proj.pn{width:min(460px,86vw);transform:rotateY(var(--a)) translateY(-10vh)}
@media(max-height:620px){.cabin>.proj.pn{transform:rotateY(var(--a)) translateY(-4vh) scale(.62)}}
.cabin>.ft{width:min(360px,88vw)}
.pn>*:not(.ph){position:relative;z-index:1}
.mk{display:grid;grid-template-columns:1fr auto;gap:4px 8px;align-items:center;margin-top:10px;font-size:.8rem}
.yn{grid-column:1/-1;height:8px;border-radius:5px;background:#ff6b8a55;overflow:hidden}.yn i{display:block;height:100%;background:var(--mint);transition:width .6s}
.pc{grid-column:1/-1;font-size:.7rem;opacity:.75}
.lbr{display:grid;grid-template-columns:3ch 1fr 4ch 7ch;gap:6px 10px;font-size:.78rem;margin-top:7px}
.lbr.h{opacity:.6;font-size:.68rem}
.chat{height:170px;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;gap:6px;font-size:.78rem;margin:8px 0}
.msg{background:#35ffb014;border-radius:10px;padding:5px 9px}
.pn input,.pn select{width:100%;margin:6px 0;background:#050b1a;color:var(--ink);border:1px solid #35ffb066;border-radius:9px;padding:8px;font-family:inherit;-webkit-user-select:text;user-select:text}
.pk{display:flex;gap:8px;margin:8px 0}
.nav{position:absolute;bottom:42px;left:50%;transform:translateX(-50%);display:flex;flex-wrap:wrap;gap:6px;justify-content:center;width:min(94vw,680px);pointer-events:auto}
.nav button{font-size:.62rem;padding:.35rem .7rem}
.cabin>.wing.r{transform:rotateY(calc(95deg - var(--st,12deg))) translateY(-120px)}
.cabin>.wing.w2{transform:rotateY(calc(95deg - var(--st,12deg))) translateY(130px)}
.nft{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px}
.nfv{flex:1;display:flex;justify-content:center}
.nc{display:block;height:auto;border-radius:10px;width:min(190px,44vw);filter:drop-shadow(0 0 22px var(--nc,#35ffb0));animation:nin .35s ease-out}
@keyframes nin{from{opacity:0;transform:translateX(var(--d,30px)) scale(.9)}}
.arw{width:46px;height:46px;flex:none;border-radius:50%;border:2px solid #35ffb088;background:#35ffb012;color:var(--mint);font-size:1.15rem;cursor:pointer;transition:.2s;box-shadow:0 0 10px #35ffb055;text-shadow:0 0 8px var(--mint)}
.arw:hover,.arw:focus-visible{border-color:var(--mint);background:var(--mint);color:#06041a;box-shadow:0 0 18px var(--mint),0 0 44px var(--mint);transform:scale(1.12);text-shadow:none}
.nname{text-align:center;font-family:Bungee;font-size:.85rem;margin-top:8px;color:var(--gold)}
.dots{display:flex;gap:6px;justify-content:center;margin:8px 0}.dots i{width:8px;height:8px;border-radius:50%;background:#35ffb033}.dots i.on{background:var(--mint);box-shadow:0 0 8px var(--mint)}
#drift{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
#drift>div{will-change:transform}
.dnft{perspective:700px}
.dc{animation:spiny 10s linear infinite;filter:drop-shadow(0 0 18px var(--nc,#35ffb0))}
.dnft .nc{animation:none;filter:none;display:block}
@keyframes spiny{to{transform:rotateY(360deg)}}
.dbk{position:relative;width:210px;height:140px;animation:tumble 18s ease-in-out infinite alternate}
.bkc{position:absolute;inset:-6px;background:var(--cv);border-radius:8px;box-shadow:0 0 30px #0008,inset 0 0 20px #0006}
.bkp{position:absolute;top:0;bottom:0;width:50%;background:#f4efe0;display:flex;align-items:center;justify-content:center;font-size:42px}
.bkp.l{left:0;border-radius:6px 0 0 6px;box-shadow:inset -14px 0 14px -10px #0005}
.bkp.r{right:0;border-radius:0 6px 6px 0;box-shadow:inset 14px 0 14px -10px #0005;background:repeating-linear-gradient(#0000 0 11px,#6b5b3a66 11px 12px),#f4efe0}
.dbk::after{content:'';position:absolute;left:50%;top:0;bottom:0;width:2px;margin-left:-1px;background:#0006}
@keyframes tumble{from{transform:perspective(700px) rotateX(20deg) rotateY(-30deg) rotateZ(-8deg)}to{transform:perspective(700px) rotateX(-15deg) rotateY(30deg) rotateZ(10deg)}}
#trail{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
#fly{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;mix-blend-mode:screen}
#fly>div{position:absolute;left:0;top:0;will-change:transform}
#fly img{display:block;width:100%;height:auto}
#land.warping h1{opacity:0;transition:opacity .6s}
.ufo{width:min(400px,76vw);aspect-ratio:241/132}
.ufosvg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.gl{animation:glw 1.2s ease-in-out infinite;animation-delay:calc(var(--i)*.2s)}@keyframes glw{50%{opacity:.95}}.bnod{animation:bnod 2.2s ease-in-out infinite}@keyframes bnod{50%{transform:translateY(-1.2px)}}.blk ellipse,.blk circle{transform-box:fill-box;transform-origin:center;animation:blink 4.4s infinite}@keyframes blink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.1)}}
.beam{top:87%}
.ucap{font-family:Bungee;font-size:1rem;margin-top:.5rem;letter-spacing:.05em;text-shadow:0 0 14px var(--vio)}
#land.warping .ucap{opacity:0;transition:opacity .6s}
.nfv{perspective:900px}
.flip{position:relative;transform-style:preserve-3d;width:min(190px,44vw);aspect-ratio:400/560;animation:nin .35s ease-out;cursor:pointer;outline:none}
.flip .nc{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;animation:none;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.flip .nc.bk{transform:rotateY(180deg)}
.flip:focus-visible{outline:2px solid var(--mint);outline-offset:4px;border-radius:12px}
.dc{filter:none;transform-style:preserve-3d;position:relative}
.dnft .nc{backface-visibility:hidden;-webkit-backface-visibility:hidden;filter:drop-shadow(0 0 16px var(--nc,#35ffb0))}
.dnft .nc.bk{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;transform:rotateY(180deg)}
.bkp.l img{max-width:88%;max-height:88%;object-fit:contain;mix-blend-mode:multiply;display:block}
.cabin>.proj,.cabin>.proj.s2,.cabin>.proj.pe,.cabin>.proj.bt,.cabin>.proj.pn,.cabin>.wing.l,.cabin>.wing.r,.cabin>.wing.w2,.cabin>.mc,.cabin>.ft{transform:rotateY(var(--a,0deg)) translateY(var(--y,0px)) scale(var(--s,1))}
.flip .nc,.flip .nc.bk,.dnft .nc.bk{object-fit:fill}
#cons.hide,#cons.hide *,#land.hide,#land.hide *{pointer-events:none!important}
#land:not(.hide){z-index:2}
#earth{position:fixed;left:0;bottom:0;width:100vw;z-index:-1;pointer-events:none;opacity:0;transition:opacity 1.6s}
#earth.on{opacity:1}
#land{justify-content:flex-start;padding-top:max(5vh,24px)}
#land h1{margin:0 0 clamp(44px,12vh,120px)}
.going .beam{height:var(--bh,420px)}
#land{padding-top:max(2vh,10px)}
#land h1{margin:0 0 calc(clamp(44px,12vh,120px) + max(5vh,24px) - max(2vh,10px))}
#land .go{position:fixed;left:0;right:0;width:max-content;margin:0 auto;bottom:calc(var(--eh,150px)/2 - 26px)}
.pcl{position:absolute;inset:0;border-radius:50%;overflow:hidden}
.psi{position:absolute;left:0;top:0;width:400%;height:100%;background-repeat:repeat-x;background-size:50% 100%;animation:psp linear infinite}
.psi.gs{background-image:radial-gradient(ellipse 9% 7% at 14% 34%,#ffffff40,#0000),radial-gradient(ellipse 14% 5% at 40% 62%,#00000030,#0000),radial-gradient(ellipse 8% 8% at 70% 44%,#ffffff38,#0000),radial-gradient(ellipse 12% 4% at 88% 72%,#00000028,#0000)}
@keyframes psp{from{transform:translateX(-50%)}to{transform:translateX(0)}}
.psh,.pgs{position:absolute;inset:0;border-radius:50%}
.beam{left:50%;width:min(150%,96vw);transform:translateX(-50%);clip-path:polygon(40% 0,60% 0,100% 100%,0 100%)}
.beam i{position:absolute;left:50%;top:0;width:18%;height:6px;transform:translateX(-50%);border:2px solid #9dffdc;border-radius:50%;box-shadow:0 0 10px #35ffb0,inset 0 0 6px #35ffb088;opacity:0}
.going .beam i{animation:ringdn .72s linear infinite}
.beam i:nth-of-type(2){animation-delay:.144s}.beam i:nth-of-type(3){animation-delay:.288s}.beam i:nth-of-type(4){animation-delay:.432s}.beam i:nth-of-type(5){animation-delay:.576s}
@keyframes ringdn{0%{top:0;width:18%;height:6px;opacity:0}12%{opacity:.95}100%{top:92%;width:90%;height:30px;opacity:0}}
#ufo.retract .beam{height:0;width:18%;transition:height .8s ease-in,width .8s ease-in}
#ufo.retract .beam i{animation:none!important;opacity:0}
.tg{margin:8px 0 12px;padding:10px;border:1px solid #35ffb044;border-radius:10px;background:#35ffb00f}
.tg b{font-family:Bungee;font-weight:400;color:var(--mint);font-size:1rem;display:block}
.tg span{font-size:.8rem;opacity:.85}
.tg p{font-size:.78rem;opacity:.8;margin:8px 0 0}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
:root:not([data-theme="light"]){color-scheme:dark}

.radar i.pb{width:12px;height:12px;margin:-6px 0 0 -6px;background:var(--pc);box-shadow:0 0 8px var(--pc),0 0 0 2px #0008;z-index:1;transition:transform .15s,filter .3s;animation:pbp 2.4s ease-in-out infinite}
.radar i.pb::before{content:'';position:absolute;inset:-12px;border-radius:50%}
.radar i.pb::after{color:var(--pc);font-size:7px;left:14px;top:1px;letter-spacing:.04em;opacity:0;transition:opacity .5s}
.radar i.pb.lbl::after{opacity:.85;transition:opacity .15s}
.radar i.pb.lf::after{left:auto;right:14px}
.radar i.pb:hover,.radar i.pb:focus-visible{z-index:4}
.radar i.pb.hit{filter:brightness(1.9) drop-shadow(0 0 6px var(--pc));transform:scale(1.7)}
.radar i.pb:hover,.radar i.pb:focus-visible{transform:scale(1.5);outline:none}
.pbt{position:absolute;z-index:5;pointer-events:none;font-size:9px;letter-spacing:.08em;white-space:nowrap;color:var(--pc);background:#021a14f2;border:1px solid var(--pc);border-radius:4px;padding:2px 6px;box-shadow:0 0 10px color-mix(in srgb,var(--pc) 50%,transparent);transform:translate(-50%,-150%);opacity:0;transition:opacity .15s}.pbt.on{opacity:1}
.radar i.pb:hover::after,.radar i.pb:focus-visible::after{opacity:0}
#pscan .ps-f canvas.lk{animation:psim .9s ease-out}
@keyframes psim{0%{filter:blur(10px) brightness(1.9) saturate(.2);transform:scale(1.05)}60%{filter:blur(2px) brightness(1.2)}100%{filter:none;transform:none}}
#pscan .ps-lk{position:absolute;inset:0;pointer-events:none;opacity:0}
#pscan .ps-lk.on{animation:pslk 1.3s ease-out forwards}
#pscan .ps-lk i{position:absolute;width:34px;height:34px;border:2px solid var(--pc);filter:drop-shadow(0 0 6px var(--pc));animation:psbr .8s cubic-bezier(.3,1.4,.5,1) forwards}
#pscan .ps-lk i:nth-child(1){left:var(--x0);top:var(--y0);border-right:0;border-bottom:0}
#pscan .ps-lk i:nth-child(2){right:var(--x0);top:var(--y0);border-left:0;border-bottom:0}
#pscan .ps-lk i:nth-child(3){left:var(--x0);bottom:var(--y0);border-right:0;border-top:0}
#pscan .ps-lk i:nth-child(4){right:var(--x0);bottom:var(--y0);border-left:0;border-top:0}
#pscan .ps-lk b{position:absolute;left:50%;bottom:8%;transform:translateX(-50%);font-family:Bungee;font-weight:400;font-size:.75rem;letter-spacing:.2em;color:var(--pc);text-shadow:0 0 10px var(--pc);background:#000a;padding:3px 10px;border-radius:4px}
#pscan .ps-lk.on b{animation:psbl .18s steps(2) 4}
@keyframes psbr{from{transform:scale(1.8) translate(var(--dx),var(--dy));opacity:0}to{transform:none;opacity:1}}
@keyframes pslk{0%,75%{opacity:1}100%{opacity:0}}
@keyframes psbl{50%{opacity:.2}}
#pscan .ps-w{width:100%;margin-top:12px;padding:.6rem .8rem;font-size:.78rem}
#warp .wh{position:absolute;top:50%;transform:translateY(-50%);z-index:3;display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 16px;border-radius:14px;border:1px solid var(--wc,#35ffb0);background:color-mix(in srgb,var(--wc,#35ffb0) 10%,#0008);color:var(--ink,#fff);font-family:Bungee;font-size:.62rem;letter-spacing:.08em;cursor:pointer;transition:background-color .2s,box-shadow .2s,transform .2s}
#warp .wh svg{width:26px;height:26px;stroke:var(--wc,#35ffb0);fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
@media(hover:hover){#warp .wh:hover{background:color-mix(in srgb,var(--wc,#35ffb0) 28%,#000a);box-shadow:0 0 22px var(--wc,#35ffb0);transform:translateY(-50%) scale(1.06)}}
#warp .wh:focus-visible{background:color-mix(in srgb,var(--wc,#35ffb0) 28%,#000a);box-shadow:0 0 22px var(--wc,#35ffb0);outline:none;transform:translateY(-50%) scale(1.06)}
#warp .wh.pv{left:max(14px,4vw)}#warp .wh.nx{right:max(14px,4vw)}
#warp [data-testid=warp-planet-image]{cursor:grab;touch-action:none}#warp [data-testid=warp-planet-image].dg{cursor:grabbing}
#warp .wh canvas{width:40px;height:40px;display:block}#warp .wh canvas.st{width:62px;height:32px;margin:4px 0}
#warp .wsd{border-color:var(--wc,#35ffb0);margin-top:4px}#warp .wsd:hover,#warp .wsd:focus-visible{background:color-mix(in srgb,var(--wc,#35ffb0) 22%,transparent);outline:none}
#warp .wsd+.x{margin-top:0}
#muteBtn svg{width:15px;height:15px;vertical-align:-3px;margin-right:6px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
#warp .wdh{font-size:.62rem;letter-spacing:.2em;opacity:.55;margin-top:-4px}
@media(max-width:640px){#warp .wh{top:auto;bottom:16px;transform:none;padding:8px 12px}#warp .wh:focus-visible{transform:none}}
@media(max-width:640px) and (hover:hover){#warp .wh:hover{transform:scale(1.04)}}
@keyframes pbp{50%{box-shadow:0 0 16px var(--pc),0 0 0 4px #0000}}
#pscan{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:18px;background:#02010bdd;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);opacity:0;visibility:hidden;transition:opacity .35s,visibility .35s;font-family:'Chakra Petch',system-ui,sans-serif;color:var(--ink);-webkit-user-select:none;user-select:none}
#pscan.on{opacity:1;visibility:visible}
#pscan .ps-b{position:relative;width:min(1180px,100%);max-height:100%;overflow:auto;display:grid;grid-template-columns:minmax(0,1.7fr) minmax(240px,1fr);gap:18px;padding:18px;border:1px solid color-mix(in srgb,var(--pc) 60%,transparent);border-radius:16px;background:#050a14f0;box-shadow:0 0 50px color-mix(in srgb,var(--pc) 35%,transparent),inset 0 0 40px #35ffb011;transform:scale(.94) translateY(10px);transition:transform .4s cubic-bezier(.2,.9,.3,1.2)}
#pscan.on .ps-b{transform:none}
#pscan .ps-f{position:relative;align-self:start;border-radius:10px;overflow:hidden;border:1px solid #35ffb044;background:#000}
#pscan .ps-f canvas{display:block;width:100%;aspect-ratio:16/9;max-height:72vh}
#pscan .ps-f{background:radial-gradient(1px 1px at 12% 22%,#fff9,#0000),radial-gradient(1px 1px at 78% 14%,#fff8,#0000),radial-gradient(1.5px 1.5px at 88% 70%,#fffa,#0000),radial-gradient(1px 1px at 30% 82%,#fff7,#0000),radial-gradient(1px 1px at 62% 40%,#fff6,#0000),radial-gradient(1px 1px at 6% 60%,#fff8,#0000),radial-gradient(ellipse at 50% 50%,color-mix(in srgb,var(--pc) 16%,#02030a) 0,#02030a 62%)}
#pscan .ps-f::after{content:'';position:absolute;left:0;right:0;height:30%;top:-30%;background:linear-gradient(transparent,color-mix(in srgb,var(--pc) 30%,transparent),transparent);animation:psl 2.8s linear infinite;pointer-events:none}
@keyframes psl{to{top:100%}}
#pscan .ps-tag{font-size:.62rem;letter-spacing:.2em;color:var(--pc);margin:4px 0 6px}
#pscan h2{font-family:Bungee;font-weight:400;margin:0;font-size:clamp(1.6rem,4vw,2.4rem);color:var(--pc);text-shadow:0 0 18px var(--pc)}
#pscan .ps-s{margin:6px 0 14px;font-size:.8rem;opacity:.8}
#pscan dl{display:grid;gap:8px;margin:0}
#pscan dl div{border:1px solid #35ffb033;border-left:3px solid var(--pc);border-radius:6px;padding:7px 10px;background:#35ffb00a;opacity:0;transform:translateX(10px);animation:psi .4s forwards}
#pscan dt{font-size:.6rem;letter-spacing:.16em;color:var(--mint);opacity:.75}
#pscan dd{margin:2px 0 0;font-size:.86rem;font-family:ui-monospace,Menlo,monospace}
@keyframes psi{to{opacity:1;transform:none}}
#pscan .ps-n{display:flex;gap:8px;align-items:center;margin-top:14px}
#pscan .ps-n span{flex:1;text-align:center;font-size:.7rem;opacity:.7;font-family:ui-monospace,Menlo,monospace}
#pscan button{font-family:Bungee;font-size:.7rem;padding:.45rem .8rem;border-radius:99px;border:1px solid var(--pc);background:color-mix(in srgb,var(--pc) 14%,transparent);color:var(--ink);cursor:pointer;transition:background-color .2s,color .2s,box-shadow .2s}
#pscan button:hover,#pscan button:focus-visible{background:var(--pc);color:#06041a;box-shadow:0 0 16px var(--pc);outline:none}
#pscan .ps-x{position:absolute;right:10px;top:10px;z-index:2}
@media(max-width:820px){#pscan{padding:10px;align-items:flex-start}#pscan .ps-b{grid-template-columns:1fr;padding:12px;gap:12px}#pscan .ps-f canvas{max-height:46vh}}
