/**
 * Booking Engine Widget - Self-contained styles.
 * Prefixed with .abe- (Adivaha Booking Engine) to avoid host-page conflicts.
 */

/* ── Reset inside widget ─────────────────────────────────────── */
.abe-root *, .abe-root *::before, .abe-root *::after {
  box-sizing: border-box;
  margin: 0; padding: 0;
}
.abe-root {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  font-size: 14px;
  color: #1e293b;
  line-height: 1.5;
  position: relative;

}

/* ══════════════════════════════════════════════════════════════
   SHORTCODE CHROME
   .abe-hero-search        - hero-page outer wrapper
   .abe-search-widget      - tabbed combined-search shell (transparent)
   .abe-search-tabs / .abe-search-tab - glass product pills
   .abe-shortcode-wrap     - search-and-book page wrapper
   ══════════════════════════════════════════════════════════════ */
.abe-hero-search {
  position: relative; z-index: 3;
  width: 100%;
  max-width: 1200px; margin: 0 auto;
}
.abe-search-eyebrow-wrap {
  text-align: center;
  margin-bottom: 1rem;
}
.abe-search-eyebrow {
  display: inline-block;
  font-size: .72rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .12em;
  color: #fff;
  background: rgba(255,255,255,.14);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,.22);
  padding: .4rem 1rem;
  border-radius: 50rem;
}
.abe-search-widget {
  /* Background pulled from B2C → Settings → Branding (primary color).
     The renderer sets --primary on :root from the tenant's branding
     setting, so each tenant's storefront picks up its own brand color
     here automatically. */
  background: var(--primary);
  padding: 0;
  border-radius: 20px;
  width: 100%;
  max-width: 1200px; margin: 0 auto;
  position: relative; z-index: 3;
  text-align: left;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  color: #fff;
  box-shadow: 0 24px 56px -16px rgba(37,99,235,.55), 0 8px 20px -6px rgba(15,23,42,.3);
  overflow: visible;
  box-sizing: border-box;
}
/* First tab keeps rounded top-left corner, last tab top-right - widget itself uses visible
   overflow so autocomplete dropdowns can escape the search panel. */
.abe-search-tabs { border-top-left-radius: 20px; border-top-right-radius: 20px; overflow: hidden; }
.abe-search-widget-body { margin-top: 0; }

/* Product tabs - flush top of unified widget, icon over label */
.abe-search-tabs {
  display: flex;
  gap: 0;
  margin-bottom: 0;
  padding: 0;
  background: var(--primary-dark);
  border-bottom: 1px solid rgba(255,255,255,.08);
  overflow: visible;
  flex-wrap: nowrap;
}
.abe-search-tab {
  flex: 1 1 0; min-width: 0;
  display: inline-flex; flex-direction: column; align-items: center; justify-content: center;
  gap: .4rem;
  padding: .95rem .35rem .85rem;
  border-radius: 0;
  font-size: .72rem; font-weight: 600;
  color: rgba(255,255,255,.72);
  cursor: pointer; border: none; background: transparent;
  border-bottom: 2px solid transparent;
  font-family: inherit; text-align: center;
  letter-spacing: .01em;
  transition: color .15s ease, background .2s ease, border-color .2s ease;
}
.abe-search-tab:hover {
  color: #fff;
  background: rgba(255,255,255,.06);
}
.abe-search-tab.active {
  color: #ffffff;
  background: var(--abe-accent-soft);
  border-bottom-color: var(--abe-accent);
}
.abe-search-tab svg { width: 22px; height: 22px; flex-shrink: 0; }
.abe-search-tab span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }

/* Search bar inside the unified widget: rules removed by operator request -
   the .abe-search-bar styling lives on the base rule below. */
.abe-search-widget .abe-root { background: transparent; }

/* ── External-embed searchbox shell ──────────────────────────────────
   On the storefront the .abe-search-widget shortcode wrapper paints the
   brand-coloured shell around the engine. An EXTERNAL embed (a tenant pasting
   just the mount div + script, or an AI-built site) has NO wrapper - the engine
   renders the search view straight into the mount as .abe-root--search. Give
   THAT the same brand shell so an embedded searchbox matches the storefront,
   with a neutral fallback so it is never transparent if brand colours have not
   loaded yet. booking-engine.js fetches the tenant's --primary (branding.php)
   and sets it on the mount, so each embed paints in its own brand colour. */
.abe-root--search {
  background: var(--primary, #1e293b);
  border-radius: 20px;
  padding: 1.25rem;
  color: #fff;
  box-shadow: 0 24px 56px -16px rgba(15,23,42,.45), 0 8px 20px -6px rgba(15,23,42,.3);
  box-sizing: border-box;
}
/* Inside the storefront shortcode wrapper the .abe-search-widget already paints
   the shell, so keep the engine root flat there (no double shell / padding). */
.abe-search-widget .abe-root--search {
  background: transparent; border-radius: 0; padding: 0; box-shadow: none;
}
/* While a search is actually running the mount also holds the .abe-searching
   loader. Painting the whole mount blue then stretches the brand shell down
   over the loader (one giant blue block). Instead flatten the mount and paint
   ONLY the search box blue, so the loader sits on a transparent backdrop. */
.abe-root--search:has(.abe-searching) {
  background: transparent; border-radius: 0; padding: 0; box-shadow: none;
}
.abe-root--search:has(.abe-searching) > .abe-search-bar {
  background: var(--primary, #1e293b);
  border-radius: 20px;
  padding: 1.5rem 1.75rem 1.35rem;
  box-shadow: 0 24px 56px -16px rgba(15,23,42,.45), 0 8px 20px -6px rgba(15,23,42,.3);
}

/* Results page - search form sits above filter+results layout */
.abe-results-search-wrap { margin-bottom: 1.25rem; }
.abe-results-search-wrap .abe-search-bar { margin-bottom: 0; }

.abe-shortcode-wrap {
  max-width: 1280px; margin: 0 auto;
  padding: 1rem;
}

@media (max-width: 1024px) {
  .abe-search-tab { font-size: .68rem; padding: .85rem .25rem .75rem; gap: .3rem; }
  .abe-search-tab svg { width: 20px; height: 20px; }
}
@media (max-width: 768px) {
  .abe-search-tabs { flex-wrap: wrap; }
  .abe-search-tab { flex: 1 1 25%; min-width: 25%; padding: .75rem .25rem; font-size: .65rem; }
  .abe-search-tab svg { width: 18px; height: 18px; }
  .abe-search-widget .abe-search-bar { padding: 1.25rem 1rem; }
}

/* ── Search Bar ──────────────────────────────────────────────── */
.abe-search-bar {
  border-radius: 16px;
  padding: 1.5rem 1.75rem 1.35rem;
  margin-bottom: 1.25rem;
  position: relative; z-index: 50;
}
.abe-search-fields {
  display: flex; flex-wrap: wrap; gap: .65rem; align-items: flex-end;
}
.abe-field { flex: 1; min-width: 140px; position: relative; }
.abe-field--wide { flex: 1.5; min-width: 220px; }
.abe-field--narrow { flex: 0 0 100px; min-width: 80px; }
.abe-field--auto { flex: 0 0 auto; }

.abe-field label {
  display: block; font-size: .68rem; font-weight: 700; color: rgba(255,255,255,.92);
  margin-bottom: .35rem; text-transform: uppercase; letter-spacing: .08em;
}
.abe-field input, .abe-field select {
  width: 100%; height: 44px; padding: 0 .75rem; font-size: .9rem; font-family: inherit;
  border: 2px solid rgba(255,255,255,.22); border-radius: .55rem;
  background: rgba(255,255,255,.97); color: #1e293b;
  transition: border-color .15s, box-shadow .15s, background .15s;
  outline: none;
}
.abe-field input:focus, .abe-field select:focus {
  border-color: var(--abe-accent); box-shadow: 0 0 0 3px rgba(255,255,255,.28);
  background: #fff;
}
.abe-field input[type="date"] { font-family: inherit; }

/* ── Date range trigger + calendar popover ───────────────────── */
.abe-daterange-trigger {
  width: 100%; height: 44px; padding: 0 .85rem; font-size: .9rem; font-family: inherit;
  border: 2px solid rgba(255,255,255,.22); border-radius: .55rem;
  background: rgba(255,255,255,.97); color: #1e293b; cursor: pointer;
  display: flex; align-items: center; gap: .55rem;
  transition: border-color .15s, box-shadow .15s;
}
.abe-daterange-trigger:hover { border-color: rgba(251,191,36,.5); }
.abe-daterange-trigger.is-open {
  border-color: #f59e0b;
  box-shadow: 0 0 0 3px rgba(251,191,36,.18);
}
.abe-daterange-icon { color: #64748b; flex-shrink: 0; }
.abe-daterange-text {
  flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-weight: 500; text-align: left;
}
.abe-cal-popover {
  position: fixed; top: 0; left: 0;
  width: 620px; max-width: calc(100vw - 2rem);
  background: #fff; border: 1px solid #e2e8f0; border-radius: .75rem;
  box-shadow: 0 18px 48px rgba(15,23,42,.22), 0 0 0 1px rgba(15,23,42,.04);
  padding: 1rem 1rem .85rem; z-index: 999999;
  animation: abePaxFadeIn .15s ease-out;
}
.abe-cal-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: .75rem; margin-bottom: .75rem;
}
.abe-cal-nav {
  width: 32px; height: 32px; border-radius: 50%;
  border: 1px solid #e2e8f0; background: #fff; color: #475569;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; transition: all .15s; flex-shrink: 0;
}
.abe-cal-nav:hover { border-color: #f59e0b; color: #f59e0b; background: #fffbeb; }
.abe-cal-trip-toggle {
  display: inline-flex; gap: 0; padding: 3px;
  background: #f1f5f9; border-radius: 999px;
}
.abe-cal-trip-opt {
  padding: .4rem 1rem; font-size: .78rem; font-weight: 600; font-family: inherit;
  color: #64748b; background: transparent;
  border: none; border-radius: 999px;
  cursor: pointer; transition: all .18s;
}
.abe-cal-trip-opt:hover { color: #0f172a; }
.abe-cal-trip-opt.active {
  background: #fff; color: #0ea5e9;
  box-shadow: 0 1px 3px rgba(15,23,42,.08);
}
.abe-cal-leg-title {
  font-size: .82rem; font-weight: 700; color: #0f172a;
  padding: .45rem 1rem; flex: 1; text-align: center;
}
.abe-cal-months {
  display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem;
}
.abe-cal-month { min-width: 0; }
.abe-cal-title {
  text-align: center; font-size: .92rem; font-weight: 700;
  color: #0f172a; margin-bottom: .6rem;
}
.abe-cal-grid {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px;
}
.abe-cal-dow {
  font-size: .68rem; font-weight: 700; color: #94a3b8;
  text-align: center; padding: .3rem 0;
  text-transform: uppercase; letter-spacing: .04em;
}
.abe-cal-cell {
  min-height: 48px; padding: .25rem .15rem;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 1px;
  font-size: .82rem; color: #334155; cursor: pointer;
  border-radius: .4rem;
  transition: background .12s, color .12s;
  user-select: none;
  line-height: 1.1;
}
.abe-cal-daynum { font-size: .82rem; font-weight: 600; }
.abe-cal-fare {
  font-size: .62rem; font-weight: 600; color: #64748b;
  letter-spacing: -.02em; line-height: 1;
}
.abe-cal-fare-low { color: #16a34a; }
.abe-cal-has-low { position: relative; }
.abe-cal-has-low::before {
  content: ''; position: absolute; top: 3px; right: 3px;
  width: 5px; height: 5px; border-radius: 50%; background: #16a34a;
}
.abe-cal-cell:hover:not(.abe-cal-past):not(.abe-cal-empty):not(.abe-cal-selected) {
  background: #f1f5f9; color: #0f172a;
}
.abe-cal-empty { cursor: default; pointer-events: none; min-height: 48px; }
.abe-cal-past {
  color: #cbd5e1; cursor: not-allowed; pointer-events: none;
}
.abe-cal-past .abe-cal-daynum { text-decoration: line-through; }
.abe-cal-inrange {
  background: #e0f2fe; color: #0369a1;
  border-radius: 0;
}
.abe-cal-inrange .abe-cal-fare { color: #0369a1; }
.abe-cal-selected {
  background: #0ea5e9; color: #fff; font-weight: 700;
  border-radius: .4rem;
}
.abe-cal-selected .abe-cal-fare,
.abe-cal-selected .abe-cal-fare-low { color: #fff !important; }
.abe-cal-selected::before { display: none; }
.abe-cal-selected:hover { background: #0284c7 !important; color: #fff !important; }
.abe-cal-depart.abe-cal-inrange,
.abe-cal-return.abe-cal-inrange { background: #0ea5e9; color: #fff; border-radius: .4rem; }
.abe-cal-hint {
  margin-top: .75rem; padding: .55rem .75rem;
  background: #f8fafc; border-radius: .45rem;
  font-size: .78rem; color: #475569; text-align: center;
}
.abe-cal-hint strong { color: #0369a1; }

@media (max-width: 640px) {
  .abe-cal-popover { width: calc(100vw - 2rem); }
  .abe-cal-months { grid-template-columns: 1fr; gap: .75rem; }
}

.abe-search-btn {
  /* Background pulled from B2C → Settings → Branding (button color).
     --abe-cta-bg is set by the renderer from the tenant's button_color
     setting (falls back to primary_color when no separate value is set). */
  height: 44px; padding: 0 1.75rem; font-size: .9rem; font-weight: 700; font-family: inherit;
  color: #fff; background: var(--abe-cta-bg);
  border: none; border-radius: .55rem;
  cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  transition: transform .15s, box-shadow .15s, background .15s;
  white-space: nowrap; letter-spacing: .01em;
  box-shadow: 0 4px 12px var(--abe-cta-shadow);
}
.abe-search-btn:hover {
  background: var(--abe-cta-bg-hov);
  transform: translateY(-1px);
  box-shadow: 0 6px 16px var(--abe-cta-shadow);
}
.abe-search-btn:active { transform: translateY(0); }
.abe-search-btn svg { width: 16px; height: 16px; }

/* ── Trip type tabs (pill group, flight/bus/transfer) ────────── */
.abe-trip-tabs {
  display: inline-flex;
  gap: .3rem;
  padding: .3rem;
  margin-bottom: 1.1rem;
  background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 999px;
  backdrop-filter: blur(8px);
  width: fit-content;
}
.abe-trip-tab {
  padding: .5rem 1.15rem;
  font-size: .82rem; font-weight: 600; font-family: inherit;
  color: rgba(255,255,255,.8); background: transparent;
  border: none;
  border-radius: 999px;
  cursor: pointer;
  letter-spacing: .01em;
  white-space: nowrap;
  transition: background .15s ease, color .15s ease, box-shadow .15s ease;
}
.abe-trip-tab:hover { color: #fff; background: rgba(255,255,255,.12); }
.abe-trip-tab.active {
  color: #0f172a; background: #fbbf24;
  box-shadow: 0 2px 8px rgba(251,191,36,.45);
}

/* ── Multi-city rows ─────────────────────────────────────────── */
.abe-multi-rows { margin-top: .75rem; }
.abe-multi-row {
  display: flex; gap: .5rem; align-items: flex-end; margin-bottom: .5rem;
}
.abe-multi-row .abe-field { flex: 1; }
.abe-multi-remove {
  width: 32px; height: 40px; border: none; background: rgba(239,68,68,.2);
  color: #ef4444; border-radius: .4rem; cursor: pointer; font-size: 1.1rem;
  display: flex; align-items: center; justify-content: center;
}
.abe-multi-remove:hover { background: rgba(239,68,68,.4); }
.abe-multi-actions {
  display: flex; align-items: center; gap: .75rem; margin-top: .5rem;
}
.abe-add-leg {
  font-size: .8rem; color: rgba(255,255,255,.6); background: transparent;
  border: 1px dashed rgba(255,255,255,.3); border-radius: 6px;
  padding: .3rem .75rem; cursor: pointer;
}
.abe-add-leg:hover { color: #fff; border-color: rgba(255,255,255,.5); }

/* ── Pax dropdown ────────────────────────────────────────────── */
.abe-pax-trigger {
  width: 100%; height: 44px; padding: 0 .85rem; font-size: .9rem; font-family: inherit;
  border: 2px solid rgba(255,255,255,.22); border-radius: .55rem;
  background: rgba(255,255,255,.97); color: #1e293b; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between; gap: .5rem;
  transition: border-color .15s, box-shadow .15s;
}
.abe-pax-trigger:hover { border-color: rgba(251,191,36,.5); }
.abe-pax-trigger.is-open {
  border-color: #f59e0b;
  box-shadow: 0 0 0 3px rgba(251,191,36,.18);
}
.abe-pax-trigger.is-open svg { transform: rotate(180deg); }
.abe-pax-trigger svg { transition: transform .2s; color: #64748b; flex-shrink: 0; }
.abe-pax-trigger-label {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  flex: 1; text-align: left; font-weight: 500;
}
.abe-pax-dropdown {
  position: absolute; top: calc(100% + 6px); left: 0;
  min-width: 280px; max-width: 340px; width: max-content;
  background: #fff; border: 1px solid #e2e8f0; border-radius: .65rem;
  box-shadow: 0 14px 40px rgba(15,23,42,.18), 0 0 0 1px rgba(15,23,42,.04);
  padding: .85rem; z-index: 100;
  animation: abePaxFadeIn .15s ease-out;
}
@keyframes abePaxFadeIn {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.abe-pax-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: .55rem 0; gap: 1rem;
  border-bottom: 1px solid #f1f5f9;
}
.abe-pax-row:last-of-type { border-bottom: none; }
.abe-pax-row > div:first-child { flex: 1; min-width: 0; }
.abe-pax-row span { font-size: .88rem; font-weight: 600; color: #0f172a; }
.abe-pax-row small { display: block; font-size: .72rem; color: #94a3b8; margin-top: .1rem; }
.abe-pax-stepper { display: flex; align-items: center; gap: .6rem; flex-shrink: 0; }
.abe-pax-btn {
  width: 30px; height: 30px; border: 1.5px solid #cbd5e1; border-radius: 50%;
  background: #fff; color: #475569; font-size: 1.05rem; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all .15s;
}
.abe-pax-btn:hover { border-color: #f59e0b; color: #f59e0b; background: #fffbeb; }
.abe-pax-btn:active { transform: scale(.92); }
.abe-pax-stepper .abe-pax-val {
  font-weight: 700; min-width: 22px; text-align: center;
  font-size: .95rem; color: #0f172a;
}
.abe-pax-done {
  width: 100%; margin-top: .75rem; padding: .6rem; font-size: .85rem; font-weight: 700;
  letter-spacing: .02em;
  background: linear-gradient(135deg, #f59e0b, #f97316); color: #fff;
  border: none; border-radius: .5rem; cursor: pointer;
  box-shadow: 0 2px 8px rgba(245,158,11,.3);
  transition: transform .15s, box-shadow .15s;
}
.abe-pax-done:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(245,158,11,.4); }
.abe-pax-done:active { transform: translateY(0); }

/* Travel Class radios inside pax dropdown */
.abe-pax-cabin {
  margin-top: .65rem; padding-top: .75rem;
  border-top: 1px solid #e2e8f0;
}
.abe-pax-cabin-label {
  font-size: .72rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; color: #64748b; margin-bottom: .5rem;
}
.abe-pax-cabin-opt {
  display: flex; align-items: center; gap: .6rem;
  padding: .4rem .5rem;
  font-size: .85rem; color: #334155;
  cursor: pointer; border-radius: .4rem;
  transition: background .12s, color .12s;
}
.abe-pax-cabin-opt + .abe-pax-cabin-opt { margin-top: .1rem; }
.abe-pax-cabin-opt:hover { background: #f1f5f9; color: #0f172a; }
.abe-pax-cabin-opt input[type="radio"] {
  margin: 0; width: 15px; height: 15px; accent-color: var(--color-primary-dk); cursor: pointer;
  flex-shrink: 0;
}
.abe-pax-cabin-opt:has(input:checked) {
  background: #eff6ff;
  color: var(--color-primary-dk);
  font-weight: 600;
}

/* ── Fare Type (flights) ─────────────────────────────────────── */
.abe-fare-type-row {
  display: flex; flex-wrap: wrap; align-items: center; gap: .5rem;
  margin-top: .85rem;
  font-size: .82rem; color: #fff;
}
.abe-fare-type-label {
  font-weight: 600; opacity: .85;
  margin-right: .5rem;
}
.abe-fare-type-opt {
  display: inline-flex; align-items: center; gap: .4rem;
  padding: .3rem .65rem;
  border-radius: .4rem;
  cursor: pointer;
  color: rgba(255,255,255,.9);
  transition: background .15s, color .15s;
}
.abe-fare-type-opt:hover { background: rgba(255,255,255,.08); }
.abe-fare-type-opt input[type="radio"] {
  margin: 0;
  width: 14px; height: 14px;
  accent-color: #60a5fa;
  cursor: pointer;
}
.abe-fare-type-opt:has(input:checked) {
  background: rgba(37, 99, 235, .85);
  color: #fff;
}

/* ── Advanced Search ─────────────────────────────────────────── */
.abe-adv-toggle {
  display: inline-flex; align-items: center; gap: .5rem; margin-top: .85rem;
  padding: .5rem .9rem; font-size: .8rem; font-weight: 600; font-family: inherit;
  color: rgba(255,255,255,.85); background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.18); border-radius: .5rem;
  cursor: pointer; transition: all .15s;
}
.abe-adv-toggle:hover { color: #fff; background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.3); }
.abe-adv-toggle svg { transition: transform .2s; }
.abe-adv-toggle.open svg.abe-chevron { transform: rotate(180deg); }
.abe-adv-toggle.open { color: #fbbf24; border-color: rgba(251,191,36,.4); background: rgba(251,191,36,.08); }
.abe-adv-badge {
  font-size: .7rem; padding: .2rem .55rem; border-radius: 10px;
  background: rgba(251,191,36,.25); color: #fde68a; font-weight: 700;
}
.abe-adv-panel {
  margin-top: .85rem; padding: 1rem; border-radius: .6rem;
  background: rgba(0,0,0,.18);
  border: 1px solid rgba(255,255,255,.08);
  display: flex; flex-wrap: wrap; gap: .85rem; align-items: flex-end;
}
.abe-adv-group { display: flex; flex-direction: column; gap: .25rem; }
.abe-adv-group label {
  font-size: .72rem; font-weight: 600; color: rgba(255,255,255,.5);
  text-transform: uppercase; letter-spacing: .04em;
}
.abe-adv-group select, .abe-adv-group input {
  height: 32px; padding: 0 .5rem; font-size: .8rem;
  border: 1.5px solid rgba(255,255,255,.2); border-radius: .4rem;
  background: rgba(255,255,255,.95); color: #1e293b;
}
.abe-chip-group { display: flex; gap: .3rem; flex-wrap: wrap; }
.abe-chip {
  padding: .25rem .6rem; font-size: .75rem; border: 1px solid rgba(255,255,255,.25);
  border-radius: 20px; color: rgba(255,255,255,.6); background: transparent;
  cursor: pointer; transition: all .15s; position: relative;
}
.abe-chip input { position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none; }
.abe-chip:hover { color: #fff; border-color: rgba(255,255,255,.5); }
.abe-chip.active { color: #0f172a; background: #fbbf24; border-color: #fbbf24; font-weight: 600; }

/* ── Autocomplete Dropdown ───────────────────────────────────── */
.abe-ac-dropdown {
  position: absolute; top: calc(100% + 2px); left: 0;
  width: 100%; min-width: 320px;
  background: #fff; border: 1px solid #e2e8f0; border-radius: .5rem;
  box-shadow: 0 10px 28px rgba(15, 23, 42, .18); z-index: 200;
  /* Sized to viewport so the last row never clips mid-card. Any leftover
   * rows past the visible area scroll naturally. */
  max-height: min(60vh, 460px); overflow-y: auto;
  padding: .25rem 0;
}
.abe-ac-item {
  padding: .55rem .85rem; cursor: pointer; display: flex;
  flex-direction: row; align-items: center; gap: .5rem;
  border-bottom: 1px solid #f1f5f9;
  transition: background .12s ease;
}
.abe-ac-item:last-child { border-bottom: 0; }
.abe-ac-item:hover, .abe-ac-item.active { background: #f0f9ff; }
.abe-ac-item > .abe-ac-text {
  flex: 1 1 auto; display: flex; flex-direction: column; min-width: 0;
}
.abe-ac-label { font-size: .88rem; font-weight: 600; color: #0f172a; }
.abe-ac-sub { font-size: .76rem; color: #64748b; margin-top: .1rem; }

/* Source pill - shows whether the row came from an upstream API
 * catalogue (e.g. Adivaha) or a back-office-uploaded local entry.
 * Mirrors the IATA-code badge pattern on airport rows. */
.abe-ac-source {
  flex: 0 0 auto;
  font-size: .65rem; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase; white-space: nowrap;
  padding: .18rem .45rem; border-radius: .3rem; border: 1px solid transparent;
}
.abe-ac-source-adivaha { background: #ecfdf5; color: #047857; border-color: #a7f3d0; }
.abe-ac-source-extranet { background: #f1f5f9; color: #475569; border-color: #cbd5e1; }

/* Airport rows - plane icon left, two-line text middle, IATA badge right */
.abe-ac-item-airport {
  flex-direction: row; align-items: center; gap: .65rem;
  padding: .6rem .85rem;
}
.abe-ac-icon-wrap {
  flex: 0 0 auto; width: 28px; height: 28px;
  display: flex; align-items: center; justify-content: center;
  color: #16a34a;
}
.abe-ac-icon { width: 20px; height: 20px; }
.abe-ac-item-airport .abe-ac-text {
  flex: 1 1 auto; display: flex; flex-direction: column; min-width: 0;
}
.abe-ac-item-airport .abe-ac-label {
  font-size: .88rem; font-weight: 700; color: #0f172a;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.abe-ac-item-airport .abe-ac-sub {
  font-size: .76rem; color: #64748b; font-weight: 400; margin-top: .05rem;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.abe-ac-code {
  flex: 0 0 auto; font-family: ui-monospace, Menlo, monospace;
  font-size: .72rem; font-weight: 700; color: #475569;
  letter-spacing: .04em;
  padding: .22rem .5rem; border: 1px solid #e2e8f0; border-radius: .3rem;
  background: #f8fafc;
}
.abe-ac-item-airport:hover .abe-ac-code,
.abe-ac-item-airport.active .abe-ac-code {
  background: #fff; border-color: #bae6fd; color: #075985;
}

/* ── Loading / Empty ─────────────────────────────────────────── */
.abe-loading { text-align: center; padding: 3rem 1rem; color: #94a3b8; }
.abe-loading .abe-spinner {
  width: 36px; height: 36px; border: 3px solid #e2e8f0;
  border-top-color: var(--color-primary); border-radius: 50%;
  animation: abe-spin .7s linear infinite; margin: 0 auto .75rem;
}
@keyframes abe-spin { to { transform: rotate(360deg); } }

/* ── Animated "searching" loader with rotating product messages ── */
.abe-searching {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 1.4rem; padding: 3.5rem 1rem 4rem; text-align: center; min-height: 240px;
}
.abe-searching-orbit {
  position: relative; width: 76px; height: 76px;
  display: flex; align-items: center; justify-content: center;
  color: var(--color-primary);
}
.abe-searching-orbit::before, .abe-searching-orbit::after {
  content: ''; position: absolute; border-radius: 50%; border: 3px solid transparent;
}
.abe-searching-orbit::before {
  inset: 0; border-top-color: var(--color-primary); border-right-color: var(--color-primary);
  opacity: .9; animation: abe-spin .9s linear infinite;
}
.abe-searching-orbit::after {
  inset: 9px; border-bottom-color: var(--color-primary);
  opacity: .35; animation: abe-spin 1.5s linear infinite reverse;
}
.abe-searching-orbit svg { width: 32px; height: 32px; animation: abe-float 1.8s ease-in-out infinite; }
@keyframes abe-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }

.abe-searching-msgs { position: relative; width: min(90vw, 460px); height: 1.6em; }
.abe-searching-msgs span {
  position: absolute; left: 0; right: 0; top: 0;
  opacity: 0; font-size: 1.02rem; font-weight: 600; color: #1f2937;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  animation: abe-msg-cycle 13s infinite; animation-delay: calc(var(--i) * 2.6s);
}
@keyframes abe-msg-cycle {
  0%   { opacity: 0; transform: translateY(9px); }
  3%   { opacity: 1; transform: translateY(0); }
  17%  { opacity: 1; transform: translateY(0); }
  20%  { opacity: 0; transform: translateY(-9px); }
  100% { opacity: 0; transform: translateY(-9px); }
}
.abe-searching-dots { font-style: normal; }
.abe-searching-dots::after { content: ''; animation: abe-dots 1.5s linear infinite; }
@keyframes abe-dots { 0% { content: ''; } 25% { content: '.'; } 50% { content: '..'; } 75% { content: '...'; } 100% { content: ''; } }

.abe-searching-bar {
  width: min(86vw, 260px); height: 4px; border-radius: 99px;
  background: var(--abe-accent-soft, rgba(15, 118, 110, .12)); overflow: hidden;
}
.abe-searching-bar span {
  display: block; height: 100%; width: 38%; border-radius: 99px;
  background: linear-gradient(90deg, transparent, var(--color-primary), transparent);
  animation: abe-bar 1.25s ease-in-out infinite;
}
@keyframes abe-bar { 0% { transform: translateX(-120%); } 100% { transform: translateX(330%); } }

@media (prefers-reduced-motion: reduce) {
  .abe-searching-orbit::before, .abe-searching-orbit::after,
  .abe-searching-orbit svg, .abe-searching-bar span { animation-duration: 2.4s; }
  .abe-searching-msgs span { animation: none; opacity: 1; }
  .abe-searching-msgs span:not(:first-child) { display: none; }
}

.abe-empty {
  text-align: center; padding: 3.5rem 1rem 3rem; color: #64748b;
  background: #fff; border: 1px dashed #e2e8f0; border-radius: 12px;
  max-width: 520px; margin: 1rem auto;
}
.abe-empty .abe-empty-icon,
.abe-empty svg.abe-empty-icon {
  width: 56px; height: 56px; margin: 0 auto 1rem; display: block;
  color: #cbd5e1; stroke: currentColor;
}
.abe-empty h3 {
  margin: 0 0 .35rem; font-size: 1.1rem; font-weight: 700; color: #0f172a;
}
.abe-empty p {
  margin: 0 auto 1.25rem; font-size: .88rem; color: #64748b;
  max-width: 360px; line-height: 1.5;
}
.abe-empty-actions {
  display: flex; gap: .5rem; justify-content: center; flex-wrap: wrap;
}
.abe-empty-btn {
  padding: .55rem 1rem; border-radius: 8px;
  border: 1px solid #e2e8f0; background: #fff; color: #334155;
  font-size: .82rem; font-weight: 600; cursor: pointer;
  font-family: inherit; transition: background .15s, border-color .15s, transform .05s;
}
.abe-empty-btn:hover { background: #f8fafc; border-color: #cbd5e1; }
.abe-empty-btn:active { transform: translateY(1px); }
.abe-empty-btn--primary {
  background: var(--color-primary); border-color: var(--color-primary); color: #fff;
}
.abe-empty-btn--primary:hover { background: var(--color-primary-dk); border-color: var(--color-primary-dk); }

/* ══════════════════════════════════════════════════════════════
   RESULTS LAYOUT - 2 columns: filter sidebar + results
   ══════════════════════════════════════════════════════════════ */
.abe-results-layout {
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: 1.25rem;
  align-items: start;
}
/* Reserve space at bottom so the fixed combo bar doesn't cover last card */
.abe-results-layout:has(~ .abe-combo-bar),
.abe-results-layout { padding-bottom: 6rem; }

/* ── Filter Sidebar ──────────────────────────────────────────── */
.abe-filter-sidebar {
  background: #fff; border: 1px solid #e2e8f0; border-radius: .75rem;
  padding: 1rem; position: static;
  /* Scrolls with the results (not pinned): the whole column moves together as
     the page scrolls, instead of the filters staying fixed while results run
     past them. Shared across every product's results, so this is global. */
}

/* ── Cart panel (inside left sidebar, above filters) ──────── */
.abe-cart-panel {
  background: linear-gradient(135deg,#eff6ff 0%,#f5f3ff 100%);
  border: 1px solid #c7d2fe; border-radius: .6rem;
  padding: .75rem; margin-bottom: 1rem;
}
.abe-cart-panel-header {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: .5rem;
}
.abe-cart-panel-header h3 {
  display: flex; align-items: center; gap: .35rem;
  font-size: .85rem; font-weight: 700; color: #1e293b; margin: 0;
}
.abe-cart-panel-header h3 svg { color: #4f46e5; }
.abe-cart-panel-count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 18px; height: 18px; padding: 0 5px;
  background: #4f46e5; color: #fff; font-size: .7rem; font-weight: 700;
  border-radius: 9px;
}
.abe-cart-panel-clear {
  font-size: .7rem; color: #ef4444; background: none; border: none;
  cursor: pointer; text-decoration: underline; font-weight: 500; padding: 0;
}
.abe-cart-panel-clear:hover { color: #dc2626; }
.abe-cart-panel-empty {
  font-size: .78rem; color: #64748b; text-align: center;
  padding: .75rem .25rem; line-height: 1.4;
}
.abe-cart-panel-items {
  display: flex; flex-direction: column; gap: .4rem;
  max-height: 260px; overflow-y: auto;
  padding-right: 2px;
}
.abe-cart-panel-items::-webkit-scrollbar { width: 4px; }
.abe-cart-panel-items::-webkit-scrollbar-thumb { background: #c7d2fe; border-radius: 2px; }
.abe-cart-panel-item {
  display: flex; gap: .4rem; align-items: flex-start;
  background: #fff; border: 1px solid #e0e7ff; border-radius: .45rem;
  padding: .5rem; transition: border-color .15s;
}
.abe-cart-panel-item:hover { border-color: #a5b4fc; }
.abe-cart-panel-item-main { flex: 1; min-width: 0; }
.abe-cart-panel-item-title {
  font-size: .8rem; font-weight: 600; color: #1e293b;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  margin-bottom: .15rem;
}
.abe-cart-panel-item-meta {
  font-size: .68rem; color: #64748b; font-weight: 600;
  letter-spacing: .02em;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.abe-cart-panel-item-sub { font-weight: 400; color: #94a3b8; }
.abe-cart-panel-item-price {
  font-size: .78rem; font-weight: 700; color: #4f46e5; margin-top: .25rem;
}
.abe-cart-panel-item-remove {
  background: none; border: none; color: #94a3b8;
  font-size: 1.15rem; line-height: 1; cursor: pointer;
  padding: 0 .15rem; flex-shrink: 0;
  transition: color .15s;
}
.abe-cart-panel-item-remove:hover { color: #ef4444; }
.abe-cart-panel-total {
  display: flex; justify-content: space-between; align-items: center;
  margin-top: .6rem; padding-top: .5rem;
  border-top: 1px dashed #c7d2fe;
  font-size: .85rem; font-weight: 700; color: #1e293b;
}
.abe-cart-panel-checkout {
  display: block; width: 100%;
  margin-top: .5rem; padding: .55rem .75rem;
  background: #4f46e5; color: #fff; font-size: .8rem; font-weight: 600;
  border: none; border-radius: .4rem; cursor: pointer;
  transition: background .15s;
}
.abe-cart-panel-checkout:hover { background: #4338ca; }

.abe-filter-header {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: .75rem; padding-bottom: .5rem; border-bottom: 2px solid #f1f5f9;
}
.abe-filter-header h3 { font-size: .9rem; font-weight: 700; }
.abe-filter-clear {
  font-size: .72rem; color: #ef4444; background: none; border: none;
  cursor: pointer; text-decoration: underline; font-weight: 500;
}
.abe-filter-clear:hover { color: #dc2626; }

.abe-filter-group {
  margin-bottom: 1.15rem; padding-bottom: .9rem;
  border-bottom: 1px solid #f1f5f9;
}
.abe-filter-group:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.abe-filter-group-title {
  position: relative;
  display: flex; align-items: center; gap: .4rem;
  font-size: .72rem; font-weight: 700; color: #000;
  text-transform: uppercase; letter-spacing: .06em;
  margin-bottom: .6rem; padding-left: 0;
}

/* Filter: price range */
.abe-filter-range { padding: .25rem 0; }
.abe-filter-range-labels {
  display: flex; justify-content: space-between; font-size: .75rem;
  color: #64748b; margin-bottom: .25rem;
}
.abe-filter-range-inputs { position: relative; height: 24px; }
.abe-range-input {
  position: absolute; width: 100%; top: 0; left: 0;
  -webkit-appearance: none; appearance: none;
  background: transparent; pointer-events: none; height: 24px;
}
.abe-range-input::-webkit-slider-thumb {
  -webkit-appearance: none; width: 16px; height: 16px;
  background: var(--color-primary); border: 2px solid #fff; border-radius: 50%;
  box-shadow: 0 1px 4px rgba(0,0,0,.2); cursor: pointer; pointer-events: all;
}
.abe-range-input::-webkit-slider-runnable-track {
  height: 4px; background: #e2e8f0; border-radius: 2px;
}

/* Single-ceiling slider (B2B-style) */
.abe-filter-range--single { padding: .1rem 0; }
.abe-range-input--single {
  position: static; width: 100%; display: block; pointer-events: auto;
  margin-bottom: .25rem;
}

/* ── Dual-handle range (Booking.com / Trip.com style) ──────────── */
.abe-filter-range--dual { padding: .25rem 0 .35rem; }
.abe-rng-slot {
  position: relative; height: 24px;
  margin-top: .35rem; margin-bottom: .15rem;
  overflow: visible;
}
.abe-rng-track {
  position: absolute; left: 0; right: 0; top: 50%;
  height: 4px; background: #e2e8f0; border-radius: 2px;
  transform: translateY(-50%); pointer-events: none;
}
.abe-rng-fill {
  position: absolute; top: 50%; height: 4px;
  background: var(--color-primary); border-radius: 2px;
  left: var(--abe-lo, 0%); right: calc(100% - var(--abe-hi, 100%));
  transform: translateY(-50%); pointer-events: none;
}
.abe-rng-lo, .abe-rng-hi {
  position: absolute; left: 0; right: 0; top: 50%;
  width: 100%; height: 24px; margin: 0; padding: 0;
  -webkit-appearance: none; appearance: none;
  background: transparent; pointer-events: none;
  transform: translateY(-50%);
}
.abe-rng-lo:focus, .abe-rng-hi:focus { outline: none; }
.abe-rng-lo::-webkit-slider-runnable-track,
.abe-rng-hi::-webkit-slider-runnable-track { background: transparent; height: 4px; }
.abe-rng-lo::-moz-range-track,
.abe-rng-hi::-moz-range-track { background: transparent; height: 4px; border: none; }
.abe-rng-lo::-webkit-slider-thumb,
.abe-rng-hi::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 20px; height: 20px; border-radius: 50%;
  background: #fff; border: 2px solid var(--color-primary);
  box-shadow: 0 2px 4px rgba(0,0,0,.12);
  cursor: pointer; pointer-events: all;
  margin-top: -8px; /* center thumb on track */
  transition: transform .12s, box-shadow .12s;
}
.abe-rng-lo::-moz-range-thumb,
.abe-rng-hi::-moz-range-thumb {
  width: 20px; height: 20px; border-radius: 50%;
  background: #fff; border: 2px solid var(--color-primary);
  box-shadow: 0 2px 4px rgba(0,0,0,.12);
  cursor: pointer; pointer-events: all;
  transition: transform .12s, box-shadow .12s;
}
.abe-rng-lo:hover::-webkit-slider-thumb,
.abe-rng-hi:hover::-webkit-slider-thumb,
.abe-rng-lo:active::-webkit-slider-thumb,
.abe-rng-hi:active::-webkit-slider-thumb {
  transform: scale(1.08);
  box-shadow: 0 0 0 6px rgba(59,130,246,.15), 0 2px 6px rgba(0,0,0,.18);
}

/* Floating value tooltips above the handles. The tooltip's anchor point
   slides with the handle position so that at lo=0% the tooltip's LEFT edge
   sits at 0%, at lo=100% its RIGHT edge sits at 100%, and in between it is
   centered. Achieved with translateX(calc(-pct * 1%)) where --abe-lo-pct
   is the unitless number form of --abe-lo. */
.abe-rng-tip {
  position: absolute;
  /* Float ABOVE the slot so it doesn't reserve vertical space when hidden. */
  bottom: calc(100% + 8px); top: auto;
  background: #0f172a; border: none; border-radius: 8px;
  padding: .3rem .65rem; font-size: .82rem; font-weight: 700; color: #fff;
  white-space: nowrap; pointer-events: none;
  box-shadow: 0 4px 10px rgba(15,23,42,.25);
  letter-spacing: .01em;
  z-index: 5;
  /* Hidden by default - reveal only when the corresponding handle is hovered,
     focused, or being dragged. */
  opacity: 0; visibility: hidden;
  transition: opacity .12s ease-out, visibility .12s;
}
/* Show tooltip only when its OWN handle thumb is hovered, focused, or being
   dragged. This works because `pointer-events: none` is set on the inputs
   everywhere except the thumbs, so :hover on the input only triggers when
   the cursor is actually over the round circle. */
.abe-rng-lo:hover  ~ .abe-rng-tip--lo,
.abe-rng-lo:focus  ~ .abe-rng-tip--lo,
.abe-rng-lo:active ~ .abe-rng-tip--lo,
.abe-rng-hi:hover  ~ .abe-rng-tip--hi,
.abe-rng-hi:focus  ~ .abe-rng-tip--hi,
.abe-rng-hi:active ~ .abe-rng-tip--hi {
  opacity: 1; visibility: visible;
}
.abe-rng-tip--lo {
  left: var(--abe-lo, 0%);
  transform: translateX(calc(var(--abe-lo-pct, 0) * -1%));
}
.abe-rng-tip--hi {
  left: var(--abe-hi, 100%);
  transform: translateX(calc(var(--abe-hi-pct, 100) * -1%));
}
.abe-rng-tip::after {
  content: ''; position: absolute; top: 100%;
  width: 8px; height: 8px; background: #0f172a;
  transform: translate(-50%, -4px) rotate(45deg);
}
.abe-rng-tip--lo::after {     left: 14px; }
.abe-rng-tip--hi::after {     left: calc(var(--abe-hi-pct, 100) * 0.8%);}

/* Phase 2: track fill shows current [min, max] range using CSS custom props.
   JS sets --abe-fill-start / --abe-fill-end on the input element. */
.abe-range-input--single::-webkit-slider-runnable-track {
  height: 4px; border-radius: 2px;
  background: linear-gradient(to right,
    #e2e8f0 0%,
    #e2e8f0 var(--abe-fill-start, 0%),
    var(--color-primary) var(--abe-fill-start, 0%),
    var(--color-primary) var(--abe-fill-end, 100%),
    #e2e8f0 var(--abe-fill-end, 100%),
    #e2e8f0 100%);
}
.abe-range-input--single::-moz-range-track {
  height: 4px; border-radius: 2px;
  background: linear-gradient(to right,
    #e2e8f0 0%,
    #e2e8f0 var(--abe-fill-start, 0%),
    var(--color-primary) var(--abe-fill-start, 0%),
    var(--color-primary) var(--abe-fill-end, 100%),
    #e2e8f0 var(--abe-fill-end, 100%),
    #e2e8f0 100%);
}

/* Phase 2: flat state (all items same price, or no price data) */
.abe-filter-range--flat { padding: .4rem 0; text-align: center; }
.abe-range-flat-note {
  display: inline-block; padding: .22rem .6rem;
  background: #f1f5f9; border-radius: 10px;
  font-size: .72rem; color: #64748b; font-weight: 500;
}

/* Phase 2: numeric min/max companion inputs */
.abe-filter-range-nums {
  display: flex; align-items: center; gap: .35rem;
  margin: .35rem 0 .2rem;
}
.abe-range-num {
  flex: 1; min-width: 0; padding: .28rem .4rem;
  border: 1px solid #e2e8f0; border-radius: 6px;
  font-size: .78rem; color: #334155; background: #fff;
  font-family: inherit;
}
.abe-range-num::-webkit-outer-spin-button,
.abe-range-num::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.abe-range-num { -moz-appearance: textfield; }
.abe-range-num:focus {
  outline: none; border-color: var(--color-primary);
  box-shadow: 0 0 0 2px rgba(59, 130, 246, .12);
}
.abe-range-nums-sep { color: #94a3b8; font-size: .78rem; }

/* Phase 2: per-filter reset button (shows in title when filter is dirty) */
.abe-filter-reset {
  margin-left: auto; padding: 0 .35rem; height: 18px;
  border: 0; background: transparent; color: var(--color-primary);
  cursor: pointer; font-size: .95rem; line-height: 1;
  border-radius: 4px; text-transform: none; letter-spacing: 0;
}
.abe-filter-reset:hover { background: #eff6ff; }

/* Filter: checkboxes (pill/card style - shared across every module) */
.abe-filter-name-box { position: relative; }
.abe-filter-name-input {
  width: 100%;
  box-sizing: border-box;
  padding: .55rem .7rem;
  font-size: .85rem; color: #334155;
  background: #f8fafc;
  border: 1px solid #e2e8f0; border-radius: 8px;
  outline: none;
  transition: background .15s, border-color .15s, box-shadow .15s;
}
.abe-filter-name-input::placeholder { color: #94a3b8; }
.abe-filter-name-input:focus {
  background: #fff;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(37,99,235,.12);
}

.abe-filter-checks {
  display: flex; flex-direction: column; gap: .3rem;
  /* No height cap - the checkbox list (airlines, stops, hotel facets, etc.)
     opens to its full height for every service and module. */
}

.abe-filter-check {
  position: relative;
  display: flex; align-items: center; gap: .55rem;
  padding: .5rem .65rem;
  font-size: .82rem; color: #334155;
  background: #f8fafc;
  border: 1px solid transparent; border-radius: 8px;
  cursor: pointer; user-select: none;
  transition: background .15s, border-color .15s, color .15s, box-shadow .15s, transform .05s;
}
.abe-filter-check:hover {
  background: #eff6ff; border-color: #dbeafe; color: var(--color-primary-dk);
}
.abe-filter-check:active { transform: translateY(1px); }

/* Hide native checkbox but keep it keyboard-accessible */
.abe-filter-check input[type="checkbox"] {
  position: absolute; opacity: 0; width: 0; height: 0;
  margin: 0; pointer-events: none;
}

/* Custom check indicator (box + checkmark) */
.abe-filter-check-indicator {
  flex-shrink: 0; width: 18px; height: 18px;
  background: #fff; border: 2px solid #cbd5e1; border-radius: 5px;
  transition: background .15s, border-color .15s, box-shadow .15s;
  background-size: 14px 14px;
  background-position: center;
  background-repeat: no-repeat;
}
.abe-filter-check:hover .abe-filter-check-indicator { border-color: var(--color-primary); }
.abe-filter-check input[type="checkbox"]:focus-visible + .abe-filter-check-indicator {
  box-shadow: 0 0 0 3px rgba(59, 130, 246, .25);
}

/* Active state: card fills with primary, indicator inverts, check icon appears */
.abe-filter-check.is-active {
  background: var(--color-primary); border-color: var(--color-primary); color: #fff;
  box-shadow: 0 2px 8px rgba(59, 130, 246, .25);
}
.abe-filter-check.is-active .abe-filter-check-indicator {
  background-color: #fff; border-color: #fff;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%233b82f6' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
}

.abe-filter-check-label { flex: 1; font-weight: 500; }
.abe-filter-check-count {
  flex-shrink: 0; min-width: 22px;
  padding: .12rem .45rem; border-radius: 999px;
  font-size: .7rem; font-weight: 700;
  color: #64748b; background: #e2e8f0; text-align: center;
  transition: background .15s, color .15s;
}
.abe-filter-check:hover .abe-filter-check-count { background: #dbeafe; color: var(--color-primary-dk); }
.abe-filter-check.is-active .abe-filter-check-count {
  background: rgba(255, 255, 255, .22); color: #fff;
}

/* Star-rating filter rows - render 5 golden/grey stars instead of text */
.abe-filter-stars-label {
  display: inline-flex; align-items: center;
}
.abe-stars {
  display: inline-flex; align-items: center; gap: 2px;
  line-height: 1;
}
.abe-star {
  width: 15px; height: 15px;
  transition: color .15s, transform .15s;
}
.abe-star--on  { color: #f59e0b; }
.abe-star--off { color: #cbd5e1; }

/* Active state: filled stars stay golden on blue bg, empty stars fade to white-alpha */
.abe-filter-check--stars.is-active .abe-star--on  { color: #fbbf24; }
.abe-filter-check--stars.is-active .abe-star--off { color: rgba(255, 255, 255, .4); }

/* Hover: nudge the star row (subtle) */
.abe-filter-check--stars:hover .abe-star--on { color: #f59e0b; }

/* Filter: toggle switch */
.abe-filter-toggle-label {
  display: flex; align-items: center; gap: .5rem; font-size: .82rem;
  cursor: pointer; color: #334155;
}
.abe-filter-toggle-label input { display: none; }
.abe-filter-toggle-switch {
  width: 36px; height: 20px; background: #cbd5e1; border-radius: 10px;
  position: relative; transition: background .2s; flex-shrink: 0;
}
.abe-filter-toggle-switch::after {
  content: ''; position: absolute; top: 2px; left: 2px;
  width: 16px; height: 16px; background: #fff; border-radius: 50%;
  transition: transform .2s;
}
.abe-filter-toggle-label input:checked + .abe-filter-toggle-switch {
  background: var(--color-primary);
}
.abe-filter-toggle-label input:checked + .abe-filter-toggle-switch::after {
  transform: translateX(16px);
}

/* Mobile filter toggle */
.abe-filter-toggle-mobile {
  display: none; /* shown on mobile */
  width: 100%; padding: .5rem; margin-bottom: .75rem; font-size: .82rem;
  font-weight: 600; color: #475569; background: #f8fafc;
  border: 1px solid #e2e8f0; border-radius: .5rem;
  cursor: pointer; align-items: center; justify-content: center; gap: .4rem;
}
.abe-filter-toggle-mobile:hover { background: #f1f5f9; }

.abe-filter-note { font-size: .78rem; color: #94a3b8; font-weight: 400; }

/* ── Results Main ────────────────────────────────────────────── */
.abe-results-main { min-width: 0; }

.abe-results-header {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: .5rem;
}
.abe-results-count { font-size: .9rem; color: #334155; }

.abe-sort-bar { display: flex; align-items: center; gap: .5rem; font-size: .8rem; color: #64748b; }
.abe-sort-select {
  padding: .3rem .5rem; font-size: .8rem; border: 1px solid #e2e8f0;
  border-radius: .4rem; background: #fff; color: #334155; cursor: pointer;
  outline: none;
}
.abe-sort-select:focus { border-color: var(--color-primary); }

/* ── Custom Sort Dropdown (Trip.com-style) ─────────────────────── */
.abe-sort-dd { position: relative; display: inline-block; }
.abe-sort-dd-btn {
  display: inline-flex; align-items: center; gap: .5rem;
  padding: .45rem .8rem; min-width: 220px;
  font-size: .85rem; font-weight: 500; font-family: inherit;
  color: var(--color-primary-dk);
  background: #fff;
  border: 1.5px solid var(--color-primary-dk); border-radius: 8px;
  cursor: pointer; outline: none;
  transition: background .12s, border-color .12s, box-shadow .12s;
  text-align: left;
}
.abe-sort-dd-btn:hover { background: #eff6ff; }
.abe-sort-dd-btn[aria-expanded="true"] {
  background: #eff6ff;
  box-shadow: 0 0 0 3px rgba(37,99,235,.12);
}
.abe-sort-dd-icon { color: var(--color-primary-dk); flex-shrink: 0; }
.abe-sort-dd-label {
  flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.abe-sort-dd-chev {
  color: #64748b; flex-shrink: 0;
  transition: transform .15s;
}
.abe-sort-dd-btn[aria-expanded="true"] .abe-sort-dd-chev { transform: rotate(180deg); }

.abe-sort-dd-panel {
  position: absolute; top: calc(100% + .35rem); right: 0;
  min-width: 240px; max-width: 320px;
  background: #fff;
  border: 1px solid #e2e8f0; border-radius: 10px;
  box-shadow: 0 10px 30px rgba(15,23,42,.12), 0 2px 6px rgba(15,23,42,.06);
  padding: .35rem;
  z-index: 200;
  animation: abeSortDdFadeIn .14s ease-out;
}
@keyframes abeSortDdFadeIn {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.abe-sort-dd-item {
  display: flex; align-items: center; justify-content: space-between;
  width: 100%; padding: .6rem .75rem;
  font-size: .85rem; font-weight: 500; font-family: inherit;
  color: #334155;
  background: transparent; border: none; border-radius: 6px;
  cursor: pointer; text-align: left;
  transition: background .12s, color .12s;
  gap: .5rem;
}
.abe-sort-dd-item:hover { background: #f1f5f9; color: #0f172a; }
.abe-sort-dd-item.is-active { color: var(--color-primary-dk); font-weight: 600; }
.abe-sort-dd-item.is-active svg { color: var(--color-primary-dk); flex-shrink: 0; }

/* Page controls top bar */
.abe-page-controls-top {
  display: flex; align-items: center; gap: .5rem; margin-bottom: .75rem;
  font-size: .78rem; color: #64748b;
}
.abe-pagesize-select {
  padding: .2rem .4rem; font-size: .78rem; border: 1px solid #e2e8f0;
  border-radius: .3rem; background: #fff; color: #334155; cursor: pointer;
}
.abe-page-info { margin-left: auto; }

/* Unified results toolbar */
.abe-results-toolbar {
  display: flex; justify-content: space-between; align-items: center;
  flex-wrap: wrap; gap: .75rem;
  padding: .65rem .9rem; margin-bottom: 1rem;
  background: #fff; border: 1px solid #e2e8f0; border-radius: .6rem;
  box-shadow: 0 1px 2px rgba(0,0,0,.03);
}
.abe-tb-left {
  display: flex; align-items: baseline; gap: .5rem;
  font-size: .88rem; color: #334155;
}
.abe-tb-info strong { font-weight: 700; color: #0f172a; }
.abe-tb-filter-note {
  font-size: .75rem; color: #94a3b8;
}
.abe-tb-right {
  display: flex; align-items: center; gap: .75rem; flex-wrap: wrap;
  flex: 1 1 auto; min-width: 0;
}
/* Pagination + My Cart, justified to the far right of the toolbar. */
.abe-tb-actions {
  display: flex; align-items: center; gap: .75rem;
  margin-left: auto;
}
.abe-tb-right .abe-sort-bar label { font-size: .8rem; }
.abe-tb-right .abe-sort-select {
  padding: .4rem .6rem; font-size: .85rem;
}

.abe-rate-switcher {
  display: inline-flex; align-items: center; gap: .4rem;
  font-size: .8rem; color: #64748b;
}
.abe-rate-label { font-size: .8rem; }
.abe-rate-btns {
  display: inline-flex;
  border: 1px solid #e2e8f0; border-radius: 8px; overflow: hidden;
  background: #fff;
}
.abe-rate-btn {
  padding: .3rem .7rem;
  border: none; background: #fff;
  color: #64748b; font-size: .75rem; font-weight: 500;
  cursor: pointer; transition: background .12s, color .12s;
}
.abe-rate-btn:hover { background: #f1f5f9; color: #334155; }
.abe-rate-btn.is-active {
  background: var(--color-primary-dk); color: #fff; font-weight: 600;
}

/* Rate view visibility - default (no body attr) shows Sell */
[data-rate-net], [data-rate-markup] { display: none; }
body[data-rate-mode="sell"] [data-rate-sell]     { display: block; }
body[data-rate-mode="sell"] [data-rate-net],
body[data-rate-mode="sell"] [data-rate-markup]   { display: none; }
body[data-rate-mode="net"]  [data-rate-sell]     { display: none; }
body[data-rate-mode="net"]  [data-rate-net]      { display: block; }
body[data-rate-mode="net"]  [data-rate-markup]   { display: none; }
body[data-rate-mode="both"] [data-rate-sell]     { display: none; }
body[data-rate-mode="both"] [data-rate-net]      { display: none; }
body[data-rate-mode="both"] [data-rate-markup]   { display: block; }

/* Flight card - net + markup breakdown variants for the rate switcher */
.abe-fc-price--net { color: #0f766e; }
.abe-fc-rate-cap { font-size: .66rem; font-weight: 600; color: #64748b; text-transform: uppercase; letter-spacing: .04em; line-height: 1; margin-top: .1rem; }
.abe-fc-rate--markup { text-align: left; font-size: .78rem; min-width: 132px; }
.abe-fc-mk-row { display: flex; justify-content: space-between; gap: .9rem; padding: .12rem 0; color: #475569; }
.abe-fc-mk-row strong { font-weight: 700; color: #1f2937; }
.abe-fc-mk-row--plus { color: #0f766e; }
.abe-fc-mk-row--sell { border-top: 1px solid #e2e8f0; margin-top: .15rem; padding-top: .28rem; }
.abe-fc-mk-row--sell strong { color: var(--color-primary); }

/* Hotel card - net + markup breakdown variants */
.abe-hc-rate--net .abe-hc-price-main { color: #0f766e; }
.abe-hc-rate--net .abe-hc-price-total { color: #0d9488; }
.abe-hc-rate--markup {
  display: none;
  padding: .5rem .6rem;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  min-width: 180px;
}
.abe-hc-markup-row {
  display: flex; justify-content: space-between; align-items: center;
  font-size: .8rem; color: #475569; padding: .15rem 0;
}
.abe-hc-markup-row strong { color: #0f172a; font-weight: 600; }
.abe-hc-markup-row--plus { color: #059669; }
.abe-hc-markup-row--plus strong { color: #059669; }
.abe-hc-markup-row--sell {
  border-top: 1px dashed #cbd5e1; margin-top: .25rem; padding-top: .35rem;
  font-size: .85rem; font-weight: 600; color: #0f172a;
}
.abe-hc-markup-row--sell strong { color: var(--color-primary-dk); font-size: .95rem; }

.abe-tb-pagination {
  display: flex; align-items: center; gap: .4rem;
  padding: 0 .5rem;
  border-left: 1px solid #e2e8f0; border-right: 1px solid #e2e8f0;
}
.abe-tb-page-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px;
  background: #fff; border: 1px solid #e2e8f0; border-radius: .35rem;
  color: #334155; cursor: pointer; transition: background .15s, border-color .15s;
}
.abe-tb-page-btn:hover:not([disabled]) { background: #f1f5f9; border-color: #cbd5e1; }
.abe-tb-page-btn[disabled] { opacity: .4; cursor: not-allowed; }
.abe-tb-page-info {
  font-size: .8rem; color: #475569; font-weight: 500;
  padding: 0 .25rem; white-space: nowrap;
}

.abe-tb-cart-btn {
  display: inline-flex; align-items: center; gap: .4rem;
  padding: .45rem .85rem;
  font-size: .85rem; font-weight: 600; color: #334155;
  background: #fff; border: 1.5px solid #e2e8f0; border-radius: .4rem;
  cursor: pointer; transition: border-color .15s, background .15s, color .15s;
}
.abe-tb-cart-btn:hover {
  border-color: var(--color-primary); color: var(--color-primary-dk); background: #eff6ff;
}
.abe-tb-cart-btn.has-items {
  border-color: var(--color-primary); color: var(--color-primary-dk); background: #eff6ff;
}
.abe-tb-cart-count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 20px; height: 20px; padding: 0 .35rem;
  font-size: .72rem; font-weight: 700; color: #fff;
  background: var(--color-primary); border-radius: 999px; margin-left: .1rem;
}

/* ── Result Cards ────────────────────────────────────────────── */
.abe-results-cards { display: flex; flex-direction: column; gap: .75rem; }

.abe-card {
  background: #fff; border: 1px solid #e2e8f0; border-radius: .75rem;
  padding: 1.25rem; transition: box-shadow .15s, border-color .15s;
  /* Anchor for the absolute-positioned supplier ribbon (DIRECT / LIVE). */
  position: relative;
  overflow: hidden;
}
.abe-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,.08); border-color: #cbd5e1; }

.abe-card-row {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: .75rem;
}
.abe-card-main { flex: 1; min-width: 200px; }
.abe-card-title { font-size: .95rem; font-weight: 700; margin-bottom: .2rem; }
.abe-card-subtitle { font-size: .82rem; color: #64748b; }
.abe-card-tags { display: flex; gap: .3rem; flex-wrap: wrap; margin-top: .4rem; }
.abe-tag {
  display: inline-flex; align-items: center; gap: .2rem;
  padding: .15rem .45rem; font-size: .7rem; border-radius: 4px;
  background: #f1f5f9; color: #475569;
}
.abe-tag--green { background: #ecfdf5; color: #059669; }
.abe-tag--blue  { background: #eff6ff; color: var(--color-primary-dk); }
.abe-tag--amber { background: #fffbeb; color: #d97706; }
.abe-tag--red   { background: #fef2f2; color: #dc2626; }

.abe-card-price { text-align: right; min-width: 140px; }
.abe-card-price .abe-price-amount { font-size: 1.25rem; font-weight: 700; color: #0f172a; }
.abe-card-price .abe-price-unit { font-size: .72rem; color: #94a3b8; margin-bottom: .3rem; }
.abe-card-price .abe-price-label { font-size: .72rem; color: #94a3b8; }

.abe-card-actions {
  display: flex; flex-direction: column; align-items: stretch;
  gap: .4rem; margin-top: .5rem; width: 100%;
}
.abe-card-actions > .abe-book-btn,
.abe-card-actions > .abe-cart-btn { width: 100%; }

.abe-book-btn {
  padding: .5rem 1.25rem; font-size: .82rem; font-weight: 600;
  color: #fff; background: var(--color-primary); border: none; border-radius: .4rem;
  cursor: pointer; transition: background .15s;
}
.abe-book-btn:hover { background: var(--color-primary-dk); }

/* Cart button - two canonical layouts:
   Default (compact labeled pill, "Flights" style)  - icon + label, slim
   .abe-cart-btn--hotel (wide labeled pill)         - icon + label, generous
   Both always show the label; never squash an icon-only square. */
.abe-cart-btn {
  padding: .48rem .7rem;
  border: 1.5px solid #e2e8f0; border-radius: .4rem;
  background: #fff; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  gap: .35rem;
  font-size: .76rem; font-weight: 600; line-height: 1;
  color: #475569; transition: all .15s;
  white-space: nowrap;
}
.abe-cart-btn svg { flex: 0 0 auto; }
.abe-cart-btn:hover { border-color: var(--color-primary); color: var(--color-primary); background: #eff6ff; }
.abe-cart-btn.in-cart { border-color: #f59e0b; background: #fffbeb; color: #b45309; }
.abe-cart-btn.in-cart:hover { border-color: #ef4444; color: #ef4444; background: #fef2f2; }

/* ══════════════════════════════════════════════════════════════
   HOTEL CARD - image | body | price column
   ══════════════════════════════════════════════════════════════ */
.abe-hotel-card {
  display: flex;
  background: #fff;
  border: 1px solid #eef2f7;
  border-radius: .85rem;
  box-shadow: 0 1px 6px rgba(15,23,42,.05);
  overflow: hidden;
  transition: box-shadow .2s, border-color .2s, transform .2s;
}
.abe-hotel-card:hover {
  box-shadow: 0 10px 28px rgba(15,23,42,.10);
  border-color: #cbd5e1;
  transform: translateY(-1px);
}

.abe-hc-image {
  flex: 0 0 230px;
  min-height: 200px;
  position: relative;
  overflow: hidden;
  background: #f1f5f9;
}
.abe-hc-image img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .35s;
}
.abe-hotel-card:hover .abe-hc-image img { transform: scale(1.04); }
.abe-hc-no-image {
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 100%;
  color: #cbd5e1;
  background: linear-gradient(135deg, #f8fafc, #eef2f7);
}
.abe-hc-promo-badge {
  position: absolute; top: .75rem; left: .75rem;
  background: linear-gradient(135deg, #059669, #10b981);
  color: #fff; font-size: .68rem; font-weight: 700;
  padding: .25rem .7rem; border-radius: 999px;
  box-shadow: 0 2px 6px rgba(5,150,105,.3);
  letter-spacing: .02em;
}

/* Supplier-of-record badge (agent channels only) - bottom-left of the
   thumbnail so it clears the top-left source ribbon + promo badge. */
.abe-hc-supplier-badge {
  position: absolute; bottom: .6rem; left: .6rem; z-index: 2;
  padding: .22rem .55rem;
  font-size: .66rem; font-weight: 700; letter-spacing: .03em;
  text-transform: uppercase;
  color: #fff; border-radius: 4px;
  box-shadow: 0 2px 4px rgba(0,0,0,.22);
}
.abe-hc-supplier--adivaha   { background: #1d4ed8; border: 1px solid #1e40af; }
.abe-hc-supplier--tripjack  { background: #6d28d9; border: 1px solid #5b21b6; }
.abe-hc-supplier--grn       { background: #b45309; border: 1px solid #92400e; }
.abe-hc-supplier--hotelbeds { background: #0e7490; border: 1px solid #155e75; }
.abe-hc-supplier--extranet  { background: #475569; border: 1px solid #334155; }
.abe-hc-supplier--other     { background: #334155; border: 1px solid #1e293b; }

/* Two-phase load: skeleton card while live rate is being fetched. */
.abe-hc-price-loader {
  display: inline-flex; align-items: center; gap: .45rem;
  padding: .35rem .6rem;
  font-size: .78rem; font-weight: 600;
  color: #475569;
  background: #f1f5f9;
  border: 1px dashed #cbd5e1;
  border-radius: .5rem;
}
.abe-hc-spinner { animation: abe-spin .9s linear infinite; }
@keyframes abe-spin { to { transform: rotate(360deg); } }
.abe-hc-rate-pill {
  display: inline-block;
  margin-bottom: .3rem;
  padding: .12rem .5rem;
  font-size: .62rem; font-weight: 700; letter-spacing: .04em;
  color: #92400e; background: #fef3c7;
  border-radius: 999px;
  text-transform: uppercase;
}
.abe-hotel-card button[disabled] { opacity: .55; cursor: not-allowed; }

/* Floating "Fetching live availabilities…" status. Mirrors abe-combo-bar
   placement (fixed, bottom-center, drop-shadow) but is content-light. Hidden
   by default; .is-active reveals with a slide-up + fade-in. When the refresh
   ends we strip .is-active and the bar fades back out via the same transition. */
.abe-rate-refresh-bar {
  position: fixed;
  bottom: 1rem;
  left: 50%;
  transform: translate(-50%, 12px);
  z-index: 9499; /* below combo-bar so a flights round-trip session still wins */
  background: #0f172a;
  color: #f8fafc;
  padding: .55rem 1rem .55rem .9rem;
  font-size: .82rem;
  font-weight: 600;
  letter-spacing: .01em;
  display: inline-flex; align-items: center; gap: .55rem;
  border-radius: 999px;
  box-shadow: 0 12px 32px rgba(15, 23, 42, .25), 0 4px 10px rgba(15, 23, 42, .12);
  opacity: 0;
  pointer-events: none;
  transition: opacity .25s ease, transform .25s ease;
}
.abe-rate-refresh-bar.is-active {
  opacity: 1;
  transform: translate(-50%, 0);
}
.abe-rate-refresh-bar .abe-hc-spinner { color: #38bdf8; }

.abe-hc-body {
  flex: 1; min-width: 0;
  padding: 1.05rem 1.2rem;
  display: flex; flex-direction: column;
  justify-content: space-between;
}
.abe-hc-top { flex: 1; }
.abe-hc-title {
  font-size: 1.08rem; font-weight: 700;
  color: #0f172a; margin: 0 0 .35rem;
  line-height: 1.3;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.abe-hc-meta-row {
  display: flex; align-items: center;
  gap: .5rem; flex-wrap: wrap;
  margin-bottom: .4rem;
}
.abe-hc-stars { display: inline-flex; align-items: center; gap: 1px; color: #f59e0b; line-height: 1; }
.abe-hc-stars .abe-star { width: 14px; height: 14px; }
.abe-hc-star { display: inline-block; }
.abe-hc-chain {
  font-size: .66rem; font-weight: 600;
  color: #6366f1; background: #eef2ff;
  padding: .12rem .45rem; border-radius: .3rem;
  letter-spacing: .02em;
}
.abe-hc-proptype-badge {
  font-size: .62rem; font-weight: 700;
  color: #64748b; background: #f1f5f9;
  padding: .12rem .45rem; border-radius: .3rem;
  text-transform: uppercase; letter-spacing: .04em;
}
.abe-hc-location {
  display: flex; align-items: center; gap: .3rem;
  font-size: .8rem; color: #64748b;
  margin-top: .1rem;
}
.abe-hc-location svg { flex-shrink: 0; color: #94a3b8; }

.abe-hc-details {
  display: flex; flex-wrap: wrap;
  gap: .3rem; margin-top: .7rem;
}
.abe-hc-tag {
  display: inline-flex; align-items: center;
  font-size: .7rem; font-weight: 500;
  padding: .22rem .6rem;
  border-radius: 999px;
  background: #f1f5f9; color: #475569;
}
.abe-hc-tag--meal   { background: #eff6ff; color: var(--color-primary-dk); }
.abe-hc-tag--refund { background: #ecfdf5; color: #059669; }
.abe-hc-tag--nonref { background: #fef2f2; color: #dc2626; }
.abe-hc-tag--supplier-api    { background: #eef2ff; color: #4338ca; }
.abe-hc-tag--supplier-direct { background: #f0fdf4; color: #15803d; }

.abe-hc-right {
  flex: 0 0 190px;
  display: flex; flex-direction: column;
  justify-content: space-between;
  padding: 1.05rem 1.15rem;
  background: #fafbfd;
  border-left: 1px solid #eef2f7;
  text-align: right;
}
.abe-hc-pricing { }
.abe-hc-price-main {
  font-size: 1.35rem; font-weight: 700;
  color: #0f172a; line-height: 1.15;
  letter-spacing: -.01em;
}
.abe-hc-price-main small {
  font-size: .7rem; font-weight: 500;
  color: #94a3b8; margin-left: .1rem;
}
.abe-hc-price-total {
  font-size: .76rem; color: #64748b;
  margin-top: .25rem;
}
.abe-hc-price-tax {
  font-size: .68rem; color: #94a3b8;
  margin-top: .15rem;
}
.abe-hc-actions {
  display: flex; flex-direction: column;
  gap: .4rem; margin-top: .85rem;
  align-items: stretch;
}
.abe-book-btn--hotel {
  padding: .55rem .9rem;
  font-size: .8rem; font-weight: 600;
  border-radius: .45rem;
  background: var(--color-primary-dk); color: #fff;
  box-shadow: 0 2px 6px rgba(37,99,235,.25);
}
.abe-book-btn--hotel:hover { background: var(--color-primary-dk); box-shadow: 0 4px 10px rgba(37,99,235,.35); }
.abe-cart-btn--hotel {
  width: auto; height: auto;
  padding: .5rem .75rem;
  display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
  font-size: .78rem; font-weight: 600;
  color: var(--color-primary-dk); background: #fff;
  border: 1.5px solid #e2e8f0; border-radius: .45rem;
}
.abe-cart-btn--hotel:hover { border-color: var(--color-primary-dk); background: #eff6ff; }
.abe-cart-btn--hotel.in-cart {
  border-color: #f59e0b; background: #fffbeb; color: #b45309;
}

@media (max-width: 768px) {
  .abe-hotel-card { flex-direction: column; }
  .abe-hc-image { flex: 0 0 180px; min-height: 180px; }
  .abe-hc-right {
    flex: 0 0 auto;
    border-left: none;
    border-top: 1px solid #eef2f7;
    text-align: left;
  }
  .abe-hc-actions { flex-direction: row; }
  .abe-hc-actions > * { flex: 1; }
}

/* ══════════════════════════════════════════════════════════════
   EXCURSION / ACTIVITY CARD
   ══════════════════════════════════════════════════════════════ */
.abe-exc-card {
  display: flex; gap: 0;
  background: #fff; border: 1px solid #e2e8f0; border-radius: 10px;
  overflow: hidden; margin-bottom: 1rem;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
  transition: box-shadow .2s, border-color .2s;
}
.abe-exc-card:hover {
  box-shadow: 0 4px 12px rgba(0,0,0,.08);
  border-color: #cbd5e1;
}
.abe-exc-image {
  flex: 0 0 220px; position: relative;
  background: linear-gradient(135deg, #0d9488 0%, #14b8a6 100%);
  min-height: 180px; overflow: hidden;
}
.abe-exc-image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.abe-exc-no-image {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  color: rgba(255,255,255,.7);
}
.abe-exc-cat-badge {
  position: absolute; top: .6rem; left: .6rem;
  background: rgba(15,23,42,.85); color: #fff;
  padding: .2rem .5rem; border-radius: 4px;
  font-size: .7rem; font-weight: 600;
  text-transform: capitalize;
}
.abe-exc-instant-badge {
  position: absolute; top: .6rem; right: .6rem;
  background: #fbbf24; color: #7c2d12;
  padding: .2rem .5rem; border-radius: 4px;
  font-size: .7rem; font-weight: 700;
}
/* Source ribbon - bottom-left of the image, distinguishes Adivaha-API
 * offers from local extranet inventory at a glance. Doesn't conflict
 * with cat-badge (top-left) or instant-badge (top-right). */
.abe-exc-source-badge {
  position: absolute; bottom: .6rem; left: .6rem;
  padding: .22rem .55rem;
  font-size: .68rem; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase;
  border-radius: 4px;
  box-shadow: 0 2px 4px rgba(0,0,0,.18);
}
.abe-exc-source-adivaha {
  background: #047857; color: #ecfdf5; border: 1px solid #065f46;
}
.abe-exc-source-extranet {
  background: #475569; color: #f1f5f9; border: 1px solid #334155;
}
.abe-exc-body {
  flex: 1; padding: 1rem 1.1rem;
  display: flex; flex-direction: column;
}
.abe-exc-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: .8rem; margin-bottom: .35rem;
}
.abe-exc-title {
  margin: 0; font-size: 1rem; font-weight: 600; color: #0f172a;
  line-height: 1.35;
}
.abe-exc-rating {
  display: flex; align-items: center; gap: .3rem;
  flex-shrink: 0;
}
.abe-exc-rating-score {
  background: #0d9488; color: #fff;
  padding: .15rem .4rem; border-radius: 4px;
  font-size: .78rem; font-weight: 700;
}
.abe-exc-rating-stars { display: inline-flex; align-items: center; gap: 1px; color: #fbbf24; line-height: 1; }
.abe-exc-rating-stars .abe-star { width: 12px; height: 12px; }
.abe-exc-rating small { color: #64748b; font-size: .72rem; }
.abe-exc-desc {
  margin: 0 0 .55rem; font-size: .83rem; color: #475569;
  line-height: 1.45;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}
.abe-exc-meta-row {
  display: flex; flex-wrap: wrap; gap: .8rem;
  margin-top: auto; margin-bottom: .5rem;
}
.abe-exc-meta {
  display: inline-flex; align-items: center; gap: .25rem;
  font-size: .78rem; color: #64748b;
}
.abe-exc-cancel small { color: #16a34a; font-size: .75rem; font-weight: 500; }
.abe-exc-price-col {
  flex: 0 0 170px;
  padding: 1rem 1.1rem;
  border-left: 1px solid #eef2f7;
  display: flex; flex-direction: column; align-items: flex-end;
  text-align: right; background: #fafbfc;
}
.abe-exc-price-from { color: #64748b; font-size: .72rem; }
.abe-exc-price { font-size: 1.35rem; font-weight: 700; color: #0f172a; line-height: 1.1; }
.abe-exc-price-unit { color: #64748b; font-size: .7rem; }

@media (max-width: 768px) {
  .abe-exc-card { flex-direction: column; }
  .abe-exc-image { flex: 0 0 180px; min-height: 180px; }
  .abe-exc-price-col {
    flex: 0 0 auto;
    border-left: none; border-top: 1px solid #eef2f7;
    text-align: left; align-items: stretch;
  }
}

/* ── Excursion detail page ─────────────────────────────────────── */
.abe-exc-detail-grid {
  display: grid; grid-template-columns: 1fr 320px; gap: 1.5rem;
  margin-top: 1rem;
}
.abe-exc-detail-main { min-width: 0; }
.abe-exc-detail-hero { border-radius: 10px; overflow: hidden; background: #0d9488; }
.abe-exc-detail-hero-img {
  width: 100%; height: 380px; object-fit: cover; display: block;
}
.abe-exc-detail-thumbs {
  display: grid; grid-template-columns: repeat(6, 1fr);
  gap: .5rem; margin-top: .5rem;
}
.abe-exc-detail-thumbs img {
  width: 100%; height: 70px; object-fit: cover; border-radius: 6px;
  cursor: zoom-in;
}
.abe-exc-detail-sec { margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid #eef2f7; }
.abe-exc-detail-sec:first-child { border-top: 0; padding-top: 0; }
.abe-exc-detail-sec h2 { font-size: 1.05rem; margin: 0 0 .5rem; color: #0f172a; }
.abe-exc-detail-sec h3 { font-size: .9rem; margin: 0 0 .4rem; color: #334155; }
.abe-exc-detail-sec p  { line-height: 1.55; color: #334155; }
.abe-exc-list { margin: 0; padding-left: 1.1rem; color: #334155; line-height: 1.7; }
.abe-exc-list--inc li::marker { color: #16a34a; }
.abe-exc-list--exc li::marker { color: #dc2626; }
.abe-exc-incex { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
.abe-exc-cancel-good { color: #16a34a; font-weight: 600; }

.abe-exc-detail-aside { position: relative; }
.abe-exc-detail-price-card {
  position: sticky; top: 1rem;
  border: 1px solid #e2e8f0; border-radius: 10px; padding: 1rem;
  background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,0.04);
}
.abe-exc-detail-price-card small { color: #64748b; }
.abe-exc-detail-price {
  font-size: 1.6rem; font-weight: 700; color: #0f172a; line-height: 1.1;
  margin: .15rem 0 .25rem;
}
.abe-exc-detail-fact {
  margin-top: .65rem; padding-top: .65rem; border-top: 1px dashed #e2e8f0;
  display: flex; flex-direction: column;
}
.abe-exc-detail-fact small { color: #64748b; font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; }
.abe-exc-detail-fact strong { color: #0f172a; font-size: .95rem; }

@media (max-width: 900px) {
  .abe-exc-detail-grid { grid-template-columns: 1fr; }
  .abe-exc-detail-hero-img { height: 240px; }
  .abe-exc-incex { grid-template-columns: 1fr; }
  .abe-exc-detail-thumbs { grid-template-columns: repeat(4, 1fr); }
}

/* ── Excursion detail - premium polish ─────────────────────────── */
.abe-exc-detail .abe-detail-header-row {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 1.5rem; flex-wrap: wrap;
}
.abe-exc-detail .abe-detail-header-info { min-width: 0; flex: 1; }
.abe-exc-detail .abe-detail-title { font-size: 1.6rem; font-weight: 700; color: #0f172a; margin: 0; }
.abe-exc-detail .abe-detail-subheader {
  display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .75rem;
}
.abe-exc-chip {
  display: inline-flex; align-items: center; gap: .35rem;
  padding: .3rem .65rem; border-radius: 999px;
  background: #f1f5f9; color: #334155; font-size: .78rem; font-weight: 500;
  border: 1px solid #e2e8f0;
}
.abe-exc-chip--good { background: #ecfdf5; color: #047857; border-color: #d1fae5; }

.abe-exc-detail .abe-detail-header-actions {
  display: flex; align-items: center; gap: .75rem; flex-wrap: wrap;
}
.abe-exc-detail .abe-detail-cheapest { text-align: right; }
.abe-exc-detail .abe-detail-cheapest small { color: #64748b; font-size: .72rem; }
.abe-exc-detail .abe-detail-cheapest-price {
  font-size: 1.4rem; font-weight: 700; color: #0f172a;
}
.abe-exc-detail .abe-detail-cart-btn {
  display: inline-flex; align-items: center; gap: .5rem;
  padding: .55rem 1rem; border-radius: 8px; border: 1px solid #cbd5e1;
  background: #fff; color: #0f172a; font-weight: 600; cursor: pointer;
  font-size: .85rem;
  transition: all .15s ease;
  position: relative;
}
.abe-exc-detail .abe-detail-cart-btn:hover { border-color: #0ea5e9; color: #0ea5e9; }
.abe-exc-detail .abe-detail-cart-btn.has-items { border-color: #f59e0b; color: #b45309; background: #fffbeb; }
.abe-exc-detail .abe-detail-cart-count {
  background: #f59e0b; color: #fff; border-radius: 999px;
  font-size: .68rem; padding: 1px 7px; font-weight: 700;
}

/* Header row layout - back button + cart on the same line */
.abe-exc-detail .abe-exc-header-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; margin-bottom: .75rem;
}
.abe-exc-detail .abe-pkg-type-pill {
  display: inline-block; padding: .15rem .55rem; border-radius: 4px;
  background: #ecfdf5; color: #047857; font-weight: 600; font-size: .72rem;
  text-transform: uppercase; letter-spacing: .04em; margin-right: .35rem;
}

/* Segmentation card grid - 2 columns on wide screens */
.abe-exc-seg-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1rem;
}
@media (max-width: 768px) {
  .abe-exc-seg-grid { grid-template-columns: 1fr; }
}

/* Section icon */
.abe-exc-sec-icon {
  display: inline-block; margin-right: .35rem;
  font-size: 1rem; line-height: 1;
}

/* Modality card (matches reference Tour block) */
.abe-exc-modality-card {
  border: 1px solid #e2e8f0; border-radius: 10px; overflow: hidden;
  background: #fff; margin-top: .25rem;
  box-shadow: 0 2px 6px rgba(0,0,0,0.03);
}
.abe-exc-modality-head {
  background: linear-gradient(135deg, #ecfeff, #f0fdfa);
  padding: .75rem 1rem; display: flex; align-items: center; gap: .5rem;
  border-bottom: 1px solid #cffafe;
}
.abe-exc-modality-tag {
  background: #0d9488; color: #fff; padding: .15rem .55rem;
  border-radius: 4px; font-size: .7rem; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase;
}
.abe-exc-modality-body {
  display: grid; grid-template-columns: 1fr auto; gap: 1rem;
  padding: 1rem; align-items: center;
}
.abe-exc-modality-meta {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: .75rem;
}
.abe-exc-modality-meta small { color: #64748b; font-size: .68rem; text-transform: uppercase; letter-spacing: .04em; display: block; }
.abe-exc-modality-meta strong { color: #0f172a; font-size: .85rem; }
.abe-exc-modality-price { text-align: right; }
.abe-exc-modality-price small { color: #64748b; font-size: .7rem; display: block; }
.abe-exc-modality-amt { font-size: 1.4rem; font-weight: 700; color: #0f172a; line-height: 1.1; margin: .15rem 0; }
.abe-exc-modality-price .abe-book-btn {
  background: #f59e0b; color: #fff; border: 0; border-radius: 6px;
  padding: .55rem 1.25rem; font-weight: 700; cursor: pointer; letter-spacing: .04em;
  text-transform: uppercase; font-size: .8rem;
  transition: background .15s;
}
.abe-exc-modality-price .abe-book-btn:hover { background: #d97706; }

/* Detail blocks (Location, Included, Not included, etc.) */
.abe-exc-detail-block { margin: 1rem 0 1.5rem; }
.abe-exc-detail-block h3 {
  font-size: 1rem; font-weight: 700; color: #0f172a; margin: 0 0 .65rem;
  padding-bottom: .35rem;
}
.abe-exc-pill-row { display: flex; flex-wrap: wrap; gap: .5rem; }
.abe-exc-pill {
  display: inline-flex; align-items: center; gap: .3rem;
  padding: .45rem .85rem; border-radius: 8px;
  font-size: .85rem; font-weight: 500;
  border: 1px solid #e2e8f0; background: #f8fafc; color: #0f172a;
}
.abe-exc-pill--good { background: #f0fdf4; color: #15803d; border-color: #bbf7d0; }
.abe-exc-pill--bad  { background: #fef2f2; color: #b91c1c; border-color: #fecaca; }

.abe-exc-desc-long { line-height: 1.65; color: #334155; white-space: pre-line; }
.abe-exc-detail-muted { color: #64748b; font-size: .85rem; }

/* Map embed */
.abe-exc-map-wrap {
  position: relative; padding-bottom: 56%; border-radius: 10px; overflow: hidden;
  border: 1px solid #e2e8f0;
}
.abe-exc-map-wrap iframe {
  position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;
}

/* Trust bar in right rail */
.abe-exc-trust {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem;
  margin-top: 1rem; padding: 1rem;
  border: 1px dashed #cbd5e1; border-radius: 10px;
  text-align: center;
}
.abe-exc-trust strong { display: block; font-size: 1.2rem; color: #0d9488; }
.abe-exc-trust small  { font-size: .68rem; color: #64748b; line-height: 1.3; }

/* Recommendation / recently-viewed rails */
.abe-exc-rail { margin: 2rem 0; }
.abe-exc-rail-head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: .75rem; }
.abe-exc-rail-head h2 { font-size: 1.15rem; font-weight: 700; color: #0f172a; margin: 0; }
.abe-exc-rail-head small { color: #64748b; font-size: .8rem; }
.abe-exc-rail-list {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1rem;
}
.abe-exc-mini {
  display: flex; flex-direction: column; cursor: pointer;
  border: 1px solid #e2e8f0; border-radius: 10px; overflow: hidden;
  background: #fff; text-decoration: none; color: inherit;
  transition: transform .15s, box-shadow .15s;
}
.abe-exc-mini:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
.abe-exc-mini-img { position: relative; height: 130px; background: #e2e8f0; overflow: hidden; }
.abe-exc-mini-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.abe-exc-mini-noimg {
  width: 100%; height: 100%;
  background: linear-gradient(135deg, #0ea5e9, #0d9488);
}
.abe-exc-mini-tag {
  position: absolute; top: .5rem; left: .5rem;
  background: rgba(15,23,42,0.85); color: #fff;
  font-size: .65rem; padding: 2px 8px; border-radius: 999px; letter-spacing: .04em; text-transform: uppercase; font-weight: 600;
}
.abe-exc-mini-body { padding: .75rem; display: flex; flex-direction: column; gap: .25rem; }
.abe-exc-mini-body strong { font-size: .9rem; color: #0f172a; line-height: 1.3; min-height: 2.4em;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.abe-exc-mini-body small { color: #64748b; font-size: .75rem; }
.abe-exc-mini-price { font-weight: 700; color: #0f172a; font-size: 1rem; margin-top: .25rem; }

@media (max-width: 768px) {
  .abe-exc-modality-body { grid-template-columns: 1fr; }
  .abe-exc-modality-price { text-align: left; }
  .abe-exc-detail .abe-detail-header-actions { width: 100%; justify-content: space-between; }
}

/* ══════════════════════════════════════════════════════════════
   PACKAGE CARD
   ══════════════════════════════════════════════════════════════ */
.abe-pkg-card {
  display: flex; gap: 0;
  background: #fff; border: 1px solid #e2e8f0; border-radius: 10px;
  overflow: hidden; margin-bottom: 1rem;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
  transition: box-shadow .2s, border-color .2s;
}
.abe-pkg-card:hover {
  box-shadow: 0 4px 12px rgba(0,0,0,.08);
  border-color: #cbd5e1;
}
.abe-pkg-image {
  flex: 0 0 240px; position: relative;
  background: linear-gradient(135deg, #fb923c 0%, #c2410c 100%);
  min-height: 200px; overflow: hidden;
}
.abe-pkg-image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.abe-pkg-no-image {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  color: rgba(255,255,255,.75);
}
.abe-pkg-nights-badge {
  position: absolute; bottom: .5rem; left: .5rem;
  background: rgba(255,255,255,.92); color: #1e293b;
  padding: .2rem .55rem; border-radius: 4px;
  font-size: .72rem; font-weight: 700;
  backdrop-filter: blur(4px);
}
.abe-pkg-seats-badge {
  position: absolute; top: .5rem; right: .5rem;
  background: #dc2626; color: #fff;
  padding: .2rem .5rem; border-radius: 4px;
  font-size: .68rem; font-weight: 700;
}
.abe-pkg-body {
  flex: 1; padding: 1rem 1.1rem;
  display: flex; flex-direction: column;
}
.abe-pkg-title {
  margin: 0 0 .3rem; font-size: 1rem; font-weight: 600;
  color: #0f172a; line-height: 1.35;
}
.abe-pkg-desc {
  margin: 0 0 .6rem; font-size: .82rem; color: #475569;
  line-height: 1.45;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}
.abe-pkg-chips {
  display: flex; flex-wrap: wrap; gap: .35rem;
  margin-bottom: .4rem;
}
.abe-pkg-chip {
  display: inline-flex; align-items: center; gap: .25rem;
  padding: .18rem .5rem; border-radius: 4px;
  font-size: .73rem; font-weight: 500;
  background: #f1f5f9; color: #334155;
}
.abe-pkg-chip--hotel { background: #eff6ff; color: var(--color-primary-dk); }
.abe-pkg-chip--meal  { background: #fef3c7; color: #92400e; }
.abe-pkg-chip--mode  { background: #f0fdf4; color: #166534; }
.abe-pkg-chip--guide { background: #f5f3ff; color: #6d28d9; }
.abe-pkg-chip--onreq { background: #fef3c7; color: #d97706; font-weight: 600; }
.abe-pkg-highlights {
  font-size: .72rem; color: #64748b; line-height: 1.5;
  display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical;
  overflow: hidden; margin-bottom: .4rem;
}
.abe-pkg-cancel { margin-top: auto; }
.abe-pkg-cancel small { color: #16a34a; font-size: .75rem; font-weight: 500; }
.abe-pkg-price-col {
  flex: 0 0 180px;
  padding: 1rem 1.1rem;
  border-left: 1px solid #eef2f7;
  display: flex; flex-direction: column; align-items: flex-end;
  text-align: right; background: #fafbfc;
}
.abe-pkg-pp { font-size: 1.35rem; font-weight: 700; color: #0f172a; line-height: 1.1; }
.abe-pkg-pp-label { color: #64748b; font-size: .7rem; }
.abe-pkg-total { margin-top: .35rem; font-size: .9rem; font-weight: 700; color: #1e293b; }
.abe-pkg-total-label { color: #64748b; font-size: .68rem; }

@media (max-width: 768px) {
  .abe-pkg-card { flex-direction: column; }
  .abe-pkg-image { flex: 0 0 200px; min-height: 200px; }
  .abe-pkg-price-col {
    flex: 0 0 auto;
    border-left: none; border-top: 1px solid #eef2f7;
    text-align: left; align-items: stretch;
  }
}

/* ── Flight-specific ─────────────────────────────────────────── */
.abe-flight-airline {
  display: flex; align-items: center; gap: .6rem; margin-bottom: .5rem;
}
.abe-airline-badge {
  width: 40px; height: 40px; border-radius: 6px;
  display: flex; align-items: center; justify-content: center;
  background: var(--color-primary-dk); color: #fff;
  font-size: .78rem; font-weight: 700; letter-spacing: .04em;
  flex-shrink: 0;
}
.abe-airline-badge[data-code="6E"] { background: #0065a0; }
.abe-airline-badge[data-code="AI"] { background: #c8102e; }
.abe-airline-badge[data-code="UK"] { background: #4b286d; }
.abe-airline-badge[data-code="SG"] { background: #d22630; }
.abe-airline-badge[data-code="DA"] { background: var(--color-primary-dk); }
.abe-airline-badge[data-code="QP"] { background: #ff6b35; }
.abe-airline-badge[data-code="I5"] { background: #e31e24; }
.abe-airline-info .airline-name { font-weight: 600; color: #0f172a; font-size: .92rem; }
.abe-airline-info small { color: #64748b; font-size: .72rem; }

.abe-flight-row {
  display: flex; align-items: center; gap: 1.25rem; flex: 1;
  padding: .5rem 0;
}
.abe-flight-time { text-align: center; min-width: 64px; }
.abe-flight-time .time { font-size: 1.2rem; font-weight: 700; color: #0f172a; }
.abe-flight-time .code { font-size: .72rem; color: #64748b; font-weight: 600; letter-spacing: .04em; }

.abe-flight-path {
  flex: 1; display: flex; flex-direction: column; align-items: center;
  gap: .25rem; padding: 0 .5rem;
}
.abe-flight-duration { font-size: .72rem; color: #64748b; font-weight: 500; }
.abe-flight-line {
  position: relative; width: 100%; height: 14px;
  display: flex; align-items: center; justify-content: space-between;
}
.abe-flight-line::before {
  content: ''; position: absolute; left: 0; right: 0; top: 50%;
  height: 1px; background: linear-gradient(90deg, #cbd5e1 0, #cbd5e1 100%);
}
.abe-flight-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--color-primary-dk); position: relative; z-index: 1;
}
.abe-flight-plane {
  position: relative; z-index: 2; color: var(--color-primary-dk);
  background: #fff; padding: 0 4px;
  display: inline-flex; align-items: center;
  transform: translateX(0);
}
.abe-flight-stops { font-size: .7rem; color: #94a3b8; font-weight: 500; }

/* ── Flight Card (.abe-fc) - reference-UI style ──────────────── */
.abe-fc {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: .5rem;
  margin-bottom: .75rem;
  overflow: hidden;
  position: relative;
  transition: box-shadow .15s;
}
.abe-fc:hover { box-shadow: 0 4px 16px rgba(15, 23, 42, .08); }
.abe-fc.is-picked { border-color: #10b981; box-shadow: 0 0 0 2px rgba(16,185,129,.2); }

/* Supplier-source ribbon (top-left). Green for direct/extranet contracts,
   blue for live API supplier fares. Sits on the card corner so the operator
   sees inventory provenance before scanning the rest of the row. */
.abe-fc-ribbon {
  position: absolute;
  top: 0;
  left: 0;
  padding: .18rem .6rem .2rem;
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .06em;
  color: #fff;
  border-bottom-right-radius: .35rem;
  z-index: 1;
  pointer-events: auto;
  cursor: help;
  box-shadow: 0 1px 2px rgba(15, 23, 42, .12);
}
.abe-fc-ribbon--direct {
  background: linear-gradient(135deg, #059669 0%, #10b981 100%);
}
.abe-fc-ribbon--live {
  background: linear-gradient(135deg, var(--color-primary-dk) 0%, var(--color-primary) 100%);
}

/* .abe-fc-radio positioning lives with .abe-card-radio in the combo-radio block */
.abe-fc--combo { padding-left: 3rem; }
.abe-fc.is-picked { background: linear-gradient(to right, #f0fdf4 0%, #fff 100%); }

.abe-fc-main {
  display: grid;
  grid-template-columns: 120px 110px 1fr 110px 160px;
  align-items: center;
  gap: 1rem;
  padding: 1.1rem 1rem;
}

/* Airline block */
.abe-fc-airline {
  display: flex; flex-direction: column; align-items: center; gap: .25rem;
}
.abe-fc-logo {
  width: 48px; height: 48px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: .85rem; letter-spacing: .03em;
  box-shadow: 0 1px 3px rgba(0,0,0,.15);
  margin-bottom: .15rem;
}
.abe-fc-airline-name {
  font-size: .85rem; font-weight: 600; color: #ea580c; line-height: 1.1;
  text-align: center;
}
.abe-fc-flt-no {
  font-size: .72rem; color: #64748b; font-weight: 500;
}

/* Supplier-of-record badge under the airline (recognise which supplier the fare
   came from). +N marks how many other suppliers also sell this exact flight. */
.abe-fc-supplier {
  margin-top: .3rem; font-size: .62rem; font-weight: 700; letter-spacing: .02em;
  text-transform: uppercase; color: #475569; background: #f1f5f9;
  border: 1px solid #e2e8f0; border-radius: 999px; padding: .12rem .5rem;
  line-height: 1.4; white-space: nowrap; display: inline-flex; align-items: center; gap: .3rem;
}
.abe-fc-sup-more {
  background: #ea580c; color: #fff; border-radius: 999px; font-size: .56rem;
  padding: 0 .32rem; line-height: 1.55;
}

/* Merged-flight supplier rail: same physical flight, one row per supplier with
   its rate (cheapest tagged "Best"). Each chip books that supplier. Scoped so it
   overrides the shared .abe-fc-book button styles. */
.abe-fc-suppliers {
  display: flex; align-items: center; flex-wrap: wrap; gap: .45rem;
  padding: .55rem .9rem; border-top: 1px dashed #e2e8f0; background: #fafbfc;
}
.abe-fc-sup-lead { font-size: .72rem; font-weight: 600; color: #64748b; }
.abe-fc-suppliers .abe-fc-sup-opt {
  display: inline-flex; align-items: center; gap: .4rem; width: auto;
  padding: .28rem .55rem; margin: 0; border: 1px solid #e2e8f0; border-radius: 8px;
  background: #fff; color: #334155; cursor: pointer; font: inherit; text-transform: none;
  box-shadow: none; transition: border-color .15s, background .15s;
}
.abe-fc-suppliers .abe-fc-sup-opt:hover { border-color: #34d399; background: #f0fdf4; }
.abe-fc-suppliers .abe-fc-sup-opt-name  { font-size: .74rem; font-weight: 600; color: #334155; }
.abe-fc-suppliers .abe-fc-sup-opt-price { font-size: .82rem; font-weight: 700; color: #0f172a; }
.abe-fc-suppliers .abe-fc-sup-opt.is-best { border-color: #16a34a; background: #f0fdf4; }
.abe-fc-suppliers .abe-fc-sup-opt.is-best .abe-fc-sup-opt-price { color: #16a34a; }
.abe-fc-suppliers .abe-fc-sup-opt-tag {
  font-size: .56rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em;
  color: #fff; background: #16a34a; border-radius: 4px; padding: .02rem .32rem;
}

/* Airline logo image variant (Wego square logo by IATA code). Generic so it
   drops into ANY host badge - result-card circle (.abe-fc-logo), detail-modal
   circle (.abe-fdm-itin-logo), review/confirmation square (.abe-airline-badge) -
   inheriting the host's size and border-radius. On <img> error the parent gets
   .abe-airlogo--noimg and the 2-letter code chip is revealed (brand colour set
   inline on the wrapper by the onerror handler). */
.abe-airlogo { padding: 0; overflow: hidden; position: relative; }
.abe-airlogo-img  { width: 100%; height: 100%; object-fit: contain; display: block; border-radius: inherit; }
.abe-airlogo-code { display: none; }
.abe-airlogo--noimg { box-shadow: none; }
.abe-airlogo--noimg .abe-airlogo-code {
  display: flex; align-items: center; justify-content: center;
  position: absolute; inset: 0; border-radius: inherit;
  color: #fff; font-weight: 700; letter-spacing: .03em;
}

/* Flight fare-calendar strip (7-day price comparison rail above results) */
.abe-fare-strip {
  display: flex; align-items: stretch; gap: .4rem;
  margin: 0 0 .9rem; padding: .5rem;
  background: #fff; border: 1px solid #e2e8f0; border-radius: 12px;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.abe-fare-track {
  display: grid; grid-auto-flow: column; grid-auto-columns: 1fr;
  gap: .4rem; flex: 1 1 auto; overflow: hidden;
}
.abe-fare-nav {
  flex: 0 0 auto; width: 32px;
  border: 1px solid #e2e8f0; background: #f8fafc; border-radius: 8px;
  color: #475569; font-size: 1.2rem; line-height: 1; cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
}
.abe-fare-nav:hover { background: #eef2ff; border-color: #c7d2fe; color: #4338ca; }
.abe-fare-day {
  display: flex; flex-direction: column; align-items: center; gap: .15rem;
  padding: .5rem .25rem; min-width: 0;
  border: 1px solid #e2e8f0; border-radius: 9px; background: #fff; cursor: pointer;
  transition: border-color .15s, background .15s, box-shadow .15s;
}
.abe-fare-day:hover { border-color: #c7d2fe; background: #f5f7ff; }
.abe-fare-dow   { font-size: .66rem; font-weight: 600; color: #94a3b8; text-transform: uppercase; letter-spacing: .04em; }
.abe-fare-date  { font-size: .8rem; font-weight: 700; color: #0f172a; }
.abe-fare-price { font-size: .82rem; font-weight: 700; color: #ea580c; margin-top: .1rem; white-space: nowrap; }
.abe-fare-na    { color: #cbd5e1; font-weight: 600; }
.abe-fare-day.is-active {
  border-color: #ea580c; background: #fff7ed; box-shadow: 0 0 0 1px #ea580c inset;
}
.abe-fare-day.is-active .abe-fare-date { color: #c2410c; }
.abe-fare-day.is-low .abe-fare-price { color: #16a34a; }
.abe-fare-day.is-low::after {
  content: 'Lowest'; font-size: .55rem; font-weight: 700; color: #16a34a;
  text-transform: uppercase; letter-spacing: .03em; margin-top: .05rem;
}
@media (max-width: 640px) {
  .abe-fare-dow   { font-size: .6rem; }
  .abe-fare-date  { font-size: .72rem; }
  .abe-fare-price { font-size: .74rem; }
}

/* Leg (depart / arrive) */
.abe-fc-leg { text-align: center; }
.abe-fc-time { font-size: 1.35rem; font-weight: 700; color: #0f172a; line-height: 1; }
.abe-fc-date { font-size: .72rem; color: #94a3b8; font-weight: 500; margin-top: .2rem; letter-spacing: .04em; }
.abe-fc-code { font-size: .95rem; font-weight: 700; color: #0f172a; margin-top: .45rem; letter-spacing: .04em; }

/* Path */
.abe-fc-path {
  display: flex; flex-direction: column; align-items: center; gap: .3rem;
}
.abe-fc-dur { font-size: .78rem; color: #64748b; font-weight: 500; }
.abe-fc-line {
  position: relative; width: 100%; height: 14px;
  display: flex; align-items: center; justify-content: space-between;
}
.abe-fc-line::before {
  content: ''; position: absolute; left: 0; right: 0; top: 50%;
  height: 1px; background: #cbd5e1;
}
.abe-fc-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: #fff; border: 1.5px solid #10b981;
  position: relative; z-index: 1;
}
.abe-fc-plane {
  position: relative; z-index: 1; color: #10b981; background: #fff;
  padding: 0 .25rem; display: flex; align-items: center;
}
.abe-fc-stops {
  font-size: .78rem; color: #64748b; font-weight: 500;
}

/* Price block (dashed left separator) */
.abe-fc-price-block {
  border-left: 1.5px dashed #cbd5e1;
  padding-left: 1rem;
  text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: .5rem;
}
.abe-fc-price {
  font-size: 1.2rem; font-weight: 700; color: #059669;
  white-space: nowrap;
}
.abe-fc-book {
  background: #059669; color: #fff;
  border: none; border-radius: .25rem;
  padding: .6rem 1.2rem;
  font-weight: 700; font-size: .85rem; letter-spacing: .04em;
  cursor: pointer; transition: background .15s;
  min-width: 140px;
}
.abe-fc-book:hover { background: #047857; }

/* Multi-city path breadcrumb - shows intermediate stopover codes */
.abe-fc-via {
  padding: .5rem 1rem;
  background: #f0f9ff;
  border-top: 1px solid #e0f2fe;
  color: #0369a1; font-size: .78rem; font-weight: 500;
  letter-spacing: .02em;
}
.abe-fc-via strong { color: #075985; font-weight: 700; }

/* Bottom action row */
.abe-fc-actions {
  display: flex; align-items: center; flex-wrap: wrap; gap: .75rem;
  padding: .6rem 1rem;
  background: #fafafa;
  border-top: 1px solid #f1f5f9;
  font-size: .8rem;
}
.abe-fc-action {
  display: inline-flex; align-items: center; gap: .4rem;
  color: #475569; text-decoration: none; font-weight: 500;
  cursor: pointer; transition: opacity .15s;
}
.abe-fc-action:hover { opacity: .75; }
.abe-fc-action--info   { color: #059669; }
.abe-fc-action--wa     { color: #25d366; }
.abe-fc-action--email  { color: var(--color-primary-dk); }
.abe-fc-sep { color: #cbd5e1; user-select: none; }
.abe-fc-seats {
  margin-left: auto;
  color: #dc2626; font-weight: 600; font-size: .8rem;
}

@media (max-width: 900px) {
  .abe-fc-main {
    grid-template-columns: 1fr;
    gap: .85rem;
  }
  .abe-fc-price-block { border-left: none; border-top: 1.5px dashed #cbd5e1; padding-left: 0; padding-top: .85rem; }
  .abe-fc-actions { gap: .5rem; font-size: .75rem; }
  .abe-fc-sep { display: none; }
}

/* ══════════════════════════════════════════════════════════════
   FLIGHT DETAILS MODAL (.abe-fdm-*)
   ══════════════════════════════════════════════════════════════ */
.abe-fdm-overlay {
  position: fixed; inset: 0;
  background: rgba(15, 23, 42, .55);
  display: flex; align-items: flex-start; justify-content: center;
  padding: 3rem 1rem;
  z-index: 10000;
  overflow-y: auto;
  animation: abeFdmFade .15s ease-out;
}
@keyframes abeFdmFade {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.abe-fdm-card {
  width: 100%; max-width: 920px;
  background: #fff;
  border-radius: .5rem;
  box-shadow: 0 20px 50px rgba(0, 0, 0, .3);
  overflow: hidden;
  animation: abeFdmSlide .2s ease-out;
}
@keyframes abeFdmSlide {
  from { transform: translateY(-12px); opacity: 0; }
  to   { transform: translateY(0);     opacity: 1; }
}

.abe-fdm-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: .9rem 1.25rem;
  background: #059669;
  color: #fff;
}
.abe-fdm-title {
  margin: 0;
  font-size: 1.05rem; font-weight: 700;
  color: #fff;
}
.abe-fdm-close {
  width: 32px; height: 32px;
  display: inline-flex; align-items: center; justify-content: center;
  background: rgba(255, 255, 255, .15);
  color: #fff;
  border: none; border-radius: 999px;
  cursor: pointer;
  transition: background .15s;
}
.abe-fdm-close:hover { background: rgba(255, 255, 255, .3); }

.abe-fdm-tabs {
  display: grid; grid-template-columns: 1fr 1fr;
  border-bottom: 1px solid #e2e8f0;
}
.abe-fdm-tab {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  padding: .85rem 1rem;
  background: #fff; color: #334155;
  border: none; border-right: 1px solid #e2e8f0;
  font-size: .9rem; font-weight: 600;
  cursor: pointer; transition: background .15s, color .15s;
}
.abe-fdm-tab:last-child { border-right: none; }
.abe-fdm-tab:hover { background: #f8fafc; }
.abe-fdm-tab.is-active {
  background: #059669;
  color: #fff;
}

.abe-fdm-body {
  padding: 1.25rem 1.5rem 1.75rem;
}

.abe-fdm-section { margin-bottom: 1.25rem; }
.abe-fdm-section:last-child { margin-bottom: 0; }
.abe-fdm-section-title {
  font-size: .95rem; font-weight: 700; color: #0f172a;
  margin-bottom: .35rem;
}
.abe-fdm-section-bar {
  height: 2px;
  background: linear-gradient(to right, #059669 0 40%, #e2e8f0 40% 100%);
  margin-bottom: .85rem;
}

.abe-fdm-row {
  display: grid; grid-template-columns: 1.3fr 1fr 1fr;
  gap: 1rem;
  padding: .55rem 0;
  font-size: .88rem; color: #334155;
}
.abe-fdm-row + .abe-fdm-row { border-top: 1px dashed #e2e8f0; }
.abe-fdm-row-label { display: inline-flex; align-items: center; gap: .4rem; font-weight: 600; }
.abe-fdm-row-mid { display: flex; flex-direction: column; gap: .15rem; }
.abe-fdm-row-right { display: flex; flex-direction: column; gap: .15rem; text-align: left; }
.abe-fdm-check { color: #059669; font-weight: 700; }
.abe-fdm-col-label {
  font-size: .7rem; letter-spacing: .06em;
  color: #64748b; font-weight: 600; text-transform: uppercase;
}
.abe-fdm-bag-val { font-weight: 600; color: #0f172a; }

.abe-fdm-itin-time {
  font-size: .88rem; color: #475569; font-weight: 600;
  margin-bottom: .85rem;
}
.abe-fdm-itin-grid {
  display: grid; grid-template-columns: 1fr 1.1fr 1fr;
  gap: 1rem; align-items: center;
  padding: 1rem;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: .375rem;
}
.abe-fdm-itin-side {
  display: flex; flex-direction: column; align-items: flex-start; gap: .25rem;
  text-align: left;
}
.abe-fdm-itin-side--right { align-items: flex-end; text-align: right; }
.abe-fdm-itin-logo {
  width: 42px; height: 42px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 999px;
  color: #fff; font-weight: 700; font-size: .8rem;
  margin-bottom: .25rem;
}
.abe-fdm-itin-city {
  font-size: 1rem; font-weight: 700; color: #0f172a; letter-spacing: .02em;
}
.abe-fdm-itin-sub { font-size: .78rem; color: #64748b; }
.abe-fdm-itin-flt { font-size: .78rem; color: #475569; font-weight: 600; }
.abe-fdm-itin-mid {
  display: flex; flex-direction: column; align-items: center; gap: .35rem;
  color: #059669;
}
.abe-fdm-itin-mid::before {
  content: "";
  width: 100%;
  border-top: 1.5px dashed #cbd5e1;
}
.abe-fdm-itin-dur { font-size: .8rem; font-weight: 600; color: #475569; }

@media (max-width: 720px) {
  .abe-fdm-overlay { padding: 1rem; }
  .abe-fdm-tabs { grid-template-columns: 1fr; }
  .abe-fdm-tab { border-right: none; border-bottom: 1px solid #e2e8f0; }
  .abe-fdm-row { grid-template-columns: 1fr; gap: .35rem; }
  .abe-fdm-itin-grid { grid-template-columns: 1fr; }
  .abe-fdm-itin-side--right { align-items: flex-start; text-align: left; }
}

/* ══════════════════════════════════════════════════════════════
   FARE OPTIONS MODAL (.abe-fom-*)
   ══════════════════════════════════════════════════════════════ */
.abe-fom-overlay {
  position: fixed; inset: 0;
  background: rgba(15, 23, 42, .55);
  display: flex; align-items: flex-start; justify-content: center;
  padding: 2rem 1rem;
  z-index: 10000;
  overflow-y: auto;
  animation: abeFomFade .15s ease-out;
}
@keyframes abeFomFade { from { opacity: 0; } to { opacity: 1; } }

.abe-fom-card {
  position: relative;
  width: 100%; max-width: 1000px;
  background: linear-gradient(180deg, #f3ecff 0%, #fff 28%);
  border-radius: .5rem;
  box-shadow: 0 20px 50px rgba(0, 0, 0, .3);
  overflow: hidden;
  animation: abeFomSlide .2s ease-out;
}
@keyframes abeFomSlide {
  from { transform: translateY(-12px); opacity: 0; }
  to   { transform: translateY(0);     opacity: 1; }
}

.abe-fom-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 1.4rem 1.75rem .75rem;
}
.abe-fom-title {
  margin: 0;
  font-size: 1.2rem; font-weight: 700; color: #0f172a;
  letter-spacing: .02em;
}
.abe-fom-close {
  width: 36px; height: 36px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: none; border-radius: 999px;
  cursor: pointer; transition: background .15s;
}
.abe-fom-close:hover { background: rgba(15, 23, 42, .08); }

/* Route strip */
.abe-fom-route-block {
  padding: .5rem 1.75rem 1.25rem;
}
.abe-fom-route {
  font-size: 1.1rem; font-weight: 700; color: #0f172a;
}
.abe-fom-trip {
  margin-top: .45rem;
  display: inline-flex; align-items: center; gap: .6rem;
  font-size: .88rem; color: #475569;
}
.abe-fom-dir {
  background: #0f172a; color: #fff;
  padding: .2rem .55rem; border-radius: .25rem;
  font-size: .78rem; font-weight: 600; letter-spacing: .03em;
}

/* Card carousel */
.abe-fom-carousel {
  position: relative;
  padding: 0 1.75rem;
}
.abe-fom-track {
  display: flex; gap: 1rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding-bottom: 1rem;
  scrollbar-width: thin;
}
.abe-fom-track::-webkit-scrollbar { height: 6px; }
.abe-fom-track::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; }

.abe-fom-card-opt {
  /* Show 3 cards per visible viewport. 2 gaps × 1rem = 2rem of inter-card
     space. The synthesised set has 4 cards, so the carousel always
     overflows by one - prev/next chevrons reveal the 4th (matches the
     adivaha.com slider pattern). Drops to horizontal scroll on narrow
     widths via the min-width. */
  flex: 0 0 calc((100% - 2rem) / 3);
  min-width: 230px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: .5rem;
  padding: 1rem 1rem 1.1rem;
  cursor: pointer;
  scroll-snap-align: start;
  transition: border-color .15s, box-shadow .15s;
  display: flex; flex-direction: column; gap: .5rem;
}
.abe-fom-card-opt:hover { border-color: #94a3b8; }
.abe-fom-card-opt.is-selected {
  border-color: var(--color-primary-dk);
  box-shadow: 0 0 0 1px var(--color-primary-dk) inset;
}

.abe-fom-opt-hdr {
  display: flex; align-items: center; justify-content: space-between;
}
.abe-fom-opt-code {
  font-size: .95rem; font-weight: 700; color: #d97706; letter-spacing: .04em;
}
.abe-fom-opt-radio {
  position: relative;
  width: 20px; height: 20px;
  display: inline-flex;
}
.abe-fom-opt-radio input {
  position: absolute; inset: 0; opacity: 0; margin: 0; pointer-events: none;
}
.abe-fom-opt-dot {
  width: 20px; height: 20px; border-radius: 50%;
  border: 2px solid #cbd5e1; background: #fff;
  position: relative; transition: border-color .15s;
}
.abe-fom-card-opt.is-selected .abe-fom-opt-dot {
  border-color: var(--color-primary-dk);
}
.abe-fom-card-opt.is-selected .abe-fom-opt-dot::after {
  content: ''; position: absolute;
  top: 3px; left: 3px; width: 10px; height: 10px;
  border-radius: 50%; background: var(--color-primary-dk);
}

.abe-fom-opt-price {
  font-size: 1.2rem; font-weight: 700; color: #0f172a;
}

.abe-fom-opt-box {
  background: linear-gradient(180deg, #f3ecff 0%, #faf5ff 100%);
  border-radius: .375rem;
  padding: .65rem .75rem .75rem;
  display: flex; flex-direction: column; gap: .3rem;
}
.abe-fom-opt-box-title {
  font-size: .82rem; font-weight: 700; color: #0f172a;
  margin-bottom: .1rem;
}
.abe-fom-opt-bag {
  display: inline-flex; align-items: center; gap: .4rem;
  font-size: .82rem; color: #059669; font-weight: 500;
}
.abe-fom-opt-tags {
  margin-top: .2rem;
  font-size: .78rem; font-weight: 600; color: #059669; letter-spacing: .04em;
}

/* Carousel arrow nav - shown only when the track has >3 fares (set via
   `.has-overflow` on the carousel). Positioned outside the track so they
   don't overlap the outermost cards. `.is-disabled` greys them out when
   the scroll is pinned at that edge. */
.abe-fom-nav {
  position: absolute;
  top: 50%; transform: translateY(calc(-50% - .5rem));
  width: 36px; height: 36px;
  display: inline-flex; align-items: center; justify-content: center;
  background: #fff; border: 1px solid #d1fae5; border-radius: 999px;
  color: #059669;
  cursor: pointer; box-shadow: 0 4px 10px rgba(15, 23, 42, .08);
  transition: background .15s, border-color .15s, opacity .15s, color .15s;
  z-index: 2;
}
.abe-fom-nav:hover { background: #f0fdf4; border-color: #6ee7b7; }
.abe-fom-nav:focus-visible { outline: 2px solid #10b981; outline-offset: 2px; }
.abe-fom-nav.is-disabled {
  opacity: .35; cursor: default; color: #94a3b8; border-color: #e2e8f0;
  box-shadow: none; pointer-events: none;
}
.abe-fom-nav--next { right: -4px; }
.abe-fom-nav--prev { left: -4px; }
.abe-fom-carousel.has-overflow { padding: 0 2.5rem; }

/* Footer */
.abe-fom-footer {
  display: flex; align-items: center; gap: 1rem;
  padding: 1.1rem 1.75rem 1.4rem;
  border-top: 1px solid #e2e8f0;
  background: #fff;
}
.abe-fom-total-label {
  font-size: 1rem; font-weight: 700; color: #0f172a;
  margin-right: auto;
}
.abe-fom-total-amt {
  font-size: 1.35rem; font-weight: 700; color: #059669;
}
.abe-fom-continue {
  padding: .75rem 1.75rem;
  background: #f97316; color: #fff;
  border: none; border-radius: .25rem;
  font-size: .95rem; font-weight: 700; letter-spacing: .04em;
  cursor: pointer; transition: background .15s;
}
.abe-fom-continue:hover { background: #ea580c; }

@media (max-width: 780px) {
  .abe-fom-card-opt { flex-basis: 80%; min-width: 220px; }
  .abe-fom-header   { padding: 1.1rem 1.1rem .5rem; }
  .abe-fom-route-block { padding: .25rem 1.1rem 1rem; }
  .abe-fom-carousel { padding: 0 1.1rem; }
  .abe-fom-footer   { padding: 1rem 1.1rem 1.25rem; flex-wrap: wrap; gap: .6rem; }
  .abe-fom-total-label { flex: 1 1 auto; }
  .abe-fom-continue { flex: 1 1 100%; }
}

/* ══════════════════════════════════════════════════════════════
   CONTACT / SHARE MODAL (.abe-cm-*) - reusable: WhatsApp + Email
   ══════════════════════════════════════════════════════════════ */
.abe-cm-overlay {
  position: fixed; inset: 0;
  background: rgba(15, 23, 42, .55);
  display: flex; align-items: flex-start; justify-content: center;
  padding: 2.5rem 1rem;
  z-index: 10000;
  overflow-y: auto;
  animation: abeCmFade .15s ease-out;
}
@keyframes abeCmFade { from { opacity: 0; } to { opacity: 1; } }

.abe-cm-card {
  position: relative;
  width: 100%; max-width: 900px;
  background: #fff;
  border-radius: .5rem;
  box-shadow: 0 20px 50px rgba(0, 0, 0, .3);
  overflow: hidden;
  display: grid; grid-template-columns: 1fr 1.15fr;
  animation: abeCmSlide .2s ease-out;
}
@keyframes abeCmSlide {
  from { transform: translateY(-12px); opacity: 0; }
  to   { transform: translateY(0);     opacity: 1; }
}

.abe-cm-close {
  position: absolute; top: .65rem; right: .65rem;
  width: 30px; height: 30px;
  display: inline-flex; align-items: center; justify-content: center;
  background: #059669; color: #fff;
  border: none; border-radius: 999px;
  cursor: pointer; z-index: 2;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .25);
  transition: background .15s;
}
.abe-cm-close:hover { background: #047857; }

/* LEFT - marketing panel */
.abe-cm-left {
  position: relative;
  background: #2f6b2a;
  background-image: linear-gradient(rgba(27, 80, 24, .85), rgba(27, 80, 24, .85));
  color: #fff;
  padding: 1.5rem 1.5rem 1.75rem;
  display: flex; flex-direction: column; gap: 1rem;
}
.abe-cm-brand {
  display: inline-flex; align-items: center; gap: .5rem;
  background: var(--color-primary-dk);
  color: #fff; font-weight: 700; font-size: 1.15rem;
  padding: .5rem .9rem; border-radius: .25rem;
  align-self: flex-start;
}
.abe-cm-steps {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: .5rem;
}
.abe-cm-steps li {
  background: var(--color-primary-dk);
  color: #fff; font-weight: 600; font-size: .88rem;
  padding: .5rem .75rem; border-radius: .25rem;
  counter-increment: abe-cm-step;
}
.abe-cm-steps li::before {
  content: counter(abe-cm-step) " ";
  font-weight: 700;
}
.abe-cm-steps { counter-reset: abe-cm-step; }
.abe-cm-perks {
  display: grid; grid-template-columns: 1fr;
  gap: .9rem;
  border-top: 1px dashed rgba(255, 255, 255, .35);
  padding-top: 1rem;
}
.abe-cm-perk {
  display: flex; align-items: center; gap: .65rem;
  font-weight: 600; font-size: .9rem;
}
.abe-cm-call {
  margin-top: auto;
  display: inline-flex; align-items: center; gap: .5rem;
  font-weight: 600; font-size: .88rem;
  padding-top: .75rem;
  border-top: 1px dashed rgba(255, 255, 255, .35);
}
.abe-cm-call svg {
  padding: .4rem; background: rgba(255, 255, 255, .15); border-radius: 999px;
  box-sizing: content-box;
}

/* RIGHT - form */
.abe-cm-right {
  padding: 1.75rem 1.75rem 1.5rem;
  display: flex; flex-direction: column;
}
.abe-cm-head {
  display: inline-flex; align-items: center; gap: .5rem;
  margin-bottom: .25rem;
}
.abe-cm-head-ic {
  width: 34px; height: 34px;
  display: inline-flex; align-items: center; justify-content: center;
  background: #059669; border-radius: .25rem;
}
.abe-cm-title {
  margin: 0;
  font-size: 1.35rem; font-weight: 700; color: #0f172a;
}
.abe-cm-sub {
  margin: 0 0 1rem;
  color: #64748b; font-size: .88rem;
}

.abe-cm-form {
  display: flex; flex-direction: column; gap: .35rem;
}
.abe-cm-label {
  font-size: .9rem; font-weight: 600; color: #0f172a;
  margin-top: .5rem;
}
.abe-cm-input,
.abe-cm-textarea,
.abe-cm-phone input {
  width: 100%;
  padding: .6rem .75rem;
  background: #eef2ff;
  border: 1px solid transparent;
  border-radius: .3rem;
  font-size: .9rem; color: #0f172a;
  font-family: inherit;
  transition: border-color .15s, background .15s;
  box-sizing: border-box;
}
.abe-cm-input:focus,
.abe-cm-textarea:focus,
.abe-cm-phone input:focus {
  outline: none;
  border-color: #059669;
  background: #fff;
}
.abe-cm-textarea { resize: vertical; line-height: 1.5; }

.abe-cm-phone {
  display: grid; grid-template-columns: 72px 1fr;
  gap: .5rem;
}
.abe-cm-ccode {
  display: inline-flex; align-items: center; justify-content: center;
  background: #eef2ff;
  border-radius: .3rem;
  font-size: .9rem; font-weight: 600; color: #334155;
}

.abe-cm-submit {
  margin-top: 1rem;
  padding: .85rem 1rem;
  background: #0f172a; color: #fff;
  border: none; border-radius: .25rem;
  font-size: .95rem; font-weight: 700; letter-spacing: .04em;
  cursor: pointer; transition: background .15s;
}
.abe-cm-submit:hover:not(:disabled) { background: #1e293b; }
.abe-cm-submit:disabled { opacity: .7; cursor: wait; }

@media (max-width: 780px) {
  .abe-cm-card { grid-template-columns: 1fr; }
  .abe-cm-left { padding: 1.25rem; }
  .abe-cm-right { padding: 1.25rem; }
  .abe-cm-perks { grid-template-columns: 1fr 1fr 1fr; gap: .5rem; text-align: center; }
  .abe-cm-perk { flex-direction: column; gap: .25rem; font-size: .78rem; }
}

/* ══════════════════════════════════════════════════════════════
   PAGINATION
   ══════════════════════════════════════════════════════════════ */
.abe-pagination {
  display: flex; align-items: center; justify-content: center;
  gap: .25rem; margin-top: 1.25rem; padding-top: 1rem;
  border-top: 1px solid #f1f5f9;
}
.abe-page-btn {
  padding: .4rem .7rem; font-size: .82rem; font-weight: 500;
  color: #475569; background: #fff; border: 1px solid #e2e8f0;
  border-radius: .4rem; cursor: pointer; transition: all .15s;
  display: inline-flex; align-items: center; gap: .3rem;
}
.abe-page-btn:hover:not(.disabled):not(.active) { background: #f1f5f9; border-color: #cbd5e1; }
.abe-page-btn.active { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.abe-page-btn.disabled { color: #cbd5e1; cursor: not-allowed; }
.abe-page-ellipsis { padding: .4rem .3rem; font-size: .82rem; color: #94a3b8; }

/* ══════════════════════════════════════════════════════════════
   CART BADGE & DRAWER
   ══════════════════════════════════════════════════════════════ */
.abe-cart-badge-wrap {
  position: absolute; top: 0; right: 0; z-index: 50;
}
.abe-cart-badge {
  position: relative; width: 42px; height: 42px;
  background: #fff; border: 1.5px solid #e2e8f0; border-radius: .5rem;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  color: #475569; transition: all .15s;
}
.abe-cart-badge:hover { border-color: var(--color-primary); color: var(--color-primary); }
.abe-cart-count {
  position: absolute; top: -6px; right: -6px;
  background: #ef4444; color: #fff; font-size: .65rem; font-weight: 700;
  min-width: 18px; height: 18px; border-radius: 9px;
  display: flex; align-items: center; justify-content: center;
  padding: 0 4px; line-height: 1;
}

/* Cart overlay */
.abe-cart-overlay {
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,.4); z-index: 9998;
  opacity: 0; pointer-events: none; transition: opacity .25s;
}
.abe-cart-overlay.open { opacity: 1; pointer-events: all; }

/* Cart drawer */
.abe-cart-drawer {
  position: fixed; top: 0; right: 0; bottom: 0; width: 380px;
  background: #fff; z-index: 9999; box-shadow: -8px 0 30px rgba(0,0,0,.15);
  display: flex; flex-direction: column;
  transform: translateX(100%); transition: transform .3s ease;
}
.abe-cart-drawer.open { transform: translateX(0); }

.abe-cart-drawer-header {
  display: flex; justify-content: space-between; align-items: center;
  padding: 1rem 1.25rem; border-bottom: 1px solid #e2e8f0;
}
.abe-cart-drawer-header h3 { font-size: 1rem; font-weight: 700; }
.abe-cart-close {
  width: 32px; height: 32px; border: none; background: #f1f5f9;
  border-radius: .4rem; font-size: 1.2rem; cursor: pointer; color: #64748b;
  display: flex; align-items: center; justify-content: center;
}
.abe-cart-close:hover { background: #e2e8f0; color: #1e293b; }

.abe-cart-drawer-body {
  flex: 1; overflow-y: auto; padding: 1rem 1.25rem;
}
.abe-cart-empty {
  text-align: center; padding: 3rem 1rem; color: #94a3b8;
}
.abe-cart-empty svg { margin: 0 auto 1rem; display: block; }

/* ── Cart drawer - e-commerce style (blue accent) ───────────────── */

/* Top "X/X ITEMS SELECTED .... REMOVE" bar */
.abe-cart-select-bar {
  display: flex; align-items: center; justify-content: space-between;
  padding: .65rem .25rem; margin-bottom: .65rem;
  border-bottom: 1px solid #f1f5f9;
}
.abe-cart-selall {
  display: inline-flex; align-items: center; gap: .55rem;
  cursor: pointer; user-select: none;
}
.abe-cart-selall input,
.abe-cart-item-cb input {
  position: absolute; opacity: 0; pointer-events: none;
}
.abe-cart-cb-box {
  width: 18px; height: 18px; border-radius: 4px;
  border: 1.5px solid #cbd5e1; background: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0; transition: background .12s, border-color .12s;
}
.abe-cart-cb-box::after {
  content: ''; width: 10px; height: 10px;
  background: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") no-repeat center / contain;
  opacity: 0; transition: opacity .12s;
}
.abe-cart-selall input:checked ~ .abe-cart-cb-box,
.abe-cart-item-cb input:checked ~ .abe-cart-cb-box {
  background: var(--color-primary-dk); border-color: var(--color-primary-dk);
}
.abe-cart-selall input:checked ~ .abe-cart-cb-box::after,
.abe-cart-item-cb input:checked ~ .abe-cart-cb-box::after { opacity: 1; }
.abe-cart-selcount {
  font-size: .78rem; font-weight: 700; color: #0f172a;
  letter-spacing: .04em; text-transform: uppercase;
}
.abe-cart-remove-sel {
  background: none; border: none; cursor: pointer;
  font-size: .78rem; font-weight: 700; color: #475569;
  letter-spacing: .04em; text-transform: uppercase; padding: .2rem .35rem;
  font-family: inherit;
}
.abe-cart-remove-sel:hover:not([disabled]) { color: #ef4444; }
.abe-cart-remove-sel[disabled] { opacity: .45; cursor: not-allowed; }

/* Cart item card */
.abe-cart-item {
  position: relative;
  padding: .85rem; margin-bottom: .75rem;
  background: #fff; border: 1px solid #e2e8f0; border-radius: .55rem;
  transition: border-color .12s, box-shadow .12s;
}
.abe-cart-item:hover { border-color: #cbd5e1; }
.abe-cart-item.is-selected { border-color: #93c5fd; }

.abe-cart-item-cb {
  position: absolute; top: .65rem; left: .65rem;
  display: inline-flex; cursor: pointer; z-index: 2;
}
.abe-cart-item-remove {
  position: absolute; top: .55rem; right: .55rem;
  width: 26px; height: 26px; border: none; background: transparent;
  color: #475569; cursor: pointer; border-radius: 4px;
  display: flex; align-items: center; justify-content: center;
}
.abe-cart-item-remove:hover { background: #f1f5f9; color: #ef4444; }

.abe-cart-item-body {
  display: grid; grid-template-columns: 72px 1fr;
  gap: .85rem; padding: 1.6rem 1.75rem 0 1.6rem; /* room for top-left checkbox + top-right close */
}

.abe-cart-item-img {
  width: 72px; height: 90px; border-radius: 6px;
  background: #f1f5f9; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.abe-cart-item-img img { width: 100%; height: 100%; object-fit: cover; }

.abe-cart-item-info { min-width: 0; display: flex; flex-direction: column; gap: .25rem; }
.abe-cart-item-brand {
  font-size: .9rem; font-weight: 700; color: #0f172a;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.abe-cart-item-desc {
  font-size: .8rem; color: #334155; line-height: 1.35;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}
.abe-cart-item-soldby {
  font-size: .72rem; color: #64748b;
}
.abe-cart-item-pricing {
  display: flex; align-items: center; gap: .5rem; flex-wrap: wrap;
  margin-top: .15rem;
}
.abe-cart-price-current {
  font-size: .95rem; font-weight: 700; color: #0f172a;
}
.abe-cart-price-orig {
  font-size: .8rem; color: #94a3b8; text-decoration: line-through;
}
.abe-cart-price-off {
  font-size: .78rem; font-weight: 700; color: #ef4444;
}
.abe-cart-item-tag {
  display: inline-block; align-self: flex-start;
  font-size: .72rem; font-weight: 700; color: #0f172a;
  margin-top: .15rem;
}
.abe-cart-item-deliv {
  display: inline-flex; align-items: center; gap: .35rem;
  font-size: .78rem; color: #334155; margin-top: .25rem;
}
.abe-cart-item-deliv strong { font-weight: 700; color: #0f172a; }

.abe-cart-total {
  display: flex; justify-content: space-between; padding: .75rem;
  font-size: 1rem; font-weight: 700; border-top: 2px solid #e2e8f0;
  margin-top: .5rem;
}

/* Footer: side-by-side primary + outlined secondary buttons (Myntra-style) */
.abe-cart-drawer-footer {
  padding: 1rem 1.25rem; border-top: 1px solid #e2e8f0;
  display: flex; flex-direction: row; gap: .65rem;
}
.abe-cart-book-all,
.abe-cart-clear-all {
  flex: 1; display: inline-flex; align-items: center; justify-content: center;
  gap: .55rem;
  padding: .85rem 1rem;
  font-size: .85rem; font-weight: 700; letter-spacing: .04em;
  font-family: inherit; cursor: pointer;
  border-radius: 6px;
  transition: background .15s, color .15s, border-color .15s, box-shadow .15s;
}
.abe-cart-book-all {
  color: #fff; background: var(--color-primary-dk); border: 1.5px solid var(--color-primary-dk);
  box-shadow: 0 2px 6px rgba(37,99,235,.25);
}
.abe-cart-book-all:hover {
  background: var(--color-primary-dk); border-color: var(--color-primary-dk);
  box-shadow: 0 4px 12px rgba(37,99,235,.35);
}
.abe-cart-clear-all {
  color: #0f172a; background: #fff; border: 1.5px solid #cbd5e1;
}
.abe-cart-clear-all:hover {
  border-color: #94a3b8; background: #f8fafc;
}
.abe-cart-book-all svg, .abe-cart-clear-all svg { flex-shrink: 0; }

/* ── Beautified server-cart (flight/hotel) items ─────────────────── */
/* Thin, tidy scrollbar for the (already scrollable) item list. */
.abe-cart-drawer-body { scrollbar-width: thin; scrollbar-color: #cbd5e1 transparent; }
.abe-cart-drawer-body::-webkit-scrollbar { width: 7px; }
.abe-cart-drawer-body::-webkit-scrollbar-track { background: transparent; }
.abe-cart-drawer-body::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }
.abe-cart-drawer-body::-webkit-scrollbar-thumb:hover { background: #94a3b8; }

.abe-scart-card {
  position: relative;
  background: #fff; border: 1px solid #e8edf3; border-radius: 14px;
  padding: 14px 42px 14px 14px; margin-bottom: 12px;
  box-shadow: 0 1px 2px rgba(16,24,40,.05);
  transition: box-shadow .18s ease, border-color .18s ease, transform .18s ease;
}
.abe-scart-card:hover {
  box-shadow: 0 8px 22px rgba(16,24,40,.10);
  border-color: #dbe4ee; transform: translateY(-1px);
}
.abe-scart-remove {
  position: absolute; top: 10px; right: 10px;
  width: 26px; height: 26px; border-radius: 50%;
  border: none; background: #f1f5f9; color: #94a3b8; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background .16s, color .16s, transform .18s;
}
.abe-scart-remove:hover { background: #fee2e2; color: #ef4444; transform: rotate(90deg); }

.abe-scart-card-top { display: flex; align-items: center; gap: 12px; }
.abe-scart-icon {
  width: 44px; height: 44px; border-radius: 12px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #eef2ff, #e0e7ff);
  color: var(--color-primary-dk, #2563eb);
}
.abe-scart-icon svg { width: 20px; height: 20px; }
.abe-scart-headings { min-width: 0; flex: 1; }
.abe-scart-title {
  font-size: .93rem; font-weight: 700; color: #0f172a;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.abe-scart-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.abe-scart-chip {
  display: inline-flex; align-items: center;
  font-size: .66rem; font-weight: 700; letter-spacing: .03em; text-transform: uppercase;
  padding: 3px 9px; border-radius: 999px; line-height: 1.4;
}
.abe-scart-chip--sup  { background: #eff6ff; color: #1d4ed8; }
.abe-scart-chip--prod { background: #f0fdf4; color: #15803d; }
.abe-scart-chip--ok   { background: #ecfdf5; color: #047857; }
.abe-scart-chip--no   { background: #fef2f2; color: #b91c1c; }
.abe-scart-chips--tight { margin-top: 10px; margin-bottom: -2px; }
.abe-scart-thumb {
  width: 46px; height: 46px; border-radius: 11px; flex-shrink: 0; overflow: hidden;
  background: #f1f5f9; display: flex; align-items: center; justify-content: center;
}
.abe-scart-thumb img { width: 100%; height: 100%; object-fit: cover; }
.abe-scart-sub {
  font-size: .76rem; color: #64748b; margin-top: 3px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.abe-scart-stars { color: #f59e0b; font-size: .72rem; letter-spacing: 1px; }
.abe-scart-line { display: flex; align-items: flex-start; gap: 7px; font-size: .78rem; color: #475569; margin-top: 9px; line-height: 1.4; }
.abe-scart-line-i { flex-shrink: 0; font-size: .8rem; opacity: .9; }
.abe-scart-card--info .abe-scart-chips { margin-top: 11px; }
.abe-scart-price { font-size: 1.02rem; color: #334155; font-weight: 500; }
.abe-scart-price strong { font-weight: 700; color: #0f172a; }
.abe-scart-price-line { margin-top: 11px; }

/* Rich flight card (mobile-app style): airline head, route with times, footer. */
.abe-scart-fl-head { display: flex; align-items: center; gap: 10px; padding-right: 26px; }
.abe-scart-fl-logo {
  width: 38px; height: 38px; border-radius: 10px; flex-shrink: 0; overflow: hidden;
  display: flex; align-items: center; justify-content: center; background: #f1f5f9;
}
.abe-scart-fl-logo img { width: 100%; height: 100%; object-fit: contain; }
.abe-scart-fl-logo > * { max-width: 100%; max-height: 100%; }
.abe-scart-fl-air { flex: 1; min-width: 0; display: flex; flex-direction: column; line-height: 1.25; }
.abe-scart-fl-name {
  font-size: .88rem; font-weight: 700; color: #0f172a;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.abe-scart-fl-no { font-size: .72rem; color: #94a3b8; font-weight: 600; }
.abe-scart-fl-route {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px; margin-top: 13px;
}
.abe-scart-fl-pt { text-align: left; }
.abe-scart-fl-pt--to { text-align: right; }
.abe-scart-fl-pt b { display: block; font-size: 1.08rem; font-weight: 700; color: #0f172a; letter-spacing: -.02em; }
.abe-scart-fl-pt span { font-size: .74rem; font-weight: 700; color: #64748b; letter-spacing: .02em; }
.abe-scart-fl-mid { flex: 1; text-align: center; color: #94a3b8; padding: 0 4px; }
.abe-scart-fl-mid small { font-size: .64rem; display: block; line-height: 1.7; white-space: nowrap; }
.abe-scart-fl-line { display: flex; align-items: center; gap: 4px; }
.abe-scart-fl-line i { flex: 1; height: 2px; background: #e2e8f0; border-radius: 2px; }
.abe-scart-fl-line svg { color: var(--color-primary-dk, #2563eb); flex-shrink: 0; }
.abe-scart-fl-foot {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: 13px; padding-top: 11px; border-top: 1px dashed #e8edf3;
}
.abe-scart-fl-date { font-size: .77rem; font-weight: 700; color: #64748b; }

/* ── Full-page cart checkout (Review & Book) ─────────────────────── */
.abe-cart-review { max-width: 1120px; margin: 0 auto; padding: 1.5rem 1.25rem 3rem; }
.abe-cart-review-back {
  display: inline-block; color: var(--color-primary-dk, #2563eb); font-weight: 700;
  font-size: .85rem; text-decoration: none; margin-bottom: 1rem;
}
.abe-cart-review-back:hover { text-decoration: underline; }
.abe-cart-review-title { font-size: 1.7rem; font-weight: 700; color: #0f172a; margin: 0 0 .25rem; }
.abe-cart-review-sub { color: #64748b; font-size: .9rem; margin: 0 0 1.5rem; }
.abe-cart-review-cols { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 1.5rem; align-items: start; }
.abe-cart-review-h { font-size: 1.05rem; font-weight: 700; color: #0f172a; margin: 1.5rem 0 .85rem; }
.abe-cart-review-left > .abe-cart-review-h:first-child { margin-top: 0; }
.abe-cart-review-items .abe-scart-card { cursor: default; }
.abe-cart-review-form { background: #fff; border: 1px solid #e8edf3; border-radius: 14px; padding: 1.35rem; }
.abe-cart-review-side { position: sticky; top: 1rem; }
.abe-cart-review-price {
  background: #fff; border: 1px solid #e8edf3; border-radius: 14px; padding: 1.35rem;
  box-shadow: 0 1px 3px rgba(16,24,40,.05);
}
.abe-cart-review-price h3 { font-size: 1.05rem; font-weight: 700; color: #0f172a; margin: 0 0 1rem; }
.abe-cart-review-pl { display: flex; justify-content: space-between; gap: 10px; font-size: .84rem; color: #475569; padding: .4rem 0; }
.abe-cart-review-pl span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.abe-cart-review-pl strong { color: #0f172a; font-weight: 700; white-space: nowrap; }
.abe-cart-review-pt { display: flex; justify-content: space-between; align-items: baseline; margin-top: .5rem; padding-top: .85rem; border-top: 2px solid #f1f5f9; }
.abe-cart-review-pt span { font-size: .9rem; font-weight: 700; color: #64748b; text-transform: uppercase; letter-spacing: .04em; }
.abe-cart-review-pt strong { font-size: 1.3rem; font-weight: 700; color: #0f172a; }
.abe-cart-review-pay { width: 100%; margin-top: 1.1rem; padding: 1rem; border-radius: 12px; font-size: .95rem; }
.abe-cart-review-secure { text-align: center; font-size: .74rem; color: #94a3b8; margin: .8rem 0 0; }
@media (max-width: 860px) {
  .abe-cart-review-cols { grid-template-columns: 1fr; }
  .abe-cart-review-side { position: static; }
}

/* Fixed footer: Total row above the full-width Proceed button. */
.abe-scart-footer { flex-direction: column; gap: 12px; }
.abe-scart-total {
  display: flex; justify-content: space-between; align-items: baseline;
}
.abe-scart-total span:first-child {
  font-size: .8rem; font-weight: 700; color: #64748b;
  text-transform: uppercase; letter-spacing: .05em;
}
.abe-scart-total span:last-child { font-size: 1.15rem; font-weight: 700; color: #0f172a; }
.abe-scart-checkout { width: 100%; padding: .95rem 1rem; border-radius: 12px; }

/* ── Review Panel ────────────────────────────────────────────── */
.abe-review {
  background: #fff; border: 1px solid #e2e8f0; border-radius: .75rem;
  padding: 1.5rem;
}
.abe-review h2 { font-size: 1.15rem; font-weight: 700; margin-bottom: 1rem; }
.abe-review-section { margin-bottom: 1.25rem; }
.abe-review-section h3 {
  font-size: .85rem; font-weight: 700; color: #475569;
  border-bottom: 1px solid #f1f5f9; padding-bottom: .3rem; margin-bottom: .75rem;
}
.abe-form-row { display: flex; gap: .75rem; flex-wrap: wrap; margin-bottom: .5rem; }
.abe-form-field { flex: 1; min-width: 120px; display: flex; flex-direction: column; gap: .2rem; }
.abe-form-field label {
  font-size: .75rem; font-weight: 600; color: #64748b;
  text-transform: none; letter-spacing: normal;
}
.abe-form-field input, .abe-form-field select {
  height: 38px; padding: 0 .6rem; font-size: .85rem;
  border: 1.5px solid #e2e8f0; border-radius: .4rem;
  background: #fff; color: #1e293b;
}
.abe-form-field input:focus, .abe-form-field select:focus {
  border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(59,130,246,.1);
  outline: none;
}
.abe-price-summary {
  background: #f8fafc; border: 1px solid #e2e8f0; border-radius: .5rem;
  padding: 1rem;
}
.abe-price-row {
  display: flex; justify-content: space-between; padding: .3rem 0;
  font-size: .85rem;
}
.abe-price-row.total {
  font-weight: 700; font-size: 1rem; border-top: 2px solid #e2e8f0;
  margin-top: .5rem; padding-top: .5rem;
}
.abe-confirm-btn {
  width: 100%; padding: .75rem; font-size: 1rem; font-weight: 700;
  color: #fff; background: #16a34a; border: none; border-radius: .5rem;
  cursor: pointer; margin-top: 1rem; transition: background .15s;
}
.abe-confirm-btn:hover { background: #15803d; }
.abe-confirm-btn:disabled { background: #94a3b8; cursor: not-allowed; }

/* ── Confirmation ────────────────────────────────────────────── */
.abe-confirmation {
  padding: 2rem;
  background: #fff; border: 1px solid #e2e8f0; border-radius: .75rem;
}
.abe-confirmation .abe-check-icon {
  width: 64px; height: 64px; margin: 0 auto 1rem;
  background: #ecfdf5; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
}
.abe-confirmation .abe-check-icon svg { width: 32px; height: 32px; color: #16a34a; }
.abe-confirmation h2 { font-size: 1.25rem; margin-bottom: .5rem; }
.abe-confirmation .abe-ref {
  font-size: 1.5rem; font-weight: 700; color: var(--color-primary); margin: .5rem 0;
}
.abe-confirmation .abe-detail-grid {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: .5rem; max-width: 400px; margin: 1rem auto;
  text-align: left; font-size: .85rem;
}
.abe-confirmation .abe-detail-grid dt { font-weight: 600; color: #64748b; }
.abe-confirmation .abe-detail-grid dd { color: #1e293b; }
.abe-new-search {
  margin-top: 1rem; padding: .5rem 1.5rem; font-size: .85rem;
  color: var(--color-primary); background: #eff6ff; border: 1px solid #bfdbfe;
  border-radius: .4rem; cursor: pointer;
}
.abe-new-search:hover { background: #dbeafe; }

/* ── Back button ─────────────────────────────────────────────── */
.abe-back-btn {
  display: inline-flex; align-items: center; gap: .3rem;
  font-size: .82rem; color: #64748b; background: none; border: none;
  cursor: pointer; margin-bottom: .75rem; padding: .25rem 0;
}
.abe-back-btn:hover { color: #1e293b; }

/* ── Hotel Detail Page ───────────────────────────────────────── */
.abe-detail-wrap { max-width: 1200px; margin: 0 auto; }

.abe-detail-header { margin-bottom: 1.25rem; }
.abe-detail-back {
  display: inline-flex; align-items: center; gap: .35rem;
  font-size: .88rem; font-weight: 500; color: #475569;
  background: none; border: none; cursor: pointer;
  padding: .35rem 0; margin-bottom: .75rem;
}
.abe-detail-back:hover { color: #0f172a; }
.abe-detail-header-row {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 1.5rem; flex-wrap: wrap;
}
.abe-detail-header-info { flex: 1 1 auto; min-width: 0; }
.abe-detail-header-actions {
  display: flex; align-items: center; gap: .75rem;
  flex-shrink: 0;
}
.abe-detail-cheapest {
  display: flex; flex-direction: column; align-items: flex-end;
  line-height: 1.1;
}
.abe-detail-cheapest small {
  font-size: .7rem; font-weight: 500; letter-spacing: .03em;
  text-transform: uppercase; color: #64748b;
}
.abe-detail-cheapest-price {
  font-size: 1.4rem; font-weight: 700; color: #0f172a;
  margin-top: .15rem;
}
.abe-detail-cheapest-price small {
  font-size: .75rem; font-weight: 500; color: #64748b;
  text-transform: none; letter-spacing: 0; margin-left: .15rem;
}
.abe-detail-cart-btn {
  display: inline-flex; align-items: center; gap: .4rem;
  padding: .55rem .9rem; border-radius: 8px;
  font-size: .85rem; font-weight: 600; color: var(--color-primary-dk);
  background: #eff6ff; border: 1px solid #bfdbfe;
  cursor: pointer; transition: background .15s, color .15s;
}
.abe-detail-cart-btn:hover { background: #dbeafe; }
.abe-detail-cart-btn.has-items {
  background: var(--color-primary-dk); color: #fff; border-color: var(--color-primary-dk);
}
.abe-detail-cart-btn.has-items:hover { background: var(--color-primary-dk); }
.abe-detail-cart-count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 20px; height: 20px; padding: 0 .4rem;
  font-size: .72rem; font-weight: 700;
  background: #fff; color: var(--color-primary-dk);
  border-radius: 999px;
}
.abe-detail-title {
  font-size: 1.75rem; font-weight: 700; line-height: 1.25;
  color: #0f172a; margin: 0 0 .5rem 0;
}
.abe-detail-subheader {
  display: flex; flex-wrap: wrap; align-items: center; gap: .75rem;
  font-size: .9rem; color: #475569;
}
.abe-detail-stars {
  display: inline-flex; align-items: center; gap: 2px;
  color: #f59e0b; line-height: 1;
}
.abe-detail-stars .abe-star { width: 16px; height: 16px; }
.abe-detail-loc {
  display: inline-flex; align-items: center; gap: .3rem;
  color: #64748b;
}
.abe-detail-loc svg { width: 14px; height: 14px; }
.abe-detail-chain {
  display: inline-flex; padding: .2rem .6rem;
  font-size: .75rem; font-weight: 600; color: var(--color-primary-dk);
  background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 999px;
}

/* Gallery */
.abe-gallery {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: .5rem;
  height: 420px;
  margin-bottom: 1.5rem;
  border-radius: .75rem;
  overflow: hidden;
}
.abe-gallery-hero {
  grid-column: 1; grid-row: 1 / span 2;
  background: #e2e8f0;
  cursor: pointer; transition: opacity .15s;
  overflow: hidden; position: relative;
}
.abe-gallery-hero:hover { opacity: .92; }
.abe-gallery-thumb {
  background: #e2e8f0;
  cursor: pointer; position: relative;
  transition: opacity .15s;
  overflow: hidden;
}
.abe-gallery-thumb:hover { opacity: .92; }
.abe-gallery-hero img,
.abe-gallery-thumb img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  display: block;
}
.abe-gallery-more::after {
  content: attr(data-more-label);
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  background: rgba(15, 23, 42, .6); color: #fff;
  font-size: 1.1rem; font-weight: 600;
}
.abe-gallery--empty {
  grid-template-columns: 1fr; grid-template-rows: 1fr;
  height: 280px;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #f1f5f9, #e2e8f0);
  color: #94a3b8; font-size: .95rem;
}
.abe-gallery-empty-inner {
  display: flex; flex-direction: column; align-items: center; gap: .5rem;
}
.abe-gallery-empty-inner svg { width: 40px; height: 40px; opacity: .5; }

/* Placeholder block - shown for image-less hotels and inside any gallery
   slot whose URL fails to load. Inherits the slot's full size so the
   layout stays a hero + 4 thumbs grid no matter how many real images we
   actually have. The shimmer keyframe runs only on .abe-gallery--loading
   so resolved galleries don't animate. */
.abe-gallery-ph {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #f1f5f9, #e2e8f0);
  color: #cbd5e1;
}
.abe-gallery--loading .abe-gallery-ph {
  background-size: 200% 100%;
  background-image: linear-gradient(110deg, #f1f5f9 8%, #e2e8f0 18%, #f1f5f9 33%);
  animation: abe-gallery-shimmer 1.4s linear infinite;
}
@keyframes abe-gallery-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }

/* ══════════════════════════════════════════════════════════════
   HOTEL DETAIL - RICH SECTIONS
   Four full-width strips that sit below the main grid: trust badges,
   feedback strip, survey card, recently-viewed + similar carousels.
   ══════════════════════════════════════════════════════════════ */

.abe-trust-row {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1rem; padding: 1.1rem 1.25rem; margin-bottom: 1.5rem;
}
.abe-trust-item { display: flex; align-items: center; gap: .8rem; }
.abe-trust-icon {
  width: 42px; height: 42px; border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #ecfeff, #e0f2fe); color: #0284c7;
  flex-shrink: 0;
}
.abe-trust-text { display: flex; flex-direction: column; min-width: 0; }
.abe-trust-text strong { font-size: .9rem; color: #0f172a; line-height: 1.25; }
.abe-trust-text small  { font-size: .76rem; color: #64748b; }

.abe-feedback-strip {
  display: flex; align-items: center; justify-content: flex-end; gap: .5rem;
  padding: .85rem 1.25rem; margin-bottom: 1.5rem;
  font-size: .9rem; color: #475569;
}
.abe-fb-pill {
  border: 0; background: transparent;
  color: var(--color-primary-dk); font-weight: 600; cursor: pointer;
  padding: .15rem .35rem; border-radius: 4px;
}
.abe-fb-pill:hover { background: #eff6ff; }

.abe-survey-card {
  position: relative; padding: 1.2rem 1.25rem; margin-bottom: 1.5rem;
}
.abe-survey-close {
  position: absolute; top: .6rem; right: .8rem;
  border: 0; background: transparent;
  color: #94a3b8; font-size: 1.4rem; cursor: pointer; line-height: 1;
}
.abe-survey-close:hover { color: #0f172a; }
.abe-survey-title { margin: 0 0 .8rem; font-size: 1rem; color: #0f172a; }
.abe-survey-row { display: flex; gap: 1.1rem; align-items: flex-start; }
.abe-survey-avatar {
  width: 64px; height: 64px; border-radius: 50%;
  background: #e0f2fe; color: #0284c7;
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.abe-survey-body { flex: 1; min-width: 0; }
.abe-survey-body small { color: #64748b; font-size: .75rem; }
.abe-survey-body p { margin: .25rem 0 .8rem; font-weight: 600; color: #0f172a; }
.abe-survey-opts { display: flex; flex-direction: column; gap: .45rem; }
.abe-survey-opt {
  display: inline-flex; align-items: center; gap: .55rem;
  font-size: .9rem; color: #334155; cursor: pointer;
}
.abe-survey-opt input { accent-color: var(--color-primary-dk); cursor: pointer; }

/* Carousels */
.abe-carousel-card { padding: 0; margin-bottom: 1.5rem; overflow: hidden; }
.abe-carousel-card .abe-detail-card-header { padding: 1rem 1.25rem .25rem; }
.abe-carousel { position: relative; padding: .75rem 1rem 1.1rem; }
.abe-carousel-track {
  display: flex; gap: .85rem;
  overflow-x: auto; scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: thin;
  padding-bottom: .25rem;
}
.abe-carousel-track::-webkit-scrollbar { height: 4px; }
.abe-carousel-track::-webkit-scrollbar-thumb { background: #e2e8f0; border-radius: 2px; }
.abe-carousel-card-item {
  flex: 0 0 220px; scroll-snap-align: start;
  border: 1px solid #eef2f7; border-radius: 10px;
  background: #fff; cursor: pointer; overflow: hidden;
  transition: box-shadow .2s, transform .15s;
}
.abe-carousel-card-item:hover {
  box-shadow: 0 8px 22px rgba(15,23,42,.10); transform: translateY(-2px);
}
.abe-carousel-img {
  width: 100%; height: 130px; background: #f1f5f9;
  overflow: hidden; position: relative;
}
.abe-carousel-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.abe-carousel-body { padding: .55rem .7rem .7rem; }
.abe-carousel-name {
  font-weight: 600; font-size: .85rem; color: #0f172a;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  margin-bottom: .15rem;
}
.abe-carousel-stars svg { width: 11px; height: 11px; }
.abe-carousel-city { font-size: .72rem; color: #64748b; margin-top: .2rem; }
.abe-carousel-price { margin-top: .45rem; font-weight: 700; color: #0f172a; font-size: .9rem; }
.abe-carousel-price small { color: #64748b; font-weight: 500; font-size: .7rem; }
.abe-carousel-nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 32px; height: 32px; border-radius: 50%;
  background: #fff; color: #0f172a;
  border: 1px solid #e2e8f0; cursor: pointer; z-index: 2;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 8px rgba(15,23,42,.10);
}
.abe-carousel-prev { left: .25rem; }
.abe-carousel-next { right: .25rem; }
.abe-carousel-nav:hover { background: #f1f5f9; }

/* Stay info bar */
.abe-stay-info {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 1rem; padding: 1rem 1.25rem; margin-bottom: 1.5rem;
  background: #fff; border-radius: .75rem;
}
.abe-stay-item { display: flex; flex-direction: column; gap: .15rem; }
.abe-stay-item small {
  font-size: .72rem; font-weight: 500;
  color: #94a3b8; text-transform: uppercase; letter-spacing: .04em;
}
.abe-stay-item strong {
  font-size: .95rem; font-weight: 600; color: #0f172a;
}

/* Two-column detail grid */
.abe-detail-wrap > .abe-detail-grid {
  display: grid; grid-template-columns: 1fr 340px;
  gap: 1.5rem; margin-bottom: 1.5rem;
}
.abe-detail-main, .abe-detail-sidebar {
  display: flex; flex-direction: column; gap: 1rem;
}

/* Detail cards */
.abe-detail-card {
  background: #fff; border: 1px solid #e2e8f0; border-radius: .75rem;
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(0,0,0,.03);
}
.abe-detail-card-header {
  padding: 1rem 1.25rem .75rem;
  border-bottom: 1px solid #f1f5f9;
}
.abe-detail-card-header h2,
.abe-detail-card-header h3 {
  display: flex; align-items: center; gap: .5rem;
  margin: 0; font-weight: 600; color: #0f172a;
}
.abe-detail-card-header h2 { font-size: 1.1rem; }
.abe-detail-card-header h3 { font-size: .95rem; }
.abe-detail-card-header svg { width: 18px; height: 18px; color: var(--color-primary); }
.abe-detail-card-body { padding: 1rem 1.25rem; }
.abe-detail-card-body.abe-pad-0 { padding: 0; }

.abe-hotel-desc {
  margin: 0; font-size: .9rem; line-height: 1.6; color: #334155;
  white-space: pre-line;
}
.abe-hotel-desc.clamped {
  display: -webkit-box; -webkit-line-clamp: 3; line-clamp: 3; -webkit-box-orient: vertical;
  overflow: hidden;
}
.abe-btn-link {
  margin-top: .5rem; padding: 0;
  font-size: .82rem; font-weight: 500; color: var(--color-primary);
  background: none; border: none; cursor: pointer;
}
.abe-btn-link:hover { text-decoration: underline; }

/* Property facts */
.abe-prop-facts {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: .75rem; margin-top: 1rem;
  padding-top: 1rem; border-top: 1px solid #f1f5f9;
}
.abe-fact {
  display: flex; align-items: center; gap: .5rem;
  font-size: .85rem; color: #475569;
}
.abe-fact svg { width: 16px; height: 16px; color: #64748b; flex-shrink: 0; }
.abe-fact strong { color: #0f172a; font-weight: 600; margin-right: .2rem; }

/* Amenities */
.abe-amenity-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: .5rem;
}
.abe-amenity-item {
  display: flex; align-items: center; gap: .5rem;
  padding: .5rem .6rem;
  font-size: .82rem; color: #334155;
  background: #f8fafc; border: 1px solid #e2e8f0; border-radius: .4rem;
}
.abe-amenity-item svg { width: 14px; height: 14px; color: var(--color-primary); flex-shrink: 0; }

/* Policies */
.abe-policy-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: .75rem;
}
.abe-policy-item {
  display: flex; align-items: flex-start; gap: .6rem;
  padding: .6rem .75rem;
  background: #f8fafc; border: 1px solid #e2e8f0; border-radius: .5rem;
}
.abe-policy-item svg {
  width: 18px; height: 18px; color: var(--color-primary);
  flex-shrink: 0; margin-top: 2px;
}
.abe-policy-item small {
  display: block; font-size: .7rem; font-weight: 500;
  color: #94a3b8; text-transform: uppercase; letter-spacing: .04em;
  margin-bottom: .15rem;
}
.abe-policy-item strong {
  display: block; font-size: .85rem; font-weight: 500;
  color: #0f172a;
}
.abe-policy-notes {
  margin-top: .75rem; padding-top: .75rem;
  border-top: 1px dashed #e2e8f0;
}
.abe-policy-notes small {
  font-size: .8rem; color: #64748b; line-height: 1.5;
}

/* Contact rows */
.abe-contact-row {
  display: flex; align-items: center; gap: .6rem;
  padding: .5rem 0;
  font-size: .85rem; color: #334155;
  border-bottom: 1px solid #f1f5f9;
}
.abe-contact-row:last-child { border-bottom: none; }
.abe-contact-row svg { width: 16px; height: 16px; color: #64748b; flex-shrink: 0; }
.abe-contact-row a { color: var(--color-primary); text-decoration: none; }
.abe-contact-row a:hover { text-decoration: underline; }

/* Landmarks */
.abe-landmark-list { list-style: none; margin: 0; padding: 0; }
.abe-landmark-list li {
  display: grid; grid-template-columns: auto 1fr auto;
  align-items: center; gap: .5rem;
  padding: .6rem 1.25rem;
  font-size: .85rem;
  border-bottom: 1px solid #f1f5f9;
}
.abe-landmark-list li:last-child { border-bottom: none; }
.abe-landmark-type {
  display: inline-flex; padding: .1rem .5rem;
  font-size: .68rem; font-weight: 600;
  border-radius: 999px; text-transform: uppercase; letter-spacing: .03em;
}
.abe-landmark-type--airport    { background: #dbeafe; color: var(--color-primary-dk); }
.abe-landmark-type--station    { background: #fef3c7; color: #92400e; }
.abe-landmark-type--attraction { background: #fce7f3; color: #9d174d; }
.abe-landmark-type--mall       { background: #ede9fe; color: #5b21b6; }
.abe-landmark-type--hospital   { background: #fee2e2; color: #991b1b; }
.abe-landmark-type--other      { background: #e2e8f0; color: #475569; }
.abe-landmark-name { color: #0f172a; font-weight: 500; }
.abe-landmark-dist { color: #64748b; font-size: .8rem; }

.abe-cancel-note {
  margin: 0; font-size: .85rem; line-height: 1.5; color: #334155;
}

/* Pay-at-hotel excluded fees + know-before-you-go instructions */
.abe-payhotel {
  border: 1px solid #fcd9b6; background: #fff7ed;
  border-radius: .5rem; padding: .75rem .9rem;
}
.abe-payhotel-head { margin-bottom: .5rem; }
.abe-payhotel-head strong { display: block; font-size: .9rem; color: #9a3412; }
.abe-payhotel-head span { display: block; font-size: .78rem; color: #b45309; margin-top: .15rem; }
.abe-payhotel ul { margin: 0; padding-left: 1.1rem; }
.abe-payhotel li { font-size: .84rem; line-height: 1.5; color: #7c2d12; margin-bottom: .25rem; }
.abe-kbyg { margin-top: .75rem; }
.abe-kbyg ul { margin: 0; padding-left: 1.1rem; }
.abe-kbyg li { font-size: .82rem; line-height: 1.55; color: #475569; margin-bottom: .3rem; }
.abe-kbyg li b { color: #334155; }
.abe-empty-sm {
  font-size: .85rem; color: #94a3b8; padding: .5rem 0; text-align: center;
}

/* Room options */
.abe-room-options-wrap { margin-top: 0; }
.abe-room-options { display: flex; flex-direction: column; }
.abe-room-option {
  display: grid; grid-template-columns: 1fr 280px;
  gap: 1.25rem; padding: 1rem 1.25rem;
  border-bottom: 1px solid #f1f5f9;
}
.abe-room-option:last-child { border-bottom: none; }
.abe-ro-info { display: flex; flex-direction: column; gap: .5rem; }
.abe-ro-name {
  margin: 0; font-size: 1rem; font-weight: 600; color: #0f172a;
}
.abe-ro-tags {
  display: flex; flex-wrap: wrap; gap: .4rem;
}
.abe-ro-tags .abe-hc-tag { font-size: .72rem; }
.abe-ro-cancel { color: #64748b; }
.abe-ro-cancel small { font-size: .78rem; line-height: 1.4; }
.abe-ro-rateplan { color: #64748b; }
.abe-ro-rateplan small { font-size: .78rem; }
.abe-ro-promo {
  display: inline-block; padding: .25rem .5rem; border-radius: 4px;
  background: #fef3c7; color: #92400e; font-size: .75rem; font-weight: 600;
  align-self: flex-start;
}
.abe-ro-breakdown { font-size: .78rem; color: #475569; }
.abe-ro-breakdown small { color: #64748b; }
.abe-ro-breakdown ul {
  list-style: none; margin: .25rem 0 0; padding: 0;
  border: 1px solid #e2e8f0; border-radius: 6px; overflow: hidden;
  max-width: 320px;
}
.abe-ro-breakdown li {
  display: flex; justify-content: space-between; padding: .3rem .6rem;
  border-bottom: 1px solid #f1f5f9;
}
.abe-ro-breakdown li:last-child { border-bottom: none; }
.abe-ro-breakdown li span:last-child { font-weight: 600; color: #0f172a; }
.abe-ro-pricing {
  display: flex; flex-direction: column; align-items: flex-end;
  gap: .25rem;
}
.abe-ro-price-main {
  font-size: 1.25rem; font-weight: 700; color: #0f172a;
}
.abe-ro-price-main small {
  font-size: .75rem; font-weight: 500; color: #64748b;
}
.abe-ro-price-total {
  font-size: .85rem; color: #334155; font-weight: 500;
}
.abe-ro-price-tax {
  font-size: .72rem; color: #94a3b8;
}
.abe-ro-actions {
  display: flex; gap: .5rem; margin-top: .5rem;
}

/* Lightbox */
.abe-lightbox {
  position: fixed; inset: 0; z-index: 9999;
  background: rgba(15, 23, 42, .92);
  display: flex; align-items: center; justify-content: center;
}
.abe-lb-img {
  max-width: 90vw; max-height: 85vh;
  object-fit: contain; border-radius: .5rem;
  box-shadow: 0 20px 60px rgba(0,0,0,.5);
}
.abe-lb-close, .abe-lb-prev, .abe-lb-next {
  position: absolute; background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.2); color: #fff;
  font-size: 1.5rem; cursor: pointer;
  width: 44px; height: 44px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  transition: background .15s;
}
.abe-lb-close:hover, .abe-lb-prev:hover, .abe-lb-next:hover {
  background: rgba(255,255,255,.2);
}
.abe-lb-close { top: 1.5rem; right: 1.5rem; }
.abe-lb-prev  { left: 1.5rem; top: 50%; transform: translateY(-50%); }
.abe-lb-next  { right: 1.5rem; top: 50%; transform: translateY(-50%); }
.abe-lb-counter {
  position: absolute; bottom: 1.5rem; left: 50%;
  transform: translateX(-50%);
  padding: .4rem .9rem; border-radius: 999px;
  background: rgba(0,0,0,.6); color: #fff;
  font-size: .82rem;
}

/* Detail button on hotel card (separate from book btn) */
.abe-detail-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
  padding: .65rem 1.1rem; font-size: .9rem; font-weight: 600;
  color: #fff; background: var(--color-primary-dk); border: none; border-radius: .4rem;
  cursor: pointer; transition: background .15s, box-shadow .15s;
  box-shadow: 0 1px 2px rgba(37,99,235,.18);
}
.abe-detail-btn:hover { background: var(--color-primary-dk); box-shadow: 0 4px 10px rgba(37,99,235,.28); }
.abe-detail-btn svg { flex-shrink: 0; transition: transform .15s; }
.abe-detail-btn:hover svg { transform: translateX(2px); }
.abe-detail-btn--hotel { width: 100%; padding: .75rem 1.1rem; }

/* ── Hotel Review & Book Page ────────────────────────────────── */
.abe-review-wrap { max-width: 1200px; margin: 0 auto; }

.abe-review-header { margin-bottom: 1.25rem; }

.abe-review-layout {
  display: grid; grid-template-columns: 1fr 360px;
  gap: 1.5rem;
}
.abe-review-main {
  display: flex; flex-direction: column; gap: 1rem;
}
.abe-review-sidebar { position: relative; }
.abe-rv-pricing-card {
  position: sticky; top: 1rem;
}

/* Hotel summary block */
.abe-rv-hotel {
  display: flex; gap: 1rem;
}
.abe-rv-hotel-thumb {
  width: 120px; height: 100px; flex-shrink: 0;
  background-color: #e2e8f0;
  background-size: cover; background-position: center;
  border-radius: .5rem;
}
.abe-rv-hotel-thumb--placeholder {
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #f1f5f9, #e2e8f0);
  color: #94a3b8;
}
.abe-rv-hotel-thumb--placeholder svg { width: 32px; height: 32px; }
.abe-rv-hotel-info {
  display: flex; flex-direction: column; gap: .3rem; min-width: 0;
}
.abe-rv-hotel-name {
  margin: 0; font-size: 1.15rem; font-weight: 700; color: #0f172a;
  line-height: 1.3;
}
.abe-rv-hotel-meta {
  display: flex; align-items: center; gap: .5rem; flex-wrap: wrap;
}
.abe-rv-hotel-location {
  display: inline-flex; align-items: center; gap: .3rem;
  font-size: .82rem; color: #64748b;
}
.abe-rv-tags {
  display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .15rem;
}

/* Inline-style fare facts (Baggage / Meal / Changes / Cancellation):
   amber suitcase icon + bold label + value on one line, multiple facts
   sit in a horizontal row with healthy spacing - matches the cabin/check-in
   baggage strip seen on most carrier sites. */
.abe-rv-stay-facts {
  display: flex; flex-wrap: wrap; gap: 1.25rem 2rem;
  margin-top: 1rem; padding-top: 1rem;
  border-top: 1px dashed #e2e8f0;
}
.abe-rv-fact {
  display: inline-flex; align-items: center; gap: .5rem;
  font-size: .85rem; line-height: 1.25;
}
.abe-rv-fact svg {
  width: 20px; height: 20px; flex-shrink: 0;
  color: #f59e0b; /* amber - matches the suitcase look */
}
.abe-rv-fact > div {
  display: inline-flex; align-items: baseline; gap: .35rem;
  flex-wrap: wrap;
}
.abe-rv-fact small {
  display: inline; font-size: .85rem; color: #0f172a;
  font-weight: 700; text-transform: none; letter-spacing: 0;
}
.abe-rv-fact small::after { content: ':'; }
.abe-rv-fact strong {
  display: inline; font-size: .85rem; color: #334155; font-weight: 500;
}

/* Guest rows */
.abe-rv-guest-row {
  padding: .85rem 1rem; margin-bottom: .75rem;
  background: #f8fafc; border: 1px solid #e2e8f0; border-radius: .5rem;
}
.abe-rv-guest-row:last-child { margin-bottom: 0; }
.abe-rv-guest-header {
  display: flex; align-items: center; gap: .5rem; margin-bottom: .6rem;
}
.abe-rv-guest-num {
  display: inline-flex; align-items: center; justify-content: center;
  width: 24px; height: 24px;
  font-size: .78rem; font-weight: 700; color: #fff;
  background: var(--color-primary); border-radius: 50%;
}
.abe-rv-guest-label {
  font-size: .85rem; font-weight: 600; color: #334155;
}
.abe-rv-lead-badge {
  display: inline-block; padding: .1rem .45rem;
  font-size: .65rem; font-weight: 600; color: #065f46;
  background: #d1fae5; border-radius: 999px;
  text-transform: uppercase; letter-spacing: .04em;
}
.abe-rv-guest-grid {
  display: grid; grid-template-columns: 120px 1fr 1fr; gap: .6rem;
}
.abe-rv-contact-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: .75rem;
}
.abe-rv-field { display: flex; flex-direction: column; gap: .35rem; }
.abe-rv-field-label {
  font-size: .72rem; font-weight: 500; color: #64748b;
  text-transform: uppercase; letter-spacing: .04em;
}
/* Booking-page inputs share the Trip.com-style appearance with the
   passenger card: roomy padding, rounded corners, soft border, and a
   subtle blue focus ring. Selects get a custom chevron caret. */
.abe-rv-input {
  width: 100%; padding: .85rem 1rem;
  font-size: .9rem; font-family: inherit; color: #0f172a;
  background: #fff; border: 1px solid #cbd5e1; border-radius: 6px;
  transition: border-color .15s, box-shadow .15s;
  box-sizing: border-box; outline: none;
}
.abe-rv-input::placeholder { color: #94a3b8; }
.abe-rv-input:focus,
.abe-rv-input:focus-visible {
  border-color: var(--color-primary-dk);
  box-shadow: 0 0 0 3px rgba(37,99,235,.12);
}
.abe-rv-input:disabled {
  background: #f1f5f9; color: #94a3b8; cursor: not-allowed;
}
select.abe-rv-input {
  appearance: none; -webkit-appearance: none; -moz-appearance: none;
  padding-right: 2.25rem;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .85rem center;
  background-size: 14px 14px;
}
.abe-rv-textarea { font-family: inherit; resize: vertical; min-height: 90px; }

/* Cancellation grid table */
.abe-rv-cancel-table {
  width: 100%; border-collapse: collapse; font-size: .85rem;
}
.abe-rv-cancel-table th,
.abe-rv-cancel-table td {
  padding: .6rem 1rem; text-align: left;
  border-bottom: 1px solid #f1f5f9;
}
.abe-rv-cancel-table th {
  font-size: .72rem; font-weight: 600; color: #64748b;
  background: #f8fafc; text-transform: uppercase; letter-spacing: .04em;
}
.abe-rv-cancel-table tbody tr:last-child td { border-bottom: none; }
.abe-rv-cancel-table td:last-child { color: #0f172a; font-weight: 500; }

/* Pricing sidebar */
.abe-rv-promo {
  display: flex; align-items: flex-start; gap: .5rem;
  padding: .65rem .75rem; margin-bottom: 1rem;
  background: linear-gradient(135deg, #fef3c7, #fde68a);
  border: 1px solid #fcd34d; border-radius: .5rem;
}
.abe-rv-promo svg { width: 16px; height: 16px; color: #92400e; flex-shrink: 0; margin-top: 2px; }
.abe-rv-promo strong {
  display: block; font-size: .85rem; font-weight: 600; color: #78350f;
}
.abe-rv-promo small {
  display: block; font-size: .75rem; color: #92400e; margin-top: .1rem;
}

.abe-rv-price-section {
  padding: .75rem 0;
  border-bottom: 1px solid #f1f5f9;
}
.abe-rv-price-section:first-child { padding-top: 0; }
.abe-rv-price-row {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: .75rem; padding: .3rem 0;
  font-size: .85rem; color: #334155;
}
.abe-rv-price-row span:last-child { font-weight: 500; color: #0f172a; }

.abe-rv-price-total {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: .75rem;
  padding: .75rem 1.25rem; margin: .25rem 0;
  font-size: 1.05rem; font-weight: 700; color: #0f172a;
  border-top: 2px solid #e2e8f0; border-bottom: 2px solid #e2e8f0;
}

.abe-rv-deposit-note {
  margin-top: .75rem; padding: .55rem .7rem;
  font-size: .75rem; color: #92400e;
  background: #fffbeb; border: 1px solid #fde68a; border-radius: .4rem;
  line-height: 1.4;
}

.abe-rv-confirm-btn {
  display: flex; align-items: center; justify-content: center; gap: .55rem;
  width: 100%; padding: 1rem 1.25rem; margin-top: 1rem;
  font-size: .95rem; font-weight: 700; letter-spacing: .04em;
  font-family: inherit;
  color: #fff;
  background: #16a34a;
  border: none; border-radius: 8px;
  cursor: pointer;
  transition: background .15s, box-shadow .15s, transform .12s;
  box-shadow: 0 2px 6px rgba(22,163,74,.25);
}
.abe-rv-confirm-btn:hover {
  background: #15803d;
  box-shadow: 0 4px 12px rgba(22,163,74,.35);
}
.abe-rv-confirm-btn:active { transform: translateY(1px); box-shadow: 0 1px 4px rgba(22,163,74,.25); }
.abe-rv-confirm-btn:disabled {
  background: #94a3b8; cursor: not-allowed; box-shadow: none;
}
.abe-rv-confirm-btn svg { color: #fff; flex-shrink: 0; }
.abe-rv-confirm-btn span { color: #fff; }

.abe-rv-secure-note {
  display: flex; align-items: center; justify-content: center; gap: .3rem;
  margin-top: .6rem;
  font-size: .72rem; color: #94a3b8;
}
.abe-rv-secure-note svg { color: #94a3b8; }

/* ── Responsive ──────────────────────────────────────────────── */
@media (max-width: 960px) {
  .abe-results-layout {
    grid-template-columns: 1fr;
  }
  .abe-filter-sidebar {
    display: none; /* hidden by default on mobile */
    position: fixed; top: 0; left: 0; bottom: 0; width: 300px;
    z-index: 500; border-radius: 0; overflow-y: auto;
    box-shadow: 4px 0 20px rgba(0,0,0,.15);
  }
  .abe-filter-sidebar.open {
    display: block;
  }
  .abe-filter-toggle-mobile {
    display: flex;
  }
}

/* ══════════════════════════════════════════════════════════════
   SEGMENT TABS + COMBO BAR (round-trip / multi-city)
   ══════════════════════════════════════════════════════════════ */
.abe-seg-tabs {
  display: grid; grid-auto-columns: 1fr; grid-auto-flow: column; gap: .75rem;
  margin-bottom: 1rem;
}
.abe-seg-tab {
  background: #fff; border: 1px solid #e2e8f0; border-radius: 10px;
  padding: .9rem 1rem; text-align: left; cursor: pointer;
  transition: all .15s; position: relative;
}
.abe-seg-tab:hover { border-color: #94a3b8; box-shadow: 0 2px 8px rgba(15,23,42,.05); }
.abe-seg-tab.active {
  border-color: var(--color-primary-dk);
  box-shadow: 0 0 0 3px rgba(29,78,216,.12);
}
.abe-seg-tab.is-picked { background: #f0fdf4; border-color: #22c55e; }
.abe-seg-tab.is-picked.active { border-color: #16a34a; box-shadow: 0 0 0 3px rgba(34,197,94,.15); }

.abe-seg-tab-head {
  display: flex; align-items: center; gap: .5rem; margin-bottom: .35rem;
}
.abe-seg-tab-num {
  width: 22px; height: 22px; border-radius: 50%;
  background: #e2e8f0; color: #334155;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: .72rem; font-weight: 700;
}
.abe-seg-tab.active .abe-seg-tab-num { background: var(--color-primary-dk); color: #fff; }
.abe-seg-tab.is-picked .abe-seg-tab-num { background: #22c55e; color: #fff; }

.abe-seg-tab-pill {
  padding: .15rem .55rem; border-radius: 12px;
  font-size: .7rem; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase;
}
.abe-seg-pill--out { background: #dcfce7; color: #15803d; }
.abe-seg-pill--ret { background: #ffedd5; color: #c2410c; }
.abe-seg-pill--mc0 { background: #dbeafe; color: var(--color-primary-dk); }
.abe-seg-pill--mc1 { background: #f3e8ff; color: #7c3aed; }
.abe-seg-pill--mc2 { background: #fce7f3; color: #be185d; }
.abe-seg-pill--mc3 { background: #fef9c3; color: #854d0e; }
.abe-seg-pill--mc4 { background: #ccfbf1; color: #0f766e; }
.abe-seg-pill--mc5 { background: #ffe4e6; color: #be123c; }

.abe-seg-tab-check {
  margin-left: auto; color: #16a34a; display: inline-flex;
}
.abe-seg-tab-route {
  font-size: 1rem; font-weight: 700; color: #0f172a;
  display: flex; align-items: center; gap: .4rem;
}
.abe-seg-arrow { color: #94a3b8; font-size: .9rem; }
.abe-seg-tab-meta {
  display: flex; align-items: center; gap: .35rem;
  font-size: .75rem; color: #64748b; margin-top: .15rem;
}
.abe-seg-dot { color: #cbd5e1; }
.abe-seg-tab-selected {
  font-size: .72rem; color: #64748b; margin-top: .35rem;
  padding-top: .35rem; border-top: 1px dashed #e2e8f0;
}
.abe-seg-tab-selected strong { color: #0f172a; }
.abe-seg-tab.is-picked .abe-seg-tab-selected strong { color: #15803d; }

/* Combo radio on flight cards */
.abe-card--combo { padding-left: 3rem; position: relative; }
.abe-card--combo.is-picked {
  border-color: #22c55e;
  background: linear-gradient(to right, #f0fdf4 0%, #fff 100%);
}
.abe-card-radio,
.abe-fc-radio {
  position: absolute; left: 1rem; top: 50%; transform: translateY(-50%);
  cursor: pointer; display: inline-flex; float: none !important;
  padding: 0 !important;
}
.abe-card-radio input,
.abe-fc-radio input {
  position: absolute; opacity: 0; pointer-events: none;
  width: 0; height: 0; margin: 0;
}
.abe-card-radio-dot {
  width: 20px; height: 20px; border-radius: 50%;
  border: 2px solid #cbd5e1; background: #fff;
  display: inline-block; position: relative;
  transition: all .15s;
}
.abe-card-radio input:checked ~ .abe-card-radio-dot,
.abe-fc-radio input:checked ~ .abe-card-radio-dot {
  border-color: #22c55e;
}
.abe-card-radio input:checked ~ .abe-card-radio-dot::after,
.abe-fc-radio input:checked ~ .abe-card-radio-dot::after {
  content: ''; position: absolute;
  top: 3px; left: 3px; width: 10px; height: 10px;
  border-radius: 50%; background: #22c55e;
}

/* Combo bar - floating fixed widget centered at viewport bottom */
.abe-combo-bar {
  position: fixed;
  bottom: 1rem;
  left: 50%;
  transform: translateX(-50%);
  width: min(1100px, calc(100vw - 2rem));
  z-index: 9500;
  background: #fff;
  border: 1px solid #e2e8f0;
  box-shadow: 0 12px 32px rgba(15, 23, 42, .18), 0 4px 10px rgba(15, 23, 42, .08);
  padding: .75rem 1rem;
  display: flex; align-items: center; gap: 1rem;
  border-radius: 12px;
  animation: abeComboSlideUp .2s ease-out;
}
@keyframes abeComboSlideUp {
  from { transform: translate(-50%, 12px); opacity: 0; }
  to   { transform: translate(-50%, 0);    opacity: 1; }
}
/* Single-line legs row - never wraps. When picks overflow the visible
   width, scroll horizontally so the BOOK NOW stays anchored on the
   right of the bar instead of being pushed onto a second line. */
.abe-combo-legs {
  display: flex; gap: .75rem; flex: 1;
  flex-wrap: nowrap; overflow-x: auto; min-width: 0;
  padding-bottom: 2px; /* room for any focus ring inside */
  scrollbar-width: thin;
}
.abe-combo-legs::-webkit-scrollbar { height: 4px; }
.abe-combo-legs::-webkit-scrollbar-thumb { background: #e2e8f0; border-radius: 2px; }
.abe-combo-leg {
  display: flex; align-items: center; gap: .5rem;
  padding: .45rem .7rem;
  border: 1px solid #e2e8f0; border-radius: 8px;
  background: #f8fafc; min-width: 0; flex-shrink: 0;
  max-width: 240px;
}
.abe-combo-leg.is-picked { background: #fff; border-color: #22c55e; }
.abe-combo-leg-badge {
  width: 32px; height: 32px; border-radius: 6px;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: .68rem; font-weight: 700; letter-spacing: .04em;
  flex-shrink: 0;
}
.abe-combo-leg-info strong { display: block; font-size: .82rem; color: #0f172a; }
.abe-combo-leg-info small { font-size: .7rem; color: #64748b; }
.abe-combo-leg-placeholder {
  font-size: .82rem; color: #94a3b8; font-style: italic;
}

.abe-combo-total { text-align: right; padding: 0 .75rem; }
.abe-combo-total-amt {
  font-size: 1.35rem; font-weight: 700; color: #0f172a;
}
.abe-combo-total-sub {
  font-size: .72rem; color: #64748b;
}
.abe-combo-actions {
  display: inline-flex; align-items: center; gap: .5rem;
  flex-shrink: 0;
}
.abe-combo-add-all {
  padding: .65rem 1rem; border: 1px solid var(--color-primary-dk); border-radius: 8px;
  background: #fff; color: var(--color-primary-dk); font-weight: 700; font-size: .82rem;
  cursor: pointer; display: inline-flex; align-items: center; gap: .4rem;
  transition: background .15s, color .15s;
}
.abe-combo-add-all:hover { background: #eff6ff; }
.abe-combo-add-all:disabled {
  border-color: #cbd5e1; color: #cbd5e1; background: #fff; cursor: not-allowed;
}
.abe-combo-book-now {
  padding: .7rem 1.25rem; border: 0; border-radius: 8px;
  background: #059669; color: #fff; font-weight: 700; font-size: .88rem; letter-spacing: .04em;
  cursor: pointer; display: inline-flex; align-items: center; gap: .4rem;
  transition: background .15s;
}
.abe-combo-book-now:hover:not(:disabled) { background: #047857; }
.abe-combo-book-now:disabled {
  background: #cbd5e1; cursor: not-allowed;
}

@media (max-width: 768px) {
  .abe-seg-tabs { grid-auto-flow: row; grid-auto-columns: unset; }
  .abe-combo-bar {
    flex-direction: column; align-items: stretch;
    bottom: .5rem; width: calc(100vw - 1rem);
    padding: .65rem .75rem;
  }
  .abe-combo-total { text-align: left; padding: 0; display: flex; justify-content: space-between; align-items: baseline; }
  .abe-combo-actions { width: 100%; }
  .abe-combo-add-all, .abe-combo-book-now { flex: 1; justify-content: center; }
}

/* ══════════════════════════════════════════════════════════════
   FLIGHT-STYLE FILTERS (time-grid + airline-checks)
   Group-title layout is defined earlier - only colour its icon here.
   ══════════════════════════════════════════════════════════════ */
.abe-filter-group-title svg { flex-shrink: 0; color: var(--color-primary); display: none; }

.abe-filter-time-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: .45rem;
}
.abe-filter-time-card {
  display: flex; flex-direction: column; align-items: center; gap: .2rem;
  padding: .7rem .4rem;
  border: 1px solid #e2e8f0; border-radius: 10px;
  cursor: pointer; transition: border-color .15s, background .15s, box-shadow .15s, transform .05s;
  text-align: center; background: #fff; position: relative;
}
.abe-filter-time-card input { position: absolute; opacity: 0; pointer-events: none; }
.abe-filter-time-card:hover {
  border-color: #93c5fd; background: #f8fafc;
  box-shadow: 0 2px 6px rgba(148, 163, 184, .12);
}
.abe-filter-time-card:active { transform: translateY(1px); }
.abe-filter-time-card.is-active {
  border-color: var(--color-primary); background: #eff6ff;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, .15), 0 2px 6px rgba(59, 130, 246, .18);
}
.abe-filter-time-card .abe-tg-icon { font-size: 1.3rem; line-height: 1; }
.abe-filter-time-card strong { font-size: .82rem; color: #0f172a; font-weight: 600; }
.abe-filter-time-card small { font-size: .68rem; color: #64748b; }
.abe-filter-time-card.is-active strong { color: var(--color-primary-dk); }

.abe-filter-airlines { display: flex; flex-direction: column; gap: .3rem; }
.abe-filter-airline {
  display: flex; align-items: center; gap: .55rem;
  padding: .5rem .65rem;
  background: #f8fafc;
  border: 1px solid transparent; border-radius: 8px;
  cursor: pointer; transition: background .15s, border-color .15s, box-shadow .15s, transform .05s;
}
.abe-filter-airline:hover {
  background: #eff6ff; border-color: #dbeafe;
}
.abe-filter-airline:active { transform: translateY(1px); }
.abe-filter-airline.is-active {
  background: #eff6ff; border-color: var(--color-primary);
  box-shadow: 0 2px 6px rgba(59, 130, 246, .18);
}
.abe-filter-airline input { position: absolute; opacity: 0; pointer-events: none; }
.abe-filter-airline-dot {
  width: 30px; height: 30px; border-radius: 6px;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: .68rem; font-weight: 700; letter-spacing: .04em;
  flex-shrink: 0;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
}
.abe-filter-airline-name { flex: 1; font-size: .82rem; color: #334155; font-weight: 500; }
.abe-filter-airline.is-active .abe-filter-airline-name { color: var(--color-primary-dk); font-weight: 600; }
.abe-filter-airline-price {
  font-size: .78rem; color: #0f172a; font-weight: 600;
  background: #fff; border: 1px solid #e2e8f0;
  padding: .12rem .45rem; border-radius: 999px;
}
.abe-filter-airline.is-active .abe-filter-airline-price {
  border-color: #bfdbfe; background: #fff; color: var(--color-primary-dk);
}

@media (max-width: 768px) {
  .abe-search-fields { flex-direction: column; }
  .abe-field { min-width: 100%; }
  .abe-card-row { flex-direction: column; }
  .abe-card-price { text-align: left; }
  .abe-card-actions { justify-content: flex-start; }
  .abe-flight-row { flex-direction: column; gap: .5rem; }
  .abe-form-row { flex-direction: column; }
  .abe-adv-panel { flex-direction: column; }
  .abe-multi-row { flex-direction: column; }
  .abe-cart-drawer { width: 100%; }
  .abe-results-header { flex-direction: column; gap: .5rem; align-items: flex-start; }
  .abe-page-controls-top { flex-wrap: wrap; }
  .abe-results-toolbar { flex-direction: column; align-items: stretch; }
  .abe-tb-right { justify-content: space-between; }
  .abe-tb-pagination { border-left: none; border-right: none; padding: 0; }

  .abe-detail-wrap > .abe-detail-grid { grid-template-columns: 1fr; }
  .abe-gallery {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 200px 120px;
    height: auto;
  }
  .abe-gallery-hero { grid-column: 1 / span 2; grid-row: 1; }
  .abe-detail-title { font-size: 1.35rem; }
  .abe-detail-header-row { flex-direction: column; align-items: stretch; gap: .75rem; }
  .abe-detail-header-actions { justify-content: space-between; }
  .abe-detail-cheapest { align-items: flex-start; }
  .abe-room-option { grid-template-columns: 1fr; }
  .abe-ro-pricing { align-items: flex-start; }

  .abe-review-layout { grid-template-columns: 1fr; }
  .abe-rv-pricing-card { position: static; }
  .abe-rv-hotel { flex-direction: column; }
  .abe-rv-hotel-thumb { width: 100%; height: 160px; }
  .abe-rv-guest-grid { grid-template-columns: 1fr; }
}

/* ══════════════════════════════════════════════════════════════
   BC-CARD - shared card for Bus / Car Rental
   Mirrors the B2B `.exc-card` layout used in bus/search.php + cars/search.php
   ══════════════════════════════════════════════════════════════ */
.abe-bc-list { display: flex; flex-direction: column; gap: 1rem; }
.abe-bc-card {
  display: grid;
  grid-template-columns: 240px 1fr 200px;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  overflow: hidden;
  transition: box-shadow .15s, transform .15s;
  position: relative;
}
.abe-bc-card:hover { box-shadow: 0 6px 24px rgba(0,0,0,.08); transform: translateY(-2px); }
/* Combo mode (round-trip / multi-city): reserve a left gutter for the
   per-card radio so it doesn't overlap the bus image. Same convention
   as .abe-fc--combo for flights. The picked card gets the green
   highlight ring used elsewhere. */
.abe-bc-card--combo { padding-left: 3rem; }
.abe-bc-card.is-picked {
  border-color: #22c55e;
  box-shadow: 0 0 0 2px rgba(34,197,94,.2);
}
.abe-bc-image {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 180px;
  color: #fff;
}
.abe-bc-image img { width: 100%; height: 100%; object-fit: cover; min-height: 180px; }
.abe-bc-cat-badge {
  position: absolute; top: 8px; left: 8px;
  background: rgba(15, 23, 42, .85); color: #fff;
  padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 600;
}
.abe-bc-body { padding: 1rem 1.25rem; display: flex; flex-direction: column; gap: .5rem; }
.abe-bc-head { display: flex; justify-content: space-between; gap: .75rem; align-items: flex-start; }
.abe-bc-head h3 { margin: 0; font-size: 1.05rem; line-height: 1.3; font-weight: 600; color: #0f172a; }
.abe-bc-desc { color: #475569; font-size: 13px; line-height: 1.5; margin: 0; }
.abe-bc-meta-row { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: .1rem; }
.abe-bc-meta { display: inline-flex; align-items: center; gap: 4px; color: #475569; font-size: 12px; }
.abe-bc-meta--duration { background: rgba(37,99,235,.08); color: var(--color-primary-dk); padding: .1rem .45rem; border-radius: .25rem; font-weight: 600; }
.abe-bc-meta--rcat { background: rgba(37,99,235,.08); color: var(--color-primary-dk); padding: .1rem .45rem; border-radius: .25rem; font-weight: 600; }
.abe-bc-amenities { display: flex; flex-wrap: wrap; gap: .25rem; margin-top: .15rem; }
.abe-bc-amenity { font-size: .68rem; padding: .1rem .4rem; background: #f0fdf4; color: #15803d; border: 1px solid #bbf7d0; border-radius: 999px; }
.abe-bc-incl { font-size: .72rem; padding: .1rem .4rem; background: rgba(16,185,129,.08); color: #059669; border-radius: .25rem; font-weight: 600; }
.abe-bc-cancel small { color: #16a34a; font-weight: 500; }
.abe-bc-price-col {
  padding: 1rem;
  border-left: 1px solid #f1f5f9;
  display: flex; flex-direction: column; gap: .25rem; align-items: stretch; justify-content: center;
  background: linear-gradient(180deg, #f8fafc, #fff);
}
.abe-bc-price-col small { color: #6b7280; font-size: 11px; }
.abe-bc-price { font-size: 1.4rem; font-weight: 700; color: #0d9488; }
.abe-bc-net { font-size: .72rem; color: #9ca3af; text-decoration: line-through; }
.abe-bc-btn {
  margin-top: .5rem; padding: .5rem .75rem;
  background: #0d9488; color: #fff; border: 0; border-radius: 6px;
  font-size: 13px; font-weight: 600; cursor: pointer; text-align: center;
  text-decoration: none; display: inline-block;
}
.abe-bc-btn:hover { background: #0f766e; }
.abe-bc-btn--outline {
  background: #fff; color: #0d9488; border: 1px solid #0d9488;
  display: inline-flex; align-items: center; justify-content: center; gap: .25rem;
}
.abe-bc-btn--outline:hover { background: #f0fdfa; }
.abe-bc-btn--outline.in-cart { background: #0d9488; color: #fff; }

@media (max-width: 768px) {
  .abe-bc-card { grid-template-columns: 1fr; }
  .abe-bc-image { min-height: 180px; }
  .abe-bc-price-col { border-left: 0; border-top: 1px solid #f1f5f9; }
}

/* ── Transfer Card - vehicle image + journey + source badge ──── */
/* Class prefix is `.abe-trf-` (not `.abe-tc-`!) - `.abe-tc-*` is already
   used by the Terms & Conditions modal further down, which clamps cards
   to max-width 640px and adds vertical scroll. The transfer card needs
   its own namespace. */
.abe-trf-card {
  display: flex;
  background: #fff;
  border: 1px solid #eef2f7;
  border-radius: .85rem;
  box-shadow: 0 1px 6px rgba(15,23,42,.05);
  overflow: hidden;
  transition: box-shadow .2s, border-color .2s, transform .2s;
  position: relative;
  margin-bottom: 1rem;
}
.abe-trf-card:hover {
  box-shadow: 0 10px 28px rgba(15,23,42,.10);
  border-color: #cbd5e1;
  transform: translateY(-1px);
}
.abe-trf-image {
  flex: 0 0 280px;
  position: relative;
  display: flex; align-items: center; justify-content: center;
  min-height: 200px;
  padding: .5rem;
  overflow: hidden;
}
/* `contain` (not `cover`) so the whole vehicle is visible - Hotelbeds
   ships wide-format vehicle stock photos that get awkwardly cropped at
   the wheels with object-fit:cover. The padded gradient background fills
   any letterbox space and keeps the card looking clean. */
.abe-trf-image img { max-width: 100%; max-height: 100%; object-fit: contain; }
.abe-trf-image-fallback { color: var(--color-primary-dk); }
/* Source-of-inventory badge - green for Best Deal (extranet), blue for Live Deal (API). */
.abe-trf-badge {
  position: absolute; top: 10px; left: 10px;
  padding: .22rem .55rem; border-radius: 4px;
  font-size: 11px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase;
  color: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.15);
}
.abe-trf-badge--best { background: linear-gradient(135deg, #16a34a, #15803d); }
.abe-trf-badge--live { background: linear-gradient(135deg, var(--color-primary-dk), var(--color-primary-dk)); }

.abe-trf-body { flex: 1 1 auto; padding: 1rem 1.25rem; display: flex; flex-direction: column; gap: .5rem; min-width: 0; }
.abe-trf-head { display: flex; justify-content: space-between; gap: .75rem; align-items: flex-start; }
.abe-trf-head h3 { margin: 0; font-size: 1.05rem; line-height: 1.3; font-weight: 600; color: #0f172a; }
.abe-trf-type-chip {
  font-size: 10px; font-weight: 700; letter-spacing: .04em;
  padding: .15rem .5rem; border-radius: 999px;
  background: rgba(37,99,235,.1); color: var(--color-primary-dk);
}
.abe-trf-route { display: flex; align-items: center; gap: .35rem; color: #334155; font-size: 13px; }
.abe-trf-route svg { color: var(--color-primary-dk); flex-shrink: 0; }
.abe-trf-meta-row { display: flex; flex-wrap: wrap; gap: .85rem; margin-top: .1rem; }
.abe-trf-meta { display: inline-flex; align-items: center; gap: 4px; color: #475569; font-size: 12px; }
.abe-trf-meta--cat { background: rgba(37,99,235,.08); color: var(--color-primary-dk); padding: .1rem .45rem; border-radius: .25rem; font-weight: 600; }
.abe-trf-cancel small { color: #16a34a; font-weight: 500; }

.abe-trf-price-col {
  flex: 0 0 200px;
  padding: 1rem;
  border-left: 1px solid #f1f5f9;
  display: flex; flex-direction: column; gap: .15rem; align-items: stretch; justify-content: center;
  background: linear-gradient(180deg, #f8fafc, #fff);
}
.abe-trf-price-label { font-size: 11px; color: #6b7280; text-transform: uppercase; letter-spacing: .03em; }
.abe-trf-price { font-size: 1.4rem; font-weight: 700; color: #0d9488; }
.abe-trf-net { font-size: .72rem; color: #9ca3af; text-decoration: line-through; }
.abe-trf-btn {
  margin-top: .5rem; padding: .5rem .75rem;
  background: #0d9488; color: #fff; border: 0; border-radius: 6px;
  font-size: 13px; font-weight: 600; cursor: pointer; text-align: center;
  text-decoration: none; display: inline-block;
}
.abe-trf-btn:hover { background: #0f766e; }
.abe-trf-btn--outline {
  background: #fff; color: #0d9488; border: 1px solid #0d9488;
  display: inline-flex; align-items: center; justify-content: center; gap: .25rem;
}
.abe-trf-btn--outline:hover { background: #f0fdfa; }
.abe-trf-btn--outline.in-cart { background: #0d9488; color: #fff; }

@media (max-width: 768px) {
  .abe-trf-card { flex-direction: column; }
  .abe-trf-image { flex: 0 0 auto; min-height: 180px; }
  .abe-trf-price-col { flex: 0 0 auto; border-left: 0; border-top: 1px solid #f1f5f9; }
}

/* ── Flight Review & Book (B2B-style parity) ─────────────────── */
.abe-rv-flight-head {
  display: flex; align-items: center; gap: 1rem;
  padding-bottom: 1rem; border-bottom: 1px solid #e2e8f0; margin-bottom: 1rem;
}
.abe-rv-flight-info { flex: 1; }
.abe-rv-flight-date { text-align: right; }
.abe-rv-flight-date small { display: block; font-size: .7rem; color: #64748b; text-transform: uppercase; letter-spacing: .04em; }
.abe-rv-flight-date strong { font-size: .9rem; color: #0f172a; }

.abe-rv-route {
  display: grid; grid-template-columns: 1fr 1.5fr 1fr;
  align-items: center; gap: 1rem; padding: 1rem 0;
}
.abe-rv-route-end { text-align: center; }
.abe-rv-route-end small { display: block; font-size: .72rem; color: #64748b; margin-top: .15rem; }
.abe-rv-route-time { font-size: 1.5rem; font-weight: 700; color: #0f172a; line-height: 1; }
.abe-rv-route-code { font-size: .85rem; font-weight: 600; color: #475569; margin-top: .25rem; letter-spacing: .05em; }
.abe-rv-route-mid { display: flex; flex-direction: column; align-items: center; gap: .35rem; }
.abe-rv-route-duration { font-size: .75rem; color: #64748b; font-weight: 500; }
.abe-rv-route-line {
  position: relative; width: 100%; height: 16px;
  display: flex; align-items: center; justify-content: space-between;
}
.abe-rv-route-line::before {
  content: ''; position: absolute; left: 0; right: 0; top: 50%;
  height: 1px; background: #cbd5e1;
}
.abe-rv-route-stops { font-size: .7rem; color: #16a34a; font-weight: 600; }

.abe-rv-pax-grid {
  display: grid; gap: .75rem;
  grid-template-columns: 90px minmax(0, 1fr) minmax(0, 1fr) 110px 150px 130px;
  margin-bottom: .75rem;
}
.abe-rv-pax-grid > .abe-rv-field { min-width: 0; }
.abe-rv-pax-grid .abe-rv-field--passport { grid-column: 1 / span 3; }
.abe-rv-pax-grid .abe-rv-field--passport-exp { grid-column: 4 / span 3; }
/* Lead-guest PAN: an explained callout (icon + why + secure note), like GST. */
.abe-rv-pan-section { border: 1px solid #dbeafe; background: #f5f9ff; border-radius: 14px; padding: 1rem 1.1rem; margin: .25rem 0 .5rem; }
.abe-rv-pan-head { display: flex; gap: .75rem; align-items: flex-start; margin-bottom: .85rem; }
.abe-rv-pan-ico { flex: 0 0 auto; width: 38px; height: 38px; border-radius: 10px; background: #dbeafe; color: #1d4ed8; display: flex; align-items: center; justify-content: center; }
.abe-rv-pan-ico svg { width: 20px; height: 20px; }
.abe-rv-pan-copy strong { display: block; font-size: .95rem; color: #0f172a; margin-bottom: .15rem; }
.abe-rv-pan-copy p { margin: 0; font-size: .82rem; color: #475569; line-height: 1.5; }
.abe-rv-pan-input { display: block; max-width: 340px; }
.abe-rv-pan-input .abe-rv-fld-input { letter-spacing: .06em; font-weight: 600; }
.abe-rv-pan-secure { display: flex; align-items: center; gap: .4rem; margin-top: .6rem; font-size: .76rem; color: #64748b; }
.abe-rv-pan-secure svg { width: 14px; height: 14px; flex: 0 0 auto; color: #16a34a; }
/* GST for business travel: explained callout with a toggle switch, like PAN. */
.abe-rv-gst-section { border: 1px solid #e2e8f0; background: #fafcff; border-radius: 14px; padding: 1rem 1.1rem; margin: .25rem 0 1rem; }
.abe-rv-gst-head { display: flex; gap: .75rem; align-items: flex-start; }
.abe-rv-gst-ico { flex: 0 0 auto; width: 38px; height: 38px; border-radius: 10px; background: #ecfdf5; color: #059669; display: flex; align-items: center; justify-content: center; }
.abe-rv-gst-ico svg { width: 20px; height: 20px; }
.abe-rv-gst-copy { flex: 1 1 auto; min-width: 0; }
.abe-rv-gst-copy strong { display: block; font-size: .95rem; color: #0f172a; margin-bottom: .15rem; }
.abe-rv-gst-copy p { margin: 0; font-size: .82rem; color: #475569; line-height: 1.5; }
.abe-rv-gst-opt { display: inline-block; margin-left: .4rem; background: #f1f5f9; color: #64748b; font-size: .66rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; padding: .1rem .45rem; border-radius: 99px; vertical-align: middle; }
.abe-rv-gst-switch { flex: 0 0 auto; position: relative; display: inline-block; width: 44px; height: 24px; cursor: pointer; margin-top: .15rem; }
.abe-rv-gst-switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.abe-rv-gst-slider { position: absolute; inset: 0; background: #cbd5e1; border-radius: 99px; transition: background .2s; }
.abe-rv-gst-slider::before { content: ""; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; background: #fff; border-radius: 50%; transition: transform .2s; box-shadow: 0 1px 2px rgba(0,0,0,.25); }
.abe-rv-gst-switch input:checked + .abe-rv-gst-slider { background: var(--primary, #2563eb); }
.abe-rv-gst-switch input:checked + .abe-rv-gst-slider::before { transform: translateX(20px); }
.abe-rv-gst-panel { margin-top: 1rem; }

/* ── Passenger Details - Trip.com-inspired card (placeholder-as-label) ─── */
/* Card chrome is applied to the BODY only - the header sits as plain text
   above it with no background and no top/left/right border. Title style
   matches the unified booking-page section heading (Seats, Meals &
   Baggage / Cancellations & changes look). */
.abe-rv-pax-card {
  background: transparent; border: none; border-radius: 0;
  padding: 0; overflow: visible;
}
.abe-rv-pax-header {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; padding: 0 0 .85rem;
  background: transparent; border: none;
}
.abe-rv-pax-title {
  font-size: 20px;
  font-weight: 700;
  color: #0f172a;
  margin: 0;
  line-height: 1.25;
}
.abe-rv-pax-sub {
  display: block; font-size: .85rem; color: #64748b; margin-top: .15rem;
}
.abe-rv-signin {
  display: inline-flex; align-items: center; gap: .35rem;
  font-size: .82rem; text-decoration: none;
}
.abe-rv-signin svg { color: #16a34a; }
.abe-rv-signin span { color: #475569; }
.abe-rv-signin strong { color: var(--color-primary-dk); font-weight: 600; }
.abe-rv-signin:hover strong { text-decoration: underline; }

.abe-rv-pax-body {
  padding: 1.25rem 1.5rem;
  background: #fff; border: 1px solid #f1f5f9; border-radius: 12px;
  box-shadow: 0 4px 14px rgba(15,23,42,.06), 0 1px 3px rgba(15,23,42,.04);
}

.abe-rv-pax-block { margin-bottom: 1.5rem; }
.abe-rv-pax-block:last-of-type { margin-bottom: 0; }
.abe-rv-pax-block-title {
  display: flex; align-items: center; gap: .55rem;
  font-size: .95rem; font-weight: 700; color: #0f172a;
  margin-bottom: .9rem;
}

/* 3-column row: splits the 6 fields into two visual rows of three each
   (Title / First / Last  →  Type / DOB / Gender). */
.abe-rv-pax-grid--meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .85rem; margin-bottom: .85rem;
}
.abe-rv-pax-grid--passport {
  display: grid; grid-template-columns: 1fr 1fr; gap: .85rem;
}
/* Guest details (hotels): Title (narrow) / First / Last */
.abe-rv-pax-grid--guest {
  display: grid; grid-template-columns: 130px minmax(0,1fr) minmax(0,1fr);
  gap: .85rem; margin-bottom: .85rem;
}
@media (max-width: 600px) {
  .abe-rv-pax-grid--guest { grid-template-columns: 1fr; }
}
/* Contact Info grids: Full Name / Country / Phone / Email = 4 cols,
   Address / City / Postal = 3 cols. */
.abe-rv-pax-grid--contact4 {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .85rem; margin-bottom: .85rem;
}
.abe-rv-pax-grid--contact3 {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .85rem; margin-bottom: .85rem;
}
.abe-rv-fld--full { display: block; }
.abe-rv-fld--full .abe-rv-fld-input {
  min-height: 90px; resize: vertical;
}

/* ── Price details sidebar card (Trip.com-inspired) ─────────────── */
.abe-rv-pricing-card-v2 {
  background: #fff; border: 1px solid #f1f5f9;
  border-radius: 12px;
  padding: 1.25rem 1.35rem;
  margin-bottom: 1rem;
  font-size: .9rem;
  box-shadow: 0 4px 14px rgba(15,23,42,.06), 0 1px 3px rgba(15,23,42,.04);
}
.abe-rv-price-heading {
  font-size: 1.4rem; font-weight: 700; color: #0f172a;
  margin: 0 0 1rem; padding: 0; line-height: 1.25;
}
.abe-rv-price-body { padding: 0; }

.abe-rv-pd-group {
  margin-bottom: 1rem;
}
.abe-rv-pd-group:last-of-type { margin-bottom: .5rem; }

.abe-rv-pd-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: .75rem; padding: .35rem 0;
  font-size: .9rem; color: #0f172a;
}
.abe-rv-pd-row--main {
  font-weight: 700; font-size: .95rem;
  background: transparent; border: none; width: 100%;
  font-family: inherit; cursor: default; color: #0f172a;
  text-align: left;
}
button.abe-rv-pd-row--main.is-collapsible { cursor: pointer; }
.abe-rv-pd-label {
  display: inline-flex; align-items: center; gap: .25rem;
}
.abe-rv-pd-chev {
  color: #64748b; transition: transform .15s;
}
.abe-rv-pd-row--main[aria-expanded="false"] .abe-rv-pd-chev {
  transform: rotate(-90deg);
}
.abe-rv-pd-value {
  font-weight: 700; color: #0f172a; white-space: nowrap;
}

.abe-rv-pd-subgroup {
  padding: .15rem 0 .15rem .25rem;
}
.abe-rv-pd-row--sub {
  font-size: .82rem; color: #64748b; font-weight: 500;
  padding: .25rem 0;
}
.abe-rv-pd-row--sub > span:first-child {
  border-bottom: 1px dotted #cbd5e1; padding-bottom: 1px;
}
.abe-rv-pd-row--sub > span:last-child {
  color: #334155; font-weight: 500;
}
.abe-rv-pd-row--main[aria-expanded="false"] + .abe-rv-pd-subgroup {
  display: none;
}

/* Total row - bold label, optional savings pill, accent-coloured amount */
.abe-rv-pd-total {
  display: flex; align-items: center; justify-content: space-between;
  gap: .75rem; padding: .85rem 0 .25rem;
  margin-top: .5rem;
  border-top: 1px solid #e2e8f0;
}
.abe-rv-pd-total-label {
  font-size: 1.05rem; font-weight: 700; color: #0f172a;
}
.abe-rv-pd-total-right {
  display: inline-flex; align-items: center; gap: .55rem;
}
.abe-rv-pd-save {
  font-size: .72rem; font-weight: 700;
  color: #be185d; background: #fce7f3;
  padding: .25rem .55rem; border-radius: 4px;
  white-space: nowrap;
}
.abe-rv-pd-total-amount {
  font-size: 1.15rem; font-weight: 700; color: #be185d;
  white-space: nowrap;
}

/* Terms checkbox + Confirm button + Secure note - sit INSIDE the price card */
.abe-rv-pd-actions {
  margin-top: 1rem; padding-top: 0;
}
.abe-rv-pd-actions .abe-rv-terms { margin-bottom: .85rem; display: flex; }
.abe-rv-pd-actions .abe-rv-confirm-btn { margin-top: 0; }
.abe-rv-pd-actions .abe-rv-secure-note {
  margin-top: .65rem; justify-content: center;
}

/* Field shell (placeholder-as-label, soft card style) */
.abe-rv-fld {
  position: relative; display: block; min-width: 0;
}
.abe-rv-fld-input {
  width: 100%; padding: .9rem 1rem;
  font-size: .9rem; font-family: inherit; color: #0f172a;
  background: #fff; border: 1px solid #cbd5e1; border-radius: 6px;
  outline: none; transition: border-color .15s, box-shadow .15s;
  box-sizing: border-box;
}
.abe-rv-fld-input::placeholder { color: #94a3b8; }
.abe-rv-fld-input:focus,
.abe-rv-fld-input:focus-visible {
  border-color: var(--color-primary-dk);
  box-shadow: 0 0 0 3px rgba(37,99,235,.12);
}
.abe-rv-fld--select { position: relative; }
.abe-rv-fld--select::after {
  content: '';
  position: absolute; right: 1rem; top: 50%;
  width: 7px; height: 7px;
  border-right: 1.5px solid #64748b;
  border-bottom: 1.5px solid #64748b;
  transform: translateY(-75%) rotate(45deg);
  pointer-events: none;
}
.abe-rv-fld--select .abe-rv-fld-input {
  appearance: none; -webkit-appearance: none; -moz-appearance: none;
  padding-right: 2.25rem;
}

/* Bottom info notes block */
.abe-rv-pax-notes {
  list-style: none; margin: .85rem 0 0; padding: .9rem 1rem;
  background: #f1f5f9; border-radius: 6px;
  font-size: .82rem; color: #475569; line-height: 1.45;
}
.abe-rv-pax-notes li {
  position: relative; padding-left: 1rem; margin-bottom: .35rem;
}
.abe-rv-pax-notes li::before {
  content: '•'; position: absolute; left: 0; color: #94a3b8; font-weight: 700;
}
.abe-rv-pax-notes li:last-child { margin-bottom: 0; }

/* Tablet: keep 3 columns but tighter; mobile: stack to single column */
@media (max-width: 900px) {
  .abe-rv-pax-grid--contact4 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 720px) {
  .abe-rv-pax-grid--meta { grid-template-columns: 1fr 1fr; }
  .abe-rv-pax-grid--passport { grid-template-columns: 1fr; }
  .abe-rv-pax-grid--contact3 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
  .abe-rv-pax-grid--meta,
  .abe-rv-pax-grid--contact4,
  .abe-rv-pax-grid--contact3 { grid-template-columns: 1fr; }
}

.abe-rv-pax-ancillaries {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: .75rem;
  padding-top: .75rem; border-top: 1px dashed #e2e8f0;
}
.abe-rv-anc-tile {
  border: 1px solid #e2e8f0; border-radius: .5rem; padding: .6rem; background: #fafbfc;
}
.abe-rv-anc-head {
  display: flex; align-items: center; gap: .4rem; margin-bottom: .5rem;
}
.abe-rv-anc-head svg { color: var(--color-primary); flex-shrink: 0; }
.abe-rv-anc-head strong { font-size: .82rem; color: #0f172a; }
.abe-rv-anc-sub { font-size: .7rem; color: #94a3b8; margin-left: auto; }
.abe-rv-anc-opts { display: grid; grid-template-columns: 1fr 1fr; gap: .35rem; }
.abe-rv-anc-opt {
  position: relative; display: block; cursor: pointer;
}
.abe-rv-anc-opt input { position: absolute; opacity: 0; pointer-events: none; }
.abe-rv-anc-opt-body {
  border: 1.5px solid #e2e8f0; border-radius: .4rem; padding: .4rem .35rem;
  text-align: center; background: #fff; transition: all .15s;
  display: flex; flex-direction: column; align-items: center; gap: .15rem;
  min-height: 70px; justify-content: center;
}
.abe-rv-anc-opt input:checked + .abe-rv-anc-opt-body {
  border-color: var(--color-primary); background: #eff6ff; box-shadow: 0 0 0 3px rgba(59,130,246,.1);
}
.abe-rv-anc-opt-icon { color: #64748b; }
.abe-rv-anc-opt-emoji { font-size: 1.1rem; }
.abe-rv-anc-opt-body strong { font-size: .72rem; color: #0f172a; font-weight: 600; }
.abe-rv-anc-opt-body small { font-size: .66rem; color: #94a3b8; }
.abe-rv-anc-opt-icon--bag { position: relative; }
.abe-rv-anc-bag-plus {
  position: absolute; top: -4px; right: -6px; font-size: .55rem;
  background: var(--color-primary); color: #fff; border-radius: 8px; padding: 1px 4px; font-weight: 700;
}

.abe-rv-addon-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .6rem;
}
.abe-rv-addon-card {
  position: relative; display: grid;
  grid-template-columns: 40px 1fr auto; align-items: center; gap: .6rem;
  padding: .65rem .75rem; border: 1.5px solid #e2e8f0; border-radius: .5rem;
  background: #fff; cursor: pointer; transition: all .15s;
}
.abe-rv-addon-card input { position: absolute; opacity: 0; pointer-events: none; }
.abe-rv-addon-card:hover { border-color: #cbd5e1; }
.abe-rv-addon-card:has(input:checked) {
  border-color: var(--color-primary); background: #eff6ff; box-shadow: 0 0 0 3px rgba(59,130,246,.08);
}
.abe-rv-addon-icon {
  width: 40px; height: 40px; border-radius: 8px;
  background: #f1f5f9; color: var(--color-primary);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.abe-rv-addon-card:has(input:checked) .abe-rv-addon-icon { background: var(--color-primary); color: #fff; }
.abe-rv-addon-body { display: flex; flex-direction: column; gap: .1rem; min-width: 0; }
.abe-rv-addon-body strong { font-size: .82rem; color: #0f172a; font-weight: 600; }
.abe-rv-addon-body small { font-size: .7rem; color: #64748b; }
.abe-rv-addon-fee { font-size: .8rem; font-weight: 700; color: #0f172a; white-space: nowrap; }
.abe-rv-addon-check {
  position: absolute; top: 8px; right: 8px;
  width: 16px; height: 16px; border-radius: 50%;
  background: var(--color-primary); color: #fff;
  display: none; align-items: center; justify-content: center;
}
.abe-rv-addon-card:has(input:checked) .abe-rv-addon-check { display: flex; }

/* ── Per-leg add-ons (inside each flight leg card) ──────────── */
.abe-rv-addon-disclaimer {
  display: flex; align-items: flex-start; gap: .5rem;
  background: #fffbeb; border: 1px solid #fde68a; color: #92400e;
  padding: .6rem .75rem; border-radius: .4rem; font-size: .78rem;
  margin-bottom: .75rem;
}
.abe-rv-addon-disclaimer svg { color: #d97706; flex-shrink: 0; margin-top: 2px; }

.abe-rv-leg-addons {
  margin-top: .9rem; padding-top: .9rem; border-top: 1px dashed #e2e8f0;
}
.abe-rv-leg-addons-head {
  display: flex; align-items: center; gap: .4rem; margin-bottom: .6rem;
}
.abe-rv-leg-addons-head svg { color: #f59e0b; flex-shrink: 0; }
.abe-rv-leg-addons-head strong { font-size: .88rem; color: #0f172a; }
.abe-rv-leg-addons-empty {
  padding: .6rem; background: #f8fafc; border: 1px dashed #e2e8f0;
  border-radius: .4rem; font-size: .78rem; color: #94a3b8; text-align: center;
}
.abe-rv-addon-grid--leg { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }

/* ── Per-leg × per-pax Seat/Meal/Baggage matrix ─────────────── */
.abe-rv-leg-pax {
  margin-top: .9rem; padding-top: .9rem; border-top: 1px dashed #e2e8f0;
}
.abe-rv-leg-pax-head {
  display: flex; align-items: center; gap: .4rem; margin-bottom: .7rem;
}
.abe-rv-leg-pax-head svg { color: var(--color-primary); flex-shrink: 0; }
.abe-rv-leg-pax-head strong { font-size: .88rem; color: #0f172a; }
.abe-rv-leg-pax-head .abe-text-muted { margin-left: auto; }
.abe-rv-leg-pax-row {
  padding: .65rem; background: #f8fafc; border: 1px solid #e2e8f0;
  border-radius: .5rem; margin-bottom: .6rem;
}
.abe-rv-leg-pax-row:last-child { margin-bottom: 0; }
.abe-rv-leg-pax-label {
  display: flex; align-items: center; gap: .4rem; margin-bottom: .5rem;
}
.abe-rv-leg-pax-label .abe-rv-guest-num {
  width: 20px; height: 20px; border-radius: 50%; background: var(--color-primary); color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: .7rem; font-weight: 700;
}
.abe-rv-leg-pax-label strong { font-size: .82rem; color: #0f172a; }
.abe-rv-leg-pax-tiles {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem;
}

@media (max-width: 760px) {
  .abe-rv-leg-pax-tiles { grid-template-columns: 1fr; }
}

.abe-rv-price-row--head span:last-child { font-weight: 700 !important; color: var(--color-primary) !important; }
.abe-rv-price-row--sub { padding-left: .75rem; font-size: .78rem; color: #64748b; }
.abe-rv-price-row--sub span { font-weight: 400 !important; color: #64748b !important; }
.abe-rv-price-section--anc { background: #f8fafc; border-radius: .4rem; padding: .5rem; }

.abe-text-muted { color: #94a3b8; font-size: .75rem; font-weight: 400; margin-left: .5rem; }
.abe-rv-textarea { font-family: inherit; resize: vertical; min-height: 60px; }

@media (max-width: 960px) {
  .abe-rv-pax-grid { grid-template-columns: 90px minmax(0, 1fr) minmax(0, 1fr); }
  .abe-rv-pax-grid .abe-rv-field--type,
  .abe-rv-pax-grid .abe-rv-field--dob,
  .abe-rv-pax-grid .abe-rv-field--gender,
  .abe-rv-pax-grid .abe-rv-field--passport,
  .abe-rv-pax-grid .abe-rv-field--passport-exp { grid-column: 1 / span 3; }
  .abe-rv-pax-ancillaries { grid-template-columns: 1fr; }
  .abe-rv-route { grid-template-columns: 1fr; gap: .5rem; }
}

/* ── Excursion Review (carousel, timeline, inc/exc) ──────────── */
.abe-exc-carousel {
  position: relative; border-radius: 12px; overflow: hidden;
  margin-bottom: 1rem; background: #0f172a;
}
.abe-exc-carousel-track { position: relative; width: 100%; height: 380px; }
.abe-exc-carousel-slide {
  position: absolute; inset: 0; opacity: 0; transition: opacity .45s ease;
}
.abe-exc-carousel-slide.active { opacity: 1; z-index: 1; }
.abe-exc-carousel-slide img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.abe-exc-carousel-arrow {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 3;
  background: rgba(0,0,0,.35); color: #fff; border: none;
  width: 40px; height: 40px; border-radius: 50%;
  font-size: 1.4rem; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  backdrop-filter: blur(4px); transition: background .2s;
}
.abe-exc-carousel-arrow:hover { background: rgba(0,0,0,.6); }
.abe-exc-carousel-prev { left: 12px; }
.abe-exc-carousel-next { right: 12px; }
.abe-exc-carousel-dots {
  position: absolute; bottom: 14px; left: 50%; transform: translateX(-50%);
  z-index: 3; display: flex; gap: 7px;
}
.abe-exc-dot {
  width: 9px; height: 9px; border-radius: 50%;
  background: rgba(255,255,255,.45); cursor: pointer;
  transition: all .25s; border: 1.5px solid rgba(255,255,255,.6);
}
.abe-exc-dot.active { background: #fff; transform: scale(1.25); border-color: #fff; }
.abe-exc-carousel-badge {
  position: absolute; top: 14px; left: 14px; z-index: 3;
  background: rgba(255,255,255,.92); color: #1e293b;
  font-weight: 700; font-size: .8rem;
  padding: 5px 14px; border-radius: 20px;
  box-shadow: 0 2px 8px rgba(0,0,0,.12);
}
.abe-exc-carousel-counter {
  position: absolute; top: 14px; right: 14px; z-index: 3;
  background: rgba(0,0,0,.45); color: #fff;
  font-size: .72rem; padding: 4px 10px; border-radius: 12px;
  backdrop-filter: blur(4px);
}

.abe-exc-badges {
  display: flex; align-items: center; flex-wrap: wrap;
  gap: .4rem; margin-bottom: .75rem;
}
.abe-exc-badge {
  display: inline-flex; align-items: center; gap: .25rem;
  padding: 3px 10px; border-radius: 6px;
  font-size: .8rem; font-weight: 600;
}
.abe-exc-badge--rating { background: #16a34a; color: #fff; }
.abe-exc-reviews-count { color: #64748b; font-size: .8rem; }
.abe-exc-badge--category { background: #f1f5f9; color: #334155; }
.abe-exc-badge--success { background: #dcfce7; color: #15803d; }
.abe-exc-badge--danger  { background: #fef2f2; color: #dc2626; }

.abe-exc-long-desc {
  color: #334155; line-height: 1.65;
  margin-bottom: 1rem; font-size: .88rem;
  /* The provider feeds in multi-line text (\n separators); render the
     newlines visually instead of collapsing them to single spaces. */
  white-space: pre-line;
}
/* Read-more clamp - hide everything past ~7 lines until the toggle expands. */
.abe-exc-long-desc.is-clamped {
  display: -webkit-box;
  -webkit-line-clamp: 7;
  -webkit-box-orient: vertical;
  overflow: hidden;
  position: relative;
}
.abe-exc-long-desc.is-clamped::after {
  content: '';
  position: absolute; left: 0; right: 0; bottom: 0;
  height: 2.5em;
  background: linear-gradient(to bottom, rgba(255,255,255,0), #fff);
  pointer-events: none;
}
.abe-exc-desc-toggle {
  display: inline-block; margin-top: -.4rem; margin-bottom: .75rem;
  background: none; border: 0; padding: .25rem 0;
  color: #0ea5e9; font-weight: 600; font-size: .82rem; cursor: pointer;
}
.abe-exc-desc-toggle:hover { text-decoration: underline; }
.abe-exc-diff-dot {
  display: inline-block; width: 16px; height: 16px;
  border-radius: 50%; flex-shrink: 0;
}

.abe-exc-highlights { display: flex; flex-wrap: wrap; gap: .4rem; }
.abe-exc-highlight-chip {
  background: #f0fdf4; color: #15803d;
  border: 1px solid #bbf7d0;
  padding: 5px 12px; border-radius: 20px;
  font-size: .8rem; font-weight: 500;
}

.abe-exc-timeline { position: relative; padding-left: 28px; }
.abe-exc-timeline-line {
  position: absolute; left: 11px; top: 8px; bottom: 8px;
  width: 2px; background: #e2e8f0;
}
.abe-exc-timeline-step { position: relative; padding-bottom: 1.25rem; }
.abe-exc-timeline-step--last { padding-bottom: 0; }
.abe-exc-timeline-dot {
  position: absolute; left: -21px; top: 3px;
  width: 12px; height: 12px; border-radius: 50%;
  border: 2px solid #fff;
}
.abe-exc-timeline-header {
  display: flex; align-items: baseline; gap: .5rem;
  margin-bottom: .2rem; flex-wrap: wrap;
}
.abe-exc-timeline-time {
  font-size: .75rem; font-weight: 700; color: var(--color-primary);
  white-space: nowrap; min-width: 40px;
}
.abe-exc-timeline-header strong { font-size: .88rem; color: #1e293b; }
.abe-exc-timeline-dur { font-size: .7rem; color: #94a3b8; white-space: nowrap; }
.abe-exc-timeline-desc {
  margin: 0; font-size: .8rem; color: #64748b;
  line-height: 1.5; padding-left: 50px;
}

.abe-exc-inex-grid {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: .75rem; margin-bottom: .75rem;
}
.abe-exc-inex-card--inc { border-left: 3px solid #16a34a; }
.abe-exc-inex-card--exc { border-left: 3px solid #dc2626; }
.abe-exc-inex-title { font-size: .95rem !important; }
.abe-exc-inex-title--inc { color: #16a34a; }
.abe-exc-inex-title--exc { color: #dc2626; }
.abe-exc-inex-list { list-style: none; padding: 0; margin: 0; }
.abe-exc-inex-list li {
  padding: 4px 0; font-size: .82rem; color: #334155;
  display: flex; align-items: start; gap: .4rem;
}
.abe-exc-inex-bullet { font-weight: 700; flex-shrink: 0; }
.abe-exc-inex-bullet--inc { color: #16a34a; }
.abe-exc-inex-bullet--exc { color: #dc2626; }

.abe-exc-cancel-chip-row { display: flex; gap: .5rem; margin-bottom: .5rem; }
.abe-exc-min-age {
  font-size: .82rem; color: #d97706;
  margin: .5rem 0 0; font-weight: 500;
}
.abe-exc-summary-title { margin-bottom: .75rem; }
.abe-exc-summary-title strong { font-size: .9rem; color: #1e293b; display: block; }
.abe-exc-summary-title small {
  display: block; font-size: .78rem; color: #64748b; margin-top: .2rem;
}

@media (max-width: 720px) {
  .abe-exc-inex-grid { grid-template-columns: 1fr; }
  .abe-exc-carousel-track { height: 240px; }
}

/* ── Confirmation (voucher-style) ────────────────────────────── */
.abe-conf-wrap { max-width: 1100px; margin: 0 auto; }
.abe-conf-hero {
  text-align: center;
  background: linear-gradient(135deg, #16a34a 0%, #22c55e 100%);
  color: #fff; border-radius: 14px;
  padding: 2rem 1.25rem; margin-bottom: 1.25rem;
  box-shadow: 0 8px 24px rgba(22,163,74,.22);
}
.abe-conf-check {
  width: 64px; height: 64px; margin: 0 auto .75rem;
  background: rgba(255,255,255,.22); border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
}
.abe-conf-check svg {
  width: 36px; height: 36px; color: #fff;
}
.abe-conf-heading {
  margin: 0 0 .35rem; font-size: 1.6rem; color: #fff; font-weight: 700;
}
.abe-conf-sub { margin: 0 0 1.25rem; opacity: .92; font-size: .92rem; }
.abe-conf-ref-row {
  display: flex; justify-content: center; gap: .75rem;
  flex-wrap: wrap;
}
.abe-conf-ref-box {
  background: rgba(255,255,255,.15); border-radius: 10px;
  padding: .65rem 1rem; min-width: 140px;
  backdrop-filter: blur(6px);
}
.abe-conf-ref-box small {
  display: block; font-size: .7rem; opacity: .8;
  text-transform: uppercase; letter-spacing: .06em;
}
.abe-conf-ref-box strong {
  font-size: 1rem; font-weight: 700;
  letter-spacing: .02em;
}
.abe-conf-status--confirmed,
.abe-conf-status--on_hold,
.abe-conf-status--pending { color: #fff; }

.abe-conf-layout {
  display: grid; grid-template-columns: 1fr 340px; gap: 1rem;
}
.abe-conf-sidebar { display: flex; flex-direction: column; gap: 1rem; }

.abe-conf-voucher-head {
  display: flex; gap: 1rem; align-items: center;
  padding: 1rem; border-bottom: 1px solid #e2e8f0;
  background: #f8fafc;
}
.abe-conf-voucher-img {
  width: 100px; height: 72px;
  background-size: cover; background-position: center;
  border-radius: 8px; flex-shrink: 0;
}
.abe-conf-voucher-info { flex: 1; min-width: 0; }
.abe-conf-voucher-info h3 {
  margin: .25rem 0 .35rem; font-size: 1.05rem;
  color: #0f172a; font-weight: 700;
}
.abe-conf-voucher-meta {
  display: flex; gap: .75rem;
  font-size: .78rem; color: #64748b;
}

.abe-conf-steps {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: .65rem;
  counter-reset: conf-step;
}
.abe-conf-steps li {
  position: relative; padding-left: 40px;
  min-height: 32px; counter-increment: conf-step;
}
.abe-conf-steps li::before {
  content: counter(conf-step);
  position: absolute; left: 0; top: 0;
  width: 28px; height: 28px; border-radius: 50%;
  background: #dbeafe; color: var(--color-primary-dk);
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: .85rem;
}
.abe-conf-steps li strong {
  display: block; font-size: .88rem; color: #0f172a; margin-bottom: .15rem;
}
.abe-conf-steps li small { font-size: .8rem; color: #64748b; line-height: 1.4; }

.abe-conf-summary {
  display: grid; grid-template-columns: auto 1fr;
  gap: .4rem .75rem; margin: 0 0 .75rem;
}
.abe-conf-summary dt { font-size: .78rem; color: #64748b; }
.abe-conf-summary dd { margin: 0; font-size: .82rem; color: #0f172a; font-weight: 500; text-align: right; }

.abe-conf-secondary {
  width: 100%; margin-top: .5rem;
  padding: .55rem .75rem;
  background: #fff; color: var(--color-primary-dk);
  border: 1.5px solid var(--color-primary-dk); border-radius: 8px;
  font-size: .88rem; font-weight: 600; cursor: pointer;
  transition: all .15s;
}
.abe-conf-secondary:hover { background: #eff6ff; }

.abe-conf-support {
  background: #fffbeb; border-left: 3px solid #eab308 !important;
}
.abe-conf-support p {
  margin: .35rem 0 0; font-size: .8rem; color: #78716c;
}

/* Hotel confirmation - stars, tags, guest grid, timeline */
.abe-conf-stars {
  display: inline-flex; gap: 2px; color: #f59e0b;
  font-size: .85rem; margin-left: .35rem;
}
.abe-conf-stars i { color: #f59e0b; }

.abe-conf-tags {
  display: flex; flex-wrap: wrap; gap: .4rem;
  margin: .6rem 0 .8rem;
}

.abe-conf-count {
  display: inline-block;
  padding: 2px 10px;
  background: #eff6ff; color: var(--color-primary-dk);
  font-size: .72rem; font-weight: 700;
  border-radius: 999px; letter-spacing: .03em;
  text-transform: uppercase;
}

.abe-conf-pax-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: .75rem;
}
.abe-conf-pax-card {
  display: flex; gap: .75rem; align-items: flex-start;
  padding: .75rem .85rem;
  background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px;
}
.abe-conf-pax-avatar {
  flex: 0 0 38px; width: 38px; height: 38px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--color-primary-dk), var(--color-primary-dk));
  color: #fff; font-weight: 700; font-size: .9rem;
  display: flex; align-items: center; justify-content: center;
}
.abe-conf-pax-info { min-width: 0; flex: 1; }
.abe-conf-pax-name {
  font-weight: 600; color: #0f172a; font-size: .9rem;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.abe-conf-pax-meta {
  font-size: .78rem; color: #64748b; margin-top: 2px;
  line-height: 1.4;
}

.abe-conf-timeline {
  list-style: none; padding: 0; margin: 0;
  position: relative;
}
.abe-conf-timeline::before {
  content: ''; position: absolute;
  left: 7px; top: 6px; bottom: 6px;
  width: 2px; background: #e2e8f0;
}
.abe-conf-tl {
  position: relative; padding: 0 0 .85rem 1.75rem;
  font-size: .82rem; color: #64748b;
}
.abe-conf-tl:last-child { padding-bottom: 0; }
.abe-conf-tl-dot {
  position: absolute; left: 2px; top: 4px;
  width: 12px; height: 12px; border-radius: 50%;
  background: #fff; border: 2px solid #cbd5e1;
}
.abe-conf-tl--done { color: #0f172a; font-weight: 500; }
.abe-conf-tl--done .abe-conf-tl-dot {
  background: #16a34a; border-color: #16a34a;
  box-shadow: 0 0 0 3px rgba(22,163,74,.15);
}
.abe-conf-tl small {
  display: block; color: #94a3b8; font-size: .72rem;
  margin-top: 2px; font-weight: 400;
}

/* Flight confirmation - airline badge framing + route spacing */
.abe-conf-flight-badge {
  flex: 0 0 auto;
  display: flex; align-items: center; justify-content: center;
  padding: .5rem;
}
.abe-conf-flight-badge .abe-airline-badge {
  width: 56px; height: 56px; font-size: 1.1rem;
  border-radius: 12px;
}

.abe-conf-route {
  margin: 1rem 0 1.25rem;
  padding: 1rem;
  background: linear-gradient(135deg, #f8fafc, #eff6ff);
  border: 1px solid #e2e8f0; border-radius: 10px;
}

@media (max-width: 960px) {
  .abe-conf-layout { grid-template-columns: 1fr; }
  .abe-conf-voucher-head { flex-direction: column; text-align: center; }
  .abe-conf-pax-grid { grid-template-columns: 1fr; }
  .abe-conf-flight-badge .abe-airline-badge { width: 44px; height: 44px; font-size: .95rem; }
}

/* ══════════════════════════════════════════════════════════════
   PACKAGE REVIEW - B2B parity
   ══════════════════════════════════════════════════════════════ */
.abe-pkg-type-pill {
  display: inline-block;
  padding: 2px 10px;
  background: linear-gradient(135deg, #7c3aed, #a855f7);
  color: #fff; font-size: .72rem; font-weight: 700;
  border-radius: 999px; letter-spacing: .04em;
  text-transform: uppercase;
}

.abe-pkg-stat-grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: .75rem; margin-bottom: 1rem;
}
.abe-pkg-stat {
  background: #fff; border: 1px solid #e2e8f0;
  border-radius: 10px; padding: .7rem .9rem;
  display: flex; flex-direction: column; gap: 2px;
  box-shadow: 0 1px 2px rgba(0,0,0,.03);
}
.abe-pkg-stat strong {
  font-size: 1rem; color: #0f172a; line-height: 1.2;
}
.abe-pkg-stat small {
  font-size: .72rem; color: #64748b;
  text-transform: uppercase; letter-spacing: .04em;
}

.abe-pkg-overview-chips {
  display: flex; flex-wrap: wrap; gap: .45rem; margin-top: .75rem;
}
.abe-pkg-chip {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 10px; font-size: .78rem; font-weight: 500;
  border-radius: 999px; border: 1px solid transparent;
  line-height: 1.4;
}
.abe-pkg-chip--blue   { background: #dbeafe; color: var(--color-primary-dk); border-color: #bfdbfe; }
.abe-pkg-chip--purple { background: #ede9fe; color: #6d28d9; border-color: #ddd6fe; }
.abe-pkg-chip--green  { background: #dcfce7; color: #166534; border-color: #bbf7d0; }
.abe-pkg-chip--amber  { background: #fef3c7; color: #92400e; border-color: #fde68a; }
.abe-pkg-chip--red    { background: #fee2e2; color: #991b1b; border-color: #fecaca; }

.abe-pkg-days {
  padding: 0;
}
.abe-pkg-day {
  display: grid;
  grid-template-columns: 64px 1fr auto;
  gap: 1rem;
  padding: 1rem 1.25rem;
  border-bottom: 1px solid #e2e8f0;
  align-items: start;
}
.abe-pkg-day:last-child { border-bottom: 0; }
.abe-pkg-day--checkin  { background: linear-gradient(90deg, #f0fdf4 0%, #fff 60%); }
.abe-pkg-day--checkout { background: linear-gradient(90deg, #fffbeb 0%, #fff 60%); }

.abe-pkg-day-num {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
}
.abe-pkg-day-circle {
  width: 42px; height: 42px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: 1rem;
  box-shadow: 0 2px 6px rgba(0,0,0,.15);
}
.abe-pkg-day-tag {
  font-size: .6rem; font-weight: 700; letter-spacing: .04em;
  padding: 1px 6px; border-radius: 4px;
}
.abe-pkg-day-tag--checkin  { background: #dcfce7; color: #166534; }
.abe-pkg-day-tag--checkout { background: #fef3c7; color: #92400e; }

.abe-pkg-day-body h4 {
  margin: 0 0 .35rem; font-size: .95rem; color: #0f172a;
}
.abe-pkg-day-body p {
  margin: 0 0 .5rem; font-size: .85rem; color: #475569; line-height: 1.5;
}
.abe-pkg-day-tags {
  display: flex; flex-wrap: wrap; gap: .35rem;
}

.abe-pkg-day-img {
  width: 110px; height: 75px; border-radius: 6px;
  overflow: hidden; flex-shrink: 0;
}
.abe-pkg-day-img img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}

/* Sidebar */
.abe-pkg-from-label {
  display: block; font-size: .72rem;
  text-transform: uppercase; letter-spacing: .05em;
  margin-bottom: 2px;
}
.abe-pkg-price-lg {
  font-size: 1.65rem; font-weight: 700; color: #0f172a;
  line-height: 1.1; margin-bottom: 2px;
}
.abe-pkg-sidebar-hr {
  border: 0; border-top: 1px dashed #e2e8f0; margin: .75rem 0;
}
.abe-pkg-book-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: .35rem 0; font-size: .85rem; color: #475569;
}
.abe-pkg-book-row strong {
  color: #0f172a; font-weight: 600;
}
.abe-pkg-book-row--total {
  padding-top: .6rem; margin-top: .4rem;
  border-top: 2px solid #e2e8f0;
  font-size: .95rem;
}
.abe-pkg-total-amount {
  color: #059669 !important; font-size: 1.05rem !important;
}

.abe-pkg-why-title {
  margin: 0 0 .5rem; font-size: .9rem; color: #0f172a;
}
.abe-pkg-why-list {
  margin: 0; padding-left: 1.1rem; font-size: .82rem;
  color: #475569; line-height: 1.65;
}
.abe-pkg-why-list li { margin-bottom: 2px; }

@media (max-width: 960px) {
  .abe-pkg-stat-grid { grid-template-columns: repeat(2, 1fr); }
  .abe-pkg-day {
    grid-template-columns: 56px 1fr;
  }
  .abe-pkg-day-img {
    grid-column: 1 / -1; width: 100%; height: 140px;
  }
}

/* ══════════════════════════════════════════════════════════════
   BUS REVIEW - B2B parity
   ══════════════════════════════════════════════════════════════ */
.abe-bus-badges {
  display: flex; gap: .4rem; flex-wrap: wrap;
}

/* Per-leg banner on the round-trip / multi-city review page. */
.abe-bus-leg-banner {
  display: flex; align-items: center; gap: .5rem;
  margin: 1rem 0 .4rem;
  font-size: .8rem; font-weight: 700; letter-spacing: .04em;
  color: #166534;
}
.abe-bus-leg-banner:first-child { margin-top: 0; }
.abe-bus-leg-pill {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: 999px;
  background: #16a34a; color: #fff; font-size: .72rem; font-weight: 700;
}
.abe-bus-leg-route { color: #475569; font-weight: 600; letter-spacing: 0; }

.abe-info-badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 10px; font-size: .75rem; font-weight: 600;
  border-radius: 6px; border: 1px solid transparent;
  line-height: 1.4;
}
.abe-info-badge--blue   { background: #eff6ff; color: var(--color-primary-dk); border-color: #bfdbfe; }
.abe-info-badge--green  { background: #ecfdf5; color: #059669; border-color: #a7f3d0; }
.abe-info-badge--orange { background: #fffbeb; color: #d97706; border-color: #fde68a; }
.abe-info-badge--purple { background: #f5f3ff; color: #7c3aed; border-color: #ddd6fe; }

/* Route visual */
.abe-bus-route-visual {
  display: flex; align-items: center; gap: 1.5rem;
  padding: 1.25rem 0;
}
.abe-bus-route-point {
  text-align: center; min-width: 90px;
}
.abe-bus-route-point .abe-bus-city {
  font-size: 1.15rem; font-weight: 700; color: #0f172a;
}
.abe-bus-route-point .abe-bus-time {
  font-size: 1.5rem; font-weight: 700; color: var(--color-primary-dk);
}
.abe-bus-route-point .abe-bus-code {
  font-size: .75rem; color: #6b7280; margin-top: 2px;
}
.abe-bus-route-line {
  flex: 1; display: flex; flex-direction: column;
  align-items: center; position: relative;
}
.abe-bus-route-line .abe-bus-line {
  width: 100%; height: 2px;
  background: linear-gradient(90deg, var(--color-primary-dk), #10b981);
  position: relative;
}
.abe-bus-route-line .abe-bus-line::before,
.abe-bus-route-line .abe-bus-line::after {
  content: ''; position: absolute; top: -4px;
  width: 10px; height: 10px; border-radius: 50%;
}
.abe-bus-route-line .abe-bus-line::before { left: 0; background: var(--color-primary-dk); }
.abe-bus-route-line .abe-bus-line::after  { right: 0; background: #10b981; }
.abe-bus-dur {
  font-size: .8rem; font-weight: 600; color: #6b7280;
  margin-top: .4rem;
}

.abe-bus-quick-info {
  display: flex; flex-wrap: wrap; gap: .5rem;
  margin-top: .5rem; padding-top: .75rem;
  border-top: 1px solid #f1f5f9;
}

.abe-bus-amenity-wrap {
  margin-top: .75rem; padding-top: .75rem;
  border-top: 1px solid #f1f5f9;
}
.abe-bus-sub-title {
  display: block; font-size: .78rem; color: #475569;
  margin-bottom: .4rem;
}
.abe-bus-amenity-tags {
  display: flex; flex-wrap: wrap; gap: .35rem;
}
.abe-bus-amenity-tag {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 10px; background: #f0fdf4; color: #15803d;
  border: 1px solid #bbf7d0; border-radius: 999px;
  font-size: .72rem; font-weight: 600;
}

/* Boarding/Dropping */
.abe-bus-bp-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem;
}
.abe-bus-bp-col {
  min-width: 0;
}
.abe-bus-bp-table {
  width: 100%; border-collapse: collapse;
  font-size: .82rem; margin-top: .75rem;
}
.abe-bus-bp-table th {
  text-align: left; padding: .4rem .5rem;
  background: #f8fafc; border-bottom: 1px solid #e2e8f0;
  font-weight: 600; color: #475569;
}
.abe-bus-bp-table td {
  padding: .4rem .5rem; border-bottom: 1px solid #f1f5f9;
}
.abe-bus-bp-time { font-weight: 700; color: var(--color-primary-dk); }
.abe-bus-bp-landmark { font-size: .75rem; color: #6b7280; }

/* Seat map */
.abe-bus-seat-area {
  display: flex; align-items: flex-start; gap: 2rem;
}
.abe-bus-front-label {
  writing-mode: vertical-rl; text-orientation: mixed;
  font-size: .7rem; font-weight: 600; color: #94a3b8;
  letter-spacing: .1em; margin-top: 1rem;
}
.abe-bus-seat-grid {
  display: inline-grid; gap: 3px; margin: .75rem 0;
}
.abe-bus-seat-cell {
  width: 28px; height: 28px; border-radius: 4px;
  display: flex; align-items: center; justify-content: center;
  font-size: .6rem; font-weight: 700; cursor: default;
  border: 1.5px solid;
}
.abe-bus-seat-avail { background: #ecfdf5; border-color: #86efac; color: #15803d; }
.abe-bus-seat-sold  { background: #fef2f2; border-color: #fca5a5; color: #dc2626; }
.abe-bus-seat-aisle { background: transparent; border: none; }

.abe-bus-seat-legend {
  display: flex; gap: 1rem; font-size: .75rem;
  color: #6b7280; margin-top: .5rem;
}
.abe-bus-seat-legend span {
  display: flex; align-items: center; gap: .3rem;
}
.abe-bus-seat-dot {
  width: 14px; height: 14px; border-radius: 3px;
  border: 1.5px solid; display: inline-block;
}
.abe-bus-seat-dot.abe-bus-seat-avail { background: #ecfdf5; border-color: #86efac; }
.abe-bus-seat-dot.abe-bus-seat-sold  { background: #fef2f2; border-color: #fca5a5; }

/* Cancellation tiers */
.abe-bus-cancel-tiers {
  margin: 0; padding: 0; list-style: none;
}
.abe-bus-cancel-tiers li {
  display: flex; justify-content: space-between;
  padding: .5rem 0; border-bottom: 1px solid #f1f5f9;
  font-size: .85rem;
}
.abe-bus-cancel-tiers li:last-child { border-bottom: none; }
.abe-tier-label { color: #475569; }
.abe-tier-charge { font-weight: 700; }
.abe-tier-free { color: #059669; }
.abe-tier-partial { color: #d97706; }
.abe-tier-full { color: #dc2626; }

/* Important info */
.abe-bus-info-block {
  margin-bottom: .75rem;
}
.abe-bus-info-block:last-child { margin-bottom: 0; }
.abe-bus-info-text {
  margin: .25rem 0 0; font-size: .85rem;
  color: #374151; line-height: 1.55;
}

@media (max-width: 960px) {
  .abe-bus-route-visual { gap: .75rem; }
  .abe-bus-route-point { min-width: 70px; }
  .abe-bus-route-point .abe-bus-time { font-size: 1.2rem; }
  .abe-bus-route-point .abe-bus-city { font-size: 1rem; }
  .abe-bus-bp-grid { grid-template-columns: 1fr; gap: 1rem; }
  .abe-bus-seat-area { gap: 1rem; }
}

/* ═══════════════════════════════════════════════════════════════
   CAR RENTAL REVIEW
   ═══════════════════════════════════════════════════════════════ */
.abe-car-badges {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  margin-top: .85rem;
}

.abe-car-badges .abe-info-badge {
  font-size: .72rem;
  padding: .28rem .55rem;
}

.abe-text-muted {
  color: #64748b;
  font-size: .78rem;
  font-weight: 500;
}

/* ═══════════════════════════════════════════════════════════════
   CRUISE REVIEW
   ═══════════════════════════════════════════════════════════════ */
.abe-cruise-cabin-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: .75rem;
}

.abe-cruise-cabin {
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .85rem;
  border: 2px solid #e5e7eb;
  border-radius: 10px;
  cursor: pointer;
  background: #fff;
  transition: border-color .15s, background .15s;
  position: relative;
}

.abe-cruise-cabin:hover { border-color: #cbd5e1; }

.abe-cruise-cabin--active {
  border-color: var(--color-primary-dk);
  background: #eff6ff;
}

.abe-cruise-cabin input[type="radio"] { display: none; }

.abe-cruise-cabin-icon {
  width: 44px;
  height: 44px;
  border-radius: 8px;
  background: #f1f5f9;
  color: #475569;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.abe-cruise-cabin--active .abe-cruise-cabin-icon {
  background: #dbeafe;
  color: var(--color-primary-dk);
}

.abe-cruise-cabin-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: .2rem;
  min-width: 0;
}

.abe-cruise-cabin-body strong {
  font-size: .92rem;
  color: #0f172a;
}

.abe-cruise-cabin-body small {
  font-size: .75rem;
  color: #64748b;
}

.abe-cruise-cabin-check {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 2px solid #cbd5e1;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  flex-shrink: 0;
}

.abe-cruise-cabin--active .abe-cruise-cabin-check {
  border-color: var(--color-primary-dk);
  background: var(--color-primary-dk);
}

.abe-cruise-cabin .abe-cruise-cabin-check svg { opacity: 0; }
.abe-cruise-cabin--active .abe-cruise-cabin-check svg { opacity: 1; }

.abe-cruise-pref-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: .75rem;
}

.abe-cruise-pref {
  display: flex;
  flex-direction: column;
  gap: .35rem;
}

.abe-cruise-celebrations {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-top: .75rem;
}

.abe-cruise-celebrations label {
  display: flex;
  align-items: center;
  gap: .35rem;
  font-size: .85rem;
  color: #334155;
  cursor: pointer;
}

.abe-cruise-addon-block {
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: .75rem;
  margin-bottom: .75rem;
  background: #fafbfc;
}

.abe-cruise-addon-head {
  display: flex;
  align-items: center;
  gap: .5rem;
  font-size: .9rem;
  color: #0f172a;
}

.abe-cruise-addon-head svg { color: var(--color-primary-dk); }

.abe-cruise-addon-sub {
  margin-left: auto;
  font-size: .75rem;
  color: #64748b;
  font-weight: 500;
}

.abe-cruise-day-group { margin-top: .6rem; }

.abe-cruise-day-title {
  font-size: .8rem;
  font-weight: 600;
  color: #1e293b;
  margin-bottom: .4rem;
}

.abe-cruise-addon-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: .5rem;
}

.abe-cruise-addon-card {
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: .55rem .65rem;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  cursor: pointer;
  transition: border-color .15s;
}

.abe-cruise-addon-card:hover { border-color: #cbd5e1; }

.abe-cruise-addon-qty {
  width: 56px;
  padding: .3rem .4rem;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  font-size: .85rem;
  text-align: center;
  flex-shrink: 0;
}

.abe-cruise-addon-body {
  display: flex;
  flex-direction: column;
  gap: .15rem;
  min-width: 0;
}

.abe-cruise-addon-body strong {
  font-size: .85rem;
  color: #0f172a;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.abe-cruise-addon-body small {
  font-size: .72rem;
  color: #64748b;
}

.abe-cruise-hold-timer {
  background: #fef3c7;
  border: 1px solid #f59e0b;
  color: #92400e;
  padding: .25rem .55rem;
  border-radius: 6px;
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .02em;
}

.abe-cruise-hold-timer--warn {
  background: #fee2e2;
  border-color: #dc2626;
  color: #991b1b;
}

.abe-cruise-hold-timer--expired {
  background: #fee2e2;
  border-color: #dc2626;
  color: #991b1b;
}

@media (max-width: 760px) {
  .abe-cruise-cabin-grid,
  .abe-cruise-pref-grid,
  .abe-cruise-addon-grid {
    grid-template-columns: 1fr;
  }
}

/* ═══════════════════════════════════════════════════════════════
 *  INSURANCE REVIEW / CONFIRMATION
 * ═══════════════════════════════════════════════════════════════ */

.abe-ins-shield {
  box-shadow: 0 2px 8px rgba(0, 0, 0, .12);
}

.abe-ins-tier-tag {
  display: inline-flex; align-items: center;
  padding: .15rem .5rem;
  font-size: .7rem; font-weight: 700; letter-spacing: .02em;
  text-transform: uppercase;
  border-radius: .25rem;
}

.abe-ins-feature-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: .5rem .75rem;
}
.abe-ins-feature {
  display: flex; align-items: center; gap: .4rem;
  font-size: .88rem; color: #334155;
}
.abe-ins-feature svg { flex: 0 0 auto; }

.abe-ins-exclusion-cloud {
  display: flex; flex-wrap: wrap; gap: .4rem;
}
.abe-ins-exclusion-tag {
  display: inline-flex; align-items: center; gap: .3rem;
  padding: .22rem .55rem;
  font-size: .82rem; color: #dc2626;
  background: rgba(220, 38, 38, .06);
  border: 1px solid rgba(220, 38, 38, .15);
  border-radius: .25rem;
}

.abe-ins-cancel-table {
  width: 100%; border-collapse: collapse;
  font-size: .88rem;
}
.abe-ins-cancel-table thead th {
  padding: .65rem 1rem;
  font-size: .75rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em;
  color: #64748b; text-align: left;
  background: #f8fafc;
  border-bottom: 1px solid #e2e8f0;
}
.abe-ins-cancel-table tbody td {
  padding: .6rem 1rem;
  border-bottom: 1px solid #f1f5f9;
  color: #334155;
}
.abe-ins-cancel-table tbody tr:last-child td { border-bottom: none; }

.abe-ins-refund { font-weight: 600; }
.abe-ins-refund--full    { color: #059669; }
.abe-ins-refund--partial { color: #d97706; }
.abe-ins-refund--none    { color: #dc2626; }

/* ═══════════════════════════════════════════════════════════════
 *  VISA REVIEW / CONFIRMATION
 * ═══════════════════════════════════════════════════════════════ */

.abe-visa-badge {
  box-shadow: 0 2px 8px rgba(0, 0, 0, .12);
}

.abe-visa-type-tag {
  display: inline-flex; align-items: center;
  padding: .15rem .5rem;
  font-size: .7rem; font-weight: 700; letter-spacing: .02em;
  text-transform: uppercase;
  border-radius: .25rem;
}

.abe-visa-doc-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: .5rem;
}
.abe-visa-doc-item {
  display: flex; align-items: flex-start; gap: .5rem;
  padding: .5rem .6rem;
  font-size: .88rem; color: #334155;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: .4rem;
}
.abe-visa-doc-num {
  display: inline-flex; align-items: center; justify-content: center;
  flex: 0 0 auto;
  width: 22px; height: 22px;
  font-size: .72rem; font-weight: 700;
  border-radius: 50%;
  margin-top: .1rem;
}

.abe-visa-prose {
  margin: 0;
  font-size: .9rem; color: #334155; line-height: 1.6;
}

.abe-visa-embassy-note {
  display: flex; align-items: flex-start; gap: .6rem;
  padding: .65rem .75rem;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: .4rem;
}
.abe-visa-embassy-note svg { flex: 0 0 auto; margin-top: .15rem; }
.abe-visa-embassy-note p {
  margin: 0;
  font-size: .88rem; color: #92400e; line-height: 1.6;
}

@media print {
  @page { size: A4; margin: 12mm; }

  /* Hide interactive + navigational chrome */
  .abe-detail-back, .abe-conf-secondary, .abe-rv-confirm-btn,
  .abe-exc-carousel-arrow, .abe-exc-carousel-dots,
  .abe-cruise-hold-timer,
  .abe-cart-drawer, .abe-cart-btn, .abe-detail-cart-btn,
  .abe-filters, .abe-search-panel, .abe-results-sort,
  .abe-pagination, .abe-sticky-bar { display: none !important; }

  /* Voucher: single column, ink-friendly */
  body { background: #fff !important; color: #0f172a !important; }
  .abe-conf-layout { display: block !important; }
  .abe-conf-main, .abe-conf-sidebar { max-width: 100% !important; }
  .abe-conf-hero { box-shadow: none !important; background: #fff !important; border: 1px solid #cbd5e1 !important; }
  .abe-conf-check { background: #fff !important; border: 2px solid #16a34a !important; color: #16a34a !important; }
  .abe-detail-card { box-shadow: none !important; border: 1px solid #cbd5e1 !important; }
  .abe-conf-voucher-head { background: #f8fafc !important; color: #0f172a !important; }
  .abe-conf-voucher-img { filter: grayscale(.2); }

  /* Keep blocks together across pages */
  .abe-conf-hero,
  .abe-conf-voucher,
  .abe-conf-pax-grid,
  .abe-conf-timeline,
  .abe-conf-steps,
  .abe-rv-stay-facts,
  .abe-rv-route,
  .abe-bus-route-visual,
  .abe-car-badges,
  .abe-cruise-cabin-grid,
  .abe-ins-feature-grid,
  .abe-ins-cancel-table,
  .abe-visa-doc-grid { page-break-inside: avoid; }

  /* Ensure backgrounds (badges, tags, stars) print */
  .abe-info-badge, .abe-hc-tag, .abe-conf-status,
  .abe-airline-badge, .abe-conf-pax-avatar,
  .abe-conf-tl--done .abe-conf-tl-dot,
  .abe-conf-count, .abe-conf-stars {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }
}

/* ==========================================================================
   Review & Book modal  (.abe-rbm-*)
   Final-look confirmation overlay invoked from the flight review page.
   ========================================================================== */
.abe-rbm-overlay {
  position: fixed; inset: 0;
  background: rgba(15, 23, 42, .6);
  display: flex; align-items: flex-start; justify-content: center;
  padding: 2rem 1rem;
  z-index: 10010;
  overflow-y: auto;
  animation: abeRbmFade .15s ease-out;
}
@keyframes abeRbmFade { from { opacity: 0; } to { opacity: 1; } }

.abe-rbm-card {
  position: relative;
  width: 100%; max-width: 780px;
  background: #fff;
  border-radius: .6rem;
  box-shadow: 0 24px 60px rgba(0, 0, 0, .32);
  overflow: hidden;
  display: flex; flex-direction: column;
  animation: abeRbmSlide .22s ease-out;
}
@keyframes abeRbmSlide {
  from { transform: translateY(-14px); opacity: 0; }
  to   { transform: translateY(0);     opacity: 1; }
}

/* Header */
.abe-rbm-head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 1rem;
  padding: 1.1rem 1.4rem;
  background: linear-gradient(135deg, #0f172a 0%, #1e3a8a 100%);
  color: #fff;
}
.abe-rbm-title-wrap {
  display: flex; align-items: center; gap: .75rem;
}
.abe-rbm-title-wrap svg { flex-shrink: 0; color: #60a5fa; }
.abe-rbm-head h2 {
  margin: 0;
  font-size: 1.15rem; font-weight: 700;
  letter-spacing: .01em;
}
.abe-rbm-head small {
  display: block;
  margin-top: .15rem;
  font-size: .78rem; color: #cbd5e1; font-weight: 400;
}
.abe-rbm-close {
  width: 32px; height: 32px; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  background: rgba(255, 255, 255, .1);
  color: #fff;
  border: none; border-radius: 999px;
  font-size: 1.3rem; line-height: 1;
  cursor: pointer;
  transition: background .15s;
}
.abe-rbm-close:hover { background: rgba(255, 255, 255, .22); }

/* Body */
.abe-rbm-body {
  padding: 1.1rem 1.4rem;
  overflow-y: auto;
  max-height: calc(100vh - 240px);
}

.abe-rbm-sec { margin-bottom: 1.1rem; }
.abe-rbm-sec:last-child { margin-bottom: 0; }
.abe-rbm-sec-title {
  margin: 0 0 .55rem;
  font-size: .78rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .06em;
  color: #475569;
}

/* Passengers */
.abe-rbm-pax-list {
  display: flex; flex-direction: column; gap: .5rem;
}
.abe-rbm-pax {
  display: flex; align-items: flex-start; gap: .7rem;
  padding: .65rem .75rem;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: .45rem;
}
.abe-rbm-pax-num {
  flex-shrink: 0;
  width: 26px; height: 26px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: var(--color-primary-dk); color: #fff;
  font-size: .78rem; font-weight: 700;
}
.abe-rbm-pax-num--sm {
  width: 22px; height: 22px; font-size: .7rem;
  background: #64748b;
}
.abe-rbm-pax-body { flex: 1; display: flex; flex-direction: column; gap: .15rem; }
.abe-rbm-pax-body strong {
  font-size: .92rem; color: #0f172a; font-weight: 600;
}
.abe-rbm-pax-body small {
  font-size: .76rem; color: #64748b;
}

/* Contact */
.abe-rbm-contact {
  display: flex; flex-wrap: wrap; gap: .5rem 1.1rem;
  padding: .65rem .75rem;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: .45rem;
  font-size: .85rem; color: #334155;
}
.abe-rbm-contact strong { color: #0f172a; font-weight: 600; }
.abe-rbm-remarks {
  margin-top: .4rem;
  padding: .5rem .75rem;
  background: #fffbeb; border: 1px solid #fde68a;
  border-radius: .4rem;
  font-size: .8rem; color: #92400e;
}

/* Generic line-items (hotel/bus/car/transfer/etc. bookings) */
.abe-rbm-items {
  margin: 0;
  padding: .65rem .75rem;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: .45rem;
  display: grid;
  grid-template-columns: max-content 1fr;
  column-gap: 1rem;
  row-gap: .3rem;
}
.abe-rbm-item { display: contents; }
.abe-rbm-item dt {
  font-size: .78rem;
  color: #64748b;
  font-weight: 600;
  margin: 0;
}
.abe-rbm-item dd {
  font-size: .85rem;
  color: #0f172a;
  margin: 0;
  font-weight: 500;
}
/* When a line has no label (e.g. subtitle row), span both columns */
.abe-rbm-item:has(dd:only-child) dd { grid-column: 1 / -1; color: #475569; font-weight: 400; }

/* Leg card */
.abe-rbm-leg {
  padding: .85rem;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: .5rem;
}
.abe-rbm-leg-head {
  display: flex; flex-wrap: wrap; align-items: center; gap: .55rem;
  padding-bottom: .6rem; margin-bottom: .7rem;
  border-bottom: 1px dashed #e2e8f0;
}
.abe-rbm-leg-tag {
  display: inline-block;
  padding: .18rem .55rem;
  background: #dbeafe; color: var(--color-primary-dk);
  border-radius: .25rem;
  font-size: .7rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .05em;
}
.abe-rbm-leg-head strong {
  font-size: .98rem; color: #0f172a; font-weight: 700;
}
.abe-rbm-leg-head small {
  width: 100%;
  font-size: .76rem; color: #64748b;
}

.abe-rbm-leg-pax-list {
  display: flex; flex-direction: column; gap: .45rem;
}
.abe-rbm-leg-pax {
  display: flex; align-items: flex-start; gap: .55rem;
  padding: .55rem .65rem;
  background: #f8fafc;
  border: 1px solid #edf2f7;
  border-radius: .4rem;
}
.abe-rbm-leg-pax-body { flex: 1; display: flex; flex-direction: column; gap: .3rem; }
.abe-rbm-leg-pax-body strong {
  font-size: .82rem; color: #0f172a; font-weight: 600;
}

.abe-rbm-picks {
  display: flex; flex-wrap: wrap; gap: .35rem .75rem;
}
.abe-rbm-pick {
  font-size: .76rem; color: #334155;
}
.abe-rbm-pick em {
  font-style: normal; font-weight: 600; color: #475569;
}
.abe-rbm-pick b {
  color: #0f766e; font-weight: 600;
}

.abe-rbm-leg-addons {
  margin-top: .7rem; padding-top: .6rem;
  border-top: 1px dashed #e2e8f0;
  font-size: .8rem; color: #334155;
}
.abe-rbm-leg-addons strong { color: #0f172a; font-weight: 600; margin-right: .3rem; }
.abe-rbm-leg-addons b { color: #0f766e; font-weight: 600; }

/* Footer */
.abe-rbm-foot {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.4rem;
  background: #f8fafc;
  border-top: 1px solid #e2e8f0;
}
.abe-rbm-total {
  display: flex; flex-direction: column;
  line-height: 1.2;
}
.abe-rbm-total span {
  font-size: .72rem; color: #64748b;
  text-transform: uppercase; letter-spacing: .06em; font-weight: 600;
}
.abe-rbm-total strong {
  font-size: 1.3rem; color: #0f172a; font-weight: 700;
}
.abe-rbm-actions {
  display: flex; gap: .55rem;
}
.abe-rbm-edit,
.abe-rbm-confirm {
  display: inline-flex; align-items: center; gap: .4rem;
  padding: .62rem 1.05rem;
  border-radius: .4rem;
  font-size: .88rem; font-weight: 600;
  cursor: pointer;
  transition: background .15s, border-color .15s, transform .08s;
}
.abe-rbm-edit {
  background: #fff; color: #334155;
  border: 1px solid #cbd5e1;
}
.abe-rbm-edit:hover { background: #f1f5f9; border-color: #94a3b8; }
.abe-rbm-confirm {
  background: #16a34a; color: #fff;
  border: 1px solid #15803d;
  box-shadow: 0 2px 6px rgba(22, 163, 74, .25);
}
.abe-rbm-confirm:hover { background: #15803d; }
.abe-rbm-confirm:active { transform: translateY(1px); }

/* Inline validation - highlights invalid form fields and shows a
   dismissable banner next to the confirm button. The banner lives on
   the review page (not inside the modal) so the user can see both the
   message and the field they need to fix. */
.abe-rbm-invalid {
  border-color: #dc2626 !important;
  box-shadow: 0 0 0 2px rgba(220, 38, 38, .18) !important;
  background-color: #fef2f2 !important;
  animation: abeRbmShake .35s cubic-bezier(.36,.07,.19,.97);
}
@keyframes abeRbmShake {
  10%, 90% { transform: translateX(-1px); }
  20%, 80% { transform: translateX(2px); }
  30%, 50%, 70% { transform: translateX(-3px); }
  40%, 60% { transform: translateX(3px); }
}
.abe-rbm-banner {
  display: inline-flex; align-items: center; gap: .55rem;
  margin-right: .75rem;
  padding: .55rem .8rem .55rem .7rem;
  background: #fef2f2;
  border: 1px solid #fecaca;
  border-left: 3px solid #dc2626;
  border-radius: .4rem;
  color: #991b1b;
  font-size: .82rem; font-weight: 500;
  max-width: 420px;
  animation: abeRbmFade .2s ease-out;
}
.abe-rbm-banner svg { flex-shrink: 0; color: #dc2626; }
.abe-rbm-banner span { flex: 1; line-height: 1.35; }
.abe-rbm-banner button {
  background: none; border: none; color: #991b1b;
  font-size: 1.15rem; line-height: 1;
  cursor: pointer; padding: 0 .2rem;
  opacity: .7;
}
.abe-rbm-banner button:hover { opacity: 1; }

@media (max-width: 640px) {
  /* Mobile bottom-sheet - anchor the modal to the bottom edge, full
     width, slide up from below. Rounded top corners only. Full-height
     body with scroll; footer sticks. */
  .abe-rbm-overlay {
    align-items: flex-end;
    padding: 0;
  }
  .abe-rbm-card {
    border-radius: 1rem 1rem 0 0;
    max-width: 100%;
    max-height: 92vh;
    animation: abeRbmSheet .28s cubic-bezier(.25,.8,.25,1);
  }
  @keyframes abeRbmSheet {
    from { transform: translateY(100%); opacity: .6; }
    to   { transform: translateY(0);    opacity: 1; }
  }
  .abe-rbm-head { padding: .9rem 1rem; position: relative; }
  .abe-rbm-head::before {
    content: '';
    position: absolute; top: .45rem; left: 50%;
    transform: translateX(-50%);
    width: 36px; height: 4px;
    background: rgba(255,255,255,.35);
    border-radius: 2px;
  }
  .abe-rbm-head h2 { font-size: 1.05rem; }
  .abe-rbm-body { padding: .9rem 1rem; max-height: none; flex: 1; }
  .abe-rbm-foot {
    padding: .85rem 1rem calc(.85rem + env(safe-area-inset-bottom, 0));
    position: sticky; bottom: 0;
  }
  .abe-rbm-actions { width: 100%; }
  .abe-rbm-edit, .abe-rbm-confirm { flex: 1; justify-content: center; }
  .abe-rbm-picks { gap: .2rem .55rem; }
  .abe-rbm-banner {
    display: flex;
    margin: .5rem 0 0;
    max-width: none;
  }
}

/* ==========================================================================
   Terms & Conditions  (.abe-rv-terms, .abe-tc-*)
   Agreement checkbox lives on the review page; clicking the link opens the
   admin-editable T&C modal. The T&C modal reuses .abe-rbm-overlay for the
   backdrop so it shares the review-book animation + z-index.
   ========================================================================== */
.abe-rv-terms-card { margin-bottom: 1rem; }
.abe-rv-terms {
  display: flex; align-items: flex-start; gap: .6rem;
  cursor: pointer; user-select: none;
  font-size: .95rem; color: var(--gray-800, #1e293b);
}
.abe-rv-terms input[type="checkbox"] {
  margin-top: .2rem;
  width: 18px; height: 18px;
  cursor: pointer; accent-color: #1e3a8a;
  flex-shrink: 0;
}
.abe-rv-terms input[type="checkbox"].abe-rbm-invalid {
  outline: 2px solid #dc2626;
  outline-offset: 2px;
}
.abe-rv-terms-link {
  color: #1e3a8a; text-decoration: underline; font-weight: 600;
}
.abe-rv-terms-link:hover { color: var(--color-primary-dk); }

.abe-tc-card {
  max-width: 640px;
}
.abe-tc-header {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.25rem;
  background: linear-gradient(135deg, #0f172a 0%, #1e3a8a 100%);
  color: #fff;
}
.abe-tc-header h3 {
  margin: 0; font-size: 1.1rem; font-weight: 700;
}
.abe-tc-close {
  width: 32px; height: 32px; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,.1);
  color: #fff; border: none; border-radius: 999px;
  font-size: 1.3rem; line-height: 1; cursor: pointer;
  transition: background .15s;
}
.abe-tc-close:hover { background: rgba(255,255,255,.22); }
.abe-tc-body {
  padding: 1.1rem 1.4rem;
  max-height: 60vh;
  overflow-y: auto;
  font-size: .95rem;
  line-height: 1.65;
  color: #334155;
}
.abe-tc-body h3 { margin: 0 0 .75rem; font-size: 1.05rem; color: #0f172a; }
.abe-tc-body ol, .abe-tc-body ul { padding-left: 1.4rem; margin: .75rem 0; }
.abe-tc-body li { margin-bottom: .5rem; }
.abe-tc-body p { margin: 0 0 .75rem; }
.abe-tc-loading { color: #64748b; font-style: italic; text-align: center; padding: 2rem 0; }
.abe-tc-footer {
  display: flex; justify-content: flex-end;
  padding: .85rem 1.25rem;
  border-top: 1px solid #e2e8f0;
  background: #f8fafc;
}
.abe-tc-ok {
  padding: .55rem 1.25rem;
  background: #1e3a8a; color: #fff;
  border: none; border-radius: .4rem;
  font-weight: 600; font-size: .9rem;
  cursor: pointer;
  transition: background .15s;
}
.abe-tc-ok:hover { background: var(--color-primary-dk); }

@media (max-width: 640px) {
  .abe-tc-card { max-width: 100%; }
  .abe-tc-body { max-height: 55vh; padding: .9rem 1rem; }
  .abe-tc-header { padding: .85rem 1rem; }
  .abe-tc-footer { padding: .75rem 1rem calc(.75rem + env(safe-area-inset-bottom, 0)); }
}

/* ==========================================================================
   Seats / Meals / Baggage drawer  (.abe-anc-drawer-*)
   Right-side slide-in panel invoked from the review page's "Customize"
   button. Keeps the per-leg × per-pax tile matrix out of the main flow so
   the review page stays compact. Radios inside are the same inputs
   `bindFlightAncillaries()` already listens to - no wiring changes needed.
   ========================================================================== */

/* Entry-point summary card in the main review column */
.abe-anc-summary-card .abe-detail-card-body { padding: .9rem 1.25rem; }
.abe-anc-summary {
  display: flex; align-items: center; gap: 1rem;
}
.abe-anc-summary-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .2rem; }
.abe-anc-summary-info strong { font-size: .95rem; color: #0f172a; }
.abe-anc-summary-info small { font-size: .78rem; color: #64748b; margin: 0; }
.abe-anc-summary-line { font-weight: 500; color: #334155; }
.abe-anc-summary-btn {
  flex-shrink: 0;
  display: inline-flex; align-items: center; gap: .35rem;
  padding: .55rem 1rem;
  background: #1e3a8a; color: #fff;
  border: none; border-radius: .4rem;
  font-weight: 600; font-size: .85rem;
  cursor: pointer;
  transition: background .15s;
}
.abe-anc-summary-btn:hover { background: var(--color-primary-dk); }

/* Backdrop - hidden by default; revealed via .abe-anc-open class */
.abe-anc-drawer-overlay {
  position: fixed; inset: 0;
  background: rgba(15, 23, 42, .55);
  opacity: 0; pointer-events: none;
  z-index: 10020;
  transition: opacity .22s ease-out;
}
.abe-anc-drawer-overlay.abe-anc-open { opacity: 1; pointer-events: auto; }

/* Drawer - translateX off-screen by default; slides in on .abe-anc-open */
.abe-anc-drawer {
  position: fixed; top: 0; right: 0; bottom: 0;
  width: 100%; max-width: 520px;
  background: #fff;
  box-shadow: -12px 0 32px rgba(0, 0, 0, .18);
  transform: translateX(100%);
  transition: transform .28s ease-out;
  z-index: 10021;
  display: flex; flex-direction: column;
}
/* Wider variant for the tabbed SSR drawer - full-row options need space */
.abe-anc-drawer--wide { max-width: 680px; }
.abe-anc-drawer.abe-anc-open { transform: translateX(0); }

/* Header / body / footer */
.abe-anc-drawer-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: .95rem 1.25rem;
  border-bottom: 1px solid #e2e8f0;
  background: #f8fafc;
}
.abe-anc-drawer-head h3 { margin: 0; font-size: 1.05rem; color: #0f172a; }
.abe-anc-drawer-close {
  display: inline-flex; align-items: center; justify-content: center;
  width: 32px; height: 32px;
  background: transparent; color: #64748b;
  border: 1px solid #e2e8f0; border-radius: .4rem;
  cursor: pointer;
  transition: background .15s, color .15s;
}
.abe-anc-drawer-close:hover { background: #f1f5f9; color: #0f172a; }

.abe-anc-drawer-body {
  flex: 1; min-height: 0;
  overflow-y: auto;
  padding: 1rem 1.25rem;
}

.abe-anc-drawer-leg { margin-bottom: 1.25rem; }
.abe-anc-drawer-leg:last-child { margin-bottom: 0; }
.abe-anc-drawer-leg-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;
  padding-bottom: .5rem; margin-bottom: .75rem;
  border-bottom: 1px solid #e2e8f0;
}
.abe-anc-drawer-leg-title { display: flex; flex-direction: column; gap: .15rem; }
.abe-anc-drawer-leg-title strong { font-size: .95rem; color: #0f172a; }
.abe-anc-drawer-leg-title small { font-size: .78rem; color: #64748b; margin: 0; }

/* Drawer footer - sticky action strip */
.abe-anc-drawer-foot {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: .85rem 1.25rem calc(.85rem + env(safe-area-inset-bottom, 0));
  border-top: 1px solid #e2e8f0;
  background: #f8fafc;
}
.abe-anc-drawer-foot-total { font-size: .85rem; color: #475569; }
.abe-anc-drawer-foot-total strong { color: #0f172a; font-size: 1rem; }
.abe-anc-drawer-done {
  padding: .6rem 1.5rem;
  background: #1e3a8a; color: #fff;
  border: none; border-radius: .4rem;
  font-weight: 600; font-size: .9rem;
  cursor: pointer;
  transition: background .15s;
}
.abe-anc-drawer-done:hover { background: var(--color-primary-dk); }

/* ── Entry rows on the main review page - stacked full-width cards
   with icon on the left and a right-aligned text CTA link. */
.abe-anc-entry-list {
  display: flex; flex-direction: column;
  gap: .55rem;
}

/* Section heading sits OUTSIDE the cards (Cancellations & changes pattern) */
.abe-anc-section-title {
  font-size: 20px;
  font-weight: 700;
  color: #0f172a;
  margin: 0 0 .15rem;
  padding: 0;
}
.abe-anc-section-sub {
  font-size: .85rem; color: #64748b; margin: 0 0 1rem;
}

/* Card variant: bigger, shadowed, coloured icon tile, teal title */
.abe-anc-entry-card {
  display: flex; align-items: center; gap: 1.15rem;
  padding: 1.1rem 1.35rem; margin-bottom: .85rem;
  background: #fff;
  border: 1px solid #f1f5f9; border-radius: 12px;
  box-shadow: 0 4px 14px rgba(15,23,42,.06), 0 1px 3px rgba(15,23,42,.04);
  cursor: pointer; text-align: left; font: inherit; width: 100%;
  transition: box-shadow .15s, transform .15s;
}
.abe-anc-entry-card:hover {
  box-shadow: 0 6px 20px rgba(15,23,42,.09), 0 2px 4px rgba(15,23,42,.05);
  transform: translateY(-1px);
}
.abe-anc-entry-card:last-of-type { margin-bottom: 0; }
.abe-anc-entry-card .abe-anc-entry-icon {
  width: 56px; height: 56px;
  background: #ecfeff; color: #0e7490;
  border-radius: 10px;
}
.abe-anc-entry-card .abe-anc-entry-icon svg { width: 28px; height: 28px; }
.abe-anc-entry-card .abe-anc-entry-body strong {
  color: #0e7490; font-size: 1.05rem; font-weight: 700;
  margin-bottom: .1rem;
}
.abe-anc-entry-card .abe-anc-entry-body small {
  color: #475569; font-size: .85rem;
}
.abe-anc-entry-card .abe-anc-entry-value {
  color: #64748b; font-size: .82rem; font-weight: 500;
}
.abe-anc-entry-card:hover .abe-anc-entry-value { color: #0e7490; }

.abe-anc-entry-row {
  display: flex; align-items: center; gap: 1rem;
  padding: 1rem 1.1rem;
  background: #fff;
  border: 1px solid #e2e8f0; border-radius: .5rem;
  cursor: pointer;
  text-align: left;
  transition: border-color .15s, box-shadow .15s;
  font: inherit;
  width: 100%;
}
.abe-anc-entry-row:not(.abe-anc-entry-card):hover {
  border-color: #bfdbfe;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .05);
}
.abe-anc-entry-row:not(.abe-anc-entry-card):hover .abe-anc-entry-value { color: var(--color-primary-dk); }
.abe-anc-entry-icon {
  flex-shrink: 0;
  width: 44px; height: 44px;
  display: inline-flex; align-items: center; justify-content: center;
  background: #eef2ff; color: var(--color-primary-dk);
  border-radius: .5rem;
}
.abe-anc-entry-icon svg { width: 20px; height: 20px; }
.abe-anc-entry-body {
  flex: 1; min-width: 0;
  display: flex; flex-direction: column; gap: .2rem;
}
.abe-anc-entry-body strong {
  font-size: .95rem; font-weight: 700; color: #0f172a;
  line-height: 1.3;
}
.abe-anc-entry-body small {
  font-size: .82rem; color: #64748b;
  line-height: 1.4;
}
.abe-anc-entry-value {
  flex-shrink: 0;
  font-size: .88rem; font-weight: 600;
  color: var(--color-primary-dk);
  white-space: nowrap;
  background: transparent;
  border: 0;
  padding: 0;
  transition: color .15s;
}
.abe-anc-entry-value--set {
  color: #047857;
}

/* ── Tab strip inside the drawer ─────────────────────────────────── */
.abe-anc-tabs {
  display: flex; gap: .35rem;
  padding: .6rem;
  background: #f8fafc;
  border-radius: .5rem;
  margin-bottom: 1rem;
}
.abe-anc-tab {
  flex: 1;
  display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
  padding: .65rem .5rem;
  background: transparent;
  border: 1px solid transparent; border-radius: .4rem;
  color: #64748b; font-size: .82rem; font-weight: 600;
  cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
}
.abe-anc-tab svg { flex-shrink: 0; width: 16px; height: 16px; }
.abe-anc-tab:hover { background: #fff; color: #0f172a; }
.abe-anc-tab.active {
  background: #fff;
  color: var(--color-primary-dk);
  border-color: #bfdbfe;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .06);
}

/* ── Panels (one per tab) ────────────────────────────────────────── */
.abe-anc-panels { display: block; }
.abe-anc-panel { display: none; }
.abe-anc-panel.active { display: block; }

/* Per-segment section heading - "Departure Excess Baggage: DEL - BOM" */
.abe-anc-seg-block { margin-bottom: 1.1rem; animation: abeAncSegFade .25s ease-out; }
.abe-anc-seg-block:last-child { margin-bottom: 0; }
@keyframes abeAncSegFade {
  from { opacity: 0; transform: translateX(12px); }
  to   { opacity: 1; transform: translateX(0); }
}
.abe-anc-seg-head {
  display: flex; flex-direction: column; gap: .15rem;
  padding-bottom: .5rem; margin-bottom: .55rem;
  border-bottom: 1px solid #e2e8f0;
}
.abe-anc-seg-head strong { font-size: .9rem; color: #0f172a; }
.abe-anc-seg-head small  { font-size: .74rem; color: #64748b; }

/* ── Sub-stepper (one seg visible at a time per panel) ───────────── */
.abe-anc-stepper {
  display: flex; align-items: center; gap: .35rem;
  margin: 0 0 1rem;
  padding: .45rem .5rem;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: .5rem;
  overflow-x: auto;
}
.abe-anc-step {
  flex: 0 0 auto;
  display: inline-flex; align-items: center; gap: .45rem;
  padding: .35rem .7rem;
  background: transparent;
  border: 1px solid transparent; border-radius: .35rem;
  color: #64748b; font-size: .78rem; font-weight: 600;
  cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
  white-space: nowrap;
}
.abe-anc-step:hover { background: #fff; color: #0f172a; }
.abe-anc-step-num {
  display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px;
  background: #e2e8f0; color: #64748b;
  border-radius: 50%;
  font-size: .72rem; font-weight: 700;
  transition: background .15s, color .15s;
}
.abe-anc-step.active {
  background: #fff;
  color: var(--color-primary-dk);
  border-color: #bfdbfe;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .06);
}
.abe-anc-step.active .abe-anc-step-num { background: var(--color-primary-dk); color: #fff; }
.abe-anc-step.done { color: #047857; }
.abe-anc-step.done .abe-anc-step-num { background: #10b981; color: #fff; }
.abe-anc-step-label { font-size: .78rem; }
.abe-anc-step-sep {
  flex: 0 0 18px;
  height: 1px;
  background: #cbd5e1;
}

/* Next-flight CTA at the bottom of a non-last seg block */
.abe-anc-seg-next-wrap {
  display: flex; justify-content: flex-end;
  margin-top: .75rem; padding-top: .6rem;
  border-top: 1px dashed #e2e8f0;
}
.abe-anc-seg-next {
  display: inline-flex; align-items: center; gap: .4rem;
  padding: .55rem .9rem;
  background: var(--color-primary-dk); color: #fff;
  border: none; border-radius: .4rem;
  font-size: .82rem; font-weight: 600;
  cursor: pointer;
  transition: background .15s, transform .1s;
}
.abe-anc-seg-next:hover { background: var(--color-primary-dk); }
.abe-anc-seg-next:active { transform: translateY(1px); }
.abe-anc-seg-next svg { flex-shrink: 0; }

/* ── Per-pax sub-tabs (inside each segment block) ────────────────── */
/* Rendered only when booking has >1 non-infant pax. Chips scroll
   horizontally on small screens so any number of pax stays reachable. */
.abe-anc-pax-tabs {
  display: flex; align-items: center; gap: .35rem;
  margin: 0 0 .75rem;
  padding: .3rem .35rem;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 999px;
  overflow-x: auto;
  width: fit-content;
  max-width: 100%;
}
.abe-anc-pax-tab {
  flex: 0 0 auto;
  display: inline-flex; align-items: center; gap: .45rem;
  padding: .4rem .85rem;
  background: transparent;
  border: none;
  border-radius: 999px;
  color: #64748b;
  font-size: .78rem; font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: background .15s, color .15s;
}
.abe-anc-pax-tab:hover { background: #f1f5f9; color: #0f172a; }
.abe-anc-pax-tab-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: #cbd5e1;
  transition: background .15s;
}
.abe-anc-pax-tab.active {
  background: #eff6ff;
  color: var(--color-primary-dk);
}
.abe-anc-pax-tab.active .abe-anc-pax-tab-dot { background: var(--color-primary-dk); }
.abe-anc-pax-tab.done { color: #047857; }
.abe-anc-pax-tab.done .abe-anc-pax-tab-dot { background: #10b981; }

.abe-anc-pax-block { padding: 0; }

/* "Same as Adult 1" quick-apply. Dashed outline signals a shortcut -
   it isn't a destructive action so we keep it low-key. */
.abe-anc-copy-prev {
  display: inline-flex; align-items: center; gap: .4rem;
  padding: .35rem .7rem;
  margin: 0 0 .6rem;
  background: #f8fafc;
  border: 1px dashed #94a3b8; border-radius: .35rem;
  color: #475569;
  font-size: .75rem; font-weight: 600;
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
}
.abe-anc-copy-prev:hover {
  background: #eff6ff;
  border-color: var(--color-primary-dk);
  border-style: solid;
  color: var(--color-primary-dk);
}
.abe-anc-copy-prev svg { flex-shrink: 0; }

/* ── Full-row option with Select / Selected ──────────────────────── */
.abe-anc-row {
  display: flex; align-items: center; gap: .75rem;
  padding: .7rem .85rem;
  margin-bottom: .5rem;
  background: #fff;
  border: 1px solid #e2e8f0; border-radius: .45rem;
  cursor: pointer;
  position: relative;
  transition: border-color .15s, background .15s, box-shadow .15s;
}
.abe-anc-row:hover { border-color: #94a3b8; }
.abe-anc-row input {
  position: absolute; opacity: 0; pointer-events: none;
}
.abe-anc-row-icon {
  flex-shrink: 0;
  width: 32px; height: 32px;
  display: inline-flex; align-items: center; justify-content: center;
  background: #f1f5f9; color: #475569;
  border-radius: .35rem;
}
.abe-anc-row-icon svg { width: 16px; height: 16px; }
.abe-anc-row-body {
  flex: 1; min-width: 0;
  display: flex; flex-direction: column; gap: .1rem;
}
.abe-anc-row-body strong { font-size: .85rem; color: #0f172a; }
.abe-anc-row-body small  { font-size: .72rem; color: #64748b; }
.abe-anc-row-price {
  flex-shrink: 0;
  font-size: .82rem; font-weight: 600; color: #0f172a;
  min-width: 60px; text-align: right;
}
.abe-anc-row-btn {
  flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 82px;
  padding: .4rem .7rem;
  background: #fff;
  border: 1px solid var(--color-primary-dk); border-radius: .35rem;
  color: var(--color-primary-dk);
  font-size: .76rem; font-weight: 600;
  transition: background .15s, color .15s;
}
.abe-anc-row-btn-idle { display: inline; }
.abe-anc-row-btn-done { display: none; }

/* Selected state - green border, highlighted row, button flips to "Selected" */
.abe-anc-row:has(input:checked),
.abe-anc-row.is-checked {
  border-color: #16a34a;
  background: #f0fdf4;
  box-shadow: 0 0 0 1px #86efac;
}
.abe-anc-row:has(input:checked) .abe-anc-row-icon {
  background: #dcfce7; color: #166534;
}
.abe-anc-row:has(input:checked) .abe-anc-row-btn {
  background: #16a34a; border-color: #16a34a; color: #fff;
}
.abe-anc-row:has(input:checked) .abe-anc-row-btn-idle { display: none; }
.abe-anc-row:has(input:checked) .abe-anc-row-btn-done { display: inline; }

/* ── Seat map ─────────────────────────────────────────────────────
   Drawn as a plane fuselage: rounded nose at top with cockpit windows,
   white body holding the seat grid, tapered rounded tail at the bottom.
   Grid drawn column-by-column: [row-label] [left cols] [aisle] [right cols] [row-label].
   `--header` variant is reused for the A/B/C/D/E/F column strip at the top. */
.abe-seat-map-wrap {
  padding: 1.25rem .75rem 1.5rem;
  margin-bottom: .85rem;
  background: #eff6ff;
  border: 1px solid #dbeafe; border-radius: .6rem;
}
.abe-seat-map {
  position: relative;
  max-width: 320px;
  margin: 0 auto;
  padding: 1.9rem 1rem 2.2rem;
  background: #fff;
  border: 1px solid #cbd5e1;
  border-top-left-radius: 170px 220px;
  border-top-right-radius: 170px 220px;
  border-bottom-left-radius: 60px 100px;
  border-bottom-right-radius: 60px 100px;
  box-shadow: 0 3px 14px rgba(29, 78, 216, .08);
}
/* Cockpit windows - two angled dark panels flanking the centre line */
.abe-seat-map-cockpit {
  position: relative;
  width: 110px; height: 22px;
  margin: 0 auto .55rem;
}
.abe-seat-map-cockpit::before,
.abe-seat-map-cockpit::after {
  content: "";
  position: absolute; top: 0;
  width: 46px; height: 100%;
  background: #334155;
  border-radius: 3px 3px 8px 8px;
}
.abe-seat-map-cockpit::before { left: 0; transform: skewX(18deg); }
.abe-seat-map-cockpit::after  { right: 0; transform: skewX(-18deg); }
.abe-seat-map-front,
.abe-seat-map-back {
  text-align: center;
  margin: 0 auto .95rem;
  color: var(--color-primary-dk); font-size: .92rem; font-weight: 700;
}
.abe-seat-map-back {
  margin: 1rem auto .4rem;
  padding-top: .8rem;
  border-top: 1px dashed #e2e8f0;
}
/* Tail cap - small rounded rectangle suggesting the rudder just below
   "Back Entrance". Visual decoration only. */
.abe-seat-map-tail {
  width: 22px; height: 38px;
  margin: 0 auto;
  background: #94a3b8;
  border-radius: 10px 10px 40% 40% / 10px 10px 60% 60%;
  opacity: .35;
}
.abe-seat-map-row {
  display: flex; align-items: center; justify-content: center;
  gap: .3rem;
  margin-bottom: .3rem;
}
.abe-seat-map-row:last-child { margin-bottom: 0; }
.abe-seat-map-row--header { margin-bottom: .55rem; }
.abe-seat-row-lbl {
  flex: 0 0 22px;
  text-align: center;
  color: #64748b; font-size: .72rem; font-weight: 600;
}
.abe-seat-col-lbl {
  flex: 0 0 36px;
  text-align: center;
  color: #64748b; font-size: .72rem; font-weight: 700;
  text-transform: uppercase;
}
.abe-seat-aisle {
  flex: 0 0 18px;
}

.abe-seat {
  flex: 0 0 36px;
  height: 42px;
  position: relative;
  display: inline-flex; flex-direction: column;
  align-items: center; justify-content: center;
  border-radius: .35rem;
  font-size: .7rem; font-weight: 600;
  cursor: pointer;
  transition: transform .1s, box-shadow .15s, background .15s, border-color .15s;
}
.abe-seat input {
  position: absolute; opacity: 0; pointer-events: none;
}
.abe-seat-code { line-height: 1; }
.abe-seat-price {
  margin-top: 2px;
  font-size: .58rem; font-weight: 600; color: inherit;
  opacity: .85; letter-spacing: -.01em;
}
.abe-seat--avail {
  background: #dbeafe;
  border: 1px solid #60a5fa;
  color: var(--color-primary-dk);
}
.abe-seat--avail:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 6px rgba(29, 78, 216, .18);
  border-color: var(--color-primary);
}
.abe-seat--avail:has(input:checked),
.abe-seat--avail.is-checked {
  background: #16a34a;
  border-color: #15803d;
  color: #fff;
  box-shadow: 0 2px 6px rgba(22, 163, 74, .35);
}
.abe-seat--occupied {
  background: #fee2e2;
  border: 1px solid #fca5a5;
  color: #b91c1c;
  cursor: not-allowed;
  opacity: .85;
}
.abe-seat--gap {
  background: transparent;
  border: 1px dashed transparent;
  cursor: default;
  pointer-events: none;
}

/* "Skip seat selection" row - sits under the map, full-width label */
.abe-seat-map-skip {
  display: flex; align-items: center; gap: .55rem;
  padding: .65rem .85rem;
  margin: .75rem 0 .6rem;
  background: #fff;
  border: 1px solid #e2e8f0; border-radius: .45rem;
  color: #475569; font-size: .8rem;
  cursor: pointer;
  position: relative;
  transition: border-color .15s, background .15s, box-shadow .15s;
}
.abe-seat-map-skip:hover { border-color: #94a3b8; }
.abe-seat-map-skip input {
  position: absolute; opacity: 0; pointer-events: none;
}
.abe-seat-map-skip::before {
  content: ""; flex-shrink: 0;
  width: 14px; height: 14px;
  border: 2px solid #cbd5e1; border-radius: 999px;
  background: #fff;
  transition: border-color .15s, background .15s, box-shadow .15s;
}
.abe-seat-map-skip:has(input:checked),
.abe-seat-map-skip.is-checked {
  border-color: #16a34a;
  background: #f0fdf4;
  color: #166534;
}
.abe-seat-map-skip:has(input:checked)::before,
.abe-seat-map-skip.is-checked::before {
  border-color: #16a34a;
  background: #16a34a;
  box-shadow: inset 0 0 0 3px #fff;
}

.abe-seat-map-legend {
  display: flex; flex-wrap: wrap; gap: .9rem;
  padding-top: .55rem;
  border-top: 1px dashed #e2e8f0;
  color: #64748b; font-size: .74rem;
}
.abe-seat-map-legend > span {
  display: inline-flex; align-items: center; gap: .35rem;
}
.abe-seat-swatch {
  display: inline-block;
  width: 14px; height: 14px;
  border-radius: .2rem;
}
.abe-seat-swatch--avail    { background: #dbeafe; border: 1px solid #60a5fa; }
.abe-seat-swatch--selected { background: #16a34a; border: 1px solid #15803d; }
.abe-seat-swatch--occupied { background: #fee2e2; border: 1px solid #fca5a5; }

/* Lock body scroll when the drawer is open so the page beneath stays put */
body.abe-anc-lock { overflow: hidden; }

@media (max-width: 640px) {
  .abe-anc-drawer, .abe-anc-drawer--wide { max-width: 100%; }
  .abe-anc-drawer-body { padding: .85rem .9rem; }
  .abe-anc-drawer-head, .abe-anc-drawer-foot { padding-left: .9rem; padding-right: .9rem; }
  .abe-anc-entry-row { flex-wrap: wrap; gap: .6rem .85rem; padding: .85rem .9rem; }
  .abe-anc-entry-body { flex-basis: calc(100% - 60px); }
  .abe-anc-entry-value { flex-basis: 100%; text-align: right; }
  .abe-anc-tab span { display: none; }
  .abe-anc-step-label { display: none; }
  .abe-anc-step { padding: .35rem .55rem; }
  .abe-anc-step-sep { flex-basis: 10px; }
  .abe-anc-seg-next { width: 100%; justify-content: center; }
  .abe-anc-seg-next-wrap { justify-content: stretch; }
  .abe-anc-row { flex-wrap: wrap; gap: .5rem; }
  .abe-anc-row-price { min-width: 0; }
  .abe-anc-summary { flex-direction: column; align-items: stretch; }
  .abe-anc-summary-btn { width: 100%; justify-content: center; }
  .abe-seat-map { padding: .8rem .35rem 1rem; }
  .abe-seat-map-row { gap: .2rem; }
  .abe-seat { flex-basis: 30px; height: 38px; font-size: .65rem; }
  .abe-seat-col-lbl { flex-basis: 30px; }
  .abe-seat-row-lbl { flex-basis: 18px; }
  .abe-seat-aisle { flex-basis: 12px; }
  .abe-seat-price { font-size: .52rem; }
}

/* ══════════════════════════════════════════════════════════════
   BUS SEAT-MAP MODAL - popup that gates the combo pick on seats.
   User clicks Select on a card → modal fetches seat layout from
   bus-offer.php (Adivaha API or extranet) → user picks N seats and
   boarding/dropping points → Confirm persists picks into
   state.comboSeatPicks and advances to the next leg. The combo bar
   only enables BOOK NOW once every leg has both an offer pick and
   a seat pick.
   ══════════════════════════════════════════════════════════════ */
.abe-bsm-backdrop {
  position: fixed; inset: 0;
  background: rgba(15, 23, 42, .55);
  z-index: 10000;
  display: flex; align-items: center; justify-content: center;
  animation: abeBsmFade .15s ease-out;
}
@keyframes abeBsmFade { from { opacity: 0; } to { opacity: 1; } }
.abe-bsm-dialog {
  background: #fff; border-radius: 14px;
  width: min(960px, calc(100vw - 2rem));
  max-height: calc(100vh - 2rem);
  overflow: hidden; display: flex; flex-direction: column;
  box-shadow: 0 24px 60px rgba(15, 23, 42, .35);
}
.abe-bsm-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 1rem 1.25rem; border-bottom: 1px solid #e2e8f0;
  background: linear-gradient(135deg, var(--color-primary-dk), var(--color-primary-dk)); color: #fff;
}
.abe-bsm-header h3 { margin: 0; font-size: 1rem; font-weight: 700; }
.abe-bsm-header-sub { font-size: .78rem; opacity: .9; margin-top: 2px; }
.abe-bsm-close {
  background: rgba(255, 255, 255, .15); border: 0; color: #fff;
  width: 32px; height: 32px; border-radius: 8px; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  transition: background .15s;
}
.abe-bsm-close:hover { background: rgba(255, 255, 255, .25); }
.abe-bsm-body {
  flex: 1; overflow-y: auto; padding: 1rem 1.25rem;
  display: grid; grid-template-columns: 1fr 320px; gap: 1.25rem;
}
.abe-bsm-loading {
  padding: 3rem 1rem; text-align: center; color: #64748b;
  grid-column: 1 / -1;
}

/* Seat grid - supports lower + upper deck for sleeper buses. Each seat
   is positioned by row/column from the canonical seat_layout payload. */
.abe-bsm-deck-wrap {
  background: #f8fafc; border: 1px solid #e2e8f0;
  border-radius: 10px; padding: .75rem;
}
.abe-bsm-deck-wrap + .abe-bsm-deck-wrap { margin-top: .65rem; }
.abe-bsm-deck-label {
  font-size: .7rem; font-weight: 700; letter-spacing: .08em;
  color: #475569; text-transform: uppercase; margin-bottom: .5rem;
}
.abe-bsm-deck-driver {
  text-align: right; font-size: .68rem; color: #64748b; margin-bottom: .35rem;
}
.abe-bsm-deck {
  display: flex; flex-direction: column; gap: .3rem;
}
.abe-bsm-row { display: flex; gap: .3rem; justify-content: center; align-items: center; }
.abe-bsm-aisle { width: 16px; flex-shrink: 0; }
.abe-bsm-seat {
  width: 36px; height: 36px;
  border: 1px solid #cbd5e1; background: #fff;
  border-radius: 6px; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  font-size: .65rem; font-weight: 700; color: #1e293b;
  padding: 0;
  position: relative;
  transition: transform .1s, border-color .1s, background .1s;
}
.abe-bsm-seat:hover:not(:disabled) { transform: translateY(-1px); border-color: var(--color-primary-dk); }
.abe-bsm-seat--ladies { background: #fce7f3; border-color: #ec4899; }
.abe-bsm-seat--sold {
  background: #cbd5e1; color: #fff; cursor: not-allowed; border-color: #94a3b8;
}
.abe-bsm-seat--picked {
  background: #10b981; border-color: #059669; color: #fff;
}
.abe-bsm-seat--picked:hover { background: #059669; }
.abe-bsm-seat-extra {
  position: absolute; bottom: -3px; right: -3px;
  background: #f59e0b; color: #fff;
  font-size: .54rem; font-weight: 700;
  padding: 1px 3px; border-radius: 4px;
  line-height: 1;
}
.abe-bsm-seat--gap { background: transparent; border-color: transparent; pointer-events: none; }

.abe-bsm-legend {
  display: flex; gap: 1rem; flex-wrap: wrap;
  margin-top: .65rem; font-size: .7rem; color: #64748b;
}
.abe-bsm-legend span { display: inline-flex; align-items: center; gap: .35rem; }
.abe-bsm-legend i {
  width: 14px; height: 14px; border-radius: 3px;
  display: inline-block; vertical-align: middle;
  border: 1px solid #cbd5e1; background: #fff;
}
.abe-bsm-legend i.is-sold    { background: #cbd5e1; border-color: #94a3b8; }
.abe-bsm-legend i.is-picked  { background: #10b981; border-color: #059669; }
.abe-bsm-legend i.is-ladies  { background: #fce7f3; border-color: #ec4899; }

/* Right-side panel: boarding / dropping picks + selected summary */
.abe-bsm-side { display: flex; flex-direction: column; gap: .9rem; }
.abe-bsm-side h4 {
  margin: 0; font-size: .78rem; font-weight: 700; color: #0f172a;
  text-transform: uppercase; letter-spacing: .06em;
}
.abe-bsm-pt-select {
  width: 100%;
  padding: .55rem .7rem;
  border: 1px solid #cbd5e1; border-radius: 8px;
  background: #fff;
  font-size: .82rem; color: #0f172a;
  cursor: pointer;
  font-family: inherit;
  transition: border-color .15s, box-shadow .15s;
}
.abe-bsm-pt-select:focus {
  outline: none;
  border-color: var(--color-primary-dk);
  box-shadow: 0 0 0 3px rgba(29,78,216,.12);
}
.abe-bsm-pt-empty {
  padding: .6rem .75rem;
  border: 1px dashed #cbd5e1; border-radius: 8px;
  background: #f8fafc; color: #64748b;
  font-size: .78rem;
}
.abe-bsm-summary {
  background: #f8fafc; border: 1px solid #e2e8f0;
  border-radius: 8px; padding: .65rem .75rem; font-size: .78rem;
}
.abe-bsm-summary-row {
  display: flex; justify-content: space-between; gap: .5rem;
  padding: .25rem 0;
}
.abe-bsm-summary-row.total {
  border-top: 1px solid #e2e8f0; padding-top: .5rem; margin-top: .35rem;
  font-weight: 700; font-size: .9rem; color: #0f172a;
}

.abe-bsm-footer {
  display: flex; align-items: center; justify-content: space-between;
  padding: .85rem 1.25rem; border-top: 1px solid #e2e8f0;
  background: #f8fafc;
}
.abe-bsm-hint { font-size: .78rem; color: #64748b; }
.abe-bsm-hint.is-warn { color: #d97706; }
.abe-bsm-hint.is-ok   { color: #059669; }
.abe-bsm-confirm {
  padding: .65rem 1.5rem; border: 0; border-radius: 8px;
  background: #059669; color: #fff; font-weight: 700; font-size: .85rem;
  cursor: pointer; letter-spacing: .04em;
  transition: background .15s;
}
.abe-bsm-confirm:hover:not(:disabled) { background: #047857; }
.abe-bsm-confirm:disabled { background: #cbd5e1; cursor: not-allowed; }

@media (max-width: 768px) {
  .abe-bsm-body { grid-template-columns: 1fr; }
}

/* ── Final responsive pass (theme-agnostic) ────────────────────
   Defensive cover for the booking widget across every theme. These
   rules use plain .abe-* selectors so they apply regardless of which
   theme is active. Per-theme engine.css overrides (Classic, Traveller)
   still take precedence via body.theme-<slug> specificity. */

/* Tablet */
@media (max-width: 900px) {
  .abe-search-widget { max-width: 100%; }
  .abe-trip-tabs { flex-wrap: wrap; }
  .abe-multi-row { flex-direction: column; align-items: stretch; }
  .abe-multi-row .abe-field { width: 100%; }
  .abe-results-layout { grid-template-columns: 1fr; gap: 1rem; }
  .abe-filters-pane { position: static; max-height: none; }
  .abe-cal-popover { width: calc(100vw - 2rem); max-width: 520px; }
  /* Result cards stay horizontal at tablet - just tighter gap. */
  .abe-flight-row { gap: .85rem; }
  .abe-hotel-card { grid-template-columns: 220px 1fr; gap: .85rem; }
}

/* Phone */
@media (max-width: 640px) {
  .abe-search-widget { padding: .25rem; border-radius: 12px; }
  .abe-search-tabs {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .abe-search-tabs::-webkit-scrollbar { display: none; }
  .abe-search-tab { flex: 0 0 auto; min-width: 0; padding: .65rem .85rem; font-size: .7rem; }
  .abe-search-tab svg { width: 18px; height: 18px; }
  .abe-search-fields { flex-direction: column; gap: .5rem; }
  .abe-field,
  .abe-field--wide,
  .abe-field--narrow,
  .abe-field--auto { flex: 1 1 100%; min-width: 0; width: 100%; }
  .abe-search-btn { width: 100%; height: 50px; }
  .abe-trip-tabs { gap: .35rem; padding: .25rem; }
  .abe-trip-tab { padding: .4rem .85rem; font-size: .78rem; }
  .abe-fare-type-row { flex-wrap: wrap; gap: .5rem; }
  .abe-adv-panel { padding: .85rem; }
  .abe-adv-group { width: 100%; }
  .abe-chip-group { flex-wrap: wrap; }
  /* Popovers fill the screen with comfortable margins. */
  .abe-cal-popover,
  .abe-pax-dropdown,
  .abe-ac-dropdown {
    position: fixed;
    left: 1rem !important;
    right: 1rem !important;
    width: auto !important;
    max-width: none !important;
    top: auto;
    max-height: 70vh;
    overflow-y: auto;
  }
  /* Results - sidebar + main column stack; cards use full width. */
  .abe-results-toolbar { flex-direction: column; align-items: stretch; gap: .65rem; }
  .abe-results-pagination { flex-wrap: wrap; justify-content: center; }

  /* ── Flight card: world-class compact mobile layout ──
     Default desktop puts airline / time-route / price+book in one
     wide row. On phones we keep horizontal but tighten everything
     and drop weights so a card fits the viewport with no scroll. */
  .abe-flight-card,
  .abe-flight-result {
    padding: .85rem !important;
    border-radius: 12px;
  }
  .abe-flight-airline {
    margin-bottom: .65rem;
    gap: .45rem;
  }
  .abe-airline-badge {
    width: 32px; height: 32px;
    font-size: .68rem;
    border-radius: 8px;
  }
  .abe-airline-info .airline-name { font-size: .82rem; }
  .abe-airline-info small { font-size: .65rem; }
  /* Time + route row stays horizontal. */
  .abe-flight-row {
    flex-direction: row;
    align-items: center;
    gap: .5rem;
    padding: 0;
  }
  .abe-flight-time { min-width: 56px; }
  .abe-flight-time .time { font-size: 1.05rem; }
  .abe-flight-time .code { font-size: .68rem; }
  .abe-flight-segs { flex: 1; min-width: 0; }
  .abe-flight-path { padding: 0 .25rem; }
  .abe-flight-duration { font-size: .65rem; }
  /* Price + Book button row at the bottom - horizontal split. */
  .abe-flight-foot,
  .abe-flight-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-top: .75rem;
    padding-top: .75rem;
    border-top: 1px dashed #e2e8f0;
  }
  .abe-flight-price,
  .abe-price { font-size: 1.1rem; font-weight: 700; white-space: nowrap; }
  .abe-flight-book,
  .abe-book-btn,
  .abe-cta {
    flex: 0 0 auto;
    padding: .5rem 1rem;
    font-size: .82rem;
    border-radius: 8px;
    height: auto;
    min-height: 36px;
  }
  /* Direct / non-stop badge stays inline. */
  .abe-direct-badge,
  .abe-stops-badge { font-size: .62rem; padding: .15rem .5rem; }

  /* ── Hotel result card on phone: image + content stacked ── */
  .abe-hotel-card {
    display: block !important;
    grid-template-columns: 1fr !important;
    padding: 0 !important;
    overflow: hidden;
    border-radius: 12px;
  }
  .abe-hotel-img {
    width: 100%;
    height: 180px;
    border-radius: 12px 12px 0 0;
  }
  .abe-hotel-body { padding: .85rem; }
  .abe-hotel-name { font-size: .98rem; }
  .abe-hotel-location { font-size: .78rem; }
  .abe-hotel-price-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: .65rem;
  }

  /* Cart drawer becomes full-screen */
  .abe-cart-drawer { width: 100vw !important; }
  /* Hotel detail / room cards stack their action buttons */
  .abe-room-row { flex-direction: column; align-items: stretch; }
  .abe-room-cta { width: 100%; }
  /* Booking confirmation grids collapse */
  .abe-conf-grid,
  .abe-rv-grid,
  .abe-pax-grid { grid-template-columns: 1fr !important; }

  /* Filters panel - collapse to a sticky toggle button on phones. */
  .abe-filters-pane { padding: .85rem; }
  .abe-filter-group { margin-bottom: 1rem; }
}

/* Tiny phones */
@media (max-width: 380px) {
  .abe-search-tab { padding: .55rem .65rem; font-size: .65rem; }
  .abe-search-tab svg { width: 16px; height: 16px; }
  .abe-trip-tab { padding: .35rem .7rem; font-size: .72rem; }
  .abe-search-btn { height: 46px; font-size: .9rem; }
}

/* ── Pay Later (Book Now, Pay Later / hold) ─────────────────────── */
.abe-rv-paylater {
  margin: .75rem 0;
  padding: .75rem;
  border: 1.5px solid #fde68a;
  background: #fffbeb;
  border-radius: .55rem;
}
.abe-paylater-badge {
  font-size: .72rem;
  font-weight: 700;
  color: #b45309;
  text-transform: uppercase;
  letter-spacing: .02em;
  margin-bottom: .5rem;
}
.abe-pay-opt {
  display: flex;
  align-items: flex-start;
  gap: .5rem;
  padding: .45rem .25rem;
  font-size: .82rem;
  color: #334155;
  cursor: pointer;
}
.abe-pay-opt + .abe-pay-opt { border-top: 1px dashed #fde68a; }
.abe-pay-opt input { margin-top: .15rem; }
.abe-pay-opt strong { color: #0f172a; }

/* ── Pay Balance (held booking confirmation) ────────────────────── */
.abe-conf-paylater {
  margin: 1rem auto 0;
  max-width: 520px;
  padding: 1rem;
  background: #fffbeb;
  border: 1.5px solid #fde68a;
  border-radius: .6rem;
  text-align: center;
}
.abe-conf-paylater-msg { font-size: .9rem; color: #92400e; margin-bottom: .75rem; }
.abe-conf-paybalance {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  padding: .7rem 1.4rem;
  font-size: .95rem;
  font-weight: 700;
  color: #fff;
  background: #d97706;
  border: 0;
  border-radius: .5rem;
  cursor: pointer;
}
.abe-conf-paybalance:hover { background: #b45309; }
.abe-conf-paybalance:disabled { opacity: .6; cursor: default; }

/* ── Hotel detail: badges + trust/promo strip ───────────────────── */
.abe-detail-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.abe-badge {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: .72rem; font-weight: 600; line-height: 1; white-space: nowrap;
  padding: 5px 10px; border-radius: 999px;
  background: #f1f5f9; color: #475569; border: 1px solid #e2e8f0;
}
.abe-badge--good  { background: #dcfce7; color: #15803d; border-color: #bbf7d0; }
.abe-badge--meal  { background: #fef3c7; color: #92400e; border-color: #fde68a; }
.abe-badge--info  { background: #e0f2fe; color: #0369a1; border-color: #bae6fd; }
.abe-badge--promo {
  background: var(--abe-accent-soft, rgba(15, 118, 110, .12));
  color: var(--abe-accent, #0f766e); border-color: transparent;
}
.abe-trust-strip {
  display: flex; flex-wrap: wrap; gap: 16px; justify-content: center;
  padding: 13px 16px; margin: 14px 0;
  background: #f8fafc; border: 1px solid #eef2f6; border-radius: 12px;
}
.abe-trust-item {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: .8rem; font-weight: 600; color: #475569;
}
.abe-trust-item svg { color: var(--abe-accent, #0f766e); flex: none; }
@media (max-width: 560px) {
  .abe-trust-strip { gap: 10px 14px; padding: 11px 12px; }
  .abe-trust-item { font-size: .72rem; }
}

/* ── Unified cart checkout form (guest details) ───────────────────────── */
.abe-checkout-drawer { z-index: 100001; }
.abe-checkout-body { padding: 1rem 1.25rem 1.5rem; overflow-y: auto; }
.abe-co-section { margin-bottom: 1.25rem; }
.abe-co-section h4 { margin: 0 0 .6rem; font-size: .95rem; color: #0f172a; font-weight: 700; }
.abe-co-section h4 small { color: #64748b; font-weight: 400; }
.abe-co-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem .7rem; }
.abe-co-field { display: flex; flex-direction: column; gap: .25rem; font-size: .78rem; color: #475569; }
.abe-co-field span { font-weight: 600; }
.abe-co-field input, .abe-co-field select { padding: .5rem .6rem; border: 1px solid #cbd5e1; border-radius: 8px; font-size: .9rem; background: #fff; }
.abe-co-field input:focus, .abe-co-field select:focus { outline: none; border-color: #16a34a; box-shadow: 0 0 0 2px rgba(22,163,74,.15); }
.abe-checkout-footer { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.abe-co-total { display: flex; flex-direction: column; font-size: .78rem; color: #64748b; }
.abe-co-total strong { font-size: 1.1rem; color: #0f172a; }
.abe-checkout-footer .abe-cart-book-all { flex: 0 0 auto; }

/* Flight-card Add-to-Cart (secondary action under BOOK NOW) */
.abe-fc-cart { display:block; width:100%; margin-top:.4rem; padding:.45rem .6rem; font-size:.8rem; font-weight:600;
  color:#16a34a; background:#fff; border:1px solid #16a34a; border-radius:8px; cursor:pointer; }
.abe-fc-cart:hover { background:#f0fdf4; }
.abe-fc-cart.in-cart { color:#fff; background:#16a34a; }


/* ═══════════════════════════════════════════════════════════════
   V1 DEFAULT SEARCHBOX DESIGN — dark tab strip + white pill
   Ported from the former per-theme "classic" engine.css and baked in as
   the base booking-engine look so every theme gets it (theme-independent).
   De-scoped from body.theme-classic → plain .abe-*; appended last so it
   wins over the earlier base rules by source order.
   ═══════════════════════════════════════════════════════════════ */

/* ── CLASSIC ─ engine override (dark-strip + white pill) ──
   A continuous dark/translucent tab strip floats above a
   white rounded search bar. Active tab inverts colour: white
   pill with dark text on the dark strip.
   Use `<selector>` so rules beat the
   booking-engine.css defaults via specificity (no).
   ─────────────────────────────────────────────────────────── */

/* Outer widget - transparent so dark strip + white bar float
   independently on top of the hero photo. */
.abe-search-widget {
  background: transparent;
  border-radius: 0;
  box-shadow: none;
  padding: 0;
  overflow: visible;
}

/* Continuous dark tab strip (rounded both ends) - floats over
   the white search bar below it. Self-contained: max-width
   keeps it shorter than the bar so it looks like a chip. */
.abe-search-tabs {
  background: rgba(0, 0, 0, .8);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border-radius: 9999px;
  border-bottom: 0;
  padding: .35rem .5rem;
  gap: .15rem;
  width: max-content;
  max-width: 96%;
  margin: 0 auto -1.4rem;          /* overlap the search bar below */
  position: relative;
  z-index: 99;
  box-shadow: 0 12px 32px -10px rgba(0, 0, 0, .45);
}

.abe-search-tab {
  flex: 0 0 auto;
  flex-direction: row;
  border-radius: 9999px;
  padding: .55rem 10px;
  color: rgba(255, 255, 255, .92);
  font-weight: 600;
  font-size: .88rem;
  background: transparent;
  border-bottom: 0;
  gap: 6px;
  letter-spacing: .01em;
  white-space: nowrap;
}
.abe-search-tab:hover {
  background: rgba(255, 255, 255, .12);
  color: #fff;
}
.abe-search-tab.active {
  background: #fff;
  color: #0f172a;
  border-bottom-color: transparent;
  box-shadow: 0 4px 12px -2px rgba(0, 0, 0, .3);
}
.abe-search-tab svg { width: 16px; height: 16px; }

/* White rounded search bar - sits behind the tab strip overlap.
   Capped at 1200px and centered so it sits inside the page rails on
   wide hero photos instead of stretching edge-to-edge.
   No field-level overrides: search-bar internals fall through to the
   booking-engine.css defaults so we don't end up out of sync with
   engine markup changes. */
.abe-search-bar {
  background: #fff;
  padding: 2.5rem 1.5rem 1.5rem;
  border-radius: 16px;
  box-shadow: 0 12px 32px -12px rgba(15, 23, 42, .25);
  margin: 0 auto;
  max-width: 1200px;
}

/* Search button - primary colour, slightly rounded, taller to match
   the new field-card height. */
.abe-search-btn {
  background: var(--primary);
  border-radius: 5px;
  height: 65px;
  padding: 0 1.75rem;
  font-weight: 600;
  letter-spacing: .02em;
  box-shadow: 0 8px 20px -6px rgba(37, 99, 235, .45);
}
.abe-search-btn:hover { background: var(--primary-dark); }

/* ── Field cards ──────────────────────────────────────────────
   Each field reads as a self-contained outlined card; the input
   inside is borderless so the card border IS the visible chrome.
   .abe-field--auto wraps the Search button - it should NOT carry
   the card border (the button has its own chrome). */
.abe-field {
  border: 1px solid #ddd;
  padding: 10px;
  border-radius: 8px;
}
.abe-field--auto {
  border: 0;
  padding: 0;
  background: transparent;
}
/* The auto column wraps the Search button - its empty label slot
   would otherwise add ~1rem of dead vertical space above the button. */
.abe-field--auto label { display: none; }
/* Greyed label on the white card. */
.abe-field label { color: #9e9e9e; }

/* Multi-city: render the leg index (1, 2, 3 ...) on the left of each
   row using a CSS counter so the number always uses var(--primary)
   (tenant brand colour) and appears reliably regardless of what the
   engine renders. */
.abe-multi-rows { counter-reset: abe-leg; }
.abe-multi-row {
  counter-increment: abe-leg;
  position: relative;
  padding-left: 2rem;
}
.abe-multi-row::before {
  content: counter(abe-leg);
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 1.6rem;
  text-align: center;
  color: var(--primary);
  font-weight: 700;
  font-size: 1.1rem;
}
@media (max-width: 768px) {
  .abe-multi-row { padding-left: 2rem; }
  .abe-multi-row::before { font-size: 1rem; }
}
/* Borderless inputs inside the card; the card padding provides breathing room. */
.abe-field input,
.abe-field select,
.abe-daterange-trigger,
.abe-pax-trigger {
  height: auto;
  padding: 0;
  border: 0;
  border-radius: 0;
  font-weight: 600;
  margin: 0;
}
.abe-pax-trigger:hover { border-color: transparent; }

/* ── Trip-type pills (round trip / one way / multi-city) ──────
   Tab pills sit flush above the search bar, no gap below. */
.abe-trip-tabs {
  margin-bottom: 1rem;
  width: fit-content;
  gap: .75rem;
}
.abe-trip-tab { color: #000; }

/* ── Responsive tweaks (mobile + tablet) ─────────────────────
   The booking-engine.css defaults already wrap fields when
   .abe-search-fields hits its min-width threshold, but the
   classic theme's outlined card border per-field makes the
   wrap feel cramped without explicit stacking. */
@media (max-width: 768px) {
  /* Stack search-bar fields vertically and let each fill the row.
 on these keeps the engine's default flex row from
     winning on touch-class media-query specificity quirks. */
  .abe-search-fields {
    flex-direction: column;
    align-items: stretch;
    gap: .65rem;
  }
  .abe-field { min-width: 0; width: 100%; }
  .abe-field--auto { width: 100%; }
  .abe-search-btn { width: 100%; height: 52px; }
  /* Tab strip becomes a single-row horizontal scroller so all 11
     products stay reachable. flex-wrap:nowrap is the critical bit. */
  .abe-search-tabs {
    width: 100%;
    max-width: 100%;
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    border-radius: 12px;
    margin: 0 0 -1.4rem;
  }
  .abe-search-tabs::-webkit-scrollbar { display: none; }
  .abe-search-tab { flex: 0 0 auto; }
  /* Trip tabs (One Way / Round / Multi) - tighter padding + smaller
     type so all three pills sit on one line on phone widths. The
     extra top margin pushes them off the dark Hotels/Flights tab
     strip's negative-margin overlap (which crowds them on mobile). */
  .abe-trip-tabs {
    flex-wrap: nowrap;
    gap: .5rem;
    padding: .25rem;
  }
  .abe-trip-tab {
    padding: .4rem .85rem;
    font-size: .78rem;
    flex: 0 0 auto;
  }
  .abe-search-bar {
    border-radius: 12px;
  }
}

/* ── Advanced Search panel ───────────────────────────────────
   Flat affordance using tenant --primary so each brand colours
   its own panel. Panel itself is a faint grey wash. */
.abe-adv-toggle {
  margin-top: .85rem;
  padding: 0;
  color: var(--primary);
  background: transparent;
  border: 0;
}
.abe-adv-toggle:hover {
  color: var(--primary-dark);
  background: transparent;
  border-color: transparent;
}
.abe-adv-toggle.open {
  color: var(--primary-dark);
  border-color: var(--primary);
  background: rgba(251, 191, 36, .08);
}
.abe-adv-panel {
  margin-top: 5px;
  padding: 10px;
  background: rgba(158, 158, 158, .14);
  border: 1px solid rgba(0, 0, 0, .06);
}
.abe-adv-group label { color: var(--primary); }
.abe-adv-group select,
.abe-adv-group input { border: 1.5px solid var(--primary); }

/* ── Fare-type radios (Regular / Student / Senior etc.) ───── */
.abe-fare-type-row { color: var(--primary); }
.abe-fare-type-opt { color: var(--primary); }


/* ═══════════════════════════════════════════════════════════════
   RESULTS / SEARCH-PAGE INTEGRATION  (moved out of storefront/index.php)
   Full-bleed search bar + constrained results grid, and a flat white
   results searchbox (no brand-shell flash while rates load). No —
   these are the last rules in the file so they win by source order.
   ═══════════════════════════════════════════════════════════════ */
.search-page .abe-shortcode-wrap { max-width: none; padding: 0; }
.search-page .abe-results-layout { max-width: 1200px; margin: 20px auto; padding: 0; box-sizing: border-box; }
.is-results-state .search-page .abe-results-search-wrap { max-width: none; }
.is-results-state .abe-detail-header,
.is-results-state .abe-review-header,
.is-results-state .abe-confirmation { margin-top: 2rem; }
.search-page #adivaha-booking-engine.abe-root--search { background: transparent; box-shadow: none; padding: 20px; border-radius: 0; }
.search-page #adivaha-booking-engine.abe-root--search:has(.abe-searching) > .abe-search-bar { background: transparent; box-shadow: none; padding: 0; border-radius: 0; }
.search-page #adivaha-booking-engine.abe-root--search > .abe-search-bar { background: transparent; box-shadow: none; padding: 0; }
.search-page #adivaha-booking-engine.abe-root--search .abe-field label { color: #334155; }
.search-page #adivaha-booking-engine.abe-root--search .abe-adv-toggle { color: var(--primary, #186900); }
/* Pagination breathing room (moved from renderer.php; no !important). */
.search-page .abe-results-layout { padding-bottom: 3rem; }
.search-page .abe-shortcode-wrap { padding-bottom: 2rem; }

/* ═══════════════════════════════════════════════════════════════
   V1 RESULTS-PAGE SEARCHBOX SKIN  (moved out of the theme's style.css)
   White rounded results box + classic tab/fare/CTA colours. De-scoped
   from body.theme-classic → plain .search-page .abe-*; no !important.
   ═══════════════════════════════════════════════════════════════ */
.search-page .abe-results-search-wrap {
  max-width: 1200px;
  margin: 0 auto;
  border-radius: 0;
  background: #fff;
  box-shadow: 0 12px 32px -12px rgba(15, 23, 42, .25);
}
.search-page .abe-trip-tab { color: #000; }
.search-page .abe-field { border-radius: 0; }
.search-page .abe-fare-type-row { color: var(--primary); }
.search-page .abe-fare-type-opt { color: var(--primary); }
.search-page .abe-adv-toggle { color: var(--primary); }
.search-page .abe-fare-type-opt:has(input:checked) { background: rgba(37, 99, 235, .85); color: #fff; }
.search-page .abe-search-btn { background: var(--primary); }
.search-page .abe-adv-group label { color: var(--primary); }
.search-page .abe-fare-type-opt input[type="radio"] { accent-color: #60a5fa; }
.abe-add-leg { background: #fbbf24; border-radius: 5px; color: #fff; }
/* Results-page search bar: flat (no inner shadow/radius) so only the outer
   .abe-results-search-wrap white box carries the chrome. */
.abe-results-search-wrap .abe-search-bar {
  margin-bottom: 0;
  box-shadow: none;
  padding: 1.5rem 0;
  border-radius: 0;
}

/* ═══════════════════════════════════════════════════════════════
   HOTEL DETAIL — MMT-style polish (v1). Enhancements only, built on the
   existing .abe-detail-* structure. No !important. Brand = --color-primary.
   ═══════════════════════════════════════════════════════════════ */

/* Roomier layout + sticky booking sidebar (stays in view while scrolling). */
.abe-detail-wrap > .abe-detail-grid { gap: 1.75rem; align-items: start; }
.abe-detail-sidebar { position: sticky; top: 1rem; align-self: start; }

/* Premium cards: softer deep shadow + rounder corners. */
.abe-detail-card {
  border-color: #e8ecf2;
  border-radius: 14px;
  box-shadow: 0 1px 2px rgba(15,23,42,.04), 0 10px 30px -20px rgba(15,23,42,.22);
}
.abe-detail-card-header { padding: 1.15rem 1.4rem .9rem; }
.abe-detail-card-body { padding: 1.15rem 1.4rem; }

/* Gallery: rounder + gentle zoom on hover. */
.abe-gallery { border-radius: 16px; gap: 6px; }
.abe-gallery-hero img, .abe-gallery-thumb img { transition: transform .4s ease; }
.abe-gallery-hero:hover img, .abe-gallery-thumb:hover img { transform: scale(1.06); }
.abe-gallery-hero:hover, .abe-gallery-thumb:hover { opacity: 1; }

/* Header: larger title, brand-coloured lead price. */
.abe-detail-title { font-size: 1.95rem; letter-spacing: -.015em; margin-bottom: .55rem; }
.abe-detail-cheapest-price { font-size: 1.6rem; color: var(--color-primary); }

/* Amenities as rounded pills. */
.abe-amenity-grid { gap: .55rem; }
.abe-amenity-item {
  background: #fff; border-color: #e8ecf2; border-radius: 999px;
  padding: .5rem .9rem; font-weight: 500;
  transition: border-color .15s, box-shadow .15s;
}
.abe-amenity-item:hover { border-color: var(--color-primary); box-shadow: 0 2px 8px -4px var(--color-primary); }

/* Room options: hover highlight + bigger brand-coloured price. */
.abe-room-option { padding: 1.35rem 1.4rem; transition: background .15s; }
.abe-room-option:hover { background: #f8fafc; }
.abe-ro-name { font-size: 1.06rem; }
.abe-ro-price-main { font-size: 1.5rem; color: var(--color-primary); }
.abe-ro-price-main small { color: #64748b; }

/* Rate switcher → pills; active = brand. */
.abe-rate-btn { border-radius: 999px; padding: .42rem .95rem; font-weight: 600; }
.abe-rate-btn.is-active { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }

/* Book / detail CTAs: brand, prominent, lifted. */
.abe-detail-btn, .abe-detail-btn--hotel {
  background: var(--color-primary);
  border-radius: 10px;
  box-shadow: 0 8px 18px -10px var(--color-primary);
}
.abe-detail-btn:hover { background: var(--color-primary-dk); box-shadow: 0 10px 22px -8px var(--color-primary); }

/* Chain + cart chips take the brand tint (were hard-coded blue). */
.abe-detail-chain, .abe-detail-cart-btn {
  color: var(--color-primary-dk);
  background: var(--color-primary-lt);
  border-color: var(--color-primary-lt);
}
.abe-detail-cart-btn:hover { background: var(--color-primary-lt); }

/* Responsive: sidebar stacks + rooms go single-column on small screens. */
@media (max-width: 900px) {
  .abe-detail-wrap > .abe-detail-grid { grid-template-columns: 1fr; }
  .abe-detail-sidebar { position: static; }
}
@media (max-width: 640px) {
  .abe-room-option { grid-template-columns: 1fr; }
  .abe-ro-pricing { align-items: flex-start; }
}

/* ═══════════════════════════════════════════════════════════════
   HOTEL DETAIL — MMT-style room booking cards + gradient CTA (v1).
   Turns each room row into a bordered white card (like MMT's booking
   card): room name, teal inclusion chips, big brand-green price, and a
   prominent gradient BOOK button. Scoped to .abe-room-option so search
   results are untouched. No !important.
   ═══════════════════════════════════════════════════════════════ */

/* Rooms become distinct cards with spacing. */
.abe-room-options { gap: 1rem; padding: .25rem 0; }
.abe-room-option {
  border: 1px solid #e6eaf0;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 1px 2px rgba(15,23,42,.04), 0 10px 28px -20px rgba(15,23,42,.20);
  padding: 1.4rem 1.5rem;
  transition: box-shadow .15s, transform .05s;
}
.abe-room-option:last-child { border-bottom: 1px solid #e6eaf0; }
.abe-room-option:hover { box-shadow: 0 8px 26px -12px rgba(15,23,42,.30); }
.abe-ro-name { font-size: 1.1rem; font-weight: 700; }

/* Inclusion chips — meal / free-cancellation in MMT teal-green. */
.abe-room-option .abe-hc-tag--meal,
.abe-room-option .abe-hc-tag--refund {
  background: #ecfdf5; color: #047857; border-color: #a7f3d0;
}
.abe-room-option .abe-hc-tag--nonref { background: #f8fafc; color: #64748b; }

/* Price emphasis — big brand-green current price. */
.abe-room-option .abe-ro-price-main { font-size: 1.65rem; font-weight: 700; color: var(--color-primary); }
.abe-room-option .abe-ro-price-main small { color: #64748b; font-weight: 500; }
.abe-room-option .abe-ro-price-total { color: #475569; }

/* Actions stack full-width; BOOK becomes a prominent gradient CTA. */
.abe-room-option .abe-ro-actions { flex-direction: column; width: 100%; gap: .5rem; }
.abe-room-option .abe-cart-btn--hotel { width: 100%; justify-content: center; }
.abe-room-option .abe-book-btn {
  width: 100%;
  padding: .8rem 1.2rem;
  font-size: .92rem; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase;
  color: #fff; border: none; border-radius: 10px; cursor: pointer;
  background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dk));
  box-shadow: 0 8px 20px -8px var(--color-primary);
  transition: filter .15s, box-shadow .15s, transform .05s;
}
.abe-room-option .abe-book-btn:hover { filter: brightness(1.07); box-shadow: 0 10px 26px -8px var(--color-primary); }
.abe-room-option .abe-book-btn:active { transform: translateY(1px); }

/* ═══════════════════════════════════════════════════════════════
   MMT-style sidebar BOOKING CARD (featured cheapest room). Sits at the
   top of the sticky detail sidebar: room name, fits, green inclusion
   ticks, big price, gradient "BOOK THIS NOW", and a "more options / View
   all" box. No !important.
   ═══════════════════════════════════════════════════════════════ */
.abe-bookcard {
  border: 1px solid #e6eaf0;
  box-shadow: 0 1px 2px rgba(15,23,42,.04), 0 14px 34px -20px rgba(15,23,42,.28);
}
.abe-bookcard .abe-detail-card-body { padding: 1.25rem 1.35rem 1.35rem; }
.abe-bookcard-room { font-size: 1.25rem; font-weight: 700; color: #0f172a; line-height: 1.25; }
.abe-bookcard-fits { font-size: .88rem; color: #64748b; margin-top: .15rem; }
.abe-bookcard-incl { list-style: none; margin: .9rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .55rem; }
.abe-bookcard-incl li { display: flex; align-items: center; gap: .5rem; font-size: .88rem; }
.abe-bookcard-incl li.is-good { color: #047857; font-weight: 500; }
.abe-bookcard-incl li.is-muted { color: #64748b; }
.abe-bookcard-incl svg { width: 16px; height: 16px; flex-shrink: 0; }
.abe-bookcard-dot { width: 6px; height: 6px; border-radius: 50%; background: #94a3b8; display: inline-block; }
.abe-bookcard-per { margin-top: 1.1rem; font-size: .85rem; color: #64748b; }
.abe-bookcard-now { font-size: 2rem; font-weight: 700; color: #0f172a; line-height: 1.1; letter-spacing: -.01em; }
.abe-bookcard-tax { font-size: .8rem; color: #94a3b8; margin-top: .15rem; }
.abe-bookcard-cta {
  width: 100%; margin-top: 1rem;
  padding: .95rem 1rem;
  font-size: 1rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  color: #fff; border: none; border-radius: 10px; cursor: pointer;
  background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dk));
  box-shadow: 0 10px 24px -8px var(--color-primary);
  transition: filter .15s, box-shadow .15s, transform .05s;
}
.abe-bookcard-cta:hover { filter: brightness(1.07); box-shadow: 0 12px 30px -8px var(--color-primary); }
.abe-bookcard-cta:active { transform: translateY(1px); }
.abe-bookcard-more {
  display: flex; align-items: center; justify-content: space-between; gap: .75rem;
  margin-top: 1rem; padding: .7rem .5rem .7rem .85rem;
  background: var(--color-primary-lt); border-radius: 10px;
  font-size: .84rem; color: #334155;
}
.abe-bookcard-viewall {
  flex-shrink: 0;
  padding: .42rem .9rem; border-radius: 999px;
  font-size: .78rem; font-weight: 700; cursor: pointer;
  color: var(--color-primary-dk); background: #fff;
  border: 1px solid var(--color-primary);
}
.abe-bookcard-viewall:hover { background: var(--color-primary); color: #fff; }

/* ═══════════════════════════════════════════════════════════════
   HOTEL DETAIL HEADER — classy / premium polish (v1). No !important.
   ═══════════════════════════════════════════════════════════════ */
.abe-detail-header {
  padding-bottom: 1.1rem;
  border-bottom: 1px solid #eef1f5;
  margin-bottom: 1.5rem;
}
.abe-detail-header-row { align-items: center; }
.abe-detail-header-actions { gap: 1.1rem; align-items: center; }

/* Title */
.abe-detail-title {
  font-size: 2.05rem; font-weight: 700; letter-spacing: -.02em;
  color: #0f172a; margin-bottom: .5rem;
}

/* Stars + meta */
.abe-detail-stars { color: #f5a623; gap: 3px; }
.abe-detail-stars .abe-star { width: 17px; height: 17px; }
.abe-detail-subheader { gap: .65rem; color: #64748b; font-size: .92rem; }

.abe-detail-chain {
  color: #ffff;
  background: var(--color-primary-lt);
  border-color: var(--color-primary-lt);
}

/* Signal badges → premium soft pills */
.abe-detail-badges { gap: 8px; margin-top: 12px; }
.abe-badge {
  padding: .34rem .8rem; border-radius: 999px;
  font-size: .76rem; font-weight: 600; letter-spacing: .01em;
  border: 1px solid #e6eaf0; background: #f8fafc; color: #475569;
}
.abe-badge--good { background: #ecfdf5; color: #047857; border-color: #a7f3d0; }
.abe-badge--meal { background: #fffbeb; color: #b45309; border-color: #fde68a; }
.abe-badge--info { background: #eff6ff; color: #1d4ed8; border-color: #bfdbfe; }

/* Price: elegant FROM / big price / night */
.abe-detail-cheapest small { font-size: .66rem; letter-spacing: .14em; color: #94a3b8; font-weight: 700; }
.abe-detail-cheapest-price {
  font-size: 1.75rem; font-weight: 700; color: var(--color-primary);
  letter-spacing: -.01em; line-height: 1;
}
.abe-detail-cheapest-price small { color: #94a3b8; font-weight: 500; font-size: .8rem; }

/* View Cart → classy outline button */
.abe-detail-cart-btn {
  padding: .6rem 1rem; border-radius: 10px; font-weight: 600;
  color: var(--color-primary-dk); background: #fff;
  border: 1px solid #e6eaf0; box-shadow: 0 1px 2px rgba(15,23,42,.04);
  transition: border-color .15s, box-shadow .15s, background .15s;
}
.abe-detail-cart-btn:hover { border-color: var(--color-primary); background: var(--color-primary-lt); }
.abe-detail-cart-btn.has-items { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }

/* ═══════════════════════════════════════════════════════════════
   Amenities — icon-on-top chips row (Airbnb/MMT style). Overrides the
   earlier pill layout. Dark outlined icons, label below, "+N more".
   ═══════════════════════════════════════════════════════════════ */
.abe-amenity-grid {
  display: flex; flex-wrap: wrap; gap: 1.5rem 1.9rem;
  grid-template-columns: none;
  padding: .4rem 0;
}
.abe-amenity-item {
  display: flex; flex-direction: column; align-items: center;
  gap: .55rem; width: 98px; text-align: center;
  background: none; border: none; border-radius: 0; padding: 0;
  font-size: .8rem; font-weight: 500; color: #334155; line-height: 1.25;
}
.abe-amenity-item:hover { border-color: transparent; box-shadow: none; }
.abe-amenity-ic {
  width: 46px; height: 46px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  color: #0f172a;
}
.abe-amenity-ic svg { width: 30px; height: 30px; color: #0f172a; }
.abe-amenity-lbl { display: block; }
.abe-amenity-more { cursor: pointer; }
.abe-amenity-more .abe-amenity-ic { color: #64748b; }
.abe-amenity-more:hover .abe-amenity-ic { color: #0f172a; }
.abe-amenity-item--hidden { display: none; }

/* ═══════════════════════════════════════════════════════════════
   Stay-info bar (check-in / out / duration / rooms / guests) — classy.
   Segmented with hairline dividers, refined labels + values.
   ═══════════════════════════════════════════════════════════════ */
.abe-stay-info {
  gap: 0;
  padding: 1.15rem 0;
  border-color: #e8ecf2;
  border-radius: 14px;
}
.abe-stay-item {
  gap: .3rem;
  padding: 0 1.6rem;
  position: relative;
}
.abe-stay-item + .abe-stay-item::before {
  content: ''; position: absolute; left: 0; top: 50%;
  transform: translateY(-50%);
  width: 1px; height: 62%;
  background: #e8ecf2;
}
.abe-stay-item small {
  font-size: .68rem; letter-spacing: .1em; color: #94a3b8; font-weight: 700;
  text-transform: uppercase;
}
.abe-stay-item strong {
  font-size: 1.02rem; font-weight: 600; color: #0f172a;
}

/* Stay-info bar with icons — brand-tinted icon + label/value. */
.abe-stay-info { grid-template-columns: repeat(auto-fit, minmax(161px, 1fr)); }
.abe-stay-item { flex-direction: row; align-items: center; gap: .7rem; }
.abe-stay-ic {
  width: 49px; height: 45px; border-radius: 10px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
}
.abe-stay-ic svg { width: 34px; height: 29px; }
.abe-stay-text { display: flex; flex-direction: column; gap: .12rem; min-width: 0; }

/* Stay-info: icon centered ABOVE the label/value (not to the left). */
.abe-stay-item { flex-direction: column; align-items: center; text-align: center; gap: .5rem; }
.abe-stay-text { align-items: center; text-align: center; }

/* ═══════════════════════════════════════════════════════════════
   Trust strip — Trip.com style: icon + bold title + description, columns.
   ═══════════════════════════════════════════════════════════════ */
.abe-trust-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 1.5rem 2rem;
  background: none; border: none; box-shadow: none;
  padding: .5rem 0; margin-bottom: 1.5rem;
}
.abe-trust-item {
  display: flex; align-items: flex-start; gap: .9rem;
  text-align: left; font-size: inherit;
}
.abe-trust-ic {
  width: 42px; height: 42px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  color: var(--color-primary);
}
.abe-trust-ic svg { width: 34px; height: 34px; color: var(--color-primary); }
.abe-trust-text { min-width: 0; }
.abe-trust-title { font-weight: 700; font-size: .98rem; color: #0f172a; margin-bottom: .2rem; }
.abe-trust-desc { font-size: .84rem; color: #64748b; line-height: 1.5; }

/* ── Rich per-segment flight itinerary (connecting flights + layovers) ── */
.abe-fdm-leg-ico { fill: #059669; vertical-align: -3px; margin-right: .35rem; }
.abe-fdm-leg-stops { font-weight: 500; color: #64748b; font-size: .82em; margin-left: .4rem; }
.abe-fdm-seg { border: 1px solid #e2e8f0; border-radius: .5rem; padding: .85rem 1rem; margin: .65rem 0; background: #fff; }
.abe-fdm-seg-head { display: flex; align-items: center; gap: .65rem; margin-bottom: .75rem; }
.abe-fdm-seg-headinfo { flex: 1; min-width: 0; }
.abe-fdm-seg-air { font-weight: 700; color: #0f172a; font-size: .95rem; }
.abe-fdm-seg-flt { color: #64748b; font-size: .8rem; }
.abe-fdm-seg-cabin { background: #ecfdf5; color: #047857; font-size: .72rem; font-weight: 600; padding: .2rem .55rem; border-radius: 999px; white-space: nowrap; }
.abe-fdm-seg-grid { display: grid; grid-template-columns: 1fr auto 1fr; gap: .5rem; align-items: start; }
.abe-fdm-seg-end { min-width: 0; }
.abe-fdm-seg-end--right { text-align: right; }
.abe-fdm-seg-time { font-size: 1.15rem; font-weight: 700; color: #0f172a; line-height: 1.1; }
.abe-fdm-seg-date { font-size: .74rem; color: #64748b; }
.abe-fdm-seg-port { font-weight: 600; color: #334155; margin-top: .2rem; }
.abe-fdm-seg-term { font-size: .72rem; color: #94a3b8; }
.abe-fdm-seg-mid { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: .15rem; color: #059669; min-width: 76px; padding-top: .15rem; }
.abe-fdm-seg-dur { font-size: .74rem; color: #64748b; }
.abe-fdm-seg-foot { margin-top: .7rem; padding-top: .6rem; border-top: 1px dashed #e2e8f0; font-size: .77rem; color: #64748b; display: flex; flex-wrap: wrap; align-items: center; gap: .2rem .25rem; }
.abe-fdm-seg-sep { color: #cbd5e1; margin: 0 .35rem; }
.abe-fdm-lay { display: inline-flex; align-items: center; gap: .5rem; margin: 0 0 .55rem .5rem; padding: .4rem .8rem; background: #fff7ed; border: 1px dashed #fdba74; border-radius: 999px; color: #9a3412; font-size: .8rem; font-weight: 600; }
@media (max-width: 720px) {
  .abe-fdm-seg-grid { grid-template-columns: 1fr; gap: .5rem; }
  .abe-fdm-seg-end--right { text-align: left; }
  .abe-fdm-seg-mid { flex-direction: row; min-width: 0; justify-content: flex-start; gap: .4rem; padding-top: 0; }
}

/* ══ Flight Details modal — split layout (branded aside + tabbed content) ══ */
.abe-fdm-overlay{ align-items:center; padding:1.5rem; }
.abe-fdm-header{ display:none; }
.abe-fdm-card{ display:grid; grid-template-columns:30% 70%; max-width:1000px; width:100%; min-height:520px; max-height:90vh; padding:0; background:#fff; border-radius:18px; overflow:hidden; box-shadow:0 30px 70px rgba(0,0,0,.4); }
.abe-fdm-aside{ position:relative; padding:2rem 1.6rem; color:#eafff6; background:linear-gradient(160deg,#065f46 0,#043c30 100%); overflow:hidden; }
.abe-fdm-aside::after{ content:""; position:absolute; inset:0; background:radial-gradient(120px 120px at 88% 12%,rgba(255,255,255,.10),transparent 70%),radial-gradient(180px 180px at -10% 90%,rgba(255,255,255,.07),transparent 70%); pointer-events:none; }
.abe-fdm-brand{ position:relative; z-index:1; display:flex; align-items:center; gap:.5rem; font-weight:800; font-size:1rem; }
.abe-fdm-brand-ic{ width:28px; height:28px; border-radius:8px; background:rgba(255,255,255,.16); display:inline-flex; align-items:center; justify-content:center; }
.abe-fdm-aside-h{ position:relative; z-index:1; margin:1.4rem 0 0; font-size:1.35rem; line-height:1.2; font-weight:800; color:#fff; }
.abe-fdm-aside-p{ position:relative; z-index:1; margin:.5rem 0 0; color:#bff0dd; font-size:.88rem; }
.abe-fdm-art{ position:relative; z-index:1; margin:1.2rem 0; }
.abe-fdm-pts{ position:relative; z-index:1; list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.65rem; }
.abe-fdm-pts li{ display:flex; align-items:flex-start; gap:.6rem; font-size:.86rem; color:#e6fff5; }
.abe-fdm-ck{ flex:0 0 auto; width:20px; height:20px; border-radius:999px; background:rgba(52,211,153,.25); color:#6ee7b7; display:inline-flex; align-items:center; justify-content:center; margin-top:1px; }
.abe-fdm-aside-foot{ position:relative; z-index:1; margin-top:1.4rem; padding-top:1rem; border-top:1px solid rgba(255,255,255,.14); color:#9fe6cc; font-size:.76rem; display:flex; align-items:center; gap:.5rem; }
.abe-fdm-main{ position:relative; display:flex; flex-direction:column; min-width:0; min-height:0; }
.abe-fdm-close{ position:absolute; top:14px; right:16px; z-index:3; width:34px; height:34px; border:none; border-radius:999px; background:#f1f5f9; color:#475569; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; transition:background .15s,color .15s; }
.abe-fdm-close:hover{ background:#e2e8f0; color:#0f172a; }
.abe-fdm-tabs{ display:flex; gap:1.8rem; padding:1.5rem 1.7rem 0; border-bottom:1px solid #e9eef3; grid-template-columns:none; }
.abe-fdm-tab{ position:relative; background:none; border:none; border-right:none; cursor:pointer; padding:.2rem 0 .9rem; font-size:.95rem; font-weight:600; color:#64748b; display:inline-flex; align-items:center; gap:.5rem; border-radius:0; }
.abe-fdm-tab:hover{ background:none; color:#334155; }
.abe-fdm-tab.is-active{ background:none; color:#047857; }
.abe-fdm-tab.is-active::after{ content:""; position:absolute; left:0; right:0; bottom:-1px; height:2.5px; background:#059669; border-radius:3px; }
.abe-fdm-body{ padding:1.9rem 1.7rem 1.8rem; overflow-y:auto; flex:1; min-height:0; scrollbar-width:thin; scrollbar-color:#cbd5e1 transparent; }
.abe-fdm-body::-webkit-scrollbar{ width:8px; }
.abe-fdm-body::-webkit-scrollbar-thumb{ background:#cbd5e1; border-radius:8px; }
.abe-fdm-body::-webkit-scrollbar-track{ background:transparent; }
.abe-fdm-section{ margin-bottom:1.4rem; }
.abe-fdm-section:last-child{ margin-bottom:0; }
.abe-fdm-section-bar{ display:none; }
.abe-fdm-section-title{ display:flex; align-items:center; gap:.6rem; font-size:.98rem; font-weight:700; color:#0f172a; margin:0 0 .95rem; }
.abe-fdm-sec-ic{ width:30px; height:30px; border-radius:9px; background:#ecfdf5; color:#047857; display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; }
.abe-fdm-sec-ic svg{ width:17px; height:17px; }
.abe-fdm-seg{ border:1px solid #e9eef3; border-radius:14px; padding:.9rem 1.05rem; margin:.65rem 0; background:#fff; box-shadow:0 1px 2px rgba(15,23,42,.04); }
.abe-fdm-tw{ display:inline-flex; align-items:center; gap:.35rem; }
.abe-fdm-seg-end--right .abe-fdm-tw{ flex-direction:row-reverse; }
.abe-fdm-pin{ width:14px; height:14px; color:#059669; display:block; flex:0 0 auto; }
.abe-fdm-seg-port{ margin-top:.25rem; }
.abe-fdm-seg-foot{ margin-top:.8rem; padding-top:.65rem; border-top:1px dashed #e9eef3; font-size:.77rem; color:#64748b; display:flex; flex-wrap:wrap; align-items:center; gap:.35rem .9rem; }
.abe-fdm-bg{ display:inline-flex; align-items:center; gap:.35rem; }
.abe-fdm-bg svg{ width:14px; height:14px; color:#059669; flex:0 0 auto; }
.abe-fdm-lay{ border:1px solid #fed7aa; }
.abe-fdm-brow{ display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:1rem; padding:.7rem .85rem; font-size:.87rem; color:#334155; border:1px solid #e9eef3; border-radius:12px; margin:.5rem 0; background:#fff; }
.abe-fdm-blab{ display:inline-flex; align-items:center; gap:.5rem; font-weight:600; color:#0f172a; }
.abe-fdm-chip{ width:26px; height:26px; border-radius:8px; background:#ecfdf5; color:#047857; display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; }
.abe-fdm-chip svg{ width:15px; height:15px; }
.abe-fdm-bcol{ display:block; font-size:.68rem; letter-spacing:.05em; color:#64748b; font-weight:600; text-transform:uppercase; margin-bottom:.1rem; }
.abe-fdm-bval{ font-weight:600; color:#0f172a; }
.abe-fdm-bval--big{ font-size:1rem; }
.abe-fdm-brow--total{ background:#f0fdf9; border-color:#a7f3d0; }
@media (max-width:760px){
  .abe-fdm-card{ grid-template-columns:1fr; max-height:92vh; }
  .abe-fdm-aside{ padding:1.4rem; }
  .abe-fdm-art{ display:none; }
  .abe-fdm-seg-grid{ grid-template-columns:1fr; }
  .abe-fdm-seg-end--right{ text-align:left; }
  .abe-fdm-seg-end--right .abe-fdm-tw{ flex-direction:row; }
  .abe-fdm-seg-mid{ flex-direction:row; min-width:0; gap:.4rem; padding-top:0; }
  .abe-fdm-brow{ grid-template-columns:1fr; gap:.35rem; }
  .abe-fdm-tabs{ gap:1.2rem; padding:1.3rem 1.3rem 0; }
}

/* Special retail fare badge (Student/Armed Forces/Senior) */
.abe-fc-spfare{display:inline-flex;align-items:center;gap:4px;margin-top:4px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;line-height:1.4;background:#e7f5ec;color:#1b7a43;border:1px solid #b8e0c6;white-space:nowrap}
.abe-fc-spfare svg{flex:0 0 auto}

/* Special-fare eligibility ID field */
.abe-rv-pax-grid--spid{margin-top:8px}.abe-rv-fld--spid .abe-rv-fld-input{border-color:#1c7a44;box-shadow:0 0 0 1px rgba(28,122,68,.15)}.abe-rv-spid-note{margin-top:6px;font-size:12px;line-height:1.4;color:#166534;background:#e7f5ec;border:1px solid #b8e0c6;border-radius:8px;padding:7px 11px}
