/* Movement follows the material: floating metal, flowing air, photographic cuts. */
:root{--scene-play:paused;--hero-scroll:0;--halo-x:0px;--halo-y:0px}
.is-inview{--scene-play:running}
.hero-halo{position:absolute;z-index:-2;left:28%;top:-14%;width:90%;height:120%;pointer-events:none;background:radial-gradient(ellipse at 60% 48%,#fff 0%,#effcffb3 30%,#80d9ff24 51%,transparent 70%);transform:translate3d(var(--halo-x),var(--halo-y),0);animation:air-light 9s ease-in-out infinite;animation-play-state:var(--scene-play)}
.hero h1{translate:calc(var(--hero-scroll)*-22px) calc(var(--hero-scroll)*-38px)}
.hero-line{animation:none!important;perspective:900px;overflow:clip;overflow-clip-margin:.07em;padding-bottom:.11em;margin-bottom:-.11em}
.hero-char{display:inline-block;transform-origin:50% 100%;animation:letter-arrive 1.25s calc(.16s + var(--letter)*.045s) cubic-bezier(.16,1,.3,1) both}
.hero-line-outline .hero-char{animation-delay:calc(.3s + var(--letter)*.045s)}
.hero-caption .caption-stem{transform-origin:right;animation:caption-line 1.1s .9s both}
.explore-orbit{position:relative}
.explore-orbit:before{content:'';position:absolute;inset:-7px;border:1px solid #258ab73b;border-radius:50%;border-left-color:transparent;border-bottom-color:transparent;animation:orbit-turn 12s linear infinite;animation-play-state:var(--scene-play)}
.explore-orbit svg{animation:arrow-drift 2.8s ease-in-out infinite;animation-play-state:var(--scene-play)}
.service-ribbon>div{animation-play-state:var(--scene-play)}
.header nav a[aria-current=location]{color:var(--blue)}
.header nav a[aria-current=location]:after{transform:scaleX(1)}
.type-reveal.reveal-pending,.type-reveal.is-visible{opacity:1;transform:none}
.word-clip{display:inline-block;overflow:hidden;vertical-align:bottom;padding:0 .02em .15em;margin:0 -.02em -.15em}
.word-inner{display:inline-block;transform-origin:0 100%;transition:transform 1s cubic-bezier(.16,1,.3,1),opacity .65s;transition-delay:calc(var(--word)*.045s)}
.type-reveal.reveal-pending .word-inner{transform:translate3d(0,112%,0) rotate(4deg);opacity:0}
.type-reveal.is-visible .word-inner{transform:none;opacity:1}
.house-camera{position:relative;transform-origin:var(--focus-x,50%) var(--focus-y,40%);transform:perspective(1100px) rotateX(var(--house-rx,0deg)) rotateY(var(--house-ry,0deg)) scale(var(--house-scale,1));transition:transform 1.15s cubic-bezier(.16,1,.3,1),transform-origin 1.15s cubic-bezier(.16,1,.3,1)}
[data-active=ducts]{--focus-x:45%;--focus-y:30%;--house-scale:1}
[data-active=dryer]{--focus-x:23%;--focus-y:64%;--house-scale:1.075}
[data-active=chimney]{--focus-x:83%;--focus-y:15%;--house-scale:1.065}
[data-active=quality]{--focus-x:53%;--focus-y:23%;--house-scale:1.07}
.house-orbit{transition:background 1s,transform 1.3s;transform:translateX(var(--orbit-shift,0%)) scale(1.1)}
[data-active=dryer] .house-orbit{background:#ffe8e6;--orbit-shift:-8%}
[data-active=chimney] .house-orbit{background:#d4f4ff;--orbit-shift:10%}
.route{animation-play-state:var(--scene-play);stroke-width:3}
.route-base{fill:none;stroke:#3bbdea;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:0;transition:opacity .35s}
.route-base-dryer{stroke:var(--red)}
[data-active=ducts] .route-base-ducts,[data-active=dryer] .route-base-dryer,[data-active=chimney] .route-base-chimney,[data-active=quality] .route-base-quality{opacity:.48}
.air-bead{fill:#fff;stroke:#28b8e7;stroke-width:2;filter:drop-shadow(0 0 5px #3bc8ff);pointer-events:none}
[data-active=dryer] .air-bead{stroke:var(--red);filter:drop-shadow(0 0 4px #f7968c)}
.hotspot:before{content:'';position:absolute;z-index:-1;inset:4px;border:1px solid var(--blue);border-radius:50%;opacity:0;pointer-events:none}
.hotspot[aria-pressed=true]:before{animation:system-pulse 3.1s ease-out infinite;animation-play-state:var(--scene-play)}
.hotspot>span{transition:background .3s,color .3s,border-color .3s,transform .5s cubic-bezier(.16,1,.3,1)}
.hotspot:hover>span{transform:scale(1.12)}
.explorer-tabs>button{overflow:hidden}
.explorer-tabs>button>span,.explorer-tabs>button>i{position:relative;z-index:1}
.explorer-tabs>button:before{content:'';position:absolute;inset:0;transform:translateY(100%);background:#e5f6ff;transition:transform .45s cubic-bezier(.2,.8,.2,1);z-index:-1}
.explorer-tabs>button{isolation:isolate}
.explorer-tabs>button:hover:before{transform:none}
.filmstrip{position:relative}
.film-frame .image-open{transition:clip-path 1.1s cubic-bezier(.16,1,.3,1),background .3s;clip-path:inset(0 0 0 0)}
.film-frame.reveal-pending .image-open{clip-path:inset(0 15% 0 0)}
.film-frame .image-open img{transform:translate3d(var(--photo-pan,0px),0,0) scale(1.065);transition:transform .9s cubic-bezier(.16,1,.3,1),filter .6s;filter:saturate(.88)}
.film-frame.is-current .image-open img,.film-frame .image-open:hover img{filter:saturate(1);transform:translate3d(var(--photo-pan,0px),0,0) scale(1.07)}
.frame-open{gap:0;transition:background .3s,color .3s,scale .4s;pointer-events:none}
.frame-open-word{display:none;font-size:12px;letter-spacing:.09em;line-height:1}
.gallery-rail{height:2px;background:#cce3ef;overflow:hidden;margin-top:6px}
.gallery-rail>span{display:block;width:25%;height:100%;background:var(--red);transform:translateX(calc(var(--gallery-progress,0)*300%));transition:transform .1s linear}
.gallery-hint{display:flex;justify-content:space-between;gap:20px;font-size:12px;letter-spacing:.1em;color:#6a899a;padding-top:17px}
.process-track li.step-current .process-number{color:var(--blue)}
.process-track li.step-past .process-number{color:var(--navy)}
.process-track li.step-current .process-dot:after{content:'';position:absolute;inset:-7px;border:1px solid #e942453b;border-radius:50%;animation:step-pulse 2.7s ease-out infinite;animation-play-state:var(--scene-play)}
.area-count>strong{background:linear-gradient(#e3f8ff,#e3f8ff) bottom / 100% var(--county-fill,0%) no-repeat;background-clip:text;-webkit-background-clip:text;transition:background-size .3s linear}
.button{overflow:hidden;isolation:isolate}
.button:before{content:'';position:absolute;inset:-90% -30%;z-index:-1;background:linear-gradient(110deg,transparent 32%,#fff3 45%,transparent 58%);transform:translateX(-130%) rotate(-8deg);transition:transform .7s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.button:hover:before{transform:translateX(130%) rotate(-8deg)}
.button>span{translate:var(--magnet-x,0px) var(--magnet-y,0px);transition:translate .35s cubic-bezier(.16,1,.3,1),transform .4s var(--ease)}
.form-field{position:relative}
.form-field:after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--blue);transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.16,1,.3,1);pointer-events:none}
.form-field:focus-within:after{transform:scaleX(1)}
.form-field label{transition:color .3s,translate .3s}
.form-field:focus-within label{color:var(--blue);translate:0 -2px}
.mobile-menu[open] nav a{animation:menu-link-in .65s calc(var(--menu-order)*.055s + .06s) cubic-bezier(.16,1,.3,1) both}
.photo-dialog[open]{animation:none}
.photo-dialog>img{max-height:calc(90svh - 92px);max-width:min(94vw,1200px)}
.lightbox-bar{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:76px;padding:14px 23px;background:#fff}
.lightbox-bar>p{font-size:14px;line-height:1.5;max-width:65ch}
.lightbox-controls{display:flex;align-items:center;gap:9px;flex-shrink:0}
.lightbox-controls>span{font-size:12px;letter-spacing:.05em;padding-right:8px}
.lightbox-controls button{background:transparent;border:1px solid #bdd5e3;border-radius:50%;height:41px;width:41px;font-size:23px;transition:background .2s,color .2s}
.lightbox-controls button:hover{background:var(--navy);color:#fff}
.lightbox-controls button:disabled{opacity:.35;cursor:default}
.mobile-contact{display:none}
@keyframes letter-arrive{from{opacity:0;transform:translate3d(0,120%,0) rotateX(-65deg) rotateZ(5deg)}to{opacity:1;transform:none}}
@keyframes air-light{50%{opacity:.65;scale:1.045}}
@keyframes caption-line{from{scale:0 1}to{scale:1 1}}
@keyframes orbit-turn{to{rotate:360deg}}
@keyframes arrow-drift{0%,100%{translate:0 -3px}50%{translate:0 5px}}
@keyframes system-pulse{0%{transform:scale(.85);opacity:.55}75%,100%{transform:scale(2.2);opacity:0}}
@keyframes step-pulse{0%{transform:scale(.7);opacity:1}75%,100%{transform:scale(1.8);opacity:0}}
@keyframes menu-link-in{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@media(pointer:fine) and (min-width:681px){.image-open.is-pointed .frame-open{left:var(--cursor-x,50%);top:var(--cursor-y,50%);right:auto;bottom:auto;width:78px;height:78px;transform:translate(-50%,-50%);background:var(--red);color:white;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px}.image-open.is-pointed .frame-open-word{display:block}.image-open.is-pointed .frame-open>span:last-child{font-size:24px}}
@media(max-width:680px){.hero h1{translate:0 calc(var(--hero-scroll)*-14px)}.hero-halo{left:-5%;top:12%;width:140%;height:75%}.house-camera{transform:scale(var(--house-scale,1))}.gallery-hint{font-size:12px;letter-spacing:.06em}.gallery-hint>span:last-child{display:none}.gallery-rail{margin-top:3px}.lightbox-bar{display:block;padding:14px 18px}.lightbox-bar>p{font-size:14px}.lightbox-controls{justify-content:space-between;margin-top:11px}.lightbox-controls>span{margin-right:auto}.photo-dialog>img{max-height:calc(90svh - 144px)}.mobile-contact{display:flex;position:fixed;z-index:59;left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom));padding:6px;background:#ffffffed;border:1px solid #c4dfec;border-radius:5px;box-shadow:0 8px 35px #103d5c20;backdrop-filter:blur(12px);gap:6px;transform:translateY(calc(100% + 50px));visibility:hidden;transition:transform .6s cubic-bezier(.16,1,.3,1),visibility .6s}.mobile-contact.is-visible{transform:none;visibility:visible}.mobile-contact>a{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 16px;font-size:14px;font-weight:500;min-height:47px;flex:1}.mobile-contact>a:first-child{color:var(--navy)}.mobile-contact>a:last-child{background:var(--red);color:white;border-radius:2px;flex:1.12}.mobile-contact>a>span{font-size:20px}.dialog-open .mobile-contact{opacity:0;pointer-events:none}.house-camera .route{stroke-width:4}.house-camera .route-base{stroke-width:3}}
html[data-page-visibility=hidden] *,html[data-page-visibility=hidden] *:before,html[data-page-visibility=hidden] *:after{animation-play-state:paused!important}
html[data-motion=off] .hero-char,html[data-motion=off] .word-inner{animation:none;transform:none;opacity:1}
html[data-motion=off] .air-bead{display:none}
html[data-motion=off] .house-camera{transform:none}
html[data-motion=off] .hero h1{translate:none}
html[data-motion=off] .type-reveal.reveal-pending .word-inner{transform:none;opacity:1}
@media(prefers-reduced-motion:reduce){.hero-char,.word-inner{animation:none;transform:none;opacity:1}.air-bead{display:none}.hero h1{translate:none}.house-camera{transform:none}.type-reveal.reveal-pending .word-inner{transform:none;opacity:1}}
@media print{.hero-halo,.mobile-contact,.gallery-hint,.gallery-rail,.lightbox-controls{display:none!important}.word-inner{transform:none!important;opacity:1!important}.hero-char{opacity:1;transform:none}.house-camera{transform:none}.area-count>strong{color:var(--navy)}}
