
/* ============================================================
   GOOGLE FONT IMPORT
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@300;400;600;700;800&display=swap');

/* ============================================================
   DESIGN TOKENS
   ============================================================ */
:root {
  /* Primary brand color — CTAs, active states, feeds --color-brand* below */
  --color-primary:         #f68511;
  --color-primary-dark:    #d1710e;
  --color-primary-light:   #fef5eb;

  /* Secondary accent — links, focus states, tabs, calendar/time selection */
  --color-secondary:       #29abe2;
  --color-secondary-dark:  #218cb9;
  --color-secondary-light: #edf8fc;
  --color-secondary-glow:  #29abe226;

  /* Ink — headings, body emphasis, and dark surfaces (header, footer, table heads) */
  --color-ink:        #023047;
  --color-ink-mid:    #0a4a68;
  --color-ink-pale:   #eff2f3;
  --color-ink-glow:   #02304726;
  --color-white:      #ffffff;
  --color-off-white:  #f4f6f8;
  --color-surface:    #f8fafb;
  --color-border:     #e2e8ef;
  --color-border-mid: #cbd5e1;
  --color-text:       #404042;
  --color-text-muted: #64748b;
  --color-text-faint: #94a3b8;

  /* Typography */
  --font-base:        'Avenir', 'Avenir Next', 'Nunito', 'Century Gothic', 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;

  /* Spacing */
  --radius-sm:        6px;
  --radius:           10px;
  --radius-lg:        16px;

  /* Shadows */
  --shadow-xs:        0 1px 3px #0230470f;
  --shadow-sm:        0 2px 8px #02304714;
  --shadow-md:        0 4px 16px #0230471a;
  --shadow-lg:        0 8px 32px #02304724;
  --shadow-secondary: 0 4px 20px #29abe240;
  --shadow-primary:   0 4px 20px #f6851159;

  /* Transitions */
  --transition:         all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  --transition-bounce:  all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);

  /* Override Envibe's own brand vars — these names are dictated by Envibe's base
     stylesheet, not by us, so they keep their original names rather than being
     renamed to --color-primary* like the tokens above */
  --color-brand:       var(--color-primary);
  --color-brand-light: var(--color-primary);
  --color-brand-dark:  var(--color-primary-dark);
}

/* ============================================================
   GLOBAL RESET & BASE
   ============================================================ */
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
}
*, *:before, *:after {
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}
body,
input, button, select, textarea,
p, span, li, td, th, div, a, h1, h2, h3, h4, h5, label {
  font-family: var(--font-base) !important;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
body {
  background: var(--color-off-white) !important;
  background-color: var(--color-off-white) !important;
  color: var(--color-text) !important;
}
a {
  color: var(--color-secondary) !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
a:hover { color: var(--color-secondary-dark) !important; text-decoration: none !important; }

/* ============================================================
   HEADER BANNER
   Full-bleed background photo behind the logo and strapline.
   Depends on this markup existing in HTML Body Content:
     <div id="clientheader">
       <a href="/" id="clientLogoLink" ...></a>
       <span class="header-strap">Swim - Gym - Courts - Community</span>
       <svg class="header-wave" ...>(wave path)</svg>
     </div>
   ============================================================ */
#clientheader {
  background-image: url('/File/Custom/30E72D4F75B4C368DA643322B7076ACAE66CBDDA/Website Banner.png') !important;
  background-position: center 42% !important;
  background-repeat: no-repeat !important;
  -webkit-background-size: cover !important;
  background-size: cover !important;
  min-height: 150px !important;
  position: relative !important;
  overflow: hidden !important;
  border-bottom: none !important;
}
/* Minimal white wash over the left of the banner photo so the logo
   plate sits on a faded (not solid-covered) section of the photo.
   Peaks at 50% opacity and stretches out gradually to transparent
   by the header's midpoint (55%), rather than snapping off early. */
#clientheader:before {
  content: '' !important;
  position: absolute !important;
  top: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important;
  background: -webkit-linear-gradient(left, #ffffff80 0%, #ffffff33 25%, #ffffff00 55%) !important;
  background: linear-gradient(to right, #ffffff80 0%, #ffffff33 25%, #ffffff00 55%) !important;
  z-index: 1 !important;
}

/* This is Envibe body-content markup (an inline <svg>), hidden here
   rather than removed from the page since we don't control the HTML */
#clientheader .header-wave {
  display: none !important;
}
/* Right-side strapline */
#clientheader .header-strap {
  position: absolute !important;
  right: 44px !important;
  top: 50% !important;
  -webkit-transform: translateY(-70%) !important;
  transform: translateY(-70%) !important;
  z-index: 2 !important;
  color: #fffffff0 !important;
  font-size: 0.95rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.05em !important;
  text-shadow: 0 1px 6px #04142080 !important;
  white-space: nowrap !important;
}
/* Logo on its own brand-orange plate (per brand guide: white logo
   always sits on an orange bar, never directly on white or photo) */
#clientLogoLink {
  background-image: url('/File/Custom/FE47E039CFF23F5533CA72D7B2C73EA27E2C2C17/85x500 LS White.png') !important;
  -webkit-background-size: contain !important;
  background-size: contain !important;
  background-repeat: no-repeat !important;
  background-position: center center !important;
  background-color: var(--color-primary) !important;
  border-radius: var(--radius) !important;
  padding: 16px 24px !important;
  -webkit-box-shadow: var(--shadow-sm) !important;
  box-shadow: var(--shadow-sm) !important;
  -webkit-box-sizing: border-box !important;
  box-sizing: border-box !important;
  width: 220px !important;
  height: 82px !important;
  display: inline-block !important;
  margin: 27px 0 0 36px !important;
  position: relative !important;
  z-index: 2 !important;
}

/* ============================================================
   PAGE STRUCTURE
   ============================================================ */
section.full-page {
  background: var(--color-off-white) !important;
  background-color: var(--color-off-white) !important;
}

/* ============================================================
   NAVIGATION BAR
   Sticky header bar containing ul.spread.main-navigation, with
   the Menu trigger on the left and the account/login trigger on
   the right. Depends on Envibe's header.page-header / nav.left-
   edge.top-edge.right-edge / ul.spread.main-navigation markup.
   ============================================================ */
