/* IMD bespoke header: replaces the Squarespace look on every page */
header.black.header, header.header {
  background: rgba(14,14,14,0.82) !important;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(255,255,255,0.07);
}
.header-nav-item a, .header-nav a, header .header-nav-item a {
  letter-spacing: 0.06em;
  font-weight: 500;
  transition: color .18s ease;
}
.header-nav-item a:hover { color: #E05A1A !important; }
.header-nav-item--active a { color: #E05A1A !important; }
/* The Find a Class button: from white outline to the IMD pill */
header .btn, .header-actions .btn, .header-actions-action a.btn {
  background: linear-gradient(135deg, #C3490F, #E05A1A) !important;
  border: none !important;
  color: #fff !important;
  border-radius: 999px !important;
  padding: 12px 24px !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em;
  box-shadow: 0 6px 22px rgba(224,90,26,0.28);
  transition: transform .18s ease, box-shadow .18s ease;
}
header .btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 28px rgba(224,90,26,0.4);
  color: #fff !important;
}

/* ---------- The IMD menu: floating pill top-right, drawer slides in from the side ---------- */
.header-burger, .header-burger-btn, .header-menu { display: none !important; }
.imd-menu-btn {
  position: absolute; top: calc(env(safe-area-inset-top, 0px) + 14px); right: 14px; z-index: 99998;
  display: none; align-items: center; gap: 9px;
  background: rgba(14,14,14,0.72); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,0.14); border-radius: 999px;
  color: #fff; font-family: 'Inter', -apple-system, sans-serif; font-size: 12.5px; font-weight: 600;
  letter-spacing: 1.8px; text-transform: uppercase; padding: 11px 18px; cursor: pointer;
}
.imd-menu-lines { display: inline-flex; flex-direction: column; gap: 3.5px; }
.imd-menu-lines span { display: block; width: 16px; height: 2px; background: #E05A1A; border-radius: 2px; transition: transform .22s ease, opacity .22s ease; }
body.imd-menu-open .imd-menu-lines span:nth-child(1) { transform: translateY(5.5px) rotate(45deg); }
body.imd-menu-open .imd-menu-lines span:nth-child(2) { opacity: 0; }
body.imd-menu-open .imd-menu-lines span:nth-child(3) { transform: translateY(-5.5px) rotate(-45deg); }
.imd-menu-backdrop {
  position: fixed; inset: 0; z-index: 99997; background: rgba(0,0,0,0.55);
  opacity: 0; pointer-events: none; transition: opacity .25s ease;
}
body.imd-menu-open .imd-menu-backdrop { opacity: 1; pointer-events: auto; }
.imd-menu-drawer {
  position: fixed; top: 0; right: 0; bottom: 0; z-index: 99999;
  width: min(320px, 86vw); background: #0E0E0E; border-left: 1px solid rgba(255,255,255,0.08);
  transform: translateX(102%); transition: transform .28s cubic-bezier(.22,.7,.3,1);
  display: flex; flex-direction: column; padding: calc(env(safe-area-inset-top, 0px) + 18px) 26px 30px;
  overflow-y: auto;
}
body.imd-menu-open .imd-menu-drawer { transform: translateX(0); }
.imd-menu-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 26px; }
.imd-menu-brand { font-family: 'Satoshi', 'Inter', sans-serif; font-weight: 900; letter-spacing: 3px; font-size: 13px; color: #C3490F; }
.imd-menu-close { background: none; border: 0; color: #fff; font-size: 30px; line-height: 1; cursor: pointer; padding: 4px 8px; }
.imd-menu-link {
  font-family: 'Satoshi', 'Inter', sans-serif; font-weight: 800; font-size: 21px; color: #fff !important;
  text-decoration: none; padding: 13px 0; border-bottom: 1px solid rgba(255,255,255,0.06); transition: color .15s ease;
}
.imd-menu-link:active, .imd-menu-link:hover { color: #E05A1A !important; }
.imd-menu-cta {
  margin-top: 26px; text-align: center; background: linear-gradient(135deg, #C3490F, #E05A1A);
  color: #fff !important; text-decoration: none; font-weight: 700; font-size: 15px;
  border-radius: 999px; padding: 15px 20px; box-shadow: 0 8px 24px rgba(224,90,26,0.32);
}
@media (max-width: 900px) { .imd-menu-btn { display: inline-flex !important; z-index: 99999;
  visibility: visible !important; opacity: 1 !important;
  border: 1px solid rgba(255,255,255,0.35) !important; background: rgba(255,255,255,0.1) !important;
  color: #fff !important; font-weight: 600; } }

/* ---------- Mobile width: below the hero, city pages own the full screen ----------
   The hero escapes Squarespace's column with a viewport trick; everything after it was
   still squeezed by the fluid-engine grid gutters. On mobile the grid collapses and the
   db sections keep their own 24px gutters, so the whole page breathes like the hero. */
@media (max-width: 860px) {
  body.imd-city .page-section { padding: 0 !important; }
  body.imd-city .page-section .content-wrapper { padding: 0 !important; max-width: 100% !important; }
  body.imd-city .fluid-engine { display: block !important; padding: 0 !important; }
  body.imd-city .fe-block { margin: 0 !important; width: 100% !important; }
  body.imd-city .sqs-block { padding: 0 !important; }
  body.imd-city .db-hero { width: 100% !important; margin-left: 0 !important; }
}

/* ---------- Instagram button: the real colours and the real glyph ---------- */
.db-social-btn[href*="instagram.com"] {
  background: linear-gradient(45deg, #f09433, #e6683c 25%, #dc2743 50%, #cc2366 75%, #bc1888) !important;
  color: #fff !important; border: 0 !important;
}
.db-social-btn[href*="instagram.com"]::before {
  content: ""; display: inline-block; width: 17px; height: 17px; margin-right: 8px; vertical-align: -3px;
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M12 2.2c3.2 0 3.6 0 4.9.1 1.2.1 1.8.2 2.2.4.6.2 1 .5 1.4.9.4.4.7.8.9 1.4.2.4.4 1 .4 2.2.1 1.3.1 1.7.1 4.9s0 3.6-.1 4.9c-.1 1.2-.2 1.8-.4 2.2-.2.6-.5 1-.9 1.4-.4.4-.8.7-1.4.9-.4.2-1 .4-2.2.4-1.3.1-1.7.1-4.9.1s-3.6 0-4.9-.1c-1.2-.1-1.8-.2-2.2-.4-.6-.2-1-.5-1.4-.9-.4-.4-.7-.8-.9-1.4-.2-.4-.4-1-.4-2.2-.1-1.3-.1-1.7-.1-4.9s0-3.6.1-4.9c.1-1.2.2-1.8.4-2.2.2-.6.5-1 .9-1.4.4-.4.8-.7 1.4-.9.4-.2 1-.4 2.2-.4 1.3-.1 1.7-.1 4.9-.1zm0 3.6a6.2 6.2 0 1 0 0 12.4 6.2 6.2 0 0 0 0-12.4zm0 10.2a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm6.4-10.4a1.44 1.44 0 1 1-2.9 0 1.44 1.44 0 0 1 2.9 0z"/></svg>') center/contain no-repeat;
}

/* On Demand page: the free-session image fades into the card instead of a hard cut,
   and on mobile the page cannot wobble sideways. */
.free-img { position: relative; }
.free-img::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 46%;
  background: linear-gradient(to bottom, rgba(28,28,28,0) 0%, #1C1C1C 100%);
  pointer-events: none;
}
@media (min-width: 861px) {
  /* side by side on desktop: fade toward the text column instead */
  .free-img::after { top: 0; left: auto; width: 46%; height: 100%;
    background: linear-gradient(to right, rgba(28,28,28,0) 0%, #1C1C1C 100%); }
}
html, body { overflow-x: hidden; max-width: 100%; }

/* ---------- Mobile: breathing room at the top of every page ----------
   City pages have their full-screen hero; every other page gets space
   between the header and the first words so nothing kisses the top bar. */
@media (max-width: 860px) {
  body.site-page main.sitemain { padding-top: 26px; }
}

/* The header logo: sized to sit in line with the floating Menu pill */
.header-title-logo img, header .logo img { max-height: 34px !important; width: auto !important; }
@media (max-width: 860px) { .header-title-logo img { max-height: 28px !important; } }

/* ---------- Homepage sound-journey popups: never taller than the screen, always scrollable ---------- */
.imd-sj__lb-card { max-height: 86vh !important; overflow-y: auto !important; -webkit-overflow-scrolling: touch; }

/* ---------- Homepage hero buttons: both CTAs share the Get The App shape ---------- */
.h-btn-main { background: transparent !important; color: #C3490F !important; border: 1.5px solid #C3490F !important;
  border-radius: 14px !important; padding: 16px 32px !important; box-shadow: none !important; }
.h-btn-main:hover { color: #E05A1A !important; border-color: #E05A1A !important; transform: none !important; }

/* ---------- Booking sheet: the close X lives on the LEFT, clear of the floating menu ---------- */
.sheet-close { left: 14px !important; right: auto !important; }
#booking-sheet-header { position: relative !important; justify-content: center !important; padding-left: 62px !important; padding-right: 62px !important; }
#booking-sheet-close { position: absolute !important; left: 14px !important; right: auto !important; top: 50% !important; transform: translateY(-50%); }

/* ---------- City packages: stacked, full width, never side by side ---------- */
.db-package { grid-template-columns: 1fr !important; }
.db-package > * { max-width: 100%; }

/* ---------- Private & events: match the package look — picture on top, words below ---------- */
.db-private { display: block !important; background: linear-gradient(135deg, rgba(100,172,171,0.08), rgba(20,20,20,0.6));
  border: 1px solid rgba(100,172,171,0.25); border-radius: 24px; overflow: hidden; padding: 0 !important; }
.db-private img, .db-private .db-private-img { width: 100% !important; height: 240px; object-fit: cover; display: block; border-radius: 0 !important; }
.db-private > div, .db-private-text { padding: 32px 34px 38px; }
@media (max-width: 768px) { .db-private > div, .db-private-text { padding: 26px 22px 30px; } }

/* ---------- City class cards: the venue title fits the card on mobile ---------- */
@media (max-width: 768px) {
  .db-class-venue { font-size: clamp(17px, 5vw, 21px) !important; line-height: 1.2; overflow-wrap: anywhere; }
}

/* ---------- Hero images: every city hero fades dark at the bottom ---------- */
.db-hero-overlay { background: linear-gradient(to bottom, rgba(14,14,14,0.1) 0%, rgba(14,14,14,0.35) 55%, rgba(14,14,14,0.92) 100%) !important; }

/* On-demand page, mobile: the hero picture fades into the page instead of a hard cut */
@media (max-width: 900px) {
  body.imd-od .hero-overlay { background: linear-gradient(to bottom, rgba(20,20,20,0.12) 0%, rgba(20,20,20,0.5) 55%, #141414 96%) !important; }
}

/* ---------- Desktop: the menu bar travels with you (fixed, measured by JS so the page sits flush) ---------- */
.imd-fixed-head { position: sticky !important; top: 0; z-index: 9990;
  background: rgba(14,14,14,0.92) !important;
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
.imd-head-overlay { position: fixed !important; top: 0; left: 0; right: 0; z-index: 9990;
  background: rgba(14,14,14,0.92) !important;
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
/* overflow-x: hidden on ancestors kills position: sticky; clip does the same job without the murder */
html, body { overflow-x: clip !important; }
#siteWrapper, .header-announcement-bar-wrapper { overflow: visible !important; }

/* Header: squared buttons with curved corners; social icons live in the page footer instead */
header .btn, .header-actions .btn, .header-actions-action a.btn, .shell-cta { border-radius: 12px !important; }
.header-actions .icon, .header-actions-action--social, .header .social-icons, header .sqs-svg-icon--outer { display: none !important; }

/* Social links: one quiet strip at the very bottom of every page */
.imd-footer-social { display: flex; justify-content: center; gap: 18px; flex-wrap: wrap; padding: 30px 20px 40px; background: #0E0E0E; border-top: 1px solid rgba(255,255,255,0.07); }
.imd-footer-social a { color: rgba(255,255,255,0.6); display: inline-flex; width: 40px; height: 40px; align-items: center; justify-content: center; border: 1px solid rgba(255,255,255,0.14); border-radius: 50%; transition: color .15s ease, border-color .15s ease; }
.imd-footer-social a:hover { color: #E05A1A; border-color: rgba(224,90,26,0.6); }
.imd-footer-social svg { width: 18px; height: 18px; fill: currentColor; }



/* City pages: one-off events and the package sit in line with the rest */
.imd-pkg, .imd-oneoff { max-width: 1100px; padding: 0 48px; }
@media (max-width: 768px) { .imd-pkg, .imd-oneoff { padding: 0 24px; } }
.imd-oneoff .oo-grid { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); max-width: 100%; }
@media (max-width: 768px) { .imd-oneoff .oo-grid { grid-template-columns: 1fr; } .oo-card { width: 100%; } }

/* One-off heading: big colourful title, small line underneath, like the class sections */
.imd-oneoff .oo-eyebrow { display: none; }
.imd-oneoff h2.oo-h { font-size: clamp(30px, 4.5vw, 44px); font-weight: 900; background: linear-gradient(135deg, #64ACAB, #8fd0cf); -webkit-background-clip: text; background-clip: text; color: transparent; margin: 0 0 6px; }
.imd-oneoff .oo-sub { color: rgba(255,255,255,0.6); font-size: 15px; margin: 0 0 20px; }

/* All locations: tiny, tidy, flagged — it is for Google, not the eye */
.imd-all-locations-label { font-size: 10px !important; opacity: .5; }
.imd-all-locations-list { font-size: 10.5px !important; line-height: 1.9 !important; opacity: .55; }
.imd-all-locations-list a { color: rgba(214,214,214,0.55) !important; }

/* Journeys: the drawer the page already opens becomes a centred popup; backdrop rides :has() */
body:has(.journey-drawer.open)::after { content: ''; position: fixed; inset: 0; background: rgba(8,8,8,0.78);
  z-index: 99998; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); }
.journey-drawer.open { position: fixed !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%);
  width: min(700px, 92vw); max-height: 82vh !important; overflow-y: auto; -webkit-overflow-scrolling: touch;
  z-index: 99999 !important; margin: 0 !important; box-shadow: 0 30px 90px rgba(0,0,0,0.65); }
.imd-jd-x { position: sticky; top: 10px; margin: 10px 0 0 12px; width: 34px; height: 34px; border-radius: 50%;
  background: rgba(255,255,255,0.14); border: none; color: #fff; font-size: 15px; cursor: pointer; z-index: 2; display: block; }

/* The hero gap dies at first paint: hero-led first sections carry no top padding */
#sections > section:first-of-type:has(.ip-hero, .db-hero, .h-hero, .section-background img),
main .page-section:first-of-type:has(.ip-hero, .db-hero, .h-hero, .section-background img) { padding-top: 0 !important; margin-top: 0 !important; }
#sections > section:first-of-type:has(.ip-hero, .db-hero, .h-hero, .section-background img) .content-wrapper,
main .page-section:first-of-type:has(.ip-hero, .db-hero, .h-hero, .section-background img) .content-wrapper { padding-top: 0 !important; margin-top: 0 !important; }
.h-hero, .ip-hero, .db-hero { margin-top: 0 !important; }

/* ---------- The menu, one look everywhere: neat blocks that never double up raggedly ---------- */
.header-display-desktop .header-nav-item a, .header-nav-item a, .shell-nav a {
  display: inline-block; padding: 8px 14px !important; border: 1px solid rgba(255,255,255,0.12);
  border-radius: 10px; background: rgba(255,255,255,0.03); font-size: 13px !important; font-weight: 500;
  letter-spacing: 0.03em; line-height: 1 !important; color: rgba(255,255,255,0.82) !important;
  text-decoration: none !important; transition: border-color .15s ease, color .15s ease; white-space: nowrap; }
.header-nav-item a:hover, .shell-nav a:hover { border-color: rgba(224,90,26,0.6); color: #E05A1A !important; }
.header-display-desktop .header-nav-list { flex-wrap: wrap; gap: 8px !important; align-items: center; }
.header-nav-item { margin: 0 !important; }
.shell-nav { gap: 8px; flex-wrap: wrap; }

/* ---------- Our header. One implementation, every page, no inheritance from anyone. ---------- */
:root { --imdhead-h: 92px; }
@media (max-width: 900px) { :root { --imdhead-h: 64px; } }
.imdhead { position: absolute; top: 0; left: 0; right: 0; height: var(--imdhead-h); z-index: 9990;
  display: flex; align-items: center; gap: 20px; padding: 0 26px; box-sizing: border-box;
  background: rgba(14,14,14,0.9); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(255,255,255,0.06); }
.imdhead-logo img { height: 34px; display: block; }
.imdhead-nav { display: flex; gap: 7px; flex-wrap: nowrap; overflow: visible; }
.imdhead-nav a { display: inline-block; padding: 8px 13px; border: 1px solid rgba(255,255,255,0.12);
  border-radius: 10px; background: rgba(255,255,255,0.03); font-size: 12px; font-weight: 500;
  letter-spacing: 0.03em; line-height: 1; color: rgba(255,255,255,0.82); text-decoration: none;
  white-space: nowrap; transition: border-color .15s ease, color .15s ease; font-family: 'Inter', sans-serif; }
.imdhead-nav a:hover { border-color: rgba(224,90,26,0.6); color: #E05A1A; }
.imdhead-cta { margin-left: auto; background: linear-gradient(135deg, #C3490F, #E05A1A); color: #fff;
  text-decoration: none; font-weight: 700; font-size: 12.5px; letter-spacing: 1.5px; border-radius: 12px;
  padding: 12px 20px; white-space: nowrap; font-family: 'Inter', sans-serif; }
@media (max-width: 900px) {
  .imdhead-nav, .imdhead-cta { display: none; }
  .imdhead { justify-content: flex-start; padding: 0 18px; }
}
/* Clearance is exact: text pages start below the header; hero pages tuck the hero behind it */
body[data-imd-head] { padding-top: var(--imdhead-h) !important; }
body[data-imd-head][data-imd-hero] { padding-top: 0 !important; }
.imd-menu-btn { top: calc(env(safe-area-inset-top, 0px) + 11px) !important; }

/* When the booking sheet is open, the bar steps aside so nothing can cover the X */
body.sheet-open .imdhead { visibility: hidden; }

/* Nav items never wrap or cramp: one line each, always */
.shell-nav a, .header-nav-item a, .shell-cta { white-space: nowrap; }
.shell-cta { flex-shrink: 0; }
