@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeInUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{from{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{from{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}.animate-on-scroll{opacity:0;transform:translateY(30px);transition:opacity .6s ease-out,transform .6s ease-out}.animate-on-scroll.animate-in{opacity:1;transform:translateY(0)}@keyframes glow{0%,100%{box-shadow:0 0 5px rgba(102,126,234,.5),0 0 10px rgba(102,126,234,.3),0 0 15px rgba(102,126,234,.2)}50%{box-shadow:0 0 10px rgba(102,126,234,.8),0 0 20px rgba(102,126,234,.5),0 0 30px rgba(102,126,234,.3)}}.glow-effect{animation:2s ease-in-out infinite glow}@keyframes gradientShift{0%,100%{background-position:0 50%}50%{background-position:100% 50%}}.gradient-animated{background-size:200% 200%;animation:8s infinite gradientShift}.card-hover-lift{transition:transform .3s,box-shadow .3s}.card-hover-lift:hover{transform:translateY(-10px);box-shadow:0 20px 40px rgba(0,0,0,.15)}.card-hover-scale{transition:transform .3s}.card-hover-scale:hover{transform:scale(1.05)}.image-zoom{overflow:hidden}.image-zoom img{transition:transform .6s}.image-zoom:hover img{transform:scale(1.1)}@keyframes ripple{0%{transform:scale(0);opacity:1}100%{transform:scale(4);opacity:0}}.btn-ripple{position:relative;overflow:hidden}.btn-ripple::after{content:'';position:absolute;top:50%;left:50%;width:10px;height:10px;background:rgba(255,255,255,.5);border-radius:50%;transform:translate(-50%,-50%) scale(0);pointer-events:none}.btn-ripple:active::after{animation:.6s ease-out ripple}@keyframes shine{0%{left:-100%}100%,50%{left:100%}}.btn-shine{position:relative;overflow:hidden}.btn-shine::before{content:'';position:absolute;top:0;left:-100%;width:50%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:left .5s}.btn-shine:hover::before{animation:1.5s infinite shine}@keyframes spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}.spinner{display:inline-block;width:20px;height:20px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:.8s linear infinite spin}@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.loader-pulse{animation:1.5s ease-in-out infinite pulse}@keyframes dotFlashing{0%,100%,80%{opacity:0}40%{opacity:1}}.loading-dots span{display:inline-block;width:8px;height:8px;margin:0 2px;background-color:currentColor;border-radius:50%;animation:1.4s infinite dotFlashing}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes typing{from{width:0}}@keyframes blink{50%{border-color:transparent}}.typewriter{overflow:hidden;border-right:2px solid;white-space:nowrap;animation:3.5s steps(40,end) typing,.75s step-end infinite blink}@keyframes textGradient{0%,100%{background-position:0 50%}50%{background-position:100% 50%}}.text-gradient-animated{background:linear-gradient(90deg,#667eea,#764ba2,#667eea);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:3s infinite textGradient}@keyframes float{0%,100%{transform:translateY(0) translateX(0)}33%{transform:translateY(-20px) translateX(10px)}66%{transform:translateY(-10px) translateX(-10px)}}.particle{position:absolute;border-radius:50%;opacity:.3;animation:10s ease-in-out infinite float}.particle:nth-child(1){width:80px;height:80px;top:10%;left:10%;background:radial-gradient(circle,rgba(102,126,234,.2) 0,transparent 70%);animation-duration:12s}.particle:nth-child(2){width:120px;height:120px;top:60%;right:15%;background:radial-gradient(circle,rgba(118,75,162,.2) 0,transparent 70%);animation-duration:15s;animation-delay:-5s}@keyframes progressBar{from{width:0}}.progress-bar{height:4px;background:var(--gradient-primary);border-radius:2px;animation:2s ease-out forwards progressBar}@keyframes countUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.counter-animated{animation:1s ease-out countUp}.parallax{background-attachment:fixed;background-position:center;background-repeat:no-repeat;background-size:cover}@keyframes pageTransition{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.page-transition{animation:.5s ease-out pageTransition}@keyframes shimmer{0%{background-position:-1000px 0}100%{background-position:1000px 0}}.skeleton{background:linear-gradient(90deg,#f0f0f0 0,#e0e0e0 20%,#f0f0f0 40%,#f0f0f0 100%);background-size:1000px 100%;animation:2s linear infinite shimmer}@keyframes borderGlow{0%,100%{border-color:rgba(102,126,234,.5)}50%{border-color:#667eea}}.border-glow:hover{animation:1.5s ease-in-out infinite borderGlow}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:0s!important;animation-iteration-count:1!important;transition-duration:0s!important}}