/* =================================================================================================
   SITE THEME OVERRIDES
   -------------------------------------------------------------------------------------------------
   Sits on top of the vendor template (style.css, ~11k lines) rather than editing it directly - safer
   to review/revert, and survives if that file is ever swapped for a newer template version. Loaded
   AFTER bootstrap.min.css and style.css in every layout (Master.cshtml / MasterTest.cshtml /
   MasterWithoutLogin.cshtml), so it wins the cascade at equal specificity without needing !important
   everywhere.

   Two things make this override cheap and low-risk instead of a line-by-line rewrite of the vendor
   file:
   1. Fonts: the vendor CSS already reads --body-font-family/--heading-font-family everywhere via
      var(...) instead of hard-coding "Montserrat"/"Oswald" per rule, so redeclaring those two custom
      properties below reflows every heading and paragraph on the site to the new typeface in one go.
   2. Colour: Bootstrap 5.3's own components (.btn-primary, .text-primary, .bg-primary, .border-primary,
      badges, focus rings, ...) are themselves driven by --bs-primary/--bs-primary-rgb custom
      properties, and the vendor CSS's own primary-dependent rules (.btn-primary, .badge, alerts, the
      account dropdown, etc.) do the same. Redeclaring those - plus fixing --bs-primary-bg-subtle/
      --bs-primary-bg-dark, which the vendor :root left as literal copies of --bs-primary instead of a
      real light/dark tint - recolours the whole site from the old bright green (#66cc00, whose own
      --bs-primary-rgb was even left mismatched at "19,66,151", a navy triple) to a single consistent
      blue, without hunting down every individual selector.

   Everything below the variables section is deliberately scoped to generic, ubiquitous building
   blocks (buttons, cards, badges, forms, tables, breadcrumbs, accordions, modals, dropdowns) rather
   than one-off page markup, so the same handful of rules improves every page that already uses these
   standard Bootstrap classes - which is effectively the whole site - without having to touch each
   page individually.
   ================================================================================================= */

@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap");

:root,
[data-bs-theme=light] {
    /* ---- Typography: one clean, modern typeface for both body copy and headings (weight carries
       the hierarchy instead of switching families) - replaces Montserrat body / Oswald headings. */
    --body-font-family: "Inter", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif;
    --heading-font-family: "Inter", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif;
    --bs-body-color: #1f2937;
    --paragraphColor: #5b6b7c;
    --headingColor: #0b1f3a;

    /* ---- Brand colour: blue/navy instead of the old bright green, matching the booking-wizard
       redesign already shipped (which hard-codes this same #0d6efd) and the reference screenshot's
       dashboard look. --bs-primary-rgb, --bs-primary-bg-subtle and --bs-primary-bg-dark are proper
       tints/shades now too, rather than three copies of the same literal colour. */
    --bs-primary: #0d6efd;
    --bs-primary-rgb: 13, 110, 253;
    --bs-primary-bg-subtle: #e8f1ff;
    --bs-primary-bg-dark: #0b5ed7;

    /* ---- Shared spacing/shape/elevation tokens - new, not part of the vendor theme - used by the
       component rules below to keep radius/shadow/border consistent site-wide instead of ad hoc
       per-component values. */
    --radius-sm: 6px;
    --radius-md: 10px;
    --radius-lg: 14px;
    --border-color: #e3e8ef;
    --shadow-xs: 0 1px 2px rgba(15, 32, 58, .05);
    --shadow-sm: 0 1px 3px rgba(15, 32, 58, .07), 0 1px 2px rgba(15, 32, 58, .04);
    --shadow-md: 0 8px 24px rgba(15, 32, 58, .1);
}

/* =================================================================================================
   Base typography
   ================================================================================================= */
