/* ===== JOURNEY: velocity-reactive scroll ride (homepage intro) ===== */
.journey-wrap{position:relative;height:560vh;background:#060705}
.journey-stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;background:#060705}
.journey-stage video.jsrc{position:absolute;width:4px;height:4px;opacity:0;pointer-events:none;top:0;left:0}
#journeyCanvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.journey-wash{position:absolute;inset:0;pointer-events:none}
.journey-wash .dark{position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 40%,rgba(6,8,4,.55) 0%,rgba(4,5,3,.92) 100%)}
.journey-wash .sun{position:absolute;inset:0;opacity:0;background:linear-gradient(180deg,rgba(255,236,190,.28) 0%,rgba(255,214,140,.10) 38%,rgba(0,0,0,0) 70%)}
.journey-vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(115% 100% at 50% 46%,rgba(0,0,0,0) 52%,rgba(0,0,0,.52) 100%)}
#journeyStreaks{position:absolute;inset:0;pointer-events:none;opacity:0}
.journey-beats{position:absolute;inset:0;pointer-events:none;display:flex;align-items:center;justify-content:center;text-align:center;padding:0 24px}
.jbeat{position:absolute;left:0;right:0;padding:0 24px;opacity:0;transform:translateY(26px)}
.jbeat .jkicker{display:block;font-family:var(--font-body);font-weight:600;font-size:.78rem;letter-spacing:.34em;color:var(--clay);margin-bottom:14px}
.jbeat h2{font-family:var(--font-display);font-weight:400;text-transform:uppercase;letter-spacing:.015em;line-height:1.02;font-size:clamp(2.2rem,8.6vw,4.6rem);color:#fff;text-shadow:0 2px 30px rgba(0,0,0,.65);margin:0}
.jbeat h2 .lime{color:var(--clay)}
.jbeat .jsub{display:block;margin-top:12px;font-family:var(--font-body);font-size:clamp(1rem,3.4vw,1.25rem);color:#f2f0e4;text-shadow:0 1px 12px rgba(0,0,0,.7)}
.jbeat-final{pointer-events:none}
.jbeat-final.show{pointer-events:auto}
.jbeat-final .btn{margin-top:26px;font-size:1.05rem;padding:14px 30px}
.journey-hud{position:absolute;left:18px;right:18px;bottom:calc(20px + env(safe-area-inset-bottom));display:flex;justify-content:space-between;align-items:flex-end;pointer-events:none}
.journey-skip{pointer-events:auto;font-family:var(--font-body);font-weight:600;font-size:.85rem;letter-spacing:.12em;color:#fff;text-decoration:underline;text-underline-offset:4px;text-shadow:0 1px 10px rgba(0,0,0,.8);background:none;border:none;cursor:pointer;padding:6px 2px}
.journey-pace{text-align:right;color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.8);margin-bottom:76px}
.journey-pace .mph{font-family:var(--font-display);font-size:2rem;line-height:1}
.journey-pace .mph small{font-size:1rem;margin-left:4px;font-family:var(--font-body);font-weight:600}
.journey-pace .plabel{display:block;font-family:var(--font-body);font-weight:600;font-size:.68rem;letter-spacing:.22em;color:var(--clay);margin-top:2px}
.journey-hint{position:absolute;top:calc(18px + env(safe-area-inset-top));left:0;right:0;text-align:center;font-family:var(--font-body);font-weight:600;font-size:.75rem;letter-spacing:.3em;color:rgba(255,255,255,.75);text-shadow:0 1px 8px rgba(0,0,0,.7);pointer-events:none}
@media(min-width:720px){
  .journey-wrap{height:520vh}
  .journey-hud{left:34px;right:34px;bottom:30px}
  .jbeat h2{font-size:clamp(3rem,6vw,5.2rem)}
}
@media(prefers-reduced-motion:reduce){
  .journey-wrap{height:auto}
  .journey-stage{position:relative;height:88vh}
  .journey-beats .jbeat{display:none}
  .journey-beats .jbeat-final{display:block;opacity:1;transform:none;pointer-events:auto}
  #journeyStreaks,.journey-pace,.journey-hint{display:none}
}
