@keyframes scroll{0%{transform:translateX(0) translateZ(0)}to{transform:translateX(-50%) translateZ(0)}}.hover-lift{transition:all .3s}.hover-lift:hover{transform:translateY(-.5rem);box-shadow:0 10px 15px -3px rgba(0,0,0,.1)}.hover-scale{transition:transform .3s}.hover-scale:hover{transform:scale(1.05)}.hover-glow{transition:all .3s}.hover-glow:hover{box-shadow:0 0 30px rgba(60,131,246,.15)}.dark .hover-glow:hover{box-shadow:0 0 30px rgba(43,173,238,.4)}.custom-scrollbar::-webkit-scrollbar{width:6px}.custom-scrollbar::-webkit-scrollbar-track{background:transparent}.custom-scrollbar::-webkit-scrollbar-thumb{background:rgba(60,131,246,.2);border-radius:9999px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:rgba(60,131,246,.4)}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:hsl(var(--background))}::-webkit-scrollbar-thumb{background:rgba(60,131,246,.3);border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:rgba(60,131,246,.5)}.animate-scroll{animation:scroll 60s cubic-bezier(.4,0,.2,1) infinite;will-change:transform}.animate-scroll:hover{animation-play-state:paused}.animate-float{animation:float 6s ease-in-out infinite}.animate-float,.animate-float-slow{will-change:transform;transform:translateZ(0)}.animate-float-slow{animation:float 8s ease-in-out infinite}.animate-float-slow-reverse{animation:float 8s ease-in-out infinite reverse;will-change:transform;transform:translateZ(0)}@keyframes float{0%,to{transform:translateY(0) translateZ(0)}50%{transform:translateY(-20px) translateZ(0)}}@keyframes pulse-ring{0%,to{transform:scale(1);opacity:.3}50%{transform:scale(1.15);opacity:.15}}.animate-pulse-ring{animation:pulse-ring 2s cubic-bezier(.4,0,.6,1) infinite;will-change:transform,opacity}.text-gradient-animated{background:linear-gradient(90deg,hsl(var(--primary)),hsl(var(--accent)),hsl(var(--primary-light)),hsl(var(--accent)),hsl(var(--primary)));background-size:200% auto;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:gradient-x 8s ease infinite;will-change:background-position;transform:translateZ(0)}@keyframes gradient-x{0%,to{background-position:0}50%{background-position:100%}}:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}::-moz-selection{background:hsl(var(--primary)/.3);color:hsl(var(--foreground))}::selection{background:hsl(var(--primary)/.3);color:hsl(var(--foreground))}