/*
======================================================================
Enfold Child Theme – Custom CSS
Author: Happy Monday
Description: TekapoBus "Lake & Stone" design system - global tokens,
             typography, header, footer, buttons and reusable blocks.
             Loaded after Enfold core + dynamic CSS (see functions.php).
Version: 1.0
Last Updated: 2026-07 (v2 rebrand: Kanit+Roboto type, neutral grey paper,
             dark ink header, teal Book pill, cyan dark-head accent)
======================================================================
*/

/* ==================================================================
   1. DESIGN TOKENS  (Lake & Stone)
   ================================================================== */
:root {
  --ink:        #1B2225;
  --charcoal:   #36413F;
  --slate:      #1B2225;   /* v2: body text darkened (was #5E6A65) */
  --warm-grey:  #8A8678;
  --stone:      #D9D1BE;
  --cream:      #F4EFE3;
  --paper:      #F5F5F5;    /* v2: neutral light grey (was warm cream #FAF6EC) */
  --teal:       #0F6E70;
  --teal-deep:  #0A4E50;
  --lake:       #1FA5A5;
  --lake-pale:  #DCEDED;
  --tussock:    #C99B4A;
  --lupin:      #6E6CAE;
  --line:       #E4DECF;
  --cyan:       #63C2D9;    /* v2: brighter accent for <em> on dark heads */

  /* v2 type system: Kanit (display headings) + Roboto (body + uppercase labels) */
  --font-display: 'Kanit', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-body:    'Roboto', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-sans:    var(--font-body);                 /* back-compat alias -> body */
  --font-mono:    'Roboto', system-ui, sans-serif;  /* labels: Roboto, uppercased/tracked by rules */

  --wrap: 1320px;
  --gutter: 56px;
  --radius-pill: 999px;
  --radius-panel: 24px;
  --radius-card: 14px;
}

/* ==================================================================
   2. BASE TYPOGRAPHY
   ================================================================== */
.responsive #top,
body {
  font-family: var(--font-sans);
  color: var(--charcoal);
  background-color: var(--paper);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
/* Body font family (not background) on paragraphs */
.responsive #top .container p { font-family: var(--font-sans); color: var(--charcoal); }

/* Page background (Enfold wrappers) */
#top #wrap_all,
#main,
.html_header_top.html_header_sticky #main {
  background-color: var(--paper);
}

/* Headings - Inter, light weight, tight tracking, ink */
.responsive #top h1,
.responsive #top h2,
.responsive #top h3,
.responsive #top h4,
.responsive #top h5,
.responsive #top h6,
#top .av-special-heading .av-special-heading-tag,
#top .avia-team-member .av-team-member-name {
  font-family: var(--font-body);   /* base: h3-h6 = Roboto; h1/h2 overridden to Kanit below */
  color: var(--ink);
  font-weight: 400;
  letter-spacing: -0.02em;
  line-height: 1.12;
}

/* v2: only the display headings (h1, h2) use Kanit; h3+ stay Roboto */
.responsive #top h1,
.responsive #top h2,
#top .av-special-heading h1.av-special-heading-tag,
#top .av-special-heading h2.av-special-heading-tag { font-family: var(--font-display); }

.responsive #top h1,
#top .av-special-heading h1.av-special-heading-tag {
  font-size: clamp(44px, 6vw, 96px);
  line-height: 0.98;
  letter-spacing: -0.03em;
}
.responsive #top h2,
#top .av-special-heading h2.av-special-heading-tag { font-size: 32px; }
.responsive #top h3 { font-size: 19px; font-weight: 500; }

/* Enfold's base layout.css uppercases ALL content headings
   (.template-page .entry-content-wrapper h1/h2). The v2 design is sentence-case
   throughout (uppercase is reserved for the mono .hm-label/.hm-eyebrow kickers) - undo it. */
#top .template-page .entry-content-wrapper h1,
#top .template-page .entry-content-wrapper h2 { text-transform: none; }

/* Italic accent words in teal (design pattern: <em> inside headings) */
.responsive #top h1 em,
.responsive #top h2 em,
.responsive #top h3 em,
#top .av-special-heading .av-special-heading-tag em {
  font-style: italic;
  color: var(--teal);
  font-weight: 400;
}

/* Body copy */
.responsive #top .container p,
#top .template-page .entry-content-wrapper p {
  font-size: 15.5px;
  line-height: 1.75;
  color: var(--slate);
}

/* Links */
#top a { color: var(--teal); }
#top a:hover { color: var(--lake); }

/* ==================================================================
   3. HELPERS  (mono eyebrows / labels)
   ================================================================== */
.mono,
.hm-eyebrow {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--warm-grey);
}
/* Eyebrow with the 28px teal leading hairline */
.hm-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--teal);
}
.hm-eyebrow::before {
  content: '';
  width: 28px;
  height: 1px;
  background: var(--teal);
}

/* ==================================================================
   4. LAYOUT
   ================================================================== */
.responsive #top .container { max-width: var(--wrap); }
.responsive #top .av_one_full .flex_column,
#top .av-section-color-overlay-wrap { }
hr, .hr-invisible { border-color: var(--stone); }

/* Hairline dividers */
.hm-hairline { height: 1px; background: var(--stone); border: 0; margin: 0; }

/* ==================================================================
   5. BUTTONS  (pill - ink fill, cream text, teal hover)
   ================================================================== */
#top .avia-button,
#top .avia_ajax_form .button,
.hm-btn {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 15px;
  letter-spacing: 0;
  border-radius: var(--radius-pill);
  padding: 15px 30px;
  border: none;
  background-color: var(--ink);
  color: var(--paper);
  text-transform: none;
  transition: background-color .18s ease, color .18s ease, transform .18s ease;
}
#top .avia-button:hover,
#top .avia_ajax_form .button:hover,
.hm-btn:hover {
  background-color: var(--teal);
  color: var(--paper);
}
/* Light pill (used on dark panels: cream fill -> lake hover) */
#top .avia-button.avia-color-theme-color-subtle,
.hm-btn--light {
  background-color: var(--cream);
  color: var(--ink);
}
#top .avia-button.avia-color-theme-color-subtle:hover,
.hm-btn--light:hover {
  background-color: var(--lake);
  color: var(--ink);
}

/* ==================================================================
   6. HEADER / PRIMARY NAV  (v2: dark ink bar, white nav, teal Book pill)
   ================================================================== */
#top #header,
#top #header_main,
#top #header_main_alternate,
.html_header_top.html_header_sticky #header .header_bg {
  background-color: var(--ink) !important;
  box-shadow: none;
}
#top #header { /*border-bottom: 1px solid rgba(255,255,255,.12);*/ }
#top #header .header_bg { opacity: 1 !important; }

/* Logo sizing (white logo on the dark bar).
   Enfold's base rule is `.responsive .logo img { max-height: 80px; height: auto !important }`.
   The white logo is very wide (2560px, ~9:1), so an 80px cap renders it enormous and it
   overflows the bar. Re-cap with a winning specificity (`#top` adds an id) + !important.
   Only the image height is touched - Enfold's own vertical centering is left intact. */
.responsive #top .logo img,
.responsive #top .logo a img,
#top .logo img {
  max-height: 28px !important;   /* matches the v2 proof header logo (360x40) */
  width: auto !important;
  height: auto !important;
}
/* Vertically center the (short) 40px logo against the taller nav row on desktop.
   Enfold top-aligns the logo inside a full-height .logo container; the old logo
   nearly filled the bar so it wasn't noticeable, but the 40px v2 logo needs it.
   Scoped to the desktop nav (>=990px) so the mobile table-cell layout is untouched. */
@media only screen and (min-width: 990px) {
  #top .logo,
  #top .logo a {
    display: flex !important;
    align-items: center !important;
  }
}
/* <picture> wrapper added by functions.php mobile_header_logo(): block it so it behaves exactly
   like the bare <img> did inside Enfold's table-cell (phone) / our flex (desktop) logo link. */
#top .logo picture { display: block; line-height: 0; }
#top #header_main .container { }

/* Nav links (white on dark) */
#top .av-main-nav > li > a {
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 500;
  color: rgba(255,255,255,.82);
}
#top .av-main-nav > li > a:hover,
#top .av-main-nav > li.current-menu-item > a,
#top .av-main-nav > li.current_page_item > a {
  color: #fff;
}
/* Hover/active underline under the nav items (user-requested; the base v2 hover is colour-only).
   Enfold's built-in .avia-menu-fx bar sits at the bottom of the FULL-HEIGHT link (~34px below the
   text), so instead draw a 2px white line under the text span itself - it tracks the text and holds
   position when the sticky header resizes. Shown on hover + the current page item. */
#top .av-main-nav > li > a .avia-menu-fx { display: none; }
#top .av-main-nav > li > a .avia-menu-text { position: relative; }
#top .av-main-nav > li > a .avia-menu-text::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: -6px; height: 2px; background-color: var(--teal);
  opacity: 0; transition: opacity .18s ease;
}
#top .av-main-nav > li:hover > a .avia-menu-text::after,
#top .av-main-nav > li.current-menu-item > a .avia-menu-text::after,
#top .av-main-nav > li.current_page_item > a .avia-menu-text::after { opacity: 1; }

/* Remove Enfold header search icon (not part of the design) */
#top #header #menu-item-search { display: none !important; }

/* Mobile burger menu (v2): full-screen INK overlay, LEFT-aligned items, brand colours - replaces
   Enfold's default 350px cream slide-in panel with centred dark text. */
.responsive #top .av-burger-overlay,
.responsive #top .av-burger-overlay .av-burger-overlay-scroll,
.responsive #top .av-burger-overlay .av-burger-overlay-bg { background-color: var(--ink) !important; }
.responsive #top .av-burger-overlay .av-burger-overlay-bg { opacity: 1 !important; }
/* neutralise the side-overlay slide transform so the panel simply fills the screen when the overlay
   is shown (Enfold hides the whole overlay with display:none when closed) */
html #top .av-burger-overlay .av-burger-overlay-scroll { width: 100% !important; left: 0 !important; right: 0 !important; margin: 0 !important; transform: none !important; }
html #top .av-burger-overlay .av-burger-overlay-inner { text-align: left !important; width: 100% !important; max-width: none !important; transform: none !important; left: 0 !important; }
.responsive #top #av-burger-menu-ul { text-align: left !important; width: 100% !important; }
.responsive #top #av-burger-menu-ul li,
.responsive #top #av-burger-menu-ul li > a { border: none !important; }
.responsive #top #av-burger-menu-ul > li { text-align: left !important; }
.responsive #top #av-burger-menu-ul li > a { color: #fff !important; text-align: left !important; justify-content: flex-start !important; padding: 16px 26px !important; font-family: var(--font-body) !important; font-size: 17px !important; font-weight: 500 !important; letter-spacing: 0 !important; }
.responsive #top #av-burger-menu-ul li > a:hover,
.responsive #top #av-burger-menu-ul li.current-menu-item > a,
.responsive #top #av-burger-menu-ul li.current_page_item > a { color: var(--cyan) !important; }
/* "The Journey" children: indented + dimmed, with the grey descriptor (as on the desktop dropdown) */
.responsive #top #av-burger-menu-ul ul { background: transparent !important; border: none !important; }
.responsive #top #av-burger-menu-ul ul li > a { color: var(--teal) !important; font-size: 15px !important; font-weight: 600 !important; padding: 12px 26px 12px 42px !important; }
.responsive #top #av-burger-menu-ul .hm-dd-ar { display: none !important; }
.responsive #top #av-burger-menu-ul .hm-dd-sub { display: block !important; color: var(--warm-grey) !important; font-size: 12px !important; font-weight: 400 !important; letter-spacing: 0 !important; text-transform: none !important; margin-top: 3px !important; }
/* submenu expand caret + hamburger/close colour */
.responsive #top #av-burger-menu-ul .av-arrow-move-out,
.responsive #top #av-burger-menu-ul li .avia_mega_div,
.responsive #top .av-burger-overlay .av_menu_icon .av-hamburger-inner,
.responsive #top .av-burger-overlay .av-hamburger-inner::before,
.responsive #top .av-burger-overlay .av-hamburger-inner::after { background-color: #fff !important; color: #fff !important; }

/* Dropdown ("The Journey") - v2 light card: bold dark label, faint arrow, grey descriptor.
   (The ink header bar is dark, but the dropdown panel itself is light, per the v2 design.) */
#top .av-main-nav ul {
  background-color: var(--paper);
  border: 1px solid var(--stone);
  border-radius: 14px;
  overflow: hidden;
  padding: 8px;
  width: auto !important;
  min-width: 300px;
  box-shadow: 0 22px 48px -22px rgba(27,34,37,.5);
}
#top .av-main-nav ul li { width: 100%; }
#top .av-main-nav ul li a {
  background-color: transparent;
  color: var(--charcoal);
  font-size: 13.5px;
  font-weight: 600;
  border-bottom: none;
  border-radius: 9px;
  padding: 11px 13px;
  white-space: nowrap;
}
#top .av-main-nav ul li a:hover { color: var(--teal) !important; background-color: var(--cream); }
/* The faint "->" arrow and grey descriptor are baked into each child label as spans
   (`.hm-dd-ar` / `.hm-dd-sub`) because Enfold's menu walker only renders the "Description"
   field for TOP-level items, and exposes no filter to add it on dropdown children. */
#top .av-main-nav ul li a .hm-dd-ar { opacity: .4; font-weight: 400; margin: 0 8px 0 10px; }
#top .av-main-nav ul li a .hm-dd-sub {
  font-weight: 400;
  color: var(--warm-grey);
  font-size: 11px;
  letter-spacing: 0;
  text-transform: none;
}

/* Book = persistent pill CTA (menu item given class "book-cta").
   The <a> spans the full header height, so the pill lives on the inner
   .avia-menu-text span and the anchor background is cleared. */
#top .av-main-nav > li.book-cta { margin-left: 10px; }
#top .av-main-nav > li.book-cta > a,
#top .av-main-nav > li.book-cta > a:hover {
  background-color: transparent !important;
  color: #fff !important;
}
#top .av-main-nav > li.book-cta > a .avia-menu-text {
  display: inline-block;
  background-color: var(--teal);
  color: #fff;
  border-radius: var(--radius-pill);
  padding: 11px 22px;
  line-height: 1;
  font-weight: 600;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: .06em;
  transition: background-color .18s ease, color .18s ease;
}
/* Trailing arrow, matching the page CTA button (Book seats ->). Must reset the
   generic nav-underline ::after above (absolute, bottom, hover-only) so the arrow
   instead flows inline inside the pill and shows at all times. */
#top .av-main-nav > li.book-cta > a .avia-menu-text::after {
  content: "\2192";
  position: static;
  height: auto;
  background: none;
  opacity: 1;
  margin-left: 8px;
}
#top .av-main-nav > li.book-cta > a:hover .avia-menu-text {
  background-color: var(--teal-deep);
  color: #fff;
}
#top .av-main-nav > li.book-cta > a .avia-menu-fx { display: none; }

/* v2 header layout: CENTRE the primary nav (Enfold right-aligns .main_menu), and keep the Book pill
   hard-RIGHT. Span .main_menu full-width and flex-centre the nav; the Book item is pulled out to the
   right edge (absolute, relative to the full-width .main_menu). pointer-events:none on the empty menu
   area lets the logo (underneath, far left) stay clickable; the nav items re-enable it. Desktop only -
   at/below 1300px the burger menu takes over (see the burger block below). */
@media only screen and (min-width: 1301px) {
  #top #header_main .container { position: relative; }
  #top .main_menu { position: absolute !important; left: 0 !important; right: 0 !important; width: 100% !important; float: none !important; pointer-events: none; }
  #top .av-main-nav-wrap { width: 100% !important; float: none !important; }
  #top .av-main-nav { display: flex !important; justify-content: center !important; align-items: center; width: 100%; }
  #top .av-main-nav > li { float: none !important; pointer-events: auto; }
  #top .av-main-nav > li.book-cta { position: absolute; right: 0; top: 50%; transform: translateY(-50%); margin-left: 0; }
}

