/* Shared choreography: measured from the supplied reference, implemented for OG. */
:root{--ease:cubic-bezier(.625,.05,0,1);--ease-spatial:cubic-bezier(.7,.05,.13,1);--duration:1.2s}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-smooth iframe{pointer-events:none}
.entry,.hero .line>span,.menu-dialog[open],.menu-dialog[open] nav a{animation:none}
.reveal,.reveal.pending{opacity:1;transform:none;transition:none}
.motion-preparing:not(.motion-off) .entry,.motion-preparing:not(.motion-off) .hero-statement{visibility:hidden}
.motion-word{padding-bottom:.2em;will-change:transform}
.motion-word-mask{margin-bottom:-.2em;vertical-align:baseline;padding-right:.035em;margin-right:-.035em}
.motion-text .serif{display:inline}
.hero{overflow:hidden}
.hero-media{will-change:transform}
.project-image,.case-cover{isolation:isolate}
.project-image img,.case-cover img{height:134%;max-width:none;position:absolute;top:-17%;left:0;width:100%;object-fit:cover;will-change:transform;transition:none}
.project-image{transition:scale .35s cubic-bezier(.25,.1,.25,1)}
.project-card a:hover .project-image{scale:.96}
.project-card a:hover img{transform:none}
.project-image:after{transition:background .25s}
.project-card a:hover .project-image:after{background:rgba(0,0,0,.18)}
.project-cursor{position:absolute;top:0;left:0;z-index:3;pointer-events:none;white-space:nowrap;background:var(--gold);color:#000;font-size:10px;letter-spacing:.02em;padding:13px 17px;border-radius:50px;opacity:0;transform:scale(.6);translate:-50% -50%;transform-origin:center}
.hover-mask{display:inline-block!important;position:relative;overflow:clip;vertical-align:bottom;padding:0!important;font:inherit!important;line-height:inherit;transform:none!important}
.hover-original,.hover-copy{display:block!important;font:inherit!important;line-height:inherit;transition:transform .8s var(--ease)!important}
.hover-copy{position:absolute;left:0;top:0;transform:translateY(110%);pointer-events:none}
@media(hover:hover) and (pointer:fine){a:hover .hover-original{transform:translateY(-110%)}a:hover .hover-copy{transform:translateY(0)}}
.text-link:hover .hover-mask{transform:none}.text-link .hover-mask>span{font-size:inherit}
.service-slide{position:relative}.slide-ghost{z-index:1}.service-slide:not(.slide-ghost){z-index:2}
.service-slide .motion-word-mask{overflow:clip}
.menu-dialog nav{overflow:hidden}
.menu-dialog[open],.menu-dialog[open] nav a{animation:none!important}
.transition-curtain,.js .transition-curtain{position:fixed;inset:0;z-index:200;background:var(--gold);color:#000;display:flex;align-items:center;justify-content:center;gap:20px;pointer-events:none;transform:none;clip-path:inset(100% 0 0);animation:none}
.transition-curtain svg{width:70px;height:70px}.transition-curtain>span{font-size:11px;letter-spacing:.1em}
/* Native cross-document transitions retain real HTML navigation and history. */
@view-transition{navigation:auto}
::view-transition-group(root){animation-duration:1.2s}
::view-transition-old(root){animation:page-away 1.2s var(--ease-spatial) both;mix-blend-mode:normal}
::view-transition-new(root){animation:page-arrive 1.2s var(--ease-spatial) both;mix-blend-mode:normal}
@keyframes page-away{to{transform:translateY(-20vh);filter:brightness(.5)}}
@keyframes page-arrive{0%{transform:translateY(100vh);clip-path:polygon(0 15%,100% 0,100% 100%,0 100%)}100%{transform:translateY(0);clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}}
.motion-off *,.motion-off *:before,.motion-off *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
.motion-off .motion-word,.motion-off .hero-media,.motion-off .hover-original{transform:none!important}
.motion-off .hover-copy,.motion-off .project-cursor{display:none!important}
.motion-off .project-image{scale:1!important}
.motion-off .transition-curtain{clip-path:inset(100% 0 0)!important}
.motion-off .hero-video{visibility:hidden}
.motion-off .hero-media{background:url('../assets/video/hero-poster.webp') center/cover}
.motion-off{scroll-behavior:auto}
@media(hover:none),(pointer:coarse){.project-cursor{display:none}.project-card a:hover .project-image{scale:1}}
@media(prefers-reduced-motion:reduce){
 html:not(.motion-explicit-on){scroll-behavior:auto}
 html:not(.motion-explicit-on) *,html:not(.motion-explicit-on) *:before,html:not(.motion-explicit-on) *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
 html:not(.motion-explicit-on) .motion-word,html:not(.motion-explicit-on) .hero-media{transform:none!important}
 html:not(.motion-explicit-on) .hero-video{visibility:hidden}
 html:not(.motion-explicit-on) .hero-media{background:url('../assets/video/hero-poster.webp') center/cover}
 html:not(.motion-explicit-on) .project-cursor{display:none}
 ::view-transition-old(root),::view-transition-new(root){animation:none!important}
}
