@keyframes skeleton-shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.skeleton-shimmer{animation:skeleton-shimmer 2s linear infinite;background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.2) 20%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0));background-size:1000px 100%}.dark .skeleton-shimmer{background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.05) 20%,rgba(255,255,255,.1) 60%,rgba(255,255,255,0))}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .3s ease-out}@keyframes slideInRight{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}.slide-in-right{animation:slideInRight .3s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}.slide-in{animation:slideIn .4s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.slide-up{animation:slideUp .4s ease-out}@keyframes zoomIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.zoom-in{animation:zoomIn .3s ease-out}.card-hover{transition:all .3s cubic-bezier(.4,0,.2,1);will-change:transform,box-shadow}.card-hover:hover{transform:translateY(-4px) scale(1.02);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.dark .card-hover:hover{box-shadow:0 20px 25px -5px rgba(0,0,0,.3),0 10px 10px -5px rgba(0,0,0,.2)}.button-hover{position:relative;overflow:hidden;transition:all .3s ease;will-change:transform,box-shadow}.button-hover:hover{transform:translateY(-2px);box-shadow:0 10px 20px rgba(0,0,0,.15)}.button-hover:active{transform:translateY(0);box-shadow:0 5px 10px rgba(0,0,0,.1)}.ripple-effect{position:relative;overflow:hidden}.ripple-effect:after{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:rgba(255,255,255,.5);transform:translate(-50%,-50%);pointer-events:none}.ripple-effect:active:after{width:100px;height:100px;animation:ripple .6s ease-out}.page-transition-enter{transform:translateY(20px)}.page-transition-exit{transform:translateY(0)}.page-transition-exit-active{transform:translateY(-20px);transition:opacity .2s ease-in,transform .2s ease-in}.glow-on-hover{transition:all .3s ease}.glow-on-hover:hover{box-shadow:0 0 20px rgba(59,130,246,.5)}.dark .glow-on-hover:hover{box-shadow:0 0 20px rgba(96,165,250,.6)}@keyframes pulse-slow{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}.pulse-hover:hover{animation:pulse-slow 2s ease-in-out infinite}@keyframes bounce-success{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}.bounce-success{animation:bounce-success .8s ease}@keyframes flash{0%,to{opacity:1}50%{opacity:.5;background-color:rgba(59,130,246,.1)}}.flash-update{animation:flash .4s ease}.shake-error{animation:shake .5s ease}.scale-on-hover{transition:transform .3s ease;will-change:transform}.scale-on-hover:hover{transform:scale(1.05)}@keyframes fade-slide-in{0%{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:translateX(0)}}.fade-slide-in{animation:fade-slide-in .3s ease-out}.smooth-scroll{scroll-behavior:smooth}.group:hover .group-hover-scale{transform:scale(1.1);transition:transform .3s ease}.group:hover .group-hover-fade{opacity:1;transition:opacity .3s ease}@keyframes gradient-shift{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.gradient-animate{background-size:200% 200%;animation:gradient-shift 3s ease infinite}@keyframes loading-bar{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.loading-bar{animation:loading-bar 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.pulse{animation:pulse 1.5s cubic-bezier(.4,0,.6,1) infinite}.smooth-height{transition:height .3s ease-in-out}.card-hover{transition:transform .2s ease,box-shadow .2s ease}.card-hover:hover{transform:translateY(-4px);box-shadow:0 10px 25px rgba(0,0,0,.1)}@keyframes ripple{0%{transform:scale(0);opacity:1}to{transform:scale(4);opacity:0}}.ripple{animation:ripple .6s ease-out}.stagger-fade-in{animation:fadeIn .4s ease-out}.stagger-fade-in:first-child{animation-delay:0s}.stagger-fade-in:nth-child(2){animation-delay:.1s}.stagger-fade-in:nth-child(3){animation-delay:.2s}.stagger-fade-in:nth-child(4){animation-delay:.3s}.stagger-fade-in:nth-child(5){animation-delay:.4s}.page-transition-enter{opacity:0;transform:translateY(10px)}.page-transition-enter-active{opacity:1;transform:translateY(0);transition:opacity .3s ease-out,transform .3s ease-out}.page-transition-exit{opacity:1}.page-transition-exit-active{opacity:0;transition:opacity .2s ease-in}@keyframes loading-dots{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.loading-dot{animation:loading-dots 1.4s ease-in-out infinite both}.loading-dot:first-child{animation-delay:-.32s}.loading-dot:nth-child(2){animation-delay:-.16s}@keyframes glow{0%,to{box-shadow:0 0 5px rgba(59,130,246,.5)}50%{box-shadow:0 0 20px rgba(59,130,246,.8)}}.glow{animation:glow 2s ease-in-out infinite}.spin-slow{animation:spin 3s linear infinite}.spin-fast{animation:spin .5s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}to{transform:scale(1)}}.bounce-in{animation:bounceIn .6s ease-out}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}.shake{animation:shake .5s ease-in-out}@keyframes progress{0%{width:0}}.progress-bar{animation:progress 2s ease-out}