@keyframes fadeIn{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translate(50px)}to{opacity:1;transform:translate(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translate(-50px)}to{opacity:1;transform:translate(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(100px)}to{opacity:1;transform:translateY(0)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}@keyframes logoFade{0%,to{opacity:.7}50%{opacity:1}}.fade-in{animation:fadeIn .8s ease-out forwards;opacity:0}.fade-in-delay{animation:fadeIn .8s ease-out .2s forwards;opacity:0}.fade-in-delay-2{animation:fadeIn .8s ease-out .4s forwards;opacity:0}.fade-in-right{animation:fadeInRight .8s ease-out forwards;opacity:0}.fade-in-left{animation:fadeInLeft .8s ease-out forwards;opacity:0}.slide-up{animation:slideUp .8s ease-out forwards;opacity:0}.float{animation:float 3s ease-in-out infinite}.pulse{animation:pulse 2s ease-in-out infinite}.client-logos .logo-item{animation:logoFade 3s ease-in-out infinite}.client-logos .logo-item:nth-child(1){animation-delay:0s}.client-logos .logo-item:nth-child(2){animation-delay:.75s}.client-logos .logo-item:nth-child(3){animation-delay:1.5s}.client-logos .logo-item:nth-child(4){animation-delay:2.25s}.scroll-animate{opacity:0;transform:translateY(50px);transition:all .8s ease-out}.scroll-animate.animate{opacity:1;transform:translateY(0)}.hover-lift{transition:var(--transition-medium)}.hover-lift:hover{transform:translateY(-5px);box-shadow:var(--shadow-medium)}.hover-scale{transition:var(--transition-medium)}.hover-scale:hover{transform:scale(1.05)}.btn-animated{position:relative;overflow:hidden}.btn-animated:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:#ffffff1a;border-radius:50%;transform:translate(-50%,-50%);transition:width .3s ease,height .3s ease}.btn-animated:hover:before{width:300px;height:300px}.loading{position:relative}.loading:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);animation:shimmer 2s infinite}.text-reveal{overflow:hidden}.text-reveal span{display:inline-block;transform:translateY(100%);transition:transform .8s ease-out}.text-reveal.animate span{transform:translateY(0)}.progress-bar{width:100%;height:4px;background:var(--color-gray-light);border-radius:2px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--color-accent),var(--color-primary));width:0;transition:width 1.5s ease-out;border-radius:2px}.progress-fill.animate{width:var(--progress-width, 100%)}.counter{font-family:var(--font-heading);font-weight:700}.stagger-container>*{opacity:0;transform:translateY(30px);transition:all .6s ease-out}.stagger-container.animate>*:nth-child(1){transition-delay:.1s}.stagger-container.animate>*:nth-child(2){transition-delay:.2s}.stagger-container.animate>*:nth-child(3){transition-delay:.3s}.stagger-container.animate>*:nth-child(4){transition-delay:.4s}.stagger-container.animate>*:nth-child(5){transition-delay:.5s}.stagger-container.animate>*:nth-child(6){transition-delay:.6s}.stagger-container.animate>*{opacity:1;transform:translateY(0)}@media (max-width: 768px){.fade-in,.fade-in-delay,.fade-in-delay-2,.fade-in-right,.fade-in-left,.slide-up{animation-duration:.6s}.scroll-animate{transform:translateY(30px)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.scroll-animate,.fade-in,.fade-in-delay,.fade-in-delay-2,.fade-in-right,.fade-in-left,.slide-up{animation:none;opacity:1;transform:none}}.parallax{transform:translateZ(0);will-change:transform}.typewriter{overflow:hidden;border-right:.15em solid var(--color-accent);white-space:nowrap;margin:0 auto;letter-spacing:.15em;animation:typing 3.5s steps(40,end),blink-caret .75s step-end infinite}@keyframes typing{0%{width:0}to{width:100%}}@keyframes blink-caret{0%,to{border-color:transparent}50%{border-color:var(--color-accent)}}