/* v2 burger header: RAISE the switch point so the burger takes over at/below 1300px.
   The centred desktop nav (above) overruns the wide logo below ~1280px, so instead of the
   old "phones only" (<=767px) switch we run the burger for the whole <=1300px range. Enfold
   natively shows the burger only <=767px, so here we force it on ourselves, fold the horizontal
   items away, and pin the menu row hard-right - holding the burger plus the persistent Book
   Seats pill (order: burger, then pill). Enfold's toggle + slide-in overlay are bound on page
   load (not width-gated), so forcing the burger visible above 767px works fully. */
@media only screen and (max-width: 1300px) {
  #top .av-burger-menu-main { display: block; }
  #top #header_main .container { position: relative; }
  #top #wrap_all .main_menu { position: absolute; top: 0; right: 0; left: auto; width: auto; float: none; }
  #top .main_menu .av-main-nav-wrap { width: auto; float: none; }
  #top .main_menu .av-main-nav { display: flex !important; flex-direction: row; align-items: center; justify-content: flex-end; gap: 12px; width: auto; }
  #top .main_menu .av-main-nav > li { float: none; }
  #top .main_menu .av-main-nav > li.menu-item { display: none; }
  #top .main_menu .av-main-nav > li.av-burger-menu-main { display: block; order: 1; margin: 0 !important; }
  #top .main_menu .av-main-nav > li.book-cta { display: inline-block !important; order: 2; margin: 0 !important; }
  #top .main_menu .av-main-nav > li.book-cta > a { padding: 0 !important; min-height: 0 !important; height: auto !important; line-height: 1 !important; }
  #top .main_menu .av-main-nav > li.book-cta > a .avia-menu-text { padding: 9px 15px; font-size: 12px; }
  /* Burger lines: the middle bar defaults to --charcoal (invisible on the --ink header);
     unify it to --warm-grey to match the top/bottom bars. */
  #top #header .av-burger-menu-main .av-hamburger-inner { --enfold-header-color-color: var(--warm-grey); }
}

/* Phone logo (<= 767px). functions.php `mobile_header_logo()` swaps the wide white logo for the
   STACKED mark at this width via a <picture> <source>, so lift the 28px desktop cap here: the
   stacked mark is ~1.73:1 and needs height to read. 52px tall (~90px wide) sits inside Enfold's
   80px mobile logo row with the burger + Book pill alongside. Keep `sizes="100px"` in
   functions.php in step with the rendered width. Breakpoint = MOBILE_LOGO_MAX_WIDTH there. */
@media only screen and (max-width: 767px) {
  #top .logo a { max-width: 130px !important; }
  /* Same three selectors as the 28px desktop cap above (incl. the (1,2,2) `.logo a img` one) so
     this later rule wins on source order, not specificity. */
  .responsive #top .logo img,
  .responsive #top .logo a img,
  #top .logo img { max-height: 52px !important; max-width: 130px !important; width: auto !important; height: auto !important; }
}
@media only screen and (max-width: 1400px) {
	.responsive .logo a {
	    display: table-cell;
	    vertical-align: middle;
		height: 88px;
	}
}
/* ==================================================================
   7. FOOTER  (v2: single full-width block - mast + inline grouped links
   with cyan labels + bottom bar with Happy Monday credit).
   Self-contained `.hm-footer-v2` inside Enfold's #footer widget area.
   ================================================================== */
#top #footer { background-color: var(--ink); padding: 0 !important; }
#top #footer .container { max-width: none; width: 100%; padding: 0; }
#top #footer .flex_column, #top #footer .widget { margin: 0; }
#top #socket { display: none; }   /* copyright now lives in the footer bottom bar */

#top #footer .hm-footer-v2 {
  max-width: 1600px; margin: 0 auto; padding: 80px 56px 32px;
  font-family: var(--font-body); color: var(--cream);
}
#top #footer .hm-footer-v2 a { color: var(--cream); text-decoration: none; border: none; box-shadow: none; }
#top #footer .hm-footer-v2 a:hover { color: var(--lake); }

/* mast: logo + right-aligned uppercase tagline */
#top #footer .hm-footer-v2 .foot-mast {
  display: grid; grid-template-columns: auto 1fr; gap: 40px; align-items: center;
  padding-bottom: 36px; margin-bottom: 14px; border-bottom: 1px solid rgba(244,239,227,.12);
}
#top #footer .hm-footer-v2 .foot-mast img { height: 36px !important; max-height: 36px !important; width: auto !important; display: block; }
#top #footer .hm-footer-v2 .foot-mast p {
  color: #fff; font-size: 12px; line-height: 1.5; letter-spacing: .16em;
  text-transform: uppercase; font-weight: 600; justify-self: end; text-align: right; max-width: none; margin: 0;
}

/* grouped inline links with cyan labels */
#top #footer .hm-footer-v2 .foot-links {
  display: flex; flex-direction: column; gap: 18px; list-style: none;
  padding: 0 0 36px; margin: 0 0 28px; border-bottom: 1px solid rgba(244,239,227,.12);
}
#top #footer .hm-footer-v2 .foot-links .group {
  position: relative; display: flex; align-items: baseline; flex-wrap: wrap; gap: 6px 14px; padding-left: 132px; margin: 0;
}
#top #footer .hm-footer-v2 .foot-links .lbl {
  font-family: var(--font-body); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--cyan); color: rgba(244,239,227,.42); min-width: 110px; flex-shrink: 0; position: absolute; left: 0; top: 0;
}
#top #footer .hm-footer-v2 .foot-links a { font-size: 14px; line-height: 1.5; }
#top #footer .hm-footer-v2 .foot-links .sep { color: rgba(244,239,227,.22); font-size: 13px; user-select: none; }

/* bottom bar: copyright + Happy Monday credit */
#top #footer .hm-footer-v2 .foot-bot {
  display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap;
  font-size: 12px; color: rgba(244,239,227,.5); letter-spacing: .02em;
}
#top #footer .hm-footer-v2 .foot-bot a { color: rgba(244,239,227,.7); }
#top #footer .hm-footer-v2 .foot-bot .hm-credit { display: inline-flex; align-items: center; gap: 10px; color: rgba(244,239,227,.55); }
#top #footer .hm-footer-v2 .foot-bot .hm-credit .hm-label { font-size: 11px; letter-spacing: .04em; margin-bottom: 0px; color: rgba(244,239,227,.55); }
#top #footer .hm-footer-v2  .foot-bot .hm-credit:hover .hm-label { color: rgba(244,239,227,.9); }
#top #footer .hm-footer-v2 .foot-bot .hm-credit img { height: 15px !important; max-height: 15px !important; width: auto !important; display: block; opacity: .8; }
#top #footer .hm-footer-v2 .foot-bot .hm-credit:hover { color: rgba(244,239,227,.9); }
#top #footer .hm-footer-v2 .foot-bot .hm-credit:hover img { opacity: 1; }

@media only screen and (max-width: 767px) {
  #top #footer .hm-footer-v2 { padding: 64px 20px 24px; }
  #top #footer .hm-footer-v2 .foot-mast { grid-template-columns: 1fr; gap: 18px; padding-bottom: 28px; margin-bottom: 28px; }
  #top #footer .hm-footer-v2 .foot-mast p { justify-self: start; text-align: left; }
  #top #footer .hm-footer-v2 .foot-links { display: grid; grid-template-columns: 1fr 1fr; gap: 26px 20px; }
  #top #footer .hm-footer-v2 .foot-links .group { flex-direction: column; align-items: flex-start; gap: 6px; position: static; padding-left: 0; }
  #top #footer .hm-footer-v2 .foot-links .lbl { min-width: 0; margin-bottom: 4px; position: static; }
  #top #footer .hm-footer-v2 .foot-links .sep { display: none; }
  #top #footer .hm-footer-v2 .foot-bot { flex-direction: column; align-items: flex-start; gap: 10px; }
}

/* ==================================================================
   8. REUSABLE CTA STRIP  (v2: inset rounded panel with the cta-highway photo,
   text-left / button-right row). Apply .hm-cta to an ALB Color Section.
   ================================================================== */
/* The section is a transparent full-width wrapper: it only supplies vertical
   spacing (extra room below, before the footer). The visible panel is Enfold's
   inner .container, which is already reliably centred (margin:0 auto). */
.hm-cta {
  background: transparent !important;
  padding: 24px 0 96px !important;
  min-height: 0 !important; max-width: none !important; margin: 0 !important; border-radius: 0 !important;
}
/* panel = the centred .container: cta-highway photo bg + rounded inset */
#top .hm-cta .container {
  max-width: 1500px !important;
  padding: 138px 40px !important;
  border-radius: var(--radius-panel);
  overflow: hidden;
  color: var(--cream);
  background-color: var(--ink) !important;
  /*background-image:
    linear-gradient(90deg, rgba(15,20,22,.72) 0%, rgba(15,20,22,.45) 42%, rgba(15,20,22,.12) 72%),
    url('http://tekapobuslocal.local/wp-content/uploads/2026/07/cta-highway.jpg') !important;  */
  background-image: url('https://tekapobus.co.nz/wp-content/uploads/2026/07/cta-highway.jpg') !important;
  background-size: cover !important;
  background-position: center bottom !important;
  background-repeat: no-repeat !important;
}
/* collapse Enfold's content wrappers so the row spans the full panel width
   (they otherwise inset the text/button well beyond the panel padding) */
#top .hm-cta .container > .content,
#top .hm-cta .content > .entry-content-wrapper {
  width: 100% !important; max-width: none !important; padding: 0 !important; margin: 0 !important;
}
/* content as a single row spanning the panel: text hard-left, button hard-right.
   The real flex children are .av_textblock_section (wraps the textblock) and .avia-button-wrap -
   so make the section fill (flex:1) and shove the button to the far edge with an auto margin. */
#top .hm-cta .flex_column {
  display: flex !important; align-items: center; flex-wrap: nowrap; gap: 40px;
  width: 100% !important; max-width: none !important; margin: 0 !important; padding: 0 !important;
}
#top .hm-cta .flex_column > .av_textblock_section { flex: 1 1 auto !important; min-width: 0; margin: 0 !important; padding: 0 !important; }
#top .hm-cta .avia_textblock { max-width: 620px; margin: 0 !important; padding: 0 !important; }
#top .hm-cta .flex_column > .avia-button-wrap {
  flex: 0 0 auto !important; margin: 0 0 0 auto !important; padding: 0 !important; text-align: right !important;
}
.hm-cta h1, .hm-cta h2, .hm-cta .av-special-heading-tag {
  color: var(--cream) !important; text-transform: none !important; font-weight: 500 !important;
  font-size: clamp(30px, 3.6vw, 50px) !important; line-height: 1.08 !important; margin: 0 0 8px !important;
}
.hm-cta h2 em, .hm-cta .av-special-heading-tag em { color: var(--cyan) !important; }
.hm-cta p { color: rgba(255,255,255,.92) !important; font-size: 30px !important; margin: 0 !important; max-width: 575px; }

/* Panels / cards */
.hm-card {
  background: #fff;
  border: 1px solid var(--stone);
  border-radius: var(--radius-card);
}

/* ==================================================================
   9. RESPONSIVE
   ================================================================== */
@media only screen and (max-width: 1000px) {
  :root { --gutter: 28px; }
}
@media only screen and (max-width: 767px) {
  :root { --gutter: 20px; }
  .responsive #top h1,
  #top .av-special-heading h1.av-special-heading-tag { font-size: clamp(40px, 12vw, 56px); }
  .hm-cta { padding: 16px 0 56px !important; }
  #top .hm-cta .container { padding: 32px 24px !important; }
  #top .hm-cta .flex_column { flex-direction: column; align-items: flex-start; gap: 22px; }
  #top .hm-cta .avia-button-wrap { text-align: left; }
  .hm-cta h1, .hm-cta h2, .hm-cta .av-special-heading-tag { font-size: 30px !important; }
}

/* ==================================================================
   10. INFO-PAGE SHELL  (FAQ / Pricing / legal - shared template)
   Ported from the proof info-page.css, scoped to .hm- classes.
   ================================================================== */
#top .hm-title { margin: 0; }
#top .hm-lede { font-size: 17px !important; color: var(--slate); line-height: 1.7; }
#top .hm-pagehead .flex_column { margin-top: 0; }

/* sticky numbered contents */
#top .hm-toc { font-size: 15px; border-left: 1px solid var(--cyan); padding-left: 20px; }
/* Sticky TOC (v2 parity): Enfold renders the two info-shell columns as FLOATED blocks that don't
   stretch, so the TOC's column is only as tall as the TOC itself and position:sticky has no room to
   travel (it scrolls away). Fix: make the shared row a flex container - its height then becomes the
   tall content column's height - and stick the whole TOC COLUMN within it. :has(.hm-toc) scopes this
   to only the wrapper/column that actually holds a TOC, so no other Enfold columns are affected. */
@media only screen and (min-width: 1001px) {
  /* Enfold prevents horizontal scroll with overflow-x:hidden on <html>/<body>/#wrap_all - but a
     visible+hidden pair forces overflow-y to compute to AUTO, so each becomes a (non-scrolling)
     scroll container that traps position:sticky. overflow-x:clip clips horizontally WITHOUT creating
     a scroll container (and does not force overflow-y to auto), so sticky reaches the viewport.
     Scoped to TOC pages, where there are no full-width sliders that need the hidden clip. */
  html:has(.hm-toc), #top:has(.hm-toc), #top #wrap_all:has(.hm-toc) { overflow-x: clip; overflow-y: visible; }
  #top .entry-content-wrapper:has(.hm-toc) { display: flex; align-items: flex-start; }
  #top .flex_column:has(.hm-toc) { position: sticky; top: 120px; align-self: flex-start; }
}
#top .hm-toc .lbl { font-family: var(--font-mono); font-size: 15px; letter-spacing: .14em; text-transform: uppercase; color: var(--warm-grey); margin-bottom: 14px; }
#top .hm-toc ul { list-style: none; margin: 0; display: flex; flex-direction: column; gap: 10px; }
#top .hm-toc a { color: var(--charcoal); text-decoration: none; font-weight: 500; display: flex; gap: 10px; align-items: baseline; border: none; }
#top .hm-toc a:hover { color: var(--teal); }
#top .hm-toc a .n { font-family: var(--font-mono); font-size: 10px; letter-spacing: .08em; color: var(--warm-grey); }

/* article body */
#top .hm-article { max-width: 760px; }
#top .hm-article section { margin-bottom: 48px; scroll-margin-top: 120px; }
#top .hm-article section:last-child { margin-bottom: 0; }
#top .hm-article h2 { font-family: var(--font-display); font-size: 32px; font-weight: 400; letter-spacing: -.015em; color: var(--ink); margin: 0 0 12px; line-height: 1.15; display: flex; align-items: baseline; gap: 16px; }
#top .hm-article h2 .n { display: none; font-family: var(--font-mono); font-size: 11px; color: var(--lupin); font-weight: 500; letter-spacing: .14em; flex-shrink: 0; }
#top .hm-article h3 { font-size: 19px; font-weight: 500; color: var(--ink); margin: 22px 0 6px; }
#top .hm-article p { font-size: 15.5px; color: var(--slate); line-height: 1.75; margin-bottom: 14px; }
#top .hm-article ul, #top .hm-article ol { margin: 8px 0 18px 20px; color: var(--slate); }
#top .hm-article li { margin-bottom: 8px; line-height: 1.7; font-size: 15.5px; }

/* Legal clause numbering (v2 Terms): "2.1 / 3.2" main clauses (section number . clause)
   and "(a) (b) (c)" sub-items, via CSS counters. `sec` counts .hm-article sections. */
