/* Window height changes layout, never the user's motion preference.
   Loaded last; viewport-v7 supplies the shared --scene-height measurement. */
html{scroll-behavior:auto}
html[data-fullframe-motion="full"] .ff-arrival{height:calc(var(--scene-height,100svh) * 1.9)}
html[data-fullframe-motion="full"] .ff-studio{height:calc(var(--scene-height,100svh) * 1.85)}
.ff-arrival-sticky,.ff-studio-sticky{height:var(--scene-height,100svh);min-height:0}
html[data-fullframe-motion="full"] .ff-arrival-sticky,
html[data-fullframe-motion="full"] .ff-studio-sticky{position:sticky;top:0}
/* Music and video controls remain ordinary, reachable document content. */
.ff-music,.ff-watch{height:auto;min-height:var(--scene-height,100svh)}
.ff-music-sticky,.ff-watch-sticky{position:relative;top:auto;height:auto;min-height:var(--scene-height,100svh);overflow:visible;padding:calc(var(--header,88px) + 32px) var(--pad) 40px;gap:32px}
.ff-music-sticky>*,.ff-watch-sticky>*{flex-shrink:0}
/* Original photo and protection mask share the actual viewport cover crop. */
.ff-world-layer--masked .ff-world-photo{width:max(100vw,calc(var(--scene-height,100svh) * 1366 / 2048))}
[data-world-layer="studio"] .ff-world-photo{width:max(100vw,calc(var(--scene-height,100svh) * 1024 / 1536))}
/* Keep actions with their headline instead of a second absolute offset. */
.ff-arrival-copy{top:max(calc(var(--header,88px) + 18px),calc(var(--scene-height,100svh) * .16));max-width:calc(100% - var(--pad) * 2)}
.ff-arrival .scene-actions{position:static;inset:auto;margin-top:20px;display:flex;flex-wrap:wrap;gap:10px;max-width:100%;white-space:normal}
.ff-arrival .scene-actions a{min-height:44px;white-space:nowrap;gap:12px}
.fullframe-site .ff-arrival h1{font-size:clamp(70px,min(9.8vw,calc(var(--scene-height,100svh) * .17)),155px)}
.ff-arrival-line{font-size:clamp(38px,min(6.5vw,calc(var(--scene-height,100svh) * .12)),96px)}
/* The CSS fallback matches the lighter cached smoke recipe. */
.ff-studio-bridge-wisp--a{opacity:.65}
.ff-studio-bridge-wisp--b{opacity:.32}
.ff-studio-bridge-mist{opacity:.18}
@media(min-width:701px) and (max-width:1100px){
 .fullframe-site .ff-music-title h2,.fullframe-site .ff-watch-title h2{font-size:clamp(48px,6.6vw,76px)}
 .ff-music-title{gap:24px}
 .ff-record{gap:28px;max-width:100%}
 .ff-record-copy{min-width:0;margin-right:0}
}
@media(max-width:700px){
 .ff-arrival-copy{left:var(--pad);top:max(calc(var(--header,112px) + 12px),calc(var(--scene-height,100svh) * .17))}
 .fullframe-site .ff-arrival h1{font-size:clamp(64px,min(20vw,calc(var(--scene-height,100svh) * .15)),96px)}
 .ff-arrival .scene-actions a{font-size:10px;padding-inline:10px;gap:10px}
 .ff-music-sticky,.ff-watch-sticky{gap:28px;padding-top:calc(var(--header,112px) + 22px);padding-bottom:32px}
 .ff-music-title h2{margin-top:10px}
}
@media(max-height:760px){
 .ff-arrival-copy{top:calc(var(--header,88px) + 12px)}
 .fullframe-site .ff-arrival h1{font-size:clamp(52px,min(9.8vw,calc(var(--scene-height,100svh) * .145)),110px);margin-block:12px}
 .ff-signature{padding:7px 10px;gap:14px}
 .ff-signature .brand-logo{width:32px;height:36px;padding-right:12px}
 .ff-signature em{font-size:23px}
 .ff-arrival .scene-actions{margin-top:14px}
 .fullframe-site .ff-studio-title{font-size:clamp(46px,min(8.2vw,calc(var(--scene-height,100svh) * .14)),100px)!important}
 .ff-arrival-line{bottom:13%}
}
@media(max-height:520px){
 .ff-arrival-copy{top:calc(var(--header,88px) + 6px)}
 .fullframe-site .ff-arrival h1{font-size:clamp(48px,min(9.5vw,calc(var(--scene-height,100svh) * .13)),68px);margin-block:8px}
 .ff-arrival-copy>.eyebrow{font-size:8px;letter-spacing:.12em}
 .ff-signature{font-size:10px;padding:5px 9px;gap:10px}
 .ff-signature em{font-size:18px}
 .ff-signature .brand-logo{width:26px;height:30px;padding-right:10px}
 .ff-arrival .scene-actions{margin-top:12px;gap:8px}
 .ff-arrival .scene-actions a{font-size:10px;padding-inline:10px;gap:10px}
 .ff-scene-footer{bottom:16px}
 .ff-arrival-line{font-size:clamp(30px,6vw,54px);bottom:12%}
}

@media(max-height:400px){
 .ff-arrival .ff-signature{display:none}
 .ff-arrival h1 br{display:none}
 .fullframe-site .ff-arrival h1{font-size:clamp(30px,7.8vw,54px);margin-block:10px}
 .ff-arrival .scene-actions{margin-top:10px}
}

/* Focus stays visible when the photographic scroll treatment fades its copy. */
.ff-arrival-copy:focus-within{opacity:1;transform:none}
.fullframe-site .booking-section a:focus-visible{outline-color:#f2e2a4}

/* Exit captions with their scene, before they pass behind the fixed header. */
html:not(.phone-enhanced) .ff-arrival .ff-scene-footer{opacity:var(--arrival-copy,1)}
html:not(.phone-enhanced) .ff-studio .ff-scene-footer{opacity:var(--studio-title-opacity,1)}
