/**
 * MoMo 3PPs Design System
 * -----------------------
 * Design tokens + component classes implementing the MTN MoMo "3PPs Design
 * Guidelines" (July 2025) brand guide on top of the existing template_v3
 * legacy stylesheets (theme_style.css / media.css).
 *
 * Loaded LAST (after theme_style.css, media.css, uicons, bootstrap-icons) so
 * it can cleanly override/extend without editing those files directly.
 *
 * Naming rule: every new class here is `momo-`-prefixed to avoid colliding
 * with the many bare `.card` / `.btn` / `.header` / `.footer` etc. classes
 * already defined across the legacy stylesheets. Do not add new bare class
 * names to this file.
 */

/* ---------------------------------------------------------------------
   Legacy full-screen background slideshow ("supersized" plugin, driven by
   the banner_images admin table, appended to <body> by backslider.js).
   It sits position:fixed behind the whole page — normally invisible behind
   opaque content, but it bleeds through any gap in the page background.
   The new hero section (.searcharea) replaces its role, so hide it.
   -------------------------------------------------------------------*/
#supersized-loader,
#supersized {
    display: none !important;
}

/* ---------------------------------------------------------------------
   Font
   -------------------------------------------------------------------*/
/* Brand font, provided by the brand team -- files live alongside the
   legacy uicons/GT Walsheim fonts in ../fonts/. Only .woff was supplied
   (no woff2), which is fine: every browser this site targets supports
   .woff, so there's no compatibility gap from skipping that format.

   Regular file mapped to every weight, deliberately -- this file loads
   after fonts/stylesheet.css, which already does exactly this with the
   same reasoning (its own comment: "these two still match the bold/800
   weight requests scattered through the CSS ... but point at the Regular
   file so text actually renders as regular weight instead of a bold
   face"). This file used to instead point 700/800 at the real Bold/
   ExtraBold files, which -- since @font-face resolution follows document
   order for the same family+weight, and this file loads LAST -- silently
   overrode that earlier fix everywhere bold/800 text appears. Matched
   here instead of just deleting the block so this stays the definitive,
   last-loaded source of truth for the font-family regardless of what
   order these two CSS files end up in later. */
@font-face {
    font-family: 'MTNBrighterSans';
    src: url('../fonts/MTNBrighterSans-Regular.woff') format('woff');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'MTNBrighterSans';
    src: url('../fonts/MTNBrighterSans-Regular.woff') format('woff');
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'MTNBrighterSans';
    src: url('../fonts/MTNBrighterSans-Regular.woff') format('woff');
    font-weight: 800;
    font-style: normal;
    font-display: swap;
}

/* ---------------------------------------------------------------------
   Design tokens
   -------------------------------------------------------------------*/
:root {
    /* Primary (MoMo Blue family) */
    --momo-blue: #004F71;
    --momo-blue-dark: #003654;
    --momo-blue-light: #4D849C;
    --momo-blue-xlight: #CCDCE3;
    --momo-gradient: linear-gradient(180deg, #003654 0%, #004F71 100%);
    --momo-gradient-dark: linear-gradient(180deg, #004F71 0%, #003654 100%);

    /* Secondary accent */
    --momo-yellow: #FFCB05;

    /* Tertiary / neutrals */
    --momo-black: #000000;
    --momo-grey-1: #5F5F5F;
    /* body/secondary text */
    --momo-grey-2: #AFAFAF;
    /* disabled state */
    --momo-grey-3: #E8E8E8;
    /* borders */
    --momo-grey-4: #F2F2F2;
    /* background shading */
    --momo-shadow: rgba(0, 0, 0, 0.10);
    --shadow-card: 0 2px 12px rgba(0, 20, 30, .06);
    --momo-white: #FFFFFF;

    /* Semantic: success */
    --momo-green-100: #0FAF4B;
    --momo-green-90: #27BA5E;
    --momo-green-80: #3FBF6F;
    --momo-green-70: #55CB82;
    --momo-green-60: #6FCF93;
    --momo-green-50: #87E8AB;
    --momo-green-40: #9FDFB7;
    --momo-green-30: #CAF0D8;

    /* Semantic: error */
    --momo-red-100: #ED3434;
    --momo-red-90: #F74949;
    --momo-red-80: #F15D5D;
    --momo-red-70: #FA7070;
    --momo-red-60: #F48585;
    --momo-red-50: #FFA9A9;
    --momo-red-40: #F8AEAE;
    --momo-red-30: #F8AEAE;

    /* Semantic: warning */
    --momo-orange-100: #FF9400;
    --momo-orange-90: #FD9D1A;
    --momo-orange-80: #FFA933;
    --momo-orange-70: #FFB248;
    --momo-orange-60: #FFBF66;
    --momo-orange-50: #FFC87A;
    --momo-orange-40: #FFD499;
    --momo-orange-30: #FFE2BB;

    /* Spacing */
    --space-1: 4px;
    --space-2: 6px;
    --space-3: 10px;
    --space-4: 16px;
    --space-5: 20px;
    --space-6: 40px;

    /* Radii */
    --radius-card: 16px;
    --radius-card-lg: 20px;

    /* Type scale */
    --fs-h1: 20px;
    --fs-h1-sm: 18px;
    --fs-body: 16px;
    --fs-caption-lg: 14px;
    --fs-caption: 12px;
    --fs-caption-sm: 10px;
    --fs-caption-xs: 9px;
    --fw-regular: 400;
    --fw-medium: 500;

    --font-family-base: 'MTNBrighterSans', system-ui, -apple-system, 'Segoe UI', sans-serif;

    /* App shell */
    --app-header-height: 56px;
    --bottom-actionbar-height: 96px;
}

/* ---------------------------------------------------------------------
   App header (fixed top bar: back / title / close / menu)
   -------------------------------------------------------------------*/
.momo-app-header {
    position: sticky;
    top: 0;
    z-index: 1050;
    display: flex;
    align-items: center;
    min-height: var(--app-header-height);
    padding: var(--space-2) var(--space-4);
    background: var(--momo-blue);
    color: var(--momo-white);
    font-family: var(--font-family-base);
}

.momo-header-wrapper {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.momo-app-header__side {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.momo-app-header__side--right {
    justify-content: flex-end;
}

.momo-app-header__logo img {
    height: 45px;
    display: block;
}

.momo-app-header__title {
    flex: 1 1 auto;
    text-align: center;
    font-size: var(--fs-h1-sm);
    font-weight: var(--fw-medium);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    padding: 0 var(--space-2);
}

.momo-app-header__icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    color: var(--momo-white);
    background: transparent;
    border: 0;
    font-size: 18px;
    cursor: pointer;
    text-decoration: none;
}

.momo-app-header__icon-btn:hover,
.momo-app-header__icon-btn:focus {
    background: rgba(255, 255, 255, 0.12);
    color: var(--momo-white);
    text-decoration: none;
}

/* ---------------------------------------------------------------------
   Header utility bar (logo, contact, social, currency, login) — sits above
   the back/title/close app-header row.
   -------------------------------------------------------------------*/
.momo-header-utility {
    background: var(--momo-blue-dark);
    color: var(--momo-white);
    font-family: var(--font-family-base);
}

.momo-header-utility__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
    padding: var(--space-2) var(--space-4);
    flex-wrap: wrap;
}

.momo-header-utility__contact {
    display: flex;
    align-items: center;
    gap: var(--space-4);
}

.momo-header-utility__contact a {
    color: var(--momo-blue-xlight);
    font-size: var(--fs-caption);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
}

.momo-header-utility__contact a:hover {
    color: var(--momo-white);
    text-decoration: none;
}

.momo-header-utility__social {
    display: flex;
    gap: var(--space-2);
}

.momo-header-utility__social a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.12);
    color: var(--momo-white);
    font-size: 13px;
}

.momo-header-utility__social a:hover {
    background: var(--momo-yellow);
    color: var(--momo-blue-dark);
}

.momo-header-utility__currency>a {
    color: var(--momo-white);
    font-size: var(--fs-caption);
    text-decoration: none;
    cursor: pointer;
}


@media (max-width: 767px) {
    .momo-header-utility__contact-text {
        display: none;
    }
}

/* ---------------------------------------------------------------------
   Cards
   -------------------------------------------------------------------*/
.momo-card {
    background: var(--momo-white);
    border-radius: var(--radius-card);
    box-shadow: 0 2px 8px var(--momo-shadow);
    padding: var(--space-4);
    font-family: var(--font-family-base);
}

.momo-card--lg {
    border-radius: var(--radius-card-lg);
}

/* ---------------------------------------------------------------------
   Amadeus fare calendar (above the sort bar) -- flat divider-strip
   design matching the airline-price strip below the results.
   -------------------------------------------------------------------*/
.amadeus-fare-calendar {
    margin-top: var(--space-4);
    padding: 0;
    overflow: hidden;
}

#amadeus_fare_calendar_list {
    display: flex;
    overflow-x: auto;
}

.amadeus-calendar-day {
    flex: 1 0 auto;
    min-width: 84px;
    text-align: center;
    padding: var(--space-3) var(--space-2);
    border-right: 1px solid var(--momo-grey-3);
}

.amadeus-calendar-day:last-child {
    border-right: none;
}

.amadeus-calendar-day.selected {
    background: var(--momo-blue-xlight);
}

.amadeus-calendar-day.clickable {
    cursor: pointer;
    transition: background-color .15s ease;
}

.amadeus-calendar-day.clickable:hover {
    background: var(--momo-grey-4);
}

.amadeus-calendar-day.clickable.selected:hover {
    background: var(--momo-blue-xlight);
}

.amadeus-calendar-day.unavailable {
    color: var(--momo-grey-2);
}

.amadeus-calendar-date {
    font-size: 12px;
    color: var(--momo-grey-1);
    margin-bottom: var(--space-1);
}

.amadeus-calendar-price {
    font-size: 15px;
    font-weight: 700;
    color: var(--momo-blue-dark);
}

.amadeus-calendar-day.unavailable .amadeus-calendar-price {
    color: var(--momo-grey-2);
    font-weight: 400;
}

/* ---------------------------------------------------------------------
   Amadeus direct-search result cards (separate from the Provab/TBO
   flight-result markup generated by generate_flight_list()).

   Layout: airline + price banner up top (price is the first thing
   scanned, not buried at the bottom past a wall of segment rows), each
   itinerary as a big departure->arrival timeline with duration/stops on
   the connecting line, per-segment flight-number detail underneath in
   small type for anyone who wants it, single Book Now CTA in the footer
   (Seat map button removed per request).
   -------------------------------------------------------------------*/
.amadeus-offer-card {
    background: var(--momo-white);
    border-radius: var(--radius-card-lg);
    box-shadow: 0 1px 4px var(--momo-shadow);
    padding: var(--space-4);
    margin-bottom: var(--space-4);
    transition: box-shadow .15s ease, transform .15s ease;
}

.amadeus-offer-card:hover {
    box-shadow: 0 8px 24px var(--momo-shadow);
    transform: translateY(-1px);
}

.amadeus-offer-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3);
    padding-bottom: var(--space-3);
    margin-bottom: var(--space-3);
    border-bottom: 1px solid var(--momo-grey-3);
}

.amadeus-offer-airline {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-size: 13px;
    font-weight: var(--fw-medium);
    color: var(--momo-grey-1);
}

.amadeus-offer-top-price {
    display: flex;
    /* flex-direction: column; */
    align-items: flex-end;
    gap: 2px;
    font-size: 20px;
    font-weight: 700;
    color: var(--momo-blue-dark);
    text-align: right;
}

.amadeus-offer-top-price .amadeus-currency {
    font-size: 12px;
    font-weight: 400;
    color: var(--momo-grey-1);
    margin-right: var(--space-1);
}

.amadeus-price-sub {
    font-size: 11px;
    font-weight: var(--fw-medium);
    color: var(--momo-grey-1);
}

.amadeus-itinerary-label {
    font-size: 11px;
    font-weight: var(--fw-medium);
    color: var(--momo-grey-2);
    text-transform: uppercase;
    letter-spacing: .04em;
    margin: var(--space-3) 0 var(--space-2);
}

.amadeus-itinerary-label:first-of-type {
    margin-top: 0;
}

/* Segment-level flight card -- one flight leg. Multi-segment itineraries
   stack several of these (see the adjacent-sibling margin below), which
   is what visually shows a connection: each subsequent card's stopbadge
   reports the layover before it. */
.amadeus-flight-card {
    border: 1px solid var(--momo-grey-3);
    border-radius: var(--radius-card);
    padding: var(--space-3);
    background: var(--momo-white);
}

.amadeus-flight-card+.amadeus-flight-card {
    margin-top: var(--space-2);
}

.amadeus-flight-top {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    margin-bottom: var(--space-3);
}

.amadeus-airline-badge {
    position: relative;
    overflow: hidden;
    box-sizing: border-box;
    width: 32px;
    height: 32px;
    border-radius: 9px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 800;
    font-size: 11px;
    flex-shrink: 0;
}