html {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* The vendor theme sets body text at 12px, which reads cramped/dated for a data-dense booking flow -
   14px/1.6 is the standard comfortable baseline for this kind of interface (dashboards, checkout
   flows, admin tools). */
body {
    font-size: 14px;
    line-height: 1.6;
    letter-spacing: 0;
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
    font-weight: 700;
    line-height: 1.25;
    letter-spacing: -.01em;
}

h5, h6, .h5, .h6 {
    font-weight: 600;
    letter-spacing: 0;
}

/* .card-header h6 previously inherited an errant "margin: 22px" (all four sides) from the vendor
   theme with nothing to zero out the top/left/right - Bootstrap's .mb-0 utility only ever reset the
   bottom side, so a plain "<h6 class="fw-semibold mb-0">" card title (used throughout the booking
   review flow) rendered visibly offset inside its header. */
.card-header h6 {
    margin: 0;
}

p, .p {
    line-height: 1.7;
}

a {
    transition: color .15s ease;
}

/* A small, uppercase, letter-spaced "eyebrow" label style (STATION / FLIGHT NUMBER / OPERATED BY in
   the reference screenshot) - opt-in via this class rather than forced onto every <label>, since the
   site has plenty of longer-form labels a compact caps treatment would hurt readability on. */
.text-eyebrow {
    display: inline-block;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: #8592a3;
}

::selection {
    background: var(--bs-primary);
    color: #fff;
}

/* Thin, modern scrollbar (WebKit/Blink) instead of the OS-default chunky one, on any element that
   scrolls internally (seat map, dropdown menus, long lists). Firefox gets the standard thin fallback. */
* {
    scrollbar-width: thin;
    scrollbar-color: #c7cfda transparent;
}

*::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

*::-webkit-scrollbar-thumb {
    background: #c7cfda;
    border-radius: 20px;
}

*::-webkit-scrollbar-thumb:hover {
    background: #a7b2c2;
}

/* Consistent, on-brand keyboard focus ring wherever the browser would otherwise draw its own default
   outline - visible for accessibility, without the mismatched blue outline some browsers default to
   now that the brand colour itself is blue. */
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
.form-control:focus-visible,
.form-select:focus-visible {
    outline: 2px solid var(--bs-primary);
    outline-offset: 2px;
}

/* =================================================================================================
   Buttons
   ================================================================================================= */
.btn {
    border-radius: var(--radius-sm);
    font-weight: 600;
    letter-spacing: .01em;
    padding-block: .5rem;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease, transform .05s ease;
}

.btn:active {
    transform: translateY(1px);
}

.btn-primary,
.btn-secondary,
.btn-outline-primary,
.btn-outline-secondary {
    box-shadow: none;
}

.btn.btn-lg {
    border-radius: var(--radius-md);
}

.btn-light-primary {
    background: var(--bs-primary-bg-subtle);
    border-color: var(--bs-primary-bg-subtle);
    color: var(--bs-primary);
}

.btn-outline-secondary {
    border-color: var(--border-color);
    color: #4a5768;
}

.btn:focus,
.btn:active:focus,
.btn-link.nav-link:focus,
.form-control:focus,
.form-check-input:focus {
    box-shadow: 0 0 0 3px rgba(13, 110, 253, .18);
}

/* =================================================================================================
   Cards
   ================================================================================================= */
.card {
    border: 1px solid var(--border-color);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
}

.card-header {
    border-bottom: 1px solid var(--border-color);
    padding: 1rem 1.25rem;
}

.card-body {
    padding: 1.25rem;
}

/* =================================================================================================
   Badges / status pills - the reference screenshot's VALID / Not Checked-in / Boarding pills use a
   soft tint rather than a solid saturated fill, which reads calmer across a screen with a lot of
   them; Bootstrap's own bg-*-subtle/text-*-emphasis utilities already exist for this, this just
   makes the plain .badge.bg-* combinations (already used throughout the site) match that look. */
.badge {
    font-weight: 600;
    letter-spacing: .01em;
    padding: .38em .7em;
    border-radius: 999px;
}

.badge.bg-primary { background-color: var(--bs-primary-bg-subtle) !important; color: var(--bs-primary) !important; }
.badge.bg-success { background-color: var(--bs-success-bg-subtle) !important; color: #146c43 !important; }
.badge.bg-warning { background-color: var(--bs-warning-bg-subtle) !important; color: #997404 !important; }
.badge.bg-danger  { background-color: var(--bs-danger-bg-subtle) !important; color: #b02a1e !important; }
.badge.bg-info    { background-color: var(--bs-info-bg-subtle) !important; color: #055ab8 !important; }
.badge.bg-dark    { background-color: #eceff3 !important; color: #33404f !important; }

/* =================================================================================================
   Forms
   ================================================================================================= */
.form-label {
    font-size: 12.5px;
    font-weight: 600;
    letter-spacing: .01em;
    color: #4a5768;
    margin-bottom: .35rem;
}

.form-control,
.form-select {
    border-color: var(--border-color);
    border-radius: var(--radius-sm);
    padding: .55rem .75rem;
    font-size: 14px;
}

.form-control:focus,
.form-select:focus {
    border-color: var(--bs-primary);
}

.form-check-input:checked {
    background-color: var(--bs-primary);
    border-color: var(--bs-primary);
}

/* =================================================================================================
   Tables - clean, letter-spaced uppercase header like the reference screenshot's data tables
   (Column_name / Type / Length ...), comfortable row padding, subtle dividers instead of heavy
   Bootstrap borders. */
.table {
    --bs-table-border-color: var(--border-color);
}

.table > thead {
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #7a8ba0;
}

.table > :not(caption) > * > * {
    padding: .65rem .85rem;
}

/* =================================================================================================
   Breadcrumbs
   ================================================================================================= */
.breadcrumb {
    font-size: 13px;
    margin-bottom: 0;
}

.breadcrumb-item.active {
    color: #7a8ba0;
    font-weight: 500;
}

/* =================================================================================================
   Accordions
   ================================================================================================= */
.accordion-button {
    font-weight: 600;
    border-radius: var(--radius-sm) !important;
}

.accordion-button:not(.collapsed) {
    background-color: var(--bs-primary);
    color: #fff;
    box-shadow: none;
}

.accordion-button:focus {
    box-shadow: 0 0 0 3px rgba(13, 110, 253, .18);
}

.accordion-item {
    border-radius: var(--radius-md) !important;
}

/* =================================================================================================
   Modals & dropdowns
   ================================================================================================= */
.modal-content {
    border: none;
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-md);
}

.modal-header {
    border-bottom: 1px solid var(--border-color);
}

.modal-footer {
    border-top: 1px solid var(--border-color);
}

.dropdown-menu {
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-md);
    padding: .4rem;
}

.dropdown-item {
    border-radius: var(--radius-sm);
    padding: .5rem .75rem;
    font-size: 14px;
}

.dropdown-item:hover,
.dropdown-item:focus {
    background-color: var(--bs-primary-bg-subtle);
    color: var(--bs-primary);
}

/* =================================================================================================
   Header / navigation - typography and spacing refinement only. The header's own markup (currency
   switcher, language menu, account dropdown, mobile nav toggle) is left structurally untouched since
   it's wired to page-specific JS; this just brings its type/colour in line with the rest of the site.
   ================================================================================================= */
.header {
    box-shadow: var(--shadow-xs);
}

.nav-menu > li > a,
.nav-menu-social > li > a {
    font-weight: 600;
    font-size: 14px;
}

.account-btn {
    border-radius: var(--radius-sm);
    font-size: 14px;
}

.account-dropdown {
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--border-color);
}
