/* self-hosted fonts (SIL OFL 1.1, see fonts/) — no third-party requests */
@font-face{font-family:"Onest";font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/onest-latin-wght-normal.woff2") format("woff2-variations"),url("fonts/onest-latin-wght-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Onest";font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/onest-cyrillic-wght-normal.woff2") format("woff2-variations"),url("fonts/onest-cyrillic-wght-normal.woff2") format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Geist Mono";font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/geist-mono-latin-wght-normal.woff2") format("woff2-variations"),url("fonts/geist-mono-latin-wght-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* ───────── tokens (single dark look, by design) ───────── */
:root{
  --ink:#09090b;          /* ground: near-black with a violet bias */
  --ink-2:#13121a;        /* raised surfaces */
  --pearl:#f8edff;        /* primary text + particles */
  --pearl-2:rgba(248,237,255,.72);
  --pearl-3:rgba(248,237,255,.46);
  --lilac:#b9a4ff;        /* the one accent */
  --beam:217,212,230;     /* stage-light tint (rgb triplet) */
  --line:rgba(248,237,255,.13);
  --line-2:rgba(248,237,255,.26);
  --up:#8be3b9;           /* semantic: positive */
  --f-sans:"Onest","Helvetica Neue",Arial,system-ui,sans-serif;
  --f-mono:"Geist Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --g:clamp(16px,2.1vw,30px);
  --top:clamp(64px,8vh,84px);
  --fs-xl:clamp(34px,4.45vw,64px);
  --fs-l:clamp(26px,3.05vw,44px);
  --fs-m:clamp(15px,1.4vw,20px);
  --fs-s:clamp(14px,1.1vw,16px);
  --ease:cubic-bezier(.2,.7,.2,1);
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html{background:var(--ink);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ink);color:var(--pearl);font:300 16px/1.4 var(--f-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}
a{color:inherit}
button{font:inherit;color:inherit}
.sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
:focus-visible{outline:1px solid var(--lilac);outline-offset:5px}

/* ───────── preloader ───────── */
.loader{position:fixed;inset:0;z-index:60;display:grid;place-content:center;justify-items:center;gap:22px;background:#000;animation:loaderOut .6s ease 2.8s forwards}
.loader.is-done{opacity:0;visibility:hidden;transition:opacity .8s ease,visibility 0s linear .8s}
.loader-word{font-size:15px;font-weight:400;letter-spacing:.62em;margin-right:-.62em;text-transform:uppercase}
.loader-bar{position:relative;width:min(240px,56vw);height:1px;background:rgba(248,237,255,.16);overflow:hidden}
.loader-bar i{position:absolute;inset:0;background:var(--pearl);transform-origin:0 50%;transform:scaleX(var(--p,0))}
.loader-num{font:400 12px/1 var(--f-mono);letter-spacing:.32em;margin-right:-.32em;color:var(--pearl-2);font-variant-numeric:tabular-nums}
@keyframes loaderOut{to{opacity:0;visibility:hidden}}

/* ───────── scroll track + pinned stage ───────── */
.track{position:relative;height:700vh;height:700svh}
.stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;isolation:isolate;background:var(--ink)}
.atmos,.vignette,#particles{position:absolute;inset:0;pointer-events:none}
.atmos{z-index:0;overflow:hidden}
#particles{z-index:1;width:100%;height:100%;display:block}
.vignette{z-index:2;background:radial-gradient(130% 95% at 50% 45%,transparent 52%,rgba(0,0,0,.78))}
.spot{position:absolute;left:var(--gx,50%);top:var(--gy,45%);width:95vmin;height:95vmin;transform:translate(-50%,-50%);background:radial-gradient(closest-side,rgba(185,164,255,.08),rgba(185,164,255,.03) 45%,transparent);transition:left 1.4s var(--ease),top 1.4s var(--ease)}
.beam{position:absolute;top:-35%;height:170%;transform-origin:50% 0;background:linear-gradient(180deg,rgba(var(--beam),.34),rgba(var(--beam),.08) 50%,transparent 78%);filter:blur(30px);mix-blend-mode:screen;transition:transform 2s var(--ease),opacity 2s var(--ease)}
.b1{left:62%;width:26vmax;opacity:.55;transform:rotate(12deg)}
.b2{left:14%;width:12vmax;opacity:.38;transform:rotate(-24deg)}
.b3{left:84%;width:8vmax;opacity:.26;transform:rotate(14deg)}
.stage[data-scene="1"] .b1{transform:rotate(18deg) translateX(-8vw);opacity:.5}
.stage[data-scene="1"] .b2{transform:rotate(-34deg);opacity:.24}
.stage[data-scene="2"] .b1{transform:rotate(-26deg) translateX(-30vw);opacity:.55}
.stage[data-scene="2"] .b3{transform:rotate(26deg) translateX(-6vw);opacity:.4}
.stage[data-scene="3"] .b1{transform:rotate(40deg) translateX(6vw);opacity:.3}
.stage[data-scene="3"] .b2{opacity:.18}
.stage[data-scene="4"] .b1{transform:rotate(8deg) translateX(-14vw);opacity:.58}
.stage[data-scene="4"] .b2{transform:rotate(-12deg) translateX(10vw);opacity:.42}
.stage[data-scene="5"] .b1{transform:rotate(44deg) translateX(10vw);opacity:.12}
.stage[data-scene="5"] .b2{transform:translateX(calc(36vw - 6vmax)) rotate(0deg);opacity:.5}
.stage[data-scene="5"] .b3{opacity:0}

html:not(.js) .scene:not(.s0){display:none}
html:not(.js) .track{height:100vh;height:100svh}

/* ───────── header ───────── */
.hdr{position:absolute;inset:0 0 auto;z-index:10;display:flex;align-items:center;justify-content:space-between;height:56px;padding-inline:var(--g)}
.wordmark{font-size:12px;font-weight:400;letter-spacing:.42em;text-transform:uppercase;text-decoration:none}
.launch{display:inline-flex;align-items:center;gap:.35em;font-size:16px;font-weight:400;line-height:1;text-decoration:none}
.arr{display:inline-block;transition:transform .35s var(--ease)}
a:hover .arr,button:hover .arr,a:focus-visible .arr,button:focus-visible .arr{transform:translate(2px,-2px)}
/* "Launch app" answers with a decoded COMING SOON */
.teaser .lbl{display:inline-block;white-space:nowrap;transition:letter-spacing .6s var(--ease)}
.teaser.is-soon .lbl{letter-spacing:.12em}
.act.teaser.is-soon .lbl{letter-spacing:.2em}
.teaser .arr{transition:transform .35s var(--ease),opacity .3s}
.teaser.is-soon .arr{opacity:0;transform:scale(.6)}

/* ───────── scenes ───────── */
.scene{position:absolute;inset:0;z-index:5;padding:var(--top) var(--g) var(--g);pointer-events:none}
.scene.is-active .hot{pointer-events:auto}
.xl{margin:0;font-size:var(--fs-xl);font-weight:200;line-height:1.08;letter-spacing:-.01em;text-transform:uppercase;text-wrap:balance}
.l{margin:0;font-size:var(--fs-l);font-weight:200;line-height:1.1;text-transform:uppercase}
.cap{margin:0;font-size:var(--fs-s);font-weight:400;line-height:1.22;text-transform:uppercase;max-width:34em;text-wrap:balance}
.lead{margin:0;font-size:var(--fs-m);font-weight:300;line-height:1.4;max-width:26em;color:var(--pearl-2);text-wrap:pretty}

/* split-letter reveal */
.w{display:inline-block;white-space:nowrap}
.ch{display:inline-block;opacity:0;transform:translateY(.38em);filter:blur(8px);transition:opacity .7s var(--ease),transform .9s var(--ease),filter .8s var(--ease);transition-delay:calc(var(--d,0)*1ms)}
.is-active .ch{opacity:1;transform:none;filter:blur(0)}
.scene:not(.is-active) .ch{transition-duration:.3s;transition-delay:0s}
.rise{opacity:0;transform:translateY(16px);transition:opacity .8s var(--ease),transform 1s var(--ease);transition-delay:calc(var(--d,0)*1ms)}
.is-active .rise{opacity:1;transform:none}
.scene:not(.is-active) .rise{transition-duration:.3s;transition-delay:0s}

/* scene 0 — hero */
.s0 .acts{position:absolute;left:0;right:0;top:57%;display:flex;justify-content:space-between;padding-inline:clamp(40px,12vw,190px)}
.act{position:relative;display:inline-flex;align-items:center;gap:14px;padding:0 2px 10px;border:0;background:none;color:rgba(248,237,255,.9);font:400 11px/1.5 var(--f-sans);letter-spacing:.13em;text-transform:uppercase;text-decoration:none;cursor:pointer;opacity:.72;transition:opacity .3s}
.act::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--line-2);transition:background .3s}
.act::before{content:"";position:absolute;left:50%;bottom:100%;width:190px;height:150px;transform:translateX(-50%)}
.act:hover,.act:focus-visible{opacity:1}
.act:hover::after,.act:focus-visible::after{background:var(--pearl)}
.s0 .foot{position:absolute;left:var(--g);right:var(--g);bottom:var(--g);display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:24px;padding-top:18px;border-top:1px solid var(--line)}
.cue{display:grid;justify-items:center;gap:10px;margin-right:-.2em;padding:0;border:0;background:none;color:rgba(248,237,255,.8);font:300 13px/1 var(--f-sans);letter-spacing:.2em;text-transform:uppercase;cursor:pointer}
.cue i{display:block;width:1px;height:26px;background:linear-gradient(var(--pearl),transparent);transform-origin:top;animation:cue 2.2s var(--ease) infinite}
@keyframes cue{0%{transform:scaleY(0);opacity:1}60%{transform:scaleY(1);opacity:1}100%{transform:scaleY(1);opacity:0}}
.status{justify-self:end;display:inline-flex;align-items:center;gap:9px;margin:0;font:400 11px/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--pearl-2);text-align:right}
.dot{flex:none;width:6px;height:6px;border-radius:50%;background:var(--up);animation:pulse 2.4s ease-out infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(139,227,185,.55)}80%,100%{box-shadow:0 0 0 7px rgba(139,227,185,0)}}

