/* JOURNEY */
.journey{background:var(--mist)}
.jr-stage{position:relative;height:100svh;min-height:720px;max-width:var(--max);margin:0 auto;padding:104px var(--gut) 44px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:28px clamp(28px,4vw,72px)}
.jr-head{grid-column:1/-1;display:flex;justify-content:space-between;align-items:end;gap:20px}
.jr-head h2{font-size:clamp(38px,4.4vw,74px)}
.jr-head p{max-width:340px;color:var(--ink-2)}
.plan-wrap{position:relative;background:#fff;border-radius:24px;padding:20px;box-shadow:0 1px 0 var(--rule),0 30px 60px -40px rgba(11,16,32,.25);min-height:0;display:flex;flex-direction:column}
.plan-wrap .mono{display:flex;justify-content:space-between;color:var(--ink-3);margin-bottom:8px}
#plan{flex:1;width:100%;min-height:0}
#plan .booth{fill:#fff;stroke:#D5DAE0;stroke-width:1;transition:fill .5s,stroke .5s}
#plan .booth.hot{fill:#FFE3F1;stroke:var(--magenta)}
#plan .zone text,#plan .lbl{font:500 9px "Geist Mono",monospace;letter-spacing:.12em;fill:var(--ink-2)}
#plan .route-bg{fill:none;stroke:#D5DAE0;stroke-width:2;stroke-dasharray:2 6;stroke-linecap:round}
#plan .route{fill:none;stroke:var(--magenta);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
#plan .st circle{fill:#fff;stroke:var(--ink-3);stroke-width:1.5;transition:fill .4s,stroke .4s}
#plan .st text{font:700 9px "Geist Mono",monospace;fill:var(--ink-3);text-anchor:middle;dominant-baseline:central}
#plan .st.on circle{fill:var(--magenta);stroke:var(--magenta)}#plan .st.on text{fill:#fff}
#plan .walker{fill:var(--ink)}
#plan .walker-ring{fill:none;stroke:var(--magenta);stroke-width:1.5;animation:ring 1.6s infinite}
@keyframes ring{from{r:6;opacity:1}to{r:18;opacity:0}}
.jcard{position:relative;display:flex;flex-direction:column;min-height:0}
.jmedia{position:relative;flex:1;border-radius:24px;overflow:hidden;background:var(--ink);min-height:0}
.jmedia .m{position:absolute;inset:0;clip-path:inset(0 0 0 100%)}
.jmedia .m.on{clip-path:inset(0)}
.jmedia .m img{width:100%;height:100%;object-fit:cover}
.jmedia .scan{position:absolute;top:0;bottom:0;width:2px;left:100%;background:#fff;box-shadow:0 0 24px 6px rgba(255,255,255,.8);z-index:5;opacity:0}
.badge-scene{display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 30%,#1C2440,#0B1020)}
.badge{position:relative;width:min(230px,44%);aspect-ratio:3/4.2;background:#fff;border-radius:16px;padding:42px 20px 18px;color:var(--ink);box-shadow:0 40px 80px -30px rgba(0,0,0,.7);transform-origin:50% -120px;animation:sway 5s ease-in-out infinite;margin-top:40px}
@keyframes sway{0%,100%{rotate:-3deg}50%{rotate:3deg}}
.badge::before{content:"";position:absolute;left:50%;top:-240px;width:18px;height:250px;margin-left:-9px;border-radius:3px;background:linear-gradient(180deg,var(--magenta),var(--orange),var(--yellow),var(--green),var(--cyan),var(--purple))}
.badge::after{content:"";position:absolute;left:50%;top:14px;width:36px;height:8px;margin-left:-18px;border-radius:8px;background:#E4E7EB}
.badge img,.jmedia .badge img{width:auto;height:26px;object-fit:contain;display:block;margin-bottom:14px}
.badge .who{font-family:var(--display);font-weight:600;font-size:26px;letter-spacing:-.03em;line-height:1}
.badge .role{display:inline-block;margin-top:10px;padding:5px 10px;border-radius:999px;background:var(--magenta);color:#fff}
.badge .qr{display:grid;grid-template-columns:repeat(15,1fr);gap:1px;margin-top:16px;width:60%}
.badge .qr i{aspect-ratio:1;background:var(--ink)}
.badge .qr i.o{background:transparent}
.jinfo{display:grid;grid-template-columns:auto 1fr;gap:6px 22px;align-items:end;padding-top:20px}
.jnum{font-family:var(--display);font-weight:600;font-size:clamp(64px,6.6vw,112px);letter-spacing:-.04em;line-height:.8;color:var(--magenta);grid-row:span 2}
.jtxt h3{font-family:var(--display);font-weight:600;font-size:clamp(24px,2.1vw,34px);letter-spacing:-.03em;line-height:1.05}
.jtxt p{color:var(--ink-2);margin-top:6px;max-width:440px}
.jchips{display:flex;gap:8px;flex-wrap:wrap}
.jchips span{padding:6px 12px;border-radius:999px;background:#fff;box-shadow:inset 0 0 0 1px var(--rule)}
.jmobile{display:none}
.jmobile .h2{margin:16px 0 0}
.jm-grid{display:grid;gap:34px;margin-top:40px}
.jmobile article{display:grid;gap:8px;align-content:start}
.jmobile article>img,.jmobile article>picture>img{border-radius:18px;aspect-ratio:16/10;object-fit:cover;width:100%;height:auto;margin-bottom:6px}
.jmobile h3{font-family:var(--display);font-weight:600;font-size:26px;letter-spacing:-.025em;line-height:1.1}
.jmobile p{color:var(--ink-2);font-size:16px;line-height:1.5}
.jmobile article>.mono{color:var(--magenta)}
.jm-card{aspect-ratio:16/10;border-radius:18px;margin-bottom:6px;background:radial-gradient(circle at 50% 30%,#1C2440,#0B1020);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#fff}
.jm-card img{height:30px;width:auto;filter:brightness(0) invert(1)}
.jm-card b{font:600 24px/1 var(--display);letter-spacing:-.025em}
.jm-card .mono{padding:5px 10px;border-radius:999px;background:var(--magenta);color:#fff}

@media (max-width:900px){
  .jr-stage{display:none}
  .jmobile{display:block;padding:90px var(--gut)}
}
/* Reduced motion on desktop: no pinned walk, so show all six stops as a static grid */
@media (min-width:901px) and (prefers-reduced-motion:reduce){
  .jr-stage{display:none}
  .jmobile{display:block;max-width:var(--max);margin:0 auto;padding:120px var(--gut)}
  .jm-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:48px 28px;margin-top:56px}
  .jmobile .h2{font-size:clamp(38px,4.4vw,74px)}
}