/* Layered on top of the code text already rendered by .amadeus-airline-
   badge itself -- logo loads, it covers the code; logo 404s, its onerror
   handler removes it and the code underneath is already there. */
.amadeus-airline-badge-img {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: var(--momo-white);
    padding: 5px;
    box-sizing: border-box;
    border-radius: inherit;
}

/* Deterministic per-carrier colour (see _amadeus_airline_badge_class),
   picked from the existing palette so connecting segments operated by
   different airlines read apart from each other at a glance. */
.amadeus-airline-badge--0 {
    background: var(--momo-blue-xlight);
    color: var(--momo-blue-dark);
}

.amadeus-airline-badge--1 {
    background: var(--momo-orange-30);
    color: var(--momo-blue-dark);
}

.amadeus-airline-badge--2 {
    background: var(--momo-green-30);
    color: var(--momo-blue-dark);
}

.amadeus-flight-top-info {
    flex: 1;
    min-width: 0;
}

.amadeus-flight-top-name {
    font-weight: 700;
    font-size: 13px;
    color: var(--momo-blue-dark);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.amadeus-flight-top-flightno {
    font-size: 11px;
    color: var(--momo-grey-1);
    font-weight: var(--fw-medium);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Small overlapping badge stack for an itinerary-summary card that spans
   more than one operating carrier (e.g. ET then EK via a connection). */
.amadeus-airline-badge-group {
    display: flex;
    flex-shrink: 0;
}

.amadeus-airline-badge-group .amadeus-airline-badge {
    width: 26px;
    height: 26px;
    font-size: 9px;
    border: 2px solid var(--momo-white);
}

.amadeus-airline-badge-group .amadeus-airline-badge+.amadeus-airline-badge {
    margin-left: -10px;
}

.amadeus-stopbadge {
    margin-left: auto;
    font-size: 11px;
    font-weight: 700;
    color: var(--momo-blue-dark);
    background: var(--momo-grey-4);
    padding: 4px var(--space-3);
    border-radius: 999px;
    white-space: nowrap;
    flex-shrink: 0;
}

.amadeus-route-row {
    display: flex;
    align-items: center;
    gap: var(--space-3);
}

.amadeus-route-pt {
    flex: 0 0 auto;
}

.amadeus-route-pt--end {
    text-align: right;
}

.amadeus-route-time {
    font-size: 18px;
    font-weight: 700;
    color: var(--momo-blue-dark);
    line-height: 1.2;
}

.amadeus-route-code {
    font-size: 12px;
    color: var(--momo-grey-1);
    font-weight: var(--fw-medium);
}

.amadeus-route-mid {
    flex: 1;
    text-align: center;
    position: relative;
    padding: 0 var(--space-1);
    min-width: 0;
}

.amadeus-route-dur {
    font-size: 11px;
    color: var(--momo-grey-1);
    font-weight: 700;
    margin-bottom: 4px;
}

.amadeus-route-line {
    height: 2px;
    background: var(--momo-blue-light);
    position: relative;
    border-radius: 2px;
}

.amadeus-route-line::before,
.amadeus-route-line::after {
    content: '';
    position: absolute;
    top: 50%;
    width: 6px;
    height: 6px;
    background: var(--momo-blue);
    border-radius: 50%;
    transform: translateY(-50%);
}

.amadeus-route-line::before {
    left: 0;
}

.amadeus-route-line::after {
    right: 0;
}

.amadeus-route-plane {
    position: absolute;
    top: -5px;
    left: 50%;
    transform: translateX(-50%) rotate(0deg);
    color: var(--momo-blue);
    background: var(--momo-white);
    font-size: 11px;
    line-height: 1;
    padding: 0px 10px;
}

.amadeus-airline-logo {
    width: 18px;
    height: 18px;
    object-fit: contain;
    flex-shrink: 0;


}

/* Shown between stacked segment cards in the expand panel -- the
   segment card's own stopbadge already states the layover length, this
   just names which airport it's in. */
.amadeus-layover {
    margin: var(--space-1) 0 var(--space-2);
    padding: 3px var(--space-2);
    background: var(--momo-grey-4);
    border-radius: var(--radius-card);
    display: inline-block;
    font-size: 11px;
    color: var(--momo-grey-1);
}

.amadeus-fare-details {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    margin-top: var(--space-3);
    padding-top: var(--space-3);
    border-top: 1px dashed var(--momo-grey-3);
}

.amadeus-fare-chip {

    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px var(--space-3);
    background: var(--momo-grey-4);
    border-radius: 999px;
    font-size: 11px;
    font-weight: var(--fw-medium);
    color: var(--momo-grey-1);
}

.amadeus-fare-chip i {
    color: var(--momo-blue);
    font-size: 11px;
}

/* Refundable / non-refundable variants on the meta chip -- only ever
   rendered when _amadeus_offer_refundable() actually knows the answer. */
.amadeus-fare-chip--positive {
    background: var(--momo-green-30);
    color: var(--momo-green-100);
}

.amadeus-fare-chip--positive i {
    color: var(--momo-green-100);
}

.amadeus-fare-chip--neutral {
    background: var(--momo-grey-4);
    color: var(--momo-grey-1);
}

.amadeus-fare-chip--neutral i {
    color: var(--momo-grey-1);
}

.amadeus-price-breakdown {
    padding: var(--space-2) 0;
    margin-top: var(--space-1);
}

.amadeus-price-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 12px;
    color: var(--momo-grey-2);
    padding: 1px 0;
}

.amadeus-price-row--total {
    margin-top: var(--space-1);
    padding-top: var(--space-2);
    border-top: 1px solid var(--momo-grey-3);
    font-size: 13px;
    font-weight: 700;
    color: var(--momo-blue-dark);
}

.amadeus-offer-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3);
    padding-top: var(--space-3);
    margin-top: var(--space-2);
    border-top: 1px solid var(--momo-grey-3);
}

.amadeus-btn {
    border: 1px solid var(--momo-blue);
    background: var(--momo-white);
    color: var(--momo-blue);
    border-radius: var(--radius-card);
    padding: var(--space-2) var(--space-4);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
}

.amadeus-btn:hover {
    background: var(--momo-blue-xlight);
}

.amadeus-btn:disabled {
    opacity: 0.6;
    cursor: default;
}

.amadeus-btn-book {
    background: var(--momo-yellow);
    border-color: var(--momo-yellow);
    color: var(--momo-blue-dark);
    padding: var(--space-2) var(--space-6);
}

.amadeus-btn-book:hover {
    background: var(--momo-orange-70);
    border-color: var(--momo-orange-70);
}

/* Ghost-style toggle for the "Flight details" expand button -- sits next
   to Book Now in the (always-visible) action bar. */
.amadeus-btn-expand {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border-color: transparent;
    background: transparent;
    color: var(--momo-blue);
    padding: var(--space-2) var(--space-2);
}

.amadeus-btn-expand:hover {
    background: var(--momo-blue-xlight);
}

.amadeus-btn-expand i {
    font-size: 11px;
    transition: transform .2s ease;
}

.amadeus-offer-card--expanded .amadeus-btn-expand i {
    transform: rotate(180deg);
}

/* Expand panel: collapsed to zero height by default, revealed by
   toggling .amadeus-offer-card--expanded on the card (see the click
   handler in _amadeus_render_offer_list). Sits below the action bar so
   Book Now never shifts position when someone opens the details. */
.amadeus-offer-expand {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: max-height .25s ease, opacity .2s ease;
}

.amadeus-offer-card--expanded .amadeus-offer-expand {
    max-height: 2400px;
    opacity: 1;
    margin-top: var(--space-3);
    padding-top: var(--space-3);
    border-top: 1px solid var(--momo-grey-3);
}



/* Amadeus modal (price-confirm / seat map) */
.amadeus-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10000;
}

.amadeus-modal {
    background: var(--momo-white);
    border-radius: var(--radius-card-lg);
    max-width: 480px;
    width: 92%;
    max-height: 80vh;
    overflow-y: auto;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
}

.amadeus-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--space-4);
    border-bottom: 1px solid var(--momo-grey-3);
    font-weight: 700;
    color: var(--momo-blue-dark);
}

.amadeus-modal-close {
    border: none;
    background: none;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    color: var(--momo-grey-1);
}

.amadeus-modal-body {
    padding: var(--space-4);
}

.amadeus-seatmap-segment h5 {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    margin: 0 0 var(--space-3);
    color: var(--momo-blue-dark);
}

.amadeus-seatmap-grid {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-bottom: var(--space-4);
}

.amadeus-seat-row {
    display: flex;
    align-items: center;
    gap: 4px;
}

.amadeus-seat-row-num {
    width: 24px;
    font-size: 11px;
    color: var(--momo-grey-2);
}

.amadeus-seat {
    width: 22px;
    height: 22px;
    border-radius: 4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
}

.amadeus-seat.available {
    background: var(--momo-green-30);
    color: var(--momo-green-100);
}

.amadeus-seat.taken {
    background: var(--momo-grey-3);
    color: var(--momo-grey-2);
}

.amadeus-seatmap-legend {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-size: 12px;
    color: var(--momo-grey-1);
}

.momo-card-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: var(--space-3);
}

/* ---------------------------------------------------------------------
   Buttons
   -------------------------------------------------------------------*/
.momo-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 40px;
    padding: 0 var(--space-5);
    border-radius: 20px;
    font-family: var(--font-family-base);
    font-size: var(--fs-caption-lg);
    font-weight: var(--fw-medium);
    text-transform: uppercase;
    letter-spacing: .02em;
    border: 1px solid transparent;
    cursor: pointer;
    text-decoration: none;
    transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}

.momo-btn--primary {
    background: var(--momo-blue);
    color: var(--momo-white);
}

.momo-btn--primary:hover,
.momo-btn--primary:focus {
    background: var(--momo-blue-dark);
    color: var(--momo-white);
}

.momo-btn--primary:disabled,
.momo-btn--primary.momo-disabled {
    background: var(--momo-grey-2);
    color: var(--momo-white);
    cursor: not-allowed;
}

.momo-btn--secondary {
    background: transparent;
    color: var(--momo-blue);
    border-color: var(--momo-blue);
}

.momo-btn--secondary:hover,
.momo-btn--secondary:focus {
    background: var(--momo-blue-xlight);
    color: var(--momo-blue-dark);
}

.momo-btn--secondary.momo-disabled {
    color: var(--momo-grey-2);
    border-color: var(--momo-grey-2);
}

.momo-btn--tertiary {
    background: transparent;
    color: var(--momo-blue);
    border: 0;
    height: auto;
    padding: var(--space-2) var(--space-3);
    text-transform: none;
}

.momo-btn--tertiary.momo-btn--danger {
    color: var(--momo-red-100);
}

.momo-btn--tertiary.momo-disabled {
    color: var(--momo-grey-2);
}

.momo-btn--block {
    width: 100%;
    display: flex;
}

/* ---------------------------------------------------------------------
   Bottom action bar
   -------------------------------------------------------------------*/
.momo-bottom-actionbar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1040;
    background: var(--momo-white);
    box-shadow: 0 -2px 10px var(--momo-shadow);
    padding: var(--space-4) var(--space-5);
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
}

/* ---------------------------------------------------------------------
   Bottom-sheet modal (BS3 .modal override — no new JS modal library)
   -------------------------------------------------------------------*/
.modal.momo-sheet .modal-dialog {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    margin: 0;
    width: 100%;
    max-width: 100%;
    transform: translateY(100%);
    transition: transform .25s ease;
}

.modal.momo-sheet.in .modal-dialog {
    transform: translateY(0);
}

.modal.momo-sheet .modal-content {
    border-radius: var(--radius-card-lg) var(--radius-card-lg) 0 0;
    border: 0;
    font-family: var(--font-family-base);
}

.modal.momo-sheet .modal-header {
    border-bottom: 0;
    padding: var(--space-4) var(--space-4) 0;
}

.modal.momo-sheet .modal-body {
    padding: var(--space-4);
}

/* ---------------------------------------------------------------------
   Plugin wrapper overrides (select2 / jQuery UI datepicker & autocomplete /
   passenger-count widget) — restyle plugin-rendered DOM without replacing
   the plugins themselves.
   -------------------------------------------------------------------*/
.momo-select2 .select2-container--default .select2-selection--single {
    height: 40px;
    border: 1px solid var(--momo-grey-3);
    border-radius: var(--space-2);
    font-family: var(--font-family-base);
}

.momo-select2 .select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 40px;
    color: var(--momo-black);
}

.momo-select2 .select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 38px;
}

/* select2's open dropdown list appends to document.body by default (not
   nested inside .momo-select2), so these are intentionally unscoped. */
.select2-dropdown {
    border-radius: var(--space-2);
    border-color: var(--momo-grey-3);
    font-family: var(--font-family-base);
}

