/* The walk: scroll-driven stage (default) and static chapters (gated below) */
.journey{position:relative;height:3200vh}
.stage{position:sticky;top:var(--header-h);height:calc(100vh - var(--header-h));height:calc(100svh - var(--header-h));overflow:hidden;background:#D9D2C6}

.media{position:absolute;inset:0}
.media video,.stills img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.media video{opacity:0;transform:translateZ(0);will-change:transform}
.media video.on{opacity:1}

.stills img{opacity:0;will-change:opacity,transform;transform-origin:50% 50%}
.glow{position:absolute;inset:0;opacity:0;pointer-events:none;background:radial-gradient(60% 70% at 52% 38%,rgba(255,248,232,1) 0%,rgba(255,244,222,.85) 45%,rgba(255,240,215,.35) 100%)}
.scrim{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 120% 90% at 50% 45%,rgba(20,24,26,0) 50%,rgba(20,24,26,.28) 100%)}

/* Loading ring */
.loader{position:absolute;right:20px;bottom:20px;z-index:6;display:flex;align-items:center;gap:10px;padding:8px 14px 8px 8px;border-radius:999px;background:rgba(251,248,243,.9);box-shadow:0 2px 12px rgba(27,42,47,.12);font:500 12px/1 var(--mono);letter-spacing:.04em;color:var(--ink-2);transition:opacity .6s var(--ease-out)}
.loader .ring{width:30px;height:30px;transform:rotate(-90deg)}
.loader circle{fill:none;stroke-width:3.5}
.loader .track{stroke:rgba(27,42,47,.12)}
.loader .fill{stroke:var(--teal);stroke-dasharray:126;stroke-linecap:round;transition:stroke-dashoffset .2s linear}
.stage.video-ready .loader,.stage.video-failed .loader{opacity:0;pointer-events:none}