#top .hm-article { counter-reset: sec; }
#top .hm-article section { counter-increment: sec; }
#top .hm-article ol.clauses { counter-reset: clause; list-style: none; margin: 14px 0 8px; padding: 0; }
#top .hm-article ol.clauses > li { counter-increment: clause; position: relative; padding-left: 3.6em; margin: 0 0 14px; line-height: 1.72; }
#top .hm-article ol.clauses > li::before {
  content: counter(sec) "." counter(clause); position: absolute; left: 0; top: .18em;
  color: var(--teal); font-family: var(--font-body); font-size: .74em; letter-spacing: .02em; font-weight: 500;
}
#top .hm-article ol.clauses ol.sub { counter-reset: sub; list-style: none; margin: 10px 0 2px; padding: 0; }
#top .hm-article ol.clauses ol.sub > li { counter-increment: sub; position: relative; padding-left: 2.6em; margin: 0 0 8px; line-height: 1.7; }
#top .hm-article ol.clauses ol.sub > li::before {
  content: "(" counter(sub, lower-alpha) ")"; position: absolute; left: 0; top: .1em;
  color: var(--warm-grey); font-family: var(--font-body); font-size: .74em;
}
#top .hm-article strong { color: var(--ink); font-weight: 600; }
#top .hm-article a { color: var(--teal); border-bottom: 1px solid var(--lake-pale); text-decoration: none; }
#top .hm-article a:hover { border-bottom-color: var(--teal); }
#top .hm-updated { font-family: var(--font-mono); font-size: 11px; letter-spacing: .05em; color: var(--warm-grey); }

/* Privacy "What we collect" data cards (v2): 2x2 grid of cream, cyan-bordered cards
   (the .lbl kickers - Required/Automatic/etc. - are hidden in the v2 design). */
#top .data-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; margin: 18px 0 22px; }
#top .data-card { background: var(--cream); border: 1px solid var(--cyan); border-radius: 14px; padding: 22px 24px; }
#top .data-card .lbl { display: none; }
#top .data-card h3 { font-family: var(--font-body); font-size: 18px; font-weight: 500; color: var(--ink); margin: 0 0 6px; letter-spacing: -.005em; }
#top .data-card p { font-size: 13.5px !important; color: var(--slate); line-height: 1.6; margin: 0; }

/* Privacy "Who we share it with" vendor table (v2): name | purpose | location,
   hairline-separated rows (stone container bg shows through the 1px row gaps). */
#top .vendors { display: flex; flex-direction: column; gap: 1px; background: var(--stone); border: 1px solid var(--stone); border-radius: 12px; overflow: hidden; margin: 14px 0 18px; }
#top .vendor { background: var(--paper); padding: 16px 20px; display: grid; grid-template-columns: 140px 1fr auto; gap: 18px; align-items: center; }
#top .vendor .name { font-family: var(--font-body); font-size: 17px; color: var(--ink); }
#top .vendor .purp { font-size: 13.5px; color: var(--slate); }
#top .vendor .where { font-family: var(--font-body); font-size: 10px; color: var(--warm-grey); letter-spacing: .12em; text-transform: uppercase; text-align: right; white-space: nowrap; }

@media only screen and (max-width: 767px) {
  #top .data-grid { grid-template-columns: 1fr; }
  #top .vendor { grid-template-columns: 1fr; gap: 4px; }
  #top .vendor .where { text-align: left; }
}

/* fare schedule table */
#top .hm-fare { margin: 8px 0 0; }
#top .hm-fare .frow { display: grid; grid-template-columns: 1fr auto; gap: 4px 24px; padding: 16px 0; border-bottom: 1px solid var(--line); }
#top .hm-fare .frow.head { padding: 0 0 8px; border-bottom: 1.5px solid var(--ink); }
#top .hm-fare .ftype { font-weight: 600; color: var(--ink); font-size: 16px; }
#top .hm-fare .fee { font-family: var(--font-mono); font-weight: 600; color: var(--teal); font-size: 16px; text-align: right; white-space: nowrap; }
#top .hm-fare .fee.free { color: var(--warm-grey); }
#top .hm-fare .fdesc { font-size: 13.5px; color: var(--slate); line-height: 1.55; grid-column: 1 / -1; }
#top .hm-fare .hm-note { color: var(--warm-grey); font-weight: 500; }
#top .hm-fare .frow.head .ftype, #top .hm-fare .frow.head .fee { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--warm-grey); font-weight: 500; }

/* CTA panel button (cream pill on the dark panel) */
#top .hm-cta .avia-button {
  background-color: var(--cream) !important; color: var(--ink) !important;
  text-transform: uppercase; letter-spacing: .06em; font-size: 14px; font-weight: 600;
  padding: 15px 32px; white-space: nowrap;
}
#top .hm-cta .avia-button:hover { background-color: #fff !important; color: var(--ink) !important; }

/* FAQ - native Enfold Accordion (av_toggle) styled to the Lake & Stone minimal look */
#top .togglecontainer, #top .avia-toggle-wrap { border: none; box-shadow: none; background: transparent; margin: 0 0 36px; }
#top .togglecontainer .single_toggle { border: none !important; border-top: 1px solid var(--cyan) !important; background: transparent; margin: 0; }
/* Each .single_toggle is the only child of its own .av_toggle_section, so :last-child would match
   EVERY item and give it a bottom border - which stacks against the next item's border-top and
   renders as a doubled hairline. Bottom-border only the genuinely last section instead. */
#top .togglecontainer .av_toggle_section:last-of-type .single_toggle { border-bottom: 1px solid var(--cyan) !important; }
#top .togglecontainer .single_toggle .toggler {
  background: transparent !important; border: none !important; color: var(--ink);
  font-family: var(--font-sans); font-weight: 600; font-size: 16px; letter-spacing: 0;
  padding: 18px 46px 18px 0; line-height: 1.4;
}
#top .togglecontainer .single_toggle .toggler:hover,
#top .togglecontainer .single_toggle .toggler.activeTitle { color: var(--teal); }
/* the +/- icon - v2 style: cyan-outline circle "+" (closed) -> filled teal circle "-" (open).
   Enfold draws the bars with borders; hide those and draw our own centred bars as pseudo-elements. */
#top .togglecontainer .single_toggle .toggler .toggle_icon {
  left: auto !important; right: 0 !important; top: 50% !important; margin-top: -14px !important;
  width: 28px !important; height: 28px !important;
  border: 1px solid var(--cyan) !important; border-radius: 50% !important;
  background: transparent !important; transition: background .15s ease, border-color .15s ease;
}
#top .togglecontainer .single_toggle .toggler .toggle_icon .vert_icon,
#top .togglecontainer .single_toggle .toggler .toggle_icon .hor_icon { display: none !important; }
#top .togglecontainer .single_toggle .toggler .toggle_icon::before,
#top .togglecontainer .single_toggle .toggler .toggle_icon::after {
  content: ''; position: absolute; top: 50%; left: 50%; background: var(--cyan);
  transition: background .15s ease, transform .15s ease;
}
#top .togglecontainer .single_toggle .toggler .toggle_icon::before { width: 11px; height: 1.5px; transform: translate(-50%, -50%); }
#top .togglecontainer .single_toggle .toggler .toggle_icon::after  { width: 1.5px; height: 11px; transform: translate(-50%, -50%); }
/* expanded (activeTitle): filled teal circle with a white "-" (rotate the vertical bar to overlap) */
#top .togglecontainer .single_toggle .toggler.activeTitle .toggle_icon { background: var(--teal) !important; border-color: var(--teal) !important; }
#top .togglecontainer .single_toggle .toggler.activeTitle .toggle_icon::before,
#top .togglecontainer .single_toggle .toggler.activeTitle .toggle_icon::after { background: #fff; }
#top .togglecontainer .single_toggle .toggler.activeTitle .toggle_icon::after { transform: translate(-50%, -50%) rotate(90deg); }
/* content: no box border (only the single_toggle hairline divides items) */
#top .togglecontainer .toggle_wrap,
#top .togglecontainer .toggle_wrap .toggle_content,
#top .togglecontainer .toggle_content { padding: 0 0 22px 0 !important; background: transparent; border: none !important; box-shadow: none !important; }
#top .togglecontainer .toggle_content, #top .togglecontainer .toggle_content p { color: var(--slate); font-size: 15.5px; line-height: 1.75; }
#top .togglecontainer .toggle_content a { color: var(--teal); border-bottom: 1px solid var(--lake-pale); text-decoration: none; }
#top .togglecontainer .toggle_content a:hover { border-bottom-color: var(--teal); }
#top .togglecontainer .toggle_content ul { margin: 8px 0 4px 20px; }
#top .togglecontainer .toggle_content li { color: var(--slate); font-size: 15px; margin-bottom: 6px; }
#top .hm-article h2[id] { scroll-margin-top: 120px; margin-bottom: 18px; }

/* FAQ category heading (native accordions live outside .hm-article, so this mirrors the
   .hm-article h2 look): Kanit, sentence-case, numbered, with a hairline underneath. */
#top .hm-faq-cat {
  font-family: var(--font-display); font-size: 26px; font-weight: 500; color: var(--ink);
  text-transform: none !important; letter-spacing: -.01em; line-height: 1.15;
  margin: 46px 0 4px; padding-bottom: 14px; /*border-bottom: 1px solid var(--stone);*/
  display: flex; align-items: baseline; gap: 14px; scroll-margin-top: 120px;
}
#top .hm-faqshell .av_three_fourth > .avia_textblock:first-child .hm-faq-cat { margin-top: 0; }
#top .hm-faq-cat .n { font-family: var(--font-mono); font-size: 11px; color: var(--lupin); font-weight: 500; letter-spacing: .14em; flex-shrink: 0; }
/* tighten the accordion under each category heading */
#top .hm-faqshell .togglecontainer { margin: 4px 0 0; }

/* "Still stuck?" help card (v2): cream rounded card, text left, dark pill button right */
#top .hm-stuck {
  background: var(--cream); border: 1px solid var(--stone); border-radius: 18px;
  padding: 32px; margin-top: 30px;
  display: grid; grid-template-columns: 1fr auto; gap: 24px; align-items: center;
}
#top .hm-stuck h3 { font-family: var(--font-body); font-size: 22px; font-weight: 500; color: var(--ink); margin: 0 0 6px; letter-spacing: -.01em; }
#top .hm-stuck p { color: var(--slate); font-size: 14px !important; line-height: 1.6; margin: 0; }
#top .hm-stuck .hm-stuck-btn {
  background: var(--ink); color: var(--paper) !important; text-decoration: none; border: none;
  padding: 14px 24px; border-radius: 999px; font-size: 13.5px; font-weight: 600; white-space: nowrap;
  display: inline-flex; align-items: center; gap: 8px; transition: background .18s ease;
}
#top .hm-stuck .hm-stuck-btn:hover { background: var(--teal); color: var(--paper) !important; }
@media only screen and (max-width: 767px) {
  #top .hm-stuck { grid-template-columns: 1fr; padding: 24px; }
}

@media only screen and (max-width: 1000px) {
  #top .hm-toc { position: static; border-left: none; border-top: 1px solid var(--stone); padding: 18px 0 0; margin-bottom: 24px; }
}

/* ==================================================================
   11. CUSTOM-PAGE UTILITIES (home / route / destinations / about / private hire)
   ================================================================== */
/* dark image hero: apply .hm-hero to a Color Section that has a bg image + dark overlay */
/* Dark base background so IMAGELESS hm-hero page-heads (info/policy/timetable) render dark.
   Uses background-COLOR only; Enfold sets section photos via per-post `background-image`, a
   different property, so image heroes keep their photo on top of this. */
#top .hm-hero { background-color: var(--ink); }
#top .hm-hero .hm-eyebrow { color: var(--lake); }
#top .hm-hero .hm-eyebrow::before { background: var(--lake); }
#top .hm-hero h1, #top .hm-hero .hm-title, #top .hm-hero h2 { color: var(--cream); }
#top .hm-hero h1 em, #top .hm-hero .hm-title em { color: var(--cyan); }
#top .hm-hero p, #top .hm-hero .hm-lede { color: rgba(244,239,227,.82); }

/* Legal/info page-head (v2 ".page-head"): a CREAM banner with a muted mountain silhouette and a
   dark heading whose accent word is teal - added via .hm-finehead ALONGSIDE .hm-hero, overriding the
   dark treatment above (later in the cascade + equal specificity = wins). Terms/Privacy/Luggage/
   Behaviour/Pricing/FAQ. The mountain is a child-theme ::before (not a per-post bg), so no Enfold
   CSS regen is needed. */
#top .hm-finehead { position: relative; overflow: hidden; background-color: #FAF6EC !important; }
#top .hm-finehead::before {
  content: ''; position: absolute; left: 0; bottom: 0; width: 850px; height: 128%;
  background: url('/wp-content/uploads/2026/07/hero-mountains.png') left bottom / contain no-repeat;
  opacity: .5; pointer-events: none; z-index: 0;
}
#top .hm-finehead > .container { position: relative; z-index: 1; }
#top .hm-finehead .hm-eyebrow { color: var(--ink); }
#top .hm-finehead .hm-eyebrow::before { display: none; }
#top .hm-finehead h1, #top .hm-finehead .hm-title, #top .hm-finehead h2 { color: var(--ink); }
#top .hm-finehead h1 em, #top .hm-finehead .hm-title em { color: var(--teal); }
#top .hm-finehead p, #top .hm-finehead .hm-lede { color: var(--slate) !important; }
/* Terms' "print." is upright in v2 (font-style:normal); the other pages' accents stay italic. */
#top.page-id-54 .hm-finehead h1 em, #top.page-id-54 .hm-finehead .hm-title em { font-style: normal; }
@media only screen and (max-width: 900px) {
  #top .hm-finehead::before { width: 66%; opacity: .42; }
}
/* Intro lede moved OUT of the page-head into the top of the content (2nd) column, above the first
   section - matches the v2 update. Sits as its own paragraph with a hairline under it. */
#top .hm-bodylede { font-size: 18px !important; line-height: 1.7; color: var(--slate) !important; max-width: 680px; margin: 0 0 30px !important; padding-bottom: 28px; border-bottom: 1px solid var(--line); }

/* Enfold draws a divider at the top of every color section two ways: (1) grid.min.css gives
   .container_wrap a border-top (colorset paints it stone), and (2) .avia-shadow adds an
   `inset 0 1px 3px rgba(0,0,0,.1)` top shadow. Both read as a hairline against the grey body.
   v2 separates sections with background + spacing, not dividers - remove both site-wide. */
#top .container_wrap { border-top: none !important; }
#top .avia-shadow { box-shadow: none !important; }

/* section mono label */
#top .hm-label { font-family: var(--font-mono); font-size: 15px; letter-spacing: .14em; text-transform: uppercase; color: var(--teal); margin-bottom: 10px; display: block; }
/* muted variant (v2 home fares label "Standard Fares - one way" is grey, not teal) */
#top .hm-label.hm-label--muted { color: #5E6A65; }

/* Destination intro sections (Lake Tekapo #45 + Christchurch #46) - match v2 .dst-section:
   the kicker is warm-grey 10px (not the default teal 15px; weight stays 400), and the intro
   heading + body are capped at 700px like v2 (max-width) instead of running full-width.
   Scoped by page (#top is <body id="top">); the max-width uses a direct-child selector so the
   attraction-card captions further down the page are unaffected. */
#top.page-id-45 .hm-label,
#top.page-id-46 .hm-label { font-size: 10px; color: var(--warm-grey); }
#top.page-id-45 .avia_textblock > h2,
#top.page-id-45 .avia_textblock > p,
#top.page-id-46 .avia_textblock > h2,
#top.page-id-46 .avia_textblock > p { max-width: 700px; }

