@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fade-in{animation:fadeIn .5s ease-in-out}@keyframes arrowUp{0%{transform:translateY(0)}50%{transform:translateY(-10px)}to{transform:translateY(0)}}.arrow-up{animation:arrowUp .6s ease-in-out}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-3px)}20%,40%,60%,80%{transform:translateX(3px)}}.shake{animation:shake .3s ease-in-out}.scale-on-hover{transition:transform .3s ease-in-out}.scale-on-hover:hover{transform:scale(1.05)}@keyframes slideIn{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}.slide-in{animation:slideIn .5s ease-in-out}.tab-indicator{position:absolute;bottom:0;height:2px;background-color:#333;transition:all .3s ease-in-out}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-8px)}to{transform:translateY(0)}}.float{animation:float 3s ease-in-out infinite}@keyframes scale{0%{transform:scale(1)}to{transform:scale(1.05)}}.scale{animation:scale .3s ease-in-out forwards}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-15px)}60%{transform:translateY(-7px)}}.bounce{animation:bounce 2s ease infinite}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.rotate{animation:rotate 2s linear infinite}@keyframes flip{0%{transform:perspective(400px) rotateY(0)}to{transform:perspective(400px) rotateY(180deg)}}.flip{animation:flip .5s ease-in-out}@keyframes carouselSlide{0%{transform:translateX(10%);opacity:0}to{transform:translateX(0);opacity:1}}.carousel-slide{animation:carouselSlide .5s ease-in-out}.button-hover{transition:transform .3s ease-in-out,box-shadow .3s ease-in-out}.button-hover:hover{transform:translateY(-2px);box-shadow:0 4px 8px rgba(0,0,0,.2)}.card-hover{transition:transform .4s ease,box-shadow .4s ease}.card-hover:hover{transform:translateY(-5px);box-shadow:0 8px 16px rgba(0,0,0,.1)}.page-transition-enter{opacity:0;transform:translateY(20px)}.page-transition-enter-active{opacity:1;transform:translateY(0);transition:opacity .5s ease,transform .5s ease}.page-transition-exit{opacity:1}.page-transition-exit-active{opacity:0;transition:opacity .5s ease}@keyframes pricePulsePositive{0%{background-color:transparent}50%{background-color:rgba(76,175,80,.2)}to{background-color:transparent}}.price-pulse-positive{animation:pricePulsePositive 2s ease}@keyframes pricePulseNegative{0%{background-color:transparent}50%{background-color:rgba(244,67,54,.2)}to{background-color:transparent}}.price-pulse-negative{animation:pricePulseNegative 2s ease}.badge-icon{transition:transform .3s ease-in-out}.badge-icon:hover{transform:scale(1.2)}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background-color:gold;color:#333;padding:10px 20px;border-radius:4px;z-index:1000;animation:fadeIn .3s ease-in-out,fadeOut .3s 1.7s forwards}.toast-message{font-weight:700}@keyframes notificationSlide{0%{transform:translateY(-100%);opacity:0}10%{transform:translateY(0);opacity:1}90%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}.notification-toast{animation:notificationSlide 4s forwards}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.pulse{animation:pulse 1s infinite}