.fade {
    opacity: 0;
    transition: opacity 0.5s ease-in-out, transform 0.5s ease-in-out;
}

/* ✅ Fade In */
.fade-in.visible {
    opacity: 0;
    transform: scale(0.95);
    animation: fadeIn 0.5s ease-in-out forwards;
}

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: scale(0.95);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

/* ✅ Fade Out */
.fade-out.visible {
    opacity: 1;
    transform: scale(1);
    animation: fadeOut 0.5s ease-in-out forwards;
}

@keyframes fadeOut {
    from {
        opacity: 1;
        transform: scale(1);
    }
    to {
        opacity: 0;
        transform: scale(0.95);
    }
}

/* ✅ Fade Up */
.fade-up.visible {
    opacity: 0;
    transform: translateY(20px);
    animation: fadeUp 0.5s ease-in-out forwards;
}

@keyframes fadeUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ✅ Fade Down */
.fade-down.visible {
    opacity: 0;
    transform: translateY(-20px);
    animation: fadeDown 0.5s ease-in-out forwards;
}

@keyframes fadeDown {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ✅ Fade Left */
.fade-left.visible {
    opacity: 0;
    transform: translateX(20px);
    animation: fadeLeft 0.5s ease-in-out forwards;
}

@keyframes fadeLeft {
    from {
        opacity: 0;
        transform: translateX(20px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* ✅ Fade Right */
.fade-right.visible {
    opacity: 0;
    transform: translateX(-20px);
    animation: fadeRight 0.5s ease-in-out forwards;
}

@keyframes fadeRight {
    from {
        opacity: 0;
        transform: translateX(-20px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

.move-up {
    animation: moveUp 1.5s ease-in-out infinite;
}

/* Keyframes for the animation */
@keyframes moveUp {
    0% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-5px); /* Moves up */
    }
    100% {
        transform: translateY(0); /* Returns to original position */
    }
}

.move-down {
    animation: moveDown 1.5s ease-in-out infinite;
}

/* Keyframes for the animation */
@keyframes moveDown {
    0% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(5px); /* Moves down */
    }
    100% {
        transform: translateY(0); /* Returns to original position */
    }
}

.rotate {
    animation: rotateAnimation 30s linear infinite;
}

/* Keyframes for rotation */
@keyframes rotateAnimation {
    0% {
        transform: rotate(0deg);
    }
    50% {
        transform: rotate(360deg);
    }
    100% {
        transform: rotate(0deg);
    }
}