/* 淡入动画 */
.fade-in {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}

.fade-in.visible {
    opacity: 1;
    transform: translateY(0);
}

/* 向上滑动 */
.slide-up {
    opacity: 0;
    transform: translateY(50px);
    transition: all 0.6s ease;
}

.slide-up.visible {
    opacity: 1;
    transform: translateY(0);
}

/* 向右滑动 */
.slide-right {
    opacity: 0;
    transform: translateX(-50px);
    transition: all 0.6s ease;
}

.slide-right.visible {
    opacity: 1;
    transform: translateX(0);
}

/* 向左滑动 */
.slide-left {
    opacity: 0;
    transform: translateX(50px);
    transition: all 0.6s ease;
}

.slide-left.visible {
    opacity: 1;
    transform: translateX(0);
}

/* 放大动画 */
.zoom-in {
    opacity: 0;
    transform: scale(0.9);
    transition: all 0.6s ease;
}

.zoom-in.visible {
    opacity: 1;
    transform: scale(1);
}

/* 弹跳动画 */
.bounce {
    animation: bounce 2s infinite;
}

@keyframes bounce {
    0%, 20%, 50%, 80%, 100% {
        transform: translateY(0);
    }
    40% {
        transform: translateY(-30px);
    }
    60% {
        transform: translateY(-15px);
    }
}