@keyframes introIn {
  from { opacity: 0; transform: translateY(28px) scale(.96); filter: blur(12px); }
  to { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }
}

@keyframes pulseGlow {
  0%, 100% { transform: scale(1); filter: drop-shadow(0 0 18px rgba(255, 79, 216, .75)); }
  50% { transform: scale(1.08); filter: drop-shadow(0 0 36px rgba(124, 247, 255, .9)); }
}

@keyframes floatNebula {
  0% { transform: translate3d(-10%, 5%, 0) rotate(0deg) scale(1); }
  50% { transform: translate3d(8%, -4%, 0) rotate(9deg) scale(1.08); }
  100% { transform: translate3d(-10%, 5%, 0) rotate(0deg) scale(1); }
}

@keyframes flyToCamera {
  from {
    opacity: 0;
    transform: translate3d(var(--x), var(--y), -1200px) rotateZ(var(--r)) scale(.08);
    filter: blur(10px);
  }
  10% { opacity: 1; }
  72% { opacity: 1; filter: blur(0); }
  to {
    opacity: 0;
    transform: translate3d(calc(var(--x) * 1.8), calc(var(--y) * 1.6), 420px) rotateZ(calc(var(--r) + 18deg)) scale(var(--s));
    filter: blur(3px);
  }
}

@keyframes shooting {
  from { opacity: 0; transform: translate3d(0, 0, 0) rotate(var(--angle)); }
  8% { opacity: 1; }
  100% { opacity: 0; transform: translate3d(var(--tx), var(--ty), 0) rotate(var(--angle)); }
}

@keyframes shimmer {
  0% { background-position: -200% center; }
  100% { background-position: 200% center; }
}

@keyframes letterReveal {
  from { opacity: 0; transform: translateY(26px); }
  to { opacity: 1; transform: translateY(0); }
}

