/* Enemy turn: phase colours, attack animations, guard, enemy prompt */
/* ---------- 敵人回合 ---------- */
.stage.is-enemy-turn .phase .main { color: var(--crimson); }
.stage.is-gap .phase .main { color: var(--violet); }
.stage.is-gap .phase .pill { color: var(--violet); border-color: var(--violet); background: var(--violet-dim); }
.stage.is-gapbt .phase .pill { color: var(--violet); border-color: var(--violet); background: var(--violet-dim); }
.stage.is-knock .phase .main { color: var(--brass); }
.stage.is-defeat .phase .main { color: var(--crimson); }
.slash.swing { opacity: 1; }
.slash.swing svg path { animation: slashpulse .28s ease-out 1 forwards; transform-origin: 50% 50%; }
.slash.slow svg path { animation-duration: 1.6s; }
.windup { position: absolute; left: 540px; top: 440px; width: 120px; height: 120px; border-radius: 50%; border: 3px solid var(--crimson); opacity: 0; pointer-events: none; }
.windup.on { animation: windup .25s linear 1 forwards; }
.windup.on.slow { animation-duration: 1.4s; }
@keyframes windup { 0% { opacity: .2; transform: scale(1.6) } 100% { opacity: 1; transform: scale(.4) } }
/* ---------- 敵人攻擊動畫：舉起 → 停頓（破綻）→ 揮下；命中點 = 動畫結束 ---------- */
#enemy .arm { transform-box: view-box; transform-origin: 27px 125px; }
#enemy .lunge { transform-box: view-box; transform-origin: 120px 300px; }
#enemy .weapon { transform-box: view-box; }
#enemy svg.atk .arm { animation: var(--armAnim) var(--dur, .5s) linear 1 forwards; }
#enemy svg.atk .lunge { animation: var(--lungeAnim) var(--dur, .5s) linear 1 forwards; }
#enemy svg.atk .weapon { animation: tell var(--dur, .5s) linear 1 forwards; }
#enemy svg.atk-shoot .laser { animation: laser var(--dur, .5s) linear 1 forwards; }
@keyframes armSlash { 0% { transform: rotate(0deg) } 55% { transform: rotate(-140deg) } 82% { transform: rotate(-150deg) } 100% { transform: rotate(110deg) } }
@keyframes armSlam  { 0% { transform: rotate(0deg) } 62% { transform: rotate(-178deg) } 84% { transform: rotate(-182deg) } 100% { transform: rotate(92deg) } }
@keyframes armStab  { 0% { transform: rotate(0deg) translate(0,0) } 30% { transform: rotate(92deg) translate(0,0) } 78% { transform: rotate(92deg) translate(0,-46px) } 86% { transform: rotate(92deg) translate(0,-46px) } 100% { transform: rotate(92deg) translate(0,70px) } }
@keyframes armShoot { 0% { transform: rotate(0deg) } 25% { transform: rotate(92deg) } 96% { transform: rotate(92deg) } 100% { transform: rotate(80deg) } }
@keyframes lungeMelee { 0%,82% { transform: translateX(0) } 100% { transform: translateX(-70px) } }
@keyframes lungeStab  { 0% { transform: translateX(0) } 78% { transform: translateX(14px) } 86% { transform: translateX(14px) } 100% { transform: translateX(-110px) } }
@keyframes lungeNone  { from { transform: none } to { transform: none } }
@keyframes tell { 0%, 76% { filter: none } 84% { filter: brightness(2.6) drop-shadow(0 0 8px #FF8A8E) } 100% { filter: none } }
@keyframes laser { 0%, 25% { opacity: 0 } 60% { opacity: .35 } 92% { opacity: .9 } 100% { opacity: 0 } }
.stage.is-slowmo #enemy svg.atk .arm, .stage.is-slowmo #enemy svg.atk .lunge, .stage.is-slowmo #enemy svg.atk .weapon { animation-play-state: paused; }
.eprompt .key .shift { display: inline-block; padding: 0 10px; border: 2px solid currentColor; border-radius: 4px; font-size: 14px; line-height: 1.6; }
.guard { position: absolute; left: 330px; top: 385px; width: 90px; height: 170px; border-radius: 45px; border: 4px solid var(--cyan); border-left-color: transparent; opacity: 0; pointer-events: none; box-shadow: 0 0 24px rgba(95,227,255,.5); }
.guard.on { animation: guard .35s ease-out 1; }
@keyframes guard { 0% { opacity: 1; transform: scale(.8) } 100% { opacity: 0; transform: scale(1.15) } }
.guard.try { animation: guardtry .18s ease-out 1; }
@keyframes guardtry { 0% { opacity: .5 } 100% { opacity: 0 } }
#player .body.hurt { animation: hurt .3s steps(2) 1; }
@keyframes hurt { 50% { transform: translate(-8px, 0); filter: brightness(2) sepia(1) saturate(6) hue-rotate(-40deg); } }
.dmg.hurt { color: var(--crimson); text-shadow: 0 2px 0 #000, 0 0 18px rgba(229,72,77,.5); }
.dmg.block { color: var(--cyan); font-size: 30px; text-shadow: 0 2px 0 #000, 0 0 18px rgba(95,227,255,.5); }
.dmg.gain { color: var(--green); font-size: 26px; text-shadow: 0 2px 0 #000; }
.eprompt { position: absolute; left: 50%; top: 250px; transform: translateX(-50%); display: none; flex-direction: column; align-items: center; gap: 10px; text-align: center; z-index: 3; }
.eprompt.show { display: flex; }
.eprompt .big { font-size: 30px; font-weight: 900; letter-spacing: .14em; color: var(--violet); }
.eprompt .key { display: inline-flex; align-items: center; gap: 10px; padding: 8px 18px; border: 2px solid var(--text); border-radius: 6px; font-family: var(--hud); font-weight: 700; font-size: 18px; letter-spacing: .12em; background: rgba(0,0,0,.55); }
.eprompt .key .space { display: inline-block; width: 120px; height: 12px; border: 2px solid currentColor; border-top: 0; border-radius: 0 0 4px 4px; }
.eprompt .key.hit { border-color: var(--cyan); color: var(--cyan); }
.eprompt .note { font-size: 13px; color: var(--muted); letter-spacing: .06em; background: rgba(0,0,0,.4); padding: 4px 10px; border-radius: 4px; }
.eprompt .note b { color: var(--green); font-family: var(--hud); }
.eprompt .note b.p { color: var(--violet); }
.eprompt .timer { width: 420px; height: 8px; border-radius: 4px; background: rgba(255,255,255,.12); overflow: hidden; }
.eprompt .timer i { display: block; height: 100%; background: var(--violet); animation: drain 3s linear forwards; }
.poise-row .stat b.low { color: var(--brass); }
.stage.is-knockback #enemy { transition: left .35s cubic-bezier(.3,.9,.4,1.2); }
.bar.hp i.p { background: linear-gradient(180deg, #7FE7A8, #3DBF74); }
