/* Six real poses per state; motion remains inside the battle viewport. */
.sprite.atlas-six>.sprite-atlas{width:600%!important;height:600%!important;animation:combat-atlas-six var(--sprite-duration,1200ms) steps(1,end) infinite}
.sprite.atlas-six.sprite-once>.sprite-atlas{animation-iteration-count:1;animation-fill-mode:both;animation-delay:var(--sprite-offset,0ms)}
@keyframes combat-atlas-six{0%{transform:translate(0,var(--frame-y))}16.6667%{transform:translate(-16.6667%,var(--frame-y))}33.3334%{transform:translate(-33.3334%,var(--frame-y))}50%{transform:translate(-50%,var(--frame-y))}66.6667%{transform:translate(-66.6667%,var(--frame-y))}83.3334%,100%{transform:translate(-83.3334%,var(--frame-y))}}
.sprite-rects>.combat-pose{position:absolute;inset:0;width:100%;height:100%;max-width:none;opacity:0;pointer-events:none;animation-duration:var(--sprite-duration);animation-timing-function:steps(1,end);animation-iteration-count:infinite}
.sprite-rects.sprite-once>.combat-pose{animation-iteration-count:1;animation-fill-mode:both;animation-delay:var(--sprite-offset)}
.combat-pose.pose-0{animation-name:combat-pose-0}.combat-pose.pose-1{animation-name:combat-pose-1}.combat-pose.pose-2{animation-name:combat-pose-2}.combat-pose.pose-3{animation-name:combat-pose-3}.combat-pose.pose-4{animation-name:combat-pose-4}.combat-pose.pose-5{animation-name:combat-pose-5}
@keyframes combat-pose-0{0%{opacity:1}16.6667%,100%{opacity:0}}
@keyframes combat-pose-1{0%{opacity:0}16.6667%{opacity:1}33.3334%,100%{opacity:0}}
@keyframes combat-pose-2{0%{opacity:0}33.3334%{opacity:1}50%,100%{opacity:0}}
@keyframes combat-pose-3{0%{opacity:0}50%{opacity:1}66.6667%,100%{opacity:0}}
@keyframes combat-pose-4{0%{opacity:0}66.6667%{opacity:1}83.3334%,100%{opacity:0}}
@keyframes combat-pose-5{0%{opacity:0}83.3334%,100%{opacity:1}}
[data-motion]{--dash:34px;overflow:hidden;container-type:inline-size}
[data-motion] .mission-player{--facing:1;--direction:1}
[data-motion] .mission-enemy{--facing:-1;--direction:-1}
[data-motion] .combat-sprite{transform:scaleX(var(--facing));transform-origin:50% 85%;will-change:transform}
[data-motion] .combatant{animation:none!important}
[data-motion].action-special{animation:none!important}
[data-motion] .hp i[style*="--new-health"]{animation:none}
[data-motion="impact"] .hp i[style*="--new-health"]{animation:lr-health-shift calc(var(--action-duration)*.3) ease-out both}
[data-motion="windup"].action-player-attack .mission-player>.sprite,[data-motion="windup"].action-special .mission-player>.sprite,[data-motion="windup"].action-enemy-attack .mission-enemy>.sprite{animation:combat-windup calc(var(--action-duration)*.28) ease-out both!important}
[data-motion="strike"].action-player-attack .mission-player>.sprite,[data-motion="strike"].action-special .mission-player>.sprite,[data-motion="strike"].action-enemy-attack .mission-enemy>.sprite{animation:combat-dash calc(var(--action-duration)*.24) cubic-bezier(.16,.6,.2,1) both!important}
[data-motion="impact"].action-player-attack .mission-player>.sprite,[data-motion="impact"].action-special .mission-player>.sprite,[data-motion="impact"].action-enemy-attack .mission-enemy>.sprite{animation:combat-contact calc(var(--action-duration)*.3) ease-out both!important}
[data-motion="recover"].action-player-attack .mission-player>.sprite,[data-motion="recover"].action-special .mission-player>.sprite,[data-motion="recover"].action-enemy-attack .mission-enemy>.sprite{animation:combat-recover calc(var(--action-duration)*.18) ease-out both!important}
[data-motion] .taking-hit>.sprite{animation:combat-recoil calc(var(--action-duration)*.3) ease-out both!important;filter:drop-shadow(0 0 10px var(--actor-color)) brightness(1.15)}
[data-motion].action-shield .mission-player>.sprite{animation:combat-brace calc(var(--action-duration)*.5) ease-out both!important}
[data-motion="down"] .actor-defeated>.sprite{animation:combat-defeat calc(var(--action-duration)*.7) ease-in both!important}
[data-motion="impact"].action-special:after{content:'';position:absolute;inset:0;z-index:4;background:radial-gradient(ellipse at 70% 62%,var(--actor-color),transparent 65%);pointer-events:none;animation:combat-flash .18s ease-out both}
.combat-fx{position:absolute;inset:0;pointer-events:none;z-index:5;overflow:hidden;color:var(--actor-color)}
.combat-fx>div{position:absolute;pointer-events:none}
.charge-vortex{left:29%;top:62%;width:75px;height:75px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,#fff9,transparent 55%);animation:combat-charge calc(var(--action-duration)*.28) ease-in both}
.reverse .charge-vortex{left:71%}
.charge-vortex>i{position:absolute;inset:-8px;border:2px solid currentColor;border-right-color:transparent;border-left-color:transparent;border-radius:50%;animation:combat-ring .4s linear infinite;box-shadow:0 0 10px var(--actor-color)}
.charge-vortex>i:nth-child(2){inset:7px;animation-direction:reverse;opacity:.7}.charge-vortex>i:nth-child(3){inset:20px;opacity:.5}
.action-special .charge-vortex{width:110px;height:110px}
.servo-trail{left:14%;right:60%;bottom:12%;height:2px;background:linear-gradient(90deg,transparent,var(--actor-color));animation:combat-charge .2s ease-out both}
.reverse .servo-trail{left:60%;right:14%;transform:scaleX(-1)}
.weapon-trail{left:21%;top:58%;width:80px;height:52px;border:3px solid currentColor;border-left:0;border-top-color:transparent;border-radius:50%;filter:drop-shadow(0 0 9px currentColor);animation:combat-swipe calc(var(--action-duration)*.24) ease-out both}
.reverse .weapon-trail{left:auto;right:21%;transform:scaleX(-1)}
.combat-projectile{left:29%;top:63%;width:48px;height:16px;border-radius:50%;background:linear-gradient(90deg,transparent,var(--actor-color),#fff);box-shadow:0 0 14px var(--actor-color),0 0 28px var(--actor-color);animation:combat-shot calc(var(--action-duration)*.24) linear both}
.reverse .combat-projectile{animation-name:combat-shot-back;transform:scaleX(-1)}
.combat-projectile>i{position:absolute;inset:4px;border-radius:inherit;background:#fff9}
.action-special .combat-projectile{width:110px;height:34px;box-shadow:0 0 25px var(--actor-color),0 0 50px var(--actor-color)}
[data-weapon="organic"] .combat-projectile{border-radius:80% 10% 80% 10%;transform:rotate(-8deg);border:1px solid #e7ffae}
[data-weapon="electric"] .combat-projectile{height:32px;clip-path:polygon(0 40%,32% 0,26% 40%,75% 23%,49% 58%,100% 65%,50% 100%,61% 64%,0 81%)}
[data-weapon="impact"] .combat-projectile{width:50px;height:50px;border:4px solid currentColor;background:radial-gradient(circle,#fff7,transparent 60%);border-radius:50%}
[data-weapon="fire"] .combat-projectile{height:24px;background:linear-gradient(90deg,transparent,#ff642a,#ffcd62,#fff5c6);border-radius:5% 70% 70% 5%}
[data-weapon="frost"] .combat-projectile{height:30px;clip-path:polygon(0 50%,28% 6%,80% 26%,100% 50%,80% 74%,28% 94%);background:linear-gradient(90deg,#75cfff,#e4fcff,#fff)}
[data-weapon="wind"] .combat-projectile{height:35px;background:transparent;border:3px solid #e8ffff;border-left-color:transparent;transform:rotate(-25deg);border-radius:50%}
[data-weapon="orbital"] .combat-projectile{height:8px;border-radius:2px;box-shadow:0 -8px 0 var(--actor-color),0 8px 0 var(--actor-color),0 0 15px var(--actor-color)}
[data-weapon="plasma"] .combat-projectile{height:28px;clip-path:polygon(0 70%,75% 0,100% 13%,40% 100%);background:linear-gradient(90deg,#9835f9,#f7c4ff,#fff)}
[data-weapon="shadow"] .combat-projectile{height:38px;width:60px;background:radial-gradient(ellipse,#101427 10%,#7e58a3 30%,var(--actor-color) 50%,transparent 68%);border-radius:50%;border:2px solid var(--actor-color)}
.impact-rings{top:62%;width:86px;height:86px;transform:translate(-50%,-50%)}
.impact-enemy,.shards-enemy{left:72%}.impact-player,.shards-player{left:28%}
.impact-rings>i{position:absolute;inset:0;border:3px solid currentColor;border-radius:50%;box-shadow:0 0 10px currentColor;animation:combat-impact .25s ease-out both}
.impact-rings>i:nth-child(2){animation-delay:.05s;border-width:1px}.impact-rings.blocked{color:#acfff5}
.impact-shards{top:62%;width:0;height:0}
.impact-shards>i,.defeat-motes>i{position:absolute;width:18px;height:3px;background:currentColor;border-radius:50%;box-shadow:0 0 9px currentColor;--angle:calc(var(--shard)*45deg);animation:combat-shard .28s ease-out both}
.defeat-motes{left:72%;top:73%;color:var(--target-color)}.defeat-motes>i{width:5px;height:5px;animation-duration:.5s}
[data-motion] .hit-burst{top:57%;animation-duration:.24s;color:var(--actor-color)}
[data-motion] .damage-number{top:35%!important;animation-duration:.5s;color:#ffeaa1;line-height:1.1;text-align:center}
[data-motion] .damage-number.special-damage{color:#fff;font-size:44px!important}
[data-motion] .damage-number:has(br){font-size:23px!important;color:#b0fff5}
.season-music-label{display:inline-flex;align-items:center;gap:7px;font-size:11px;color:#b7e6d8;margin-top:9px}
.season-music-label>.icon{width:15px;height:15px}
.chat-float-controls>.chat-float-close{width:25px;height:25px;min-width:25px;color:#d8e7e4;border-color:#739fa466}
.chat-float-controls>.chat-float-close:hover{background:#743a44;color:#fff}
@keyframes combat-windup{to{transform:translateX(calc(-8px*var(--direction))) rotate(calc(-3deg*var(--direction))) scaleX(var(--facing))}}
@keyframes combat-dash{from{transform:translateX(calc(-8px*var(--direction))) scaleX(var(--facing))}to{transform:translateX(calc(var(--dash)*var(--direction))) scaleX(var(--facing))}}
@keyframes combat-contact{from{transform:translateX(calc(var(--dash)*var(--direction))) scaleX(var(--facing))}to{transform:translateX(calc(var(--dash)*.6*var(--direction))) scaleX(var(--facing))}}
@keyframes combat-recover{from{transform:translateX(calc(var(--dash)*.6*var(--direction))) scaleX(var(--facing))}to{transform:scaleX(var(--facing))}}
@keyframes combat-recoil{0%{transform:scaleX(var(--facing))}25%{transform:translateX(calc(-12px*var(--direction))) rotate(calc(-5deg*var(--direction))) scaleX(var(--facing))}60%{transform:translateX(calc(-6px*var(--direction))) scaleX(var(--facing))}100%{transform:scaleX(var(--facing))}}
@keyframes combat-brace{50%{transform:translateY(5px) scale(.96) scaleX(var(--facing))}}
@keyframes combat-defeat{to{transform:translateY(24px) rotate(calc(-14deg*var(--direction))) scale(.82) scaleX(var(--facing));opacity:.22;filter:grayscale(.85)}}
@keyframes combat-shot{0%{left:29%;opacity:0}12%{opacity:1}100%{left:68%;opacity:1}}
@keyframes combat-shot-back{0%{left:65%;opacity:0}12%{opacity:1}100%{left:25%;opacity:1}}
@keyframes combat-charge{from{opacity:.2;scale:.65}to{opacity:1;scale:1.1}}
@keyframes combat-ring{to{rotate:360deg}}
@keyframes combat-swipe{from{opacity:1;scale:.6;rotate:-35deg}to{opacity:0;scale:1.5;rotate:20deg}}
@keyframes combat-impact{from{scale:.4;opacity:1}to{scale:1.7;opacity:0}}
@keyframes combat-shard{from{transform:rotate(var(--angle)) translateX(7px);opacity:1}to{transform:rotate(var(--angle)) translateX(58px) scale(.2);opacity:0}}
@keyframes combat-flash{from{opacity:.24}to{opacity:0}}
@media(max-width:600px){[data-motion]{--dash:16px}.charge-vortex{width:52px;height:52px}.action-special .charge-vortex{width:74px;height:74px}.combat-projectile{width:30px;height:12px}.action-special .combat-projectile{width:66px;height:23px}.impact-rings{width:59px;height:59px}.weapon-trail{width:48px;height:38px}.impact-shards>i{width:11px}.chat-float-grip{min-width:0}.chat-float-controls{gap:3px}.season-music-label{font-size:10px}}
.world-motion-off .sprite.atlas-six>.sprite-atlas{animation:none!important}.world-motion-off [data-motion] .combat-sprite{animation:none!important}.world-motion-off .combat-fx{display:none}.world-motion-off [data-motion].action-special:after{display:none}
.world-motion-off .sprite-rects>.combat-pose{animation:none!important;opacity:0}.world-motion-off .sprite-rects>.pose-0{opacity:1}
@media(prefers-reduced-motion:reduce){.sprite.atlas-six>.sprite-atlas,[data-motion] .combat-sprite,.sprite-rects>.combat-pose{animation:none!important}.sprite-rects>.combat-pose{opacity:0}.sprite-rects>.pose-0{opacity:1}.combat-fx,[data-motion].action-special:after{display:none}[data-motion] .damage-number{display:block;animation:none!important}}
