/* Animations with Physics-Based Easing */

/* Keyframes */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeInScale {
    from {
        opacity: 0;
        transform: scale(0.9);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes heroFadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes bubbleIn {
    0% {
        opacity: 0;
        transform: scale(0);
    }
    40% {
        opacity: 1;
        transform: scale(1.1);
    }
    60% {
        transform: scale(0.9);
    }
    75% {
        transform: scale(1.05);
    }
    85% {
        transform: scale(0.97);
    }
    95% {
        transform: scale(1.02);
    }
    100% {
        opacity: 1;
        transform: scale(1);
    }
}

/* Physics-based bounce easing */
.animate-in {
    animation: fadeInUp 0.9s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
    opacity: 0;
}

/* Scale animation for cards */
.animate-scale {
    animation: fadeInScale 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
    opacity: 0;
}

/* Simple fade for titles */
.fade-in {
    animation: fadeIn 1s ease-out forwards;
    opacity: 0;
}

/* Legacy support */
.slide-up {
    animation: fadeInUp 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}