header.page-header {
  display: block !important;
  visibility: visible !important;
  position: -webkit-sticky !important;
  position: sticky !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  z-index: 300 !important;
  background: #ffffff !important;
  background-color: #ffffff !important;
  border-bottom: 1px solid #e2e8ef !important;
  -webkit-box-shadow: 0 1px 6px #02304714 !important;
  box-shadow: 0 1px 6px #02304714 !important;
  padding: 0 !important;
  margin: 0 !important;
  height: auto !important;
  min-height: unset !important;
  max-height: unset !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

/* Nav element fills the header bar */
nav.left-edge.top-edge.right-edge {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  width: 100% !important;
  padding: 10px 0 !important;
  margin: 0 !important;
  border-bottom: 1px solid var(--color-border) !important;
}

/* Full-width flex row inside nav that positions Menu/ticker/Log In */
nav.left-edge.top-edge.right-edge > div.full-width {
  width: 100% !important;
  max-width: 100% !important;
  padding: 0 28px !important;
  margin: 0 !important;
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-align-items: center !important;
  align-items: center !important;
  min-height: 52px !important;
}

/* Nav list — flex row; items pack to the start, and the account/
   login li is pushed right via margin-left:auto (below), not via
   justify-content */
ul.spread.main-navigation {
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-flex-direction: row !important;
  flex-direction: row !important;
  -webkit-align-items: center !important;
  align-items: center !important;
  -webkit-justify-content: flex-start !important;
  justify-content: flex-start !important;
  gap: 10px !important;
  width: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
  list-style: none !important;
  background: transparent !important;
  border: none !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  min-height: 52px !important;
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
  gap: 0 !important;
  position: static !important;
  -webkit-flex-wrap: wrap !important;
  flex-wrap: wrap !important;
}

/* Each li sizes to its content and centers vertically */
ul.spread.main-navigation > li {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  height: auto !important;
  min-height: unset !important;
  max-height: unset !important;
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  outline: none !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-align-items: center !important;
  align-items: center !important;
  -webkit-flex-shrink: 0 !important;
  flex-shrink: 0 !important;
  -webkit-flex-grow: 0 !important;
  flex-grow: 0 !important;
  position: relative !important;
}

/* Account/login item always stays right - matched by position AND
   by contents, so a hidden extra li (ticker slot) can't centre it */
ul.spread.main-navigation > li:last-child,
ul.spread.main-navigation > li:has(.login-form),
ul.spread.main-navigation > li:has(input[name="Username"]),
ul.spread.main-navigation > li:has(a[href*="Login" i]),
ul.spread.main-navigation > li:has(a[href*="Account" i]) {
  margin-left: auto !important;
}
ul.spread.main-navigation > li:has(input[name="Username"]) ~ li,
ul.spread.main-navigation > li:has(a[href*="Login" i]) ~ li {
  margin-left: 0 !important;
}
ul.spread.main-navigation > li:empty { display: none !important; }

/* Removes background/border/box-shadow/padding from every wrapper
   div inside li, at any nesting depth, including phx-popup, so
   Envibe's default wrapper styling doesn't show behind the trigger
   chip. .h-100/.z-150/.ddmenu/[class*="login-form"] are excluded
   because those are the dropdown panel and must keep their own
   card styling (defined further down). */
ul.spread.main-navigation > li > div,
ul.spread.main-navigation > li > div.vue-root,
ul.spread.main-navigation > li > div.vue-root > div,
ul.spread.main-navigation phx-popup,
ul.spread.main-navigation > li div:not(.h-100):not(.z-150):not(.ddmenu):not([class*="login-form"]) {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
  height: auto !important;
  min-height: unset !important;
  max-height: unset !important;
  width: auto !important;
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-align-items: center !important;
  align-items: center !important;
  position: relative !important;
}

/* Menu / Log In trigger chip (a.w-100 or button.w-100) */
ul.spread.main-navigation div.h-100.z-150 > a.w-100,
ul.spread.main-navigation div.h-100.z-150 > button.w-100 {
  display: -webkit-inline-flex !important;
  display: inline-flex !important;
  -webkit-align-items: center !important;
  align-items: center !important;
  gap: 6px !important;
  height: 36px !important;
  padding: 0 14px !important;
  background: #f4f6f8 !important;
  background-color: #f4f6f8 !important;
  color: #404042 !important;
  -webkit-text-fill-color: #404042 !important;
  font-weight: 600 !important;
  font-size: 1rem !important;
  border-radius: 8px !important;
  border: none !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  max-width: 180px !important;
  cursor: pointer !important;
  text-decoration: none !important;
  -webkit-transition: background 0.15s ease, color 0.15s ease !important;
  transition: background 0.15s ease, color 0.15s ease !important;
  -webkit-flex-shrink: 0 !important;
  flex-shrink: 0 !important;
  -webkit-tap-highlight-color: transparent !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
ul.spread.main-navigation div.h-100.z-150 > a.w-100:hover,
ul.spread.main-navigation div.h-100.z-150 > button.w-100:hover {
  background: #edf8fc !important;
  background-color: #edf8fc !important;
  color: #29abe2 !important;
  -webkit-text-fill-color: #29abe2 !important;
}

/* ============================================================
   TICKER (Web Header Item)
   Envibe's Web Header Item CMS content renders as an <h4> inside
   its own <li> in ul.spread.main-navigation, between the Menu and
   Log In items. Given its own full-width row above them.
   ============================================================ */
/* The ticker li is targeted by position — the middle item of
   (Menu, ticker, Log In) — since :not(:first-child):not(:last-child)
   also correctly matches nothing when no ticker is configured and
   the list only has two items. :has(h4) is kept as a secondary,
   content-based match in case item order ever changes. */
ul.spread.main-navigation > li:not(:first-child):not(:last-child),
ul.spread.main-navigation > li:has(h4) {
  -webkit-flex: 1 1 100% !important;
  flex: 1 1 100% !important;
  width: 100% !important;
  max-width: 100% !important;
  -webkit-order: -1 !important;
  order: -1 !important;
  display: block !important;
  margin: 0 0 10px !important;
  overflow: visible !important;
}
ul.spread.main-navigation li h4 {
  display: block !important;
  width: 100% !important;
  background: var(--color-ink-mid) !important;
  background-color: var(--color-ink-mid) !important;
  color: #fffffff0 !important;
  font-size: 0.84rem !important;
  font-weight: 500 !important;
  letter-spacing: 0.01em !important;
  padding: 10px 18px !important;
  margin: 0 !important;
  border-left: 3px solid var(--color-primary) !important;
  border-radius: 8px !important;
  text-align: center !important;
}
ul.spread.main-navigation li h4 a,
ul.spread.main-navigation li h4 a b {
  color: var(--color-primary) !important;
  -webkit-text-fill-color: var(--color-primary) !important;
  font-weight: 700 !important;
  text-decoration: none !important;
}
ul.spread.main-navigation li h4 a:hover,
ul.spread.main-navigation li h4 a:hover b {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

/* ---- Alert-tier styling for the ticker ----
   Applies when the Web Header Item content contains a
   div.header-alert wrapper, e.g.:
   <div class="header-alert"><strong>Pool closure notice</strong>
   The pool will be closed on Sunday, 26 July 2026.</div>
   Web Header Items without this wrapper render as plain <h4> and
   keep the default navy ticker styling above. */
ul.spread.main-navigation .header-alert {
  display: block !important;
  width: 100% !important;
  background: #fef3c7 !important;
  background-color: #fef3c7 !important;
  color: #7a3d0e !important;
  font-size: 0.86rem !important;
  font-weight: 500 !important;
  letter-spacing: 0.01em !important;
  padding: 10px 18px !important;
  margin: 0 !important;
  border-left: 3px solid #f59e0b !important;
  border-radius: 8px !important;
  text-align: center !important;
}
ul.spread.main-navigation .header-alert strong,
ul.spread.main-navigation .header-alert b {
  color: #92400e !important;
  font-weight: 800 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  font-size: 0.8rem !important;
  margin-right: 8px !important;
}
ul.spread.main-navigation .header-alert a {
  color: #92400e !important;
  font-weight: 700 !important;
  text-decoration: underline !important;
}

/* Envibe's no-JS fallback Log In link; redundant once the Vue nav hydrates */
a.if-no-js {
  display: none !important;
  visibility: hidden !important;
}

/* ============================================================
   NAV TRIGGERS & DROPDOWN PANELS
   Depends on this hydrated DOM chain:
     li > div.vue-root > div.h-100.z-150 > a.w-100        (the BUTTON)
                                         > .ddmenu         (menu panel, when open)
                                         > form.login-form (login panel, when open)
   div.h-100.z-150 WRAPS the trigger - it must stay neutral and
   in-flow. Panels float from it when Vue renders them.
   ============================================================ */
ul.spread.main-navigation > li div.vue-root {
  position: relative !important;
}
ul.spread.main-navigation > li div.vue-root > div.h-100.z-150 {
  position: relative !important;
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-height: none !important;
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-align-items: center !important;
  align-items: center !important;
}

/* ---- Floating panels (only exist while open) ---- */
ul.spread.main-navigation div.h-100.z-150 > .ddmenu,
ul.spread.main-navigation div.h-100.z-150 > form.login-form {
  position: absolute !important;
  top: calc(100% + 8px) !important;
  left: 6px; /* small inset so the panel doesn't hug the page edge */
  z-index: 9999 !important;
  background: #ffffff !important;
  background-color: #ffffff !important;
  border: 1px solid var(--color-border) !important;
  border-radius: 12px !important;
  -webkit-box-shadow: 0 8px 24px #0230472e !important;
  box-shadow: 0 8px 24px #0230472e !important;
  padding: 6px !important;
  min-width: 230px !important;
  width: -webkit-max-content !important;
  width: max-content !important;
  max-width: min(92vw, 360px) !important;
  height: auto !important;
  min-height: unset !important;
  -webkit-transform: none !important;
  transform: none !important;
}
/* Account/login panel opens right-aligned */
ul.spread.main-navigation > li:last-child div.h-100.z-150 > .ddmenu,
ul.spread.main-navigation > li:last-child div.h-100.z-150 > form.login-form {
  right: 0 !important;
  left: auto !important;
}

/* Menu items inside the dropdown */
ul.spread.main-navigation .ddmenu-items {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  display: block !important;
}
ul.spread.main-navigation .ddmenu-items > li {
  display: block !important;
  margin: 0 !important;
  padding: 0 !important;
}
ul.spread.main-navigation .ddmenu-items a {
  display: block !important;
  width: 100% !important;
  color: var(--color-text) !important;
  -webkit-text-fill-color: var(--color-text) !important;
  font-size: 0.88rem !important;
  font-weight: 500 !important;
  padding: 10px 14px !important;
  border-radius: 8px !important;
  background: transparent !important;
  background-color: transparent !important;
  white-space: nowrap !important;
  text-decoration: none !important;
  -webkit-transition: background 0.12s ease, color 0.12s ease !important;
  transition: background 0.12s ease, color 0.12s ease !important;
}
ul.spread.main-navigation .ddmenu-items a:hover {
  background: var(--color-secondary-light) !important;
  background-color: var(--color-secondary-light) !important;
  color: var(--color-secondary) !important;
  -webkit-text-fill-color: var(--color-secondary) !important;
}

/* Login panel internals - the inner .ddmenu fieldset must NOT
   render as a second card */
ul.spread.main-navigation form.login-form .ddmenu,
ul.spread.main-navigation form.login-form .login-form__fieldset {
  position: static !important;
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  padding: 10px !important;
  min-width: 0 !important;
  width: auto !important;
}
ul.spread.main-navigation .login-form__list {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  display: block !important;
}
ul.spread.main-navigation .login-form__list > li {
  display: block !important;
  margin: 0 0 12px !important;
  padding: 0 !important;
}
ul.spread.main-navigation .login-form__list label {
  font-size: 0.7rem !important;
  margin-bottom: 5px !important;
}
ul.spread.main-navigation .login-form input.text-box {
  width: 100% !important;
  min-width: 240px !important;
}
/* Remember Me: checkbox and label inline */
ul.spread.main-navigation .login-form__list input[type="checkbox"] {
  width: auto !important;
  display: inline-block !important;
  margin-right: 6px !important;
  vertical-align: middle !important;
}
ul.spread.main-navigation .login-form__list input[type="checkbox"] + label {
  display: inline-block !important;
  margin: 0 !important;
  vertical-align: middle !important;
}
ul.spread.main-navigation .login-form__list li.centre {
  text-align: center !important;
  font-size: 0.8rem !important;
  margin-bottom: 4px !important;
}

/* Affirmative CTA styling (login submit, wizard "Continue", etc.)
   Covers both <button> and <a>, since the booking wizard's Continue
   action renders as an anchor and must match the button's orange
   treatment rather than inheriting the global `a` link color. The
   full-width block layout is scoped to the login submit button only,
   so the Continue anchor keeps its natural inline, content-sized width. */
button.btn--affirmative,
a.btn--affirmative,
ul.spread.main-navigation form.login-form button.w-100 {
  background: var(--color-primary) !important;
  background-color: var(--color-primary) !important;
  border: none !important;
  border-radius: var(--radius) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  font-weight: 700 !important;
  font-size: 0.9rem !important;
  padding: 11px 18px !important;
  -webkit-box-shadow: var(--shadow-primary) !important;
  box-shadow: var(--shadow-primary) !important;
  cursor: pointer !important;
  text-align: center !important;
  text-decoration: none !important;
}
button.btn--affirmative,
ul.spread.main-navigation form.login-form button.w-100 {
  display: block !important;
  width: 100% !important;
}
button.btn--affirmative:hover,
a.btn--affirmative:hover,
ul.spread.main-navigation form.login-form button.w-100:hover {
  background: var(--color-primary-dark) !important;
  background-color: var(--color-primary-dark) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

/* Log Out / plain buttons inside dropdown panels (logged-in state) */
ul.spread.main-navigation div.h-100.z-150 > .ddmenu button:not(.btn--affirmative) {
  display: block !important;
  width: 100% !important;
  background: transparent !important;
  background-color: transparent !important;
  color: var(--color-text) !important;
  -webkit-text-fill-color: var(--color-text) !important;
  font-weight: 600 !important;
  font-size: 0.88rem !important;
  border: none !important;
  border-radius: 8px !important;
  padding: 10px 14px !important;
  text-align: left !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  cursor: pointer !important;
}
ul.spread.main-navigation div.h-100.z-150 > .ddmenu button:not(.btn--affirmative):hover {
  background: var(--color-secondary-light) !important;
  background-color: var(--color-secondary-light) !important;
  color: var(--color-secondary) !important;
  -webkit-text-fill-color: var(--color-secondary) !important;
}

/* ============================================================
   RESPONSIVE (NAV)
   ============================================================ */
@media screen and (max-width: 768px) {
  nav.left-edge.top-edge.right-edge > div.full-width {
    padding: 0 16px !important;
    min-height: 48px !important;
  }
  ul.spread.main-navigation div.h-100.z-150 > .ddmenu,
  ul.spread.main-navigation div.h-100.z-150 > form.login-form {
    max-width: calc(100vw - 32px) !important;
    min-width: 0 !important;
  }
  ul.spread.main-navigation > li:first-child div.h-100.z-150 > .ddmenu {
    left: 0 !important;
    right: auto !important;
  }
  ul.spread.main-navigation > li:last-child div.h-100.z-150 > .ddmenu,
  ul.spread.main-navigation > li:last-child div.h-100.z-150 > form.login-form {
    right: 0 !important;
    left: auto !important;
  }
  ul.spread.main-navigation { min-height: 48px !important; }
  ul.spread.main-navigation div.h-100.z-150 > a.w-100,
  ul.spread.main-navigation div.h-100.z-150 > button.w-100 {
    height: 34px !important;
    font-size: 0.84rem !important;
    padding: 0 12px !important;
    max-width: 150px !important;
  }
}
@media screen and (max-width: 480px) {
  nav.left-edge.top-edge.right-edge > div.full-width {
    padding: 0 14px !important;
    min-height: 44px !important;
  }
  ul.spread.main-navigation { min-height: 44px !important; }
  ul.spread.main-navigation div.h-100.z-150 > a.w-100,
  ul.spread.main-navigation div.h-100.z-150 > button.w-100 {
    height: 32px !important;
    font-size: 0.8rem !important;
    padding: 0 10px !important;
    max-width: 120px !important;
    gap: 4px !important;
  }
  ul.spread.main-navigation > li:last-child div.h-100.z-150 > form.login-form,
  ul.spread.main-navigation > li:last-child div.h-100.z-150 > .ddmenu {
    right: 0 !important;
    min-width: 0 !important;
    max-width: calc(100vw - 28px) !important;
  }
  ul.spread.main-navigation .login-form input.text-box {
    min-width: 0 !important;
  }
}


/* ============================================================
   TICKER / WEB HEADER ITEM
   The ticker is li:nth-child(2) in ul.spread.main-navigation
   ============================================================ */
div.page-heading-wrapper {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  padding: 14px 0 0 !important;
  margin: 0 !important;
  position: relative !important;
  z-index: 1 !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
}
div.page-heading-wrapper > center {
  background: transparent !important;
  background-color: transparent !important;
  display: block !important;
}
div.page-heading-wrapper > center > h4,
div.page-heading-wrapper h4,
h4[style*="9BC3F2"] {
  background: var(--color-ink-mid) !important;
  background-color: var(--color-ink-mid) !important;
  color: #ffffffeb !important;
  font-size: 0.85rem !important;
  font-weight: 500 !important;
  padding: 11px 24px !important;
  border-radius: 0 !important;
  border-left: 3px solid var(--color-secondary) !important;
  display: block !important;
  width: 100% !important;
  letter-spacing: 0.01em !important;
}

/* ============================================================
   PAGE HEADING / BREADCRUMB AREA — transparent, no navy band
   ============================================================ */
section.left-edge.right-edge.page-heading,
section.right-edge.left-edge.page-heading,
section.page-heading.left-edge,
section.page-heading.right-edge,
section.page-heading,
.page-heading,
div.page-heading-wrapper > center > section,
div.page-heading-wrapper > center > section.left-edge.right-edge.page-heading {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: none !important;
  padding-top: 20px !important;
  padding-bottom: 4px !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
}
nav[aria-label="Breadcrumb"],
nav[aria-label="Breadcrumb"] ol,
nav[aria-label="Breadcrumb"] ul {
  background: transparent !important;
  background-color: transparent !important;
  padding: 0 !important;
  margin-bottom: 6px !important;
  font-size: 0.82rem !important;
  text-align: center !important;
}
nav[aria-label="Breadcrumb"] ol,
nav[aria-label="Breadcrumb"] ul {
  display: -webkit-inline-flex !important;
  display: inline-flex !important;
  -webkit-justify-content: center !important;
  justify-content: center !important;
  gap: 8px !important;
  list-style: none !important;
  width: 100% !important;
}
nav[aria-label="Breadcrumb"] a {
  color: var(--color-secondary) !important;
  font-weight: 600 !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
nav[aria-label="Breadcrumb"] a:hover { color: var(--color-secondary-dark) !important; }
nav[aria-label="Breadcrumb"] li,
nav[aria-label="Breadcrumb"] span { color: var(--color-text-muted) !important; }

/* ============================================================
   PAGE TITLES
   ============================================================ */
/* Page title is absolutely positioned into the nav bar, centered
   between the Menu button (left) and Log In (right), so its own
   row in the document flow collapses to zero height. Vertical
   position is controlled by the `top` value below (-48px). */
h1.full-width,
section.page-heading h1,
section.left-edge.right-edge.page-heading h1 {
  position: absolute !important;
  top: -48px !important;
  left: 50% !important;
  -webkit-transform: translateX(-50%) !important;
  transform: translateX(-50%) !important;
  margin: 0 !important;
  padding: 0 !important;
  border: none !important;
  font-size: 1.6rem !important;
  font-weight: 800 !important;
  letter-spacing: -0.03em !important;
  line-height: 1.2 !important;
  color: var(--color-ink) !important;
  -webkit-text-fill-color: var(--color-ink) !important;
  text-align: center !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  max-width: 46vw !important;
  width: auto !important;
  z-index: 5 !important;
  pointer-events: none !important;
  opacity: 1 !important;
  visibility: visible !important;
  text-shadow: none !important;
}
/* No underline bar in toolbar mode */
h1.full-width:after,
section.page-heading h1:after {
  display: none !important;
}
/* The wrapper is the positioning anchor for the lifted title */
div.page-heading-wrapper { position: relative !important; }

h2 {
  font-size: 1.2rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  color: var(--color-ink) !important;
}
h3 { font-size: 1rem !important; font-weight: 700 !important; color: var(--color-ink) !important; }

/* ============================================================
   HOME MENU TILES
   Full-bleed photo cards with a navy gradient overlay.
   ============================================================ */
ul.main-menu {
  display: -webkit-box !important;
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-flex-wrap: wrap !important;
  flex-wrap: wrap !important;
  gap: 14px !important;
  padding: 0 !important;
  list-style: none !important;
}
ul.main-menu > li {
  list-style: none !important;
  -webkit-flex: 1 1 280px !important;
  flex: 1 1 280px !important;
  max-width: calc(33.333% - 10px) !important;
  min-width: 260px !important;
}
a.main-menu__link {
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-flex-direction: column !important;
  flex-direction: column !important;
  height: 240px !important;
  position: relative !important;
  overflow: hidden !important;
  background: var(--color-ink) !important;
  background-color: var(--color-ink) !important;
  border-radius: var(--radius-lg) !important;
  border: none !important;
  -webkit-box-shadow: var(--shadow-md) !important;
  box-shadow: var(--shadow-md) !important;
  cursor: pointer !important;
  text-decoration: none !important;
  -webkit-transition: var(--transition-bounce) !important;
  transition: var(--transition-bounce) !important;
}
a.main-menu__link:hover {
  -webkit-box-shadow: var(--shadow-lg) !important;
  box-shadow: var(--shadow-lg) !important;
  text-decoration: none !important;
}
/* Image — full bleed. The lift/zoom transform lives on this layer
   (not on a.main-menu__link) so the anchor's own hit-testing box
   never moves on hover: translateY(-6px) shifts the box's bottom
   edge up faster than scale(1.02) grows it back down, so hovering
   near that edge used to flicker the box in and out of :hover in
   a loop. Transforming only the inner full-bleed layers keeps the
   same visual lift without moving the hover boundary. */
p.main-menu__icon {
  position: absolute !important;
  top: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important;
  margin: 0 !important; padding: 0 !important;
  width: 100% !important; height: 100% !important;
  overflow: hidden !important; display: block !important;
  -webkit-transition: var(--transition-bounce) !important;
  transition: var(--transition-bounce) !important;
  -webkit-transform: translateZ(0) !important;
  transform: translateZ(0) !important;
  will-change: transform !important;
}
a.main-menu__link:hover p.main-menu__icon {
  -webkit-transform: translateY(-6px) scale(1.02) !important;
  transform: translateY(-6px) scale(1.02) !important;
}
p.main-menu__icon img {
  display: block !important;
  width: 100% !important; height: 100% !important;
  -o-object-fit: cover !important; object-fit: cover !important;
  -o-object-position: center !important; object-position: center !important;
  -webkit-transition: -webkit-transform 0.6s cubic-bezier(0.4,0,0.2,1) !important;
  transition: transform 0.6s cubic-bezier(0.4,0,0.2,1) !important;
}
a.main-menu__link:hover p.main-menu__icon img {
  -webkit-transform: scale(1.1) !important;
  transform: scale(1.1) !important;
}
/* Gradient overlay — same reasoning as p.main-menu__icon above:
   transformed directly so it moves with the image without the
   anchor itself (and its hover boundary) shifting. */
a.main-menu__link > div {
  position: absolute !important;
  top: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important;
  background: -webkit-linear-gradient(bottom,
    #023047f7 0%,
    #023047bf 35%,
    #02304733 65%,
    transparent 100%) !important;
  background: linear-gradient(to top,
    #023047f7 0%,
    #023047bf 35%,
    #02304733 65%,
    transparent 100%) !important;
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-flex-direction: column !important;
  flex-direction: column !important;
  -webkit-justify-content: flex-end !important;
  justify-content: flex-end !important;
  padding: 0 20px 22px !important;
  gap: 6px !important;
  -webkit-transition: var(--transition-bounce) !important;
  transition: var(--transition-bounce) !important;
  -webkit-transform: translateZ(0) !important;
  transform: translateZ(0) !important;
  will-change: transform !important;
}
a.main-menu__link:hover > div {
  -webkit-transform: translateY(-6px) scale(1.02) !important;
  transform: translateY(-6px) scale(1.02) !important;
}
/* Tile heading */
p.main-menu__heading,
a.main-menu__link p.main-menu__heading,
ul.main-menu a p.main-menu__heading {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  font-size: 1.1rem !important;
  font-weight: 800 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
  margin: 0 !important;
  text-shadow: 0 2px 8px #00000099 !important;
  opacity: 1 !important;
  visibility: visible !important;
}
/* Tile body */
p.main-menu__body,
a.main-menu__link p.main-menu__body,
ul.main-menu a p.main-menu__body {
  color: #ffffffe0 !important;
  -webkit-text-fill-color: #ffffffe0 !important;
  font-size: 0.8rem !important;
  font-weight: 400 !important;
  line-height: 1.5 !important;
  margin: 0 !important;
  text-shadow: 0 1px 4px #000000b3 !important;
  display: block !important;
  overflow: visible !important;
  max-height: none !important;
  opacity: 1 !important;
  visibility: visible !important;
}
/* Staggered entrance animation */
@-webkit-keyframes ev-tile-in {
  from { opacity: 0; -webkit-transform: translateY(20px) scale(0.98); transform: translateY(20px) scale(0.98); }
  to   { opacity: 1; -webkit-transform: translateY(0) scale(1); transform: translateY(0) scale(1); }
}
@keyframes ev-tile-in {
  from { opacity: 0; transform: translateY(20px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
ul.main-menu > li:nth-child(1) a { -webkit-animation: ev-tile-in 0.5s 0.05s cubic-bezier(0.4,0,0.2,1) both; animation: ev-tile-in 0.5s 0.05s cubic-bezier(0.4,0,0.2,1) both; }
ul.main-menu > li:nth-child(2) a { -webkit-animation: ev-tile-in 0.5s 0.12s cubic-bezier(0.4,0,0.2,1) both; animation: ev-tile-in 0.5s 0.12s cubic-bezier(0.4,0,0.2,1) both; }
ul.main-menu > li:nth-child(3) a { -webkit-animation: ev-tile-in 0.5s 0.19s cubic-bezier(0.4,0,0.2,1) both; animation: ev-tile-in 0.5s 0.19s cubic-bezier(0.4,0,0.2,1) both; }
ul.main-menu > li:nth-child(4) a { -webkit-animation: ev-tile-in 0.5s 0.26s cubic-bezier(0.4,0,0.2,1) both; animation: ev-tile-in 0.5s 0.26s cubic-bezier(0.4,0,0.2,1) both; }
ul.main-menu > li:nth-child(5) a { -webkit-animation: ev-tile-in 0.5s 0.33s cubic-bezier(0.4,0,0.2,1) both; animation: ev-tile-in 0.5s 0.33s cubic-bezier(0.4,0,0.2,1) both; }
ul.main-menu > li:nth-child(6) a { -webkit-animation: ev-tile-in 0.5s 0.40s cubic-bezier(0.4,0,0.2,1) both; animation: ev-tile-in 0.5s 0.40s cubic-bezier(0.4,0,0.2,1) both; }
ul.main-menu > li:nth-child(7) a { -webkit-animation: ev-tile-in 0.5s 0.47s cubic-bezier(0.4,0,0.2,1) both; animation: ev-tile-in 0.5s 0.47s cubic-bezier(0.4,0,0.2,1) both; }
ul.main-menu > li:nth-child(8) a { -webkit-animation: ev-tile-in 0.5s 0.54s cubic-bezier(0.4,0,0.2,1) both; animation: ev-tile-in 0.5s 0.54s cubic-bezier(0.4,0,0.2,1) both; }
ul.main-menu > li:nth-child(9) a { -webkit-animation: ev-tile-in 0.5s 0.61s cubic-bezier(0.4,0,0.2,1) both; animation: ev-tile-in 0.5s 0.61s cubic-bezier(0.4,0,0.2,1) both; }

/* ============================================================
   AM/PM TIMEPICKER
   ============================================================ */
label.timepicker__btn {
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 2px solid var(--color-border-mid) !important;
  color: var(--color-text) !important;
  border-radius: var(--radius) !important;
  font-weight: 700 !important;
  font-size: 0.9rem !important;
  padding: 10px 28px !important;
  cursor: pointer !important;
  display: inline-block !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
  -webkit-tap-highlight-color: transparent !important;
  letter-spacing: 0.02em !important;
}
label.timepicker__btn:hover {
  background: var(--color-primary-light) !important;
  background-color: var(--color-primary-light) !important;
  border-color: var(--color-primary) !important;
  color: var(--color-primary-dark) !important;
}
label.timepicker__btn--active,
label.timepicker__btn--active:hover {
  background: var(--color-primary) !important;
  background-color: var(--color-primary) !important;
  border-color: var(--color-primary) !important;
  color: var(--color-white) !important;
  -webkit-box-shadow: var(--shadow-primary) !important;
  box-shadow: var(--shadow-primary) !important;
}
ul.timepicker__list {
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-flex-wrap: wrap !important;
  flex-wrap: wrap !important;
  gap: 6px !important;
  padding: 0 !important;
  list-style: none !important;
  margin-top: 12px !important;
}
ul.timepicker__list > li { list-style: none !important; }

/* ============================================================
   BUTTONS
   ============================================================ */
button, .btn, input[type="submit"], input[type="button"] {
  font-family: var(--font-base) !important;
  font-weight: 600 !important;
  border-radius: var(--radius) !important;
  letter-spacing: 0.01em !important;
  cursor: pointer !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
  -webkit-appearance: none !important;
  appearance: none !important;
}
/* Primary CTA — orange with a matching glow shadow */
.btn-primary, button.btn-primary, a.btn-primary,
input[type="submit"], input[type="button"] {
  background: var(--color-primary) !important;
  background-color: var(--color-primary) !important;
  border-color: var(--color-primary) !important;
  color: var(--color-white) !important;
  font-weight: 700 !important;
  padding: 11px 24px !important;
  font-size: 0.9rem !important;
  -webkit-box-shadow: var(--shadow-primary) !important;
  box-shadow: var(--shadow-primary) !important;
  border-radius: var(--radius) !important;
}
.btn-primary:hover, button.btn-primary:hover, input[type="submit"]:hover {
  background: var(--color-primary-dark) !important;
  background-color: var(--color-primary-dark) !important;
  border-color: var(--color-primary-dark) !important;
  -webkit-transform: translateY(-2px) !important;
  transform: translateY(-2px) !important;
  -webkit-box-shadow: 0 6px 24px #f6851173 !important;
  box-shadow: 0 6px 24px #f6851173 !important;
}
.btn-default, button.btn-default {
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 1.5px solid var(--color-border-mid) !important;
  color: var(--color-text) !important;
  font-weight: 600 !important;
}
.btn-default:hover {
  border-color: var(--color-ink) !important;
  color: var(--color-ink) !important;
  -webkit-transform: translateY(-1px) !important;
  transform: translateY(-1px) !important;
}
.btn-danger, button.btn-danger {
  background: var(--color-ink) !important;
  background-color: var(--color-ink) !important;
  border-color: var(--color-ink) !important;
  color: var(--color-white) !important;
  font-weight: 700 !important;
}
button[class*="cancel"], a[class*="cancel"] {
  background: transparent !important;
  border: 1px solid var(--color-border) !important;
  color: var(--color-text-muted) !important;
}

/* Inside the logged-in dashboard, primary actions are blue instead of orange */
main#main .btn-primary,
main#main a.btn-primary,
main#main button.btn-primary {
  background: var(--color-secondary) !important;
  background-color: var(--color-secondary) !important;
  border-color: var(--color-secondary) !important;
  -webkit-box-shadow: var(--shadow-secondary) !important;
  box-shadow: var(--shadow-secondary) !important;
}
main#main .btn-primary:hover,
main#main a.btn-primary:hover {
  background: var(--color-secondary-dark) !important;
  background-color: var(--color-secondary-dark) !important;
  border-color: var(--color-secondary-dark) !important;
}

/* ============================================================
   FORMS
   ============================================================ */
label {
  font-weight: 600 !important;
  font-size: 0.73rem !important;
  color: var(--color-text-muted) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.08em !important;
  margin-bottom: 7px !important;
  display: block !important;
}
input[type="text"], input[type="email"], input[type="password"],
input[type="number"], input[type="date"], input[type="tel"], textarea {
  border: 1.5px solid var(--color-border-mid) !important;
  border-radius: var(--radius) !important;
  padding: 11px 14px !important;
  font-size: 0.9rem !important;
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  color: var(--color-text) !important;
  -webkit-appearance: none !important;
  appearance: none !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
input:focus, select:focus, textarea:focus {
  border-color: var(--color-secondary) !important;
  -webkit-box-shadow: 0 0 0 3px var(--color-secondary-glow) !important;
  box-shadow: 0 0 0 3px var(--color-secondary-glow) !important;
  outline: none !important;
}
select {
  border: 1.5px solid var(--color-border-mid) !important;
  border-radius: var(--radius) !important;
  padding: 11px 14px !important;
  background: var(--color-white) !important;
  color: var(--color-text) !important;
  -webkit-appearance: auto !important;
  appearance: auto !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
.input-group-btn > .btn {
  background: var(--color-off-white) !important;
  border: 1.5px solid var(--color-border-mid) !important;
  color: var(--color-ink) !important;
  font-weight: 700 !important;
  font-size: 1.2rem !important;
  -webkit-appearance: none !important;
  appearance: none !important;
  border-radius: 0 !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
.input-group-btn > .btn:hover {
  background: var(--color-ink) !important;
  background-color: var(--color-ink) !important;
  color: var(--color-white) !important;
  border-color: var(--color-ink) !important;
}

/* ============================================================
   PANELS / CARDS
   ============================================================ */
.panel, .card, .well {
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 1px solid var(--color-border) !important;
  border-radius: var(--radius-lg) !important;
  -webkit-box-shadow: var(--shadow-xs) !important;
  box-shadow: var(--shadow-xs) !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
.panel:hover, .card:hover {
  -webkit-box-shadow: var(--shadow-sm) !important;
  box-shadow: var(--shadow-sm) !important;
}
.panel-heading, .card-header {
  background: var(--color-surface) !important;
  background-color: var(--color-surface) !important;
  border-bottom: 1px solid var(--color-border) !important;
  font-weight: 700 !important;
  font-size: 0.73rem !important;
  text-transform: uppercase !important;
  letter-spacing: 0.08em !important;
  color: var(--color-text-muted) !important;
  border-radius: var(--radius-lg) var(--radius-lg) 0 0 !important;
  padding: 13px 18px !important;
}

/* ============================================================
   TABS
   ============================================================ */
.nav-tabs {
  border-bottom: 2px solid var(--color-border) !important;
  gap: 2px !important;
  display: -webkit-flex !important;
  display: flex !important;
}
.nav-tabs > li > a {
  font-weight: 600 !important;
  font-size: 0.82rem !important;
  color: var(--color-text-muted) !important;
  border-radius: var(--radius-sm) var(--radius-sm) 0 0 !important;
  border: 1px solid transparent !important;
  padding: 10px 16px !important;
  max-width: 150px !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
  display: block !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover {
  background: var(--color-secondary) !important;
  background-color: var(--color-secondary) !important;
  color: var(--color-white) !important;
  border-color: var(--color-secondary) !important;
  -webkit-box-shadow: var(--shadow-secondary) !important;
  box-shadow: var(--shadow-secondary) !important;
}
.nav-tabs > li > a:hover {
  background: var(--color-secondary-light) !important;
  background-color: var(--color-secondary-light) !important;
  color: var(--color-secondary) !important;
}

/* ============================================================
   SELECTION CARDS (membership, courses, locations)
   ============================================================ */
label.list-button,
a.list-button {
  display: block !important;
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 1.5px solid var(--color-border) !important;
  border-radius: var(--radius-lg) !important;
  padding: 18px 22px !important;
  cursor: pointer !important;
  -webkit-transition: var(--transition-bounce) !important;
  transition: var(--transition-bounce) !important;
  margin-bottom: 10px !important;
  -webkit-box-shadow: var(--shadow-xs) !important;
  box-shadow: var(--shadow-xs) !important;
}
label.list-button:hover,
a.list-button:hover {
  border-color: var(--color-ink) !important;
  -webkit-box-shadow: var(--shadow-lg) !important;
  box-shadow: var(--shadow-lg) !important;
  -webkit-transform: translateY(-3px) !important;
  transform: translateY(-3px) !important;
}
span.list-button__heading {
  font-size: 0.95rem !important;
  font-weight: 700 !important;
  color: var(--color-ink) !important;
  display: block !important;
  margin-bottom: 5px !important;
  text-transform: none !important;
  letter-spacing: -0.01em !important;
}
span.list-button__description {
  font-size: 0.82rem !important;
  color: var(--color-text-muted) !important;
  line-height: 1.6 !important;
  text-transform: none !important;
  white-space: normal !important;
  display: block !important;
}

/* ---- Drilldown selectors (Course enrolment page) ----
   Depends on this DOM chain:
   fieldset.bt > legend + ol.h-stack > li > input.sr-only + label.list-button
   with .list-button__content / __icon / __heading inside      */
fieldset.bt {
  border: none !important;
  padding: 0 !important;
  margin: 0 0 18px !important;
  min-width: 0 !important;
}
fieldset.bt > legend {
  font-family: var(--font-base) !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  color: var(--color-text-muted) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.08em !important;
  border: none !important;
  padding: 0 !important;
  margin-bottom: 10px !important;
  width: auto !important;
}
ol.h-stack, ul.h-stack {
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-flex-wrap: wrap !important;
  flex-wrap: wrap !important;
  gap: 12px !important;
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
.h-stack > li {
  list-style: none !important;
  -webkit-flex: 1 1 280px !important;
  flex: 1 1 280px !important;
  max-width: 420px !important;
  margin: 0 !important;
}
.h-stack > li label.list-button,
.h-stack > li a.list-button {
  margin-bottom: 0 !important;
  height: 100% !important;
}
/* Anchor variant must not inherit global link colour */
a.list-button, a.list-button:hover { text-decoration: none !important; }
a.list-button .list-button__heading { color: var(--color-ink) !important; }
a.list-button:hover .list-button__heading { color: var(--color-ink-mid) !important; }
span.list-button__content {
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-align-items: center !important;
  align-items: center !important;
  gap: 14px !important;
  text-transform: none !important;
}
span.list-button__icon {
  display: -webkit-inline-flex !important;
  display: inline-flex !important;
  -webkit-align-items: center !important;
  align-items: center !important;
  -webkit-justify-content: center !important;
  justify-content: center !important;
  width: 42px !important;
  height: 42px !important;
  border-radius: 50% !important;
  background: var(--color-ink-pale) !important;
  background-color: var(--color-ink-pale) !important;
  color: var(--color-ink) !important;
  font-size: 1.05rem !important;
  -webkit-flex-shrink: 0 !important;
  flex-shrink: 0 !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
/* Selected state - the radio before the label is checked */
input:checked + label.list-button {
  border-color: var(--color-ink) !important;
  background: var(--color-ink-pale) !important;
  background-color: var(--color-ink-pale) !important;
  -webkit-box-shadow: 0 0 0 3px var(--color-ink-glow), var(--shadow-sm) !important;
  box-shadow: 0 0 0 3px var(--color-ink-glow), var(--shadow-sm) !important;
}
input:checked + label.list-button span.list-button__icon {
  background: var(--color-ink) !important;
  background-color: var(--color-ink) !important;
  color: #ffffff !important;
}
input:checked + label.list-button span.list-button__heading {
  color: var(--color-ink) !important;
}
/* Keyboard focus ring for accessibility */
input:focus-visible + label.list-button {
  outline: 3px solid var(--color-ink-glow) !important;
  outline-offset: 2px !important;
}

/* ============================================================
   MEMBERSHIP INFO BANNER
   ============================================================ */
div.page-heading-wrapper h4[style],
h4[style*="9BC3F2"] {
  background-color: var(--color-ink-mid) !important;
  color: #ffffffeb !important;
  font-size: 0.88rem !important;
  font-weight: 500 !important;
  padding: 14px 24px !important;
  border-left: 4px solid var(--color-secondary) !important;
  border-radius: 0 !important;
  text-align: left !important;
  width: 100% !important;
  display: block !important;
  letter-spacing: 0.01em !important;
}

/* ============================================================
   DASHBOARD SECTIONS
   ============================================================ */
main#main h2 {
  font-size: 0.95rem !important;
  font-weight: 700 !important;
  color: var(--color-ink) !important;
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-align-items: center !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 15px 20px !important;
  margin: 0 !important;
  border-bottom: 1px solid var(--color-border) !important;
  letter-spacing: -0.01em !important;
}
main#main h2 > i,
main#main h2 svg {
  color: var(--color-primary) !important;
  font-size: 1.15rem !important;
  -webkit-flex-shrink: 0 !important;
  flex-shrink: 0 !important;
}
main#main [class*="rounded-full"],
main#main button[class*="rounded-full"],
main#main a[class*="rounded-full"] {
  background: var(--color-ink) !important;
  background-color: var(--color-ink) !important;
  border: none !important;
  color: var(--color-white) !important;
  width: 28px !important;
  height: 28px !important;
  border-radius: 50% !important;
  -webkit-border-radius: 50% !important;
  display: -webkit-inline-flex !important;
  display: inline-flex !important;
  -webkit-align-items: center !important;
  align-items: center !important;
  -webkit-justify-content: center !important;
  justify-content: center !important;
  -webkit-flex-shrink: 0 !important;
  flex-shrink: 0 !important;
  margin-left: auto !important;
  cursor: pointer !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
main#main [class*="rounded-full"] i,
main#main [class*="rounded-full"] svg,
main#main [class*="rounded-full"] * {
  color: var(--color-white) !important;
  fill: var(--color-white) !important;
}
main#main [class*="rounded-full"]:hover {
  background: var(--color-secondary) !important;
  background-color: var(--color-secondary) !important;
  -webkit-transform: scale(1.1) !important;
  transform: scale(1.1) !important;
  -webkit-box-shadow: var(--shadow-secondary) !important;
  box-shadow: var(--shadow-secondary) !important;
}
main#main p:not(.main-menu__heading):not(.main-menu__body):not(.main-menu__icon):not([class*="timetable"]),
main#main li:not([class*="main-menu"]):not([class*="timetable"]),
main#main td:not([class*="timetable"]) {
  font-size: 0.88rem !important;
  line-height: 1.6 !important;
  color: var(--color-text) !important;
}
main#main strong, main#main b { font-weight: 700 !important; color: var(--color-ink) !important; }
main#main small, main#main .text-muted { color: var(--color-text-muted) !important; font-size: 0.78rem !important; }

/* ============================================================
   PROGRESS BAR
   ============================================================ */
.progress {
  background: var(--color-border) !important;
  background-color: var(--color-border) !important;
  border-radius: 20px !important;
  height: 8px !important;
  margin: 8px 0 28px !important;
  overflow: visible !important;
}
.progress-bar {
  background: -webkit-linear-gradient(left, var(--color-secondary), var(--color-primary)) !important;
  background: linear-gradient(to right, var(--color-secondary), var(--color-primary)) !important;
  border-radius: 20px !important;
  min-width: 24px !important;
  position: relative !important;
  -webkit-transition: width 0.8s cubic-bezier(0.4,0,0.2,1) !important;
  transition: width 0.8s cubic-bezier(0.4,0,0.2,1) !important;
}
.progress-bar:after {
  content: attr(aria-valuenow) '%';
  position: absolute;
  right: 0; top: -22px;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--color-secondary);
  font-family: var(--font-base);
}

/* ============================================================
   STATUS LABELS & BADGES
   ============================================================ */
.label {
  border-radius: 20px !important;
  padding: 4px 12px !important;
  font-size: 0.72rem !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  display: inline-block !important;
}
.label-default { background: #f1f5f9 !important; color: var(--color-text-muted) !important; border: 1px solid var(--color-border) !important; }
.label-success  { background: var(--color-primary-light) !important; color: var(--color-primary-dark) !important; }
.label-warning  { background: #fef3c7 !important; color: #92400e !important; }
.label-danger   { background: #fee2e2 !important; color: #991b1b !important; }
.label-info     { background: var(--color-secondary-light) !important; color: var(--color-secondary-dark) !important; }

/* ============================================================
   CART / TABLE
   ============================================================ */
.table thead th {
  background: var(--color-ink) !important;
  background-color: var(--color-ink) !important;
  color: #ffffffd9 !important;
  font-size: 0.73rem !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.08em !important;
  border: none !important;
  padding: 13px 20px !important;
}
.table tbody td {
  padding: 13px 20px !important;
  border-color: var(--color-border) !important;
  font-size: 0.9rem !important;
  color: var(--color-text) !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
.table tbody tr:hover td {
  background: var(--color-secondary-light) !important;
  background-color: var(--color-secondary-light) !important;
}
.table tfoot td {
  font-weight: 700 !important;
  background: var(--color-off-white) !important;
  background-color: var(--color-off-white) !important;
  border-top: 2px solid var(--color-border-mid) !important;
  color: var(--color-ink) !important;
  font-size: 1rem !important;
}

/* ============================================================
   FOOTER
   ============================================================ */

footer.page-footer,
footer.left-edge.bottom-edge.right-edge.page-footer {
  background: var(--color-ink) !important;
  background-color: var(--color-ink) !important;
  color: #ffffff99 !important;
  padding: 24px 40px !important;
  font-size: 0.82rem !important;
  border-top: none !important;
}
footer.page-footer a {
  color: #ffffffcc !important;
  font-weight: 600 !important;
  text-decoration: none !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
footer.page-footer a:hover { color: var(--color-white) !important; }

/* ============================================================
   PAGE ENTRY ANIMATION
   ============================================================ */
@-webkit-keyframes ev-page-in {
  from { opacity: 0; -webkit-transform: translateY(10px); transform: translateY(10px); }
  to   { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); }
}
@keyframes ev-page-in {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}
main#main {
  -webkit-animation: ev-page-in 0.45s cubic-bezier(0.4,0,0.2,1) both !important;
  animation: ev-page-in 0.45s cubic-bezier(0.4,0,0.2,1) both !important;
}

/* ============================================================
   SCROLLBAR — thin custom style, WebKit browsers only
   ============================================================ */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--color-border-mid); border-radius: 10px; }
::-webkit-scrollbar-thumb:hover { background: var(--color-secondary); }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media screen and (max-width: 768px) {
  ul.main-menu > li { max-width: calc(50% - 8px) !important; min-width: 0 !important; -webkit-flex: 1 1 calc(50% - 8px) !important; flex: 1 1 calc(50% - 8px) !important; }
  a.main-menu__link { height: 210px !important; }
  #clientheader { min-height: 112px !important; }
  #clientheader .header-strap { display: none !important; }
  #clientLogoLink { width: 156px !important; height: 58px !important; padding: 0 !important; margin: 11px 0 0 16px !important; }
  #clientheader:before {
    background: -webkit-linear-gradient(left, #ffffff80 0%, #ffffff33 35%, #ffffff00 70%) !important;
    background: linear-gradient(to right, #ffffff80 0%, #ffffff33 35%, #ffffff00 70%) !important;
  }
  h1.full-width, section.page-heading h1 { font-size: 1.05rem !important; top: -44px !important; max-width: 38vw !important; }
}
@media screen and (max-width: 480px) {
  ul.main-menu > li { max-width: 100% !important; -webkit-flex: 1 1 100% !important; flex: 1 1 100% !important; }
  a.main-menu__link { height: 200px !important; }
}


/* ============================================================
   BOOKINGS PAGE
   Filter grid, conditions card, steppers, datepicker, calendar,
   time-slot chips with availability badges, page-action chips.
   All scoped to main#main - nav rules are untouched. Depends on
   Envibe's booking-form DOM (ul.filter-container, .timepicker,
   .datepicker__*, .dp-calendar*, .number-picker__*).
   ============================================================ */

/* ---- Centred content column ----
   Overrides Envibe's page grid so main#main becomes a single,
   width-capped, centered column instead of a multi-column layout.
   Flex column + min-height:100vh keeps the page's background
   filling the viewport on short pages. */
section.full-page {
  display: flex !important;
  flex-direction: column !important;
  min-height: 100vh !important;
}
/* Generated content in a flex container becomes a real flex item
   (ordered after header.page-header/nav/main#main/footer.page-footer,
   since none of them set an explicit `order`). flex-grow:1 makes
   this item — not the footer — absorb the column's leftover height,
   so on short pages the space below the footer reads as navy
   instead of the page's off-white background, without adding any
   space on pages that already fill the viewport. */
section.full-page:after {
  content: '' !important;
  flex-grow: 1 !important;
  background: var(--color-ink) !important;
  pointer-events: none !important;
}
main#main.main-content--wide {
  max-width: none !important;
  padding-left: 32px !important;
  padding-right: 32px !important;
}
main#main {
  display: block !important;
  width: 100% !important;
  max-width: 1060px !important;
  margin: 0 auto !important;
  padding: 40px 24px 48px !important;
  float: none !important;
}
/* Form/content pages (.stack wrapper) get a tighter reading width,
   centered inside the main column; home tiles keep the full width. */
main#main > div.stack {
  width: 100% !important;
  max-width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
/* The narrow reading cap applies to FORMS only (booking form etc.)
   so wide components like the Courses timetable keep full width */
main#main form {
  display: block !important;
  width: 100% !important;
  max-width: 680px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
main#main > ul.main-menu {
  width: 100% !important;
  max-width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
/* Prevent wide grids forcing the column open */
main#main .timepicker,
main#main ul.filter-container {
  min-width: 0 !important;
}

/* ---- Page actions (My Bookings / Timetable chips) ---- */
main#main ol.page-actions {
  display: -webkit-flex !important;
  display: flex !important;
  gap: 10px !important;
  list-style: none !important;
  padding: 0 !important;
  margin: 0 0 6px !important;
}
main#main a.page-actions__btn-nav {
  display: -webkit-inline-flex !important;
  display: inline-flex !important;
  -webkit-align-items: center !important;
  align-items: center !important;
  gap: 10px !important;
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 1.5px solid var(--color-border) !important;
  border-radius: 12px !important;
  padding: 11px 18px !important;
  font-size: 0.88rem !important;
  font-weight: 600 !important;
  color: var(--color-ink) !important;
  -webkit-text-fill-color: var(--color-ink) !important;
  text-decoration: none !important;
  -webkit-box-shadow: var(--shadow-xs) !important;
  box-shadow: var(--shadow-xs) !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
main#main a.page-actions__btn-nav:hover {
  border-color: var(--color-secondary) !important;
  color: var(--color-secondary) !important;
  -webkit-text-fill-color: var(--color-secondary) !important;
  -webkit-transform: translateY(-2px) !important;
  transform: translateY(-2px) !important;
}
main#main .page-actions__btn-nav-icon {
  color: var(--color-secondary) !important;
  font-size: 1.15rem !important;
}

/* ---- Spacing between stacked form sections ---- */
main#main div.stack > ul.stack {
  display: flex !important;
  flex-direction: column !important;
  gap: 20px !important;
}

/* ---- Filter grid ---- */
main#main ul.filter-container {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)) !important;
  gap: 14px !important;
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
main#main li.filter-container__item {
  list-style: none !important;
  margin: 0 !important;
  min-width: 0 !important;
}
main#main li.filter-container__item.filter-container__item--s {
  max-width: 220px !important;
}
/* An item that carries Conditions spans the full row */
main#main li.filter-container__item:has(h2) {
  grid-column: 1 / -1 !important;
}

