/* ===== css/home.css ===== */
/* ==========================================================================
   Advanced Air — Homepage Sprint 1
   Brand: Deep Blue #0C233F · Slate #313E64 · Sky #97BEE5 · Yellow #FFC74F · Orange #E98A15
   Type: DM Serif Display (hero) · Sora (UI heads/numerals) · Inter (body)
   ========================================================================== */

:root {
  --deep-blue: #0C233F;
  --slate-blue: #313E64;
  --sky-blue: #97BEE5;
  --yellow: #FFC74F;
  --orange: #E98A15;
  --white: #FFFFFF;
  --cloud: #F5F7FA;
  --mist: #E6ECF2;
  --steel: #6B778C;
  --midnight: #0A1423;

  --font-serif: "DM Serif Display", Georgia, serif;
  --font-head: "Sora", "Montserrat", sans-serif;
  --font-body: "Inter", "Roboto", sans-serif;

  --container: 1160px;
  --radius: 18px;
  --radius-sm: 12px;
  --shadow-card: 0 10px 30px rgba(12, 35, 63, 0.10);
  --shadow-card-hover: 0 18px 44px rgba(12, 35, 63, 0.18);
  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.65;
  color: var(--deep-blue);
  background: var(--white);
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: inherit; }
h1, h2, h3, h4 { line-height: 1.15; }
h2, h3, h4 { font-family: var(--font-head); }

.container { width: 100%; max-width: var(--container); margin: 0 auto; padding: 0 24px; }

/* Signature accent bars */
.accent-bar {
  height: 4px;
  background: linear-gradient(90deg, var(--deep-blue) 0%, var(--sky-blue) 55%, var(--orange) 100%);
}
.accent-bar--reverse {
  background: linear-gradient(90deg, var(--orange) 0%, var(--sky-blue) 45%, var(--deep-blue) 100%);
}

/* Wing bar divider */
.wing-bar { display: inline-flex; flex-direction: column; gap: 4px; margin-bottom: 18px; }
.wing-bar span { display: block; height: 3px; border-radius: 2px; background: var(--sky-blue); }
.wing-bar span:nth-child(1) { width: 64px; background: var(--deep-blue); }
.wing-bar span:nth-child(2) { width: 44px; }
.wing-bar span:nth-child(3) { width: 26px; background: var(--yellow); }

/* Eyebrow */
.eyebrow {
  font-family: var(--font-head);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--steel);
}

/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 15px;
  padding: 14px 28px;
  border-radius: 999px;
  border: none;
  cursor: pointer;
  text-decoration: none;
  min-height: 48px;
  transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease), background 0.2s var(--ease);
}
.btn--yellow { background: var(--yellow); color: var(--deep-blue); }
.btn--yellow:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(255, 199, 79, 0.45); }
.btn--ghost { background: transparent; color: var(--white); border: 2px solid rgba(255,255,255,0.55); }
.btn--ghost:hover { border-color: var(--white); background: rgba(255,255,255,0.08); }
.btn--navy { background: var(--deep-blue); color: var(--white); }
.btn--navy:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(12,35,63,0.35); }
.btn:focus-visible, a:focus-visible { outline: 3px solid var(--sky-blue); outline-offset: 3px; }

/* ==========================================================================
   NAV
   ========================================================================== */
.nav {
  position: fixed;
  top: 4px; /* below accent bar */
  left: 0; right: 0;
  z-index: 100;
  transition: background 0.3s var(--ease), box-shadow 0.3s var(--ease);
  background: transparent;
}
.nav.is-scrolled {
  background: rgba(12, 35, 63, 0.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 6px 24px rgba(10, 20, 35, 0.35);
}
.nav__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 14px 24px;
  max-width: 1280px;
  margin: 0 auto;
}
.nav__logo img { height: 34px; width: auto; }
.nav__links { display: flex; align-items: center; gap: 26px; list-style: none; }
.nav__links a {
  font-family: var(--font-head);
  font-size: 14px;
  font-weight: 600;
  color: var(--white);
  text-decoration: none;
  padding: 8px 2px;
  border-bottom: 2px solid transparent;
  transition: border-color 0.2s var(--ease);
}
.nav__links a:hover { border-color: var(--yellow); }
.nav__cta { display: flex; align-items: center; gap: 14px; }
.nav__manage {
  font-family: var(--font-head); font-size: 14px; font-weight: 600;
  color: var(--white); text-decoration: none; opacity: 0.85; padding: 8px 4px;
}
.nav__manage:hover { opacity: 1; }
.nav__book { padding: 11px 22px; font-size: 14px; min-height: 44px; }
.nav__toggle { display: none; background: none; border: none; cursor: pointer; padding: 10px; }
.nav__toggle svg { width: 26px; height: 26px; stroke: var(--white); }

/* ==========================================================================
   HERO
   ========================================================================== */
.hero {
  position: relative;
  min-height: 92svh;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  color: var(--white);
  overflow: hidden;
  padding-top: 110px;
}
.hero__bg {
  position: absolute; inset: 0;
  background-image: url("../assets/img/america250-dornier-sierra.jpg");
  background-size: cover;
  background-position: center 35%;
  animation: heroDrift 26s var(--ease) infinite alternate;
}
@keyframes heroDrift {
  from { transform: scale(1); }
  to { transform: scale(1.06); }
}
.hero__overlay {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(12,35,63,0.55) 0%, rgba(12,35,63,0.25) 38%, rgba(12,35,63,0.72) 100%);
}
.hero__content {
  position: relative;
  z-index: 2;
  padding-bottom: 36px;
}
.hero__eyebrow {
  color: var(--sky-blue);
  letter-spacing: 0.22em;
  font-size: 12.5px;
  margin-bottom: 18px;
}
.hero__title {
  font-family: var(--font-serif);
  font-weight: 400;
  font-size: clamp(46px, 7.4vw, 92px);
  letter-spacing: -0.01em;
  line-height: 1.02;
  max-width: 12ch;
  text-shadow: 0 2px 30px rgba(10, 20, 35, 0.45);
}
.hero__title em { font-style: normal; color: var(--yellow); }
.hero__sub {
  margin-top: 20px;
  font-size: clamp(16px, 1.6vw, 19px);
  max-width: 54ch;
  color: rgba(255,255,255,0.92);
}
.hero__ticker {
  margin-top: 26px;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-family: var(--font-head);
  font-size: 14.5px;
  font-weight: 600;
  background: rgba(10, 20, 35, 0.5);
  border: 1px solid rgba(151, 190, 229, 0.35);
  border-radius: 999px;
  padding: 10px 20px;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  min-height: 44px;
}
.hero__ticker svg { width: 18px; height: 18px; stroke: var(--yellow); flex: none; }
.hero__ticker-text { transition: opacity 0.45s var(--ease); }
.hero__ticker-text.is-fading { opacity: 0; }
.hero__ticker-text strong { color: var(--yellow); font-weight: 700; }

/* Booking card docked at hero bottom */
.booking {
  position: relative;
  z-index: 3;
  margin-top: 38px;
}
.booking__card {
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: 0 24px 60px rgba(10, 20, 35, 0.35);
  padding: 26px 28px 18px;
  color: var(--deep-blue);
}
.booking__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 6px;
  flex-wrap: wrap;
}
.booking__title { font-size: 20px; font-weight: 800; }
.booking__hint { font-size: 13px; color: var(--steel); }
.booking__hint a { color: var(--slate-blue); font-weight: 600; }
.booking .loader {
  font-family: var(--font-head);
  font-size: 13px;
  letter-spacing: 0.14em;
  color: var(--steel);
  padding: 26px 0;
  text-align: center;
}

/* ---- Intelisys widget brand overrides (adapted from booking-engine embed) ---- */
.flight-search-widget { max-width: 100%; margin: 0 !important; }
.ias-search-widget {
  --theme-primary-color: #FFC74F;
  --theme-primary-color-lighter: rgb(236, 59, 86);
  --theme-primary-color-lightest: rgb(238, 195, 201);
  --theme-primary-dark: #0C233F;
  --theme-primary-dark-lighter: #444444;
  --theme-primary-light: rgb(255, 255, 255);
  --theme-secondary-color: rgb(6, 33, 88);
  font-family: var(--font-body) !important;
}
.ias-search-widget.horizontal form {
  grid-template-columns: 1fr 1fr 1fr !important;
  grid-template-areas: "airports trip dates" "pax promocode submit" !important;
}
.ias-search-widget div.swapAirports { align-self: baseline !important; }
.ias-search-widget input { border-radius: 20px !important; }
.ias-search-widget input:required:invalid { border: 2px solid #DC2626; }
.ias-search-widget button.btn-primary {
  background-color: #FFC74F !important;
  border: 0.1rem solid var(--yellow) !important;
  color: #0C233F !important;
  border-radius: 20px !important;
  font-family: var(--font-head) !important;
  font-weight: 700 !important;
  cursor: pointer;
}
.ias-search-widget div.stv-radio-buttons-wrapper { border-radius: 20px !important; }
.ias-search-widget.prestyled .stv-radio-button + label:first-of-type {
  border-radius: 20px 0 0 20px !important;
  color: #313E64 !important;
  font-weight: bold !important;
}
.ias-search-widget.prestyled .stv-radio-button + label:last-of-type {
  border-radius: 0 20px 20px 0 !important;
  color: #313E64 !important;
  font-weight: bold !important;
}
.ias-search-widget .passengerSelection .passengerCount { border-radius: 20px !important; }
.ias-search-widget .calendar .body .cell .lowestPrice { padding-top: 5px !important; }
@media (max-width: 480px) {
  .ias-search-widget .calendar .footer { position: relative !important; bottom: 0 !important; }
  .ias-search-widget .calendar-window h2 { display: none !important; }
}

/* ==========================================================================
   AMERICA250 PROMO BAND
   ========================================================================== */
.promo {
  position: relative;
  background:
    linear-gradient(100deg, rgba(12,35,63,0.96) 0%, rgba(49,62,100,0.94) 58%, rgba(233,138,21,0.32) 100%),
    url("../assets/img/mammoth-sunset.jpg") center 60% / cover no-repeat;
  color: var(--white);
  border-top: 4px solid var(--orange);
  border-bottom: 4px solid var(--orange);
}
.promo__inner {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 34px;
  padding: 44px 24px;
  max-width: var(--container);
  margin: 0 auto;
}
.promo__badge {
  flex: none;
  width: 118px; height: 118px;
  border-radius: 50%;
  background: var(--orange);
  color: var(--white);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-family: var(--font-head);
  font-weight: 800;
  line-height: 1;
  transform: rotate(-8deg);
  box-shadow: 0 12px 30px rgba(233,138,21,0.45);
}
.promo__badge .amt { font-size: 34px; }
.promo__badge .lbl { font-size: 10.5px; letter-spacing: 0.12em; margin-top: 6px; text-transform: uppercase; }
.promo__eyebrow { color: var(--yellow); letter-spacing: 0.2em; font-size: 12px; margin-bottom: 8px; }
.promo__title {
  font-family: var(--font-serif);
  font-weight: 400;
  font-size: clamp(24px, 3.2vw, 38px);
  line-height: 1.12;
  max-width: 26ch;
}
.promo__meta {
  margin-top: 12px;
  font-size: 14.5px;
  color: rgba(255,255,255,0.85);
  display: flex;
  flex-wrap: wrap;
  gap: 8px 22px;
}
.promo__meta code {
  font-family: var(--font-head);
  font-weight: 700;
  background: rgba(255,255,255,0.14);
  border: 1px dashed rgba(255,255,255,0.5);
  border-radius: 6px;
  padding: 1px 9px;
  letter-spacing: 0.06em;
}
.promo__cta { text-align: center; }
.promo__cta .fine { display: block; margin-top: 10px; font-size: 12px; color: rgba(255,255,255,0.65); }

/* ==========================================================================
   ROUTE SHELF
   ========================================================================== */
.routes { padding: 96px 0 84px; background: var(--white); }
.section-head { max-width: 640px; margin-bottom: 46px; }
.section-head h2 {
  font-family: var(--font-serif);
  font-weight: 400;
  font-size: clamp(32px, 4.2vw, 48px);
  letter-spacing: -0.01em;
  margin-top: 10px;
}
.section-head p { margin-top: 14px; color: var(--steel); font-size: 17px; }

.routes__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 22px;
}
.route-card {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--white);
  border: 1px solid var(--mist);
  border-radius: var(--radius);
  overflow: hidden;
  text-decoration: none;
  box-shadow: var(--shadow-card);
  transition: transform 0.22s var(--ease), box-shadow 0.22s var(--ease);
}
.route-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-card-hover); }
.route-card__img { position: relative; aspect-ratio: 4 / 3; overflow: hidden; }
.route-card__img img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 0.4s var(--ease);
}
.route-card:hover .route-card__img img { transform: scale(1.04); }
.route-card__tag {
  position: absolute; bottom: 12px; left: 12px;
  background: var(--orange); color: var(--white);
  font-family: var(--font-head); font-size: 11px; font-weight: 700;
  letter-spacing: 0.08em; text-transform: uppercase;
  border-radius: 999px; padding: 5px 12px;
  box-shadow: 0 4px 14px rgba(233,138,21,0.5);
}
.route-card__season {
  position: absolute; top: 12px; right: 12px;
  background: rgba(12,35,63,0.75); color: var(--sky-blue);
  font-family: var(--font-head); font-size: 10.5px; font-weight: 700;
  letter-spacing: 0.1em; text-transform: uppercase;
  border-radius: 999px; padding: 5px 11px;
  backdrop-filter: blur(4px);
}
.route-card__body { padding: 18px 18px 16px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.route-card__name {
  font-family: var(--font-head);
  font-size: 17px; font-weight: 800; color: var(--deep-blue);
}
.route-card__pair {
  display: flex; align-items: center; gap: 8px;
  font-family: var(--font-head); font-size: 13px; font-weight: 600;
  color: var(--slate-blue);
}
.route-card__pair svg { width: 15px; height: 15px; stroke: var(--sky-blue); flex: none; }
.route-card__math {
  margin-top: auto;
  display: flex; align-items: center; gap: 10px;
  border-top: 1px dashed var(--mist);
  padding-top: 12px;
  font-size: 12.5px; color: var(--steel);
}
.route-card__math .fly {
  font-family: var(--font-head); font-weight: 800; font-size: 14px; color: var(--deep-blue);
}
.route-card__math .vs {
  font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--steel);
}
.route-card__math .drive { text-decoration: line-through; text-decoration-color: var(--orange); }

/* ==========================================================================
   THE MATH BAND
   ========================================================================== */
.math-band {
  background: linear-gradient(115deg, var(--deep-blue) 0%, var(--slate-blue) 62%, #4A5B8C 100%);
  color: var(--white);
  padding: 78px 0;
  position: relative;
  overflow: hidden;
}
.math-band::after {
  content: "";
  position: absolute;
  right: -80px; top: -80px;
  width: 380px; height: 380px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(151,190,229,0.22), transparent 65%);
}
.math-band__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 30px;
  text-align: center;
}
.stat__num {
  font-family: var(--font-head);
  font-size: clamp(38px, 5vw, 58px);
  font-weight: 800;
  color: var(--white);
  font-variant-numeric: tabular-nums;
}
.stat__num .unit { font-size: 0.5em; font-weight: 700; color: var(--sky-blue); margin-left: 2px; }
.stat__label { margin-top: 6px; font-size: 14px; color: rgba(255,255,255,0.75); }

/* ==========================================================================
   ALTITUDE MAGAZINE
   ========================================================================== */
.altitude { background: var(--cloud); padding: 100px 0; }
.altitude__grid {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: 64px;
  align-items: center;
}
.altitude__coverwrap { position: relative; display: flex; justify-content: center; }
.altitude__coverwrap::before {
  content: "";
  position: absolute;
  inset: 8% -6% -6% 10%;
  background: var(--sky-blue);
  opacity: 0.35;
  border-radius: var(--radius);
  transform: rotate(3deg);
}
.altitude__cover {
  position: relative;
  width: min(360px, 82%);
  border-radius: 10px;
  transform: rotate(-2.5deg);
  box-shadow: 0 30px 60px rgba(12,35,63,0.3);
  transition: transform 0.3s var(--ease);
}
.altitude__cover:hover { transform: rotate(-1deg) scale(1.015); }
.altitude__stories { margin-top: 30px; display: flex; flex-direction: column; }
.story-row {
  display: flex; align-items: baseline; gap: 16px;
  padding: 16px 4px;
  border-bottom: 1px solid var(--mist);
  text-decoration: none;
  transition: background 0.2s var(--ease), padding-left 0.25s var(--ease);
}
.story-row:hover { background: var(--white); padding-left: 12px; }
.story-row__num {
  font-family: var(--font-head); font-size: 12px; font-weight: 700;
  color: var(--orange); flex: none; letter-spacing: 0.08em;
}
.story-row__title { font-family: var(--font-head); font-weight: 700; font-size: 16.5px; color: var(--deep-blue); }
.story-row__dest { margin-left: auto; font-size: 13px; color: var(--steel); flex: none; }
.altitude__cta { margin-top: 30px; }

/* ==========================================================================
   WHY SMALL
   ========================================================================== */
.why { padding: 100px 0; background: var(--white); }
.why__grid {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: 64px;
  align-items: center;
}
.why__items { margin-top: 38px; display: flex; flex-direction: column; gap: 30px; }
.why-item { display: flex; gap: 18px; }
.why-item__icon {
  flex: none;
  width: 52px; height: 52px;
  border-radius: 14px;
  background: var(--cloud);
  border: 1px solid var(--mist);
  display: flex; align-items: center; justify-content: center;
}
.why-item__icon svg { width: 24px; height: 24px; stroke: var(--deep-blue); }
.why-item h3 { font-size: 17px; font-weight: 800; }
.why-item p { margin-top: 4px; color: var(--steel); font-size: 15px; }
.why__photo {
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-card-hover);
}
.why__photo img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4/4.6; }

/* ==========================================================================
   FLEET STRIP
   ========================================================================== */
.fleet { background: var(--cloud); padding: 84px 0; }
.fleet__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.fleet-card {
  background: var(--white);
  border-radius: var(--radius);
  overflow: hidden;
  border: 1px solid var(--mist);
  box-shadow: var(--shadow-card);
  transition: transform 0.22s var(--ease), box-shadow 0.22s var(--ease);
}
.fleet-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-card-hover); }
.fleet-card img { aspect-ratio: 16/9; object-fit: cover; width: 100%; }
.fleet-card__body { padding: 18px 20px 20px; }
.fleet-card h3 { font-size: 16.5px; font-weight: 800; }
.fleet-card p { margin-top: 4px; font-size: 14px; color: var(--steel); }

/* ==========================================================================
   CHARTER BAND
   ========================================================================== */
.charter {
  position: relative;
  background: url("../assets/img/advanced-air-charter-king-air-yosemite.jpg") center 45% / cover no-repeat;
  color: var(--white);
}
.charter__overlay { position: absolute; inset: 0; background: rgba(12,35,63,0.68); }
.charter__inner {
  position: relative;
  padding: 90px 24px;
  max-width: var(--container);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 40px;
  flex-wrap: wrap;
}
.charter h2 { font-family: var(--font-serif); font-weight: 400; font-size: clamp(28px, 3.4vw, 40px); }
.charter p { margin-top: 10px; max-width: 52ch; color: rgba(255,255,255,0.85); }

/* ==========================================================================
   NEWSLETTER
   ========================================================================== */
.newsletter { padding: 96px 0; background: var(--white); text-align: center; }
.newsletter h2 { font-family: var(--font-serif); font-weight: 400; font-size: clamp(30px, 3.6vw, 42px); }
.newsletter p { margin-top: 12px; color: var(--steel); }
.newsletter__form {
  margin: 30px auto 0;
  display: flex;
  gap: 12px;
  max-width: 460px;
}
.newsletter__form input {
  flex: 1;
  min-height: 50px;
  border: 1.5px solid var(--mist);
  border-radius: 999px;
  padding: 0 22px;
  font-family: var(--font-body);
  font-size: 15px;
  color: var(--deep-blue);
}
.newsletter__form input:focus { outline: 3px solid var(--sky-blue); outline-offset: 1px; border-color: var(--sky-blue); }
.newsletter__note { margin-top: 14px; font-size: 12.5px; color: var(--steel); }

/* ==========================================================================
   FOOTER
   ========================================================================== */
