/* Only these new layers move. The hero's H1/canvas boxes and native scrolling
   stay under their original owners. With no JS, every word remains visible. */
.m-motion-line{display:block;overflow:hidden;padding:.08em .055em .12em;margin:-.08em -.055em -.12em;isolation:isolate}
.m-motion-line>span{display:block;transform-origin:0 100%}
.hero-word>.m-motion-line{padding:.08em 0 .1em;margin:-.08em 0 -.1em}
.m-motion-enabled .m-motion-type-ready .m-motion-line>span{transform:translate3d(var(--m-type-x,0%),var(--m-type-y,118%),0) rotate(var(--m-type-rotate,0deg))}
.m-motion-enabled .m-motion-type-ready.m-motion-in-view .m-motion-line>span{will-change:transform}
/* The existing reveal system must not compete with the line masks. */
[data-motion-type]{opacity:1}
.m-motion-hero-unit,.m-motion-hero-arrival{display:block}
.m-motion-enabled .m-motion-hero-unit{opacity:var(--m-hero-opacity,1);translate:0 var(--m-hero-y,0px)}
.m-motion-hero-unit:has(:focus-visible){opacity:1!important;translate:0 0!important}
.m-motion-enabled .m-motion-hero-unit:has(.pill){width:max-content;max-width:100%}

/* Real text remains the accessible, sharp resting state. The local canvas
   follows each existing line through its entry and scroll choreography. */
.hero-tagline>.nano-message-line{position:relative}
.nano-message-text{display:inline-block}
.nano-message-particles{position:absolute;max-width:none;pointer-events:none;z-index:1}
html:not(.m-motion-enabled) .nano-message-text,.motion-paused .nano-message-text{mask-image:none!important;-webkit-mask-image:none!important}
html:not(.m-motion-enabled) .nano-message-particles,.motion-paused .nano-message-particles{visibility:hidden}
@media(prefers-reduced-motion:reduce){.nano-message-text{mask-image:none!important;-webkit-mask-image:none!important}.nano-message-particles{visibility:hidden}}

/* Frame ratios are preserved by the new outer crop, not by a moving image.
   Captions and image-arrow controls remain outside the transformed layer. */
.capability-image[data-motion-media]{aspect-ratio:4/3}
.capability-move .capability-image[data-motion-media]{aspect-ratio:16/9}
.m-motion-photo-frame{display:block;position:relative;overflow:hidden;aspect-ratio:4/5;background:#e8e8e5}
[data-motion-media]>.m-motion-media-layer{display:block;position:absolute;inset:0;transform-origin:50% 50%}
[data-motion-media]>.m-motion-media-layer>img{display:block;width:100%;height:100%;max-height:none;object-fit:cover;aspect-ratio:auto}
.m-motion-enabled:not(.m-motion-light) [data-motion-media]>.m-motion-media-layer{transform:translate3d(0,var(--m-media-y,0px),0) scale(1.14)}
.m-motion-enabled:not(.m-motion-light) [data-motion-media].m-motion-in-view>.m-motion-media-layer{will-change:transform}
/* Hover scaling still belongs to the original img, below the scroll layer. */

/* Existing borders and colour inversion remain the static/focus affordance. */
.m-motion-enabled a.text-link,.m-motion-enabled .footer-nav a,.m-motion-enabled .site-menu a{position:relative}
.m-motion-enabled a.text-link::after,.m-motion-enabled .footer-nav a::after,.m-motion-enabled .site-menu a::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:currentColor;transform:scaleX(0);transform-origin:100% 50%;transition:transform .55s cubic-bezier(.16,1,.3,1);pointer-events:none}
.m-motion-enabled a.text-link:is(:hover,:focus-visible)::after,.m-motion-enabled .footer-nav a:is(:hover,:focus-visible)::after,.m-motion-enabled .site-menu a:is(:hover,:focus-visible)::after{transform:scaleX(1);transform-origin:0 50%}
.m-motion-enabled .menu-open .site-menu a{animation:m-menu-arrive .6s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--m-menu-order,0) * 40ms)}
.site-menu a:nth-child(2){--m-menu-order:1}.site-menu a:nth-child(3){--m-menu-order:2}.site-menu a:nth-child(4){--m-menu-order:3}.site-menu a:nth-child(5){--m-menu-order:4}.site-menu a:nth-child(6){--m-menu-order:5}.site-menu a:nth-child(7){--m-menu-order:6}.site-menu a:nth-child(n+8){--m-menu-order:7}
@keyframes m-menu-arrive{from{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}

/* Paused states are immediately readable, including an interrupted arrival. */
html:not(.m-motion-enabled) .m-motion-line>span,.motion-paused .m-motion-line>span{transform:none!important;opacity:1!important}
html:not(.m-motion-enabled) .m-motion-hero-unit,.motion-paused .m-motion-hero-unit{opacity:1!important;translate:0 0!important}
html:not(.m-motion-enabled) .m-motion-hero-arrival,.motion-paused .m-motion-hero-arrival{opacity:1!important;transform:none!important}
html:not(.m-motion-enabled) .hero-tagline>span,.motion-paused .hero-tagline>span{opacity:1!important;transform:none!important;color:inherit!important}
html:not(.m-motion-enabled) [data-motion-media]>.m-motion-media-layer,.motion-paused [data-motion-media]>.m-motion-media-layer{transform:none!important;will-change:auto}
html:not(.m-motion-enabled) .site-menu a,.motion-paused .site-menu a{animation:none!important;opacity:1!important;translate:0 0!important}
html:not(.m-motion-enabled) a.text-link::after,html:not(.m-motion-enabled) .footer-nav a::after,html:not(.m-motion-enabled) .site-menu a::after,.motion-paused a.text-link::after,.motion-paused .footer-nav a::after,.motion-paused .site-menu a::after{transition:none!important}
@media(max-width:768px){.m-motion-explore{display:none!important}.m-motion-photo-frame{aspect-ratio:4/3;max-height:500px}}
@media(pointer:coarse),(hover:none){.m-motion-enabled a.text-link::after,.m-motion-enabled .footer-nav a::after,.m-motion-enabled .site-menu a::after{transition:none}.m-motion-enabled .menu-open .site-menu a{animation-duration:.4s;animation-delay:calc(var(--m-menu-order,0) * 20ms)}}
@media(prefers-reduced-motion:reduce){.m-motion-line>span,.m-motion-hero-arrival,.hero-tagline>span{transform:none!important;opacity:1!important}.hero-tagline>span{color:inherit!important}.m-motion-hero-unit{opacity:1!important;translate:0 0!important}[data-motion-media]>.m-motion-media-layer{transform:none!important;will-change:auto}.site-menu a{animation:none!important;opacity:1!important;translate:0 0!important}}
