/* ============================================================
   animations.css — 全局动画与特效（Phase 9增强版）
   含：伤害数字/卡牌特效/战斗特效/事件特效/场景过渡
   ============================================================ */

/* ---------- 基础动画 ---------- */

/* 屏幕震动 */
@keyframes shake {
    0%, 100% { transform: translateX(0); }
    10% { transform: translateX(-4px); }
    20% { transform: translateX(4px); }
    30% { transform: translateX(-4px); }
    40% { transform: translateX(4px); }
    50% { transform: translateX(-2px); }
    60% { transform: translateX(2px); }
    70% { transform: translateX(-2px); }
    80% { transform: translateX(2px); }
    90% { transform: translateX(-1px); }
}

/* 粒子浮动 */
@keyframes floatUp {
    0% {
        transform: translateY(0) translateX(0) rotate(0deg);
        opacity: 0;
    }
    10% { opacity: 1; }
    90% { opacity: 0.3; }
    100% {
        transform: translateY(-100vh) translateX(100px) rotate(360deg);
        opacity: 0;
    }
}

/* 金色闪光 */
@keyframes goldFlash {
    0% { box-shadow: 0 0 0 rgba(180, 140, 80, 0); }
    50% { box-shadow: 0 0 40px rgba(180, 140, 80, 0.6); }
    100% { box-shadow: 0 0 0 rgba(180, 140, 80, 0); }
}

/* 场景切换淡入淡出 */
@keyframes sceneTransitionOut {
    from { opacity: 1; transform: scale(1); }
    to { opacity: 0; transform: scale(0.95); }
}

@keyframes sceneTransitionIn {
    from { opacity: 0; transform: scale(1.05); }
    to { opacity: 1; transform: scale(1); }
}

/* 伤害数字弹出 */
@keyframes damagePop {
    0% {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
    100% {
        opacity: 0;
        transform: translateY(-60px) scale(1.3);
    }
}

/* 理智脉冲（理智条闪烁） */
@keyframes sanityPulse {
    0% { opacity: 0.6; filter: brightness(1); }
    100% { opacity: 1; filter: brightness(1.5); }
}

/* 疯狂紫光脉动 */
@keyframes insaneGlow {
    0% { box-shadow: inset 0 0 30px rgba(255, 0, 255, 0); }
    50% { box-shadow: inset 0 0 30px rgba(255, 0, 255, 0.2); }
    100% { box-shadow: inset 0 0 30px rgba(255, 0, 255, 0); }
}

/* 狂乱红光脉冲 */
@keyframes franticGlow {
    0% { box-shadow: inset 0 0 20px rgba(255, 0, 0, 0); }
    50% { box-shadow: inset 0 0 20px rgba(255, 0, 0, 0.15); }
    100% { box-shadow: inset 0 0 20px rgba(255, 0, 0, 0); }
}

/* 恐慌红晕闪烁 */
@keyframes panicFlicker {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.85; }
}

/* 屏幕抖动（疯狂阶段） */
@keyframes screenShake {
    0%, 100% { transform: translate(0, 0); }
    10% { transform: translate(-2px, 1px); }
    20% { transform: translate(2px, -1px); }
    30% { transform: translate(-1px, 2px); }
    40% { transform: translate(1px, -2px); }
    50% { transform: translate(-2px, 0); }
    60% { transform: translate(2px, 1px); }
    70% { transform: translate(-1px, -1px); }
    80% { transform: translate(1px, 2px); }
    90% { transform: translate(-2px, -2px); }
}

/* ============================================================
   Phase 9 — 特效动画
   ============================================================ */

/* ---- 斩击横扫 ---- */
@keyframes slashSweep {
    0% { transform: scaleX(0); opacity: 1; }
    50% { transform: scaleX(1); opacity: 0.8; }
    100% { transform: scaleX(0.5) translateX(20px); opacity: 0; }
}

/* ---- 斩击线 ---- */
@keyframes slashLine {
    0% { width: 0; opacity: 1; }
    50% { width: 120%; opacity: 0.8; }
    100% { width: 120%; opacity: 0; }
}

/* ---- 光盾激荡 ---- */
@keyframes shieldFlare {
    0% { opacity: 0; transform: scale(0.8); }
    30% { opacity: 1; transform: scale(1.05); }
    60% { opacity: 0.8; transform: scale(1); }
    100% { opacity: 0; transform: scale(1.1); }
}

/* ---- 印记脉冲 ---- */
@keyframes imprintPulse {
    0% { opacity: 0.8; transform: scale(1); }
    50% { opacity: 1; transform: scale(1.05); }
    100% { opacity: 0; transform: scale(1.2); }
}

