@keyframes mascot-bounce{0%{opacity:0;transform:translateY(14px) scale(.6)}55%{opacity:1;transform:translateY(-8px) scale(1.06)}80%{transform:translateY(2px) scale(.98)}to{transform:translateY(0) scale(1)}}.anim-mascot-bounce,img.anim-auth-pop[src^="/mascot/"]{animation:mascot-bounce .52s cubic-bezier(.2,0,0,1) both}@media (prefers-reduced-motion:reduce){.anim-mascot-bounce,img.anim-auth-pop[src^="/mascot/"]{animation:fade-in-fast 80ms linear both}}@keyframes pm-bump{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes pm-missed-pulse{0%,to{opacity:1}50%{opacity:.4}}.anim-pm-bump{animation:pm-bump .15s cubic-bezier(.2,0,0,1) both}.anim-pm-missed{animation:pm-missed-pulse .4s linear 3}@media (prefers-reduced-motion:reduce){.anim-pm-bump,.anim-pm-missed{animation:none}}@keyframes tile-lift{0%{transform:scale(1)}to{transform:scale(1.05)}}@keyframes tile-reveal-fade{0%{opacity:0}to{opacity:1}}@keyframes tile-reveal-pulse{0%,to{opacity:1}50%{opacity:.4}}.anim-tile-lift{animation:tile-lift .1s cubic-bezier(0,0,0,1) both}.anim-tile-reveal{animation:tile-reveal-fade .15s linear both,tile-reveal-pulse .4s ease-in-out .15s 2}@media (prefers-reduced-motion:reduce){.anim-tile-lift,.anim-tile-reveal{animation:none}}