/* ══ Tokens ══ */
:root {
  --bg:      #020207;
  --glass:   rgba(255,255,255,0.07);
  --glass2:  rgba(255,255,255,0.11);
  --spec:    rgba(255,255,255,0.22);
  --bord:    rgba(255,255,255,0.08);
  --acc:     #0a84ff;
  --txt:     #f0f0f8;
  --txt2:    rgba(240,240,248,0.5);
  --txt3:    rgba(240,240,248,0.27);
  --r:       20px;
  --rsm:     13px;
  --gblur:   blur(48px) saturate(160%);
  --spring:  cubic-bezier(0.34,1.56,0.64,1);
  --ease:    cubic-bezier(0.22,1,0.36,1);
  --t:       0.2s cubic-bezier(0.4,0,0.2,1);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{
  height:100%;
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",system-ui,sans-serif;
  background:var(--bg);color:var(--txt);-webkit-font-smoothing:antialiased;overflow-x:hidden;
}

/* ══ Noise Texture ══ */
body::after{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:1;opacity:.022;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:200px 200px;
}

/* ══ Orbs ══ */
.orb{position:fixed;border-radius:50%;filter:blur(100px);pointer-events:none;z-index:0}
@keyframes f1{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(40px,50px) scale(1.08)}}
@keyframes f2{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-50px,-40px) scale(1.1)}}
@keyframes f3{0%,100%{transform:translate(0,0)}50%{transform:translate(25px,-30px)}}
@keyframes up{from{opacity:0;transform:translateY(28px) scale(.96)}to{opacity:1;transform:none}}

#app{position:relative;z-index:2;min-height:100vh}

/* ══ Glass ══ */
.glass{
  background:var(--glass);
  border:1px solid var(--bord);
  border-top-color:var(--spec);
  border-radius:var(--r);
  backdrop-filter:var(--gblur);-webkit-backdrop-filter:var(--gblur);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),inset 0 -1px 0 rgba(0,0,0,.1),0 8px 32px rgba(0,0,0,.32);
}
