@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.animate-fade-in-up{animation:.3s ease-out forwards fadeInUp}.animate-fade-in{animation:.3s ease-out forwards fadeIn}.animate-slide-in-right{animation:.3s ease-out forwards slideInRight}.animate-slide-in-left{animation:.3s ease-out forwards slideInLeft}.animate-scale-in{animation:.3s ease-out forwards scaleIn}.stagger-1{animation-delay:50ms}.stagger-2{animation-delay:.1s}.stagger-3{animation-delay:.15s}.stagger-4{animation-delay:.2s}.stagger-5{animation-delay:.25s}.transition-smooth{transition:all .3s cubic-bezier(.4,0,.2,1)}.transition-smooth-fast{transition:all .15s cubic-bezier(.4,0,.2,1)}.hover-lift{transition:transform .2s ease-out,box-shadow .2s ease-out}.hover-lift:hover{transform:translateY(-4px);box-shadow:0 10px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.skeleton-shimmer{background:linear-gradient(90deg,#fff0 0%,#fff3 50%,#fff0 100%) 0 0/1000px 100%;animation:2s infinite shimmer}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:focus-visible{outline:2px solid hsl(var(--primary));outline-offset:2px;transition:outline-offset .15s}.card-glow{transition:all .3s;position:relative}.card-glow:before{content:"";border-radius:inherit;opacity:0;background:radial-gradient(600px circle at var(--mouse-x)var(--mouse-y),#3b82f61a,transparent 40%);pointer-events:none;transition:opacity .3s;position:absolute;inset:0}.card-glow:hover:before{opacity:1}.button-press{transition:transform .15s}.button-press:active{transform:scale(.98)}@keyframes badge-pulse{0%,to{opacity:1}50%{opacity:.5}}.badge-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite badge-pulse}.gradient-text{background:linear-gradient(135deg,hsl(var(--primary))0%,hsl(var(--primary))50%,hsl(var(--accent))100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}
