@keyframes dotPulse{0%,80%,to{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}.animate-dot-pulse{animation:dotPulse 1.4s ease-in-out infinite}@keyframes radarWave{0%{transform:scale(.3);opacity:1}to{transform:scale(1.5);opacity:0}}.animate-radar-wave{animation:radarWave 1.5s ease-out infinite}@keyframes cubeJump{0%,to{transform:translateY(0) rotateY(0)}25%{transform:translateY(-12px) rotateY(90deg)}50%{transform:translateY(0) rotateY(180deg)}75%{transform:translateY(-6px) rotateY(270deg)}}.animate-cube-jump{animation:cubeJump 1s ease-in-out infinite}@keyframes logoPulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes logoGlow{0%,to{opacity:0}50%{opacity:.5}}.animate-logo-pulse{animation:logoPulse 2s ease-in-out infinite}.animate-logo-glow{animation:logoGlow 2s ease-in-out infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.animate-shimmer{animation:shimmer 1.5s infinite}@keyframes progressCircle{0%{stroke-dashoffset:132}50%{stroke-dashoffset:33}to{stroke-dashoffset:132}}@keyframes showCheck{0%,40%{opacity:0;transform:scale(.5)}50%,60%{opacity:1;transform:scale(1)}70%,to{opacity:0;transform:scale(.5)}}.animate-progress-circle{animation:progressCircle 2s ease-in-out infinite}.animate-show-check{animation:showCheck 2s ease-in-out infinite}@keyframes slideInFromBottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}.animate-slide-in-from-bottom{animation:slideInFromBottom .3s cubic-bezier(.32,.72,0,1) forwards}@keyframes zoomIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.animate-zoom-in{animation:zoomIn .2s cubic-bezier(.32,.72,0,1) forwards}@keyframes springBounce{0%{transform:scale(.9)}50%{transform:scale(1.02)}to{transform:scale(1)}}.animate-spring-bounce{animation:springBounce .4s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes tapFeedback{0%{transform:scale(1)}50%{transform:scale(.95)}to{transform:scale(1)}}.animate-tap{animation:tapFeedback .15s ease-out forwards}@keyframes pullRefreshSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-pull-refresh{animation:pullRefreshSpin .8s linear infinite}@keyframes navIndicatorSlide{0%{transform:scaleX(0);opacity:0}to{transform:scaleX(1);opacity:1}}.animate-nav-indicator{animation:navIndicatorSlide .2s ease-out forwards}@keyframes pulseSubtle{0%,to{opacity:1}50%{opacity:.92}}.animate-pulse-subtle{animation:pulseSubtle 3s ease-in-out infinite}@keyframes bounceGentle{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.animate-bounce-gentle{animation:bounceGentle 2s ease-in-out infinite}
