/* Motion with a purpose: a responsive opening scene, tactile controls and an editorial rhythm. */
:root{--living-ease:cubic-bezier(.16,1,.3,1)}
.scene-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:.9}
.scene-atmosphere .scene-halo{background:radial-gradient(circle at var(--light-x,40%) var(--light-y,40%),#fcfbf5ee,#a3aa912b 45%,transparent 73%);transition:background .2s}
.page-home .hero-heading-wrap{translate:calc(var(--hero-px,0) * -4px) calc(var(--hero-py,0) * -3px);transition:translate .8s var(--living-ease)}
.page-home .hero.is-ready .hero-line>span{animation:livingTitle 1.1s var(--living-ease) both}
.page-home .hero.is-ready .hero-line:nth-child(2)>span{animation-delay:.13s}
.page-home .hero.is-ready .hero-line:nth-child(3)>span{animation-delay:.26s}
@keyframes livingTitle{from{opacity:0;transform:translate3d(0,110%,0) rotate(3deg);filter:blur(6px)}to{opacity:1;transform:none;filter:blur(0)}}
.page-home .hero-last b{position:relative;transform-origin:50% 75%}
.page-home .hero.is-ready .hero-last b{animation:livingDot 1s var(--living-ease) .75s both}
@keyframes livingDot{0%{transform:scale(0) rotate(-45deg)}65%{transform:scale(1.25)}100%{transform:none}}
.page-home .hero-bottom,.page-home .hook-footer{animation:livingSupport .9s var(--living-ease) .3s both}
@keyframes livingSupport{from{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}

/* A clear reading path: message and actions, then the sculptural signature. */
.page-home .hero{padding-top:24px;padding-bottom:25px}
.page-home .home-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:center;gap:3vw;flex:1;min-height:0;margin-top:22px}
.page-home .home-copy{position:relative;z-index:3;min-width:0;padding-bottom:20px}
.page-home .hero-heading-wrap{width:100%;margin-top:0;align-self:auto}
.page-home .hero h1{font-size:clamp(52px,6.45vw,112px);line-height:1.02}
html[lang=en] .page-home .hero h1{font-size:clamp(49px,6.05vw,106px)}
.page-home .hero-line:nth-child(2){padding-left:0}
.page-home .hero-line>span{white-space:nowrap}
.page-home .hero-bottom{display:flex;flex-direction:column;align-items:flex-start;gap:25px;margin-top:23px;padding:0;animation:none}
.page-home .hero.is-ready .hero-bottom{animation:livingSupport .9s var(--living-ease) .35s both}
.page-home .hero-bottom>p{width:auto;max-width:385px;font-size:16px;line-height:1.65}
.page-home .hero-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:16px;width:min(100%,476px);max-width:100%;margin:0}
.page-home .hero-links>.hero-project-link{min-width:0;white-space:nowrap;gap:12px}
.page-home .hero-contact-link{align-self:stretch;border:0;background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}
.page-home .hero-contact-link:is(:hover,:focus-visible){background:#a3aa9129;box-shadow:inset 0 0 0 1px var(--ink)}
.page-home .sculpture-stage{position:relative;top:auto;right:auto;width:100%;height:100%;min-height:340px;max-height:640px;margin:0;align-self:center;translate:0 0}
.page-home .sculpture-stage .sculpture-fallback{inset:4% 0 9%}
.page-home .sculpture-stage .sculpture-caption{left:0;right:0;bottom:2%;max-width:none;justify-content:center;pointer-events:none}
.page-home .scene-index{font-size:8px;letter-spacing:.17em;color:#737b69}
.page-home .scene-coordinate.coordinate-a{left:9%;top:12%}
.page-home .scene-coordinate.coordinate-b{right:5%;bottom:20%}

/* Three deliberate beats, followed by a soft handover into the homepage. */
.intro-v2{transition-duration:.55s;background:radial-gradient(ellipse at 48% 46%,#303c2e,var(--ink) 65%)}
.intro-v2 .intro-top{align-items:center}
.intro-v2 #skip-intro{font-size:11px;min-height:44px;padding:10px 0;transition:opacity .25s}
.intro-v2 #skip-intro:hover{opacity:1}
.intro-v2 .intro-assembly>span{animation-duration:1.05s}
.intro-v2 .intro-assembly>span:nth-child(2){animation-delay:.12s}
.intro-v2 .intro-assembly>span:nth-child(3){animation-delay:.24s}
.intro-v2 .intro-words span{animation-duration:.85s;animation-delay:.4s;line-height:1.05}
.intro-v2 .intro-words span:nth-child(2){animation-delay:.65s}
.intro-v2 .intro-words span:nth-child(3){animation-delay:.9s}
.intro-v2::after{content:'';position:absolute;left:var(--gutter);right:var(--gutter);bottom:69px;height:1px;background:linear-gradient(90deg,#a3aa9177,#a3aa91);transform-origin:left;animation:introTrace 2.5s cubic-bezier(.25,.1,.25,1) both}
@keyframes introTrace{from{transform:scaleX(0);opacity:.3}to{transform:scaleX(1);opacity:1}}
@media(min-width:761px) and (max-height:760px){.page-home .hero{padding-top:18px;padding-bottom:20px}.page-home .home-layout{margin-top:16px}.page-home .home-copy{padding-bottom:0}.page-home .hero h1{font-size:clamp(50px,5.65vw,82px)}html[lang=en] .page-home .hero h1{font-size:clamp(48px,5.4vw,78px)}.page-home .hero-bottom{margin-top:18px;gap:18px}.page-home .hero-bottom>p{font-size:14px;max-width:340px}.page-home .sculpture-stage{min-height:280px}}
@media(max-width:760px){.page-home .hero{height:calc(100svh - 140px);min-height:510px;padding-top:15px;padding-bottom:12px}.page-home .home-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(130px,1fr);gap:7px;margin-top:16px}.page-home .home-copy{padding:0}.page-home .hero h1{font-size:clamp(40px,12.1vw,60px);line-height:1.01}html[lang=en] .page-home .hero h1{font-size:clamp(38px,11.5vw,57px)}.page-home .hero-heading-wrap{margin-top:0}.page-home .hero-bottom{margin-top:12px;gap:14px;align-items:flex-start}.page-home .hero-bottom>p{width:auto;max-width:315px;font-size:12px;line-height:1.6}.page-home .hero-links{gap:12px;width:100%;max-width:none}.page-home .hero-project-link{min-width:0;min-height:44px;padding:12px 15px;font-size:12px;gap:10px}.page-home .sculpture-stage{width:100%;height:100%;min-height:130px;max-height:none;margin:0;flex:auto}.page-home .sculpture-stage .sculpture-fallback{inset:0 4% 6%}.page-home .sculpture-stage .sculpture-caption{left:0;right:0;bottom:1%;justify-content:center}.page-home .scene-index{font-size:7px;letter-spacing:.12em}.page-home .scene-coordinate.coordinate-a{left:10%;top:10%}.page-home .scene-coordinate.coordinate-b{right:6%;bottom:22%}.intro-v2::after{bottom:54px}.intro-v2 .intro-bottom{gap:15px}}
@media(max-width:380px){.page-home .hero h1{font-size:12vw}html[lang=en] .page-home .hero h1{font-size:11.2vw}.page-home .hero-bottom{gap:12px;margin-top:10px}.page-home .hero-bottom>p{font-size:11px;max-width:290px}.page-home .hero-project-link{padding:11px 12px;gap:8px;font-size:11px}.page-home .hero-links{gap:12px}.page-home .home-layout{margin-top:14px;gap:4px}}
@media(prefers-reduced-motion:reduce){.intro-v2::after{animation:none;transform:scaleX(1)}}
[data-motion=off] .intro-v2::after{animation:none;transform:scaleX(1)}

/* Small responses at the point of contact. The native pointer stays visible. */
.desktop-nav .nav-roll{display:block;position:relative;overflow:hidden;line-height:1.3;padding:2px 0}
.nav-roll>span{display:block;transition:translate .48s var(--living-ease)}
.nav-roll>span[aria-hidden=true]{position:absolute;left:0;top:2px;translate:0 115%;color:#5d6e4c}
.desktop-nav a:is(:hover,:focus-visible) .nav-roll>span:first-child{translate:0 -115%}
.desktop-nav a:is(:hover,:focus-visible) .nav-roll>span[aria-hidden=true]{translate:0 0}
.header-cta.motion-magnetic,.hero-project-link.motion-magnetic,.page-next-link.motion-magnetic{translate:var(--mag-x,0px) var(--mag-y,0px);transition:translate .5s var(--living-ease),background .3s,color .3s,box-shadow .4s}
.header-cta.motion-magnetic:hover,.hero-project-link.motion-magnetic:hover{box-shadow:0 9px 25px #20252212}
.button-dark,.button-outline,.service-contact,.text-link{position:relative}
.button-dark>span:last-child,.button-outline>span:last-child,.text-link>span:last-child,.service-proof>span:last-child{transition:translate .4s var(--living-ease)}
:is(.button-dark,.button-outline,.text-link,.service-proof):hover>span:last-child{translate:3px -3px}
.text-link{transition:gap .4s var(--living-ease)}
.text-link:hover{gap:46px}
.project-art{isolation:isolate;transition:transform .6s var(--living-ease),border-radius .5s var(--living-ease)}
.project-art::after{background:radial-gradient(ellipse at var(--shine-x,50%) var(--shine-y,50%),#ffffff18,transparent 62%);opacity:0;transition:opacity .4s}
.project-open:is(:hover,:focus-visible) .project-art::after{opacity:1}
.project-caption h3{transition:translate .5s var(--living-ease),color .3s}
.project-open:is(:hover,:focus-visible) .project-caption h3{translate:5px 0;color:#536546}
.project-caption .project-type{transition:translate .5s var(--living-ease)}
.project-open:hover .project-caption .project-type{translate:-3px 0}
.living-word{display:inline-block;transform-origin:left bottom}
html.js[data-motion=on] .section-label.reveal{transition:opacity .65s,transform .9s var(--living-ease),clip-path 1.05s var(--living-ease);clip-path:inset(0 100% 0 0);transform:none}
html.js[data-motion=on] .section-label.reveal.is-visible{clip-path:inset(0)}
html.js[data-motion=on] .studio-art.reveal{transform:translateY(45px) rotate(-2deg) scale(.97);transition-duration:1.1s}
html.js[data-motion=on] .studio-art.reveal.is-visible{transform:none}
html.js[data-motion=on] .contact-direct.reveal{transform:translateX(-28px);transition-duration:1s}
html.js[data-motion=on] .contact-direct.reveal.is-visible{transform:none}
html.js[data-motion=on] .enquiry-card.reveal{transform:translateY(42px) scale(.985);transition-duration:1.1s}
html.js[data-motion=on] .enquiry-card.reveal.is-visible{transform:none}
.living-depth{translate:0 var(--living-depth,0px);will-change:auto}
.case-page-cover{overflow:hidden}
.case-page-cover>img{scale:1.035;translate:0 var(--image-drift,0px)}
.site-footer{overflow:clip}
.footer-big{translate:var(--footer-drift,0px) 0}
.process-steps li::before{transform:scaleY(var(--step-progress,0));transform-origin:top;transition:transform 1s var(--living-ease)}
.step-marker{transition:background .45s,box-shadow .6s,rotate .6s var(--living-ease)}
.process-steps li.is-visible .step-marker{box-shadow:0 0 0 6px #a3aa9114}
.process-steps li:hover .step-marker{rotate:12deg;box-shadow:0 0 0 9px #a3aa9125}
.enquiry-fields label>span,.enquiry-message>span{display:inline-block;transition:translate .3s,color .3s}
.enquiry-fields label:focus-within>span,.enquiry-message:focus-within>span{translate:0 -2px;color:#617650}
.enquiry-services label>span,.brief-options label>span{transition:background .25s,box-shadow .3s,translate .3s}
.enquiry-services label:hover>span{translate:0 -2px}
.mobile-menu nav>a{overflow:hidden}
.mobile-menu.is-open nav>a{animation:livingMenu .7s var(--living-ease) both}
.mobile-menu.is-open nav>a:nth-child(2){animation-delay:.06s}.mobile-menu.is-open nav>a:nth-child(3){animation-delay:.12s}.mobile-menu.is-open nav>a:nth-child(4){animation-delay:.18s}.mobile-menu.is-open nav>a:nth-child(5){animation-delay:.24s}
@keyframes livingMenu{from{opacity:0;translate:0 30px}to{opacity:1;translate:0 0}}

/* Keep navigation immediate; shared project artwork expands into its case study. */
::view-transition-old(root){animation:livingPageOut .24s ease both}
::view-transition-new(root){animation:livingPageIn .6s var(--living-ease) both}
::view-transition-group(*){animation-duration:.65s;animation-timing-function:var(--living-ease)}
@keyframes livingPageOut{to{opacity:0;translate:0 -10px}}
@keyframes livingPageIn{from{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}
.project-aura .repo-cover{view-transition-name:project-aura}.project-autopro .repo-cover{view-transition-name:project-autopro}

@media(max-width:760px){.scene-lines{opacity:.65}.page-home .hero-heading-wrap{translate:0 0}.sculpture-caption .scene-controls .scene-pulse{font-size:18px}.text-link:hover{gap:inherit}.living-depth,.footer-big,.case-page-cover>img{translate:0 0;scale:1}.page-home .hero-bottom,.page-home .hook-footer{animation-delay:.15s}}
@media(prefers-reduced-motion:reduce){.scene-lines,.scene-pulse-ring{display:none!important}.page-home .hero-heading-wrap,.living-depth,.footer-big,.case-page-cover>img{translate:0 0!important;scale:1!important}.page-home .hero-line>span,.page-home .hero-last b,.page-home .hero-bottom,.page-home .hook-footer,.mobile-menu.is-open nav>a{animation:none!important}.living-word,.nav-roll>span,.project-caption h3,.project-caption .project-type,.motion-magnetic{animation:none!important;translate:0 0!important;transition:none!important}.nav-roll>span[aria-hidden=true]{display:none}::view-transition-group(*),::view-transition-old(root),::view-transition-new(root){animation:none!important}}
[data-motion=off] .scene-lines,[data-motion=off] .scene-pulse-ring{display:none!important}
[data-motion=off] :is(.page-home .hero-heading-wrap,.living-depth,.footer-big,.case-page-cover>img,.motion-magnetic,.project-caption h3,.project-caption .project-type){translate:0 0!important;scale:1!important}
[data-motion=off] :is(.page-home .hero-line>span,.page-home .hero-last b,.page-home .hero-bottom,.page-home .hook-footer,.mobile-menu nav>a){animation:none!important}
[data-motion=off] .living-word,[data-motion=off] .nav-roll>span{translate:0 0!important;transform:none!important;transition:none!important}
[data-motion=off] .nav-roll>span[aria-hidden=true]{display:none}
[data-motion=off] .section-label.reveal{clip-path:inset(0)!important}
[data-motion=off]::view-transition-group(*),[data-motion=off]::view-transition-old(root),[data-motion=off]::view-transition-new(root){animation:none!important}
