html{scroll-behavior:smooth}body,html{overflow-x:hidden}@keyframes gradient-shift{0%,to{background-position:0 50%}50%{background-position:100% 50%}}@keyframes pulse-glow{0%,to{box-shadow:0 0 20px hsl(var(--primary)/.3)}50%{box-shadow:0 0 40px hsl(var(--primary)/.6)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.text-shimmer{background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.8) 50%,rgba(255,255,255,0));background-size:1000px 100%;animation:shimmer 3s infinite;-webkit-background-clip:text;background-clip:text}.horizontal-scroll-container{overflow-x:hidden;overflow-y:hidden}.module-item{transition:all .3s cubic-bezier(.4,0,.2,1)}.module-item:hover{transform:scale(1.05) translateY(-5px)}a,button{transition:all .2s ease}:focus-visible{outline:2px solid hsl(var(--primary));outline-offset:2px;border-radius:4px}@supports (backdrop-filter:blur(10px)){.backdrop-blur-lg{backdrop-filter:blur(16px)}.backdrop-blur-sm{backdrop-filter:blur(4px)}}.gradient-text-animated{background-size:200% auto;animation:gradient-shift 3s ease infinite}@keyframes bounce-slow{0%,to{transform:translateY(0)}50%{transform:translateY(10px)}}.animate-bounce-slow{animation:bounce-slow 2s ease-in-out infinite}@keyframes card-reveal{0%{opacity:0;transform:scale(.9) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:hsl(var(--muted))}::-webkit-scrollbar-thumb{background:hsl(var(--primary)/.5);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:hsl(var(--primary)/.8)}.horizontal-section{flex-shrink:0}.perspective-1000{perspective:1000px}.glow-on-hover:hover{box-shadow:0 0 30px hsl(var(--primary)/.5)}::-moz-selection{background-color:hsl(var(--primary)/.3);color:hsl(var(--primary-foreground))}::selection{background-color:hsl(var(--primary)/.3);color:hsl(var(--primary-foreground))}@keyframes pulse-opacity{0%,to{opacity:1}50%{opacity:.5}}.loading-pulse{animation:pulse-opacity 2s ease-in-out infinite}