.footer { background: var(--deep-blue); color: rgba(255,255,255,0.8); padding: 70px 0 36px; }
.footer__grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap: 40px;
}
.footer__brand img { height: 38px; width: auto; margin-bottom: 18px; }
.footer__brand p { font-size: 14px; max-width: 34ch; }
.footer h4 {
  color: var(--white); font-size: 13px; font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 16px;
}
.footer ul { list-style: none; display: flex; flex-direction: column; gap: 10px; }
.footer ul a { font-size: 14px; text-decoration: none; opacity: 0.85; }
.footer ul a:hover { opacity: 1; color: var(--yellow); }
.footer__bottom {
  margin-top: 54px;
  padding-top: 24px;
  border-top: 1px solid rgba(255,255,255,0.14);
  display: flex;
  justify-content: space-between;
  gap: 18px;
  flex-wrap: wrap;
  font-size: 12.5px;
  opacity: 0.7;
}
.footer__certs { display: flex; gap: 18px; flex-wrap: wrap; font-family: var(--font-head); font-size: 11.5px; letter-spacing: 0.1em; text-transform: uppercase; }

/* ==========================================================================
   SCROLL REVEAL
   ========================================================================== */
.reveal { opacity: 0; transform: translateY(22px); transition: opacity 0.65s var(--ease), transform 0.65s var(--ease); }
.reveal.is-visible { opacity: 1; transform: none; }
.reveal[data-delay="1"] { transition-delay: 0.08s; }
.reveal[data-delay="2"] { transition-delay: 0.16s; }
.reveal[data-delay="3"] { transition-delay: 0.24s; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .hero__bg { animation: none; }
  .reveal { opacity: 1; transform: none; transition: none; }
  * { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
@media (max-width: 1024px) {
  .routes__grid { grid-template-columns: repeat(2, 1fr); }
  .math-band__grid { grid-template-columns: repeat(2, 1fr); gap: 40px; }
  .altitude__grid, .why__grid { grid-template-columns: 1fr; gap: 44px; }
  .footer__grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 860px) {
  .nav__links, .nav__manage { display: none; }
  .nav__toggle { display: block; }
  .nav.is-open { background: rgba(12,35,63,0.97); }
  .nav.is-open .nav__inner { flex-wrap: wrap; }
  .nav.is-open .nav__links {
    display: flex; flex-direction: column; align-items: flex-start;
    width: 100%; order: 3; gap: 4px; padding: 10px 0 16px;
  }
  .nav.is-open .nav__links a { padding: 10px 2px; width: 100%; }
  .promo__inner { grid-template-columns: 1fr; text-align: center; gap: 24px; }
  .promo__badge { margin: 0 auto; }
  .promo__meta { justify-content: center; }
}

@media (max-width: 640px) {
  .hero { min-height: 100svh; }
  .booking__card { padding: 20px 16px 12px; }
  .routes__grid {
    grid-template-columns: none;
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    gap: 16px;
    padding-bottom: 12px;
    margin: 0 -24px;
    padding-left: 24px;
    padding-right: 24px;
    -webkit-overflow-scrolling: touch;
  }
  .route-card { flex: 0 0 78%; scroll-snap-align: start; }
  .newsletter__form { flex-direction: column; }
  .footer__grid { grid-template-columns: 1fr; }
  .charter__inner { padding: 70px 24px; }
}

/* ===== css/v2.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V2
   Regatta-style hero: top-down Sierra, scroll-driven Dornier flyover
   Loads after home.css; only V2-specific layers live here.
   ========================================================================== */

/* ---------- V2 nav: links left · logo center · actions right ---------- */
.nav--v2 .nav__inner {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
}
.nav--v2 .nav__links { justify-self: start; }
.nav--v2 .nav__logo { justify-self: center; }
.nav--v2 .nav__cta { justify-self: end; }

/* ---------- Scroll stage ---------- */
.v2-stage {
  position: relative;
  height: 300vh; /* scroll runway for the flyover */
}
.v2-hero {
  position: sticky;
  top: 0;
  height: 100svh;
  overflow: hidden;
  color: var(--white);
}
.v2-hero__bg {
  position: absolute;
  inset: -4%;
  background: url("../assets/img/advanced-air-eastern-sierra-aerial-hero.webp") center / cover no-repeat;
  transform: scale(1.14);
  will-change: transform;
}
.v2-hero__overlay {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(12,35,63,0.42) 0%, rgba(12,35,63,0.10) 30%, rgba(12,35,63,0.16) 70%, rgba(12,35,63,0.55) 100%);
}

/* Dashed flight path (SVG) */
.v2-hero__path {
  position: absolute;
  left: 50%; top: 54%;
  width: 96vw; max-width: 1500px;
  transform: translate(-50%, -50%);
  opacity: 0.5;
  pointer-events: none;
}
.v2-hero__path path {
  fill: none;
  stroke: rgba(255,255,255,0.65);
  stroke-width: 1.5;
  stroke-dasharray: 3 9;
  stroke-linecap: round;
}

/* ---------- Headline stack ---------- */
.v2-hero__content {
  position: relative;
  z-index: 2;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 0 24px;
}
.v2-title {
  font-family: var(--font-head);
  font-weight: 400;
  font-size: clamp(40px, 6.6vw, 104px);
  line-height: 1.08;
  letter-spacing: -0.015em;
  text-shadow: 0 2px 40px rgba(10, 20, 35, 0.5);
  will-change: opacity, transform;
}
.v2-title em {
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  letter-spacing: 0;
}

/* ---------- The plane ---------- */
.v2-plane {
  position: absolute;
  left: 50%; top: 52%;
  width: clamp(280px, 34vw, 520px);
  height: auto;
  z-index: 3;
  transform: translate(-50%, -50%) translate(9vw, 0) rotate(-3deg);
  filter: drop-shadow(38px 54px 28px rgba(6, 15, 28, 0.5));
  will-change: transform;
  pointer-events: none;
}

/* ---------- Side meta ---------- */
.v2-meta {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 4;
  display: flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-head);
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: rgba(255,255,255,0.92);
  text-shadow: 0 1px 12px rgba(10,20,35,0.6);
}
.v2-meta svg { width: 17px; height: 17px; stroke: rgba(255,255,255,0.9); flex: none; }
.v2-meta--left { left: clamp(20px, 4vw, 70px); }
.v2-meta--right { right: clamp(20px, 4vw, 70px); }

/* ---------- Bottom CTA + scroll hint ---------- */
.v2-hero__cta {
  position: absolute;
  bottom: 42px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}
.btn--white {
  background: var(--white);
  color: var(--deep-blue);
  box-shadow: 0 14px 38px rgba(6, 15, 28, 0.35);
}
.btn--white:hover { transform: translateY(-2px); box-shadow: 0 18px 44px rgba(6, 15, 28, 0.45); }
.v2-scroll-hint {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-head);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.75);
}
.v2-scroll-hint svg {
  width: 14px; height: 14px; stroke: rgba(255,255,255,0.75);
  animation: v2hint 1.8s ease-in-out infinite;
}
@keyframes v2hint {
  0%, 100% { transform: translateY(0); opacity: 0.7; }
  50% { transform: translateY(5px); opacity: 1; }
}

/* ---------- Booking section (post-hero) ---------- */
.v2-booking {
  position: relative;
  background: linear-gradient(160deg, var(--deep-blue) 0%, var(--slate-blue) 100%);
  color: var(--white);
  padding: 110px 0 120px;
  overflow: hidden;
}
.v2-booking::before {
  content: "";
  position: absolute;
  left: -140px; bottom: -140px;
  width: 460px; height: 460px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(151,190,229,0.16), transparent 65%);
}
.v2-booking .section-head { color: var(--white); }
.v2-booking .section-head h2 { color: var(--white); }
.v2-booking .section-head p { color: rgba(255,255,255,0.75); }
.v2-booking .eyebrow { color: var(--sky-blue); }
.v2-booking .booking { margin-top: 0; }
.v2-booking .booking__card { box-shadow: 0 30px 70px rgba(6, 15, 28, 0.5); }

/* ---------- Reduced motion / no-JS: freeze the scene ---------- */
@media (prefers-reduced-motion: reduce) {
  .v2-stage { height: auto; }
  .v2-hero { position: relative; }
  .v2-hero__bg { transform: none; }
  .v2-scroll-hint svg { animation: none; }
}

/* ---------- Responsive ---------- */
@media (max-width: 860px) {
  .v2-stage { height: 240vh; }
  .v2-meta { display: none; }
  .v2-plane { width: clamp(220px, 62vw, 340px); filter: drop-shadow(20px 30px 18px rgba(6,15,28,0.5)); }
  .v2-title { font-size: clamp(34px, 10vw, 54px); }
}

/* ===== css/v3.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V3
   Cabin-window routes: pinned horizontal scroller of porthole HUD windows.
   Loads after home.css + v2.css.
   ========================================================================== */

/* ---------- Stage & cabin ---------- */
.cabin-stage { position: relative; }
.cabin {
  position: sticky;
  top: 0;
  height: 100svh;
  overflow: hidden;
  background:
    radial-gradient(120% 90% at 50% 40%, #101d31 0%, #0A1423 55%, #050a12 100%);
  color: var(--white);
}
.cabin::after { /* vignette */
  content: "";
  position: absolute; inset: 0;
  background: radial-gradient(85% 70% at 50% 48%, transparent 55%, rgba(0,0,0,0.55) 100%);
  pointer-events: none;
}

.cabin__head {
  position: absolute;
  top: clamp(28px, 6vh, 64px);
  left: 0; right: 0;
  text-align: center;
  z-index: 5;
}
.cabin__head .eyebrow { color: var(--sky-blue); }
.cabin__head h2 {
  font-family: var(--font-serif);
  font-weight: 400;
  font-size: clamp(28px, 3.6vw, 44px);
  margin-top: 8px;
}

/* ---------- Track ---------- */
.cabin__track {
  position: absolute;
  top: 54%;
  left: 50%;
  display: flex;
  align-items: center;
  gap: clamp(40px, 6vw, 110px);
  transform: translate(0, -50%);
  will-change: transform;
}

/* ---------- Porthole window ---------- */
.pwin {
  position: relative;
  flex: none;
  width: min(440px, 84vw);
  transition: opacity 0.3s var(--ease);
}
.pwin__frame {
  position: relative;
  aspect-ratio: 3 / 4;
  border-radius: clamp(70px, 9vw, 110px);
  background: #060b13;
  padding: clamp(14px, 1.6vw, 20px);
  box-shadow:
    0 40px 90px rgba(0, 0, 0, 0.6),
    inset 0 1px 0 rgba(255,255,255,0.07),
    inset 0 -2px 6px rgba(0,0,0,0.8);
}
.pwin__glass {
  position: relative;
  width: 100%; height: 100%;
  border-radius: clamp(58px, 7.6vw, 92px);
  overflow: hidden;
  isolation: isolate;
  box-shadow:
    inset 0 0 0 1px rgba(151,190,229,0.22),
    inset 0 0 60px rgba(4, 10, 18, 0.55);
}
.pwin__glass > img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: -2;
  transform: scale(1.06);
  will-change: transform;
}
.pwin__tint {
  position: absolute; inset: 0;
  z-index: -1;
  background:
    linear-gradient(180deg, rgba(12,35,63,0.62) 0%, rgba(12,35,63,0.18) 45%, rgba(10,20,35,0.66) 100%);
}
.pwin__glass::after { /* glass reflection */
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(115deg, rgba(255,255,255,0.10) 0%, transparent 22%, transparent 78%, rgba(255,255,255,0.05) 100%);
  pointer-events: none;
}

/* ---------- HUD ---------- */
.pwin__hud {
  position: relative;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: clamp(26px, 3.4vw, 40px) clamp(24px, 3vw, 36px);
  font-family: var(--font-head);
}
.hud-rule {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid rgba(255,255,255,0.35);
  padding-bottom: 7px;
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.75);
}
.hud-ticks {
  display: block;
  width: 100%;
  height: 10px;
  margin-bottom: 8px;
  background-image: repeating-linear-gradient(90deg, rgba(255,255,255,0.5) 0 1px, transparent 1px 14px);
  background-size: 100% 5px;
  background-repeat: no-repeat;
  background-position: bottom;
  position: relative;
}
.hud-ticks::after {
  content: "▴";
  position: absolute;
  left: 50%; top: -7px;
  transform: translateX(-50%);
  font-size: 8px;
  color: var(--yellow);
}
.pwin__toprow {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-top: 12px;
}
.pwin__clock {
  font-size: clamp(30px, 3.4vw, 40px);
  font-weight: 800;
  letter-spacing: 0.01em;
  color: #F3F7E9;
  text-shadow: 1.5px 0 0 rgba(151,190,229,0.55), -1.5px 0 0 rgba(255,199,79,0.45);
}
.pwin__clock .unit { font-size: 0.38em; font-weight: 700; color: var(--sky-blue); margin-left: 4px; letter-spacing: 0.14em; }
.pwin__nickname {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--yellow);
  text-align: right;
}

.pwin__center { margin-top: auto; margin-bottom: auto; padding: 18px 0; }
.pwin__name {
  font-size: clamp(34px, 4vw, 50px);
  font-weight: 800;
  line-height: 1.02;
  letter-spacing: -0.015em;
  color: #F3F7E9;
  text-shadow: 2px 0 0 rgba(151,190,229,0.5), -2px 0 0 rgba(255,199,79,0.4);
}
.pwin__region {
  display: inline-block;
  vertical-align: middle;
  margin-left: 10px;
  padding: 3px 8px;
  background: rgba(243,247,233,0.85);
  color: var(--deep-blue);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.pwin__codes {
  margin-top: 10px;
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  color: rgba(255,255,255,0.88);
}

.pwin__data { border-top: 1px solid rgba(255,255,255,0.35); padding-top: 12px; }
.pwin__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 7px 24px;
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.pwin__grid > div { display: flex; justify-content: space-between; gap: 12px; }
.pwin__grid dt { color: rgba(255,255,255,0.55); font-weight: 600; }
.pwin__grid dd { color: #F3F7E9; font-weight: 700; }
.pwin__grid dd.hl { background: rgba(255,199,79,0.9); color: var(--deep-blue); padding: 0 6px; }

.pwin__links {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  margin-top: 16px;
}
.pwin__links a {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #F3F7E9;
  text-decoration: none;
  padding: 9px 0;
  border-bottom: 1px dashed rgba(255,255,255,0.4);
  transition: color 0.2s var(--ease), border-color 0.2s var(--ease);
}
.pwin__links a:hover { color: var(--yellow); border-color: var(--yellow); }
.pwin__links svg { width: 13px; height: 13px; stroke: currentColor; flex: none; }

/* Non-active windows recede into the cabin */
.pwin[data-active="false"] { opacity: 0.38; }
.pwin[data-active="false"] .pwin__frame { box-shadow: 0 24px 60px rgba(0,0,0,0.5); }

/* ---------- Progress UI ---------- */
.cabin__progress {
  position: absolute;
  bottom: clamp(22px, 5vh, 52px);
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  width: min(420px, 78vw);
  text-align: center;
}
.cabin__progress-label {
  font-family: var(--font-head);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.8);
  display: flex;
  justify-content: space-between;
  gap: 16px;
}
.cabin__progress-label .num { color: var(--yellow); font-variant-numeric: tabular-nums; }
.cabin__bar {
  margin-top: 10px;
  height: 2px;
  background: rgba(255,255,255,0.18);
  border-radius: 2px;
  overflow: hidden;
}
.cabin__bar span {
  display: block;
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, var(--sky-blue), var(--yellow));
  will-change: width;
}

/* ---------- Reduced motion / small screens: free horizontal snap ---------- */
@media (prefers-reduced-motion: reduce) {
  .cabin-stage { height: auto !important; }
  .cabin { position: relative; height: auto; padding: 90px 0 70px; }
  .cabin__head { position: static; margin-bottom: 40px; }
  .cabin__track {
    position: static;
    transform: none !important;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    padding: 0 24px 30px;
  }
  .pwin { scroll-snap-align: center; opacity: 1 !important; }
  .cabin__progress { display: none; }
}

/* ===== css/v4.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V4
   Hero tweaks over v2.css: plane starts further right on desktop;
   on mobile the plane is nose-up, larger (cropped ok), and flies upward.
   ========================================================================== */

/* Desktop: start position shifted right (JS animates from here) */
.v2-plane {
  transform: translate(-50%, -50%) translate(22vw, 0) rotate(-3deg);
}

/* Mobile: bigger, nose-up, riding low so the headline stays readable */
@media (max-width: 860px) {
  .v2-plane {
    width: min(120vw, 560px);
    max-width: none;
    transform: translate(-50%, -50%) translate(0, 24vh) rotate(90deg);
    filter: drop-shadow(26px 34px 20px rgba(6, 15, 28, 0.5));
  }
  .nav__book { white-space: nowrap; }
}

/* ===== css/v5.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V5
   Destination-window refinements over v3.css (time ranges are wider than
   single flight times, so the HUD clock and links get tighter sizing).
   ========================================================================== */

.pwin__clock {
  font-size: clamp(24px, 2.4vw, 31px);
  white-space: nowrap;
}
.pwin__nickname { max-width: 40%; }

.pwin__codes { letter-spacing: 0.1em; font-size: 12.5px; }

.pwin__links { gap: 10px; }
.pwin__links a {
  font-size: 10px;
  letter-spacing: 0.14em;
  white-space: nowrap;
}

/* ===== css/v6.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V6
   Fix: the booking widget's airport dropdown was clipped by the booking
   section (overflow: hidden) and overlapped by the promo band below it.
   ========================================================================== */

/* Let the dropdown escape the section… */
.v2-booking { overflow: visible; }
/* …which means the decorative corner glow can't bleed anymore — remove it */
.v2-booking::before { display: none; }

/* Keep the booking layer above everything that follows it */
.v2-booking { position: relative; z-index: 40; }
.v2-booking .booking__card { position: relative; z-index: 41; }
.promo, .cabin-stage, .math-band { position: relative; z-index: 1; }

/* Safety net: no ancestor between the widget and the section may clip */
.v2-booking .container,
.v2-booking .booking,
.v2-booking .booking__card { overflow: visible; }

/* If the widget's own results list renders taller than the viewport,
   let it scroll internally rather than vanish */
.ias-search-widget .airportsList,
.ias-search-widget .autocomplete-list,
.ias-search-widget ul[class*="list"] {
  max-height: min(340px, 48vh);
  overflow-y: auto !important;
  overscroll-behavior: contain;
}

/* ===== css/v7.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V7
   Booking-widget polish: scrollable airport dropdown (container-level),
   and a cleaned-up date calendar (no navy slabs, content-sized panels,
   brand-styled Done button).
   ========================================================================== */

