:root{--navy:#05081a;--g:#2ecc5b;--r:#ff3b4e;--b:#2f7bff;--p:#9b4dff;--k:#ff4fb3;--y:#ffc21a;--mx:0;--my:0}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{background:var(--navy);color:#fff;font-family:"Montserrat","Avenir Next","Segoe UI",system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;overflow:hidden;min-height:100svh;-webkit-font-smoothing:antialiased;
 background:radial-gradient(120% 90% at 50% 38%,#0d1440 0%,#070b24 45%,#04061a 100%)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
#streaks{position:fixed;inset:0;width:100%;height:100%;z-index:0}
.glow{position:fixed;border-radius:50%;filter:blur(80px);opacity:.38;z-index:0;pointer-events:none;mix-blend-mode:screen}
.g1{width:60vmax;height:60vmax;left:-18vmax;top:-22vmax;background:radial-gradient(circle,#3b2bff 0%,transparent 65%);animation:drift1 18s ease-in-out infinite alternate}
.g2{width:55vmax;height:55vmax;right:-20vmax;bottom:-24vmax;background:radial-gradient(circle,#ff2f7a 0%,transparent 65%);animation:drift2 22s ease-in-out infinite alternate}
@keyframes drift1{to{transform:translate(12vmax,8vmax) scale(1.15)}}
@keyframes drift2{to{transform:translate(-10vmax,-6vmax) scale(1.1)}}

/* discs */
.discs{position:fixed;inset:0;z-index:1;pointer-events:none;perspective:900px}
.disc{position:absolute;left:var(--x);top:var(--y);width:var(--s);height:var(--s);margin:calc(var(--s)/-2) 0 0 calc(var(--s)/-2);
 transform:translate3d(calc(var(--mx)*var(--d)*40px),calc(var(--my)*var(--d)*30px),0);transition:transform .25s ease-out;filter:blur(var(--bl,0));opacity:0;animation:discIn 1.4s cubic-bezier(.2,.8,.2,1) forwards;animation-delay:var(--dl)}
.disc i{display:block;width:100%;height:100%;border-radius:50%;transform-style:preserve-3d;animation:spin var(--t) ease-in-out infinite alternate,bob calc(var(--t)*.7) ease-in-out infinite alternate;
 background:
  radial-gradient(circle at 34% 28%,rgba(255,255,255,.95) 0 6%,rgba(255,255,255,.35) 14%,transparent 32%),
  radial-gradient(circle at 50% 50%,transparent 0 58%,rgba(255,255,255,.28) 60%,transparent 63%),
  radial-gradient(circle at 60% 70%,rgba(0,0,0,0) 40%,rgba(0,0,0,.45) 100%),
  radial-gradient(circle at 40% 35%,var(--c2),var(--c) 55%,var(--c3) 100%);
 box-shadow:0 0 0 calc(var(--s)*.035) var(--c3) inset,0 calc(var(--s)*.04) 0 calc(var(--s)*-.01) rgba(0,0,0,.35),0 calc(var(--s)*.12) calc(var(--s)*.35) -4px rgba(0,0,0,.6),0 0 calc(var(--s)*.5) -4px var(--c)}
.disc.coin i{background:
  radial-gradient(circle at 34% 28%,rgba(255,255,255,.95) 0 5%,rgba(255,255,255,.3) 13%,transparent 30%),
  radial-gradient(circle at 50% 50%,transparent 0 60%,rgba(255,255,255,.5) 62%,transparent 66%),
  conic-gradient(from 0deg,#2ecc5b,#2f7bff,#9b4dff,#ff4fb3,#ff3b4e,#ffc21a,#2ecc5b);
 box-shadow:0 0 0 calc(var(--s)*.05) #11163a inset,0 calc(var(--s)*.12) calc(var(--s)*.35) -4px rgba(0,0,0,.6),0 0 calc(var(--s)*.5) -6px #fff}
.disc.coin i::after{content:"D";position:absolute;inset:0;display:grid;place-items:center;font-weight:900;font-size:calc(var(--s)*.46);color:#fff;text-shadow:0 2px 6px rgba(0,0,0,.5)}
.disc i{position:relative}
@keyframes spin{from{transform:rotateX(var(--rx)) rotateY(calc(var(--ry)*-1)) rotateZ(0)}to{transform:rotateX(calc(var(--rx)*-.6)) rotateY(var(--ry)) rotateZ(40deg)}}
@keyframes bob{to{translate:0 calc(var(--s)*-.25)}}
@keyframes discIn{from{opacity:0;scale:.3}to{opacity:var(--o,1);scale:1}}

/* stage */
.stage{position:relative;z-index:2;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:4vh 20px 9vh;gap:clamp(10px,2.2vh,26px)}
.logo{display:flex;flex-direction:column;align-items:center;gap:clamp(8px,2vh,22px);transform:translate3d(calc(var(--mx)*-8px),calc(var(--my)*-6px),0);transition:transform .3s ease-out}
.mark-wrap{position:relative;width:min(38vh,58vw,560px);aspect-ratio:1100/1133;animation:markIn 1.8s cubic-bezier(.16,1,.3,1) both .15s}
.mark{width:100%;height:auto;display:block;filter:drop-shadow(0 0 28px rgba(155,77,255,.35)) drop-shadow(0 0 60px rgba(255,79,179,.18));animation:pulse 5s ease-in-out infinite 2s}
.shine{position:absolute;inset:0;-webkit-mask:url(/assets/dash-mark-600.webp) center/contain no-repeat;mask:url(/assets/dash-mark-600.webp) center/contain no-repeat;
 background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.0) 40%,rgba(255,255,255,.75) 50%,rgba(255,255,255,0) 60%,transparent 65%) no-repeat;background-size:250% 100%;background-position:150% 0;mix-blend-mode:overlay;animation:sweep 4.5s ease-in-out infinite 1.6s}
.word{width:min(38vh,62vw,480px);height:auto;display:block;animation:wordIn 1.4s cubic-bezier(.16,1,.3,1) both .9s}
@keyframes markIn{0%{opacity:0;transform:scale(.55) rotate(-8deg);filter:blur(28px) brightness(2.2)}60%{opacity:1;filter:blur(0) brightness(1.3)}100%{opacity:1;transform:none;filter:none}}
@keyframes wordIn{from{opacity:0;transform:translateY(24px);filter:blur(10px);letter-spacing:.4em}to{opacity:1;transform:none;filter:none}}
@keyframes sweep{0%{background-position:150% 0}45%,100%{background-position:-60% 0}}
@keyframes pulse{50%{filter:drop-shadow(0 0 42px rgba(47,123,255,.5)) drop-shadow(0 0 90px rgba(255,59,78,.25))}}

.soon{font-weight:900;font-size:clamp(34px,min(8.5vw,8vh),128px);letter-spacing:.08em;line-height:1;margin-top:clamp(6px,1.5vh,20px);animation:soonIn 1.2s cubic-bezier(.16,1,.3,1) both 1.3s}
.soon span{position:relative;display:inline-block;background:linear-gradient(90deg,#2ecc5b,#2f7bff,#9b4dff,#ff4fb3,#ff3b4e,#ffc21a,#2ecc5b);background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:hue 8s linear infinite;filter:drop-shadow(0 4px 24px rgba(155,77,255,.35))}
.soon span::after{content:attr(data-text);position:absolute;inset:0;background:linear-gradient(110deg,transparent 40%,rgba(255,255,255,.95) 50%,transparent 60%);background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:textShine 4.5s ease-in-out infinite 2.4s;background-position:150% 0}
@keyframes hue{to{background-position:300% 0}}
@keyframes textShine{0%{background-position:150% 0}40%,100%{background-position:-50% 0}}
@keyframes soonIn{from{opacity:0;transform:translateY(30px) scale(.94);filter:blur(12px)}to{opacity:1;transform:none;filter:none}}
.tag{font-size:clamp(15px,min(2.1vw,2.3vh),26px);color:#c9cff5;letter-spacing:.02em;max-width:42ch;animation:fadeUp 1s ease both 1.7s}
.cta{position:relative;display:inline-flex;margin-top:clamp(6px,1.6vh,18px);border-radius:999px;padding:2px;text-decoration:none;color:#fff;
 background:linear-gradient(90deg,#2ecc5b,#2f7bff,#9b4dff,#ff4fb3,#ff3b4e,#ffc21a,#2ecc5b);background-size:300% 100%;animation:hue 6s linear infinite,fadeUp 1s ease both 2s;box-shadow:0 10px 40px -10px rgba(255,79,179,.6),0 0 30px -8px rgba(47,123,255,.6);transition:transform .2s ease,box-shadow .2s ease}
.cta-in{display:inline-flex;align-items:center;gap:10px;padding:clamp(13px,1.8vh,20px) clamp(26px,3vw,44px);border-radius:999px;background:rgba(6,9,30,.82);font-weight:800;font-size:clamp(16px,min(1.6vw,2.2vh),22px);letter-spacing:.04em;transition:background .2s}
.cta:hover,.cta:focus-visible{transform:translateY(-2px) scale(1.03);box-shadow:0 16px 50px -10px rgba(255,79,179,.8),0 0 50px -6px rgba(47,123,255,.8)}
.cta:hover .cta-in,.cta:focus-visible .cta-in{background:rgba(6,9,30,.45)}
.cta:hover svg{transform:translateX(3px)}.cta svg{transition:transform .2s}
.cta:focus-visible{outline:3px solid #fff;outline-offset:4px}
@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.foot{position:fixed;left:0;right:0;bottom:max(14px,env(safe-area-inset-bottom));z-index:2;text-align:center;font-size:13px;color:rgba(201,207,245,.55);letter-spacing:.06em;animation:fadeUp 1s ease both 2.3s}

@media (max-height:560px) and (orientation:landscape){.mark-wrap{width:min(34vh,40vw)}.word{width:min(30vh,40vw)}}
@media (min-width:2200px){.mark-wrap{width:min(42vh,760px)}.word{width:min(38vh,640px)}}

@media (prefers-reduced-motion:reduce){
 *,*::before,*::after{animation:none!important;transition:none!important}
 .disc{opacity:var(--o,1)}
 .shine{display:none}
}
