/* 12 actual body poses per character. No runtime canvas or large animation dependency. */
.lq-pose{display:block;position:relative;width:100%;height:100%;background-repeat:no-repeat;background-size:400% 300%;background-position:var(--frame-x) var(--frame-y);filter:drop-shadow(0 5px 5px #03061777);contain:paint}
.lq-pose-swordsman{background-image:url('assets/swordsman-motion.webp')}.lq-pose-shadow{background-image:url('assets/shadow-motion.webp')}
.character-emoji>.lq-pose{width:165px;height:220px}.boss-emoji>.lq-pose{width:165px;height:220px}.roster-portrait>.lq-pose{width:100%;height:100%}
.lq-actor .lq-pose{width:100%;height:100%}.lq-hero .lq-body,.lq-enemy .lq-body{animation:lq-pose-breath 3.8s ease-in-out infinite}.lq-actor{width:47%;height:250px}.lq-hero{left:1%}.lq-enemy{right:1%}
.lq-cinema[data-phase=prepare] .lq-hero{animation:lq-wind-body .52s both}.lq-cinema[data-phase=attack] .lq-hero{animation:lq-step-in .18s cubic-bezier(.2,.7,.2,1) both}.lq-cinema[data-phase=impact] .lq-hero{animation:lq-step-out .52s both}.lq-cinema[data-phase=impact] .lq-enemy{animation:lq-contact .32s both}
.lq-cinema[data-phase=counter] .lq-enemy{animation:lq-shadow-return .55s both}.lq-cinema[data-phase=counter]:not(.lq-guarding):not(.lq-missed) .lq-hero{animation:lq-knockback .55s both}
.lq-cinema[data-phase=enemy-charge] .lq-enemy{animation:lq-shadow-charge .65s both}.lq-cinema[data-phase=enemy-cast] .lq-enemy{animation:lq-shadow-lunge .38s both}
.lq-enemy-orb{position:absolute;right:20%;top:39%;width:38px;height:38px;border-radius:50%;z-index:8;opacity:0;background:radial-gradient(circle at 35% 35%,#fff0ff,#b966f5 25%,#4b227c 60%,#20122f);box-shadow:0 0 12px #e3b2ff,0 0 32px #a357ed}
.lq-cinema[data-phase=enemy-charge] .lq-enemy-orb{animation:lq-orb-charge .65s both}
.lq-cinema[data-phase=enemy-cast][data-enemy-move=orb] .lq-enemy-orb{animation:lq-orb-flight .38s linear both}
.lq-cinema[data-phase=enemy-cast][data-enemy-move=claw] .lq-enemy-orb{width:100px;height:25px;background:linear-gradient(90deg,#e7bfff,#7428b0,transparent);border-radius:80% 10% 10% 80%;animation:lq-claw-flight .38s both}
.lq-temptations{position:absolute;right:24%;top:30%;z-index:9;width:50px;height:70px;opacity:0}.lq-temptations i{position:absolute;display:grid;place-items:center;width:32px;height:40px;border:1px solid #dda0ff;border-radius:8px;background:#402252;color:#ffe7fa;font-size:25px;font-style:normal;box-shadow:0 0 20px #b866ef66}.lq-temptations i:nth-child(2){left:35px;top:40px}.lq-temptations i:nth-child(3){left:-15px;top:-24px;font-size:20px}.lq-temptations i:nth-child(4){left:45px;top:-23px}
.lq-cinema[data-phase=enemy-cast][data-enemy-move=temptation] .lq-temptations{animation:lq-tempt-flight .38s linear both}
.lq-cinema[data-phase=enemy-charge][data-enemy-move=temptation] .lq-temptations{opacity:.75;animation:lq-rune .65s both}
.lq-afterimage{position:absolute;inset:10% 20% 18% 0;opacity:0;pointer-events:none;z-index:2;background:linear-gradient(100deg,transparent,#70bdfb33,transparent);clip-path:polygon(0 25%,55% 0,100% 50%,60% 100%,0 85%)}
.lq-shockwave{position:absolute;left:52%;top:35%;width:80px;height:80px;border-radius:50%;border:4px solid #e9faff;box-shadow:0 0 18px #76d7ff,inset 0 0 12px #76d7ff;opacity:0;z-index:8;pointer-events:none}
.lq-cinema[data-tier=middle] .lq-slash{height:20px;box-shadow:0 0 13px #c7f5ff,0 0 35px #73caff}.lq-cinema[data-hit="1"] .lq-slash{rotate:65deg}
.lq-cinema[data-tier=advanced][data-phase=attack] .lq-afterimage,.lq-cinema[data-tier=ultimate][data-phase=attack] .lq-afterimage{animation:lq-after .35s both}
.lq-cinema[data-tier=advanced][data-phase=impact] .lq-shockwave{animation:lq-wave .5s both}.lq-cinema[data-tier=advanced] .lq-slash{height:25px;width:65%;left:26%;box-shadow:0 0 15px #fff,0 0 40px #95dfff}
.lq-cinema[data-tier=ultimate][data-phase=prepare] .lq-arena{animation:lq-camera-in 1.45s both}.lq-cinema[data-tier=ultimate][data-phase=prepare] .lq-hero{animation:lq-ultimate-charge 1.45s both}.lq-cinema[data-tier=ultimate][data-phase=attack] .lq-hero{animation:lq-step-in .36s both}
.lq-cinema[data-tier=ultimate][data-phase=impact] .lq-arena{animation:lq-camera-impact .65s both}.lq-cinema[data-tier=ultimate][data-phase=impact] .lq-shockwave{border-color:#ffefbc;box-shadow:0 0 35px #ffd678;animation:lq-wave-large .9s both}.lq-cinema[data-tier=ultimate] .lq-slash{width:94%;left:3%;height:34px;box-shadow:0 0 25px #fff,0 0 65px #ffd78b;background:linear-gradient(90deg,#fff1b8,#fff,#c9edff)}
.lq-cinema[data-tier=ultimate][data-phase=prepare] .lq-caption{color:#ffe6a4;text-shadow:0 0 16px #eebc5c}
.lq-smoke{position:absolute;inset:35% 0 0 48%;z-index:9;pointer-events:none;opacity:0}.lq-smoke i{position:absolute;bottom:0;left:10%;width:70px;height:85px;border-radius:50%;background:radial-gradient(ellipse,#8f6abfaa,#3e245c66,transparent 70%)}.lq-smoke i:nth-child(2){left:45%;bottom:5%;width:80px}.lq-smoke i:nth-child(3){left:20%;bottom:30%;height:110px}.lq-smoke i:nth-child(4){left:60%;bottom:25%;width:55px}.lq-smoke i:nth-child(5){left:2%;bottom:55%;height:70px}
.lq-cinema[data-phase=victory] .lq-enemy{animation:lq-shadow-death 1.2s both}.lq-cinema[data-phase=victory] .lq-smoke{animation:lq-smoke-rise 1.2s both}
@keyframes lq-pose-breath{50%{transform:translateY(-2px) scaleY(1.008)}}
@keyframes lq-wind-body{to{transform:translate(-3%,3px)}}@keyframes lq-step-in{from{transform:translate(-3%,3px)}to{transform:translate(37%,0)}}@keyframes lq-step-out{0%,25%{transform:translate(37%,0)}100%{transform:none}}
@keyframes lq-contact{25%{transform:translateX(5%);filter:brightness(1.5)}100%{transform:none}}
@keyframes lq-knockback{25%,55%{transform:translateX(-7%)}100%{transform:none}}
@keyframes lq-shadow-charge{to{transform:translate(2%,5px);filter:drop-shadow(0 0 16px #9e57d7)}}@keyframes lq-shadow-lunge{to{transform:translateX(-20%)}}@keyframes lq-shadow-return{from{transform:translateX(-20%)}to{transform:none}}
@keyframes lq-orb-charge{from{opacity:0;transform:scale(.1)}to{opacity:.8;transform:scale(1)}}@keyframes lq-orb-flight{0%{opacity:1;transform:translateX(0)}90%{opacity:1}100%{opacity:0;transform:translateX(-170px) scale(1.3)}}@keyframes lq-claw-flight{0%{opacity:0;transform:scaleX(.1)}35%{opacity:1}100%{opacity:0;transform:translateX(-110px) scaleX(1.4)}}@keyframes lq-tempt-flight{0%{opacity:1;transform:translateX(0) rotate(0)}95%{opacity:1}100%{opacity:0;transform:translateX(-145px) rotate(-25deg)}}
@keyframes lq-after{20%,65%{opacity:1}100%{opacity:0;transform:translateX(25%)}}
@keyframes lq-wave{0%{opacity:.9;transform:scale(.1)}100%{opacity:0;transform:scale(2.3)}}@keyframes lq-wave-large{0%{opacity:1;transform:scale(.1)}100%{opacity:0;transform:scale(5)}}@keyframes lq-camera-in{to{transform:scale(1.055);filter:brightness(.8)}}@keyframes lq-ultimate-charge{50%{filter:drop-shadow(0 0 22px #ffdf96)}100%{filter:drop-shadow(0 0 14px #fff5d0)}}@keyframes lq-camera-impact{0%{transform:scale(1.055)}15%{transform:translate(3px,-2px) scale(1.07)}30%{transform:translate(-3px,1px) scale(1.06)}100%{transform:none}}
@keyframes lq-shadow-death{0%,60%{opacity:1}100%{opacity:0;transform:translateY(-8px)}}@keyframes lq-smoke-rise{0%,30%{opacity:0}50%{opacity:1}100%{opacity:0;transform:translateY(-55px) scale(1.35)}}
@media(max-width:380px){.lq-actor{height:224px}}
@media(max-height:700px){.lq-actor{height:200px}}
@media(prefers-reduced-motion:reduce){.lq-cinema *{animation:none!important;transition:none!important}.lq-enemy-orb,.lq-temptations,.lq-afterimage,.lq-smoke,.lq-shockwave{display:none}.lq-cinema[data-phase=victory] .lq-enemy{opacity:0}}
.lq-cinema[data-skill=flare][data-phase=attack] .lq-hero{animation:lq-flare-leap .23s both}.lq-cinema[data-skill=flare][data-phase=impact] .lq-shockwave{border-color:#ffe6a0;box-shadow:0 0 24px #ffc97c;animation:lq-wave-large .65s both}
@keyframes lq-flare-leap{from{transform:none}to{transform:translate(34%,-20px)}}
@media(prefers-reduced-motion:reduce){.lq-cinema[data-skill=flare] *{animation:none!important}}
.lq-cinema.lq-guarding[data-phase=dodge] .lq-hero{animation:none}.lq-cinema.lq-guarding[data-phase=dodge] .lq-ally{animation:lq-guard-evade .45s both}
@keyframes lq-guard-evade{0%,100%{transform:translateX(52%)}50%{transform:translateX(30%)}}
@media(prefers-reduced-motion:reduce){.lq-cinema.lq-guarding[data-phase=dodge] .lq-ally{animation:none!important}}
.lq-cinema[data-phase=attack] .lq-hero{animation-duration:var(--swing-ms,180ms)}
