@font-face{
  font-family:'EurostileMNExtendedBold';
  src:url('../font/EurostileMNExtendedBold.ttf') format('truetype');
  font-style:normal;
  font-weight:700;
  font-display:swap;
}
:root{
  --bg:#000;
  --fg:#fff;
  --accent:#baff00;
  --line:rgba(255,255,255,.32);
  --pad:32px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--fg)}
body{font-family:'EurostileMNExtendedBold',Arial,sans-serif;font-weight:700;overflow-x:hidden}
button,input{font:inherit}
button,a{-webkit-tap-highlight-color:transparent}
.site-header{position:fixed;inset:0 0 auto 0;height:122px;z-index:50;pointer-events:none}
.logo-link{position:absolute;left:41px;top:32px;display:block;pointer-events:auto}
.logo{display:block;width:40.53px;height:58px;object-fit:contain}
.close-pill,.panel-close{position:absolute;right:32px;top:32px;border:1px solid #fff;border-radius:999px;padding:10px 15px;color:#fff;background:#000;text-decoration:none;font-size:13px;line-height:1;pointer-events:auto;cursor:pointer;transition:background .18s,color .18s}
.close-pill:hover,.panel-close:hover{background:#fff;color:#000}
.tour-shell{width:min(1280px,calc(100vw - 64px));margin:0 auto;padding:112px 0 110px}
.intro{text-align:center;max-width:1050px;margin:0 auto 70px}
.eyebrow,.micro-label{margin:0 0 12px;font-size:11px;letter-spacing:.12em}
h1{margin:0;font-size:clamp(34px,5.4vw,82px);line-height:.9;letter-spacing:-.045em;white-space:nowrap}
.intro-copy{max-width:760px;margin:28px auto 0;font-size:clamp(15px,1.45vw,21px);line-height:1.18}
.city-tabs{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin:0 auto 38px}
.city-pill,.book-button,.done-button{position:relative;isolation:isolate;overflow:hidden;border:1px solid #fff;border-radius:999px;background:#000;color:#fff;cursor:pointer;text-transform:uppercase}
.slot-pill{position:relative;overflow:hidden;border:1px solid #fff;border-radius:0;background:#000;color:#fff;cursor:pointer;text-transform:uppercase;transition:background .18s,color .18s}
.city-pill{padding:9px 14px;font-size:clamp(14px,1.7vw,24px);line-height:.95}
.city-pill::before,.book-button::before,.done-button::before{content:"";position:absolute;inset:0;z-index:-1;background:#fff;transform:translateX(-102%);transition:transform .26s cubic-bezier(.65,0,.35,1)}
.city-pill:hover,.book-button:hover,.done-button:hover{color:#000}
.city-pill:hover::before,.book-button:hover::before,.done-button:hover::before{transform:translateX(0)}
.city-pill.active{background:#fff;color:#000}
.availability{border-top:1px solid #fff;border-bottom:0;padding:26px 0 38px}
.availability-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:28px}
.availability h2{margin:0;font-size:clamp(44px,6vw,88px);line-height:.85;letter-spacing:-.045em}
.city-range{font-size:clamp(16px,2vw,28px);white-space:nowrap}
.slot-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.slot-pill{min-height:116px;padding:18px;text-align:left;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start}
.slot-pill .date{font-size:clamp(24px,2.7vw,42px);line-height:.9}
.slot-pill .time{font-size:13px;letter-spacing:.04em}
.slot-pill .status{font-family:Arial,sans-serif;font-size:10px;font-weight:700;letter-spacing:.08em}
.slot-pill::after{content:"";position:absolute;inset:-1px;pointer-events:none;opacity:0;background:
  linear-gradient(90deg,#fff 50%,transparent 50%) 0 0/8px 1px repeat-x,
  linear-gradient(90deg,#fff 50%,transparent 50%) 0 100%/8px 1px repeat-x,
  linear-gradient(0deg,#fff 50%,transparent 50%) 0 0/1px 8px repeat-y,
  linear-gradient(0deg,#fff 50%,transparent 50%) 100% 0/1px 8px repeat-y}
.slot-pill:hover{background:#000;color:#fff;border-color:transparent}
.slot-pill:hover::after{opacity:1;animation:marchingAnts .38s linear infinite}
.slot-pill:hover .status{color:#fff}
.slot-pill.selected{background:#fff;color:#000;border-color:#fff}
.slot-pill.selected::after{display:none}
.slot-pill.selected .status{color:#000}
@keyframes marchingAnts{to{background-position:8px 0,-8px 100%,0 -8px,100% 8px}}
.empty-state{margin:60px 0 30px;text-align:center;font-size:22px}
.booking-layer{position:fixed;inset:0;z-index:100;visibility:hidden;pointer-events:none;transition:visibility 0s linear .5s}
.booking-layer.open{visibility:visible;pointer-events:auto;transition-delay:0s}
.booking-backdrop{position:absolute;inset:0;width:100%;height:100%;border:0;background:rgba(0,0,0,.74);backdrop-filter:blur(9px);cursor:default;opacity:0;transition:opacity .5s cubic-bezier(.65,0,.35,1)}
.booking-layer.open .booking-backdrop{opacity:1}
.booking-panel{position:absolute;right:0;top:0;width:min(620px,100vw);height:100%;overflow:auto;background:#fff;color:#000;padding:110px 38px 42px;transform:translateX(100%);transition:transform .5s cubic-bezier(.65,0,.35,1);will-change:transform}
.booking-layer.open .booking-panel{transform:translateX(0)}
.panel-close{position:fixed;z-index:2;background:#fff;color:#000;border-color:#000}
.panel-close:hover{background:#000;color:#fff}
.booking-panel h2{margin:0;max-width:100%;font-size:clamp(34px,4.2vw,58px);line-height:.9;letter-spacing:-.045em;white-space:nowrap;overflow:hidden;text-overflow:clip}
.selected-slot{margin:14px 0 44px;font-size:18px}
#bookingForm{display:grid;gap:18px}
#bookingForm label{display:grid;gap:7px;font-size:10px;letter-spacing:.08em}
#bookingForm input{width:100%;border:0;border-bottom:1px solid #000;border-radius:0;padding:12px 0 10px;background:#fff;color:#000;outline:none;font-family:Arial,sans-serif;font-size:20px;font-weight:400}
#bookingForm input:focus{border-bottom-width:3px}
#bookingForm input.invalid{border-color:#f00}
.field-error{min-height:14px;margin-top:1px;color:#f00;font-family:Arial,sans-serif;font-size:11px;font-weight:700;letter-spacing:0}.form-error{min-height:0;margin:0;color:#f00;font-family:Arial,sans-serif;font-size:12px;font-weight:700}
.book-button,.done-button{width:100%;padding:17px 20px;margin-top:10px;font-size:18px}
.booking-panel .book-button{background:#fff;color:#000;border-color:#000;isolation:isolate}
.booking-panel .book-button::before{background:#000;z-index:0}
.booking-panel .book-button span{position:relative;z-index:1;color:#fff;mix-blend-mode:difference}
.booking-panel .book-button:hover{color:#000}
.confirmation{position:fixed;inset:0;z-index:200;display:none;place-items:center;background:#baff00;color:#000;padding:32px}
.confirmation.show{display:grid;animation:confirmIn .45s cubic-bezier(.65,0,.35,1) both}
@keyframes confirmIn{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0)}}
.confirmation-inner{width:min(780px,100%);text-align:center}
.confirmation h2{margin:0;font-size:clamp(88px,15vw,220px);line-height:.78;letter-spacing:-.065em}
.confirmation p:not(.micro-label){max-width:650px;margin:34px auto;font-family:Arial,sans-serif;font-size:18px;font-weight:700;line-height:1.35}
.done-button{max-width:360px;background:#baff00;color:#000;border-color:#000}
.done-button::before{background:#000}.done-button:hover{color:#baff00}
.tour-footer{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;justify-content:space-between;gap:20px;padding:14px 32px;background:#000;border-top:1px solid #fff;font-size:10px;letter-spacing:.05em}
@media(max-width:800px){
  :root{--pad:18px}
  .site-header{height:96px}.logo-link{left:18px;top:18px}.logo{width:33px;height:auto}.close-pill{right:18px;top:22px}
  .tour-shell{width:calc(100vw - 36px);padding:92px 0 100px}
  .city-tabs{justify-content:flex-start;margin-bottom:30px}.city-pill{font-size:15px;padding:8px 12px}
  .availability-head{align-items:flex-start;flex-direction:column}.city-range{font-size:16px}.slot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.slot-pill{min-height:104px}
  .booking-panel{padding:96px 20px 34px;border-left:0}.panel-close{right:18px;top:22px}.tour-footer{padding:11px 18px;font-size:8px}.tour-footer span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}
@media(max-width:440px){.slot-grid{grid-template-columns:1fr}.slot-pill{min-height:92px}.availability h2{font-size:48px}.confirmation{padding:18px}}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* v6 refinements */
:root{--lab-blue:#0000f5}
.site-header{height:100px}
.logo-link{top:21px}
.tour-shell{padding-top:21px}
.city-tabs{min-height:58px;align-items:center;margin:0 auto 28px;padding:0 90px}
.availability{border-top:0;padding-top:18px}

/* true animated outer marching-ants border */
.slot-pill{border:0;padding:19px;background:#000;color:#fff}
.slot-pill::before{content:"";position:absolute;inset:0;pointer-events:none;background:
 linear-gradient(90deg,#fff 50%,transparent 50%) 0 0/10px 1px repeat-x,
 linear-gradient(90deg,#fff 50%,transparent 50%) 0 100%/10px 1px repeat-x,
 linear-gradient(0deg,#fff 50%,transparent 50%) 0 0/1px 10px repeat-y,
 linear-gradient(0deg,#fff 50%,transparent 50%) 100% 0/1px 10px repeat-y}
.slot-pill::after{display:none}
.slot-pill:hover::before{animation:marchingAntsOuter .42s linear infinite}
.slot-pill.selected{background:#fff;color:#000}
.slot-pill.selected::before{background:#fff}
@keyframes marchingAntsOuter{to{background-position:10px 0,-10px 100%,0 -10px,100% 10px}}

.confirmation{background:var(--lab-blue);color:#fff;overflow:hidden}
.confirmation-inner{width:min(760px,calc(100vw - 64px));max-width:100%;text-align:center;margin:auto}
.confirmation h2{max-width:100%;margin:0 auto;font-size:clamp(64px,12vw,168px);line-height:.8;letter-spacing:-.06em;white-space:nowrap}
.confirmation p:not(.micro-label){max-width:620px;margin:30px auto;font-size:16px;line-height:1.35}
.done-button{max-width:360px;background:transparent;color:#fff;border-color:#fff}
.done-button::before{background:#fff}.done-button:hover{color:#000}

@media(max-width:800px){
 .site-header{height:82px}.logo-link{top:12px}
 .tour-shell{padding-top:12px}
 .city-tabs{min-height:58px;justify-content:center;padding:0 52px;margin-bottom:22px}
 .confirmation-inner{width:calc(100vw - 36px)}
 .confirmation h2{font-size:clamp(52px,18vw,105px)}
}

/* v7 layout + state corrections */
/* default slots: solid white outer border; ants only exist on hover */
.slot-pill{border:1px solid #fff;padding:18px}
.slot-pill::before{opacity:0;background:
 linear-gradient(90deg,#fff 50%,transparent 50%) 0 0/10px 1px repeat-x,
 linear-gradient(90deg,#fff 50%,transparent 50%) 0 100%/10px 1px repeat-x,
 linear-gradient(0deg,#fff 50%,transparent 50%) 0 0/1px 10px repeat-y,
 linear-gradient(0deg,#fff 50%,transparent 50%) 100% 0/1px 10px repeat-y}
.slot-pill:hover{border-color:transparent}
.slot-pill:hover::before{opacity:1;animation:marchingAntsOuter .42s linear infinite}
.slot-pill.selected{border-color:#fff;background:#fff;color:#000}
.slot-pill.selected::before{opacity:0}

/* vertically center the availability block in the usable viewport */
.tour-shell{min-height:calc(100vh - 47px);padding-top:100px;padding-bottom:72px;display:flex;flex-direction:column}
.city-tabs{position:absolute;top:21px;left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 180px);margin:0;padding:0;min-height:58px}
.availability{margin:auto 0;padding:0 0 20px;width:100%}

/* confirmation / receipt: one centered composition */
.confirmation{display:none;place-items:center;padding:40px}
.confirmation.show{display:grid}
.confirmation-inner{width:min(920px,calc(100vw - 80px));display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;margin:0 auto}
.confirmation .micro-label{width:100%;margin:0 0 14px;text-align:center}
.confirmation h2{width:100%;max-width:none;margin:0;text-align:center;font-size:clamp(72px,10.5vw,158px);line-height:.82;letter-spacing:-.055em;white-space:nowrap}
.confirmation p:not(.micro-label){width:min(680px,100%);max-width:none;margin:34px auto 28px;text-align:center;font-size:16px;line-height:1.35}
.confirmation .done-button{width:min(360px,100%);margin:10px auto 0}

@media(max-width:800px){
 .tour-shell{min-height:calc(100vh - 40px);padding-top:88px;padding-bottom:64px}
 .city-tabs{top:12px;max-width:calc(100vw - 100px);min-height:58px;flex-wrap:wrap}
 .availability{margin:auto 0;padding-bottom:12px}
 .confirmation{padding:22px}
 .confirmation-inner{width:100%}
 .confirmation h2{font-size:clamp(50px,17vw,104px)}
}


/* v8 city-to-city reassembly motion */
.availability-head.city-leaving,
.slot-pill.city-leaving{opacity:0;transform:translateY(-8px);transition:opacity .16s ease,transform .16s cubic-bezier(.4,0,1,1)}
.availability-head.city-entering,
.slot-pill.city-entering{opacity:0;transform:translateY(var(--city-shift-y,0));}
.availability-head.city-entering{transition:opacity .5s cubic-bezier(.16,1,.3,1) 40ms,transform .68s cubic-bezier(.16,1,.3,1) 40ms}
.slot-pill.city-entering{transition:opacity .48s cubic-bezier(.16,1,.3,1) var(--city-delay,90ms),transform .68s cubic-bezier(.16,1,.3,1) var(--city-delay,90ms)}
.availability-head.city-entering.city-entered,
.slot-pill.city-entering.city-entered{opacity:1;transform:translateY(0)}
@media(prefers-reduced-motion:reduce){.availability-head.city-leaving,.slot-pill.city-leaving,.availability-head.city-entering,.slot-pill.city-entering{transition:none!important;transform:none!important;opacity:1!important}}


/* v9 header centering + live city conditions */
.city-tabs{
  position:fixed;
  top:21px;
  left:50%;
  right:auto;
  transform:translateX(-50%);
  width:max-content;
  max-width:none;
  z-index:60;
  justify-content:center;
}
.city-weather{
  position:fixed;
  top:38px;
  right:32px;
  z-index:60;
  display:flex;
  align-items:center;
  gap:7px;
  white-space:nowrap;
  font-family:'EurostileMNExtendedBold',Arial,sans-serif;
  font-size:10px;
  line-height:1;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.weather-sep{opacity:.5}
@media(max-width:900px){
  .city-weather{top:82px;right:18px;font-size:9px}
  .city-tabs{top:12px;max-width:calc(100vw - 90px);width:auto;min-width:0}
}
@media(max-width:620px){
  .city-weather{position:absolute;top:78px;right:18px}
  .tour-shell{padding-top:118px}
}

/* v10 weather icon */
.weather-icon{display:inline-flex;align-items:center;justify-content:center;width:15px;font-family:Arial,sans-serif;font-size:15px;line-height:1}
.tour-footer{border-top-width:1px!important}

/* v11 refinements */
.city-weather{top:50px;transform:translateY(-50%)}
.slot-pill{background:#1d1d1d}
.slot-pill:hover{background:#fff;color:#000}
.slot-pill:hover .status{color:#000}
.slot-pill.selected{background:#fff;color:#000}
.slot-pill .time{position:absolute;left:18px;bottom:18px}
.slot-pill .status{position:absolute;right:18px;bottom:18px;text-align:right}
@media(max-width:900px){.city-weather{top:41px;transform:none}}
@media(max-width:620px){.city-weather{top:78px;transform:none}}

/* v12 slot treatment — reference supplied 02 Oct */
.slot-pill{
  background:#1d1d1d;
  border:1px solid #1d1d1d;
  color:#929292;
  padding:0;
  min-height:116px;
  transition:color .22s ease,background .22s ease,border-color .22s ease;
}
.slot-pill::before,.slot-pill::after{display:none!important;animation:none!important}
.slot-pill .date{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  flex:1 1 auto;
  padding:18px;
  color:inherit;
}
.slot-pill .time,.slot-pill .status{
  position:absolute;
  bottom:0;
  height:38%;
  display:flex;
  align-items:center;
  font-family:Helvetica,Arial,sans-serif;
  font-weight:400;
  color:inherit;
  letter-spacing:0;
  border-top:1px solid #000;
}
.slot-pill .time{left:0;width:50%;padding:0 18px;font-size:14px}
.slot-pill .status{right:0;width:50%;padding:0 18px;justify-content:flex-end;text-align:right;font-size:11px}
.slot-pill:hover{
  background:#1d1d1d;
  border-color:#1d1d1d;
  color:#fff;
}
.slot-pill:hover .date,.slot-pill:hover .time,.slot-pill:hover .status{color:#fff}
.slot-pill.selected{background:#fff;border-color:#fff;color:#000}
.slot-pill.selected .date,.slot-pill.selected .time,.slot-pill.selected .status{color:#000}
.slot-pill.selected .time,.slot-pill.selected .status{border-top-color:#000}

/* v13 slot geometry, hover ants, city URLs + iridescent live data */
.slot-pill{
  position:relative;
  display:block;
  min-height:116px;
  padding:0;
  border:1px solid #1d1d1d;
  background:#1d1d1d;
  color:#929292;
  overflow:hidden;
}
.slot-pill .date{
  position:absolute;
  left:0;right:0;top:0;
  height:62%;
  padding:0 18px;
  display:flex;
  align-items:center;
  justify-content:center;
  line-height:1;
}
.slot-pill .time,.slot-pill .status{
  top:62%;
  bottom:0;
  height:auto;
  border-top:1px solid #000;
}
.slot-pill .time{gap:7px}
.slot-pill .clock-icon{font-family:Helvetica,Arial,sans-serif;font-size:.95em;line-height:1;transform:translateY(-.02em)}

/* ants are hover-only and replace the outer edge visually */
.slot-pill::before{
  content:"";
  display:block!important;
  position:absolute;
  inset:0;
  z-index:4;
  pointer-events:none;
  opacity:0;
  background:
    linear-gradient(90deg,#fff 50%,transparent 50%) 0 0/10px 1px repeat-x,
    linear-gradient(90deg,#fff 50%,transparent 50%) 0 100%/10px 1px repeat-x,
    linear-gradient(0deg,#fff 50%,transparent 50%) 0 0/1px 10px repeat-y,
    linear-gradient(0deg,#fff 50%,transparent 50%) 100% 0/1px 10px repeat-y;
}
.slot-pill:hover{border-color:transparent;color:#fff}
.slot-pill:hover::before{opacity:1;animation:marchingAntsOuter .42s linear infinite!important}
.slot-pill.selected::before{opacity:0;animation:none!important}

/* animated iridescent fill for the live city data */
.city-weather{
  background:linear-gradient(90deg,#00f5ff,#7dff00,#fff000,#ff3bd4,#6b5cff,#00f5ff);
  background-size:300% 100%;
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  animation:weatherIridescence 5.5s linear infinite;
}
.city-weather .weather-sep{opacity:.65}
@keyframes weatherIridescence{to{background-position:300% 0}}


/* v14 refinements */
/* Slot footer: darkest AA-safe grey on #1d1d1d + iridescent divider */
.slot-pill{color:#969696}
.slot-pill .time,.slot-pill .status{color:#969696;border-top:0!important}
.slot-pill .time::before,.slot-pill .status::before{
  content:"";position:absolute;top:0;height:1px;pointer-events:none;
  background:linear-gradient(90deg,#00f5ff,#7dff00,#fff000,#ff3bd4,#6b5cff,#00f5ff);
  background-size:300% 100%;animation:slotIridescence 5.5s linear infinite;
}
.slot-pill .time::before{left:0;width:200%}
.slot-pill .status::before{display:none}
@keyframes slotIridescence{to{background-position:300% 0}}

/* clearer line clock icon */
.slot-pill .clock-icon{width:14px;height:14px;display:inline-flex;flex:0 0 14px;align-items:center;justify-content:center}
.slot-pill .clock-icon svg{display:block;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* Active city particle layer */
.availability-head>div:first-child{position:relative}
#activeCity{position:relative;z-index:1}
.city-particle-canvas{position:absolute;left:0;top:0;z-index:3;pointer-events:none;overflow:visible}
#activeCity.particle-active{color:transparent}

/* Side panel: same charcoal as slots */
.booking-panel{background:#1d1d1d;color:#fff}
.panel-close{background:#1d1d1d;color:#fff;border-color:#fff}
.panel-close:hover{background:#fff;color:#1d1d1d}
#bookingForm input{background:#1d1d1d;color:#fff;border-bottom-color:#fff}
.booking-panel .book-button{background:#1d1d1d;color:#fff;border-color:#fff}
.booking-panel .book-button::before{background:#fff}
.booking-panel .book-button span{color:#fff;mix-blend-mode:difference}

/* Tiny pong game below CTA */
.panel-pong{position:relative;width:100%;height:74px;margin-top:28px;border-top:1px solid rgba(255,255,255,.22);overflow:hidden}
.pong-paddle{position:absolute;top:18px;width:7px;height:30px;background:#fff}
.pong-left{left:0;animation:pongLeft 1.8s ease-in-out infinite alternate}
.pong-right{right:0;animation:pongRight 1.55s ease-in-out infinite alternate-reverse}
.pong-ball{position:absolute;left:9px;top:31px;width:7px;height:7px;background:#fff;animation:pongBall 2.2s linear infinite}
@keyframes pongLeft{to{transform:translateY(15px)}}
@keyframes pongRight{to{transform:translateY(12px)}}
@keyframes pongBall{0%{left:9px;transform:translateY(10px)}25%{transform:translateY(-9px)}50%{left:calc(100% - 16px);transform:translateY(8px)}75%{transform:translateY(-5px)}100%{left:9px;transform:translateY(10px)}}
@media(prefers-reduced-motion:reduce){.pong-left,.pong-right,.pong-ball,.slot-pill .time::before{animation:none!important}}

/* v15 refinements */
/* 12px dot cursor */
html,body,button,a,input{cursor:none!important}
.cursor-dot{position:fixed;left:0;top:0;width:12px;height:12px;border-radius:50%;background:#fff;pointer-events:none;z-index:9999;transform:translate(-50%,-50%);mix-blend-mode:difference;will-change:left,top}

/* Iridescence belongs only to the browser-bottom divider */
.tour-footer{border-top:0!important}
.tour-footer::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,#00f5ff,#7dff00,#fff000,#ff3bd4,#6b5cff,#00f5ff);background-size:300% 100%;animation:footerIridescence 5.5s linear infinite}
@keyframes footerIridescence{to{background-position:300% 0}}
.slot-pill .time::before,.slot-pill .status::before{display:none!important;animation:none!important}
.slot-pill .time,.slot-pill .status{border-top:1px solid #000!important}

/* City title is always rendered as particles; pointer movement disperses it */
.availability-head>div:first-child{position:relative}
#activeCity{color:transparent!important;user-select:none}
.city-particle-canvas{position:absolute;left:0;top:0;z-index:3;pointer-events:none;overflow:visible}

/* Side-panel pong: no rule, moving paddles, iridescent ball */
.panel-pong{height:92px;margin-top:24px;border-top:0!important;overflow:hidden}
.pong-paddle{top:50%;width:7px;height:30px;background:#fff;margin-top:-15px}
.pong-left{animation:pongLeftV15 1.8s ease-in-out infinite alternate}
.pong-right{animation:pongRightV15 1.55s ease-in-out infinite alternate-reverse}
.pong-ball{top:50%;margin-top:-4px;width:8px;height:8px;border-radius:50%;background:linear-gradient(135deg,#00f5ff,#7dff00,#fff000,#ff3bd4,#6b5cff,#00f5ff);background-size:300% 300%;animation:pongBallV15 2.2s linear infinite,pongHueV15 1.6s linear infinite}
@keyframes pongLeftV15{from{transform:translateY(-15px)}to{transform:translateY(15px)}}
@keyframes pongRightV15{from{transform:translateY(13px)}to{transform:translateY(-13px)}}
@keyframes pongBallV15{0%{left:9px;transform:translateY(10px)}25%{transform:translateY(-18px)}50%{left:calc(100% - 17px);transform:translateY(13px)}75%{transform:translateY(-11px)}100%{left:9px;transform:translateY(10px)}}
@keyframes pongHueV15{to{background-position:300% 300%}}
@media(prefers-reduced-motion:reduce){.pong-left,.pong-right,.pong-ball,.tour-footer::before{animation:none!important}}


/* v18 refinements */
/* particles use a viewport canvas so dispersed pixels are never clipped by the title box */
.city-particle-canvas{position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important;z-index:3;pointer-events:none;overflow:visible}
.availability-head,.availability-head>div:first-child{overflow:visible!important}

/* cursor: 32px outline follows pointer, 12px solid dot eases behind */
.cursor-ring{position:fixed;left:0;top:0;width:32px;height:32px;border:1px solid #fff;border-radius:50%;pointer-events:none;z-index:9998;transform:translate(-50%,-50%);mix-blend-mode:difference;will-change:left,top}
.cursor-dot{will-change:transform;left:0!important;top:0!important}

/* browser-bottom divider back to plain white */
.tour-footer{border-top:1px solid #fff!important}
.tour-footer::before{display:none!important;animation:none!important}

/* pong removed */
.panel-pong{display:none!important}

/* v19: oversized particle field removes any title-container clipping; city particles stay white */
.city-particle-canvas{position:fixed!important;inset:auto!important;width:200vw!important;height:200vh!important;max-width:none!important;max-height:none!important;clip-path:none!important;mask:none!important;-webkit-mask:none!important;contain:none!important;overflow:visible!important;z-index:3}
#activeCity,.availability-head,.availability-head>div:first-child{clip-path:none!important;mask:none!important;-webkit-mask:none!important;contain:none!important;overflow:visible!important}

/* v20 */
.slot-pill .time{gap:8px!important}
.slot-pill .status{gap:8px!important}
.city-particle-canvas{position:fixed!important;left:0!important;top:0!important;right:auto!important;bottom:auto!important;width:100vw!important;height:100vh!important;overflow:visible!important;clip-path:none!important;mask:none!important;-webkit-mask:none!important;pointer-events:none!important}
#activeCity{color:transparent!important;overflow:visible!important}

/* v21 — full particle raster, exact micro-gaps, travelling ants */
.slot-pill .time{gap:8px!important}
.slot-pill .status{gap:8px!important}
.slot-pill .status .status-arrow{display:inline-block;margin:0!important}

/* Individual slot ants are replaced by one travelling grid overlay. */
.slot-pill::before{display:none!important;opacity:0!important;animation:none!important}
.slot-pill:hover{border-color:#1d1d1d!important}
.slot-grid{position:relative}
.slot-ant-traveller{
  position:absolute;left:0;top:0;z-index:20;pointer-events:none;opacity:0;
  border:0;
  background:
    linear-gradient(90deg,#fff 50%,transparent 50%) 0 0/10px 1px repeat-x,
    linear-gradient(90deg,#fff 50%,transparent 50%) 0 100%/10px 1px repeat-x,
    linear-gradient(0deg,#fff 50%,transparent 50%) 0 0/1px 10px repeat-y,
    linear-gradient(0deg,#fff 50%,transparent 50%) 100% 0/1px 10px repeat-y;
  transition:left .48s cubic-bezier(.16,1,.3,1),top .58s cubic-bezier(.16,1,.3,1) .035s,width .42s cubic-bezier(.16,1,.3,1),height .42s cubic-bezier(.16,1,.3,1),opacity .14s ease;
  animation:marchingAntsOuter .42s linear infinite;
  will-change:left,top,width,height;
}
.slot-ant-traveller.visible{opacity:1}

/* Particle canvas itself never inherits a clipping context. */
.city-particle-canvas{clip:auto!important;clip-path:none!important;mask:none!important;-webkit-mask:none!important;contain:none!important}

/* v22 — footer route detail + booked-state groundwork */
.availability-head .micro-label{position:relative;top:-6px}
.tour-footer{border-top:1px dotted #fff!important}
.tour-footer::before{display:none!important}
.tour-footer .footer-route{display:inline-flex;align-items:center;gap:8px}
.tour-footer .plane-icon{width:15px;height:15px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 15px}
.tour-footer .plane-icon svg{display:block;width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
.slot-pill.booked,.slot-pill:disabled{cursor:not-allowed;opacity:.48;background:#1d1d1d!important;color:#969696!important;border-color:#555!important}
.slot-pill.booked .date,.slot-pill.booked .time,.slot-pill.booked .status,.slot-pill:disabled .date,.slot-pill:disabled .time,.slot-pill:disabled .status{color:#969696!important}
.slot-pill.booked:hover,.slot-pill:disabled:hover{background:#1d1d1d!important;color:#969696!important;border-color:#555!important}
.slot-pill.booked .status,.slot-pill:disabled .status{justify-content:flex-end}


/* v23 — animated footer ants, tighter time gap, supplied flight animation */
.tour-footer{
  border-top:0!important;
}
.tour-footer::before{
  content:""!important;
  display:block!important;
  position:absolute;
  left:0;right:0;top:0;
  height:1px;
  background:repeating-linear-gradient(90deg,#fff 0 5px,transparent 5px 10px)!important;
  background-size:10px 1px!important;
  animation:footerMarch 0.42s linear infinite!important;
  pointer-events:none;
}
@keyframes footerMarch{to{background-position:10px 0}}
.slot-pill .time{gap:4px!important}
.tour-footer .plane-icon.flight-animation{
  width:25px!important;height:18px!important;flex:0 0 25px!important;
  overflow:hidden;display:inline-flex;align-items:center;justify-content:center;
}
.tour-footer .plane-icon.flight-animation object{
  display:block;width:28px;height:28px;pointer-events:none;
}
@media(prefers-reduced-motion:reduce){.tour-footer::before{animation:none!important}}


/* v24 — flight in header, T in footer, country labels, definite footer ants */
.logo-link{width:40.53px;height:58px;display:flex;align-items:center;justify-content:center;overflow:visible}
.header-flight{display:block;width:40.53px;height:58px;pointer-events:none;overflow:visible}
.tour-footer .footer-route{display:inline-flex;align-items:center;gap:8px}
.footer-t-logo{display:block;width:12px;height:17px;object-fit:contain;flex:0 0 auto}
.tour-footer::before{
  background:repeating-linear-gradient(90deg,#fff 0 4px,transparent 4px 8px)!important;
  background-size:8px 1px!important;
  animation:footerMarchV24 .36s linear infinite!important;
}
@keyframes footerMarchV24{from{background-position:0 0}to{background-position:8px 0}}
@media(max-width:800px){
  .logo-link{width:33px;height:47px}
  .header-flight{width:33px;height:47px}
  .footer-t-logo{width:10px;height:14px}
}


/* v25 — flag labels, larger header flight, centered footer route */
.logo-link{width:101.325px!important;height:145px!important;top:4px!important;left:20px!important}
.header-flight{width:101.325px!important;height:145px!important}
.country-label{display:inline-flex;align-items:center;gap:7px}
.country-flag{font-family:Arial,"Apple Color Emoji","Segoe UI Emoji",sans-serif;font-size:1.15em;line-height:1}
.tour-footer{justify-content:center!important}
.tour-footer .footer-route{position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap}
.tour-footer>span:last-child{margin-left:auto}
@media(max-width:800px){
  .logo-link{width:82.5px!important;height:117.5px!important;left:8px!important;top:0!important}
  .header-flight{width:82.5px!important;height:117.5px!important}
  .tour-footer .footer-route{position:static;transform:none;margin:0 auto;max-width:calc(100vw - 80px);overflow:hidden;text-overflow:ellipsis}
  .tour-footer>span:last-child{position:absolute;right:18px}
}
\n\n/* v26 — 2× header flight, true travelling footer ants, left-anchored T */
/* Original logo footprint: 40.53 × 58px. Plane = exactly 2× and shares the pills' vertical centre (~41px). */
.logo-link{
  width:81.06px!important;
  height:116px!important;
  left:20px!important;
  top:41px!important;
  transform:translateY(-50%)!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
.header-flight{width:81.06px!important;height:116px!important;display:block!important}

/* One-pixel travelling dash strip. Oversized strip physically translates, so motion is visible. */
.tour-footer{position:fixed!important;border-top:0!important;overflow:hidden}
.tour-footer::before{
  content:""!important;
  display:block!important;
  position:absolute!important;
  z-index:2!important;
  left:-12px!important;
  right:auto!important;
  top:0!important;
  width:calc(100% + 24px)!important;
  height:1px!important;
  background:repeating-linear-gradient(90deg,#fff 0 5px,transparent 5px 10px)!important;
  background-size:auto!important;
  background-position:0 0!important;
  animation:footerAntTravel .48s linear infinite!important;
  will-change:transform!important;
  pointer-events:none!important;
}
@keyframes footerAntTravel{from{transform:translateX(0)}to{transform:translateX(10px)}}

/* T is independent and left aligned; route remains mathematically centred. */
.tour-footer .footer-t-logo{
  position:absolute!important;
  left:32px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  width:12px!important;
  height:17px!important;
  margin:0!important;
}
.tour-footer .footer-route{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  transform:translate(-50%,-50%)!important;
  margin:0!important;
  white-space:nowrap!important;
}
.tour-footer>span:last-child{position:absolute!important;right:32px!important;margin:0!important}

@media(max-width:800px){
  .logo-link{width:66px!important;height:94px!important;left:8px!important;top:35px!important;transform:translateY(-50%)!important}
  .header-flight{width:66px!important;height:94px!important}
  .tour-footer .footer-t-logo{left:18px!important;width:10px!important;height:14px!important}
  .tour-footer .footer-route{left:50%!important;top:50%!important;transform:translate(-50%,-50%)!important;position:absolute!important;margin:0!important;max-width:calc(100vw - 120px)!important}
  .tour-footer>span:last-child{right:18px!important}
}


/* v27 — cropped flight SVG + vertically centered footer contents */
.logo-link{
  top:0!important;
  height:100%!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
.header-flight{
  display:block!important;
  width:81.06px!important;
  height:81.06px!important;
  overflow:visible!important;
}
.tour-footer{
  min-height:0!important;
  padding:16px 32px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
}
.tour-footer .footer-t-logo{
  top:50%!important;
  transform:translateY(-50%)!important;
}
.tour-footer .footer-route{
  top:50%!important;
  transform:translate(-50%,-50%)!important;
  display:flex!important;
  align-items:center!important;
}
.tour-footer>span:last-child{
  top:50%!important;
  transform:translateY(-50%)!important;
}
@media(max-width:800px){
  .header-flight{width:66px!important;height:66px!important}
  .tour-footer{padding:16px 18px!important}
}


/* v28 — 32px footer padding + T centered inside flight */
.tour-footer{padding:32px 32px!important;}
.logo-link{position:absolute!important;}
.header-t-logo{
  position:absolute;
  left:50%;top:50%;
  transform:translate(-50%,-50%);
  width:13.8px;
  height:19.55px;
  object-fit:contain;
  z-index:2;
  pointer-events:none;
}
@media(max-width:800px){
  .tour-footer{padding:32px 18px!important;}
  .header-t-logo{width:11.5px;height:16.1px;}
}

/* v29 — mobile-only layout refinement. Desktop intentionally unchanged. */
@media (max-width:800px){
  /* Native touch behaviour: remove custom desktop cursor completely. */
  html,body,button,a,input{cursor:auto!important}
  .cursor-ring,.cursor-dot{display:none!important}

  /* Compact mobile header: flight/T left, live city data right, same vertical axis. */
  .site-header{height:86px!important;position:fixed!important;inset:0 0 auto 0!important;z-index:60!important;pointer-events:none!important}
  .logo-link{
    left:14px!important;top:0!important;width:72px!important;height:86px!important;
    transform:none!important;display:flex!important;align-items:center!important;justify-content:center!important;
    pointer-events:auto!important;
  }
  .header-flight{width:72px!important;height:72px!important}
  .header-t-logo{width:11.5px!important;height:16.1px!important}
  .city-weather{
    position:fixed!important;right:14px!important;top:43px!important;left:auto!important;
    transform:translateY(-50%)!important;margin:0!important;
    display:flex!important;align-items:center!important;justify-content:flex-end!important;
    white-space:nowrap!important;font-size:9px!important;z-index:61!important;
  }

  /* One-row swipeable city navigation, below the compact header. */
  .city-tabs{
    position:fixed!important;left:0!important;right:0!important;top:86px!important;
    transform:none!important;width:100%!important;max-width:none!important;min-width:0!important;
    min-height:0!important;margin:0!important;padding:10px 14px 12px!important;
    display:flex!important;justify-content:flex-start!important;align-items:center!important;
    flex-wrap:nowrap!important;gap:8px!important;overflow-x:auto!important;overflow-y:hidden!important;
    -webkit-overflow-scrolling:touch!important;scrollbar-width:none!important;z-index:59!important;
    background:#000!important;
  }
  .city-tabs::-webkit-scrollbar{display:none!important}
  .city-pill{flex:0 0 auto!important;white-space:nowrap!important}

  /* Make room for the two fixed mobile header rows. */
  .tour-shell{padding-top:164px!important;padding-bottom:34px!important}

  /* Mobile booking sheet: rise from the bottom, and ease back down on close. */
  .booking-layer{transition:visibility 0s linear .55s!important}
  .booking-layer.open{transition-delay:0s!important}
  .booking-backdrop{backdrop-filter:blur(7px)!important}
  .booking-panel{
    left:0!important;right:0!important;top:auto!important;bottom:0!important;
    width:100%!important;height:min(82dvh,760px)!important;max-height:calc(100dvh - 28px)!important;
    border-left:0!important;border-top:1px solid #fff!important;
    border-radius:18px 18px 0 0!important;padding:74px 20px 28px!important;
    transform:translateY(102%)!important;
    transition:transform .55s cubic-bezier(.22,1,.36,1)!important;
    will-change:transform!important;
  }
  .booking-layer.open .booking-panel{transform:translateY(0)!important}
  .panel-close{position:absolute!important;right:18px!important;top:18px!important}

  /* Footer is desktop-only. */
  .tour-footer{display:none!important}
}

/* v30 — mobile bottom nav, auto-hiding top bar, full-height booking sheet */
@media (max-width:800px){
  html,body{max-width:100%;overflow-x:hidden!important}
  body{position:relative;width:100%;}
  .tour-shell,.availability,.availability-head,.slot-grid{max-width:100%!important;overflow-x:visible!important}

  /* Top bar owns its black background and hides/reveals with scroll direction. */
  .site-header{
    background:#000!important;
    transform:translateY(0)!important;
    transition:transform .48s cubic-bezier(.22,1,.36,1)!important;
    will-change:transform!important;
  }
  .site-header.mobile-hidden{transform:translateY(-105%)!important}
  .city-weather{transition:transform .48s cubic-bezier(.22,1,.36,1),opacity .32s ease!important}
  .site-header.mobile-hidden ~ .city-weather{transform:translateY(calc(-50% - 90px))!important;opacity:0!important}

  /* Bottom city rail: only horizontally scrollable area on the page. */
  .city-tabs{
    top:auto!important;bottom:0!important;left:0!important;right:0!important;
    height:auto!important;padding:12px 22px max(12px,env(safe-area-inset-bottom))!important;
    background:#000!important;border-top:1px solid rgba(255,255,255,.22)!important;
    overflow-x:auto!important;overflow-y:hidden!important;overscroll-behavior-x:contain!important;
    touch-action:pan-x!important;scroll-snap-type:x proximity!important;
    z-index:90!important;
  }
  .city-pill{scroll-snap-align:center!important}
  .city-tabs::before,.city-tabs::after{
    content:"";position:sticky;top:0;bottom:0;width:28px;min-width:28px;align-self:stretch;
    z-index:4;pointer-events:none;opacity:1;transition:opacity .2s ease;
  }
  .city-tabs::before{left:-22px;margin-left:-22px;background:linear-gradient(90deg,#000 15%,rgba(0,0,0,0));}
  .city-tabs::after{right:-22px;margin-right:-22px;background:linear-gradient(270deg,#000 15%,rgba(0,0,0,0));}
  .city-tabs.at-start::before{opacity:0}
  .city-tabs.at-end::after{opacity:0}

  /* Space for fixed bottom rail; no horizontal page pan. */
  .tour-shell{padding-top:112px!important;padding-bottom:96px!important;width:calc(100vw - 28px)!important;}

  /* Booking sheet reaches to 16px below top, no white edge/shadow. */
  .booking-panel{
    height:auto!important;max-height:none!important;top:16px!important;bottom:0!important;
    border:0!important;border-radius:18px 18px 0 0!important;box-shadow:none!important;
    transform:translateY(calc(100% + 16px))!important;
  }
  .booking-layer.open .booking-panel{transform:translateY(0)!important}
}

/* v31 — mobile flow/nav refinements + blue slot hover */
.slot-pill:hover{background:#0000F5!important;color:#fff!important}
.slot-pill:hover .date,.slot-pill:hover .time,.slot-pill:hover .status{color:#fff!important}

@media (max-width:800px){
  /* City heading is normal text on mobile and remains in document flow. */
  .city-particle-canvas{display:none!important}
  #activeCity,#activeCity.particle-active{
    color:#fff!important;
    font-size:clamp(38px,12.5vw,62px)!important;
    line-height:.9!important;
    letter-spacing:-.045em!important;
    white-space:nowrap!important;
    max-width:calc(100vw - 32px)!important;
    overflow:visible!important;
  }
  .availability-head{position:relative!important;transform:none!important;opacity:1!important}
  .availability-head>div:first-child{width:100%!important;min-width:0!important}
  .country-label{display:flex!important;align-items:center!important;gap:8px!important;margin-bottom:14px!important}
  .city-range{font-size:12px!important;line-height:1!important;margin-top:10px!important}

  /* Plane and all dynamic data hide/reveal as one top bar. */
  .city-weather{
    transition:transform .48s cubic-bezier(.22,1,.36,1),opacity .32s ease!important;
  }
  .city-weather.mobile-hidden{
    transform:translateY(calc(-50% - 90px))!important;
    opacity:0!important;
    pointer-events:none!important;
  }

  /* Bottom rail: 16px inset, 44px minimum pills, soft fade into page. */
  .city-tabs{
    padding:16px 16px max(16px,env(safe-area-inset-bottom))!important;
    gap:8px!important;
    border:0!important;
    justify-content:flex-start!important;
    scroll-padding-left:16px!important;
    box-shadow:0 -22px 28px rgba(0,0,0,.92)!important;
  }
  .city-pill{
    min-height:44px!important;
    height:44px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    padding:0 16px!important;
    scroll-snap-align:start!important;
  }
  .city-tabs::before{left:-16px!important;margin-left:-16px!important}
  .city-tabs::after{right:-16px!important;margin-right:-16px!important}

  .tour-shell{padding-bottom:112px!important}
}

/* v32 — mobile rail fades, smaller city labels, staggered city transitions */
@media (max-width:800px){
  /* No left edge fade until the user has actually moved the rail. */
  .city-tabs::before{opacity:0!important;transition:opacity .24s ease!important}
  .city-tabs.has-left-fade::before{opacity:1!important}
  .city-tabs.at-end::after{opacity:0!important}

  /* Keep every mobile city name comfortably inside the viewport. */
  #activeCity,#activeCity.particle-active{
    font-size:clamp(30px,9.6vw,48px)!important;
    line-height:.92!important;
    letter-spacing:-.04em!important;
    max-width:calc(100vw - 40px)!important;
  }

  /* Re-enable the desktop-style stagger on mobile without detaching the
     headline from normal document flow. */
  .availability-head.city-leaving{
    opacity:0!important;
    transform:translateY(-7px)!important;
    transition:opacity .16s ease,transform .2s cubic-bezier(.4,0,1,1)!important;
  }
  .slot-pill.city-leaving{
    opacity:0!important;
    transform:translateY(-7px)!important;
    transition:opacity .16s ease var(--leave-delay,0ms),transform .2s cubic-bezier(.4,0,1,1) var(--leave-delay,0ms)!important;
  }
  .availability-head.city-entering{
    opacity:0!important;
    transform:translateY(var(--city-shift-y,10px))!important;
    transition:opacity .44s cubic-bezier(.16,1,.3,1) 35ms,transform .58s cubic-bezier(.16,1,.3,1) 35ms!important;
  }
  .slot-pill.city-entering{
    opacity:0!important;
    transform:translateY(var(--city-shift-y,10px))!important;
    transition:opacity .42s cubic-bezier(.16,1,.3,1) var(--city-delay,90ms),transform .6s cubic-bezier(.16,1,.3,1) var(--city-delay,90ms)!important;
  }
  .availability-head.city-entering.city-entered,
  .slot-pill.city-entering.city-entered{
    opacity:1!important;
    transform:translateY(0)!important;
  }
}

/* v33 — mobile rail fade state + animated ants on touched/selected slots */
@media (max-width:800px){
  /* At the untouched start position there is literally no left gradient paint. */
  .city-tabs::before{
    opacity:0!important;
    background:none!important;
  }
  .city-tabs.has-left-fade::before{
    opacity:1!important;
    background:linear-gradient(90deg,#000 15%,rgba(0,0,0,0))!important;
  }

  /* Match desktop marching ants on the slot that was touched/selected. */
  .slot-pill.selected::before{
    content:""!important;
    display:block!important;
    position:absolute!important;
    inset:-1px!important;
    z-index:3!important;
    pointer-events:none!important;
    opacity:1!important;
    background:
      linear-gradient(90deg,#fff 50%,transparent 50%) 0 0/10px 1px repeat-x,
      linear-gradient(90deg,#fff 50%,transparent 50%) 0 100%/10px 1px repeat-x,
      linear-gradient(0deg,#fff 50%,transparent 50%) 0 0/1px 10px repeat-y,
      linear-gradient(0deg,#fff 50%,transparent 50%) 100% 0/1px 10px repeat-y;
    animation:marchingAntsOuter .42s linear infinite!important;
  }
}

/* v34 — rail fade, country spacing, bottom-anchored booking CTA */
/* Bring country label 8px closer to the city headline on desktop + mobile. */
.country-label{
  position:relative!important;
  top:8px!important;
}

/* Keep the booking CTA at the bottom of the panel on every viewport. */
.booking-panel{
  display:flex!important;
  flex-direction:column!important;
}
#bookingForm{
  display:flex!important;
  flex:1 0 auto!important;
  min-height:0!important;
  flex-direction:column!important;
  gap:18px!important;
}
#bookingForm .book-button{
  margin-top:auto!important;
  flex:0 0 auto!important;
}

@media (max-width:800px){
  /* Left rail fade removed completely. Right fade remains state-aware. */
  .city-tabs::before,
  .city-tabs.has-left-fade::before,
  .city-tabs.at-start::before{
    content:none!important;
    display:none!important;
    background:none!important;
    opacity:0!important;
  }

  /* Previous mobile margin placed the label too far from the headline. */
  .country-label{
    margin-bottom:6px!important;
  }
}

/* v35 — country flag/label spacing */
.country-label{
  gap:3px!important;
}
@media (max-width:800px){
  .country-flag{
    position:relative!important;
    top:-4px!important;
  }
}
\n\n/* v36 — receipt containment, second receipt CTA, country alignment, mobile ants */
.confirmation-inner{
  box-sizing:border-box!important;
  max-width:100%!important;
  overflow:visible!important;
}
.confirmation h2{
  box-sizing:border-box!important;
  max-width:100%!important;
}
.confirmation .tokonoma-button{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:min(360px,100%)!important;
  margin:10px auto 0!important;
  padding:17px 20px!important;
  text-decoration:none!important;
  font-size:18px!important;
}
.country-label{align-items:center!important;}
.country-flag,
.country-label #countryLabel{position:relative!important;top:0!important;line-height:1!important;}

@media (max-width:800px){
  .confirmation{
    padding:24px 18px!important;
    overflow:hidden!important;
  }
  .confirmation-inner{
    width:100%!important;
    max-width:100%!important;
    padding:0!important;
    margin:auto!important;
    align-items:center!important;
    text-align:center!important;
  }
  .confirmation .micro-label,
  .confirmation p:not(.micro-label){
    width:100%!important;
    max-width:100%!important;
    box-sizing:border-box!important;
    text-align:center!important;
    overflow-wrap:anywhere!important;
  }
  .confirmation h2{
    width:100%!important;
    max-width:100%!important;
    font-size:clamp(46px,15vw,82px)!important;
    line-height:.86!important;
    letter-spacing:-.045em!important;
    white-space:nowrap!important;
    text-align:center!important;
  }
  .confirmation .done-button,
  .confirmation .tokonoma-button{
    width:100%!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }

  /* Flag stays 4px higher as requested previously; label is lifted to its visual baseline. */
  .country-flag{top:-4px!important;}
  .country-label #countryLabel{top:-4px!important;}

  /* Do not use an !important background shorthand here: it freezes background-position
     and prevents CSS animations from moving the marching-ant pattern on touch. */
  .slot-pill.selected::before{
    content:""!important;
    display:block!important;
    position:absolute!important;
    inset:-1px!important;
    z-index:3!important;
    pointer-events:none!important;
    opacity:1!important;
    background-image:
      linear-gradient(90deg,#fff 50%,transparent 50%),
      linear-gradient(90deg,#fff 50%,transparent 50%),
      linear-gradient(0deg,#fff 50%,transparent 50%),
      linear-gradient(0deg,#fff 50%,transparent 50%)!important;
    background-size:10px 1px,10px 1px,1px 10px,1px 10px!important;
    background-repeat:repeat-x,repeat-x,repeat-y,repeat-y!important;
    background-position:0 0,0 100%,0 0,100% 0;
    animation:mobileMarchingAnts .42s linear infinite!important;
  }
}
@keyframes mobileMarchingAnts{
  to{background-position:10px 0,-10px 100%,0 -10px,100% 10px}
}


/* v37 — mobile range cleanup + date-aware desktop footer */
.tour-footer,
.tour-footer .footer-route,
.tour-footer .footer-city,
.tour-footer .footer-arrow,
.tour-footer > span:last-child{
  color:#767676!important;
}
.tour-footer .footer-route{
  gap:0!important;
}
.tour-footer .footer-city.is-current-tour-period{
  color:transparent!important;
  background:linear-gradient(90deg,#00f5ff,#7dff00,#fff000,#ff3bd4,#6b5cff,#00f5ff);
  background-size:300% 100%;
  background-clip:text;
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  animation:currentTourIridescence 5.5s linear infinite;
}
@keyframes currentTourIridescence{to{background-position:300% 0}}
@media (max-width:800px){
  .city-range{display:none!important;}
}
@media(prefers-reduced-motion:reduce){
  .tour-footer .footer-city.is-current-tour-period{animation:none!important;}
}

/* v41 — booked slash + receipt polish */
.slot-pill.booked .booked-slash,
.slot-pill:disabled .booked-slash{
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;
  overflow:hidden;
}
.slot-pill.booked .booked-slash::after,
.slot-pill:disabled .booked-slash::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:142%;
  height:1px;
  background:#969696;
  transform:translate(-50%,-50%) rotate(-16deg);
  transform-origin:center;
}
.confirmation #confirmationCopy br{display:block;content:"";}
\n\n/* v42 — abbreviated city tabs + booked hover diagonal marching ants */
/* No static slash on booked slots. The diagonal appears only with the hover/touch ants. */
.slot-pill.booked .booked-slash,
.slot-pill:disabled .booked-slash{display:none!important;}

.slot-ant-traveller .slot-ant-diagonal{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  overflow:visible;
  pointer-events:none;
  display:none;
}
.slot-ant-traveller.booked-target .slot-ant-diagonal{display:block;}
.slot-ant-traveller .slot-ant-diagonal line{
  stroke:#fff;
  stroke-width:1;
  vector-effect:non-scaling-stroke;
  stroke-dasharray:5 5;
  stroke-linecap:butt;
  animation:bookedDiagonalMarch .42s linear infinite;
}
@keyframes bookedDiagonalMarch{to{stroke-dashoffset:-10}}

/* Mobile/touch: booked slots get the same animated box + exact corner-to-corner diagonal. */
@media (max-width:800px){
  .slot-pill.booked:hover::after,
  .slot-pill.booked:active::after{
    content:""!important;
    position:absolute!important;
    inset:0!important;
    z-index:4!important;
    pointer-events:none!important;
    opacity:1!important;
    background:repeating-linear-gradient(
      to bottom left,
      #fff 0 5px,
      transparent 5px 10px
    )!important;
    clip-path:polygon(99.85% 0,100% 0,0 100%,0 99.65%);
    animation:bookedDiagonalTouch .42s linear infinite!important;
  }
}
@keyframes bookedDiagonalTouch{to{background-position:-10px 10px}}

/* v43 — system-aware favicons + eyes.gif footer mark */
.tour-footer .footer-t-logo.footer-eyes{
  width:32px!important;
  height:auto!important;
  object-fit:contain!important;
}


/* v44 — larger footer eyes + restore centered route */
.tour-footer .footer-t-logo.footer-eyes{
  width:48px!important;
  height:auto!important;
  top:50%!important;
  transform:translateY(-50%)!important;
}
.tour-footer .footer-route{
  display:inline-flex!important;
  visibility:visible!important;
  opacity:1!important;
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  transform:translate(-50%,-50%)!important;
  align-items:center!important;
  white-space:nowrap!important;
  z-index:3!important;
}
@media(max-width:800px){
  .tour-footer .footer-t-logo.footer-eyes{width:48px!important;}
}

/* v45 — desktop slot date scroll-on-hover */
@media (hover:hover) and (pointer:fine) and (min-width:801px){
  .slot-pill .date{
    overflow:hidden;
    display:block;
    padding:0!important;
  }
  .slot-pill .date-scroll{
    width:100%;
    height:200%;
    display:flex;
    flex-direction:column;
    transform:translateY(0);
    transition:transform .52s cubic-bezier(.22,.78,.18,1);
    will-change:transform;
  }
  .slot-pill .date-scroll > span{
    width:100%;
    height:50%;
    flex:0 0 50%;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:0 18px;
    box-sizing:border-box;
  }
  .slot-pill:hover .date-scroll{
    transform:translateY(-50%);
  }
}

/* v48 — mobile: date hover duplicate is desktop-only */
@media (max-width:800px), (hover:none), (pointer:coarse){
  .slot-pill .date-scroll{display:block!important;height:auto!important;transform:none!important;}
  .slot-pill .date-scroll > span{display:block!important;height:auto!important;}
  .slot-pill .date-scroll > span[aria-hidden="true"]{display:none!important;}
}

/* v49 — mobile city nav: centered pills, no edge gradients */
@media (max-width:800px){
  .city-tabs{
    justify-content:center!important;
    scroll-padding-left:0!important;
  }
  .city-tabs::before,
  .city-tabs::after,
  .city-tabs.has-left-fade::before,
  .city-tabs.at-start::before,
  .city-tabs.at-end::after{
    content:none!important;
    display:none!important;
    background:none!important;
    opacity:0!important;
  }
}


/* v50 — comments field + footer route spacing */
#bookingForm textarea{
  width:100%;
  min-height:82px;
  resize:vertical;
  border:0;
  border-bottom:1px solid #fff;
  border-radius:0;
  padding:12px 0 10px;
  background:#1d1d1d;
  color:#fff;
  outline:none;
  font-family:Arial,sans-serif;
  font-size:20px;
  font-weight:400;
}
#bookingForm textarea:focus{border-bottom-width:3px}
.tour-footer .footer-route{gap:.35em!important;}

/* v53 — desktop slot footer directional hover */
@media (hover:hover) and (pointer:fine) and (min-width:801px){
  .slot-pill .time,
  .slot-pill .status{
    transition:transform .52s cubic-bezier(.22,.78,.18,1);
    will-change:transform;
  }
  .slot-pill .clock-icon,
  .slot-pill .status-arrow{
    transition:transform .52s cubic-bezier(.22,.78,.18,1), opacity .34s ease;
    will-change:transform,opacity;
  }
  .slot-pill:hover .time{transform:translateX(-21px);}
  .slot-pill:hover .clock-icon{transform:translateX(-30px);opacity:0;}
  .slot-pill:hover .status{transform:translateX(21px);}
  .slot-pill:hover .status-arrow{transform:translateX(30px);opacity:0;}
}

/* v54 — keep slot divider fixed while footer content slides */
@media (hover:hover) and (pointer:fine) and (min-width:801px){
  .slot-pill::after{
    content:"";
    position:absolute;
    left:0;
    right:0;
    top:62%;
    height:1px;
    background:#000;
    z-index:2;
    pointer-events:none;
  }
  .slot-pill .time,
  .slot-pill .status{
    border-top:0!important;
  }
}


/* v55 — fixed slot divider independent from animated footer content */
.slot-pill .time::before,
.slot-pill .status::before{display:none!important;}
.slot-pill .slot-divider{
  position:absolute;
  left:0;
  right:0;
  top:62%;
  height:1px;
  background:#000;
  z-index:2;
  pointer-events:none;
}
/* v54 used ::after for the divider, but ::after belongs to marching ants */
@media (hover:hover) and (pointer:fine) and (min-width:801px){
  .slot-pill::after{
    top:0;
    height:auto;
    background:none;
    z-index:auto;
  }
}

/* v56 — booked slots keep normal footer padding on hover */
@media (hover:hover) and (pointer:fine) and (min-width:801px){
  .slot-pill.booked:hover .time,
  .slot-pill:disabled:hover .time,
  .slot-pill.booked:hover .status,
  .slot-pill:disabled:hover .status{
    transform:translateX(0)!important;
  }
  .slot-pill.booked:hover .clock-icon,
  .slot-pill:disabled:hover .clock-icon,
  .slot-pill.booked:hover .status-arrow,
  .slot-pill:disabled:hover .status-arrow{
    transform:translateX(0)!important;
    opacity:1!important;
  }
}


/* v57 — optical date numeral kerning */
.slot-pill .date-kern{display:inline-block;}
.slot-pill .date-kern-1{margin-left:-4px;}
.slot-pill .date-kern-21{margin-left:-2px;}

/* v60 — Tokonoma header mark hover */
@media (hover:hover) and (pointer:fine){
  .logo-link .header-flight{
    opacity:1;
    transition:opacity .42s cubic-bezier(.22,1,.36,1);
  }
  .logo-link .header-t-logo{
    transform:translate(-50%,-50%) scale(1);
    transform-origin:50% 50%;
    transition:transform .52s cubic-bezier(.22,1,.36,1);
  }
  .logo-link:hover .header-flight{
    opacity:0;
  }
  .logo-link:hover .header-t-logo{
    transform:translate(-50%,-50%) scale(2.5);
  }
}

/* v63 — mobile 20px content inset; restore tour header + bottom fade */
@media (max-width:800px){
  /* Slots/index content: 20px from both viewport edges. */
  .tour-shell{
    width:calc(100vw - 40px)!important;
    max-width:calc(100vw - 40px)!important;
  }
  #activeCity,#activeCity.particle-active{
    max-width:calc(100vw - 40px)!important;
  }

  /* Restore the original tour plane/T header proportions.
     Only the outer horizontal inset changes to 20px. */
  .site-header{height:86px!important;}
  .logo-link{
    left:20px!important;top:0!important;width:72px!important;height:86px!important;
    padding:0!important;border:0!important;border-radius:0!important;overflow:visible!important;
    transform:none!important;display:flex!important;align-items:center!important;justify-content:center!important;
    pointer-events:auto!important;
  }
  .logo-link .header-flight{
    position:static!important;inset:auto!important;width:72px!important;height:72px!important;
    object-fit:contain!important;
  }
  .logo-link .header-t-logo{
    left:50%!important;top:50%!important;width:11.5px!important;height:16.1px!important;
    object-fit:contain!important;transform:translate(-50%,-50%)!important;
  }
  .city-weather{right:20px!important;}

  /* Keep the v62 bottom-nav sizing/layout, but restore the previous soft fade. */
  .city-tabs{
    left:0!important;right:0!important;bottom:0!important;
    min-height:64px!important;
    padding:10px 20px max(10px,env(safe-area-inset-bottom))!important;
    gap:10px!important;justify-content:center!important;align-items:center!important;
    border:0!important;
    box-shadow:0 -22px 28px rgba(0,0,0,.92)!important;
    scroll-padding-inline:20px!important;
  }
  .city-pill{
    height:44px!important;min-height:44px!important;
    padding:12px 16px 11px!important;font-size:14px!important;line-height:1!important;
  }
}

/* v65 — mobile selected-slot ants: expose the moving gaps */
@media (max-width:800px){
  .slot-pill.selected{
    border-color:transparent!important;
  }
  .slot-pill.selected::before{
    opacity:1!important;
    background-position:0 0,0 100%,0 0,100% 0;
    animation:mobileMarchingAnts .42s linear infinite!important;
  }
}


/* v66 — mobile touch uses the same continuously moving ants as desktop hover */
@media (max-width:800px), (hover:none) and (pointer:coarse){
  .slot-pill:not(.booked):active{
    border-color:transparent!important;
  }
  .slot-pill:not(.booked):active::before,
  .slot-pill.selected::before{
    content:""!important;
    display:block!important;
    position:absolute!important;
    inset:-1px!important;
    z-index:30!important;
    pointer-events:none!important;
    opacity:1!important;
    background-image:
      linear-gradient(90deg,#fff 50%,transparent 50%),
      linear-gradient(90deg,#fff 50%,transparent 50%),
      linear-gradient(0deg,#fff 50%,transparent 50%),
      linear-gradient(0deg,#fff 50%,transparent 50%)!important;
    background-size:10px 1px,10px 1px,1px 10px,1px 10px!important;
    background-repeat:repeat-x,repeat-x,repeat-y,repeat-y!important;
    background-position:0 0,0 100%,0 0,100% 0;
    animation:v66MobileAnts .32s linear infinite!important;
  }
}
@keyframes v66MobileAnts{
  from{background-position:0 0,0 100%,0 0,100% 0}
  to{background-position:10px 0,-10px 100%,0 -10px,100% 10px}
}


/* v67 — explicit mobile touch ants, independent of :hover/:active */
@media (max-width:800px), (hover:none) and (pointer:coarse){
  .slot-pill.touch-ants:not(.booked){
    border-color:transparent!important;
  }
  .slot-pill.touch-ants:not(.booked)::before{
    content:""!important;
    display:block!important;
    position:absolute!important;
    inset:-1px!important;
    z-index:40!important;
    pointer-events:none!important;
    opacity:1!important;
    background:
      linear-gradient(90deg,#fff 0 5px,transparent 5px 10px) 0 0/10px 2px repeat-x,
      linear-gradient(90deg,#fff 0 5px,transparent 5px 10px) 0 100%/10px 2px repeat-x,
      linear-gradient(0deg,#fff 0 5px,transparent 5px 10px) 0 0/2px 10px repeat-y,
      linear-gradient(0deg,#fff 0 5px,transparent 5px 10px) 100% 0/2px 10px repeat-y!important;
    animation:v67TouchAnts .34s linear infinite!important;
    will-change:background-position!important;
  }
}
@keyframes v67TouchAnts{
  0%{background-position:0 0,0 100%,0 0,100% 0}
  100%{background-position:10px 0,-10px 100%,0 -10px,100% 10px}
}


/* v68 — smoother desktop city-to-city stagger */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .availability-head.city-leaving{
    opacity:0!important;
    transform:translateY(-5px)!important;
    transition:
      opacity .30s cubic-bezier(.4,0,.2,1),
      transform .38s cubic-bezier(.4,0,.2,1)!important;
  }
  .slot-pill.city-leaving{
    opacity:0!important;
    transform:translateY(-5px)!important;
    transition:
      opacity .30s cubic-bezier(.4,0,.2,1) var(--leave-delay,0ms),
      transform .40s cubic-bezier(.4,0,.2,1) var(--leave-delay,0ms)!important;
  }
  .availability-head.city-entering{
    opacity:0!important;
    transform:translateY(var(--city-shift-y,8px))!important;
    transition:
      opacity .62s cubic-bezier(.16,1,.3,1) 55ms,
      transform .78s cubic-bezier(.16,1,.3,1) 55ms!important;
  }
  .slot-pill.city-entering{
    opacity:0!important;
    transform:translateY(var(--city-shift-y,8px))!important;
    transition:
      opacity .58s cubic-bezier(.16,1,.3,1) var(--city-delay,110ms),
      transform .80s cubic-bezier(.16,1,.3,1) var(--city-delay,110ms)!important;
  }
  .availability-head.city-entering.city-entered,
  .slot-pill.city-entering.city-entered{
    opacity:1!important;
    transform:translateY(0)!important;
  }
}


/* v69 — desktop city transition: stagger the anatomy inside every slot */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .slot-pill.city-leaving .date,
  .slot-pill.city-leaving .slot-divider,
  .slot-pill.city-leaving .time,
  .slot-pill.city-leaving .status{
    transition:
      opacity .38s cubic-bezier(.4,0,.2,1),
      transform .52s cubic-bezier(.4,0,.2,1)!important;
  }
  .slot-pill.city-leaving .date{
    opacity:0; transform:translateY(-9px);
    transition-delay:calc(var(--leave-delay,0ms) + 0ms)!important;
  }
  .slot-pill.city-leaving .slot-divider{
    opacity:0; transform:scaleX(.72);
    transform-origin:left center;
    transition-delay:calc(var(--leave-delay,0ms) + 34ms)!important;
  }
  .slot-pill.city-leaving .time{
    opacity:0; transform:translateX(-10px);
    transition-delay:calc(var(--leave-delay,0ms) + 68ms)!important;
  }
  .slot-pill.city-leaving .status{
    opacity:0; transform:translateX(10px);
    transition-delay:calc(var(--leave-delay,0ms) + 102ms)!important;
  }

  .slot-pill.city-entering .date,
  .slot-pill.city-entering .slot-divider,
  .slot-pill.city-entering .time,
  .slot-pill.city-entering .status{
    opacity:0;
    transition:
      opacity .62s cubic-bezier(.16,1,.3,1),
      transform .82s cubic-bezier(.16,1,.3,1)!important;
  }
  .slot-pill.city-entering .date{
    transform:translateY(12px);
    transition-delay:calc(var(--city-delay,0ms) + 0ms)!important;
  }
  .slot-pill.city-entering .slot-divider{
    transform:scaleX(.58);
    transform-origin:left center;
    transition-delay:calc(var(--city-delay,0ms) + 55ms)!important;
  }
  .slot-pill.city-entering .time{
    transform:translateX(-13px);
    transition-delay:calc(var(--city-delay,0ms) + 110ms)!important;
  }
  .slot-pill.city-entering .status{
    transform:translateX(13px);
    transition-delay:calc(var(--city-delay,0ms) + 165ms)!important;
  }
  .slot-pill.city-entering.city-entered .date,
  .slot-pill.city-entering.city-entered .slot-divider,
  .slot-pill.city-entering.city-entered .time,
  .slot-pill.city-entering.city-entered .status{
    opacity:1!important;
    transform:translate(0,0) scaleX(1)!important;
  }

  /* Let the pill itself move much less; its contents now carry the transition. */
  .slot-pill.city-leaving{
    transform:translateY(-2px)!important;
    transition:
      opacity .46s cubic-bezier(.4,0,.2,1) var(--leave-delay,0ms),
      transform .58s cubic-bezier(.4,0,.2,1) var(--leave-delay,0ms)!important;
  }
  .slot-pill.city-entering{
    transform:translateY(min(8px,var(--city-shift-y,8px)))!important;
    transition:
      opacity .68s cubic-bezier(.16,1,.3,1) var(--city-delay,0ms),
      transform .92s cubic-bezier(.16,1,.3,1) var(--city-delay,0ms)!important;
  }
  .slot-pill.city-entering.city-entered{
    transform:translateY(0)!important;
  }
}

/* v70 — never flash slots as available before DB availability is known */
.slot-grid.availability-loading{
  visibility:hidden!important;
}


/* v71 — booked slots never participate in the city entrance reveal */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .slot-pill.booked.city-entering,
  .slot-pill:disabled.city-entering,
  .slot-pill.booked.city-entering.city-entered,
  .slot-pill:disabled.city-entering.city-entered{
    opacity:.48!important;
    transform:none!important;
    transition:none!important;
  }

  .slot-pill.booked.city-entering .date,
  .slot-pill.booked.city-entering .slot-divider,
  .slot-pill.booked.city-entering .time,
  .slot-pill.booked.city-entering .status,
  .slot-pill:disabled.city-entering .date,
  .slot-pill:disabled.city-entering .slot-divider,
  .slot-pill:disabled.city-entering .time,
  .slot-pill:disabled.city-entering .status,
  .slot-pill.booked.city-entering.city-entered .date,
  .slot-pill.booked.city-entering.city-entered .slot-divider,
  .slot-pill.booked.city-entering.city-entered .time,
  .slot-pill.booked.city-entering.city-entered .status,
  .slot-pill:disabled.city-entering.city-entered .date,
  .slot-pill:disabled.city-entering.city-entered .slot-divider,
  .slot-pill:disabled.city-entering.city-entered .time,
  .slot-pill:disabled.city-entering.city-entered .status{
    opacity:1!important;
    transform:none!important;
    transition:none!important;
  }
}


/* v72 — keep full booking city name visible on mobile */
@media (max-width:800px){
  .booking-panel h2{
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:clip!important;
    font-size:clamp(32px,10vw,48px)!important;
    line-height:.9!important;
    max-width:calc(100% - 4px)!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
  }
}


/* v73 — booking CTA + mobile close sizing */
.booking-panel .book-button{
  background:#fff!important;
  border-color:#fff!important;
}
.booking-panel .book-button::before{
  background:#000!important;
}
.booking-panel .book-button span{
  color:#1d1d1d!important;
  mix-blend-mode:normal!important;
  transition:color .26s cubic-bezier(.65,0,.35,1)!important;
}
@media (hover:hover) and (pointer:fine){
  .booking-panel .book-button:hover span{
    color:#fff!important;
  }
}
@media (max-width:800px){
  .panel-close{
    min-height:44px!important;
    height:44px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
  }
  .booking-panel .book-button:active::before{
    transform:translateX(0)!important;
  }
  .booking-panel .book-button:active span{
    color:#fff!important;
  }
}


/* v74 — CTA hover border follows black fill */
@media (hover:hover) and (pointer:fine){
  .booking-panel .book-button:hover{
    border-color:#000!important;
  }
}
@media (max-width:800px){
  .booking-panel .book-button:active{
    border-color:#000!important;
  }
}


/* v78 — one white surface glides from the selected city pill to hovered pills */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .city-tabs{
    isolation:isolate!important;
  }
  .city-hover-glider{
    position:absolute;
    left:0;
    top:0;
    z-index:0;
    display:block;
    border-radius:999px;
    background:#fff;
    pointer-events:none;
    opacity:0;
    transform:translate3d(0,0,0);
    transition:
      transform .62s cubic-bezier(.16,1,.3,1),
      width .62s cubic-bezier(.16,1,.3,1),
      height .62s cubic-bezier(.16,1,.3,1),
      opacity .16s ease;
    will-change:transform,width,height;
  }
  .city-hover-glider.visible{opacity:1}

  .city-tabs .city-pill{
    z-index:1;
    background:transparent!important;
    transition:color .18s ease .055s!important;
  }
  .city-tabs .city-pill::before{
    display:none!important;
  }
  .city-tabs .city-pill.active{
    background:transparent!important;
    color:#000!important;
  }
  .city-tabs .city-pill:not(.active):hover{
    color:#000!important;
    transition-delay:.12s!important;
  }
  .city-tabs:has(.city-pill:not(.active):hover) .city-pill.active{
    color:#fff!important;
    transition-delay:.06s!important;
  }
}


/* v79 — keep selected tab visually white through click/re-render */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .city-tabs:not(:has(.city-hover-glider.visible)) .city-pill.active{
    background:#fff!important;
    color:#000!important;
  }
}


/* v80 — selected tab becomes marching ants while the white surface previews another city */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .city-tabs.previewing-city .city-pill.active{
    border-color:transparent!important;
    color:#fff!important;
    background:transparent!important;
  }
  .city-tabs.previewing-city .city-pill.active::after{
    content:"";
    position:absolute;
    inset:0;
    z-index:2;
    pointer-events:none;
    border-radius:999px;
    background:
      linear-gradient(90deg,#fff 0 5px,transparent 5px 10px) 0 0/10px 1px repeat-x,
      linear-gradient(90deg,#fff 0 5px,transparent 5px 10px) 0 100%/10px 1px repeat-x,
      linear-gradient(0deg,#fff 0 5px,transparent 5px 10px) 0 0/1px 10px repeat-y,
      linear-gradient(0deg,#fff 0 5px,transparent 5px 10px) 100% 0/1px 10px repeat-y;
    animation:v80SelectedTabAnts .38s linear infinite;
  }
}
@keyframes v80SelectedTabAnts{
  to{
    background-position:10px 0,-10px 100%,0 -10px,100% 10px;
  }
}

/* v83 — stable tab glider on load + true pill-shaped marching ants above fill */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  /* Never show the travelling fill until the font/layout has settled. */
  .city-hover-glider{opacity:0!important;z-index:0!important}
  .city-tabs.glider-ready .city-hover-glider.visible{opacity:1!important}

  /* Before glider positioning is ready, the real selected pill supplies the fill. */
  .city-tabs:not(.glider-ready) .city-pill.active{
    background:#fff!important;
    color:#000!important;
  }

  /* SVG follows the actual rounded pill perimeter and sits above the moving fill. */
  .city-pill .city-pill-ants{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    z-index:8;
    overflow:visible;
    pointer-events:none;
    opacity:0;
  }
  .city-pill .city-pill-ants rect{
    fill:none;
    stroke:#fff;
    stroke-width:2;
    vector-effect:non-scaling-stroke;
    stroke-dasharray:7 6;
    stroke-linecap:butt;
  }
  .city-tabs.previewing-city .city-pill.active{
    border-color:transparent!important;
    color:#fff!important;
    background:transparent!important;
  }
  .city-tabs.previewing-city .city-pill.active::after{
    content:none!important;
    display:none!important;
    animation:none!important;
  }
  .city-tabs.previewing-city .city-pill.active .city-pill-ants{
    opacity:1;
  }
  .city-tabs.previewing-city .city-pill.active .city-pill-ants rect{
    animation:v83CityPillAnts .48s linear infinite;
  }
}
@keyframes v83CityPillAnts{
  to{stroke-dashoffset:-13}
}

/* v84 — exact tokonoma.xyz root SVG marching-ants geometry */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .city-pill .city-pill-ants{display:block!important;position:absolute!important;inset:0!important;width:100%!important;height:100%!important;z-index:20!important;overflow:visible!important;pointer-events:none!important;opacity:0!important}
  .city-pill .city-pill-ants rect{fill:none!important;stroke-width:1!important;vector-effect:non-scaling-stroke!important;animation:none!important}
  .city-pill .city-pill-ants .ants-black{stroke:#000!important}
  .city-pill .city-pill-ants .ants-white{stroke:#fff!important;stroke-dasharray:9 6!important}
  .city-tabs.previewing-city .city-pill.active .city-pill-ants{opacity:1!important}
  .city-tabs.previewing-city .city-pill.active .city-pill-ants .ants-white{animation:v84MarchingAnts .5s linear infinite!important}
  .city-tabs.previewing-city .city-pill.active::after{content:none!important;display:none!important}
}
@keyframes v84MarchingAnts{to{stroke-dashoffset:-15}}


/* v85 — automatic 5-second plane/T alternation; hover behavior remains intact */
.logo-link.logo-auto-large .header-flight{
  opacity:0;
}
.logo-link.logo-auto-large .header-t-logo{
  transform:translate(-50%,-50%) scale(2.5);
}
@media (max-width:800px){
  .logo-link.logo-auto-large .header-t-logo{
    transform:translate(-50%,-50%) scale(2.5)!important;
  }
}

/* v86 — seamless marching-ants loop */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .city-pill .city-pill-ants .ants-white{
    stroke-dasharray:var(--ants-dash,9px) var(--ants-gap,6px)!important;
  }
  .city-tabs.previewing-city .city-pill.active .city-pill-ants .ants-white{
    animation:v86MarchingAnts .5s linear infinite!important;
  }
}
@keyframes v86MarchingAnts{
  to{stroke-dashoffset:calc(-1 * var(--ants-cycle,15px))}
}


/* v87 — normalize SVG perimeter itself so the dash join is mathematically closed */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .city-pill .city-pill-ants .ants-white{
    stroke-dasharray:9 6!important;
    stroke-dashoffset:0;
  }
  .city-tabs.previewing-city .city-pill.active .city-pill-ants .ants-white{
    animation:v87MarchingAnts .5s linear infinite!important;
  }
}
@keyframes v87MarchingAnts{
  to{stroke-dashoffset:-15}
}


/* v88 — move SVG rect's unavoidable path start/end seam away from the top-left curve */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .city-pill .city-pill-ants .ants-white{
    stroke-dashoffset:calc(-1 * var(--ants-seam-phase,0))!important;
  }
  .city-tabs.previewing-city .city-pill.active .city-pill-ants .ants-white{
    animation:v88MarchingAnts .5s linear infinite!important;
  }
}
@keyframes v88MarchingAnts{
  from{stroke-dashoffset:calc(-1 * var(--ants-seam-phase,0))}
  to{stroke-dashoffset:calc(-1 * var(--ants-seam-phase,0) - 15)}
}


/* v89 — restore motion: active animation must own stroke-dashoffset */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .city-tabs.previewing-city .city-pill.active .city-pill-ants .ants-white{
    stroke-dashoffset:initial!important;
    animation:v89MarchingAnts .5s linear infinite!important;
  }
}
@keyframes v89MarchingAnts{
  from{stroke-dashoffset:calc(-1 * var(--ants-seam-phase,0))}
  to{stroke-dashoffset:calc(-1 * var(--ants-seam-phase,0) - 15)}
}


/* v90 — SVG ants motion is driven directly in JS for reliable animation */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .city-tabs.previewing-city .city-pill.active .city-pill-ants .ants-white{
    animation:none!important;
  }
}


/* v91 — JS owns the dash offset; no CSS animation/cascade can freeze it */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .city-tabs.previewing-city .city-pill.active .city-pill-ants .ants-white{
    animation:none!important;
  }
}


/* v92 — one coordinate system for path length + dash spacing, eliminating closure mismatch */
@media (min-width:801px) and (hover:hover) and (pointer:fine){
  .city-pill .city-pill-ants rect{
    vector-effect:none!important;
  }
  .city-pill .city-pill-ants .ants-white{
    stroke-dasharray:9 6!important;
  }
}


/* v93 — calm cat moment in the free desktop area beside booking panel */
.booking-pause{
  display:none;
}
@media (min-width:801px){
  .booking-pause{
    position:fixed;
    left:0;
    top:0;
    bottom:0;
    right:36%;
    z-index:42;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:18px;
    pointer-events:none;
    opacity:0;
    transition:opacity .35s ease;
  }
  .booking-layer.open .booking-pause{
    opacity:1;
  }
  .booking-pause img{
    display:block;
    width:128px;
    height:auto;
    image-rendering:auto;
  }
  .booking-pause span{
    font-family:'EurostileMNExtendedBold',Arial,sans-serif;
    font-size:16px;
    line-height:1;
    color:#fff;
    white-space:nowrap;
  }
}


/* v95 — definitive mobile bottom city-nav reset */
@media (max-width:800px){
  .city-tabs{
    position:fixed!important;
    left:0!important;
    right:0!important;
    bottom:0!important;
    width:100%!important;
    min-width:0!important;
    height:64px!important;
    min-height:64px!important;
    display:flex!important;
    flex-wrap:nowrap!important;
    justify-content:flex-start!important;
    align-items:center!important;
    gap:10px!important;
    padding:10px 20px max(10px,env(safe-area-inset-bottom))!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    box-sizing:border-box!important;
    white-space:nowrap!important;
    isolation:auto!important;
  }
  .city-tabs .city-hover-glider{
    display:none!important;
  }
  .city-tabs .city-pill{
    position:relative!important;
    flex:0 0 auto!important;
    width:auto!important;
    min-width:0!important;
    max-width:none!important;
    height:44px!important;
    min-height:44px!important;
    max-height:44px!important;
    margin:0!important;
    padding:12px 16px 11px!important;
    border:1px solid #fff!important;
    border-radius:999px!important;
    background:#000!important;
    color:#fff!important;
    font-size:14px!important;
    line-height:1!important;
    transform:none!important;
    box-sizing:border-box!important;
    overflow:hidden!important;
  }
  .city-tabs .city-pill.active{
    background:#fff!important;
    color:#000!important;
    border-color:#fff!important;
  }
  .city-tabs .city-pill::before,
  .city-tabs .city-pill::after,
  .city-tabs .city-pill .city-pill-ants{
    display:none!important;
  }
}


/* v96 — center mobile bottom city nav */
@media (max-width:800px){
  .city-tabs{
    justify-content:center!important;
  }
}


/* v97 — mobile CTA touch state: black fill, no border, white text */
@media (max-width:800px){
  .booking-panel .book-button:active{
    background:#000!important;
    border-color:transparent!important;
    border-width:0!important;
  }
  .booking-panel .book-button:active::before{
    background:#000!important;
    transform:translateX(0)!important;
  }
  .booking-panel .book-button:active span{
    color:#fff!important;
    mix-blend-mode:normal!important;
  }
}


/* v98 — persistent mobile CTA interaction state after tap */
@media (max-width:800px){
  .booking-panel .book-button:active,
  .booking-panel .book-button:focus,
  .booking-panel .book-button:focus-visible{
    background:#000!important;
    color:#fff!important;
    border:1px solid transparent!important;
    outline:none!important;
  }
  .booking-panel .book-button:active::before,
  .booking-panel .book-button:focus::before,
  .booking-panel .book-button:focus-visible::before{
    background:#000!important;
    transform:translateX(0)!important;
  }
  .booking-panel .book-button:active span,
  .booking-panel .book-button:focus span,
  .booking-panel .book-button:focus-visible span{
    color:#fff!important;
    mix-blend-mode:normal!important;
  }
}


/* v99 — deterministic mobile CTA pressed visual */
@media (max-width:800px){
  .booking-panel .book-button.mobile-pressed{
    background:#000!important;
    border-color:#000!important;
    border-width:1px!important;
    color:#fff!important;
    outline:none!important;
  }
  .booking-panel .book-button.mobile-pressed::before{
    background:#000!important;
    transform:translateX(0)!important;
  }
  .booking-panel .book-button.mobile-pressed span{
    color:#fff!important;
    mix-blend-mode:normal!important;
  }
}


/* v100 — desktop booking overlay cat at 5x size */
@media (min-width:801px){
  .booking-pause img{
    width:320px!important;
    height:auto!important;
  }
}


/* v101 — delayed DOS-style row/cell reveal for desktop booking cat */
@media (min-width:801px){
  .booking-pause{
    opacity:1!important;
  }
  .booking-pause-reveal{
    position:relative;
    width:320px;
    height:0;
    overflow:visible;
    opacity:0;
    pointer-events:none;
  }
  .booking-pause-reveal.is-revealing,
  .booking-pause-reveal.is-complete{
    opacity:1;
  }
  .booking-pause-canvas{
    display:block;
    width:320px;
    height:auto;
  }
  .booking-pause-reveal span{
    position:absolute;
    left:50%;
    top:calc(var(--reveal-y, 0px) + 12px);
    transform:translateX(-50%);
    margin:0!important;
    font-family:'EurostileMNExtendedBold',Arial,sans-serif;
    font-size:16px;
    line-height:1;
    color:#fff;
    white-space:nowrap;
  }
}


/* v102 — hand off from reveal canvas to the real animated GIF when complete */
@media (min-width:801px){
  .booking-pause-live-gif{
    position:absolute;
    left:0;
    top:0;
    width:320px!important;
    height:auto!important;
    display:block!important;
    opacity:0;
    visibility:hidden;
    pointer-events:none;
  }
  .booking-pause-reveal.is-complete .booking-pause-canvas{
    opacity:0;
  }
  .booking-pause-reveal.is-complete .booking-pause-live-gif{
    opacity:1;
    visibility:visible;
  }
}


/* v103 — live GIF is completely removed from layout until reveal finishes */
@media (min-width:801px){
  .booking-pause .booking-pause-live-gif{
    display:none!important;
    position:absolute!important;
    inset:0 auto auto 0!important;
    width:320px!important;
    height:auto!important;
    margin:0!important;
    opacity:0!important;
    visibility:hidden!important;
  }
  .booking-pause-reveal.is-complete .booking-pause-canvas{
    opacity:0!important;
    visibility:hidden!important;
  }
  .booking-pause-reveal.is-complete .booking-pause-live-gif{
    display:block!important;
    position:absolute!important;
    left:0!important;
    top:0!important;
    opacity:1!important;
    visibility:visible!important;
  }
}

/* v131 — reassurance below booking CTA */
.cancel-later-note{
  margin:8px 0 0;
  text-align:center;
  font-family:'EurostileMNExtendedBold',Arial,sans-serif;
  font-size:9px;
  line-height:1.2;
  letter-spacing:.06em;
  color:#fff;
}

/* v135 — desktop footer gradient follows selected city pill */
@media (min-width:801px){
  .tour-footer .footer-city.is-selected-footer-city{
    color:transparent!important;
    background:linear-gradient(90deg,#00f5ff,#7dff00,#fff000,#ff3bd4,#6b5cff,#00f5ff);
    background-size:300% 100%;
    background-clip:text;
    -webkit-background-clip:text;
    -webkit-text-fill-color:transparent;
    animation:currentTourIridescence 5.5s linear infinite;
  }
}


/* v137 — top city-pill label optical Y offset */
@media (min-width:801px){
  .city-tabs .city-pill{
    padding-top:10.4px!important;
    padding-bottom:6.4px!important;
  }
}


/* v138 — footer arrow optical Y offset */
.tour-footer .footer-arrow{
  position:relative;
  top:-1px;
}


/* v140 — booking sidepanel selected date/time iridescence */
.booking-panel .selected-slot{
  color:transparent!important;
  background:linear-gradient(90deg,#00f5ff,#7dff00,#fff000,#ff3bd4,#6b5cff,#00f5ff);
  background-size:300% 100%;
  background-clip:text;
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  animation:currentTourIridescence 5.5s linear infinite;
}
@media(prefers-reduced-motion:reduce){
  .booking-panel .selected-slot{animation:none!important;}
}


/* v141 — booking actions */
.mobile-book-actions{display:contents}
.mobile-cancel-button{display:none}

/* Primary BOOK THIS SLOT: filled, no sweep. */
.booking-panel .book-button{
  background:#fff!important;
  color:#1d1d1d!important;
  border:1px solid #fff!important;
}
.booking-panel .book-button::before{display:none!important}
.booking-panel .book-button span{
  color:inherit!important;
  mix-blend-mode:normal!important;
}

@media(max-width:800px){
  .booking-panel{
    padding-bottom:170px!important;
  }
  .mobile-book-actions{
    position:fixed!important;
    left:0!important;
    right:0!important;
    bottom:30px!important;
    z-index:80!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
    padding:0 20px!important;
    background:#1d1d1d!important;
  }
  .mobile-book-actions .book-button,
  .mobile-book-actions .mobile-cancel-button{
    display:flex!important;
    width:100%!important;
    max-width:none!important;
    min-height:48px!important;
    margin:0!important;
    align-items:center!important;
    justify-content:center!important;
    border-radius:999px!important;
    box-sizing:border-box!important;
  }
  .mobile-book-actions .book-button{
    background:#fff!important;
    border:1px solid #fff!important;
    color:#1d1d1d!important;
  }
  .mobile-book-actions .mobile-cancel-button{
    background:transparent!important;
    border:1px solid #fff!important;
    color:#fff!important;
    font:inherit!important;
    cursor:pointer!important;
  }
  .mobile-book-actions .mobile-cancel-button span{color:#fff!important}
  .booking-panel .cancel-later-note{
    position:fixed!important;
    left:20px!important;
    right:20px!important;
    bottom:8px!important;
    z-index:81!important;
    margin:0!important;
    text-align:center!important;
    background:#1d1d1d!important;
  }
}


/* v145 — deterministic CTA behavior */
@media(min-width:801px) and (hover:hover) and (pointer:fine){
  .booking-panel .book-button{
    background:#fff!important;color:#000!important;border-color:#fff!important;
    overflow:hidden!important;
  }
  .booking-panel .book-button:hover{
    background:#fff!important;color:#000!important;border-color:#fff!important;
  }
  .book-label-viewport{
    display:block!important;
    height:1em!important;
    line-height:1em!important;
    overflow:hidden!important;
  }
  .book-label-track{
    display:flex!important;
    flex-direction:column!important;
    height:2em!important;
    transform:translateY(0)!important;
    transition:transform .52s cubic-bezier(.22,.78,.18,1)!important;
    opacity:1!important;
    animation:none!important;
  }
  .book-label-track > span{
    display:flex!important;
    height:1em!important;
    flex:0 0 1em!important;
    align-items:center!important;
    justify-content:center!important;
    line-height:1em!important;
    color:#000!important;
    opacity:1!important;
  }
  .booking-panel .book-button:hover .book-label-track{
    transform:translateY(-1em)!important;
    opacity:1!important;
  }
}

@media(max-width:800px){
  .booking-panel > .panel-close{display:none!important;}
  .booking-panel{
    top:16px!important;bottom:0!important;height:auto!important;max-height:none!important;
    overflow-y:auto!important;-webkit-overflow-scrolling:touch!important;
    padding:30px 20px calc(24px + env(safe-area-inset-bottom))!important;
  }
  #bookingForm{
    overflow:visible!important;
    min-height:calc(100% - 210px)!important;
    padding-bottom:0!important;
  }
  .mobile-book-actions{
    position:static!important;
    inset:auto!important;
    width:100%!important;
    margin-top:auto!important;
    padding-top:28px!important;
    display:grid!important;
    gap:8px!important;
    background:transparent!important;
    opacity:1!important;visibility:visible!important;transform:none!important;
  }
  .booking-panel .cancel-later-note{
    position:static!important;
    inset:auto!important;
    margin:10px 0 0!important;
    background:transparent!important;
    opacity:1!important;visibility:visible!important;transform:none!important;
  }
  .mobile-book-actions .book-button{
    background:#fff!important;border-color:#fff!important;color:#1d1d1d!important;
  }
  .mobile-book-actions .book-button span{color:#1d1d1d!important;}
  .book-label-viewport,.book-label-track{display:block!important;height:auto!important;transform:none!important;}
  .book-label-track > span[aria-hidden="true"]{display:none!important;}

  /* Focus never leaves a floating CTA over the keyboard because CTAs are normal flow. */
  .booking-layer.mobile-field-focus .mobile-book-actions,
  .booking-layer.mobile-field-focus .cancel-later-note{
    display:grid!important;
    opacity:1!important;visibility:visible!important;transform:none!important;
  }
  .booking-layer.mobile-field-focus .cancel-later-note{display:block!important;}
}


/* v146 — final CTA overrides */

/* DESKTOP: pure vertical autoscroll, exactly one travel on hover and reverse on mouse-out.
   Force every nested label span black to beat legacy hover rules. */
@media(min-width:801px) and (hover:hover) and (pointer:fine){
  .booking-panel .book-button,
  .booking-panel .book-button:hover{
    background:#fff!important;
    border-color:#fff!important;
    color:#000!important;
  }
  .booking-panel .book-button::before,
  .booking-panel .book-button:hover::before{
    display:none!important;
    transform:none!important;
  }
  .booking-panel .book-button span,
  .booking-panel .book-button:hover span,
  .booking-panel .book-button .book-label-track > span,
  .booking-panel .book-button:hover .book-label-track > span{
    color:#000!important;
    -webkit-text-fill-color:#000!important;
    mix-blend-mode:normal!important;
    opacity:1!important;
  }
  .booking-panel .book-button .book-label-viewport{
    display:block!important;
    height:1em!important;
    overflow:hidden!important;
    line-height:1em!important;
  }
  .booking-panel .book-button .book-label-track{
    display:flex!important;
    flex-direction:column!important;
    height:2em!important;
    transform:translate3d(0,0,0)!important;
    transition:transform .52s cubic-bezier(.22,.78,.18,1)!important;
    animation:none!important;
  }
  .booking-panel .book-button .book-label-track > span{
    display:flex!important;
    height:1em!important;
    min-height:1em!important;
    flex:0 0 1em!important;
    align-items:center!important;
    justify-content:center!important;
    line-height:1em!important;
  }
  .booking-panel .book-button:hover .book-label-track{
    transform:translate3d(0,-1em,0)!important;
  }
}

/* MOBILE: CTA is always visible at panel bottom; panel content scrolls underneath
   with reserved space, and CTA disappears only while an input is focused. */
@media(max-width:800px){
  .booking-panel > .panel-close{display:none!important;}
  .booking-panel{
    position:absolute!important;
    top:16px!important;
    bottom:0!important;
    height:auto!important;
    max-height:none!important;
    overflow-y:auto!important;
    -webkit-overflow-scrolling:touch!important;
    padding:30px 20px calc(190px + env(safe-area-inset-bottom))!important;
  }
  #bookingForm{
    overflow:visible!important;
    min-height:0!important;
    padding:0!important;
  }
  .mobile-book-actions{
    position:fixed!important;
    left:20px!important;
    right:20px!important;
    bottom:calc(38px + env(safe-area-inset-bottom))!important;
    width:auto!important;
    margin:0!important;
    padding:0!important;
    z-index:1000!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
    background:#1d1d1d!important;
    opacity:1!important;
    visibility:visible!important;
    transform:none!important;
  }
  .booking-panel .cancel-later-note{
    position:fixed!important;
    left:20px!important;
    right:20px!important;
    bottom:calc(10px + env(safe-area-inset-bottom))!important;
    z-index:1001!important;
    margin:0!important;
    background:#1d1d1d!important;
    opacity:1!important;
    visibility:visible!important;
  }
  .mobile-book-actions .book-button{
    background:#fff!important;
    border-color:#fff!important;
    color:#1d1d1d!important;
  }
  .mobile-book-actions .book-button span{
    color:#1d1d1d!important;
    -webkit-text-fill-color:#1d1d1d!important;
    mix-blend-mode:normal!important;
  }
  .book-label-viewport,.book-label-track{
    display:block!important;
    height:auto!important;
    transform:none!important;
  }
  .book-label-track > span[aria-hidden="true"]{display:none!important;}

  .booking-layer.mobile-input-active .mobile-book-actions,
  .booking-layer.mobile-input-active .cancel-later-note{
    display:none!important;
  }
}


/* v147 — mobile modal scroll isolation + CTA visible on open */
@media(max-width:800px){
  html.booking-modal-open,
  body.booking-modal-open{
    overflow:hidden!important;
    height:100%!important;
    overscroll-behavior:none!important;
    touch-action:none!important;
  }
  .booking-layer{
    position:fixed!important;
    inset:0!important;
    width:100vw!important;
    height:100dvh!important;
    overflow:hidden!important;
    overscroll-behavior:contain!important;
    touch-action:none!important;
  }
  .booking-backdrop{
    position:absolute!important;
    inset:0!important;
    touch-action:none!important;
  }
  .booking-panel{
    position:absolute!important;
    left:0!important;
    right:0!important;
    top:16px!important;
    bottom:0!important;
    height:auto!important;
    max-height:none!important;
    overflow-y:auto!important;
    overscroll-behavior:contain!important;
    -webkit-overflow-scrolling:touch!important;
    touch-action:pan-y!important;
    padding:30px 20px calc(190px + env(safe-area-inset-bottom))!important;
  }

  /* Anchor to modal itself so mobile browser chrome cannot push fixed controls away. */
  .mobile-book-actions{
    position:absolute!important;
    left:20px!important;
    right:20px!important;
    bottom:calc(38px + env(safe-area-inset-bottom))!important;
    z-index:5000!important;
    display:grid!important;
    visibility:visible!important;
    opacity:1!important;
    transform:none!important;
    pointer-events:auto!important;
  }
  .booking-panel .cancel-later-note{
    position:absolute!important;
    left:20px!important;
    right:20px!important;
    bottom:calc(10px + env(safe-area-inset-bottom))!important;
    z-index:5001!important;
    visibility:visible!important;
    opacity:1!important;
    transform:none!important;
    pointer-events:none!important;
  }

  .booking-layer.mobile-input-active .mobile-book-actions,
  .booking-layer.mobile-input-active .cancel-later-note{
    display:none!important;
  }
}


/* v148 — mobile CTA hard visibility fix */
@media(max-width:800px){
  .booking-layer.open .mobile-book-actions{
    display:grid!important;
    position:fixed!important;
    left:20px!important;
    right:20px!important;
    bottom:calc(42px + env(safe-area-inset-bottom))!important;
    width:auto!important;
    height:auto!important;
    z-index:2147483646!important;
    opacity:1!important;
    visibility:visible!important;
    transform:none!important;
    pointer-events:auto!important;
  }
  .booking-layer.open .cancel-later-note{
    display:block!important;
    position:fixed!important;
    left:20px!important;
    right:20px!important;
    bottom:calc(14px + env(safe-area-inset-bottom))!important;
    z-index:2147483647!important;
    opacity:1!important;
    visibility:visible!important;
    transform:none!important;
  }
  .booking-layer.open.mobile-input-active .mobile-book-actions,
  .booking-layer.open.mobile-input-active .cancel-later-note{
    display:none!important;
  }
}


/* v153 — SINGLE mobile CTA system: sticky footer inside the booking panel */
@media(max-width:800px){
  .booking-panel > .panel-close{display:none!important;}

  .booking-layer{
    position:fixed!important;
    inset:0!important;
    overflow:hidden!important;
    touch-action:none!important;
  }
  .booking-panel{
    position:absolute!important;
    left:0!important;
    right:0!important;
    top:16px!important;
    bottom:0!important;
    height:auto!important;
    max-height:none!important;
    overflow-y:auto!important;
    overscroll-behavior:contain!important;
    -webkit-overflow-scrolling:touch!important;
    touch-action:pan-y!important;
    padding:30px 20px 0!important;
  }
  #bookingForm{
    display:flex!important;
    flex-direction:column!important;
    min-height:calc(100dvh - 210px)!important;
    overflow:visible!important;
    padding:0!important;
  }

  /* Existing in-form action block is the ONLY CTA. */
  .booking-panel .mobile-book-actions{
    position:sticky!important;
    left:auto!important;
    right:auto!important;
    bottom:calc(30px + env(safe-area-inset-bottom))!important;
    width:100%!important;
    margin-top:auto!important;
    padding-top:20px!important;
    z-index:100!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
    background:#1d1d1d!important;
    opacity:1!important;
    visibility:visible!important;
    transform:none!important;
    pointer-events:auto!important;
  }
  .booking-panel .cancel-later-note{
    position:sticky!important;
    left:auto!important;
    right:auto!important;
    bottom:calc(8px + env(safe-area-inset-bottom))!important;
    z-index:101!important;
    display:block!important;
    margin:0!important;
    padding:8px 0!important;
    text-align:center!important;
    background:#1d1d1d!important;
    opacity:1!important;
    visibility:visible!important;
    transform:none!important;
  }
  .mobile-book-actions .book-button,
  .mobile-book-actions .mobile-cancel-button{
    display:flex!important;
    width:100%!important;
    min-height:48px!important;
    align-items:center!important;
    justify-content:center!important;
    border-radius:999px!important;
    pointer-events:auto!important;
  }
  .mobile-book-actions .book-button{
    background:#fff!important;
    border:1px solid #fff!important;
    color:#1d1d1d!important;
  }
  .mobile-book-actions .book-button span{
    color:#1d1d1d!important;
    -webkit-text-fill-color:#1d1d1d!important;
  }
  .mobile-book-actions .mobile-cancel-button{
    background:#1d1d1d!important;
    border:1px solid #fff!important;
    color:#fff!important;
  }

  /* While keyboard/input is active, remove footer from the way. */
  .booking-layer.mobile-input-active .mobile-book-actions,
  .booking-layer.mobile-input-active .cancel-later-note{
    display:none!important;
  }
}


/* v154 — active sidepanel hue travel + mobile BOOK active-state color */
@keyframes bookingSlotHueTravel{
  0%{background-position:0% 50%}
  100%{background-position:-200% 50%}
}
.booking-panel .selected-slot{
  background:linear-gradient(90deg,#00f5ff 0%,#7dff00 20%,#fff000 40%,#ff3bd4 60%,#6b5cff 80%,#00f5ff 100%)!important;
  background-size:300% 100%!important;
  background-clip:text!important;
  -webkit-background-clip:text!important;
  -webkit-text-fill-color:transparent!important;
  animation:bookingSlotHueTravel 4.8s linear infinite!important;
}

@media(max-width:800px){
  /* BOOK text remains white while pressed/active, as requested. */
  .mobile-book-actions .book-button:active,
  .mobile-book-actions .book-button.mobile-pressed{
    background:#000!important;
    border-color:#000!important;
    color:#fff!important;
  }
  .mobile-book-actions .book-button:active span,
  .mobile-book-actions .book-button.mobile-pressed span,
  .mobile-book-actions .book-button:active .book-label-track > span,
  .mobile-book-actions .book-button.mobile-pressed .book-label-track > span{
    color:#fff!important;
    -webkit-text-fill-color:#fff!important;
    mix-blend-mode:normal!important;
  }
}
\n\n/* v157 — booking date/time uses the exact desktop selected-city iridescence */
.booking-panel .selected-slot{
  color:transparent!important;
  background:linear-gradient(90deg,#00f5ff,#7dff00,#fff000,#ff3bd4,#6b5cff,#00f5ff)!important;
  background-size:300% 100%!important;
  background-clip:text!important;
  -webkit-background-clip:text!important;
  -webkit-text-fill-color:transparent!important;
  animation:currentTourIridescence 5.5s linear infinite!important;
}

@media(max-width:800px){
  .mobile-book-actions{gap:12px!important;}
  .mobile-book-actions .book-button,
  .mobile-book-actions .book-button:active,
  .mobile-book-actions .book-button.mobile-pressed{
    background:#fff!important;
    border-color:#fff!important;
  }
  .mobile-book-actions .book-button span{
    color:#1d1d1d!important;
    -webkit-text-fill-color:#1d1d1d!important;
  }
  .mobile-book-actions .book-button:active span,
  .mobile-book-actions .book-button.mobile-pressed span,
  .mobile-book-actions .book-button:active .book-label-track > span,
  .mobile-book-actions .book-button.mobile-pressed .book-label-track > span{
    color:#fff!important;
    -webkit-text-fill-color:#fff!important;
    mix-blend-mode:normal!important;
  }
}


/* v158 — explicit moving text gradient + 16px mobile CTA gap */
@keyframes bookingDateTimeIridescence{
  0%{background-position:0% 50%}
  50%{background-position:150% 50%}
  100%{background-position:300% 50%}
}
.booking-panel .selected-slot{
  color:transparent!important;
  background-image:linear-gradient(90deg,#00f5ff 0%,#7dff00 16.666%,#fff000 33.333%,#ff3bd4 50%,#6b5cff 66.666%,#00f5ff 83.333%,#7dff00 100%)!important;
  background-size:300% 100%!important;
  background-position:0% 50%;
  background-repeat:repeat-x!important;
  background-clip:text!important;
  -webkit-background-clip:text!important;
  -webkit-text-fill-color:transparent!important;
  animation-name:bookingDateTimeIridescence!important;
  animation-duration:3.6s!important;
  animation-timing-function:linear!important;
  animation-iteration-count:infinite!important;
}
@media(prefers-reduced-motion:reduce){
  .booking-panel .selected-slot{
    animation-name:bookingDateTimeIridescence!important;
    animation-duration:3.6s!important;
    animation-iteration-count:infinite!important;
  }
}
@media(max-width:800px){
  .mobile-book-actions{gap:16px!important;}
}


/* v160 — mobile iridescence: same continuous text animation as desktop,
   explicitly exempted from the global reduced-motion animation-duration override */
@keyframes mobileDesktopIridescence{
  0%{background-position:0% 50%}
  100%{background-position:300% 50%}
}
@media(max-width:800px){
  .city-weather,
  .booking-panel .selected-slot{
    color:transparent!important;
    background-image:linear-gradient(90deg,#00f5ff,#7dff00,#fff000,#ff3bd4,#6b5cff,#00f5ff)!important;
    background-size:300% 100%!important;
    background-position:0% 50%;
    background-repeat:repeat-x!important;
    background-clip:text!important;
    -webkit-background-clip:text!important;
    -webkit-text-fill-color:transparent!important;
    animation:mobileDesktopIridescence 5.5s linear infinite!important;
  }
}
@media(max-width:800px) and (prefers-reduced-motion:reduce){
  .city-weather,
  .booking-panel .selected-slot{
    animation-name:mobileDesktopIridescence!important;
    animation-duration:5.5s!important;
    animation-timing-function:linear!important;
    animation-iteration-count:infinite!important;
  }
}


/* v161 — animate the actual date/time glyph span on mobile WebKit */
@keyframes selectedSlotGlyphIridescence{
  0%{background-position:0% 50%}
  100%{background-position:300% 50%}
}
.booking-panel .selected-slot{
  background:none!important;
  -webkit-text-fill-color:initial!important;
  animation:none!important;
}
.booking-panel .selected-slot-gradient{
  display:inline-block!important;
  color:transparent!important;
  background:linear-gradient(90deg,#00f5ff,#7dff00,#fff000,#ff3bd4,#6b5cff,#00f5ff)!important;
  background-size:300% 100%!important;
  background-position:0% 50%;
  background-repeat:repeat-x!important;
  background-clip:text!important;
  -webkit-background-clip:text!important;
  -webkit-text-fill-color:transparent!important;
  animation:selectedSlotGlyphIridescence 5.5s linear infinite!important;
  transform:translateZ(0);
  will-change:background-position;
}
@media(max-width:800px) and (prefers-reduced-motion:reduce){
  .booking-panel .selected-slot-gradient{
    animation:selectedSlotGlyphIridescence 5.5s linear infinite!important;
  }
}


/* v162 — overlay date/time gradient is JS-driven on mobile WebKit */
.booking-panel .selected-slot-gradient{
  animation:none!important;
  background-position:0% 50%!important;
}


/* v163 — real visitor status replaces OCT 2026 */
.tour-footer .footer-visitor-status{
  color:#767676!important;
  font-family:EurostileMNExtendedBold,Arial,sans-serif!important;
  font-weight:700!important;
  background:none!important;
  -webkit-text-fill-color:#767676!important;
  animation:none!important;
  white-space:nowrap;
}


/* v164 — visitor detection: iridescent arrival -> light grey */
#footerVisitorStatus{
  font-family:EurostileMNExtendedBold,Arial,sans-serif!important;
  transition:color 1.25s ease, -webkit-text-fill-color 1.25s ease, opacity 1.25s ease!important;
}
@keyframes footerVisitorIridescence{
  0%{background-position:0% 50%}
  100%{background-position:300% 50%}
}
#footerVisitorStatus.visitor-iridescent{
  color:transparent!important;
  background:linear-gradient(90deg,#00f5ff,#7dff00,#fff000,#ff3bd4,#6b5cff,#00f5ff)!important;
  background-size:300% 100%!important;
  background-clip:text!important;
  -webkit-background-clip:text!important;
  -webkit-text-fill-color:transparent!important;
  animation:footerVisitorIridescence 2.2s linear infinite!important;
}
#footerVisitorStatus.visitor-settled{
  color:#b8b8b8!important;
  background:none!important;
  -webkit-background-clip:border-box!important;
  -webkit-text-fill-color:#b8b8b8!important;
  animation:none!important;
}


/* v165 — emoji stays natural; copy rolls character-by-character from iridescent to grey */
#footerVisitorStatus .visitor-flag{
  display:inline-block!important;
  color:initial!important;
  background:none!important;
  -webkit-text-fill-color:initial!important;
  animation:none!important;
  filter:none!important;
}
#footerVisitorStatus .visitor-copy{
  display:inline-block;
}
#footerVisitorStatus .visitor-copy.visitor-iridescent{
  color:transparent!important;
  background:linear-gradient(90deg,#00f5ff,#7dff00,#fff000,#ff3bd4,#6b5cff,#00f5ff)!important;
  background-size:300% 100%!important;
  background-clip:text!important;
  -webkit-background-clip:text!important;
  -webkit-text-fill-color:transparent!important;
  animation:footerVisitorIridescence 2.2s linear infinite!important;
}
#footerVisitorStatus .visitor-roll{
  display:inline-flex;
  white-space:nowrap;
  background:none!important;
  animation:none!important;
  -webkit-text-fill-color:initial!important;
}
#footerVisitorStatus .visitor-char{
  display:inline-block;
  height:1em;
  line-height:1em;
  overflow:hidden;
  vertical-align:top;
}
#footerVisitorStatus .visitor-char-track{
  display:flex;
  flex-direction:column;
  transform:translateY(0);
  transition:transform .62s cubic-bezier(.22,1,.36,1);
  transition-delay:calc(var(--i) * 32ms);
}
#footerVisitorStatus .visitor-char-old{
  height:1em;
  line-height:1em;
  color:#fff;
}
#footerVisitorStatus .visitor-char-new{
  height:1em;
  line-height:1em;
  color:#b8b8b8;
}
#footerVisitorStatus .visitor-roll.is-rolling .visitor-char-track{
  transform:translateY(-1em);
}
#footerVisitorStatus .visitor-copy.visitor-settled{
  color:#b8b8b8!important;
  background:none!important;
  -webkit-text-fill-color:#b8b8b8!important;
  animation:none!important;
}


/* v166 — roll-in reveal -> iridescent hold -> roll-to-grey */
#footerVisitorStatus{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  white-space:nowrap!important;
}
#footerVisitorStatus .visitor-gap{
  display:inline-block!important;
  width:.55em!important; /* stable gap independent of larger emoji */
  flex:0 0 .55em!important;
}
#footerVisitorStatus .visitor-flag{
  display:inline-block!important;
  font-size:calc(1em + 3px)!important;
  line-height:1!important;
  flex:0 0 auto!important;
  transform:none!important;
  transform-origin:center!important;
}
#footerVisitorStatus .visitor-roll-in .visitor-char-track,
#footerVisitorStatus .visitor-roll-out .visitor-char-track{
  transition:transform .62s cubic-bezier(.22,1,.36,1)!important;
  transition-delay:calc(var(--i) * 32ms)!important;
}
#footerVisitorStatus .visitor-char-hidden{
  height:1em;
  line-height:1em;
  color:transparent!important;
  -webkit-text-fill-color:transparent!important;
}
#footerVisitorStatus .visitor-char-iri{
  height:1em;
  line-height:1em;
  color:transparent!important;
  background:linear-gradient(90deg,#00f5ff,#7dff00,#fff000,#ff3bd4,#6b5cff,#00f5ff)!important;
  background-size:300% 100%!important;
  background-position:0% 50%;
  background-clip:text!important;
  -webkit-background-clip:text!important;
  -webkit-text-fill-color:transparent!important;
  animation:footerVisitorIridescence 2.2s linear infinite!important;
}


/* v167 — selected-city flag left; visitor origin string + eyes right */
.tour-footer .footer-country-flag{
  position:absolute!important;
  left:20px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  font-size:19px!important;
  line-height:1!important;
  width:auto!important;
  background:none!important;
  -webkit-text-fill-color:initial!important;
}
.tour-footer .footer-eyes-right{
  position:absolute!important;
  right:20px!important;
  left:auto!important;
  top:50%!important;
  transform:translateY(-50%)!important;
}
.tour-footer .footer-visitor-status{
  right:78px!important;
}


/* v168 — visitor status hard right-aligned beside eyes.gif */
.tour-footer .footer-visitor-status{
  position:absolute!important;
  left:auto!important;
  right:78px!important;
  top:50%!important;
  bottom:auto!important;
  width:auto!important;
  max-width:none!important;
  margin:0!important;
  transform:translateY(-50%)!important;
  text-align:right!important;
  justify-content:flex-end!important;
  white-space:nowrap!important;
}
.tour-footer .footer-eyes-right{
  position:absolute!important;
  left:auto!important;
  right:20px!important;
  top:50%!important;
  bottom:auto!important;
  margin:0!important;
  transform:translateY(-50%)!important;
}


/* v169 — selected-country emoji autoscrolls when pill changes */
.tour-footer .footer-country-flag{
  height:1.15em!important;
  line-height:1.15em!important;
  overflow:hidden!important;
}
.tour-footer .footer-flag-track{
  display:flex!important;
  flex-direction:column!important;
  height:2.3em!important;
  transform:translateY(0);
  transition:transform .62s cubic-bezier(.22,1,.36,1)!important;
}
.tour-footer .footer-flag-track > span{
  display:flex!important;
  align-items:center!important;
  height:1.15em!important;
  line-height:1.15em!important;
}
.tour-footer .footer-country-flag.flag-scroll-forward.is-scrolling .footer-flag-track{
  transform:translateY(-1.15em)!important;
}
.tour-footer .footer-country-flag.flag-scroll-backward .footer-flag-track{
  flex-direction:column-reverse!important;
  transform:translateY(-1.15em);
}
.tour-footer .footer-country-flag.flag-scroll-backward.is-scrolling .footer-flag-track{
  transform:translateY(0)!important;
}


/* v171 — NO RUSH timecode */
.booking-pause-timecode{
  position:absolute;
  left:0;
  top:calc(var(--reveal-y, 320px) + 34px);
  display:grid;
  grid-template-columns:3ch 2.2ch 3ch 2.2ch 3ch 2.2ch 4ch;
  align-items:center;
  justify-items:center;
  width:max-content;
  font-family:EurostileMNExtendedBold,Arial,sans-serif!important;
  font-variant-numeric:tabular-nums;
  font-size:12px;
  line-height:1;
  letter-spacing:0;
  color:#fff;
  white-space:nowrap;
}
.booking-pause-timecode .tc-unit,
.booking-pause-timecode .tc-sep{
  display:block;
  text-align:center;
}
.booking-pause-timecode .tc-unit{width:100%;}
.booking-pause-timecode .tc-sep{width:100%;}
@media(max-width:800px){
  .booking-pause-timecode{display:none!important;}
}


/* v172 — timecode appears only with fully revealed live GIF; larger than NO RUSH */
.booking-pause-timecode{
  display:none!important;
  position:absolute!important;
  left:50%!important;
  top:calc(var(--reveal-y, 320px) + 58px)!important;
  transform:translateX(-50%)!important;
  grid-template-columns:2.8ch 1.8ch 2.8ch 1.8ch 2.8ch 1.8ch 3.8ch!important;
  column-gap:7px!important;
  align-items:center!important;
  justify-items:center!important;
  width:max-content!important;
  font-family:EurostileMNExtendedBold,Arial,sans-serif!important;
  font-variant-numeric:tabular-nums!important;
  font-size:18px!important;
  line-height:1!important;
  letter-spacing:0!important;
  white-space:nowrap!important;
}
.booking-pause-reveal.is-complete .booking-pause-timecode{
  display:grid!important;
}
.booking-pause-timecode .tc-unit,
.booking-pause-timecode .tc-sep{
  position:static!important;
  display:block!important;
  width:100%!important;
  min-width:0!important;
  margin:0!important;
  padding:0!important;
  text-align:center!important;
  transform:none!important;
}
@media(max-width:800px){
  .booking-pause-reveal.is-complete .booking-pause-timecode{display:none!important;}
}


/* v174 — stronger booking-overlay obscuration */
.booking-layer .booking-backdrop{
  background:rgba(0,0,0,.84)!important;
  -webkit-backdrop-filter:blur(16px)!important;
  backdrop-filter:blur(16px)!important;
}

/* v177 — responsive desktop GIF area: never overlap the booking panel */
@media (min-width:801px){
  .booking-pause{
    right:min(620px,100vw)!important;
    overflow:hidden!important;
    padding-inline:24px!important;
    box-sizing:border-box!important;
  }
  .booking-pause-reveal{
    --pause-w:clamp(120px, calc(100vw - 620px - 48px), 320px);
    width:var(--pause-w)!important;
    max-width:100%!important;
  }
  .booking-pause-canvas,
  .booking-pause img,
  .booking-pause .booking-pause-live-gif,
  .booking-pause-reveal.is-complete .booking-pause-live-gif{
    width:var(--pause-w)!important;
    max-width:100%!important;
    height:auto!important;
  }
}


/* v182 — newsletter-style rectangular booking form controls */
#bookingForm input{
  width:100%!important;
  min-height:52px!important;
  box-sizing:border-box!important;
  padding:13px 16px!important;
  border:2px solid transparent!important;
  border-radius:10px!important;
  background:#111!important;
  color:#fff!important;
  outline:none!important;
  box-shadow:none!important;
  font-family:Arial,sans-serif!important;
  font-size:18px!important;
  transition:border-color .22s ease,background-color .22s ease!important;
}
#bookingForm input:hover{
  background:#151515!important;
}
#bookingForm input:focus,
#bookingForm input:focus-visible{
  background:#111!important;
  border:2px solid #fff!important;
  outline:none!important;
}
#bookingForm input.invalid{
  border:2px solid #f00!important;
}

/* Rectangular newsletter-style CTA — explicitly not a pill */
#bookingForm .book-button,
#bookingForm .mobile-cancel-button{
  border-radius:10px!important;
}
#bookingForm .book-button{
  min-height:52px!important;
  border:2px solid #fff!important;
  background:#fff!important;
  color:#111!important;
  box-shadow:none!important;
}
#bookingForm .book-button::before{
  border-radius:8px!important;
}
#bookingForm .book-button span,
#bookingForm .book-button .book-label-track > span{
  color:#111!important;
  -webkit-text-fill-color:#111!important;
}
@media (hover:hover) and (pointer:fine){
  #bookingForm .book-button:hover{
    background:#fff!important;
    border-color:#fff!important;
    color:#111!important;
  }
  #bookingForm .book-button:hover span,
  #bookingForm .book-button:hover .book-label-track > span{
    color:#111!important;
    -webkit-text-fill-color:#111!important;
  }
}
@media(max-width:800px){
  .mobile-book-actions .book-button,
  .mobile-book-actions .mobile-cancel-button{
    border-radius:10px!important;
  }
}


/* v183 — booking form matched to newsletter.css interaction language */
#bookingForm label{
  position:relative;
}
#bookingForm input{
  display:block!important;
  width:100%!important;
  height:50px!important;
  min-height:50px!important;
  box-sizing:border-box!important;
  padding:0 15px!important;
  border:1px solid rgba(255,255,255,.5)!important;
  border-radius:14px!important;
  background:#111!important;
  color:#fff!important;
  font:16px Arial,sans-serif!important;
  outline:none!important;
  box-shadow:none!important;
}
#bookingForm input:focus,
#bookingForm input:focus-visible{
  border:2px solid #fff!important;
  outline:none!important;
}
#bookingForm input.invalid,
#bookingForm input[aria-invalid="true"]{
  margin-bottom:0!important;
  border:2px solid #f00!important;
  border-bottom:0!important;
  border-radius:14px 14px 0 0!important;
}
#bookingForm input.invalid:focus,
#bookingForm input[aria-invalid="true"]:focus{
  border:2px solid #f00!important;
  border-bottom:0!important;
}

/* Stitched animated field feedback, same construction as newsletter v23. */
#bookingForm .field-error{
  display:block!important;
  box-sizing:border-box!important;
  width:100%!important;
  overflow:hidden!important;
  max-height:0;
  min-height:0!important;
  margin:0!important;
  padding:0 15px!important;
  opacity:0;
  transform:translateY(-6px);
  border-radius:0 0 14px 14px!important;
  background:transparent;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  line-height:1.25;
  transition:
    max-height .42s cubic-bezier(.22,1,.36,1),
    padding .42s cubic-bezier(.22,1,.36,1),
    opacity .22s ease,
    transform .42s cubic-bezier(.22,1,.36,1);
}
#bookingForm input.invalid + .field-error,
#bookingForm input[aria-invalid="true"] + .field-error,
#bookingForm .field-error:not(:empty){
  max-height:72px;
  padding:14px 15px!important;
  background:#f00!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  opacity:1;
  transform:translateY(0);
}

/* Form-level server/network error uses the same red feedback language. */
#bookingForm .form-error:not(:empty){
  display:block!important;
  box-sizing:border-box!important;
  width:100%!important;
  margin:12px 0 0!important;
  padding:14px 15px!important;
  border-radius:14px!important;
  background:#f00!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  line-height:1.25;
}

/* Newsletter CTA: exact 50px / 14px geometry + square black sweep. */
#bookingForm .book-button{
  position:relative!important;
  isolation:isolate!important;
  overflow:hidden!important;
  display:flex!important;
  width:100%!important;
  height:50px!important;
  min-height:50px!important;
  align-items:center!important;
  justify-content:center!important;
  padding:0!important;
  border:0!important;
  border-radius:14px!important;
  background:#fff!important;
  color:#000!important;
  font-family:'EurostileMNExtendedBold',Arial,sans-serif!important;
  font-size:16px!important;
  font-weight:700!important;
  box-shadow:none!important;
  transform:none!important;
}
#bookingForm .book-button::before{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  z-index:1!important;
  display:block!important;
  background:#000!important;
  border-radius:0!important;
  clip-path:inset(0 100% 0 0)!important;
  transition:clip-path .34s cubic-bezier(.65,0,.35,1)!important;
  pointer-events:none!important;
}
#bookingForm .book-button:hover::before,
#bookingForm .book-button:focus-visible::before{
  clip-path:inset(0 0 0 0)!important;
}
#bookingForm .book-button .book-label-viewport{
  position:relative!important;
  z-index:2!important;
  overflow:visible!important;
  height:auto!important;
}
#bookingForm .book-button .book-label-track{
  position:static!important;
  display:block!important;
  transform:none!important;
  height:auto!important;
}
#bookingForm .book-button .book-label-track > span{
  display:none!important;
}
#bookingForm .book-button .book-label-track > span:first-child{
  display:block!important;
  height:auto!important;
  min-height:0!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  mix-blend-mode:difference!important;
  line-height:1!important;
}
#bookingForm .book-button:hover .book-label-track,
#bookingForm .book-button:focus-visible .book-label-track{
  transform:none!important;
}

/* Bottom mobile CANCEL gets the same size/shape treatment, without BOOK sweep. */
@media(max-width:800px){
  #bookingForm .mobile-book-actions .book-button,
  #bookingForm .mobile-book-actions .mobile-cancel-button{
    width:100%!important;
    height:50px!important;
    min-height:50px!important;
    border-radius:14px!important;
  }
  #bookingForm .mobile-book-actions .mobile-cancel-button{
    border:1px solid rgba(255,255,255,.5)!important;
    background:#111!important;
    color:#fff!important;
  }
}


/* v184 — BOOK label + truly stitched validation blocks */

/* BOOK: black text at rest. During hover the difference label inverts
   against the left-to-right black sweep, matching newsletter behavior. */
#bookingForm .book-button .book-label-viewport,
#bookingForm .book-button .book-label-track{
  position:relative!important;
  z-index:2!important;
}
#bookingForm .book-button .book-label-track > span:first-child{
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  mix-blend-mode:difference!important;
}
#bookingForm .book-button:not(:hover):not(:focus-visible) .book-label-track > span:first-child{
  color:#000!important;
  -webkit-text-fill-color:#000!important;
  mix-blend-mode:normal!important;
}

/* Remove the label/error gap inherited from the booking form's label grid.
   The error panel is pulled up to touch the input exactly. */
#bookingForm label:has(input.invalid),
#bookingForm label:has(input[aria-invalid="true"]){
  gap:0!important;
  row-gap:0!important;
}
#bookingForm label:has(input.invalid) > span:first-child,
#bookingForm label:has(input[aria-invalid="true"]) > span:first-child{
  margin-bottom:7px!important;
}
#bookingForm input.invalid,
#bookingForm input[aria-invalid="true"]{
  margin-bottom:0!important;
}
#bookingForm input.invalid + .field-error,
#bookingForm input[aria-invalid="true"] + .field-error,
#bookingForm .field-error:not(:empty){
  margin-top:0!important;
  transform:translateY(0)!important;
}


/* v185 — clean BOOK hover edge + regular validation copy */
#bookingForm .book-button,
#bookingForm .book-button:hover,
#bookingForm .book-button:focus,
#bookingForm .book-button:focus-visible{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}
#bookingForm .book-button::before{
  inset:-1px!important;
}

/* Error copy should be regular, not Eurostile/bold. */
#bookingForm .field-error,
#bookingForm .field-error:not(:empty),
#bookingForm input.invalid + .field-error,
#bookingForm input[aria-invalid="true"] + .field-error,
#bookingForm .form-error,
#bookingForm .form-error:not(:empty){
  font-family:Arial,sans-serif!important;
  font-weight:400!important;
}


/* v186 — validation copy uses Helvetica */
#bookingForm .field-error,
#bookingForm .field-error:not(:empty),
#bookingForm input.invalid + .field-error,
#bookingForm input[aria-invalid="true"] + .field-error,
#bookingForm .form-error,
#bookingForm .form-error:not(:empty){
  font-family:Helvetica,"Helvetica Neue",sans-serif!important;
  font-weight:400!important;
}


/* v187 — default input border is black */
#bookingForm input{
  border-color:#000!important;
}
#bookingForm input:focus,
#bookingForm input:focus-visible{
  border:2px solid #fff!important;
}
#bookingForm input.invalid,
#bookingForm input[aria-invalid="true"],
#bookingForm input.invalid:focus,
#bookingForm input[aria-invalid="true"]:focus{
  border-color:#f00!important;
}


/* v188 — mobile CANCEL matches side-panel grey with white outline/text */
@media(max-width:800px){
  #bookingForm .mobile-book-actions .mobile-cancel-button{
    background:#1d1d1d!important;
    border:1px solid #fff!important;
    color:#fff!important;
    -webkit-text-fill-color:#fff!important;
  }
  #bookingForm .mobile-book-actions .mobile-cancel-button span{
    color:#fff!important;
    -webkit-text-fill-color:#fff!important;
  }
}


/* v189 — 24px gap between mobile BOOK and CANCEL */
@media(max-width:800px){
  #bookingForm .mobile-book-actions{
    gap:24px!important;
  }
}


/* v190 — 16px gap between mobile BOOK and CANCEL */
@media(max-width:800px){
  #bookingForm .mobile-book-actions{
    gap:16px!important;
  }
}


/* v193 — mobile panel scrolls; action footer is STICKY at bottom */
@media(max-width:800px){
  .booking-layer.open .booking-panel{
    position:absolute!important;
    left:0!important;
    right:0!important;
    top:16px!important;
    bottom:0!important;
    height:auto!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    -webkit-overflow-scrolling:touch!important;
    overscroll-behavior-y:contain!important;
    touch-action:pan-y!important;
    padding:30px 20px 0!important;
  }

  #bookingForm{
    display:flex!important;
    flex-direction:column!important;
    min-height:calc(100dvh - 46px)!important;
    overflow:visible!important;
    padding:0!important;
  }

  /* Push the footer to the bottom when content is short.
     When validation expands content, the panel scrolls normally. */
  #bookingForm .mobile-book-actions{
    position:sticky!important;
    left:auto!important;
    right:auto!important;
    bottom:calc(38px + env(safe-area-inset-bottom))!important;
    width:100%!important;
    margin-top:auto!important;
    padding-top:20px!important;
    padding-left:0!important;
    padding-right:0!important;
    padding-bottom:0!important;
    gap:16px!important;
    z-index:102!important;
    background:#1d1d1d!important;
  }

  #bookingForm .cancel-later-note{
    position:sticky!important;
    left:auto!important;
    right:auto!important;
    bottom:0!important;
    width:100%!important;
    margin:0!important;
    padding:10px 0 calc(10px + env(safe-area-inset-bottom))!important;
    z-index:103!important;
    background:#1d1d1d!important;
  }
}

/* v205 — eased, staggered exit to Tokonoma root (desktop + mobile) */
body.studio-exiting .availability-head,
body.studio-exiting .slot-pill,
body.studio-exiting .city-pill,
body.studio-exiting .tour-footer,
body.studio-exiting .site-header,
body.studio-exiting .city-particle-canvas {
  opacity:0!important;
  transform:translateY(-12px)!important;
  transition:opacity .48s cubic-bezier(.22,1,.36,1), transform .62s cubic-bezier(.22,1,.36,1)!important;
}
body.studio-exiting .slot-pill:nth-child(1),body.studio-exiting .city-pill:nth-child(1){transition-delay:0ms!important}
body.studio-exiting .slot-pill:nth-child(2),body.studio-exiting .city-pill:nth-child(2){transition-delay:55ms!important}
body.studio-exiting .slot-pill:nth-child(3),body.studio-exiting .city-pill:nth-child(3){transition-delay:110ms!important}
body.studio-exiting .slot-pill:nth-child(4),body.studio-exiting .city-pill:nth-child(4){transition-delay:165ms!important}
body.studio-exiting .slot-grid > .slot-pill:nth-child(5){transition-delay:312ms!important}
body.studio-exiting .slot-grid > .slot-pill:nth-child(6){transition-delay:390ms!important}
body.studio-exiting .slot-grid > .slot-pill:nth-child(7){transition-delay:468ms!important}
body.studio-exiting .slot-grid > .slot-pill:nth-child(8){transition-delay:546ms!important}
body.studio-exiting .slot-grid > .slot-pill:nth-child(9){transition-delay:624ms!important}
body.studio-exiting .slot-grid > .slot-pill:nth-child(10){transition-delay:702ms!important}
body.studio-exiting .slot-grid > .slot-pill:nth-child(11){transition-delay:780ms!important}
body.studio-exiting .slot-grid > .slot-pill:nth-child(12){transition-delay:858ms!important}
body.studio-exiting .slot-grid > .slot-pill:nth-child(n+13){transition-delay:936ms!important}
body.studio-exiting .availability-head{transition-delay:100ms!important}
body.studio-exiting .tour-footer{transition-delay:220ms!important}
body.studio-exiting .site-header{transition-delay:260ms!important}
body.studio-exiting .city-particle-canvas{transition-delay:90ms!important}

/* v206 — individual slot exits; correct actual .slot-pill class, preserve layout */
body.studio-exiting .slot-grid > .slot-pill{opacity:0!important;transform:translateY(-16px) scale(.975)!important;transition:opacity .52s cubic-bezier(.22,1,.36,1),transform .68s cubic-bezier(.22,1,.36,1)!important;pointer-events:none!important}

/* v207 — top navigation and live city data depart with the slots.
   Animate the actual containers; the pills are dynamically inserted children. */
body.studio-exiting .city-tabs,
body.studio-exiting .city-weather {
  opacity:0!important;
  transform:translateY(-12px)!important;
  transition:opacity .52s cubic-bezier(.22,1,.36,1),transform .68s cubic-bezier(.22,1,.36,1)!important;
  pointer-events:none!important;
}
body.studio-exiting .city-tabs{transition-delay:175ms!important;}
body.studio-exiting .city-weather{transition-delay:290ms!important;}

/* v208 — retain centered X anchor while moving top pills straight upward on exit */
body.studio-exiting .city-tabs{transform:translate(-50%,-20px)!important;}
