/* MNS motion: precise geometry, limited travel, deliberate stillness.
   Runtime tokens come from motion-tokens.js. Unbound content stays static. */
body::before{content:none}
.visual img{transition:opacity var(--motion-fast) var(--motion-ease),transform var(--motion-image) var(--motion-ease)}
.mns-text-line{display:block;overflow:hidden;padding-bottom:.035em;margin-bottom:-.035em}
.mns-text-line:has(em){padding-bottom:.22em;margin-bottom:-.22em}
.mns-text-inner{display:block;transform:translateY(108%);transition:transform var(--motion-standard) var(--motion-ease);transition-delay:calc(var(--motion-delay,0ms) + var(--line-index,0)*var(--motion-stagger))}
.mns-text-reveal.is-revealed .mns-text-inner{transform:none}
.mns-image-mask{clip-path:polygon(0 0,0 0,-8% 100%,0 100%);transition:clip-path var(--motion-image) var(--motion-ease);transition-delay:var(--motion-delay,0ms)}
.mns-image-mask.is-revealed{clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}
.mns-image-mask.is-mask-open{clip-path:none}
:is(.mns-image-mask,.mns-image-reveal) img{--image-scale:1.04;transform:translate3d(0,var(--parallax-y,0px),0) scale(var(--image-scale));transition:opacity var(--motion-fast) var(--motion-ease),transform var(--motion-image) var(--motion-ease)}
:is(.mns-image-mask,.mns-image-reveal).is-revealed img{--image-scale:1}
.mns-parallax img,.mns-parallax.is-revealed img{--image-scale:1.035;translate:0 var(--parallax-y,0px);transform:scale(var(--image-scale));transition:opacity var(--motion-fast) var(--motion-ease),transform var(--motion-image) var(--motion-ease)}
.mns-parallax.mns-image-reveal:not(.is-revealed) img{--image-scale:1.04}
.section-heading{position:relative}
.mns-section-datum{position:absolute;top:-17px;left:0;width:72px;height:2px;background:var(--accent);pointer-events:none}
.mns-line-reveal{transform:scaleX(0);transform-origin:left;transition:transform var(--motion-standard) var(--motion-ease);transition-delay:var(--motion-delay,0ms)}
.mns-line-reveal.is-revealed{transform:scaleX(1)}
.mns-line-reveal[data-motion-axis=y]{transform:scaleY(0);transform-origin:top}
.mns-line-reveal[data-motion-axis=y].is-revealed{transform:scaleY(1)}
.mns-stagger-item{opacity:0;transform:translateY(4px);transition:opacity var(--motion-standard) var(--motion-ease),transform var(--motion-standard) var(--motion-ease);transition-delay:calc(var(--stagger-index,0)*var(--motion-stagger))}
.mns-stagger-group.is-revealed .mns-stagger-item{opacity:1;transform:none}
.mns-page-reveal{opacity:0;transition:opacity var(--motion-standard) var(--motion-ease)}
.mns-page-reveal.is-revealed{opacity:1}
.mns-counter>span[aria-hidden]{display:inline-block;min-width:var(--counter-size);font-family:var(--micro);font-variant-numeric:tabular-nums;white-space:nowrap}
.mns-section-transition{position:relative}
.mns-section-transition:before{content:'';position:absolute;top:0;left:0;width:100%;height:1px;background:linear-gradient(90deg,var(--accent),var(--accent) 45%,transparent 80%);transform:scaleX(0);transform-origin:left;transition:transform var(--motion-image) var(--motion-ease);pointer-events:none}
.mns-section-transition.is-revealed:before{transform:scaleX(1)}
.button:hover{transform:none}
.mns-magnetic,.mns-magnetic:hover{transform:translate3d(var(--magnetic-x,0px),var(--magnetic-y,0px),0);transition:transform var(--motion-fast) var(--motion-ease)}
.signature-cta.mns-magnetic{transition:transform var(--motion-fast) var(--motion-ease),width var(--motion-standard) var(--motion-ease),height var(--motion-standard) var(--motion-ease)}
.motion-view-project,.motion-project-meta{position:absolute;z-index:3;opacity:0;transform:translateY(4px);transition:opacity var(--motion-fast) var(--motion-ease),transform var(--motion-fast) var(--motion-ease);font-family:var(--micro);font-size:8px;line-height:1.4;pointer-events:none}
.motion-view-project{top:15px;right:15px;color:var(--paper);background:#1e2c36ee;border-left:2px solid var(--accent);padding:10px 12px}
.motion-project-meta{left:14px;bottom:43px;max-width:80%;color:#1e2c36;background:var(--paper);padding:5px 8px;font-size:7px}
.project-tile.mns-hover-image:focus-visible :is(.motion-view-project,.motion-project-meta){opacity:1;transform:none}
.project-tile.mns-hover-image .visual img{transform:scale(var(--image-scale,1));transition:opacity var(--motion-fast) var(--motion-ease),transform var(--motion-standard) var(--motion-ease)}
.project-tile.mns-hover-image .mns-image-mask .visual img{transition:opacity var(--motion-fast) var(--motion-ease),transform var(--motion-image) var(--motion-ease)}
.project-tile.mns-hover-image:is(:hover,:focus-visible) .mns-image-mask .visual img{transition:opacity var(--motion-fast) var(--motion-ease),transform var(--motion-standard) var(--motion-ease)}
.project-image:after{transition:transform var(--motion-standard) var(--motion-ease)}
.gallery-item:hover .visual:not([data-motion]) img{transform:none}
@media(hover:hover) and (pointer:fine){
  .project-tile.mns-hover-image:hover :is(.motion-view-project,.motion-project-meta){opacity:1;transform:none}
  .project-tile.mns-hover-image:hover .visual img{--image-scale:1.025;transform:scale(var(--image-scale))}
}
.project-tile.mns-hover-image:focus-visible .visual img{--image-scale:1.025;transform:scale(var(--image-scale))}
.mns-scroll-progress{position:fixed;z-index:40;right:8px;top:108px;bottom:26px;width:14px;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;color:#657986;font-family:var(--micro);font-size:6px;line-height:1;transition:top var(--motion-standard) var(--motion-ease)}
#header.is-compact~.mns-scroll-progress{top:84px}
.measure-track{position:relative;width:10px;flex:1;background:linear-gradient(90deg,transparent 0 4px,#576f7f40 4px 5px,transparent 5px)}
.measure-track i{position:absolute;left:4px;width:5px;height:1px;background:#576f7f65;top:calc(var(--tick)*10%)}
.measure-fill{position:absolute;left:4px;top:0;width:1px;height:100%;background:var(--accent);transform-origin:top;transform:scaleY(0)}
.measure-marker{position:absolute;left:1px;top:calc(var(--reading-progress,0)*100%);height:1px;width:9px;background:var(--accent)}
.navigation-in-progress .mns-scroll-progress{visibility:hidden}
#header .signature-links,.signature-shell,.signature-cta,.header-brand img,.header-brand small{transition-timing-function:var(--motion-ease)}
.text-link:after,.filters button:after,.button>span{transition:transform var(--motion-fast) var(--motion-ease)}
@media(max-width:1000px){.mns-scroll-progress{top:96px}}
@media(max-width:600px){.mns-scroll-progress{right:3px;width:8px;top:93px;bottom:17px;font-size:5px}.measure-track{width:6px}.measure-track i{width:3px}.measure-marker{width:6px}}
@media(hover:none),(pointer:coarse){.mns-magnetic,.mns-magnetic:hover{transform:none}.project-tile.mns-hover-image:hover .visual img{transform:scale(var(--image-scale,1))}}
@media(prefers-reduced-motion:reduce){
  .mns-text-inner,.mns-line-reveal,.mns-stagger-item,.mns-magnetic,.mns-magnetic:hover{transform:none!important;opacity:1!important}
  .mns-page-reveal{opacity:1!important}
  .mns-image-mask{clip-path:none!important}
  :is(.mns-image-mask,.mns-image-reveal,.mns-parallax,.mns-hover-image) img{transform:none!important;translate:none!important}
  .mns-section-transition:before{transform:none}
  .project-tile.mns-hover-image :is(.motion-view-project,.motion-project-meta){transform:none}
}

/* Scroll-linked geometry follows the scroll clock rather than retargeting easing. */
.process-scroll-story .assembly-piece,.process-scroll-story .assembly-plane{transition:none}
.service-preview-frame{transition:opacity var(--motion-standard) var(--motion-ease)}
@media(hover:none),(pointer:coarse){
 .project-tile.mns-hover-image:hover .visual img{transform:none}
 .motion-view-project{opacity:1;transform:none}
 .home-page .hero-photo img{translate:none!important;transform:scale(1)!important}
}
@media(prefers-reduced-motion:reduce){.visual img{opacity:1!important}.home-page .hero-photo{clip-path:none!important}}
