/* =========================================================================
   365 Van — Elementor Addons : shared frontend styles
   Ported 1:1 from the original standalone design (fonts, tokens, keyframes,
   reveal animation, hover effects + every responsive breakpoint).
   ========================================================================= */

/* Design tokens (scoped to our widgets so we never leak into the theme). */
.van365{
  --ink:#0F1B2D;
  --accent:#FFB400;   /* restored gold — see note below on why */
  --dark:#0E1726;
  --cream:#F5F3EF;
}

/* Client asked for black BUTTONS, but --accent is also used as a plain text/
   icon colour in ~9 other widgets (eyebrow labels, star ratings, stat
   numbers) that sit on dark section backgrounds and rely on it staying a
   light gold to stay legible. Turning the token itself black broke those —
   dark text on a dark background, invisible. So --accent stays gold, and
   only actual button backgrounds are overridden here instead, via the exact
   inline style every button widget writes. A visible border + shadow is
   added too, because our "black" is close to several section backgrounds
   (hero, CTA band, footer) and would otherwise disappear into them. */
.van365 [style*="background:var(--accent)"]{
  background:#0E1726 !important;
  color:#ffffff !important;
  border:1.5px solid rgba(255,255,255,.3) !important;
  box-shadow:0 2px 8px rgba(0,0,0,.35) !important;
}

/* Base resets that the original relied on, scoped to our blocks. */
.van365, .van365 *{ box-sizing:border-box; }
.van365{
  font-family:'Hanken Grotesk', system-ui, sans-serif;
  color:#0F1B2D;
  -webkit-font-smoothing:antialiased;
}
.van365 ::selection{ background:var(--accent); color:#0F1B2D; }
.van365 a{ color:inherit; }
.van365 img{ max-width:none; }            /* keep object-fit images crisp, ignore theme img rules */
.van365 input::placeholder,
.van365 textarea::placeholder{ color:#9AA3AE; }
.van365 .v365-imgslot{ display:block; }

/* ---- keyframes ---------------------------------------------------------- */
@keyframes van365-ping{ 75%,100%{ transform:scale(2.3); opacity:0; } }
@keyframes van365-floaty{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-8px); } }
@keyframes van365-revIn{ from{ opacity:0; transform:translateY(22px); } to{ opacity:1; transform:none; } }

/* ---- scroll reveal ------------------------------------------------------ *
 * Elements keep their inline initial state (opacity:0;translateY) and the
 * shared JS adds .v365-in to fade them up. We force them visible inside the
 * Elementor editor so the client always sees their content while editing. */
.van365 [data-reveal].v365-in{ opacity:1 !important; transform:none !important; }

.elementor-editor-active .van365 [data-reveal],
body.elementor-editor-active .van365 [data-reveal]{
  opacity:1 !important; transform:none !important;
}

/* Respect reduced-motion + never leave content hidden if JS is disabled. */
@media (prefers-reduced-motion:reduce){
  .van365 *{ animation:none !important; transition:none !important; }
  .van365 [data-reveal]{ opacity:1 !important; transform:none !important; }
}
.no-js .van365 [data-reveal]{ opacity:1 !important; transform:none !important; }

/* ===== HEADER ============================================================ */
.van365 .sh *{ box-sizing:border-box; }
@media(max-width:1080px){
  .van365 .sh-nav{ display:none !important; }
  .van365 .sh-burger{ display:inline-flex !important; }
  .van365 .sh-book-btn{ display:none !important; }
}

/* ===== HERO + TRUST BAR (home) ========================================== */
@media(max-width:1080px){
  .van365 [data-hero-grid]{ grid-template-columns:1fr !important; }
  .van365 [data-hero-art]{ min-height:360px !important; order:-1; }
  .van365 [data-trust-bar]{ grid-template-columns:1fr 1fr !important; }
  .van365 [data-trust-bar] .tdiv{ display:none !important; }
}
@media(max-width:640px){
  .van365 [data-trust-bar]{ grid-template-columns:1fr !important; }
  .van365 [data-hero-btns]{ flex-direction:column !important; align-items:stretch !important; }
}

/* ===== BOOKING ========================================================== */
/* 4 equal fields on desktop; 2-up on small laptop; single column on phones/tablets. */
.van365 [data-book-row] label,
.van365 [data-book-row] input,
.van365 [data-book-row] select{ box-sizing:border-box; }