.select2-results__option--highlighted[aria-selected] {
    background-color: var(--momo-blue);
}

/* NOTE: jQuery UI datepicker/autocomplete widgets are initialized here
   without an `appendTo` option, so they render into document.body rather
   than nested inside .momo-datepicker/.momo-autocomplete wrapper divs.
   These rules are intentionally global (this flight search form is the
   only place in scope using these plugins). */
.ui-datepicker {
    border-radius: var(--radius-card);
    border: 1px solid var(--momo-grey-3);
    box-shadow: 0 4px 16px var(--momo-shadow);
    font-family: var(--font-family-base);
    padding: var(--space-3);
}

.ui-datepicker .ui-datepicker-header {
    background: var(--momo-blue);
    color: var(--momo-white);
    border-radius: var(--space-2);
}

.ui-datepicker td .ui-state-active {
    background: var(--momo-blue) !important;
    border-color: var(--momo-blue) !important;
    color: var(--momo-white) !important;
}

.ui-autocomplete {
    border-radius: var(--space-2);
    border: 1px solid var(--momo-grey-3);
    box-shadow: 0 4px 16px var(--momo-shadow);
    font-family: var(--font-family-base);
    padding: var(--space-2) 0;
}

.ui-autocomplete .ui-menu-item:hover,
.ui-autocomplete .ui-state-focus {
    background: var(--momo-blue-xlight) !important;
    border: 0 !important;
    color: var(--momo-blue-dark) !important;
}

.momo-pax-count .input-group .btn-number {
    border-color: var(--momo-grey-3);
    color: var(--momo-blue);
}

.momo-pax-count .input-group .form-control {
    border-color: var(--momo-grey-3);
    font-family: var(--font-family-base);
}

/* ---------------------------------------------------------------------
   Segmented pill control (trip-type radios)
   -------------------------------------------------------------------*/
.momo-pill-group {
    display: inline-flex;
    background: var(--momo-grey-4);
    border-radius: 20px;
    padding: var(--space-1);
    gap: var(--space-1);
}

.momo-pill-group label {
    margin: 0;
    padding: var(--space-2) var(--space-4);
    border-radius: 16px;
    font-size: var(--fs-caption-lg);
    font-weight: var(--fw-medium);
    color: var(--momo-grey-1);
    cursor: pointer;
}

.momo-pill-group input:checked+label,
.momo-pill-group label.active {
    background: var(--momo-blue);
    color: var(--momo-white);
}

/* ---------------------------------------------------------------------
   Homepage card overrides
   Legacy card classes (.top-hotel-dest-card, .top-rated-hotel-card,
   .top-flight-route-card, .why-book-card, .secndblak) already carry their
   own background/shadow/radius rules in theme_style.css/media.css with
   compound selectors — pairing .momo-card with the legacy class here keeps
   equal-or-higher specificity so our radius/shadow tokens reliably win,
   without touching those legacy files.
   -------------------------------------------------------------------*/
/* .top-hotel-dest-card.momo-card,
.top-rated-hotel-card.momo-card,
.top-flight-route-card.momo-card,
.why-book-card.momo-card {
    border-radius: var(--radius-card) !important;
    box-shadow: 0 2px 8px var(--momo-shadow) !important;
} */

.secndblak.momo-card {
    border-radius: var(--radius-card-lg) !important;
    box-shadow: 0 4px 20px var(--momo-shadow) !important;
    background: var(--momo-white);
}

.searchsbmt.momo-btn {
    background: var(--momo-blue) !important;
    border-radius: 20px !important;
    height: 40px !important;
}

.searchsbmt.momo-btn:hover {
    background: var(--momo-blue-dark) !important;
}

/* ---------------------------------------------------------------------
   Flight search widget clean-up
   Selectors are prefixed with .searcharea .secndblak to match (and beat)
   theme_style.css's own scoping for this exact widget, so these reliably
   win without needing to touch that file.
   -------------------------------------------------------------------*/

/* Module tab bar (Flights/Hotels/Bus) above the search widget --
   theme_style.css:32919-32951 already has the right structure (flex pills,
   active/hover states) but uses hardcoded #014A6B/#f1c40f, which are close
   to but not exactly the brand tokens (--momo-blue-dark is #003654,
   --momo-yellow is #FFCB05) -- a visible off-by-a-shade mismatch against
   every other blue/yellow on the page. Same selectors, correct values. */
.searcharea .commonNavTabCls .search-tabs-new>li>a {
    color: var(--momo-blue-dark) !important;
}

.searcharea .commonNavTabCls .search-tabs-new>li.active>a,
.searcharea .commonNavTabCls .search-tabs-new>li>a:hover {
    background: var(--momo-yellow) !important;
    color: var(--momo-blue-dark) !important;
}

.searcharea .commonNavTabCls .search-tabs-new>li.active>a .tab-icon,
.searcharea .commonNavTabCls .search-tabs-new>li.active>a .tab-label {
    color: var(--momo-blue-dark) !important;
}

/* Trip-type pills: solid filled pill instead of the legacy radio-dot style
   (its dark-navy active text color read as invisible against a blue fill —
   that mismatch, not a missing rule, was why "Round Trip" looked blank). */
.searcharea .secndblak .trip-pills.momo-pill-group {
    background: var(--momo-grey-4);
    border-radius: 20px;
    padding: var(--space-1);
    gap: 0;
}

.searcharea .secndblak .trip-pills.momo-pill-group .wament {
    padding: var(--space-2) var(--space-4) !important;
    border-radius: 16px !important;
    color: var(--momo-grey-1) !important;
    background: transparent !important;
    border: 1px solid transparent !important;
}

.searcharea .secndblak .trip-pills.momo-pill-group .wament::before,
.searcharea .secndblak .trip-pills.momo-pill-group .wament::after {
    content: none !important;
}

/* Selected state matches the "Pay Now" / "MTN MoMo" pattern from the
   payment-flow reference: light-blue fill + blue border + bold navy text,
   rather than a solid filled chip. */
.searcharea .secndblak .trip-pills.momo-pill-group .wament.active {
    background: var(--momo-blue-xlight) !important;
    border: 1px solid var(--momo-blue) !important;
    color: var(--momo-blue-dark) !important;
    font-weight: var(--fw-medium) !important;
}

/* Cabin class dropdown next to the pills */
.searcharea .secndblak .classes_Select .remngwd {
    color: var(--momo-blue);
    font-weight: var(--fw-medium);
}

/* Redundant "Economy" caption under Traveler/Class — the cabin class is
   already shown/selectable in the pill row above, so this duplicate is
   just visual noise. */
.searcharea .secndblak .flight-class-caption {
    display: none !important;
}

/* Top row: give the badge / pills / class selector breathing room */
.searcharea .secndblak .flightSearchNavigation-f {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--space-3);
    padding-bottom: var(--space-3);
    margin-bottom: var(--space-3);
    border-bottom: 1px solid var(--momo-grey-3);
}

/* Field cards: From / To / Dates / Traveler — consistent height, radius,
   spacing so the row reads as one unified control instead of mismatched
   boxes. */
.searcharea .secndblak .plcetogo,
.searcharea .secndblak .totlall {
    border-radius: var(--space-3) !important;
    background: var(--momo-grey-4) !important;
    border: 1px solid var(--momo-blue-xlight) !important;
    min-height: 64px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.searcharea .secndblak .plcetogo:focus-within {
    border-color: var(--momo-blue) !important;
}

.searcharea .secndblak .lablform,
.searcharea .secndblak .lablform2 {
    color: var(--momo-grey-1);
    font-size: var(--fs-caption);
    font-weight: var(--fw-medium);
}

.searcharea .secndblak .normalinput {
    color: var(--momo-black);
    font-weight: var(--fw-medium);
    background: transparent !important;
}

/* Swap (from/to) button: a small circular control centered on the seam
   between the two fields instead of floating oddly. */
.searcharea .secndblak .flight-swap-wrap {
    position: absolute;
    right: -14px;
    top: 50%;
    transform: translateY(-50%);
    z-index: 5;
    width: 28px;
    height: 28px;
}

/* Date fields: the generic .normalinput{font-size:18px!important} rule
   (theme_style.css) clips "DD-MM-YYYY" to "DD-MM-2..." inside these
   narrow boxes -- same bug already fixed once for .mdf-search (see its
   comment above), never applied to this homepage search bar. The
   smaller font alone isn't enough room; col-md-7/col-md-5 (from/to vs.
   dates) also gives the date pair less width than it needs, so
   rebalance that split for this row specifically.
*/
.searcharea .secndblak .plcetogo.datemark input.normalinput {
    font-size: 15px !important;
}

/* Bootstrap's col-md-7/col-md-5 already collapse to 100% width below
   the md breakpoint on their own -- only rebalance the split once
   they're actually side by side, so this doesn't fight that native
   mobile stacking. Excludes .momo-multicity-fields: that class also
   carries .secndates on the multi-city date box, whose row is
   display:flex + flex-wrap -- widening it there pushes the pair over
   100% combined and wraps the row instead of sizing it. */
@media (min-width: 992px) {
    .searcharea .secndblak .flight-search-fields {
        width: 50% !important;
    }

    .searcharea .secndblak .secndates:not(.momo-multicity-fields) {
        width: 50% !important;
    }
}

/* Giving dates half the row (above) leaves less room on the From/To
   side, so the "International Airport" placeholder subtext needs to
   truncate gracefully instead of getting hard-cut mid-word. */
.searcharea .secndblak .airport_value {
    text-overflow: ellipsis;
}

/* theme_style.css also declares position/top/right for the bare
   .flight_chnge class -- reset them here so this wrapper's centering
   (above) is what actually determines where the button lands, instead
   of the two absolute positions fighting each other. */
.searcharea .secndblak .flight_chnge {
    position: static;
    top: auto;
    right: auto;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--momo-white);
    border: 1px solid var(--momo-grey-3);
    box-shadow: 0 2px 6px var(--momo-shadow);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--momo-blue);
}

.searcharea .secndblak .flight-from-col {
    position: relative;
}

/* Breathing room between From / To / Dates / Traveler / Search — each
   bootstrap column gets consistent gutter + the field boxes inside get
   their own margin so backgrounds don't visually touch. */
.searcharea .secndblak .flight-search-inner-box {
    gap: var(--space-4);
}

.searcharea .secndblak .flight-from-col,
.searcharea .secndblak .flight-to-col,
.searcharea .secndblak .secndates .col-xs-6,
.searcharea .secndblak .thrdtraveller,
.searcharea .secndblak .col-md-2.col-xs-12.nopad {
    padding-left: var(--space-2) !important;
    padding-right: var(--space-2) !important;
}

.searcharea .secndblak .plcetogo,
.searcharea .secndblak .totlall {
    margin: 0 var(--space-1) var(--space-1);
    padding: var(--space-2) var(--space-3) !important;
}

/* ---------------------------------------------------------------------
   Multi-City rows: bring the same field-box treatment used by the
   Round Trip / One Way row (icons, spacing, min-height) to each city
   segment, instead of the old bordered-grid look.
   -------------------------------------------------------------------*/
.searcharea .secndblak #multi_way_fieldset {
    width: 100%;
}

.searcharea .secndblak .momo-multicity-row {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
}

.searcharea .secndblak .momo-multicity-row+.momo-multicity-row {
    border-top: 1px solid var(--momo-grey-3);
    margin-top: var(--space-3);
    padding-top: var(--space-3);
}

.searcharea .secndblak #multi_way_fieldset .momo-multicity-field {
    height: auto !important;
    position: relative;
}

.searcharea .secndblak .momo-multicity-fields {
    display: flex;
}

.searcharea .secndblak .momo-multicity-fields .momo-multicity-field {
    flex: 1 1 0;
}

/* Below md, the From/To pair (col-xs-9) and Departure (col-xs-3) still
   sit at their fixed Bootstrap widths instead of collapsing the way the
   Round Trip row's un-classed (no col-xs-*) wrapper does -- and
   `flex: 1 1 0` on the fields inside has no minimum, so they never wrap
   on their own. Force the same full-width stack explicitly instead of
   relying on that difference. */
@media (max-width: 767px) {
    .searcharea .secndblak .momo-multicity-fields {
        width: 100% !important;
        flex-wrap: wrap;
    }

    .searcharea .secndblak .momo-multicity-fields .momo-multicity-field {
        flex: 1 1 100%;
    }
}

.searcharea .secndblak .momo-multicity-remove {
    position: absolute;
    right: -12px;
    top: 50%;
    transform: translateY(-50%);
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--momo-white);
    border: 1px solid var(--momo-grey-3);
    box-shadow: 0 2px 6px var(--momo-shadow);
    color: var(--momo-red-100);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    z-index: 5;
    font-size: 11px;
}

/* ---------------------------------------------------------------------
   Cabin class dropdown ("Economy") — trigger button + panel
   -------------------------------------------------------------------*/
