/* 动画样式 - 心灵伴侣 */
/* 使用指数缓动，自然减速 */

/* ========== 关键帧动画 ========== */

/* 淡入 */
@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

/* 从下方淡入 */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* 消息滑入动画 */
@keyframes messageSlideIn {
    from {
        opacity: 0;
        transform: translateY(12px) scale(0.98);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

/* 用户消息从右侧滑入 */
@keyframes messageSlideRight {
    from {
        opacity: 0;
        transform: translateX(20px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* AI消息从左侧滑入 */
@keyframes messageSlideLeft {
    from {
        opacity: 0;
        transform: translateX(-20px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* 打字指示器 */
@keyframes typing {
    0%, 60%, 100% {
        transform: translateY(0);
    }
    30% {
        transform: translateY(-4px);
    }
}

/* 旋转 */
@keyframes spin {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

/* 脉冲 */
@keyframes pulse {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.5;
    }
}

/* 呼吸动画 */
@keyframes breathe {
    0%, 100% {
        transform: scale(1);
    }
    50% {
        transform: scale(1.05);
    }
}

/* ========== 动画类 ========== */

.animate-fadeIn {
    animation: fadeIn var(--duration-normal) var(--ease-out);
}

.animate-fadeInUp {
    animation: fadeInUp var(--duration-normal) var(--ease-out);
}

.animate-pulse {
    animation: pulse 2s ease-in-out infinite;
}

.animate-breathe {
    animation: breathe 2s ease-in-out infinite;
}

/* ========== 减少动画 ========== */
@media (prefers-reduced-motion: reduce) {
    .animate-fadeIn,
    .animate-fadeInUp,
    .animate-pulse,
    .animate-breathe {
        animation: none;
    }
}