/* quickfacts row of stat tiles */
#top .hm-quickfacts { display: flex; flex-wrap: wrap; gap: 36px; margin-top: 28px; }
#top .hm-quickfacts .qf .k { font-family: var(--font-mono); font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: var(--warm-grey); margin-bottom: 6px; }
#top .hm-quickfacts .qf .v { font-size: 22px; color: var(--ink); font-weight: 500; line-height: 1.2; }
#top .hm-quickfacts .qf .v small { display: block; font-size: 12.5px; color: var(--slate); font-weight: 400; margin-top: 3px; }
#top .hm-hero .hm-quickfacts .qf .k { color: rgba(244,239,227,.6); }
#top .hm-hero .hm-quickfacts .qf .v { color: var(--cream); }
#top .hm-hero .hm-quickfacts .qf .v small { color: rgba(244,239,227,.7); }

/* Timetable page hero ONLY (v2): scenic photo background + mountain-silhouette overlay, white
   eyebrow, cream heading with a cyan accent word, and the stats row below the heading, bottom-left.
   .hm-tthero sits alongside .hm-hero; the photo comes from the section's Enfold background-image. *//*
#top .hm-tthero { position: relative; overflow: hidden; isolation: isolate; background-color: #0A4E50 !important; background-position: center 60% !important; background-size: cover !important; }
#top .hm-tthero::before { content: ''; position: absolute; left: 0; bottom: 0; width: 100%; height: 111%; background: url('/wp-content/uploads/2026/07/hero-mountains.png') left bottom / auto 100% no-repeat; opacity: .55; z-index: 0; pointer-events: none; }
#top .hm-tthero > .container { position: relative; z-index: 1; }
#top .hm-tthero .hm-eyebrow { color: #fff; }
/* drop the leading hairline so "Daily schedule" left-aligns with the h1 (v2) *//*
#top .hm-tthero .hm-eyebrow::before { display: none; }
/* constrain the heading so it breaks after "linking" (v2 uses max-width:940px) *//*
#top .hm-tthero .hm-title { max-width: 940px; }
/* divider rule above the stats row (v2 meta-row border-top) *//*
#top .hm-tthero .hm-quickfacts { max-width: 410px; margin-top: 24px; padding-top: 20px; border-top: 1px solid rgba(244,239,227,.28); }
#top .hm-tthero .hm-quickfacts .qf .k { color: rgba(255,255,255,.8); }
#top .hm-tthero .hm-quickfacts .qf .v { color: #fff; }*/

/* Timetable page-head (2026-09-16, replaces the photo hero .hm-tthero): flat teal-deep head with the
   mountain-silhouette overlay, white eyebrow, cream heading with an upright aqua accent word, and the
   4-up stats row under a hairline. Markup = v2 ".page-head" (eyebrow.mono / h1 / .meta-block > .meta-row
   > .item > .l/.v with em.u units). Colours follow the v2 timetable override (__tt-hero-photo).
   .hm-tthead sits alongside .hm-hero; where a .hm-hero rule competes (h1 em colour) the selector
   repeats .hm-hero to out-rank it. No per-post Enfold bg image any more - the mountain is a ::before. */
#top .hm-tthead { position: relative; overflow: hidden; isolation: isolate; background-color: #0A4E50 !important; }
#top .hm-tthead::before { content: ''; position: absolute; left: 0; bottom: 0; width: 100%; height: 111%; background: url('/wp-content/uploads/2026/07/hero-mountains.png') left bottom / auto 100% no-repeat; opacity: .6; z-index: 0; pointer-events: none; }
#top .hm-tthead > .container { position: relative; z-index: 1; }
#top .hm-tthead .page-head { display: block; }
#top .hm-tthead .page-head .eyebrow { display: block; font-family: var(--font-mono); font-size: 15px; letter-spacing: .14em; text-transform: uppercase; color: #fff; margin: 0 0 24px; }
/* size/leading come from the site h1 base (clamp 44-96px Kanit); constrain so it breaks after "linking Lake Tekapo" (v2 max-width 940) */
#top .hm-hero.hm-tthead .page-head h1 { max-width: 940px; margin: 0; color: #F4EFE3; text-transform: none; }
#top .hm-hero.hm-tthead .page-head h1 em { font-style: normal; font-weight: 400; color: #F4EFE3; }
#top .hm-hero.hm-tthead .page-head h1 em:first-of-type { color: #7ff0e8; }
#top .hm-tthead .meta-block { margin-top: 28px; }
#top .hm-tthead .meta-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 28px; max-width: 410px; padding-top: 20px; border-top: 1px solid rgba(244,239,227,.28); }
#top .hm-tthead .meta-row .item { text-align: left; }
#top .hm-tthead .meta-row .item .l { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: #fff; margin-bottom: 4px; }
#top .hm-tthead .meta-row .item .v { font-family: var(--font-body); font-size: 22px; font-weight: 400; line-height: 1.2; letter-spacing: 0; color: #fff; white-space: nowrap; }
#top .hm-tthead .meta-row .item .v em.u { font-style: normal; font-size: .62em; color: #fff; margin-left: 1px; letter-spacing: 0; }
@media only screen and (max-width: 700px) {
  #top .hm-tthead .meta-row { grid-template-columns: 1fr 1fr; gap: 18px; }
}

/* Route (route-map) page hero (v2): same photo + mountain-silhouette treatment as the timetable
   hero, but the text is constrained to the LEFT (leaving room for the route-map graphic to come). */
#top .hm-routehero { position: relative; overflow: hidden; isolation: isolate; }
#top .hm-routehero::before { content: ''; position: absolute; left: 0; bottom: 0; width: 100%; height: 111%; background: url('/wp-content/uploads/2026/07/hero-mountains.png') left bottom / auto 100% no-repeat; opacity: .5; z-index: 0; pointer-events: none; }
#top .hm-routehero > .container { position: relative; z-index: 1; }
#top .hm-routehero .hm-eyebrow { color: #fff; }
#top .hm-routehero .hm-eyebrow::before { display: none; }
#top .hm-routehero .hm-title { max-width: 640px; }
#top .hm-routehero .hm-quickfacts { max-width: 460px; margin-top: 24px; padding-top: 20px; border-top: 1px solid rgba(244,239,227,.28); }
#top .hm-routehero .hm-quickfacts .qf .k { color: rgba(255,255,255,.8); }
#top .hm-routehero .hm-quickfacts .qf .v { color: #fff; }

/* Lake Tekapo destination hero (v2 immersive-hero): photo + mountain-silhouette overlay, cream
   heading with a cyan accent, and a WHITE eyebrow that KEEPS its dash (recoloured white) - unlike
   the timetable/route heroes where the dash is dropped. */
#top .hm-dsthero { position: relative; overflow: hidden; isolation: isolate; }
#top .hm-dsthero::before { content: ''; position: absolute; left: 0; bottom: 0; width: 100%; height: 111%; background: url('/wp-content/uploads/2026/07/hero-mountains.png') left bottom / auto 100% no-repeat; opacity: .55; z-index: 0; pointer-events: none; }
#top .hm-dsthero > .container { position: relative; z-index: 1; }
#top .hm-dsthero .hm-eyebrow { color: #fff; font-size: 15px; margin-bottom: 22px; }
#top .hm-dsthero .hm-eyebrow::before { background: #fff; }
#top .hm-dsthero .hm-title { max-width: 940px; }

/* Homepage hero SLIDESHOW (v2): crossfading route photos behind the fixed text overlay, with a
   caption (bottom-right) and dots (bottom-centre, auto-advance). The .hm-heroslides / caption / dots
   are injected as direct children of the .hm-homehero section by the wp_footer JS (from the
   .hm-heroshow data-marker), so they fill the whole section behind the content. */
#top .hm-homehero { position: relative; overflow: hidden; isolation: isolate; }
#top .hm-homehero .hm-heroshow { display: none; }
#top .hm-homehero .hm-heroslides { position: absolute; inset: 0; z-index: 1; overflow: hidden; }
#top .hm-homehero .hm-heroslides .hs-slide { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0; transition: opacity 1.1s ease; }
#top .hm-homehero .hm-heroslides .hs-slide.is-active { opacity: 1; }
#top .hm-homehero .hm-heroslides::after { content: ''; position: absolute; inset: 0; background: linear-gradient(100deg, rgba(10,35,37,.62) 0%, rgba(10,35,37,.28) 48%, rgba(10,35,37,.05) 100%); pointer-events: none; }
#top .hm-homehero::before { content: ''; position: absolute; left: 0; bottom: 0; width: 100%; height: 98%; background: url('/wp-content/uploads/2026/07/hero-mountains.png') left bottom / auto 100% no-repeat; opacity: .5; z-index: 2; pointer-events: none; }
#top .hm-homehero > .container { position: relative; z-index: 3; }
#top .hm-homehero .hm-eyebrow { color: #fff; font-size: 15px; font-weight: 700; letter-spacing: .18em; }
#top .hm-homehero .hm-eyebrow::before { display: none; }
/* v2 "departs" line (p.sub): two STACKED lines, each "Departs X" (near-white) + time (cyan bold)
   INLINE - not the side-by-side stat-tile style. */
#top .hm-homehero .hm-quickfacts { flex-direction: column; align-items: flex-start; gap: 4px; margin-top: 22px; }
#top .hm-homehero .hm-quickfacts .qf { display: block; }
#top .hm-homehero .hm-quickfacts .qf .k { font-family: var(--font-body); text-transform: none; letter-spacing: 0; font-size: 15px; line-height: 1.7; font-weight: 400; color: rgba(255,255,255,.92); margin: 0; }
#top .hm-homehero .hm-quickfacts .qf .v { font-size: 15px; line-height: 1.7; font-weight: 600; color: var(--cyan); margin: 0; }
/* The .qf above is deliberately NOT a flex row. As flex the label and the time
   are two separate boxes, so on a narrow phone "Departs Christchurch
   International Airport" wraps inside its own box while the time stays parked
   beside the whole block (align-items:center), stranding "Airport" alone on the
   second line with a gap where the time should be. Laid out as real inline text
   the time just follows the last word onto whatever line it wrapped to. The old
   11px flex gap is reproduced by the natural word space (~4px) + 7px, and the
   time is kept unbreakable so it never splits as "2:15pm / daily".
   The 7px sits on the LABEL's margin-right, not the time's margin-left: if the
   line happens to break between the two (narrow screen, label that fits exactly)
   a left margin would show up as a 7px hanging indent at the start of line 2,
   whereas a right margin lands at the end of line 1 where there is already
   slack and nothing is visible. */
#top .hm-homehero .hm-quickfacts .qf .k,
#top .hm-homehero .hm-quickfacts .qf .v { display: inline; }
#top .hm-homehero .hm-quickfacts .qf .k { margin-right: 7px; }
#top .hm-homehero .hm-quickfacts .qf .v { white-space: nowrap; }

/* About page hero (v2 split): text-left on the paper bg + bus photo filling the right, 50/50 up to
   1600px. The section runs edge-to-edge (padding:no + zeroed Enfold wrappers) so the grid is flush. */
#top .hm-abouthero-sec .container { max-width: none; padding: 0 !important; }
#top .hm-abouthero-sec .content,
#top .hm-abouthero-sec .entry-content-wrapper,
#top .hm-abouthero-sec .flex_column,
#top .hm-abouthero-sec .av_textblock_section,
#top .hm-abouthero-sec .avia_textblock { padding: 0 !important; margin: 0 !important; width: 100% !important; }
#top .hm-abouthero { display: grid; grid-template-columns: 1fr 1fr; background: var(--paper); border-bottom: 1px solid var(--stone); align-items: stretch; }
/* Full-width hero: photo runs to the right viewport edge. The text keeps its position via a
   content-margin-aware left padding (= the old 1600px centred gutter + 56px on wide screens). */
#top .hm-abouthero .hm-ah-text { padding: 72px 48px 72px max(56px, calc((100vw - 1600px) / 2 + 56px)); display: flex; flex-direction: column; justify-content: center; }
#top .hm-abouthero .hm-ah-photo { position: relative; min-height: 600px; background: var(--cream); overflow: hidden; }
#top .hm-abouthero .hm-ah-photo p { margin: 0; }
#top .hm-abouthero .hm-ah-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
#top .hm-abouthero .hm-eyebrow { color: var(--teal); font-size: 15px; margin-bottom: 36px; }
#top .hm-abouthero .hm-title { font-family: var(--font-display); font-size: clamp(52px, 6.5vw, 104px); line-height: 1.0; font-weight: 400; letter-spacing: -.03em; color: var(--ink); margin: 0 0 32px; }
#top .hm-abouthero .hm-title em { font-style: italic; font-weight: 400; color: var(--cyan); }
#top .hm-abouthero .hm-lede { font-size: 17px !important; line-height: 1.7; color: var(--slate) !important; max-width: 480px; margin: 0 0 32px; }
#top .hm-abouthero .hm-ah-facts { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--stone); padding-top: 24px; gap: 20px; max-width: 520px; }
#top .hm-abouthero .hm-ah-facts .qf .k { font-family: var(--font-body); font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--warm-grey); margin-bottom: 6px; }
#top .hm-abouthero .hm-ah-facts .qf .v { font-family: var(--font-body); font-size: 22px; color: var(--ink); line-height: 1.1; }
@media only screen and (max-width: 900px) {
  #top .hm-abouthero { grid-template-columns: 1fr; }
  #top .hm-abouthero .hm-ah-text { padding: 44px 24px; }
  #top .hm-abouthero .hm-ah-photo { min-height: 320px; }
  #top .hm-abouthero .hm-title { font-size: 40px; }
}
#top .hm-homehero .hm-hero-cap { position: absolute; right: 34px; bottom: 30px; z-index: 4; color: rgba(255,255,255,.95); font-family: var(--font-body); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; font-weight: 600; text-shadow: 0 1px 10px rgba(0,0,0,.45); }
#top .hm-homehero .hm-hero-dots { position: absolute; bottom: 30px; left: 50%; transform: translateX(-50%); z-index: 4; display: flex; gap: 7px; }
/* bars, not dots: 22px dashes (active = 34px solid white); the button stays 14px
   tall for a usable tap target while the visible 3px bar is drawn by ::before */
#top .hm-homehero .hm-hero-dot { position: relative; width: 22px; height: 14px; border: none; background: transparent; cursor: pointer; padding: 0; transition: width .25s ease; }
#top .hm-homehero .hm-hero-dot::before { content: ''; position: absolute; left: 0; right: 0; top: calc(50% - 1.5px); height: 3px; border-radius: 99px; background: rgba(255,255,255,.45); transition: background .25s ease; }
#top .hm-homehero .hm-hero-dot:hover::before { background: rgba(255,255,255,.75); }
#top .hm-homehero .hm-hero-dot.is-active { width: 34px; }
#top .hm-homehero .hm-hero-dot.is-active::before { background: #fff; }
@media only screen and (max-width: 700px) {
  #top .hm-homehero .hm-hero-cap { right: 18px; bottom: 58px; font-size: 10.5px; }
  #top .hm-homehero .hm-hero-dots { bottom: 22px; }
}
#top .hm-dsthero .hm-title { max-width: 880px; }

/* Homepage widget */
#top form.wbfm-widget .wbfm-widget-field select {
    margin-bottom: 0px;
	font-size: 15px;
	color: #000;
}
@media (max-width: 1300px){
	#top .wbfm-widget {
    	border: 1px solid #63C1D7;
    	width: min(440px, calc(100% - 48px));
	}
}

