/* Climate-inspired transitions. All artwork is decorative and stays outside the content. */
.climate-bridge{--climate-color:#73dcff;position:relative;isolation:isolate;overflow:hidden;max-width:1600px;height:160px;margin:0 auto;border-block:1px solid #89ceec13;background:radial-gradient(ellipse at 65% 140%,#168ab421,transparent 65%),#0b131b}
.bridge-warm{--climate-color:#ffaf76;background:radial-gradient(ellipse at 70% 110%,#ed7c2821,transparent 60%),#10151a}
.bridge-air{--climate-color:#9ce6d7;background:radial-gradient(ellipse at 65% 140%,#4cafa820,transparent 65%),#0b141a}
.climate-streams{position:absolute;inset:0;width:100%;height:100%;color:var(--climate-color,var(--accent));pointer-events:none}
.stream-track{stroke:currentColor;stroke-width:1;opacity:.13}
.stream-pulse{stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-dasharray:9 91;animation:climate-stream 8s linear infinite;opacity:.65}
.stream-pulse:nth-last-child(2){animation-delay:-2.6s;opacity:.38}
.stream-pulse:last-child{animation-delay:-5.2s;opacity:.22}
.climate-bridge-art{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;height:100%;width:100%;pointer-events:none}
.climate-emblem{position:relative;display:grid;place-items:center;flex-shrink:0;width:68px;height:68px;border:1px solid color-mix(in srgb,var(--climate-color) 25%,transparent);border-radius:50%;color:var(--climate-color);background:radial-gradient(ellipse,#ffffff05,transparent)}
.climate-emblem:before{content:'';position:absolute;inset:-7px;border:1px solid transparent;border-top-color:var(--climate-color);border-right-color:color-mix(in srgb,var(--climate-color) 30%,transparent);border-radius:50%;opacity:.4;animation:climate-orbit 18s linear infinite}
.climate-emblem svg{width:35px;height:35px;overflow:visible}
.climate-snow{transform-origin:24px 24px;animation:climate-orbit 40s linear infinite}
.climate-flame{transform-origin:24px 43px;animation:climate-warmth 4s ease-in-out infinite}
.flame-core{fill:currentColor;stroke:none;opacity:.22}
.climate-fan{transform-origin:24px 24px;animation:climate-orbit 10s linear infinite}


.climate-dots{position:absolute;right:5.5%;top:50%;display:flex;gap:9px;align-items:center}
.climate-dots i{width:4px;height:4px;background:var(--climate-color);border-radius:50%;animation:climate-breathe 4s ease-in-out infinite}
.climate-dots i:nth-child(2){animation-delay:-1.3s}.climate-dots i:nth-child(3){animation-delay:-2.6s}
.hero-climate-flow{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:45%}
.hero-climate-flow .climate-streams{inset:8% -10%;width:120%;height:75%;transform:rotate(-25deg);opacity:.85;transition:opacity .8s ease,transform 1.2s ease}
.hero-climate-flow .stream-track{opacity:.22}
.thermal-ribbons{position:absolute;inset:10% 10% 18%;display:flex;justify-content:space-around;opacity:0;transition:opacity .8s}
.thermal-ribbons i{position:relative;height:60%;width:27%;border-right:1px solid #ffac6680;border-radius:50%;background:linear-gradient(90deg,transparent,#ff9d4310);animation:climate-rise 6s ease-in-out infinite}
.thermal-ribbons i:nth-child(2){animation-delay:-2s}.thermal-ribbons i:nth-child(3){animation-delay:-4s}
body.heat .hero-climate-flow .climate-streams{opacity:.18;transform:rotate(-45deg)}
body.heat .thermal-ribbons{opacity:1}
.brand-stage .logo-shell{z-index:1}.brand-stage .stage-label{z-index:2}.brand-stage .climate-control{z-index:3}
.hero h1 em,.climate-control p,.mode-switch button,.brand-stage{transition:color .7s ease,background-color .7s ease}
[data-atmosphere]:not(.atmosphere-visible) .climate-streams *,[data-atmosphere]:not(.atmosphere-visible) .climate-emblem *,[data-atmosphere]:not(.atmosphere-visible) .climate-emblem:before,[data-atmosphere]:not(.atmosphere-visible) .climate-dots i,[data-atmosphere]:not(.atmosphere-visible) .thermal-ribbons i{animation-play-state:paused}
.site-motion-toggle{position:fixed;bottom:18px;right:20px;z-index:20;display:flex;align-items:center;gap:8px;min-height:42px;padding:10px 15px;border:1px solid #7bc7e353;border-radius:30px;background:#0c1b25f2;backdrop-filter:blur(12px);box-shadow:0 6px 24px #0004;color:#c6e8f4;font-size:11px}
.site-motion-toggle svg{width:18px;height:18px;flex-shrink:0}.site-motion-toggle:hover{background:#1d3948;border-color:#90ddfa}
.site-motion-toggle[aria-pressed=true]{border-color:#ffa76d;color:#ffd0ad}
body.work-viewer-open .site-motion-toggle{visibility:hidden}
html.site-motion-paused{scroll-behavior:auto}
html.site-motion-paused body *,html.site-motion-paused body *:before,html.site-motion-paused body *:after{animation:none!important;transition:none!important}
html.site-motion-paused .work-photo,html.site-motion-paused .work-photo img{transform:none;scale:none}
html.site-motion-paused .stream-pulse{stroke-dasharray:none;opacity:.13}
html.site-document-hidden body *,html.site-document-hidden body *:before,html.site-document-hidden body *:after{animation-play-state:paused!important}
@keyframes climate-stream{to{stroke-dashoffset:-100}}
@keyframes climate-orbit{to{transform:rotate(360deg)}}
@keyframes climate-warmth{0%,100%{transform:scale(.96) rotate(-2deg);opacity:.8}50%{transform:scale(1.04) rotate(2deg);opacity:1}}
@keyframes climate-breathe{0%,100%{opacity:.2;transform:scale(.8)}50%{opacity:.9;transform:scale(1.2)}}
@keyframes climate-rise{0%,100%{transform:translateY(12px) skewX(-5deg);opacity:.15}50%{transform:translateY(-22px) skewX(5deg);opacity:.85}}
@media(max-width:760px){.climate-bridge{height:124px}.climate-emblem{width:50px;height:50px}.climate-emblem svg{width:28px;height:28px}.climate-dots{display:none}.climate-streams{width:170%;left:-40%}.site-motion-toggle{bottom:12px;right:12px;padding:10px;width:42px;height:42px;justify-content:center}.site-motion-toggle span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.hero-climate-flow .climate-streams{width:120%;left:-10%}footer{padding-bottom:68px}}
@media(prefers-reduced-motion:reduce){.climate-bridge *,.climate-bridge *:before,.hero-climate-flow *{animation:none!important;transition:none!important}.stream-pulse{stroke-dasharray:none;opacity:.13}.thermal-ribbons{display:none}.site-motion-toggle{display:none}.hero-climate-flow .climate-streams{transform:none}}

/* A metal duct with a visible airflow channel between services and project photos. */
.bridge-duct{height:180px;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 65%,#15344370,transparent 65%),#0b131b}
.duct-scene{display:block;width:min(760px,88%);height:100%;overflow:visible;pointer-events:none}
.duct-shadow{stroke:#02080bb0;stroke-width:47;stroke-linejoin:round;transform:translateY(7px)}
.duct-shell{stroke:url(#duct-metal);stroke-width:40;stroke-linejoin:round}
.duct-interior{stroke:#0a202fc4;stroke-width:19;stroke-linejoin:round}
.duct-collars{stroke:#a9c4d1;stroke-width:1.5;opacity:.5}
.duct-flow{stroke:#90e6ff;stroke-width:2.2;stroke-linecap:round;stroke-dasharray:9 24.333;animation:climate-stream 6s linear infinite}
.duct-glow{stroke:#52caff;stroke-width:11;opacity:.14}
.duct-outlet{fill:#0c1b24;stroke:#91b5c7;stroke-width:2}
.duct-exhaust{stroke:#87dfff;stroke-width:1.5;stroke-linecap:round;opacity:.6}
.duct-exhaust path{stroke-dasharray:22 78;animation:climate-stream 2.4s linear infinite}
.duct-exhaust path:nth-child(2){animation-delay:-.8s}.duct-exhaust path:nth-child(3){animation-delay:-1.6s}
.bridge-duct:not(.atmosphere-visible) .duct-flow,.bridge-duct:not(.atmosphere-visible) .duct-exhaust path{animation-play-state:paused}
@media(max-width:760px){.bridge-duct{height:140px}.duct-scene{width:94%}}
html.site-motion-paused .duct-flow{stroke-dasharray:none;opacity:.45}
html.site-motion-paused .duct-glow{opacity:.1}
@media(prefers-reduced-motion:reduce){.duct-flow{stroke-dasharray:none;opacity:.45}.duct-glow{opacity:.1}.duct-exhaust path{stroke-dasharray:none}}
