/* Blend between existing poses; keep continuous movement through line changes. */
.motion-sprite{background-image:none;overflow:visible}
.motion-sprite .pose-frame{position:absolute;inset:0;background-image:url('./assets/symbol-motion.webp');background-size:400% 400%;background-repeat:no-repeat;background-position-y:var(--sprite-row);opacity:0}
.pose-0{background-position-x:0%;--pose-phase:0s}.pose-1{background-position-x:33.333333%;--pose-phase:-1.5s}.pose-2{background-position-x:66.666667%;--pose-phase:-1s}.pose-3{background-position-x:100%;--pose-phase:-.5s}
.symbol-acting>.motion-sprite,.expansion-cell>.motion-sprite,.books-awaken .scatter-hit>.motion-sprite{display:block;animation:relic-breathe 2s ease-in-out infinite;will-change:transform}
.symbol-acting .pose-frame,.expansion-cell .pose-frame,.books-awaken .scatter-hit .pose-frame{animation:pose-blend 2s var(--pose-phase) linear infinite}
.expansion-cell:has(>.motion-sprite)>.symbol-art{visibility:hidden}
.expansion-cell{transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}.line-focus .cell{transition:filter .2s ease,box-shadow .2s ease}
.expansion-cell.winner>.symbol-art{animation:relic-breathe 2s ease-in-out infinite}.motion-0{transform-origin:50% 75%}.motion-3{transform-origin:50% 65%}
.line-overlay .expansion-line{animation:line-draw .14s ease-out both}.float-win{animation:win-amount-land .28s ease-out both}
@keyframes pose-blend{0%,18%{opacity:1}25%,93%{opacity:0}100%{opacity:1}}
@keyframes relic-breathe{0%,100%{transform:translateY(0) scale(1) rotate(-.5deg)}50%{transform:translateY(-1.5%) scale(1.025) rotate(.5deg)}}
@keyframes win-amount-land{from{opacity:0;transform:translateY(8px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}
.no-motion .motion-sprite{display:none!important}.no-motion .symbol-art{visibility:visible!important}
@media(prefers-reduced-motion:reduce){.motion-sprite{display:none!important}.symbol-art{visibility:visible!important}}
