/* Enhanced Animations */
@keyframes pulse {
    0% {
        transform: scale(1);
    }

    50% {
        transform: scale(1.15);
    }

    100% {
        transform: scale(1);
    }
}

@keyframes bounce-in {
    0% {
        transform: scale(0.3);
        opacity: 0;
    }

    50% {
        transform: scale(1.05);
    }

    70% {
        transform: scale(0.9);
    }

    100% {
        transform: scale(1);
        opacity: 1;
    }
}

@keyframes slide-in-right {
    0% {
        transform: translateX(100%);
        opacity: 0;
    }

    100% {
        transform: translateX(0);
        opacity: 1;
    }
}

@keyframes float {

    0%,
    100% {
        transform: translateY(0px);
    }

    50% {
        transform: translateY(-10px);
    }
}

@keyframes pulse-glow {

    0%,
    100% {
        box-shadow: 0 4px 12px rgba(239, 68, 68, 0.4);
    }

    50% {
        box-shadow: 0 4px 20px rgba(239, 68, 68, 0.8);
    }
}

@keyframes progress-shrink {
    from {
        width: 100%;
    }

    to {
        width: 0%;
    }
}

@keyframes pulse-badge {

    0%,
    100% {
        transform: scale(1);
    }

    50% {
        transform: scale(1.05);
    }
}

@keyframes flash-sale {

    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: 0.7;
    }
}

@keyframes heart-beat {
    0% {
        transform: scale(1);
    }

    25% {
        transform: scale(1.2);
    }

    50% {
        transform: scale(1);
    }

    75% {
        transform: scale(1.1);
    }

    100% {
        transform: scale(1);
    }
}

@keyframes removeItem {
    0% {
        opacity: 1;
        transform: translateX(0);
    }

    100% {
        opacity: 0;
        transform: translateX(100%);
        height: 0;
        padding: 0;
        margin: 0;
    }
}

@keyframes pulse-notification {

    0%,
    100% {
        box-shadow: 0 15px 35px rgba(255, 107, 107, 0.3);
    }

    50% {
        box-shadow: 0 15px 35px rgba(255, 107, 107, 0.5), 0 0 0 4px rgba(255, 107, 107, 0.1);
    }
}

.cart-update {
    animation: bounce-in 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}

.float-animation {
    animation: float 3s ease-in-out infinite;
}

.animate-slide-in {
    animation: slide-in-right 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes fade-in-up {
    0% {
        transform: translateY(20px);
        opacity: 0;
    }

    100% {
        transform: translateY(0);
        opacity: 1;
    }
}

@keyframes slide-in-left {
    0% {
        transform: translateX(-100%);
        opacity: 0;
    }

    100% {
        transform: translateX(0);
        opacity: 1;
    }
}

.animate-fade-in-up {
    animation: fade-in-up 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.animate-slide-in-left {
    animation: slide-in-left 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.notification-progress {
    animation: progress-shrink 4s linear forwards;
}