/* ---- Select comboboxes ---- */
main#main .filter .select {
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-align-items: center !important;
  align-items: center !important;
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 1.5px solid var(--color-border-mid) !important;
  border-radius: 10px !important;
  padding-right: 10px !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
main#main .filter .select:focus-within {
  border-color: var(--color-secondary) !important;
  -webkit-box-shadow: 0 0 0 3px var(--color-secondary-glow) !important;
  box-shadow: 0 0 0 3px var(--color-secondary-glow) !important;
}
main#main .filter .select input {
  border: none !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  background: transparent !important;
  background-color: transparent !important;
  padding: 11px 12px !important;
  width: 100% !important;
  min-width: 0 !important;
}
main#main .filter .select input:focus {
  border: none !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  outline: none !important;
}
main#main .filter .select i {
  color: var(--color-text-muted) !important;
  -webkit-flex-shrink: 0 !important;
  flex-shrink: 0 !important;
}
/* Options list when a filter is open */
main#main .filter [role="listbox"],
main#main .filter .h-100.z-150 > ul {
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 1px solid var(--color-border) !important;
  border-radius: 10px !important;
  -webkit-box-shadow: var(--shadow-md) !important;
  box-shadow: var(--shadow-md) !important;
  padding: 4px !important;
  z-index: 500 !important;
}
main#main .filter [role="option"],
main#main .filter .h-100.z-150 > ul > li {
  border-radius: 7px !important;
  padding: 9px 12px !important;
  font-size: 0.88rem !important;
  cursor: pointer !important;
}
main#main .filter [role="option"]:hover,
main#main .filter .h-100.z-150 > ul > li:hover {
  background: var(--color-secondary-light) !important;
  background-color: var(--color-secondary-light) !important;
  color: var(--color-secondary) !important;
}

