/* Journey layer: scroll plane, driving cars, banner parallax. Motion lives only inside no-preference. */
.div{position:relative;overflow:hidden}
/* a stamp row that always ends on a whole icon: background-repeat:space fits whole tiles edge to edge */
.stamprow{display:block;height:36px;background-repeat:space;background-size:52px 36px;background-position:center;opacity:.9}
/* cars on the route dividers: the resting place is the static fallback */
.rcar{position:absolute;top:3px;left:var(--rest,58%);width:30px;height:24px;margin-left:-15px;pointer-events:none;line-height:0}
.rcar svg{width:30px;height:24px;display:block;overflow:visible;stroke:#14263F;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;fill:none}
.rcar .body{fill:var(--car,#E3B95A)}
.rcar.wind{--rest:30%;--car:#0E6F73}
.rcar .wob{display:block}
/* banner: balanced per-image crop, desktop and phone positions */
.banner img{object-position:var(--bp,50% 50%)}
@media(max-width:700px){.banner img{object-position:var(--bpm,var(--bp,50% 50%))}}
/* scroll plane (built by journey.js, absent without JS or under reduced motion) */
.journey{position:fixed;top:0;right:0;bottom:0;z-index:6;pointer-events:none;opacity:0;transition:opacity .4s}
.journey.on{opacity:1}
.journey svg{display:block;overflow:visible}
.journey .plane{position:absolute;left:0;top:0;width:30px;height:30px;margin:-15px 0 0 -15px;will-change:transform}
.journey .plane svg{width:30px;height:30px;stroke:#14263F;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;fill:#FFFDF7}
@media(max-width:700px){.journey .plane,.journey .plane svg{width:24px;height:24px}.journey .plane{margin:-12px 0 0 -12px}}
@media(prefers-reduced-motion:no-preference){
 .js .rcar{left:0;transform:translateX(-40px);opacity:0}
 .js .div.in .rcar{animation:drive var(--dur,4.5s) cubic-bezier(.35,.1,.3,1) .15s forwards}
 .js .div.in .rcar.wind{animation-timing-function:linear}
 .js .div.in .rcar.wind .wob{animation:wob .8s ease-in-out var(--wn,6)}
 .js .banner.par img{height:116%;top:-8%;will-change:transform;transform:translate3d(0,var(--py,0px),0)}
}
@keyframes drive{0%{opacity:1;transform:translateX(-40px)}100%{opacity:1;transform:translateX(var(--stop,0px))}}
@keyframes wob{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}75%{transform:translateY(10px)}100%{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.journey{display:none!important}}
