/* Animation Keyframes */
@keyframes spinSlow {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}
.animate-spin-slow {
    animation: spinSlow 4s linear infinite;
}

@keyframes bounceSlow {
    0%, 100% { transform: translate(-50%, 0); }
    50% { transform: translate(-50%, -15px); }
}
.animate-bounce-slow {
    animation: bounceSlow 2.5s infinite ease-in-out;
}

/* Intersection Observer Initial States */
.animate-on-scroll {
    opacity: 0;
    transition: opacity 1s cubic-bezier(0.16, 1, 0.3, 1), transform 1s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: opacity, transform;
}

.fade-up {
    transform: translateY(50px);
}

.fade-left {
    transform: translateX(50px);
}

.fade-right {
    transform: translateX(-50px);
}

.scale-in {
    transform: scale(0.9);
}

/* Visible States Triggered via JS */
.animate-on-scroll.is-visible {
    opacity: 1;
    transform: translate(0) scale(1);
}

/* Ensure smooth image scaling on hover */
.image-zoom img {
    will-change: transform;
}
