/* The travelling title screen is independent of gallery/exploration transitions. */
#journey-cover{position:fixed;inset:0;z-index:1000000;isolation:isolate;overflow:hidden;background:#342837;color:#f4debd;opacity:1;transition:opacity .65s ease;--panorama-width:max(100vw,300svh)}
#journey-cover[hidden]{display:none!important}
#journey-cover.leaving{opacity:0;pointer-events:none}
.journey-panorama{position:absolute;inset:0 auto 0 0;width:calc(var(--panorama-width)*4);height:100%;display:block;animation:journey-landscape 30s linear infinite;will-change:transform}
.journey-panorama img{position:absolute;top:0;display:block;width:25.75%;height:100%;max-width:none;object-fit:fill;mask-image:linear-gradient(90deg,transparent,#000 2.9%,#000 97.1%,transparent);filter:contrast(1.04) saturate(1.05)}
.journey-panorama img:nth-child(1){left:-.375%}.journey-panorama img:nth-child(2){left:24.625%}.journey-panorama img:nth-child(3){left:49.625%}.journey-panorama img:nth-child(4){left:74.625%}
.journey-shade{position:absolute;inset:0;background:linear-gradient(#fff1c20c,transparent 45%,#11151d44 76%,#101320e0);pointer-events:none}
.journey-caravan{position:absolute;left:50%;--caravan-width:clamp(180px,21vw,360px);bottom:calc(24% + var(--caravan-width)*.024);width:var(--caravan-width);aspect-ratio:3/1;transform:translateX(-50%);filter:brightness(.82) saturate(.84) drop-shadow(0 5px 4px #1a19277a)}
.journey-caravan-body{position:absolute;inset:0;width:100%;height:100%;z-index:2;object-fit:contain;animation:journey-suspension .72s ease-in-out infinite alternate}
.journey-wheel{position:absolute;width:11.3%;height:auto;top:75%;z-index:1;animation:journey-wheel .9s linear infinite;transform-origin:center}
.journey-wheel.middle{left:17.9%}
.journey-wheel.rear{left:77.1%}
.journey-steam{position:absolute;left:23%;top:4%;z-index:3;width:3%;height:8%;pointer-events:none}
.journey-steam i{position:absolute;left:0;top:0;width:220%;height:220%;background:radial-gradient(ellipse,#e9d3c085,transparent 65%);border-radius:50%;animation:journey-steam 3.6s linear infinite;animation-delay:calc(var(--p)*-.9s);opacity:0}

.journey-start{position:absolute;top:40%;left:3%;transform:none;display:flex;flex-direction:column;align-items:flex-start;gap:20px;white-space:nowrap}
@keyframes journey-landscape{from{transform:translateX(-50%)}to{transform:translateX(0)}}
@keyframes journey-near-road{from{transform:translateX(-180px)}to{transform:translateX(0)}}
@keyframes journey-wheel{to{transform:rotate(-360deg)}}
@keyframes journey-suspension{from{transform:translateY(0) rotate(-.12deg)}to{transform:translateY(-1px) rotate(.12deg)}}
@keyframes journey-steam{0%{transform:translate(-50%,-50%) scale(.4);opacity:0}15%{opacity:.6}80%{opacity:.15}100%{transform:translate(65px,-55px) scale(2.6);opacity:0}}
@media(prefers-reduced-motion:reduce){#journey-cover *{animation:none!important}#journey-cover{transition:none}}
html.journey-cover-open{overflow:hidden}
html.journey-cover-open body>.screen-temperature-grade{display:block!important;opacity:1!important}



.journey-heading{position:absolute;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:10px 3%;gap:20px;background:none;pointer-events:none}
.journey-heading .cover-art-title{margin:0;line-height:0;letter-spacing:0;flex:none;display:flex;width:clamp(290px,33vw,440px);pointer-events:none}
.journey-heading .cover-title-glyph{position:relative;display:block;width:25%;flex:0 0 25%;opacity:1}
.journey-heading .cover-title-glyph+.cover-title-glyph{margin-left:-3%}
.journey-heading .cover-title-glyph img{display:block;width:100%;height:auto;filter:saturate(.45);pointer-events:none}
.journey-heading .cover-title-wheel{position:absolute;left:65%;top:8%;width:16%;height:auto;overflow:visible;filter:drop-shadow(0 0 1px #91b9ee) drop-shadow(0 0 3px #b7dfff66);transform-origin:center;animation:cover-wheel-turn 8s linear infinite;pointer-events:none}
#journey-enter img{display:block;width:100%;height:auto;pointer-events:none}
.journey-caravan::after{content:'';position:absolute;left:10%;right:6%;top:106%;height:5%;background:radial-gradient(ellipse,#15131bb3,transparent 70%);z-index:-1}
@media(max-width:600px){.journey-heading .cover-art-title{width:min(72vw,340px)}}

@media(max-width:600px){.journey-caravan{--caravan-width:210px}.journey-start{top:35%;left:3%;gap:14px}.journey-panorama{animation-duration:40s}}

body>header .cover-art-title{display:none!important}
.journey-world{position:absolute;inset:0;transform-origin:var(--window-x,50%) var(--window-y,78%);transition:transform .43s cubic-bezier(.55,.02,.8,.65)}
#journey-cover.departing .journey-world{transform:translate(var(--zoom-x,0px),var(--zoom-y,0px)) scale(var(--window-zoom,8))}
#journey-cover.menu-dissolving .journey-heading .cover-title-glyph{animation:title-drift .38s ease calc(var(--glyph-index)*.035s) both}
#journey-cover.menu-dissolving .journey-start{pointer-events:none}
.journey-menu-button{appearance:none!important;display:block;width:clamp(205px,19vw,305px);padding:0!important;border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important;line-height:0;cursor:pointer;transition:transform .22s,translate .22s,scale .22s,filter .22s;filter:brightness(.88)}
.journey-menu-button img{display:block;width:100%;height:auto;pointer-events:none}
.journey-menu-button:hover,.journey-menu-button:focus-visible{transform:none;translate:9px 0;scale:1.06;filter:brightness(1.2) drop-shadow(0 0 5px #d8edff) drop-shadow(0 0 12px #b5c8ed88);outline:none}
.journey-menu-button:active{transform:none;translate:11px 0;scale:1.08;filter:brightness(1.4) drop-shadow(0 0 8px #d8edff)}
.journey-achievements-dialog{position:fixed;inset:0;box-sizing:border-box;width:100vw;height:100svh;max-width:none;max-height:none;margin:0;padding:28px 4%;overflow:auto;color:#e4d1b2;border:0;background:radial-gradient(ellipse at 30% 35%,#243449,#0b1629 75%);box-shadow:none}.journey-achievements-page{max-width:1100px;margin:0 auto}.journey-achievements-head{display:grid;grid-template-columns:54px minmax(0,1fr) 54px;align-items:center;gap:24px;padding:0 0 18px;margin-bottom:28px;border-bottom:1px solid #8f744d}.journey-achievements-head h2{text-align:center;font-size:30px;margin:0;font-weight:400;letter-spacing:.25em}.journey-achievements-close{cursor:pointer}@media(max-width:560px){.journey-achievements-dialog{padding:20px 16px}.journey-achievements-head{grid-template-columns:46px minmax(0,1fr) 46px;gap:16px}.journey-achievements-head h2{font-size:24px}}
.journey-achievements-dialog::backdrop{background:#080d17b3;backdrop-filter:brightness(1)}
.journey-achievement-list{display:grid;gap:12px}.journey-achievement{display:grid;grid-template-columns:32px 1fr;gap:12px;padding:18px;border:1px solid #ac906e40;opacity:.55}.journey-achievement.unlocked{opacity:1;background:#bc996315}.journey-achievement b{font-weight:400;font-size:20px}.journey-achievement p{font-size:14px;line-height:1.7;margin:7px 0 0;color:#b7ad9d}.journey-achievement-status{font-size:12px;color:#c8a96f}
#journey-cinema{position:fixed;inset:0;z-index:2147483647;overflow:hidden;pointer-events:none;opacity:0;transition:opacity .1s;background:transparent}
#journey-cinema[hidden]{display:none!important}#journey-cinema.visible{opacity:1}
.journey-corridor-camera{position:absolute;inset:0;transform-origin:49.95% 44.45%;transform:translateX(105%) perspective(1400px) rotateY(-35deg) scale(1);transition:transform .24s cubic-bezier(.38,.08,.8,.5)}
#journey-cinema.turning .journey-corridor-camera{transform:translateX(0) perspective(1400px) rotateY(0) scale(1)}
#journey-cinema.rushing .journey-corridor-camera{transform:scale(5.5)}
#journey-cinema.passing .journey-corridor-camera{transform:scale(8.2);transition:transform .48s cubic-bezier(.4,.05,.75,.5)}
.journey-corridor-camera>img{width:100%;height:100%;object-fit:fill;display:block;filter:saturate(.88) brightness(1.06);clip-path:polygon(evenodd,0 0,100% 0,100% 100%,0 100%,0 0,43.3% 27.8%,43.3% 61.1%,56.6% 61.1%,56.6% 27.8%,43.3% 27.8%,0 0)}
.journey-corridor-gate{position:absolute;left:43.3%;top:27.8%;width:13.3%;height:33.3%;overflow:hidden;background:transparent}
.journey-corridor-door{position:absolute;top:0;width:50%;height:100%;background-image:url(ui/journey-corridor-v2.webp);background-size:1503.759% 300.300%;transition:transform .25s cubic-bezier(.2,.65,.3,1)}
.journey-corridor-door.left{left:0;background-position:46.385% 41.679%}
.journey-corridor-door.right{right:0;background-position:53.508% 41.679%}
#journey-cinema.opening .journey-corridor-door.left{transform:translateX(-102%)}
#journey-cinema.opening .journey-corridor-door.right{transform:translateX(102%)}
.journey-corridor-gate::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;box-shadow:inset 0 0 0 2px #bb9154,inset 0 0 0 4px #263442,inset 0 0 0 5px #ac8347;border-top:5px solid #967445;box-sizing:border-box}
@media(prefers-reduced-motion:reduce){.journey-world,#journey-cinema,.journey-corridor-camera,.journey-corridor-door{transition:none!important}.journey-menu-button{transition:none}}

html.journey-cinematic body>.screen-temperature-grade{z-index:2147483646}

.journey-world::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 45% 39%,#ffe8b83d,transparent 54%),linear-gradient(#ffefc215,transparent 64%);mix-blend-mode:screen;filter:blur(12px)}
#journey-cover.menu-dissolving .journey-menu-button{animation:journey-menu-drift .38s ease calc(var(--menu-index)*.04s) both}
.journey-menu-button:nth-child(1){--menu-index:0}.journey-menu-button:nth-child(2){--menu-index:1}.journey-menu-button:nth-child(3){--menu-index:2}
@keyframes journey-menu-drift{0%{opacity:1;transform:translateY(0);filter:brightness(1.1)}100%{opacity:0;transform:translateY(-38px);filter:brightness(1)}}
@media(max-width:600px){.journey-menu-button{width:205px}.journey-start{gap:14px}}

/* Separate road/fields, moving caravan, and the near meadow bank. */
.journey-panorama{left:calc(var(--panorama-width)*-.88);width:calc(var(--panorama-width)*3.52);display:flex;z-index:0;animation-duration:22s}
.journey-panorama img:nth-child(n){position:relative;left:auto;top:auto;flex:0 0 var(--panorama-width);width:var(--panorama-width);margin-right:calc(var(--panorama-width)*-.12);transform:none;mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
@keyframes journey-landscape{from{transform:translateX(calc(var(--panorama-width)*-.88))}to{transform:translateX(0)}}
.journey-caravan{z-index:2;bottom:calc(18% + var(--caravan-width)*.029)}
.journey-foreground{z-index:3;clip-path:inset(84% 0 0);pointer-events:none}
.journey-shade{z-index:4}
.journey-heading,.journey-start{z-index:5}
@media(max-width:600px){.journey-panorama{animation-duration:30s}}

/* Painted carriage-window close-up, before turning into the corridor. */
.journey-window-camera{position:absolute;inset:0;transform-origin:85% 50%;transition:transform .24s ease-in,opacity .24s;transform:perspective(1400px) rotateY(0)}
.journey-window-camera>img{width:100%;height:100%;display:block;object-fit:cover;object-position:center;}
#journey-cinema{background:#182332}
#journey-cinema.opening{background:transparent}
#journey-cinema.turning .journey-window-camera{transform:translateX(-105%) perspective(1400px) rotateY(55deg);opacity:0}
#journey-cover.departing .journey-caravan-body{animation:none}
@media(prefers-reduced-motion:reduce){.journey-window-camera{transition:none}}

/* Independent alpha foreground, far axle pair, and local light scattering. */
.journey-grass-front{position:absolute;inset:auto 0 0;height:52svh;z-index:3;pointer-events:none;background:url(ui/journey-grass-front-v1.webp) 0 bottom/156svh 52svh repeat-x;animation:journey-grass-drift 10s linear infinite}
@keyframes journey-grass-drift{to{background-position:156svh bottom}}
.journey-wheel.far{z-index:0;width:10.5%;top:72.8%;filter:brightness(.34) saturate(.55);opacity:.8;animation-duration:1.53s}
.journey-wheel.far.middle{left:20.2%}.journey-wheel.far.rear{left:79.3%}
.journey-caravan{filter:brightness(.94) saturate(.95) drop-shadow(0 5px 4px #1a19277a)}
.journey-steam{left:22.8%;top:9%;width:4%;height:12%;overflow:visible}
.journey-steam i{width:190%;height:190%;background:radial-gradient(ellipse,#f2e3d8b8 8%,#dcc5b67a 32%,#c0b4b92e 52%,transparent 72%);filter:blur(1px);animation:journey-steam-trail 3.4s ease-out infinite;animation-delay:calc(var(--p)*-.38s)}
@keyframes journey-steam-trail{0%{transform:translate(-35%,-45%) scale(.35);opacity:0}8%{opacity:.82}40%{opacity:.58}100%{transform:translate(calc(var(--caravan-width)*.52),calc(var(--caravan-width)*-.24)) scale(3.2);opacity:0}}
.journey-wheel-dust{position:absolute;left:84%;top:103%;width:2%;height:7%;pointer-events:none;z-index:1}
.journey-wheel-dust i{position:absolute;inset:0;background:radial-gradient(ellipse,#a9997670,transparent 70%);animation:journey-dust 1.7s ease-out infinite;animation-delay:calc(var(--p)*-.24s)}
@keyframes journey-dust{0%{opacity:0;transform:scale(.35)}15%{opacity:.5}100%{opacity:0;transform:translate(calc(var(--caravan-width)*.24),-13px) scale(4)}}
.journey-window-bloom{position:absolute;inset:0;z-index:4;pointer-events:none;mix-blend-mode:screen;animation:journey-suspension .72s ease-in-out infinite alternate}
.journey-window-bloom i{position:absolute;left:var(--x);top:var(--y);width:9%;height:26%;transform:translate(-50%,-50%);background:radial-gradient(ellipse,#ffc65f69,#e3a35526 35%,transparent 72%);filter:blur(2px);animation:journey-lamplight 4.7s ease-in-out infinite alternate;animation-delay:calc(var(--p)*-.41s)}
@keyframes journey-lamplight{0%,100%{opacity:.52}37%{opacity:.9}63%{opacity:.68}}
.journey-world::after{z-index:4;background:radial-gradient(ellipse at 55% 44%,#ffb98228,transparent 44%),linear-gradient(115deg,transparent 42%,#ffd9b418 49%,transparent 57%);animation:journey-atmospheric-light 13s ease-in-out infinite alternate}
@keyframes journey-atmospheric-light{from{opacity:.35;transform:translateX(-2%)}to{opacity:.72;transform:translateX(2%)}}
@media(prefers-reduced-motion:reduce){.journey-grass-front,.journey-steam i,.journey-wheel-dust i,.journey-window-bloom,.journey-window-bloom i,.journey-world::after{animation:none!important}.journey-steam i{opacity:.25}.journey-wheel-dust i{opacity:0}}

/* Road contact strip is independent of both the wagon and the near grass. */
.journey-road-front{z-index:3;clip-path:inset(81.8% 0 16.3%);pointer-events:none}
.journey-grass-front{z-index:4;height:49svh;background-size:147svh 49svh}
@keyframes journey-grass-drift{to{background-position:147svh bottom}}
.journey-shade{z-index:5}.journey-heading,.journey-start{z-index:6}
.journey-wheel.center{left:47.5%}
.journey-wheel.far{width:11.3%;top:73%;animation-duration:1.65s}
.journey-wheel.far.middle{left:17.9%}.journey-wheel.far.center{left:47.5%}.journey-wheel.far.rear{left:77.1%}
.journey-menu-button{position:relative;width:clamp(170px,15vw,235px);filter:brightness(.8);outline:none}
.journey-menu-button>img{width:94%;transform:scaleX(.9);transform-origin:left center}
.journey-menu-cursor{position:absolute;left:100%;top:50%;width:45px;height:45px;transform:translate(-9px,-50%);opacity:0;transition:opacity .2s,transform .2s;pointer-events:none}
.journey-menu-button:hover .journey-menu-cursor,.journey-menu-button:focus-visible .journey-menu-cursor{opacity:1;transform:translate(0,-50%)}
.troupe-cursor,.music-cursor{background:#d9eeff;mask:url(ui/employee-faction-night-v1.webp) center/contain no-repeat;filter:drop-shadow(0 0 3px #b8ddff)}
.music-cursor{mask-image:url(ui/gallery-music-v3.webp);width:52px}
.trophy-cursor>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:1;filter:drop-shadow(0 0 2px #c6e7ff)}
.trophy-wheel{position:absolute;inset:-3px;background:#bdd9ee;mask:url(ui/journey-wheel-v2.webp) center/contain no-repeat;opacity:.65;animation:cover-wheel-turn 6s linear infinite}
@media(max-width:600px){.journey-menu-button{width:175px}.journey-menu-cursor{width:38px;height:38px}}
@media(prefers-reduced-motion:reduce){.trophy-wheel{animation:none}}

html.journey-cinematic body.caravan-function-active>.screen-temperature-grade{display:block!important;opacity:1!important}

/* Match the title at rest; reserve extra bloom for deliberate selection. */
.journey-menu-button{filter:saturate(.45)}
.journey-menu-button:hover,.journey-menu-button:focus-visible{filter:saturate(.45) brightness(1.2) drop-shadow(0 0 5px #d8edff) drop-shadow(0 0 12px #b5c8ed88)}
.music-cursor{width:45px;background:#fff;mask-image:url(ui/journey-music-box-cursor-v1.svg)}
.trophy-cursor>img{filter:brightness(0) invert(1) drop-shadow(0 0 3px #c6e7ff)}
.trophy-wheel{background:#fff;opacity:.75}

/* Keep the near wheel in front of the carriage, with a separate painted verge. */
.journey-wheel.center:not(.far){z-index:3}
.journey-wheel.center.far{z-index:0;filter:brightness(.34) saturate(.55);opacity:.8}
.journey-wheel-verge{position:absolute;inset:auto 0 8svh;height:49svh;z-index:4;pointer-events:none;background:url(ui/journey-wheel-verge-v2.webp) 0 bottom/147svh 49svh repeat-x;animation:journey-grass-drift 12s linear infinite}
.journey-grass-front{z-index:5}
.journey-shade{z-index:6}.journey-heading,.journey-start{z-index:7}
/* Overlap the shots and match their painted blue/brass colour treatment. */
#journey-cinema{transition:opacity .18s ease-in-out}
.journey-window-camera{transition:transform .38s cubic-bezier(.4,0,.25,1),opacity .38s ease-in-out}
.journey-corridor-camera{transition:transform .38s cubic-bezier(.4,0,.25,1),opacity .38s ease-in-out;opacity:0}
#journey-cinema.turning .journey-corridor-camera{opacity:1}
#journey-cinema.turning .journey-window-camera{transform:translateX(-30%) perspective(1400px) rotateY(22deg)}
#journey-cinema.rushing .journey-corridor-camera{transition:transform .48s cubic-bezier(.45,.05,.6,1)}
#journey-cinema.passing .journey-corridor-camera{transition:transform .6s cubic-bezier(.35,.1,.6,1)}
.journey-corridor-door{transition:transform .3s cubic-bezier(.2,.65,.3,1)}
.journey-window-camera>img,.journey-corridor-camera>img{filter:saturate(.8) brightness(1.02) sepia(.06)}
@media(prefers-reduced-motion:reduce){.journey-wheel-verge{animation:none!important}}



/* Matching views at the ends of a continuous horizontal strip. */
.journey-world{transition:transform .55s cubic-bezier(.5,.02,.8,.65)}
#journey-cinema.continuous{background:transparent;transition:none;animation:none;opacity:1}
#journey-cinema.continuous>.journey-window-camera{display:block;opacity:1;transform:none;transition:none;animation:none}
#journey-cinema.continuous>.journey-corridor-camera{display:none;opacity:1;transform:scale(1);transition:none;animation:none}
#journey-cinema.continuous.panning>.journey-window-camera,#journey-cinema.continuous.turning>.journey-window-camera{display:none}
#journey-cinema.continuous.turning>.journey-corridor-camera{display:block}
#journey-cinema.continuous.rushing>.journey-corridor-camera{animation:journey-enter-continuous 1s linear forwards}
@keyframes journey-forward{from{left:0;top:0;width:100%;height:100%}to{left:-224.775%;top:-200.025%;width:550%;height:550%}}
#journey-cinema.continuous.passing>.journey-corridor-camera{animation:journey-through .6s linear forwards}
@keyframes journey-through{from{left:-224.775%;top:-200.025%;width:550%;height:550%}to{left:-359.64%;top:-320.04%;width:820%;height:820%}}
.journey-pan-track{position:absolute;inset:0 auto 0 0;width:225vw;height:100%;display:none}
#journey-cinema.panning .journey-pan-track{display:flex}
.journey-pan-track>.journey-window-camera,.journey-pan-track>.journey-corridor-camera,.journey-pan-connection{position:relative;inset:auto;width:100vw;height:100%;flex:none;display:block!important;opacity:1!important;transform:none!important;transition:none!important;animation:none!important}
.journey-pan-connection>img{display:block;width:100%;height:100%;object-fit:fill;filter:saturate(.8) brightness(1.02) sepia(.06)}
.journey-hd-door-frame{display:none}
.journey-corridor-door{background-image:url(ui/journey-door-leaves-hd-v3.webp);background-size:200% auto;background-repeat:no-repeat}
.journey-corridor-door.left{background-position:left center}
.journey-corridor-door.right{background-position:right center}
.journey-corridor-gate::after{display:none}
.journey-corridor-gate{filter:saturate(.8) brightness(1.02) sepia(.06)}
.music-cursor{mask:none;background:transparent url(ui/journey-music-box-cursor-v2.webp) center/contain no-repeat;width:52px;height:52px;filter:drop-shadow(0 0 3px #c6e7ff)}

/* Grade the viewport after drawing; avoid magnifying a filtered door thumbnail. */
#journey-cinema.continuous{filter:brightness(.72) saturate(.48) contrast(.96)}
#journey-cinema.continuous .journey-window-camera>img,
#journey-cinema.continuous .journey-corridor-camera>img,
#journey-cinema.continuous .journey-pan-connection>img,
#journey-cinema.continuous .journey-corridor-gate{filter:none}
.journey-pan-track>.journey-pan-connection{width:25vw;overflow:hidden}
.journey-pan-connection>img{object-fit:cover;object-position:50% 50%}
#journey-cinema.continuous>.journey-corridor-camera{inset:auto;left:0;top:0;width:100%;height:100%;transform:none;will-change:auto}

/* Advance throughout the mechanism movement, without a held door close-up. */
@keyframes journey-enter-continuous{
  0%{left:0;top:0;width:100%;height:100%}
  48%{left:-224.775%;top:-200.025%;width:550%;height:550%;animation-timing-function:cubic-bezier(.25,.4,.75,.85)}
  100%{left:-359.64%;top:-320.04%;width:820%;height:820%}
}

/* A brief change of focus and window light, while the camera keeps moving. */
#journey-cinema.continuous.visible{animation:journey-window-focus .14s ease-out}
#journey-cinema.continuous.visible::after{content:"";position:absolute;inset:0;z-index:5;pointer-events:none;background:radial-gradient(ellipse at 30% 44%,#d5e7f799,transparent 68%);opacity:0;animation:journey-window-glow .14s ease-out}
@keyframes journey-window-focus{
  0%{filter:brightness(.98) saturate(.48) contrast(.96) blur(2.5px)}
  25%{filter:brightness(.88) saturate(.48) contrast(.96) blur(3.5px)}
  100%{filter:brightness(.72) saturate(.48) contrast(.96) blur(0)}
}
@keyframes journey-window-glow{from{opacity:.3}to{opacity:0}}
@media(prefers-reduced-motion:reduce){#journey-cinema.continuous.visible,#journey-cinema.continuous.visible::after{animation:none}}

/* Retain the painted amber lamp within the otherwise muted interior shot. */
#journey-cinema.continuous .journey-window-camera>img{filter:saturate(1.6) brightness(1.08)}

/* One continuous painting; preserve its aspect ratio and match both end crops. */
.journey-pan-track{width:max(100vw,251.453856vh)}
.journey-pan-track>img{display:block;width:100%;height:100%;object-fit:fill}
#journey-cinema.continuous .journey-window-camera>img{object-fit:cover;object-position:left center;filter:none}
#journey-cinema.continuous .journey-corridor-camera>img{object-fit:cover;object-position:right center;clip-path:polygon(evenodd,0 0,100% 0,100% 100%,0 100%,0 0,var(--gate-left) 32.87%,var(--gate-left) 64.85%,var(--gate-right) 64.85%,var(--gate-right) 32.87%,var(--gate-left) 32.87%,0 0)}
#journey-cinema.continuous .journey-corridor-gate{left:var(--gate-left);top:32.87%;width:var(--gate-width);height:31.98%}
@keyframes journey-enter-continuous{
  0%{left:0;top:0;width:100%;height:100%}
  48%{left:calc(var(--focus-x)*-4.5);top:-219.87%;width:550%;height:550%;animation-timing-function:cubic-bezier(.25,.4,.75,.85)}
  100%{left:calc(var(--focus-x)*-7.2);top:-351.79%;width:820%;height:820%}
}

/* Aim at the new panorama's actual door, then slide its own two leaves. */
#journey-cinema.continuous .journey-corridor-door{background-image:url(ui/journey-continuous-interior-v3.webp);background-size:2104.761905% 312.697561%;transition:transform .3s linear;transform:translate3d(0,0,0)}
#journey-cinema.continuous .journey-corridor-door.left{background-position:71.100554% 48.327138%}
#journey-cinema.continuous .journey-corridor-door.right{background-position:76.088678% 48.327138%}
#journey-cinema.continuous.opening .journey-corridor-door.left{transform:translate3d(-102%,0,0)}
#journey-cinema.continuous.opening .journey-corridor-door.right{transform:translate3d(102%,0,0)}
@keyframes journey-enter-continuous{
  0%{left:0;top:0;width:100%;height:100%}
  48%{left:calc(50% - var(--focus-x)*5.5);top:-218.73%;width:550%;height:550%;animation-timing-function:cubic-bezier(.25,.4,.75,.85)}
  100%{left:calc(50% - var(--focus-x)*8.2);top:-350.11%;width:820%;height:820%}
}

/* Only the camera's single animation clock controls the forward movement. */
.journey-world{transition:transform .7s cubic-bezier(.3,.2,.6,1)}
#journey-cinema.continuous.rushing>.journey-corridor-camera{animation:none}
/* Start the ambient light in an already visible phase, before any gesture. */
.journey-world::after{animation-delay:-6s}
.journey-window-bloom i{animation-delay:calc(-2s + var(--p)*-.41s)}

/* Cross the low-resolution exterior window quickly, then move immediately. */
.journey-world{transition:transform .24s linear}

/* A warm window glint fades during the moving handoff, without a held frame. */
#journey-cinema.continuous.visible::after{background:radial-gradient(ellipse at 24% 44%,#ffd39cbd 0%,#dc925946 34%,transparent 72%);mix-blend-mode:screen;animation:journey-window-glow .28s ease-out}
/* Use the same detailed, frontal door throughout the pan and the approach. */
.journey-pan-track>img.journey-pan-hd-door{position:absolute;left:66.76722%;top:29.20354%;width:10.91000%;height:36.03034%;object-fit:fill}
#journey-cinema.continuous .journey-corridor-camera>img{clip-path:polygon(evenodd,0 0,100% 0,100% 100%,0 100%,0 0,var(--gate-left) var(--gate-top),var(--gate-left) var(--gate-bottom),var(--gate-right) var(--gate-bottom),var(--gate-right) var(--gate-top),var(--gate-left) var(--gate-top),0 0)}
#journey-cinema.continuous .journey-corridor-gate{top:var(--gate-top);height:var(--gate-height);transform:none;perspective:none}
#journey-cinema.continuous .journey-corridor-door{background-image:url(ui/journey-door-leaves-hd-v3.webp);background-size:200% 100%;background-repeat:no-repeat;transform:translateX(0);transition:transform .3s linear;backface-visibility:visible}
#journey-cinema.continuous .journey-corridor-door.left{background-position:0 0}
#journey-cinema.continuous .journey-corridor-door.right{background-position:100% 0}
#journey-cinema.continuous.opening .journey-corridor-door.left{transform:translateX(-102%)}
#journey-cinema.continuous.opening .journey-corridor-door.right{transform:translateX(102%)}
#journey-cinema.continuous>.journey-corridor-camera{transform:none;transform-origin:center;perspective:none;transition:none}
@media(prefers-reduced-motion:reduce){#journey-cinema.continuous.visible::after{animation:none}}

/* Keep the fixed outer casing in place while only the central leaves slide. */
#journey-cinema.continuous .journey-hd-door-frame{display:block;position:absolute;left:var(--gate-left);top:var(--gate-top);width:var(--gate-width);height:var(--gate-height);z-index:2;background:url(ui/journey-door-leaves-hd-v3.webp) center/100% 100% no-repeat;clip-path:polygon(evenodd,0 0,100% 0,100% 100%,0 100%,0 0,4% 3%,4% 97%,96% 97%,96% 3%,4% 3%,0 0);pointer-events:none}
.journey-pan-track{height:max(100vh,39.768728vw);top:calc(50% - max(50vh,19.884364vw))}

/* One flat canvas remains visible from window through corridor to the door. */
.journey-world{transition:none}
#journey-cinema.continuous .journey-pan-track{display:block;transform-origin:0 0;transition:none;animation:none;perspective:none}
#journey-cinema.continuous .journey-pan-track>img{width:100%;height:100%;max-width:none;object-fit:fill;clip-path:polygon(evenodd,0 0,100% 0,100% 100%,0 100%,0 0,66.76722% 29.20354%,66.76722% 65.23388%,77.67722% 65.23388%,77.67722% 29.20354%,66.76722% 29.20354%,0 0)}
#journey-cinema.continuous .journey-pan-track .journey-corridor-gate,
#journey-cinema.continuous .journey-pan-track .journey-hd-door-frame{left:66.76722%;top:29.20354%;width:10.91000%;height:36.03034%;transform:none;perspective:none}
.trophy-cursor>img{filter:none;image-rendering:auto}
.trophy-wheel{opacity:.3;filter:none}

/* Blue light for the cover title, lettering and menu emblems. */
#journey-cover .journey-heading .cover-title-glyph img{filter:saturate(.45) drop-shadow(0 0 3px #58b7ff99) drop-shadow(0 0 8px #328bff66)}
#journey-cover .journey-heading .cover-title-wheel{filter:drop-shadow(0 0 2px #58b7ff) drop-shadow(0 0 6px #328bff99)}
#journey-cover .journey-menu-button{filter:saturate(.45) drop-shadow(0 0 2px #58b7ff88)}
#journey-cover .journey-menu-button:hover,#journey-cover .journey-menu-button:focus-visible{filter:saturate(.45) brightness(1.2) drop-shadow(0 0 5px #58b7ff) drop-shadow(0 0 12px #328bff99)}
#journey-cover .journey-menu-button:active{filter:saturate(.45) brightness(1.4) drop-shadow(0 0 8px #58b7ff) drop-shadow(0 0 14px #328bff99)}
#journey-cover .troupe-cursor,#journey-cover .music-cursor{filter:drop-shadow(0 0 3px #58b7ff)}
#journey-cover .trophy-cursor>img{filter:brightness(0) invert(1) drop-shadow(0 0 3px #58b7ff)}
#journey-cover .trophy-wheel{filter:drop-shadow(0 0 3px #58b7ff)}

/* Restore lettering by drifting down from its dissolved position. */
#journey-cover.menu-returning .journey-menu-button{animation:journey-menu-return .42s ease-out calc(var(--menu-index)*.04s) both}
#journey-cover.menu-returning .journey-heading .cover-title-glyph{animation:journey-title-return .46s ease-out calc(var(--glyph-index)*.035s) both}
@keyframes journey-menu-return{from{opacity:0;transform:translateY(-38px)}to{opacity:1;transform:translateY(0)}}
@keyframes journey-title-return{from{opacity:0;transform:translateY(-45px)}to{opacity:1;transform:translateY(0)}}
/* White window flash clears while the corridor pan is already moving. */
#journey-cinema.continuous.visible{animation:none;filter:brightness(.72) saturate(.48) contrast(.96)}
#journey-cinema.continuous.visible::after{background:#fffaf3;mix-blend-mode:normal;animation:journey-window-flash .2s ease-out both}
@keyframes journey-window-flash{from{opacity:.95}to{opacity:0}}
#journey-cover .trophy-wheel{opacity:.9;background:#e9f5ff;filter:drop-shadow(0 0 2px #58b7ff)}
#journey-cover .trophy-cursor>img{filter:drop-shadow(0 0 1px #58b7ff)}
#journey-cover .music-cursor{width:45px;height:45px;mask:none;background:transparent url(ui/journey-music-box-cursor-v3.webp) center/contain no-repeat;filter:drop-shadow(0 0 1px #58b7ff)}
@media(prefers-reduced-motion:reduce){#journey-cover.menu-returning .journey-menu-button,#journey-cover.menu-returning .cover-title-glyph,#journey-cinema.continuous.visible::after{animation:none}}
/* Pure white icon bodies; blue belongs only to the surrounding glow. */
#journey-cover .trophy-cursor>img,#journey-cover .music-cursor{filter:brightness(0) invert(1) drop-shadow(0 0 2px #58b7ff) drop-shadow(0 0 5px #328bff66)}
#journey-cover .trophy-wheel{background:#fff;opacity:1;filter:drop-shadow(0 0 2px #58b7ff)}
#journey-cinema.continuous.visible{animation:journey-white-entry .2s ease-out both}
@keyframes journey-white-entry{from{filter:brightness(1) saturate(.48) contrast(.96)}to{filter:brightness(.72) saturate(.48) contrast(.96)}}
@media(prefers-reduced-motion:reduce){#journey-cinema.continuous.visible{animation:none}}
/* Luminance masks preserve clean white cutouts without fragile white matting. */
#journey-cover .trophy-cursor>img{mask:url(ui/journey-trophy-cursor-v3.webp) center/contain no-repeat;mask-mode:luminance}
#journey-cover .music-cursor{background:#fff;mask:url(ui/journey-music-box-cursor-v3.webp) center/contain no-repeat;mask-mode:luminance;filter:drop-shadow(0 0 2px #58b7ff) drop-shadow(0 0 5px #328bff66)}

/* Match the three emblem sizes; the small wheel is explicitly behind the cup. */
#journey-cover .trophy-cursor{width:45px;height:45px;isolation:isolate}
#journey-cover .trophy-cursor>img{inset:4px auto auto 4px;width:36px;height:36px;z-index:2}
#journey-cover .trophy-wheel{inset:auto;left:25px;top:5px;width:16px;height:16px;z-index:0;opacity:1}
#journey-cover .music-cursor{mask-image:url(ui/journey-music-box-cursor-v4.webp)}
/* A soft amber wash accompanies entry, without a white exposure flash. */
#journey-cinema.continuous.visible{animation:none;filter:brightness(.72) saturate(.48) contrast(.96)}
#journey-cinema.continuous.visible::after{background:radial-gradient(ellipse at 30% 45%,#ffbd6a 0%,#e79a4b80 40%,transparent 76%);mix-blend-mode:screen;animation:journey-amber-entry .26s ease-out both}
@keyframes journey-amber-entry{from{opacity:.38}to{opacity:0}}
@media(prefers-reduced-motion:reduce){#journey-cinema.continuous.visible::after{animation:none}}

/* Align both secondary emblems to the same lettering edge as the first. */
#journey-cover .troupe-cursor,#journey-cover .trophy-cursor,#journey-cover .music-cursor{left:94%}
#journey-cover .trophy-wheel{left:14px;top:0;width:16px;height:16px;clip-path:inset(0 0 50% 0);z-index:0}
#journey-cinema.continuous .journey-pan-track{will-change:transform}
#journey-cinema.continuous.visible::after{display:none;animation:none}
/* Unfiltered amber light stays visible above the scene's colour grade. */
#journey-entry-light{position:fixed;inset:0;z-index:2147483647;pointer-events:none;background:radial-gradient(ellipse at 40% 45%,#ffd48bbb,#f5a95a88 45%,#e48a3544);opacity:0}
#journey-entry-light[hidden]{display:none}
#journey-entry-light.active{animation:journey-entry-amber .5s ease-in-out both}
@keyframes journey-entry-amber{0%{opacity:.85}45%{opacity:.75}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){#journey-entry-light{display:none!important}}
/* Clip the wheel's upper half before its separate rotating artwork. */
#journey-cover .trophy-wheel{height:8px;overflow:hidden;clip-path:none;mask:none;background:none;animation:none}
#journey-cover .trophy-wheel::before{content:"";position:absolute;left:0;top:0;width:16px;height:16px;background:#fff;mask:url(ui/journey-wheel-v2.webp) center/contain no-repeat;animation:cover-wheel-turn 6s linear infinite;transform-origin:center}
@media(prefers-reduced-motion:reduce){#journey-cover .trophy-wheel::before{animation:none}}

/* A dark left wash supports the menu without hiding the panorama. */
#journey-cover .journey-shade{background:linear-gradient(#fff1c20c,transparent 45%,#11151d44 76%,#101320e0)}
/* Equal-height rows keep all three option centres evenly spaced. */
#journey-cover .journey-menu-button{aspect-ratio:3/1;display:flex;align-items:center}
#journey-cover .journey-start{gap:20px}
@media(max-width:600px){#journey-cover .journey-start{gap:14px}}

/* Original repeating emblems soften progressively before reaching the invisible edge. */
#journey-cover .journey-shade::before,#journey-cover .journey-shade::after{display:none}
.journey-pattern-flow{position:absolute;inset:0;pointer-events:none;opacity:1;transition:opacity .25s}
.journey-pattern-flow i{position:absolute;inset:0;background:url(ui/journey-night-damask-v1.webp) repeat;background-size:420px 420px;animation:journey-emblem-flow 26s linear infinite;mask-size:100% 100%;mask-repeat:no-repeat}
.journey-pattern-flow i:nth-child(1){filter:brightness(1.55) blur(1px);mask-image:url(ui/journey-pattern-mask-0.svg)}
.journey-pattern-flow i:nth-child(2){filter:brightness(1.55) blur(6px);mask-image:url(ui/journey-pattern-mask-1.svg)}
.journey-pattern-flow i:nth-child(3){filter:brightness(1.55) blur(14px);mask-image:url(ui/journey-pattern-mask-2.svg)}
@keyframes journey-emblem-flow{from{background-position:0 0}to{background-position:-420px 420px}}
#journey-cover.departing .journey-pattern-flow{opacity:0}
@media(prefers-reduced-motion:reduce){.journey-pattern-flow i{animation:none}}

/* Deep-blue clouds counterflow underneath the more visible emblems. */
#journey-cover .journey-shade .journey-cloud-flow{position:absolute;inset:0;pointer-events:none;background:url(ui/journey-deep-blue-clouds-v1.webp) repeat;background-size:650px 650px;filter:brightness(.68) saturate(.8) blur(5px);opacity:.92;mask-image:linear-gradient(115deg,#000 0%,#000 10%,#0007 23%,transparent 36%);animation:journey-cloud-counterflow 38s linear infinite;transition:opacity .25s}
@keyframes journey-cloud-counterflow{from{background-position:0 0}to{background-position:650px -650px}}
#journey-cover.departing .journey-shade .journey-cloud-flow{opacity:0}
#journey-cover .journey-start{top:37%}
@media(max-width:600px){#journey-cover .journey-start{top:32%}}
@media(prefers-reduced-motion:reduce){#journey-cover .journey-shade .journey-cloud-flow{animation:none}}

/* Keep only the two moving decorative layers; remove the initial wash. */
#journey-cover .journey-shade{background:none}

/* Overscan the blurred cover decoration so its clipped edge stays outside the viewport. */
#journey-cover{border:0;outline:0;box-shadow:none}
#journey-cover .journey-pattern-flow{inset:-32px}
#journey-cover .journey-shade .journey-cloud-flow{inset:-24px}
#journey-cover .journey-start{top:33%}
@media(max-width:600px){#journey-cover .journey-start{top:28%}}
