@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes modalIn{0%{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes modalOut{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.95) translateY(8px)}}@keyframes drawerIn{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@keyframes drawerOut{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}@keyframes drawerInLeft{0%{opacity:0;transform:translateX(-100%)}to{opacity:1;transform:translateX(0)}}@keyframes toastIn{0%{opacity:0;transform:translateX(-50%) translateY(16px) scale(.95)}to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}@keyframes toastOut{0%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}to{opacity:0;transform:translateX(-50%) translateY(8px) scale(.95)}}@keyframes loadbar{0%{transform:translateX(-100%)}to{transform:translateX(400%)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}@keyframes beat{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes pingDot{75%,to{transform:scale(2);opacity:0}}@keyframes drawLine{to{stroke-dashoffset:0}}@keyframes growBar{0%{transform:scaleY(0);transform-origin:bottom}to{transform:scaleY(1);transform-origin:bottom}}@keyframes growBarH{0%{transform:scaleX(0);transform-origin:left}to{transform:scaleX(1);transform-origin:left}}@keyframes countUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes bounceIn{0%{transform:scale(.3);opacity:0}50%{transform:scale(1.05)}70%{transform:scale(.9)}to{transform:scale(1);opacity:1}}@keyframes wiggle{0%,to{transform:rotate(0deg)}25%{transform:rotate(-4deg)}75%{transform:rotate(4deg)}}.anim-fade-in{animation:fadeIn .25s ease both}.anim-fade-in-up{animation:fadeInUp .3s ease both}.anim-fade-in-down{animation:fadeInDown .25s ease both}.anim-scale-in{animation:fadeInScale .2s cubic-bezier(.2,.8,.2,1) both}.anim-delay-50{animation-delay:50ms}.anim-delay-100{animation-delay:.1s}.anim-delay-150{animation-delay:.15s}.anim-delay-200{animation-delay:.2s}.anim-delay-250{animation-delay:.25s}.anim-delay-300{animation-delay:.3s}.loadbar-wrap{height:3px;overflow:hidden;background:var(--brand-50);border-radius:2px;position:relative}.loadbar{position:absolute;inset:0;background:var(--brand-grad);border-radius:2px;animation:loadbar 1.8s ease-in-out infinite;width:40%}.skeleton{background:linear-gradient(90deg,var(--bg-2) 25%,var(--hover) 50%,var(--bg-2) 75%);background-size:200% 100%;animation:shimmer 1.4s ease infinite;border-radius:6px}.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--brand-500);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}.spinner--sm{width:13px;height:13px;border-width:1.5px}.spinner--lg{width:24px;height:24px;border-width:3px}.ping-dot{position:relative;display:inline-flex}.ping-dot:before{content:"";position:absolute;inset:0;border-radius:50%;background:currentColor;animation:pingDot 1.5s ease-in-out infinite}@keyframes dsModalIn{0%{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes dsDrawerIn{0%{opacity:0;transform:translateX(24px)}to{opacity:1;transform:translateX(0)}}@keyframes dsDrawerInLeft{0%{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:translateX(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes toastSlideIn{0%{opacity:0;transform:translateX(16px) scale(.96)}to{opacity:1;transform:translateX(0) scale(1)}}@keyframes toastSlideOut{0%{opacity:1;transform:translateX(0) scale(1)}to{opacity:0;transform:translateX(16px) scale(.96)}}@keyframes toastProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}