/* Player and enemy actors, distance marker */
/* ---------- 角色 ---------- */
.actor { position: absolute; top: 615px; transform: translateY(-100%); transition: left .55s cubic-bezier(.2,.8,.2,1); }
.actor svg { display: block; overflow: visible; }
.actor .tag { position: absolute; left: 50%; top: 100%; transform: translateX(-50%); margin-top: 10px;
  font-size: 12px; color: var(--muted); letter-spacing: .1em; white-space: nowrap; }
.actor .shadow { position: absolute; left: 50%; bottom: -6px; width: 70%; height: 14px; transform: translateX(-50%);
  background: radial-gradient(ellipse, rgba(0,0,0,.55), transparent 70%); }

#player { left: 200px; width: 160px; height: 230px; }
#player .body { animation: idle 1.6s ease-in-out infinite; transform-origin: 50% 100%; }
#enemy { left: 1180px; width: 240px; height: 300px; }
#enemy .body { transform-origin: 50% 100%; }
.stage.is-enemy-turn #enemy .body { animation: breathe 1.1s ease-in-out infinite; }
.stage.is-slowmo #enemy .body { animation: breathe 5s ease-in-out infinite; }
.stage.is-timestop #enemy .frozen { opacity: 1; }
#enemy .frozen { opacity: 0; transition: opacity .4s; }
#enemy .flash { opacity: 0; }

@keyframes idle { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-5px) } }
@keyframes breathe { 0%,100% { transform: scale(1,1) } 50% { transform: scale(1.02,.985) } }
@keyframes hitshake { 0% { transform: translate(0,0) } 50% { transform: translate(-7px,2px) } 100% { transform: translate(5px,-1px) } }
@keyframes flash { 0% { opacity: .9 } 100% { opacity: 0 } }

/* 角色整體上移：--lift 決定地面線比原本的 615px 高多少；子彈層與特效層一起位移，JS 裡的座標不必改 */
.stage { --lift: 70px; }
.actor { top: calc(615px - var(--lift)); }
.bg .ground { top: calc(615px - var(--lift)); height: calc(285px + var(--lift)); }
.midline { top: calc(615px - var(--lift)); height: calc(285px + var(--lift)); }
.bullets, .fx { transform: translateY(calc(-1 * var(--lift))); }

/* 距離標示 */
.dist { position: absolute; top: calc(660px - var(--lift)); height: 0; border-top: 1px dashed rgba(230,176,75,.6); transition: left .55s, width .55s; }
.dist::before, .dist::after { content: ""; position: absolute; top: -6px; width: 0; height: 12px; border-left: 1px solid rgba(230,176,75,.8); }
.dist::before { left: 0 } .dist::after { right: 0 }
.dist span { position: absolute; left: 8px; top: -22px; font-family: var(--hud); font-size: 13px; letter-spacing: .1em; color: var(--brass); white-space: nowrap; }
