:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;background:#010201;color:#edf2ed}*{box-sizing:border-box}html,body{margin:0;min-width:300px;background:#010201}body{overflow-x:hidden}.scroll-space{height:560vh}.stage{position:sticky;top:0;height:100vh;min-height:520px;overflow:hidden;isolation:isolate;background:#010201}.return-link{position:fixed;z-index:90;top:clamp(14px,2.2vw,28px);left:clamp(14px,2.2vw,28px);display:flex;align-items:center;gap:8px;min-height:42px;padding:7px 11px;border:1px solid #d7dfd33d;background:#050806b8;backdrop-filter:blur(12px);color:#eef1eb;text-decoration:none;font-size:11px;letter-spacing:.04em}.return-link:focus-visible{outline:2px solid #e6ffe8;outline-offset:3px}.poster{position:absolute;inset:0;overflow:hidden;will-change:opacity,transform}.alien{z-index:2;background:radial-gradient(ellipse at 57% 48%,#151d10 0,#070a06 33%,#010201 72%)}.alien-fog,.alien-ground,.egg-frame,.thing-station,.thing-rays,.thing-parka,.thing-snow{position:absolute;display:block;pointer-events:none;user-select:none}.alien-fog{left:50%;width:max(112vw,1400px);height:auto;transform:translateX(-50%);mix-blend-mode:screen}.alien-fog-back{z-index:1;bottom:-5%;opacity:.48;filter:brightness(.72) saturate(.82)}.egg-stack{position:absolute;z-index:3;left:57%;bottom:3%;width:min(42vw,560px);aspect-ratio:2/3;transform:translateX(-50%)}.egg-frame{inset:0;width:100%;height:100%;object-fit:contain;object-position:50% 50%}.egg-frame{opacity:0}.egg-closed{opacity:1}.egg-slight{transform:translateY(.05%) scale(1.0007)}.egg-half{transform:translateY(.02%) scale(1.0002)}.egg-open{transform:translateY(.03%) scale(1.0003)}.alien-ground{z-index:4;left:50%;bottom:-8%;width:max(112vw,1450px);height:auto;transform:translateX(-50%)}.alien-fog-front{z-index:5;bottom:-12%;opacity:.72;filter:brightness(.86) saturate(.78) blur(1px)}.thing{z-index:5;opacity:0;background:#03090d}.thing-sky{position:absolute;inset:0;z-index:0;background:radial-gradient(ellipse at 58% 37%,#779aa64d,transparent 32%),linear-gradient(155deg,#02060a,#0b1821 58%,#182a33)}.snow{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.snow-back{z-index:1}.thing-station{z-index:2;left:50%;bottom:17%;width:min(88vw,1500px);height:auto;transform:translateX(-50%);filter:brightness(.76) saturate(.82) drop-shadow(0 18px 20px #0009)}.snow-mid{z-index:3}.thing-rays{z-index:4;left:58%;top:38%;width:max(104vw,1500px);height:auto;transform:translate(-50%,-50%);mix-blend-mode:screen}.thing-parka{z-index:5;left:58%;bottom:-3%;width:min(32vw,455px);height:auto;transform:translateX(-50%);filter:drop-shadow(0 24px 28px #000c)}.snow-front{z-index:6}.thing-snow{z-index:7;left:50%;bottom:-4%;width:max(108vw,1500px);height:auto;transform:translateX(-50%)}.grain{position:absolute;z-index:60;inset:-35%;pointer-events:none;opacity:.075;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E");animation:grain .3s steps(2) infinite}@keyframes grain{0%{transform:translate(0)}33%{transform:translate(2%,-3%)}66%{transform:translate(-3%,2%)}100%{transform:translate(1%,3%)}}.chronology{position:absolute;z-index:65;left:25px;top:50%;display:grid;gap:9px;transform:translateY(-50%);color:#d5ddd181;font:8px monospace}.chronology i{position:relative;height:90px;margin-left:4px;border-left:1px solid #ffffff2b}.chronology b{position:absolute;left:-1px;width:1px;height:100%;background:#eff;transform:scaleY(var(--chronology,0));transform-origin:top}.scroll-cue{position:absolute;z-index:65;left:50%;bottom:22px;transform:translateX(-50%);margin:0;color:#d9e4d687;font:8px system-ui;letter-spacing:.2em;text-transform:uppercase;white-space:nowrap}.scroll-cue span{margin-left:9px}
@media(max-width:760px){.scroll-space{height:520vh}.return-link{font-size:9px}.egg-stack{left:58%;bottom:5%;width:min(78vw,500px)}.alien-ground{bottom:-1%;width:max(165vw,1000px)}.alien-fog{width:max(170vw,1050px)}.chronology{display:none}.thing-station{left:48%;bottom:19%;width:max(145vw,900px)}.thing-rays{left:60%;top:38%;width:max(180vw,1100px)}.thing-parka{left:60%;bottom:-1%;width:min(72vw,430px)}.thing-snow{width:max(180vw,1100px)}.scroll-cue{bottom:13px}}
@media(max-height:620px) and (orientation:landscape){.egg-stack{bottom:-15%;width:min(32vw,370px)}.alien-ground{bottom:-34%}.thing-station{bottom:10%}.thing-parka{width:min(28vw,330px);bottom:-20%}.thing-rays{top:35%}.scroll-cue{display:none}}
@media(prefers-reduced-motion:reduce){.grain{animation:none;opacity:.045}.poster{will-change:auto}}