/* ---- 暗影扩散 ---- */
@keyframes shadowExpand {
    0% { opacity: 0; transform: scale(0.5); }
    50% { opacity: 1; transform: scale(1.1); }
    100% { opacity: 0; transform: scale(1.2); }
}

/* ---- 理智覆盖 ---- */
@keyframes sanityOverlay {
    0% { opacity: 0; }
    30% { opacity: 1; }
    100% { opacity: 0; }
}

/* ---- 金色闪光（百裂斩） ---- */
@keyframes goldFlashEffect {
    0% { opacity: 0; transform: scale(0.5) rotate(0deg); }
    50% { opacity: 1; transform: scale(1.2) rotate(10deg); }
    100% { opacity: 0; transform: scale(0.8) rotate(-5deg); }
}

/* ---- 荆棘生长（仅scaleY，旋转由内联style控制） ---- */
@keyframes thornGrow {
    0% { transform: scaleY(0); opacity: 0; }
    60% { transform: scaleY(1.1); opacity: 1; }
    100% { transform: scaleY(1); opacity: 0.6; }
}

/* ---- 共鸣环 ---- */
@keyframes resonanceRing {
    0% { width: 0; height: 0; opacity: 1; }
    100% { width: 120px; height: 120px; opacity: 0; }
}

/* ---- 紫色脉冲 ----- */
@keyframes purplePulse {
    0% { opacity: 0; transform: scale(0.8); }
    40% { opacity: 1; transform: scale(1.1); }
    100% { opacity: 0; transform: scale(1.3); }
}

/* ---- 宝箱爆发 ---- */
@keyframes treasureBurst {
    0% { transform: translate(-50%, -50%) scale(0); opacity: 0; }
    30% { opacity: 1; }
    60% { transform: translate(-50%, -50%) scale(2); opacity: 0.6; }
    100% { transform: translate(-50%, -50%) scale(2.5); opacity: 0; }
}

/* ---- 献祭覆盖 ---- */
@keyframes sacrificeOverlay {
    0% { opacity: 0; }
    40% { opacity: 1; }
    100% { opacity: 0.6; }
}

/* ---- 圣光柱 ---- */
@keyframes baptismBeam {
    0% { height: 0; opacity: 0; }
    50% { height: 150%; opacity: 1; }
    100% { height: 150%; opacity: 0; }
}

/* ---- Boss闪光 ---- */
@keyframes bossFlash {
    0% { opacity: 0; }
    15% { opacity: 0.9; }
    30% { opacity: 0; }
    45% { opacity: 0.6; }
    60% { opacity: 0; }
    75% { opacity: 0.3; }
    100% { opacity: 0; }
}

/* ---- 冲击波扩散 ---- */
@keyframes shockwaveExpand {
    0% { width: 0; height: 0; opacity: 1; border-width: 8px; }
    100% { width: 800px; height: 800px; opacity: 0; border-width: 1px; }
}

/* ---- 暗影爆发 ---- */
@keyframes shadowBurst {
    0% { opacity: 0; transform: scale(0.5); }
    50% { opacity: 1; transform: scale(1.2); }
    100% { opacity: 0; transform: scale(1.5); }
}

/* ---- 图书馆光柱 ---- */
@keyframes libraryBeam {
    0% { height: 0; opacity: 0; }
    50% { opacity: 1; }
    100% { height: 120%; opacity: 0.6; }
}

/* ---- 暗影吞噬 ---- */
@keyframes shadowEat {
    0% { opacity: 0; }
    100% { opacity: 1; }
}

/* ---- 暗影揭示 ---- */
@keyframes shadowReveal {
    0% { opacity: 1; }
    100% { opacity: 0; }
}

/* ---- 伤害数字浮动(Phase9) ---- */
.fx-damage-pop {
    will-change: transform, opacity;
}

/* ---- 命中粒子 ---- */
.fx-hit-particle {
    will-change: transform, opacity;
}

/* ---- 金色粒子 ---- */
.fx-gold-particle {
    will-change: transform, opacity;
}

/* ---- 火花粒子 ---- */
.fx-spark {
    will-change: transform, opacity;
}

/* ---- 献祭粒子 ---- */
.fx-sacrifice-particle {
    will-change: transform, opacity;
}

/* ---- 圣光粒子 ---- */
.fx-baptism-particle {
    will-change: transform, opacity;
}

/* ---- 飞行卡牌 ---- */
.fx-card-flyer {
    will-change: transform, opacity, left, top;
}

/* ---- 低语文字 ---- */
.fx-whisper {
    will-change: transform, opacity;
}
