/* V16 finish. Composition remains V13: photography first, objects second. */
:root{--fusion-ease:cubic-bezier(.16,1,.3,1)}
body{background-image:radial-gradient(ellipse at 2% 16%,color-mix(in srgb,var(--warm),transparent 95%),transparent 34%)}
main{isolation:isolate}section{min-width:0}button,figure{min-width:0}
.hero:before{content:'';position:absolute;inset:10% 0 0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 75% 48%,color-mix(in srgb,var(--warm),transparent 87%),transparent 55%)}
.layout-cinematic .hero:before,.layout-poster .hero:before{display:none}
.hero-copy h1{max-width:100%;text-wrap:balance}.hero .lead{max-width:48ch}
.hero-copy{animation:fusion-copy-arrival 1s var(--fusion-ease) both}
.hero-art .orbit{opacity:.62;transition:transform 1.6s var(--fusion-ease)}
.hero-art:hover .orbit{transform:rotate(3deg)}
.hero-art .photo-wrap img{animation-duration:20s}
/* Ambient motion layer: the image remains the subject while light, halo and
   geometry provide a restrained sense of depth. These effects are removed by
   the reduced-motion rule below without hiding the content. */
.hero-art:before{content:'';position:absolute;inset:7% -7% 8%;pointer-events:none;z-index:1;opacity:.48;background:radial-gradient(ellipse at 18% 22%,color-mix(in srgb,var(--accent),transparent 64%),transparent 44%),radial-gradient(ellipse at 86% 76%,color-mix(in srgb,var(--warm),transparent 74%),transparent 48%);filter:blur(16px);animation:fusion-ambient 12s ease-in-out infinite alternate}
.hero-art:after{content:'';position:absolute;top:-18%;bottom:-18%;left:-65%;width:32%;z-index:4;pointer-events:none;background:linear-gradient(100deg,transparent,color-mix(in srgb,#fff,transparent 78%),transparent);transform:skewX(-16deg);animation:fusion-sheen 11s cubic-bezier(.2,.7,.2,1) infinite}
.hero-art .orbit{animation:fusion-orbit 18s ease-in-out infinite alternate}
.hero-art .sun{animation:fusion-sun 8s ease-in-out infinite alternate}
.hero-tag{animation:fusion-tag 7s ease-in-out infinite alternate}
.scene-halo{animation:fusion-ambient 13s ease-in-out infinite alternate}
.gallery-piece figure:after{content:'';position:absolute;inset:0;pointer-events:none;opacity:0;background:linear-gradient(120deg,transparent 20%,#fff4 47%,transparent 64%);transform:translateX(-120%);transition:opacity .4s var(--fusion-ease)}
.gallery-piece:hover figure:after,.gallery-piece:focus-visible figure:after{opacity:1;animation:fusion-sheen 1.1s var(--fusion-ease) both}
.steps li{transition:padding-left .45s var(--fusion-ease),background-color .45s var(--fusion-ease)}
.steps li:hover{padding-left:10px;background:color-mix(in srgb,var(--accent),transparent 88%)}
/* Only the outer edge softens; subjects and letters remain crisp. */
.layout-arch .photo-wrap{-webkit-mask-image:linear-gradient(#000 86%,transparent);mask-image:linear-gradient(#000 86%,transparent);box-shadow:none}
.layout-poster .photo-wrap{-webkit-mask-image:linear-gradient(#000 88%,transparent);mask-image:linear-gradient(#000 88%,transparent);box-shadow:none}
.layout-horizon .photo-wrap{-webkit-mask-image:linear-gradient(#000 57%,#000d 70%,transparent 99%);mask-image:linear-gradient(#000 57%,#000d 70%,transparent 99%)}
.photo-wrap img,.gallery-piece img{backface-visibility:hidden}
.scene-photo{-webkit-mask-image:linear-gradient(#000 72%,#000d 83%,transparent 100%);mask-image:linear-gradient(#000 72%,#000d 83%,transparent 100%)}
.gallery{position:relative;isolation:isolate;overflow:clip;background:radial-gradient(ellipse at 65% 65%,color-mix(in srgb,var(--accent),transparent 72%),transparent 58%)}
.gallery:before{content:'';position:absolute;inset:24% 5% 16%;border:1px solid var(--line);border-radius:50%;transform:rotate(-14deg);pointer-events:none;z-index:-1;opacity:.45}
.gallery-piece figure{box-shadow:0 24px 48px -40px var(--ink);transition:transform .9s var(--fusion-ease),box-shadow .9s var(--fusion-ease)}
.gallery-piece:hover figure{transform:translateY(-8px);box-shadow:0 28px 48px -40px var(--ink)}
.gallery-piece figcaption{font-size:11px!important;line-height:1.5;max-width:100%}
.hero-art .photo-note,.scene .photo-note{font-size:11px!important;line-height:1.5}
.section-head h2,.visit h2,.contact h2{text-wrap:balance}
.experience{background-image:radial-gradient(ellipse at 24% 70%,color-mix(in srgb,var(--warm),transparent 88%),transparent 58%)}
.choice{position:relative}.choice-heading{transition:transform .45s var(--fusion-ease)}.choice:hover .choice-heading{transform:translateX(5px)}
.choice-index{min-width:24px}.choice[aria-pressed=true]{border-top-color:var(--accent)}
.btn,.it-primary{position:relative;isolation:isolate;overflow:hidden}.btn:before,.it-primary:before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;background:#fff;opacity:0;transform:translateY(105%);transition:transform .5s var(--fusion-ease),opacity .5s}
.btn:hover:before,.it-primary:hover:before{opacity:.12;transform:translateY(0)}
.btn:active,.nav-action:active,.it-primary:active{transform:scale(.975)}
.it-primary{border-radius:100px;transition:transform .3s var(--fusion-ease),background .3s,color .3s}
.it-primary:hover{transform:translateY(-2px)}
.industry-tool{border:0;background-image:radial-gradient(ellipse at 90% 30%,color-mix(in srgb,var(--accent),transparent 58%),transparent 54%)}
.it-field>input,.it-field>select,.it-field>textarea{border-radius:8px 8px 0 0;transition:background .3s,box-shadow .3s}
.it-field>input:focus,.it-field>select:focus,.it-field>textarea:focus{background:color-mix(in srgb,var(--paper),white 45%);box-shadow:0 3px 0 -1px var(--warm)}
.it-vehicles>div{border-radius:24px;overflow:hidden}.it-aside-copy{position:relative}.it-aside-copy:after{content:'';position:absolute;width:clamp(80px,12vw,180px);height:clamp(80px,12vw,180px);border:1px solid var(--line);border-radius:50%;bottom:-48px;right:4%;pointer-events:none;opacity:.4}
.it-aside-copy>small{position:relative;z-index:1}.it-preview{border-radius:48% 48% 8px 8px;overflow:hidden}.it-preview:has(img:not([hidden])){border-radius:16px;background:transparent}
.visit{background-image:radial-gradient(ellipse at 80% 0%,#ffffff45,transparent 70%);border-radius:clamp(40px,7vw,112px) 12px 0 0}
.contact{background:radial-gradient(ellipse at 100% 100%,color-mix(in srgb,var(--warm),transparent 93%),transparent 65%)}
.contact-links a{position:relative;text-decoration-color:color-mix(in srgb,var(--ink),transparent 55%)}.contact-links a:hover{text-decoration-color:currentColor}
.footer-word{text-wrap:balance;overflow-wrap:break-word}.footer{border-radius:clamp(48px,7vw,112px) 0 0 0}
dialog[open]{animation:fusion-dialog-arrival .36s var(--fusion-ease)}
dialog .close{transition:transform .3s}.close:hover{transform:rotate(90deg)}
dialog :focus-visible{outline-offset:3px}
.model-failure{font:12px/1.6 Instrument,sans-serif;max-width:50ch;margin:16px auto;color:inherit}
model-viewer{width:100%;display:block;--poster-color:transparent;touch-action:pan-y;--progress-bar-color:var(--warm);--progress-bar-height:2px}
.fusion-reveal{will-change:auto}
/* Scroll reveals are visible by default, then enter with a clear opacity/position change. */
.js [data-reveal],.js [data-fh-enter],.js .fusion-reveal,.js [data-fusion-reveal]{opacity:0;transform:translate3d(0,28px,0);transition:opacity .85s var(--fusion-ease),transform .85s var(--fusion-ease);will-change:opacity,transform}
.js [data-reveal].is-revealed,.js [data-fh-enter].is-revealed,.js .fusion-reveal.is-revealed,.js [data-fusion-reveal].is-revealed{opacity:1;transform:none}
.js .gallery-piece:nth-child(2),.js .choice:nth-child(2){transition-delay:70ms}.js .gallery-piece:nth-child(3),.js .choice:nth-child(3){transition-delay:140ms}
@keyframes fusion-copy-arrival{from{transform:translateY(16px)}to{transform:translateY(0)}}
@keyframes fusion-dialog-arrival{from{transform:translateY(16px) scale(.985)}to{transform:translateY(0) scale(1)}}
@keyframes fusion-sheen{from{transform:translateX(-120%) skewX(-16deg)}to{transform:translateX(430%) skewX(-16deg)}}
@keyframes fusion-ambient{from{transform:translate3d(-1%,0,0) scale(.98)}to{transform:translate3d(2%,2%,0) scale(1.04)}}
@keyframes fusion-orbit{from{transform:rotate(5deg) scale(.985)}to{transform:rotate(10deg) scale(1.015)}}
@keyframes fusion-sun{from{transform:translateY(var(--solar,0px)) scale(.96);opacity:.62}to{transform:translateY(calc(var(--solar,0px) - 8px)) scale(1.04);opacity:.88}}
@keyframes fusion-tag{from{transform:rotate(6deg) translateY(0)}to{transform:rotate(10deg) translateY(-6px)}}
@media(max-width:760px){.hero:before{inset:30% 0 0}.gallery:before{inset:26% 0 20%}.gallery-piece figcaption{left:8px;right:8px;padding:6px}.gallery-piece:hover figure{transform:none}.hero-art .photo-note{max-width:190px}.contact-links{gap:8px 20px}.contact-links a{min-height:44px}.footer{padding-bottom:96px}.nav{gap:12px}.brand{max-width:calc(100% - 76px)}.nav-links a{font-size:16px}.it-aside-copy:after{display:none}.demo-bar .extended{font-size:11px}.gallery-label span{font-size:clamp(17px,4.6vw,24px)}.js .floating{opacity:0;pointer-events:none;transform:translateY(14px)}.js .floating.is-visible{opacity:1;pointer-events:auto;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.hero-copy{animation:none}*,*:before,*:after{animation:none!important;scroll-behavior:auto!important}.js [data-reveal],.js [data-fh-enter],.js .fusion-reveal,.js [data-fusion-reveal]{transform:none!important;transition:opacity .18s ease!important}.gallery-piece:hover figure{transform:none}.steps li:hover{padding-left:0;background:none}}