/* scene 1 */
.s1 .xl{position:absolute;top:var(--top);left:var(--g)}
.s1 .cap{position:absolute;left:var(--g);bottom:var(--g);max-width:30em}

/* scene 2 */
.s2 .xl{position:absolute;top:var(--top);right:var(--g);text-align:right}
.s2 .pair{position:absolute;right:var(--g);bottom:var(--g);display:grid;justify-items:end;gap:.1em;text-align:right}
.spec{position:absolute;left:var(--g);bottom:var(--g);margin:0;display:grid;gap:7px;font:400 11px/1.3 var(--f-mono);letter-spacing:.06em;text-transform:uppercase}
.spec div{display:grid;grid-template-columns:11ch auto;gap:14px}
.spec dt{color:var(--pearl-3)}
.spec dd{margin:0;color:var(--pearl);font-variant-numeric:tabular-nums}

/* scene 3 — cards */
.s3{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(24px,4vw,72px);align-items:center}
.s3 .intro{display:grid;gap:22px;align-content:center}
.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:12px;height:min(780px,100%);min-height:0}
.cards>.rise{display:flex;min-width:0;min-height:0}
.card{flex:1;position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;background:linear-gradient(180deg,rgba(26,24,34,.72),rgba(12,11,16,.9));border:1px solid var(--line);border-radius:3px;overflow:hidden;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:border-color .35s,transform .6s var(--ease)}
.card:hover{border-color:var(--line-2);transform:translateY(-2px)}
.mini{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:9px;padding:14px 16px;border-bottom:1px solid var(--line);font:400 11px/1.3 var(--f-mono);color:var(--pearl-2);font-variant-numeric:tabular-nums;overflow:hidden;background:radial-gradient(120% 90% at 100% 0%,rgba(185,164,255,.08),transparent 60%)}
.meta{display:grid;gap:8px;padding:14px 16px 16px}
.meta h3{margin:0;font-size:clamp(17px,1.65vw,24px);font-weight:300;line-height:1}
.meta p{margin:0;font-size:12px;font-weight:400;line-height:1.35;letter-spacing:.03em;text-transform:uppercase;color:var(--pearl-2)}
.kv{display:flex;justify-content:space-between;align-items:baseline;gap:10px;min-width:0}
.kv>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kv>span:last-child{color:var(--pearl)}
.kv>span.up{color:var(--up)}
.tokrow{display:flex;align-items:center;gap:10px;min-width:0}
.tok{display:inline-flex;align-items:center;gap:7px;min-width:0;padding:5px 9px 5px 5px;border:1px solid var(--line);border-radius:999px;color:var(--pearl);white-space:nowrap}
.coin{display:grid;place-items:center;flex:none;width:18px;height:18px;border-radius:50%;background:rgba(248,237,255,.12);font:500 9px/1 var(--f-mono);color:var(--pearl)}
.tok.is-w .coin{background:var(--lilac);color:#15121f}
.flow{position:relative;flex:1;min-width:16px;height:1px;background:repeating-linear-gradient(90deg,var(--line-2) 0 4px,transparent 4px 8px)}
.flow::after{content:"";position:absolute;top:-2px;left:0;width:5px;height:5px;border-radius:50%;background:var(--lilac);animation:flow 2.4s var(--ease) infinite}
@keyframes flow{0%{left:0;opacity:0}20%,80%{opacity:1}100%{left:calc(100% - 5px);opacity:0}}
.pill{padding:2px 7px;border:1px solid var(--line-2);border-radius:999px}
.hist{display:flex;align-items:flex-end;gap:2px;height:44px;flex:none}
.hist i{flex:1;min-width:0;height:var(--h);background:rgba(248,237,255,.16);border-radius:1px 1px 0 0}
.hist i.in{background:var(--lilac);opacity:.85}
.srow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:10px;padding:7px 10px;border:1px solid var(--line);border-radius:3px;background:rgba(0,0,0,.25)}
.srow .amt{font-size:14px;color:var(--pearl);text-align:right;overflow:hidden;text-overflow:ellipsis}
.srow .tk{color:var(--pearl)}
.sdiv{position:relative;z-index:1;display:grid;place-items:center;height:0}
.sdiv span{display:grid;place-items:center;width:20px;height:20px;border:1px solid var(--line-2);border-radius:50%;background:var(--ink-2);color:var(--pearl);font-size:11px}
.big{font-size:16px;color:var(--pearl)}
.spark{position:relative;height:46px;flex:none}
.spark svg{display:block;width:100%;height:100%;overflow:visible}
.chain{display:flex;align-items:center;min-width:0}
.node{display:grid;gap:3px;flex:0 1 auto;min-width:0;padding:6px 8px;border:1px solid var(--line-2);border-radius:3px;background:rgba(0,0,0,.25);color:var(--pearl);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.node em{font-style:normal;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--pearl-3)}
.link{position:relative;flex:1 1 14px;min-width:14px;height:1px;background:var(--line-2)}
.link::after{content:"";position:absolute;top:-2px;left:0;width:5px;height:5px;border-radius:50%;background:var(--lilac);animation:flow 2.4s var(--ease) infinite}
.link~.link::after{animation-delay:1.2s}
.kv>span.live{display:inline-flex;align-items:center;gap:8px;overflow:visible;color:var(--pearl)}
.feed{display:grid;gap:5px;margin:0;padding:0;list-style:none}
.feed li{display:grid;grid-template-columns:5ch minmax(0,1fr) auto;align-items:baseline;gap:10px}
.feed li span:first-child{color:var(--pearl-3)}
.feed li span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--pearl)}
.feed li span:last-child{color:var(--lilac)}
.feed li.new{animation:feedIn .7s var(--ease)}
@keyframes feedIn{from{opacity:0;transform:translateY(-6px)}}
.meter{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px}
.meter i{position:relative;height:3px;border-radius:2px;background:rgba(248,237,255,.12);overflow:hidden}
.meter i::after{content:"";position:absolute;inset:0 auto 0 0;width:36%;background:var(--up)}
.spark .end{position:absolute;right:-3px;top:calc(16.7% - 3px);width:6px;height:6px;border-radius:50%;background:var(--lilac);box-shadow:0 0 0 4px rgba(185,164,255,.18)}