/* ---- Conditions card ---- */
main#main .filter-container__item > h2 {
  font-size: 0.73rem !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.08em !important;
  color: var(--color-ink) !important;
  border: none !important;
  padding: 0 !important;
  margin: 16px 0 8px !important;
  display: block !important;
}
main#main .filter-container__item > h2 ~ p {
  background: var(--color-secondary-light) !important;
  background-color: var(--color-secondary-light) !important;
  border-left: 3px solid var(--color-secondary) !important;
  border-radius: 10px !important;
  padding: 12px 16px !important;
  margin: 0 !important;
  color: var(--color-text) !important;
  font-size: 0.85rem !important;
  line-height: 1.65 !important;
}

/* ---- Group size stepper ---- */
main#main span.number-picker {
  display: -webkit-inline-flex !important;
  display: inline-flex !important;
  -webkit-align-items: stretch !important;
  align-items: stretch !important;
}
main#main .number-picker__button {
  width: 40px !important;
  min-height: 42px !important;
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 1.5px solid var(--color-border-mid) !important;
  color: var(--color-secondary) !important;
  font-size: 1.1rem !important;
  font-weight: 700 !important;
  padding: 0 !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
}
main#main .number-picker__button--minus { border-radius: 10px 0 0 10px !important; border-right: none !important; }
main#main .number-picker__button--plus  { border-radius: 0 10px 10px 0 !important; border-left: none !important; }
main#main .number-picker__button:hover:not([disabled]) {
  background: var(--color-secondary-light) !important;
  background-color: var(--color-secondary-light) !important;
}
main#main .number-picker__button[disabled] { color: var(--color-text-faint) !important; cursor: not-allowed !important; }
main#main input.number-picker__input {
  width: 64px !important;
  text-align: center !important;
  border-radius: 0 !important;
  border: 1.5px solid var(--color-border-mid) !important;
  padding: 9px 6px !important;
}

