/* Rail Café — fixed background atmosphere (blueprint + rails + signal spark) & page loader */
.rc-journey{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;contain:strict;transform:translateZ(0);background:linear-gradient(180deg,#0d1119,var(--rc-ink) 55%,#060810)}
.rc-journey__blueprint{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.06;mix-blend-mode:screen;filter:saturate(0) brightness(1.4)}
.rc-journey__fog{position:absolute;inset:0;background:radial-gradient(ellipse 90% 60% at 50% -10%,rgba(0,127,255,.1),transparent 55%),radial-gradient(ellipse 70% 50% at 100% 100%,rgba(0,63,125,.16),transparent 60%),linear-gradient(180deg,transparent 40%,rgba(6,8,16,.85) 92%)}
.rc-journey__rails{position:absolute;left:0;right:0;bottom:-4%;width:100%;height:42vh;object-fit:cover;object-position:top;opacity:.16}
.rc-journey__silhouette{position:absolute;right:-4%;bottom:-2%;width:clamp(220px,32vw,520px);opacity:.08;filter:brightness(0) invert(1);transform:scaleX(-1)}
.rc-journey__spark{position:absolute;top:22%;left:-6%;width:5px;height:5px;border-radius:50%;background:var(--rc-blue);box-shadow:0 0 10px 3px rgba(0,127,255,.85),0 0 26px 8px rgba(0,127,255,.35);opacity:0;animation:rc-spark 9s cubic-bezier(.45,0,.2,1) infinite;will-change:transform,opacity}
@keyframes rc-spark{0%{opacity:0;transform:translate3d(0,0,0)}4%{opacity:1}46%{opacity:1;transform:translate3d(112vw,2vh,0)}52%{opacity:0}100%{opacity:0;transform:translate3d(112vw,2vh,0)}}

.rc-loader{position:fixed;inset:0;z-index:9999;display:grid;place-content:center;justify-items:center;gap:.9rem;background:var(--rc-ink);transition:opacity .8s ease,visibility .8s ease}
.rc-loader.is-hidden{opacity:0;visibility:hidden;pointer-events:none}
.rc-loader__track{position:relative;width:min(280px,70vw);height:6px;overflow:hidden;border-radius:var(--rc-r-pill);background:linear-gradient(90deg,rgba(185,227,255,.06),rgba(185,227,255,.18) 50%,rgba(185,227,255,.06))}
.rc-loader__track::before{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(90deg,rgba(197,204,216,.4) 0 2px,transparent 2px 14px);opacity:.5}
.rc-loader__train{position:absolute;top:50%;left:-15%;width:64px;transform:translateY(-50%);filter:drop-shadow(0 6px 14px rgba(0,127,255,.55));animation:rc-loader-train 1.9s cubic-bezier(.5,0,.5,1) infinite}
@keyframes rc-loader-train{0%{left:-15%}100%{left:115%}}
.rc-loader strong{color:var(--rc-white);font:600 1.05rem var(--rc-font-display);letter-spacing:.08em}
.rc-loader small{color:var(--rc-muted);font-size:.76rem;letter-spacing:.03em}

/* Mobile: strip the heaviest decorative layers to keep scroll compositing cheap. */
@media(max-width:900px){
    .rc-journey__blueprint{opacity:.045}
    .rc-journey__silhouette{display:none}
    .rc-journey__rails{height:30vh;opacity:.12}
}
@media(prefers-reduced-motion:reduce){
    .rc-journey__spark{animation:none;opacity:0}
    .rc-loader__train{animation:none;left:calc(50% - 32px)}
}
/* Soften paint work while the user is actively scrolling. */
html.rc-scrolling .rc-journey__spark,html.rc-scrolling .rc-loader__train{animation-play-state:paused}
