@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideInUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideInDown{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideInLeft{0%{transform:translateX(-100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes slideInRight{0%{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(.9);opacity:0}}@keyframes bounce{0%,20%,53%,80%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1);transform:translateZ(0)}40%,43%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-30px,0)}70%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.animate-fade-in{animation:fadeIn .3s ease-out forwards}.animate-fade-out{animation:fadeOut .3s ease-in forwards}.animate-slide-in-up{animation:slideInUp .4s cubic-bezier(.25,.46,.45,.94) forwards}.animate-slide-in-down{animation:slideInDown .4s cubic-bezier(.25,.46,.45,.94) forwards}.animate-slide-in-left{animation:slideInLeft .4s cubic-bezier(.25,.46,.45,.94) forwards}.animate-slide-in-right{animation:slideInRight .4s cubic-bezier(.25,.46,.45,.94) forwards}.animate-scale-in{animation:scaleIn .3s cubic-bezier(.34,1.56,.64,1) forwards}.animate-scale-out{animation:scaleOut .2s ease-in forwards}.animate-bounce{animation:bounce 1s}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-spin{animation:spin 1s linear infinite}.transition-all{transition:all .3s ease}.transition-colors{transition:color .3s ease,background-color .3s ease,border-color .3s ease}.transition-transform{transition:transform .3s ease}.transition-opacity{transition:opacity .3s ease}.hover-scale:hover{transform:scale(1.05)}.hover-lift:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15)}.hover-glow:hover{box-shadow:0 0 20px rgba(59,130,246,.5)}.loading-dots:after{content:"";animation:dots 1.5s steps(5) infinite}@keyframes dots{0%,20%{color:transparent;text-shadow:.25em 0 0 transparent,.5em 0 0 transparent}40%{color:currentColor;text-shadow:.25em 0 0 transparent,.5em 0 0 transparent}60%{text-shadow:.25em 0 0 currentColor,.5em 0 0 transparent}80%,to{text-shadow:.25em 0 0 currentColor,.5em 0 0 currentColor}}.toast-enter{animation:slideInRight .3s ease-out}.toast-exit{animation:slideInRight .3s ease-in reverse}.modal-backdrop{animation:fadeIn .2s ease-out}.modal-content{animation:scaleIn .3s cubic-bezier(.34,1.56,.64,1)}.drawer-enter{animation:slideInLeft .3s ease-out}.drawer-exit{animation:slideInLeft .3s ease-in reverse}.will-change-transform{will-change:transform}.will-change-opacity{will-change:opacity}.will-change-auto{will-change:auto}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.animate-bounce,.animate-pulse,.animate-spin{animation:none}}.dark-mode-transition{transition:background-color .3s ease,color .3s ease,border-color .3s ease}.shake{animation:shake .5s ease-in-out}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-5px)}20%,40%,60%,80%{transform:translateX(5px)}}.progress-bar{position:relative;overflow:hidden}.progress-bar:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.4),transparent);animation:shimmer 2s infinite}@keyframes shimmer{0%{left:-100%}to{left:100%}}