:root{--sky:#285571;--gold:#d5b16b;background:var(--sky);color:#fff;font-family:Georgia,'Times New Roman',serif}*{box-sizing:border-box}body{margin:0}a{color:inherit}#track{height:1000vh}#journey{position:sticky;top:0;height:100svh;overflow:hidden}#media{position:absolute;inset:0;background:var(--sky);transition:background-color .4s linear}#media video,#sequence{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center;opacity:0}#media video.ready,#sequence:not([hidden]){opacity:1}.scene{position:absolute;inset:0;visibility:hidden;pointer-events:none}.scene.active{visibility:visible;pointer-events:auto}.copy{position:relative;text-align:center;display:flex;flex-direction:column;align-items:center;gap:24px;padding:max(7svh,env(safe-area-inset-top)) 24px 0;opacity:0}h1,h2{font-weight:400;letter-spacing:-.035em;font-size:clamp(42px,6.7vw,108px);line-height:1.04;margin:0;max-width:15em;text-wrap:balance}.cover .copy{height:100svh;justify-content:center;padding:24px;color:#142d3b;text-shadow:none}.brands{display:flex;gap:clamp(18px,3vw,44px);align-items:center}.logo-slot{display:flex;align-items:center;justify-content:center;width:clamp(120px,19vw,280px);height:clamp(120px,19vw,280px);flex:none}.logo-slot.maritime{background:#000;border-radius:20%}.logo-slot img{height:78%;width:auto;max-width:78%;max-height:78%;object-fit:contain;display:none}.logo-slot img.ready{display:block}.sms{display:inline-flex;align-items:center;min-height:48px;background:var(--gold);color:#152d3b;padding:12px 24px;border-radius:3px;text-decoration:none;font:15px Arial,sans-serif;letter-spacing:.03em}.sms:hover{background:#e4c388}[hidden]{display:none!important}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;clip-path:inset(50%)!important;overflow:hidden!important;white-space:nowrap!important}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:5px}.skip{position:fixed;top:-100px;left:16px;z-index:30;background:#152d3b;padding:12px}.skip:focus{top:16px}nav{position:fixed;bottom:max(16px,env(safe-area-inset-bottom));left:16px;z-index:20}nav button{position:absolute;clip-path:inset(50%);width:1px;height:1px;overflow:hidden;padding:0}nav button:focus-visible{position:relative;clip-path:none;width:auto;height:auto;padding:12px;background:#152d3b;color:white;border:0}#media-status{position:fixed;bottom:max(18px,env(safe-area-inset-bottom));left:18px;z-index:8;font:12px Arial,sans-serif;background:#142d3bcc;color:white;padding:6px 9px}#experiment{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:15;max-width:min(420px,90vw);font:12px/1.5 Arial,sans-serif;color:#fff;background:#102a3ee8;border-radius:4px;padding:6px 10px}#experiment summary{cursor:pointer}#experiment[open]{max-height:65svh;overflow:auto}#experiment p{white-space:pre-wrap}#experiment a{display:block;margin-top:8px}.reduced #track{height:auto!important}.reduced #journey{position:relative;height:auto;overflow:visible}.reduced #media{position:fixed}.reduced .scene{position:relative;min-height:100svh;visibility:visible;pointer-events:auto}.reduced .copy{opacity:1!important}.reduced .scene:not(.cover) .copy{padding-top:15svh}
@media(max-width:700px){#media video,#sequence{object-position:center bottom}.copy{padding-top:max(10svh,env(safe-area-inset-top));padding-inline:24px}h2{font-size:clamp(38px,10vw,66px);max-width:10em}.logo-slot{width:clamp(112px,32vw,150px);height:clamp(112px,32vw,150px)}.brands{gap:18px}.cover .copy{gap:32px}.sms{font-size:14px}}
@media(prefers-reduced-motion:reduce){#media{transition:none}}
.review-label{position:fixed;top:10px;left:10px;z-index:40;max-width:calc(100vw - 20px);padding:5px 8px;background:#142d3bcc;color:white;font:11px/1.4 Arial,sans-serif;pointer-events:none}
#review-diagnostics{position:fixed;bottom:8px;left:8px;z-index:35;max-width:calc(100vw - 180px);max-height:62px;overflow:auto;white-space:pre-wrap;pointer-events:none;background:#102a3ee8;color:#fff;padding:5px 7px;font:9px/1.35 monospace}
.preview-label{position:fixed;top:12px;left:12px;z-index:30;background:#142d3b99;color:#fff;border-radius:3px;padding:4px 7px;font:10px/1.3 Arial,sans-serif;pointer-events:none}
#film,#poster{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center}#film{opacity:1}#media video.chunk-decoder{opacity:0;pointer-events:none}#poster{opacity:1}.preview-label{position:fixed;top:12px;left:12px;z-index:30;background:#142d3b99;color:#fff;border-radius:3px;padding:4px 7px;font:10px/1.3 Arial,sans-serif;pointer-events:none}@media(max-width:700px){#film,#poster{object-position:center bottom}}
/* Decoder stays mounted and composited beneath the retained poster/canvas. */
#media video.chunk-decoder{opacity:1;z-index:0}#film,#poster{z-index:1}
#media-retry{position:fixed;left:max(18px,env(safe-area-inset-left));bottom:max(60px,calc(env(safe-area-inset-bottom) + 48px));z-index:20;min-height:44px;padding:10px 16px;border:0;border-radius:3px;background:var(--gold);color:#152d3b;font:14px Arial,sans-serif;cursor:pointer}#media-retry:disabled{opacity:.65;cursor:wait}

/* Keep the native decoder and retained canvas below interactive chapter copy. */
#media{isolation:isolate}

/* Up the Hillside UI study. CTA treatment provisional pending supplied reference. */
.scene[data-tone="dark"]{color:#172c36;text-shadow:none}
.cover .copy{gap:16px;padding:56px 24px 44px;justify-content:center}
.cover h1{font-size:clamp(56px,7.5vw,110px);line-height:.97;max-width:10em}
.cover .brands{gap:18px;margin-bottom:2px}
.cover .logo-slot{width:68px;height:68px}
.cover .logo-slot img{height:82%;max-width:82%;max-height:82%}
.brand-times{font:300 22px Georgia,serif;opacity:.6}
.eyebrow{margin:0;font:11px/1.4 Arial,sans-serif;letter-spacing:.22em;text-transform:uppercase}
.cover-description{margin:0 0 8px;max-width:31em;font:clamp(15px,1.6vw,19px)/1.5 Arial,sans-serif;text-wrap:balance}
.sms{position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-columns:1fr auto;column-gap:20px;row-gap:4px;min-width:242px;min-height:66px;padding:14px 22px;border:1px solid #95743a;border-radius:999px;background:linear-gradient(115deg,#ad8134 0%,#ecd090 33%,#f4dda6 53%,#d7b160 72%,#b88b3c 100%);color:#25200f;box-shadow:inset 0 1px 0 #fff5d8cc,inset 0 -1px 0 #78551b55,0 5px 18px #674a1624;font-family:Arial,sans-serif;letter-spacing:0;text-align:left;transition:box-shadow .2s ease,transform .2s ease}
.sms::before{content:"";position:absolute;z-index:-1;inset:-60% -45%;background:linear-gradient(110deg,transparent 38%,#fff8dc00 43%,#fff8dc99 50%,#fff8dc00 57%,transparent 62%);transform:translateX(-65%);animation:gold-sheen 5.5s ease-in-out infinite;pointer-events:none}
.sms-label{font-size:15px;font-weight:600;line-height:1.15}.sms-number{font-size:11px;line-height:1.1;grid-column:1;opacity:.85;letter-spacing:.025em}.sms-arrow{grid-column:2;grid-row:1/3;align-self:center;font-size:24px;line-height:1}
.sms:hover{background:linear-gradient(115deg,#b78a3e,#f1d99d 42%,#e4c479 70%,#bf9141);box-shadow:inset 0 1px 0 #fff8e6,0 7px 22px #674a1633;transform:translateY(-1px)}
.sms:active{transform:translateY(0)}.sms:focus-visible{outline:3px solid #183e53;outline-offset:5px}
.scroll-cue{border:0;background:none;color:inherit;display:flex;flex-direction:column;align-items:center;gap:7px;margin-top:13px;padding:10px 18px;min-height:52px;font:10px/1.3 Arial,sans-serif;letter-spacing:.13em;text-transform:uppercase;cursor:pointer}
.scroll-line{font:23px/1 Georgia,serif;animation:scroll-nudge 2.8s ease-in-out infinite}
@keyframes gold-sheen{0%,38%{transform:translateX(-65%)}65%,100%{transform:translateX(65%)}}
@keyframes scroll-nudge{0%,100%{transform:translateY(0);opacity:.65}50%{transform:translateY(4px);opacity:1}}
@media(max-width:700px){.cover .copy{gap:14px;justify-content:flex-start;padding-top:max(10svh,58px);padding-bottom:24px}.cover .logo-slot{width:52px;height:52px}.cover .brands{gap:14px}.cover h1{font-size:clamp(48px,13vw,72px);max-width:7em}.cover-description{font-size:15px;max-width:24em}.sms{min-width:230px;min-height:64px}.scroll-cue{margin-top:8px}.eyebrow{font-size:10px;letter-spacing:.19em}}
@media(max-height:620px) and (min-width:701px){.cover .copy{gap:10px;padding:36px 24px 18px}.cover .logo-slot{width:44px;height:44px}.cover h1{font-size:64px}.cover-description{font-size:15px}.scroll-cue{margin:0;padding:6px 18px;gap:3px}}
@media(prefers-reduced-motion:reduce){.sms::before,.scroll-line{animation:none}.sms::before{transform:none;opacity:.2}.sms{transition:none}.sms:hover{transform:none}.cover .copy{min-height:100svh}}

.sms-arrow{width:22px;height:22px}

/* Restrained legibility over the detailed community and hillside. */
.scene[data-tone="light"] h2{text-shadow:0 2px 14px #15251499,0 1px 2px #15251466}

/* Keep Personal in the genuinely empty sky beside the growing foreground tree. */
@media(min-width:701px){#scene-1 .copy{align-items:flex-end;padding-right:5vw}}

/* Stable mobile film box: text changes never move or resize the image. */
@media(max-width:700px){
 html:not(.reduced) #media{--copy-room:clamp(180px,35vw,240px);--film-top:calc((100svh - 56.25vw + var(--copy-room))/2)}
 html:not(.reduced) #media #film,html:not(.reduced) #media #poster,html:not(.reduced) #media video.chunk-decoder{inset:auto 0;top:var(--film-top);width:100%;height:auto;aspect-ratio:16/9;object-fit:contain;object-position:center;transition:none}
 html:not(.reduced) .scene:not(.cover) .copy{position:absolute;top:calc((100svh - 56.25vw + clamp(180px,35vw,240px))/2 - 90px);width:100%;padding:0 24px;gap:18px}
 html:not(.reduced) #scene-5 .copy{top:calc((100svh - 56.25vw - clamp(180px,35vw,240px))/2)}
}
/* Short landscape phones get two columns so neither film nor CTA is clipped. */
@media(max-width:700px) and (max-height:500px) and (orientation:landscape){
 html:not(.reduced) #media #film,html:not(.reduced) #media #poster,html:not(.reduced) #media video.chunk-decoder{inset:0 0 0 42%;top:0;width:58%;height:100%;aspect-ratio:auto;object-fit:contain;object-position:center}
 html:not(.reduced) .scene .copy,html:not(.reduced) #scene-5 .copy{position:absolute;inset:0 auto 0 0;top:0;width:42%;height:100svh;padding:32px 12px 24px;justify-content:center;gap:8px}
 .cover h1,h2{font-size:30px;max-width:8em}.cover .logo-slot{width:28px;height:28px}.cover .brands{gap:10px}.eyebrow{font-size:8px}.cover-description{font-size:12px;margin:0}.sms{min-width:185px;min-height:52px;padding:10px 16px}.sms-label{font-size:13px}.sms-number{font-size:10px}.scroll-cue{min-height:26px;margin:0;padding:2px;gap:2px;font-size:8px}.scroll-line{font-size:16px}
}

/* Premium: selected native frame stays contained after every viewport change.
   Override the legacy 16:9 mobile film box; do not crop or stretch portrait media. */
html[data-profile] #media #film,
html[data-profile] #media #poster,
html[data-profile] #media video.chunk-decoder{inset:0;top:0;width:100%;height:100%;aspect-ratio:var(--profile-native-aspect);object-fit:contain;object-position:center;transition:none}
html[data-profile]:not(.reduced) .scene:not(.cover) .copy,
html[data-profile]:not(.reduced) #scene-5 .copy{position:relative;inset:auto;top:auto;width:100%;height:auto;padding:max(7svh,env(safe-area-inset-top)) 24px 0;align-items:center;justify-content:flex-start}

/* HTML-first poster uses its real intrinsic aspect before the module runs. */
#profile-poster{display:contents}
#media #profile-poster #poster{inset:0;top:0;width:100%;height:100%;aspect-ratio:auto;object-fit:contain;object-position:center}
/* The selected cover tone controls copy; the gold SMS button keeps its own color. */
.cover[data-tone] .copy{color:inherit}
