/*
 * tap-targets.css — touch-target sizing only. No colours, no radii, no type changes.
 *
 * Two thresholds: 44x44 CSS px for controls that matter (booking, buttons, tabs,
 * carousel, switchers); 24x24 CSS px = WCAG 2.5.8 (AA) floor for everything interactive.
 *
 * Guiding principle: EXPAND THE HIT AREA, NOT THE VISUAL. The ::before-overlay
 * rules below extend the clickable region INVISIBLY (transparent, no layout effect);
 * where a rule grows the visual box it says so explicitly. If you "clean this up"
 * by shrinking something, you are reintroducing a WCAG failure — measure first.
 */

/* === 1. BOOKING WIDGET (the money element) — VISUAL grows slightly, sanctioned === */
.lrq-tab { min-height: 44px; }                                   /* was 39.7 */
.lrq-cta { min-height: 44px; }                                   /* was 41.3 — submit */
.lrq-booking input,
.lrq-booking select { min-height: 44px; box-sizing: border-box; } /* was 40 */
.lr-select { min-height: 44px; }                                 /* "SELECT THIS CLASS" was 35.3 */

/* === 2. CAROUSEL CONTROLS — HIT AREA ONLY (visual unchanged) === */
/* .lr-arrow renders 41x34; ::before makes the touch region ~53x46 */
.lr-arrow { position: relative; }
.lr-arrow::before { content: ""; position: absolute; inset: -6px; }
/* .lr-dot renders 10x10; ::before makes it 24x24 (WCAG floor). Dots sit 20px apart,
   so 24px regions overlap neighbours by ~4px: harmless — neighbours navigate to
   adjacent slides, and the later sibling wins the sliver. Do NOT enlarge the dot
   itself; the 10px dot is the design. */
.lr-dot { position: relative; }
.lr-dot::before { content: ""; position: absolute; inset: -7px; }
/* swiper bullets render 7-10px; ::before brings them to ~23-26px */
.swiper-pagination-bullet { position: relative; }
.swiper-pagination-bullet::before { content: ""; position: absolute; inset: -9px; } /* 7px bullet -> 25px, 10px -> 28px */

/* === 3. ELEMENTOR BUTTONS (mobile) — VISUAL sizing: 31-35px -> >=44px === */
@media (max-width: 767px) {
  .elementor-button { min-height: 44px; box-sizing: border-box; }
  .elementor-button,
  .elementor-button .elementor-button-content-wrapper { align-items: center; }
}

/* === 3b. JETENGINE OVERLAY "BOOK A DRIVER" BUTTON (template 12056) ===
   BUG: the template's own CSS hardcodes padding:0, so the button rendered as a
   13.6px-tall text strip (the audit's "11px button"). Its background is
   transparent (#02010100), so restoring padding is INVISIBLE = hit-area-only. */
.jet-engine-listing-overlay-wrap .elementor-button {
  padding: 15px 19.5px;
  min-height: 44px;
  box-sizing: border-box;
}

/* === 4. LANGUAGE SWITCHERS — HIT AREA ONLY === */
/* WPML switcher (inner pages, both languages, every page) renders 26px tall */
.wpml-ls-link { position: relative; }
.wpml-ls-link::before { content: ""; position: absolute; inset: -11px -4px; } /* 23px tall -> 45px */

/* === 5. FOOTER LINKS + CREDIT LINK — HIT AREA ONLY ===
   inline vertical padding extends the clickable region WITHOUT reflowing lines
   (inline padding does not affect line layout; backgrounds here are transparent).
   16.7px text line -> 24.7px touch region. Line spacing is ~32px: no overlap. */
footer a,
.site-footer a,
.lx-footer a,
.elementor-location-footer a {
	padding: 4px 6px;            /* 16.7px line -> 24.7px tall, +/-6px wide */
	margin-left: -6px;           /* compensate the padding so TEXT DOES NOT MOVE: */
	margin-right: -6px;          /* net layout advance is unchanged (visual no-op) */
}

/* === 6. FAQ ACCORDION — HIT AREA ONLY ===
   The <a> rendered at 18-33px inside a 55-70px h3 whose padding was dead air.
   Negative margin + equal padding makes the anchor fill the whole row;
   the text does not move. h3 padding measured 20px/22px at mobile. */
