/* Scoped, reversible presentation corrections. */
/* The painted sticky stage follows Safari chrome, but the document tracks and
   native-reading ruler retain svh. Never stretch the scroll animation timeline. */
@supports(height:100dvh){
 @media(min-height:501px) and (prefers-reduced-motion:no-preference){
  .c{--d4w-stage-header:82px}
  .c .journey-screen,.c .closing-journey:not(.closing-flow) .closing-screen{height:calc(100dvh - var(--d4w-stage-header))}
  .c .journey-screen .epic-stage,.c .journey-screen .journey-opening{height:100%!important}
 }
 @media(max-width:760px) and (min-height:501px) and (prefers-reduced-motion:no-preference){
  .c{--d4w-stage-header:var(--mobile-header,68px)}
 }
}
.d4w-visit-location{display:inline-flex!important;flex-direction:column;justify-content:center;align-items:center;gap:1px;line-height:1.2;min-height:44px;box-sizing:border-box}
.brandbar a.d4w-visit-location.btn{padding:6px 16px;min-height:44px}
.d4w-visit-location small{font:400 10px/1.2 Exo,Arial,sans-serif;letter-spacing:.02em;color:inherit;text-decoration:none}
.c .closing-screen .closing-nav{overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;pointer-events:auto}
.c .closing-screen .closing-nav::-webkit-scrollbar{display:none}
.c .closing-screen .closing-nav button{flex:0 0 auto;white-space:nowrap;border:0!important}
/* Auto margin aligns the menu right when it fits, collapsing to zero during overflow. */
.c .closing-screen .closing-nav{justify-content:flex-start}
.c .closing-screen .closing-nav>button:first-child{margin-inline-start:auto}
/* Overflow-clipped :focus-visible outlines create the reported vertical menu strokes.
   Suppress only pointer-return focus; keyboard rings remain visible, inset inside the scroller. */