.searcharea .secndblak .momo-class-select .alladvnce {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    background: var(--momo-grey-4);
    border-radius: 20px;
    padding: var(--space-2) var(--space-4) !important;
    cursor: pointer;
}

.searcharea .secndblak .momo-class-select__icon {
    color: var(--momo-blue);
    font-size: 13px;
}

.searcharea .secndblak .momo-class-select .remngwd {
    color: var(--momo-black);
    font-weight: var(--fw-medium);
    font-size: var(--fs-caption-lg);
}

.searcharea .secndblak .momo-class-select__caret {
    color: var(--momo-grey-1);
    font-size: 11px;
}

.searcharea .secndblak .momo-class-dropdown.advncedown {
    background: var(--momo-white) !important;
    border: 1px solid var(--momo-grey-3) !important;
    border-radius: var(--radius-card) !important;
    box-shadow: 0 8px 24px var(--momo-shadow) !important;
    width: 190px !important;
    padding: var(--space-2) !important;
    overflow: hidden;
}

.searcharea .secndblak .momo-class-dropdown .scroladvc {
    background: transparent;
    padding: 0;
    border-radius: 0;
}

.searcharea .secndblak .momo-class-dropdown .adscrla {
    border-radius: var(--space-2);
    padding: var(--space-3) var(--space-3) !important;
    color: var(--momo-black);
    font-size: var(--fs-caption-lg);
}

.searcharea .secndblak .momo-class-dropdown .adscrla:hover {
    background: var(--momo-grey-4);
}

.searcharea .secndblak .momo-class-dropdown .adscrla.active {
    background: var(--momo-blue-xlight);
    color: var(--momo-blue-dark);
    font-weight: var(--fw-medium);
}

/* ---------------------------------------------------------------------
   Section bar — solid navy label strip used to head off a content block
   (matches the "Price Details" bar from the booking/payment reference).
   -------------------------------------------------------------------*/
.momo-section-bar {
    background: var(--momo-blue-dark);
    color: var(--momo-white);
    font-family: var(--font-family-base);
    font-weight: var(--fw-medium);
    font-size: var(--fs-caption-lg);
    padding: var(--space-3) var(--space-4);
    margin: calc(var(--space-2) * -1) calc(var(--space-2) * -1) var(--space-2);
    border-radius: var(--radius-card) var(--radius-card) 0 0;
}

/* ---------------------------------------------------------------------
   Homepage: "How to Book a Flight" -- 5-step walkthrough, deliberately
   minimal (numbered icon circles + a connecting line, not boxed cards)
   since this is explanatory content, not another row of clickable cards
   competing with the destination/hotel/route grids above and below it.
   -------------------------------------------------------------------*/
.how-to-book-sec {
    background: var(--momo-white);
    padding: 50px 0 60px;
}

.how-to-book-header {
    text-align: center;
    margin-bottom: 40px;
}

.how-to-book-title {
    font-size: 36px;
    font-weight: 700;
    color: var(--momo-blue-dark);
    margin: 0 0 var(--space-2);
}

.how-to-book-subtitle {
    font-size: 16px;
    color: var(--momo-grey-1);
    margin: 0;
}

.how-to-book-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: var(--space-4);
    position: relative;
}

.how-to-book-grid::before {
    content: '';
    position: absolute;
    top: 34px;
    left: 10%;
    right: 10%;
    height: 2px;
    background: var(--momo-grey-3);
    z-index: 0;
}

.how-to-book-step {
    position: relative;
    z-index: 1;
    text-align: center;
    padding: 0 var(--space-2);
}

.how-to-book-step-num {
    display: none;
}

.how-to-book-step-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 68px;
    height: 68px;
    margin: 0 auto var(--space-3);
    border-radius: 50%;
    background: var(--momo-blue-xlight);
    color: var(--momo-blue-dark);
    font-size: 24px;
    border: 3px solid var(--momo-white);
    box-shadow: 0 0 0 2px var(--momo-blue-xlight);
}

.how-to-book-step-title {
    font-size: 16px;
    font-weight: 700;
    color: var(--momo-blue-dark);
    margin: 0 0 6px;
}

.how-to-book-step-desc {
    font-size: 13px;
    color: var(--momo-grey-1);
    line-height: 1.5;
    margin: 0;
}

@media (max-width: 991px) {
    .how-to-book-grid {
        grid-template-columns: repeat(2, 1fr);
        row-gap: var(--space-6);
    }

    .how-to-book-grid::before {
        display: none;
    }
}

@media (max-width: 575px) {
    .how-to-book-grid {
        grid-template-columns: 1fr;
    }
}

/* ---------------------------------------------------------------------
   Homepage: light-grey page background so white cards visibly float,
   matching the booking/payment reference design.
   -------------------------------------------------------------------*/
.momo-home-bg {
    background: var(--momo-grey-4);
}

/* These sections carry their own `background: #fff` in theme_style.css,
   which otherwise paints over .momo-home-bg and breaks the continuous
   grey canvas the reference design relies on for its card contrast. */
.momo-home-bg .top-flight-routes-sec,
.momo-home-bg .why-book-sec {
    background: transparent;
}

/* .top-flight-route-card.momo-card,
.why-book-card.momo-card {
    border: 1px solid var(--momo-grey-3);
} */

/* Section titles/CTAs/badges across Top Searched Destinations, Top Rated
   Hotels, Popular Flight Routes, and Why Book all use the same
   hand-picked #014A6B/#f1c40f/#000 in theme_style.css -- close to, but
   not exactly, the brand tokens (--momo-blue-dark is #003654,
   --momo-yellow is #FFCB05), so every heading/button on the page reads
   as a slightly different blue/yellow from the search widget and results
   page next to it. Same selectors, exact token values. */
.top-hotel-dest-title,
.top-rated-hotels-title,
.top-flight-routes-title,
.why-book-title,
.why-book-stat-num {
    color: var(--momo-blue-dark) !important;
}

.top-hotel-dest-subtitle,
.top-rated-hotels-subtitle,
.top-flight-routes-subtitle,
.why-book-desc {
    color: var(--momo-grey-1) !important;
}

.top-rated-hotels-viewmore,
.top-rated-hotel-btn {
    background: var(--momo-blue-dark) !important;
}

.top-rated-hotels-viewmore:hover,
.top-rated-hotel-card-link:hover .top-rated-hotel-btn {
    background: var(--momo-blue) !important;
}

.top-flight-routes-viewmore {
    color: var(--momo-blue-dark) !important;
}

.top-flight-routes-viewmore:hover {
    color: var(--momo-blue) !important;
}

.top-rated-hotel-rating-badge i {
    color: var(--momo-yellow) !important;
}

.why-book-badge {
    background: var(--momo-yellow) !important;
    color: var(--momo-blue-dark) !important;
}

/* "Book with confidence" promo section had zero momo-design-system.css
   coverage at all (unlike the other homepage sections above, which at
   least had .momo-card applied to their cards) -- same off-token colors
   as everywhere else on the page. */
.hotel-promo-sec {
    background: var(--momo-grey-4) !important;
}

.hotel-promo-title {
    color: var(--momo-blue-dark) !important;
}

.hotel-promo-desc {
    color: var(--momo-grey-1) !important;
}

.hotel-promo-payment-badge {
    background: var(--momo-blue-xlight) !important;
    color: var(--momo-blue-dark) !important;
}

/* ---------------------------------------------------------------------
   Results page: filters panel as a bottom sheet, sort strip, skeleton cards
   The existing .filter_tab click handler already toggles a `.resultalls.open`
   class and slideToggle()s `.coleft` (flight_search.js) — that JS is left
   untouched; this only repositions the same show/hide element on mobile so
   it *looks* like a bottom sheet instead of an inline sidebar.
   -------------------------------------------------------------------*/
@media (max-width: 767px) {
    .coleft .fltrboxin.momo-filters-sheet {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        max-height: 80vh;
        overflow-y: auto;
        border-radius: var(--radius-card-lg) var(--radius-card-lg) 0 0 !important;
        box-shadow: 0 -4px 20px var(--momo-shadow) !important;
        z-index: 1200;
        background: var(--momo-white);
    }
}

.flight-sort-filter.momo-card {
    border-radius: var(--radius-card) !important;
    box-shadow: 0 2px 8px var(--momo-shadow) !important;
}

.card.momo-card.marginTB10 {
    border-radius: var(--radius-card) !important;
    box-shadow: 0 2px 8px var(--momo-shadow) !important;
}

/* Individual flight result cards (built client-side in flight_search.js) */
.rowresult.momo-card {
    border-radius: var(--radius-card) !important;
    box-shadow: 0 2px 8px var(--momo-shadow) !important;
    margin-bottom: var(--space-3) !important;
}

/* Results list wrapper (class="allresult momo-card") -- light grey instead
   of .momo-card's default white, so individual .rowresult.momo-card cards
   read as distinct cards sitting on a surface rather than blending into
   one flat white block. */
.allresult.momo-card {
    background: #F5F5F5;
}

.b-btn.momo-btn--primary,
.bookallbtn.mfb-btn.momo-btn--secondary {
    border-radius: 20px !important;
    height: 40px !important;
}

.b-btn.momo-btn--primary {
    background: var(--momo-blue) !important;
    color: var(--momo-white) !important;
}

.bookallbtn.mfb-btn.momo-btn--secondary {
    background: transparent !important;
    color: var(--momo-blue) !important;
    border: 1px solid var(--momo-blue) !important;
}

/* ---------------------------------------------------------------------
   Flight results page — modernization pass.
   The legacy page used a saturated yellow modify-search bar and a cream
   (#fffaf1) accent for the sort bar + result-card price panel; this swaps
   both for the MoMo blue/white palette used everywhere else, and quiets
   the mismatched weather-icon sprite used for the time-of-day filters.
   -------------------------------------------------------------------*/

/* Modify-search bar: yellow -> deep blue, white search card floats on it */
.flight-modify-search-wrapper {
    background: var(--momo-blue-dark) !important;
    padding: var(--space-4) 0 !important;
}

.mdf-search {
    background: var(--momo-white);
    border-radius: var(--radius-card) !important;
    box-shadow: 0 4px 16px rgba(0, 0, 0, .2);
}

.mdf-search .flight_search_btn,
.mdf-search #flight-form-submit {
    background: var(--momo-blue) !important;
    border-radius: 20px !important;
}

.mdf-search .flight_search_btn:hover,
.mdf-search #flight-form-submit:hover {
    background: var(--momo-blue-dark) !important;
}

.mdf-search .mdf-trip-dropdown select {
    border-radius: 20px 0 0 20px !important;
}

.mdf-search .totlall {
    border-radius: 0 20px 20px 0 !important;
}

/* Bigger, more prominent bar overall */
.mdf-search .plcetogo,
.mdf-search .totlall,
.mdf-search .mdf-trip-dropdown select {
    min-height: 60px !important;
    padding-top: 14px !important;
    padding-bottom: 14px !important;
}

.mdf-search .plcetogo input.normalinput,
.mdf-search .plcetogo input.form-control,
.mdf-search .totlall .remngwd,
.mdf-search .mdf-trip-dropdown select {
    font-size: 15px !important;
}

.mdf-search .flight_search_btn,
.mdf-search #flight-form-submit {
    height: 60px !important;
    padding: 0 32px !important;
    font-size: 15px !important;
}

/* Trip-type dropdown (One Way/Round Trip/Multi-City) sits in a completely
   separate DOM branch from the From/To/Dates/Traveler/Modify row (it's the
   homepage widget's "top row" vs. the rest of the fields' "main row") --
   both branches are direct children of form#flight_form itself, and *that*
   element's own gap:0 (flight_modify_search.css) is what left zero space
   between the dropdown and "Entebbe (EBB)" while every other field-to-field
   gap in the row is ~8-10px. (An earlier attempt at this fix targeted
   .flightSearchNavigation-f, one level too deep -- that container only
   wraps the dropdown alone, so its gap had nothing to space out.) */
.mdf-search form#flight_form {
    gap: 10px !important;
}

/* Date fields: the old 46px-tall / narrow-flex boxes clipped the full
   "DD-MM-YYYY" value to "31-07-2..." — claim more of the row for the date
   pair, and shrink the icon's reserved space so the full date fits. */
.mdf-search .secndates {
    flex: 1.5 1 0% !important;
}

/* From/To fields: same #flight_form-scoped fsw-field padding:0/min-height:unset
   !important (theme_style.css inline block) collapses flight_modify_search.css's
   own `padding: 9px 14px 9px 30px` on .plcetogo down to 0 -- that 30px was the
   space reserved for the ::before plane-icon glyph (flight_modify_search.css,
   left:14px), so with it gone the icon renders directly on top of the input's
   own text ("En[✈]ebbe") instead of beside it. #flight_form prefix needed (not
   just !important): that competing rule is ID-scoped, which outranks any
   number of plain classes regardless of !important tier.
   min-height/top/bottom padding set explicitly to match the sibling fields
   (.mdf-search .plcetogo/.totlall/.mdf-trip-dropdown select, both below and
   above this block) rather than reusing flight_modify_search.css's original
   9px/46px figures -- this selector's higher specificity (needed to beat the
   ID rule) was *also* beating that sibling rule's own 60px/14px, so the first
   version of this fix fixed the icon overlap but left these two fields
   visibly shorter (39px) than every other field in the bar (60px). */
