@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:translate(0)rotate(0)}15%{transform:translate(-6px)rotate(-3deg)}30%{transform:translate(6px)rotate(3deg)}45%{transform:translate(-4px)rotate(-2deg)}60%{transform:translate(4px)rotate(2deg)}75%{transform:translate(-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%{opacity:1;transform:scale(1)}30%{opacity:1;transform:scale(1.3)}to{opacity:0;transform:scale(0)}}@keyframes streak-pulse{0%{transform:scale(1)}50%{transform:scale(1.3)}to{transform:scale(1)}}@keyframes flash-red{0%{background-color:#ef444433}to{background-color:#0000}}@keyframes pet-happy{0%{transform:scale(1)rotate(0)}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(0)}}@keyframes celebration-spin{0%{opacity:0;transform:scale(0)rotate(0)}50%{opacity:1;transform:scale(1.3)rotate(180deg)}to{opacity:0;transform:scale(1)rotate(360deg)}}@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%{background-position:100%}to{background-position:0%}}@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:.6s ease-out pet-bounce}.animate-pet-shake{animation:.5s ease-out pet-shake}.animate-score-fly{animation:.8s ease-out forwards score-fly-up}.animate-sparkle{animation:.6s ease-out forwards sparkle}.animate-heart-break{animation:.5s ease-out forwards heart-break}.animate-streak-pulse{animation:.4s ease-out streak-pulse}.animate-flash-red{animation:.4s ease-out flash-red}.animate-pet-happy{animation:.8s ease-out pet-happy}.animate-celebration-spin{animation:1s ease-out celebration-spin}.animate-meter-fill{transform-origin:0;animation:.3s ease-out meter-fill}.animate-heart-idle-bounce{animation:1.5s ease-in-out infinite heart-idle-bounce}.animate-score-pulse{animation:2s ease-in-out infinite score-pulse}.animate-food-fly{animation:.8s ease-out forwards food-fly}.animate-star-earn{animation:.6s ease-out forwards star-earn}.game-bg-shimmer{background:linear-gradient(135deg,#a855f714 0%,#3b82f614 25%,#10b98114 50%,#f59e0b14 75%,#ef444414 100%) 0 0/300% 300%;animation:15s infinite bg-shimmer}.dark .game-bg-shimmer{background:linear-gradient(135deg,#a855f71f 0%,#3b82f61f 25%,#10b9811f 50%,#f59e0b1f 75%,#ef44441f 100%) 0 0/300% 300%;animation:15s infinite bg-shimmer}.card-face{backface-visibility:hidden}@keyframes card-matched-pulse{0%{box-shadow:0 0 #22c55e66}50%{box-shadow:0 0 16px 4px #22c55e4d}to{box-shadow:0 0 #22c55e00}}@keyframes card-mismatch-shake{0%,to{transform:translate(0)}15%{transform:translate(-4px)}30%{transform:translate(4px)}45%{transform:translate(-3px)}60%{transform:translate(3px)}75%{transform:translate(-2px)}}.animate-card-matched{animation:.6s ease-out card-matched-pulse}.animate-card-mismatch{animation:.4s ease-out card-mismatch-shake}