/* card grid (things to do), thumbnail grid, gallery rail - for use inside a textblock */
#top .hm-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px,1fr)); gap: 26px; margin-top: 8px; }
#top .hm-cards .card img { border-radius: 12px; aspect-ratio: 4/3; object-fit: cover; width: 100%; display: block; }
#top .hm-cards .card h3 { margin: 14px 0 4px; font-size: 17px; color: var(--ink); }
#top .hm-cards .card p { font-size: 14px; color: var(--slate); line-height: 1.6; margin: 0; }
#top .hm-thumbs { display: grid; grid-template-columns: repeat(auto-fit,minmax(110px,1fr)); gap: 12px; margin-top: 18px; }
#top .hm-thumbs figure { margin: 0; }
#top .hm-thumbs img { border-radius: 10px; aspect-ratio: 1/1; object-fit: cover; width: 100%; display: block; }
#top .hm-thumbs figcaption { font-size: 11.5px; color: var(--warm-grey); margin-top: 6px; }
#top .hm-gallery { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(280px, 1fr); gap: 16px; overflow-x: auto; padding-bottom: 12px; scroll-snap-type: x mandatory; }
#top .hm-gallery img { border-radius: 14px; height: 320px; width: 100%; object-fit: cover; scroll-snap-align: start; }

/* fare rows on home (reuse hm-fare) + testimonial + season strip */
#top .hm-quote { font-size: 26px; line-height: 1.4; color: var(--ink); font-weight: 400; letter-spacing: -.01em; max-width: 820px; }
#top .hm-quote cite { display: block; margin-top: 18px; font-size: 13px; font-style: normal; color: var(--warm-grey); font-family: var(--font-mono); letter-spacing: .06em; }

/* Testimonials (v2): teal heading + arrows in a left column, cream quote cards in a
   horizontal scroll-snap carousel on the right (swipe/scroll = no-JS baseline; the arrows
   are a progressive-enhancement wired in functions.php). */
#top .hm-quotes { display: grid; grid-template-columns: minmax(260px, 360px) 1fr; gap: 48px; align-items: center; }
#top .hm-quotes-head h2 { color: var(--teal) !important; margin: 0 0 32px; font-size: clamp(30px, 3vw, 42px); line-height: 1.08; font-weight: 500 !important; letter-spacing: -.01em; }
#top .hm-quotes-nav { display: flex; gap: 14px; }
#top .hm-quotes-nav .qa { width: 48px; height: 48px; border-radius: 50%; border: none; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; font-size: 19px; color: #fff; transition: background .15s ease, transform .15s ease; }
#top .hm-quotes-nav .qa.prev { background: var(--cyan); }
#top .hm-quotes-nav .qa.next { background: var(--teal-deep); }
#top .hm-quotes-nav .qa:hover { transform: translateY(-1px); }
#top .hm-quotes-nav .qa.prev:hover { background: #4fb4cd; }
#top .hm-quotes-nav .qa.next:hover { background: var(--teal); }
#top .hm-quotes-track { display: flex; gap: 24px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; padding-bottom: 6px; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
#top .hm-quotes-track::-webkit-scrollbar { display: none; }
#top .hm-quotes-track .hm-qcard { flex: 0 0 46%; scroll-snap-align: start; background: var(--cream); border-radius: 18px; padding: 42px 40px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; margin: 0; min-height: 200px; }
#top .hm-quotes-track .hm-qcard blockquote p { font-size: 22px; color: var(--ink); font-weight: 400; 
    line-height: 1.4;
    margin: 0;
    max-width: 26ch;
}
#top .hm-quotes-track blockquote { font-family: var(--font-body); font-size: 22px; line-height: 1.4; color: var(--ink); font-weight: 400; margin: 0 0 16px; max-width: 28ch; border: none; padding: 0; }
#top .hm-quotes-track figcaption { color: var(--slate); font-size: 13px; letter-spacing: .02em; }
@media only screen and (max-width: 900px) {
  #top .hm-quotes { grid-template-columns: 1fr; gap: 24px; }
  #top .hm-quotes-track .hm-qcard { flex-basis: 84%; }
}
#top .hm-season { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 24px; }
#top .hm-season .k { font-family: var(--font-mono); font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: var(--warm-grey); }
#top .hm-badge { display: inline-block; background: var(--lake-pale); color: var(--teal-deep); font-family: var(--font-mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; padding: 4px 12px; border-radius: 999px; }

/* Home fares table (v2 index design: type | big Kanit price | note, 3 columns,
   2px ink top/bottom rules, cyan row dividers, teal sentence-case heading). */
#top .hm-fares-title { color: #007d87 !important; text-transform: none !important; font-size: 40px !important; font-weight: 500 !important; line-height: 1.1 !important; }
#top .hm-fares { border-top: 2px solid var(--ink); border-bottom: 2px solid var(--ink); margin: 12px 0 0; }
#top .hm-fares .fare-row {
  display: grid; grid-template-columns: 1fr 120px 2fr; gap: 0 28px;
  padding: 24px 0; align-items: baseline; border-bottom: 1px solid var(--cyan);
}
#top .hm-fares .fare-row:last-child { border-bottom: none; }
#top .hm-fares .ftype { font-family: var(--font-body); font-size: 22px; color: var(--ink); font-weight: 400; }
#top .hm-fares .ftype small { font-size: 14px; color: var(--warm-grey); }
#top .hm-fares .fprice { font-family: var(--font-display); font-size: 32px; color: var(--ink); font-weight: 400; line-height: 1; }
#top .hm-fares .fnote { font-size: 13px; color: var(--slate); line-height: 1.65; }
/* !important: these <p> overrides must beat Enfold's generic
   `.template-page .entry-content-wrapper p { color: var(--slate); font-size: 15.5px }` (specificity 1,2,1). */
#top .hm-fares-foot { margin-top: 14px; font-size: 13px !important; color: var(--warm-grey) !important; }

/* Home intro (sits between the hero and the fares table): teal Kanit statement in the
   left third, body copy in the right two-thirds, inset ~60px from the fares rules.
   The [av_section] is padding='no-padding', so the top spacing below is the only top
   spacing; the fares section's own 70px top padding supplies the gap underneath.
   The copy column is a <div> holding the <p>s (not one <p> with <br><br>) because
   wpautop splits a double <br> into separate paragraphs, which would fall out of the
   grid cell. */
#top .hm-intro { padding: 44px 0 0; }
#top .hm-intro .intro-grid { display: grid; grid-template-columns: 1fr 2fr; gap: 32px var(--gutter); align-items: start; max-width: 1200px; margin: 0 60px; }
#top .hm-intro .intro-title { font-family: var(--font-display) !important; font-weight: 500 !important; font-size: 34px !important; line-height: 1.15 !important; color: #007d87 !important; text-transform: none !important; letter-spacing: 0 !important; margin: 0 !important; }
/* !important: beats Enfold's generic `.template-page .entry-content-wrapper p` (15.5px, specificity 1,2,1). */
#top .hm-intro .intro-copy p { font-size: 17px !important; line-height: 1.75 !important; color: var(--slate) !important; margin: 0 0 1.75em !important; }
#top .hm-intro .intro-copy p:last-child { margin-bottom: 0 !important; }
@media only screen and (max-width: 900px) {
  #top .hm-intro { padding-top: 32px; }
  #top .hm-intro .intro-grid { grid-template-columns: 1fr; gap: 20px; margin: auto 0; }
  #top .hm-intro .intro-title { font-size: 28px !important; }
  #top .hm-intro .intro-copy p { font-size: 16px !important; }
}

/* Timetable: teal departure bar + month-by-month season list (v2). */
#top .hm-ttbar {
  display: flex; flex-wrap: wrap; gap: 6px 40px;
  background: var(--teal); color: #fff; padding: 15px 24px; border-radius: 14px 14px 0 0; margin: 16px 0 0;
}
#top .hm-ttbar .svc { font-size: 14px; color: rgba(255,255,255,.82); display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; }
#top .hm-ttbar .svc strong { color: #fff; font-weight: 600; }

#top .hm-seasonlist { border: 1px solid var(--stone); border-top: none; border-radius: 0 0 14px 14px; overflow: hidden; background: var(--cream); }
#top .hm-seasonlist .sl-row { display: grid; grid-template-columns: 1.6fr 1fr 160px; align-items: center; gap: 20px; padding: 0 24px; min-height: 66px; border-bottom: 1px solid var(--cyan); }
#top .hm-seasonlist .sl-row:last-child { border-bottom: none; }
#top .hm-seasonlist .sl-hdr { min-height: 44px; font-family: var(--font-mono); font-size: 11px; letter-spacing: .13em; text-transform: uppercase; color: var(--warm-grey); }
#top .hm-seasonlist .sl-mo { font-family: var(--font-body); font-size: 20px; font-weight: 500; color: var(--ink); display: flex; align-items: baseline; gap: 9px; }
#top .hm-seasonlist .sl-mo .yr { font-size: 12px; letter-spacing: .08em; color: var(--warm-grey); text-transform: uppercase; }
#top .hm-seasonlist .sl-status { display: flex; align-items: center; gap: 8px; font-family: var(--font-body); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: #2E9E6B; }
#top .hm-seasonlist .sl-status .sd { width: 7px; height: 7px; border-radius: 50%; background: #2E9E6B; flex: 0 0 auto; }
#top .hm-seasonlist .sl-status.off { color: var(--warm-grey); }
#top .hm-seasonlist .sl-status.off .sd { background: var(--warm-grey); }
#top .hm-seasonlist .sl-book {
  justify-self: end; display: inline-flex; align-items: center; gap: 7px;
  background: var(--ink); color: var(--paper) !important; text-decoration: none; border: none;
  padding: 10px 18px; border-radius: 999px; font-size: 12.5px; font-weight: 600; white-space: nowrap; transition: background .15s ease;
}
#top .hm-seasonlist .sl-book:hover { background: var(--teal); color: #fff !important; }
#top .hm-seasonlist .sl-row.is-off { background: #F1ECDD; }
#top .hm-seasonlist .sl-row.is-off .sl-mo { color: var(--warm-grey); }
#top .hm-seasonlist .sl-year { display: flex; align-items: center; gap: 14px; padding: 14px 24px 8px; font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--warm-grey); border-bottom: 1px solid var(--cyan); }
/*#top .hm-seasonlist .sl-year::after { content: ''; flex: 1; height: 1px; background: var(--cyan); }*/
#top .hm-tt-note { font-size: 13px !important; color: var(--warm-grey) !important; margin-top: 12px; /* remove? */ }

/* Timetable: daily departure cards (.dep-cards) - first content section under the hero (2026-09-16).
   Selectors are prefixed with #top so they out-rank Enfold's generic heading/paragraph rules
   (.responsive #top h2 = 0,2,1; #top .template-page .entry-content-wrapper p = 1,2,1). */
/* No inner gutter/max-width: the Enfold .container already supplies both, and the cards must stay flush with the teal .hm-ttbar below. */
#top .dep-cards { padding: 44px 0 0; }
#top .dep-cards .section-label { font-size: 15px; color: #5E6A65; margin-bottom: 6px; }
#top .dep-cards h2 { font-family: var(--font-display); font-weight: 500; font-size: 40px; line-height: 1.1; letter-spacing: 0; text-transform: none; color: #007d87; margin: 0 0 28px; }
#top .dep-cards .dc-grid + .section-label { margin-top: 40px; }
#top .dep-cards p.dc-note { margin: 0 0 28px; padding: 16px 20px; background: #F4EFE3; border-left: 3px solid #0F6E70; border-radius: 4px; font-size: 16px; line-height: 1.5; font-weight: 500; color: #1B2225; }
#top .dep-cards .dc-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; }
#top .dep-cards .dc-card { background: #F4EFE3; border-radius: 16px; padding: 22px 22px 20px; display: flex; flex-direction: column; gap: 2px; box-shadow: 0 1px 3px rgba(27,34,37,.06); }
#top .dep-cards .dc-card.dc-origin { background: #E4EFE9; box-shadow: inset 0 0 0 1.5px #0F6E70, 0 1px 3px rgba(27,34,37,.06); }
#top .dep-cards .dc-card.dc-origin .dc-from { color: #0F6E70; }
#top .dep-cards .dc-card.dc-origin .dc-dep { color: #0F6E70; }
#top .dep-cards .dc-card.dc-dest { background: #0F6E70; }
#top .dep-cards .dc-card.dc-dest .dc-from { color: #CFE7E0; }
#top .dep-cards .dc-card.dc-dest .dc-stop { color: #fff; }
#top .dep-cards .dc-card.dc-dest .dc-dep { color: #7ff0e8; }
#top .dep-cards .dc-from { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: #8A8678; }
#top .dep-cards .dc-stop { font-size: 19px; line-height: 1.25; color: #1B2225; margin-bottom: 10px; min-height: calc(19px * 1.25 * 2); }
#top .dep-cards .dc-dep { font-family: var(--font-display); font-size: 38px; font-weight: 500; line-height: 1; color: #1B2225; font-variant-numeric: tabular-nums; margin-top: auto; }
#top .dep-cards .dc-rule { height: 1px; background: #D9D1BE; margin: 16px 0 12px; }
#top .dep-cards .dc-arrlab { font-size: 10.5px; white-space: nowrap; letter-spacing: .14em; text-transform: uppercase; color: #8A8678; }
#top .dep-cards .dc-arr { font-size: 15px; color: #0F6E70; display: flex; align-items: baseline; gap: 8px; }
#top .dep-cards .dc-arr b { font-family: var(--font-display); font-size: 22px; font-weight: 400; font-variant-numeric: tabular-nums; }
@media only screen and (max-width: 1100px) {
  #top .dep-cards .dc-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media only screen and (max-width: 700px) {
  #top .dep-cards { padding: 30px 0 0; }
  #top .dep-cards h2 { font-size: 26px; margin-bottom: 18px; }
  #top .dep-cards p.dc-note { font-size: 15px; padding: 14px 16px; margin-bottom: 22px; }
  /* mobile: one continuous journey list per direction instead of tiles */
  #top .dep-cards .dc-grid { display: block; background: #F4EFE3; border-radius: 16px; padding: 6px 18px; box-shadow: 0 1px 3px rgba(27,34,37,.06); }
  #top .dep-cards .dc-card { background: none; border-radius: 0; box-shadow: none; padding: 0; display: grid; grid-template-columns: 62px 26px minmax(0, 1fr); align-items: center; column-gap: 0; row-gap: 0; position: relative; min-height: 62px; }
  #top .dep-cards .dc-card::before { content: ''; position: absolute; left: 73px; top: 0; bottom: 0; width: 2px; background: #D9D1BE; }
  #top .dep-cards .dc-card:first-child::before { top: 50%; }
  #top .dep-cards .dc-card:last-child::before { bottom: 50%; }
  #top .dep-cards .dc-card::after { content: ''; position: absolute; left: 68px; top: 50%; width: 12px; height: 12px; margin-top: -6px; border-radius: 50%; background: #F4EFE3; box-shadow: inset 0 0 0 2px #8A8678; }
  #top .dep-cards .dc-card.dc-origin::after, #top .dep-cards .dc-card.dc-dest::after { background: #0F6E70; box-shadow: inset 0 0 0 2px #0F6E70; }
  #top .dep-cards .dc-from { grid-column: 3; grid-row: 2; font-size: 10px; letter-spacing: .14em; padding-left: 18px; }
  #top .dep-cards .dc-stop { grid-column: 3; grid-row: 1; font-size: 17px; margin: 0; min-height: 0; padding-left: 18px; }
  #top .dep-cards .dc-dep { grid-column: 1; grid-row: 1 / span 2; font-size: 26px; margin: 0; text-align: left; }
  #top .dep-cards .dc-card.dc-origin, #top .dep-cards .dc-card.dc-dest { background: none; box-shadow: none; }
  #top .dep-cards .dc-card.dc-dest .dc-stop { color: #1B2225; font-weight: 500; }
  #top .dep-cards .dc-card.dc-dest .dc-dep { color: #0F6E70; }
  #top .dep-cards .dc-card.dc-dest .dc-from { color: #0F6E70; }
}
@media only screen and (max-width: 767px) {
  #top .hm-ttbar { flex-direction: column; gap: 4px; }
  #top .hm-seasonlist .sl-hdr { display: none; }
  #top .hm-seasonlist .sl-row { grid-template-columns: 1fr auto; gap: 4px 12px; padding: 14px 18px; min-height: 0; align-items: baseline; }
  #top .hm-seasonlist .sl-mo { font-size: 18px; }
  #top .hm-seasonlist .sl-book { grid-column: 1 / -1; justify-self: start; margin-top: 8px; }
}