#flight_form .plcetogo.deprtures,
#flight_form .plcetogo.destinatios {
    min-height: 60px !important;
    min-width: 140px !important;
    padding: 14px 14px 14px 30px !important;
}

/* !important needed on both: this compact bar's markup is nested inside
   the SAME #flight_form as the homepage widget (shared DOM structure), so
   #flight_form .fsw-dates .col-xs-6 (ID-scoped, theme_style.css inline
   block) was winning on specificity alone and collapsing this back to
   flex:1 1 0px -- which is exactly the narrow-box behavior this whole
   block exists to fix, so it was silently a no-op without !important. */
.mdf-search .secndates .padfive {
    min-width: 150px !important;
    flex: 1 1 150px !important;
}

/* #flight_form prefix needed, not just !important -- same ID-scoped
   #flight_form .fsw-field{padding:0 !important} inline rule that forced
   the From/To fix above to be ID-scoped also collapses this to 0 (this
   field carries .fsw-field too), and a plain-class selector can't
   outrank an ID regardless of !important tier. */
#flight_form .plcetogo.datemark {
    padding-left: 30px !important;
}

/* The markup's own <i class="flight-date-icon"> is permanently hidden by
   the homepage widget's shared #flight_form .fsw-field__icon{display:none
   !important} inline rule (same ID-scoped leak as elsewhere in this file),
   so the left:10px/font-size:12px tweak below never had anything to apply
   to. From/To sidestep this the same way hotel_modify_search.css's own
   .mdf-search-hotel .plcetogo.datemark::before already does for its date
   fields -- flight_modify_search.css just never got the equivalent rule
   for its own date fields, leaving them the only field in the bar with no
   icon at all. Mirrors the From/To ::before plane icon 1-for-1: same
   left/top/color/size, just the calendar glyph. */
.mdf-search .plcetogo.datemark::before {
    content: "\f073";
    font-family: "Font Awesome 5 Pro", "Font Awesome 5 Free", "FontAwesome";
    font-weight: 900;
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: #003654;
    font-size: 14px;
}

/* Narrow-desktop gap: below ~1250px the row's protected minimum widths
   (From/To fields above, Traveler's flex-shrink:0, the date pair) no
   longer all fit on one line. Lower bound is 992px, NOT 767px --
   flight_modify_search.css already owns its own @media(max-width:991px)
   that switches form#flight_form/.flight-search-inner-box to
   flex-direction:column (a full one-field-per-row stacked layout for
   tablet-and-below). This block must stay clear of that range: forcing
   nowrap/row-wrap here on top of that column switch produces a broken
   hybrid layout, not a cleaner one. Below 992px, flight_modify_search.css's
   own stacked design is left alone. Without this block, flight-search-
   inner-box's flex-wrap:nowrap (flight_modify_search.css) forced
   everything to keep shrinking past those protected minimums between
   992-1250px, which pushed the Modify button out past the white pill's
   rounded bottom edge entirely rather than just wrapping it down cleanly. */
@media (min-width: 992px) and (max-width: 1250px) {

    /* Keep the outer row (trip-type dropdown + everything else) on one
       line -- form#flight_form has its own independent flex-wrap:wrap
       (flight_modify_search.css), which was triggering *in addition to*
       the inner wrap below, uncoordinated: the dropdown split off onto
       its own line while Traveler/Modify wrapped separately inside
       .tabspl, instead of one clean single reflow point. */
    .mdf-search form#flight_form {
        flex-wrap: nowrap !important;
        align-items: flex-start !important;
    }

    /* .trvlhdr-optn centers its dropdown vertically within its own height
       by default -- fine when the row beside it is a single line, but
       once .tabspl's content wraps to two lines (taller), centering makes
       the dropdown drift down toward the second line instead of staying
       lined up with "Entebbe (EBB)" on the first. */
    .mdf-search .trvlhdr-optn {
        align-items: flex-start !important;
    }

    .mdf-search .flight-search-inner-box {
        flex-wrap: wrap !important;
        row-gap: 10px !important;
    }

    .mdf-search .thrdtraveller,
    .mdf-search .searchsbmtfot {
        flex: 0 0 auto !important;
    }
}

/* .searchsbmtfot (Modify button wrapper) is a shared class name reused
   across several unrelated legacy widgets (hotel/car/tour search bars),
   one of which (theme_style.css, an unscoped bare .searchsbmtfot rule
   with no page/widget prefix at all) sets position:absolute -- which
   this widget never wants, but was inheriting anyway since it's the same
   class name. Absolutely-positioned elements ignore flex-wrap entirely,
   which is what made the button pop out past the pill's rounded bottom
   edge and overlap the page below instead of wrapping to a second line
   with the media query above. Reset it back to a normal flex participant
   here rather than patching every one of the other widgets' rules. */
.mdf-search .searchsbmtfot {
    position: static !important;
    left: auto !important;
    width: auto !important;
}

/* Tablet stacked layout (<=991px): flight_modify_search.css switches
   form#flight_form/.flight-search-inner-box/#onw_rndw_fieldset to
   flex-direction:column here (one field-group per row) but never resets
   the row-mode flex-grow/flex-basis those same groups carry at desktop
   width -- so each group kept trying to *grow* to fill the column's
   available height instead of just taking its own content height,
   producing huge blank gaps between rows (confirmed via bounding-box
   inspection: .flight-search-fields alone was rendering ~296px tall for
   ~60px of actual content). flex:0 0 auto stops the grow; width:100%
   replaces the Bootstrap col-md-* percentage widths flexbox ignores once
   the main axis flips to vertical. */
@media (max-width: 991px) {

    .mdf-search .flight-fields-row,
    .mdf-search .flight-search-fields,
    .mdf-search .secndates,
    .mdf-search .thrdtraveller,
    .mdf-search .searchsbmtfot {
        flex: 0 0 auto !important;
        height: auto !important;
        width: 100% !important;
    }

    /* Same shared-DOM leak as elsewhere in this file: .plcetogo/.totlall
       also carry the homepage widget's .fsw-field class, and that
       widget's own inline <style> has an ID-scoped #flight_form
       .fsw-field{border:none !important} rule (border:none suits the
       homepage's single-joined-box look) which outranks
       flight_modify_search.css's own stacked-mode
       .mdf-search .plcetogo{border:1px solid #ddd !important} on
       specificity (ID+class beats two plain classes) regardless of
       !important tier. Matching that same ID+class shape here, plus one
       more ancestor class, wins outright. */
    .mdf-search #flight_form .plcetogo,
    .mdf-search #flight_form .totlall {
        border: 1px solid var(--momo-grey-3, #ddd) !important;
        border-radius: 8px !important;
    }

    /* media.css has its own @media(max-width:991px) .trvlhdr-optn rule
       that switches this element to flex-direction:column -- which flips
       which axis actually controls the dropdown's horizontal position.
       In column mode that's the CROSS axis (align-items), not
       justify-content (which only affects vertical stacking here); fixing
       justify-content alone was a no-op. The centering itself comes from
       yet another #flight_form-scoped inline rule (this widget's shared
       DOM with the homepage's own <style> block:
       "#flight_form .fsw-top-row, .trvlhdr-optn.fsw-top-row
       {align-items:center}", ID+class specificity) beating media.css's
       plain-class align-items:start. #flight_form prefix matches that
       specificity to win outright. */
    .mdf-search #flight_form .trvlhdr-optn {
        align-items: flex-start !important;
        justify-content: flex-start !important;
    }
}

/* Same #flight_form-scoped fsw-field__input rule as above also forces
   overflow:clip/text-overflow:ellipsis on the input itself -- !important
   needed here too, or the date text still clips even once the box is wide
   enough. */
.mdf-search .plcetogo.datemark input.normalinput {
    text-overflow: clip !important;
    overflow: visible !important;
}

/* .changedate is an empty div that flight_search.php's own inline script
   binds a datepicker-open click handler to -- but that inline script only
   ships with the homepage view, not this results-page summary bar (this
   bar reuses the field markup via search_panel_summary.php, not the
   handler). So here it's dead weight: unbound, yet still sitting in
   normal flow as a THIRD flex sibling next to the icon and input, which
   was claiming roughly half of .padfive's 150px on its own -- what was
   still clipping the date text by one character even after the width
   fixes above. jQuery UI's datepicker already opens on focus of the real
   input with no handler needed, so take this out of flow and make it
   inert (pointer-events:none) rather than deleting it -- confirmed a
   plain absolute overlay here blocks real clicks from ever reaching/
   focusing the input underneath, which silently broke opening the
   calendar by clicking the field at all. */
.mdf-search .plcetogo.datemark {
    position: relative;
}

.mdf-search .plcetogo.datemark .changedate {
    position: absolute !important;
    inset: 0;
    width: auto !important;
    flex: none !important;
    pointer-events: none !important;
}

/* Progress steps: quieter divider, brand-blue active state */
section.search-result.onlyfrflty .flight-result-progress-steps {
    border-bottom: 1px solid var(--momo-grey-3) !important;
}

section.search-result.onlyfrflty .flight-result-progress-steps .progress-step.active {
    color: var(--momo-blue) !important;
}

/* Sort bar: cream -> white card, active tab reads as a real pill/tab */
section.search-result.onlyfrflty .flight-sort-filter {
    background: var(--momo-white) !important;
}

section.search-result.onlyfrflty .flight-sort-filter .price-ofr-tab a {
    padding: var(--space-2) var(--space-4) !important;
    border-radius: 20px;
    color: var(--momo-grey-1) !important;
}

section.search-result.onlyfrflty .flight-sort-filter .price-ofr-tab a.active {
    background: var(--momo-blue-xlight);
    color: var(--momo-blue-dark) !important;
    font-weight: var(--fw-medium);
}

/* Time-of-day filter cards (Departure/Arrival Time) and the Stops pills
   share the same .starin visual treatment. The previous pass here used a
   solid saturated blue box by default (not just on selection) with a
   legacy weather-sprite image (flitsprite.png -- cloud/sun combo icons,
   background-position offsets per .mng1-.mng4) -- reads as a generic
   weather-app widget, not this brand's actual visual language, which is
   white cards + a light-blue-xlight tint only on the *selected* option
   (same pattern as .cabinclass.economy-pill, .time-icon-badge, and the
   sort-tab active state above). Rebuilt to match: white/bordered by
   default, light-blue selected state, and the sprite swapped for plain
   Font Awesome glyphs (this codebase's established icon approach
   elsewhere, e.g. the plane/pin/calendar ::before icons on the result
   cards) sized to sit comfortably in these compact sidebar chips. */
section.search-result.onlyfrflty .departure-segments .starin {
    min-height: 56px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
}

section.search-result.onlyfrflty .flight-filters-panel .stopCountWrapper .starin,
section.search-result.onlyfrflty .flight-filters-panel .departure-segments .starin {
    background: var(--momo-white) !important;
    border: 1px solid var(--momo-grey-3) !important;
    transition: background .15s ease, border-color .15s ease;

    border-radius: 10px;
}

section.search-result.onlyfrflty .flight-filters-panel .stopCountWrapper .starin:hover,
section.search-result.onlyfrflty .flight-filters-panel .departure-segments .starin:hover {
    background: var(--momo-grey-4) !important;

}

section.search-result.onlyfrflty .flight-filters-panel .stopCountWrapper .stopbig,
section.search-result.onlyfrflty .flight-filters-panel .departure-segments .htlcount {
    color: var(--momo-grey-1) !important;
}

/* .search-result.search-result (repeated class, not a typo) bumps
   specificity above theme_style.css's identically-selectored
   `.toglefil.active .starin { background:#054C6F !important }` rule --
   theme_style.css loads after this file, so at equal specificity its solid
   navy fill was winning over this card's intended light-blue selected
   state. Repeating the class is the standard no-behavior-change way to
   out-specify a same-selector rule from a later stylesheet without
   touching that (much larger, higher-risk) legacy file. */
section.search-result.search-result.onlyfrflty .flight-filters-panel .stopone.toglefil.active .starin,
section.search-result.search-result.onlyfrflty .flight-filters-panel .stopone.toglefil.enabled.active .starin,
section.search-result.search-result.onlyfrflty .flight-filters-panel .timone.toglefil.active .starin,
section.search-result.search-result.onlyfrflty .flight-filters-panel .timone.toglefil.enabled.active .starin {
    background: var(--momo-blue-xlight) !important;
    border: 1.5px solid var(--momo-blue) !important;
    box-shadow: none !important;
}