/* scene 4 — final */
.s4{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:18px;padding-top:calc(var(--top) + 8px)}
.s4 .xl{text-align:center}
.s4 .mid{display:flex;justify-content:space-between;align-items:center;gap:40px}
.s4 .mid p{margin:0;max-width:24em;font-size:var(--fs-s);font-weight:300;line-height:1.35}
.s4 .mid p:last-child{max-width:18em;text-align:right}
.s4 .end{display:grid;gap:14px}
.cta{display:flex;align-items:center;justify-content:center;gap:.4em;width:100%;padding:16px;border:1px solid var(--line-2);background:rgba(248,237,255,.06);color:var(--pearl);font:400 15px/1 var(--f-sans);letter-spacing:.02em;text-decoration:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background .35s,color .35s,border-color .35s}
.cta:hover,.cta:focus-visible{background:var(--pearl);color:var(--ink);border-color:var(--pearl)}
.cta{position:relative;overflow:hidden}
.cta.is-soon,.cta.is-soon:hover{background:rgba(248,237,255,.06);color:var(--pearl);border-color:rgba(185,164,255,.6)}
.cta.is-soon::before{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(185,164,255,.24) 50%,transparent 70%);transform:translateX(-100%);animation:sweep 1.6s var(--ease) forwards}
@keyframes sweep{to{transform:translateX(100%)}}

