.journey-finale{position:relative;min-height:900px;margin-top:20px;padding-bottom:70px;--expand:1;--door:1;--reveal:1;--arrival:1;--digitized:1}
.finale-stage{position:sticky;top:45px}
.finale-room-wrap{position:relative;width:100%;overflow:hidden}
.finale-room{width:100%;height:auto;display:block;color:var(--green-soft);overflow:visible}
.finale-landscape{clip-path:inset(0 calc(48% - var(--expand)*48%) 0 calc(48% - var(--expand)*48%))}
.room-floor{fill:url(#finale-floor);stroke:none;opacity:.6}
.room-walls{stroke:var(--green-muted);fill:none;stroke-width:1.7}
.room-detail{stroke:var(--green-line);fill:none;stroke-width:1.2}
.room-accent{stroke:var(--green);fill:none;stroke-width:1.25;opacity:.6}
.room-left{transform:translateX(calc(-65px + var(--expand)*65px));opacity:var(--expand)}
.room-right{transform:translateX(calc(65px - var(--expand)*65px));opacity:var(--expand)}
.room-route{stroke:var(--green);fill:none;stroke-width:1.3;stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--arrival));opacity:.22}
.finale-door path:not(.room-detail){stroke:var(--green);stroke-width:3}
.door-left{transform:scaleX(calc(1 - var(--door)));transform-origin:460px 16px}
.door-right{transform:scaleX(calc(1 - var(--door)));transform-origin:540px 16px}
.arrival-ring{fill:none;stroke:var(--green);stroke-width:1;opacity:calc(var(--arrival)*.4);transform:scale(calc(.6 + var(--arrival)*.4));transform-origin:500px 255px}
.finale-copy{max-width:710px;margin:28px auto 0;text-align:center;position:relative;opacity:var(--reveal);transform:translateY(calc(24px - var(--reveal)*24px))}
.finale-copy .eyebrow{justify-content:center;font-size:9px}
.finale-copy h2{font-size:clamp(34px,4.6vw,64px);margin-bottom:27px}
.finale-copy>p:not(.eyebrow){font-size:18px;line-height:1.8;margin-bottom:19px}
.journey.has-finale .maze-field:after{background:linear-gradient(to bottom,var(--bg),transparent 85px)}
.finale-rat{opacity:0}
.puzzle-symbol{stroke:var(--green-soft);stroke-width:2;fill:none;opacity:calc(.35 + var(--expand)*.5)}
.symbol-centre{fill:var(--green);opacity:.5}
.room-footprint{fill:var(--green);stroke:none;opacity:0}
.phone-outline{fill:var(--bg);stroke:var(--green-soft);stroke-width:2}
.phone-screen{fill:color-mix(in srgb,var(--green) 2%,var(--bg));stroke:var(--green-line);stroke-width:1.2}
.phone-detail{fill:none;stroke:var(--green-muted);stroke-width:1.5;stroke-linecap:round}
.phone-ghost{opacity:var(--digitized);fill:var(--green);color:var(--green)}
.phone-signal-detail{stroke:var(--green);stroke-width:1;opacity:.3;fill:none}
.phone-glitch-strip{stroke:var(--green);stroke-width:2;fill:none;opacity:0}
.is-digitized .phone-rat-signal{animation:phone-rat-glitch 4.4s steps(1,end) infinite}
.is-digitized .phone-glitch-strip{animation:phone-rat-strips 4.4s steps(1,end) infinite}
@keyframes phone-rat-glitch{0%,6%,12%,78%,83%,100%{transform:translateX(0)}2%,9%,80%{transform:translateX(4px)}4%,11%,82%{transform:translateX(-3px)}}
@keyframes phone-rat-strips{0%,6%,12%,78%,83%,100%{opacity:0}2%,9%,80%{opacity:.8;transform:translateX(5px)}4%,11%,82%{opacity:.5;transform:translateX(-4px)}}
.finale-rat .rat-body,.finale-rat .rat-head{fill:var(--green-soft);stroke:var(--green-pale);stroke-width:1}
.finale-rat .rat-ear{fill:var(--green-line);stroke:var(--green-pale);stroke-width:1}
.finale-rat .rat-tail{fill:none;stroke:var(--green-soft);stroke-width:2.4;stroke-linecap:round}
.finale-rat .rat-foot{fill:var(--green-soft)}
.finale-rat .rat-whisker{fill:none;stroke:var(--green-pale);stroke-width:.8}
.finale-rat.is-moving .rat-foot-a{animation:paw-a .19s linear infinite alternate}
.finale-rat.is-moving .rat-foot-b{animation:paw-b .19s linear infinite alternate}
@media(max-width:700px){.journey-finale{min-height:850px;padding-bottom:65px;margin-top:15px}.finale-stage{top:24px}.finale-copy{margin-top:35px}.finale-copy .eyebrow{font-size:7px;letter-spacing:.04em}.finale-copy>p:not(.eyebrow){font-size:16px;line-height:1.8}.finale-copy h2{font-size:36px}.finale-room-wrap{margin-top:0}.puzzle-symbol{stroke-width:3}.phone-outline{stroke-width:3}}
@media(prefers-reduced-motion:reduce){.journey-finale{--expand:1!important;--door:1!important;--reveal:1!important;--arrival:1!important;--digitized:1!important;min-height:0}.finale-stage{position:relative;top:0}.finale-rat *,.phone-ghost *{animation:none!important}}
