.motion-sprite{overflow:visible;flex-shrink:0;pointer-events:none}
.docked .motion-sprite{width:min(100%,200px);filter:drop-shadow(2px 5px 2px #111b1c66)}
.motion-idle{animation:reactor-idle 3.2s ease-in-out infinite;transform-origin:center bottom}
@keyframes reactor-idle{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
.motion-hit{animation:unit-hit .36s ease-out both}
@keyframes unit-hit{0%,100%{transform:translateX(0)}20%{transform:translateX(5px);filter:brightness(2)}50%{transform:translateX(-4px)}75%{transform:translateX(2px)}}
.motion-demo{border:1px solid #a99b78;background:radial-gradient(ellipse at 50% 65%,#e1d2ad,#b5b095);padding:18px;margin-top:16px;color:#464733}
.motion-demo-head{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1px}.motion-demo-head span{font-size:9px;color:#616449}
.motion-demo-stage{display:flex;justify-content:center;align-items:center;min-height:225px;background:radial-gradient(ellipse at 50% 85%,#5c614744,transparent 30%)}
.motion-demo-controls{display:flex;justify-content:center;gap:8px}.motion-demo-controls button{border:1px solid #797b5d;background:#d5cfb5;color:#454b35;padding:10px 20px;font-size:12px;min-height:42px}.motion-demo-controls button.active{background:#4e5b40;color:#f0e8c8}
.motion-demo p{color:#66674e;font-size:10px;text-align:center;margin-top:12px}
.battle-busy{pointer-events:none}.battle-busy .command-panel{opacity:.75}
.motion-note{font-size:10px;color:#d9cda4;text-align:center;padding:9px;background:#4e5132}
.threat-controls{display:flex;gap:8px;flex-wrap:wrap}
.threat-controls button{min-height:44px;padding:8px 14px;border:1px solid #a47b5e;color:#e8c5a4;background:#332c24;font-size:11px}
.threat-controls button[aria-pressed="true"]{background:#8b5942;border-color:#efbd87;color:#fff1d3}
.impact-ring{fill:none;stroke:#ffdf8e;stroke-width:3;animation:impact-pulse .45s ease-out both;transform-box:fill-box;transform-origin:center}
@keyframes impact-pulse{from{opacity:1;transform:scale(.2)}to{opacity:0;transform:scale(1.5)}}
.attack-trace{stroke:#ffdc8b;stroke-width:3;stroke-linecap:round;stroke-dasharray:8 5;animation:trace .4s linear both}
.slash-trace{fill:none;stroke:#fff2c2;stroke-width:6;stroke-linecap:round;stroke-dasharray:100;animation:slash .4s ease-out both;filter:drop-shadow(0 0 4px #f6bc62)}
@keyframes slash{from{stroke-dashoffset:100;opacity:1}to{stroke-dashoffset:0;opacity:0}}
@media(prefers-reduced-motion:reduce){.slash-trace{animation:none!important}}
@keyframes trace{from{stroke-dashoffset:50;opacity:1}to{stroke-dashoffset:0;opacity:0}}
@media(max-width:720px){.motion-demo{padding:14px}.motion-demo-stage{min-height:200px}.motion-demo-stage .motion-sprite{width:200px;height:200px}.motion-demo-head{font-size:9px}}
@media(prefers-reduced-motion:reduce){.motion-sprite,.motion-hit,.impact-ring,.attack-trace{animation:none!important}}
.motion-guard{animation:guard-glow .8s ease-in-out both}@keyframes guard-glow{0%,100%{filter:brightness(1)}50%{filter:brightness(1.7) drop-shadow(0 0 7px #b6f6a9)}}
.directional-sprite{overflow:hidden}
