
/* Lightweight character performance; gameplay geometry stays unchanged. */
@keyframes jemonoHover{0%,100%{translate:0 0;rotate:-2deg}50%{translate:0 -7px;rotate:2deg}}
@keyframes jemonoCheer{0%,100%{translate:0 0;scale:1}30%{translate:0 -13px;scale:1.06 .96}60%{translate:0 -3px;scale:.97 1.04}}
@keyframes jemonoHello{0%,100%{rotate:0deg;scale:1}35%{rotate:-8deg;scale:1.08}70%{rotate:6deg;scale:1.03}}
.hero-art img,.game-art>img,.shop-sprite,.runner-character img,.collection article img,.memory-intro img,.match-intro img,.runner-intro img,.flight-intro img{animation:jemonoHover 3.2s ease-in-out infinite}
.shop-grid article:nth-child(2n) .shop-sprite,.runner-character:nth-child(2n) img,.collection article:nth-child(2n) img{animation-delay:-1.3s}
.shop-grid article:hover .shop-sprite,.runner-character:hover img,.collection article:hover img{animation:jemonoHello .65s ease-in-out}
.memory-card.just-matched .memory-face-front img{animation:jemonoCheer .7s ease-out}
dialog[open] .win-sprite,dialog[open] #win-sprite,.memory-celebration>img,.match-celebration>img{animation:jemonoCheer 1.4s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.hero-art img,.game-art>img,.shop-sprite,.runner-character img,.collection article img,.memory-intro img,.match-intro img,.runner-intro img,.flight-intro img,.memory-card.just-matched .memory-face-front img,dialog[open] .win-sprite,dialog[open] #win-sprite,.memory-celebration>img,.match-celebration>img{animation:none!important}}
