@keyframes pet-bounce{0%{transform:scale(1) translateY(0)}30%{transform:scale(1.2) translateY(-16px)}50%{transform:scale(1.05) translateY(-4px)}70%{transform:scale(1.1) translateY(-8px)}to{transform:scale(1) translateY(0)}}@keyframes pet-shake{0%,to{transform:translateX(0) rotate(0deg)}15%{transform:translateX(-6px) rotate(-3deg)}30%{transform:translateX(6px) rotate(3deg)}45%{transform:translateX(-4px) rotate(-2deg)}60%{transform:translateX(4px) rotate(2deg)}75%{transform:translateX(-2px) rotate(-1deg)}}@keyframes score-fly-up{0%{opacity:1;transform:translateY(0) scale(1)}50%{opacity:.8;transform:translateY(-30px) scale(1.2)}to{opacity:0;transform:translateY(-60px) scale(.8)}}@keyframes sparkle{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(var(--sparkle-x,20px),var(--sparkle-y,-20px)) scale(0)}}@keyframes heart-break{0%{transform:scale(1);opacity:1}30%{transform:scale(1.3);opacity:1}to{transform:scale(0);opacity:0}}@keyframes streak-pulse{0%{transform:scale(1)}50%{transform:scale(1.3)}to{transform:scale(1)}}@keyframes flash-red{0%{background-color:rgba(239,68,68,.2)}to{background-color:transparent}}@keyframes pet-happy{0%{transform:scale(1) rotate(0deg)}20%{transform:scale(1.2) rotate(-5deg)}40%{transform:scale(1.15) rotate(5deg)}60%{transform:scale(1.2) rotate(-3deg)}80%{transform:scale(1.1) rotate(3deg)}to{transform:scale(1) rotate(0deg)}}@keyframes celebration-spin{0%{transform:scale(0) rotate(0deg);opacity:0}50%{transform:scale(1.3) rotate(180deg);opacity:1}to{transform:scale(1) rotate(1turn);opacity:0}}@keyframes meter-fill{0%{transform:scaleX(0)}60%{transform:scaleX(1.1)}to{transform:scaleX(1)}}@keyframes heart-idle-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes score-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes bg-shimmer{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes food-fly{0%{opacity:1;transform:translateY(0) scale(1)}70%{opacity:1;transform:translateY(-80px) scale(1.2)}to{opacity:0;transform:translateY(-90px) scale(.5)}}@keyframes star-earn{0%{opacity:0;transform:scale(0) translateY(10px)}60%{opacity:1;transform:scale(1.3) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}.animate-pet-bounce{animation:pet-bounce .6s ease-out}.animate-pet-shake{animation:pet-shake .5s ease-out}.animate-score-fly{animation:score-fly-up .8s ease-out forwards}.animate-sparkle{animation:sparkle .6s ease-out forwards}.animate-heart-break{animation:heart-break .5s ease-out forwards}.animate-streak-pulse{animation:streak-pulse .4s ease-out}.animate-flash-red{animation:flash-red .4s ease-out}.animate-pet-happy{animation:pet-happy .8s ease-out}.animate-celebration-spin{animation:celebration-spin 1s ease-out}.animate-meter-fill{animation:meter-fill .3s ease-out;transform-origin:left}.animate-heart-idle-bounce{animation:heart-idle-bounce 1.5s ease-in-out infinite}.animate-score-pulse{animation:score-pulse 2s ease-in-out infinite}.animate-food-fly{animation:food-fly .8s ease-out forwards}.animate-star-earn{animation:star-earn .6s ease-out forwards}.game-bg-shimmer{background:linear-gradient(135deg,rgba(168,85,247,.08),rgba(59,130,246,.08) 25%,rgba(16,185,129,.08) 50%,rgba(245,158,11,.08) 75%,rgba(239,68,68,.08));background-size:300% 300%;animation:bg-shimmer 15s ease infinite}.dark .game-bg-shimmer{background:linear-gradient(135deg,rgba(168,85,247,.12),rgba(59,130,246,.12) 25%,rgba(16,185,129,.12) 50%,rgba(245,158,11,.12) 75%,rgba(239,68,68,.12));background-size:300% 300%;animation:bg-shimmer 15s ease infinite}.card-face{backface-visibility:hidden;-webkit-backface-visibility:hidden}@keyframes card-matched-pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.4)}50%{box-shadow:0 0 16px 4px rgba(34,197,94,.3)}to{box-shadow:0 0 0 0 rgba(34,197,94,0)}}@keyframes card-mismatch-shake{0%,to{transform:translateX(0)}15%{transform:translateX(-4px)}30%{transform:translateX(4px)}45%{transform:translateX(-3px)}60%{transform:translateX(3px)}75%{transform:translateX(-2px)}}.animate-card-matched{animation:card-matched-pulse .6s ease-out}.animate-card-mismatch{animation:card-mismatch-shake .4s ease-out}