/* motion layer v1: added on top of the original design. Only opacity/transform/clip changes; no layout changes. */
/* headline words rise in on load (hero + page headers) */
.zw>span{display:inline-block;animation:moRise 1.1s var(--ease) both}
@keyframes moRise{from{opacity:0;transform:translateY(.45em)}to{opacity:1;transform:none}}
@keyframes moFade{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes moIn{from{opacity:0}to{opacity:1}}
@keyframes moSettle{from{opacity:0;transform:scale(1.045)}to{opacity:1;transform:none}}
.hero .eyebrow{animation:moFade .9s var(--ease) both}
.hero .sub{animation:moFade 1s var(--ease) .55s both}
.hero .ctas{animation:moFade 1s var(--ease) .75s both}
.hero .meta{animation:moIn 1.2s ease .95s both}
.phead .eyebrow{animation:moFade .8s var(--ease) both}
.phead .lead{animation:moFade 1s var(--ease) .5s both}
.cover figure{overflow:hidden;border-radius:4px}
.cover img{animation:moSettle 1.6s var(--ease) .15s both}
.tabs a{transition:background .3s,color .3s,border-color .3s}

/* hero: gentle parallax + content eases away as you scroll (values set by motion.js) */
.mo .hero .slide{translate:0 var(--py,0px)}
.mo .hero .inner{opacity:var(--ho,1);translate:0 var(--hy,0px)}

/* scroll reveals: slight stagger, photos settle from a soft zoom */
.mo .reveal{transition-delay:var(--d,0s)}
.mo .reveal img{scale:1.08}
.mo .reveal.in img{scale:1}
.mo .gallery .reveal img{transition:transform 1s var(--ease),opacity .6s,scale 1.6s var(--ease) var(--d,0s)}
.mo .tile.reveal img{transition:transform 1.2s var(--ease),scale 1.8s var(--ease) var(--d,0s)}
.mo .strip .reveal img{transition:transform 1s var(--ease),scale 1.7s var(--ease) var(--d,0s)}
.mo .about-grid .reveal img{transition:scale 1.8s var(--ease)}
.mo .reveal.mo-done{transition:opacity .5s var(--ease),transform .5s var(--ease),box-shadow .5s var(--ease)}

/* section headings rise from a soft mask */
.mo .sec-head.reveal h2,.mo .band .reveal h2{clip-path:inset(0 0 100% 0);transform:translateY(.35em);transition:clip-path 1.1s var(--ease) .12s,transform 1.1s var(--ease) .12s}
.mo .sec-head.reveal.in h2,.mo .band .reveal.in h2{clip-path:inset(-.3em -.3em -.4em -.3em);transform:none}

/* statement: words brighten as you read down (motion.js) */
.mo .statement .big .w{color:inherit;opacity:.2;transition:opacity .5s ease}
.mo .statement .big .w.on{opacity:1}

/* steps: a fine line sweeps across the top rule, then fades back to the original */
.mo .steps{position:relative}
.mo .steps::before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:var(--stone);transform:scaleX(0);transform-origin:left;opacity:0;pointer-events:none}
.mo .steps.in::before{animation:moSweep 2.6s var(--ease) .2s both}
@keyframes moSweep{0%{transform:scaleX(0);opacity:1}60%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0}}

/* closing band: photo settles when it comes into view */
.mo .band img{scale:1.08;transition:scale 2.4s var(--ease)}
.mo .band.in img{scale:1}

/* pricing cards and rows fade up in turn */
.mo .mo-up{opacity:0;transform:translateY(18px);transition:opacity .8s var(--ease) var(--d,0s),transform .8s var(--ease) var(--d,0s)}
.mo .mo-up.in{opacity:1;transform:none}

/* hover: soft lift and shadow (mouse only) */
@media (hover:hover){
 .mo .gallery figure.reveal.in:hover,.mo .strip a.reveal.in:hover{transform:translateY(-3px);box-shadow:0 22px 40px -22px rgba(28,27,25,.45)}
 .mo .tile.reveal.in:hover{box-shadow:0 24px 44px -24px rgba(28,27,25,.5)}
 .tile .lab>div{transition:transform .6s var(--ease)}
 .tile:hover .lab>div{transform:translateY(-4px)}
 .tile .arr svg{transition:transform .4s var(--ease)}
 .tile:hover .arr svg{transform:translateX(2px)}
 .btn{transition:transform .25s var(--ease),background .25s,color .25s,box-shadow .35s var(--ease)}
 .btn:hover{box-shadow:0 12px 26px -14px rgba(0,0,0,.5)}
 .mo .card{transition:opacity .8s var(--ease) var(--d,0s),transform .5s var(--ease),box-shadow .5s var(--ease)}
 .mo .card.in:hover{transform:translateY(-4px);box-shadow:0 24px 44px -26px rgba(28,27,25,.4)}
}

/* nav: underline slides in from the left */
.nav a:not(.cta){border-bottom-color:transparent!important;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .45s var(--ease),opacity .25s}
.nav a:not(.cta):hover,.nav a:not(.cta)[aria-current=page]{background-size:100% 1px}
.ftr ul a{background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .45s var(--ease),color .25s}
.ftr ul a:hover{background-size:100% 1px}

/* mobile menu: links glide in one after another */
.mo .drawer nav a{opacity:0;transform:translateY(14px);transition:opacity .3s,transform .3s}
.mo .drawer.open nav a{opacity:1;transform:none;transition:opacity .6s var(--ease),transform .7s var(--ease)}
.mo .drawer.open nav a:nth-child(1){transition-delay:.12s}.mo .drawer.open nav a:nth-child(2){transition-delay:.16s}.mo .drawer.open nav a:nth-child(3){transition-delay:.2s}.mo .drawer.open nav a:nth-child(4){transition-delay:.24s}.mo .drawer.open nav a:nth-child(5){transition-delay:.28s}.mo .drawer.open nav a:nth-child(6){transition-delay:.32s}.mo .drawer.open nav a:nth-child(7){transition-delay:.36s}.mo .drawer.open nav a:nth-child(8){transition-delay:.4s}.mo .drawer.open nav a:nth-child(9){transition-delay:.44s}.mo .drawer.open nav a:nth-child(10){transition-delay:.48s}

/* photo viewer: soft fade and settle */
.mo .lb.open{animation:moIn .35s ease both}
.mo .lb.open img{animation:moSettle .5s var(--ease) both}

@media (prefers-reduced-motion:no-preference){
 html{scroll-behavior:smooth}
 /* page to page: short crossfade, header stays put (browsers that support it) */
 @view-transition{navigation:auto}
 .hdr{view-transition-name:hdr}
 ::view-transition-old(root),::view-transition-new(root){animation-duration:.4s;animation-timing-function:ease}
}
@media (prefers-reduced-motion:reduce){
 .zw>span,.hero .eyebrow,.hero .sub,.hero .ctas,.hero .meta,.phead .eyebrow,.phead .lead,.cover img{animation:none!important;opacity:1!important;transform:none!important}
}
