.fade-in,
.slide-up,
.slide-left,
.slide-right,
.zoom-in {
  opacity: 0;
  transition:
    opacity 0.8s cubic-bezier(0.25, 1, 0.5, 1),
    transform 0.8s cubic-bezier(0.25, 1, 0.5, 1);
  will-change: transform, opacity;
}

.fade-in.animated,
.slide-up.animated,
.slide-left.animated,
.slide-right.animated,
.zoom-in.animated {
  opacity: 1;
}

.slide-up {
  transform: translateY(40px);
}

.slide-up.animated {
  transform: translateY(0);
}

.slide-left {
  transform: translateX(-40px);
}

.slide-left.animated {
  transform: translateX(0);
}

.slide-right {
  transform: translateX(40px);
}

.slide-right.animated {
  transform: translateX(0);
}

.zoom-in {
  transform: scale(0.95);
}

.zoom-in.animated {
  transform: scale(1);
}

.delay-1 { transition-delay: 0.1s; }
.delay-2 { transition-delay: 0.2s; }
.delay-3 { transition-delay: 0.3s; }
.delay-4 { transition-delay: 0.4s; }
.delay-5 { transition-delay: 0.5s; }
.delay-6 { transition-delay: 0.6s; }

.image-zoom-hover {
  overflow: hidden;
}

.image-zoom-hover img {
  transition: transform 0.6s cubic-bezier(0.25, 1, 0.5, 1);
}

.image-zoom-hover:hover img {
  transform: scale(1.05);
}

.hover-lift {
  transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1),
    box-shadow 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.hover-lift:hover {
  transform: translateY(-5px);
}

.card-hover {
  transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1),
    box-shadow 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.card-hover:hover {
  transform: translateY(-6px);
}

/* Disable all animations on Privacy Policy and Terms & Conditions pages */
.page-privacy main,
.page-privacy main *,
.page-privacy .factory-intro__header,
.page-privacy .about__content,
.page-privacy .fade-in,
.page-privacy .slide-up,
.page-privacy .slide-left,
.page-privacy .slide-right,
.page-privacy .zoom-in,
.page-terms main,
.page-terms main *,
.page-terms .factory-intro__header,
.page-terms .about__content,
.page-terms .fade-in,
.page-terms .slide-up,
.page-terms .slide-left,
.page-terms .slide-right,
.page-terms .zoom-in {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
  animation: none !important;
}

@media (prefers-reduced-motion: reduce) {
  .fade-in,
  .slide-up,
  .slide-left,
  .slide-right,
  .zoom-in {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
