/* Base Animation Classes */
.animate-on-scroll {
    opacity: 0;
    will-change: opacity, transform;
    transition: opacity 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94),
        transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* Delay Utilities */
.delay-100 {
    transition-delay: 100ms;
}

.delay-200 {
    transition-delay: 200ms;
}

.delay-300 {
    transition-delay: 300ms;
}

.delay-400 {
    transition-delay: 400ms;
}

.delay-500 {
    transition-delay: 500ms;
}

/* Slow Duration */
.duration-slow {
    transition-duration: 2.5s;
}

/* Entry States - These set the starting position */

/* Fade Up */
.fade-up {
    transform: translateY(40px);
}

/* Fade Down */
.fade-down {
    transform: translateY(-40px);
}

/* Fade Left (Comes from right) */
.fade-left {
    transform: translateX(40px);
}

/* Fade Right (Comes from left) */
.fade-right {
    transform: translateX(-40px);
}

/* Zoom In */
.zoom-in {
    transform: scale(0.9);
}

/* Zoom Out */
.zoom-out {
    transform: scale(1.1);
}

/* Flip Up */
.flip-up {
    transform: perspective(1000px) rotateX(45deg) translateY(40px);
    opacity: 0;
}

/* Flip Left (Comes from right, rotates Y) */
.flip-left {
    transform: perspective(1000px) rotateY(-30deg) translateX(40px);
}

/* Flip Right (Comes from left, rotates Y) */
.flip-right {
    transform: perspective(1000px) rotateY(30deg) translateX(-40px);
}

/* Blur Reveal */
.blur-reveal {
    filter: blur(10px);
    transform: scale(0.95);
}

/* 
   Active State 
   Placed AFTER specific transforms to ensure it overrides them when added.
   Removed !important from transform to allow hover effects (like .btn-float) to work.
*/
.animate-visible {
    opacity: 1 !important;
    transform: translate(0, 0) scale(1) rotate(0);
}

.animate-visible.blur-reveal {
    filter: blur(0);
}

/* Specific Easing for different feels */
.ease-out-back {
    transition-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275);
}