/* Signature: the floor-guide rail */
.rail{position:absolute;left:22px;top:50%;transform:translateY(-50%);z-index:5;height:min(440px,64%)}
.rail-line{position:absolute;left:9px;top:6px;bottom:6px;width:4px;border-radius:2px;background:rgba(251,248,243,.6);overflow:hidden}
.rail-fill{position:absolute;inset:0;background:var(--teal);transform-origin:50% 0;transform:scaleY(var(--railp,0))}
.rail ol{list-style:none;margin:0;padding:0;height:100%;display:flex;flex-direction:column;justify-content:space-between;position:relative}
.rail a{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);min-height:22px}
.rail .dot{width:22px;height:22px;display:grid;place-items:center;flex:none}
.rail .dot::before{content:"";width:10px;height:10px;border-radius:50%;background:var(--panel);border:2px solid var(--teal);transition:transform .4s var(--ease-out),background .4s var(--ease-out),border-color .4s var(--ease-out)}
.rail a.passed .dot::before{background:var(--teal)}
.rail a.here .dot::before{background:var(--flame);border-color:var(--flame);transform:scale(1.4);box-shadow:0 0 0 2.5px #fff,0 0 0 6px rgba(233,162,59,.35)}
.rail .lbl{font:500 11.5px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;background:rgba(251,248,243,.92);padding:5px 8px;border-radius:6px;opacity:0;transform:translateX(-4px);transition:opacity .35s var(--ease-out),transform .35s var(--ease-out);white-space:nowrap}
.rail a:hover .lbl,.rail a:focus-visible .lbl{opacity:1;transform:none}

/* Stops: panels over the stage, driven by scroll */
.stops{position:absolute;inset:0;z-index:4;pointer-events:none}
.stop{position:absolute;inset:0;opacity:0;visibility:hidden}
.stop.on{visibility:visible}
.stop-fig{display:none;margin:0}
.panel{position:absolute;top:50%;left:88px;width:min(440px,38vw);max-height:calc(100% - 48px);overflow:auto;padding:28px 30px;border-radius:18px;background:rgba(251,248,243,.95);box-shadow:var(--shadow);pointer-events:auto;transform:translate3d(0,calc(-50% + (1 - var(--k,1)) * 18px),0)}
.stop[data-side="right"] .panel{left:auto;right:40px}
.stop[data-side="left-low"] .panel{top:auto;bottom:28px;transform:translate3d(0,calc((1 - var(--k,1)) * 18px),0)}
.stop[data-side="center"] .panel{top:auto;bottom:5%;left:50%;width:min(620px,86vw);text-align:center;background:rgba(251,248,243,.82);transform:translate3d(-50%,calc((1 - var(--k,1)) * 18px),0)}
.stop[data-side="center"] .actions{justify-content:center}
.panel h1{font-size:clamp(34px,3.6vw,52px)}
.panel h2{font-size:clamp(28px,2.7vw,40px)}
.panel .body{color:var(--ink-2);margin-top:12px}
.panel .guide path{stroke-dashoffset:calc(80 - 80 * var(--k,1))}
.panel .actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.panel .text-link{display:inline-block;margin-top:16px;font-weight:600}
.panel .sub{font-size:18px;margin-top:20px}
.panel .meta{margin-top:16px;font-size:15px;color:var(--ink-2)}

.scroll-cue{display:flex;align-items:center;gap:10px;margin-top:22px;font:500 12px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.scroll-cue span{width:2px;height:26px;background:linear-gradient(var(--teal) 0 40%,transparent 40%);background-size:2px 26px;animation:cue 2.4s var(--ease-soft) -1s infinite}
@keyframes cue{0%{background-position:0 -16px}100%{background-position:0 26px}}

.search{margin-top:20px}
.search label{display:block;font:600 14px/1.2 var(--body);margin-bottom:6px}
.search-row{display:flex;gap:8px}
.search-row .input{flex:1;min-width:0}

.picker{border:0;padding:0;margin:20px 0 0;display:flex;flex-wrap:wrap;gap:8px}
.chip{font:500 15px/1 var(--body);padding:11px 14px;border-radius:999px;border:1.5px solid var(--line-strong);background:#fff;color:var(--ink);cursor:pointer;transition:border-color .3s var(--ease-out),background .3s var(--ease-out),transform .3s var(--ease-out)}
.chip:hover{border-color:var(--teal)}
.chip[aria-pressed="true"]{background:var(--teal);border-color:var(--teal);color:#fff}
.chip[aria-pressed="true"] .ph{background:rgba(255,255,255,.18);border-bottom-color:rgba(255,255,255,.7)}
.picked{margin-top:14px;font-weight:500;color:var(--teal-deep);min-height:1.6em}

.steps{list-style:none;counter-reset:s;margin:18px 0 0;padding:0;display:grid;gap:12px}
.steps li{counter-increment:s;display:grid;grid-template-columns:34px 1fr;column-gap:12px;align-items:baseline}
.steps li::before{content:counter(s);grid-row:span 2;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:rgba(19,128,139,.12);color:var(--teal-deep);font:600 14px/1 var(--mono);align-self:start}
.steps strong{font-weight:600}
.steps span{color:var(--ink-2)}

.filter-note{margin-top:12px;font-weight:500;color:var(--teal-deep)}
.docs{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:10px}
.docs li{display:flex;gap:14px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff}
.docs .avatar{width:44px;height:44px;border-radius:50%;flex:none;background:radial-gradient(circle at 50% 38%,rgba(19,128,139,.35) 0 22%,transparent 23%),radial-gradient(circle at 50% 100%,rgba(19,128,139,.25) 0 45%,transparent 46%),rgba(19,128,139,.08)}
.docs div{display:flex;flex-direction:column;gap:2px;font-size:15px}
.docs small{color:var(--ink-2);font-size:13.5px}

.quote{margin:18px 0 0;padding:16px 18px;border-left:3px solid var(--flame);background:#fff;border-radius:0 12px 12px 0}
.quote cite{display:block;margin-top:8px;font-style:normal;font-size:14px;color:var(--ink-2)}

.facts{margin:16px 0 20px;display:grid;gap:0;border-top:1px solid var(--line)}
.facts div{display:flex;gap:16px;align-items:baseline;padding:10px 0;border-bottom:1px solid var(--line)}
.facts dt{min-width:120px;font:500 11.5px/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.facts dd{margin:0}

.essentials{background:linear-gradient(var(--canvas),#EFE8DC)}

/* Short windows (landscape phones, shallow laptop windows): keep the walk, compact the overlays */
@media (max-height:560px){
  .rail,.loader,.scroll-cue{display:none}
  .panel{left:16px;width:min(380px,48vw);max-height:calc(100% - 20px);padding:16px 18px}
  .stop[data-side="right"] .panel{right:16px}
  .stop[data-side="left-low"] .panel{bottom:10px}
  .stop[data-side="center"] .panel{bottom:10px}
  .panel h1{font-size:24px}
  .panel h2{font-size:21px}
  .panel .body{font-size:14px;margin-top:6px}
  .panel .guide{margin:6px 0 8px}
  .panel .actions{margin-top:12px}
  .picker{margin-top:10px}
  .chip{padding:8px 11px;font-size:13.5px}
  .steps,.docs{margin-top:10px;gap:6px}
}

/* Phones and upright tablets: the walk fills the screen, text rides in a bottom sheet */
@media (orientation: portrait) and (max-width: 1100px), (max-width: 820px) and (min-height: 561px){
  .panel,.stop[data-side="right"] .panel,.stop[data-side="left-low"] .panel,.stop[data-side="center"] .panel{
    top:auto;bottom:12px;left:max(12px,calc(50% - 300px));right:max(12px,calc(50% - 300px));width:auto;
    max-height:58%;padding:20px 20px 18px;border-radius:16px;text-align:left;
    transform:translate3d(0,calc((1 - var(--k,1)) * 18px),0)}
  .stop[data-side="center"] .panel{background:rgba(251,248,243,.92)}
  .stop[data-side="center"] .actions{justify-content:flex-start}
  .panel h1{font-size:30px}
  .panel h2{font-size:25px}
  .panel .body{font-size:15.5px;margin-top:8px}
  .panel .guide{margin:8px 0 10px}
  .panel .actions{margin-top:16px}
  .panel .actions .btn{flex:1 1 auto}
  .scroll-cue{margin-top:14px}
  .docs li{padding:10px}
  .docs li:nth-child(n+3){display:none}
  .quote{margin-top:12px;padding:12px 14px}
  /* the floor-guide rail becomes a slim progress line across the top */
  .rail{top:10px;left:14px;right:14px;height:22px;transform:none}
  .rail-line{left:8px;right:8px;top:9px;bottom:auto;width:auto;height:4px}
  .rail-fill{transform-origin:0 50%;transform:scaleX(var(--railp,0))}
  .rail ol{flex-direction:row;height:22px}
  .rail .lbl{display:none}
  .loader{top:40px;bottom:auto;right:12px}
}

/* ===== Static journey: only for reduce-motion or data-saver visitors (html.static-journey, set in <head>) ===== */
html.static-journey .journey{height:auto!important}
html.static-journey .stage{position:static;height:auto;overflow:visible;background:none}
html.static-journey .media,html.static-journey .loader,html.static-journey .rail{display:none}
html.static-journey .stops{position:static;pointer-events:auto}
html.static-journey .stop{position:static;opacity:1!important;visibility:visible!important;display:block;padding:0 0 28px}
html.static-journey .stop-fig{display:block;aspect-ratio:4/3;overflow:hidden;background:#D9D2C6}
html.static-journey .stop-fig img{width:100%;height:100%;object-fit:cover}
html.static-journey .stop[data-stop="arrival"] .stop-fig img{object-position:30% 50%}
html.static-journey .stop[data-stop="care"] .stop-fig img{object-position:40% 50%}
html.static-journey .panel,html.static-journey .stop[data-side] .panel{position:relative;top:auto;left:auto;right:auto;bottom:auto;width:auto;max-height:none;overflow:visible;margin:-36px 16px 0;transform:none;text-align:left;background:var(--panel)}
html.static-journey .stop[data-side="center"] .actions{justify-content:flex-start}
html.static-journey .panel .guide path{stroke-dashoffset:0}
html.static-journey .docs li:nth-child(n+3){display:flex}
html.static-journey .scroll-cue{display:none}
@media (max-width: 720px){html.static-journey .search-row{flex-direction:column}}
@media (min-width: 721px) and (max-width: 1024px){
  html.static-journey .stops{max-width:760px;margin:0 auto}
  html.static-journey .stop-fig{aspect-ratio:16/9}
}
@media (min-width: 1025px){
  html.static-journey .stops{max-width:1080px;margin:0 auto;padding:32px 24px 0}
  html.static-journey .stop{display:grid;grid-template-columns:1.25fr 1fr;align-items:center;gap:0;padding:0 0 40px}
  html.static-journey .stop-fig{aspect-ratio:4/3;border-radius:18px}
  html.static-journey .panel,html.static-journey .stop[data-side] .panel{margin:0 0 0 -48px}
}

/* Phones: the Call / Book / Directions bar sits at the bottom; lift the sheet above it */
@media (max-width: 720px) and (min-height: 561px){
  .panel,.stop[data-side] .panel{bottom:calc(76px + env(safe-area-inset-bottom));max-height:calc(58% - 40px)}
  .loader{top:40px}
}
/* The first stop is on screen before the banner scrolls away: keep its buttons in view */
.stop[data-stop="arrival"] .panel{bottom:calc(28px + var(--banner-h,0px))}
@media (orientation: portrait) and (max-width: 1100px), (max-width: 820px) and (min-height: 561px){
  .stop[data-stop="arrival"] .panel{bottom:calc(12px + var(--banner-h,0px))}
}
@media (max-width: 720px) and (min-height: 561px){
  .stop[data-stop="arrival"] .panel{bottom:calc(76px + env(safe-area-inset-bottom) + var(--banner-h,0px))}
}
@media (max-height:560px){.stop[data-stop="arrival"] .panel{bottom:calc(10px + var(--banner-h,0px))}}


/* ===== Walk captions: light content that rides the walking stretches ===== */
.beats{position:absolute;inset:0;z-index:3;pointer-events:none}
.beat{position:absolute;margin:0;opacity:0;will-change:opacity,transform}

/* Gate: three heritage lines, one at a time, drifting down as you approach */
.hero-line{top:12%;right:6%;max-width:min(560px,46vw);padding:18px 24px 20px;border-radius:16px;
  background:rgba(22,38,43,.62);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  color:#FBF8F3;font:600 clamp(26px,2.6vw,40px)/1.12 var(--display);letter-spacing:-.01em;
  transform:translate3d(0,calc((1 - var(--k,1)) * -22px),0)}
.hero-line .kick{display:block;margin-bottom:8px;font:500 12px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#F3C77A}

/* Doors to lobby: a hospital wayfinding sign */
.way-sign{top:14%;left:50%;display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:16px;row-gap:10px;
  padding:16px 22px 16px 16px;border-radius:14px;background:var(--teal-deep);color:#fff;box-shadow:0 10px 30px rgba(12,92,102,.35);
  transform:translate3d(-50%,calc((1 - var(--k,1)) * 16px),0) scale(calc(.94 + .06 * var(--k,1)))}
.way-arrow{grid-row:span 2;width:52px;height:52px;border-radius:10px;display:grid;place-items:center;background:#fff;color:var(--teal-deep);font:700 30px/1 var(--body)}
.way-text{font:500 20px/1.3 var(--body)}
.way-text strong{font-weight:700}
.way-chip{justify-self:start;font:500 12px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:7px 10px;border-radius:999px;background:rgba(255,255,255,.16)}

/* Reception: small place tags with a pin */
.tag{left:var(--x);top:var(--y);padding:8px 12px 8px 26px;border-radius:999px;background:rgba(251,248,243,.94);color:var(--ink);
  font:600 14px/1 var(--body);box-shadow:0 4px 16px rgba(27,42,47,.18);transform:translate3d(0,calc((1 - var(--k,1)) * 10px),0) scale(calc(.9 + .1 * var(--k,1)))}
.tag::before{content:"";position:absolute;left:10px;top:50%;width:8px;height:8px;margin-top:-4px;border-radius:50%;background:var(--flame);box-shadow:0 0 0 3px rgba(233,162,59,.3)}

/* Waiting hall: visit checklist that ticks as you walk */
.tips-head,.tip{left:6%;width:min(380px,40vw)}
.tips-head{top:16%;padding:12px 18px;border-radius:14px 14px 0 0;background:var(--teal-deep);color:#fff;font:600 18px/1.2 var(--display)}
.tips-head small{display:block;margin-top:4px;font:500 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;opacity:.75}
.tip{top:calc(16% + 62px + var(--i) * 52px);padding:14px 18px 14px 50px;background:rgba(251,248,243,.95);color:var(--ink);font:500 16px/1.3 var(--body);
  border-bottom:1px solid var(--line);transform:translate3d(calc((1 - var(--k,1)) * -18px),0,0)}
.tip[style*="--i:2"]{border-radius:0 0 14px 14px;border-bottom:0}
.tip::before{content:"";position:absolute;left:18px;top:50%;width:18px;height:18px;margin-top:-9px;border-radius:50%;border:2px solid var(--teal);
  background:var(--teal) no-repeat center/11px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6.5l2.5 2.5L10 3.5' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  opacity:var(--k,1)}

/* Corridor: department signs pass by on the wall */
.sign{top:22%;left:50%;padding:12px 18px;border-radius:10px;background:var(--teal-deep);color:#fff;white-space:nowrap;
  font:600 18px/1 var(--body);box-shadow:0 8px 24px rgba(12,92,102,.3);
  transform:translate3d(calc(-50% + (0.5 - var(--u,0.5)) * 64vw),0,0) scale(calc(.82 + .36 * var(--u,0.5)))}
.sign b{margin-left:8px;color:#F3C77A;font-weight:700}

/* Room and care: calm captions */
.soft-caption{left:50%;bottom:9%;padding:14px 22px;border-radius:999px;background:rgba(251,248,243,.94);color:var(--ink);
  font:500 17px/1.3 var(--body);white-space:nowrap;box-shadow:0 8px 24px rgba(27,42,47,.16);transform:translate3d(-50%,calc((1 - var(--k,1)) * 14px),0)}
.soft-caption i{color:var(--flame);font-style:normal;margin:0 6px}
.soft-caption small{margin-left:10px;font:500 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
.soft-caption.center{bottom:auto;top:44%;font:600 clamp(26px,2.8vw,40px)/1.1 var(--display);padding:18px 30px;background:rgba(251,248,243,.9)}

/* Live location label and the always-there emergency pill */
.area-label{position:absolute;left:62px;top:18px;z-index:5;margin:0;display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;
  background:rgba(251,248,243,.92);box-shadow:0 2px 12px rgba(27,42,47,.12);font:500 14px/1 var(--body);color:var(--ink)}
.area-kick{font:500 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
.area-dot{width:8px;height:8px;border-radius:50%;background:var(--flame);box-shadow:0 0 0 3px rgba(233,162,59,.3)}
.emergency-pill{position:absolute;right:20px;top:18px;z-index:5;padding:9px 14px;border-radius:999px;background:#fff;color:#8E271B;
  border:1.5px solid rgba(155,44,31,.45);text-decoration:none;font:500 14px/1 var(--body);box-shadow:0 2px 12px rgba(27,42,47,.12)}
.emergency-pill strong{font-weight:700}
.emergency-pill:hover{background:#FBEDEA;color:#7A1F14}

/* Short windows */
@media (max-height:560px){
  .hero-line{top:8%;font-size:22px;padding:12px 16px}
  .way-sign{top:8%}.way-text{font-size:16px}.way-arrow{width:40px;height:40px;font-size:22px}
  .tips-head{top:6%}.tip{top:calc(6% + 54px + var(--i) * 44px);padding:10px 14px 10px 44px;font-size:14px}
  .sign{top:14%;font-size:15px}
  .soft-caption{bottom:5%;font-size:14px}
  .area-label{display:none}
}
/* Phones and upright tablets */
@media (orientation: portrait) and (max-width: 1100px), (max-width: 820px) and (min-height: 561px){
  .hero-line{top:auto;bottom:16%;left:14px;right:14px;max-width:none;font-size:26px}
  .way-sign{top:auto;bottom:16%;left:14px;right:14px;transform:translate3d(0,calc((1 - var(--k,1)) * 16px),0)}
  .way-text{font-size:17px}
  .tag{font-size:13px}
  .tips-head,.tip{left:14px;right:14px;width:auto}
  .tips-head{top:auto;bottom:calc(16% + 3 * 52px + 58px)}
  .tip{top:auto;bottom:calc(16% + (2 - var(--i)) * 52px)}
  .sign{top:24%;font-size:16px;transform:translate3d(calc(-50% + (0.5 - var(--u,0.5)) * 110vw),0,0) scale(calc(.85 + .3 * var(--u,0.5)))}
  .soft-caption{left:14px;right:14px;bottom:16%;white-space:normal;text-align:center;border-radius:16px;transform:translate3d(0,calc((1 - var(--k,1)) * 14px),0)}
  .soft-caption.center{top:40%;bottom:auto;font-size:26px}
  .area-label{left:14px;top:42px;font-size:13px;padding:7px 12px}
  .emergency-pill{right:14px;top:42px;font-size:13px;padding:7px 12px}
}
@media (max-width: 720px) and (min-height: 561px){
  .hero-line,.way-sign,.soft-caption{bottom:calc(88px + env(safe-area-inset-bottom))}
  .tip{bottom:calc(88px + env(safe-area-inset-bottom) + (2 - var(--i)) * 52px)}
  .tips-head{bottom:calc(88px + env(safe-area-inset-bottom) + 3 * 52px + 6px)}
  .area-kick{display:none}
}
html.static-journey .beats,html.static-journey .area-label,html.static-journey .emergency-pill{display:none}