/* scene 5 — coming soon */
.s5 .eyebrow{position:absolute;left:0;right:0;top:calc(var(--soon-top,40%) - 58px);display:flex;align-items:center;justify-content:center;gap:16px;margin:0;font:400 11px/1 var(--f-mono);letter-spacing:.42em;text-transform:uppercase;color:var(--pearl-3)}
.s5 .eyebrow::before,.s5 .eyebrow::after{content:"";width:36px;height:1px;background:var(--line-2)}
.s5-foot{position:absolute;left:var(--g);right:var(--g);bottom:var(--g);display:flex;justify-content:center;align-items:center;padding-top:16px;border-top:1px solid var(--line);font:400 11px/1.4 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--pearl-3)}
.s5-foot a{text-decoration:none;transition:color .25s}
.s5-foot a:hover,.s5-foot a:focus-visible{color:var(--pearl)}
.s5-foot .notify{color:var(--pearl-2)}

/* shown only on copies served from a domain that isn't in OFFICIAL_HOSTS */
.clone-warning{position:fixed;inset:0 0 auto;z-index:90;padding:10px var(--g);background:#2a0f12;border-bottom:1px solid #ff8a8a;color:#ffd9d9;font:500 12px/1.4 var(--f-mono);letter-spacing:.03em;text-align:center}

/* toast */
.toast{position:fixed;left:50%;bottom:24px;z-index:70;max-width:calc(100vw - 32px);padding:10px 14px;border:1px solid var(--line-2);background:rgba(19,18,26,.94);font:400 12px/1.3 var(--f-mono);letter-spacing:.04em;color:var(--pearl);opacity:0;transform:translate(-50%,12px);pointer-events:none;transition:opacity .3s,transform .4s var(--ease)}
.toast.is-on{opacity:1;transform:translate(-50%,0)}

/* ───────── responsive ───────── */
@media (max-width:759px){
  .hdr{height:52px}
  .s0{display:flex;flex-direction:column;justify-content:flex-end;gap:22px}
  .s0 .acts,.s0 .foot{position:static}
  .s0 .acts{padding-inline:2px}
  .s0 .foot{grid-template-columns:1fr;gap:12px}
  .cue{display:none}
  .status{justify-self:start;text-align:left}
  .spec{display:none}
  .s3{display:flex;flex-direction:column;align-items:stretch;gap:16px}
  .s3 .intro{gap:10px}
  .cards{flex:1;height:auto;gap:8px}
  .meta{padding:10px 12px 12px}
  .meta p,.mini .opt{display:none}
  .mini{padding:10px 12px;font-size:10px;gap:7px}
  .big{font-size:13px}
  .srow{padding:5px 8px;gap:6px}
  .srow .amt{font-size:12px}
  .sdiv{display:none}
  .feed li:nth-child(n+3),.feed li span:last-child{display:none}
  .feed li{grid-template-columns:5ch minmax(0,1fr)}
  .node{padding:4px 6px}
  .node em{font-size:8px}
  .tok{padding:4px 7px 4px 4px;gap:5px}
  .s4 .mid{flex-direction:column;justify-content:flex-end;align-items:stretch;gap:12px}
  .s4 .mid p,.s4 .mid p:last-child{max-width:none;text-align:center}
}
@media (max-width:420px){ .coin{display:none} .tok{padding:4px 8px} }
@media (max-width:759px) and (max-height:700px){ .s3 .lead{display:none} }
@media (max-height:720px) and (min-width:760px){ .meta p{display:none} }
@media (max-height:640px) and (min-width:760px){
  :root{--fs-xl:clamp(30px,3.6vw,52px)}
  .meta p{display:none}
}
@media (max-height:500px) and (min-width:760px){
  :root{--fs-xl:clamp(26px,3vw,40px);--top:58px}
  .s3 .lead,.mini{display:none}
  .cards{gap:8px}
  .meta{padding:10px 12px}
}
@media (prefers-reduced-motion:reduce){
  .ch,.rise{transition:opacity .2s linear!important;transform:none!important;filter:none!important}
  .beam,.spot,.card{transition:none}
  .cue i,.dot,.flow::after,.link::after,.feed li.new,.cta.is-soon::before{animation:none}
}
