html{scroll-behavior:smooth}
.button{transition:transform 160ms var(--ease-out)}
.button:after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(110deg,transparent 25%,rgba(255,255,255,.75) 49%,transparent 72%);transform:translateX(-120%);pointer-events:none;clip-path:inset(0 round 100px)}
.button .icon:last-child,.service-arrow,.photo-caption .icon{transition:transform 200ms var(--ease-out)}
.button:active,.quote-form button:active{transform:scale(.97)}
.secondary-button:before{content:"";position:absolute;inset:0;background:#e4ecfd;z-index:-1;transform:scaleX(0);transform-origin:left;transition:transform 200ms var(--ease-out)}
:focus-visible{animation:focus-in 200ms var(--ease-out)}
@keyframes focus-in{from{filter:brightness(1.14)}to{filter:none}}
.header-inner{transition:transform 250ms var(--ease-out)}
.site-header:after{content:"";position:absolute;inset:0;background:rgba(245,249,255,.88);border-bottom:1px solid #dce4f2;opacity:0;z-index:-1;transition:opacity 250ms var(--ease-out)}
.site-header.is-condensed:after{opacity:1}
.site-header.is-condensed .header-inner{transform:scaleY(.91)}
.site-name{transform-origin:left center;transition:transform 250ms var(--ease-out)}
.site-header.is-condensed .site-name{transform:scale(.93)}
.header-call:before{content:"";position:absolute;inset:-4px;border:1px solid #bda400;border-radius:inherit;opacity:0;pointer-events:none;animation:call-ring 8s ease-out infinite}
@keyframes call-ring{0%,80%,100%{opacity:0;transform:scale(.98)}84%{opacity:.45}95%{opacity:0;transform:scale(1.08)}}
.hero-slide{transition:opacity 800ms var(--ease-out)}
.motion-ready .hero-slide.is-active img{animation:ken-burns 8s linear both}
[data-slider].is-paused .hero-slide img{animation-play-state:paused}
@keyframes ken-burns{from{transform:scale(1.01) translateX(.3%)}to{transform:scale(1.07) translateX(-.5%)}}
.motion-ready .hero-eyebrow,.motion-ready .hero-card h1 span,.motion-ready .hero-body,.motion-ready .hero-call,.motion-ready .hero-trust,.motion-ready .hero-address{animation:hero-in 420ms var(--ease-out) both}
.motion-ready .hero-card h1 span:first-child{animation-delay:40ms}.motion-ready .hero-card h1 span:nth-child(2){animation-delay:80ms}.motion-ready .hero-body{animation-delay:120ms}.motion-ready .hero-call{animation-delay:160ms}.motion-ready .hero-trust{animation-delay:200ms}.motion-ready .hero-address{animation-delay:240ms}
@keyframes hero-in{from{opacity:0;filter:blur(5px);transform:translateY(14px)}to{opacity:1;filter:blur(0);transform:none}}
.motion-ready .hero-script span,.motion-ready .hero-script svg{animation:script-wipe 850ms var(--ease-out) 200ms both}
.motion-ready .hero-script span:nth-child(2){animation-delay:350ms}.motion-ready .hero-script span:nth-child(3){animation-delay:500ms}.motion-ready .hero-script svg{animation-delay:650ms}
@keyframes script-wipe{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}
.motion-ready [data-reveal]{transition:opacity 550ms var(--ease-out),transform 550ms var(--ease-out),filter 550ms var(--ease-out)}
.motion-ready [data-reveal]:not(.is-revealed){opacity:0;transform:translateY(22px);filter:blur(4px)}
.motion-ready .service[data-reveal]:nth-child(2){transition-delay:60ms}.motion-ready .service[data-reveal]:nth-child(3){transition-delay:120ms}
.motion-ready .is-revealed h2{animation:heading-in 600ms var(--ease-out) both}
@keyframes heading-in{from{clip-path:inset(0 0 100% 0);transform:translateY(8px)}to{clip-path:inset(0);transform:none}}
.service-tile{transition:transform 220ms var(--ease-out)}.service-rule{transition:transform 250ms var(--ease-out)}.service-image{transition:transform 250ms var(--ease-out)}.specular{transition:opacity 200ms var(--ease-out)}
.service-tile:focus-visible{transform:translateY(-4px)}.service-tile:focus-visible .service-rule{transform:scaleX(1.6)}
.motion-ready .marquee-track{animation:marquee 28s linear infinite}
.service-marquee:hover .marquee-track,.service-marquee:focus-within .marquee-track{animation-play-state:paused}
@keyframes marquee{to{transform:translateX(-50%)}}
.photo-caption{transition:transform 250ms var(--ease-out),opacity 250ms var(--ease-out)}
.motion-ready .review-disc:after{content:"";position:absolute;inset:-5px;border:2px solid var(--yellow);border-radius:50%;opacity:0}
.motion-ready .is-revealed .review-disc:after{animation:review-ring 1.2s var(--ease-out) both}
@keyframes review-ring{0%{opacity:0;transform:scale(.9)}30%{opacity:1}100%{opacity:0;transform:scale(1.35)}}
.motion-ready .reviews-strip.is-revealed .review-fact{animation:float 6s ease-in-out infinite}
.reviews-strip:hover .review-fact,.reviews-strip:focus-within .review-fact{animation-play-state:paused}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
.motion-ready .quote-cta:before{animation:band-drift 10s ease-in-out infinite}
@keyframes band-drift{0%,10%{transform:translateX(-35%) rotate(-8deg)}70%,100%{transform:translateX(35%) rotate(-8deg)}}
.motion-ready .quote-cta.is-revealed .draw-icon{animation:script-wipe 650ms var(--ease-out) both}
.motion-ready .quote-cta.is-revealed h2 span{animation:script-wipe 650ms var(--ease-out) 100ms both}
.motion-ready .quote-cta.is-revealed h2 span:nth-child(2){animation-delay:250ms}
.motion-ready .quote-cta.is-revealed .cta-actions,.motion-ready .quote-cta.is-revealed address{animation:hero-in 550ms var(--ease-out) 180ms both}
.motion-ready .quote-cta.is-revealed address{animation-delay:260ms}
.back-top{transition:transform 200ms var(--ease-out),opacity 200ms var(--ease-out)}
.footer-brand:after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.7) 50%,transparent 70%);transform:translateX(-120%);pointer-events:none}
.motion-ready .site-footer.is-revealed .footer-brand:after{animation:sheen 1200ms var(--ease-out) 200ms both}
@keyframes sheen{to{transform:translateX(120%)}}
.panel-highlight{position:absolute;width:300px;height:300px;left:-150px;top:-150px;background:radial-gradient(circle,rgba(255,255,255,.32),transparent 65%);pointer-events:none;opacity:0;border-radius:50%;transition:opacity 200ms var(--ease-out)}
@media(hover:hover) and (pointer:fine){.button:hover:after,.button:focus-visible:after{animation:sheen 650ms var(--ease-out)}.button:hover .icon:last-child:not(:first-child){transform:translateX(4px)}.secondary-button:hover:before{transform:scaleX(1)}.service-tile:hover .service-image{transform:scale(1.06)}.service-tile:hover .service-rule{transform:scaleX(1.6)}.service-tile:hover .specular{opacity:1}.photo-caption{transform:translateY(16px);opacity:0}.photo-card:hover .photo-caption,.photo-card:focus-visible .photo-caption{opacity:1;transform:none}.photo-card:hover .photo-caption .icon{transform:rotate(-45deg)}.hero-card:hover .panel-highlight{opacity:1}}
@media(max-width:767px){.site-header.is-condensed .header-inner{transform:scaleY(.96)}.site-header.is-condensed .site-name{transform:scale(.96)}.hero-slide{transition-duration:550ms}.motion-ready [data-reveal]:not(.is-revealed){filter:blur(2px);transform:translateY(12px)}.hero-card{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.motion-ready [data-reveal]:not(.is-revealed){opacity:1;transform:none;filter:none}.hero-slide img,.header-inner,.site-name,.service-tile,.service-image,.review-fact{transform:none!important}.hero-script span,.hero-script svg,.cta-heading h2 span{clip-path:none!important}.panel-highlight,.specular{display:none!important}.photo-caption{opacity:1;transform:none}.slider-progress span{transform:scaleX(1)!important}}
.nav-indicator.is-enabled{display:block}
.site-header nav:has(.nav-indicator.is-enabled) [aria-current]{text-decoration:none}
@media(max-width:767px){.site-header nav:has(.nav-indicator.is-enabled) [aria-current]{text-decoration:underline}}
