@keyframes fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-in-up{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes bounce-in{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes pulse-glow{0%,to{box-shadow:0 0 0 0 rgba(var(--primary),.4)}50%{box-shadow:0 0 0 8px rgba(var(--primary),0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes glow-pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes gradient-shift{0%,to{background-position:0 50%}50%{background-position:100% 50%}}@keyframes rotate-slow{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.animate-fade-in{animation:fade-in .6s ease-out forwards}.animate-slide-in-right{animation:slide-in-right .6s ease-out forwards}.animate-slide-in-left{animation:slide-in-left .6s ease-out forwards}.animate-slide-in-up{animation:slide-in-up .6s ease-out forwards}.animate-scale-in{animation:scale-in .4s ease-out forwards}.animate-bounce-in{animation:bounce-in .6s ease-out forwards}.animate-pulse-glow{animation:pulse-glow 2s infinite}.animate-shimmer{background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);background-size:200% 100%;animation:shimmer 2s infinite}.animate-float{animation:float 3s ease-in-out infinite}.animate-glow-pulse{animation:glow-pulse 2s ease-in-out infinite}.animate-gradient-shift{background-size:200% 200%;animation:gradient-shift 3s ease infinite}.animate-rotate-slow{animation:rotate-slow 20s linear infinite}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-2,.line-clamp-3{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3}.transition-all{transition:all .2s ease-in-out}.hover-lift:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.1)}.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.gradient-text{background:linear-gradient(135deg,hsl(var(--primary)),hsl(var(--accent)));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.glass{background:rgba(255,255,255,.1);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}.focus-ring:focus{outline:2px solid hsl(var(--primary));outline-offset:2px}.custom-scrollbar::-webkit-scrollbar{width:6px}.custom-scrollbar::-webkit-scrollbar-track{background:hsl(var(--muted));border-radius:3px}.custom-scrollbar::-webkit-scrollbar-thumb{background:hsl(var(--muted-foreground));border-radius:3px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:hsl(var(--primary))}