section.search-result.search-result.onlyfrflty .flight-filters-panel .stopone.toglefil.active .stopbig,
section.search-result.search-result.onlyfrflty .flight-filters-panel .stopone.toglefil.enabled.active .stopbig,
section.search-result.search-result.onlyfrflty .flight-filters-panel .timone.toglefil.active .htlcount,
section.search-result.search-result.onlyfrflty .flight-filters-panel .timone.toglefil.enabled.active .htlcount {
    color: var(--momo-blue-dark) !important;
    font-weight: var(--fw-medium);
}

/* Weather sprite -> plain FA glyph. .flitsprt's own background-image/
   height/width (theme_style.css) still apply as a sizing box; only the
   image itself and the (now moot, sprite-offset-based) .active variant
   are overridden. */
.flight-filters-panel .flitsprt {
    background: none !important;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    color: var(--momo-blue);
    transition: color .15s ease;
}

.flight-filters-panel .timone.active .flitsprt {
    color: var(--momo-blue-dark);
}

/* One consistent clock glyph for all four slots rather than a per-slot
   sun/moon set -- tried that first (cloud-sun/cloud-moon, \f6c4/\f6c3),
   but those are Pro-exclusive glyphs this install doesn't actually have
   font files for (silently render blank), and the text label under each
   icon already states the specific time range, so per-slot icon variety
   isn't carrying any information a uniform icon would lose. \f017 is a
   base Font Awesome icon present in every tier/weight, so it's safe. */
.flight-filters-panel .flitsprt.mng1:before,
.flight-filters-panel .flitsprt.mng2:before,
.flight-filters-panel .flitsprt.mng3:before,
.flight-filters-panel .flitsprt.mng4:before {
    font-family: "Font Awesome 5 Pro", "Font Awesome 5 Free", FontAwesome;
    font-weight: 400;
    content: "\f017";
}

/* Filter panel: airline / airport checkbox lists — breathing room between
   rows (checkbox styling itself is already brand-blue via theme_style.css). */
.flight-filters-panel #allairlines li,
.flight-filters-panel .locationul li {
    padding: var(--space-2) 0;
}

/* ---------------------------------------------------------------------
   Filter sidebar: turn each section (Price, Stops, Departure, Airlines...)
   into its own separate floating card instead of one big panel with thin
   divider lines between sections.
   -------------------------------------------------------------------*/
section.search-result.onlyfrflty .flight-filters-panel.fltrboxin {
    background: transparent !important;
    box-shadow: none !important;
    padding: 0 !important;
}

.flight-filters-panel .celsrch>.row {

    /* --extra-light-grey: #E8E8E8; */

    background: var(--momo-white);
    /* border-radius: var(--radius-card);
    box-shadow: 0 2px 8px var(--momo-shadow); */
    padding: var(--space-4);
    /* margin-bottom: var(--space-3); */

    border: 1px solid var(--momo-grey-3);
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-card);
    margin-bottom: var(--space-4);
}

.flight-filters-panel .rangebox {
    background: var(--momo-white);
    /* border-radius: var(--radius-card); */
    /* box-shadow: 0 2px 8px var(--momo-shadow); */
    padding: var(--space-4);
    /* margin-bottom: var(--space-3); */

    border: 1px solid var(--momo-grey-3);
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-card);
    margin-bottom: var(--space-4);
}

.flight-filters-panel .septor {
    display: none;
}

/* ---------------------------------------------------------------------
   Floating WhatsApp / Call buttons — richer look + attention-drawing pulse
   -------------------------------------------------------------------*/
@keyframes momo-pulse-whatsapp {
    0% {
        box-shadow: 0 4px 10px rgba(0, 0, 0, .2), 0 0 0 0 rgba(37, 211, 102, .55);
    }

    70% {
        box-shadow: 0 4px 10px rgba(0, 0, 0, .2), 0 0 0 16px rgba(37, 211, 102, 0);
    }

    100% {
        box-shadow: 0 4px 10px rgba(0, 0, 0, .2), 0 0 0 0 rgba(37, 211, 102, 0);
    }
}

@keyframes momo-pulse-call {
    0% {
        box-shadow: 0 4px 10px rgba(0, 0, 0, .2), 0 0 0 0 rgba(255, 203, 5, .6);
    }

    70% {
        box-shadow: 0 4px 10px rgba(0, 0, 0, .2), 0 0 0 16px rgba(255, 203, 5, 0);
    }

    100% {
        box-shadow: 0 4px 10px rgba(0, 0, 0, .2), 0 0 0 0 rgba(255, 203, 5, 0);
    }
}

.whatsapp-btn {
    border: 2px solid var(--momo-white);
    font-size: 26px !important;
    animation: momo-pulse-whatsapp 2.4s ease-out infinite;
    transition: transform .2s ease;
}

.whatsapp-btn:hover {
    transform: scale(1.08);
    animation-play-state: paused;
}

.call-btn {
    background: var(--momo-yellow) !important;
    color: var(--momo-blue-dark) !important;
    border: 2px solid var(--momo-white);
    animation: momo-pulse-call 2.4s ease-out infinite;
    transition: transform .2s ease, width .4s ease, border-radius .4s ease;
}

.call-btn i {
    color: var(--momo-blue-dark) !important;
}

.call-btn:hover i,
.call-btn:hover .call-text {
    color: var(--momo-blue-dark) !important;
}

.call-wrapper:hover .call-btn {
    transform: scale(1.03);
    animation-play-state: paused;
}

/* ---------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------*/
.momo-footer {
    background: var(--momo-blue-dark);
    color: var(--momo-white);
    font-family: var(--font-family-base);
    padding: var(--space-6) 0 var(--space-4);
    margin-top: var(--space-6);
}

.momo-footer__top {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr 1fr;
    gap: var(--space-5);
    padding-bottom: var(--space-5);
    border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

@media (max-width: 767px) {
    .momo-footer__top {
        grid-template-columns: 1fr 1fr;
    }

    .momo-footer__col--about {
        grid-column: 1 / -1;
    }
}

.momo-footer__logo-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--space-4);
    margin-bottom: var(--space-3);
}

.momo-footer__powered-by {
    font-size: var(--fs-caption);
    font-weight: var(--fw-medium);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--momo-blue-xlight);
    opacity: 0.75;
    white-space: nowrap;
}

.momo-footer__logo {
    height: 32px;
    margin-bottom: 0;
}

.momo-footer__partner-logos {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding-left: var(--space-4);
    border-left: 1px solid rgba(255, 255, 255, 0.15);
}

.momo-footer__partner-logo {
    height: 22px;
    width: auto;
}

/* iata.png is a solid dark-blue mark (no white variant available), so it
   needs a light chip behind it to stay visible on the dark footer --
   amadeus.png is already a white/reversed mark and doesn't need one. */
.momo-footer__partner-logo-badge {
    display: inline-flex;
    align-items: center;
    background: var(--momo-white);
    border-radius: var(--radius-sm, 6px);
    padding: 4px 8px;
}

.momo-footer__partner-logo-badge .momo-footer__partner-logo {
    height: 18px;
}

.momo-footer__desc {
    font-size: var(--fs-caption-lg);
    color: var(--momo-blue-xlight);
    margin-bottom: var(--space-3);
}

.momo-footer__contact-item {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-size: var(--fs-caption);
    color: var(--momo-blue-xlight);
    margin-bottom: var(--space-2);
}

.momo-footer__contact-item a {
    color: var(--momo-white);
    text-decoration: none;
}

.momo-footer__heading {
    font-size: var(--fs-caption-lg);
    font-weight: var(--fw-medium);
    color: var(--momo-white);
    margin: 0 0 var(--space-3);
}

.momo-footer__link {
    display: block;
    font-size: var(--fs-caption);
    color: var(--momo-blue-xlight);
    text-decoration: none;
    padding: var(--space-1) 0;
}

.momo-footer__link:hover,
.momo-footer__link:focus {
    color: var(--momo-yellow);
    text-decoration: none;
}

.momo-footer__social {
    display: flex;
    gap: var(--space-3);
}

.momo-footer__social a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.1);
    color: var(--momo-white);
}

.momo-footer__social a:hover {
    background: var(--momo-yellow);
    color: var(--momo-blue-dark);
}

.momo-footer__bottom {
    padding-top: var(--space-4);
    font-size: var(--fs-caption);
    color: var(--momo-blue-xlight);
    text-align: center;
}

/* ---------------------------------------------------------------------
   Utility helpers
   -------------------------------------------------------------------*/
.momo-text-caption {
    font-size: var(--fs-caption);
    color: var(--momo-grey-1);
}

.momo-text-h1 {
    font-size: var(--fs-h1);
    font-weight: var(--fw-medium);
    font-family: var(--font-family-base);
}

/* ---------------------------------------------------------------------
   Flight result card -- two-panel look (flight info | price & book).
   All rules here are additive/visual-only: they restyle existing classes
   and a small number of new ones added alongside them in flight_search.js.
   None of the data-* attributes or classes the sort/filter/booking JS in
   that file reads (.a-n, .stp, .price, .dep_dt/.arr_dt, .branded-fare-btn,
   .flight-details-toggle, etc.) were touched -- only wrapped or restyled.
   -------------------------------------------------------------------*/

/* Outer wrapper becomes transparent -- the two inner panels (.f-s-d-w and
   .priceanbook) now each carry their own card look, with a visible gap
   between them, instead of one flat block. */
.rowresult.momo-card {
    background: transparent !important;
    box-shadow: none !important;
    border: 0 !important;
    padding: 0 !important;
}

.rowresult.momo-card:hover {
    box-shadow: none !important;
}

/* nowrap so the price card never drops below the flight-info card
   (confirmed it could wrap at both very wide and narrower desktop widths
   with flex-wrap:wrap, since .wayfour's Bootstrap col-xs-4 width was
   competing unpredictably with .f-s-d-w's flex-grow for the same space). */
/* !important needed: #flight_search_result .round-trip .rowresult .madgrid
   (theme_style.css, ID + 3 classes) re-forces flex-wrap:wrap for round-trip
   cards specifically -- much higher specificity than this bare class, and
   neither had !important, so it was silently winning and causing the price
   card to wrap below instead of staying beside the flight-info card. */
.madgrid {
    display: flex !important;
    align-items: stretch !important;
    gap: var(--space-4) !important;
    flex-wrap: nowrap !important;
}

.f-s-d-w.wayeght {
    display: flex !important;
    flex-direction: column !important;
    position: relative !important;
    background: var(--momo-white) !important;
    border-radius: var(--radius-card-lg) !important;
    box-shadow: 0 2px 8px var(--momo-shadow) !important;
    padding: var(--space-2) var(--space-4) var(--space-2) !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
}

.wayfour.full_same {
    background: transparent;
    padding: 0;
    flex: 0 0 220px !important;
    width: 220px !important;
    max-width: 220px !important;
}

.priceanbook {
    background: var(--momo-blue-xlight) !important;
    border-radius: var(--radius-card-lg);
    box-shadow: 0 2px 8px var(--momo-shadow);
    padding: var(--space-3) var(--space-4);
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
}

/* A subtle wing/plane watermark in the corner, matching the mockup. */
.priceanbook:before {
    content: "\f072";
    font-family: "Font Awesome 5 Pro", FontAwesome;
    font-weight: 300;
    position: absolute;
    top: var(--space-3);
    right: var(--space-4);
    font-size: 22px;
    color: var(--momo-blue-light);
    opacity: .6;
}

/* Price-panel content centered as a block. .insidesame itself needs
   text-align:center too, since that's what centers the inline-flex
   Refundable pill -- text-align on a parent has no effect on the
   block-level price-label/priceflights elements, which need their own. */
.priceanbook .insidesame {
    text-align: center;
}

.price-label {
    font-size: var(--fs-caption-lg);
    color: var(--momo-grey-1);
    margin-bottom: 2px;
    text-align: center;
}

.priceanbook .priceflights {
    margin-bottom: var(--space-1) !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    color: var(--momo-blue-dark) !important;
    text-align: center !important;
}

.priceanbook .priceflights strong {
    font-size: var(--fs-caption-lg) !important;
    font-weight: var(--fw-medium) !important;
    color: var(--momo-grey-1) !important;
    margin-right: 4px;
}

.priceanbook .priceflights small {
    font-size: 12px;
}

/* Refundable / non-refundable pill, with a checkmark on the refundable one */
.priceanbook .n-r-t {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    border-radius: 20px;
    padding: 1px var(--space-2) !important;
    font-size: var(--fs-caption);
    margin-bottom: var(--space-2);
}

.priceanbook .n-r-t.refndble {
    background: var(--momo-green-30);
    color: var(--momo-green-100) !important;
}

.priceanbook .n-r-t.nre {
    background: var(--momo-grey-3);
    color: var(--momo-grey-1) !important;
}

