/* Site-wide motion (all public pages). Respects prefers-reduced-motion. */
:root{--motion-ease:cubic-bezier(.2,.7,.2,1);--motion-header-safe:calc(72px + env(safe-area-inset-top))}
.word-rotate{display:inline-block;position:relative;vertical-align:baseline}
.word-rotate-face{display:inline-block;color:var(--warm);min-width:2ch}
.word-rotate-face.is-out{opacity:0;transform:translateY(8px)}
.word-rotate-face.is-in{opacity:1;transform:none;transition:opacity .35s var(--motion-ease),transform .35s var(--motion-ease)}
.word-rotate-seo{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.cycle-line{margin:0 0 1em;color:var(--light);font-size:clamp(16px,1.3vw,19px);max-width:62ch}
.motion-reveal{opacity:0;transform:translateY(16px);transition:opacity .65s var(--motion-ease),transform .65s var(--motion-ease)}
.motion-reveal.is-in{opacity:1;transform:none}
.motion-stagger>.motion-reveal{transition-delay:calc(var(--motion-i,0) * 70ms)}
.motion-line{display:block;overflow:hidden}
.motion-line>span{display:block;transform:translateY(105%);transition:transform .7s var(--motion-ease)}
.motion-line.is-in>span{transform:none}
.motion-headline{position:relative;display:inline-block}
.motion-headline::after{content:"";position:absolute;left:0;bottom:-6px;height:2px;width:100%;background:linear-gradient(90deg,var(--warm),rgba(242,197,138,.2));transform:scaleX(0);transform-origin:left;transition:transform .8s var(--motion-ease)}
.motion-headline.is-in::after{transform:scaleX(1)}
.tilt-card,.card.tilt-card{--rx:0deg;--ry:0deg;--sheen-x:50%;--sheen-y:50%;transform:perspective(900px) rotateX(var(--rx)) rotateY(var(--ry));transition:transform .2s var(--motion-ease),box-shadow .35s var(--motion-ease)}
.card.motion-lift.is-in{transform:translateY(-4px);box-shadow:0 28px 64px -16px rgba(0,0,0,.55)}
.tilt-card.tilt-on::before,.card.tilt-card.tilt-on::before{opacity:1}
.tilt-sheen::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .25s;background:radial-gradient(260px circle at var(--sheen-x) var(--sheen-y),rgba(255,255,255,.16),transparent 55%);z-index:4}
.tilt-card.tilt-on.tilt-sheen::after,.card.tilt-card.tilt-on.tilt-sheen::after{opacity:1}
.motion-parallax-wrap{overflow:hidden}
.motion-parallax-wrap img,.motion-parallax-wrap .post-frame{will-change:transform;transition:transform .1s linear}
.motion-section{position:relative;isolation:isolate}
.motion-bg-drift{position:absolute;inset:0;pointer-events:none;z-index:0;opacity:.07;background-size:240px 240px;animation:motion-tex-drift 90s linear infinite}
.motion-bg-drift.tex-plaster{background-image:url(/img/textures/ndr-texture-light-plaster-tile.svg)}
.motion-bg-drift.tex-chevron{background-image:url(/img/textures/ndr-texture-dark-chevron-tile.svg)}
.motion-bg-drift.tex-logo{background-image:url(/img/textures/ndr-texture-dark-logo-repeat-tile.svg)}
@keyframes motion-tex-drift{0%{background-position:0 0}100%{background-position:240px 180px}}
.motion-svg-prop{position:absolute;pointer-events:none;z-index:1;width:clamp(52px,11vw,88px);height:clamp(52px,11vw,88px);opacity:.82;filter:drop-shadow(0 14px 22px rgba(0,0,0,.4));transform:translate3d(var(--mpx,0),var(--mpy,0),0) rotate(var(--mrot,0deg));animation:motion-prop-float 8s var(--motion-ease) infinite alternate}
.motion-svg-prop img,.motion-svg-prop object{width:100%;height:100%;object-fit:contain;display:block}
.motion-svg-prop.slot-br{right:max(6px,env(safe-area-inset-right));bottom:14%;left:auto;top:auto}
.motion-svg-prop.slot-bl{left:max(6px,env(safe-area-inset-left));bottom:14%;right:auto;top:auto}
.motion-svg-prop.slot-mr{right:max(6px,env(safe-area-inset-right));top:38%;bottom:auto;left:auto}
@keyframes motion-prop-float{0%{transform:translate3d(var(--mpx,0),var(--mpy,0),0) rotate(calc(var(--mrot,0deg) - 3deg))}100%{transform:translate3d(var(--mpx,0),calc(var(--mpy,0) - 8px),0) rotate(calc(var(--mrot,0deg) + 4deg))}}
#walkthrough .motion-svg-prop,.scrolly .motion-svg-prop,.stage .motion-svg-prop{display:none!important}
body.home .reviews .living-prop{display:none!important}
.sub-hero,.sub-cta,.faq,.home-blog,.living-section:not(.intro){overflow:hidden}
.sub-hero .wrap,.sub-cta .wrap{position:relative;z-index:2}
.motion-svg-prop:not(.prop-placed),.living-prop:not(.prop-placed){visibility:hidden}
.motion-svg-prop.prop-off,.living-prop.prop-off{display:none!important}
/* Phone: first-screen heroes fill the screen under the header and sit in the vertical middle */
@media (max-width:820px){
  .page>.sub-hero:first-child{box-sizing:border-box;min-height:calc(100vh - 76px);min-height:calc(100svh - 76px);display:flex;flex-direction:column;justify-content:center;padding-top:28px;padding-bottom:max(28px,env(safe-area-inset-bottom))}
  .page>.sub-hero:first-child>.wrap{width:100%}
  .page>.sub-hero:first-child>.wrap>:last-child{margin-bottom:0}
  .motion-svg-prop.slot-bl{display:none}
  .motion-svg-prop{width:clamp(48px,14vw,72px);height:clamp(48px,14vw,72px)}
}
@media (prefers-reduced-motion:reduce){
  .motion-reveal,.motion-line>span,.word-rotate-face{opacity:1!important;transform:none!important;transition:none!important}
  .motion-bg-drift{animation:none!important}
  .motion-svg-prop{animation:none!important}
  .tilt-card,.card.tilt-card{transform:none!important}
  .motion-headline::after{transform:scaleX(1)!important}
}
/* v4: home hero knife hovers in a fixed right lane (below the header to the hero bottom). No jump placement. */
body.home .intro .living-prop.prop-lane{top:var(--lane-top,96px);bottom:auto;left:auto;right:max(6px,env(safe-area-inset-right));width:56px;max-width:56px;height:56px;z-index:0;opacity:1;visibility:visible;perspective:420px;transform:translate3d(0,0,0);animation:knife-lane 12s ease-in-out infinite alternate;will-change:transform;filter:none}
body.home .intro .living-prop.prop-lane img{width:100%;height:100%;object-fit:contain;transform-origin:50% 60%;animation:knife-bob 3.6s ease-in-out infinite alternate;will-change:transform;filter:drop-shadow(0 10px 14px rgba(0,0,0,.45))}
body.home .intro .living-prop.prop-lane::after{left:12%;right:12%;bottom:-14%;height:16%;animation:knife-shadow 3.6s ease-in-out infinite alternate}
body.home .intro .living-inner{position:relative;z-index:2}
@keyframes knife-lane{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(0,var(--lane-len,300px),0)}}
@keyframes knife-bob{0%{transform:translateY(0) rotate(-8deg) rotateY(-22deg)}100%{transform:translateY(-8px) rotate(8deg) rotateY(22deg)}}
@keyframes knife-shadow{0%{transform:scale(1);opacity:.9}100%{transform:scale(.7);opacity:.5}}
@media (min-width:821px){body.home .intro .living-prop.prop-lane{width:104px;max-width:104px;height:104px;right:max(16px,3vw)}}
/* Phone: home hero fills the small viewport under the real header, optically centered (a touch lower) */
@media (max-width:820px){
  body.home section.intro.living-section{min-height:100vh;min-height:100svh;padding-top:calc(var(--hdr-real,var(--intro-header)) + 12px + 5.5vh);padding-bottom:max(12px,env(safe-area-inset-bottom))}
}
@media (prefers-reduced-motion:reduce){
  body.home .intro .living-prop.prop-lane,body.home .intro .living-prop.prop-lane img,body.home .intro .living-prop.prop-lane::after{animation:none!important}
  body.home .intro .living-prop.prop-lane{transform:translate3d(0,calc(var(--lane-len,300px) * .5),0)}
}