/* ---------- Airport dropdown: the container scrolls, not the list ---------- */
.ias-search-widget .react-autosuggest__suggestions-container--open {
  max-height: min(340px, 48vh);
  overflow-y: auto !important;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  background: #fff;
  border-radius: 14px;
  box-shadow: 0 24px 54px rgba(6, 15, 28, 0.28), 0 0 0 1px #E6ECF2;
}
.ias-search-widget .react-autosuggest__suggestions-list {
  max-height: none !important;
  overflow: visible !important;
}
/* Always-visible scrollbar affordance so it's obviously scrollable */
.ias-search-widget .react-autosuggest__suggestions-container--open::-webkit-scrollbar { width: 8px; }
.ias-search-widget .react-autosuggest__suggestions-container--open::-webkit-scrollbar-track { background: #F5F7FA; }
.ias-search-widget .react-autosuggest__suggestions-container--open::-webkit-scrollbar-thumb { background: #97BEE5; border-radius: 4px; }
.ias-search-widget .react-autosuggest__suggestions-container--open { scrollbar-width: thin; scrollbar-color: #97BEE5 #F5F7FA; }

/* ---------- Date calendar ---------- */
/* Panels size to their content — no phantom 120px of dead white space */
.ias-search-widget .calendar {
  height: auto !important;
  min-height: 0 !important;
  padding-bottom: 6px;
}
/* The two-month window becomes one clean card */
.ias-search-widget .calendar-window {
  background: #fff !important;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 30px 70px rgba(6, 15, 28, 0.35), 0 0 0 1px #E6ECF2;
}
.ias-search-widget .calendar + .calendar { border-left: 1px solid #E6ECF2; }

/* Kill the navy footer slabs; hide the empty one entirely */
.ias-search-widget .calendar .footer {
  background: transparent !important;
  height: auto !important;
  min-height: 0 !important;
  padding: 10px 12px 8px !important;
  color: #0C233F !important;
}
.ias-search-widget .calendar .footer:empty { display: none !important; }

/* Done — brand pill instead of a bare navy block */
.ias-search-widget .calendar--close-button {
  background: #FFC74F !important;
  color: #0C233F !important;
  border: none !important;
  border-radius: 999px !important;
  font-family: "Sora", sans-serif !important;
  font-weight: 700 !important;
  padding: 12px 30px !important;
  min-height: 44px;
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.ias-search-widget .calendar--close-button:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 20px rgba(255, 199, 79, 0.45);
}

/* ===== css/v8.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V8
   Fluid dropdown scrolling: exactly ONE scroller (the suggestions
   container), no nested scroll regions, no smooth-scroll snapping.
   ========================================================================== */

/* Undo v6's inner-list scroller (its attribute selector out-specifies v7) */
.ias-search-widget .react-autosuggest__suggestions-container--open ul[class*="list"],
.ias-search-widget .react-autosuggest__suggestions-container--open .react-autosuggest__suggestions-list {
  max-height: none !important;
  overflow: visible !important;
  overscroll-behavior: auto;
}

/* The one true scroller */
.ias-search-widget .react-autosuggest__suggestions-container--open {
  scroll-behavior: auto !important;   /* instant response — no eased jumps */
  scroll-snap-type: none !important;
  touch-action: pan-y;
}

/* ===== css/v9.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V9
   Calendar "Done" placement: the button lives inside the second month's
   footer, so it lands wherever that month ends. Pin it to the bottom
   center of the whole calendar card instead.
   ========================================================================== */

/* Let the calendar WINDOW be the button's containing block */
.ias-search-widget .calendar { position: static !important; }

/* Reserve a clean action strip along the bottom of the card */
.ias-search-widget .calendar-window { padding-bottom: 78px !important; }

/* The footer no longer spaces anything — collapse it */
.ias-search-widget .calendar .footer {
  padding: 0 !important;
  margin: 0 !important;
}

/* Done: full-width-ish pill, bottom center of the card */
.ias-search-widget .calendar--close-button {
  position: absolute !important;
  left: 50% !important;
  bottom: 16px !important;
  transform: translateX(-50%);
  width: min(360px, calc(100% - 32px));
  box-shadow: 0 -18px 22px -18px rgba(12, 35, 63, 0.25), 0 6px 16px rgba(255, 199, 79, 0.35);
}
.ias-search-widget .calendar--close-button:hover {
  transform: translateX(-50%) translateY(-1px);
}

/* ===== css/v10.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V10
   Cabin windows: the first window opens behind a rising shade; the other
   destinations stay hidden until it's fully up, then swipe in from the right.
   ========================================================================== */

/* ---------- The shade ---------- */
.pwin__shade {
  position: absolute;
  inset: -2px;
  z-index: 6;
  border-radius: inherit;
  background:
    repeating-linear-gradient(180deg, rgba(12, 35, 63, 0.055) 0 2px, transparent 2px 30px),
    linear-gradient(180deg, #F3EEE3 0%, #E9E2D1 55%, #DCD3BF 100%);
  box-shadow: inset 0 -3px 8px rgba(12, 35, 63, 0.18), inset 0 2px 3px rgba(255, 255, 255, 0.6);
  transform: translateY(0);
  will-change: transform;
  pointer-events: none;
}
/* pull handle */
.pwin__shade::after {
  content: "";
  position: absolute;
  bottom: 14px;
  left: 50%;
  transform: translateX(-50%);
  width: 68px;
  height: 15px;
  border-radius: 999px;
  background: rgba(12, 35, 63, 0.16);
  box-shadow: inset 0 1.5px 2.5px rgba(255, 255, 255, 0.55), inset 0 -1px 2px rgba(12, 35, 63, 0.25);
}

/* Non-first windows start with the shade already up */
.pwin:not(.pwin--first) .pwin__shade { transform: translateY(-102%); }

/* Neighbors are JS-driven; give them a sane no-JS default */
.pwin { will-change: opacity, transform; }

/* Reduced motion: no shade theater, everything visible and swipeable */
@media (prefers-reduced-motion: reduce) {
  .pwin__shade { display: none; }
}

/* ===== css/v11.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V11
   Tighten the gap between "The view from seat 4A." and the window.
   Height-gated so short laptop viewports keep breathing room.
   ========================================================================== */

@media (min-height: 850px) and (max-height: 949px) {
  .cabin__track { top: calc(54% - 26px); }
}
@media (min-height: 950px) {
  .cabin__head { top: clamp(30px, 7vh, 78px); }   /* heading eases down a touch */
  .cabin__track { top: calc(54% - 52px); }         /* window rises to meet it */
}

/* ===== css/v13.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V13
   Booking engine reskinned in the aero.com idiom: flat monochrome sheet,
   square corners, hairline field cells, uppercase micro-labels, text-tab
   trip toggle, solid dark search bar. Brand navy stands in for Aero black.
   ========================================================================== */

/* ---------- The sheet ---------- */
.v2-booking .booking__card {
  border-radius: 2px;
  padding: 34px 36px 30px;
  box-shadow: 0 30px 80px rgba(4, 10, 18, 0.45);
}
.v2-booking .booking__title {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: #6B778C;
}
.v2-booking .booking__hint { font-size: 12px; }

/* ---------- Micro-labels above each field ---------- */
.ias-search-widget label.primary--label,
.ias-search-widget label.secondary--label {
  display: block;
  font-family: "Sora", sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: #6B778C;
  margin: 0 0 7px 1px;
}

/* ---------- Fields: square hairline cells ---------- */
.ias-search-widget input,
.ias-search-widget input.form-control {
  border-radius: 0 !important;
  border: 1px solid #DDE3EB !important;
  background: #FFFFFF;
  min-height: 54px;
  padding: 0 16px;
  font-family: "Inter", sans-serif;
  font-size: 15px;
  color: #0C233F;
  box-shadow: none !important;
  transition: border-color 0.15s ease;
}
.ias-search-widget input:focus,
.ias-search-widget input.form-control:focus {
  border-color: #0C233F !important;
  outline: none !important;
}
.ias-search-widget input::placeholder { color: #97A1B2; }
.ias-search-widget input:required:invalid { border: 1px solid #DC2626 !important; }

/* ---------- Trip type: aero text tabs, not pills ---------- */
.ias-search-widget div.stv-radio-buttons-wrapper {
  border-radius: 0 !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  display: inline-flex;
  gap: 28px;
}
.ias-search-widget.prestyled .stv-radio-button + label,
.ias-search-widget.prestyled .stv-radio-button + label:first-of-type,
.ias-search-widget.prestyled .stv-radio-button + label:last-of-type {
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  color: #97A1B2 !important;
  font-family: "Sora", sans-serif !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  padding: 17px 2px 15px !important;
  border-bottom: 2px solid transparent !important;
  transition: color 0.15s ease, border-color 0.15s ease;
  cursor: pointer;
}
.ias-search-widget.prestyled .stv-radio-button:checked + label,
.ias-search-widget.prestyled .stv-radio-button:checked + label:first-of-type,
.ias-search-widget.prestyled .stv-radio-button:checked + label:last-of-type {
  color: #0C233F !important;
  border-bottom: 2px solid #0C233F !important;
  background: transparent !important;
}

/* ---------- Passenger cell ---------- */
.ias-search-widget .passengerSelection .passengerCount {
  border-radius: 0 !important;
  border: 1px solid #DDE3EB !important;
  min-height: 54px;
  background: #fff;
  color: #0C233F;
}

/* ---------- Search: solid navy slab ---------- */
.ias-search-widget button.btn-primary {
  background-color: #0C233F !important;
  border: none !important;
  color: #FFFFFF !important;
  border-radius: 0 !important;
  min-height: 54px;
  font-family: "Sora", sans-serif !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  transition: background-color 0.15s ease;
}
.ias-search-widget button.btn-primary:hover { background-color: #0A1423 !important; }

/* ---------- Widget theme: monochrome selection ---------- */
.ias-search-widget {
  --theme-primary-color: #0C233F;
}

/* ---------- Airport dropdown: flat sheet, hairline rows ---------- */
.ias-search-widget .react-autosuggest__suggestions-container--open {
  border-radius: 2px;
  box-shadow: 0 24px 60px rgba(4, 10, 18, 0.28), 0 0 0 1px #DDE3EB;
}
.ias-search-widget .react-autosuggest__suggestions-list li {
  border-bottom: 1px solid #EEF1F5;
}
.ias-search-widget .react-autosuggest__suggestions-list li:last-child { border-bottom: none; }
.ias-search-widget .react-autosuggest__suggestions-list li span,
.ias-search-widget .react-autosuggest__suggestions-list li [class*="code"] {
  border-radius: 2px !important;
}
.ias-search-widget .react-autosuggest__suggestions-container--open::-webkit-scrollbar-thumb { background: #C4CBD6; }
.ias-search-widget .react-autosuggest__suggestions-container--open { scrollbar-color: #C4CBD6 #F5F7FA; }

/* ---------- Calendar: square + navy Done ---------- */
.ias-search-widget .calendar-window {
  border-radius: 2px;
  box-shadow: 0 30px 70px rgba(4, 10, 18, 0.4), 0 0 0 1px #DDE3EB;
}
.ias-search-widget .calendar--close-button {
  background: #0C233F !important;
  color: #FFFFFF !important;
  border-radius: 0 !important;
  font-size: 12px !important;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  box-shadow: none;
}
.ias-search-widget .calendar--close-button:hover {
  background: #0A1423 !important;
  box-shadow: none;
}

/* ===== css/v14.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V14
   Booking engine in the TRUE aero.com style: dark bar, oversized thin
   placeholder type, sentence-case gray labels, borderless cells with
   hairline dividers, and a solid arrow search button.
   Loads after v13.css and overrides its light-sheet skin.
   ========================================================================== */

/* ---------- The bar: midnight, not white ---------- */
.v2-booking .booking__card {
  background: #0A1423;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 12px;
  padding: 26px 30px 30px;
  color: #FFFFFF;
  box-shadow: 0 30px 80px rgba(2, 6, 12, 0.6);
}
.v2-booking .booking__title { color: rgba(255, 255, 255, 0.55); }
.v2-booking .booking__hint { color: rgba(255, 255, 255, 0.45); }
.v2-booking .booking__hint a { color: #97BEE5; }
.v2-booking .booking .loader { color: rgba(255, 255, 255, 0.5); }

/* ---------- Cells: borderless, divided by hairlines ---------- */
.ias-search-widget .fieldset {
  border-bottom: 1px solid rgba(255, 255, 255, 0.10);
  padding: 14px 2px;
}
.ias-search-widget .fieldset.formSubmit,
.ias-search-widget .fieldset.travelQuestion { border-bottom: none; }

/* Sentence-case gray labels (undo v13's uppercase) */
.ias-search-widget label.primary--label,
.ias-search-widget label.secondary--label {
  text-transform: none;
  letter-spacing: 0.02em;
  font-family: "Inter", sans-serif;
  font-size: 13px;
  font-weight: 500;
  color: #7C8698;
  margin: 0 0 2px 1px;
}

/* ---------- Inputs: invisible boxes, display-size type ---------- */
.ias-search-widget input,
.ias-search-widget input.form-control {
  border: none !important;
  background: transparent !important;
  border-radius: 0 !important;
  padding: 0 !important;
  min-height: 46px;
  font-family: "Inter", sans-serif;
  font-size: clamp(24px, 3vw, 34px);
  font-weight: 400;
  color: #FFFFFF;
  caret-color: #FFC74F;
}
.ias-search-widget input:focus,
.ias-search-widget input.form-control:focus {
  border: none !important;
  outline: none !important;
}
.ias-search-widget input::placeholder { color: #5E6879; }
.ias-search-widget input:required:invalid { border: none !important; box-shadow: inset 0 -2px 0 #DC2626; }

/* Date pair slightly smaller so both fit */
.ias-search-widget .dateSelection input { font-size: clamp(19px, 2vw, 24px); }

/* Swap button: dark circle around the icon only */
.ias-search-widget div.swapAirports {
  background: transparent !important;
  border-radius: 0;
}
.ias-search-widget .swapAirports a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  color: rgba(255, 255, 255, 0.75) !important;
  background: rgba(255, 255, 255, 0.07);
  border-radius: 50%;
}

/* Disabled/empty fieldsets (cabin class, currency, etc.) — no ghost rows */
.ias-search-widget .fieldset.cabinClassSelection,
.ias-search-widget .fieldset.currenciesSelection,
.ias-search-widget .fieldset.travelQuestion,
.ias-search-widget .fieldset:empty {
  display: none !important;
  padding: 0 !important;
  border: none !important;
}

/* ---------- Trip type: gray/white with a yellow check ---------- */
.ias-search-widget div.stv-radio-buttons-wrapper { gap: 30px; }
.ias-search-widget.prestyled .stv-radio-button + label,
.ias-search-widget.prestyled .stv-radio-button + label:first-of-type,
.ias-search-widget.prestyled .stv-radio-button + label:last-of-type {
  display: inline-flex !important;
  align-items: center;
  gap: 9px;
  color: #7C8698 !important;
  font-family: "Inter", sans-serif !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  letter-spacing: 0;
  text-transform: none;
  padding: 10px 0 !important;
  border: none !important;
}
.ias-search-widget.prestyled .stv-radio-button + label::before {
  content: "";
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 1.5px solid #5E6879;
  flex: none;
  transition: all 0.15s ease;
}
.ias-search-widget.prestyled .stv-radio-button:checked + label,
.ias-search-widget.prestyled .stv-radio-button:checked + label:first-of-type,
.ias-search-widget.prestyled .stv-radio-button:checked + label:last-of-type {
  color: #FFFFFF !important;
  border: none !important;
  background: transparent !important;
}
.ias-search-widget.prestyled .stv-radio-button:checked + label::before {
  content: "✓";
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 800;
  color: #0C233F;
  background: #FFC74F;
  border-color: #FFC74F;
}

/* ---------- Passengers: big number ---------- */
.ias-search-widget .passengerSelection .passengerCount {
  border: none !important;
  background: transparent !important;
  border-radius: 0 !important;
  color: #FFFFFF;
  font-size: clamp(20px, 2.4vw, 28px);
  font-weight: 400;
  padding-left: 0 !important;
}

/* ---------- Search: solid yellow arrow slab ---------- */
.ias-search-widget button.btn-primary {
  background-color: #FFC74F !important;
  color: #0C233F !important;
  border: none !important;
  border-radius: 14px !important;
  min-height: 64px;
  font-size: 0 !important;      /* hide "SEARCH" text… */
  letter-spacing: 0;
  transition: background-color 0.15s ease, transform 0.15s ease;
}
.ias-search-widget button.btn-primary::after {
  content: "→";                  /* …the arrow IS the button */
  font-size: 30px;
  font-weight: 700;
  color: #0C233F;
  line-height: 1;
}
.ias-search-widget button.btn-primary:hover {
  background-color: #FFD470 !important;
  transform: translateY(-1px);
}

/* Clear-input (⌫) button: quiet on dark */
.ias-search-widget .airportSelection button:not(.btn-primary),
.ias-search-widget [class*="clear"],
.ias-search-widget [class*="Clear"] {
  background: rgba(255, 255, 255, 0.07) !important;
  color: rgba(255, 255, 255, 0.65) !important;
  border: none !important;
  border-radius: 8px !important;
  box-shadow: none !important;
}
.ias-search-widget .airportSelection button:not(.btn-primary) svg,
.ias-search-widget [class*="clear"] svg { stroke: rgba(255,255,255,0.65); fill: rgba(255,255,255,0.65); }

/* ---------- Dropdown: dark panel ---------- */
.ias-search-widget .react-autosuggest__suggestions-container--open {
  background: #0A1423 !important;
  border-radius: 12px !important;
  box-shadow: 0 30px 70px rgba(2, 6, 12, 0.65), 0 0 0 1px rgba(255, 255, 255, 0.1) !important;
}
.ias-search-widget .react-autosuggest__suggestions-list,
.ias-search-widget .react-autosuggest__suggestions-list li {
  background: transparent !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.10);
  color: #FFFFFF !important;
}
.ias-search-widget .react-autosuggest__suggestions-list { border-bottom: none; }
.ias-search-widget .react-autosuggest__suggestions-list li * { color: #FFFFFF !important; background: transparent !important; }
.ias-search-widget .react-autosuggest__suggestions-list li span,
.ias-search-widget .react-autosuggest__suggestions-list li [class*="code"] {
  background: transparent !important;
  color: #7C8698 !important;
  font-weight: 600;
  border-radius: 0 !important;
}
.ias-search-widget .react-autosuggest__suggestion--highlighted,
.ias-search-widget .react-autosuggest__suggestions-list li:hover {
  background: rgba(255, 255, 255, 0.07) !important;
}
.ias-search-widget .react-autosuggest__suggestions-container--open::-webkit-scrollbar-track { background: #0A1423; }
.ias-search-widget .react-autosuggest__suggestions-container--open::-webkit-scrollbar-thumb { background: #3A465A; }
.ias-search-widget .react-autosuggest__suggestions-container--open { scrollbar-color: #3A465A #0A1423; }

/* Calendar stays light for date legibility; keep the navy Done from v13. */

/* ===== css/v15.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V15
   Desktop (horizontal) polish for the dark aero-style booking bar:
   room for airport names, no floating clear-buttons, aligned rows,
   vertical hairline dividers between cells, right-sized search slab.
   ========================================================================== */

/* ---------- Hide the widget's clear (⌫) buttons — they float over text ---------- */
.ias-search-widget .airportSelection button:not(.btn-primary),
.ias-search-widget [class*="clear"],
.ias-search-widget [class*="Clear"] {
  display: none !important;
}

/* ---------- Horizontal layout (viewport > 699px) ---------- */

/* Rebalance the grid: airports need the most room */
.ias-search-widget.horizontal form {
  grid-template-columns: 1.9fr 0.7fr 1fr !important;
  column-gap: 30px;
  row-gap: 4px;
  align-items: stretch;
}

/* Cells: vertical hairlines between columns, no bottom rules */
.ias-search-widget.horizontal .fieldset {
  border-bottom: none;
  border-right: 1px solid rgba(255, 255, 255, 0.10);
  padding: 10px 26px 14px 0;
}
.ias-search-widget.horizontal .fieldset.dateSelection,
.ias-search-widget.horizontal .fieldset.formSubmit {
  border-right: none;
}

/* Airport pair: from | swap | to on one line, names allowed to breathe */
.ias-search-widget.horizontal .airportSelection {
  display: flex;
  align-items: flex-end;
  gap: 12px;
}
.ias-search-widget.horizontal .airportSelection > * { min-width: 0; }
.ias-search-widget.horizontal .airportSelection > div:not(.swapAirports) {
  flex: 1 1 0;
  width: auto !important;
  max-width: none !important;
}
.ias-search-widget.horizontal .airportSelection input {
  width: 100%;
  font-size: 18px !important;
  text-overflow: ellipsis;
}
.ias-search-widget.horizontal div.swapAirports {
  align-self: flex-end !important;
  margin-bottom: 10px;
  flex: none;
}
.ias-search-widget.horizontal .swapAirports a { width: 34px; height: 34px; }

/* Dates: match the airport type size, keep the pair on one baseline */
.ias-search-widget.horizontal .dateSelection input { font-size: 18px !important; }

/* Passengers: same optical size */
.ias-search-widget.horizontal .passengerSelection .passengerCount { font-size: 18px !important; }

/* Promo: quieter than the data fields */
.ias-search-widget.horizontal .promocodeField input { font-size: 17px; }

/* Search slab: right-sized, parked at the bottom of its cell */
.ias-search-widget.horizontal .fieldset.formSubmit {
  display: flex;
  align-items: flex-end;
  padding-bottom: 10px;
}
.ias-search-widget.horizontal button.btn-primary {
  width: 100%;
  min-height: 58px;
  max-height: 58px;
}

/* Uniform label rhythm across both rows */
.ias-search-widget.horizontal label.primary--label,
.ias-search-widget.horizontal label.secondary--label {
  margin-bottom: 10px;
}

/* Inputs share one consistent line-height so baselines align */
.ias-search-widget.horizontal input,
.ias-search-widget.horizontal .passengerCount {
  min-height: 40px;
  line-height: 40px;
}

/* ===== css/v17.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V17
   Booking bar fix pack:
   1  Swap button centered on a real divider between From/To
   2  Hairline between row 1 and row 2
   3  Trip options stacked (no "Trip" label, no cutoff)
   4  Date arrow centered and un-squeezable
   5  Calendar re-colored (navy on white, no leftover reds)
   6  Passenger panel re-colored (was white-on-white)
   7  Search arrow truly centered; passenger Done button un-hijacked
   ========================================================================== */

/* ---------- 1 · Swap control = a circle seated on a divider ---------- */
.ias-search-widget .swapAirports a {
  display: flex !important;
  align-items: center;
  justify-content: center;
  line-height: 1 !important;
  font-size: 17px;
  padding: 0 !important;
  padding-bottom: 2px !important; /* optical centering of the ⇄ glyph */
  background: #131F31;
  border: 1px solid rgba(255, 255, 255, 0.14);
  text-decoration: none;
}

/* Desktop: vertical divider line between From and To, swap pinned to its center */
.ias-search-widget.horizontal .airportSelection { gap: 0; }
.ias-search-widget.horizontal div.swapAirports {
  position: relative;
  align-self: stretch !important;
  width: 58px;
  flex: none;
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ias-search-widget.horizontal div.swapAirports::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 4px;
  bottom: 4px;
  width: 1px;
  background: rgba(255, 255, 255, 0.12);
}
.ias-search-widget.horizontal .swapAirports a { position: relative; z-index: 1; }
.ias-search-widget.horizontal .departureAirport { padding-right: 6px; }
.ias-search-widget.horizontal .arrivalAirport { padding-left: 6px; }

/* Mobile/stacked: horizontal divider between From and To, swap on its center */
.ias-search-widget:not(.horizontal) div.swapAirports {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 44px;
  margin: 2px 0;
  align-self: auto !important;
}
.ias-search-widget:not(.horizontal) div.swapAirports::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 1px;
  background: rgba(255, 255, 255, 0.12);
}
.ias-search-widget:not(.horizontal) .swapAirports a { position: relative; z-index: 1; }

/* ---------- 2 · Hairline between the two rows (desktop) ---------- */
.ias-search-widget.horizontal .fieldset.passengerSelection,
.ias-search-widget.horizontal .fieldset.promocodeField,
.ias-search-widget.horizontal .fieldset.formSubmit {
  border-top: 1px solid rgba(255, 255, 255, 0.10);
  margin-top: 10px;
  padding-top: 18px;
}

/* ---------- 3 · Trip: stacked switcher, no section label ---------- */
.ias-search-widget .tripTypeSelection > label.primary--label { display: none; }
.ias-search-widget div.stv-radio-buttons-wrapper {
  display: flex !important;
  flex-direction: column;
  gap: 6px;
  align-items: flex-start;
}
.ias-search-widget.prestyled .stv-radio-button + label,
.ias-search-widget.prestyled .stv-radio-button + label:first-of-type,
.ias-search-widget.prestyled .stv-radio-button + label:last-of-type {
  white-space: nowrap;
  padding: 6px 0 !important;
  width: auto !important;
  max-width: none !important;
  overflow: visible !important;
}
.ias-search-widget.horizontal .fieldset.tripTypeSelection {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

/* ---------- 4 · Dates: arrow centered, never squeezed ---------- */
.ias-search-widget .dateRangeControls {
  display: flex !important;
  align-items: center;
  gap: 10px;
}
.ias-search-widget .dateRangeControls .dateInputControl {
  flex: 1 1 0;
  min-width: 0;
  display: block;
}
.ias-search-widget .dateRangeControls .dateIcon {
  flex: none !important;
  width: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #7C8698 !important;
}
.ias-search-widget .dateRangeControls .dateIcon svg { display: block; }

/* ---------- 5 · Calendar: legible light panel, brand selection ---------- */
/* Kill the leftover red/pink theme vars from the original embed */
.ias-search-widget {
  --theme-primary-color-lighter: #35507A;
  --theme-primary-color-lightest: #E6ECF2;
}
.ias-search-widget .calendar-window,
.ias-search-widget .calendar-window * { color: #0C233F; }
.ias-search-widget .calendar .header,
.ias-search-widget .calendar .header * { color: #0C233F !important; }
.ias-search-widget .calendar .header .ias-month { font-weight: 700; letter-spacing: 0.08em; }
.ias-search-widget .calendar .days .col { color: #6B778C !important; }
.ias-search-widget .calendar .body .cell { color: #0C233F !important; }
.ias-search-widget .calendar .body .cell .lowestPrice { color: #6B778C !important; }
.ias-search-widget .calendar .body .cell.disabled,
.ias-search-widget .calendar .body .cell.disabled *,
.ias-search-widget .calendar .body .cell.soldout,
.ias-search-widget .calendar .body .cell.soldout * { color: #C4CBD6 !important; }
/* Selected departure/return + everything between */
.ias-search-widget .calendar .body .cell[class*="elected"],
.ias-search-widget .calendar .body .cell[class*="start"],
.ias-search-widget .calendar .body .cell[class*="end"],
.ias-search-widget .calendar .body .cell[class*="Start"],
.ias-search-widget .calendar .body .cell[class*="End"] {
  background: #0C233F !important;
}
.ias-search-widget .calendar .body .cell[class*="elected"],
.ias-search-widget .calendar .body .cell[class*="elected"] *,
.ias-search-widget .calendar .body .cell[class*="start"] *,
.ias-search-widget .calendar .body .cell[class*="end"] *,
.ias-search-widget .calendar .body .cell[class*="Start"] *,
.ias-search-widget .calendar .body .cell[class*="End"] * { color: #FFFFFF !important; }
.ias-search-widget .calendar .body .cell[class*="ange"]:not([class*="start"]):not([class*="end"]) {
  background: #E6ECF2 !important;
}
.ias-search-widget .calendar .body .cell:not(.disabled):hover { background: #EEF2F7; }

/* ---------- 6 · Passenger panel: navy on white ---------- */
.ias-search-widget .passengerSelection .optionContainer {
  color: #0C233F !important;
  border-radius: 12px;
  box-shadow: 0 24px 60px rgba(4, 10, 18, 0.35), 0 0 0 1px #DDE3EB;
}
.ias-search-widget .passengerSelection .optionContainer .passengerTypes,
.ias-search-widget .passengerSelection .optionContainer .field,
.ias-search-widget .passengerSelection .optionContainer .field * { color: #0C233F !important; }
.ias-search-widget .passengerSelection .optionContainer .field { font-weight: 700; }
.ias-search-widget .passengerSelection .optionContainer .desc,
.ias-search-widget .passengerSelection .optionContainer .desc * { color: #6B778C !important; }

/* ---------- 7 · Buttons: arrow only on SEARCH; Done stays Done ---------- */
.ias-search-widget .fieldset.formSubmit button.btn-primary {
  display: flex !important;
  align-items: center;
  justify-content: center;
  padding: 0 !important;
}
/* Un-hijack the passenger panel's close button from the v14 arrow rule */
.ias-search-widget button.btn-primary.ptc--close-button {
  font-size: 13px !important;
  font-weight: 700 !important;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  border-radius: 10px !important;
  min-height: 46px;
  padding: 0 22px !important;
}
.ias-search-widget button.btn-primary.ptc--close-button::after { content: none !important; }

/* ===== css/v18.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V18
   Even row divider: the search cell was bottom-aligning itself, dropping
   its segment of the row-2 hairline. Stretch the cell and let the arrow
   button fill it.
   ========================================================================== */

/* All row-2 cells must share the same top edge or the hairline steps */
.ias-search-widget.horizontal .fieldset.passengerSelection,
.ias-search-widget.horizontal .fieldset.promocodeField {
  align-self: stretch !important;
}

.ias-search-widget.horizontal .fieldset.formSubmit {
  align-self: stretch !important;
  justify-self: stretch !important;
  display: flex;
  align-items: stretch;
  padding-bottom: 0;
  margin-top: 10px;   /* identical to the other row-2 cells */
  padding-top: 18px;
}

.ias-search-widget.horizontal .fieldset.formSubmit button.btn-primary {
  width: 100%;
  height: auto !important;
  max-height: none !important;
  min-height: 96px;
  align-self: stretch;
}

/* ===== css/v19.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V19
   Search button: the arrow becomes an airplane (nose right). On hover it
   takes off — climbs out to the upper right, then glides back in.
   ========================================================================== */

.ias-search-widget .fieldset.formSubmit button.btn-primary {
  overflow: hidden; /* the plane flies out of the button, not the page */
}

.ias-search-widget .fieldset.formSubmit button.btn-primary::after {
  content: "" !important;
  display: block;
  width: 36px;
  height: 36px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg transform='rotate(90 12 12)'%3E%3Cpath fill='%230C233F' d='M21 16v-2l-8-5V3.5c0-.83-.67-1.5-1.5-1.5S10 2.67 10 3.5V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5l8 2.5z'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;
}

.ias-search-widget .fieldset.formSubmit button.btn-primary:hover::after,
.ias-search-widget .fieldset.formSubmit button.btn-primary:focus-visible::after {
  animation: aa-takeoff 0.95s cubic-bezier(0.45, 0, 0.35, 1);
}

@keyframes aa-takeoff {
  0%   { transform: translate(0, 0) rotate(0deg); opacity: 1; }
  42%  { transform: translate(64px, -40px) rotate(-16deg); opacity: 0; }
  50%  { transform: translate(-64px, 34px) rotate(-10deg); opacity: 0; }
  100% { transform: translate(0, 0) rotate(0deg); opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .ias-search-widget .fieldset.formSubmit button.btn-primary:hover::after,
  .ias-search-widget .fieldset.formSubmit button.btn-primary:focus-visible::after {
    animation: none;
  }
}

/* ===== css/v21.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V21
   Calendar: a 6-week month could run its last dates under the pinned Done
   button. Reserve the action strip inside EACH month panel (bottom padding)
   rather than on the window, so no date row can ever reach the button.
   ========================================================================== */

.ias-search-widget .calendar {
  padding-bottom: 74px !important;
}
.ias-search-widget .calendar-window {
  padding-bottom: 0 !important;
}

/* ===== css/v22.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V22
   Calendar Done, third pass: floating the button over the panel keeps
   finding new ways to cover dates. Put it back in normal flow — below the
   month grid — where overlap is impossible by construction.
   ========================================================================== */

/* Undo the v21 in-panel reserve; flow handles spacing now */
.ias-search-widget .calendar { padding-bottom: 12px !important; }
.ias-search-widget .calendar-window { padding-bottom: 0 !important; }

/* Done: static, centered in its footer row */
.ias-search-widget .calendar--close-button {
  position: static !important;
  left: auto !important;
  bottom: auto !important;
  transform: none !important;
  width: auto;
  min-width: 200px;
  margin: 6px 0 2px;
}
.ias-search-widget .calendar--close-button:hover {
  transform: none !important;
  background: #0A1423 !important;
}

/* The footer that holds it becomes a simple centered action row */
.ias-search-widget .calendar .footer {
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 10px 12px 6px !important;
}

/* ===== css/v23.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V23
   Mobile calendar: the widget's own mobile mode pins the calendar at
   top:0 !important, and the fixed nav paints above it, covering the month
   header. When the calendar is open (html.aa-cal-open, set by v23.js),
   the nav slides away and the calendar becomes a near-fullscreen sheet.
   ========================================================================== */

.nav { transition: background 0.3s var(--ease), box-shadow 0.3s var(--ease), transform 0.25s ease; }

@media (max-width: 699px) {
  html.aa-cal-open .nav { transform: translateY(-110%); }

  /* Extra specificity: the widget's own mobile rules use !important */
  .flight-search-widget .ias-search-widget .calendar-window {
    position: fixed !important;
    top: 10px !important;
    left: 10px !important;
    right: 10px !important;
    bottom: 12px !important;
    width: auto !important;
    height: auto !important;
    max-height: none !important;
    overflow-y: auto !important;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    box-shadow: 0 24px 80px rgba(2, 6, 12, 0.6), 0 0 0 1px #DDE3EB;
  }
}

/* ===== css/v25.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V25
   Mobile calendar, part 2: inside the fixed sheet the month panels kept
   their fixed desktop widths side-by-side — clipping the first month and
   mis-centering Done. Stack the months vertically at full sheet width.
   ========================================================================== */

/* A transformed ancestor becomes the containing block for position:fixed —
   the reveal animation's translateY would trap the calendar sheet inside the
   card. Booking-section reveals are opacity-only. */
.v2-booking .reveal { transform: none !important; }

@media (max-width: 699px) {
  .flight-search-widget .ias-search-widget .calendar-window {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    max-width: none !important;
  }

  .flight-search-widget .ias-search-widget .calendar {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    flex: none !important;
    border-left: none !important;      /* the between-months divider */
    border-top: 1px solid #E6ECF2;     /* becomes a horizontal one */
  }
  .flight-search-widget .ias-search-widget .calendar:first-child { border-top: none; }

  /* Full-width grid inside each month */
  .flight-search-widget .ias-search-widget .calendar .header,
  .flight-search-widget .ias-search-widget .calendar .days,
  .flight-search-widget .ias-search-widget .calendar .body {
    width: 100% !important;
    max-width: none !important;
  }
}

/* ===== css/v26.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V26
   1 · "DONE" flex-centered inside its button (both axes, regardless of
       the widget's padding/line-height).
   2 · Desktop calendar opened past the right viewport edge, getting cut
       and adding a horizontal scroll (the "white bar"). Anchor it to the
       right edge of the dates column and clip page-level x-overflow.
   ========================================================================== */

/* ---------- 1 · Done label centering ---------- */
.ias-search-widget .calendar--close-button {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  line-height: 1 !important;
  text-indent: 0.24em; /* optical comp for trailing letter-spacing */
}

/* ---------- 2 · Desktop calendar inside the viewport ---------- */
@media (min-width: 700px) {
  .flight-search-widget .ias-search-widget .calendar-window {
    left: auto !important;
    right: 0 !important;
  }
}

/* No element may widen the page sideways (clip ≠ hidden: keeps sticky alive) */
html { overflow-x: clip; }

/* ===== css/v27.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V27
   Calendar placement, properly anchored:
   · Horizontal (desktop) mode: the Dates CELL is the anchor — the calendar
     drops directly below the date fields, right-aligned to them, opening
     inward across the bar.
   · Vertical (mobile) mode: full fixed sheet, re-asserted by widget MODE
     rather than viewport width so the two can never disagree.
   Replaces v26's positioning (which anchored to the wrong ancestor).
   ========================================================================== */

/* ---------- Desktop / horizontal ---------- */
.ias-search-widget.horizontal .fieldset.dateSelection { position: relative; }

.ias-search-widget.horizontal .calendar-window {
  position: absolute !important;
  top: calc(100% + 10px) !important;
  bottom: auto !important;
  right: 0 !important;
  left: auto !important;
}

/* ---------- Mobile / vertical: the fixed sheet, mode-scoped ---------- */
.ias-search-widget:not(.horizontal) .calendar-window {
  position: fixed !important;
  top: 10px !important;
  left: 10px !important;
  right: 10px !important;
  bottom: 12px !important;
  width: auto !important;
  height: auto !important;
  max-height: none !important;
  overflow-y: auto !important;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

/* Stack months full-width whenever the widget is in vertical mode */
.ias-search-widget:not(.horizontal) .calendar-window {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
}
.ias-search-widget:not(.horizontal) .calendar {
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  flex: none !important;
  border-left: none !important;
  border-top: 1px solid #E6ECF2;
}
.ias-search-widget:not(.horizontal) .calendar:first-child { border-top: none; }

/* ===== css/v28.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V28
   Desktop calendar alignment: the widget nests the calendar inside the
   departure input's wrapper, which is positioned — so right:0 aligned to
   that span, not the Dates cell. Make the intermediate wrappers static so
   the cell is the true anchor, and offset by the cell's right padding so
   the calendar's right edge sits exactly on the Return field's right edge.
   ========================================================================== */

.ias-search-widget.horizontal .dateSelection .dateRangeControls,
.ias-search-widget.horizontal .dateSelection .dateRangeControls > span,
.ias-search-widget.horizontal .dateSelection .dateInputControl {
  position: static !important;
}

.ias-search-widget.horizontal .calendar-window {
  /* the cell carries 26px right padding (v15); the Return input ends there */
  right: 26px !important;
}

/* ===== css/v29.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V29
   Tablet guard: on the narrowest horizontal layouts the right-anchored
   calendar could poke past the left viewport edge — cap it and let it
   scroll internally rather than clip.
   ========================================================================== */

.ias-search-widget.horizontal .calendar-window {
  max-width: calc(100vw - 24px) !important;
  overflow-x: auto;
}

/* ===== css/v31.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V31
   Consolidated nav: three rich dropdowns (title + one-line description per
   item) replacing the flat link row. Hover/focus on desktop, tap on touch,
   expanded groups inside the mobile menu.
   ========================================================================== */

.nav__drop { position: relative; }

.nav__drop-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: none;
  border: none;
  cursor: pointer;
  font-family: var(--font-head);
  font-size: 14px;
  font-weight: 600;
  color: var(--white);
  padding: 8px 2px;
  border-bottom: 2px solid transparent;
  transition: border-color 0.2s var(--ease);
}
.nav__drop-btn svg {
  width: 12px;
  height: 12px;
  stroke: currentColor;
  transition: transform 0.2s var(--ease);
}
.nav__drop:hover .nav__drop-btn,
.nav__drop.is-open .nav__drop-btn { border-color: var(--yellow); }
.nav__drop:hover .nav__drop-btn svg,
.nav__drop.is-open .nav__drop-btn svg { transform: rotate(180deg); }

.nav__panel {
  position: absolute;
  top: calc(100% + 10px);
  left: -10px;
  min-width: 264px;
  background: rgba(10, 20, 35, 0.97);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 14px;
  padding: 8px;
  box-shadow: 0 24px 60px rgba(2, 6, 12, 0.55);
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: opacity 0.18s var(--ease), transform 0.18s var(--ease), visibility 0.18s;
  z-index: 120;
}
/* invisible hover bridge so the pointer can travel into the panel */
.nav__panel::before {
  content: "";
  position: absolute;
  top: -12px;
  left: 0;
  right: 0;
  height: 12px;
}
.nav__drop:hover .nav__panel,
.nav__drop:focus-within .nav__panel,
.nav__drop.is-open .nav__panel {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.nav__panel a {
  display: block;
  padding: 10px 12px;
  border-radius: 9px;
  text-decoration: none;
  border-bottom: none !important;
  transition: background 0.15s var(--ease);
}
.nav__panel a:hover { background: rgba(255, 255, 255, 0.07); }
.nav__panel a strong {
  display: block;
  font-family: var(--font-head);
  font-size: 13.5px;
  font-weight: 700;
  color: var(--white);
}
.nav__panel a span {
  display: block;
  margin-top: 2px;
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 400;
  color: #97A1B2;
}

/* ---------- Mobile: groups render expanded inside the menu ---------- */
@media (max-width: 860px) {
  .nav__drop { width: 100%; }
  .nav__drop-btn {
    width: 100%;
    justify-content: flex-start;
    padding: 12px 2px 4px;
    font-size: 12px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--sky-blue);
    pointer-events: none;      /* group headers, not toggles */
  }
  .nav__drop-btn svg { display: none; }
  .nav__panel {
    position: static;
    opacity: 1;
    visibility: visible;
    transform: none;
    background: transparent;
    border: none;
    box-shadow: none;
    padding: 0 0 4px;
    min-width: 0;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
  .nav__panel::before { content: none; }
  .nav__panel a { padding: 9px 2px; }
  .nav__panel a:hover { background: transparent; }
}

/* ===== css/v32.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V32
   The top accent bar scrolled away with the page, leaving a 4px see-through
   gap above the fixed nav. Pin it so the brand stripe rides with the header.
   ========================================================================== */

body > .accent-bar:first-child {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 110;
}

/* ===== css/route-map.css ===== */
/* ============================================================
   ADVANCED AIR — Interactive Route Map
   Scoped engine styles. All rules live under .aa-rm so this
   file is safe to drop alongside any existing stylesheet.
   ============================================================ */

.aa-rm {
  --rm-navy: #0C233F;
  --rm-slate: #313E64;
  --rm-sky: #97BEE5;
  --rm-sky-tint: #D8E6F5;
  --rm-water: #C7E0F4;
  --rm-yellow: #FFC74F;
  --rm-orange: #E98A15;
  --rm-amber: #F3B84C;
  --rm-amber-edge: #E3A634;
  --rm-white: #FFFFFF;
  --rm-cloud: #F5F7FA;
  --rm-mist: #E6ECF2;
  --rm-steel: #6B778C;
  --rm-font-head: "Sora", "Montserrat", sans-serif;
  --rm-font-serif: "DM Serif Display", Georgia, serif;
  --rm-font-body: "Inter", "Roboto", sans-serif;
  --rm-radius: 16px;
  --rm-ease: cubic-bezier(0.22, 1, 0.36, 1);

  font-family: var(--rm-font-body);
  color: var(--rm-navy);
  position: relative;
}
.aa-rm *, .aa-rm *::before, .aa-rm *::after { box-sizing: border-box; }

.aa-rm-wrap { max-width: 1160px; margin: 0 auto; padding: 0 clamp(16px, 4vw, 40px); }

/* ---------- Intro ---------- */
.aa-rm-intro { text-align: center; max-width: 720px; margin: 0 auto clamp(20px, 4vw, 34px); }
.aa-rm-eyebrow {
  font-family: var(--rm-font-head);
  font-weight: 700;
  font-size: 0.72rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--rm-orange);
  margin-bottom: 0.6rem;
}
.aa-rm-intro h2 {
  font-family: var(--rm-font-serif);
  font-weight: 400;
  font-size: clamp(1.9rem, 4.5vw, 3rem);
  line-height: 1.06;
  letter-spacing: -0.01em;
  color: var(--rm-navy);
}
.aa-rm-intro p {
  margin-top: 0.9rem;
  font-size: 1.02rem;
  line-height: 1.6;
  color: var(--rm-slate);
}

/* ---------- Controls ---------- */
.aa-rm-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}
.aa-rm-filters { display: flex; flex-wrap: wrap; gap: 8px; }
.aa-rm-filter {
  font-family: var(--rm-font-head);
  font-weight: 600;
  font-size: 0.82rem;
  letter-spacing: 0.01em;
  color: var(--rm-navy);
  background: var(--rm-white);
  border: 1.5px solid var(--rm-mist);
  border-radius: 999px;
  padding: 0.5rem 1.05rem;
  cursor: pointer;
  transition: transform 0.25s var(--rm-ease), border-color 0.25s var(--rm-ease), background 0.25s var(--rm-ease), color 0.25s var(--rm-ease);
}
.aa-rm-filter:hover { border-color: var(--rm-sky); transform: translateY(-2px); }
.aa-rm-filter:focus-visible { outline: 3px solid var(--rm-sky); outline-offset: 2px; }
.aa-rm-filter.active { background: var(--rm-navy); border-color: var(--rm-navy); color: var(--rm-white); }

.aa-rm-views { display: inline-flex; background: var(--rm-cloud); border: 1.5px solid var(--rm-mist); border-radius: 999px; padding: 3px; }
.aa-rm-view {
  font-family: var(--rm-font-head);
  font-weight: 600;
  font-size: 0.8rem;
  color: var(--rm-steel);
  background: none;
  border: none;
  border-radius: 999px;
  padding: 0.42rem 0.95rem;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: background 0.25s var(--rm-ease), color 0.25s var(--rm-ease);
}
.aa-rm-view.active { background: var(--rm-navy); color: var(--rm-white); }
.aa-rm-view:focus-visible { outline: 3px solid var(--rm-sky); outline-offset: 2px; }
.aa-rm-view svg { width: 15px; height: 15px; }

/* ---------- Stage ---------- */
.aa-rm-stage {
  position: relative;
  width: 100%;
  aspect-ratio: 680 / 430;
  background: linear-gradient(180deg, #D6EAFA 0%, var(--rm-water) 100%);
  border-radius: var(--rm-radius);
  overflow: hidden;
  box-shadow: 0 24px 70px rgba(12, 35, 63, 0.16);
  border: 1px solid rgba(12, 35, 63, 0.06);
}
.aa-rm-svg { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }

/* Land + geography */
.aa-rm-land { fill: var(--rm-amber); stroke: rgba(12, 35, 63, 0.10); stroke-width: 1; stroke-linejoin: round; }
.aa-rm-state {
  fill: #FFFFFF;
  opacity: 0.55;
  font-family: var(--rm-font-head);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 2px;
  text-anchor: middle;
  pointer-events: none;
}

/* Arcs */
.aa-rm-arc { fill: none; stroke: var(--rm-navy); stroke-width: 2.1; stroke-linecap: round; opacity: 0.62; transition: stroke 0.3s var(--rm-ease), stroke-width 0.3s var(--rm-ease), opacity 0.3s var(--rm-ease); }
.aa-rm-arc.hot { stroke: var(--rm-orange); stroke-width: 3.4; opacity: 1; }
.aa-rm-arc.dim { opacity: 0.1; }
.aa-rm-arc.off, .aa-rm-dot.off, .aa-rm-spark.off, .aa-rm-node.off { display: none; }

.aa-rm-spark { fill: var(--rm-yellow); stroke: var(--rm-navy); stroke-width: 1; opacity: 0; }
.aa-rm-spark.show { opacity: 1; }

.aa-rm-dot { fill: var(--rm-yellow); stroke: var(--rm-navy); stroke-width: 2; transition: opacity 0.3s var(--rm-ease); }
.aa-rm-dot.seasonal { fill: var(--rm-orange); }
.aa-rm-dot.dim { opacity: 0.3; }

/* ---------- City nodes (HTML overlay) ---------- */
.aa-rm-nodes { position: absolute; inset: 0; pointer-events: none; }
.aa-rm-node {
  position: absolute;
  left: var(--x);
  top: var(--y);
  width: 0;
  height: 0;
  pointer-events: none;
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  color: inherit;
  transition: opacity 0.3s var(--rm-ease);
}
.aa-rm-node.dim { opacity: 0.32; }
.aa-rm-hit {
  position: absolute;
  left: 0; top: 0;
  width: 42px; height: 42px;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  pointer-events: auto;
  cursor: pointer;
}
.aa-rm-pill {
  position: absolute;
  left: 0;
  bottom: 13px;
  transform: translateX(-50%);
  pointer-events: auto;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  white-space: nowrap;
  background: var(--rm-navy);
  color: var(--rm-white);
  font-family: var(--rm-font-head);
  font-weight: 600;
  font-size: 0.76rem;
  line-height: 1;
  padding: 0.42em 0.72em;
  border-radius: 999px;
  border: 2px solid rgba(255, 255, 255, 0.9);
  box-shadow: 0 4px 12px rgba(12, 35, 63, 0.25);
  transition: transform 0.25s var(--rm-ease), background 0.25s var(--rm-ease);
}
.aa-rm-pill .aa-rm-code { display: none; }
.aa-rm-node:hover .aa-rm-pill,
.aa-rm-node:focus-visible .aa-rm-pill { background: var(--rm-slate); transform: translateX(-50%) translateY(-2px); }
.aa-rm-node.sel .aa-rm-pill { background: var(--rm-navy); border-color: var(--rm-yellow); box-shadow: 0 0 0 3px rgba(255, 199, 79, 0.55), 0 6px 16px rgba(12, 35, 63, 0.3); }
.aa-rm-node:focus-visible { outline: none; }
.aa-rm-node:focus-visible .aa-rm-pill,
.aa-rm-node:focus-within .aa-rm-pill { outline: 3px solid var(--rm-sky); outline-offset: 2px; }

/* Pill placement variants (so dense clusters don't collide) */
.aa-rm-node.pos-b .aa-rm-pill { bottom: auto; top: 13px; }
.aa-rm-node.pos-l .aa-rm-pill { left: auto; right: 13px; bottom: auto; top: 0; transform: translateY(-50%); }
.aa-rm-node.pos-r .aa-rm-pill { left: 13px; bottom: auto; top: 0; transform: translateY(-50%); }
.aa-rm-node.pos-l:hover .aa-rm-pill, .aa-rm-node.pos-l:focus-within .aa-rm-pill { transform: translateY(-50%) translateX(-2px); }
.aa-rm-node.pos-r:hover .aa-rm-pill, .aa-rm-node.pos-r:focus-within .aa-rm-pill { transform: translateY(-50%) translateX(2px); }

/* Seasonal tag */
.aa-rm-seasonal {
  position: absolute;
  left: 0;
  bottom: 40px;
  transform: translateX(-50%);
  font-family: var(--rm-font-head);
  font-weight: 700;
  font-size: 0.54rem;
  letter-spacing: 0.16em;
  color: var(--rm-orange);
  background: rgba(255, 255, 255, 0.92);
  padding: 0.18em 0.5em;
  border-radius: 999px;
  white-space: nowrap;
  pointer-events: none;
}
.aa-rm-node.pos-b .aa-rm-seasonal { bottom: auto; top: 40px; }
.aa-rm-node.pos-l .aa-rm-seasonal,
.aa-rm-node.pos-r .aa-rm-seasonal { display: none; }

/* ---------- Info panel ---------- */
.aa-rm-stagewrap { position: relative; }
.aa-rm-panel {
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  width: min(360px, 82%);
  background: var(--rm-white);
  box-shadow: -18px 0 50px rgba(12, 35, 63, 0.2);
  border-radius: 16px;
  transform: translateX(18px);
  opacity: 0;
  visibility: hidden;
  transition: transform 0.42s var(--rm-ease), opacity 0.42s var(--rm-ease), visibility 0.42s var(--rm-ease);
  display: flex;
  flex-direction: column;
  z-index: 6;
  overflow: hidden;
}
.aa-rm-panel.open { transform: translateX(0); opacity: 1; visibility: visible; }
.aa-rm-panel-bar { height: 5px; background: linear-gradient(90deg, var(--rm-navy), var(--rm-sky) 55%, var(--rm-orange)); flex: none; }
.aa-rm-panel-inner { padding: 1.4rem 1.5rem 1.6rem; overflow-y: auto; }
.aa-rm-close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--rm-cloud);
  color: var(--rm-navy);
  display: grid;
  place-items: center;
  cursor: pointer;
  z-index: 2;
  transition: background 0.2s var(--rm-ease), transform 0.2s var(--rm-ease);
}
.aa-rm-close:hover { background: var(--rm-mist); transform: rotate(90deg); }
.aa-rm-close:focus-visible { outline: 3px solid var(--rm-sky); outline-offset: 2px; }
.aa-rm-close svg { width: 18px; height: 18px; }

.aa-rm-p-region {
  font-family: var(--rm-font-head);
  font-weight: 700;
  font-size: 0.68rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--rm-orange);
  margin-bottom: 0.5rem;
  display: flex;
  align-items: center;
  gap: 8px;
}
.aa-rm-p-badge {
  font-size: 0.6rem;
  letter-spacing: 0.12em;
  color: var(--rm-navy);
  background: var(--rm-yellow);
  padding: 0.2em 0.6em;
  border-radius: 999px;
}
.aa-rm-p-title { display: flex; align-items: baseline; gap: 0.6rem; flex-wrap: wrap; }
.aa-rm-p-title h3 {
  font-family: var(--rm-font-serif);
  font-weight: 400;
  font-size: clamp(1.7rem, 5vw, 2.15rem);
  line-height: 1.05;
  color: var(--rm-navy);
}
.aa-rm-p-code {
  font-family: var(--rm-font-head);
  font-weight: 700;
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  color: var(--rm-steel);
  border: 1.5px solid var(--rm-mist);
  border-radius: 6px;
  padding: 0.15em 0.45em;
}
.aa-rm-p-sub { color: var(--rm-steel); font-size: 0.92rem; margin-top: 0.2rem; }
.aa-rm-p-blurb { color: var(--rm-slate); font-size: 0.98rem; line-height: 1.6; margin-top: 1rem; }

.aa-rm-p-label {
  font-family: var(--rm-font-head);
  font-weight: 700;
  font-size: 0.66rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--rm-navy);
  margin: 1.5rem 0 0.7rem;
  display: flex;
  align-items: center;
  gap: 8px;
}
.aa-rm-p-label::after { content: ""; flex: 1; height: 1px; background: var(--rm-mist); }
.aa-rm-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.aa-rm-chip {
  font-family: var(--rm-font-head);
  font-weight: 600;
  font-size: 0.82rem;
  color: var(--rm-navy);
  background: var(--rm-cloud);
  border: 1.5px solid var(--rm-mist);
  border-radius: 999px;
  padding: 0.45rem 0.9rem;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: transform 0.2s var(--rm-ease), border-color 0.2s var(--rm-ease), background 0.2s var(--rm-ease);
}
.aa-rm-chip:hover { border-color: var(--rm-sky); background: var(--rm-white); transform: translateY(-2px); }
.aa-rm-chip:focus-visible { outline: 3px solid var(--rm-sky); outline-offset: 2px; }
.aa-rm-chip .arr { color: var(--rm-orange); transition: transform 0.2s var(--rm-ease); }
.aa-rm-chip:hover .arr { transform: translateX(3px); }

.aa-rm-cta { display: flex; flex-direction: column; gap: 10px; margin-top: 1.6rem; }
.aa-rm-btn {
  font-family: var(--rm-font-head);
  font-weight: 700;
  font-size: 0.92rem;
  border-radius: 12px;
  padding: 0.85rem 1.2rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  cursor: pointer;
  transition: transform 0.22s var(--rm-ease), box-shadow 0.22s var(--rm-ease), background 0.22s var(--rm-ease);
}
.aa-rm-btn:focus-visible { outline: 3px solid var(--rm-sky); outline-offset: 2px; }
.aa-rm-btn-primary { background: var(--rm-yellow); color: var(--rm-navy); box-shadow: 0 8px 20px rgba(255, 199, 79, 0.4); }
.aa-rm-btn-primary:hover { transform: translateY(-2px); box-shadow: 0 12px 26px rgba(255, 199, 79, 0.5); }
.aa-rm-btn-ghost { background: var(--rm-white); color: var(--rm-navy); border: 1.5px solid var(--rm-mist); }
.aa-rm-btn-ghost:hover { border-color: var(--rm-navy); transform: translateY(-2px); }
.aa-rm-btn .arr { transition: transform 0.22s var(--rm-ease); }
.aa-rm-btn:hover .arr { transform: translateX(3px); }

/* ---------- List view ---------- */
.aa-rm-list { display: none; margin-top: 4px; }
.aa-rm.list-mode .aa-rm-stage { display: none; }
.aa-rm.list-mode .aa-rm-list { display: block; }
.aa-rm-list-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.aa-rm-listcard {
  text-align: left;
  background: var(--rm-white);
  border: 1.5px solid var(--rm-mist);
  border-radius: 14px;
  padding: 1rem 1.1rem;
  cursor: pointer;
  transition: transform 0.22s var(--rm-ease), border-color 0.22s var(--rm-ease), box-shadow 0.22s var(--rm-ease);
}
.aa-rm-listcard:hover { transform: translateY(-3px); border-color: var(--rm-sky); box-shadow: 0 12px 28px rgba(12, 35, 63, 0.12); }
.aa-rm-listcard:focus-visible { outline: 3px solid var(--rm-sky); outline-offset: 2px; }
.aa-rm-listcard .lc-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.aa-rm-listcard h4 { font-family: var(--rm-font-head); font-weight: 700; font-size: 1.05rem; color: var(--rm-navy); }
.aa-rm-listcard .lc-code { font-family: var(--rm-font-head); font-weight: 700; font-size: 0.74rem; color: var(--rm-steel); }
.aa-rm-listcard .lc-sub { color: var(--rm-steel); font-size: 0.82rem; margin-top: 2px; }
.aa-rm-listcard .lc-routes { color: var(--rm-slate); font-size: 0.82rem; margin-top: 0.7rem; }
.aa-rm-listcard .lc-routes b { font-weight: 600; color: var(--rm-navy); }
.aa-rm-listcard .lc-seasonal { display: inline-block; margin-top: 0.6rem; font-family: var(--rm-font-head); font-weight: 700; font-size: 0.58rem; letter-spacing: 0.14em; color: var(--rm-navy); background: var(--rm-yellow); padding: 0.2em 0.6em; border-radius: 999px; }

/* ---------- Legend ---------- */
.aa-rm-legend { display: flex; flex-wrap: wrap; gap: 18px; justify-content: center; margin-top: 16px; font-size: 0.8rem; color: var(--rm-steel); }
.aa-rm-legend span { display: inline-flex; align-items: center; gap: 7px; }
.aa-rm-legend .lg-dot { width: 13px; height: 13px; border-radius: 50%; background: var(--rm-yellow); border: 2px solid var(--rm-navy); }
.aa-rm-legend .lg-line { width: 22px; height: 0; border-top: 3px solid var(--rm-navy); border-radius: 2px; }
.aa-rm-legend .lg-hot { border-top-color: var(--rm-orange); }
.aa-rm-legend .lg-seasonal { width: 10px; height: 10px; border-radius: 50%; background: var(--rm-orange); }

.aa-rm-hint { text-align: center; margin-top: 6px; font-size: 0.82rem; color: var(--rm-steel); }

.aa-rm-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* ---------- Responsive ---------- */
@media (max-width: 760px) {
  .aa-rm-pill { font-size: 0.7rem; padding: 0.36em 0.56em; border-width: 1.5px; }
  .aa-rm-pill .aa-rm-name { display: none; }
  .aa-rm-pill .aa-rm-code { display: inline; }
  .aa-rm-seasonal { display: none; }
  .aa-rm-state { font-size: 11px; letter-spacing: 1px; }
  .aa-rm-panel {
    position: relative;
    transform: none;
    opacity: 1;
    visibility: visible;
    width: 100%;
    height: auto;
    max-height: 0;
    overflow: hidden;
    box-shadow: none;
    border: 0;
    border-radius: 16px;
    transition: max-height 0.4s var(--rm-ease);
  }
  .aa-rm-panel.open { max-height: 1600px; margin-top: 14px; box-shadow: 0 14px 40px rgba(12, 35, 63, 0.16); border: 1px solid var(--rm-mist); }
  .aa-rm-panel-bar { border-radius: 16px 16px 0 0; }
}

@media (max-width: 460px) {
  .aa-rm-controls { flex-direction: column; align-items: stretch; }
  .aa-rm-views { justify-content: center; }
  .aa-rm-filters { justify-content: center; }
}

@media (prefers-reduced-motion: reduce) {
  .aa-rm *, .aa-rm *::before, .aa-rm *::after { transition: none !important; animation: none !important; }
}

/* ===== css/departure-board.css ===== */
/* Departure board section — extracted from flight-schedules-interface/departure-board.html,
   generic selectors scoped under .departures to avoid homepage collisions. */

  :root {
    --deep: #0C233F;
    --slate: #313E64;
    --sky: #97BEE5;
    --yellow: #FFC74F;
    --orange: #E98A15;
    --white: #FFFFFF;
    --cloud: #F5F7FA;
    --mist: #E6ECF2;
    --steel: #6B778C;
    --midnight: #0A1423;

    /* flap sizing */
    --fw: 21px;   /* flap width  */
    --fh: 34px;   /* flap height */
    --fgap: 2px;  /* gap between flaps */
    --colgap: 20px;
  }
  @media (max-width: 1060px) { :root { --fw: 18px; --fh: 30px; --colgap: 14px; } }
  @media (max-width: 879px)  { :root { --fw: 20px; --fh: 32px; --colgap: 14px; } }
  @media (max-width: 420px)  { :root { --fw: 16px; --fh: 27px; --colgap: 10px; } }

  /* Page scaffolding so the section previews in context */

  /* =========================================================
     THE SECTION
     ========================================================= */
  .departures {
    position: relative;
    background:
      radial-gradient(120% 90% at 85% -10%, rgba(151,190,229,.16) 0%, rgba(151,190,229,0) 55%),
      linear-gradient(178deg, #0C233F 0%, #12294a 55%, #1b3057 100%);
    padding: clamp(64px, 9vw, 110px) 24px clamp(64px, 8vw, 96px);
    overflow: hidden;
  }
  .departures .accent-bar {
    position: absolute; left: 0; right: 0; height: 4px;
    background: linear-gradient(90deg, var(--deep), var(--sky) 55%, var(--orange));
  }
  .departures .accent-bar--top { top: 0; }
  .departures .accent-bar--bottom { bottom: 0; transform: scaleX(-1); }

  .departures .inner { max-width: 1140px; margin: 0 auto; }

  /* ---------- Section header ---------- */
  .dep-header {
    display: flex; align-items: flex-end; justify-content: space-between;
    gap: 32px; margin-bottom: clamp(32px, 4.5vw, 52px);
  }
  .dep-header-copy { max-width: 640px; }

  .departures .eyebrow {
    display: inline-flex; align-items: center; gap: 12px;
    font-family: "Sora", sans-serif; font-weight: 600; font-size: 12px;
    letter-spacing: .22em; text-transform: uppercase; color: var(--yellow);
    margin-bottom: 18px;
  }
  .departures .wing-bars { display: inline-flex; flex-direction: column; gap: 3px; }
  .departures .wing-bars i { display: block; height: 2px; background: var(--yellow); border-radius: 2px; }
  .departures .wing-bars i:nth-child(1) { width: 26px; }
  .departures .wing-bars i:nth-child(2) { width: 17px; opacity: .65; }
  .departures .wing-bars i:nth-child(3) { width: 9px;  opacity: .35; }

  .dep-header h2 {
    font-family: "DM Serif Display", serif; font-weight: 400;
    font-size: clamp(34px, 4.6vw, 52px); line-height: 1.06;
    color: var(--white); margin-bottom: 16px;
  }
  .dep-header h2 em { font-style: italic; color: var(--sky); }
  .dep-header p {
    font-size: 16px; line-height: 1.65; color: rgba(230,236,242,.82); max-width: 54ch;
  }

  .dep-header-cta { flex-shrink: 0; padding-bottom: 6px; }
  .departures .btn-primary {
    display: inline-flex; align-items: center; gap: 10px;
    font-family: "Sora", sans-serif; font-weight: 600; font-size: 15px;
    color: var(--deep); background: var(--yellow);
    padding: 15px 28px; border-radius: 999px; text-decoration: none;
    box-shadow: 0 8px 24px rgba(255,199,79,.28);
    transition: transform .18s ease, box-shadow .18s ease;
  }
  .departures .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 12px 30px rgba(255,199,79,.4); }
  .departures .btn-primary svg { transition: transform .18s ease; }
  .departures .btn-primary:hover svg { transform: translateX(3px); }

  @media (max-width: 860px) {
    .dep-header { flex-direction: column; align-items: flex-start; }
    .dep-header-cta { padding-bottom: 0; }
  }

  /* =========================================================
     THE BOARD
     ========================================================= */
  .board-frame {
    position: relative;
    background: linear-gradient(180deg, #101d31 0%, #0b1526 100%);
    border: 1px solid rgba(151,190,229,.14);
    border-radius: 20px;
    padding: clamp(14px, 2.4vw, 26px);
    box-shadow:
      0 30px 80px rgba(4,10,20,.55),
      inset 0 1px 0 rgba(151,190,229,.10);
  }
  .board {
    background: #060d18;
    border-radius: 12px;
    border: 1px solid rgba(151,190,229,.08);
    padding: clamp(14px, 2.2vw, 24px) clamp(12px, 2vw, 24px) clamp(12px, 1.8vw, 20px);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* board top strip: DEPARTURES left, brand symbol center, date/clock right */
  .board-top {
    position: relative;
    display: flex; justify-content: space-between; align-items: center; gap: 16px;
    padding: 2px 4px 14px;
    border-bottom: 1px solid rgba(151,190,229,.1);
    margin-bottom: 16px;
    min-width: max-content;
  }
  .board-logo {
    position: absolute; left: 50%; top: -3px; transform: translateX(-50%);
    pointer-events: none;
  }
  .board-logo img { height: 26px; width: auto; display: block; }
  @media (max-width: 659px) {
    .board-logo {
      position: static; transform: none; order: -1;
      flex-basis: 100%; display: flex; justify-content: center;
      margin-bottom: 4px; pointer-events: auto;
    }
    .board-logo img { height: 24px; }
  }
  .board-brand {
    display: flex; align-items: center; gap: 10px;
    font-family: "Sora", sans-serif; font-weight: 600; font-size: 11px;
    letter-spacing: .2em; color: var(--sky); text-transform: uppercase;
    white-space: nowrap;
  }
  .board-brand svg { flex-shrink: 0; }
  .board-clockline {
    display: flex; align-items: center; gap: 14px;
    font-family: "Sora", sans-serif; font-size: 11px; letter-spacing: .14em;
    color: rgba(230,236,242,.55); text-transform: uppercase; white-space: nowrap;
  }
  .board-clockline b { color: var(--yellow); font-weight: 600; font-variant-numeric: tabular-nums; }
  #board-date.date-alt { color: var(--yellow); }

  /* ---------- date picker ---------- */
  .date-edit {
    background: none; border: 1px solid rgba(151,190,229,.25); color: var(--sky);
    border-radius: 6px; width: 26px; height: 26px;
    display: inline-grid; place-items: center; cursor: pointer; padding: 0;
    transition: color .15s ease, border-color .15s ease;
  }
  .date-edit:hover { color: var(--yellow); border-color: rgba(255,199,79,.55); }
  .date-edit:focus-visible { outline: 2px solid var(--yellow); outline-offset: 2px; }

  .cal-pop {
    position: absolute; top: 76px; right: clamp(14px, 2.4vw, 26px); z-index: 30;
    background: #0b1526; border: 1px solid rgba(151,190,229,.22);
    border-radius: 14px; padding: 16px; width: 280px;
    box-shadow: 0 24px 60px rgba(4,10,20,.72);
    font-family: "Sora", sans-serif;
  }
  .cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
  .cal-title { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--cloud); font-weight: 600; }
  .cal-nav {
    background: none; border: none; color: var(--sky); font-size: 18px; line-height: 1;
    cursor: pointer; width: 28px; height: 28px; border-radius: 6px;
  }
  .cal-nav:hover:not(:disabled) { background: rgba(151,190,229,.12); }
  .cal-nav:disabled { opacity: .25; cursor: default; }
  .cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
  .cal-dow { font-size: 9px; letter-spacing: .1em; color: var(--steel); text-align: center; padding: 4px 0; }
  .cal-day {
    background: none; border: none; color: var(--mist); font-family: inherit;
    font-size: 12px; padding: 7px 0; border-radius: 6px; cursor: pointer;
  }
  .cal-day:hover:not(:disabled) { background: rgba(151,190,229,.14); }
  .cal-day:disabled { color: rgba(107,119,140,.4); cursor: default; }   /* no schedule that day */
  .cal-day.is-today { box-shadow: inset 0 0 0 1px rgba(151,190,229,.4); }
  .cal-day.is-selected { background: var(--yellow); color: var(--deep); font-weight: 600; }
  .cal-foot { margin-top: 10px; text-align: center; }
  .cal-today {
    background: none; border: none; color: var(--sky); font-family: inherit;
    font-size: 11px; letter-spacing: .08em; text-transform: uppercase; cursor: pointer;
    border-bottom: 1px solid rgba(151,190,229,.35); padding: 2px 0;
  }
  .cal-today:hover { color: var(--white); }

  /* rows share one grid so labels line up with flaps */
  .board-rows { display: flex; flex-direction: column; gap: 7px; min-width: max-content; }
  .board-row {
    display: flex; gap: var(--colgap); align-items: center;
    width: max-content; margin: 0 auto;
  }
  .board-col { display: flex; gap: var(--fgap); }

  .board-labels { margin-bottom: 6px; }
  .board-labels .board-col {
    font-family: "Sora", sans-serif; font-weight: 600; font-size: 10px;
    letter-spacing: .18em; color: var(--yellow); text-transform: uppercase;
  }
  .board-labels .label-cell { width: calc(var(--fw) * var(--n) + var(--fgap) * (var(--n) - 1)); }
  .board-labels .lbl-right { text-align: right; }

  /* clickable row */
  a.board-row {
    text-decoration: none; border-radius: 6px; padding: 0 4px; margin: 0 auto;
    transition: background .15s ease;
  }
  a.board-row:hover { background: rgba(151,190,229,.06); }
  a.board-row:focus-visible { outline: 2px solid var(--yellow); outline-offset: 2px; }

  /* ---------- the flap ---------- */
  .flap {
    width: var(--fw); height: var(--fh);
    display: grid; place-items: center;
    background: linear-gradient(180deg, #1a2940 0%, #14213497 48%, #0e1a2c 52%, #13203380 100%);
    background-color: #121f33;
    border-radius: 3px;
    position: relative;
    font-family: "Sora", sans-serif; font-weight: 600;
    font-size: calc(var(--fh) * .52);
    color: var(--cloud);
    box-shadow: inset 0 1px 0 rgba(151,190,229,.09), 0 1px 2px rgba(0,0,0,.5);
    perspective: 120px;
    user-select: none;
  }
  .flap::after {          /* the split hinge line */
    content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 1px;
    background: rgba(0,0,0,.65);
  }
  .flap span { display: block; backface-visibility: hidden; will-change: transform; }
  .flap.ticking span { animation: flaptick 70ms linear; }
  @keyframes flaptick {
    0%   { transform: rotateX(0deg); }
    49%  { transform: rotateX(-84deg); }
    51%  { transform: rotateX(84deg); }
    100% { transform: rotateX(0deg); }
  }

  /* per-column tinting */
  .col-time .flap { color: var(--white); }
  .col-from .flap { color: #b9c7da; }
  .col-to   .flap { color: var(--white); }
  .col-status .flap { font-size: calc(var(--fh) * .42); }

  /* live status colours (fed by FlightAware via the WP endpoint) */
  .st-ontime  .col-status .flap { color: var(--sky); }
  .st-delay   .col-status .flap { color: var(--orange); }
  .st-delay   .col-time   .flap { color: var(--yellow); }  /* the updated time */
  .st-cancel  .col-status .flap { color: var(--orange); }
  .st-enroute .col-status .flap { color: var(--mist); }
  .st-landed  .col-status .flap { color: var(--steel); }
  .st-sched   .col-status .flap { color: rgba(230,236,242,.5); }
  a.board-row.st-cancel { opacity: .75; }
  a.board-row.st-landed { opacity: .7; }

  /* ---------- stacked mobile rows (two flap lines + city subtext) ---------- */
  .board-rows.is-stacked { min-width: 0; }
  a.board-row--stacked {
    flex-direction: column; align-items: center;   /* flap line centered in the board */
    width: 100%; margin: 0; padding: 9px 4px;
    border-bottom: 1px solid rgba(151,190,229,.08);
  }
  .board-rows.is-stacked a.board-row--stacked:last-of-type { border-bottom: none; }
  .board-line { display: flex; align-items: center; gap: var(--colgap); }
  .row-sub {
    font-family: "Sora", sans-serif; font-size: 10px; letter-spacing: .12em;
    text-transform: uppercase; line-height: 1.4;
    color: rgba(230,236,242,.55); margin: 4px 0 0; text-align: center;
  }
  .row-sub.sub-cancel { color: var(--orange); font-weight: 600; }
  @media (max-width: 659px) {
    .board .board-top    { flex-wrap: wrap; row-gap: 8px; min-width: 0; }
    .board .board-bottom { flex-wrap: wrap; row-gap: 8px; justify-content: center; min-width: 0; }
  }

  /* board bottom strip */
  .board-bottom {
    display: flex; justify-content: space-between; align-items: center; gap: 16px;
    padding: 14px 4px 2px;
    border-top: 1px solid rgba(151,190,229,.1);
    margin-top: 16px;
    font-family: "Sora", sans-serif; font-size: 10px; letter-spacing: .16em;
    color: rgba(230,236,242,.5); text-transform: uppercase;
    min-width: max-content;
  }
  .live-pill { display: inline-flex; align-items: center; gap: 8px; }
  .board-pager { display: inline-flex; align-items: center; gap: 10px; }
  .page-nav {
    background: none; border: 1px solid rgba(151,190,229,.25); color: var(--sky);
    width: 22px; height: 22px; border-radius: 6px; cursor: pointer;
    font-size: 14px; line-height: 1; padding: 0; display: inline-grid; place-items: center;
    transition: color .15s ease, border-color .15s ease;
  }
  .page-nav[hidden] { display: none; }
  .page-nav:hover { color: var(--yellow); border-color: rgba(255,199,79,.55); }
  .page-nav:focus-visible { outline: 2px solid var(--yellow); outline-offset: 2px; }
  .live-dot {
    width: 7px; height: 7px; border-radius: 50%; background: var(--yellow);
    box-shadow: 0 0 0 0 rgba(255,199,79,.5); animation: pulse 2.2s infinite;
  }
  @keyframes pulse {
    0% { box-shadow: 0 0 0 0 rgba(255,199,79,.45); }
    70% { box-shadow: 0 0 0 8px rgba(255,199,79,0); }
    100% { box-shadow: 0 0 0 0 rgba(255,199,79,0); }
  }
  #board-count { color: rgba(230,236,242,.5); }

  /* caption under the board */
  .board-caption {
    margin-top: 20px; text-align: center;
    font-size: 13px; color: rgba(230,236,242,.55);
  }
  .board-caption a { color: var(--sky); text-decoration: none; border-bottom: 1px solid rgba(151,190,229,.35); }
  .board-caption a:hover { color: var(--white); }

  /* scroll-in of the frame itself */
  .board-frame, .dep-header { opacity: 0; transform: translateY(26px); transition: opacity .7s ease, transform .7s ease; }
  .in-view .board-frame, .in-view .dep-header { opacity: 1; transform: none; }
  .in-view .board-frame { transition-delay: .12s; }

  @media (prefers-reduced-motion: reduce) {
    .board-frame, .dep-header { opacity: 1; transform: none; transition: none; }
    .flap.ticking span { animation: none; }
    .live-dot { animation: none; }
    .departures .btn-primary, .btn-primary svg { transition: none; }
  }

/* ===== css/v33.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V33
   Integration shims for the Route Map + Departure Board sections.
   ========================================================================== */

.routemap-home {
  background: var(--white);
  padding: clamp(72px, 9vw, 110px) 0 clamp(64px, 8vw, 96px);
}

/* ===== css/v35.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V35
   1 · Route Map section re-themed dark (continuous with the cabin above
       and the departure board below) — night-flight map.
   2 · Departure board cleanup: no mid-page accent stripes, no redundant
       caption; gradient continues the dark run.
   3 · Footer: DOT public-charter notice styles.
   ========================================================================== */

/* ---------- 1 · Route map: night mode ---------- */
.routemap-home {
  background: linear-gradient(180deg, #0A1423 0%, #0C233F 100%);
}
.routemap-home .aa-rm-eyebrow { color: var(--yellow); }
.routemap-home .aa-rm-intro h2 { color: #FFFFFF; }
.routemap-home .aa-rm-intro p { color: rgba(230, 236, 242, 0.78); }

/* Controls */
.routemap-home .aa-rm-filter {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.16);
  color: #E6ECF2;
}
.routemap-home .aa-rm-filter:hover { border-color: var(--sky-blue); }
.routemap-home .aa-rm-filter.active {
  background: var(--yellow);
  border-color: var(--yellow);
  color: var(--deep-blue);
}
.routemap-home .aa-rm-views {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.16);
}
.routemap-home .aa-rm-view { color: rgba(230, 236, 242, 0.6); }
.routemap-home .aa-rm-view.active { background: var(--yellow); color: var(--deep-blue); }

/* The map itself: dark water, slate land, sky arcs */
.routemap-home .aa-rm-stage {
  background: linear-gradient(180deg, #12294A 0%, #0B1830 100%);
  border: 1px solid rgba(151, 190, 229, 0.14);
  box-shadow: 0 30px 80px rgba(4, 10, 20, 0.55), inset 0 1px 0 rgba(151, 190, 229, 0.08);
}
.routemap-home .aa-rm-land { fill: #24365A; stroke: rgba(151, 190, 229, 0.20); }
.routemap-home .aa-rm-state { fill: #FFFFFF; opacity: 0.16; }
.routemap-home .aa-rm-arc { stroke: #97BEE5; opacity: 0.5; }
.routemap-home .aa-rm-arc.hot { stroke: var(--orange); opacity: 1; }
.routemap-home .aa-rm-dot { stroke: #0A1423; }
.routemap-home .aa-rm-spark { stroke: #0A1423; }
.routemap-home .aa-rm-pill { border-color: rgba(255, 255, 255, 0.4); }
.routemap-home .aa-rm-seasonal {
  background: rgba(10, 20, 35, 0.85);
  color: var(--yellow);
}

/* Legend + hint */
.routemap-home .aa-rm-legend { color: rgba(230, 236, 242, 0.6); }
.routemap-home .aa-rm-legend .lg-line { border-top-color: #97BEE5; }
.routemap-home .aa-rm-legend .lg-hot { border-top-color: var(--orange); }
.routemap-home .aa-rm-legend .lg-dot { border-color: #0A1423; }
.routemap-home .aa-rm-hint { color: rgba(230, 236, 242, 0.45); }

/* Info panel: dark sheet */
.routemap-home .aa-rm-panel {
  background: #0E1B2F;
  box-shadow: -18px 0 50px rgba(4, 10, 20, 0.6), 0 0 0 1px rgba(151, 190, 229, 0.14);
}
.routemap-home .aa-rm-p-title h3 { color: #FFFFFF; }
.routemap-home .aa-rm-p-code { color: var(--sky-blue); border-color: rgba(151, 190, 229, 0.3); }
.routemap-home .aa-rm-p-sub { color: #97A1B2; }
.routemap-home .aa-rm-p-blurb { color: #C7D2E0; }
.routemap-home .aa-rm-p-label { color: #FFFFFF; }
.routemap-home .aa-rm-p-label::after { background: rgba(255, 255, 255, 0.12); }
.routemap-home .aa-rm-p-region { color: var(--yellow); }
.routemap-home .aa-rm-chip {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.16);
  color: #E9F0F8;
}
.routemap-home .aa-rm-chip:hover { background: rgba(255, 255, 255, 0.1); border-color: var(--sky-blue); }
.routemap-home .aa-rm-close { background: rgba(255, 255, 255, 0.08); color: #FFFFFF; }
.routemap-home .aa-rm-close:hover { background: rgba(255, 255, 255, 0.16); }
.routemap-home .aa-rm-btn-ghost {
  background: transparent;
  border-color: rgba(255, 255, 255, 0.28);
  color: #FFFFFF;
}
.routemap-home .aa-rm-btn-ghost:hover { border-color: #FFFFFF; }

/* List view: dark cards */
.routemap-home .aa-rm-listcard {
  background: #0E1B2F;
  border-color: rgba(151, 190, 229, 0.16);
}
.routemap-home .aa-rm-listcard:hover { border-color: var(--sky-blue); box-shadow: 0 12px 28px rgba(4, 10, 20, 0.5); }
.routemap-home .aa-rm-listcard h4 { color: #FFFFFF; }
.routemap-home .aa-rm-listcard .lc-code,
.routemap-home .aa-rm-listcard .lc-sub { color: #97A1B2; }
.routemap-home .aa-rm-listcard .lc-routes { color: #C7D2E0; }
.routemap-home .aa-rm-listcard .lc-routes b { color: #FFFFFF; }

/* Mobile panel variant keeps the dark sheet */
@media (max-width: 760px) {
  .routemap-home .aa-rm-panel.open { border-color: rgba(151, 190, 229, 0.16); box-shadow: 0 14px 40px rgba(4, 10, 20, 0.55); }
}

/* ---------- 3 · Footer notice ---------- */
.footer__notice {
  margin-top: 44px;
  padding-top: 22px;
  border-top: 1px solid rgba(255, 255, 255, 0.14);
  font-size: 11.5px;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.55);
  max-width: 980px;
}
.footer__notice a { color: var(--sky-blue); }

/* ===== css/v36.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V36
   Footer social buttons.
   ========================================================================== */

.footer__social {
  display: flex;
  gap: 10px;
  margin-top: 20px;
}
.footer__social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.22);
  color: rgba(255, 255, 255, 0.85);
  transition: border-color 0.2s var(--ease), color 0.2s var(--ease), transform 0.2s var(--ease);
}
.footer__social a:hover {
  border-color: var(--yellow);
  color: var(--yellow);
  transform: translateY(-2px);
}
.footer__social svg { width: 18px; height: 18px; display: block; }

/* ===== css/v38.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V38
   Cloud scatter over the route map that clears on approach.
   ========================================================================== */

.rm-clouds {
  position: absolute;
  inset: 0;
  z-index: 5;
  pointer-events: none;
  overflow: hidden;
  border-radius: inherit;
}
.rm-clouds i {
  position: absolute;
  display: block;
  width: 58%;
  height: 46%;
  background:
    radial-gradient(ellipse 60% 55% at 35% 60%, rgba(240, 246, 252, 0.92), rgba(240, 246, 252, 0) 70%),
    radial-gradient(ellipse 52% 62% at 66% 38%, rgba(220, 232, 245, 0.8), rgba(220, 232, 245, 0) 72%),
    radial-gradient(ellipse 40% 45% at 50% 75%, rgba(200, 216, 234, 0.55), rgba(200, 216, 234, 0) 75%);
  filter: blur(7px);
  will-change: transform, opacity;
}
.rm-clouds i:nth-child(1) { left: -8%;  top: -10%; width: 62%; }
.rm-clouds i:nth-child(2) { right: -10%; top: -4%;  width: 55%; }
.rm-clouds i:nth-child(3) { left: 12%;  top: 28%;  width: 50%; height: 40%; }
.rm-clouds i:nth-child(4) { right: 6%;  top: 42%;  width: 46%; height: 38%; }
.rm-clouds i:nth-child(5) { left: -12%; bottom: -8%; width: 58%; }
.rm-clouds i:nth-child(6) { right: -8%; bottom: -12%; width: 64%; }

@media (prefers-reduced-motion: reduce) {
  .rm-clouds { display: none; }
}

/* ===== css/v40.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V40
   The cabin window was sized by width only, so short viewports (laptops
   ~750-850px tall) let it grow up into the section heading. Cap its width
   by viewport height as well: the 3:4 frame must always clear the heading
   zone above and the progress bar below.
   ========================================================================== */

.pwin {
  width: min(440px, 84vw, calc((100vh - 310px) * 0.75));
}

/* ===== css/v41.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V41
   Real photographic clouds (screen-blended plates on black) covering the
   ENTIRE route map section, clearing on approach. Overrides v38's CSS-puff
   styling on the same .rm-clouds hooks.
   ========================================================================== */

.routemap-home { position: relative; }

.rm-clouds {
  position: absolute;
  inset: 0;
  /* no z-index — a stacking context would isolate the screen blend */
  pointer-events: none;
  overflow: hidden;
  border-radius: 0;
}
.rm-clouds i {
  position: absolute;
  background: none;          /* clear v38's gradients */
  filter: none;
  /* true-alpha plates — no blend-mode dependence */
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  will-change: transform, opacity;
}
.rm-clouds i:nth-child(1) { background-image: url("../assets/img/cloud-a-alpha.webp"); left: -14%; top: -6%;  width: 66%; height: 52%; }
.rm-clouds i:nth-child(2) { background-image: url("../assets/img/cloud-b-alpha.webp"); right: -12%; top: 2%;  width: 62%; height: 44%; }
.rm-clouds i:nth-child(3) { background-image: url("../assets/img/cloud-c-alpha.webp"); left: 6%;  top: 26%;  width: 56%; height: 46%; }
.rm-clouds i:nth-child(4) { background-image: url("../assets/img/cloud-a-alpha.webp"); right: -4%; top: 38%;  width: 58%; height: 48%; }
.rm-clouds i:nth-child(5) { background-image: url("../assets/img/cloud-b-alpha.webp"); left: -10%; bottom: -4%; width: 64%; height: 46%; }
.rm-clouds i:nth-child(6) { background-image: url("../assets/img/cloud-c-alpha.webp"); right: -10%; bottom: -8%; width: 60%; height: 50%; }

@media (prefers-reduced-motion: reduce) {
  .rm-clouds { display: none; }
}

/* ===== css/v42.css ===== */
/* ==========================================================================
   Advanced Air — Homepage V42
   1 · Cabin-window typography scales with the WINDOW (container queries),
       so height-capped windows never clip their own content.
   2 · Section heading clears the fixed nav on short viewports; window
       formula rebalanced to keep its clearance.
   3 · Mobile open menu becomes a proper full-screen sheet (the V31 grid
       nav broke the old flex-based open layout).
   ========================================================================== */

/* ---------- 1 · Window-relative type ---------- */
.pwin { container-type: inline-size; }

.pwin .pwin__name { font-size: clamp(26px, 11.4cqw, 50px); }
.pwin .pwin__clock { font-size: clamp(19px, 7.2cqw, 31px); }
.pwin .pwin__codes { font-size: clamp(10.5px, 3.1cqw, 12.5px); }
.pwin .pwin__nickname { font-size: clamp(8.5px, 2.4cqw, 10px); }
.pwin .pwin__hud {
  padding: clamp(18px, 8cqw, 40px) clamp(14px, 7cqw, 36px);
}
.pwin .hud-rule { font-size: clamp(8px, 2.3cqw, 9.5px); }
.pwin .hud-rule span { white-space: nowrap; }
.pwin .pwin__links a { font-size: clamp(8.5px, 2.4cqw, 10px); }

/* ---------- 2 · Heading clear of the nav; window keeps its clearance ---------- */
.cabin__head { top: clamp(94px, 11vh, 114px); }
.pwin { width: min(440px, 84vw, calc((100vh - 366px) * 0.75)); }

/* ---------- 3 · Mobile menu: full-screen sheet ---------- */
@media (max-width: 860px) {
  .nav--v2.is-open {
    position: fixed;
    top: 4px;              /* below the pinned accent bar */
    left: 0; right: 0; bottom: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .nav--v2.is-open .nav__inner {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    min-height: 100%;
  }
  .nav--v2.is-open .nav__logo {
    order: -2;
    align-self: center;
    padding: 4px 0 14px;
  }
  .nav--v2.is-open .nav__cta {
    order: -1;
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    padding-bottom: 16px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.14);
  }
  .nav--v2.is-open .nav__manage { display: inline-block; }
  .nav--v2.is-open .nav__links {
    display: flex;
    flex-direction: column;
    width: 100%;
    padding: 20px 0 40px;
    gap: 2px;
  }
  .nav--v2.is-open .nav__links > li > a {
    display: block;
    width: 100%;
    padding: 12px 2px;
    font-size: 17px;
  }
  /* group headers + compact items; descriptions off in the sheet */
  .nav--v2.is-open .nav__drop-btn { padding: 16px 2px 6px; }
  .nav--v2.is-open .nav__panel a { padding: 10px 2px; }
  .nav--v2.is-open .nav__panel a strong { font-size: 15px; font-weight: 600; }
  .nav--v2.is-open .nav__panel a span { display: none; }
}

/* ===== css/v43.css ===== */
/* V43 — simplified cabin windows.
   Load AFTER v42.css. Pairs with js/v43.js (replaces v30.js), which
   renders only the destination name + "From" line inside each window.
   Corners rounded further toward a real cabin-window shape; all radii
   in cqw so they scale with the window (.pwin is an inline-size
   container from v42). */

/* ---------- Rounder plane-window corners ---------- */
.pwin .pwin__frame { border-radius: clamp(110px, 38cqw, 170px); }
.pwin .pwin__glass { border-radius: clamp(94px, 34cqw, 152px); }

/* ---------- HUD: name + from-line only, centered ---------- */
.pwin .pwin__hud {
  justify-content: center;
  text-align: center;
  padding: clamp(18px, 8cqw, 40px) clamp(12px, 5cqw, 24px);
}
.pwin .pwin__center { padding: 0; }
.pwin .pwin__name {
  /* 12cqw is the ceiling: "Albuquerque" can't wrap and must clear the
     HUD padding at every window width. */
  font-size: clamp(28px, 12cqw, 53px);
  letter-spacing: -0.03em;
  text-shadow:
    2px 0 0 rgba(151, 190, 229, 0.5),
    -2px 0 0 rgba(255, 199, 79, 0.4),
    0 3px 28px rgba(4, 10, 18, 0.55);
}
.pwin .pwin__codes {
  margin-top: clamp(10px, 3.2cqw, 16px);
  font-size: clamp(11px, 3.4cqw, 14px);
  letter-spacing: 0.12em;
  text-shadow: 0 2px 16px rgba(4, 10, 18, 0.6);
}

/* Center scrim — with the top/bottom HUD gone, the type sits over the
   lightest band of the photo; give it a soft pocket of shade. */
.pwin .pwin__tint {
  background:
    radial-gradient(120% 55% at 50% 50%, rgba(10, 20, 35, 0.38) 0%, rgba(10, 20, 35, 0) 68%),
    linear-gradient(180deg, rgba(12, 35, 63, 0.5) 0%, rgba(12, 35, 63, 0.14) 45%, rgba(10, 20, 35, 0.58) 100%);
}

/* ===== css/v44.css ===== */
/* V44 — back half of the page brought up to the front half's bar.
   Load AFTER v43.css. Pairs with js/v44.js (fleet slider + Elementor
   form submission). New: Fleet silhouette slider + Contact section.
   Redesigned: math band, charter band, newsletter (now the real
   Elementor "Newsletter" form).
   Dark run continues: departures → fleet → math band → charter photo,
   then the page lightens: newsletter (white) → contact (cloud) → footer. */

/* Shared wing-bar motif for V44 eyebrows (departure-board's .wing-bars
   is scoped under .departures, so V44 carries its own) */
.v44-bars { display: inline-flex; gap: 3px; margin-right: 10px; vertical-align: middle; }
.v44-bars i { display: block; width: 14px; height: 3px; border-radius: 2px; background: var(--sky-blue); }
.v44-bars i:nth-child(2) { width: 9px; opacity: 0.75; }
.v44-bars i:nth-child(3) { width: 5px; background: var(--yellow); }

/* ==========================================================================
   FLEET — silhouette slider
   ========================================================================== */
.fleet {
  position: relative;
  overflow: hidden;
  color: var(--white);
  /* pick up where the departures gradient ends (#1b3057) and settle back down */
  background:
    radial-gradient(110% 70% at 15% 0%, rgba(151, 190, 229, 0.12) 0%, rgba(151, 190, 229, 0) 55%),
    linear-gradient(180deg, #1b3057 0%, #142848 46%, var(--deep-blue) 100%);
  padding: clamp(70px, 9vw, 116px) 24px clamp(56px, 7vw, 88px);
}
.fleet__inner { max-width: var(--container); margin: 0 auto; }

.fleet__head { max-width: 640px; }
.fleet__eyebrow { color: var(--sky-blue); }
.fleet__head h2 {
  margin-top: 14px;
  font-size: clamp(30px, 4vw, 46px);
  font-weight: 800;
  letter-spacing: -0.015em;
}
.fleet__head h2 em { font-family: var(--font-serif); font-style: italic; font-weight: 400; color: var(--sky-blue); }
.fleet__head p { margin-top: 14px; color: rgba(255, 255, 255, 0.78); max-width: 54ch; }

/* ---------- Stage ---------- */
.fleet__stage {
  position: relative;
  display: flex;
  align-items: center;
  gap: clamp(4px, 2vw, 24px);
  margin-top: clamp(30px, 4vw, 54px);
}
.fleet__planes {
  position: relative;
  flex: 1;
  height: clamp(190px, 26vw, 320px);
}
/* thin "runway" line the planes sit above */
.fleet__ground {
  position: absolute;
  left: 6%; right: 6%; bottom: 12px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(151, 190, 229, 0.35) 18%, rgba(151, 190, 229, 0.35) 82%, transparent);
}
.fleet__ground::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: -7px;
  height: 6px;
  background-image: repeating-linear-gradient(90deg, rgba(151, 190, 229, 0.28) 0 1px, transparent 1px 42px);
}

.fleet__plane {
  position: absolute;
  top: 50%; left: 50%;
  width: min(58%, 560px);
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  transform: translate(-50%, -58%);
  transition: transform 0.65s var(--ease), opacity 0.65s var(--ease);
  will-change: transform, opacity;
}
.fleet__plane:focus-visible { outline: 3px solid var(--sky-blue); outline-offset: 8px; border-radius: 12px; }

/* silhouettes = alpha-mask plates, recolorable from CSS */
.fleet__sil {
  display: block;
  width: 100%;
  background: linear-gradient(180deg, #F7FAF1 0%, #D8E4F1 100%);
  -webkit-mask: var(--sil) center / contain no-repeat;
  mask: var(--sil) center / contain no-repeat;
  filter: drop-shadow(0 22px 30px rgba(4, 10, 18, 0.45));
  transition: background 0.5s var(--ease);
}
.fleet__sil--pc12 { --sil: url("../assets/img/sil-pc12.png"); aspect-ratio: 1000 / 305; }
.fleet__sil--do328 { --sil: url("../assets/img/sil-do328.png"); aspect-ratio: 1014 / 353; }
.fleet__sil--ka350 { --sil: url("../assets/img/sil-ka350.png"); aspect-ratio: 1000 / 335; }

/* slider states — set by v44.js */
.fleet__plane.is-active { z-index: 3; }
.fleet__plane.is-left,
.fleet__plane.is-right {
  z-index: 1;
  opacity: 0.26;
}
.fleet__plane.is-left { transform: translate(-118%, -46%) scale(0.42); }
.fleet__plane.is-right { transform: translate(18%, -46%) scale(0.42); }
.fleet__plane.is-left .fleet__sil,
.fleet__plane.is-right .fleet__sil {
  background: var(--sky-blue);
  filter: none;
}
.fleet__plane.is-active:hover .fleet__sil { background: linear-gradient(180deg, #FFFFFF 0%, #E2ECF7 100%); }

.fleet__nav {
  flex: none;
  width: 46px; height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid rgba(151, 190, 229, 0.45);
  background: rgba(12, 35, 63, 0.4);
  color: var(--sky-blue);
  cursor: pointer;
  transition: border-color 0.2s var(--ease), color 0.2s var(--ease), background 0.2s var(--ease);
}
.fleet__nav svg { width: 20px; height: 20px; }
.fleet__nav:hover { border-color: var(--yellow); color: var(--yellow); background: rgba(12, 35, 63, 0.7); }
.fleet__nav:focus-visible { outline: 3px solid var(--sky-blue); outline-offset: 3px; }

/* ---------- Info readout ---------- */
.fleet__info { text-align: center; margin-top: clamp(6px, 1.4vw, 18px); }
.fleet__info.is-swapping .fleet__name,
.fleet__info.is-swapping .fleet__line,
.fleet__info.is-swapping .fleet__specs,
.fleet__info.is-swapping .fleet__more { opacity: 0; transform: translateY(8px); }
.fleet__name,
.fleet__line,
.fleet__specs,
.fleet__more { transition: opacity 0.28s var(--ease), transform 0.28s var(--ease); }

.fleet__name {
  font-size: clamp(24px, 2.8vw, 34px);
  font-weight: 800;
  letter-spacing: -0.01em;
  color: #F3F7E9;
}
.fleet__line { margin-top: 6px; color: rgba(255, 255, 255, 0.75); font-size: 15.5px; }
.fleet__specs {
  display: flex;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 16px;
}
.fleet__specs span {
  font-family: var(--font-head);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--sky-blue);
  padding: 7px 14px;
  border: 1px solid rgba(151, 190, 229, 0.4);
  border-radius: 999px;
}
.fleet__more {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 18px;
  font-family: var(--font-head);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--yellow);
  text-decoration: none;
  padding-bottom: 4px;
  border-bottom: 1px dashed rgba(255, 199, 79, 0.5);
}
.fleet__more svg { width: 15px; height: 15px; }
.fleet__more:hover { border-bottom-style: solid; }

.fleet__dots {
  display: flex;
  justify-content: center;
  gap: 10px;
  margin-top: clamp(22px, 3vw, 34px);
}
.fleet__dots button {
  width: 9px; height: 9px;
  border-radius: 50%;
  border: 0;
  padding: 0;
  cursor: pointer;
  background: rgba(151, 190, 229, 0.35);
  transition: background 0.2s var(--ease), transform 0.2s var(--ease);
}
.fleet__dots button[aria-selected="true"] { background: var(--yellow); transform: scale(1.25); }
.fleet__dots button:focus-visible { outline: 3px solid var(--sky-blue); outline-offset: 3px; }

@media (max-width: 720px) {
  .fleet__stage { gap: 0; }
  .fleet__nav { position: absolute; z-index: 5; top: 38%; }
  .fleet__nav--prev { left: 2px; }
  .fleet__nav--next { right: 2px; }
  .fleet__planes { height: clamp(150px, 44vw, 220px); }
  .fleet__plane { width: 74%; }
  .fleet__plane.is-left { transform: translate(-128%, -46%) scale(0.4); }
  .fleet__plane.is-right { transform: translate(28%, -46%) scale(0.4); }
}

@media (prefers-reduced-motion: reduce) {
  .fleet__plane, .fleet__sil,
  .fleet__name, .fleet__line, .fleet__specs, .fleet__more { transition: none; }
}

/* ==========================================================================
   MATH BAND — instrument-plate restyle (markup keeps .stat/[data-count]
   hooks so home.js's count-up keeps working)
   ========================================================================== */
.math-band {
  background: var(--deep-blue);
  padding: clamp(58px, 7vw, 92px) 24px;
}
.math-band::after { content: none; }
.math-band__inner { max-width: var(--container); margin: 0 auto; }

.math-band__rule {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 10px;
  margin-bottom: clamp(26px, 3.4vw, 44px);
  border-bottom: 1px solid rgba(151, 190, 229, 0.28);
  font-family: var(--font-head);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(151, 190, 229, 0.85);
  position: relative;
}
.math-band__rule::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: -5px;
  height: 4px;
  background-image: repeating-linear-gradient(90deg, rgba(151, 190, 229, 0.3) 0 1px, transparent 1px 28px);
}

.math-band__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  text-align: left;
}
.math-band__grid .stat { padding: 4px clamp(18px, 2.6vw, 40px); }
.math-band__grid .stat:first-child { padding-left: 0; }
.math-band__grid .stat + .stat { border-left: 1px solid rgba(151, 190, 229, 0.22); }

.math-band .stat__num {
  font-family: var(--font-head);
  font-size: clamp(44px, 5.6vw, 74px);
  font-weight: 800;
  line-height: 1;
  letter-spacing: -0.01em;
  color: #F3F7E9;
  text-shadow: 1.5px 0 0 rgba(151, 190, 229, 0.5), -1.5px 0 0 rgba(255, 199, 79, 0.4);
}
.math-band .stat__num .unit {
  font-size: 0.32em;
  font-weight: 700;
  color: var(--sky-blue);
  margin-left: 6px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  text-shadow: none;
}
.math-band .stat__label {
  margin-top: 12px;
  font-family: var(--font-head);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.62);
  max-width: 22ch;
}

@media (max-width: 860px) {
  .math-band__grid { grid-template-columns: repeat(2, 1fr); row-gap: 38px; }
  .math-band__grid .stat:nth-child(3) { border-left: 0; padding-left: 0; }
}
@media (max-width: 420px) {
  .math-band__grid { grid-template-columns: 1fr; }
  .math-band__grid .stat { border-left: 0 !important; padding-left: 0; }
}

/* ==========================================================================
   CHARTER — full-bleed photo band, editorial left block
   ========================================================================== */
.charter { background-position: center 42%; }
.charter__overlay {
  background:
    linear-gradient(90deg, rgba(10, 20, 35, 0.88) 0%, rgba(10, 20, 35, 0.62) 42%, rgba(10, 20, 35, 0.18) 78%, rgba(10, 20, 35, 0.35) 100%),
    linear-gradient(180deg, rgba(12, 35, 63, 0.5) 0%, rgba(12, 35, 63, 0) 30%);
}
.charter__inner {
  padding: clamp(96px, 12vw, 150px) 24px;
  justify-content: flex-start;
}
.charter__eyebrow { color: var(--sky-blue); }
.charter__copy h2 {
  margin-top: 14px;
  font-family: var(--font-head);
  font-size: clamp(30px, 4vw, 46px);
  font-weight: 800;
  letter-spacing: -0.015em;
}
.charter__copy h2 em { font-family: var(--font-serif); font-style: italic; font-weight: 400; color: var(--yellow); }
.charter__copy p { margin-top: 14px; max-width: 50ch; color: rgba(255, 255, 255, 0.85); }
.charter__cta { margin-top: 28px; display: flex; align-items: center; gap: 18px; }
.charter__cta .btn svg { transition: transform 0.2s var(--ease); }
.charter__cta .btn:hover svg { transform: translateX(4px); }

/* ==========================================================================
   NEWSLETTER — midnight card, booking-bar idiom, real Elementor form
   ========================================================================== */
.newsletter { padding: clamp(72px, 9vw, 110px) 0; background: var(--white); text-align: left; }
.nl-card {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: clamp(28px, 4vw, 64px);
  align-items: center;
  background: var(--midnight);
  color: var(--white);
  border-radius: var(--radius);
  padding: clamp(30px, 4.6vw, 60px);
  box-shadow: 0 30px 70px rgba(12, 35, 63, 0.35);
  position: relative;
  overflow: hidden;
}
.nl-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(90% 120% at 100% 0%, rgba(151, 190, 229, 0.14) 0%, rgba(151, 190, 229, 0) 55%);
  pointer-events: none;
}
.nl-eyebrow {
  font-family: var(--font-head);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--sky-blue);
}
.nl-copy h2 {
  margin-top: 12px;
  font-family: var(--font-serif);
  font-weight: 400;
  font-size: clamp(28px, 3.4vw, 40px);
  color: #F3F7E9;
}
.nl-copy p { margin-top: 12px; color: rgba(255, 255, 255, 0.72); font-size: 15px; max-width: 44ch; }

.nl-form { position: relative; }
.nl-form__row { display: flex; gap: 0; }
.nl-form__row + .nl-form__row { margin-top: 0; }
.nl-field {
  flex: 1;
  padding: 14px 18px 12px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.16);
}
.nl-form__row .nl-field + .nl-field { border-left: 1px solid rgba(255, 255, 255, 0.16); }
.nl-field--grow { flex: 1.6; }
.nl-field label {
  display: block;
  font-family: var(--font-head);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.55);
}
.nl-field input {
  width: 100%;
  margin-top: 4px;
  background: transparent;
  border: 0;
  font-family: var(--font-head);
  font-size: 17px;
  font-weight: 600;
  color: #F3F7E9;
  padding: 2px 0;
}
.nl-field input::placeholder { color: rgba(255, 255, 255, 0.32); font-weight: 400; }
.nl-field input:focus { outline: none; }
.nl-field:focus-within { border-bottom-color: var(--yellow); }
.nl-field:focus-within label { color: var(--sky-blue); }

.nl-submit {
  flex: none;
  align-self: stretch;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 132px;
  border: 0;
  cursor: pointer;
  background: var(--yellow);
  color: var(--deep-blue);
  font-family: var(--font-head);
  font-weight: 800;
  font-size: 15px;
  letter-spacing: 0.02em;
  transition: background 0.2s var(--ease), transform 0.2s var(--ease);
}
.nl-submit:hover { background: #FFD474; }
.nl-submit:focus-visible { outline: 3px solid var(--sky-blue); outline-offset: 2px; }
.nl-submit[disabled] { opacity: 0.6; cursor: wait; }

.form-status {
  margin-top: 14px;
  font-size: 13.5px;
  min-height: 1.4em;
  color: var(--sky-blue);
}
.form-status.is-error { color: #FFB4A0; }
.form-status.is-success { color: #BFE8B2; }

@media (max-width: 860px) {
  .nl-card { grid-template-columns: 1fr; }
  .nl-form__row { flex-direction: column; }
  .nl-form__row .nl-field + .nl-field { border-left: 0; }
  .nl-form__row--submit { flex-direction: column; }
  .nl-submit { min-height: 54px; margin-top: 16px; }
}

/* ==========================================================================
   CONTACT — light section, white form card, wired to ContactUsForm
   ========================================================================== */
.contact {
  background: var(--cloud);
  padding: clamp(72px, 9vw, 116px) 0;
}
.contact__grid {
  display: grid;
  grid-template-columns: 0.85fr 1.15fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: start;
}
.contact__eyebrow { color: var(--steel); }
.contact__eyebrow .v44-bars i { background: var(--slate-blue); }
.contact__eyebrow .v44-bars i:nth-child(3) { background: var(--orange); }
.contact__copy h2 {
  margin-top: 14px;
  font-size: clamp(30px, 3.8vw, 44px);
  font-weight: 800;
  letter-spacing: -0.015em;
  color: var(--deep-blue);
}
.contact__copy h2 em { font-family: var(--font-serif); font-style: italic; font-weight: 400; color: var(--orange); }
.contact__copy p { margin-top: 14px; color: var(--steel); max-width: 46ch; }
.contact__copy .btn { margin-top: 26px; }

.contact__form {
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card);
  padding: clamp(24px, 3.4vw, 42px);
}
.cf-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.cf-row + .cf-row, .cf-row + .cf-field, .cf-field + .cf-row { margin-top: 16px; }
.contact__form > .cf-field { margin-top: 16px; }
.cf-field label {
  display: block;
  font-family: var(--font-head);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--slate-blue);
  margin-bottom: 6px;
}
.cf-field input,
.cf-field textarea {
  width: 100%;
  border: 1px solid var(--mist);
  border-radius: 10px;
  background: var(--cloud);
  padding: 13px 14px;
  font-family: var(--font-body);
  font-size: 15.5px;
  color: var(--deep-blue);
  transition: border-color 0.2s var(--ease), background 0.2s var(--ease);
}
.cf-field textarea { resize: vertical; min-height: 120px; }
.cf-field input:focus,
.cf-field textarea:focus {
  outline: none;
  border-color: var(--sky-blue);
  background: var(--white);
  box-shadow: 0 0 0 3px rgba(151, 190, 229, 0.3);
}
.cf-actions {
  margin-top: 22px;
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
}
.cf-actions .form-status { margin-top: 0; color: var(--steel); }
.cf-actions .form-status.is-error { color: #C2401D; }
.cf-actions .form-status.is-success { color: #2E7D43; }
.cf-actions .btn[disabled] { opacity: 0.6; cursor: wait; transform: none; box-shadow: none; }

@media (max-width: 860px) {
  .contact__grid { grid-template-columns: 1fr; }
  .cf-row { grid-template-columns: 1fr; }
}

/* ===== css/v45.css ===== */
/* V45 — fixes on V44. Load AFTER v44.css.
   (1) Fleet silhouettes switched from CSS mask plates to plain <img>
       (assets/img/sil-*-lit.png with the gradient baked in) — mask-image
       failed to rasterize in the embedded preview renderer, and <img>
       is bulletproof everywhere including the eventual WP embed.
   (2) Newsletter gains the Home ZIP field + consent note, submit is a
       full-width slab row.
   No v45.js — v44.js drives the slider/forms unchanged. */

/* ---------- Fleet: neutralize V44's mask styling on what is now an <img> ---------- */
.fleet__sil {
  -webkit-mask: none !important;
  mask: none !important;
  background: none;
  height: auto;
  aspect-ratio: auto;
}
/* active plane: lit plate as-is + shadow (inherited from v44 rule) */
/* side planes: the lit plate dims to a soft blue over the navy via the
   plane's own 0.26 opacity; just drop the shadow for depth */
.fleet__plane.is-left .fleet__sil,
.fleet__plane.is-right .fleet__sil {
  background: none;
  filter: none;
}
.fleet__plane.is-active:hover .fleet__sil {
  background: none;
  filter: drop-shadow(0 22px 30px rgba(4, 10, 18, 0.45)) brightness(1.06);
}

/* ---------- Newsletter: ZIP field + consent note + slab submit ---------- */
.nl-field--zip { flex: 0.7; min-width: 130px; }
.nl-opt {
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.1em;
  color: rgba(255, 255, 255, 0.35);
  margin-left: 6px;
}
.nl-form__row--submit { margin-top: 18px; }
.nl-form__row--submit .nl-submit {
  flex: 1;
  min-height: 54px;
  border-radius: 8px;
}
.nl-consent {
  margin-top: 12px;
  font-size: 11.5px;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.45);
}
.nl-consent + .form-status { margin-top: 8px; }

@media (max-width: 860px) {
  .nl-field--zip { flex: 1; }
}

/* ===== css/v48.css ===== */
/* V48 — load AFTER v45.css. Pairs with js/v48.js (replaces v43.js) and
   js/departure-board-v48.js (replaces departure-board.js).
   (1) Cabin: the pin is short now (intro + one slide), then prev/next
       arrows browse the remaining destinations in place.
   (2) Connect: newsletter + contact merged into one midnight card with a
       mode switcher; the contact form now wears the dark nl-field idiom. */

/* ==========================================================================
   CABIN ARROWS
   ========================================================================== */
.cabin__nav {
  position: absolute;
  top: 54%;
  transform: translateY(-50%);
  z-index: 30;
  width: 46px;
  height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid rgba(151, 190, 229, 0.45);
  background: rgba(12, 35, 63, 0.55);
  color: var(--sky-blue);
  cursor: pointer;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s var(--ease), border-color 0.2s var(--ease), color 0.2s var(--ease);
}
.cabin__nav svg { width: 20px; height: 20px; }
.cabin__nav--prev { left: clamp(10px, 3.4vw, 46px); }
.cabin__nav--next { right: clamp(10px, 3.4vw, 46px); }
.cabin--browse .cabin__nav { opacity: 1; pointer-events: auto; }
.cabin__nav:hover { border-color: var(--yellow); color: var(--yellow); }
.cabin__nav:focus-visible { outline: 3px solid var(--sky-blue); outline-offset: 3px; }
.cabin__nav[disabled] { opacity: 0.3; pointer-events: none; }

/* arrow-driven moves animate; scroll-driven moves stay immediate */
.cabin--manual .cabin__track { transition: transform 0.65s var(--ease); }
.cabin--manual .pwin { transition: opacity 0.45s var(--ease), transform 0.65s var(--ease); }
.cabin--manual .pwin__glass > img { transition: transform 0.65s var(--ease); }

@media (prefers-reduced-motion: reduce) {
  .cabin__nav { display: none; }
}

/* ==========================================================================
   CONNECT — merged newsletter / contact card
   ========================================================================== */
.connect .nl-card { align-items: start; }

.connect__switch {
  display: inline-flex;
  gap: 6px;
  padding: 5px;
  margin-bottom: 20px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.04);
}
.connect__switch [role="tab"] {
  border: 0;
  cursor: pointer;
  background: transparent;
  color: rgba(255, 255, 255, 0.65);
  font-family: var(--font-head);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 9px 18px;
  border-radius: 999px;
  transition: background 0.2s var(--ease), color 0.2s var(--ease);
}
.connect__switch [role="tab"][aria-selected="true"] {
  background: var(--yellow);
  color: var(--deep-blue);
}
.connect__switch [role="tab"]:focus-visible { outline: 3px solid var(--sky-blue); outline-offset: 2px; }

.connect .nl-copy .btn { margin-top: 24px; }
.connect .nl-copy .btn[hidden] { display: none; } /* .btn's display beats the hidden attr */
.connect .nl-form[hidden] { display: none; }

/* dark-idiom textarea for the contact form's message field */
.connect .nl-field textarea {
  width: 100%;
  margin-top: 4px;
  background: transparent;
  border: 0;
  resize: vertical;
  min-height: 96px;
  font-family: var(--font-head);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.5;
  color: #F3F7E9;
  padding: 2px 0;
}
.connect .nl-field textarea:focus { outline: none; }
.connect .nl-field textarea::placeholder { color: rgba(255, 255, 255, 0.32); font-weight: 400; }

/* ===== css/v49.css ===== */
/* V49 — load AFTER v48.css. Fix pack + connect front door.
   (1) accent bar: WP template's GTM noscript is body's first child, so
       v32's :first-child selector never matched on the live site.
   (2) mobile nav: the empty primary <nav> was eating a flex slot and
       pushing the logo toward center — logo left, cta right.
   (3) connect form rows share one grid so columns align row-to-row.
   (4) booking swap re-asserted: true circle, centered on the divider.
   (5) connect "front door": two big choices before the forms show. */

/* (1) */
body > .accent-bar:first-of-type {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 110;
}

/* (2) */
@media (max-width: 860px) {
  .nav__inner > nav { display: none; }
  .nav.is-open .nav__inner > nav { display: block; width: 100%; order: 3; }
  .nav__logo { margin-right: auto; }
  .nav__cta { margin-left: auto; }
}

/* (3) */
.connect .nl-form__row {
  display: grid;
  grid-template-columns: 1.55fr 1fr;
}
.connect .nl-form__row--submit { grid-template-columns: 1fr; }
.connect .nl-field--grow, .connect .nl-field--zip { flex: none; min-width: 0; }
@media (max-width: 860px) {
  .connect .nl-form__row { grid-template-columns: 1fr; }
}

/* (4) */
.flight-search-widget .ias-search-widget div.swapAirports {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.flight-search-widget .ias-search-widget .swapAirports a {
  width: 36px !important;
  height: 36px !important;
  padding: 0 !important;
  border-radius: 50% !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: none !important;
}

/* (5) — the choice screen shows first; picking a door reveals the forms */
.connect__front { display: grid; gap: 14px; }
.connect__door {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  text-align: left;
  padding: 22px 24px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 14px;
  color: var(--white);
  cursor: pointer;
  transition: border-color 0.2s var(--ease), background 0.2s var(--ease), transform 0.2s var(--ease);
}
.connect__door:hover { border-color: var(--yellow); background: rgba(255, 255, 255, 0.07); transform: translateY(-2px); }
.connect__door:focus-visible { outline: 3px solid var(--sky-blue); outline-offset: 3px; }
.connect__door-title {
  font-family: var(--font-head);
  font-size: 18px;
  font-weight: 800;
  color: #F3F7E9;
}
.connect__door-sub { margin-top: 4px; font-size: 13.5px; color: rgba(255, 255, 255, 0.62); }
.connect__door svg { width: 22px; height: 22px; flex: none; color: var(--yellow); }
.connect__forms .connect__switch,
.connect__forms .nl-form { display: none; }
.connect--open .connect__front { display: none; }
.connect--open .connect__forms .connect__switch { display: inline-flex; animation: aa-fadeup 0.35s var(--ease); }
.connect--open .connect__forms .nl-form:not([hidden]) { display: block; animation: aa-fadeup 0.35s var(--ease); }
@keyframes aa-fadeup {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .connect--open .connect__switch, .connect--open .nl-form:not([hidden]) { animation: none; }
}

/* ===== css/v50.css ===== */
/* V50 — load AFTER v49.css. Cabin breathing room:
   heading was crowding the window tops (live screenshot) — reserve more
   vertical space and drop the track slightly. */
.pwin { width: min(440px, 84vw, calc((100vh - 412px) * 0.75)); }
.cabin__track { top: 56%; }
.cabin__head { padding-bottom: 8px; }

/* ===== css/v51.css ===== */
/* V51 — load AFTER v50.css. Math band removed; charter rebuilt as a
   midnight card on white (matches the connect card idiom) with the
   Charters lifestyle photo. Old full-bleed .charter styles neutralized. */
.charter--card {
  background: var(--white) !important;
  padding: clamp(72px, 9vw, 110px) 0;
}
.charter--card .charter__overlay { display: none; }
.charter-card {
  display: grid;
  grid-template-columns: 0.95fr 1.05fr;
  align-items: stretch;
  background: var(--midnight);
  color: var(--white);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: 0 30px 70px rgba(12, 35, 63, 0.35);
}
.charter-card__copy {
  padding: clamp(30px, 4.6vw, 60px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
}
.charter-card__copy h2 {
  margin-top: 14px;
  font-family: var(--font-head);
  font-size: clamp(28px, 3.4vw, 42px);
  font-weight: 800;
  letter-spacing: -0.015em;
}
.charter-card__copy h2 em { font-family: var(--font-serif); font-style: italic; font-weight: 400; color: var(--yellow); }
.charter-card__copy p:not(.eyebrow) { margin-top: 14px; max-width: 44ch; color: rgba(255, 255, 255, 0.75); font-size: 15.5px; }
.charter-card__copy .btn { margin-top: 26px; }
.charter-card__copy .btn svg { transition: transform 0.2s var(--ease); }
.charter-card__copy .btn:hover svg { transform: translateX(4px); }
.charter-card__photo { margin: 0; position: relative; min-height: 340px; }
.charter-card__photo img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: 62% 40%; /* keep the plane + walkers framed */
}
.charter-card__photo::after { /* seat the photo into the card */
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(10, 20, 35, 0.45) 0%, rgba(10, 20, 35, 0) 30%);
}
@media (max-width: 860px) {
  .charter-card { grid-template-columns: 1fr; }
  .charter-card__photo { min-height: 260px; order: -1; }
  .charter-card__photo::after { background: linear-gradient(180deg, rgba(10, 20, 35, 0) 60%, rgba(10, 20, 35, 0.5) 100%); }
}

/* ===== css/v52.css ===== */
/* V52 — load AFTER v51.css.
   Next-arrow nudges sideways until first used, so browsers notice it. */
@keyframes aa-arrow-nudge {
  0%, 58%, 100% { transform: translateY(-50%) translateX(0); }
  30% { transform: translateY(-50%) translateX(8px); }
}
.cabin--browse:not(.cabin--used) .cabin__nav--next:not(:hover):not([disabled]) {
  animation: aa-arrow-nudge 1.7s var(--ease) infinite;
}
@media (prefers-reduced-motion: reduce) {
  .cabin__nav--next { animation: none !important; }
}

/* ===== css/v53b.css ===== */
/* V53-B — one continuous night flight. Load AFTER v52.css.
   The white interludes join the navy system: charter + stay-in-touch
   sections sit on deep blue, and their midnight cards read as elevation
   through a hairline and a darker surface instead of a color break. */

.charter--card {
  background: linear-gradient(180deg, var(--deep-blue) 0%, #0E2543 100%) !important;
}
.newsletter {
  background: linear-gradient(180deg, #0E2543 0%, var(--deep-blue) 100%);
}
.charter-card,
.nl-card {
  border: 1px solid rgba(151, 190, 229, 0.22);
  box-shadow: 0 34px 80px rgba(4, 10, 18, 0.5);
}

/* only the charter keeps its label (it names a sibling brand);
   the rest of the eyebrows retire with the new copy */
.aa-rm-eyebrow,
.dep-header .eyebrow,
.fleet__eyebrow,
.nl-eyebrow { display: none; }

/* ===== css/v54b.css ===== */
/* V54-B — load AFTER v53b.css. Same night flight, more altitude:
   sections shift between navy depths instead of one flat blue; glow
   fields sit behind the two cards, which go liquid-glass so the light
   reads through them. Charter + connect stack like a card deck. */

/* ---- altitude shifts ---- */
.cabin {
  background: radial-gradient(120% 90% at 50% 40%, #15263F 0%, #0C1B30 55%, #071120 100%);
}
.departures {
  background:
    radial-gradient(120% 90% at 82% -10%, rgba(151, 190, 229, 0.22) 0%, rgba(151, 190, 229, 0) 55%),
    linear-gradient(178deg, #16304F 0%, #102844 60%, #0D2138 100%);
}
.charter--card {
  background: linear-gradient(180deg, #0D2138 0%, #0B1D33 100%) !important;
}
.newsletter { background: linear-gradient(180deg, #0B1D33 0%, #081627 100%); }

/* ---- glow fields behind the cards ---- */
.charter--card .container,
.newsletter .container { position: relative; }
.charter--card .container::before,
.newsletter .container::before {
  content: "";
  position: absolute;
  width: clamp(320px, 40vw, 560px);
  height: clamp(320px, 40vw, 560px);
  border-radius: 50%;
  filter: blur(48px);
  pointer-events: none;
}
.charter--card .container::before {
  left: -120px; top: -70px;
  background: radial-gradient(circle, rgba(151, 190, 229, 0.26), transparent 66%);
}
.newsletter .container::before {
  right: -100px; bottom: -60px;
  background: radial-gradient(circle, rgba(233, 138, 21, 0.16), transparent 66%);
}

/* ---- liquid glass cards ---- */
.charter-card,
.nl-card {
  background: rgba(13, 26, 45, 0.58);
  -webkit-backdrop-filter: blur(20px) saturate(1.3);
  backdrop-filter: blur(20px) saturate(1.3);
  border: 1px solid rgba(151, 190, 229, 0.3);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.09), 0 34px 80px rgba(4, 10, 18, 0.55);
}

/* ---- card deck stack ---- */
.newsletter { padding-top: 0; margin-top: calc(-1 * clamp(64px, 8vw, 120px)); }
.charter--card .charter-card { position: relative; z-index: 1; }
.connect .nl-card { position: relative; z-index: 2; }

/* ===== css/v54b2.css ===== */
/* V54-B+ — load AFTER v54b.css. The night pushed further:
   starfields in the deep sections, a generated contrail plate drifting
   behind the card deck, and sharper glass. All decorative layers are
   pure background/pseudo layers: zero DOM, zero JS. */

/* ---- starfield: tiny dot constellation, two densities ---- */
.cabin {
  background:
    radial-gradient(1px 1px at 12% 22%, rgba(255,255,255,0.5) 50%, transparent 51%),
    radial-gradient(1px 1px at 78% 12%, rgba(255,255,255,0.35) 50%, transparent 51%),
    radial-gradient(1.5px 1.5px at 62% 34%, rgba(151,190,229,0.5) 50%, transparent 51%),
    radial-gradient(1px 1px at 33% 9%, rgba(255,255,255,0.3) 50%, transparent 51%),
    radial-gradient(1px 1px at 90% 42%, rgba(255,255,255,0.25) 50%, transparent 51%),
    radial-gradient(120% 90% at 50% 40%, #15263F 0%, #0C1B30 55%, #071120 100%);
}
.newsletter {
  background:
    radial-gradient(1px 1px at 16% 30%, rgba(255,255,255,0.4) 50%, transparent 51%),
    radial-gradient(1px 1px at 84% 18%, rgba(255,255,255,0.3) 50%, transparent 51%),
    radial-gradient(1.5px 1.5px at 45% 80%, rgba(151,190,229,0.4) 50%, transparent 51%),
    radial-gradient(1px 1px at 70% 60%, rgba(255,255,255,0.22) 50%, transparent 51%),
    linear-gradient(180deg, #0B1D33 0%, #081627 100%);
}

/* ---- contrails drifting behind the card deck ---- */
.charter--card { position: relative; overflow: hidden; }
.charter--card::before {
  content: "";
  position: absolute;
  inset: -6% -4%;
  background: url("../assets/img/contrails-alpha.webp") center / cover no-repeat;
  opacity: 0.14;
  pointer-events: none;
}
.newsletter { position: relative; overflow: hidden; }
.newsletter::after {
  content: "";
  position: absolute;
  inset: -10% -6%;
  background: url("../assets/img/contrails-alpha.webp") center / cover no-repeat;
  transform: scaleX(-1) rotate(6deg);
  opacity: 0.09;
  pointer-events: none;
}
/* keep the cards above the atmosphere */
.charter--card .container, .newsletter .container { position: relative; z-index: 1; }

/* ---- crisper glass ---- */
.charter-card, .nl-card {
  background: rgba(12, 24, 42, 0.5);
  -webkit-backdrop-filter: blur(26px) saturate(1.4) brightness(1.06);
  backdrop-filter: blur(26px) saturate(1.4) brightness(1.06);
  border-color: rgba(151, 190, 229, 0.36);
}

/* ===== css/v55.css ===== */
/* V55 — load AFTER v54b2.css. The card deck becomes a scroll animation:
   the two cards sit apart at rest, and the keep-in-touch card slides up
   to stack onto the charter card as you scroll (transform driven by
   js/v55.js on .connect .container — NOT on .nl-card, whose .reveal
   transition owns that element's transform). */

/* undo the static overlap: real gap between the cards */
.newsletter {
  margin-top: 0;
  padding-top: clamp(150px, 18vw, 260px); /* runway the card travels through */
}
.connect .container {
  position: relative;
  z-index: 2;
  will-change: transform;
}
.charter--card .charter-card { z-index: 1; }

@media (prefers-reduced-motion: reduce) {
  .newsletter { padding-top: clamp(70px, 9vw, 120px); }
  .connect .container { transform: none !important; }
}

/* ===== css/v56.css ===== */
/* V56 — load AFTER v55.css. The card-deck scroll animation is retired:
   the two cards sit statically about 100px apart. */
.newsletter { padding-top: clamp(72px, 9vw, 100px); }
.connect .container { transform: none !important; will-change: auto; }