/* Safari fix: explicit width + flex fallback */
.van365 [data-book-row]{
  display:-webkit-box;
  display:-webkit-flex;
  display:flex;
  -webkit-flex-wrap:wrap;
  flex-wrap:wrap;
  gap:12px;
  align-items:end;
}
.van365 [data-book-row] > *{
  -webkit-box-flex:1;
  -webkit-flex:1 1 200px;
  flex:1 1 200px;
  min-width:0;
}
/* Keep grid for modern browsers */
@supports(display:grid){
  .van365 [data-book-row]{
    display:grid;
    grid-template-columns:repeat(4,1fr);
  }
  .van365 [data-book-row] > *{ flex:unset; }
}
@media(max-width:980px){
  .van365 [data-book-row]{ grid-template-columns:1fr 1fr !important; }
  .van365 [data-book-row] > *{ -webkit-flex:1 1 45%; flex:1 1 45%; }
}
@media(max-width:768px){
  .van365 [data-book-row]{ grid-template-columns:1fr !important; }
  .van365 [data-book-row] > *{ -webkit-flex:1 1 100%; flex:1 1 100%; }
}
/* Safari date input fix */
.van365 [data-book-row] input[type="date"]{
  -webkit-appearance:none;
  appearance:none;
  min-height:44px;
  width:100%;
}
/* Safari select fix */
.van365 [data-book-row] select{
  -webkit-appearance:none;
  appearance:none;
  width:100%;
}

/* ===== SERVICES / INTEGRATION =========================================== */
@media(max-width:1080px){
  .van365 [data-svc-grid]{ grid-template-columns:1fr !important; }
  .van365 [data-integ-grid]{ grid-template-columns:1fr !important; }
}
@media(max-width:640px){
  .van365 [data-integ-logos]{ grid-template-columns:1fr 1fr !important; }
}

/* ===== SERVICE / ABOUT page grids ====================================== */
@media(max-width:980px){
  .van365 [data-svc-hero]{ grid-template-columns:1fr !important; }
  .van365 [data-about-hero]{ grid-template-columns:1fr !important; }
  .van365 [data-vals-grid]{ grid-template-columns:1fr !important; }
  .van365 [data-stat-row]{ flex-wrap:wrap !important; }
  .van365 [data-spec-grid]{ grid-template-columns:1fr 1fr !important; }
  .van365 [data-incl-grid]{ grid-template-columns:1fr !important; }
  .van365 [data-cta-band]{ flex-direction:column !important; align-items:flex-start !important; }
}
@media(max-width:560px){
  .van365 [data-spec-grid]{ grid-template-columns:1fr !important; }
}

/* ===== CONTACT ========================================================== */
@media(max-width:980px){
  .van365 [data-contact-grid]{ grid-template-columns:1fr !important; }
}
@media(max-width:560px){
  .van365 [data-form-2]{ grid-template-columns:1fr !important; }
}

/* ===== FOOTER =========================================================== */
.van365 .ftr *{ box-sizing:border-box; }
.van365 .ftr a{ transition:color .2s ease; }
@media(max-width:820px){ .van365 .ftr-grid{ grid-template-columns:1fr 1fr !important; } }
@media(max-width:520px){ .van365 .ftr-grid{ grid-template-columns:1fr !important; } }

/* Stop Elementor's default widget wrapper padding from offsetting full-bleed sections. */
.elementor-widget-van365-header .elementor-widget-container,
.elementor-widget-van365-hero .elementor-widget-container,
.elementor-widget-van365-footer .elementor-widget-container{ padding:0; }

/* ============================================================
   Fluent Forms theming — make submitted forms match the design.
   .v365-ff           => dark card (Contact Form widget)
   .v365-ff-light     => white card (Booking widget)
   ============================================================ */