/* ---- Date field ---- */
main#main .datepicker__input-container {
  display: -webkit-inline-flex !important;
  display: inline-flex !important;
  -webkit-align-items: center !important;
  align-items: center !important;
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 1.5px solid var(--color-border-mid) !important;
  border-radius: 10px !important;
  padding: 2px 10px !important;
  color: var(--color-text-muted) !important;
}
main#main .datepicker__input-container:focus-within {
  border-color: var(--color-secondary) !important;
  -webkit-box-shadow: 0 0 0 3px var(--color-secondary-glow) !important;
  box-shadow: 0 0 0 3px var(--color-secondary-glow) !important;
}
main#main input.datepicker__input {
  border: none !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  background: transparent !important;
  width: 3.4em !important;
  text-align: center !important;
  padding: 9px 2px !important;
}
main#main input.datepicker__input:focus { outline: none !important; border: none !important; -webkit-box-shadow: none !important; box-shadow: none !important; }
main#main input.datepicker__input--s { width: 2.5em !important; }
main#main .datepicker__btn {
  width: 44px !important;
  height: 44px !important;
  border-radius: 10px !important;
  border: none !important;
  background: var(--color-secondary-light) !important;
  background-color: var(--color-secondary-light) !important;
  color: var(--color-secondary) !important;
  font-size: 1rem !important;
  margin-left: 8px !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
}
main#main .datepicker__btn:hover {
  background: var(--color-secondary) !important;
  background-color: var(--color-secondary) !important;
  color: #ffffff !important;
}

