/* 入场动画 */
.banner-inner h1,
.banner-inner .hero-sub,
.banner-inner .p-1,
.banner-inner .p-2,
.banner-inner .p-3,
.banner-inner .btn-group {
    opacity: 0;
    transform: translateY(20px);
    animation: fadeInUp 0.6s cubic-bezier(0.2, 0.9, 0.4, 1.1) forwards;
}

.banner-inner h1 {
    animation-delay: 0.5s;
}

.banner-inner .hero-sub {
    animation-delay: 1s;
}

.banner-inner .p-1 {
    animation-delay: 1.5s;
}

.banner-inner .p-2 {
    animation-delay: 2s;
}

.banner-inner .p-3 {
    animation-delay: 2.5s;
}

.banner-inner .btn-group {
    animation-delay: 3s;
}

@keyframes fadeInUp {
    0% {
        opacity: 0;
        transform: translateY(20px);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}