:root {
  --animation-duration: 1050ms;
  --animation-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

.animate-on-scroll {
  opacity: 0;
  transform: translate3d(0, 30px, 0);
  transition-property: opacity, transform;
  transition-duration: var(--animation-duration);
  transition-timing-function: var(--animation-ease);
  will-change: opacity, transform;
}

.animate-on-scroll[data-animate="fade-up"] {
  transform: translate3d(0, 60px, 0);
}

.animate-on-scroll[data-animate="fade-down"] {
  transform: translate3d(0, -60px, 0);
}

.animate-on-scroll[data-animate="fade-left"] {
  transform: translate3d(60px, 0, 0);
}

.animate-on-scroll[data-animate="fade-right"] {
  transform: translate3d(-60px, 0, 0);
}

.animate-on-scroll[data-animate="zoom-in"] {
  transform: scale(0.92);
}

.animate-on-scroll[data-animate-delay] {
  transition-delay: var(--animation-delay, 0ms);
}

.animate-on-scroll.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
}

@media (prefers-reduced-motion: reduce) {
  .animate-on-scroll,
  .animate-on-scroll::before,
  .animate-on-scroll::after {
    transition: none !important;
    transform: none !important;
  }
}
