@keyframes floatY {
  0%,
  100% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-10px);
  }
}

@keyframes driftX {
  0% {
    transform: translateX(0);
  }

  50% {
    transform: translateX(-18px);
  }

  100% {
    transform: translateX(0);
  }
}

@keyframes marquee {
  0% {
    transform: translateX(0);
  }

  100% {
    transform: translateX(-50%);
  }
}

@keyframes pulseGlow {
  0%,
  100% {
    box-shadow: 0 18px 34px rgba(0, 167, 160, 0.18);
  }

  50% {
    box-shadow: 0 22px 42px rgba(123, 77, 255, 0.24);
  }
}

@keyframes shimmer {
  0% {
    background-position: -160% 0;
  }

  100% {
    background-position: 160% 0;
  }
}

@keyframes rotateSlow {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

.animate-float {
  animation: floatY 7s ease-in-out infinite;
}

.animate-drift {
  animation: driftX 9s ease-in-out infinite;
}

.animate-pulse-glow {
  animation: pulseGlow 4.8s ease-in-out infinite;
}

.ticker-track {
  animation: marquee 26s linear infinite;
}

.ticker:hover .ticker-track {
  animation-play-state: paused;
}

.is-shimmer {
  background-image: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.44) 50%, rgba(255, 255, 255, 0) 100%);
  background-size: 200% 100%;
  animation: shimmer 6s linear infinite;
}

.rotate-slow {
  animation: rotateSlow 24s linear infinite;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