/* ---- Calendar dialog ---- */
.dp-calendar {
  font-family: var(--font-base) !important;
  border-radius: 14px !important;
}
.dp-calendar__day { color: var(--color-text-muted) !important; font-weight: 700 !important; font-size: 0.72rem !important; }
button.dp-calendar__day-btn {
  border-radius: 9px !important;
  border: none !important;
  background: transparent !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  font-weight: 600 !important;
  color: var(--color-text) !important;
}
button.dp-calendar__day-btn:hover:not([disabled]) {
  background: var(--color-secondary-light) !important;
  background-color: var(--color-secondary-light) !important;
  color: var(--color-secondary) !important;
}
button.dp-calendar__day-btn--selected,
button.dp-calendar__day-btn--selected:hover {
  background: var(--color-primary) !important;
  background-color: var(--color-primary) !important;
  color: #ffffff !important;
}
button.dp-calendar__day-btn--disabled {
  color: var(--color-text-faint) !important;
  opacity: 0.55 !important;
  cursor: not-allowed !important;
}
.dp-calendar__corner--selected { display: none !important; }
button.dp-calendar__header-btn {
  background: transparent !important;
  border: none !important;
  color: var(--color-ink) !important;
  font-weight: 800 !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
}
button.dp-calendar-btn, button.dialog__close-button {
  background: var(--color-off-white) !important;
  background-color: var(--color-off-white) !important;
  border: none !important;
  border-radius: 8px !important;
  color: var(--color-ink) !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
}
button.dp-calendar-btn--disabled { color: var(--color-text-faint) !important; }
.dp-calendar__legend-key--unavailable { background: var(--color-border-mid) !important; border-radius: 3px !important; }

