@keyframes fadeIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{from{transform:translateX(-20px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-10px)}100%{transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}100%{transform:scale(1)}}.fade-in{opacity:0;transform:translateY(20px)}.fade-in.visible{animation:fadeIn .8s cubic-bezier(.16,1,.3,1) forwards}.slide-in{opacity:0;transform:translateX(-20px)}.slide-in.visible{animation:slideIn .6s cubic-bezier(.16,1,.3,1) forwards}.float{animation:float 3s ease-in-out infinite}.pulse{animation:pulse 2s ease-in-out infinite}.project-card,.service-card{transition:all .3s cubic-bezier(.16, 1, .3, 1)}.project-card:hover,.service-card:hover{border-color:var(--color-accent)}.cta-button{position:relative;overflow:hidden;transition:all .3s cubic-bezier(.16, 1, .3, 1)}.cta-button:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.cta-button::after{content:'';position:absolute;top:50%;left:50%;width:0;height:0;background:rgba(255,255,255,.2);border-radius:50%;transform:translate(-50%,-50%);transition:width .3s ease,height .3s ease}.cta-button:hover::after{width:200px;height:200px}.navbar{transition:background-color .3s ease,box-shadow .3s ease}.navbar.scrolled{background:var(--color-secondary);box-shadow:var(--shadow-sm)}.nav-links a,.project-link{position:relative}.nav-links a::after,.project-link::after{content:'';position:absolute;bottom:-2px;left:0;width:0;height:2px;background:var(--color-accent);transition:width .3s ease}.nav-links a:hover::after,.project-link:hover::after{width:100%}html{scroll-behavior:smooth}.service-icon{display:inline-block;transition:transform .3s ease}.service-card:hover .service-icon{transform:scale(1.2) rotate(5deg)}.logo{position:relative;transition:transform .3s ease}.logo:hover{transform:scale(1.1)}.logo::after{content:'';position:absolute;bottom:-2px;left:0;width:100%;height:2px;background:var(--color-accent);transform:scaleX(0);transform-origin:right;transition:transform .3s ease}.logo:hover::after{transform:scaleX(1);transform-origin:left}