/*=========================================================
                    ANIMATIONS
=========================================================*/

/* Reusable animation utilities */
.animate-fade-in {
    animation:fadeIn .85s ease both;
}

.animate-fade-up {
    animation:fadeInUp .9s ease both;
}

.animate-slide-in-left {
    animation:slideInLeft .9s ease both;
}

.animate-slide-in-right {
    animation:slideInRight .9s ease both;
}

.animate-zoom-in {
    animation:zoomIn .9s ease both;
}

.animate-pulse-soft {
    animation:pulseSoft 5.5s ease-in-out infinite;
}

.animate-heartbeat {
    animation:heartbeat 1.6s ease-in-out infinite;
}

/* Core keyframes */
@keyframes fadeIn {
    from {
        opacity:0;
        transform:translateY(15px);
    }
    to {
        opacity:1;
        transform:translateY(0);
    }
}

@keyframes slideInLeft {
    from {
        opacity:0;
        transform:translateX(-24px);
    }
    to {
        opacity:1;
        transform:translateX(0);
    }
}

@keyframes slideInRight {
    from {
        opacity:0;
        transform:translateX(24px);
    }
    to {
        opacity:1;
        transform:translateX(0);
    }
}

@keyframes zoomIn {
    from {
        opacity:0;
        transform:scale(0.92);
    }
    to {
        opacity:1;
        transform:scale(1);
    }
}

@keyframes pulseSoft {
    0%, 100% {
        transform:scale(1);
    }
    50% {
        transform:scale(1.03);
    }
}

@keyframes heartbeat {
    0%, 100% {
        transform:scale(1);
    }
    25% {
        transform:scale(1.05);
    }
    40% {
        transform:scale(0.98);
    }
    60% {
        transform:scale(1.02);
    }
}