@media (max-width: 767px) {
  .elementor-tab-title > a.elementor-accordion-title {
    display: block;
    margin: -20px -22px;
    padding: 20px 22px;
  }
}

/* === 7. HEADER LOGOS — HIT AREA ONLY ===
   EN homepage crest link renders 38x42; inner-page / FR wordmark links 24.8-34px
   tall. ::before extends the region invisibly; the images are untouched. */
.lr-logo { position: relative; }
.lr-logo::before { content: ""; position: absolute; inset: -4px -3px; } /* -> 44x48 */
header a:has(img) { position: relative; }
header a:has(img)::before { content: ""; position: absolute; inset: -10px -4px; }

/* === 8. JETFORMBUILDER FIELDS — VISUAL sizing: 41.9 selects / 32.8 submit -> 44 === */
select.jet-form-builder__field,
input.jet-form-builder__field,
textarea.jet-form-builder__field { min-height: 44px; box-sizing: border-box; }
.jet-form-builder__action-button { min-height: 44px; }

/* 320px overflow fix (pre-existing bug, verified identical WITHOUT this file):
   the date+time row's native inputs have UA min-content widths (date ~145px,
   time ~116px, + 12px gap = ~273px) that overflow the ~223px booking panel
   below ~354px viewport. Stacking is the only fix that SHRINKS NOTHING —
   fields go full-width and keep their 44px height. Both selectors needed:
   .is-expanded re-declares the two-column template at higher specificity. */
@media (max-width: 380px) {
	.lr-booking .lr-date-row,
	.lr-booking.is-expanded .lr-date-row { grid-template-columns: 1fr; }
}


/* ==========================================================================
   BRAND LAYER v1.0 — appended 2026-10-17 (approved resubmission).
   Visual layer: radius, button/field states, carousel, focus, hero size.
   Lives at the END of tap-targets.css — the last stylesheet in the
   child-theme chain (priority 9999) — so it wins source-order ties against
   every earlier stylesheet. Verified after append: nothing loads after this
   file.
   !IMPORTANT POLICY — used ONLY where the beaten declaration itself uses it:
   exactly two declarations (FR hero font-size / line-height), beating
   <style id="luxuride-dr-1-3b-homepage-visual-refinement">
   body.page-id-540 .lx-h1 .elementor-heading-title (0,3,1) !important.
   ROLLBACK: delete everything below this banner, purge LiteSpeed.
   ========================================================================== */

/* ---- 1. TOKENS — additions only; zero name conflicts with tokens.css. -- */
:root {
	--r: 4px;               /* interactive radius */
	--r-pill: 50%;          /* icon controls */
	--r-none: 0;            /* containers */
	--accent-press: #14307F;
	--black: #000000;
	--ease: cubic-bezier(0.22, 1, 0.36, 1);
	--fast: 200ms;
	--base: 400ms;
	--fs-xs: 12px;
	--fs-sm: 13px;
	--fs-md: 14px;
	--fs-lg: 16px;
	--fs-xl: 18px;
	--fs-2xl: 24px;
}

/* ---- 2. RADIUS ----
   R1 — interactive controls: 4px. Beats .lr-design .lrq-cta (0,2,0,
   lr-design.css) / .lr-quote (0,1,0) / .lr-select (0,1,0) / button (0,0,1,
   Astra Customizer inline) / body.elementor-page-3255 .lx-btn
   .elementor-button (0,3,1, post-3255.css — tie, won by source order). */
body .lr-design .lrq-cta,
body .lr-header .lr-quote,
body .lr-hero-copy .lr-discover,
body .lr-design .lr-select,
body .lr-booking .lrq-tab,
body.elementor-page-3255 .lx-btn .elementor-button,
body .jet-form-builder .jet-form-builder__submit-wrap .jet-form-builder__action-button.jet-form-builder__action-button {
	border-radius: var(--r);
}

/* R2 — booking fields: 4px. Beats .lr-booking input|select|textarea (0,1,1,
   lr-design.css). */
body .lr-booking :is(input, select, textarea) { border-radius: var(--r); }

/* R3 — JetFormBuilder fields: 4px. Beats the generated .cb-*
   .jet-form-builder__field-wrap input (0,2,1, JFB inline <style>). That block
   prints in the BODY, after this file, so a tie would LOSE — this selector
   is (0,2,2), strictly higher. */