/* Book Now -- bigger, full-width, dark navy.
   #flight_search_result prefix needed on the background specifically:
   section.search-result.onlyfrflty .b-btn.bookallbtn (theme_style.css) is
   also 3 classes + !important, but adds one more type selector (section),
   which alone outranks this rule at equal !important tier -- the button was
   rendering flat #054C6F instead of the momo-gradient-dark gradient. An ID
   prefix is the simplest way to out-rank that regardless of how many type
   selectors it stacks. */
#flight_search_result .priceanbook .b-btn.momo-btn--primary {
    width: 100%;
    height: 42px !important;
    background: var(--momo-gradient-dark) !important;
    justify-content: center;
    padding: 0 var(--space-4);
    font-size: var(--fs-caption-lg);
}

.priceanbook .more-fare-link {
    text-align: center;
    margin-top: var(--space-2);
}

.priceanbook .more-fare-btn {
    background: transparent !important;
    border: 0 !important;
    color: var(--momo-blue-dark);
    text-decoration: underline;
    font-size: var(--fs-caption-lg);
    padding: 0 !important;
}

/* Pulled from staging: tighten the result row's own side padding on
   phones so it isn't double-padded against the page container's. */
@media only screen and (max-width: 640px) {
    #flight_search_result .row .r-w-g {
        padding-left: 10px !important;
        padding-right: 10px !important;
    }
}

/* Give the airline logo+name column real room to sit side-by-side (mockup
   layout) instead of Bootstrap's cramped col-xs-2 (~16%), which was forcing
   the name to wrap under the logo. Timeline column gives up some of that
   width since it only needs to fit a duration/stop pill, not full text. */
.allsegments>.quarter_wdth.col-xs-2 {
    flex: 0 0 190px !important;
    width: 190px !important;
    padding-right: 0 !important;
}

/* Departure and arrival are both `.col-xs-3.quarter_wdth` (identical
   classes) -- nth-child distinguishes them: departure is the 2nd column,
   arrival the 5th (there's a hidden .col-md-1 loc_dir_icon div as the 3rd
   child, between departure and the timeline). Departure is stretched
   wider than arrival (per request) but doesn't grow further -- its text
   content doesn't need more than this, and letting it also soak up equal
   grow left a lopsided gap before the timeline. Timeline gets the extra
   grow instead, since its line + centered pill actually benefit from more
   width. Each column's own left/right padding is zeroed out below and
   replaced with one uniform `gap` on the row (.allsegments) -- previously
   only the airline<->departure gap had been tightened while the other
   two gaps still carried Bootstrap's 15px+15px, so the row read as
   tight-then-loose-then-loose instead of evenly spaced. */
.allsegments>.col-xs-3.quarter_wdth:nth-child(2) {
    flex: 0 1 190px !important;
    width: auto !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}

.allsegments>.col-xs-3.quarter_wdth:nth-child(5) {
    flex: 0 1 150px !important;
    width: auto !important;
    padding-left: 0 !important;
}

.allsegments>.smal_udayp.col-xs-4 {
    flex: 2 1 140px !important;
    width: auto !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}

/* At narrow widths the airline column's fixed 190px alone doesn't leave
   enough room for departure+timeline+arrival's combined min-content width
   -- they were overflowing/getting clipped rather than shrinking. A 3-way
   percentage split still fought for space (timeline's own min-content
   forced departure/arrival to wrap unpredictably), so stack all four
   pieces full-width instead -- less compact, but reliably correct. */
@media (max-width: 560px) {
    .allsegments {
        flex-wrap: wrap;
    }

    .allsegments>.quarter_wdth.col-xs-2,
    .allsegments>.col-xs-3.quarter_wdth,
    .allsegments>.smal_udayp.col-xs-4 {
        flex: 1 1 100% !important;
        width: 100% !important;
        margin-bottom: var(--space-2);
    }

    .dep-arr-block {
        justify-content: center;
    }

    .text_center_airline {
        justify-content: center;
    }
}

/* Legacy zebra-striping (.round-trip .allsegments:nth-child(odd/even) in
   theme_style.css) alternates each leg's row background -- the mockup
   wants a uniform white card, so flatten it back to white here.
   #flight_search_result .allsegments (ID-scoped, theme_style.css) also
   forces a tall 16px/22px vertical padding on every leg -- a big
   contributor to overall card height -- so tighten that here too. */
/* align-items:flex-start (was center) puts every column -- crucially the
   airline logo+name -- at the top of the row instead of vertically
   centered against the taller departure/timeline/arrival columns, so the
   logo+name reads as upper-left of the card rather than middle-left. */
.allsegments {
    background: var(--momo-white) !important;
    padding: var(--space-2) 0 !important;
    align-items: flex-start !important;
    gap: var(--space-3) !important;
}

/* Divider between the outbound and return legs of a round-trip (or any
   later leg in a multi-city) card -- the adjacent-sibling selector only
   matches from the 2nd .allsegments row onward, so a one-way card (a
   single row) never gets a stray top border. */
.allsegments+.allsegments {
    border-top: 1px solid var(--momo-grey-3) !important;
    margin-top: var(--space-1) !important;
    padding-top: var(--space-2) !important;
}

.text_center_airline {
    justify-content: flex-start;
    text-align: left;
}

.text_center_airline .m-b-0.text-center {
    text-align: left !important;
}

/* Airline name -- legacy .airlinename forces text-overflow:ellipsis on one
   line, which mangles longer names (e.g. "ETHIOPIAN AIRLINES") mid-word.
   !important needed on every property here, not just the overflow trio:
   #flight_search_result .airlinename (theme_style.css, ID + class) outranks
   this bare 3-class selector on specificity alone, so color/font-size/
   font-weight were silently losing too -- airline names were rendering in
   plain black 13px/500 instead of momo-blue-dark 15px/700. */
.text_center_airline .a-n.airlinename {
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    color: var(--momo-blue-dark) !important;
    line-height: 1.3;
}

/* Airline logo -- plain, no badge/border/shadow box, matching the mockup's
   bare circular/brand logo sitting directly on the card. */
.fligthsmll.airline-logo-badge {
    width: 36px;
    height: 36px;
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 0;
    box-shadow: none;
    border-radius: 0;
    margin: 0;
    padding: 0;
}

.fligthsmll.airline-logo-badge .airline-logo {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

/* Economy / cabin-class pill -- rendered once per card (not per segment).
   .f-s-d-w is a column flex container (below) so this single element can
   right-align itself with align-self, no float/absolute-positioning tricks
   needed. */
.cabinclass.economy-pill {
    align-self: flex-end;
    flex-shrink: 0;
    min-height: 20px;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: var(--momo-blue-xlight);
    color: var(--momo-blue-dark);
    border-radius: 20px;
    padding: 2px var(--space-2);
    font-size: var(--fs-caption);
    font-weight: var(--fw-medium);
    text-transform: none;
    margin-bottom: var(--space-1);
}

/* Departure / arrival icon badges */
.dep-arr-block {
    display: flex;
    align-items: flex-start;
    gap: var(--space-2);
}

.time-icon-badge {
    flex: 0 0 auto;
    width: 32px;
    height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--momo-blue-xlight);
    color: var(--momo-blue-dark);
    border-radius: 10px;
    font-size: 13px;
    margin-top: 2px;
}

.dep-arr-content {
    flex: 1 1 auto;
    min-width: 0;
    text-align: center;
}

/* Time -- much bigger/bolder to match the mockup's headline-style clock
   ("20:50"), which the legacy 20-22px default reads as far too small next
   to everything else on the card. */
.dep-arr-content .bigtimef {
    font-size: 22px !important;
    font-weight: 700 !important;
    color: var(--momo-blue-dark) !important;
    line-height: 1.15 !important;
    margin: 1px 0 !important;
}

.dep-arr-content .flt_date {
    font-size: var(--fs-caption-lg);
    color: var(--momo-grey-1);
}

/* Airport code + city -- add a location-pin prefix, matching the mockup,
   and drop the separate all-caps code line since "EBB (Entebbe)" already
   carries the code. */
.dep-arr-content .smalairport_code {
    display: none;
}

.dep-arr-content .smalairport {
    font-size: var(--fs-caption-lg);
    color: var(--momo-grey-1);
    margin-top: 2px;
}

.dep-arr-content .smalairport:before {
    font-family: "Font Awesome 5 Pro", "Font Awesome 5 Free", FontAwesome;
    content: "\f3c5";
    font-weight: 400;
    margin-right: 4px;
    color: var(--momo-grey-2);
}

/* Stop timeline: keep the existing line/dot pseudo-elements, just add a
   centered plane glyph and turn "Stop: N" into a pill. */
.stop_image {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}

.stop_image .stop-plane-icon {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    background: var(--momo-blue-xlight);
    color: var(--momo-blue-dark);
    border-radius: 50%;
    font-size: 10px;
}

/* !important needed: section.search-result.onlyfrflty .stop-value
   (theme_style.css, 2 classes + element) outranks this bare class and was
   rendering the pill as a solid dark-navy chip with white text instead of
   the light momo-blue-xlight chip with dark text used everywhere else on
   the card. */
.stop-value {
    display: inline-block;
    background: var(--momo-blue-xlight) !important;
    color: var(--momo-blue-dark) !important;
    border-radius: 20px;
    padding: 1px var(--space-2);
    font-size: var(--fs-caption);
    margin: 2px auto 0;
}

/* Bottom row: baggage / seats-left / flight-details, laid out as columns
   in a light rounded bar with dividers between items, matching the
   mockup's 3-column footer. Negative side-margins pull it flush to the
   card's own edges/corners since .f-s-d-w's padding would otherwise leave
   a white gutter around it.
   !important is needed throughout this block: #flight_search_result
   .mrinfrmtn (ID-scoped, theme_style.css) forces padding:0, and
   .mrinfrmtn > i forces display:none on the baggage/seat wrapper -- both
   outrank a same-or-lower-specificity override without it. */
.mrinfrmtn {
    display: flex !important;
    align-items: center !important;
    flex-wrap: wrap;
    gap: 0;
    background: rgba(0, 79, 113, .03) !important;
    border-top: 1px solid var(--momo-grey-3);
    border-radius: 0 0 var(--radius-card-lg) var(--radius-card-lg) !important;
    margin: var(--space-2) calc(-1 * var(--space-4)) calc(-1 * var(--space-2)) !important;
    padding: var(--space-2) var(--space-4) !important;
    min-height: 36px;
    overflow: visible !important;
    /* #flight_search_result .round-trip .mrinfrmtn sets flex: 0 0 100% (theme_style.css),
       which claims the entire stretched card height for round-trip cards and
       overflows below the card -- force it back to content-sized. */
    flex: 0 0 auto !important;
}

.fset-bag {
    display: flex !important;
    align-items: center !important;
    gap: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    float: none !important;
    max-width: none !important;
}

.info-pill {
    display: flex !important;
    align-items: center !important;
    width: auto !important;
    float: none !important;
    padding: 0 var(--space-4) !important;
    margin: 0 !important;
    font-size: inherit !important;
    gap: var(--space-2);
    border-right: 1px solid var(--momo-grey-3);
}

.info-pill:first-child {
    padding-left: 0 !important;
}

.info-pill .bag_icon,
.info-pill .air_seat {
    display: inline-block;
    width: 20px;
    height: 20px;
    flex: 0 0 auto;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    font-size: 18px;
    color: var(--momo-blue-dark);
}

.info-pill em {
    display: flex !important;
    flex-direction: column;
    line-height: 1.3;
    font-style: normal;
}

.info-pill .info-label {
    font-size: var(--fs-caption);
    color: var(--momo-grey-1);
    white-space: nowrap;
}

.info-pill .info-value {
    font-size: var(--fs-body);
    font-weight: 700;
    color: var(--momo-blue-dark);
}

.mrinfrmtn .mfd {
    display: none;
}

.info-pill .bag_icon,
.info-pill .air_seat {
    color: var(--momo-blue);
    margin-right: var(--space-2);
}

/* #flight_search_result .detailsflt (theme_style.css) makes this
   position:absolute/bottom:1px -- that was fine when .fset-bag next to it
   was always display:none (dead content), but now that baggage/seats are
   shown, the absolute toggle floats on top of them. Put it back in normal
   flow so it takes its place as the third column. */
.flight-details-toggle {
    position: static !important;
    margin-left: auto !important;
    white-space: nowrap;
}

/* Below this, the fixed 280px price panel doesn't leave enough room for
   the flight-info card's real content (airline name, both times, timeline)
   -- confirmed it gets visibly cramped/clipped around 1024px viewport
   width once the filters sidebar eats into the results column too. Stack
   instead of squeezing. */
@media (max-width: 1099px) {
    .madgrid {
        flex-direction: column !important;
        flex-wrap: wrap !important;
    }

    .f-s-d-w.wayeght,
    .wayfour.full_same {
        flex: 1 1 auto !important;
        width: 100% !important;
        max-width: 100% !important;
    }
}

