@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes glow{0%,to{box-shadow:0 0 20px rgba(59,130,246,.3)}50%{box-shadow:0 0 30px rgba(59,130,246,.6)}}@keyframes pulse-slow{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}@keyframes slide-in-left{0%{transform:translateX(-50px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes slide-in-right{0%{transform:translateX(50px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes fade-in-up{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes rotate-slow{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.animate-float{animation:float 3s ease-in-out infinite}.animate-glow{animation:glow 2s ease-in-out infinite}.animate-pulse-slow{animation:pulse-slow 3s ease-in-out infinite}.animate-slide-in-left{animation:slide-in-left .8s ease-out}.animate-slide-in-right{animation:slide-in-right .8s ease-out}.animate-fade-in-up{animation:fade-in-up .8s ease-out}.animate-rotate-slow{animation:rotate-slow 20s linear infinite}.animate-shimmer{background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.2) 20%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0));background-size:200% auto;animation:shimmer 2s linear infinite}.hover-lift:hover{transform:translateY(-5px);transition:transform .3s ease}.hover-glow:hover{box-shadow:0 10px 30px rgba(0,0,0,.2);transition:box-shadow .3s ease}.skill-badge:first-child{animation-delay:.1s}.skill-badge:nth-child(2){animation-delay:.2s}.skill-badge:nth-child(3){animation-delay:.3s}.skill-badge:nth-child(4){animation-delay:.4s}.skill-badge:nth-child(5){animation-delay:.5s}.skill-badge:nth-child(6){animation-delay:.6s}.skill-badge:nth-child(7){animation-delay:.7s}.skill-badge:nth-child(8){animation-delay:.8s}.gradient-text{background:linear-gradient(-45deg,#ee7752,#e73c7e,#23a6d5,#23d5ab);background-size:400% 400%;animation:gradient 3s ease infinite;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}@keyframes gradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}