body .jet-form-builder .jet-form-builder__field-wrap :is(input, select, textarea),
body .jet-form-builder .jet-form-builder-row > :is(input, select, textarea) { border-radius: var(--r); }

/* R4 — generic fields (search, comment forms): 4px. Beats input[type=text]
   etc. (0,1,1, Astra main.min.css). */
body :is(input[type="text"], input[type="email"], input[type="tel"], input[type="url"], input[type="date"], input[type="time"], input[type="number"], input[type="search"], input[type="password"], select, textarea) { border-radius: var(--r); }

/* R5 — icon controls: 50% (value UNCHANGED; moves the governing declaration
   here). Beats .lr-arrow/.lr-dot (0,1,0, lr-design.css) and
   body.elementor-page-3255 .lx-arrow (0,2,1, post-3255.css — tie, order). */
body .lr-design .lr-arrow,
body .lr-design .lr-dot,
body.elementor-page-3255 .lx-arrow { border-radius: var(--r-pill); }

/* R6 — CONTAINERS: deliberately absent. .lx-card (16px), .lx-step3 (14px),
   .lx-review (12px) and .lx-routecard (18px) are inconsistent but are LEFT
   ALONE pending a separate decision. Do not square them in a later edit
   without that decision being made explicitly. */

/* ---- 3. BUTTON STATES ----
   Default border is 1px solid #2E5BFF — invisible against the fill — so the
   1px hover border causes NO layout shift. :active deliberately follows
   :hover. Transition covers background, color AND border-color.
   Beats (default): button (0,0,1, Astra inline) / .lr-quote (0,1,0,
   lr-design.css) / body.elementor-page-3255 .lx-btn .elementor-button
   (0,3,1, post-3255.css — tie, order).
   Beats (hover): button:hover (0,1,1, Astra inline #1E3FA8) /
   body.elementor-page-3255 .lx-btn .elementor-button:hover (0,4,1,
   post-3255.css — tie, order) / a:hover (0,1,1, Astra main.min.css). */
body .lr-design .lrq-cta,
body .lr-header .lr-quote,
body.elementor-page-3255 .lx-btn .elementor-button,
body .jet-form-builder .jet-form-builder__submit-wrap .jet-form-builder__action-button.jet-form-builder__action-button {
	background-color: #2E5BFF;
	border: 1px solid #2E5BFF;
	color: #FFFFFF;
	transition: background-color var(--fast) var(--ease), color var(--fast) var(--ease), border-color var(--fast) var(--ease);
}
body .lr-design .lrq-cta:hover,
body .lr-header .lr-quote:hover,
body.elementor-page-3255 .lx-btn .elementor-button:hover,
body .jet-form-builder .jet-form-builder__submit-wrap .jet-form-builder__action-button.jet-form-builder__action-button:hover {
	background-color: var(--black);
	border-color: #2E5BFF;
	color: #7FA8FF;
}
body .lr-design .lrq-cta:active,
body .lr-header .lr-quote:active,
body.elementor-page-3255 .lx-btn .elementor-button:active,
body .jet-form-builder .jet-form-builder__submit-wrap .jet-form-builder__action-button.jet-form-builder__action-button:active {
	background-color: var(--accent-press);
	border-color: var(--accent-press);
	color: #FFFFFF;
}
body .lr-design .lrq-cta:focus-visible,
body .lr-header .lr-quote:focus-visible,
body.elementor-page-3255 .lx-btn .elementor-button:focus-visible,
body .jet-form-builder .jet-form-builder__submit-wrap .jet-form-builder__action-button.jet-form-builder__action-button:focus-visible {
	outline: 2px solid #7FA8FF;
	outline-offset: 2px;
}
body .lr-design .lrq-cta:disabled,
body .lr-header .lr-quote:disabled,
body.elementor-page-3255 .lx-btn .elementor-button:disabled,
body .jet-form-builder .jet-form-builder__submit-wrap .jet-form-builder__action-button.jet-form-builder__action-button:disabled {
	background-color: #1B2434;
	border-color: #1B2434;
	color: #4C5A72;
	cursor: not-allowed;
}