@media only screen and (max-width: 767px) {
  #top .hm-quickfacts { gap: 22px; }
  #top .hm-quote { font-size: 21px; }
  #top .hm-fares .fare-row { grid-template-columns: 1fr auto; column-gap: 16px; row-gap: 8px; padding: 20px 0; }
  #top .hm-fares .ftype { font-size: 19px; }
  #top .hm-fares .fprice { font-size: 26px; }
  #top .hm-fares .fnote { grid-column: 1 / -1; font-size: 13.5px; }
}

/* ==================================================================
   12b. ROUTE PAGE - stop blocks (v2): photo/map slider + big heading + fact chips
   ================================================================== */
#top .hm-stops .stop { display: grid; grid-template-columns: 1.3fr 1fr; gap: 64px; align-items: center; margin-bottom: 90px; }
#top .hm-stops .stop:last-child { margin-bottom: 0; }
#top .hm-stops .stop.reverse { grid-template-columns: 1fr 1.3fr; }
#top .hm-stops .stop.reverse .stop-photo { grid-column: 2; grid-row: 1; }
#top .hm-stops .stop.reverse .stop-text { grid-column: 1; grid-row: 1; }

#top .hm-stops .stop-photo { position: relative; aspect-ratio: 4/3; background: var(--cream); overflow: hidden; border-radius: 14px; }
#top .hm-stops .stop-photo .ss-slide { position: absolute; inset: 0; opacity: 0; transition: opacity .4s ease; z-index: 0; }
#top .hm-stops .stop-photo .ss-slide.is-active { opacity: 1; z-index: 1; }
#top .hm-stops .stop-photo .ss-slide img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
/* embedded Google Map slide (Christchurch Airport "Live map") fills the slide like an image */
#top .hm-stops .stop-photo .ss-slide iframe.ss-map { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
#top .hm-stops .stop-photo::after { content: ''; position: absolute; inset: 0; pointer-events: none; z-index: 2; background: linear-gradient(180deg, rgba(0,0,0,0) 66%, rgba(10,40,40,.5) 100%); }
#top .hm-stops .stop-photo .ss-kind { position: absolute; top: 16px; right: 16px; z-index: 4; background: var(--paper); color: var(--ink); font-family: var(--font-body); font-size: 10px; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; padding: 6px 12px; border-radius: 99px; }
#top .hm-stops .stop-photo .coord { position: absolute; bottom: 16px; left: 16px; z-index: 3; color: rgba(255,255,255,.92); font-family: var(--font-body); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; text-shadow: 0 1px 8px rgba(0,0,0,.5); }
#top .hm-stops .stop-photo .ss-directions { position: absolute; bottom: 16px; right: 16px; z-index: 4; display: inline-flex; align-items: center; gap: 7px; background: var(--ink); color: var(--paper) !important; text-decoration: none; border: none; padding: 9px 15px; border-radius: 99px; font-family: var(--font-body); font-size: 12.5px; font-weight: 600; white-space: nowrap; transition: background .15s ease, transform .15s ease; }
#top .hm-stops .stop-photo .ss-directions:hover { background: var(--teal); transform: translateY(-1px); }
#top .hm-stops .stop-photo .ss-directions svg { width: 14px; height: 14px; }
#top .hm-stops .stop-photo .ss-arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 4; width: 36px; height: 36px; border-radius: 50%; border: none; cursor: pointer; background: rgba(255,255,255,.85); color: var(--ink); font-size: 19px; display: inline-flex; align-items: center; justify-content: center; line-height: 1; transition: background .15s ease; }
#top .hm-stops .stop-photo .ss-arrow:hover { background: #fff; }
#top .hm-stops .stop-photo .ss-prev { left: 16px; }
#top .hm-stops .stop-photo .ss-next { right: 16px; }
#top .hm-stops .stop-photo .ss-dots { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); z-index: 5; display: flex; gap: 8px; }
#top .hm-stops .stop-photo .ss-dot { width: 8px; height: 8px; border-radius: 99px; border: none; background: rgba(255,255,255,.5); cursor: pointer; padding: 0; transition: width .2s ease, background .2s ease; }
#top .hm-stops .stop-photo .ss-dot.is-on { background: #fff; width: 22px; }

#top .hm-stops .stop-text h3 { font-family: var(--font-display); font-size: 60px; line-height: .98; font-weight: 400; letter-spacing: -.03em; color: var(--ink); margin: 0 0 8px; }
#top .hm-stops .stop-text h3 em { font-style: italic; color: var(--teal); }
#top .hm-stops .stop-text .te-reo { font-family: var(--font-body) !important; font-style: italic; font-size: 20px !important; color: var(--slate) !important; margin: 0 0 20px !important; letter-spacing: -.01em; }
#top .hm-stops .stop-text p.lede { font-size: 17px !important; line-height: 1.75; color: var(--charcoal) !important; margin: 0 0 22px; max-width: 520px; }
#top .hm-stops .stop-text .facts { display: flex; flex-wrap: wrap; gap: 8px 10px; }
#top .hm-stops .stop-text .facts .chip { background: var(--cream); color: var(--charcoal); padding: 8px 14px; border-radius: 99px; font-size: 15px; border: 1px solid var(--stone); display: inline-flex; align-items: center; gap: 8px; line-height: 1.35; }
#top .hm-stops .stop-text .facts .chip .k { font-family: var(--font-body); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--teal); font-weight: 500; }
@media only screen and (max-width: 900px) {
  #top .hm-stops .stop, #top .hm-stops .stop.reverse { grid-template-columns: 1fr; gap: 22px; margin-bottom: 56px; }
  #top .hm-stops .stop.reverse .stop-photo, #top .hm-stops .stop.reverse .stop-text { grid-column: 1; grid-row: auto; }
  #top .hm-stops .stop-text h3 { font-size: 40px; }
}

/* ==================================================================
   13. NATIVE Enfold images / galleries - Lake & Stone
   ================================================================== */
#top .avia_image,
#top .avia-image-container img,
#top .av-image-caption-overlay img { border-radius: 14px; }
/* Enfold gallery: its defaults frame each image (#top div .avia-gallery img has a 1px
   border + 7px padding + square corners) - strip that for clean, rounded, full-bleed images. */
#top div .avia-gallery img,
#top .avia-gallery .avia-gallery-thumb img {
  border: none !important;
  padding: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  border-radius: 12px !important;
  width: 100% !important;
  height: auto !important;
  display: block;
}
#top .avia-gallery .avia-gallery-thumb,
#top .avia-gallery .avia-gallery-thumb a {
  padding: 0 !important;
  border: none !important;
  box-shadow: none !important;
  background: transparent !important;
}
#top .avia-gallery { margin: 8px 0 0; }
/* native card columns (things-to-do): image + heading + text */
#top .hm-cardcol .av-image-caption-overlay,
#top .hm-cardcol img { border-radius: 12px; }
#top .hm-cardcol .av-special-heading { margin-top: 14px; }
#top .hm-cardcol .avia_textblock p { font-size: 14px; color: var(--slate); }

