/* ============================================================
   LIVING ATLAS — content-area design layer (approved v2)
   Fonts: Poppins only. Colors: design-tokens values only
   (scene gradients interpolate #1E284A/#2E74B8/#F1C9AE).
   Every class is atl- prefixed; legacy-class restyles are
   scoped under .atl-page. Loaded ONLY by atlas templates.
   ============================================================ */

.atl-page {
  --atl-ink: var(--ag-color-text-heading, #1e284a);
  --atl-body: var(--ag-color-text-body, #2a2a55);
  --atl-muted: var(--ag-color-text-muted, #6b7491);
  --atl-blue: var(--ag-color-brand-primary, #2e74b8);
  --atl-sand: var(--ag-color-brand-accent, #f1c9ae);
  --atl-good: var(--ag-color-success, #059669);
  --atl-warn: var(--ag-color-warning, #ea580c);
  --atl-glass: rgba(255, 255, 255, .86);
  --atl-glass-border: var(--ag-color-brand-primary-softer, rgba(46, 116, 184, .12));
  --atl-shadow-soft: var(--ag-shadow-md, 0 10px 22px rgba(24, 33, 51, .08));
  --atl-shadow-lift: var(--ag-shadow-lg, 0 18px 36px rgba(18, 32, 38, .12));
  --atl-r: var(--ag-radius-3xl, 16px);
  --atl-dusk: linear-gradient(158deg, #1e284a 0%, #2e74b8 55%, #f1c9ae 100%);
  position: relative;
}

/* aurora wash behind the content column */
.atl-page::before {
  content: ""; position: absolute; inset: -26px -40px auto; height: 520px;
  pointer-events: none; z-index: 0;
  background:
    radial-gradient(560px 300px at 12% 0%, rgba(46, 116, 184, .10), transparent 68%),
    radial-gradient(520px 280px at 88% 4%, rgba(241, 201, 174, .18), transparent 70%);
}
.atl-page > * { position: relative; z-index: 1; }

/* ---------- data voice (Poppins, tracked caps) ---------- */
.atl-mono {
  font-weight: 600; font-size: 10px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--atl-muted);
}

/* ---------- horizon header ---------- */
.atl-horizon {
  border-radius: 20px; overflow: hidden; position: relative; isolation: isolate;
  color: #fdf6ee; padding: 26px 28px 24px;
  background: var(--atl-dusk);
  box-shadow: 0 18px 44px rgba(30, 40, 74, .28);
}
.atl-horizon::before { /* star field */
  content: ""; position: absolute; inset: 0; z-index: -1; opacity: .5;
  background-image:
    radial-gradient(1.5px 1.5px at 12% 24%, rgba(255,255,255,.9), transparent 55%),
    radial-gradient(1px 1px at 32% 12%, rgba(255,255,255,.7), transparent 55%),
    radial-gradient(1.5px 1.5px at 57% 20%, rgba(255,255,255,.8), transparent 55%),
    radial-gradient(1px 1px at 78% 9%, rgba(255,255,255,.7), transparent 55%);
}
.atl-horizon::after { /* terrain silhouette */
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 52px; z-index: -1;
  background: rgba(20, 27, 51, .55);
  clip-path: polygon(0 78%, 7% 58%, 13% 74%, 22% 40%, 30% 70%, 39% 52%, 47% 78%, 58% 34%, 66% 66%, 74% 48%, 83% 72%, 91% 55%, 100% 70%, 100% 100%, 0 100%);
}
.atl-horizon-kicker {
  display: inline-flex; align-items: center; gap: 8px; margin-bottom: 8px;
  font-weight: 600; font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase;
  color: var(--atl-sand);
}
.atl-horizon-kicker::before { content: ""; width: 26px; height: 1px; background: currentColor; opacity: .7; }
.atl-horizon h1 { font-weight: 800; font-size: 31px; letter-spacing: -.01em; line-height: 1.08; color: #fff; margin: 0; }
.atl-horizon-sub { font-size: 13.5px; color: rgba(253, 246, 238, .85); margin-top: 7px; max-width: 560px; }
.atl-horizon-meta { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 16px; }
.atl-coord-chip {
  display: inline-flex; align-items: center; gap: 7px; padding: 6px 11px; border-radius: 999px;
  font-weight: 600; font-size: 10px; letter-spacing: .1em; text-transform: uppercase;
  background: rgba(12, 18, 38, .38); color: #f4e9dd;
  border: 1px solid rgba(241, 201, 174, .35);
  backdrop-filter: blur(6px);
}
.atl-coord-chip .atl-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--atl-sand); box-shadow: 0 0 8px var(--atl-sand); }

/* ---------- glass surface ---------- */
.atl-glass {
  background: var(--atl-glass);
  backdrop-filter: saturate(1.15) blur(14px);
  -webkit-backdrop-filter: saturate(1.15) blur(14px);
  border: 1px solid var(--atl-glass-border);
  border-radius: var(--atl-r);
  box-shadow: var(--atl-shadow-soft);
}

/* ---------- legacy components restyled inside the atlas page ---------- */
.atl-page .results-summary,
.atl-page .filters-panel > form,
.atl-page .filters-panel .card,
.atl-page .filters-panel fieldset {
  background: var(--atl-glass);
  border: 1px solid var(--atl-glass-border);
  border-radius: var(--atl-r);
  box-shadow: var(--atl-shadow-soft);
}
.atl-page .results-summary { padding: 12px 16px; }
.atl-page .results-chip {
  display: inline-flex; align-items: center; height: 30px; padding: 0 13px; border-radius: 999px;
  background: #fff; border: 1px solid #dbe3f0; font-size: 12px; font-weight: 600; color: var(--atl-body);
}
.atl-page .results-toggle {
  border-radius: 999px; padding: 4px 14px; font-weight: 600; text-decoration: none;
}
.atl-page .results-toggle.is-active {
  background: linear-gradient(135deg, #22406d, var(--atl-blue)); color: #fff;
  box-shadow: 0 5px 14px rgba(46, 116, 184, .35);
}

/* ---------- panorama result card ---------- */
/* Stack panoramas full-width: the reused legacy .grid-cards container is a
   2–3 col grid (static/styles.css) which would crush the wide panorama body.
   The skeleton selector is deliberately gated on .is-loading — an unscoped
   .atl-page .grid-cards--skeleton (0,2,0) out-cascades the resting-state hide
   rule (.results-list .grid-cards--skeleton{display:none}, styles.css:2367)
   and pins a ghost skeleton above the real results forever. */
.atl-page .grid-cards--real,
.atl-page .results-list.is-loading .grid-cards--skeleton {
  display: flex; flex-direction: column; gap: 14px;
}
.atl-panorama {
  display: grid; grid-template-columns: 252px 1fr; overflow: hidden;
  transition: transform .2s ease, box-shadow .2s ease;
}
.atl-panorama:hover { transform: translateY(-3px); box-shadow: var(--atl-shadow-lift); }
.atl-panorama .atl-media { position: relative; min-height: 186px; }
.atl-panorama .atl-media img,
.atl-panorama .atl-media .atl-scene { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.atl-card-body { padding: 16px 18px 14px; display: flex; flex-direction: column; gap: 7px; min-width: 0; }
.atl-card-title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.atl-card-title { font-weight: 700; font-size: 16px; color: var(--atl-ink); letter-spacing: -.01em; line-height: 1.25; margin: 0; }
.atl-card-loc { display: flex; align-items: center; gap: 7px; font-size: 12px; color: var(--atl-muted); }
.atl-micro-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 2px; }
.atl-micro {
  display: inline-flex; align-items: center; gap: 5px; height: 24px; padding: 0 9px; border-radius: 7px;
  background: var(--ag-color-brand-primary-softer, rgba(46, 116, 184, .12));
  color: var(--atl-ink); font-size: 10.5px; font-weight: 600;
}
.atl-card-foot {
  margin-top: auto; display: flex; align-items: flex-end; justify-content: space-between; gap: 12px;
  padding-top: 9px; border-top: 1px dashed rgba(46, 116, 184, .2);
}
.atl-type-flag {
  position: absolute; top: 10px; left: 10px; z-index: 2;
  display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 10px; border-radius: 999px;
  background: rgba(12, 18, 38, .5); backdrop-filter: blur(6px);
  border: 1px solid rgba(255, 255, 255, .22);
  color: #fbf3e9; font-size: 10px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
}

/* review lockup + designed zero state */
.atl-review { display: inline-flex; align-items: baseline; gap: 7px; white-space: nowrap; }
.atl-review .atl-star { color: var(--ag-color-rating-fill, #f4b45c); font-size: 13px; }
.atl-review .atl-score { font-weight: 800; font-size: 15px; color: var(--atl-ink); }
.atl-review .atl-count { font-size: 11.5px; color: var(--atl-muted); }
.atl-badge-new {
  display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 11px; border-radius: 999px;
  background: linear-gradient(135deg, rgba(241, 201, 174, .5), rgba(241, 201, 174, .22));
  border: 1px solid rgba(217, 155, 102, .45);
  color: var(--atl-ink); font-size: 11px; font-weight: 700; letter-spacing: .02em; white-space: nowrap;
}
.atl-badge-new::before { content: "✦"; font-size: 10px; }

/* price lockup */
.atl-price { text-align: right; }
.atl-price .atl-price-from { font-weight: 600; font-size: 9px; letter-spacing: .18em; text-transform: uppercase; color: var(--atl-muted); }
.atl-price .atl-price-value { font-weight: 800; font-size: 22px; color: var(--atl-ink); line-height: 1.05; }
.atl-price .atl-price-unit { font-size: 11px; font-weight: 600; color: var(--atl-muted); }

/* globe link in card foot */
.atl-globe-link {
  font-weight: 600; font-size: 10px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--atl-blue); text-decoration: none;
}

/* ---------- scene postcards (official photo-less fallback) ---------- */
.atl-scene { position: relative; overflow: hidden; background: var(--atl-dusk); }
.atl-scene .atl-sun {
  position: absolute; width: 34%; aspect-ratio: 1; border-radius: 50%; top: 14%; right: 12%;
  background: radial-gradient(circle, #ffe9cf 0 42%, rgba(255, 233, 207, .35) 60%, transparent 72%);
}
.atl-scene .atl-land { position: absolute; left: -2%; right: -2%; bottom: -1px; height: 50%; }
.atl-scene .atl-land i { display: block; height: 100%; background: linear-gradient(180deg, #22335c, #121a35); }
.atl-scene-caption {
  position: absolute; left: 12px; bottom: 10px; z-index: 2;
  display: flex; align-items: center; gap: 6px;
  font-weight: 600; font-size: 8.5px; letter-spacing: .14em; text-transform: uppercase;
  color: rgba(255, 248, 240, .85);
}
.atl-scene-caption::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: var(--atl-sand); }
.atl-scene-scrim { position: absolute; inset: auto 0 0; height: 55%; background: linear-gradient(180deg, transparent, rgba(13, 18, 38, .62)); z-index: 1; }

.atl-scene--petra { background: linear-gradient(165deg, #1a2547 0%, #3d6ba3 45%, #d9ab7f 78%, #f1c9ae 100%); }
.atl-scene--petra .atl-land { height: 58%; }
.atl-scene--petra .atl-land i { clip-path: polygon(0 100%, 0 34%, 12% 30%, 13% 62%, 20% 60%, 21% 12%, 36% 8%, 38% 58%, 46% 55%, 48% 26%, 60% 22%, 62% 60%, 74% 58%, 76% 30%, 88% 26%, 90% 64%, 100% 60%, 100% 100%); }
.atl-scene--wadirum { background: linear-gradient(168deg, #141d3a 0%, #28518a 52%, #d9a06b 84%, #f1c9ae 100%); }
.atl-scene--wadirum .atl-land i { clip-path: polygon(0 100%, 0 55%, 10% 40%, 24% 58%, 33% 30%, 45% 62%, 56% 44%, 68% 66%, 79% 38%, 90% 58%, 100% 46%, 100% 100%); background: linear-gradient(180deg, #1c2a4e, #0f1630); }
.atl-scene--deadsea { background: linear-gradient(172deg, #1b3a63 0%, #2e74b8 50%, #7fa8d1 70%, #f0dcc0 100%); }
.atl-scene--deadsea .atl-land { height: 34%; }
.atl-scene--deadsea .atl-land i { clip-path: polygon(0 100%, 0 62%, 16% 55%, 30% 66%, 47% 52%, 63% 64%, 80% 50%, 100% 60%, 100% 100%); background: linear-gradient(180deg, rgba(22, 34, 66, .92), #0e1832); }
.atl-scene--citadel { background: linear-gradient(160deg, #1e284a 0%, #35619c 46%, #d9a97e 80%, #f1c9ae 100%); }
.atl-scene--citadel .atl-land { height: 52%; }
.atl-scene--citadel .atl-land i { clip-path: polygon(0 100%, 0 48%, 9% 46%, 10% 30%, 13% 30%, 14% 46%, 26% 44%, 27% 20%, 30% 18%, 33% 20%, 34% 42%, 48% 40%, 49% 26%, 56% 24%, 57% 44%, 70% 42%, 71% 28%, 82% 26%, 83% 48%, 100% 44%, 100% 100%); background: linear-gradient(180deg, #263764, #131b38); }
.atl-scene--skyline { background: linear-gradient(165deg, #111834 0%, #22406d 46%, #b8875e 78%, #efc4a0 100%); }
.atl-scene--skyline .atl-land { height: 62%; }
.atl-scene--skyline .atl-land i { clip-path: polygon(0 100%, 0 70%, 8% 68%, 9% 42%, 12% 40%, 13% 66%, 22% 64%, 23% 18%, 26% 10%, 29% 18%, 30% 60%, 41% 58%, 42% 34%, 47% 30%, 48% 62%, 58% 60%, 59% 8%, 61% 2%, 63% 8%, 64% 56%, 74% 54%, 75% 36%, 80% 32%, 81% 60%, 92% 58%, 93% 44%, 100% 42%, 100% 100%); background: linear-gradient(180deg, #16203f, #0a0f24); }
.atl-scene--reef { background: linear-gradient(170deg, #143a5e 0%, #2e74b8 54%, #9cc4de 78%, #f1e2c8 100%); }
.atl-scene--reef .atl-land { height: 30%; }
.atl-scene--reef .atl-land i { clip-path: polygon(0 100%, 0 70%, 12% 58%, 25% 72%, 40% 55%, 55% 70%, 72% 52%, 86% 68%, 100% 58%, 100% 100%); background: linear-gradient(180deg, rgba(14, 30, 56, .9), #0a1a30); }

/* ---------- endcap (replaces bare pagination footer line) ---------- */
.atl-endcap { display: flex; align-items: center; gap: 14px; margin: 26px 0 8px; }
.atl-endcap p { margin: 0; white-space: nowrap; font-weight: 600; font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--atl-muted); }
.atl-route-line { flex: 1; height: 2px; border-radius: 2px; background-image: linear-gradient(90deg, rgba(46,116,184,.45) 0 4px, transparent 4px 11px); background-size: 11px 2px; }
.atl-route-line--tail { max-width: 60px; }

/* ---------- one orchestrated load ---------- */
@keyframes atl-rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.atl-rise { animation: atl-rise .55s cubic-bezier(.22, .8, .3, 1) both; }
.atl-rise-1 { animation-delay: .04s; } .atl-rise-2 { animation-delay: .1s; }
.atl-rise-3 { animation-delay: .16s; } .atl-rise-4 { animation-delay: .22s; }

@media (prefers-reduced-motion: reduce) {
  .atl-rise, .atl-rise-1, .atl-rise-2, .atl-rise-3, .atl-rise-4 { animation: none; }
  .atl-panorama, .atl-panorama:hover { transition: none; transform: none; }
}

@media (max-width: 767.98px) {
  .atl-panorama { grid-template-columns: 1fr; }
  .atl-panorama .atl-media { min-height: 150px; position: relative; }
  .atl-horizon h1 { font-size: 25px; }
}

/* ---------- results layout: proper filter rail (P1 polish) ----------
   The legacy Bootstrap col-md-4/col-lg-3 gave the filter aside ~200px on a
   896px canvas — cramped fields, wrong proportions. On >=768px the results
   row becomes a 300px rail + fluid results grid; the rail is sticky so long
   filter stacks scroll independently. Mobile keeps the off-canvas panel. */
@media (min-width: 768px) {
  .atl-page .atl-results-row {
    display: grid;
    grid-template-columns: 300px minmax(0, 1fr);
    gap: 18px;
    align-items: start;
  }
  .atl-page .atl-results-row__toggle { display: none; }
  /* neutralize the Bootstrap column sizing inside the grid */
  .atl-page .atl-results-row > .filters-panel,
  .atl-page .atl-results-row > section {
    width: auto;
    max-width: none;
    flex: none;
    padding-inline: 0;
  }
  .atl-page .atl-results-row > .filters-panel {
    position: sticky;
    top: 84px;
    max-height: calc(100vh - 104px);
    overflow-y: auto;
    scrollbar-width: thin;
  }
}
.atl-page .filters-panel .results-filters-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

/* ============ P2 — results verticals ============ */

/* vibe/category chip row (restyle of ag-category-pills inside atlas) */
.atl-page .ag-category-pill {
  border-radius: 999px; border: 1px solid #dbe3f0; background: #fff;
  font-weight: 600; font-size: 12.5px; color: var(--atl-body);
  padding: 6px 14px; text-decoration: none;
}
.atl-page .ag-category-pill.is-active {
  background: linear-gradient(135deg, #22406d, var(--atl-blue));
  border-color: transparent; color: #fff;
  box-shadow: 0 6px 16px rgba(46, 116, 184, .35);
}

/* tour itinerary route strip */
.atl-itin {
  display: flex; align-items: center; flex-wrap: wrap; gap: 4px 6px;
  padding: 8px 12px; border-radius: 10px;
  background: var(--ag-color-brand-primary-softer, rgba(46, 116, 184, .12));
  border: 1px dashed rgba(46, 116, 184, .3);
}
.atl-itin-stop {
  display: inline-flex; align-items: center; gap: 6px;
  font-weight: 600; font-size: 9.5px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--atl-ink);
}
.atl-itin-stop::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%;
  background: var(--atl-blue); box-shadow: 0 0 0 2.5px rgba(46, 116, 184, .18);
}
.atl-itin-leg { width: 26px; height: 2px; background-image: linear-gradient(90deg, rgba(46,116,184,.55) 0 4px, transparent 4px 10px); background-size: 10px 2px; }
.atl-day-ribbon {
  position: absolute; left: 10px; bottom: 10px; z-index: 2;
  display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 10px;
  border-radius: 999px; background: rgba(241, 201, 174, .93); color: var(--atl-ink);
  font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
}

/* flight boarding-pass row */
.atl-fpass { display: grid; grid-template-columns: 148px 1fr 168px; align-items: stretch; position: relative; }
.atl-fpass-ablock { padding: 16px 14px; display: flex; flex-direction: column; gap: 6px; justify-content: center; }
.atl-roundel {
  width: 34px; height: 34px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-weight: 600; font-size: 11px; color: #fff; letter-spacing: .04em;
  background: linear-gradient(135deg, #22406d, var(--atl-blue));
}
.atl-fpass-rblock { padding: 16px 18px 12px; border-left: 1px dashed rgba(46, 116, 184, .2); min-width: 0; }
.atl-fpass-stub {
  padding: 16px; border-left: 2px dashed rgba(46, 116, 184, .3);
  display: flex; flex-direction: column; align-items: flex-end; justify-content: center; gap: 8px;
}
.atl-airport-code { font-weight: 800; font-size: 24px; color: var(--atl-ink); }
.atl-airport-time { font-weight: 600; font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--atl-muted); }
.atl-route-arc { position: relative; height: 34px; }
.atl-route-arc svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.atl-route-arc .atl-arc { fill: none; stroke: rgba(46, 116, 184, .55); stroke-width: 2; stroke-dasharray: 2 7; stroke-linecap: round; }
.atl-mono-chip {
  display: inline-flex; align-items: center; height: 22px; padding: 0 10px; border-radius: 999px;
  background: #eef2fa; color: var(--atl-ink);
  font-weight: 600; font-size: 9.5px; letter-spacing: .1em; text-transform: uppercase;
}
.atl-status-direct { display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 10px; border-radius: 999px; background: rgba(5, 150, 105, .1); color: var(--atl-good); font-size: 10px; font-weight: 700; }
.atl-status-stop { display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 10px; border-radius: 999px; background: rgba(234, 88, 12, .12); color: var(--atl-warn); font-size: 10px; font-weight: 700; }

/* legacy fare calendar + corridor components, glassed inside atlas */
.atl-page .fare-calendar, .atl-page [class*="fare-calendar"] > .card,
.atl-page .corridor-advisory, .atl-page [class*="corridor-banner"] {
  background: var(--atl-glass); border: 1px solid var(--atl-glass-border);
  border-radius: var(--atl-r); box-shadow: var(--atl-shadow-soft);
}

@media (max-width: 767.98px) {
  .atl-fpass { grid-template-columns: 1fr; }
  .atl-fpass-rblock, .atl-fpass-stub { border-left: 0; border-top: 2px dashed rgba(46, 116, 184, .25); align-items: flex-start; }
}

/* ---------- filter rail: inner padding + slider breathing room ----------
   The rail's glass panel sat directly on the form with zero padding: labels,
   inputs and the noUiSlider handles rendered flush against the card border
   (user-reported). The booking-bar partial keeps its own inner card look. */
.atl-page .filters-panel > form {
  padding: 16px 16px 20px;
}
.atl-page .filters-panel .noUi-target {
  margin-inline: 10px;
}

/* ---------- flight boarding-pass: center the airline block ----------
   The airline column top-aligned into a tall card leaving dead space under
   the code chip; center it against the route block. */
.atl-fpass-ablock {
  align-self: center;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
}

/* ============ P3 — detail pages ============ */

/* gallery mosaic: 1 large + 4 tiles */
.atl-mosaic {
  display: grid; grid-template-columns: 1.6fr 1fr 1fr; grid-template-rows: 168px 168px;
  gap: 10px; border-radius: 20px; overflow: hidden;
}
.atl-mosaic .atl-mosaic-tile { position: relative; overflow: hidden; }
.atl-mosaic .atl-mosaic-tile:first-child { grid-row: 1 / 3; }
.atl-mosaic .atl-mosaic-tile img, .atl-mosaic .atl-mosaic-tile .atl-scene { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.atl-mosaic-more {
  position: absolute; inset: 0; z-index: 3; display: flex; align-items: center; justify-content: center;
  background: rgba(13, 18, 38, .55); color: #fff; font-weight: 700; font-size: 13px;
  text-decoration: none;
}

/* sticky section tabs (restyle of the legacy detail tab pills — the real
   detail pages render them as .ag-section-nav; the other selectors are kept
   from the spec for template variants that use them) */
.atl-page .ag-section-nav, .atl-page .ag-tabs, .atl-page [role="tablist"].nav, .atl-page .detail-tabs {
  position: sticky; top: 76px; z-index: 30;
  background: var(--atl-glass); backdrop-filter: blur(14px);
  border: 1px solid var(--atl-glass-border); border-radius: 999px;
  box-shadow: var(--atl-shadow-soft); padding: 5px;
}

/* booking aside glassed + sticky */
.atl-aside { position: sticky; top: 84px; }
.atl-aside .card, .atl-aside form, .atl-page aside .card {
  background: var(--atl-glass); border: 1px solid var(--atl-glass-border);
  border-radius: var(--atl-r); box-shadow: var(--atl-shadow-soft);
}

/* designed empty state (reviews / seat map) */
.atl-empty { text-align: center; padding: 42px 24px 40px; }
.atl-empty .atl-orb {
  width: 92px; height: 92px; margin: 0 auto 16px; border-radius: 50%;
  background: var(--atl-dusk);
  box-shadow: 0 16px 36px rgba(30, 40, 74, .3), inset 0 0 0 5px rgba(255, 255, 255, .18);
}
.atl-empty h3 { font-weight: 800; font-size: 19px; color: var(--atl-ink); margin: 0 0 6px; }
.atl-empty p { font-size: 13px; color: var(--atl-muted); max-width: 380px; margin: 0 auto 18px; }

/* instrument chip (quick facts) */
.atl-instrument {
  background: var(--atl-glass); border: 1px solid var(--atl-glass-border);
  border-radius: var(--atl-r); box-shadow: var(--atl-shadow-soft);
  padding: 13px 14px; position: relative; overflow: hidden;
}
.atl-instrument .atl-k { font-weight: 600; font-size: 8.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--atl-muted); }
.atl-instrument .atl-v { font-weight: 800; font-size: 17px; color: var(--atl-ink); margin-top: 3px; }
.atl-instrument::after { content: ""; position: absolute; left: 14px; right: 14px; bottom: 0; height: 2px; border-radius: 2px 2px 0 0; background: var(--atl-blue); opacity: .55; }

/* vertical timeline (what to expect / itinerary) */
.atl-timeline { padding: 18px 20px; }
.atl-t-row { display: grid; grid-template-columns: 64px 20px 1fr; gap: 12px; padding-bottom: 20px; position: relative; }
.atl-t-row:last-child { padding-bottom: 2px; }
.atl-t-time { font-weight: 600; font-size: 10px; letter-spacing: .08em; color: var(--atl-ink); text-align: right; padding-top: 2px; }
.atl-t-dot i { display: block; width: 12px; height: 12px; border-radius: 50%; margin: 3px auto 0; background: #fff; border: 3px solid var(--atl-blue); }
.atl-t-row:not(:last-child) .atl-t-dot { position: relative; }
.atl-t-row:not(:last-child) .atl-t-dot::after {
  content: ""; position: absolute; left: 50%; top: 18px; bottom: -4px; transform: translateX(-50%);
  width: 2px; background-image: linear-gradient(180deg, rgba(46,116,184,.45) 0 4px, transparent 4px 10px); background-size: 2px 10px;
}
.atl-t-body h4 { font-weight: 700; font-size: 14px; color: var(--atl-ink); margin: 0; }
.atl-t-body p { font-size: 12px; color: var(--atl-muted); margin: 2px 0 0; }

/* flight fare columns */
.atl-fare-col {
  background: var(--atl-glass); border: 1px solid var(--atl-glass-border);
  border-radius: var(--atl-r); box-shadow: var(--atl-shadow-soft);
  padding: 18px 16px 16px; position: relative; display: flex; flex-direction: column; gap: 10px;
}
.atl-reco-ribbon {
  position: absolute; top: -10px; left: 50%; transform: translateX(-50%);
  display: inline-flex; align-items: center; height: 22px; padding: 0 12px; border-radius: 999px;
  background: linear-gradient(135deg, var(--atl-sand), #d99b66); color: var(--atl-ink);
  font-size: 9.5px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; white-space: nowrap;
}

@media (max-width: 767.98px) {
  .atl-mosaic { grid-template-columns: 1fr 1fr; grid-template-rows: 140px 140px; }
  .atl-mosaic .atl-mosaic-tile:first-child { grid-row: auto; grid-column: 1 / 3; }
}

/* ---------- filter rail v2 — benchmarked against the flights panel ----------
   The flights results rail (fl-sidebar) is a designed component; the other
   three verticals inherited the raw legacy filter form (heavy caps labels,
   mismatched input chrome, dashed dividers, default checkboxes). This block
   brings .atl-page rails to the same standard without touching the shared
   legacy partials (scoped restyle only). */
.atl-rail-head {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 2px 2px 12px;
}
.atl-rail-title {
  display: inline-flex; align-items: center; gap: 8px;
  font-weight: 700; font-size: 15px; color: var(--atl-ink);
}
.atl-rail-title svg { width: 16px; height: 16px; color: var(--atl-blue); flex: none; }
.atl-rail-reset { font-size: 11.5px; font-weight: 600; color: var(--atl-blue); text-decoration: none; white-space: nowrap; }
.atl-rail-reset:hover { text-decoration: underline; }

/* quiet caps labels (flights-style) */
.atl-page .filters-panel .form-label {
  display: block; font-size: 10.5px; font-weight: 600;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--atl-muted); margin-bottom: 6px;
}

/* one input voice: 40px, 12px radius, soft field, brand focus ring */
.atl-page .filters-panel .form-control,
.atl-page .filters-panel .form-select,
.atl-page .filters-panel input[type="text"],
.atl-page .filters-panel input[type="number"],
.atl-page .filters-panel input[type="date"],
.atl-page .filters-panel .stays-booking-bar__input {
  height: 40px; border-radius: 12px;
  border: 1px solid #dbe3f0; background: #f8fafd;
  font-size: 13.5px; color: var(--atl-body);
  padding-inline: 12px; box-shadow: none;
}
.atl-page .filters-panel .form-control:focus,
.atl-page .filters-panel .form-select:focus,
.atl-page .filters-panel input:focus,
.atl-page .filters-panel .stays-booking-bar__input:focus {
  border-color: var(--atl-blue);
  box-shadow: 0 0 0 3px rgba(46, 116, 184, .14);
  background: #fff; outline: none;
}

/* group rhythm: soft hairlines instead of the legacy dashed dividers */
.atl-page .filters-panel .filters .filter-group + .filter-group {
  border-top: 1px solid rgba(46, 116, 184, .08);
  padding-top: 14px; margin-top: 14px;
}

/* checkboxes (amenities etc.) */
.atl-page .filters-panel .form-check { display: flex; align-items: center; gap: 8px; padding: 2px 0; }
.atl-page .filters-panel .form-check-input {
  width: 16px; height: 16px; margin: 0; flex: none;
  border-radius: 5px; border: 1.5px solid #c5d1e4;
  accent-color: var(--atl-blue);
}
.atl-page .filters-panel .form-check-label { font-size: 13px; color: var(--atl-body); }
.atl-page .filters-panel .filter-checklist {
  display: flex; flex-direction: column; gap: 2px;
  max-height: 250px; overflow-y: auto; scrollbar-width: thin;
}

/* range sliders (noUiSlider): slim brand track, clean round handles */
.atl-page .filters-panel .noUi-target {
  border: 0; box-shadow: none; background: #e3eaf5;
  height: 5px; border-radius: 999px;
}
.atl-page .filters-panel .noUi-connect { background: linear-gradient(90deg, #2e74b8, #4f46e5); }
.atl-page .filters-panel .noUi-horizontal .noUi-handle {
  width: 18px; height: 18px; right: -9px; top: -7px;
  border-radius: 50%; background: #fff;
  border: 2px solid var(--atl-blue);
  box-shadow: 0 2px 6px rgba(30, 40, 74, .18); cursor: grab;
}
.atl-page .filters-panel .noUi-handle::before,
.atl-page .filters-panel .noUi-handle::after { display: none; }

/* rail buttons: pill like the rest of the atlas voice */
.atl-page .filters-panel .btn { border-radius: 999px; font-weight: 600; }