/* Secondary buttons — bases stay as designed; states normalized. Beats
   .lr-select:hover,.lr-discover:hover (0,2,0, lr-design.css). */
body .lr-design .lr-discover,
body .lr-design .lr-select {
	transition: background-color var(--fast) var(--ease), color var(--fast) var(--ease), border-color var(--fast) var(--ease);
}
body .lr-design .lr-discover:hover,
body .lr-design .lr-select:hover {
	background-color: var(--black);
	border-color: #2E5BFF;
	color: #7FA8FF;
}
body .lr-design .lr-discover:active,
body .lr-design .lr-select:active {
	background-color: var(--accent-press);
	border-color: var(--accent-press);
	color: #FFFFFF;
}
body .lr-design .lr-discover:focus-visible,
body .lr-design .lr-select:focus-visible,
body .lr-booking .lrq-tab:focus-visible,
body .lr-design .lr-arrow:focus-visible,
body .lr-design .lr-dot:focus-visible,
body.elementor-page-3255 .lx-arrow:focus-visible,
body .lr-menu-toggle:focus-visible {
	outline: 2px solid #7FA8FF;
	outline-offset: 2px;
}
body .lr-design .lr-discover:disabled,
body .lr-design .lr-select:disabled {
	background-color: #1B2434;
	border-color: #1B2434;
	color: #4C5A72;
	cursor: not-allowed;
}

/* ---- 4. FORM FIELDS ---- (2026-10-17 amendment: .jet-form-builder-row > :is(...) siblings added —
   JFB date/time fields have no __field-wrap ancestor; the row is their direct parent. (0,2,3) still
   strictly beats the body-positioned .cb-* JFB inline block (0,2,1).)
   JFB submit selector raised to include .jet-form-builder__submit-wrap: (0,3,1) beats the per-widget
   transparent-background rule in post-12124.css (0,3,0) without !important. CORRECTION (2026-10-17): the widget rules are
   (0,4,0) / hover (0,5,0) across post-12124/12119/12675/12676 — class-doubling raises mine to (0,4,1)
   / (0,5,1), beating them without !important. Doubling covers any future next/prev action buttons too.
   Beats: .lr-booking input/select/textarea (0,1,1, lr-design.css) / .cb-*
   (0,2,1, JFB body-positioned inline — tie would lose; selectors here are
   strictly higher) / input[type=text] (0,1,1, Astra main.min.css).
   Height 44px on input/select only — textarea keeps natural height. */
body .lr-booking :is(input, select, textarea),
body .jet-form-builder .jet-form-builder__field-wrap :is(input, select, textarea),
body .jet-form-builder .jet-form-builder-row > :is(input, select, textarea) {
	background-color: #071321;
	border: 1px solid #1B2434;
	border-radius: var(--r);
	color: #B7C7D9;
	font-family: 'Inter', sans-serif;
	font-size: var(--fs-sm);
}
body .lr-booking :is(input, select),
body .jet-form-builder .jet-form-builder__field-wrap :is(input, select) { height: 44px; }

/* Focus — holds the fill dark, beating Astra's white-on-focus
   input[type=text]:focus (0,2,1, main.min.css). */
body .lr-booking :is(input, select, textarea):focus,
body .jet-form-builder .jet-form-builder__field-wrap :is(input, select, textarea):focus,
body .jet-form-builder .jet-form-builder-row > :is(input, select, textarea):focus {
	background-color: #071321;
	border-color: #2E5BFF;
	box-shadow: 0 0 0 3px rgba(46, 91, 255, 0.18);
	outline: none;
}