/* ---- Fine print under the date ---- */
main#main p.f-3xs {
  font-size: 0.74rem !important;
  color: var(--color-text-muted) !important;
  margin: 3px 0 0 !important;
  line-height: 1.5 !important;
}

/* ---- Selects fill the width of the content column ---- */
main#main .filter,
main#main .filter.filter--l {
  width: 100% !important;
  max-width: none !important;
}

/* ---- Timepicker container sizing ---- */
main#main .timepicker__outer,
main#main .timepicker__container {
  overflow: visible !important;
  height: auto !important;
  max-height: none !important;
}
main#main .timepicker__btn-container {
  display: -webkit-inline-flex !important;
  display: inline-flex !important;
  gap: 8px !important;
  margin: 0 0 10px !important;
}
/* ---- Time slots ---- */
main#main .timepicker {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)) !important;
  gap: 18px !important;
}
main#main .timepicker__outer { min-width: 0 !important; }
main#main label.timepicker__time {
  display: inline-block !important;
  white-space: nowrap !important;
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 1.5px solid var(--color-border-mid) !important;
  border-radius: 10px !important;
  padding: 10px 16px !important;
  font-size: 0.88rem !important;
  font-weight: 600 !important;
  color: var(--color-ink) !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  margin: 0 !important;
  cursor: pointer !important;
  -webkit-transition: var(--transition) !important;
  transition: var(--transition) !important;
}
main#main label.timepicker__time:hover {
  border-color: var(--color-secondary) !important;
  background: var(--color-secondary-light) !important;
  background-color: var(--color-secondary-light) !important;
}
main#main label.timepicker__time:has(input:checked) {
  border-color: var(--color-secondary) !important;
  background: var(--color-secondary-light) !important;
  background-color: var(--color-secondary-light) !important;
  color: var(--color-secondary) !important;
  -webkit-box-shadow: 0 0 0 3px var(--color-secondary-glow) !important;
  box-shadow: 0 0 0 3px var(--color-secondary-glow) !important;
}
/* Availability badge on the chip corner */
main#main .timepicker__spaces {
  position: absolute !important;
  top: -8px !important;
  right: -6px !important;
  z-index: 2 !important;
  background: var(--color-primary) !important;
  background-color: var(--color-primary) !important;
  color: #ffffff !important;
  font-size: 0.62rem !important;
  font-weight: 700 !important;
  padding: 2px 8px !important;
  border-radius: 10px !important;
  line-height: 1.4 !important;
  pointer-events: none !important;
  gap: 3px !important;
}
main#main .timepicker__spaces:after { content: " left"; }


/* ============================================================
   TIME SLOT CHIPS — sizing overrides
   Uses the full DOM chain (.timepicker .timepicker__container
   ul.timepicker__list > li.timepicker__list-item > ...) as the
   selector so these declarations outrank the width/height
   constraints Envibe's own stylesheet sets on the same elements.
   ============================================================ */
main#main .timepicker .timepicker__container ul.timepicker__list {
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-flex-wrap: wrap !important;
  flex-wrap: wrap !important;
  -webkit-flex-direction: row !important;
  flex-direction: row !important;
  gap: 12px !important;
  width: 100% !important;
  height: auto !important;
  max-height: none !important;
  min-height: 0 !important;
  overflow: visible !important;
  padding: 12px 0 4px !important;
  margin: 6px 0 0 !important;
  list-style: none !important;
}
main#main .timepicker .timepicker__container ul.timepicker__list > li.timepicker__list-item {
  display: block !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  height: auto !important;
  -webkit-flex: 0 0 auto !important;
  flex: 0 0 auto !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: visible !important;
  position: relative !important;
  list-style: none !important;
}
main#main .timepicker .timepicker__container ul.timepicker__list > li.timepicker__list-item > label.timepicker__time {
  display: -webkit-inline-flex !important;
  display: inline-flex !important;
  -webkit-align-items: center !important;
  align-items: center !important;
  width: auto !important;
  min-width: -webkit-max-content !important;
  min-width: max-content !important;
  max-width: none !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  white-space: nowrap !important;
  overflow: visible !important;
  line-height: 1.2 !important;
}
main#main .timepicker .timepicker__container ul.timepicker__list > li.timepicker__list-item > .timepicker__spaces {
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  overflow: visible !important;
}


/* ============================================================
   BOOKING FORM CARD LAYOUT
   Each form row (ul.stack > li) becomes a white card on the
   page background. Filter fields stack vertically at full card
   width, so the Conditions block spans the same full width.
   ============================================================ */
main#main {
  background: transparent !important;
  background-color: transparent !important;
}
main#main form ul.stack {
  display: flex !important;
  flex-direction: column !important;
  gap: 14px !important;
}
main#main form ul.stack > li {
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 1px solid var(--color-border) !important;
  border-radius: 14px !important;
  padding: 18px 20px !important;
  margin: 0 !important;
  list-style: none !important;
  -webkit-box-shadow: var(--shadow-xs) !important;
  box-shadow: var(--shadow-xs) !important;
}
/* Filters stack vertically; every field and the Conditions card
   render at full width instead of Envibe's default grid columns */
main#main ul.filter-container {
  display: block !important;
}
main#main li.filter-container__item {
  width: 100% !important;
  max-width: none !important;
}
main#main li.filter-container__item + li.filter-container__item {
  margin-top: 16px !important;
}
main#main li.filter-container__item.filter-container__item--s {
  max-width: none !important;
}
/* Intro text sits directly on the page background, aligned with the form */
main#main > div.stack > p,
main#main > div.stack > ol.page-actions {
  width: 100% !important;
  max-width: 680px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
main#main > div.stack > p {
  color: var(--color-text) !important;
  padding: 0 4px !important;
}
/* Margin above the Check Price button, separating it from the form cards */
main#main form div.spread {
  margin-top: 16px !important;
}


/* ============================================================
   TIMETABLE SHIELD
   The Courses timetable positions session cards with measured
   pixel geometry. Restore Envibe-native metrics inside it so
   nothing we set globally can shift card placement.
   ============================================================ */
main#main [class*="timetable"] p:not([class*="filter"]):not([class*="dialog"]),
main#main [class*="timetable"] li:not([class*="filter"]):not([class*="dialog"]),
main#main [class*="timetable"] div:not([class*="filter"]):not([class*="dialog"]),
main#main [class*="timetable"] span:not([class*="filter"]):not([class*="dialog"]),
main#main [class*="timetable"] td:not([class*="filter"]):not([class*="dialog"]) {
  font-size: revert !important;
  line-height: revert !important;
  padding: revert !important;
  margin: revert !important;
}
main#main [class*="timetable"] ul:not([class*="filter"]):not([class*="dialog"]),
main#main [class*="timetable"] ol:not([class*="filter"]):not([class*="dialog"]) {
  gap: revert !important;
  padding: revert !important;
  margin: revert !important;
}
/* Safe, colour-only branding (no geometry) */
main#main .timetable__content-title {
  color: var(--color-ink) !important;
  font-family: var(--font-base) !important;
}


