.ion-character{left:300px;bottom:18px;width:650px;height:920px}
.ion-motion{position:relative;width:100%;height:100%;transform-origin:50% 86%;animation:ionIdle 3.2s ease-in-out infinite}
.ion-character .ion-motion img{position:absolute;inset:0;animation:none;transition:opacity 130ms ease;object-fit:contain}
.ion-character .ion-idle{opacity:1}
.ion-character .ion-push{opacity:0;transform:translateX(34px)}
.pushing .ion-idle{opacity:0}
.pushing .ion-push{opacity:1}
.pushing .ion-motion{animation:ionWheelPush 730ms cubic-bezier(.25,.7,.25,1) both}
.show-result .ion-motion{animation:ionCelebrate .78s cubic-bezier(.18,.85,.3,1.2) both,ionIdle 3.2s .78s ease-in-out infinite}
.spinning:not(.guaranteed-only) .wheel,.spinning:not(.guaranteed-only) .wheel-items b{animation-duration:var(--wheel-spin,var(--spin));animation-delay:var(--gesture-delay,650ms)}
.spinning:not(.guaranteed-only) .pointer{animation-delay:var(--gesture-delay,650ms)}
@keyframes ionWheelPush{
  0%{transform:translateX(-12px) rotate(-1.2deg)}
  25%{transform:translate(48px,5px) rotate(2deg)}
  48%{transform:translate(52px,12px) rotate(2.5deg)}
  100%{transform:translate(0,0) rotate(0)}
}
@media(prefers-reduced-motion:reduce){
  .ion-motion,.pushing .ion-motion,.show-result .ion-motion{animation:none}
}