/* Error — JFB error classes verified by simulated validation (no submit). */
body .jet-form-builder .jet-form-builder__field.has-error :is(input, select, textarea),
body .jet-form-builder .jet-form-builder__field--error :is(input, select, textarea),
body .jet-form-builder .jet-form-builder-row.has-error > :is(input, select, textarea) { border-color: #D9705F; }
#lxbq-error,
body .jet-form-builder .jet-form-builder__message--error,
body .jet-form-builder .jet-form-builder__field-error { color: #D9705F; }

/* Disabled */
body .lr-booking :is(input, select, textarea):disabled,
body .jet-form-builder .jet-form-builder__field-wrap :is(input, select, textarea):disabled,
body .jet-form-builder .jet-form-builder-row > :is(input, select, textarea):disabled {
	background-color: #0C1220;
	color: #4C5A72;
	border-color: #1B2434;
	cursor: not-allowed;
}

/* ---- 5. CAROUSEL ----
   Arrows already 44x44 / 50% (guard R5); this sets resting border + glyph.
   Beats button (0,0,1, Astra inline border) and .lr-arrow (0,1,0,
   lr-design.css, color). Hover beats button:hover (0,1,1, Astra inline). */
body .lr-design .lr-arrow {
	border: 1px solid #1B2434;
	color: #B7C7D9;
	transition: background-color var(--fast) var(--ease), color var(--fast) var(--ease), border-color var(--fast) var(--ease), transform var(--fast) var(--ease);
}
body .lr-design .lr-arrow:hover {
	background-color: #0C1220;
	border-color: #2E5BFF;
	color: #7FA8FF;
}
body .lr-design .lr-arrow:active { transform: scale(0.97); }

/* Dots: 10px -> 8px visual (beats .lr-dot 10px, 0,1,0, lr-design.css);
   ::before adds the 24x24 hit area WITHOUT enlarging the visual dot. */
body .lr-design .lr-dot {
	width: 8px;
	height: 8px;
	position: relative;
}
body .lr-design .lr-dot::before {
	content: '';
	position: absolute;
	inset: -8px; /* 8 + 16 = 24x24 hit area */
}
/* Active dot: beats .lr-dot[aria-pressed='true'] (0,2,0, lr-design.css). */
body .lr-design .lr-dot[aria-pressed='true'] {
	background-color: #2E5BFF;
	box-shadow: 0 0 8px rgba(46, 91, 255, 0.5);
}

/* ---- 6. HERO HEADLINE SIZE ----
   clamp(48px, 6.4vw, 92px): floor keeps mobile at live's 48px; 6.4vw forced
   by 90/1440. Cap lowered 92->90 (2026-10-18): at 92px "Chauffeured." measured
   456px in the 450px container — 6px past an invisible boundary. 90px gives 446px (4px margin);
   the cap now engages above 1406px. EN: ties .lr-hero-copy h1 (0,1,1, lr-design.css), won by
   source order. FR: beats the DR-1.3B inline rules (0,3,1) !important — hence
   !important AND the h1-augmented (0,3,2) selector: the DR block prints
   AFTER this file in document order, so a specificity tie would LOSE.
   (It holds both a desktop clamp and a max-width:767px clamp, both
   !important.) FR letter-spacing beats post-540.css (0,3,1), no
   !important, won by source order. */
.lr-hero-copy h1 {
	font-size: clamp(48px, 6.4vw, 90px);
	line-height: 1.05;
	letter-spacing: -0.01em;
}
body.page-id-540 .lx-h1 h1.elementor-heading-title {
	font-size: clamp(48px, 6.4vw, 90px) !important;
	line-height: 1.05 !important;
	letter-spacing: -0.01em;
}

/* ---- 7. MOTION SAFETY ---- */
@media (prefers-reduced-motion: reduce) {
	body .lr-design .lrq-cta,
	body .lr-header .lr-quote,
	body.elementor-page-3255 .lx-btn .elementor-button,
	body .jet-form-builder .jet-form-builder__submit-wrap .jet-form-builder__action-button.jet-form-builder__action-button,
	body .lr-design .lr-discover,
	body .lr-design .lr-select,
	body .lr-design .lr-arrow {
		transition: none;
	}
}

/* ---- 2026-10-18 amendments ---- */
/* R1b — inner-page .elementor-button: 4px. Sitewide radius consistency (owner-approved): 19/21
   /services/ buttons were 0px vs the homepage's 4px; 2 widget-level 2rem pills (post-12007.css,
   (0,4,0)) become 4px as a side effect. Class-doubled (0,4,1) beats per-widget (0,4,0), no
   !important. Ancestor is .elementor-element (not .elementor-widget-container — optimized-DOM
   Elementor omits it). RADIUS ONLY — inner-page button colours and hover are not changed. */
body .elementor .elementor-element .elementor-button.elementor-button { border-radius: var(--r); }

/* Focus — close the 7-element gap. Carousel stage/slides get an INSIDE ring (offset -2px reads as
   focus, not border, and does not expand the box); the FAQ accordion title keeps the outside ring. */
body .lr-design .lr-stage:focus-visible, body .lr-design .lr-slide:focus-visible { outline: 2px solid #7FA8FF; outline-offset: -2px; }
body .lx-faq .elementor-tab-title:focus-visible { outline: 2px solid #7FA8FF; outline-offset: 2px; }

/* Tap-target floor — the header-nav "FAQ" measured 23x25: 1px under the 24px floor. */
body .lr-design .lr-nav a { display: inline-block; min-width: 24px; min-height: 24px; }


/* ═══════════════════════════════════════════════════════════════════════════
   BRAND LAYER v1.0 — INNER-PAGE PRIMARY BUTTON STATES (DECISION C)
   .elementor-button is THREE components in one class (primary / ghost / link).
   These rules govern PRIMARY buttons only (resting bg #2E5BFF), identified by
   widget container in the 80-button, 7-page census. Ghosts and links untouched.

     .elementor-element-10a722c  homepage phone (already had homepage rules)
     .elementor-element-1eaa33b  header phone, 2/page on inner pages
     .elementor-element-7429e10  full-width REQUEST A QUOTE CTA
     .elementor-element-65e0024  "Book a driver" x7 (marquee)
     .elementor-element-70a75d0  "Book a driver" x1 (static)

   BEATS — per-widget :hover rules, all (0,5,0), no !important:
     post-3762.css  ...elementor-element-1eaa33b .elementor-button:hover
                    bg var(--e-global-color-115ceae)=#1E3FA8 · color var(--e-global-color-ac8ac79)=#FFFFFF
     post-7342.css  ...elementor-element-7429e10 .elementor-button:hover
                    bg var(--e-global-color-accent)=#2E5BFF · color var(--e-global-color-primary)=#06080F
                    (3.86:1 hover text, BELOW AA — bug, fixed here)
     post-12007.css ...elementor-element-65e0024 .elementor-button:hover
                    bg #1E3FA8 · color #FFFFFF · border-color #1E3FA8
     post-3753.css  ...elementor-element-70a75d0 .elementor-button:hover
                    bg rgb(168,140,84) = #A88C54 OLD GOLD, hardcoded — bug, fixed here
   Also beats inline .elementor-widget-button .elementor-button:hover (0,3,0)
   and main.min.css a:hover #191970 (0,1,1).

   SPECIFICITY: default rule (0,4,1) beats widget default (0,4,0);
   state rules + pseudo-class = (0,5,1) beat widget :hover (0,5,0).
   No !important anywhere.

   The 1px resting border is the NO-LAYOUT-SHIFT trick: hover swaps
   border-color only, never border-width. Sanctioned side effect: 65e0024's
   widget border was 2px #2E5BFF; it now computes 1px transparent at rest
   (invisible on the blue fill) and 1px #2E5BFF on hover.
   ═══════════════════════════════════════════════════════════════════════════ */

/* PRIMARY — resting: 1px transparent border (no-shift trick) + transition.
   Default colours NOT restated: primaries are already #2E5BFF/#FFFFFF. */
body .elementor-element.elementor-element-10a722c .elementor-button.elementor-button,
body .elementor-element.elementor-element-1eaa33b .elementor-button.elementor-button,
body .elementor-element.elementor-element-7429e10 .elementor-button.elementor-button,
body .elementor-element.elementor-element-65e0024 .elementor-button.elementor-button,
body .elementor-element.elementor-element-70a75d0 .elementor-button.elementor-button {
  border: 1px solid transparent;
  transition: background-color var(--fast) var(--ease), color var(--fast) var(--ease), border-color var(--fast) var(--ease);
}

/* PRIMARY — hover: invert to black fill, blue border, light-blue label. */
body .elementor-element.elementor-element-10a722c .elementor-button.elementor-button:hover,
body .elementor-element.elementor-element-1eaa33b .elementor-button.elementor-button:hover,
body .elementor-element.elementor-element-7429e10 .elementor-button.elementor-button:hover,
body .elementor-element.elementor-element-65e0024 .elementor-button.elementor-button:hover,
body .elementor-element.elementor-element-70a75d0 .elementor-button.elementor-button:hover {
  background-color: #000000;
  border-color: #2E5BFF;
  color: #7FA8FF;
}

/* PRIMARY — active: darker fill. MUST follow :hover in source order:
   both match while pressed; source order decides. */
body .elementor-element.elementor-element-10a722c .elementor-button.elementor-button:active,
body .elementor-element.elementor-element-1eaa33b .elementor-button.elementor-button:active,
body .elementor-element.elementor-element-7429e10 .elementor-button.elementor-button:active,
body .elementor-element.elementor-element-65e0024 .elementor-button.elementor-button:active,
body .elementor-element.elementor-element-70a75d0 .elementor-button.elementor-button:active {
  background-color: #14307F;
  border-color: #14307F;
  color: #FFFFFF;
}

/* PRIMARY — focus-visible: brand ring. */
body .elementor-element.elementor-element-10a722c .elementor-button.elementor-button:focus-visible,
body .elementor-element.elementor-element-1eaa33b .elementor-button.elementor-button:focus-visible,
body .elementor-element.elementor-element-7429e10 .elementor-button.elementor-button:focus-visible,
body .elementor-element.elementor-element-65e0024 .elementor-button.elementor-button:focus-visible,
body .elementor-element.elementor-element-70a75d0 .elementor-button.elementor-button:focus-visible {
  outline: 2px solid #7FA8FF;
  outline-offset: 2px;
}

/* PRIMARY — disabled. */
body .elementor-element.elementor-element-10a722c .elementor-button.elementor-button:disabled,
body .elementor-element.elementor-element-1eaa33b .elementor-button.elementor-button:disabled,
body .elementor-element.elementor-element-7429e10 .elementor-button.elementor-button:disabled,
body .elementor-element.elementor-element-65e0024 .elementor-button.elementor-button:disabled,
body .elementor-element.elementor-element-70a75d0 .elementor-button.elementor-button:disabled {
  background-color: #1B2434;
  color: #4C5A72;
  cursor: not-allowed;
}

@media (prefers-reduced-motion: reduce) {
body .elementor-element.elementor-element-10a722c .elementor-button.elementor-button,
body .elementor-element.elementor-element-1eaa33b .elementor-button.elementor-button,
body .elementor-element.elementor-element-7429e10 .elementor-button.elementor-button,
body .elementor-element.elementor-element-65e0024 .elementor-button.elementor-button,
body .elementor-element.elementor-element-70a75d0 .elementor-button.elementor-button {
    transition: none;
  }
}


/* GHOST CARD OVERLAY — hover colour fix (Decision: Option B).
   The fleet-card hover overlay is set by post-12056.css:
     .elementor-12056 .elementor-element.elementor-element-26c34c0:hover::before
       { background-color: var(--e-global-color-accent) }   = #2E5BFF at opacity 0.80
   The card photos are white-backed studio shots, so the white label sat on
   [88,124,255] = 3.66:1 — below AA for small text. The kit accent global must
   stay #2E5BFF, so the override is local to this card template.
   This rule: (0,4,2) beats post-12056's (0,4,1). No !important.
   Opacity untouched (0.80). #1E3FA8 is already --e-global-color-115ceae.
   Measured result: white label on [75,101,185] = 5.41:1 (+0.91 margin). */
body .jet-listing-grid__item .elementor-element.elementor-element-26c34c0:hover::before {
  background-color: #1E3FA8;
}

/* EN BOOKING WIDGET — FR-PARITY REQUIRED-FIELD ASTERISKS (CSS-only; .lr-design markup untouched).
   FR equivalent: <span class="lxbq-req">*</span> inside each required <label>, colour inherited
   from the label (#7FA8FF). EN labels are real <label for> elements, so accessibility is already
   satisfied; the asterisk is a purely visual affordance. ID-scoped to #lx-booking: nothing else
   on any page can match. Beats nothing — no existing rule sets content on these labels. */
#lx-booking label[for="lx-pickup"]::after,
#lx-booking label[for="lx-destination"]::after,
#lx-booking label[for="lx-date"]::after,
#lx-booking label[for="lx-time"]::after,
#lx-booking label[for="lx-passengers"]::after,
#lx-booking label[for="lx-hours"]::after,
#lx-booking label[for="lxbq-name"]::after,
#lx-booking label[for="lxbq-phone"]::after {
  content: " *";
  color: #7FA8FF;
}