/* --- ANIMATION LIBRARY --- */

/* 1. Fade In Up (Dùng cho chuyển trang) */
@keyframes fadeInUp {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}
.animate-fade-in-up {
    animation: fadeInUp 0.4s ease-out forwards;
}

/* 2. Loading Pulse (Dùng cho Badge/Skeleton) */
@keyframes pulse-gray { 
    0% { opacity: 0.6; } 50% { opacity: 1; } 100% { opacity: 0.6; } 
}
.animate-pulse-gray {
    animation: pulse-gray 1.5s infinite;
}

/* 3. Shimmer Effect (Skeleton Loading) */
@keyframes shimmer {
    0% { background-position: -1000px 0; }
    100% { background-position: 1000px 0; }
}
.skeleton {
    animation: shimmer 2s infinite linear;
    background: linear-gradient(to right, #f6f7f8 4%, #edeef1 25%, #f6f7f8 36%);
    background-size: 1000px 100%;
}

/* 4. Toast Slide In */
.toast-enter { transform: translateX(100%); opacity: 0; }
.toast-enter-active { transform: translateX(0); opacity: 1; transition: all 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55); }
.toast-leave { transform: translateX(0); opacity: 1; }
.toast-leave-active { transform: translateX(100%); opacity: 0; transition: all 0.3s ease-in; }