@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes bounce{0%,to{transform:translateY(-5%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-fade-in{animation:fadeIn .3s ease-out forwards}.animate-fade-in-scale{animation:fadeInScale .3s ease-out forwards}.animate-slide-in-right{animation:slideInRight .3s ease-out forwards}.animate-slide-in-left{animation:slideInLeft .3s ease-out forwards}.animate-slide-up{animation:slideUp .4s ease-out forwards}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-spin{animation:spin 1s linear infinite}.animate-bounce{animation:bounce 1s infinite}.skeleton{background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.1) 20%,rgba(255,255,255,.3) 60%,rgba(255,255,255,0));background-size:1000px 100%;animation:shimmer 2s infinite}.dark .skeleton{background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.03) 20%,rgba(255,255,255,.05) 60%,rgba(255,255,255,0))}.animate-stagger>:first-child{animation-delay:0s}.animate-stagger>:nth-child(2){animation-delay:50ms}.animate-stagger>:nth-child(3){animation-delay:.1s}.animate-stagger>:nth-child(4){animation-delay:.15s}.animate-stagger>:nth-child(5){animation-delay:.2s}.animate-stagger>:nth-child(6){animation-delay:.25s}.animate-stagger>:nth-child(7){animation-delay:.3s}.animate-stagger>:nth-child(8){animation-delay:.35s}.transition-smooth{transition:all .2s cubic-bezier(.4,0,.2,1)}.transition-fast{transition:all .15s cubic-bezier(.4,0,.2,1)}.transition-slow{transition:all .3s cubic-bezier(.4,0,.2,1)}.card-hover{transition:transform .2s ease,box-shadow .2s ease}.card-hover:hover{transform:translateY(-4px);box-shadow:0 12px 24px -8px rgba(0,0,0,.15)}.dark .card-hover:hover{box-shadow:0 12px 24px -8px rgba(0,0,0,.5)}.btn-ripple{position:relative;overflow:hidden}.btn-ripple: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%);transition:width .6s,height .6s}.btn-ripple:active:after{width:300px;height:300px}.focus-ring{outline:none;transition:box-shadow .2s ease}.focus-ring:focus-visible{box-shadow:0 0 0 3px rgba(59,130,246,.4)}.dark .focus-ring:focus-visible{box-shadow:0 0 0 3px rgba(96,165,250,.4)}.spinner{border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;width:20px;height:20px;animation:spin .6s linear infinite}.dark .spinner{border-color:rgba(255,255,255,.8) rgba(255,255,255,.2) rgba(255,255,255,.2)}.progress-bar{background:rgba(59,130,246,.1);height:8px}.progress-bar,.progress-bar-fill{position:relative;overflow:hidden;border-radius:9999px}.progress-bar-fill{height:100%;background:linear-gradient(90deg,#3b82f6,#8b5cf6);transition:width .3s ease}.progress-bar-fill:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3) 50%,transparent);animation:shimmer 2s infinite}.tooltip{opacity:0;transform:translateY(4px);transition:opacity .2s ease,transform .2s ease;pointer-events:none}.tooltip.show{opacity:1;transform:translateY(0)}.badge-pulse{position:relative}.badge-pulse:before{content:"";position:absolute;top:-2px;right:-2px;width:100%;height:100%;border-radius:inherit;background:inherit;opacity:.4;animation:pulse 2s ease infinite}.glass{background:rgba(255,255,255,.1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}.dark .glass{background:rgba(0,0,0,.2);border-color:rgba(255,255,255,.1)}.gradient-text{background:linear-gradient(135deg,#3b82f6,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
/* !- Do not delete this block.
 *
 * Instructions:
 * - Reusable animation and transition utilities for UI polish
 * - Includes: fade-ins, slides, skeleton loaders, hover effects, focus rings
 * - Dark mode support for all animations
 * - Performance-optimized with GPU acceleration
 * - Import in global styles or component-specific CSS
 */