@keyframes slideInRight {
    0% { transform: translateX(100%); visibility: visible; }
    100% { transform: translateX(0); }
}

@keyframes slideInLeft {
    0% { transform: translateX(-100%); visibility: visible; }
    100% { transform: translateX(0); }
}

@keyframes slideOutLeft {
    0% { transform: translateX(0); visibility: visible; }
    100% { transform: translateX(-100%); visibility: hidden; }
}

@keyframes slideOutRight {
    0% { transform: translateX(0); visibility: visible; }
    100% { transform: translateX(100%); visibility: hidden; }
}

@keyframes fadeIn {
    0% { opacity: 0; }
    100% { opacity: 1; }
}

@keyframes fadeOut {
    0% { opacity: 1; }
    100% { opacity: 0; }
}

@keyframes slideInDown {
    0% { -webkit-transform: translateY(-100%); transform: translateY(-100%); visibility: visible; }
    100% { -webkit-transform: translateY(0); transform: translateY(0); }
}

@keyframes slideOutUp {
    0% { -webkit-transform: translateY(0); transform: translateY(0); }
    100% { visibility: hidden; -webkit-transform: translateY(-100%); transform: translateY(-100%); }
}

@keyframes blink {
    0% { opacity: 1; }
    50% { opacity: 0.5; }
    100% { opacity: 1; }
}

@keyframes shake {
    50% { transform: translate3d(20px, 0, 0); }
}

/* Animações suaves para transições de página (Global Improvements) */
@keyframes fadeInUp {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}

.container-sm,
.container-fluid {
    animation: fadeInUp 0.6s ease-out;
}
