/* ========================================
   Animations & Keyframes
   ======================================== */

/* Fade In - 渐显 */
@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

/* Fade In Up - 向上渐显 */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Slide In Left - 左侧滑入 */
@keyframes slideInLeft {
    from {
        opacity: 0;
        transform: translateX(-30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* Slide In Right - 右侧滑入 */
@keyframes slideInRight {
    from {
        opacity: 0;
        transform: translateX(30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* 微妙脉冲 - 背景元素 */
@keyframes pulse-subtle {
    0%, 100% {
        transform: scale(1);
        opacity: 0.3;
    }
    50% {
        transform: scale(1.1);
        opacity: 0.5;
    }
}

/* 光晕脉冲 - 背景渐变 */
@keyframes pulse-glow {
    0%, 100% {
        opacity: 1;
        transform: translate(-50%, -50%) scale(1);
    }
    50% {
        opacity: 0.6;
        transform: translate(-50%, -50%) scale(1.1);
    }
}

/* 漂浮上下 - 几何元素 */
@keyframes floatUpDown {
    0%, 100% {
        transform: translateY(0) rotate(0deg);
    }
    50% {
        transform: translateY(-20px) rotate(5deg);
    }
}

/* 微粒漂浮动画 */
@keyframes particleFloat {
    0% {
        bottom: -10px;
        opacity: 0;
    }
    10% {
        opacity: 0.6;
    }
    90% {
        opacity: 0.3;
    }
    100% {
        bottom: 100%;
        opacity: 0;
        transform: translateX(20px);
    }
}

/* 声纹弧线旋转 */
@keyframes arcSweep {
    0% {
        transform: scale(var(--arc-scale, 0.8)) rotate(0deg);
        opacity: 0.25;
    }
    50% {
        opacity: 0.55;
    }
    100% {
        transform: scale(var(--arc-scale, 0.8)) rotate(360deg);
        opacity: 0.25;
    }
}

/* 闪烁效果 */
@keyframes shimmer {
    0%, 100% {
        background: linear-gradient(90deg, transparent, var(--color-accent-gold), transparent);
    }
    50% {
        background: linear-gradient(90deg, transparent, rgba(201, 169, 97, 0.6), transparent);
    }
}

/* ========================================
   Reduced Motion Support
   ======================================== */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }

    .particle,
    .geometric-decoration {
        animation: none !important;
    }
}