/* ---------------------------------------------------------------------
   Cheapest-by-airline price strip (above the results list). Originally
   flat/legacy (1px grey square corners, 4px padding, name text hard-
   truncated to "ETHIOPIAN AIR..."), a first pass gave each item its own
   bordered/shadowed card -- but that reads as a different design language
   than the day-wise fare calendar directly below it, which is one
   continuous white strip (.farenewcal, single shared shadow/radius) with
   plain divider lines between columns (theme_style.css:
   .farenewcal .owl-carousel .owl-item{border-right:1px solid #ddd}), not
   separate cards per item. Rebuilt to match that pattern instead: one
   outer card (below) + flat divider-separated columns here, rather than
   reintroducing the original cramped/square-corner look. */
#arlinemtrx1 {
    background: var(--momo-white);
    border-radius: var(--radius-card-lg);
    box-shadow: 0 1px 4px var(--momo-shadow);
    overflow: hidden;
}

section.search-result.onlyfrflty .airline-slider-figma .airline-card-figma .airlinesd {
    border: none !important;
    border-right: 1px solid var(--momo-grey-3) !important;
    border-radius: 0 !important;
    padding: var(--space-3) var(--space-4) !important;
    gap: var(--space-3) !important;
    box-shadow: none !important;
    background: transparent !important;
    transition: background-color .15s ease;
}

section.search-result.onlyfrflty .airline-slider-figma .airline-card-figma .airlinesd:hover {
    background: var(--momo-grey-4) !important;
}

section.search-result.onlyfrflty .airline-slider-figma .airline-card-figma .airlinesd:has(input.airline-slider:checked) {
    background: var(--momo-blue-xlight) !important;
}

section.search-result.onlyfrflty .airline-slider-figma .airline-card-figma .airlinesd .imgemtrx {
    margin-bottom: 0 !important;
    flex-shrink: 0;
}

section.search-result.onlyfrflty .airline-slider-figma .airline-card-figma .airlinesd .imgemtrx img {
    width: 30px !important;
    height: 30px !important;
    margin-bottom: 0 !important;
}

section.search-result.onlyfrflty .airline-slider-figma .airline-card-figma .airlinesd .mtrxprice-single {
    width: auto !important;
    flex: 1 1 auto;
    min-width: 0;
}

.alsmtrx.mtrxprice-single strong {
    white-space: normal !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    line-height: 1.25 !important;
    margin-top: 0 !important;
}

section.search-result.onlyfrflty .airline-slider-figma .airline-card-figma .airlinesd .mtrxprice-single .price_Seprator {
    margin-top: 3px;
}

/* ---------------------------------------------------------------------
   Customer dashboard nav (profile_navigator_tab.php)
   -------------------------------------------------------------------*/
/* media.css / media1.css have a leftover rule from the OLD 50px icon-only
   rail nav -- `.customteam2.nav-tabs.customteam li a strong { display:
   none }` inside @media (max-width: 650px) -- that pre-dates the redesigned
   .b2c-dashboard-nav grid (theme_style.css ~15530) but still matches it
   because the redesign reused the same base classes alongside the new one.
   Below 650px this silently deleted every label, leaving icon-only
   buttons with no indication of what they do. Nothing else in the
   codebase uses .customteam2.nav-tabs.customteam without .b2c-dashboard-nav,
   so it's safe to unconditionally restore the label here. */
.b2c-dashboard-nav.customteam2.nav-tabs.customteam li a strong {
    display: block !important;
}

@media (max-width: 650px) {
    .b2c-dashboard-nav.customteam2.nav-tabs.customteam li a {
        padding: 12px 8px !important;
    }

    .b2c-dashboard-nav.customteam2.nav-tabs.customteam li a strong {
        font-size: 11px;
        line-height: 1.2;
    }

    .b2c-dashboard-nav.customteam2.nav-tabs.customteam li a .icon_sml_mob {
        font-size: 18px !important;
    }
}

/* Flight results page — "Airports" filter card (Departing from / Arriving
   at / Connecting in). Its checkboxes were rendering as plain black-border/
   white-box native-looking squares, not matching the brand at all -- traced
   to a completely unscoped, bare theme_style.css rule:
   [type="checkbox"]:not(:checked)+label::before/::after (no class or page
   prefix at all), which styles literally every checkbox+label pair
   site-wide with the same generic look. Scoped to this card's own
   checkbox classes (originairportcheckbox/dstairportcheckbox/
   layovercheckbox -- unique to #originairport/#destinationairport/
   #layovers, so this doesn't touch Preferred Airlines or any other
   .squaredThree checkbox list elsewhere on the page) rather than
   restyling that bare rule itself. */
input.originairportcheckbox:not(:checked)+label::before,
input.originairportcheckbox:checked+label::before,
input.dstairportcheckbox:not(:checked)+label::before,
input.dstairportcheckbox:checked+label::before,
input.layovercheckbox:not(:checked)+label::before,
input.layovercheckbox:checked+label::before {
    background: var(--momo-white) !important;
    border: 1.5px solid var(--momo-grey-2, #ccc) !important;
    border-radius: 4px !important;
    box-shadow: none !important;
}

input.originairportcheckbox:checked+label::before,
input.dstairportcheckbox:checked+label::before,
input.layovercheckbox:checked+label::before {
    background: var(--momo-blue) !important;
    border-color: var(--momo-blue) !important;
}

input.originairportcheckbox:checked+label::after,
input.dstairportcheckbox:checked+label::after,
input.layovercheckbox:checked+label::after {
    background: transparent !important;
    color: var(--momo-white) !important;
}

/* ---------------------------------------------------------------------
   Flight search loading overlay (share/loader/flight_result_pre_loader.php)
   -------------------------------------------------------------------
   Scoped entirely to .flt_pre_ldr -- the class unique to the flight
   search loader -- so none of this touches the hotel/bus/booking-page
   loaders, which reuse the same .fulloading/.result-pre-loader-wrapper/
   .centerload/.sckintload/.progress base classes from theme_style.css.
   Replaces the old flat black overlay + hidden progress bar + Font
   Awesome 5 PRO glyph (never rendered -- this site only loads FA5 Free)
   with an actual visible progress indicator. */
.flt_pre_ldr {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-4);
}

.flt_pre_ldr .loadmask {
    background: rgba(0, 40, 63, 0.6);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

.flt_pre_ldr .centerload {
    min-width: 0;
    max-width: min(420px, 100%);
    width: 100%;
    margin: 0;
    padding: var(--space-6) var(--space-5) var(--space-5);
    border-radius: var(--radius-card-lg);
    box-shadow: 0 24px 60px rgba(0, 20, 32, 0.35);
    font-family: var(--font-family-base);
}

.flt_pre_ldr .load_links {
    position: absolute;
    top: var(--space-4);
    right: var(--space-4);
    z-index: 2;
    display: flex;
    gap: var(--space-2);
}

.flt_pre_ldr .load_links a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: var(--momo-grey-4);
    color: var(--momo-grey-1);
    font-size: var(--fs-caption);
    transition: background 0.15s ease, color 0.15s ease;
}

.flt_pre_ldr .load_links a:hover {
    background: var(--momo-blue-xlight);
    color: var(--momo-blue-dark);
}

.flt-loader-badge {
    position: relative;
    width: 76px;
    height: 76px;
    margin: 0 auto var(--space-4);
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--momo-gradient);
    box-shadow: 0 10px 24px rgba(0, 79, 113, 0.35);
}

.flt-loader-badge .fa-plane {
    color: var(--momo-white);
    font-size: 26px;
    transform: rotate(-15deg);
}

.flt-loader-ring {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px solid var(--momo-blue-light);
    animation: flt-ring-pulse 2.2s ease-out infinite;
}

.flt-loader-ring--delay {
    animation-delay: 1.1s;
}

@keyframes flt-ring-pulse {
    0% {
        transform: scale(1);
        opacity: 0.6;
    }

    100% {
        transform: scale(1.55);
        opacity: 0;
    }
}

.flt-loader-title {
    font-size: var(--fs-h1);
    font-weight: var(--fw-medium);
    color: var(--momo-blue-dark);
    margin: 0 0 6px;
    text-wrap: balance;
}

.flt_pre_ldr .paraload {
    font-size: var(--fs-caption-lg);
    font-weight: var(--fw-regular);
    color: var(--momo-grey-1);
    line-height: 1.5;
    margin: 0 0 var(--space-5);
}

.flt_pre_ldr .progress {
    display: block !important;
    height: 8px !important;
    padding: 0 !important;
    margin: 0 !important;
    border-radius: 999px;
    background: var(--momo-grey-3);
    overflow: hidden;
}

.flt_pre_ldr .progress-bar {
    float: none;
    height: 100%;
    border-radius: 999px;
    background: var(--momo-gradient-dark);
    background-image: linear-gradient(90deg, var(--momo-blue-dark), var(--momo-blue)),
        linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, 0.45) 48%, transparent 66%);
    background-size: 100% 100%, 200% 100%;
    transition: width 0.35s cubic-bezier(0.22, 0.9, 0.35, 1);
    animation: flt-bar-shimmer 1.6s linear infinite;
}

@keyframes flt-bar-shimmer {
    0% {
        background-position: 0 0, -60% 0;
    }

    100% {
        background-position: 0 0, 160% 0;
    }
}

.flt-loader-pct {
    margin-top: 6px;
    font-size: var(--fs-caption);
    font-weight: var(--fw-medium);
    color: var(--momo-blue);
    font-variant-numeric: tabular-nums;
}

.flt_pre_ldr .relativetop {
    margin-top: var(--space-5);
    padding-top: var(--space-5);
    border-top: 1px solid var(--momo-grey-3);
}

.flt_pre_ldr .sckintload {
    background: none;
    border: none;
    border-radius: 0;
    margin: 0;
    overflow: visible;
}

.flt_pre_ldr .sckintload::after {
    content: none;
}

.flt-loader-route {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-3);
    width: fit-content;
    max-width: 100%;
    margin: 0 auto var(--space-4);
    padding: var(--space-2) var(--space-5);
    background: var(--momo-grey-4);
    border-radius: 999px;
}

.flt_pre_ldr .lblbk {
    font-size: 15px;
    font-weight: var(--fw-medium);
    color: var(--momo-blue-dark);
    letter-spacing: 0.3px;
}

.flt-loader-route-icon {
    font-size: 12px;
    color: var(--momo-blue-light);
}

.flt_pre_ldr .tabledates {
    display: flex;
    align-items: flex-start;
    justify-content: center;
    gap: var(--space-6);
    text-align: center;
}

.flt_pre_ldr .tablecelfty {
    float: none;
    width: auto !important;
}

.flt_pre_ldr .tablecelfty:empty,
.flt_pre_ldr .tablecelfty:has(.borddo:empty) {
    display: none;
}

.flt_pre_ldr .fuldate {
    margin: 0;
}

.flt_pre_ldr .bigdate {
    display: block;
    font-size: 20px;
    font-weight: var(--fw-medium);
    color: var(--momo-blue-dark);
    line-height: 1.2;
}

.flt_pre_ldr .biginre {
    font-size: var(--fs-caption);
    font-weight: var(--fw-regular);
    color: var(--momo-grey-1);
}

.flt_pre_ldr .nigthcunt {
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-2);
    margin-top: var(--space-4);
}

.flt_pre_ldr .nigthcunt>span {
    font-size: var(--fs-caption);
    font-weight: var(--fw-medium);
    color: var(--momo-blue);
    background: var(--momo-blue-xlight);
    padding: 4px 12px;
    border-radius: 999px;
}

.flt_pre_ldr .prefered_section {
    font-size: var(--fs-caption);
    color: var(--momo-grey-1);
    background: var(--momo-grey-4);
    padding: 4px 12px;
    border-radius: 999px;
}

@media (max-width: 480px) {
    .flt_pre_ldr .centerload {
        padding: var(--space-5) var(--space-4) var(--space-4);
    }

    .flt_pre_ldr .tabledates {
        gap: var(--space-5);
    }
}

@media (prefers-reduced-motion: reduce) {
    .flt-loader-ring {
        animation: none;
        opacity: 0;
    }

    .flt_pre_ldr .progress-bar {
        animation: none;
    }
}

/* Same "Airports" card -- its white .rangebox background/rounded corners
   only ever covered the "Airports" title and "Departing from" label, with
   the actual checkbox rows spilling out onto the grey page background
   below it. Cause: theme_style.css floats BOTH this list's <h5> section
   labels (.locationul.shw_dat h5) AND its <li> rows (.locationul li) with
   no clearfix anywhere in the chain, so #collapse507/.rangebox never see
   any in-flow content and collapse to just the toggle button's own
   height -- classic collapsing-floats bug, not a sizing/padding issue.
   .shw_dat is unique to this one list (grepped: only used here in the
   active search_result_page.php), so a clearfix on it can't affect
   Preferred Airlines or any other filter list. */
.locationul.shw_dat::after {
    content: "";
    display: table;
    clear: both;
}