:root{--bg:#04040a;--fg:#ecebff;--dim:#8d8ba8;--a:#7c5cff;--b:#00e1ff;--c:#ff4fd8;--line:rgba(255,255,255,.08)}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;background:var(--bg)}
body{color:var(--fg);font:400 17px/1.6 ui-sans-serif,system-ui,-apple-system,"Segoe UI",Inter,Roboto,sans-serif;overflow-x:hidden;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}

/* ---------- background stage ---------- */
.stage{position:fixed;inset:0;z-index:-1;overflow:hidden;background:radial-gradient(120% 80% at 50% 40%,#0d0b24 0%,var(--bg) 60%)}
#gl{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity 1.6s ease}
.gl #gl{opacity:1}
.grain{position:absolute;inset:0;opacity:.07;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* CSS-only orb: the no-JS / no-WebGL fallback */
.orb{position:absolute;left:68%;top:46%;width:min(48vmin,460px);aspect-ratio:1;translate:-50% -50%;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#fff 0,#c9bcff 6%,transparent 30%),
    radial-gradient(circle at 50% 50%,transparent 0 18%,rgba(4,4,10,.55) 19% 20%,transparent 21%),conic-gradient(from 0deg at 50% 50%,var(--a),var(--b),var(--c),var(--a));
  filter:blur(.5px) saturate(1.2);box-shadow:0 0 120px 20px rgba(124,92,255,.35),inset -40px -60px 120px rgba(0,0,0,.75);
  animation:spin 18s linear infinite,breathe 6s ease-in-out infinite;transition:opacity 1.2s}
.orb i{position:absolute;inset:-8%;border-radius:50%;border:1px solid rgba(255,255,255,.12);animation:spin 30s linear infinite reverse}
.orb i:nth-child(2){inset:-20%;border-color:rgba(0,225,255,.10);animation-duration:45s;transform:rotateX(70deg)}
.orb i:nth-child(3){inset:-34%;border-color:rgba(255,79,216,.08);animation-duration:60s}
.gl .orb{opacity:0}
@keyframes spin{to{rotate:360deg}}
@keyframes breathe{50%{scale:1.04;filter:blur(1px) saturate(1.5) hue-rotate(25deg)}}

/* ---------- nav ---------- */
.nav{position:fixed;inset:0 0 auto;display:flex;justify-content:space-between;align-items:center;padding:22px clamp(16px,4vw,48px);z-index:9;background:linear-gradient(rgba(4,4,10,.85),transparent)}
.brand{font-weight:700;letter-spacing:.32em;font-size:14px}
.brand sup{color:var(--b);letter-spacing:0;margin-left:2px}
.nav nav{display:flex;gap:clamp(14px,3vw,34px);font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.nav nav a:hover{color:var(--fg)}

/* ---------- hero ---------- */
main{max-width:1180px;margin:auto;padding:0 clamp(16px,4vw,48px)}
.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;padding:0 0 12vh}
.kicker{font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--b);display:flex;align-items:center;gap:10px}
.kicker::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--b);box-shadow:0 0 12px var(--b);animation:pulse 2s infinite}
@keyframes pulse{50%{opacity:.25}}
h1{font-size:clamp(46px,9vw,124px);line-height:.95;letter-spacing:-.045em;font-weight:600;margin:22px 0 26px;text-shadow:0 2px 40px rgba(4,4,10,.6)}
h1 em{font-style:italic;font-weight:300;background:linear-gradient(90deg,var(--b),var(--a),var(--c));-webkit-background-clip:text;background-clip:text;color:transparent;padding-right:.08em}
.lede{max-width:540px;color:var(--dim);font-size:clamp(16px,1.6vw,19px)}
.cta{margin-top:34px;align-self:flex-start;display:inline-flex;gap:14px;align-items:center;padding:16px 28px;border-radius:99px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.04);backdrop-filter:blur(12px);font-size:15px;transition:.35s}
.cta span{transition:.35s}
.cta:hover{background:var(--fg);color:var(--bg);box-shadow:0 0 60px rgba(124,92,255,.6)}
.cta:hover span{translate:4px 0}

/* ---------- grid ---------- */
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:24px;overflow:hidden;margin:10vh 0}
.grid article{padding:44px 34px;background:rgba(6,6,16,.72);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);transition:background .4s}
.grid article:hover{background:rgba(20,16,48,.7)}
.grid b{display:block;font-size:44px;font-weight:300;letter-spacing:-.03em;background:linear-gradient(120deg,#fff,var(--a));-webkit-background-clip:text;background-clip:text;color:transparent}
.grid sup{font-size:.45em}
.grid h2{font-size:12px;letter-spacing:.3em;text-transform:uppercase;margin:22px 0 10px;color:var(--b);font-weight:500}
.grid p{color:var(--dim);font-size:15px}

/* ---------- ask ---------- */
.ask{min-height:80vh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}
.ask h2{font-size:clamp(32px,5.5vw,68px);line-height:1.05;letter-spacing:-.035em;font-weight:500}
.ask form{margin-top:44px;width:min(620px,100%);display:flex;padding:6px;border-radius:99px;border:1px solid rgba(255,255,255,.14);background:rgba(8,8,20,.6);backdrop-filter:blur(16px);transition:.4s}
.ask form:focus-within{border-color:var(--a);box-shadow:0 0 0 6px rgba(124,92,255,.15),0 0 80px rgba(124,92,255,.35)}
.ask input{flex:1;min-width:0;background:none;border:0;outline:0;color:var(--fg);font:inherit;padding:12px 22px}
.ask input::placeholder{color:var(--dim)}
.ask button{width:50px;height:50px;border-radius:50%;border:0;background:var(--fg);color:var(--bg);font-size:20px;cursor:pointer;transition:.3s}
.ask button:hover{background:var(--b)}
.whisper{margin-top:22px;color:var(--dim);font-size:14px;letter-spacing:.06em;min-height:1.6em;transition:opacity .5s}

footer{text-align:center;padding:40px 16px 50px;color:var(--dim);font-size:12px;letter-spacing:.2em;text-transform:uppercase;border-top:1px solid var(--line)}
footer span{color:var(--fg)}

/* entrance */
.hero>*{animation:rise 1.2s cubic-bezier(.2,.8,.2,1) both}
.hero>:nth-child(2){animation-delay:.12s}.hero>:nth-child(3){animation-delay:.24s}.hero>:nth-child(4){animation-delay:.36s}
@keyframes rise{from{opacity:0;translate:0 30px;filter:blur(8px)}}

@media (prefers-reduced-motion:reduce){*,*::before{animation:none!important;transition:none!important}}
@media (max-aspect-ratio:6/5){.orb{left:50%;top:26%;width:62vmin}.hero{padding-bottom:8vh}}
@media (max-width:560px){.nav nav a:not(:last-child){display:none}}
