@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes ripple{0%{opacity:1;transform:scale(0)}to{opacity:0;transform:scale(4)}}@keyframes gradientShift{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.animate-fade-in{animation:fadeIn var(--transition-slow)var(--ease-out)}.animate-fade-in-up{animation:fadeInUp var(--transition-slow)var(--ease-out)}.animate-fade-in-down{animation:fadeInDown var(--transition-slow)var(--ease-out)}.animate-fade-in-left{animation:fadeInLeft var(--transition-slow)var(--ease-out)}.animate-fade-in-right{animation:fadeInRight var(--transition-slow)var(--ease-out)}.animate-scale-in{animation:scaleIn var(--transition-base)var(--ease-out)}.animate-slide-up{animation:slideUp var(--transition-slow)var(--ease-out)}.animate-slide-down{animation:slideDown var(--transition-slow)var(--ease-out)}.animate-shimmer{background:linear-gradient(90deg,var(--bg-secondary)0%,var(--bg-tertiary)50%,var(--bg-secondary)100%);background-size:1000px 100%;animation:2s linear infinite shimmer}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.animate-bounce{animation:1s infinite bounce}.animate-spin{animation:1s linear infinite spin}.animate-gradient{background-size:200% 200%;animation:3s infinite gradientShift}.stagger-fade-in>*{animation:fadeIn var(--transition-slow)var(--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}.stagger-fade-in>:nth-child(6){animation-delay:.5s}.stagger-fade-in>:nth-child(7){animation-delay:.6s}.stagger-fade-in>:nth-child(8){animation-delay:.7s}.hover-lift{transition:all var(--transition-base)var(--ease-out)}.hover-lift:hover{box-shadow:var(--shadow-xl);transform:translateY(-4px)}.hover-scale{transition:transform var(--transition-base)var(--ease-out)}.hover-scale:hover{transform:scale(1.02)}.hover-glow{transition:all var(--transition-base)var(--ease-out)}.hover-glow:hover{box-shadow:0 0 20px color-mix(in srgb,var(--color-primary)30%,transparent)}.hover-brightness{transition:filter var(--transition-base)var(--ease-out)}.hover-brightness:hover{filter:brightness(1.1)}.active-scale{transition:transform var(--transition-fast)var(--ease-out)}.active-scale:active{transform:scale(.98)}.focus-ring{transition:box-shadow var(--transition-fast)var(--ease-out)}.focus-ring:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--color-primary)30%,transparent);outline:none}.skeleton{background:linear-gradient(90deg,var(--bg-secondary)0%,var(--bg-tertiary)50%,var(--bg-secondary)100%);border-radius:var(--radius-md);background-size:200% 100%;animation:1.5s infinite shimmer}.skeleton-text{height:1em;margin-bottom:var(--spacing-2)}.skeleton-title{width:60%;height:2em;margin-bottom:var(--spacing-3)}.skeleton-avatar{border-radius:var(--radius-full);width:40px;height:40px}.skeleton-card{width:100%;height:200px}.ripple-container{position:relative;overflow:hidden}.ripple{pointer-events:none;background:#fff9;border-radius:50%;animation:.6s ease-out ripple;position:absolute;transform:scale(0)}.gradient-border{background:var(--bg-primary);border-radius:var(--radius-lg);position:relative}.gradient-border:before{content:"";border-radius:var(--radius-lg);background:var(--gradient-hero-rainbow);-webkit-mask-composite:xor;padding:2px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.gradient-border-primary:before{background:var(--gradient-primary)}.gradient-border-secondary:before{background:var(--gradient-secondary)}.scroll-fade-in{opacity:0;transition:opacity var(--transition-slow)var(--ease-out),transform var(--transition-slow)var(--ease-out);transform:translateY(30px)}.scroll-fade-in.visible{opacity:1;transform:translateY(0)}html{scroll-behavior:smooth}.parallax{transition:transform .1s ease-out}.image-zoom{overflow:hidden}.image-zoom img{transition:transform var(--transition-slow)var(--ease-out)}.image-zoom:hover img{transform:scale(1.1)}.blur-up{filter:blur(20px);transition:filter var(--transition-slow)var(--ease-out)}.blur-up.loaded{filter:blur()}.toast-enter{animation:slideDown var(--transition-base)var(--ease-out)}.toast-exit{animation:fadeInUp var(--transition-base)var(--ease-out)reverse}.modal-backdrop-enter{animation:fadeIn var(--transition-base)var(--ease-out)}.modal-backdrop-exit{animation:fadeIn var(--transition-base)var(--ease-out)reverse}.modal-content-enter{animation:scaleIn var(--transition-base)var(--ease-out)}.modal-content-exit{animation:scaleIn var(--transition-base)var(--ease-out)reverse}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
