/* Each chapter holds its composition while the camera moves around it. */
#departure h1{font-size:clamp(48px,6.2vw,94px);line-height:1.35;letter-spacing:.06em}
#departure h1 em{font-style:normal}
section .chapter-copy,#passage .chapter-copy,#arrival .chapter-copy{position:fixed;top:29vh;left:6vw;right:auto;width: min(640px,70vw);max-width:640px;padding:0;margin:0;pointer-events:none;visibility:hidden;opacity:0;transition:none}
.chapter-copy a,.chapter-copy button{pointer-events:none}
section.is-visible .chapter-copy,#passage.is-visible .chapter-copy,#arrival.is-visible .chapter-copy{visibility:visible}
section.is-visible .chapter-copy a,section.is-visible .chapter-copy button{pointer-events:auto}
.chapter-copy h1,.chapter-copy h2,.chapter-copy .lead,.chapter-copy .eyebrow{will-change:opacity,filter,transform}
.chapter-copy h1,.chapter-copy h2{filter:blur(var(--text-blur,0px));opacity:var(--heading-opacity,1);transform:translateX(var(--text-x,0px));}
.chapter-copy .eyebrow{opacity:var(--eyebrow-opacity,1);letter-spacing:var(--eyebrow-spacing,.24em)}
.chapter-copy .lead{opacity:var(--lead-opacity,1)}
/* Spacecraft copy: shown while the camera rides beside the hull, outside any section. */
#ship-copy{position:fixed;top:29vh;left:6vw;width:min(640px,70vw);max-width:640px;margin:0;padding:0;pointer-events:none;visibility:hidden;opacity:0;transition:none}
#ship-copy.is-visible{visibility:visible}
#ship-copy h2{font-size:clamp(34px,4.2vw,62px)}
#ship-copy.is-visible h2>span,#ship-copy.is-visible h2>em{display:inline-block;animation:resolve-type 1.5s cubic-bezier(.16,1,.3,1) both}
#ship-copy.is-visible h2>em{animation-delay:.16s}
#ship-copy.is-visible .lead{animation:resolve-copy 1.6s .3s both}
#arrival .chapter-copy{left:auto;right:6vw;width:min(520px,64vw);text-align:right}
#arrival h2{font-size:clamp(32px,4vw,58px)}
#horizon{height:190svh}
#horizon .chapter-copy{text-align:left;top:27vh;width:min(700px,74vw);max-width:700px}
#horizon h2{font-size:clamp(30px,3.6vw,52px)}
/* Headline lines never break mid-phrase; each authored line is one unit. */
.chapter-copy h1>span,.chapter-copy h1>em,.chapter-copy h2>span,.chapter-copy h2>em,#title-3>em{white-space:nowrap}
#residence{height:1050svh;padding:0;min-height:0}
.interior-stage{position:fixed;inset:0;z-index:-1;background:#080b10;opacity:0;visibility:hidden;pointer-events:none}
.interior-stage video{width:100%;height:100%;object-fit:contain;display:block}
.interior-shade{position:absolute;inset:0;background:linear-gradient(90deg,#030811b0,transparent 70%),linear-gradient(0deg,#030811a0,transparent 45%)}
#residence .chapter-copy{top:auto;bottom:17vh;width:min(660px,72vw);max-width:660px}
#residence .chapter-copy h2{font-size:clamp(28px,3.3vw,48px);white-space:nowrap}
#residence .lead{font-size:12px}
#residence .room-hint{color:#e0c9a2;margin:22px 0 0}
#video-status{font-size:12px;color:#e0c9a2}
section .annotation{opacity:0}
body[data-reduced=true] .chapter-copy *{filter:none!important;transform:none!important}
@media(max-width:768px){section .chapter-copy,#passage .chapter-copy,#arrival .chapter-copy,#horizon .chapter-copy,#residence .chapter-copy,#ship-copy{left:7vw;right:7vw;top:auto;bottom:20vh;width:auto;text-align:left;max-width:none}#departure h1{font-size:52px}#ship-copy h2{font-size:32px}#arrival h2,#horizon h2{font-size:27px}#residence .chapter-copy{bottom:17vh}#residence .chapter-copy h2{font-size:26px}.brand-caption{letter-spacing:.1em}.lead{letter-spacing:.06em}.fiction{max-width:300px}}
section.is-visible h1>span,section.is-visible h1>em,section.is-visible h2>span,section.is-visible h2>em{display:inline-block;animation:resolve-type 1.5s cubic-bezier(.16,1,.3,1) both}
section.is-visible h1>em,section.is-visible h2>em{animation-delay:.16s}
#passage.is-visible h2>span,#passage.is-visible h2>em{animation-name:passing-type}
#arrival.is-visible h2>span,#arrival.is-visible h2>em{animation-name:arrival-type}
section.is-visible .lead{animation:resolve-copy 1.6s .3s both}
@keyframes resolve-type{from{opacity:0;filter:blur(10px);letter-spacing:.16em}to{opacity:1;filter:blur(0);letter-spacing:.06em}}
@keyframes passing-type{from{opacity:0;filter:blur(5px);transform:translateX(-24px)}to{opacity:1;filter:blur(0);transform:translateX(0)}}
@keyframes arrival-type{from{opacity:0;clip-path:inset(0 0 0 100%)}to{opacity:1;clip-path:inset(0 0 0 0)}}
@keyframes resolve-copy{from{opacity:0}to{opacity:1}}
body[data-reduced=true] .chapter-copy *{animation:none!important}
