body{overflow-x:hidden}
.site-header{transition:height .35s ease,box-shadow .35s ease}
.site-header.compact{height:68px;box-shadow:0 8px 30px rgba(11,43,38,.08)}
.brand-mark{transition:transform .45s cubic-bezier(.2,.8,.2,1)}
.brand:hover .brand-mark{transform:rotate(-8deg) scale(1.08)}
.button{transition:.25s transform,.25s background,.25s box-shadow;position:relative;overflow:hidden}
.button:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(81,129,18,.2)}
.button:active{transform:translateY(0) scale(.98)}
.hero-copy>*{opacity:0;transform:translateY(24px);animation:heroEnter .8s cubic-bezier(.2,.8,.2,1) forwards}
.hero-copy>:nth-child(1){animation-delay:.08s}.hero-copy>:nth-child(2){animation-delay:.18s}.hero-copy>:nth-child(3){animation-delay:.3s}.hero-copy>:nth-child(4){animation-delay:.42s}.hero-copy>:nth-child(5){animation-delay:.55s}
@keyframes heroEnter{to{opacity:1;transform:none}}
.hero-visual{opacity:0;transform:translateY(28px) scale(.97);animation:visualEnter 1s .2s cubic-bezier(.2,.8,.2,1) forwards}
@keyframes visualEnter{to{opacity:1;transform:none}}
.visual-grid{inset:-48px;animation:gridDrift 14s linear infinite}
@keyframes gridDrift{to{transform:translate(48px,48px)}}
.building-mark span{transform-origin:bottom;animation:barBreathe 5s ease-in-out infinite}
.building-mark span:nth-child(2){animation-delay:-1.2s}.building-mark span:nth-child(3){animation-delay:-2.4s}
@keyframes barBreathe{0%,100%{transform:scaleY(.96)}50%{transform:scaleY(1.035)}}
.clean-line{left:-35%;right:auto;width:150%;animation:cleanSweep 5.5s ease-in-out infinite}
@keyframes cleanSweep{0%,15%{translate:-38% 0;opacity:0}35%,72%{opacity:1}88%,100%{translate:38% 0;opacity:0}}
.shift-card{animation:floatCard 4s ease-in-out infinite}
@keyframes floatCard{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-10px) rotate(1deg)}}
.status-dot{box-shadow:0 0 0 0 rgba(96,183,25,.5);animation:statusPulse 2s infinite}
@keyframes statusPulse{70%{box-shadow:0 0 0 8px rgba(96,183,25,0)}100%{box-shadow:0 0 0 0 rgba(96,183,25,0)}}
.service-grid article{transition:.35s background,.35s transform,.35s box-shadow}
.service-grid article:hover{transform:translateY(-7px);box-shadow:0 18px 40px rgba(11,43,38,.08);z-index:1}
.area-list span{transition:.25s transform,.25s background,.25s border-color}
.area-list span:hover{transform:translateY(-4px) rotate(-1deg);background:var(--green-soft);border-color:#a9cb7a}
.request-result:not([hidden]){animation:resultEnter .55s cubic-bezier(.2,.8,.2,1)}
@keyframes resultEnter{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:none}}
.reveal{opacity:0;transform:translateY(34px);transition:opacity .75s cubic-bezier(.2,.8,.2,1),transform .75s cubic-bezier(.2,.8,.2,1)}
.reveal.is-visible{opacity:1;transform:none}
.service-grid .reveal:nth-child(2),.standard-list .reveal:nth-child(2),.area-list .reveal:nth-child(2){transition-delay:.08s}
.service-grid .reveal:nth-child(3),.standard-list .reveal:nth-child(3),.area-list .reveal:nth-child(3){transition-delay:.16s}
.scroll-progress{position:fixed;left:0;right:0;top:0;height:3px;z-index:20;pointer-events:none}
.scroll-progress span{display:block;height:100%;width:100%;background:var(--green);transform-origin:left;transform:scaleX(0)}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}.scroll-progress{display:none}}
