@keyframes pulse-subtle{0%,to{opacity:1}50%{opacity:.8}}.animate-pulse-subtle{animation:3s ease-in-out infinite pulse-subtle}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.animate-float{animation:3s ease-in-out infinite float}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.shimmer{background:linear-gradient(90deg,#fff0 0%,#ffffff4d 50%,#fff0 100%) 0 0/1000px 100%;animation:3s infinite shimmer}@keyframes glow{0%,to{box-shadow:0 0 20px #8b5cf680}50%{box-shadow:0 0 30px #8b5cf6cc,0 0 40px #8b5cf699}}.animate-glow{animation:2s ease-in-out infinite glow}@keyframes gradient-shift{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.animate-gradient-shift{background-size:200% 200%;animation:3s infinite gradient-shift}.image-hover-zoom{transition:transform .5s,filter .5s}.image-hover-zoom:hover{filter:brightness(1.1);transform:scale(1.15)rotate(2deg)}.button-ripple{position:relative;overflow:hidden}.button-ripple:after{content:"";background:#ffffff80;border-radius:50%;width:0;height:0;transition:width .6s,height .6s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.button-ripple:hover:after{width:300px;height:300px}
