@keyframes shake{0%,to{transform:translate(0)}15%{transform:translate(-8px)}30%{transform:translate(8px)}45%{transform:translate(-6px)}60%{transform:translate(6px)}75%{transform:translate(-3px)}90%{transform:translate(3px)}}.animate-shake{animation:shake .6s ease-in-out}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.pb-safe{padding-bottom:env(safe-area-inset-bottom,0)}*{-webkit-tap-highlight-color:transparent}@keyframes pulse-green{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse-green{animation:pulse-green 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes slide-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slide-up{animation:slide-up .3s ease-out}@keyframes fade-in-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in-up{animation:fade-in-up .4s ease-out both}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.animate-shimmer{background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.08) 50%,transparent 100%);background-size:200% 100%;animation:shimmer 3s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-6px) rotate(3deg)}}.animate-float{animation:float 4s ease-in-out infinite}@keyframes glow-pulse{0%,to{box-shadow:0 0 #10b98100}50%{box-shadow:0 0 0 4px #10b98126}}.animate-glow{animation:glow-pulse 2s ease-in-out infinite}.snap-x{scroll-snap-type:x mandatory}.snap-start{scroll-snap-align:start}@keyframes score-pop{0%{transform:scale(.8);opacity:0}60%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}.animate-score-pop{animation:score-pop .5s ease-out both}.text-gradient{background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}