.c .closing-screen .closing-nav button:focus-visible{outline:2px solid currentColor;outline-offset:-3px}
.c .closing-screen .closing-nav button[data-d4w-pointer-focus],.calm-ui .d4w-experience-help-trigger[data-d4w-pointer-focus],.d4w-footer-arrival[data-d4w-pointer-focus]{outline:none!important}
.d4w-footer-arrival{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:4px}
.footgrid .d4w-footer-arrival{font-size:13px;min-height:44px}
.d4w-location-trigger:hover,.d4w-footer-arrival:hover{color:#000}

.d4w-experience-heading{display:inline-flex;align-items:center;gap:0}
.calm-ui .d4w-experience-help-trigger{display:inline-grid;place-items:center;position:relative;width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border:0;background:transparent;color:#555;font:400 12px/1 Exo,Arial,sans-serif;cursor:pointer;flex:none}
.calm-ui .d4w-experience-help-trigger::before{content:"";position:absolute;width:18px;height:18px;border:1px solid #888;border-radius:50%;pointer-events:none}
.d4w-info-dialog{box-sizing:border-box;width:min(540px,calc(100vw - 32px));max-width:540px;max-height:calc(100dvh - 40px);padding:0;border:1px solid #ddd;border-radius:4px;background:#fff;color:#171717;box-shadow:0 20px 80px #0004;overflow:auto;overscroll-behavior:contain;font:400 15px/1.55 Exo,Arial,sans-serif}
.d4w-info-dialog::backdrop{background:rgb(0 0 0 / .42)}
.d4w-info-dialog .d4w-info-bar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:24px 24px 0;background:#fff;color:#171717;position:static}
.d4w-info-dialog .d4w-info-bar h2{font:400 36px/1.05 League,Arial,sans-serif;letter-spacing:0;text-transform:none;margin:4px 0 0}
.d4w-info-dialog .d4w-info-close{display:grid;place-items:center;flex:none;width:44px;height:44px;padding:0;border:0;background:transparent;color:#171717;font:300 30px/1 Arial,sans-serif;cursor:pointer}
.d4w-info-dialog .d4w-info-body{padding:14px 28px 28px}
.d4w-info-dialog p{margin:0 0 18px;max-width:none;font:inherit;color:inherit}
.d4w-info-dialog .d4w-info-address{font-size:20px;line-height:1.5;margin-bottom:24px}
.d4w-arrival-facts{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.d4w-info-dialog .d4w-route{display:inline-flex;gap:28px;align-items:center;padding:12px 18px;min-height:44px;background:#171717;color:#fff;text-decoration:none;font-size:14px}
.d4w-experience-tips{margin:0}
.d4w-experience-tips>div{padding:12px 0;border-bottom:1px solid #e5e5e5}
.d4w-experience-tips>div:first-child{padding-top:0}
.d4w-experience-tips dt{display:flex;justify-content:space-between;gap:16px;font:600 15px/1.5 Exo,Arial,sans-serif;margin:0;color:#171717}
.d4w-experience-tips dt span{font-weight:400;font-size:13px;color:#555;white-space:nowrap}
.d4w-experience-tips dd{margin:3px 0 0;font:400 14px/1.5 Exo,Arial,sans-serif;color:#444}
.d4w-info-dialog p.d4w-info-note{font-size:12px;line-height:1.5;color:#555;margin:16px 0 0}
.d4w-sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.d4w-info-dialog :focus-visible,.d4w-location-trigger:focus-visible,.d4w-footer-arrival:focus-visible,.calm-ui .d4w-experience-help-trigger:focus-visible{outline:2px solid #171717;outline-offset:3px}
@media(max-width:600px){.d4w-info-dialog{max-height:calc(100dvh - 24px);width:calc(100vw - 24px)}.d4w-info-dialog .d4w-info-bar{padding:18px 16px 0;gap:8px}.d4w-info-dialog .d4w-info-bar h2{font-size:32px}.d4w-info-dialog .d4w-info-body{padding:12px 22px 22px}.d4w-arrival-facts{gap:14px}.d4w-location-trigger{font-size:11px;padding:4px 10px;min-height:22px}}
@media(max-width:380px){.d4w-arrival-facts{grid-template-columns:1fr;gap:0}}

/* Transparent chapter navigation over the actual stage, in every state.
   The old mobile panel clip exposed a 56px beige backing strip; keep content
   padding/reserved space, but let the stage artwork paint behind its menu. */
.c .journey-screen .epic-nav,.c .closing-screen .closing-nav,
.c .journey-screen .epic-nav button,.c .closing-screen .closing-nav button,
.c .journey-screen .epic-nav button:is(:hover,:active,[aria-pressed=true]),
.c .closing-screen .closing-nav button:is(:hover,:active,[aria-pressed=true]){
 background:transparent!important;border:0!important;box-shadow:none!important;
 backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}
@media(max-width:760px){
 .c .closing-journey:not(.closing-flow) .closing-panel{clip-path:none}
 .c .closing-journey[data-active-chapter="1"] .closing-nav button{color:#c9c7bf!important;text-shadow:0 1px 3px #000,0 1px 8px #000}
 .c .closing-journey[data-active-chapter="1"] .closing-nav button[aria-pressed=true]{color:#fff!important}
}

/* Safari may retain :focus-visible after native dialog focus restoration.
   All booking buttons follow actual pointer/keyboard modality, including children,
   calendar and time dialogs. Text inputs retain their native editing focus. */
html[data-d4w-input="pointer"] body.c :is(button,a[href],summary,[role="button"],[tabindex]):not(input):not(textarea):not(select):not([contenteditable="true"]):focus{outline:none!important}
/* Deliberate keyboard navigation always wins over old per-dialog return markers.
   Inset rings stay visible inside horizontally clipped menus and game sliders. */
html[data-d4w-input="keyboard"] body.c :is(button,a[href],summary,[role="button"],[tabindex]):not(input):not(textarea):not(select):not([contenteditable="true"]):focus{outline:2px solid currentColor!important;outline-offset:-3px!important}

/* Extend only the card viewport into its existing right-hand gutter.
   Compensate percentage bases so card sizes and left positions stay unchanged. */
.c .journey-cards .journey-track{margin-right:-5vw}
.c .journey-cards .journey-track>.journey-card{flex-basis:calc(32% - 1.6vw)}
@media(max-width:760px),(max-width:1000px) and (max-height:500px){
 .c .journey-cards .journey-track{margin-right:-14px;padding-right:42px;scroll-padding-right:42px}
 .c .journey-cards .journey-track>.journey-card{flex-basis:100%;min-width:100%;max-width:100%}
}
@media(max-width:760px) and (max-height:560px),(max-width:1000px) and (max-height:500px){
 .c .journey-cards .journey-track{margin-right:-10px;padding-right:38px;scroll-padding-right:38px}
 .c .journey-cards .journey-track>.journey-card{flex-basis:100%;min-width:100%;max-width:100%}
}
/* Bound the transparent submenu inside its existing stage; allow native overflow
   when labels cannot fit. Preserve current font, alignment and button sizes. */
.c .journey-screen .epic-nav{box-sizing:border-box;max-width:calc(100% - 52px);overflow-x:auto;overscroll-behavior-x:contain}
@media(max-width:760px){.c .journey-screen .epic-nav{max-width:calc(100% - 24px)}}

/* Extend the scroll viewport to the left edge, but keep the original first
   card and snap positions by adding the same amount to its inner padding. */
.c .journey-cards .journey-track{margin-left:-5vw;padding-left:5vw;scroll-padding-left:5vw}
@media(max-width:760px),(max-width:1000px) and (max-height:500px){
 .c .journey-cards .journey-track{margin-left:-14px;padding-left:42px;scroll-padding-left:42px}
}
@media(max-width:760px) and (max-height:560px),(max-width:1000px) and (max-height:500px){
 .c .journey-cards .journey-track{margin-left:-48vw;padding-left:calc(48vw + 28px);scroll-padding-left:calc(48vw + 28px)}
}

/* The first chapter is hidden on wide screens, so anchor the first visible
   item instead. Keep auto-margin overflow behaviour for narrow menus. */
.c .closing-screen .closing-nav>button:first-child{margin-inline-start:0}
.c .closing-screen .closing-nav>button[data-chapter="1"]{margin-inline-start:auto}
.c .journey-screen .epic-nav,.c .closing-screen .closing-nav{translate:0 -8px}
@media(max-width:850px),(max-width:1000px) and (max-height:500px){
 .c .closing-screen .closing-nav>button:first-child{margin-inline-start:auto}
 .c .closing-screen .closing-nav>button[data-chapter="1"]{margin-inline-start:0}
}
@media(max-width:760px){
 .c .journey-screen .epic-nav{translate:0 -5px}
 .c .closing-screen .closing-nav{translate:0 -7px}
}