/* Destinations "things to do" - v2 tiles: 2-wide grid, image with title/text overlaid */
#top .hm-things { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; margin-top: 28px; }
#top .hm-things .hm-thing { position: relative; height: 380px; border-radius: 20px; overflow: hidden; /*border: 1px solid var(--stone);*/ display: flex; align-items: flex-end; background: var(--teal-deep); text-decoration: none; color: inherit; }
#top .hm-things .hm-thing img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; display: block; transition: transform .4s ease; }
#top .hm-things .hm-thing:has(a.hm-thing-link):hover img { transform: scale(1.04); }
/* whole-tile clickable via a stretched link (keeps the tile a wpautop-safe <div>) */
#top .hm-things .hm-thing .cap h3 a.hm-thing-link::after { content: ''; position: absolute; inset: 0; z-index: 3; }
#top .hm-things .hm-thing::after { content: ''; position: absolute; inset: 0; z-index: 1; background: linear-gradient(to top, rgba(12,40,42,.86) 0%, rgba(12,40,42,.15) 55%, rgba(12,40,42,0) 100%); }
#top .hm-things .hm-thing .cap { position: relative; z-index: 2; padding: 32px; color: #fff; }
#top .hm-things .hm-thing .cap h3 { font-family: var(--font-display); font-size: 26px; font-weight: 500; color: #fff !important; margin: 0 0 8px; line-height: 1.15; }
#top .hm-things .hm-thing .cap h3 a { color: #fff !important; text-decoration: none; border: none; }
#top .hm-things .hm-thing .cap p { font-size: 15px !important; margin: 0; line-height: 1.6; color: rgba(255,255,255,.85) !important; }
@media only screen and (max-width: 767px) { #top .hm-things { grid-template-columns: 1fr; } }

/* "In pictures" - v2 photo rail slider (scroll-snap; arrows are progressive enhancement) */
#top .hm-gal .hm-rail-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 20px; gap: 16px; flex-wrap: wrap; }
#top .hm-gal .hm-rail-head h2 { margin: 0; }
#top .hm-gal .rail-nav { display: flex; gap: 8px; }
#top .hm-gal .rn-btn { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--stone); background: #fff; color: var(--teal); font-size: 16px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .15s ease, color .15s ease, border-color .15s ease; }
#top .hm-gal .rn-btn:hover { background: var(--teal); color: #fff; border-color: var(--teal); }
#top .hm-gal .hm-rail { display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - 48px)/4); gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; padding-bottom: 12px; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
#top .hm-gal .hm-rail .shot { scroll-snap-align: start; margin: 0; display: flex; flex-direction: column; gap: 8px; }
#top .hm-gal .hm-rail .shot-img { aspect-ratio: 4/3; border-radius: 16px; overflow: hidden; background: var(--cream); position: relative; }
#top .hm-gal .hm-rail .shot-img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
#top .hm-gal .hm-rail .shot-credit { font-family: var(--font-body); font-size: 11px !important; letter-spacing: .04em; color: var(--warm-grey) !important; margin: 0; }
@media only screen and (max-width: 900px) { #top .hm-gal .hm-rail { grid-auto-columns: calc((100% - 16px)/2); } }
@media only screen and (max-width: 600px) { #top .hm-gal .hm-rail { grid-auto-columns: 86%; } }
#top .hm-gal .hm-rail .shot { cursor: zoom-in; }

/* Gallery lightbox (appended to <body> by the footer script; not scoped to #top) */
.hm-lb { position: fixed; inset: 0; z-index: 100000; display: none; align-items: center; justify-content: center; background: rgba(15,20,22,.93); padding: 48px; }
.hm-lb.open { display: flex; }
.hm-lb-fig { margin: 0; display: flex; flex-direction: column; align-items: center; max-width: min(1100px, 92vw); }
.hm-lb-img { max-width: 100%; max-height: 78vh; object-fit: contain; border-radius: 6px; box-shadow: 0 40px 100px -30px rgba(0,0,0,.7); display: block; }
.hm-lb-cap { margin-top: 14px; text-align: center; color: rgba(244,239,227,.9); font-family: var(--font-body); font-size: 14px; line-height: 1.5; }
.hm-lb-cap .cr { display: block; margin-top: 4px; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: rgba(244,239,227,.6); }
.hm-lb-btn { position: absolute; top: 50%; transform: translateY(-50%); width: 52px; height: 52px; border-radius: 50%; border: none; background: rgba(244,239,227,.14); color: #fff; font-size: 24px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .15s ease; }
.hm-lb-btn:hover { background: rgba(244,239,227,.3); }
.hm-lb-prev { left: 24px; }
.hm-lb-next { right: 24px; }
.hm-lb-close { position: absolute; top: 22px; right: 26px; width: 44px; height: 44px; border-radius: 50%; border: none; background: rgba(244,239,227,.14); color: #fff; font-size: 26px; line-height: 1; cursor: pointer; }
.hm-lb-close:hover { background: rgba(244,239,227,.3); }
.hm-lb-count { position: absolute; bottom: 22px; left: 50%; transform: translateX(-50%); font-family: var(--font-body); font-size: 12px; letter-spacing: .1em; color: rgba(244,239,227,.7); }
@media only screen and (max-width: 600px) { .hm-lb { padding: 20px; } .hm-lb-btn { width: 42px; height: 42px; } .hm-lb-prev { left: 8px; } .hm-lb-next { right: 8px; } }

/* ==================================================================
   14. CONTACT methods + FORMINATOR form styling
   ================================================================== */
#top .hm-contact .method { padding: 22px 0; border-bottom: 1px solid var(--line); }
#top .hm-contact .method:first-child { padding-top: 0; }
#top .hm-contact .big { font-size: 22px; color: var(--ink); font-weight: 500; display: inline-block; margin: 4px 0; border: none; letter-spacing: -.01em; }
#top .hm-contact a.big { color: var(--teal); text-decoration: none; }
#top .hm-contact a.big:hover { color: var(--lake); }
#top .hm-contact p { font-size: 14px !important; color: var(--slate); margin: 2px 0 0; }
#top .hm-form-note { font-size: 12.5px; color: var(--warm-grey); margin-top: 14px; }

/* Private-hire v2: intro callout + form-in-a-cream-card */
#top .hm-phintro h2 em { color: var(--cyan); font-style: italic; }
#top .hm-phintro .ph-note { margin-top: 12px; padding: 18px 22px; background: var(--cream); border: 1px solid var(--stone); border-radius: 14px; font-size: 13.5px !important; line-height: 1.65; color: var(--slate) !important; display: flex; gap: 13px; align-items: flex-start; }
#top .hm-phintro .ph-note::before { content: 'i'; flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%; background: var(--teal); color: #fff; font-family: var(--font-body); font-style: italic; font-size: 13px; display: flex; align-items: center; justify-content: center; }
/* the vehicle photo on private hire is landscape (4/3), not the portrait 5/6 */
body.page-id-47 #top .hm-bus-photo { aspect-ratio: 4/3; }
/* "Planning a private trip?" (v2): two cards on a light band - a photo card with the
   heading pinned to its bottom + the enquiry form card (paired two-column fields, dark
   submit). Enfold builds this as a full-bleed bg-photo section with a dark overlay, so we
   neutralise both, re-home the photo onto the left column, and re-flex the row. */
#top .hm-phcta { background-color: var(--enfold-main-color-bg, var(--paper)) !important; }  /* #F5F5F5 - form card stays --cream #F4EFE3 for contrast */
#top .hm-phcta .av-section-color-overlay { display: none !important; }
#top .hm-phcta .container.av-section-cont-open { background: transparent !important; padding: 44px 50px !important; }
/* constrain to the standard content column (1220px) so the two cards line up with the
   sections above/below - the section is avia-full-stretch, so cap + centre the content here. */
#top .hm-phcta .entry-content-wrapper { display: flex !important; align-items: stretch; gap: 32px; max-width: 1220px; margin-left: auto; margin-right: auto; }
#top .hm-phcta .entry-content-wrapper > p { display: none !important; }
/* the .clearfix ::before/::after become flex items and eat a leading+trailing `gap`,
   shifting the cards ~32px inward - drop them so the cards fill the column edge-to-edge. */
#top .hm-phcta .entry-content-wrapper::before,
#top .hm-phcta .entry-content-wrapper::after { display: none !important; }
#top .hm-phcta .flex_column { display: block !important; float: none !important; width: auto !important; flex: 1 1 0 !important; margin: 0 !important; }

/* LEFT = contained photo card, heading pinned to the bottom over a legibility scrim */
#top .hm-phcta .flex_column:not(.hm-phform-card) {
  position: relative; border-radius: 18px; overflow: hidden;
  background: var(--ink) url(/wp-content/uploads/2026/07/cta-highway.jpg) center/cover no-repeat;
  min-height: 420px; display: flex !important; /*align-items: flex-end !important;*/ align-items: flex-start !important; padding: 40px !important;
}
#top .hm-phcta .flex_column:not(.hm-phform-card)::after {
  content: ''; position: absolute; inset: 0; z-index: 0;
  background: linear-gradient(to top, rgba(27,34,37,.82) 0%, rgba(27,34,37,.40) 42%, rgba(27,34,37,.06) 78%);
}
#top .hm-phcta .flex_column:not(.hm-phform-card) .av_textblock_section { position: relative; z-index: 1; width: 100%; }
#top .hm-phcta .flex_column:not(.hm-phform-card) h2 { color: #fff !important; margin: 0 0 10px; }
#top .hm-phcta .flex_column:not(.hm-phform-card) p { color: rgba(255,255,255,.85) !important; font-size: 15px !important; margin: 0; }

/* RIGHT = enquiry form card */
#top .hm-phcta .flex_column.hm-phform-card { flex: 1.1 1 0 !important; background: var(--cream) !important; border: 1px solid var(--stone); border-radius: 18px; padding: 36px !important; align-self: stretch; }

/* fields -> V2 two-column pairing (name|email, phone|passengers, pickup|destination,
   date|return trip), then details + submit full-width. The form is built with each field
   full-width in its own row, so we flex-wrap the rows and re-order into pairs. */
#top .hm-phform-card .forminator-custom-form { display: flex; flex-wrap: wrap; column-gap: 20px; align-content: flex-start; }
#top .hm-phform-card .forminator-row { width: 100%; margin-bottom: 14px !important; }
#top .hm-phform-card .forminator-row:has(.forminator-field-phone),
#top .hm-phform-card .forminator-row:has(.forminator-field-number),
#top .hm-phform-card .forminator-row:has([name="text-1"]),
#top .hm-phform-card .forminator-row:has([name="text-2"]),
#top .hm-phform-card .forminator-row:has(.forminator-field-date),
#top .hm-phform-card .forminator-row:has(.forminator-field-radio) { width: calc(50% - 10px); }
#top .hm-phform-card .forminator-row:has(.forminator-field-name)     { order: 1; }
#top .hm-phform-card .forminator-row:has(.forminator-field-phone)    { order: 2; }
#top .hm-phform-card .forminator-row:has(.forminator-field-number)   { order: 3; }
#top .hm-phform-card .forminator-row:has([name="text-1"])            { order: 4; }
#top .hm-phform-card .forminator-row:has([name="text-2"])            { order: 5; }
#top .hm-phform-card .forminator-row:has(.forminator-field-date)     { order: 6; }
#top .hm-phform-card .forminator-row:has(.forminator-field-radio)    { order: 7; }
#top .hm-phform-card .forminator-row:has(.forminator-field-textarea) { order: 8; }
#top .hm-phform-card .forminator-row.forminator-row-last             { order: 9; }

/* boxed WHITE inputs on the cream card; teal accent kept for focus/radio */
#top .hm-phcta .hm-phform-card .forminator-ui { --sc-color-main: var(--teal); }
body.page-id-47 #top .hm-phform-card .forminator-ui input.forminator-input,
body.page-id-47 #top .hm-phform-card .forminator-ui textarea.forminator-textarea,
body.page-id-47 #top .hm-phform-card .forminator-ui select.forminator-select--field { background: #fff !important; border: 1px solid var(--stone) !important; border-radius: 12px !important; }
/* submit = dark ink pill (V2), teal on hover */
#top .hm-phcta .forminator-custom-form button.forminator-button-submit { background: var(--ink) !important; }
#top .hm-phcta .forminator-custom-form button.forminator-button-submit:hover { background: var(--teal) !important; }

/* Two-column field grid. Forminator's native flex-wrap gives the original name/email pair a
   different width + gutter than the programmatically-paired rows, so the pairs don't line up.
   Dissolve the .forminator-row wrappers (display:contents) and lay every field out on one shared
   2-col grid - every pair now aligns exactly; full-width fields (details, submit) span both. */
#top .hm-phcta .forminator-custom-form { display: grid !important; grid-template-columns: 1fr 1fr; column-gap: 20px; row-gap: 14px; align-items: start; }
#top .hm-phcta .forminator-custom-form > .forminator-row { display: contents !important; }
#top .hm-phcta .forminator-custom-form .forminator-row { margin: 0 !important; }
#top .hm-phcta .forminator-custom-form .forminator-col { padding: 0 !important; }
#top .hm-phcta .forminator-custom-form .forminator-col-12 { grid-column: 1 / -1; }
#top .hm-phcta .forminator-custom-form > .forminator-row:last-child > .forminator-col { grid-column: 1 / -1; }
@media only screen and (max-width: 767px) {
  #top .hm-phcta .forminator-custom-form { grid-template-columns: 1fr; }
}

/* tablet/below: stack the two cards so the form card regains full width for its 2-col fields.
   The stacked photo card is shorter, so darken the scrim for heading legibility. */
@media only screen and (max-width: 980px) {
  #top .hm-phcta .entry-content-wrapper { flex-direction: column; align-items: stretch; gap: 24px; }
  /* stacked column: size cards to content (flex-basis:0 collapses their height otherwise) */
  #top .hm-phcta .flex_column, #top .hm-phcta .flex_column.hm-phform-card { flex: 0 0 auto !important; }
  #top .hm-phcta .flex_column:not(.hm-phform-card) { min-height: 300px; }
  #top .hm-phcta .flex_column:not(.hm-phform-card)::after {
    background: linear-gradient(to top, rgba(27,34,37,.85) 0%, rgba(27,34,37,.55) 55%, rgba(27,34,37,.22) 100%);
  }
}
/* phones (<=767 = Enfold's mobile-container breakpoint): Enfold already narrows every .container
   to 85%-centred here, so the two cards only need their horizontal padding dropped to fill that
   85% and line up with the sections above/below. Also tighten the form-card's inner padding. */
@media only screen and (max-width: 767px) {
  #top .hm-phcta .container.av-section-cont-open { padding: 28px 0 !important; }
  #top .hm-phcta .flex_column.hm-phform-card { padding: 26px 20px !important; }
}

/* Contact page v2: LIGHT hero + connected icon method-cards + office-hours card + form card */
#top .hm-contacthero .hm-eyebrow { color: var(--teal); }
#top .hm-contacthero .hm-title { font-family: var(--font-display); font-size: clamp(48px, 6vw, 92px) !important; line-height: 1.0; font-weight: 400; letter-spacing: -.025em; color: var(--ink); margin: 0; }
#top .hm-contacthero .hm-title em { font-style: italic; font-weight: 400; color: var(--cyan); }
#top .hm-contacthero .hm-lede { font-size: 17px !important; line-height: 1.7; color: var(--slate) !important; max-width: 460px; }
/* connected method cards */
#top .hm-methods { display: flex; flex-direction: column; gap: 1px; background: var(--stone); border: 1px solid var(--stone); border-radius: 18px; overflow: hidden; }
#top .hm-methods .hm-method { position: relative; background: var(--paper); padding: 26px 30px; display: grid; grid-template-columns: 56px 1fr auto; gap: 20px; align-items: center; transition: background .15s ease; }
#top .hm-methods .hm-method:not(.post):hover { background: var(--cream); }
#top .hm-methods .hm-method-link { position: absolute; inset: 0; z-index: 2; }
#top .hm-methods .ico { width: 56px; height: 56px; border-radius: 14px; background: var(--lake-pale); color: var(--teal-deep); display: flex; align-items: center; justify-content: center; font-size: 24px; line-height: 1; }
#top .hm-methods .hm-method.alt .ico { background: #F4E7CD; color: var(--tussock); }
#top .hm-methods .hm-method.post .ico { background: var(--cream); color: var(--warm-grey); }
#top .hm-methods .text .lbl { font-family: var(--font-body); font-size: 10px; color: var(--warm-grey); letter-spacing: .14em; text-transform: uppercase; margin-bottom: 4px; }
#top .hm-methods .text .v { font-family: var(--font-body); font-size: 22px; font-weight: 400; color: var(--ink) !important; letter-spacing: -.005em; }
#top .hm-methods .text .v small { display: block; font-size: 12.5px; color: var(--slate); font-weight: 400; margin-top: 4px; letter-spacing: 0; line-height: 1.45; }
/* wpautop wraps the trailing .arr + stretched link in a <p>; dissolve it so they return to the grid */
#top .hm-methods .hm-method > p { display: contents; }
#top .hm-methods .arr { color: var(--warm-grey); font-size: 18px; transition: transform .15s ease, color .15s ease; }
#top .hm-methods .hm-method:hover .arr { color: var(--teal); transform: translateX(4px); }
/* office-hours card */
#top .hm-hours { margin-top: 24px; background: var(--cream); border: 1px solid var(--stone); border-radius: 14px; padding: 22px 26px; }
#top .hm-hours .head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
#top .hm-hours .head::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: var(--teal); animation: hm-pulse 2s ease-in-out infinite; }
@keyframes hm-pulse { 0%,100% { opacity: 1; } 50% { opacity: .35; } }
#top .hm-hours .head .lbl { font-family: var(--font-body); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink); font-weight: 600; }
#top .hm-hours .head .now { color: var(--teal); font-size: 11.5px; font-weight: 600; }
#top .hm-hours .grid { display: grid; grid-template-columns: 1fr auto; gap: 6px 18px; padding-top: 12px; border-top: 1px solid var(--stone); align-items: baseline; }
#top .hm-hours .grid .day { font-family: var(--font-body); font-size: 16px !important; color: var(--ink) !important; margin: 0; }
#top .hm-hours .grid .tm { font-family: var(--font-body); font-size: 13px !important; color: var(--slate) !important; letter-spacing: .04em; text-align: right; margin: 0; }
/* form card (right column) */
#top .hm-contactmain .flex_column.av_one_half.hm-formcard { background: var(--cream); border: 1px solid var(--stone); border-radius: 18px; padding: 40px !important; }
#top .hm-formcard .hm-formcard-h { font-family: var(--font-display); font-size: 32px; font-weight: 400; color: var(--ink); letter-spacing: -.015em; margin: 0 0 8px; line-height: 1.15; }
#top .hm-formcard .hm-formcard-h em { font-style: italic; color: var(--teal); }
#top .hm-formcard .hm-formcard-sub { font-size: 14.5px !important; color: var(--slate) !important; line-height: 1.6; margin: 0 0 24px; }

/* Contact form fields: same styling as the Private Hire enquiry form - clean 2-col grid
   (name|email, booking ref|phone, message full), white inputs, dark submit, on a --cream card. */
#top .hm-formcard .forminator-custom-form { display: grid !important; grid-template-columns: 1fr 1fr; column-gap: 20px; row-gap: 14px; align-items: start; }
#top .hm-formcard .forminator-custom-form > .forminator-row { display: contents !important; }
#top .hm-formcard .forminator-custom-form .forminator-row { margin: 0 !important; }
#top .hm-formcard .forminator-custom-form .forminator-col { padding: 0 !important; }
#top .hm-formcard .forminator-custom-form .forminator-col-12 { grid-column: 1 / -1; }
#top .hm-formcard .forminator-custom-form > .forminator-row:last-child > .forminator-col { grid-column: 1 / -1; }
#top .hm-formcard .forminator-ui input.forminator-input,
#top .hm-formcard .forminator-ui textarea.forminator-textarea,
#top .hm-formcard .forminator-ui select.forminator-select--field { background: #fff !important; }
#top .hm-formcard .forminator-custom-form button.forminator-button-submit { background: var(--ink) !important; }
#top .hm-formcard .forminator-custom-form button.forminator-button-submit:hover { background: var(--teal) !important; }
/* "Booking reference" carries an "If relevant" hint - keep it inline with the label (one line)
   and cap its line-height so its input lines up with the Phone field beside it. */
#top .hm-formcard .forminator-field { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 8px; }
#top .hm-formcard .forminator-field > input,
#top .hm-formcard .forminator-field > textarea,
#top .hm-formcard .forminator-field > select,
#top .hm-formcard .forminator-field > .forminator-input,
#top .hm-formcard .forminator-field > .forminator-textarea { flex: 0 0 100%; }
#top .hm-formcard .forminator-description { line-height: 14px !important; margin: 0 !important; }

@media only screen and (max-width: 767px) {
  #top .hm-methods .hm-method { grid-template-columns: 44px 1fr auto; padding: 20px; gap: 14px; }
  #top .hm-methods .ico { width: 44px; height: 44px; font-size: 20px; }
  #top .hm-contactmain .flex_column.av_one_half.hm-formcard { padding: 26px 22px !important; }
  #top .hm-formcard .forminator-custom-form { grid-template-columns: 1fr; }
}

/* Forminator forms - Lake & Stone (matches the proof: mono labels, tight spacing,
   rounded inputs, teal focus, ink pill submit). The designer used ~16-22px between
   fields and 8px label->input; Forminator's default rows are much looser. */
#top .forminator-ui.forminator-custom-form { font-family: var(--font-sans); }

/* SPACING - tighten the vertical field spacing (leave Forminator's column
   gutter intact so paired Name/Email fields keep a gap between them). */
#top .forminator-ui .forminator-row { margin-bottom: 12px !important; }
#top .forminator-ui .forminator-row.forminator-row-last { margin-bottom: 0 !important; }
#top .forminator-ui .forminator-field { margin-bottom: 0 !important; padding-bottom: 0 !important; }
#top .forminator-ui input.forminator-input,
#top .forminator-ui textarea.forminator-textarea { margin-bottom: 0 !important; }

/* LABELS - mono, uppercase, warm-grey (per design) */
#top .forminator-ui .forminator-label {
  font-family: var(--font-mono) !important; font-size: 10px !important; font-weight: 500 !important;
  letter-spacing: .14em !important; text-transform: uppercase !important;
  color: var(--warm-grey) !important; margin-bottom: 8px !important; line-height: 1.4;
}
#top .forminator-ui .forminator-required,
#top .forminator-ui .forminator-label .forminator-required { color: #b4472f !important; }

/* INPUTS - rounded, stone border, teal focus */
#top .forminator-ui input.forminator-input,
#top .forminator-ui textarea.forminator-textarea,
#top .forminator-ui .forminator-input-with-connectedfield,
#top .forminator-ui select.forminator-select--field {
  border-radius: 12px !important; border: 1px solid var(--stone) !important; background: var(--paper) !important;
  color: var(--ink) !important; font-family: var(--font-sans) !important; font-size: 15px !important;
  padding: 13px 15px !important; box-shadow: none !important;
}
#top .forminator-ui textarea.forminator-textarea { min-height: 120px !important; line-height: 1.5; }
#top .forminator-ui input.forminator-input:focus,
#top .forminator-ui textarea.forminator-textarea:focus,
#top .forminator-ui select.forminator-select--field:focus {
  border-color: var(--teal) !important; box-shadow: 0 0 0 1.5px var(--teal) inset !important;
}
#top .forminator-ui ::placeholder { color: var(--warm-grey) !important; opacity: 1; }

/* RADIO (Return trip?) - tidy, on-brand, with breathing room between options */
#top .forminator-ui .forminator-radio { margin: 6px 24px 10px 0 !important; }
#top .forminator-ui .forminator-field-radio .forminator-radio { display: flex; align-items: center; }
#top .forminator-ui .forminator-radio-label { font-family: var(--font-sans) !important; font-size: 14px !important; color: var(--charcoal) !important; text-transform: none !important; letter-spacing: 0 !important; }
#top .forminator-ui .forminator-radio input:checked ~ .forminator-radio-bullet,
#top .forminator-ui .forminator-radio-bullet.active { border-color: var(--teal) !important; }

