@tailwind base;
@tailwind components;
@tailwind utilities;

@layer utilities {
    .hide-scrollbar::-webkit-scrollbar {
        display: none;
    }
    .hide-scrollbar {
        -ms-overflow-style: none;
        scrollbar-width: none;
    }
    .text-shadow {
        text-shadow: 0 1px 2px rgba(0,0,0,0.1);
    }
    .bg-blur {
        backdrop-filter: blur(8px);
        -webkit-backdrop-filter: blur(8px);
    }
    .gradient-mask {
        mask-image: linear-gradient(to bottom, black 95%, transparent 100%);
        -webkit-mask-image: linear-gradient(to bottom, black 95%, transparent 100%);
    }
}

/* 滚动公告动画优化 */
@keyframes scroll-up {
    0% { transform: translateY(0); }
    20% { transform: translateY(0); }
    25% { transform: translateY(-70px); }
    45% { transform: translateY(-70px); }
    50% { transform: translateY(-140px); }
    70% { transform: translateY(-140px); }
    75% { transform: translateY(-210px); }
    95% { transform: translateY(-210px); }
    100% { transform: translateY(-280px); }
}
.animate-scroll {
    animation: scroll-up 15s cubic-bezier(0.25, 0.46, 0.45, 0.94) infinite;
}
.animate-scroll:hover {
    animation-play-state: paused;
}

/* 横向滚动公告动画 */
@keyframes scroll-left {
    0% { transform: translateX(100%); }
    100% { transform: translateX(-100%); }
}
.animate-scroll-left {
    animation: scroll-left 20s linear infinite;
    white-space: nowrap;
}
.animate-scroll-left:hover {
    animation-play-state: paused;
}

/* banner渐变优化 */
.card-hover {
    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.card-hover:hover {
    transform: translateY(-4px);
    box-shadow: var(--tw-shadow-hover);
}

/* banner渐变优化 */
.banner-gradient {
    background: linear-gradient(0deg, rgba(15,23,42,0.9) 0%, rgba(15,23,42,0.4) 50%, rgba(15,23,42,0) 100%);
}

/* 底部弹窗动画 */
@keyframes slideUp {
    from { transform: translateY(100%); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}
@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}
.animate-slideUp {
    animation: slideUp 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}
.animate-fadeIn {
    animation: fadeIn 0.25s ease-out;
}