@keyframes fadeUp {
  from { opacity: 0; transform: translateY(60px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes slideInLeft {
  from { opacity: 0; transform: translateX(-80px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes slideInRight {
  from { opacity: 0; transform: translateX(80px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.85); }
  to   { opacity: 1; transform: scale(1); }
}
@keyframes glowPulse {
  0%,100% { box-shadow: var(--glow-purple); }
  50%      { box-shadow: 0 0 80px rgba(139,47,201,0.9), 0 0 120px rgba(139,47,201,0.4); }
}
@keyframes floatY {
  0%,100% { transform: translateY(0); }
  50%      { transform: translateY(-22px); }
}
@keyframes rotateSlow {
  to { transform: rotate(360deg); }
}
@keyframes rotateSlowReverse {
  to { transform: rotate(-360deg); }
}
@keyframes morphBlob {
  0%,100% { border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; }
  25%      { border-radius: 30% 60% 70% 40% / 50% 60% 30% 60%; }
  50%      { border-radius: 50% 60% 30% 60% / 30% 70% 40% 60%; }
  75%      { border-radius: 40% 60% 50% 40% / 60% 30% 60% 40%; }
}
@keyframes marqueeScroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
@keyframes shimmerSlide {
  0%   { background-position: -200% center; }
  100% { background-position:  200% center; }
}
@keyframes cursorRipple {
  from { transform: translate(-50%,-50%) scale(0); opacity: 0.7; }
  to   { transform: translate(-50%,-50%) scale(3); opacity: 0; }
}
@keyframes preloaderWipe {
  from { clip-path: inset(0 0 0% 0); }
  to   { clip-path: inset(0 0 100% 0); }
}
@keyframes logoReveal {
  0%   { opacity: 0; transform: scale(0.8) translateY(20px); }
  100% { opacity: 1; transform: scale(1) translateY(0); }
}
@keyframes scrollLine {
  0%   { transform: scaleY(0); transform-origin: top; }
  50%  { transform: scaleY(1); transform-origin: top; }
  51%  { transform: scaleY(1); transform-origin: bottom; }
  100% { transform: scaleY(0); transform-origin: bottom; }
}
@keyframes drawStroke {
  to { stroke-dashoffset: 0; }
}
@keyframes ringRotate1 {
  to { transform: rotate(360deg); }
}
@keyframes ringRotate2 {
  to { transform: rotate(-360deg); }
}
@keyframes dotBlink {
  0%,100% { opacity:1; }
  50%      { opacity:0.2; }
}