/* Production composition correction */
.alien-fog{width:min(88vw,1180px)}
.alien-fog-back{bottom:-18%;opacity:.14;filter:brightness(.36) saturate(.55)}
.egg-stack{bottom:1%;width:min(44vw,590px);filter:contrast(1.1) brightness(1.02)}
.alien-ground{bottom:-8vh;width:min(78vw,1050px);filter:brightness(.34) saturate(.58) contrast(1.12);mask-image:radial-gradient(ellipse 52% 70% at 57% 48%,#000 0 34%,#000b 54%,transparent 88%)}
.alien-fog-front{bottom:-19%;opacity:.18;filter:brightness(.38) saturate(.55) blur(2px)}
.snow-back{filter:blur(.65px)}
.thing-station{bottom:8%;width:min(76vw,1100px);filter:brightness(.54) saturate(.7) blur(.25px) drop-shadow(0 18px 20px #0009)}
.snow-mid{filter:blur(.2px)}
.thing-parka{z-index:4}
.thing-rays{z-index:5;width:min(52vw,750px);transform-origin:50% 50%;filter:brightness(.72)}
.snow-front{z-index:6;filter:blur(.45px)}
.thing-snow{z-index:7;bottom:-7%;width:min(102vw,1470px)}
.thing-snowfield{position:absolute;z-index:3;left:-8%;right:-8%;bottom:-4%;height:37%;pointer-events:none;background:radial-gradient(ellipse 34% 35% at 17% 15%,#5266724a 0,#293c4740 48%,transparent 73%),radial-gradient(ellipse 43% 42% at 58% 8%,#71879238 0,#2739443b 50%,transparent 76%),radial-gradient(ellipse 38% 32% at 88% 20%,#4b616d42 0,#21333e3d 52%,transparent 78%),linear-gradient(to bottom,#283c4759,#0a151d 58%,#050b10 100%);mask-image:linear-gradient(to bottom,transparent 0,#0005 16%,#000 36%,#000 100%)}
.snow-mid{z-index:4}
.thing-parka{z-index:5}
.thing-rays{z-index:6}
.snow-front{z-index:7}
.thing-snow{z-index:8}
.interference{position:absolute;z-index:40;inset:0;width:100%;height:100%;pointer-events:none;mix-blend-mode:screen}

@media(max-width:760px){
  .egg-stack{bottom:3%;width:min(80vw,510px)}
  .alien-ground{bottom:-9vh;width:max(125vw,760px)}
  .alien-fog{width:max(118vw,700px)}
  .thing-station{left:48%;bottom:14%;width:145vw}
  .thing-rays{left:60%;top:46%;width:min(82vw,500px)}
  .thing-snow{bottom:-8%;width:max(132vw,800px)}
}

@media(max-height:620px) and (orientation:landscape){
  .alien-ground{bottom:-28vh}
  .thing-station{bottom:2%}
  .thing-rays{top:38%;width:min(46vw,560px)}
}

/* One artwork coordinate system: hood opening at (50%, 14.3%) of the parka.
   This retains the 1440x900 desktop registration and all existing ray sizes. */
.thing-character{position:absolute;z-index:5;left:58%;bottom:-3%;width:min(32vw,455px);aspect-ratio:2/3;transform:translateX(-50%);pointer-events:none}
.thing-character .thing-parka{left:0;top:0;bottom:auto;width:100%;transform:none}
.thing-character .thing-rays{left:50%;top:14.3%}
@media(max-width:760px){.thing-character{left:60%;bottom:-1%;width:min(72vw,430px)}}
@media(max-height:620px) and (orientation:landscape){.thing-character{bottom:-20%;width:min(28vw,330px)}}

/* Third living poster: one registered car plane, with scroll-driven light. */
.scroll-space{height:1100vh}
.bttf{z-index:10;opacity:0;background:#02040a;pointer-events:none;--car:1;--normal:1;--glow:0;--fire:0;--flash:0;--arrival:0}
.bttf-atmosphere{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 59%,#101c3550,transparent 58%),linear-gradient(#02040a,#040713);opacity:calc(1 - var(--fire)*.7)}
.bttf-composition{position:absolute;left:50%;top:58%;width:min(69vw,1060px);aspect-ratio:2/1;transform:translate(-50%,-50%)}
.bttf-car{position:absolute;inset:0;z-index:6;opacity:calc(var(--car)*var(--arrival))}
.bttf-car img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;transform:none;transform-origin:50% 50%}
.bttf-normal{opacity:var(--normal)}.bttf-glowing{opacity:var(--glow)}
.bttf-fire{position:absolute;inset:0;z-index:2;opacity:var(--fire)}
/* Near flame centers (~12/88%, 90%) meet rear tire centers (~12/88%, 94%). */
.bttf-fire>img{position:absolute;left:0;top:4%;width:100%;height:100%;object-fit:contain}
.bttf-warmth{mask-image:radial-gradient(ellipse closest-side,#000 20%,transparent 100%);position:absolute;inset:-15% -15% -25%;background:radial-gradient(ellipse at 50% 75%,#e95516,transparent 64%);opacity:var(--warm)}
.bttf-haze{position:absolute;inset:10% 0 0;background:radial-gradient(ellipse at 28% 65%,#857a7220,transparent 32%),radial-gradient(ellipse at 73% 68%,#a78f7820,transparent 35%);filter:blur(15px);transform:translateY(var(--haze-shift))}
/* Local, transient electrical events; all geometry stays near the car plane. */
.bttf-energy,.bttf-sparks{position:absolute;inset:0;pointer-events:none}
/* Every procedural electrical layer stays behind the opaque car artwork. */
.bttf-energy-back,.bttf-energy-front,.bttf-sparks{z-index:1}
.bttf-spark,.bttf-discharge{position:absolute;display:block;opacity:0;transform-origin:0 50%;color:var(--spark-core,#eaffff)}
.bttf-spark{background:currentColor;box-shadow:0 0 3px var(--spark-bloom,#75beff80);border-radius:1px}
.bttf-discharge:before,.bttf-discharge:after{content:"";position:absolute;inset:0;background:currentColor}
.bttf-discharge:before{clip-path:polygon(0 47%,22% 34%,37% 57%,59% 18%,72% 42%,100% 33%,73% 52%,58% 30%,38% 69%,21% 44%,0 54%)}
.bttf-discharge:after{clip-path:polygon(38% 59%,54% 70%,62% 94%,53% 80%,48% 72%,36% 65%)}
.bttf-embers{position:absolute;inset:0}.bttf-ember{position:absolute;width:2px;height:4px;border-radius:50%;background:#ffb15c;box-shadow:0 0 5px #ff601a}
.bttf-speed{z-index:9;position:absolute;left:21%;top:20%;padding:14px 17px 11px;border:1px solid #9eab9d12;border-radius:4px;background:linear-gradient(155deg,#b4c0b408,transparent 40%),#030707c9;box-shadow:inset 0 0 12px #0009;transform:rotate(-2deg);color:#e9bd78}
.bttf-speed>span{display:block;margin-top:7px;text-align:right;font:8px monospace;letter-spacing:.13em;opacity:.55}
.bttf-digits{display:flex;gap:9px}.bttf-digit{position:relative;width:36px;height:64px;transform:skewX(-5deg)}
.segment{position:absolute;background:#eac080;opacity:.055}.segment.lit{opacity:1;filter:drop-shadow(0 0 3px #f3a33e88)}
.segment-a,.segment-g,.segment-d{left:5px;width:27px;height:5px;clip-path:polygon(12% 0,88% 0,100% 50%,88% 100%,12% 100%,0 50%)}
.segment-a{top:0}.segment-g{top:29px}.segment-d{bottom:0}
.segment-b,.segment-c,.segment-e,.segment-f{width:5px;height:27px;clip-path:polygon(50% 0,100% 12%,100% 88%,50% 100%,0 88%,0 12%)}
.segment-b{right:0;top:3px}.segment-c{right:0;bottom:3px}.segment-e{left:0;bottom:3px}.segment-f{left:0;top:3px}
.bttf-flash{position:absolute;inset:0;z-index:8;opacity:var(--flash);background:radial-gradient(ellipse at 50% 58%,#fff 0,#defaff 32%,#91ceeb 75%,#638aac)}
@media(max-width:760px){.scroll-space{height:1020vh}.bttf-composition{width:92vw;top:58%}.bttf-speed{left:12%;top:26%;transform:scale(.85) rotate(-2deg);transform-origin:left top}}
@media(max-height:620px) and (orientation:landscape){.bttf-composition{width:min(64vw,110vh);top:61%}.bttf-speed{left:15%;top:15%;transform:scale(.7)}}
@media(prefers-reduced-motion:reduce){.bttf-haze{filter:none}.bttf-sparks{display:none}}


/* Die Hard: actor dimensions inherit the tower's scale, including PNG padding. */
.scroll-space{height:1595vh}
.die-hard{z-index:20;opacity:0;pointer-events:none;background:#020308;--dusk:0;--night:0;--explosion:0;--smoke:0;--exposure:0;--end:1}
.die-hard-sky{position:absolute;inset:0;opacity:var(--end);background:radial-gradient(ellipse at 50% 40%,#26313b60,transparent 65%)}
.die-hard-sky:before,.die-hard-sky:after{content:"";position:absolute;inset:0}
.die-hard-sky:before{opacity:var(--dusk);background:radial-gradient(ellipse at 42% 65%,#9b4f282e,transparent 60%)}
.die-hard-sky:after{opacity:var(--night);background:linear-gradient(#010208e6,#02040bcc)}
.die-hard-building{position:absolute;left:50%;top:13%;width:min(58vh,78vw);aspect-ratio:2/3;transform:translateX(-50%);opacity:var(--end)}
.die-hard-building img{position:absolute;display:block;pointer-events:none;user-select:none}
.die-hard-frame{inset:0;width:100%;height:100%;object-fit:contain;transform-origin:50% 0}
.die-hard-day{z-index:1}.die-hard-dusk{z-index:2;opacity:var(--dusk)}.die-hard-night{z-index:3;opacity:var(--night)}
/* Upper facade landmarks compensate for extra explosion/smoke headroom. */
.die-hard-explosion{z-index:4;opacity:var(--explosion);transform:translate(2.5%,-17.7%) scale(1.075)}
.die-hard-smoking{z-index:5;opacity:var(--smoke);transform:translate(2.5%,-13.5%) scale(1.075)}
/* Fuselage occupies ~36% of its PNG height: ~2.2 upper-floor intervals. */
.die-hard-helicopter{z-index:6;width:20%;height:auto;left:86%;top:7%;opacity:0;transform:translate(-50%,-50%);transform-origin:50% 50%}
/* Double the previous rendered size; retain the source PNG's padding. */
.die-hard-man{z-index:7;height:8.6%;width:auto;left:42%;top:30%;opacity:0;transform:translate(-50%,-50%);transform-origin:50% 49%}
.die-hard-smoke-wisps{position:absolute;inset:0;z-index:6;opacity:var(--smoke);pointer-events:none}
.die-hard-smoke-wisps i{position:absolute;left:39%;top:3%;width:15%;height:6%;border-radius:50%;background:radial-gradient(ellipse,#68696b99 0,#383b3e66 35%,transparent 72%);filter:blur(3px);opacity:0;animation:die-hard-smoke-rise 9s linear infinite;animation-delay:-2s;--drift:18%}
.die-hard-smoke-wisps i:nth-child(2){left:48%;top:2%;width:13%;animation-duration:11s;animation-delay:-7s;--drift:-14%}
.die-hard-smoke-wisps i:nth-child(3){left:58%;top:4%;width:12%;height:5%;animation-duration:8s;animation-delay:-5s;--drift:24%}
.die-hard-smoke-wisps i:nth-child(4){left:43%;top:4%;width:11%;height:5%;animation-duration:10s;animation-delay:-9s;--drift:-20%}
@keyframes die-hard-smoke-rise{0%{opacity:0;transform:translate(0,0) scale(.8)}25%{opacity:.22}65%{opacity:.13}100%{opacity:0;transform:translate(var(--drift),-110%) scale(1.18)}}
@media(prefers-reduced-motion:reduce){.die-hard-smoke-wisps i{animation:none;opacity:.08}}
.die-hard-roof-embers{position:absolute;z-index:6;left:35%;top:-8%;width:36%;height:14%;opacity:var(--smoke);pointer-events:none}
.die-hard-ember{position:absolute;top:85%;width:2px;height:100%;opacity:0;animation:die-hard-ember-rise var(--duration) linear var(--delay) infinite}
.die-hard-ember:before{content:"";position:absolute;top:0;left:0;width:2px;height:3px;border-radius:50%;background:#ffb15c;box-shadow:0 0 4px #ff601a}
.die-hard-ember:nth-child(3n):before{width:1px;height:2px;background:#ffe2a3}
@keyframes die-hard-ember-rise{0%{opacity:0;transform:translate(0,0)}18%{opacity:.6}65%{opacity:.35}100%{opacity:0;transform:translate(var(--drift),-85%)}}
@media(prefers-reduced-motion:reduce){.die-hard-ember{animation:none;opacity:.12;transform:translateY(-30%)}.die-hard-ember:nth-child(n+4){display:none}}
.die-hard-exposure{position:absolute;inset:0;z-index:8;opacity:var(--exposure);background:radial-gradient(ellipse at 50% 20%,#fff7df,#ffb36688 45%,transparent 80%)}
@media(max-width:760px){.scroll-space{height:1465vh}}


/* Stargate: geometry uses the original 1287 × 1222 source coordinates. */
.scroll-space{height:2423vh}
.sg-poster{z-index:30;opacity:0;pointer-events:none;background:#010205;--sg-destination:0;--sg-tunnel:0;--sg-horizon:0;--sg-water-play:paused;--sg-torch-play:paused}
.sg-poster img{display:block;pointer-events:none;user-select:none}
/* Physical gate center (643,596.16), excluding the walkway. */
.sg-gate{position:absolute;z-index:2;left:50%;top:50%;width:min(86vh,88vw);aspect-ratio:1287/1222;transform:translate(-50%,-50%);transform-origin:49.961% 48.7856%}
.sg-outer,.sg-chevrons{position:absolute;inset:0;width:100%;height:100%}
.sg-outer{z-index:3;object-fit:contain}
/* Rotate a square carrier. Normalize the source's 423.48 × 420.84 inner radii
   BEFORE rotating; source center is (642.05,601.18), not the PNG center. */
.sg-ring-seat{position:absolute;z-index:2;left:49.961%;top:48.7856%;width:100%;aspect-ratio:1;transform:translate(-50%,-50%)}
.sg-ring-rotor{position:absolute;inset:0;transform-origin:50% 50%}
.sg-inner-ring{position:absolute;left:2.1079%;top:4.875%;width:96%;height:91.725%;object-fit:fill}
/* Radius 420 overlaps the normalized glyph opening (radius 406.54). */
.sg-opening,.sg-eruption{position:absolute;left:49.961%;top:48.7856%;width:65.268%;aspect-ratio:1;transform:translate(-50%,-50%)}
.sg-opening{z-index:1;border-radius:50%;overflow:hidden;opacity:var(--sg-horizon);background:#286995}
.sg-eruption{z-index:5;overflow:visible}
.sg-water{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;opacity:0;transform-origin:center}
.sg-horizon{opacity:1;transform:scale(1.14)}
.sg-opening:after{content:"";position:absolute;inset:-30%;opacity:.42;background:linear-gradient(115deg,transparent 30%,#d2f7ff66 43%,transparent 55%),radial-gradient(ellipse at 65% 70%,#b5edff44,transparent 48%);mix-blend-mode:screen;animation:sg-water-shimmer 13s ease-in-out infinite alternate;animation-play-state:var(--sg-water-play)}
@keyframes sg-water-shimmer{from{transform:translate(-16%,-3%)}to{transform:translate(16%,3%)}}
.sg-chevrons{z-index:4;mix-blend-mode:overlay}
.sg-chevron{position:absolute;inset:0;background:#ff932b;opacity:0}
/* Offset by the cropped strip so the visible floor meets the viewport bottom. */
.sg-destination{position:absolute;z-index:1;left:50%;bottom:0;width:min(100vw,178vh);aspect-ratio:1672/941;transform:translate(-50%,5.3135%);opacity:var(--sg-destination)}
/* Trim the bottom 50 source pixels without shifting the torch anchors. */
.sg-destination>img{width:100%;height:100%;clip-path:inset(0 0 5.3135%)}
.sg-torches{position:absolute;inset:0}
/* Reuse Die Hard's small ember pool/keyframes, anchored to destination pixels. */
.sg-torch{position:absolute;width:2.4%;height:7%;transform:translate(-50%,-100%)}
.sg-torch .die-hard-ember{top:100%;animation-play-state:var(--sg-torch-play)}
.sg-torch .die-hard-ember:before{width:1.5px;height:2px;box-shadow:0 0 3px #ff601a}
.sg-tunnel{position:absolute;z-index:5;inset:0;opacity:var(--sg-tunnel);overflow:hidden}
.sg-wormhole{width:100%;height:100%;object-fit:cover;object-position:center}
@media(max-width:760px){.scroll-space{height:2221vh}.sg-gate{width:min(86vh,94vw)}}
@media(prefers-reduced-motion:reduce){.sg-horizon{animation:none;transform:scale(1.14)}.sg-opening:after{animation:none;opacity:.15}}


/* Fifth Element: one 1983 × 793 taxi plane for actors, impacts and damage. */
.scroll-space{height:3067vh}
.fifth{z-index:35;opacity:0;pointer-events:none;background:radial-gradient(ellipse at 54% 58%,#17232d 0,#070c13 43%,#020408 78%);--fifth-play:paused}
.fifth-scene{position:absolute;z-index:2;left:50%;top:57%;width:min(88vw,1060px);aspect-ratio:1983/793;transform:translate(-50%,-50%)}
.fifth-hover,.fifth-rumble,.fifth-taxi,.fifth-level,.fifth-tilted,.fifth-hits,.fifth-flight,.fifth-debris{position:absolute;inset:0}
.fifth-hover{animation:fifth-hover 3.7s ease-in-out infinite;animation-play-state:var(--fifth-play)}
.fifth-taxi{z-index:2;transform-origin:54% 49%}
.fifth-level,.fifth-tilted{transform-origin:0 0}
.fifth-level>img,.fifth-tilted>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;user-select:none}
.fifth-broken,.fifth-tilted{opacity:0}
/* The actor's lower torso lands at (49%, 17%), the crushed roof opening. */
.fifth-lilou{position:absolute;z-index:1;left:34%;top:-17%;width:23%;height:auto;opacity:0;transform-origin:65% 88%;user-select:none}
.fifth-hits{z-index:3}
.fifth-hit{position:absolute;width:1.9%;aspect-ratio:1;transform:translate(-50%,-50%) rotate(var(--hit-angle)) scale(var(--hit-size));opacity:0}
.fifth-hit svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 1px 1px #0009)}
.fifth-hit-flash{position:absolute;inset:-60%;opacity:var(--hit-flash,0);background:radial-gradient(ellipse,#fffbe9 0 9%,#ffdb8ed9 17%,#ff9b4155 34%,transparent 65%);clip-path:polygon(49% 0,57% 37%,98% 25%,67% 52%,91% 89%,54% 65%,31% 100%,38% 60%,0 43%,40% 40%)}
.fifth-hit-spark{position:absolute;left:50%;top:50%;width:30%;height:7%;opacity:0;background:#ffe0a3;box-shadow:0 0 3px #ffaf58;transform-origin:left center}
.fifth-cut-flash{position:absolute;inset:12% 8% 18% 19%;z-index:4;opacity:0;pointer-events:none;background:radial-gradient(ellipse at 62% 65%,#fff5d7aa,transparent 38%),radial-gradient(ellipse at 30% 40%,#ffc56a66,transparent 48%)}
.fifth-chip{position:absolute;left:49%;top:19%;width:.28%;height:.8%;background:#a9c4c8;opacity:0;clip-path:polygon(0 0,100% 30%,40% 100%)}
.fifth-flight{z-index:-1;opacity:.3}
.fifth-flight i{position:absolute;left:5%;top:74%;width:15%;height:1px;background:linear-gradient(90deg,transparent,#8ecbdf80);transform-origin:right;animation:fifth-stream 1.3s linear infinite;animation-play-state:var(--fifth-play)}
.fifth-flight i:nth-child(2){top:68%;width:11%;animation-delay:-.6s;animation-duration:1.7s}
.fifth-flight i:nth-child(3){top:82%;width:9%;animation-delay:-1s;animation-duration:1.1s}
/* Separate carriers combine a broad hover with irregular engine corrections.
   Lilou shares both carriers, preserving the roof collision in every viewport. */
.fifth-rumble{animation:fifth-rumble 1.13s linear infinite;animation-play-state:var(--fifth-play)}
@keyframes fifth-hover{0%,100%{transform:translate3d(-.4%,-2.5%,0) rotate(-.55deg)}28%{transform:translate3d(.55%,.6%,0) rotate(.35deg)}57%{transform:translate3d(.2%,2.5%,0) rotate(.6deg)}79%{transform:translate3d(-.5%,.4%,0) rotate(-.2deg)}}
@keyframes fifth-rumble{0%,100%{transform:translate3d(0,0,0) rotate(0)}12%{transform:translate3d(.16%,.48%,0) rotate(.11deg)}24%{transform:translate3d(-.12%,-.35%,0) rotate(-.12deg)}39%{transform:translate3d(.21%,.22%,0) rotate(.08deg)}51%{transform:translate3d(-.13%,-.54%,0) rotate(-.16deg)}58%{transform:translate3d(.32%,.85%,0) rotate(.24deg)}67%{transform:translate3d(-.24%,-.48%,0) rotate(-.17deg)}83%{transform:translate3d(.1%,.31%,0) rotate(.09deg)}}
.fifth-flight:after{content:"";position:absolute;left:-1%;top:60%;width:13%;height:20%;background:radial-gradient(ellipse at 85% 50%,#c4f5ff88,#57c6ef33 35%,transparent 70%);animation:fifth-engine .47s ease-in-out infinite alternate;animation-play-state:var(--fifth-play)}
@keyframes fifth-engine{0%{opacity:.35;transform:scaleX(.85)}42%{opacity:.8}100%{opacity:.65;transform:scaleX(1.3)}}
/* Fixed, sparse lanes pass right-to-left at different depths/speeds. */
.fifth-air{position:absolute;inset:0;overflow:hidden;z-index:1}
.fifth-air i{position:absolute;left:0;top:var(--lane);width:100%;height:1px;animation:fifth-air-pass var(--speed) linear var(--delay) infinite;animation-play-state:var(--fifth-play)}
.fifth-air i:before{content:"";display:block;width:var(--length);height:100%;background:linear-gradient(90deg,transparent,#9db9c0 75%,transparent);opacity:var(--alpha)}
.fifth-air i:nth-child(1){--lane:29%;--speed:5.3s;--delay:-2.2s;--length:8%;--alpha:.13}
.fifth-air i:nth-child(2){--lane:44%;--speed:4.1s;--delay:-3.3s;--length:5%;--alpha:.18}
.fifth-air i:nth-child(3){--lane:69%;--speed:5.9s;--delay:-.5s;--length:10%;--alpha:.13}
.fifth-air i:nth-child(4){--lane:37%;--speed:2.2s;--delay:-1.3s;--length:14%;--alpha:.23}
.fifth-air i:nth-child(5){--lane:78%;--speed:1.6s;--delay:-.7s;--length:19%;--alpha:.24}
.fifth-air i:nth-child(6){--lane:61%;--speed:2.7s;--delay:-2s;--length:11%;--alpha:.2}
.fifth-air i:nth-child(7){--lane:49%;--speed:3.7s;--delay:-.9s;--length:3%;--alpha:.4}
.fifth-air i:nth-child(8){--lane:85%;--speed:2s;--delay:-1.6s;--length:16%;--alpha:.17}
@keyframes fifth-air-pass{0%{transform:translate3d(110%,0,0);opacity:0}12%,88%{opacity:1}100%{transform:translate3d(-110%,0,0);opacity:0}}
@keyframes fifth-stream{0%{opacity:0;transform:translateX(0) scaleX(.4)}25%{opacity:.6}100%{opacity:0;transform:translateX(-130%) scaleX(1)}}
@media(max-width:760px){.scroll-space{height:2809vh}.fifth-scene{width:94vw;top:57%}}
@media(max-height:620px) and (orientation:landscape){.fifth-scene{width:min(82vw,155vh);top:59%}}
@media(prefers-reduced-motion:reduce){.fifth-hover,.fifth-rumble,.fifth-flight i,.fifth-flight:after,.fifth-air i{animation:none}.fifth-flight,.fifth-air,.fifth-debris,.fifth-cut-flash,.fifth-hit-flash,.fifth-hit-spark{display:none}}


/* Sunshine: timeline 6.45–7.95; solar light and the foreground share a center.
   Source observer's head is at x=40.3%, not the bench image's midpoint. */
.scroll-space{height:3757vh}
.sunshine{position:fixed;inset:0;height:100vh;height:100dvh;--sun-size:min(92vw,84dvh);--observer-size:min(90vw,108dvh);--sun-y:50%;z-index:45;opacity:0;pointer-events:none;background:#020202;--sun-play:paused;--sun-power:1;--sun-colour:1;--sun-room:0;--sun-edge:.1;--sun-rim:.58;--sun-rim-radius:1px}
.sunshine-sun{position:absolute;z-index:2;left:50%;top:var(--sun-y);width:var(--sun-size);aspect-ratio:1272/1236;transform:translate(-50%,-50%)}
.sunshine-surface{position:absolute;inset:0;filter:brightness(var(--sun-power)) saturate(var(--sun-colour));animation:sunshine-breathe 19s ease-in-out infinite alternate;animation-play-state:var(--sun-play)}
.sunshine-surface img{display:block;width:100%;height:100%;user-select:none}
/* A filled falloff overlaps the limb. An outside-only box shadow left a dark
   gap between its inner radius and the smaller solar disc. */
.sunshine-edge{position:absolute;inset:-3%;border-radius:50%;background:radial-gradient(ellipse closest-side,#ffbb5055 0 72%,#ffb94038 84%,#ffb9400a 95%,transparent 100%);opacity:var(--sun-edge)}
.sunshine-shimmer{position:absolute;inset:7%;border-radius:50%;background:radial-gradient(ellipse at 28% 38%,#ffedb44d,transparent 25%),radial-gradient(ellipse at 74% 67%,#ffe5a82b,transparent 21%);mix-blend-mode:screen;animation:sunshine-shimmer 11s ease-in-out infinite alternate;animation-play-state:var(--sun-play)}
.sunshine-room-light{position:absolute;inset:0;z-index:1;background:radial-gradient(ellipse at 50% var(--sun-y),#ffd482 0,#b26a2a66 43%,#653c1e22 72%,transparent 95%);opacity:var(--sun-room)}
.sunshine-bloom,.sunshine-overexposure{position:absolute;left:50%;top:var(--sun-y);width:var(--sun-size);aspect-ratio:1;pointer-events:none;transform:translate(-50%,-50%);opacity:0;will-change:transform,opacity}
.sunshine-bloom{z-index:3;background:radial-gradient(circle,#fffbea 0 28%,#fff1bded 37%,#ffd0718c 48%,#ffbc4526 59%,transparent 70%)}
.sunshine-foreground{position:absolute;z-index:4;left:50%;bottom:0;width:var(--observer-size);aspect-ratio:1774/815;transform:translateX(-40.3%)}
.sunshine-observer{display:block;width:100%;height:100%;object-fit:cover;object-position:top;filter:brightness(var(--sun-rim)) drop-shadow(0 0 var(--sun-rim-radius) #ffd37d66);user-select:none}
/* Overlay only the existing left console: a metal knob and engraved readout. */
.sunshine-control{position:absolute;inset:0 0 auto;height:108.834%;color:#d4a965}
.sunshine-dial{position:absolute;left:12.4%;top:65%;width:4.1%;aspect-ratio:1;transform:translate(-50%,-50%) rotate(-24deg) scaleY(.66);border-radius:50%;border:1px solid #b79353;background:repeating-conic-gradient(#342b1f 0 7deg,#695338 7deg 10deg);box-shadow:0 2px 3px #000}
.sunshine-dial i{position:absolute;inset:12%;border-radius:50%;background:radial-gradient(circle at 35% 30%,#857153,#211b14 73%);transform:rotate(var(--sun-dial,-130deg))}
.sunshine-dial i:after{content:"";position:absolute;width:2px;height:29%;left:calc(50% - 1px);top:8%;background:#f0c781}
.sunshine-readout{position:absolute;left:7%;top:77%;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;text-shadow:0 0 5px #e89c302e;white-space:nowrap}
.sunshine-readout span{display:block;font-size:clamp(9px,.64vw,10px);letter-spacing:.08em}
.sunshine-readout strong{display:block;font-size:clamp(17px,1.6vw,23px);font-weight:400;line-height:1.3;font-variant-numeric:tabular-nums}
.sunshine-readout small{font-size:.6em;margin-left:.15em}
/* A second solar light front crosses the silhouette only after the room blooms. */
.sunshine-overexposure{z-index:5;background:radial-gradient(circle,#fffef5 0 41%,#fffbea 49%,#fff2cde6 56%,#ffe9a34d 64%,transparent 71%)}
@keyframes sunshine-breathe{from{transform:translate3d(-.12%,.08%,0) scale(1)}to{transform:translate3d(.12%,-.08%,0) scale(1.004)}}
.sunshine-shimmer:before,.sunshine-shimmer:after{content:"";position:absolute;inset:0;border-radius:50%;background:radial-gradient(ellipse at 35% 62%,#fff0b655,transparent 19%);animation:sunshine-local-light 23s ease-in-out infinite alternate;animation-play-state:var(--sun-play)}
.sunshine-shimmer:after{background:radial-gradient(ellipse at 68% 27%,#ffe6a04d,transparent 16%);animation-duration:31s;animation-delay:-13s}
@keyframes sunshine-local-light{0%{opacity:.1;transform:translate(-1%,.5%)}43%{opacity:.32}71%{opacity:.16}100%{opacity:.42;transform:translate(1%,-.5%)}}
@keyframes sunshine-shimmer{from{opacity:.12;transform:translate(-.3%,.2%)}to{opacity:.38;transform:translate(.3%,-.2%)}}
/* Viewport-fixed only for Sunshine: the shared stage has a 520px minimum
   for earlier posters, which otherwise detaches the bench on short screens. */
@media(max-width:760px){.scroll-space{height:3439vh}.sunshine{--observer-size:min(150vw,100dvh);--sun-y:clamp(calc(var(--sun-size)*.5 + 3dvh),calc(100dvh - var(--observer-size)*.28 - var(--sun-size)*.43),calc(97dvh - var(--sun-size)*.5))}.sunshine-readout{left:10%;top:78%}}
@media(max-height:620px) and (orientation:landscape){.sunshine{--observer-size:105dvh;--sun-y:50%}.sunshine-readout{top:73%}}
@media(prefers-reduced-motion:reduce){.sunshine-surface,.sunshine-shimmer,.sunshine-shimmer:before,.sunshine-shimmer:after{animation:none}.sunshine-bloom,.sunshine-overexposure{will-change:auto}}


/* Interstellar: 7.95–9.35. Viewport coordinates separate the stationary
   background, continuously flowing environment and scroll-driven ship path. */
.scroll-space{height:4401vh}
.interstellar{position:fixed;inset:0;height:100vh;height:100dvh;z-index:50;opacity:0;background:#000;pointer-events:none;--interstellar-play:paused;--interstellar-horizon:44%;--ship-light:.86;--flow-tile:max(160vw,220vh)}
.interstellar-background{position:absolute;z-index:1;left:50%;top:var(--interstellar-horizon);width:max(100vw,184vh);aspect-ratio:1672/941;transform:translate(-50%,-42.7%)}
.interstellar-background img{position:absolute;inset:0;width:100%;height:100%;display:block;user-select:none}
/* Reuse only the artwork's thin bright horizon; the central void is untouched. */
.interstellar-horizon{mask-image:linear-gradient(transparent 36%,#000 41% 46%,transparent 52%);mix-blend-mode:screen;opacity:.04;animation:interstellar-horizon-light 17s ease-in-out infinite alternate;animation-play-state:var(--interstellar-play)}
.interstellar-flow{position:absolute;left:0;right:0;height:67%;pointer-events:none;--flow-duration:9s;--flow-offset:-4.7s}
.interstellar-flow-far{z-index:2;top:calc(var(--interstellar-horizon) - 8%);opacity:.9;filter:brightness(.68) saturate(.65);mask-image:linear-gradient(transparent,#000 12% 88%,transparent)}
.interstellar-flow-near{z-index:4;top:calc(var(--interstellar-horizon) + 1%);height:72%;opacity:.62;--flow-tile:max(190vw,260vh);--flow-duration:4.875s;--flow-offset:-1.3s;filter:brightness(.42) saturate(.55) blur(.6px);mask-image:linear-gradient(transparent 0%,#000 19% 85%,transparent)}
/* Tiles overlap by 40%; both ends feather inside that overlap, including
   the source image's irregular transparent lower edge. One 60% stride is an
   exact repeat; oversized, independently phased layers disguise repetition. */
.interstellar-flow-track{position:absolute;left:calc(var(--flow-tile)*-.6);top:0;width:var(--flow-tile);height:100%;animation:interstellar-flow-left var(--flow-duration) linear var(--flow-offset) infinite;animation-play-state:var(--interstellar-play);will-change:transform}
.interstellar-flow-track img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:fill;display:block;mask-image:linear-gradient(90deg,transparent,#000 20% 80%,transparent);user-select:none}
.interstellar-flow-track img:nth-child(2){left:60%}.interstellar-flow-track img:nth-child(3){left:120%}.interstellar-flow-track img:nth-child(4){left:180%}
.interstellar-journey{position:absolute;inset:0;z-index:3;transform:translate3d(12%,56%,0);pointer-events:none}
.interstellar-ship{position:absolute;left:0;top:0;width:clamp(22px,2.4vw,40px);aspect-ratio:1295/1214;transform:translate(-50%,-50%);filter:brightness(var(--ship-light)) drop-shadow(0 0 .6px #ffcf8c55)}
.interstellar-ship img{display:block;width:100%;height:100%;animation:interstellar-ring-spin 105s linear infinite;animation-play-state:var(--interstellar-play);user-select:none}
@keyframes interstellar-flow-left{from{transform:translate3d(0,0,0)}to{transform:translate3d(-60%,0,0)}}
@keyframes interstellar-ring-spin{to{transform:rotate(360deg)}}
@keyframes interstellar-horizon-light{from{opacity:.035}to{opacity:.085}}
@media(max-width:760px){.scroll-space{height:4027vh}.interstellar-background{width:max(160vw,125vh);mask-image:linear-gradient(transparent,#000 15%)}.interstellar{--flow-tile:max(175vw,125vh)}.interstellar-flow-near{--flow-tile:max(200vw,150vh)}}
@media(prefers-reduced-motion:reduce){.interstellar-flow-track,.interstellar-ship img,.interstellar-horizon{animation:none;will-change:auto}}


/* Arrival: 9.35–14.15. SVG geometry and its canvas diffusion share one plane. */
.scroll-space{height:6609vh}
.arrival{position:fixed;inset:0;height:100vh;height:100dvh;z-index:55;opacity:0;pointer-events:none;background:radial-gradient(ellipse at 49% 44%,#e1e5de 0,#cbd2cd 38%,#a5b1ad 74%,#7d8988 110%);--arrival-play:paused}
.arrival-fog{position:absolute;inset:-25%;pointer-events:none;animation:arrival-fog-drift 37s ease-in-out infinite alternate;animation-play-state:var(--arrival-play)}
.arrival-fog-back{z-index:1;background:radial-gradient(ellipse at 28% 48%,#f1f0df66,transparent 48%),radial-gradient(ellipse at 73% 60%,#6f838233,transparent 45%)}
.arrival-fog-mid{z-index:2;background:linear-gradient(113deg,transparent 19%,#eaf0e84a 42%,transparent 66%);animation-duration:51s;animation-delay:-19s;animation-direction:alternate-reverse}
.arrival-glyph{position:absolute;z-index:3;left:50%;top:50%;width:80vmin;aspect-ratio:1;transform:translate(-50%,-50%)}
.arrival-glyph svg,.arrival-diffusion{position:absolute;inset:0;display:block;width:100%;height:100%}
.arrival-diffusion{z-index:0}.arrival-glyph svg{z-index:1}
.arrival-fog-front{z-index:4;background:radial-gradient(ellipse at 62% 47%,#dce6df22,transparent 34%);animation-duration:43s;animation-delay:-11s}
.arrival-glass{position:absolute;inset:0;z-index:5;background:linear-gradient(99deg,transparent 8%,#ffffff09 29%,transparent 37%,#40525105 69%,transparent 84%);opacity:.7}
@keyframes arrival-fog-drift{from{transform:translate3d(-3%,-1%,0) scale(1);opacity:.66}to{transform:translate3d(3%,1.5%,0) scale(1.025);opacity:.92}}
@media(max-width:760px){.scroll-space{height:6043vh}.arrival-glyph{width:min(104vw,88dvh)}}
@media(prefers-reduced-motion:reduce){.arrival-fog{animation:none;opacity:.65}}


/* Tenet: stationary 3.3:1 source coordinate plane. Input inversion is isolated
   in movies-tenet.js; the preceding Movies timeline keeps its original scale. */
.scroll-space{height:7299vh}
.tenet{position:fixed;inset:0;height:100vh;height:100dvh;z-index:65;opacity:0;overflow:hidden;pointer-events:none;background:radial-gradient(ellipse at 50% 54%,#263034 0,#111719 48%,#06090b 90%);--tenet-red:.13;--tenet-blue:0}
.tenet-composition{position:absolute;left:50%;top:54%;width:min(96vw,1500px);aspect-ratio:3.3;transform:translate(-50%,-50%)}
.tenet-composition:after{content:"";position:absolute;left:-30%;right:-30%;top:100%;height:60%;background:linear-gradient(#11161980,transparent);border-top:1px solid #9caaaa0a}
.tenet-barrier,.tenet-barrier-seat,.tenet-barrier-backing{position:absolute;left:17%;bottom:0;width:83%;aspect-ratio:3;display:block;clip-path:inset(0 0 0 15.5%)}
.tenet-barrier-backing{z-index:5}
.tenet-barrier{z-index:5;user-select:none}
.tenet-barrier-seat{z-index:3}
/* Source openings: (190,136)–(1035,452), (1100,136)–(1977,452).
   Glass slightly overlaps the opaque frame so no bright seam can appear. */
.tenet-glass{position:absolute;top:18%;height:45%;background:linear-gradient(114deg,transparent 20%,#bddee01a 42%,transparent 53%),repeating-linear-gradient(45deg,transparent 0 7px,#a7c9c91a 7px 7.5px,transparent 7.5px 14px),repeating-linear-gradient(-45deg,transparent 0 7px,#a7c9c914 7px 7.5px,transparent 7.5px 14px),#698d891a;backdrop-filter:blur(.65px) brightness(.87) saturate(.7);box-shadow:inset 0 0 14px #53696925}
.tenet-glass-left{left:8.5%;width:39.5%}.tenet-glass-right{left:50.5%;width:41%}
.tenet-housing,.tenet-door-seat,.tenet-housing-backing{position:absolute;left:-2%;bottom:0;width:38%;aspect-ratio:1393/1129}
.tenet-housing{display:block;user-select:none;pointer-events:none}
/* The front canvas needs +100 source pixels in X to join the back piece.
   Layer names deliberately follow the asset filenames. */
.tenet-housing-back{z-index:0}
.tenet-housing-front,.tenet-housing-backing{left:.727925%;z-index:8}
.tenet-base-backing{pointer-events:none}
.tenet-door-seat{z-index:1;overflow:hidden;clip-path:inset(14% 19.24% 16% 15%)}
/* Visible source door bounds: x=487..973, y=0..1108. Fixed closed geometry
   overlaps the opening x≈640..1120, y≈200..945 in housing coordinates. */
.tenet-door{position:absolute;left:-1%;top:12%;display:block;width:120%;height:80%;transform:translateX(-38%);user-select:none}
.tenet-protagonist{position:absolute;left:0;bottom:1.5%;height:60%;aspect-ratio:640/724;z-index:9;will-change:transform}
/* Explicit source crops share a 640×724 canvas, anchored at its shoe baseline. */
.tenet-sprite{position:absolute;left:-50%;top:0;width:100%;height:100%;display:block}
.tenet-chamber-light{position:absolute;left:3%;bottom:4%;width:27%;height:93%;z-index:6;pointer-events:none}
.tenet-chamber-light:before,.tenet-chamber-light:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 50%,#b64936,transparent 70%);opacity:var(--tenet-red)}
.tenet-chamber-light:after{background:radial-gradient(ellipse at 50% 50%,#659eab,transparent 70%);opacity:var(--tenet-blue)}
@media(max-width:760px){.scroll-space{height:6673vh}.tenet-composition{width:98vw;top:54%}.tenet-glass{backdrop-filter:brightness(.87) saturate(.7)}}
@media(max-height:620px) and (orientation:landscape){.tenet-composition{width:min(96vw,245dvh)}}
@media(prefers-reduced-motion:reduce){.tenet-protagonist{will-change:auto}.tenet-glass{backdrop-filter:brightness(.87) saturate(.7)}}


/* Dune: 15.65–17.25. All scenery is fixed; only the buried worm translates. */
.scroll-space{height:8127vh}
.dune{position:fixed;inset:0;height:100vh;height:100dvh;z-index:70;opacity:0;pointer-events:none;background:linear-gradient(#403528 0%,#907551 40%,#c69a5b 70%,#a16b32);--dune-buried-offset:52dvh}
.dune img{display:block;user-select:none;pointer-events:none}
.dune-landscape{position:absolute;z-index:1;left:50%;top:32%;width:max(112vw,200dvh);transform:translateX(-50%)}
.dune-landscape img{width:100%;height:auto}
.dune-worm-seat{position:absolute;z-index:2;left:50%;top:8%;width:min(82vw,86dvh);aspect-ratio:1280/1229;transform:translateX(-50%)}
.dune-worm-rise,.dune-worm{width:100%;height:100%;will-change:transform}
.dune-worm-rise{transform:translate3d(0,var(--dune-buried-offset),0)}
.dune-foreground{position:absolute;z-index:3;left:50%;top:56%;width:max(120vw,180dvh);height:auto;transform:translateX(-50%)}
.dune-fremen{position:absolute;z-index:4;width:14dvh;height:auto}
@media(max-width:760px){.scroll-space{height:7429vh}.dune{--dune-buried-offset:38dvh}.dune-worm-seat{top:20%;width:min(116vw,86dvh)}}
@media(prefers-reduced-motion:reduce){.dune-worm-rise,.dune-worm{will-change:auto}}


/* Tenet's temporal cue affects this stage only, and exists only while inverted. */
.tenet{--tenet-inversion:0;filter:saturate(calc(1 - var(--tenet-inversion)*.12)) contrast(calc(1 + var(--tenet-inversion)*.025))}
.tenet:after{content:"";position:absolute;inset:0;z-index:20;pointer-events:none;background:#5c9bb0;mix-blend-mode:soft-light;opacity:calc(var(--tenet-inversion)*.075)}


/* Ending: preserve Dune's final hold through 17.45, then add .7 timeline units. */
.scroll-space{height:8449vh}
.movies-ending{position:fixed;inset:0;z-index:100;visibility:hidden;pointer-events:none;color:#eee9df;text-align:center;font-family:Georgia,"Times New Roman",serif}
.ending-black{position:absolute;inset:0;background:#000;opacity:0}
.ending-slate{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:calc(100% - 48px);max-width:680px;margin:0;opacity:0;visibility:hidden;font-weight:400;line-height:1.6}
.ending-title{font-size:clamp(44px,7vw,88px);letter-spacing:.2em;padding-left:.2em;line-height:1.2}
.ending-production{font-size:clamp(13px,1.6vw,21px);letter-spacing:.16em}
.ending-credits{font-size:clamp(12px,1.1vw,15px)}
.ending-credits p{margin:0 0 28px}.ending-credits p:last-child{margin-bottom:0}
.ending-credits span{display:block;font-size:1.15em;letter-spacing:.025em}
.ending-thanks{font-size:clamp(20px,2.4vw,30px)}
.ending-back{width:auto;white-space:nowrap;color:#a49f96;font:12px/1.6 ui-sans-serif,system-ui,sans-serif;text-decoration:none;padding:12px;pointer-events:none}
.ending-back[data-ready="true"]{pointer-events:auto}
.ending-back:hover{color:#eee9df}.ending-back:focus-visible{outline:1px solid #eee9df;outline-offset:5px}
@media(max-width:760px){.scroll-space{height:7723vh}}

/* Keep the Alien artwork inside short viewports, including its 3.5% scroll scale.
   Bottom offset also compensates for the stage's existing minimum height. */
.egg-stack{width:min(44vw,590px,58svh);bottom:max(1%,calc(100% - 97svh));transform-origin:50% 100%}
@media(max-width:760px){.egg-stack{width:min(80vw,510px,58svh);bottom:max(3%,calc(100% - 97svh))}}
/* A narrow warm edge catches the falling silhouette without changing its path. */
.die-hard-man{filter:brightness(1.12) drop-shadow(-.65px -.25px .35px #ead6b99c)}
