/* One continuous outpainted scene, moving from the characters to street level. */
.world-journey{position:absolute;top:0;left:50%;width:max(100%,52svh);aspect-ratio:724 / 2171;transform:translate3d(-50%,var(--world-offset,0px),0);will-change:transform}
.world-journey .world-scene{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:fill;image-rendering:auto}
.living-city::after{background:linear-gradient(90deg,#07080c38,transparent 65%),linear-gradient(0deg,#07080c55,transparent 70%)}
.world-neon{position:absolute;width:14%;height:4%;pointer-events:none;mix-blend-mode:screen;animation:voxel-neon-breathe 9s ease-in-out infinite;background:radial-gradient(ellipse,#ff662daa,transparent 70%);opacity:.15}
.world-neon--orange{left:79%;top:37%;animation-delay:-3s}
.world-neon--blue{left:43%;top:45%;background:radial-gradient(ellipse,#20a9ff99,transparent 70%);animation-duration:12s;animation-delay:-7s}
.world-neon--street{left:5%;top:72%;animation-duration:11s;animation-delay:-5s}
@keyframes voxel-neon-breathe{0%,100%{opacity:.08}50%{opacity:.42}}
.ember-field{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.voxel-ember{position:absolute;left:var(--ember-x);bottom:-12px;width:var(--ember-size);height:var(--ember-size);background:#ff9c46;box-shadow:0 0 7px #f3493480;opacity:0;animation:voxel-ember-rise var(--ember-duration) linear infinite;animation-delay:var(--ember-delay)}
.voxel-ember:nth-child(5n){background:#70d3ff;box-shadow:0 0 7px #278bff70}
@keyframes voxel-ember-rise{0%{transform:translate3d(0,0,0);opacity:0}12%{opacity:.55}70%{opacity:.35}100%{transform:translate3d(var(--ember-drift),-105vh,0);opacity:0}}
.living-city .rain-drop{opacity:.12;background:#9cabca}
.living-city .rain-drop:nth-child(3n){opacity:.14;background:#82bde3}
.puddle-field{opacity:var(--street-presence,0);transition:opacity .3s}
.puddle-ripple{border-color:#75c7f270;box-shadow:0 2px #ed62364d}
.city-paused .ember-field,.city-paused .world-neon{display:none}
@media(max-width:760px){.voxel-ember:nth-child(2n){display:none}.world-neon{opacity:.15}}
@media(prefers-reduced-motion:reduce){.ember-field,.world-neon{display:none}.world-journey{will-change:auto}.puddle-field{transition:none}}