/* SUBMIT - teal pill, white text (per design) -> darker teal on hover */
#top .forminator-ui button.forminator-button-submit,
#top .forminator-ui .forminator-button {
  background: var(--teal) !important; color: #fff !important; border-radius: 999px !important;
  font-family: var(--font-sans) !important; font-weight: 600 !important; font-size: 15px !important;
  border: none !important; padding: 16px 34px !important; margin-top: 8px !important;
  min-width: 0 !important; width: auto !important;
}
#top .forminator-ui button.forminator-button-submit:hover,
#top .forminator-ui .forminator-button:hover { background: var(--teal-deep) !important; color: #fff !important; }

/* ==================================================================
   15. PRIVATE HIRE - "The vehicle" (v2: portrait photo + badge,
       two-column spec list, three-thumbnail row -> lightbox)
   ================================================================== */
#top .hm-bus { display: grid; grid-template-columns: 1.3fr 1fr; gap: 64px; align-items: start; }
/* About "The bus" reuses this component without the spec-list, so centre the info against the photo. */
#top .hm-bus.hm-bus--center { align-items: center; }
#top .hm-bus .hm-bus-photo { position: relative; margin: 0; aspect-ratio: 5/6; overflow: hidden; background: var(--cream); border-radius: 10px; cursor: zoom-in; }
#top .hm-bus .hm-bus-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
#top .hm-bus .hm-bus-photo p { margin: 0; }  /* neutralise the wpautop <p> that wraps the standalone photo */
#top .hm-bus .hm-bus-photo .badge { position: absolute; left: 24px; bottom: 24px; z-index: 2; background: rgba(244,239,227,.96); padding: 14px 18px; border-radius: 14px; max-width: 260px; }
#top .hm-bus .hm-bus-photo .badge .l { font-family: var(--font-body); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--teal); margin-bottom: 4px; font-weight: 600; }
#top .hm-bus .hm-bus-photo .badge .v { font-family: var(--font-body); font-size: 18px; color: var(--ink); line-height: 1.2; }
#top .hm-bus .hm-bus-info .section-num { font-family: var(--font-body); font-size: 11px; letter-spacing: .16em; color: var(--teal); text-transform: uppercase; margin-bottom: 14px; }
#top .hm-bus .hm-bus-info h2 { font-family: var(--font-display); font-size: 48px; line-height: 1.02; font-weight: 400; letter-spacing: -.025em; color: var(--ink); margin: 0 0 20px; }
#top .hm-bus .hm-bus-info h2 em { color: var(--teal); font-style: italic; }
#top .hm-bus .hm-bus-info .vehicle-note { font-size: 12.5px !important; color: var(--warm-grey) !important; font-style: italic; margin: 0 0 14px; }
#top .hm-bus .hm-bus-info > p { font-size: 16px !important; line-height: 1.7; color: var(--slate) !important; max-width: 460px; margin: 0 0 24px; }
#top .hm-bus .hm-bus-info .spec-list { list-style: none; margin: 20px 0 4px; padding: 20px 0 0; border-top: 1px solid var(--ink); display: grid; grid-template-columns: 1fr 1fr; gap: 11px 32px; }
#top .hm-bus .hm-bus-info .spec-list li { position: relative; padding-left: 20px; font-size: 14.5px; line-height: 1.5; color: var(--ink); margin: 0; }
#top .hm-bus .hm-bus-info .spec-list li::before { content: ''; position: absolute; left: 0; top: .62em; width: 6px; height: 6px; border-radius: 50%; background: var(--ink); }
#top .hm-bus .hm-bus-thumbs { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; border-top: 1px solid var(--ink); padding-top: 24px; margin-top: 8px; }
#top .hm-bus .hm-bus-thumbs .shot { position: relative; margin: 0; aspect-ratio: 5/4; border-radius: 10px; overflow: hidden; background: var(--cream); cursor: zoom-in; }
#top .hm-bus .hm-bus-thumbs .shot img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .4s ease; }
#top .hm-bus .hm-bus-thumbs .shot:hover img { transform: scale(1.04); }
@media only screen and (max-width: 900px) {
  #top .hm-bus { grid-template-columns: 1fr; gap: 32px; }
  #top .hm-bus .hm-bus-info .spec-list { grid-template-columns: 1fr; }
  #top .hm-bus .hm-bus-info h2 { font-size: 36px; }
}
@media only screen and (max-width: 560px) { #top .hm-bus .hm-bus-thumbs { grid-template-columns: 1fr 1fr; } }

/* widget style */
/* ------- 15. WBFM booking widget (beat Enfold's #top select/label rules) ------- *//*
#top .wbfm-widget-field select,
#top .wbfm-widget-field input {
  min-height: 54px;
  border: 1px solid var(--stone);
  border-radius: 12px;
  background-color: #fff;
  color: var(--ink);
  padding: 11px 16px;
  margin: 0;                       /* kill Enfold's margin-bottom:20px *//*
  font-family: var(--font-sans);
  font-size: 15px;
  text-transform: none;
  letter-spacing: normal;
  box-shadow: 0 1px 2px rgba(27,34,37,.04);
}
/* selects: replace Enfold's PNG arrow with a brand chevron, inset from the edge *//*
#top .wbfm-widget-field select {
  appearance: none;
  -webkit-appearance: none;
  padding-right: 42px;
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M0 0h10L5 6z' fill='%2336413F'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 16px center;
  background-size: 10px 6px;
}
/* teal focus ring — same convention as the Forminator inputs *//*
#top .wbfm-widget-field select:focus,
#top .wbfm-widget-field input:focus {
  outline: none;
  border-color: var(--teal);
  box-shadow: 0 0 0 1.5px var(--teal) inset;
}
/* labels: restore the uppercase micro-label look Enfold's #top label overrides *//*
#top .wbfm-widget-field label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--warm-grey);
}*/

/* =====================================================================
   15. WBFM BOOKING FLOW (book-seat page) - beat Enfold's #top form rules
   Enfold base.css/shortcodes.css style #top input/textarea/select/label at
   id-level specificity (1-0-1), out-ranking the plugin's .wbfm .field rules
   (0-2-1) and boxing the fields in cream. These #top .wbfm rules (1-2-1)
   re-assert the approved underline field design from wbfm-style.css /
   tekapobus-proof-v2/book.html. var(--ink/--teal/--stone/--linen/--r/--white)
   resolve from the .wbfm token scope, not :root.
   ===================================================================== */
#top .wbfm .field input,
#top .wbfm .field select {
  font-family: inherit;
  font-size: 14px;
  color: var(--ink);
  border: none;
  border-bottom: 1.5px solid var(--ink);
  border-radius: 0;
  padding: 6px 0;
  margin: 0;
  outline: none;
  background: transparent; /* shorthand also clears Enfold's select arrow PNG */
  width: 100%;
  box-shadow: none;
  height: auto;
  line-height: 1.4;
}
#top .wbfm .field select {
  -webkit-appearance: auto; /* Enfold sets none; restore the native arrow (design uses it) */
  appearance: auto;
  cursor: pointer;
}
#top .wbfm .field input:focus,
#top .wbfm .field select:focus {
  border-bottom-color: var(--teal);
  box-shadow: none;
  outline: none;
}
#top .wbfm .field.has-error input,
#top .wbfm .field.has-error select { border-bottom-color: #A8341F; } /* keep validation red (after :focus so it wins while focused, as in the plugin) */
#top .wbfm .field input[type=date] { width: auto; max-width: 170px; } /* re-assert: the generic rule above would stretch it */

#top .wbfm .field textarea {
  font-family: inherit;
  font-size: 13px;
  color: var(--ink);
  border: 1px solid var(--stone);
  border-radius: var(--r);
  padding: 8px;
  margin: 0;
  min-height: 60px;
  background: var(--white);
  width: 100%;
  box-shadow: none;
}
#top .wbfm .field textarea:focus {
  border-color: var(--teal);
  box-shadow: none;
  outline: none;
}

/* Labels: Enfold's #top label{bold, .92em} clobbers these; v2 proof = 15px, ink, regular */
#top .wbfm .field label {
  font-size: 15px;
  font-weight: 400;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--ink);
}

/* Passenger cards sit on the flow's cream, not white (matches v2 proof) */
#top .wbfm .pax-card { background: var(--linen); }

/* =====================================================================
   16. HEADER MUST NOT MOVE WHEN THE WOO CART GAINS ITEMS
   Enfold's woocommerce-mod.css (and legacy_configs.css) slides the whole
   .main_menu 30px left with a 0.8s transition the moment WooCommerce adds
   html_visible_cart to <html> - but only under the "stretch header" option
   (html_header_stretch). Our cart icon sits in the far-right gutter and
   never overlaps the nav, so the shove is pure jank. Same selector as
   Enfold's rule + #top out-ranks it (1-5-0 vs 0-5-0) whatever the load
   order; scoped to the stretch config so it can't touch other layouts.
   ===================================================================== */
.html_visible_cart.html_stretched.html_header_top.html_header_stretch #top .main_menu {
  right: 0;
  transition: none;
}

/* The DEPLOYED (design.tekapobus.co.nz) copy of this file additionally carries
   `#top.page-id-56 .container { padding: 0; margin: 0 !important; }` from an older
   full-bleed booking-page iteration. That margin:0 kills Enfold's `.container
   { margin: 0 auto }` on EVERY container of the Book page - header included - so
   the logo + nav sit hard-left on /book-seat/ only (misreported as a cart bug: the
   cart icon appears mid-booking, on that same page). Re-centre the HEADER container
   only; the flow's own containers keep whatever the page CSS does to them. Locally
   this is a no-op (margin is already auto, padding already 50px) but it keeps the
   header safe wherever this file lands. */
#top.page-id-56 #header .container {
  margin: 0 auto !important;
  padding: 0 50px;
}


/* =====================================================================
   17. CHECKOUT: NO "there are no payment methods" FLASH WHILE STRIPE LOADS
   The Blocks checkout paints that red banner the moment its payment store
   reports `paymentMethodsInitialized && expressPaymentMethodsInitialized`
   with an empty method list (woocommerce/assets/client/blocks/checkout.js).
   The Stripe gateway registers its Blocks integration a beat later, so on a
   cold load the banner mounts, sits there for a few seconds and is then
   replaced by the card form - alarming, and nothing the customer can act on.

   Fix, no JS: hold the banner hidden for --hm-pay-hold counted from the
   moment it mounts (an animation's clock starts when its element is created,
   so the delay measures exactly the flash window - not page load), with a
   quiet "Loading payment options" line standing in. If Stripe arrives the
   banner is unmounted and never seen at all; if the store genuinely has no
   gateway the banner reveals itself when the hold expires, so a real outage
   is still reported to the customer - just late.

   Two mechanics worth knowing before editing this:
   - visibility (not display) does the hiding: it suppresses the element's own
     border/background, and a pseudo-element can opt back in out of a hidden
     parent. `display` inside @keyframes needs discrete animation (Chrome 116+
     / Safari 17.4+) and would swallow the error permanently on anything older.
   - visibility only animates ONE WAY. Per spec the interpolated value is
     `visible` for every progress in (0,1], so hidden -> visible lands (the
     reveal below) but visible -> hidden never does - a `to { visibility:
     hidden }` keyframe finishes with the element still on screen (verified in
     Chrome). The stand-in therefore leaves on opacity, not visibility.
   ===================================================================== */
.wc-block-checkout__no-payment-methods-notice {
  --hm-pay-hold: 8s;          /* tune here: how long Stripe gets to register */
  visibility: hidden;
  position: relative;
  animation: hm-pay-notice-reveal 1ms linear var(--hm-pay-hold) forwards;
}
/* Stand-in while the banner is held back, so the step isn't a blank gap.
   Opts back into visibility out of the hidden parent, then fades out on the
   same tick the real banner is revealed. */
.wc-block-checkout__no-payment-methods-notice::after {
  content: "Loading payment options\2026";
  visibility: visible;
  pointer-events: none;
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  font-family: var(--font-body);
  font-size: 14px;
  line-height: 1.4;
  color: var(--warm-grey);
  animation: hm-pay-placeholder-hide 1ms linear var(--hm-pay-hold) forwards;
}
@keyframes hm-pay-notice-reveal    { to { visibility: visible; } }
@keyframes hm-pay-placeholder-hide { to { opacity: 0; } }


/* =====================================================================
   18. HOMEPAGE WIDGET: DATE FIELD OVERFLOWS THE CARD ON iOS
   wbfm-style.css sizes the widget fields with `width:100%` only (rule
   `.wbfm-widget-field select,.wbfm-widget-field input`). Blink honours that
   on a date input, so desktop/Android Chrome look right - but WebKit gives
   `input[type=date]` an intrinsic width from its native shadow tree that
   `width` alone does not clamp, so on iPhone (Safari AND Chrome, both WebKit)
																	  
																		  
																	  
   the field renders at its natural width and spills past the card's 28px
   padding. Only the date field does it; the two selects are fine, which is
   why the grid track itself is not the problem.
																			 
											 

   Fix: cap it with `max-width` - the same lever wbfm-style.css already uses
   on the booking-flow page (`.wbfm .field input[type=date]{max-width:170px}`,
   which is why the flow does not show this). `min-width:0` on the grid item
   and its flex label is belt-and-braces: it stops the automatic minimum size
   of a grid/flex item from letting the input widen the 1fr track instead.
																		 
																	   
												  
   ===================================================================== */
#top form.wbfm-widget .wbfm-widget-field,
#top form.wbfm-widget .wbfm-widget-field label {
  min-width: 0;
}
@supports (-webkit-touch-callout: none) {
  #top form.wbfm-widget .wbfm-widget-field input[type="date"] {
    width: 100%;
    padding-left: 0;
    padding-right: 0;
    border: 0;
    box-shadow: inset 0 0 0 1px #d9d1be, 0 1px 2px rgba(27, 34, 37, .04);
    text-indent: 16px;
  }
  #top form.wbfm-widget .wbfm-widget-field input[type="date"]::-webkit-date-and-time-value {
    text-align: left;
  }
}

/* token-align the widget teal (plugin hardcodes off-brand #0f8382) */
#top .wbfm-widget-submit { background: var(--teal); }
#top .wbfm-widget-submit:hover { background: var(--teal-deep); }



/* plugin styles */
#top .wbfm-widget-title {
    border-bottom: 2px solid #63C1D7;
    padding-bottom: 7px;
    margin-bottom: 9px;
}

#top .wbfm-widget {
    border: 1px solid #63C1D7;
}
#top .wbfm-widget-fare {
    border-top: 1px solid #63C1D7;
}
.responsive #top .container .screen.active > p.screen-title.serif{
	font-size: 50px;
	letter-spacing: -.01em;
	line-height: 1.05
	color: var(--teal);
	font-weight: 500;
	margin-bottom: 6px
}
@media  (max-width: 768px){
	.responsive #top .container .screen.active > p.screen-title.serif{ margin-bottom: 30px; }
}


.page-id-56 .wbfm{
	margin-left: 0px;
	margin-right: 0px;
	width: 100vw;
	border-radius: 0;
	border-color: var(--ink) !important;
}
#top.page-id-56 .container {
    margin: 0 0 !important;
	padding: 0;
}
.content {
    padding-top: 0px;
    padding-bottom: 0px;
}

.wbfm .wbfm-stepper {
    background: var(--ink);
    border-bottom: 1px solid var(--ink);
    border-radius: 0 0 0 0;
	background: var(--teal);
}
.wbfm .st-step.active .st-num {
    background: #fff;
    /*border-color: #fff;*/
	border-color: var(--teal-mid);
    color: var(--ink);
}
.wbfm .st-step.active {
    border-bottom-color: var(--teal-mid);
    color: #fff;
}

.wbfm .ann{display:none}