@keyframes ping-slow{0%{transform:scale(1);opacity:.8}50%{transform:scale(1.5);opacity:0}to{transform:scale(1);opacity:0}}.animate-ping-slow{animation:ping-slow 2s cubic-bezier(0,0,.2,1) infinite}@keyframes gradient-x{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.animate-gradient-x{animation:gradient-x 3s ease infinite;background-size:200% 200%}@keyframes pulse-scale{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.animate-pulse-scale{animation:pulse-scale 2s ease-in-out infinite}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.animate-shimmer{animation:shimmer 2s linear infinite;background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.5) 50%,rgba(255,255,255,0));background-size:200% 100%}@keyframes flash-glow{0%,to{box-shadow:0 0 5px rgba(255,153,0,.5)}50%{box-shadow:0 0 15px rgba(255,153,0,.8)}}.flash-sale-glow{animation:flash-glow 2s ease-in-out infinite}@keyframes price-drop{0%{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-price-drop{animation:price-drop .3s ease-out forwards}@keyframes attention{0%,to{transform:scale(1)}10%,30%,50%,70%,90%{transform:scale(1.1)}20%,40%,60%,80%{transform:scale(1)}}.animate-attention{animation:attention 2s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.animate-fadeIn{animation:fadeIn .2s ease-in-out}