.van365 .v365-ff .fluentform .ff-el-group{ margin-bottom:14px; }
.van365 .v365-ff .fluentform .ff-el-input--label label,
.van365 .v365-ff .fluentform label{
  font-family:'Space Mono',monospace; font-size:10px; letter-spacing:.14em;
  text-transform:uppercase; color:rgba(255,255,255,.55); margin-bottom:6px;
}
.van365 .v365-ff .fluentform input[type=text],
.van365 .v365-ff .fluentform input[type=email],
.van365 .v365-ff .fluentform input[type=tel],
.van365 .v365-ff .fluentform input[type=number],
.van365 .v365-ff .fluentform input[type=date],
.van365 .v365-ff .fluentform select,
.van365 .v365-ff .fluentform textarea{
  background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.12);
  border-radius:12px; padding:13px 15px; color:#fff; font-size:15px;
  font-family:'Hanken Grotesk',system-ui,sans-serif; box-shadow:none; height:auto;
}
.van365 .v365-ff .fluentform input::placeholder,
.van365 .v365-ff .fluentform textarea::placeholder{ color:rgba(255,255,255,.4); }
.van365 .v365-ff .fluentform input:focus,
.van365 .v365-ff .fluentform select:focus,
.van365 .v365-ff .fluentform textarea:focus{ border-color:var(--accent); outline:none; }
.van365 .v365-ff .fluentform .ff-btn-submit,
.van365 .v365-ff .fluentform button[type=submit]{
  background:var(--accent); color:var(--ink); border:none; border-radius:13px;
  font-family:'Sora',sans-serif; font-weight:700; font-size:15px; padding:15px 22px;
  width:100%; cursor:pointer; box-shadow:none;
}
.van365 .v365-ff .fluentform .ff-btn-submit:hover{ filter:brightness(.96); }
.van365 .v365-ff .fluentform .ff-message-success,
.van365 .v365-ff .fluentform .ff_submit_success{
  color:var(--accent); font-family:'Space Mono',monospace; font-size:13px;
  letter-spacing:.03em; background:transparent; border:none; padding:6px 0;
}

