/* Small, finite movements; reading and navigation remain native. */
/* Only the decorative hero image moves; copy and controls stay still. */
@keyframes hero-drift{
  0%{transform:scale(1.16) translate3d(-3%,1%,0)}
  50%{transform:scale(1.25) translate3d(3%,-2%,0)}
  100%{transform:scale(1.16) translate3d(-3%,1%,0)}
}
.hero-image{animation:hero-drift 12s ease-in-out infinite;transform-origin:center;will-change:transform}
.hero-canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.86;pointer-events:none}
.hero.has-live-background .hero-image{opacity:0;animation:none;will-change:auto}
@media(prefers-reduced-motion:reduce){.hero-image{transform:none;will-change:auto}.hero-canvas{display:none}.hero.has-live-background .hero-image{opacity:.72}}
@keyframes title-arrive{from{opacity:.2;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes gentle-invite{0%,100%{box-shadow:0 5px 25px #0005,0 0 0 0 #36f4a400}45%{box-shadow:0 5px 25px #0005,0 0 0 8px #36f4a418}}
.hero-content h1,.page-hero h1,.detail-hero h1,.about-hero h1{animation:title-arrive .75s cubic-bezier(.2,.75,.25,1) both}
.hero-content .hero-description,.page-hero>p:not(.eyebrow),.detail-hero>div>p:not(.eyebrow),.about-hero>div>p:not(.eyebrow){animation:title-arrive .75s .1s cubic-bezier(.2,.75,.25,1) both}
.hero-actions{animation:title-arrive .7s .17s cubic-bezier(.2,.75,.25,1) both}
.service-link,.path-grid>a,.project-card{transition:transform .3s ease,border-color .3s ease,box-shadow .3s ease,background .3s ease}
.button>span,.service-symbol,.card-link>span,.project-open,.compact-services>a>span:last-child{display:inline-block;transition:transform .25s ease}
.brand i{transition:transform .55s cubic-bezier(.2,.75,.25,1)}
.nav nav>a:not(.button){position:relative}
.nav nav>a:not(.button):after{content:'';position:absolute;left:0;bottom:-7px;width:100%;height:1px;background:var(--mint);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
.nav nav>a[aria-current=page]:after,.nav nav>a:focus-visible:after{transform:scaleX(1)}
.faq-list summary{transition:color .2s ease}.faq-sign{transition:transform .25s ease}
.project-cover .project-word{transition:transform .5s cubic-bezier(.2,.75,.25,1)}
.whatsapp-float{position:fixed;right:max(24px,env(safe-area-inset-right));bottom:max(24px,env(safe-area-inset-bottom));z-index:30;display:flex;align-items:center;justify-content:center;gap:12px;min-width:58px;min-height:58px;padding:16px 22px;background:#36f4a4;color:#022415;border:1px solid #90ffcf;border-radius:999px;box-shadow:0 5px 25px #0005;font-size:14px;font-weight:500;animation:gentle-invite 2s 1.3s 2;transition:transform .25s ease,background .25s ease,box-shadow .25s ease}
.whatsapp-float img{display:block;flex-shrink:0}.whatsapp-float:focus-visible{outline:3px solid white;outline-offset:5px}.site-footer{padding-bottom:104px}
@media(hover:hover) and (pointer:fine){
 .service-link:hover,.path-grid>a:hover{transform:translateY(-6px);box-shadow:0 15px 35px #0003;border-color:#498b63}
 .button:hover>span,.service-link:hover .service-symbol,.service-link:hover .card-link>span,.compact-services>a:hover>span:last-child{transform:translate(3px,-3px)}
 .nav nav>a:hover:after{transform:scaleX(1)}
 a:hover .brand i,.brand:hover i{transform:rotate(90deg)}
 .project-cover:hover .project-word{transform:scale(1.035)}
 .project-cover:hover .project-open{transform:translate(3px,-3px)}
 .whatsapp-float:hover{transform:translateY(-4px);background:#7affc4;box-shadow:0 10px 30px #0006}
}
@media(max-width:600px){.whatsapp-float{right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));width:56px;height:56px;min-width:56px;min-height:56px;padding:15px}.whatsapp-float>span{display:none}.whatsapp-float img{width:26px;height:26px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,*:before,*:after{animation:none!important;transition:none!important}.service-link:hover,.path-grid>a:hover,.button:hover,.whatsapp-float:hover{transform:none}.project-cover:hover .project-word{transform:none}}
