/* Courier sprint across the route line */
@keyframes riderSprint {
  0% {
    left: -5%;
    transform: translateY(-85%) scale(0.95);
  }
  50% {
    transform: translateY(-90%) scale(1);
  }
  100% {
    left: 92%;
    transform: translateY(-85%) scale(0.95);
  }
}

/* Route gradient reveal following rider */
@keyframes lineFollow {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(10%);
  }
}

/* Wheel rotation effect */
@keyframes spinWheels {
  100% {
    transform: rotate(360deg);
  }
}

.rider-unit {
  animation: riderSprint 1.8s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
}

.rider-line-anim {
  animation: lineFollow 1.8s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
}

.animate-spin-slow {
  transform-origin: center;
  animation: spinWheels 0.8s linear infinite;
}

@keyframes marqueeScroll {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-50%);
  }
}

.marquee-track {
  display: flex;
  width: max-content;
  animation: marqueeScroll 22s linear infinite;
  will-change: transform;
}

/* Pause when cursor hovers over the ticker */
.marquee-track:hover {
  animation-play-state: paused;
}