@keyframes auroraDrift { from { transform: translate3d(0,0,0) scale(1); } to { transform: translate3d(8%, -6%, 0) scale(1.16); } }
@keyframes mobileGlow { from { transform: translateY(0) scale(1); opacity: 0.12; } to { transform: translateY(-16px) scale(1.08); opacity: 0.18; } }
@keyframes mobileCodeDrop {
  0% { transform: translateY(-80px); opacity: 0; color: rgba(0, 229, 255, 0.12); text-shadow: 0 0 4px rgba(0,229,255,0.06); }
  5% { opacity: 0.18; color: rgba(0, 229, 255, 0.24); text-shadow: 0 0 6px rgba(0,229,255,0.12); }
  15% { opacity: 0.36; color: rgba(0, 229, 255, 0.39); text-shadow: 0 0 10px rgba(0,229,255,0.21); }
  50% { opacity: 0.6; color: rgba(0, 229, 255, 0.48); text-shadow: 0 0 14px rgba(0,229,255,0.3); }
  85% { opacity: 0.36; color: rgba(0, 229, 255, 0.39); text-shadow: 0 0 10px rgba(0,229,255,0.21); }
  95% { opacity: 0.12; color: rgba(0, 229, 255, 0.18); text-shadow: 0 0 6px rgba(0,229,255,0.09); }
  100% { transform: translateY(calc(100vh + 80px)); opacity: 0; color: rgba(0, 229, 255, 0.06); text-shadow: 0 0 2px rgba(0,229,255,0.03); }
}
@keyframes mobileCodeDropViolet {
  0% { transform: translateY(-80px); opacity: 0; color: rgba(123, 47, 255, 0.12); text-shadow: 0 0 4px rgba(123,47,255,0.06); }
  5% { opacity: 0.18; color: rgba(123, 47, 255, 0.24); text-shadow: 0 0 6px rgba(123,47,255,0.12); }
  15% { opacity: 0.36; color: rgba(123, 47, 255, 0.39); text-shadow: 0 0 10px rgba(123,47,255,0.21); }
  50% { opacity: 0.6; color: rgba(123, 47, 255, 0.48); text-shadow: 0 0 14px rgba(123,47,255,0.3); }
  85% { opacity: 0.36; color: rgba(123, 47, 255, 0.39); text-shadow: 0 0 10px rgba(123,47,255,0.21); }
  95% { opacity: 0.12; color: rgba(123, 47, 255, 0.18); text-shadow: 0 0 6px rgba(123,47,255,0.09); }
  100% { transform: translateY(calc(100vh + 80px)); opacity: 0; color: rgba(123, 47, 255, 0.06); text-shadow: 0 0 2px rgba(123,47,255,0.03); }
}
@keyframes slideUp { from { transform: translateY(110%); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
@keyframes fadeInUp { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: translateY(0); } }
@keyframes scrollSlide { 0% { left: -100%; } 50% { left: 100%; } 100% { left: 100%; } }
@keyframes floatCard { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
@keyframes floatBadge { 0%, 100% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-12px) rotate(1deg); } }
@keyframes barPulse { 50% { filter: brightness(1.35); transform: translateY(-4px); } }
@keyframes graphPulse { 50% { transform: scale(1.25); filter: brightness(1.25); } }

.reveal { opacity: 0; transform: translateY(16px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; }
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: 0.05s; }
.reveal-delay-2 { transition-delay: 0.1s; }
.reveal-delay-3 { transition-delay: 0.15s; }
.reveal-delay-4 { transition-delay: 0.2s; }