/* Light variant (booking white card) */
.van365 .v365-ff-light .fluentform .ff-el-input--label label,
.van365 .v365-ff-light .fluentform label{ color:#7A8290; }
.van365 .v365-ff-light .fluentform input[type=text],
.van365 .v365-ff-light .fluentform input[type=email],
.van365 .v365-ff-light .fluentform input[type=tel],
.van365 .v365-ff-light .fluentform input[type=number],
.van365 .v365-ff-light .fluentform input[type=date],
.van365 .v365-ff-light .fluentform select,
.van365 .v365-ff-light .fluentform textarea{
  background:#F5F3EF; border:1px solid rgba(15,27,45,.08); color:var(--ink);
}
.van365 .v365-ff-light .fluentform input::placeholder,
.van365 .v365-ff-light .fluentform textarea::placeholder{ color:#9aa3ad; }
.van365 .v365-ff-light .fluentform .ff-message-success,
.van365 .v365-ff-light .fluentform .ff_submit_success{ color:#16A34A; }

/* ============================================================
   Mobile polish — phone-specific tuning (≤640 / ≤480).
   Grids already collapse above; this fixes image heights,
   booking tabs overflow, CTA buttons, and tap targets.
   ============================================================ */
@media(max-width:768px){
  /* Service / About hero images are too tall on phones */
  .van365 [data-svc-hero] .v365-imgslot,
  .van365 [data-about-hero] .v365-imgslot{ height:300px !important; }
  /* Booking tabs: let them fit, smaller padding */
  .van365 [data-v365-tabs]{ width:100% !important; justify-content:space-between !important; }
  .van365 [data-v365-tab]{ flex:1; padding:9px 10px !important; font-size:12.5px !important; }
}
@media(max-width:480px){
  .van365 [data-svc-hero] .v365-imgslot,
  .van365 [data-about-hero] .v365-imgslot{ height:240px !important; }
  /* CTA buttons stack full-width so they're easy to tap */
  .van365 [data-cta-actions]{ width:100%; flex-direction:column; align-items:stretch; }
  .van365 [data-cta-actions] a{ justify-content:center; width:100%; }
  /* About-hero stat row: give each stat room */
  .van365 [data-stat-row]{ gap:22px !important; }
  /* Service-hero action buttons full width */
  .van365 [data-svc-hero] a[style*="border-radius:12px"]{ flex:1 1 100%; justify-content:center; }
  /* Slightly tighten very large section vertical padding on tiny screens */
  .van365 section{ }
}
/* Make booking tab labels never overflow the pill on any width */
.van365 [data-v365-tab]{ white-space:nowrap; }

/* ============================================================
   Reviews / Pricing / Fleet — responsive grids
   ============================================================ */
@media(max-width:980px){
  .van365 [data-reviews-grid]{ grid-template-columns:1fr 1fr !important; }
  .van365 [data-pricing-grid]{ grid-template-columns:1fr !important; }
  .van365 [data-fleet-grid]{ grid-template-columns:1fr 1fr !important; }
}
@media(max-width:640px){
  .van365 [data-reviews-grid]{ grid-template-columns:1fr !important; }
  .van365 [data-fleet-grid]{ grid-template-columns:1fr !important; }
}

/* Hide phone number in header on mobile (too cramped) */
@media(max-width:1080px){
  .van365 .sh-phone-link{ display:none !important; }
}

/* ============================================================
   Contrast improvements — sharper text on all backgrounds
   ============================================================ */
/* Ensure body/paragraph text is dark enough on cream backgrounds */
.van365 section p,
.van365 section li,
.van365 section span{ color:inherit; }

/* Pricing card featured: ensure full contrast on dark bg */
.van365 [data-pricing-grid] p,
.van365 [data-pricing-grid] li{ color:inherit; }

/* Footer: increase contrast on dark bg */
.van365 .ftr-grid p{
  color:rgba(255,255,255,.72);
}
.van365 footer a:hover{
  color:#FFB400 !important;
}

/* Trust bar text contrast */
.van365 [data-trust-bar] [data-reveal]{
  color:#fff;
}

/* Photo gallery responsive */
@media(max-width:980px){
  .van365 [data-gallery-grid]{ grid-template-columns:1fr 1fr !important; }
}
@media(max-width:560px){
  .van365 [data-gallery-grid]{ grid-template-columns:1fr 1fr !important; }
}

/* Carousel: hide overflow cleanly + prevent text select while dragging */
.van365 .v365-carousel{ overflow:hidden; }
.van365 .v365-carousel-track{ user-select:none; }

/* ============================================================
   Universal carousel — reviews + photo gallery
   ============================================================ */
.van365 .v365-carousel{
  overflow:hidden;
  position:relative;
}
.van365 .v365-carousel-track{
  display:flex;
  gap:18px;
  transition:transform .42s cubic-bezier(.25,.8,.25,1);
  will-change:transform;
}
/* Desktop: 3 per view */
.van365 .v365-carousel-slide{
  flex:0 0 calc((100% - 36px) / 3);
  min-width:0;
  box-sizing:border-box;
}
/* Tablet: 2 per view */
@media(max-width:900px){
  .van365 .v365-carousel-slide{
    flex:0 0 calc((100% - 18px) / 2);
  }
}
/* Mobile: 1 per view */
@media(max-width:580px){
  .van365 .v365-carousel-slide{
    flex:0 0 100%;
  }
}
/* Photo gallery carousel slide */
.van365 .v365-gal-slide{
  flex:0 0 calc((100% - 28px) / 3);
  min-width:0;
  box-sizing:border-box;
}
@media(max-width:900px){
  .van365 .v365-gal-slide{
    flex:0 0 calc((100% - 14px) / 2);
  }
}
@media(max-width:580px){
  .van365 .v365-gal-slide{
    flex:0 0 100%;
  }
}
.van365 .v365-gal-slide img{
  display:block;
  width:100%;
  object-fit:cover;
  border-radius:16px;
  transition:transform .4s ease;
}
.van365 .v365-gal-slide:hover img{
  transform:scale(1.04);
}
/* Nav buttons */
.van365 .v365-nav-btn{
  width:44px;height:44px;border-radius:50%;
  background:#fff;border:1px solid rgba(15,27,45,.13);
  cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
  box-shadow:0 4px 12px rgba(15,27,45,.1);
  transition:background .18s,box-shadow .18s;
  flex:none;
}
.van365 .v365-nav-btn:hover{
  background:var(--accent);
  border-color:var(--accent);
  box-shadow:0 6px 18px rgba(255,180,0,.35);
}

/* ============================================================
   Chauffeur Booking System theming.

   COLOURS are NOT set here — Chauffeur ships a 10-slot colour
   palette per booking form (Chauffeur -> Booking Forms -> Style).
   Set them there; the map is documented in README.md.

   This block only covers what the colour picker cannot do:
   typography, corner radius, field height and the gold button's
   label colour (gold + white fails contrast, so we force ink).

   .v365-chbs        => wrapper on both the hero widget and Book page
   .v365-chbs-strip  => the compact hero strip only
   ============================================================ */

.van365 .v365-chbs .chbs-form-field-label,
.van365 .v365-chbs .chbs-summary-field-name{
  font-family:'Space Mono',monospace; font-size:10px; letter-spacing:.14em;
  text-transform:uppercase;
}

.van365 .v365-chbs input[type=text],
.van365 .v365-chbs input[type=email],
.van365 .v365-chbs input[type=tel],
.van365 .v365-chbs input[type=number],
.van365 .v365-chbs select,
.van365 .v365-chbs textarea,
.van365 .v365-chbs .chbs-selectmenu-button{
  border-radius:14px; padding:12px 15px; font-size:15px;
  font-family:'Hanken Grotesk',system-ui,sans-serif; height:auto;
}

.van365 .v365-chbs .chbs-button,
.van365 .v365-chbs .chbs-button-step-next,
.van365 .v365-chbs .chbs-button-step-prev,
.van365 .v365-chbs .chbs-button-widget-submit{
  border-radius:14px; font-family:'Sora',sans-serif; font-weight:700;
  font-size:15px; letter-spacing:0; text-transform:none;
}

/* Colour #1 in Chauffeur's own palette was changed from gold to black
   (0E1726) to match the site's buttons, so these need white labels now,
   not the ink-on-gold contrast fix this rule used to provide. */
.van365 .v365-chbs .chbs-button-style-1,
.van365 .v365-chbs .chbs-button-step-next,
.van365 .v365-chbs .chbs-button-widget-submit,
.van365 .v365-chbs .chbs-button-selected,
.van365 .v365-chbs .chbs-state-selected{ color:#ffffff !important; }

.van365 .v365-chbs .chbs-summary-header,
.van365 .v365-chbs .chbs-vehicle-content-title{
  font-family:'Sora',sans-serif; font-weight:700; letter-spacing:-.01em;
}

.van365 .v365-chbs .chbs-summary,
.van365 .v365-chbs .chbs-vehicle{ border-radius:18px; }

/* Compact hero strip — keep it flush inside the white booking card. */
.van365 .v365-chbs-strip .chbs-booking-form-widget{ background:transparent; padding:0; }
.van365 .v365-chbs-strip .chbs-button-widget-submit{ width:100%; padding:17px 22px; }

/* Chauffeur ships its own grid; stop the theme forcing images to shrink. */
.van365 .v365-chbs img{ max-width:100%; }

/* ============================================================
   Chauffeur compact strip (hero "Reserve your ride").

   jQuery UI Tabs runs on .chbs-tab after page load and writes an
   INLINE display value onto the active panel. Inline styles beat
   every stylesheet rule, which is why Chauffeur's own widget_style-2
   row layout never takes effect here. Hence !important on the
   layout properties — it is the only thing that outranks an inline
   style.

   Scoped to .v365-chbs-strip, so the full form on the Book page
   keeps Chauffeur's normal styling.
   ============================================================ */

.van365 .v365-chbs-strip .chbs-main.chbs-widget{
  background:transparent;
  padding:0 !important;
  margin:0 !important;
}

/* Hidden tab list still reserves vertical space above the fields. */
.van365 .v365-chbs-strip .chbs-tab>ul{ display:none !important; }

/* Collapse Chauffeur's own chrome — the white card already provides it. */
.van365 .v365-chbs-strip .chbs-tab,
.van365 .v365-chbs-strip .chbs-main-content,
.van365 .v365-chbs-strip .chbs-layout-100,
.van365 .v365-chbs-strip .chbs-layout-column-left,
.van365 .v365-chbs-strip .chbs-main-content-step-1{
  width:100% !important;
  float:none !important;
  margin:0 !important;
  padding:0 !important;
  border:none !important;
  box-shadow:none !important;
  background:transparent !important;
}

/* Only one row + one submit button in the compact strip. Chauffeur
   renders one panel per enabled service type (Distance, Hourly, ...).
   This stayed hidden while only Distance was enabled; turning Hourly on
   later added a second panel, which the rule below was rendering as a
   second full row with its own duplicate "Book now" button. The compact
   strip is meant to be a single quick quote — anyone wanting Hourly
   goes to the full Book Now page, which still shows both tabs properly. */
.van365 .v365-chbs-strip .chbs-tab>div[id^="panel-"]:not(:first-of-type){
  display:none !important;
}

/* ---- the row ---- */
.van365 .v365-chbs-strip .chbs-tab>div[id^="panel-"]{
  display:flex !important;
  flex-direction:row !important;
  flex-wrap:nowrap !important;
  align-items:stretch !important;
  gap:12px !important;
  width:100% !important;
  margin:0 !important;
  padding:0 !important;
  border:none !important;
  overflow:visible !important;
}

/* Fields the compact strip omits — collected on the Book page instead. */
.van365 .v365-chbs-strip .chbs-tab>div[id^="panel-"]>.chbs-form-field-transfer-type,
.van365 .v365-chbs-strip .chbs-tab>div[id^="panel-"]>.chbs-form-field-extra-time,
.van365 .v365-chbs-strip .chbs-tab>div[id^="panel-"]>.chbs-form-field-return-date-time,
.van365 .v365-chbs-strip .chbs-tab>div[id^="panel-"]>.chbs-hidden{
  display:none !important;
}

/* Pickup and drop-off: one column each. */
.van365 .v365-chbs-strip .chbs-tab>div[id^="panel-"]>.chbs-form-field{
  flex:1 1 0 !important;
  min-width:0 !important;
  width:auto !important;
  float:none !important;
  margin:0 !important;
}

/* Date + time share a double-width cell so all four boxes are equal. */
.van365 .v365-chbs-strip .chbs-form-field-pickup-date-time{
  display:flex !important;
  flex-direction:row !important;
  flex:2 1 0 !important;
  gap:12px !important;
  min-width:0 !important;
  margin:0 !important;
  padding:0 !important;
}
.van365 .v365-chbs-strip .chbs-form-field-pickup-date-time>.chbs-form-field{
  flex:1 1 0 !important;
  min-width:0 !important;
  width:auto !important;
  float:none !important;
  margin:0 !important;
}

/* ---- each cell: the original's cream rounded box ---- */
.van365 .v365-chbs-strip .chbs-form-field{
  display:flex !important;
  flex-direction:column !important;
  justify-content:center !important;
  align-items:stretch !important;
  gap:5px !important;
  min-height:74px;
  background:#F5F3EF !important;
  border:1px solid rgba(15,27,45,.08) !important;
  border-radius:14px !important;
  padding:12px 16px !important;
  text-align:left !important;
}

.van365 .v365-chbs-strip .chbs-form-field label,
.van365 .v365-chbs-strip .chbs-form-field .chbs-form-field-label{
  display:block !important;
  font-family:'Space Mono',monospace !important;
  font-size:10px !important;
  font-weight:400 !important;
  letter-spacing:.14em !important;
  text-transform:uppercase !important;
  text-align:left !important;
  color:#7A8290 !important;
  margin:0 !important;
  padding:0 !important;
  line-height:1.3 !important;
}

.van365 .v365-chbs-strip .chbs-form-field input,
.van365 .v365-chbs-strip .chbs-form-field select{
  background:transparent !important;
  border:none !important;
  box-shadow:none !important;
  outline:none !important;
  padding:0 !important;
  margin:0 !important;
  height:auto !important;
  min-height:0 !important;
  line-height:1.4 !important;
  width:100% !important;
  text-align:left !important;
  font-size:15px !important;
  font-family:'Hanken Grotesk',system-ui,sans-serif !important;
  color:var(--ink) !important;
}
.van365 .v365-chbs-strip .chbs-form-field input::placeholder{ color:#9AA3AE !important; }

/* iOS Safari bug: input text can render invisible unless
   -webkit-text-fill-color is set explicitly — `color` alone is not always
   enough there, readonly fields (Chauffeur's date/time pickers) most
   reliably, but a client report also showed it on the typed pickup/
   drop-off location fields, so this now covers every input and select
   in the booking form, not just the readonly ones. Covers both the hero
   strip and the full Book Now form, since both carry .v365-chbs. */
.van365 .v365-chbs input,
.van365 .v365-chbs select,
.van365 .v365-chbs textarea{
  -webkit-text-fill-color: var(--ink) !important;
  opacity: 1 !important;
}

/* "Use my location" and the question-mark tooltips crowd a compact cell. */
.van365 .v365-chbs-strip .chbs-my-location-link,
.van365 .v365-chbs-strip .chbs-form-field .chbs-tooltip{ display:none !important; }

/* ---- full-width gold submit ---- */
.van365 .v365-chbs-strip .chbs-main-content-step-1>div:last-child{
  margin-top:12px !important;
  padding:0 !important;
  border:none !important;
  text-align:center !important;
}
.van365 .v365-chbs-strip .chbs-button-widget-submit{
  float:none !important;
  display:block !important;
  width:100% !important;
  margin:0 !important;
  padding:18px 22px !important;
  border:none !important;
  border-radius:14px !important;
  text-align:center !important;
  font-family:'Sora',sans-serif !important;
  font-weight:700 !important;
  font-size:15px !important;
  color:var(--ink) !important;
}

/* ---- stack on narrow screens ---- */
@media (max-width:860px){
  .van365 .v365-chbs-strip .chbs-tab>div[id^="panel-"],
  .van365 .v365-chbs-strip .chbs-form-field-pickup-date-time{
    flex-direction:column !important;
  }
  .van365 .v365-chbs-strip .chbs-form-field{ min-height:0; }
}

/* Chauffeur's widget_style-2 draws cell-divider borders on the last cell
   in the row (border-width:0 1px 1px 0), coloured from the form's own
   palette. On the submit wrapper there is no neighbouring cell, so it
   renders as a stray line hanging past the button. Kill it, and let the
   button fill its wrapper edge to edge. */
.van365 .v365-chbs-strip .chbs-clear-fix,
.van365 .v365-chbs-strip div[id^="panel-"]>div:last-child,
.van365 .v365-chbs-strip .chbs-main-content-step-1>div:last-child{
  border:none !important;
  padding:0 !important;
  box-shadow:none !important;
}
.van365 .v365-chbs-strip .chbs-button-widget-submit{
  box-sizing:border-box !important;
  width:100% !important;
  max-width:none !important;
  margin:0 !important;
}

/* ============================================================
   Book Now page — dark banner over a white reservations page,
   form left, support sidebar right.
   ============================================================ */

body.page-template-book-now{ background:#ffffff; }

.van365.v365-book-page{ background:#ffffff; }

.v365-book-wrap{ max-width:1180px; margin:0 auto; padding:0 24px; }

/* ---- dark banner ---- */
.v365-book-banner{
  background:#1C1C1C;
  padding:clamp(56px,7vw,86px) 0 clamp(56px,7vw,86px);
}
.v365-book-eyebrow{
  display:block;
  font-family:'Space Mono',monospace;
  font-size:11px; letter-spacing:.22em; text-transform:uppercase;
  color:rgba(255,255,255,.45);
  margin-bottom:14px;
}
.v365-book-title{
  font-family:'Sora',sans-serif; font-weight:800;
  font-size:clamp(34px,5vw,58px); line-height:1.05; letter-spacing:-.03em;
  color:#ffffff; margin:0 0 18px;
}
.v365-book-lede{
  color:rgba(255,255,255,.62);
  font-size:16px; line-height:1.65; margin:0; max-width:58ch;
}

/* ---- white body ---- */
.v365-book-body{ background:#ffffff; padding:clamp(40px,5vw,70px) 0 clamp(64px,8vw,100px); }

.v365-book-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) 300px;
  gap:clamp(28px,4vw,60px);
  align-items:start;
}

.v365-book-note{
  margin:0; padding:40px 0; text-align:center;
  color:#7A8290; font-family:'Sora',sans-serif;
}

.v365-book-hint{
  margin:16px 0 0;
  color:#7A8290; font-size:13.5px; line-height:1.6; max-width:64ch;
}

.v365-book-trust{
  margin-top:22px;
  display:flex; flex-wrap:wrap; gap:8px 24px;
  font-family:'Space Mono',monospace;
  font-size:10.5px; letter-spacing:.13em; text-transform:uppercase;
  color:#9AA3AE;
}
.v365-book-trust a{ color:var(--ink); text-decoration:none; border-bottom:1px solid rgba(15,27,45,.25); }

/* ---- sidebar ---- */
.v365-book-card{
  background:#ffffff;
  border:1px solid rgba(15,27,45,.14);
  border-radius:6px;
  padding:24px;
}
.v365-book-card h2{
  font-family:'Sora',sans-serif; font-weight:700; font-size:17px;
  color:var(--ink); margin:0 0 10px; letter-spacing:-.01em;
}
.v365-book-card p{
  color:#6D7683; font-size:13.5px; line-height:1.6; margin:0 0 16px;
}
.v365-book-phone{
  display:block;
  font-family:'Sora',sans-serif; font-weight:800; font-size:21px;
  color:var(--ink); text-decoration:none; letter-spacing:-.01em;
}
.v365-book-sub{ display:block; margin-top:6px; color:#9AA3AE; font-size:12.5px; }
.v365-book-mail{ display:inline-block; margin-top:14px; color:#6D7683; font-size:13.5px; text-decoration:none; }

.v365-book-steps{ list-style:none; margin:34px 0 0; padding:0; }
.v365-book-steps li{ margin-bottom:26px; }
.v365-book-num{
  display:block;
  font-family:'Space Mono',monospace;
  font-size:10.5px; letter-spacing:.2em; color:#9AA3AE; margin-bottom:6px;
}
.v365-book-steps strong{
  display:block;
  font-family:'Sora',sans-serif; font-weight:700; font-size:15px;
  color:var(--ink); margin-bottom:4px; letter-spacing:-.01em;
}
.v365-book-desc{ color:#6D7683; font-size:13px; line-height:1.6; }

/* Flat form on white — no card, no shadow. */
.v365-book-page .v365-chbs-page .chbs-main{ background:transparent; }

@media (max-width:1000px){
  .v365-book-grid{ grid-template-columns:minmax(0,1fr); }
  .v365-book-aside{ order:2; }
}

/* ============================================================
   Book Now page — post-payment confirmation banner.

   Chauffeur's Stripe/PayPal flow has no confirmation view of its
   own; it just redirects to whatever "Success" URL is configured
   on the booking form's Payments tab. That URL is set to
   /book-now/?paid=1, and this banner is what the customer actually
   sees instead of Chauffeur's default (a blank return to wherever
   the URL points, with nothing on it).

   The booking is already confirmed server-side via webhook by the
   time this shows — this is purely the customer-facing message.
   ============================================================ */

.v365-book-confirm{
  background:#ffffff;
  border:1px solid rgba(15,27,45,.14);
  border-radius:8px;
  padding:clamp(32px,5vw,52px) clamp(24px,4vw,40px);
  text-align:center;
}

.v365-book-confirm-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:52px;
  height:52px;
  border-radius:50%;
  background:var(--accent);
  margin-bottom:20px;
}

.v365-book-confirm h2{
  font-family:'Sora',sans-serif;
  font-weight:800;
  font-size:clamp(24px,3vw,30px);
  letter-spacing:-.02em;
  color:var(--ink);
  margin:0 0 12px;
}

.v365-book-confirm p{
  color:#6D7683;
  font-size:15px;
  line-height:1.65;
  max-width:48ch;
  margin:0 auto 8px;
}

.v365-book-confirm-phone a{
  color:var(--ink);
  text-decoration:none;
  border-bottom:1px solid rgba(15,27,45,.25);
}

.v365-book-confirm-btn{
  display:inline-block;
  margin-top:22px;
  padding:14px 28px;
  background:var(--accent);
  color:var(--ink);
  border-radius:8px;
  font-family:'Sora',sans-serif;
  font-weight:700;
  font-size:14.5px;
  text-decoration:none;
}

/* ============================================================
   Hover-safety for black buttons.

   Chauffeur's own stylesheet has :hover rules for its buttons that
   were written assuming a gold background (colour #1's original
   default). With colour #1 now black too, hovering could make the
   label text blend into the button. Force the correct colours to hold
   on hover as well, on every button this plugin turns black. */
.van365 .v365-chbs .chbs-button-style-1:hover,
.van365 .v365-chbs .chbs-button-step-next:hover,
.van365 .v365-chbs .chbs-button-widget-submit:hover,
.van365 .v365-chbs .chbs-button-selected:hover,
.van365 .v365-chbs .chbs-state-selected:hover{
  color:#ffffff !important;
  background-color:#0E1726 !important;
}

.van365 [style*="background:var(--accent)"]:hover{
  color:#ffffff !important;
  background-color:#0E1726 !important;
}
