/**
 * ============================================
 * animations.css - 动画
 * ============================================
 * 
 * 内容：
 * - 所有 @keyframes 定义
 * - 过渡效果
 * - 脉冲、呼吸等动画
 */

/* ============================================
   基础动画
   ============================================ */
@keyframes spin { 
    to { transform: rotate(360deg); } 
}

@keyframes fadeIn { 
    from { opacity: 0; } 
    to { opacity: 1; } 
}

@keyframes fadeInUp {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes slideDown {
    from { opacity: 0; transform: translateY(-20px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes slideRight {
    from { opacity: 0; transform: translateX(-20px); }
    to { opacity: 1; transform: translateX(0); }
}

@keyframes slideUp {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}

/* ============================================
   登录页动画
   ============================================ */
@keyframes logoReveal { 
    to { opacity: 1; transform: translateY(0) rotateX(0); } 
}

@keyframes textReveal { 
    to { opacity: 1; transform: translateY(0); } 
}

/* ============================================
   动态背景动画
   ============================================ */
@keyframes ambientPulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.8; transform: scale(1.05); }
}

@keyframes orbFloat1 { 
    0%, 100% { transform: translate(0, 0) scale(1); } 
    50% { transform: translate(30px, 20px) scale(1.1); } 
}

@keyframes orbFloat2 { 
    0%, 100% { transform: translate(0, 0) scale(1); } 
    50% { transform: translate(-20px, -30px) scale(1.08); } 
}

/* ============================================
   消息动画
   ============================================ */
@keyframes messageSlideIn { 
    from { opacity: 0; transform: translateY(16px); } 
    to { opacity: 1; transform: translateY(0); } 
}

/* ============================================
   脉冲动画
   ============================================ */
@keyframes pulse { 
    0%, 100% { transform: scale(1); } 
    50% { transform: scale(1.05); } 
}

@keyframes pulseScale {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.7; transform: scale(1.1); }
}

/* ============================================
   语音通话动画
   ============================================ */
@keyframes avatarPulse {
    0%, 100% { transform: scale(1); box-shadow: 0 8px 24px rgba(139, 107, 71, 0.3), 0 4px 8px rgba(0,0,0,0.1); }
    50% { transform: scale(1.03); box-shadow: 0 12px 32px rgba(139, 107, 71, 0.4), 0 6px 12px rgba(0,0,0,0.15); }
}

@keyframes ringPulse {
    0% { transform: scale(1); opacity: 0.6; }
    100% { transform: scale(1.3); opacity: 0; }
}

@keyframes blink {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.4; }
}

@keyframes wave {
    0%, 100% { height: 8px; }
    50% { height: 32px; }
}

@keyframes aiWave {
    0%, 100% { height: 4px; opacity: 0.4; }
    50% { height: 20px; opacity: 1; }
}

@keyframes btnPulse {
    0%, 100% { box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3); }
    50% { box-shadow: 0 6px 24px rgba(239, 68, 68, 0.5); }
}
