/* Ground reads continuously; the tactical grid and reachable AP remain overlays. */
.battle-main .battle-legend{gap:4px 12px;line-height:1.5}
.river-ripple{opacity:.28;animation:river-current 3s steps(4,end) infinite}
@keyframes river-current{0%,100%{opacity:.17;transform:translateX(-2px)}50%{opacity:.5;transform:translateX(3px)}}
.terrain-kind.bridge{fill:#ffe3a7}.terrain-kind.rough{fill:#f3c183}.terrain-kind.wall{fill:#e6bda5}
.battle-cell-hit.blocked-cell{cursor:not-allowed}.battle-cell-hit.blocked-cell:hover{fill:#d98b6833}
.battle-legend .water{color:#a2d1d3}.battle-legend .rough{color:#e9be87}
.battle-corpse{pointer-events:none}.battle-corpse:not(.is-falling) .enemy-sprite{opacity:.85;filter:saturate(.55)}
.corpse-label{font-size:10px;fill:#c5bc9d;paint-order:stroke;stroke:#1c251d;stroke-width:3px}
.defeat-label{font-size:20px;font-weight:bold;fill:#ffcc97;paint-order:stroke;stroke:#151d16;stroke-width:4px;animation:defeat-rise 1.4s both;animation-delay:calc(0ms - var(--fx-elapsed))}
.enemy-collapse{animation-delay:calc(180ms - var(--fx-elapsed));animation-fill-mode:both!important}
.collapse-dust{transform-box:fill-box;transform-origin:center;animation:collapse-dust .55s both;animation-delay:calc(700ms - var(--fx-elapsed))}
.was-hit .survivor-sprite,.is-falling .enemy-sprite{animation:unit-hit .5s both;animation-delay:calc(0ms - var(--fx-elapsed))}
.combat-damage{font-size:20px;font-weight:bold;animation:damage-rise .6s both;animation-delay:calc(0ms - var(--fx-elapsed))}
.is-moving .enemy-sprite{animation:enemy-stride .32s steps(2,end) infinite}
@keyframes enemy-stride{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
@keyframes unit-hit{0%,28%{filter:brightness(1)}38%,54%{filter:brightness(2.3) sepia(.5)}70%{filter:brightness(1.3)}100%{filter:brightness(1)}}
@keyframes collapse-dust{0%{opacity:0;transform:scale(.6)}15%{opacity:.85}100%{opacity:0;transform:scale(1.6) translateY(-6px)}}
@keyframes defeat-rise{0%,12%{opacity:0;transform:translateY(8px)}25%,85%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(-8px)}}
@keyframes damage-rise{0%,20%{opacity:0;transform:translateY(7px)}35%,100%{opacity:1;transform:translateY(-3px)}}
@media(prefers-reduced-motion:reduce){
 .river-ripple,.collapse-dust,.defeat-label,.combat-damage,.was-hit .survivor-sprite,.is-falling .enemy-sprite,.is-moving .enemy-sprite{animation:none}
 .collapse-dust{display:none}
 #combat-dialog .enemy-collapse{animation:none;transform:translateX(-768px)}
}
