*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html, body { width: 100%; height: 100%; overflow: hidden; background: #020508; }

@keyframes blobFloat {
  0% { transform: translate(0, 0) scale(1); }
  100% { transform: translate(30px, -20px) scale(1.1); }
}
@keyframes pulseGlow {
  0%, 100% { text-shadow: 0 0 25px rgba(120,200,255,0.35), 0 0 50px rgba(120,200,255,0.12); }
  50% { text-shadow: 0 0 35px rgba(120,200,255,0.55), 0 0 70px rgba(120,200,255,0.2); }
}
@keyframes pulseGlowFilter {
  0%, 100% { filter: drop-shadow(0 0 18px rgba(120,200,255,0.35)) drop-shadow(0 0 40px rgba(120,200,255,0.12)); }
  50% { filter: drop-shadow(0 0 28px rgba(120,200,255,0.55)) drop-shadow(0 0 55px rgba(120,200,255,0.22)); }
}
@keyframes scanline {
  0% { transform: translateY(-100%); }
  100% { transform: translateY(100vh); }
}
@keyframes borderPulse {
  0%, 100% { border-color: rgba(120,200,255,0.1); }
  50% { border-color: rgba(120,200,255,0.25); }
}
@keyframes dotPulse {
  0%, 100% { opacity: 0.25; }
  50% { opacity: 0.9; }
}
@keyframes subtitleReveal {
  from { opacity: 0; transform: translateY(6px); letter-spacing: 5px; }
  to { opacity: 1; transform: translateY(0); letter-spacing: 1.5px; }
}
@keyframes subtitleFade {
  from { opacity: 1; }
  to { opacity: 0; transform: translateY(-8px); }
}
@keyframes splitExitTop {
  0% { clip-path: inset(0 0 50% 0); transform: translateY(0); opacity: 1; }
  100% { clip-path: inset(0 0 50% 0); transform: translateY(-60px) rotate(-2deg); opacity: 0; }
}
@keyframes splitExitBottom {
  0% { clip-path: inset(50% 0 0 0); transform: translateY(0); opacity: 1; }
  100% { clip-path: inset(50% 0 0 0); transform: translateY(60px) rotate(2deg); opacity: 0; }
}