/* ============================================================
   MOBILE NAV LAYOUT
   1. Dropdown panels are clamped to stay fully on-screen instead
      of using the desktop max-content/absolute positioning
   2. The centered page title shrinks and its max-width leaves
      room for the Menu and Log In chips so nothing overlaps
   ============================================================ */
@media (max-width: 640px) {

  /* --- 1. Menu dropdown: pin inside the viewport --- */
  ul.spread.main-navigation .ddmenu {
    position: fixed !important;
    left: 8px !important;
    right: 8px !important;
    top: auto !important;
    margin: 6px 0 0 !important;
    transform: none !important;
    -webkit-transform: none !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    max-height: 70vh !important;
    overflow-y: auto !important;
    z-index: 400 !important;
  }

  /* --- Login panel: same treatment, anchored right --- */
  ul.spread.main-navigation form.login-form,
  ul.spread.main-navigation form.login-form .ddmenu {
    position: fixed !important;
    left: 8px !important;
    right: 8px !important;
    top: auto !important;
    margin: 6px 0 0 !important;
    transform: none !important;
    -webkit-transform: none !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    max-height: 80vh !important;
    overflow-y: auto !important;
    z-index: 400 !important;
  }

  /* --- 2. Nav row: chips hard against the edges --- */
  ul.spread.main-navigation > li:first-child {
    margin-right: auto !important;
  }
  ul.spread.main-navigation > li:last-child {
    margin-left: auto !important;
  }

  /* --- Title: smaller and centered; max-width is capped to
         100vw minus the combined width of the Menu and Log In
         chips (190px) so the title truncates before overlapping them --- */
  header.page-header .page-heading h1.full-width {
    font-size: 1.5rem !important;
    max-width: calc(100vw - 190px) !important;
    left: 50% !important;
    transform: translateX(-50%) !important;
    -webkit-transform: translateX(-50%) !important;
    right: auto !important;
    text-overflow: ellipsis !important;
    overflow: hidden !important;
    white-space: nowrap !important;
  }
}


/* ============================================================
   MOBILE TIMETABLE
   Envibe's timetable already has a native mobile mode (one day
   at a time, paged via arrow) so only page padding is adjusted
   here; no widths or scroll behavior are forced on the component.
   ============================================================ */
@media (max-width: 900px) {
  main#main.main-content--wide {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
}


/* ============================================================
   LOGIN PANEL ANCHORING
   The Log In trigger sits at the far right of the nav, so its
   panel is anchored to the right edge (right:0) and grows
   leftward. Anchoring it to the left edge instead would push
   the panel off the right side of the viewport.
   ============================================================ */
ul.spread.main-navigation > li:last-child div.vue-root,
ul.spread.main-navigation > li:last-child .h-100.z-150 {
  position: relative !important;
}
ul.spread.main-navigation > li:last-child form.login-form {
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 1px solid var(--color-border) !important;
  border-radius: 14px !important;
  padding: 16px 18px !important;
  -webkit-box-shadow: var(--shadow-md) !important;
  box-shadow: var(--shadow-md) !important;
  position: absolute !important;
  right: 0 !important;
  left: auto !important;
  top: 100% !important;
  margin-top: 6px !important;
  transform: none !important;
  -webkit-transform: none !important;
  width: -webkit-max-content !important;
  width: max-content !important;
  max-width: min(420px, calc(100vw - 16px)) !important;
  z-index: 300 !important;
}
/* box-sizing:border-box on the form and all its descendants keeps
   content inside the card's padding rather than overflowing it */
ul.spread.main-navigation > li:last-child form.login-form,
ul.spread.main-navigation > li:last-child form.login-form * {
  box-sizing: border-box !important;
}
ul.spread.main-navigation > li:last-child form.login-form ul.login-form__list,
ul.spread.main-navigation > li:last-child form.login-form ul.login-form__list > li {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  overflow: visible !important;
}
ul.spread.main-navigation > li:last-child form.login-form label {
  white-space: normal !important;
  overflow-wrap: break-word !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  text-indent: 0 !important;
}
ul.spread.main-navigation > li:last-child form.login-form input.text-box {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
}
ul.spread.main-navigation > li:last-child form.login-form .ddmenu {
  position: static !important;
  right: auto !important;
  left: auto !important;
  transform: none !important;
  -webkit-transform: none !important;
  width: 100% !important;
  max-width: none !important;
  background: transparent !important;
  border: none !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  padding: 0 !important;
}


/* ============================================================
   MENU PANEL CORNERS
   Round the Menu dropdown card to the site-wide 14px radius;
   clip inner wrappers so no square white corners poke out.
   ============================================================ */
ul.spread.main-navigation li .ddmenu {
  border-radius: 14px !important;
  overflow: hidden !important;
}
ul.spread.main-navigation li .ddmenu > *,
ul.spread.main-navigation li .ddmenu ul.ddmenu-items {
  border-radius: inherit !important;
}
/* Logged-in account menu: same right-anchoring as the login
   panel so it never runs off-screen */
ul.spread.main-navigation > li:last-child .ddmenu {
  position: absolute !important;
  right: 0 !important;
  left: auto !important;
  transform: none !important;
  -webkit-transform: none !important;
  width: -webkit-max-content !important;
  width: max-content !important;
  max-width: min(340px, calc(100vw - 16px)) !important;
  z-index: 300 !important;
}
/* But not when it is the inner wrapper of the login form,
   which the form already positions */
ul.spread.main-navigation > li:last-child form.login-form .ddmenu {
  position: static !important;
  width: 100% !important;
  max-width: none !important;
}


/* ============================================================
   CHECKBOX LABELS
   Labels following a checkbox or radio sit inline beside the
   box, not stacked underneath it (Remember Me, consents, etc.)
   ============================================================ */
input[type="checkbox"] + label,
input[type="radio"]:not(.sr-only) + label {
  display: inline-block !important;
  margin: 0 0 0 8px !important;
  vertical-align: middle !important;
}
input[type="checkbox"],
input[type="radio"]:not(.sr-only) {
  vertical-align: middle !important;
  margin: 0 !important;
}


/* ============================================================
   TIMETABLE FILTER POPUP
   dialog.dialog is excluded from the [class*="timetable"] shield
   above (via :not([class*="dialog"])) and styled as a standard
   site card instead.
   ============================================================ */
dialog.dialog {
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 1px solid var(--color-border) !important;
  border-radius: 14px !important;
  padding: 0 !important;
  -webkit-box-shadow: var(--shadow-md) !important;
  box-shadow: var(--shadow-md) !important;
  overflow: visible !important;
  /* Fixed position anchors the dialog near the Filter button (top right) */
  position: fixed !important;
  top: 120px !important;
  right: 32px !important;
  left: auto !important;
  margin: 0 !important;
  max-width: min(340px, calc(100vw - 24px)) !important;
}
dialog.dialog::backdrop {
  background: #04142040 !important;
}
dialog.dialog > div,
dialog.dialog .dialog__box,
dialog.dialog .dialog_box {
  padding: 26px 28px 28px !important;
  display: -webkit-flex !important;
  display: flex !important;
  -webkit-flex-direction: column !important;
  flex-direction: column !important;
  gap: 18px !important;
  box-sizing: border-box !important;
}
dialog.dialog [class*="header"] {
  margin: 0 0 6px !important;
  padding: 0 !important;
  font-weight: 700 !important;
  color: var(--color-ink) !important;
}
dialog.dialog .filter,
dialog.dialog [role="combobox"] {
  margin: 0 !important;
  width: 100% !important;
}
main#main [class*="timetable"] [class*="filter"] select,
main#main [class*="timetable"] [class*="filter"] .select,
main#main [class*="timetable"] [class*="filter"] input {
  margin: 6px 0 !important;
}


/* ============================================================
   LOGIN CARD
   The hydrated DOM wraps the login form in an Envibe
   popup__container injected at runtime, so the form and its
   parts are targeted directly with no structural assumptions.
   ============================================================ */
form.login-form {
  background: var(--color-white) !important;
  background-color: var(--color-white) !important;
  border: 1px solid var(--color-border) !important;
  border-radius: 14px !important;
  -webkit-box-shadow: var(--shadow-md) !important;
  box-shadow: var(--shadow-md) !important;
  padding: 22px 24px 24px !important;
  box-sizing: border-box !important;
}
form.login-form * {
  box-sizing: border-box !important;
}
form.login-form div.ddmenu.login-form__fieldset {
  background: transparent !important;
  border: none !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
form.login-form ul.login-form__list,
form.login-form ul.login-form__list > li {
  display: block !important;
  text-align: left !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  list-style: none !important;
}
form.login-form ul.login-form__list {
  gap: 14px !important;
}
form.login-form label {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  white-space: normal !important;
  overflow-wrap: break-word !important;
  text-align: left !important;
  margin: 0 0 6px !important;
  padding: 0 !important;
  text-indent: 0 !important;
  position: static !important;
  left: auto !important;
  transform: none !important;
  font-size: 0.68rem !important;
  letter-spacing: 0.05em !important;
}
form.login-form input[type="checkbox"] + label {
  display: inline-block !important;
  width: auto !important;
  max-width: none !important;
  margin: 0 0 0 8px !important;
  font-size: inherit !important;
  letter-spacing: inherit !important;
}
form.login-form input.text-box {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
}
/* ============================================================
   LOGIN LABEL TEXT SWAP
   Replaces the long "Membership Number or Email Address" label
   with shorter text that fits the card comfortably.
   ============================================================ */
form.login-form label[for="login-form-username"] {
  font-size: 0 !important;
  color: transparent !important;
  line-height: 0 !important;
  overflow: hidden !important;
  height: auto !important;
}
form.login-form label[for="login-form-username"]:before {
  content: "EMAIL OR MEMBER NUMBER" !important;
  font-size: 0.73rem !important;
  color: var(--color-text-muted) !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.08em !important;
  line-height: 1.4 !important;
  display: block !important;
  padding-left: 4px !important;
}