.animation-fade-in {
    opacity: 0;
}
.animation-fade-in.visible {
    animation: fadeIn 1s ease-in-out forwards;
    animation-delay: var(--jbs-stagger-delay, 0s);
}

@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

.animation-fade-in-left {
    opacity: 0;
    transform: translateX(-100%);
}
.animation-fade-in-left.visible {
    animation: fadeInLeft 1s ease-in-out forwards;
    animation-delay: var(--jbs-stagger-delay, 0s);
}

@keyframes fadeInLeft {
    from {
        opacity: 0;
        transform: translateX(-100%);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

.animation-fade-right {
    opacity: 0;
    transform: translateX(100%);
}
.animation-fade-right.visible {
    animation: fadeInRight 1s ease-in-out forwards;
    animation-delay: var(--jbs-stagger-delay, 0s);
}

@keyframes fadeInRight {
    from {
        opacity: 0;
        transform: translateX(100%);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

.animation-fade-in-up {
    opacity: 0;
    transform: translateY(100%);
}
.animation-fade-in-up.visible {
    animation: fadeInUp 1s ease-in-out forwards;
    animation-delay: var(--jbs-stagger-delay, 0s);
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(100%);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.animation-fade-in-down {
    opacity: 0;
    transform: translateY(-100%);
}
.animation-fade-in-down.visible {
    animation: fadeInDown 1s ease-in-out forwards;
    animation-delay: var(--jbs-stagger-delay, 0s);
}

@keyframes fadeInDown {
    from {
        opacity: 0;
        transform: translateY(-100%);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.animation-zoom-in {
    opacity: 0;
    transform: scale(0.5);
}
.animation-zoom-in.visible {
    animation: zoomIn 1s ease-in-out forwards;
    animation-delay: var(--jbs-stagger-delay, 0s);
}

@keyframes zoomIn {
    from {
        opacity: 0;
        transform: scale(0.5);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

@media (prefers-reduced-motion: reduce) {
    .animation-fade-in.visible,
    .animation-fade-in-left.visible,
    .animation-fade-right.visible,
    .animation-fade-in-up.visible,
    .animation-fade-in-down.visible,
    .animation-zoom-in.visible {
        animation: none;
        opacity: 1;
        transform: none;
    }
}