/* =============================================================
   ORN Holidays — customer-facing design system
   Mobile-first. Two breakpoints (768, 1280). No third-party CSS.
   ============================================================= */

/* Marketing fonts — hoisted from ornholidays-marketing.css (@import must lead the file). */
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;600;700&family=IBM+Plex+Sans:wght@300;400;500;600;700&family=IBM+Plex+Mono:wght@400;600&display=swap');

:root {
    /* ---- Colours (ORN red brand v2) ----------------------------- */
    /* Semantic name kept as --orn-navy for backward compat — values
       repointed to the red brand palette. Every downstream rule that
       used var(--orn-navy) now paints in brand red. */
    --orn-navy: #ff000f; /* brand red — hero top + header */
    --orn-navy-2: rgb(201, 10, 18); /* brand red mid — gradient stop */
    --orn-navy-3: rgb(158, 8, 16); /* brand red deep — gradient end */
    --orn-navy-ink: rgb(14, 26, 43); /* actual navy — used by marketing surfaces (.orn-mh, .orn-mk-*) */
    --orn-gold: rgb(20, 20, 20); /* dark CTA pill fill (black on white bg) */
    --orn-gold-2: rgb(0, 0, 0); /* CTA hover */
    --orn-gold-3: rgb(242, 13, 22); /* accent/eyebrow — HIGHLIGHTS in red */
    --orn-cream: rgb(244, 244, 244); /* page background (light gray) */
    --orn-cream-2: rgb(255, 255, 255); /* card paper — white */
    --orn-cream-3: rgb(232, 232, 232); /* subtle borders */
    --orn-paper: #ffffff;
    --orn-ink: rgb(20, 35, 59); /* primary text */
    --orn-ink-2: rgb(58, 70, 84); /* secondary text on cream */
    /* Canonical body-text token — use this in place of hard-coded #000 /
       raw rgb() blacks whenever a component needs the primary reading colour.
       Aliased to --orn-ink so any future re-tint changes both together. */
    --orn-text: rgb(21, 21, 21);
    --orn-text-muted: rgb(107, 114, 128); /* secondary meta text (used in TM meta line etc.) */
    --orn-mute: rgb(110, 110, 110); /* warm muted (on cream) */
    --orn-mute-2: rgba(255, 255, 255, 0.72); /* cool muted (on navy) */
    --orn-mute-3: rgb(195, 204, 214); /* light cool muted (nav links / lede) */
    --orn-text-light: rgba(255, 255, 255, 0.9); /* warm light text on red */
    --orn-line: rgba(20, 35, 59, 0.10);
    --orn-line-2: rgba(20, 35, 59, 0.18);

    /* accent palette — colour-coded tiers, families, results */
    --orn-blue: rgb(47, 128, 237); /* Early-bird */
    --orn-amber: rgb(199, 122, 43); /* Filling fast */
    --orn-red: rgb(190, 63, 57); /* Final seats / Italy */
    --orn-green: rgb(22, 160, 133);
    --orn-purple: #6a4ba6;
    --orn-orange: #c2682a;
    --orn-teal: #2c8d8a;

    /* ---- Typography (fluid) -------------------------------------- */
    --orn-font-body: Archivo, sans-serif;
    --orn-font-display: Archivo, sans-serif;
    --orn-font-heading: Anton, sans-serif;
    --orn-font-heading-serif: 'Playfair Display', 'Times New Roman', Times, serif;
    --orn-font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;

    /* Type scale (aligned to ORN Booking Home reference) */
    --orn-fs-hero: 62px; /* hero title */
    --orn-fs-pass-city: 40px; /* boarding-pass city */
    --orn-fs-h1: 32px; /* section title (Departures filling / All Europe / ORN Specials / Beyond Europe heads) */
    --orn-fs-h2: 22px; /* sub section title */
    --orn-fs-h3: 18px; /* card / rung title */
    --orn-fs-lede: 16px; /* hero lede */
    --orn-fs-body: 15px; /* main body / nav */
    --orn-fs-stat: 28px; /* big stat number */
    --orn-fs-small: 13px; /* small body / pass meta value */
    --orn-fs-tiny: 12px; /* fine print, pass tag */
    --orn-fs-eyebrow: 11px; /* eyebrow mono labels */

    /* ---- Spacing (4-pt grid) ------------------------------------- */
    --sp-1: 4px;
    --sp-2: 8px;
    --sp-3: 12px;
    --sp-4: 16px;
    --sp-5: 24px;
    --sp-6: 32px;
    --sp-7: 48px;
    --sp-8: 64px;
    --sp-9: 80px;
    --sp-10: 112px;

    /* ---- Radius / shadow ---------------------------------------- */
    --r-card: 18px;
    --r-soft: 12px;
    --r-pill: 999px;
    --r-tile: 14px;

    --sh-card: 0 1px 2px rgba(10, 24, 55, 0.04), 0 4px 16px rgba(10, 24, 55, 0.06);
    --sh-raised: 0 8px 32px rgba(10, 24, 55, 0.14);
    --sh-sheet: -8px -8px 32px rgba(10, 24, 55, 0.18);

    /* ---- Container ---------------------------------------------- */
    --orn-container: 1250px;
    --orn-gutter: 28px;

    /* ---- Radius --------------------------------------------------
       button-radius-primary → hero/CTA/nav pill buttons (tight)
       button-radius-card    → depcards, jrycards, spcl, poster, gallery tiles */
    --button-radius-primary: 5px;
    --button-radius-card: 10px;
}

/* =============================================================
   Red-brand overrides — variable repoint alone leaves some dark
   CTAs with red text (because color: var(--orn-navy) is now red).
   Force them back to white here. Kept small + selector-list so
   later additions can be tacked on without touching the palette.
   ============================================================= */
.orn-btn--primary,
.orn-depcard__cta,
.orn-jrycard__view,
.orn-sum__cta,
.orn-sum__cta:hover:not(:disabled),
.orn-promo__strip-card-cta,
.orn-filhead__cta,
.orn-mk-btn--gold,
.trpPymtActCtr .ui-button { color: #fff !important; }
.orn-btn--primary:hover, .orn-depcard__cta:hover, .orn-promo__strip-card-cta:hover, .orn-mk-btn--gold:hover { color: #fff !important; }

/* Hero surfaces: gradient across the three brand stops instead of
   a flat brand-red fill (which is what would happen after the
   variable swap in isolation). */
body:not(.orn-hero-immersive) .orn-hero,
.orn-promo__hero { background: linear-gradient(160deg, var(--orn-navy) 0%, var(--orn-navy-2) 58%, var(--orn-navy-3) 100%) !important; }
.orn-mk-hero { background: linear-gradient(160deg, var(--orn-text) 0%, var(--orn-navy-ink) 100%) !important; }
.orn-pay-hero,
.orn-wallet-hero { background: transparent !important; }

/* Footer stays near-black on the red brand. Upper linkband slightly
   darker (#0B0B0B), lower legal strip a hair lighter (#0F0F0F) for
   soft separation. Overrides the navy-turned-red background that
   would otherwise inherit from the variable swap. */
.orn-footer { background: rgb(11, 11, 11) !important; color: rgba(255, 255, 255, 0.72) !important; }
.orn-footer-linkband { background: rgb(11, 11, 11) !important; border-top: 1px solid rgba(255, 255, 255, 0.08) !important; }
.orn-footer__legalstrip { background: rgb(15, 15, 15) !important; border-top: 1px solid rgba(255, 255, 255, 0.08) !important; color: rgba(255, 255, 255, 0.5) !important; }

/* Logo image (new markup) — sized to match the old wordmark height.
   Neither dimension is pinned. --orn-logo-h (the partner config's "custom logo
   height", emitted by head_assets.jsp) is an upper bound and the var() fallback
   is the height this surface has always used. Keeping height:auto is what stops
   wide partner lockups from looking stretched: when the flex row runs out of
   space the image's width shrinks and its height follows the aspect ratio,
   whereas a pinned height would have squashed it horizontally. */
.orn-header__logo-img { display: block; height: auto; max-height: var(--orn-logo-h, 40px); width: auto; max-width: 100%; min-width: 0; object-fit: contain; object-position: left center; }
.orn-mh__brand-img { display: block; height: auto; max-height: var(--orn-logo-h, 35px); width: auto; max-width: 100%; min-width: 0; object-fit: contain; object-position: left center; }

/* =============================================================
   Reset / base
   ============================================================= */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font-family: var(--orn-font-body); font-size: var(--orn-fs-body); line-height: 1.55; color: var(--orn-ink); background: var(--orn-cream); text-align: left; /* override b2c-v*.css default body { text-align: center } */ -webkit-font-smoothing: antialiased; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: #C7BFAE; border-radius: 8px; }
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; border: 0; background: transparent; color: inherit; }
h1, h2, h3, h4, h5, h6 { margin: 0; font-family: var(--orn-font-display); font-weight: 800; line-height: 1.1; color: rgb(15, 15, 15); text-align: left; }
/* Defensive override — tf-main's global styles.css ships rules that
   center text inside section containers for some legacy partner
   themes. The ornholidays skin is always left-aligned by default;
   opt back into centering explicitly via .orn-text-center. */
.orn-page, .orn-page p, .orn-page h1, .orn-page h2, .orn-page h3, .orn-page h4, .orn-page h5, .orn-page h6 { text-align: left; }

.orn-eyebrow { font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.12em; text-transform: uppercase; color: var(--orn-navy); }

.orn-container { max-width: var(--orn-container); margin-inline: auto; padding-inline: var(--orn-gutter); }

.orn-section { padding-block: 40px; }
@media (max-width: 900px) { .orn-section { padding-block: 30px; } }
.orn-section--cream { background: var(--orn-cream); }
.orn-section--black { background: var(--orn-text); color: var(--orn-text-light); }
.orn-section--black .orn-secthead__eyebrow { display: none; }
.orn-section--paper { background: var(--orn-paper); }
.orn-section--navy { background: var(--orn-navy); color: #f0e6c8; }
.orn-section--dark { background: #0a1221; color: #f0e6c8; }
.orn-section--dark .orn-secthead__eyebrow { color: rgba(240, 230, 200, 0.75); }
.orn-section--dark .orn-secthead__title { color: #fff; }
.orn-section--dark .orn-secthead__title em { font-style: italic; font-weight: 600; color: var(--orn-navy); }
.orn-b2b .orn-secthead__eyebrow { color: rgba(255, 255, 255, 0.7); }
.orn-b2b .orn-secthead__title { color: #fff; }

/* ── Europe ka Maths · single stacked ledger ─────────────────────── */
.orn-mkmaths { }
.orn-mkmaths__ledger { max-width: 640px; margin: 0 auto; display: flex; flex-direction: column; gap: 0; }
.orn-mkmaths__head { text-align: left; margin-bottom: 20px; }
.orn-mkmaths__row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 20px 22px; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.06); border-radius: 14px; }
.orn-mkmaths__row-copy { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.orn-mkmaths__row-lbl { font-family: var(--orn-font-mono); font-size: 12px; font-weight: 700; letter-spacing: 0.10em; color: var(--orn-navy); text-transform: uppercase; }
.orn-mkmaths__row-sub { font-family: var(--orn-font-body); font-size: 14px; color: #fff; }
.orn-mkmaths__row-amt { font-family: var(--orn-font-mono); font-size: 26px; font-weight: 700; color: #fff; font-variant-numeric: tabular-nums; letter-spacing: -0.01em; white-space: nowrap; }
.orn-mkmaths__row-amt--strike { color: rgba(255, 255, 255, 0.55); text-decoration: line-through; text-decoration-color: rgba(255, 255, 255, 0.4); }
.orn-mkmaths__op { display: flex; align-items: center; justify-content: center; font-family: var(--orn-font-mono); font-size: 26px; font-weight: 800; color: #fff; padding: 0; }
.orn-mkmaths__pay { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 24px 26px; background: #fff; color: var(--orn-text); border-radius: 16px; text-decoration: none; transition: transform 0.16s ease, box-shadow 0.16s ease; }
.orn-mkmaths__pay:hover, .orn-mkmaths__pay:focus { transform: translateY(-2px); box-shadow: 0 12px 32px rgba(255, 0, 15, 0.18); }
.orn-mkmaths__pay-copy { display: flex; flex-direction: column; gap: 4px; }
.orn-mkmaths__pay-lbl { font-family: var(--orn-font-mono); font-size: 12px; font-weight: 700; letter-spacing: 0.14em; color: var(--orn-text); text-transform: uppercase; }
.orn-mkmaths__pay-sub { font-family: var(--orn-font-body); font-size: 14px; color: var(--orn-text-muted); }
.orn-mkmaths__pay-amt { font-family: var(--orn-font-mono); font-size: 34px; font-weight: 800; color: var(--orn-navy); font-variant-numeric: tabular-nums; letter-spacing: -0.02em; white-space: nowrap; }
.orn-mkmaths__pay-star { font-size: 0.55em; vertical-align: super; }
@media (max-width: 640px) {
    .orn-mkmaths__row { padding: 16px 18px; }
    .orn-mkmaths__row-amt { font-size: 22px; }
    .orn-mkmaths__pay { padding: 20px 20px; }
    .orn-mkmaths__pay-amt { font-size: 28px; }
}
.orn-secthead__title em { font-style: italic; font-weight: 600; color: var(--orn-navy); }

/* =============================================================
   Header
   ============================================================= */
.orn-header { background: var(--orn-text); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); color: var(--orn-text-light); position: relative; z-index: 50; border-bottom: 0; }

/* Immersive hero — transparent header floats over a full-bleed photo hero.
   Pages opt in via body.orn-hero-immersive and set --orn-hero-image on body. */
body.orn-hero-immersive .orn-header { background: transparent; backdrop-filter: none; -webkit-backdrop-filter: none; position: absolute; left: 0; right: 0; top: 0; }
body.orn-hero-immersive .orn-hero { position: relative; background: rgb(15, 15, 15) var(--orn-hero-image) center 100%/cover no-repeat !important; color: #fff; margin-top: 0; padding-top: 120px; overflow: hidden; }
/* Split hero — media on top, copy below on mobile. Desktop uses the immersive
   bg-image on .orn-hero (unchanged) and hides the <img> media panel. */
.orn-hero--split .orn-hero__media { display: none; }
.orn-hero--split .orn-hero__media-img { display: block; width: 100%; height: auto; }
@media (max-width: 900px) {
    body.orn-hero-immersive .orn-hero--split { background: none !important; padding-top: 0 !important; overflow: visible; }
    body.orn-hero-immersive .orn-hero--split::before { display: none; }
    .orn-hero--split .orn-hero__media { display: block; }
    .orn-hero--split .orn-hero__media-img { aspect-ratio: 3 / 4; object-fit: cover; object-position: 75% -100px; }
    .orn-hero--split .orn-hero__inner { padding: 24px 20px 8px !important; background: transparent; margin-top: -225px; position: relative; z-index: 2; }
    body.orn-hero-immersive .orn-hero--split .orn-hero__title { color: #fff; text-shadow: 0 2px 20px rgba(0, 0, 0, 0.55); }
    .orn-hero--split .orn-hero--with-finder .orn-mkfind-section,
    .orn-hero--with-finder.orn-hero--split .orn-mkfind-section { margin-top: -10px; }
}
body.orn-page--group-tours.orn-hero-immersive .orn-hero { padding-top: 140px; }
@media (max-width: 900px) {
    body.orn-page--group-tours.orn-hero-immersive .orn-hero { padding-top: 150px; background-position: 70% 60% !important; }
}
body.orn-hero-immersive .orn-hero::before { content: ""; position: absolute; inset: 0; background: linear-gradient(to right, rgba(15, 15, 15, 0.75) 0%, rgba(15, 15, 15, 0.55) 30%, rgba(15, 15, 15, 0.15) 60%, rgba(15, 15, 15, 0) 100%); pointer-events: none; z-index: 1; }
body.orn-hero-immersive .orn-hero__inner { position: relative; z-index: 2; padding-top: 20px; padding-bottom: 0; }
@media (max-width: 900px) {
    body.orn-hero-immersive .orn-hero__inner { padding-top: 10px; padding-bottom: 40px; }
}
body.orn-hero-immersive .orn-hero__eyebrow { color: #fff; }
body.orn-hero-immersive .orn-hero__title { color: #fff; text-shadow: 0 2px 24px rgba(0, 0, 0, 0.35); font-size: clamp(50px, 4vw, 168px); font-family: var(--orn-font-heading); margin-bottom: 15px; }
body.orn-hero-immersive .orn-hero__lede { color: rgba(255, 255, 255, 0.9); }
.orn-hero__offer { display: inline-flex; align-items: center; gap: 24px; padding: 14px 22px; margin-top: 18px; background: rgba(20, 30, 46, 0.72); border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 14px; backdrop-filter: blur(6px); text-decoration: none; color: #fff; max-width: 640px; transition: transform 0.16s ease, background 0.16s ease; }
.orn-hero__offer:hover, .orn-hero__offer:focus { background: rgba(20, 30, 46, 0.88); transform: translateY(-2px); }
.orn-hero__offer-copy { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.orn-hero__offer-line { font-family: var(--orn-font-body); font-size: 15px; font-weight: 500; color: rgba(255, 255, 255, 0.9); }
.orn-hero__offer-sub { font-family: var(--orn-font-body); font-size: 13px; color: rgba(255, 255, 255, 0.65); }
.orn-hero__offer-price { display: flex; align-items: baseline; gap: 8px; white-space: nowrap; }
.orn-hero__offer-lbl { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.14em; color: rgba(255, 255, 255, 0.55); }
.orn-hero__offer-amt { font-family: var(--orn-font-display); font-size: 28px; font-weight: 600; color: #fff; font-variant-numeric: tabular-nums; }
@media (max-width: 900px) {
    .orn-hero--split .orn-hero__offer { display: none; }
}
body.orn-hero-immersive .orn-hero__stats { color: #fff; }
body.orn-page--group-tours .orn-hero__stats { padding-top: var(--sp-4); }
body.orn-hero-immersive .orn-hero__stat-n { color: #fff; }
body.orn-hero-immersive .orn-hero__stat-l { color: rgba(255, 255, 255, 0.7); }

.orn-hero__badges { display: inline-flex; align-self: flex-start; width: fit-content; align-items: center; gap: 0; margin-top: 34px; padding: 12px 8px; background: rgba(15, 15, 15, 0.55); border-radius: 999px; border: 1px solid rgba(255, 255, 255, 0.08); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; max-width: 100%; }
.orn-hero__badges::-webkit-scrollbar { display: none; }
.orn-hero__badge-pill { display: inline-flex; align-items: center; gap: 10px; padding: 4px 10px; color: #fff; font-size: 11px; font-weight: 600; line-height: 1.15; white-space: normal; max-width: 125px; flex: 0 0 auto; }
.orn-hero__badge-pill + .orn-hero__badge-pill { border-left: 1px solid rgba(255, 255, 255, 0.14); }
.orn-hero__badge-ic { color: #fff; flex-shrink: 0; }
@media (max-width: 900px) {
    .orn-hero__badges { padding: 10px 6px; }
    .orn-hero__badge-pill { padding: 4px 14px; font-size: 12.5px; }
}
body.orn-hero-immersive .orn-pass { max-width: 440px; transform: none; box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45); }
body.orn-hero-immersive .orn-hero__pass { align-self: flex-start; justify-self: end; margin-bottom: 40px; }
.orn-header__inner { max-width: var(--orn-container); margin-inline: auto; padding: 10px var(--orn-gutter); display: flex; align-items: center; gap: 20px; }
.orn-header__brand { display: inline-flex; align-items: center; gap: 12px; color: var(--orn-text-light); cursor: pointer; flex: 0 1 auto; min-width: 0; }
.orn-header__logo { height: auto; max-height: var(--orn-logo-h, 36px); width: auto; max-width: 100%; min-width: 0; object-fit: contain; object-position: left center; }
/* Gold disc with the ORN leaf glyph — matches the mockup's circular brand
   mark. Sized to align with the wordmark + eyebrow at 36px tall. */
.orn-header__logo-disc { width: 36px; height: 36px; border-radius: 50%; background: var(--orn-gold); display: inline-flex; align-items: center; justify-content: center; flex: 0 0 36px; }
.orn-header__logo-disc svg { display: block; }
.orn-header__logo-mark { display: inline-block; color: #fff; font-family: var(--orn-font-display); font-weight: 800; font-size: 21px; letter-spacing: 0.04em; }
/* Brand eyebrow ("EUROPE JOURNEYS") shown next to the wordmark on
   desktop — adopted from the mockup. Hidden on mobile to keep the
   header height tight. */
.orn-header__brand-eyebrow { display: none; font-family: var(--orn-font-body); font-size: 13.5px; letter-spacing: 0.26em; text-transform: uppercase; color: #fff; font-weight: 700; padding-left: 14px; margin-left: 8px; border-left: 1px solid rgba(255, 255, 255, 0.4); align-self: center; height: 42px; line-height: 42px; }
.orn-header__eyebrow { display: none; font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.18em; text-transform: uppercase; color: rgba(240, 230, 200, 0.65); }
.orn-header__nav { display: none; justify-content: flex-end; align-items: center; gap: 26px; margin-left: auto; font-weight: 600; }
.orn-header__nav-link { font-size: 15px; color: #fff; padding-block: var(--sp-2); position: relative; }
.orn-header__nav-link:hover { color: #fff; }
.orn-header__actions { display: flex; align-items: center; gap: var(--sp-3); justify-content: flex-end; flex: 0 0 auto; }
.orn-header__currency { display: none; align-items: center; gap: 7px; padding: 5px 14px; border: 1px solid #fff; border-radius: var(--r-pill); color: #fff; font-size: 13.5px; cursor: pointer; }
.orn-header__currency-globe { color: var(--orn-gold-3); font-size: 1rem; }
.orn-header__currency-icon { display: inline-block; vertical-align: middle; }
.orn-header__currency-label { font-size: 14px; font-weight: bold}
.orn-header__currency-caret { color: var(--orn-mute-2); font-size: 11px; }

.orn-header__region { position: relative; display: inline-block; }
.orn-header__region-popover { position: absolute; top: calc(100% + 10px); right: 0; min-width: 380px; max-width: 440px; background: #ffffff; border-radius: 18px; padding: 20px 22px 18px; box-shadow: 0 24px 60px rgba(10, 24, 55, 0.28), 0 6px 18px rgba(10, 24, 55, 0.14); z-index: 60; }
.orn-header__region-popover[hidden] { display: none; }
.orn-header__region-eyebrow { color: var(--orn-navy); letter-spacing: 0.14em; text-transform: uppercase; font-size: 11.5px; font-weight: 700; margin-bottom: 12px; }
.orn-header__region-eyebrow + .orn-header__region-eyebrow, .orn-header__region-grid + .orn-header__region-eyebrow { margin-top: 18px; }
.orn-header__region-grid { display: flex; flex-wrap: wrap; gap: 10px 10px; }
.orn-header__region-chip { display: inline-flex; align-items: center; padding: 10px 16px; border: 1px solid #14233B; border-radius: 12px; background: #ffffff; color: #14233B; font-size: 14px; font-weight: 500; cursor: pointer; transition: background 0.15s, color 0.15s; }
.orn-header__region-chip:hover { background: #14233B; color: #ffffff; }
.orn-header__region-chip.is-active { background: #14233B; color: #ffffff; }
.orn-header__region-note { margin-top: 16px; color: #6b6455; font-size: 13px; line-height: 1.5; }
@media screen and (max-width: 640px) {
    .orn-header__region-popover { position: fixed; top: auto; bottom: 0; left: 0; right: 0; min-width: 0; max-width: none; border-radius: 18px 18px 0 0; padding: 20px 18px 24px; }
}

.orn-header__profile { position: relative; display: inline-block; }
.orn-header__rewards { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; margin-right: 10px; border-radius: 999px; background: rgba(255, 255, 255, 0.95); color: var(--orn-text); font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 13px; text-decoration: none; box-shadow: 0 2px 6px rgba(10, 24, 55, 0.14); transition: transform 0.15s ease, box-shadow 0.15s ease; }
.orn-header__rewards:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(10, 24, 55, 0.22); color: var(--orn-text); }
.orn-header__rewards-label { font-family: var(--orn-font-mono); font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600; color: var(--orn-navy); }
.orn-header__rewards-value { font-weight: 800; font-size: 14px; }
.orn-header__avatar { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; border: none; background: #fff; color: var(--orn-navy, rgb(14, 26, 43)); font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 16px; letter-spacing: 0.02em; cursor: pointer; box-shadow: 0 2px 6px rgba(10, 24, 55, 0.18); transition: transform 0.15s ease, box-shadow 0.15s ease; }
.orn-header__avatar:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(10, 24, 55, 0.24); }
.orn-header__avatar-letter { line-height: 1; }

.orn-header__profile-popover { position: absolute; top: calc(100% + 10px); right: 0; min-width: 260px; max-width: 320px; background: #ffffff; border-radius: 16px; padding: 14px 12px; box-shadow: 0 24px 60px rgba(10, 24, 55, 0.28), 0 6px 18px rgba(10, 24, 55, 0.14); z-index: 60; }
.orn-header__profile-popover[hidden] { display: none; }

.orn-header__profile-user { display: flex; align-items: center; gap: 12px; padding: 8px 10px 12px; }
.orn-header__profile-user-avatar { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: var(--orn-gold, rgb(193, 142, 69)); color: var(--orn-navy, rgb(14, 26, 43)); font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 16px; }
.orn-header__profile-user-name { font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 18px; color: var(--orn-text); }

.orn-header__profile-divider { height: 1px; background: rgba(20, 35, 59, 0.10); margin: 4px 6px; }

.orn-header__profile-item { display: flex; align-items: center; gap: 14px; padding: 10px 12px; border-radius: 10px; color: var(--orn-text); font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 15px; text-decoration: none; transition: background 0.12s ease; }
.orn-header__profile-item:hover { background: rgba(20, 35, 59, 0.06); }
.orn-header__profile-icon { color: var(--orn-gold-2, rgb(169, 124, 60)); flex-shrink: 0; }
.orn-header__profile-item--logout { color: #B4432B; }
.orn-header__profile-item--logout .orn-header__profile-icon { color: #B4432B; }

@media screen and (max-width: 640px) {
    .orn-header__profile-popover { position: fixed; top: auto; bottom: 0; left: 0; right: 0; min-width: 0; max-width: none; border-radius: 18px 18px 0 0; padding: 20px 14px 24px; }
}

.orn-header__login, .orn-header__signup, .orn-header__cta, .orn-header__user-pill, .orn-header__talk { display: inline-flex; align-items: center; padding: 7px 20px 9px; border-radius: var(--r-pill); font-weight: 700; font-size: var(--orn-fs-body); white-space: nowrap; text-decoration: none; cursor: pointer; border: none; font-family: inherit; font-size:14px}
.orn-header__talk { background: #fff; color: var(--orn-navy); margin-left: 8px; }
.orn-header__talk:hover { background: rgba(255, 255, 255, 0.9); color: var(--orn-navy); }
.orn-header__talk-red { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border-radius: 999px; background: var(--color-primary, #E4002B); color: #fff; font-weight: 700; font-size: 13px; text-decoration: none; white-space: nowrap; box-shadow: 0 4px 12px color-mix(in srgb, var(--color-primary, #E4002B) 28%, transparent); }
.orn-header__talk-red:hover { background: var(--color-primary-light, #b8001f); color: #fff; }
.orn-header__talk-red--mobile { margin-left: auto; }
.orn-header__talk-red--desktop { display: none; padding: 9px 18px; font-size: 14px; margin-left: -12px; }
@media (min-width: 768px) {
    .orn-header__talk-red--mobile { display: none; }
    .orn-header__talk-red--desktop { display: inline-flex; }
}
.orn-header__signup { background: var(--orn-gold, rgb(193, 142, 69)); color: #ffffff; margin-right: 6px; }
.orn-header__signup:hover { background: var(--orn-gold-2, rgb(169, 124, 60)); color: #ffffff; }
.orn-header__login { font-family: Anton, sans-serif; font-size: 16px; font-weight: 400; letter-spacing: 0.04em; color: #E4002B; background: #fff; padding: 7px 20px; text-decoration: none; white-space: nowrap; border-radius: 0; }
.orn-header__login:hover { background: #F7F4EF; color: #E4002B; }
.orn-header__user-pill { background: rgba(193, 142, 69, 0.15); color: var(--orn-gold-3); border: 1px solid rgba(193, 142, 69, 0.35); font-weight: 500; }
.orn-header__cta { background: var(--orn-gold); color: var(--orn-navy); }
.orn-header__cta:hover { background: var(--orn-gold-2); }
.orn-header__nav-mobile { display: flex; gap: var(--sp-4); padding: var(--sp-3) var(--orn-gutter) var(--sp-4); overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; border-top: 1px solid rgba(240, 230, 200, 0.10); }
.orn-header__nav-mobile::-webkit-scrollbar { display: none; }
.orn-header__nav-mobile .orn-header__nav-link { scroll-snap-align: start; white-space: nowrap; font-size: 0.92rem; }

@media (min-width: 768px) {
    .orn-header__eyebrow { display: inline; }
    .orn-header__brand-eyebrow { display: inline-flex; align-items: center; }
    .orn-header__nav { display: flex; }
    .orn-header__currency { display: inline-flex; }
    .orn-header__nav-mobile { display: none; }
    .orn-header__login { background: var(--orn-text); color: #ffffff; border: none; }
    .orn-header__login:hover { color: #ffffff; background: var(--orn-text); }
}

/* Utility (secondary) nav row inside the header — sits to the right of
   the brand on the top row. Uses a subtler size + colour than the
   primary nav below. */
.orn-header__utility { display: none; align-items: center; gap: 22px; margin-left: auto; font-size: 14px; color: rgb(195, 204, 214); }
.orn-header__util-link { display: inline-flex; align-items: center; gap: 6px; color: #fff; font-weight: 700; text-decoration: none; }
.orn-header__util-link:hover { color: #fff; }
.orn-header__util-icon { display: inline-block; vertical-align: middle; }
.orn-header__util-cta { display: inline-flex; align-items: center; padding: 9px 20px; border-radius: var(--r-pill); font-weight: 700; font-size: var(--orn-fs-body); white-space: nowrap; text-decoration: none; background: var(--orn-gold); color: var(--orn-navy); }
.orn-header__util-cta:hover { background: var(--orn-gold-2); }

/* Primary nav row — the second header tier that carries Journeys /
   Departures / Van Tours / Worldwide / Promotions / Specials + My
   bookings. On desktop it's a horizontal row under the brand row; on
   mobile it becomes a horizontally-scrollable strip. */
.orn-header__nav-primary { display: none; gap: 26px; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; align-items: center; }
.orn-header__nav-primary::-webkit-scrollbar { display: none; }
.orn-header__nav-primary .orn-header__nav-link { scroll-snap-align: start; white-space: nowrap; font-weight: 600; font-size: 15px; }
.orn-header__nav-link.is-active { color: #fff; }
.orn-header__nav-find.is-active { color: var(--orn-gold-2); }
.orn-header__nav-find { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; color: var(--orn-gold); font-weight: 700; font-size: 15px; text-decoration: none; white-space: nowrap; }
.orn-header__nav-find:hover { color: var(--orn-gold-2); }

/* Mobile hamburger + slide-in nav drawer. Burger + drawer show below
   768px; the desktop utility row and primary nav are hidden there and
   restored (with the burger/drawer hidden) at >=768 further below. */
.orn-header__burger { display: inline-flex; flex-direction: column; justify-content: center; gap: 4px; width: 42px; height: 42px; padding: 9px; border-radius: 10px; background: transparent; border: 1px solid rgba(240, 230, 200, 0.22); cursor: pointer; flex: 0 0 auto; }
.orn-header__burger span { display: block; height: 2px; width: 100%; background: var(--orn-text-light); border-radius: 2px; }
.orn-drawer-backdrop { position: fixed; inset: 0; background: rgba(10, 18, 33, 0.55); z-index: 1200; opacity: 0; visibility: hidden; transition: opacity 0.25s ease, visibility 0.25s ease; }
.orn-drawer-backdrop.is-open { opacity: 1; visibility: visible; }
/* Drawer body is near-black with a red ORN header strip on top — the brand
   pops at the top and the light nav/menu text reads cleanly on black. */
.orn-drawer { position: fixed; top: 0; left: 0; height: 100%; width: min(84vw, 340px); background: #0F0F0F; color: var(--orn-text-light); z-index: 1210; transform: translateX(-100%); transition: transform 0.28s ease; display: flex; flex-direction: column; box-shadow: var(--sh-raised); overflow-y: auto; }
.orn-drawer.is-open { transform: translateX(0); }
.orn-drawer__head { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px; background: var(--color-primary, #E4002B); border-bottom: 0; }
.orn-drawer__brand { display: inline-flex; align-items: center; gap: 10px; font-family: var(--orn-font-display); font-weight: 800; font-size: 20px; color: #fff; letter-spacing: 0.04em; text-decoration: none; }
.orn-drawer__logo-img { display: block; height: 32px; width: auto; }
.orn-drawer__close { font-size: 28px; line-height: 1; color: var(--orn-text-light); background: transparent; border: 0; cursor: pointer; padding: 0 4px; }
.orn-drawer__nav { display: flex; flex-direction: column; padding: 8px 0; }
/* Typography mirrors the marketing drawer (.orn-mh__drawer-link): uppercase
   mono, letter-spaced, light text with a thin divider under each row. */
/* ---------------------------------------------------------------------------------
   Staff nav in the ORN header (item H). header_new.jsp hands staff this header on
   ORN, and the ORN header renders NavMenuBuilder's menu in place of the consumer
   primary nav. The staff menu is deeply nested, so a top-level entry that has
   children reveals them on hover OR keyboard focus - :focus-within means the menu is
   reachable by tab, with no JS to load or keep in sync.
   --------------------------------------------------------------------------------- */
/* The consumer strip is a horizontally-scrolling row (overflow-x:auto), which CLIPS an
   absolutely-positioned dropdown - that is why the staff sub-menus never appeared on hover. The
   staff variant drops the scroll and handles width by moving overflow into a "..." menu instead,
   which is what the header script does. */
.orn-header__nav-primary--staff { overflow: visible; scroll-snap-type: none; }
.orn-header__navitem { position: relative; display: inline-flex; align-items: center; white-space: nowrap; }
.orn-header__navitem[hidden] { display: none !important; }
/* The overflow bucket hangs off the right end, so it opens leftwards or it would run off the
   viewport on a narrow window. */
.orn-header__navmenu--more { left: auto; right: 0; max-height: 70vh; overflow-y: auto; }
.orn-header__navmenu-link--head { font-weight: 700; }
.orn-header__navmenu-link--sub { padding-left: 30px; color: #B9C0CA; }
.orn-header__nav-caret { margin-left: 4px; font-size: 9px; opacity: 0.75; }
.orn-header__navmenu { display: none; position: absolute; top: 100%; left: 0; z-index: 1200; min-width: 210px; padding: 6px 0; background: #14233b; border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 8px; box-shadow: 0 10px 28px rgba(0, 0, 0, 0.32); }
.orn-header__navitem:hover .orn-header__navmenu,
.orn-header__navitem:focus-within .orn-header__navmenu { display: block; }
.orn-header__navmenu-link { display: block; padding: 8px 16px; font-size: 14px; line-height: 1.35; color: #E6E9EE; white-space: nowrap; text-decoration: none; }
.orn-header__navmenu-link:hover, .orn-header__navmenu-link:focus { background: rgba(255, 255, 255, 0.08); color: #fff; }

/* Drawer: the same menu flattened, because a hover dropdown is no use on touch. */
.orn-drawer__navgroup { padding: 14px 22px 6px; font-family: "IBM Plex Mono", "JetBrains Mono", monospace; font-size: 11px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: #8A919B; }
.orn-drawer__link--sub { padding-left: 34px; text-transform: none; letter-spacing: 0.03em; font-size: 13px; }

.orn-drawer__link { display: flex; align-items: center; gap: 10px; padding: 15px 22px; font-family: "IBM Plex Mono", "JetBrains Mono", monospace; font-size: 14px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; color: #C9CDD3; border-bottom: 1px solid rgba(255, 255, 255, 0.09); }
.orn-drawer__link:hover { color: #F3EFE6; }
/* The last primary link sits right above .orn-drawer__section, whose own
   border-top already separates the two — drop the link's rule so the
   drawer doesn't show a double line there. */
.orn-drawer__nav > .orn-drawer__link:last-child { border-bottom: 0; }
/* Active nav item. --orn-gold is rgb(20,20,20) (a dark CTA fill), which is
   near-invisible on the dark drawer — so use the drawer's real gold accent
   (matches the REWARDS pill) and a slight weight bump to mark the current page. */
.orn-drawer__link.is-active { color: #E4C88C; font-weight: 600; }
.orn-drawer__section { padding: 10px 0; border-top: 1px solid rgba(240, 230, 200, 0.12); display: flex; flex-direction: column; }
.orn-drawer__section a { padding: 11px 22px; font-size: 14px; color: rgb(195, 204, 214); }
.orn-drawer__section a:hover { color: var(--orn-gold); }
.orn-drawer__foot { margin-top: auto; padding: 18px 22px; border-top: 1px solid rgba(240, 230, 200, 0.12); display: flex; flex-direction: column; gap: 12px; }
.orn-drawer__foot .orn-header__signup, .orn-drawer__foot .orn-header__login { justify-content: center; width: 100%; margin: 0; }
/* Logged-in account block in the mobile drawer — mirrors the desktop profile
   popover (rewards balance + account links). Light text on the red drawer,
   matching the drawer nav links; the desktop popover's dark-on-white styling
   would be invisible here. */
.orn-drawer__profile-top { padding: 14px 0 6px; border-bottom: 1px solid rgba(240, 230, 200, 0.12); }
.orn-drawer__account { gap: 2px; }
.orn-drawer__user { display: flex; align-items: center; gap: 12px; padding: 4px 22px 12px; }
.orn-drawer__user-avatar { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: #fff; color: var(--orn-navy); font-weight: 800; font-size: 17px; flex: 0 0 auto; }
.orn-drawer__user-name { font-size: 17px; font-weight: 700; color: #fff; }
/* Gold rewards pill — gold-tinted fill + gold border, with the drawer's mono
   uppercase typography. */
.orn-drawer__rewards { display: flex; align-items: center; justify-content: space-between; margin: 0 22px 12px; padding: 12px 16px; border-radius: 12px; background: linear-gradient(180deg, rgba(193, 142, 69, 0.18), rgba(193, 142, 69, 0.10)); border: 1px solid rgba(193, 142, 69, 0.55); text-decoration: none; }
.orn-drawer__rewards-label { font-family: "IBM Plex Mono", "JetBrains Mono", monospace; font-size: 12px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: #E4C88C; }
.orn-drawer__rewards-value { font-family: "IBM Plex Mono", "JetBrains Mono", monospace; font-size: 16px; font-weight: 700; letter-spacing: 0.02em; color: #F6E7C1; }
.orn-drawer__link svg { width: 16px; height: 16px; flex: 0 0 auto; }
.orn-drawer__link--logout { border-bottom: 0; }

@media (min-width: 768px) {
    .orn-header__utility { display: flex; }
    .orn-header__nav-primary { display: flex; justify-content: flex-end; }
    .orn-header__burger { display: none; }
    .orn-drawer, .orn-drawer-backdrop { display: none; }
}

/* =============================================================
   Hero — boarding pass
   ============================================================= */
.orn-hero { background: linear-gradient(165deg, var(--orn-navy) 0%, var(--orn-navy-2) 60%, var(--orn-navy-3) 100%); color: var(--orn-text-light); }
.orn-hero__inner { max-width: var(--orn-container); margin-inline: auto; padding: 70px var(--orn-gutter) 78px; display: grid; grid-template-columns: minmax(0, 1fr); gap: 56px; align-items: center; }
@media (min-width: 1024px) {
    .orn-hero__inner { grid-template-columns: minmax(340px, 620px) 1fr; }
}
.orn-hero__copy { max-width: 820px; padding-bottom: 60px; }
.orn-hero__crumb { display: inline-flex; align-items: center; gap: 8px; font-size: 13.5px; font-weight: 500; color: rgba(244, 239, 227, 0.72); text-decoration: none; margin-bottom: 22px; }
.orn-hero__crumb:hover { color: var(--orn-white, rgb(201, 164, 92)); }
.orn-hero__crumb-arrow { font-size: 15px; line-height: 1; }
.orn-hero__eyebrow { font-family: var(--orn-body); font-size: 12px; letter-spacing: 0.3em; text-transform: uppercase; color: var(--orn-white); font-weight: 600; margin-bottom: 18px; }
.orn-hero__badge { display: inline-flex; align-items: center; gap: 11px; background: linear-gradient(100deg, rgb(228, 0, 43) 0%, rgb(255, 61, 46) 100%); padding: 9px 18px 9px 14px; border-radius: var(--r-pill); color: #fff; font-weight: 700; font-size: 15px; letter-spacing: 0.01em; margin-bottom: 16px; box-shadow: rgba(228, 0, 43, 0.34) 0 10px 26px; }
.orn-hero__badge strong { font-family: var(--orn-font-mono); letter-spacing: 0.14em; text-transform: uppercase; font-size: var(--orn-fs-eyebrow); font-weight: 700; background: rgba(255, 255, 255, 0.2); border-radius: var(--r-pill); padding: 4px 9px; }
.orn-hero__title { font-family: var(--orn-font-display); font-size: var(--orn-fs-hero); font-weight: 800; color: #fff; line-height: 1.02; margin-top: 16px; margin-bottom: 2px; }
.orn-hero__lede { color: #fff; max-width: 480px; margin-bottom: 30px; font-size: var(--orn-fs-lede); line-height: 1.5; }
.orn-hero__pillars { font-family: Anton, sans-serif; font-weight: 400; color: #fff; font-size: clamp(22px, 2.2vw, 32px); letter-spacing: 0.01em; margin: 18px 0 22px; }
.orn-hero__ctas { display: flex; flex-wrap: wrap; gap: var(--sp-3); }
.orn-hero__ctas .orn-btn--primary { background: var(--orn-navy) !important; color: #fff !important; }
.orn-hero__ctas .orn-btn--primary:hover { background: var(--orn-navy-2) !important; color: #fff !important; }
.orn-btn { display: inline-flex; align-items: center; justify-content: center; padding: 10px 25px; border-radius: var(--button-radius-primary); font-weight: 700; font-size: 16px; text-decoration: none; cursor: pointer; transition: transform 0.15s ease, background 0.15s ease; }
.orn-btn:hover { text-decoration: none; }
.orn-btn--primary { background: var(--orn-gold); color: var(--orn-navy); }
.orn-btn--primary:hover { background: var(--orn-gold-2); }
.orn-btn--ghost { background: var(--orn-text); color: var(--orn-text-light); border: 1px solid var(--orn-text); }
.orn-btn--ghost:hover { background: var(--orn-text); }
.orn-btn--dark { background: var(--orn-text); color: #fff; }
.orn-btn--dark:hover { background: var(--orn-text); }
.orn-btn--block { width: 100%; }

.orn-hero__stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; padding-top: var(--sp-6); font-family: var(--orn-font-mono); }
.orn-hero__stat-n { font-family: var(--orn-font-body); font-weight: 800; font-size: 32px; color: #fff; }
.orn-hero__stat-l { font-family: var(--orn-font-body); font-size: 13px; color: var(--orn-mute-2); margin-top: 2px; }

/* Boarding pass card */
.orn-pass { background: var(--orn-cream-2); color: var(--orn-navy); border-radius: 18px; overflow: hidden; box-shadow: rgba(0, 0, 0, 0.34) 0 30px 70px; width: 100%; max-width: 464px; margin-inline: auto; transform: rotate(1.3deg); }
.orn-pass__top { display: flex; align-items: center; justify-content: space-between; padding: 13px 22px; background: var(--orn-navy); color: var(--orn-text-light); }
.orn-pass__brand { display: inline-flex; align-items: center; gap: 10px; font-family: var(--orn-font-display); font-weight: 800; font-size: 15px; letter-spacing: 0.02em; color: #fff; }
.orn-pass__brand-mark { width: 30px; height: 30px; border-radius: 50%; background: var(--orn-navy); display: inline-flex; align-items: center; justify-content: center; overflow: hidden; }
.orn-pass__brand-mark img { width: 20px; height: 20px; filter: brightness(0) invert(1); }
.orn-pass__brand-name { color: #fff; font-weight: 800; font-size: 20px; letter-spacing: 0.02em; }
.orn-pass__brand-divider { color: rgba(255, 255, 255, 0.3); font-weight: 400; margin: 0 2px; }
.orn-pass__brand-label { color: rgba(255, 255, 255, 0.65); font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.24em; text-transform: uppercase; font-weight: 600; }
.orn-pass__badge { color: var(--orn-navy); font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.24em; text-transform: uppercase; font-weight: 700; }
.orn-pass__route { position: relative; display: grid; grid-template-columns: 1fr; align-items: end; padding: 10px 24px 6px; gap: 2px; overflow: hidden; }
.orn-pass__route-cities { display: flex; justify-content: flex-start; gap: 18px; margin-top: 5px; grid-column: 1 / -1; }
.orn-pass__route::after { content: ""; position: absolute; top: 0; right: 0; bottom: 0; width: 55%; background-image: linear-gradient(to right, #fff 0%, rgba(255, 255, 255, 0.75) 22%, rgba(255, 255, 255, 0.4) 55%), url('https://cdn.yourholiday.me/static/img/backgrounds/orn-coach.jpg'); background-position: right center; background-size: cover; background-repeat: no-repeat; pointer-events: none; }
.orn-pass__route > * { position: relative; z-index: 1; }
.orn-pass__route-label { font-family: var(--orn-font-mono); font-size: 10px; letter-spacing: 0.26em; text-transform: uppercase; color: var(--orn-navy); font-weight: 700; grid-column: 1 / -1; }
.orn-pass__city { font-family: var(--orn-font-display); font-weight: 800; font-size: var(--orn-fs-pass-city); line-height: 0.9; }
.orn-pass__arrow { color: var(--orn-gold); font-size: 1.5rem; padding-bottom: 0.3rem; }
.orn-pass__meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sp-4); padding: 14px 24px 8px; }
.orn-pass__meta-label { font-family: var(--orn-font-mono); font-size: 9.5px; letter-spacing: 0.05em; text-transform: uppercase; color: var(--orn-mute); font-weight: 600; margin-bottom: var(--sp-1); }
.orn-pass__meta-value { font-family: var(--orn-font-body); font-weight: 700; font-size: 13px; }
.orn-pass__tags { display: flex; flex-wrap: wrap; gap: 8px; padding: 0px 18px 4px; }
.orn-tag { display: inline-flex; align-items: center; padding: 4px 12px; border-radius: var(--r-pill); border: 1px solid rgb(238, 201, 198); color: var(--orn-ink-2); font-size: 11px; }
.orn-pass__bottom { border-top: 2px dashed rgb(218, 206, 180); margin-top: 10px; padding: 10px 24px; display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.orn-pass__barcode { height: 36px; flex: 1; background: repeating-linear-gradient(90deg, var(--orn-navy) 0 2px, transparent 2px 4px, var(--orn-navy) 4px 5px, transparent 5px 9px); border-radius: 2px; }
.orn-pass__board { display: inline-flex; align-items: center; gap: var(--sp-2); background: var(--orn-navy); color: #fff; padding: var(--sp-3) var(--sp-5); border-radius: var(--r-pill); font-weight: 600; font-size: var(--orn-fs-small); }

/* Boarding pass — black override (hero card only) */
.orn-pass { color: rgb(15, 15, 15); }
.orn-pass__top { background: rgb(15, 15, 15); }
.orn-pass__city { color: rgb(15, 15, 15); }
.orn-pass__arrow { color: var(--orn-navy); }
.orn-pass__meta-value { color: rgb(15, 15, 15); }
.orn-pass__barcode { background: repeating-linear-gradient(90deg, rgb(15, 15, 15) 0 2px, transparent 2px 4px, rgb(15, 15, 15) 4px 5px, transparent 5px 9px); }
.orn-pass__board { background: rgb(15, 15, 15); }

/* =============================================================
   Mobile — home hero + boarding pass (<= 640px)
   The stacked hero column uses minmax(0,1fr) so it can shrink below
   the boarding pass's intrinsic min-content width; without this the
   pass (route cities + 3-col meta) props the whole page open and
   every section reads clipped on a phone. Here we also scale the
   title and pass to the viewport and let the pass fill the column.
   ============================================================= */
@media (max-width: 640px) {
    /* Guard against phantom horizontal scroll on phones: the fixed drawer
       backdrop (position:fixed; inset:0) stretches to any residual overflow
       area, so clip the root on x. Inner scroll strips (.orn-depstrip,
       .orn-jrygrid) keep their own overflow-x:auto and are unaffected. */
    html, body { overflow-x: clip; }
    /* Compact the header on phones — the 30px block padding + 50px logo made
       it oversized. Tighten padding, shrink the logo, and align the burger. */
    .orn-header__inner { padding: 14px 16px; gap: 12px; }
    /* Ceiling only — the row shrinks a wide lockup on its own, proportionally,
       because the height is auto rather than pinned. */
    .orn-header__logo-img { max-height: var(--orn-logo-h, 35px); }
    .orn-hero__inner { padding-top: 36px; padding-bottom: 48px; gap: 32px; }
    .orn-hero__copy, .orn-hero__pass { min-width: 0; }
    .orn-hero__title { font-size: clamp(34px, 11vw, 46px); }
    .orn-hero__lede { font-size: 15px; margin-bottom: 24px; }
    .orn-hero__ctas .orn-btn { flex: 1 1 auto; }
    /* Keep the year range ("2026–27") on one line in its 3-col cell so it
       doesn't break to "2026–" / "27"; scale the stat number to fit. */
    .orn-hero__stats { gap: 14px; }
    .orn-hero__stat-n { font-size: clamp(21px, 6.4vw, 30px); white-space: nowrap; }
    .orn-hero__pass { justify-self: stretch; width: 100%; margin-bottom: 8px; }
    .orn-pass { max-width: 100%; transform: none; }
    .orn-pass__city { font-size: clamp(26px, 9vw, 40px); }
    /* Badges: the single horizontal capsule overflows on phones and each
       pill wraps to three lines. Reflow into a 2-column chip grid so all
       four badges are visible without horizontal scroll; drop the vertical
       row dividers and give each chip a subtle fill instead. */
    .orn-hero__badges { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; width: 100%; max-width: 100%; margin-top: 24px; padding: 10px; border-radius: 18px; overflow: visible; }
    .orn-hero__badge-pill { max-width: none; padding: 9px 10px; gap: 8px; background: rgba(255, 255, 255, 0.06); border-radius: 12px; font-size: 12px; }
    .orn-hero__badge-pill + .orn-hero__badge-pill { border-left: 0; }
    .orn-hero__badge-ic { width: 16px; height: 16px; }
}

/* =============================================================
   Section heads
   ============================================================= */
.orn-secthead { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 28px; text-align: left; }
.orn-secthead__title { font-family: var(--orn-font-display); font-size: 28px; font-weight: 700; line-height: 1.1; letter-spacing: -0.01em; text-align: left; }
.orn-secthead__lede { color: rgb(92, 92, 92); flex: 1 1 320px; font-size: 16px; line-height: 1.5; text-align: left; margin-bottom: 0; }
.orn-secthead__eyebrow { font-family: var(--orn-font-mono); letter-spacing: 0.24em; text-transform: uppercase; color: var(--orn-navy); font-size: var(--orn-fs-tiny); font-weight: 700; display: block; margin-bottom: var(--sp-3); }

/* Small compact section head — used by the "Offers move with the seats"
   strip that sits above the bigger "Departures filling now" grid. */
.orn-secthead--compact { margin-bottom: 18px; }
.orn-secthead--compact .orn-secthead__title { font-size: 22px; line-height: 1.2; }
.orn-secthead--compact .orn-secthead__lede { font-size: 14px; }

/* Stacked section head — title on its own line, lede beneath with
   8px gap. Used for "All Europe journeys" / "Departures filling now"
   where the lede is long. Reference data-dc-tpl="175"/"176":
   16px lede, 8px margin-top, full width. */
.orn-secthead--stack { display: block; }
.orn-secthead--stack .orn-secthead__lede { margin-top: 8px; font-size: 16px; line-height: 1.5; flex: none; max-width: none; }

/* Row layout: title+lede on the left, scroll-nav arrows on the right, single line. */
.orn-secthead-row { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 20px; }
.orn-secthead-row .orn-secthead { flex: 1 1 auto; margin-bottom: 0; }
.orn-secthead-row .orn-scroll-nav { flex: 0 0 auto; margin: 0; }
@media (max-width: 720px) {
    .orn-secthead-row { flex-direction: column; align-items: stretch; gap: 12px; }
    .orn-secthead-row .orn-scroll-nav { align-self: flex-end; }
}

/* Horizontal-scroll nudge arrows for card strips (Departures / Journeys /
   Specials). Right-aligned circular buttons on a white ground with a soft
   shadow. Wired to their target grid via data-orn-scroll-target + JS. */
.orn-scroll-nav { display: flex; justify-content: flex-end; gap: 10px; margin: 0 0 12px; }
.orn-scroll-nav__btn { width: 42px; height: 42px; border-radius: 50%; border: 0; background: #fff; color: rgb(20, 35, 59); font-family: Archivo, sans-serif; font-size: 18px; line-height: 1; font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 2px 6px rgba(10, 24, 55, 0.10), 0 1px 2px rgba(10, 24, 55, 0.06); transition: transform 0.15s ease, box-shadow 0.15s ease; }
.orn-scroll-nav__btn:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(10, 24, 55, 0.14), 0 2px 4px rgba(10, 24, 55, 0.08); }
.orn-scroll-nav__btn:active:not(:disabled) { transform: translateY(0); }
.orn-scroll-nav__btn:disabled { opacity: 0.35; cursor: default; box-shadow: none; }
@media (max-width: 900px) { .orn-scroll-nav { display: none; } }

/* =============================================================
   Card grid — auto-fit reflow
   ============================================================= */
.orn-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); gap: 16px; }
.orn-grid--2 { --orn-min: 320px; grid-template-columns: repeat(auto-fit, minmax(min(var(--orn-min), 100%), 1fr)); }
.orn-grid--3 { --orn-min: 260px; grid-template-columns: repeat(auto-fit, minmax(min(var(--orn-min), 100%), 1fr)); }
.orn-grid--4 { --orn-min: 240px; grid-template-columns: repeat(auto-fit, minmax(min(var(--orn-min), 100%), 1fr)); }

/* Generic card */
.orn-card { background: var(--orn-paper); border-radius: var(--r-card); box-shadow: var(--sh-card); overflow: hidden; border-top: 4px solid transparent; display: flex; flex-direction: column; transition: transform 0.2s ease, box-shadow 0.2s ease; }
.orn-card:hover { transform: translateY(-2px); box-shadow: var(--sh-raised); }
.orn-card__body { padding: var(--sp-5); display: flex; flex-direction: column; gap: var(--sp-3); flex: 1; }
.orn-card__eyebrow { font-family: var(--orn-font-mono); letter-spacing: 0.16em; text-transform: uppercase; font-size: var(--orn-fs-tiny); font-weight: 700; }
.orn-card__title { font-size: var(--orn-fs-h3); font-weight: 800; }
.orn-card__lede { color: var(--orn-ink-2); font-size: var(--orn-fs-small); }
.orn-card__footer { padding: var(--sp-5); padding-top: 0; display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); }
.orn-card--accent-red { border-top-color: var(--orn-red); }
.orn-card--accent-amber { border-top-color: var(--orn-amber); }
.orn-card--accent-green { border-top-color: var(--orn-green); }
.orn-card--accent-blue { border-top-color: var(--orn-blue); }
.orn-card--accent-purple { border-top-color: var(--orn-purple); }
.orn-card--accent-orange { border-top-color: var(--orn-orange); }
.orn-card--accent-teal { border-top-color: var(--orn-teal); }

.orn-card-save-chip { display: inline-flex; align-items: center; align-self: flex-start; margin-top: 8px; padding: 6px 12px; border-radius: 999px; background: #E9F5EE; color: #1F7A3D; font-family: var(--orn-font-body); font-size: 13px; font-weight: 600; line-height: 1.2; letter-spacing: 0.01em; }

.orn-price { display: flex; flex-direction: column; }
.orn-price__label { font-family: var(--orn-font-mono); font-size: var(--orn-fs-tiny); letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-mute); }
.orn-price__amount { font-family: var(--orn-font-display); font-weight: 800; font-size: 26px; color: var(--orn-text); }

/* Tier counter cards — Offers move with the seats. Matches reference
   data-dc-tpl="124" exactly: white paper, thick top border in the
   tier's tone colour, thin cream side+bottom borders, 14px corners,
   18x20 padding, flex column with 8px gap between rows. */
.orn-tier { background: var(--orn-paper); border-radius: 14px; padding: 18px 20px; border: 1px solid rgb(228, 221, 205); display: flex; flex-direction: column; gap: 8px; }

/* The eyebrow + count sit on one row, space-between. */
.orn-tier__topline { display: flex; align-items: center; justify-content: space-between; }
.orn-tier__eyebrow { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; color: var(--orn-navy); }
.orn-tier--amber .orn-tier__eyebrow, .orn-tier--amber .orn-tier__count { color: var(--orn-navy); }
.orn-tier--red .orn-tier__eyebrow, .orn-tier--red .orn-tier__count { color: var(--orn-red); }
.orn-tier__count { font-family: var(--orn-font-mono); font-weight: 600; font-size: 24px; line-height: 1; color: var(--orn-blue); }
.orn-tier__title { font-family: var(--orn-font-display); font-weight: 700; font-size: 18px; color: var(--orn-text); line-height: 1.2; margin: 0; }
.orn-tier__lede { color: rgb(90, 101, 115); font-size: 13.5px; line-height: 1.5; margin: 0; }

/* =============================================================
   Sell-through bar
   ============================================================= */
.orn-bar { height: 8px; background: var(--orn-cream-2); border-radius: var(--r-pill); overflow: hidden; }
.orn-bar__fill { height: 100%; background: var(--orn-blue); border-radius: var(--r-pill); transition: width 0.4s ease; }
.orn-bar--green .orn-bar__fill { background: var(--orn-green); }
.orn-bar--amber .orn-bar__fill { background: var(--orn-amber); }
.orn-bar--red .orn-bar__fill { background: var(--orn-red); }

.orn-legend { display: flex; flex-wrap: wrap; gap: var(--sp-4); margin: 10px 0; font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-mute); }
.orn-legend__sw { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: var(--sp-2); vertical-align: middle; }

/* Section header for "Departures filling now" — title/lede on the left,
   "View all promotions →" on the right. Same shape as .orn-rgnhead but
   without the eyebrow line. */
.orn-filhead { display: flex; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; gap: 16px; margin-bottom: 12px; }
.orn-filhead__copy { flex: 1 1 320px; max-width: 640px; }
.orn-filhead__cta { color: var(--orn-red); font-family: var(--orn-font-body); font-weight: 700; font-size: 15px; white-space: nowrap; text-decoration: none; }
.orn-filhead__cta:hover { color: var(--orn-navy); }

/* Horizontal scroll strip — ~3.5 cards visible per viewport width, scrolls
   horizontally with snap. Cards shrink to fit; nights suffix stripped so
   the route label reads "Munich → Vienna" not "Munich 1N → Vienna 2N". */
.orn-depstrip { display: flex; gap: 16px; margin-top: 12px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-left: 4px; padding: 4px 4px 12px; -webkit-overflow-scrolling: touch; }
.orn-depstrip::-webkit-scrollbar { height: 8px; }
.orn-depstrip::-webkit-scrollbar-thumb { background: rgba(20, 35, 59, 0.18); border-radius: 6px; }
.orn-depstrip::-webkit-scrollbar-track { background: transparent; }
.orn-depstrip > .orn-depcard { flex: 0 0 300px; min-width: 240px; max-width: 300px; scroll-snap-align: start; }
@media (max-width: 768px) {
    .orn-depstrip > .orn-depcard { flex: 0 0 calc((100% - 16px) / 1.4); }
}
/* Phones: show one big departure card (plus a peek of the next) instead of
   ~1.4 cramped cards, so the price + "Select seats" footer has room. The
   strip goes full-bleed past the container gutter with a small inset so the
   card can grow wider than the gutter-boxed width. Placed after the <=768
   rule so it wins the cascade at narrow widths. */
@media (max-width: 640px) {
    .orn-depstrip { scroll-padding-left: 16px; }
    .orn-depstrip > .orn-depcard { flex: 0 0 100%; max-width: 280px; }
}
/* Shrink card typography slightly since cards are narrower in the strip. */
.orn-depstrip .orn-depcard__route { font-size: 18px; }
.orn-depstrip .orn-depcard__body { padding: 0px 18px 20px; }
.orn-depstrip .orn-depcard__price-amount { font-size: 20px; }

/* =============================================================
   Departure card — "Departures filling now" grid.
   Matches reference data-dc-tpl="146"–"173" exactly:
     white paper, 1px cream border, 18px radius, soft shadow,
     7px tier-tone strip at top, 20×22 padding, internal flex column.
   ============================================================= */
.orn-depcard { background: var(--orn-paper); border: 0; border-radius: var(--button-radius-card); overflow: hidden; box-shadow: rgba(20, 35, 59, 0.06) 0 10px 28px; display: flex; flex-direction: column; }
.orn-depcard__media { position: relative; aspect-ratio: 16 / 8; background: rgb(230, 226, 216) center/cover no-repeat; }
.orn-depcard__media--placeholder { background: linear-gradient(135deg, rgb(230, 226, 216), rgb(210, 204, 190)); }
.orn-depcard__body { padding: 20px 22px 22px; display: flex; flex-direction: column; flex: 1; }
.orn-depcard__code { position: absolute; top: 12px; left: 12px; font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.16em; font-weight: 700; color: rgb(15, 15, 15); background: rgba(255, 255, 255, 0.94); text-transform: uppercase; border-radius: 6px; padding: 5px 10px; box-shadow: rgba(15, 15, 15, 0.15) 0 2px 6px; }
.orn-flight-pill,
.orn-jrycard > .orn-flight-pill { position: absolute; display: inline-flex; align-items: center; padding: 5px 12px; border-radius: 999px; background: var(--orn-navy); color: white; font-family: var(--orn-font-body); font-size: 10.5px; font-weight: 700; text-transform: uppercase; box-shadow: 0 2px 6px rgba(15, 15, 15, 0.18); z-index: 3; }
.orn-flight-pill--top-left { top: 12px; left: 12px; }
.orn-flight-pill--top-right { top: 12px; right: 12px; }

/* Mode badge (find-journey wizard) — mirrors flight-pill scaffolding; anchored
   top-right so it clears the top-left Early-bird pill. */
.orn-find__mode-badge { position: absolute; top: 12px; right: 12px; display: inline-flex; align-items: center; padding: 5px 10px; border-radius: 999px; font-family: var(--orn-font-body); font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; box-shadow: 0 2px 6px rgba(15, 15, 15, 0.18); z-index: 3; }
.orn-find__mode-badge--group   { background: rgba(15, 15, 15, 0.82); color: #fff; }
.orn-find__mode-badge--private { background: #E4002B; color: #fff; }

/* Mode pill — universal for any surface showing depcards (idea/journey strips,
   wizard grid). Anchored top-right so it clears the top-left Flights-Free pill.
   Red for private, dark for group. */
.orn-mode-pill { position: absolute; top: 12px; right: 12px; display: inline-flex; align-items: center; padding: 5px 12px; border-radius: 999px; font-family: var(--orn-font-body); font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; box-shadow: 0 2px 6px rgba(15, 15, 15, 0.18); z-index: 3; }
.orn-mode-pill--private { background: #E4002B; color: #fff; }
.orn-mode-pill--group   { background: rgba(15, 15, 15, 0.82); color: #fff; }
/* Inline pill inside the depcard meta row (Days · Countries · Flights Free) */
.orn-flight-pill--meta { position: static; margin-left: auto; align-self: center; box-shadow: none; }
.orn-depcard__chip { position: absolute; top: 12px; right: 12px; font-size: 12px; font-weight: 700; color: rgb(190, 63, 57); background: rgba(253, 233, 231, 0.96); border-radius: var(--r-pill); padding: 5px 12px; white-space: nowrap; box-shadow: rgba(15, 15, 15, 0.12) 0 2px 6px; }
.orn-depcard--amber .orn-depcard__chip { color: rgb(199, 122, 43); background: rgba(252, 240, 224, 0.96); }
.orn-depcard--green .orn-depcard__chip { color: rgb(14, 124, 134); background: rgba(224, 240, 242, 0.96); }
.orn-depcard--red .orn-depcard__chip { color: rgb(190, 63, 57); background: rgba(252, 232, 230, 0.96); }
.orn-depcard__route { display: flex; align-items: center; gap: 11px; margin-top: 14px; font-family: var(--orn-font-display); font-weight: 700; font-size: 24px; color: rgb(15, 15, 15); line-height: 1.1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.orn-depcard__route-arrow { color: var(--orn-gold); }
.orn-depcard__sub { font-size: 13px; color: rgb(90, 101, 115); margin-top: 3px; }
.orn-depcard__chain { font-size: 14px; color: rgb(90, 101, 115); margin-top: 6px; line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.orn-depcard__desc { font-size: 13px; color: rgb(90, 101, 115); margin-top: 10px; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.orn-depcard--journey .orn-depcard__route { white-space: normal; text-overflow: clip; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 20px; }

/* ── Journey poster card — full-bleed image with title/itinerary/price overlaid.
   Applied on the journeys-home strip cards so a journey reads as an image the
   way experience posters do. Mirrors .orn-jrycard's width + scrim treatment. */
.orn-depstrip > .orn-depcard--journey { flex: 0 0 240px; min-width: 240px; max-width: 240px; min-height: 360px; padding: 0; border-radius: var(--button-radius-card); overflow: hidden; position: relative; color: #fff; background: rgb(15, 15, 15) center/cover no-repeat; display: flex; flex-direction: column; box-shadow: rgba(0, 0, 0, 0.25) 0 12px 28px; }
.orn-depstrip > .orn-depcard--journey::before { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0.45) 45%, rgba(0, 0, 0, 0) 78%); pointer-events: none; z-index: 0; }
.orn-depstrip > .orn-depcard--journey > * { position: relative; z-index: 1; }
/* Media is only used to hoist top pills — no visual box, no height. */
.orn-depcard--journey .orn-depcard__media { position: static; aspect-ratio: auto; background: transparent; padding: 0; height: 0; flex: 0 0 auto; }
.orn-depcard--journey .orn-depcard__media--placeholder { background: transparent; }
/* Move mode pill (PRIVATE / GROUP) into top-right instead of top-left. */
.orn-depcard--journey .orn-mode-pill { position: absolute; top: 14px; right: 14px; left: auto; white-space: nowrap; }
.orn-depcard--journey .orn-flight-pill--top-left { position: absolute; top: 14px; left: 14px; right: auto; width: auto; max-width: none; white-space: nowrap; }
/* Body pinned to bottom via margin-top:auto — sits over the darkest scrim area. */
.orn-depcard--journey .orn-depcard__body { padding: 22px; background: transparent; color: #fff; margin-top: auto; display: flex; flex-direction: column; }
.orn-depcard--journey .orn-depcard__route { font-family: var(--orn-font-heading-serif); font-weight: 500; font-size: 20px; line-height: 1.15; color: #fff; margin: auto 0 8px; text-shadow: 0 1px 6px rgba(0, 0, 0, 0.55); }
/* The city chain is the card's real differentiator, so it shows here too. Light over the
   image scrim, matching the meta line below it rather than the light-background grey. */
.orn-depcard--journey .orn-depcard__chain { display: block; font-size: 12px; margin: 4px 0;
    color: rgba(255, 255, 255, 0.85); text-shadow: 0 1px 4px rgba(0, 0, 0, 0.55); }
/* Flat one-line meta ("9 Days · 13 countries") — mono, subtle. */
.orn-depcard--journey .orn-depcard__meta { margin: 0 0 8px; padding: 0; background: transparent; border: 0; font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.04em; color: rgba(255, 255, 255, 0.85); text-shadow: 0 1px 4px rgba(0, 0, 0, 0.55); }
/* Price footer overlaid — no border-top, no white bg. */
.orn-depcard--journey .orn-depcard__foot { padding: 0; margin: 0; background: transparent; border-top: 0; }
.orn-depcard--journey .orn-depcard__price-label { display: none; }
.orn-depcard--journey .orn-depcard__price-amount { font-family: var(--orn-font-mono); font-size: 22px; font-weight: 700; color: #fff; text-shadow: 0 1px 6px rgba(0, 0, 0, 0.55); }
.orn-depcard--journey .orn-depcard__price-gross { font-family: var(--orn-font-mono); font-size: 12px; color: rgba(255, 255, 255, 0.7); text-decoration: line-through; }
.orn-depcard--journey .orn-depcard__cta { display: none; }
@media (max-width: 640px) {
    .orn-depstrip > .orn-depcard--journey { flex: 0 0 78vw; max-width: 240px; }
}
.orn-depcard__meta { display: flex; gap: 10px; margin-top: 10px; padding: 10px 0; border-top: 1px solid rgb(237, 231, 218); border-bottom: 1px solid rgb(237, 231, 218); }
.orn-depcard__stat-k { font-family: var(--orn-font-body); font-size: 11px; letter-spacing: 0.06em; color: rgb(122, 133, 147); }
.orn-depcard__stat-v { font-family: var(--orn-font-body); font-size: 16px; font-weight: 600; color: rgb(15, 15, 15); margin-top: 3px; line-height: 1.1; }
.orn-depcard__date { display: flex; align-items: center; gap: 10px; margin-top: 10px; font-family: var(--orn-font-mono); font-size: 13px; font-weight: 600; color: rgb(15, 15, 15); }
.orn-depcard__date-icon { color: rgb(242, 13, 22); }
.orn-depcard__bar-wrap { margin-top: 12px; }
.orn-depcard__bar { height: 9px; border-radius: 6px; background: rgb(237, 231, 218); overflow: hidden; }
.orn-depcard__bar-fill { height: 100%; border-radius: 6px; background: rgb(245, 138, 130); transition: width 0.4s ease; }
.orn-depcard--amber .orn-depcard__bar-fill { background: rgb(199, 122, 43); }
.orn-depcard--green .orn-depcard__bar-fill { background: rgb(14, 124, 134); }
.orn-depcard--red .orn-depcard__bar-fill { background: rgb(190, 63, 57); }
.orn-depcard__seats { display: flex; justify-content: space-between; margin-top: 7px; font-size: 12.5px; color: rgb(122, 133, 147); font-family: var(--orn-font-mono); }
.orn-depcard__foot { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--sp-4); margin-top: auto; padding-top: 10px; }
.orn-depcard__price-label { font-size: 12px; color: rgb(154, 138, 110); text-transform: none; letter-spacing: 0; }
.orn-depcard__price-amount { font-family: var(--orn-font-mono); font-size: 18px; font-weight: 600; color: rgb(15, 15, 15); line-height: 1.1; }
.orn-depcard__price-gross { font-family: var(--orn-font-mono); font-size: 13px; color: rgb(140, 140, 140); text-decoration: line-through; margin-bottom: 2px; font-variant-numeric: tabular-nums; }
.orn-depcard__savings-text { color: #1F7A3D; font-family: var(--orn-font-body); font-size: 12px; font-weight: 600; margin-top: 2px; line-height: 1.2; }
.orn-depcard__cta { display: inline-flex; align-items: center; background: rgb(15, 15, 15); color: var(--orn-text-light); font-weight: 700; font-size: 14px; border-radius: var(--button-radius-primary); padding: 12px 18px; white-space: nowrap; }
.orn-depcard__cta:hover { background: rgb(0, 0, 0); color: #fff; }

/* =============================================================
   Journey card — "All Europe journeys" grid (8 master routes).
   Matches reference data-dc-tpl="179"–"189" exactly:
     white paper, 1px cream border + 5px LEFT accent in family colour,
     16px radius, soft shadow, 20×20 padding, min-height 188, flex
     column with price + family-coloured "View →" at the bottom.
   ============================================================= */
.orn-jrygrid { display: flex; gap: 20px; margin-top: 28px; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding-bottom: 8px; scrollbar-width: none; }
.orn-jrygrid::-webkit-scrollbar { display: none; }
.orn-jrycard { position: relative; flex: 0 0 240px; scroll-snap-align: start; cursor: pointer; background: rgb(15, 15, 15) center/cover no-repeat; padding: 26px; border-radius: var(--button-radius-card); display: flex; flex-direction: column; justify-content: flex-end; min-height: 360px; color: #fff; text-decoration: none; overflow: hidden; box-shadow: rgba(0, 0, 0, 0.25) 0 12px 28px; transition: transform 0.14s ease, box-shadow 0.14s ease; }
.orn-jrycard::before { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.35) 45%, rgba(0, 0, 0, 0) 75%); pointer-events: none; }
.orn-jrycard > * { position: relative; z-index: 1; }
.orn-jrycard--image { background-color: rgb(15, 15, 15); }
.orn-jrycard:hover { transform: translateY(-2px); box-shadow: rgba(20, 35, 59, 0.1) 0 14px 28px; }
.orn-jrycard--blue { border-left-color: rgb(47, 128, 237); }
.orn-jrycard--blue2 { border-left-color: rgb(31, 111, 178); }
.orn-jrycard--red { border-left-color: rgb(192, 57, 43); }
.orn-jrycard--amber { border-left-color: var(--orn-amber); }
.orn-jrycard--green { border-left-color: var(--orn-green); }
.orn-jrycard--orange { border-left-color: var(--orn-orange); }
.orn-jrycard--purple { border-left-color: var(--orn-purple); }
.orn-jrycard--teal { border-left-color: var(--orn-teal); }

.orn-jrycard__chip { display: inline-flex; align-self: flex-start; padding: 6px 14px; border-radius: 999px; background: var(--orn-navy); color: #fff; font-family: var(--orn-font-mono); font-size: 10.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 14px; }
.orn-jrycard__title { font-family: var(--orn-font-display); font-weight: 800; font-size: 20px; line-height: 1.1; color: #fff; margin: 0 0 8px; }
.orn-jrycard__sub { font-size: 14px; color: rgba(255, 255, 255, 0.75); margin: 0 0 14px; line-height: 1.4; }
.orn-jrycard__pricerow { display: inline-flex; align-items: baseline; gap: 8px; margin-bottom: 4px; color: rgba(255, 255, 255, 0.8); }
.orn-jrycard__price-label { font-family: var(--orn-font-mono); font-size: 10.5px; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(255, 255, 255, 0.65); }
.orn-jrycard__price-amount { font-family: var(--orn-font-display); font-size: 20px; font-weight: 800; color: #fff; }
.orn-jrycard__view { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 14px; font-weight: 700; color: #fff; }
.orn-jrycard--blue .orn-jrycard__view { color: rgb(47, 128, 237); }
.orn-jrycard--blue2 .orn-jrycard__view { color: rgb(31, 111, 178); }
.orn-jrycard--red .orn-jrycard__view { color: rgb(192, 57, 43); }
.orn-jrycard--amber .orn-jrycard__view { color: var(--orn-amber); }
.orn-jrycard--green .orn-jrycard__view { color: var(--orn-green); }
.orn-jrycard--orange .orn-jrycard__view { color: var(--orn-orange); }
.orn-jrycard--purple .orn-jrycard__view { color: var(--orn-purple); }
.orn-jrycard--teal .orn-jrycard__view { color: var(--orn-teal); }

/* =============================================================
   Wizard
   ============================================================= */
/* =============================================================
   Wizard column — focused narrow column per ORN Find Your Trip mockup.
   Container is 880px (not the 1200px site-wide container) so the
   wizard reads as a guided flow, not a marketing page.
   ============================================================= */
.orn-wizard { background: var(--orn-cream); min-height: 100dvh; padding: var(--sp-6) 0 var(--sp-9); position: relative; }
/* Full-viewport wait overlay while narrow / must-see / results calls are in
   flight. Keeps the flow honest — no "0 products" flash between commit and
   response. */
.orn-wizard__wait { position: fixed; inset: 0; background: rgba(15, 15, 15, 0.35); backdrop-filter: blur(2px); display: flex; align-items: center; justify-content: center; z-index: 10000; }
.orn-wizard__wait[hidden] { display: none; }
.orn-wizard__wait-inner { background: #fff; border-radius: 20px; padding: 28px 32px; box-shadow: 0 24px 60px rgba(15, 15, 15, 0.25); display: flex; align-items: center; gap: 16px; max-width: 320px; }
.orn-wizard__wait-spin { width: 24px; height: 24px; border-radius: 50%; border: 3px solid rgba(20, 35, 59, 0.15); border-top-color: var(--orn-red, #F20D16); animation: orn-wizard-spin 0.7s linear infinite; flex: 0 0 auto; }
.orn-wizard__wait-text { margin: 0; font-family: 'Archivo', sans-serif; font-weight: 600; font-size: 15px; color: var(--orn-ink, rgb(20, 35, 59)); line-height: 1.4; }
@keyframes orn-wizard-spin { to { transform: rotate(360deg); } }
.orn-wizard__top { display: flex; align-items: center; justify-content: space-between; max-width: 1175px; margin-inline: auto; padding: 0 28px; font-size: 14px; }
.orn-wizard__back { color: var(--orn-ink-2); font-weight: 600; display: inline-flex; gap: var(--sp-2); }
.orn-wizard__counter { font-family: var(--orn-font-mono); font-size: 13px; color: rgb(122, 133, 147); letter-spacing: 0.08em; }
.orn-wizard__progress { height: 5px; background: rgb(224, 217, 201); /* warm-cream track — matches mockup */ max-width: 1175px; margin: 14px auto 0; border-radius: 4px; overflow: hidden; }
.orn-wizard__progress-fill { height: 100%; background: var(--orn-gold); border-radius: 4px; transition: width 0.25s ease; }
.orn-wizard__pillrow { max-width: 1175px; margin: 22px auto 0; padding: 0 28px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.orn-wizard__matchpill { background: rgb(251, 238, 237); color: rgb(201, 10, 18); border-radius: var(--r-pill); padding: 6px 14px; font-family: var(--orn-font-mono); font-size: 15px; font-weight: 600; }
.orn-wizard__hint { color: var(--orn-mute); font-size: 13.5px; }

.orn-wizard__card { max-width: 1175px; margin: 18px auto 0; border-radius: 20px; min-height: 300px; display: flex; flex-direction: column; }
/* CRITICAL: the wizard JS toggles steps via `el.hidden = true/false`. The
   user-agent stylesheet applies `[hidden] { display: none }` at the lowest
   specificity (0,0,0,1), and the rule above sets `display: flex` at class
   specificity (0,0,1,0) — which wins, leaving every step rendered. Without
   this override every step card stacks vertically and Continue appears to
   do nothing. Scope to wizstep so it can't accidentally affect any
   non-wizard element that happens to be hidden + .orn-wizard__card. */
.orn-wizstep[hidden] { display: none !important; }
@media (max-width: 640px) {
    /* The card carried no horizontal padding, so step content (eyebrow,
       question, lede, options) sat flush against the screen edge and the
       sticky nav — whose negative margins already assume a var(--sp-5)
       gutter — overflowed. Give the card that gutter and align the top /
       progress / pill rows to the same 24px so everything lines up. */
    .orn-wizard__card { border-radius: 16px; padding-inline: var(--sp-5); }
    .orn-wizard__top, .orn-wizard__pillrow { padding-left: var(--sp-5); padding-right: var(--sp-5); }
    .orn-wizard__progress { margin-inline: var(--sp-5); }
}
.orn-wizard__step-eyebrow { font-family: var(--orn-font-mono); font-size: 13px; letter-spacing: 0.18em; text-transform: uppercase; color: rgb(242, 13, 22); /* darker gold — mockup */ font-weight: 600; margin-bottom: 0; }
.orn-wizard__question { font-family: var(--orn-font-display); font-weight: 800; font-size: 34px; line-height: 1.1; margin: 10px 0 8px; }
.orn-wizard__lede { color: rgb(90, 101, 115); font-size: 15.5px; margin-bottom: 0; }

/* Options are a chip-wrap (flex), not a column grid — matches mockup */
.orn-wizard__options { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.orn-wizard__option { text-align: left; cursor: pointer; background: var(--orn-paper); border: 2px solid rgb(243, 243, 243); color: var(--orn-text); border-radius: 14px; padding: 16px 22px; min-width: 190px; display: flex; flex-direction: column; gap: 2px; font-weight: 600; font-size: 17px; transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease; }
.orn-wizard__option:hover { border-color: var(--orn-gold); }
.orn-wizard__option[aria-pressed="true"], .orn-wizard__option.is-selected { border-color: var(--orn-navy); }
.orn-wizard__option-title { font-family: var(--orn-font-body); font-weight: 600; font-size: 17px; color: var(--orn-text); }
.orn-wizard__option-sub { color: rgb(154, 138, 110); font-size: 12.5px; font-weight: 500; }
.orn-wizard__option--coming { opacity: 0.6; cursor: not-allowed; }
.orn-wizard__option--coming:hover { border-color: rgb(243, 243, 243); }
.orn-wizard__option-badge { display: inline-block; margin-top: 6px; font-family: var(--orn-font-body); font-size: 10.5px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--orn-navy); background: rgb(253, 240, 239); border: 1px solid rgb(246, 203, 199); padding: 3px 8px; border-radius: 999px; align-self: flex-start; }

.orn-wizard__nav { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: auto; padding-top: 30px; }
.orn-wizard__nav .orn-btn { min-height: 48px; border-radius: 11px; font-size: 15px; font-weight: 700; padding: 13px 30px; }
/* Disabled Continue — warm-stone fill with white text, per mockup. Scoped
   to wizard nav so site-wide .orn-btn--dark[disabled] isn't affected. */
.orn-wizard__nav .orn-btn--dark[disabled], .orn-wizard__nav .orn-btn--dark:disabled { background: rgb(201, 194, 178); color: #ffffff; cursor: not-allowed; border-color: rgb(201, 194, 178); box-shadow: none; }
.orn-wizard__skip { color: var(--orn-mute); text-decoration: none; font-size: 13px; }
.orn-wizard__counter { margin-left: auto; color: var(--orn-mute); font-family: var(--orn-font-mono); font-size: 13px; }

/* Mobile step-content overrides. Placed AFTER the base .orn-wizard__question /
   __options / __option rules above so they win on equal specificity: scale the
   heading down for phones and let options fill the column instead of holding a
   190px min-width. */
@media (max-width: 640px) {
    .orn-wizard__question { font-size: clamp(24px, 6.8vw, 30px); }
    .orn-wizard__options { margin-top: 20px; gap: 10px; }
    .orn-wizard__option { min-width: 0; width: 100%; padding: 14px 16px; }
}

@media (max-width: 767px) {
    .orn-wizard__nav { position: sticky; bottom: 0; background: var(--orn-paper); margin: var(--sp-6) calc(var(--sp-5) * -1) calc(var(--sp-5) * -1); padding: var(--sp-4) var(--sp-5); border-top: 1px solid var(--orn-line); z-index: 5; }
    .orn-wizard__nav .orn-btn--primary { flex: 1; }
}

/* Result cards (wizard step 4 results + departures-filling-now).
   Numbers pin to ~/Downloads/Results Listing.html so the live render
   matches the design mockup exactly. Card is a wrapping flex row (not
   grid) so columns stack cleanly at narrow widths; the 5px LEFT border
   carries the tone accent while the other sides stay warm-cream. */
.orn-result { background: var(--orn-paper); border: 1px solid rgb(243, 243, 243); border-radius: 16px; padding: 20px 24px; display: flex; align-items: center; gap: 22px; flex-wrap: wrap; box-shadow: none; }
.orn-result--green { border-left-color: rgb(30, 122, 78); }
.orn-result--amber { border-left-color: var(--orn-amber); }
.orn-result--red { border-left-color: var(--orn-red); }

/* Left column — route + sub + Includes pill */
.orn-result > div:first-child { min-width: 190px; flex: 1 1 0; }

.orn-result__route { display: flex; align-items: center; gap: 10px; font-family: var(--orn-font-display); font-weight: 800; font-size: 21px; color: var(--orn-text); line-height: 1; }
.orn-result__route-arrow { display: inline-block; vertical-align: middle; color: #F20D16; }
.orn-result__sub { font-size: 13.5px; color: rgb(90, 101, 115); /* slate, NOT warm-mute */ margin-top: 4px; }
.orn-result__tag { display: inline-flex; align-items: center; gap: 7px; background: rgb(251, 238, 237); color: rgb(27, 94, 60); padding: 5px 12px; border-radius: var(--r-pill); font-size: 12.5px; font-weight: 600; margin-top: 10px; }

/* Middle column — date + fill bar + sell label */
.orn-result__date { font-family: var(--orn-font-mono); font-size: 15px; font-weight: 600; color: var(--orn-text); }
.orn-result__sell { font-family: var(--orn-font-mono); font-size: 12px; font-weight: 700; margin-top: 5px; color: var(--orn-mute); /* mockup uses Hanken-cased "Selling well" — NOT uppercase */ text-transform: none; letter-spacing: 0; }
.orn-result__sell--green { color: rgb(30, 122, 78); }
.orn-result__sell--amber { color: var(--orn-amber); }
.orn-result__sell--red { color: var(--orn-red); }
.orn-result__sell--blue { color: rgb(224, 106, 97); }

/* Right column — price + Select seats CTA */
.orn-price { text-align: right; min-width: 100px; display: flex; flex-direction: column; }
.orn-price__label { font-family: var(--orn-font-body); /* NOT mono caps */ font-size: 11px; color: rgb(154, 138, 110); letter-spacing: 0; text-transform: none; /* lowercase "per person" */ }
.orn-price__amount { font-family: var(--orn-font-mono); font-size: 22px; font-weight: 600; color: var(--orn-text); }
.orn-result .orn-btn--dark { background: rgb(20, 35, 59); color: rgb(244, 239, 227); border-radius: 10px; padding: 13px 22px; font-weight: 700; font-size: 14px; white-space: nowrap; }

/* Scoped fill-bar override for the result card — match Results Listing.html
   exactly (8px tall, warmer track, fixed 160px width on the middle column). */
.orn-result .orn-bar { height: 8px; width: 160px; background: rgb(237, 231, 218); border-radius: 6px; margin-top: 8px; }
.orn-result .orn-bar__fill { background: rgb(37, 99, 168); border-radius: 6px; }
.orn-result .orn-bar--green .orn-bar__fill { background: rgb(30, 122, 78); }

/* =============================================================
   Journey detail — header card + rung cards + tabs
   ============================================================= */
.orn-journey-hero { background: var(--orn-navy); color: #f0e6c8; border-radius: var(--r-card); padding: clamp(1.5rem, 4vw, 3rem); border-left: 5px solid var(--orn-red); margin-block: clamp(1.5rem, 4vw, 2.5rem); }
.orn-journey-hero__title { font-size: var(--orn-fs-hero); color: #fff; margin-bottom: var(--sp-3); }
.orn-journey-hero__sub { color: rgb(195, 204, 214); margin-bottom: var(--sp-5); }
.orn-journey-hero__copy { color: rgba(240, 230, 200, 0.72); margin-bottom: var(--sp-5); max-width: 56ch; }
.orn-journey-hero__chips { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin-bottom: var(--sp-6); }
.orn-journey-hero__chip { padding: var(--sp-2) var(--sp-4); border: 1px solid rgba(240, 230, 200, 0.28); border-radius: var(--r-pill); font-family: var(--orn-font-mono); font-size: var(--orn-fs-small); color: rgba(240, 230, 200, 0.85); }
.orn-journey-hero__strip { display: grid; grid-template-columns: 1fr; gap: var(--sp-4); background: rgba(255, 255, 255, 0.05); border-radius: var(--r-soft); padding: var(--sp-4); border: 1px solid rgba(240, 230, 200, 0.10); }
@media (min-width: 768px) {
    .orn-journey-hero__strip { grid-template-columns: auto 1fr; align-items: center; }
}
.orn-journey-hero__strip-eyebrow { font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.18em; text-transform: uppercase; color: var(--orn-blue); }

/* Rung cards */
.orn-rungs { display: grid; grid-template-columns: 1fr; gap: var(--sp-4); margin-block: clamp(1rem, 3vw, 2.5rem); }
@media (min-width: 768px) {
    .orn-rungs { grid-template-columns: repeat(3, 1fr); }
}
.orn-rung { position: relative; background: var(--orn-paper); border-radius: var(--r-card); padding: var(--sp-6); box-shadow: var(--sh-card); border: 2px solid transparent; display: flex; flex-direction: column; gap: var(--sp-3); cursor: pointer; }
.orn-rung--selected { border-color: var(--orn-red); }
.orn-rung--recommended { box-shadow: var(--sh-raised); }
.orn-rung__recommended-badge { position: absolute; top: -14px; left: 50%; transform: translateX(-50%); background: var(--orn-gold); color: var(--orn-navy); padding: var(--sp-2) var(--sp-4); border-radius: var(--r-pill); font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; }
.orn-rung__topline { display: flex; align-items: center; justify-content: space-between; font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.16em; text-transform: uppercase; }
.orn-rung__tier { color: var(--orn-red); }
.orn-rung__code { color: var(--orn-mute); }
.orn-rung__title { font-family: var(--orn-font-display); font-weight: 800; font-size: var(--orn-fs-h2); color: var(--orn-navy); }
.orn-rung__route { color: var(--orn-ink-2); font-size: var(--orn-fs-body); }
.orn-rung__lede { color: var(--orn-ink-2); flex: 1; }
.orn-rung__price-row { display: flex; align-items: end; justify-content: space-between; margin-top: var(--sp-4); }
.orn-rung__price-row .orn-price__amount { font-size: 1.75rem; }
.orn-rung__select-link { font-family: var(--orn-font-mono); letter-spacing: 0.12em; text-transform: uppercase; color: var(--orn-gold); font-size: var(--orn-fs-small); }
.orn-rung--selected .orn-rung__select-link { color: var(--orn-red); }

/* Tabs */
.orn-tabs { display: flex; gap: var(--sp-2); overflow-x: auto; padding-block: var(--sp-3); }
.orn-tabs::-webkit-scrollbar { display: none; }
.orn-tab { padding: var(--sp-3) var(--sp-5); border: 1px solid var(--orn-line); background: var(--orn-paper); border-radius: var(--r-pill); font-weight: 500; white-space: nowrap; color: var(--orn-ink); }
.orn-tab--active { background: rgb(15, 15, 15); color: #fff; border-color: rgb(15, 15, 15); }
.orn-tabpanel { display: none; }
.orn-tabpanel--active { display: block; }

/* Detail blocks */
.orn-info-grid { display: grid; grid-template-columns: 1fr; gap: var(--sp-4); margin-top: var(--sp-5); }
@media (min-width: 768px) {
    .orn-info-grid { grid-template-columns: repeat(2, 1fr); }
}
.orn-info-row { padding: var(--sp-4) 0; border-top: 1px solid var(--orn-line); }
.orn-info-row__label { font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-gold); margin-bottom: var(--sp-1); }
.orn-info-row__value { font-weight: 600; }

/* Itinerary timeline */
.orn-itinerary { padding-left: var(--sp-5); position: relative; margin-top: var(--sp-5); }
.orn-itinerary::before { content: ""; position: absolute; left: 6px; top: 4px; bottom: 4px; width: 1px; background: var(--orn-line-2); }
.orn-itinerary__day { position: relative; padding-block: var(--sp-4); padding-left: var(--sp-5); }
.orn-itinerary__day::before { content: ""; position: absolute; left: -2px; top: var(--sp-5); width: 14px; height: 14px; border-radius: 50%; background: var(--orn-gold); border: 3px solid var(--orn-cream); }
.orn-itinerary__day-eyebrow { font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.16em; text-transform: uppercase; color: var(--orn-gold); }
.orn-itinerary__day-title { font-size: var(--orn-fs-h3); margin-block: var(--sp-2); }
.orn-itinerary__day-desc { color: var(--orn-ink-2); font-size: var(--orn-fs-small); }
.orn-itinerary__meals { display: inline-flex; gap: var(--sp-1); margin-top: var(--sp-2); }
.orn-itinerary__meal { display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 4px; background: rgba(47, 122, 79, 0.12); color: var(--orn-green); font-size: 0.7rem; font-weight: 700; font-family: var(--orn-font-mono); }

/* Calendar (dates tab) */
.orn-cal { display: grid; grid-template-columns: 1fr; gap: var(--sp-5); margin-top: var(--sp-5); }
@media (min-width: 768px) {
    .orn-cal { grid-template-columns: repeat(2, 1fr); }
}
.orn-cal__month { background: var(--orn-paper); border: 1px solid var(--orn-line); border-radius: var(--r-card); padding: var(--sp-5); }
.orn-cal__month-title { font-family: var(--orn-font-display); font-size: 1.2rem; margin-bottom: var(--sp-3); }
.orn-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; font-family: var(--orn-font-mono); font-size: 0.78rem; }
.orn-cal__dow { text-align: center; color: var(--orn-mute); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.12em; text-transform: uppercase; padding-block: var(--sp-2); }
.orn-cal__cell { aspect-ratio: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: var(--r-tile); background: var(--orn-cream-2); color: var(--orn-mute); }
.orn-cal__cell--best { background: var(--orn-green); color: #fff; }
.orn-cal__cell--good { background: var(--orn-amber); color: #fff; }
.orn-cal__cell--rising { background: var(--orn-orange); color: #fff; }
.orn-cal__cell--last { background: var(--orn-red); color: #fff; }

/* Included tiles */
.orn-incl { background: var(--orn-paper); border-radius: var(--r-card); padding: var(--sp-5); box-shadow: var(--sh-card); display: flex; flex-direction: column; gap: var(--sp-2); }
.orn-incl__check { color: var(--orn-green); font-weight: 700; display: inline-flex; gap: var(--sp-2); align-items: center; }
.orn-incl__title { font-family: var(--orn-font-display); font-size: 1.05rem; color: var(--orn-navy); }
.orn-incl__lede { color: var(--orn-ink-2); font-size: var(--orn-fs-small); }

/* Tour manager card */
.orn-tm { background: var(--orn-navy); color: #f0e6c8; border-radius: var(--r-card); padding: clamp(1.5rem, 4vw, 2.5rem); margin-top: clamp(1.5rem, 4vw, 2.5rem); display: grid; grid-template-columns: auto 1fr; gap: var(--sp-6); align-items: start; }
.orn-tm__avatar { width: 96px; height: 96px; border-radius: 50%; background: var(--orn-gold); color: var(--orn-navy); display: grid; place-items: center; font-family: var(--orn-font-display); font-weight: 900; font-size: 1.5rem; }
.orn-tm__eyebrow { font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.18em; text-transform: uppercase; color: var(--orn-gold); }
.orn-tm__name { color: #fff; font-size: var(--orn-fs-h2); margin: var(--sp-2) 0; }
.orn-tm__role { color: rgba(240, 230, 200, 0.72); margin-bottom: var(--sp-4); }
.orn-tm__bio { color: rgba(240, 230, 200, 0.82); margin-bottom: var(--sp-4); max-width: 64ch; }
.orn-tm__quote { border-left: 3px solid var(--orn-gold); padding-left: var(--sp-4); margin: var(--sp-4) 0; color: #f0e6c8; font-style: italic; }
.orn-tm__stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: var(--sp-4); margin-top: var(--sp-5); padding-top: var(--sp-5); border-top: 1px solid rgba(240, 230, 200, 0.10); }
.orn-tm__stat-n { font-family: var(--orn-font-display); font-size: 1.6rem; color: #fff; }
.orn-tm__stat-l { font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.16em; text-transform: uppercase; color: rgba(240, 230, 200, 0.55); margin-top: var(--sp-1); }
@media (max-width: 640px) {
    .orn-tm { grid-template-columns: 1fr; text-align: center; }
    .orn-tm__avatar { margin-inline: auto; }
    .orn-tm__quote { text-align: left; }
}

/* Floating WhatsApp / Co-pilot CTAs */
.orn-wa { position: fixed; bottom: var(--sp-5); right: var(--sp-5); width: 52px; height: 52px; border-radius: 50%; background: #25d366; color: #fff; display: grid; place-items: center; box-shadow: var(--sh-raised); z-index: 30; }
.orn-copilot-fab { position: fixed; bottom: calc(var(--sp-5) + 64px); right: var(--sp-5); background: var(--orn-navy); color: var(--orn-gold); padding: var(--sp-3) var(--sp-5); border-radius: var(--r-pill); box-shadow: var(--sh-raised); z-index: 30; display: inline-flex; align-items: center; gap: var(--sp-2); font-family: var(--orn-font-mono); font-size: var(--orn-fs-small); letter-spacing: 0.12em; text-transform: uppercase; }
@media (min-width: 1024px) {
    .orn-copilot-fab { display: none; } /* desktop uses the panel below */
}
/* Hide the floating co-pilot pill on phones — it overlaps page content. The
   co-pilot is still reachable via the inline .orn-jd__copilot-card, which
   opens the same panel. */
@media (max-width: 767px) {
    .orn-copilot-fab { display: none; }
}

/* Co-pilot side panel (desktop) */
.orn-copilot-panel { display: none; background: var(--orn-navy); color: #f0e6c8; border-radius: var(--r-card); padding: var(--sp-5); box-shadow: var(--sh-raised); }
@media (min-width: 1024px) {
    .orn-copilot-panel { display: flex; flex-direction: column; gap: var(--sp-3); position: sticky; top: 100px; }
}
.orn-copilot-panel__eyebrow { font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.18em; text-transform: uppercase; color: var(--orn-gold); }
.orn-copilot-panel__title { color: #fff; font-size: var(--orn-fs-h3); }
.orn-copilot-panel__lede { color: rgb(195, 204, 214); font-size: 0.95rem; }
.orn-copilot-panel__chips { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.orn-copilot-panel__chip { padding: var(--sp-2) var(--sp-4); border: 1px solid rgba(240, 230, 200, 0.28); border-radius: var(--r-pill); font-size: var(--orn-fs-small); color: rgba(240, 230, 200, 0.85); }
.orn-copilot-panel__cta { background: var(--orn-gold); color: var(--orn-navy); padding: var(--sp-4) var(--sp-5); border-radius: var(--r-pill); font-weight: 700; text-align: center; margin-top: var(--sp-3); }

/* =============================================================
   Co-pilot modal / bottom-sheet
   ============================================================= */
.orn-copilot { position: fixed; inset: 0; background: rgba(10, 24, 55, 0.55); backdrop-filter: blur(4px); z-index: 100; display: none; align-items: end; }
.orn-copilot.is-open { display: flex; }
@media (min-width: 1024px) {
    .orn-copilot { align-items: center; justify-content: center; }
}
.orn-copilot__panel { background: #0a0f1f; color: #f0e6c8; width: 100%; max-height: 92dvh; border-radius: 24px 24px 0 0; box-shadow: var(--sh-sheet); display: flex; flex-direction: column; overflow: hidden; }
@media (min-width: 1024px) {
    .orn-copilot__panel { max-width: 720px; max-height: 80vh; border-radius: var(--r-card); }
}
.orn-copilot__handle { width: 36px; height: 4px; background: rgba(240, 230, 200, 0.25); border-radius: 2px; margin: var(--sp-3) auto var(--sp-2); }
@media (min-width: 1024px) {
    .orn-copilot__handle { display: none; }
}
.orn-copilot__top { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: var(--sp-4); padding: var(--sp-4) var(--sp-5); border-bottom: 1px solid rgba(240, 230, 200, 0.10); }
.orn-copilot__title { color: #fff; font-size: var(--orn-fs-h3); }
.orn-copilot__price { font-family: var(--orn-font-display); color: var(--orn-gold); font-size: 1.4rem; text-align: right; line-height: 1.1; }
.orn-copilot__price-meta { font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.16em; text-transform: uppercase; color: rgba(240, 230, 200, 0.55); }
.orn-copilot__close { color: rgba(240, 230, 200, 0.7); font-size: 1.5rem; padding: var(--sp-2); }
.orn-copilot__topics { display: flex; gap: var(--sp-2); overflow-x: auto; padding: var(--sp-3) var(--sp-5); border-bottom: 1px solid rgba(240, 230, 200, 0.10); }
.orn-copilot__topics::-webkit-scrollbar { display: none; }
.orn-copilot__topic { padding: var(--sp-2) var(--sp-4); border: 1px solid rgba(240, 230, 200, 0.28); border-radius: var(--r-pill); color: rgb(195, 204, 214); white-space: nowrap; font-size: var(--orn-fs-small); }
.orn-copilot__topic--active { background: rgba(200, 156, 80, 0.16); color: var(--orn-gold); border-color: rgba(200, 156, 80, 0.4); }
.orn-copilot__stream { flex: 1; overflow-y: auto; padding: var(--sp-5); display: flex; flex-direction: column; gap: var(--sp-4); }
.orn-copilot__msg { color: rgba(240, 230, 200, 0.85); }
.orn-copilot__chips { padding: var(--sp-3) var(--sp-5); display: flex; flex-wrap: wrap; gap: var(--sp-2); border-top: 1px solid rgba(240, 230, 200, 0.10); }
.orn-copilot__chip { padding: var(--sp-3) var(--sp-4); border: 1px solid rgba(240, 230, 200, 0.28); border-radius: var(--r-pill); color: rgba(240, 230, 200, 0.92); font-size: var(--orn-fs-small); }
.orn-copilot__inputbar { display: grid; grid-template-columns: 1fr auto; gap: var(--sp-2); padding: var(--sp-3) var(--sp-5) var(--sp-5); border-top: 1px solid rgba(240, 230, 200, 0.10); }
.orn-copilot__input { background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(240, 230, 200, 0.10); border-radius: var(--r-pill); color: #f0e6c8; padding: var(--sp-3) var(--sp-5); font-family: var(--orn-font-body); font-size: var(--orn-fs-small); }
.orn-copilot__input::placeholder { color: rgba(240, 230, 200, 0.4); font-style: italic; }
.orn-copilot__send { width: 44px; height: 44px; border-radius: 50%; background: rgba(200, 156, 80, 0.16); color: var(--orn-gold); display: grid; place-items: center; border: 1px solid rgba(200, 156, 80, 0.4); font-size: 1.2rem; }

/* Lock body scroll when sheet is open */
body.orn-no-scroll { overflow: hidden; touch-action: none; }

/* =============================================================
   Specials / Beyond Europe / Van tours promo
   ============================================================= */
/* ORN Specials — small cards: 4px tone top + 1px cream sides+bottom,
   16px radius, 20×20×18 padding, 190 min-height, soft shadow.
   Reference data-dc-tpl="195"–"199". */
.orn-spcl-grid { display: flex; gap: 20px; margin-top: 28px; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding-bottom: 8px; scrollbar-width: none; }
.orn-spcl-grid::-webkit-scrollbar { display: none; }
.orn-spcl { position: relative; flex: 0 0 340px; scroll-snap-align: start; cursor: pointer; background: rgb(15, 15, 15) center/cover no-repeat; border: none; border-radius: var(--button-radius-card); padding: 26px; display: flex; flex-direction: column; justify-content: flex-end; min-height: 340px; color: #fff; text-decoration: none; overflow: hidden; box-shadow: rgba(0, 0, 0, 0.25) 0 12px 28px; transition: transform 0.14s ease, box-shadow 0.14s ease; }
.orn-spcl::before { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.35) 45%, rgba(0, 0, 0, 0) 75%); pointer-events: none; }
.orn-spcl > * { position: relative; z-index: 1; }
.orn-spcl:hover { transform: translateY(-2px); box-shadow: rgba(0, 0, 0, 0.4) 0 18px 36px; }

.orn-spcl__chip { display: inline-flex; align-self: flex-start; padding: 6px 14px; border-radius: 999px; background: var(--orn-navy); color: #fff; font-family: var(--orn-font-mono); font-size: 10.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 14px; }
.orn-spcl__title { font-family: var(--orn-font-display); font-weight: 800; font-size: 26px; line-height: 1.1; color: #fff; margin: 0 0 8px; }
.orn-spcl__lede { font-size: 14px; color: rgba(255, 255, 255, 0.75); margin: 0 0 14px; line-height: 1.4; }
.orn-spcl__view { display: inline-flex; align-items: center; gap: 6px; margin-top: 4px; font-size: 14px; font-weight: 700; color: #fff; }
/* Legacy alias for older markup emitted by cached JS */
.orn-spcl__eyebrow { font-family: var(--orn-font-mono); font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 700; color: #fff; }
.orn-spcl__explore { font-size: 14px; font-weight: 700; margin-top: auto; padding-top: 12px; color: #fff; }

/* ============================================================
   Beyond Europe (worldwide) section
   Reference: data-dc-tpl="200"–"216". Section head is a flex row
   with "ORN Worldwide · Launching 2026–27" eyebrow + "Beyond Europe"
   title + lede on the left, and a navy "Find your region →" CTA on
   the right (flex-end aligned). Card grid is 3-col.
   ============================================================ */
.orn-rgnhead { display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 16px; margin-bottom: 28px; }
.orn-rgnhead__copy { flex: 1 1 320px; }
.orn-rgnhead__eyebrow { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.22em; color: var(--orn-navy); font-weight: 600; text-transform: uppercase; }
.orn-rgnhead__title { font-family: var(--orn-font-display); font-weight: 800; font-size: 34px; color: rgb(15, 15, 15); line-height: 1.05; margin: 10px 0 0; }
.orn-rgnhead__lede { font-size: 16px; color: rgb(90, 101, 115); margin: 8px 0 0; max-width: 640px; line-height: 1.5; }
.orn-rgnhead__cta { display: inline-flex; align-items: center; background: rgb(15, 15, 15); color: #fff; font-weight: 700; font-size: 15px; border-radius: 12px; padding: 13px 22px; white-space: nowrap; }
.orn-rgnhead__cta:hover { background: rgb(0, 0, 0); color: #fff; }

.orn-rgngrid { display: grid; grid-template-columns: 1fr; gap: 18px; margin-top: 28px; }
@media (min-width: 768px) {
    .orn-rgngrid { grid-template-columns: repeat(3, 1fr); }
}

.orn-rgn { cursor: pointer; background: var(--orn-paper); border: 1px solid rgb(228, 221, 205); border-radius: 0; padding: 20px 20px 18px; display: flex; flex-direction: column; min-height: 166px; box-shadow: rgba(20, 35, 59, 0.05) 0 8px 22px; transition: transform 0.14s ease, box-shadow 0.14s ease; }
.orn-rgn:hover { transform: translateY(-2px); box-shadow: rgba(20, 35, 59, 0.1) 0 14px 28px; }

.orn-rgn__topline { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); }
.orn-rgn__title { font-family: var(--orn-font-display); font-weight: 700; font-size: 21px; color: rgb(15, 15, 15); line-height: 1.15; margin: 0; }
.orn-rgn__soon { font-family: var(--orn-font-mono); font-size: 10.5px; letter-spacing: 0.1em; border: 1px solid rgb(211, 84, 0); color: rgb(211, 84, 0); border-radius: var(--r-pill); padding: 4px 9px; font-weight: 600; text-transform: uppercase; white-space: nowrap; }
.orn-rgn--green .orn-rgn__soon { border-color: rgb(39, 174, 96); color: rgb(39, 174, 96); }
.orn-rgn--purple .orn-rgn__soon { border-color: rgb(142, 68, 173); color: rgb(142, 68, 173); }
.orn-rgn--red .orn-rgn__soon { border-color: var(--orn-red); color: var(--orn-red); }
.orn-rgn--teal .orn-rgn__soon { border-color: var(--orn-teal); color: var(--orn-teal); }

.orn-rgn__lede { font-size: 14px; color: rgb(90, 101, 115); margin: 6px 0 0; line-height: 1.45; }
.orn-rgn__tags { display: flex; flex-wrap: wrap; gap: 7px; margin-top: auto; padding-top: 16px; }
.orn-rgn__tag { font-size: 12px; color: rgb(58, 70, 84); background: rgb(243, 243, 243); border-radius: var(--r-pill); padding: 5px 11px; }

/* Van Tours promo — reference data-dc-tpl="217"–"235":
   2-col flex card on navy with rounded 22px corners; image on the
   left (no padding, object-fit cover), body on the right with 42×46
   padding. Title 40px Archivo 800; gold CTA pill; 3 mono stats below. */
.orn-van { background: #fff; color: var(--orn-text-light); border-radius: 22px; overflow: hidden; display: flex; flex-wrap: wrap; }
.orn-van__image { flex: 1 1 300px; position: relative; min-height: 360px; background-size: cover; background-position: 50% 42%; background-repeat: no-repeat; background-color: var(--orn-navy); }
.orn-van__body { flex: 2 1 440px; padding: 42px 46px; display: flex; flex-direction: column; justify-content: center; gap: 0; }

/* Immersive private-vans card — dark bg with full-bleed van photo on the right,
   left copy pane with red-outline chip, big title, small "FROM · PP" price, red CTA. */
.orn-van--immersive { position: relative; background: rgb(15, 15, 15) var(--orn-van-image) center right / cover no-repeat; border-radius: 22px; overflow: hidden; min-height: 440px; padding: 48px 52px; display: block; }
.orn-van--immersive::before { content: ""; position: absolute; inset: 0; background: linear-gradient(to right, rgb(15, 15, 15) 0%, rgba(15, 15, 15, 0.9) 32%, rgba(15, 15, 15, 0.35) 55%, rgba(15, 15, 15, 0) 78%); pointer-events: none; z-index: 1; }
.orn-van--immersive .orn-van__body { position: relative; z-index: 2; max-width: 52%; padding: 0; flex: none; gap: 0; }
.orn-van--immersive .orn-van__chip { display: inline-flex; align-self: flex-start; width: fit-content; align-items: center; gap: 8px; padding: 8px 18px; border: 1px solid rgba(242, 13, 22, 0.7); border-radius: 999px; color: #fff; font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 700; margin-bottom: 22px; }
.orn-van--immersive .orn-van__chip-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--orn-navy); flex-shrink: 0; }
.orn-van--immersive .orn-van__eyebrow { color: var(--orn-navy); font-size: 12px; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 700; margin: 0 0 12px; }
.orn-van--immersive .orn-van__title { color: #fff; font-family: var(--orn-font-display); font-size: 56px; line-height: 1.02; letter-spacing: -0.02em; margin: 0 0 20px; }
.orn-van--immersive .orn-van__title-line { display: block; font-family: var(--orn-font-heading); }
.orn-van--immersive .orn-van__lede { color: rgba(255, 255, 255, 0.78); font-size: 16px; line-height: 1.6; max-width: 460px; margin: 0 0 28px; }
.orn-van--immersive .orn-van__price { margin-bottom: 24px; }
.orn-van--immersive .orn-van__price-k { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 700; color: var(--orn-navy); margin-bottom: 4px; }
.orn-van--immersive .orn-van__price-v { font-family: var(--orn-font-display); font-size: 20px; font-weight: 800; color: #fff; }
.orn-van--immersive .orn-van__cta { display: inline-flex; align-items: center; gap: 8px; padding: 14px 26px; background: var(--orn-navy); color: #fff; border: none; border-radius: 12px; font-weight: 700; font-size: 15px; text-decoration: none; margin: 0; box-shadow: 0 10px 26px rgba(242, 13, 22, 0.28); }
.orn-van--immersive .orn-van__cta:hover { background: var(--orn-navy-2); }
.orn-van__stats--hidden { display: none !important; }
@media (max-width: 900px) {
    .orn-van--immersive { padding: 36px 28px; min-height: 380px; }
    .orn-van--immersive .orn-van__body { max-width: 100%; }
    .orn-van--immersive .orn-van__title { font-size: 40px; }
    .orn-van--immersive::before { background: linear-gradient(to bottom, rgba(15, 15, 15, 0.4) 0%, rgba(15, 15, 15, 0.9) 65%); }
}
.orn-van__eyebrow { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.24em; color: var(--orn-navy); font-weight: 600; text-transform: uppercase; }
.orn-van__title { font-family: var(--orn-font-display); font-weight: 800; color: rgb(15, 15, 15); font-size: 40px; line-height: 1.04; margin: 12px 0 0; }
.orn-van__lede { color: rgb(92, 92, 92); font-size: 17px; line-height: 1.55; max-width: 520px; margin: 12px 0 0; }
.orn-van__cta { display: inline-flex; align-items: center; align-self: flex-start; margin-top: 22px; background: #fff; color: var(--orn-navy); border: 1px solid var(--orn-navy); font-weight: 700; font-size: 16px; border-radius: 12px; padding: 14px 26px; }
.orn-van__cta:hover { background: var(--orn-cream); }
.orn-van__stats { display: flex; gap: 34px; flex-wrap: wrap; margin-top: 30px; font-family: var(--orn-font-mono); }
.orn-van__stat-n { font-size: 32px; font-weight: 600; color: #111; line-height: 1; }
.orn-van__stat-l { font-size: 12px; color: rgb(92, 92, 92); letter-spacing: 0.06em; margin-top: 3px; text-transform: uppercase; }

/* =============================================================
   Why ORN — "Europe on ORN wheels" section.
   Reference data-dc-tpl="236"–"295": deeper navy bg, 74px/80px
   padding, gold-mono eyebrow, 46px Archivo title, 18px lede with
   inline white-bold emphasis span. Below: 2-col grid where LEFT is
   a 2×2 grid of small navy pillar cards (gold left-border) and
   RIGHT is a tall photo with a bottom-anchored stat strip on a
   gradient overlay.
   ============================================================= */
/* ORN coach gallery — panoramic auto-advancing slideshow above WHY ORN.
 * One image at a time fills the frame; each slide crossfades to the next
 * every 4.5s via a JS-driven .is-active class swap. */
.orn-bus-slideshow { position: relative; width: 100%; aspect-ratio: 16 / 9; border-radius: 20px; overflow: hidden; background: rgb(220, 216, 205); box-shadow: 0 12px 28px rgba(20, 35, 59, 0.14); }
.orn-bus-slideshow__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1.2s ease-in-out; }
.orn-bus-slideshow__img.is-active { opacity: 1; }
@media (max-width: 640px) {
    .orn-bus-slideshow { aspect-ratio: 4 / 3; }
}

.orn-why { background: var(--orn-cream); color: rgb(15, 15, 15); padding: 74px 0 80px; }
.orn-why__inner { max-width: var(--orn-container); margin-inline: auto; padding-inline: var(--orn-gutter); }
.orn-why__eyebrow { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.24em; color: var(--orn-navy); font-weight: 600; text-transform: uppercase; }
.orn-why__title { font-family: var(--orn-font-heading); font-weight: 400; color: rgb(15, 15, 15); font-size: 46px; line-height: 1.04; margin: 12px 0 0; max-width: 760px; }
.orn-why__lede { font-size: 18px; color: rgb(92, 92, 92); line-height: 1.55; margin: 14px 0 0; max-width: 720px; }
.orn-why__lede strong { color: rgb(15, 15, 15); font-weight: 600; }

.orn-why__split { display: grid; grid-template-columns: 1fr; gap: 26px; margin-top: 38px; align-items: stretch; }
@media (min-width: 1024px) {
    .orn-why__split { grid-template-columns: 1.05fr 0.95fr; }
}

.orn-why__pillars { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 640px) {
    .orn-why__pillars { grid-template-columns: 1fr 1fr; }
}
.orn-why__pillar { background: #fff; border: 1px solid rgb(228, 221, 205); border-radius: 16px; padding: 22px; }
.orn-why__pillar-icon { color: var(--orn-navy); width: 26px; height: 26px; display: inline-block; }
.orn-why__pillar-title { font-family: var(--orn-font-display); font-weight: 700; font-size: 19px; color: rgb(15, 15, 15); margin: 14px 0 0; line-height: 1.2; }
.orn-why__pillar-lede { font-size: 14px; color: rgb(92, 92, 92); line-height: 1.5; margin: 7px 0 0; }

.orn-why__photo { position: relative; border-radius: 18px; overflow: hidden; min-height: 340px; box-shadow: rgba(0, 0, 0, 0.34) 0 24px 50px; background-size: cover; background-position: 46% 52%; background-repeat: no-repeat; background-color: var(--orn-navy); }
.orn-why__photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(14, 26, 43, 0.86) 0%, rgba(14, 26, 43, 0.1) 50%, transparent 72%); pointer-events: none; }
.orn-why__photo-stats { position: absolute; left: 24px; right: 24px; bottom: 22px; display: flex; align-items: baseline; gap: 18px; flex-wrap: wrap; z-index: 1; }
.orn-why__photo-stat-n { font-family: var(--orn-font-display); font-weight: 800; font-size: 34px; line-height: 1; color: #fff; }
.orn-why__photo-stat-l { font-size: 13px; color: var(--orn-mute-3); margin-top: 3px; }
.orn-why__photo-divider { width: 1px; height: 38px; background: rgba(255, 255, 255, 0.22); }

.orn-why__promises { display: grid; grid-template-columns: 1fr; gap: 18px; margin-top: 26px; }
@media (min-width: 900px) {
    .orn-why__promises { grid-template-columns: 1fr 1fr 1fr; }
}
.orn-why__promise { background: #F20D16; color: #fff; border-radius: 14px; padding: 24px 26px 26px; box-shadow: 0 10px 24px rgba(242, 13, 22, 0.18); }
.orn-why__promise-title { font-family: var(--orn-font-display); font-weight: 800; font-size: 21px; line-height: 1.15; margin: 0; color: #fff; }
.orn-why__promise-lede { font-size: 14.5px; color: rgba(255, 255, 255, 0.94); line-height: 1.5; margin: 10px 0 0; }

/* =============================================================
   Footer
   ============================================================= */
.orn-footer { background: var(--orn-navy); color: rgb(195, 204, 214); padding-bottom: 0; }
.orn-page--how-rewards-work .orn-footer { margin-top: 0; }

/* ─── Brand + EXPLORE / COMPANY link band ────────────────────── */
.orn-footer-linkband { background: rgb(12, 20, 32); color: rgb(143, 160, 180); border-top: 1px solid rgb(27, 40, 56); }
.orn-footer-linkband__inner { max-width: var(--orn-container); margin: 0 auto; padding: 34px var(--orn-gutter) 40px; display: flex; flex-wrap: wrap; gap: 28px; align-items: flex-start; justify-content: space-between; }
.orn-footer-linkband__brand { max-width: 320px; }
.orn-footer-linkband__brand-mark { display: flex; align-items: center; gap: 11px; }
.orn-footer-linkband__brand-logo { display: block; height: auto; max-height: var(--orn-logo-h, 36px); width: auto; max-width: 100%; object-fit: contain; object-position: left center; filter: brightness(0) invert(1); }
.orn-footer-linkband__brand-disc { width: 30px; height: 30px; border-radius: 50%; background: var(--orn-navy); display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.orn-footer-linkband__brand-wordmark { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 19px; letter-spacing: 0.03em; color: rgb(244, 239, 227); }
.orn-footer-linkband__brand-eyebrow { font-size: 11px; letter-spacing: 0.24em; color: rgb(110, 130, 152); font-weight: 600; padding-left: 4px; }
.orn-footer-linkband__brand-lede { font-size: 13.5px; line-height: 1.6; margin-top: 14px; color: rgb(138, 138, 138); }
.orn-footer-linkband__socials { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 20px; }
.orn-footer-linkband__social { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; background: rgba(255,255,255,0.08); color: #fff !important; border-radius: 8px; transition: background 200ms ease; }
.orn-footer-linkband__social:hover { background: var(--orn-navy); color: #fff !important; }
.orn-footer-linkband__cols { display: flex; gap: 52px; flex-wrap: wrap; }
.orn-footer-linkband__col { display: flex; flex-direction: column; gap: 11px; }
.orn-footer-linkband__col-title { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 10.5px; letter-spacing: 0.2em; color: var(--orn-navy); font-weight: 700; text-transform: uppercase; }
.orn-footer-linkband__col-title--sub { margin-top: 18px; }
.orn-footer-linkband__link { font-size: 14px; font-weight: 600; color: rgb(199, 210, 223); text-decoration: none; }
@media (max-width: 700px) {
    /* Named groups placed by identity, not position - Explore (logged in)
       and Partners (logged out) are mutually exclusive, always the only
       one of the two present, so both can safely share the same slot.
       A positional (nth-child) rule would silently grab the wrong column
       the moment a sibling like Explore is conditionally absent. */
    .orn-footer-linkband__cols { display: grid; grid-template-columns: 1fr 1fr; column-gap: clamp(20px, 8vw, 56px); row-gap: 20px; }
    .orn-footer-linkband__col-title[aria-hidden="true"] { display: none; }

    /* Company top-left, Resources top-right, Explore/Partners bottom-left. */
    .orn-footer-linkband__col--company { grid-column: 1; grid-row: 1; }
    .orn-footer-linkband__col--resources { grid-column: 2; grid-row: 1; }
    .orn-footer-linkband__col--explore, .orn-footer-linkband__col--partners { grid-column: 1; grid-row: 2; }

    .orn-footer-linkband__col--region { grid-column: 1 / -1; }
}

.orn-footer-linkband__talk { display: inline-flex; align-items: center; gap: 8px; margin-top: 20px; padding: 10px 18px 10px 14px; background: var(--orn-navy); color: #fff; border-radius: 999px; font-weight: 700; font-size: 14px; text-decoration: none; box-shadow: 0 8px 22px rgba(242, 13, 22, 0.24); }
.orn-footer-linkband__talk:hover { background: var(--orn-navy-2); }

.orn-footer-linkband__col--region { max-width: 300px; }
.orn-footer-linkband__region-grid { display: flex; flex-wrap: wrap; gap: 8px; }
.orn-footer-linkband__region-chip { background: transparent; border: 1px solid rgba(255, 255, 255, 0.18); color: rgb(199, 210, 223); border-radius: 999px; padding: 7px 14px; font-family: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.orn-footer-linkband__region-chip:hover { border-color: rgba(255, 255, 255, 0.35); color: #fff; }
.orn-footer-linkband__region-chip.is-active { background: rgba(255, 255, 255, 0.08); border-color: rgba(255, 255, 255, 0.45); color: #fff; }

/* Thin legal strip under the peace band — Terms + Privacy only. */
.orn-footer__legalstrip { max-width: var(--orn-container); margin: 0 auto; padding: 14px var(--orn-gutter); display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; font-size: 12.5px; color: rgba(240, 230, 200, 0.55); border-top: 1px solid rgba(240, 230, 200, 0.08); }
.orn-footer__legalstrip-links a { color: rgb(138, 138, 138); text-decoration: none; margin: 0 4px; }
.orn-footer__legalstrip-links span { margin: 0 4px; opacity: 0.5; }

/* ─── Peace-of-mind band ─────────────────────────────────────── */
.orn-footer-peace { background: rgb(11, 11, 11); color: rgb(245, 245, 245); border-top: 1px solid rgb(38, 38, 38); }
.orn-footer-peace__inner { max-width: 1200px; margin: 0 auto; padding: 56px 28px 60px; }
.orn-footer-peace__grid { display: grid; grid-template-columns: 0.95fr 1.05fr; gap: 52px; align-items: center; }
@media (max-width: 900px) {
    .orn-footer-peace__grid { grid-template-columns: 1fr; gap: 40px; }
    .orn-footer-peace__inner { padding: 44px 20px 48px; }
}
.orn-footer-peace__eyebrow { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 12px; letter-spacing: 0.24em; color: var(--orn-navy); font-weight: 600; }
.orn-footer-peace__title { margin: 13px 0 0; font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 34px; line-height: 1.06; color: rgb(244, 239, 227); }
@media (max-width: 700px) {
    .orn-footer-peace__title { font-size: 26px; }
}
.orn-footer-peace__lede { margin-top: 15px; max-width: 440px; font-size: 16px; color: rgb(175, 192, 210); line-height: 1.6; }
.orn-footer-peace__stats { display: flex; gap: 30px; margin-top: 26px; font-family: 'JetBrains Mono', ui-monospace, monospace; flex-wrap: wrap; }
.orn-footer-peace__stat-v { font-size: 26px; font-weight: 600; color: rgb(244, 239, 227); }
.orn-footer-peace__stat-k { margin-top: 3px; font-size: 11.5px; color: rgb(159, 176, 196); letter-spacing: 0.06em; }

/* Photo cluster — main hero + inset */
.orn-footer-peace__photo { position: relative; height: 360px; }
@media (max-width: 900px) {
    .orn-footer-peace__photo { height: 300px; }
}
.orn-footer-peace__photo-main { position: absolute; inset: 0; border-radius: 18px; overflow: hidden; box-shadow: 0 26px 55px rgba(0, 0, 0, 0.45); -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 18%); mask-image: linear-gradient(to right, transparent 0%, #000 18%); }
.orn-footer-peace__photo-img { width: 100%; height: 100%; object-fit: cover; object-position: 52% 58%; display: block; }
.orn-footer-peace__photo-scrim { position: absolute; inset: 0; background: linear-gradient(to right, rgba(14, 26, 43, 0.92) 0%, rgba(14, 26, 43, 0.28) 32%, rgba(14, 26, 43, 0) 62%), linear-gradient(to top, rgba(14, 26, 43, 0.72) 0%, rgba(14, 26, 43, 0) 42%); }
.orn-footer-peace__photo-caption { position: absolute; left: 24px; bottom: 20px; }
.orn-footer-peace__photo-label { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 10.5px; letter-spacing: 0.20em; color: rgb(201, 164, 92); font-weight: 600; }
.orn-footer-peace__photo-headline { margin-top: 5px; font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 18px; color: rgb(244, 239, 227); line-height: 1.2; }
.orn-footer-peace__photo-inset { position: absolute; right: 20px; bottom: -20px; width: 150px; height: 198px; border-radius: 14px; overflow: hidden; border: 4px solid rgb(14, 26, 43); box-shadow: 0 18px 40px rgba(0, 0, 0, 0.5); }
.orn-footer-peace__photo-inset .orn-footer-peace__photo-img { object-position: 60% 40%; }
.orn-footer-peace__photo-inset .orn-footer-peace__photo-scrim { background: linear-gradient(to top, rgba(14, 26, 43, 0.60), rgba(14, 26, 43, 0) 55%); }
.orn-footer-peace__photo-inset-label { position: absolute; left: 11px; bottom: 9px; font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 9px; letter-spacing: 0.12em; color: rgb(228, 218, 198); font-weight: 600; }
@media (max-width: 700px) {
    .orn-footer-peace__photo-inset { width: 120px; height: 158px; right: 12px; bottom: -14px; }
}

/* Bases chip list */
.orn-footer-peace__bases { margin-top: 48px; }
.orn-footer-peace__bases-title { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; letter-spacing: 0.16em; color: rgb(138, 138, 138); font-weight: 600; }
.orn-footer-peace__chips { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 15px; }
.orn-footer-peace__chip { display: inline-flex; align-items: center; gap: 9px; background: rgb(21,21,21); border: 1px solid rgb(43, 43, 43); border-radius: 11px; padding: 11px 16px; font-size: 14.5px; font-weight: 600; color: rgb(244, 239, 227); }
.orn-footer-peace__chip-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--orn-navy); flex-shrink: 0; }
.orn-footer-peace__chip--soon { background: transparent; border: 1px dashed rgb(70, 88, 111); color: rgb(159, 176, 196); }
.orn-footer-peace__chip-soon { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 9px; letter-spacing: 0.10em; font-weight: 700; color: var(--orn-navy); background: rgba(201, 164, 92, 0.14); border-radius: 999px; padding: 2px 7px; margin-left: 6px; }
.orn-footer-peace__bases-note { margin-top: 16px; font-size: 12.5px; color: rgb(138, 138, 138); line-height: 1.5; }
.orn-footer__inner { max-width: var(--orn-container); margin-inline: auto; padding-inline: var(--orn-gutter); display: grid; grid-template-columns: 1fr; gap: var(--sp-6); }
@media (min-width: 768px) {
    .orn-footer__inner { grid-template-columns: 2fr 1fr 1fr 1fr; }
}
.orn-footer__brand { display: flex; flex-direction: column; gap: var(--sp-4); }
.orn-footer__logo-mark { display: inline-block; color: #fff; font-family: var(--orn-font-display); font-weight: 900; font-size: 1.8rem; letter-spacing: 0.04em; }
.orn-footer__tagline { max-width: 32ch; }
.orn-footer__col-title { color: #fff; font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.16em; text-transform: uppercase; margin-bottom: var(--sp-4); }
.orn-footer__col { display: flex; flex-direction: column; gap: var(--sp-3); }
.orn-footer__link { color: rgba(240, 230, 200, 0.72); cursor: pointer; }
.orn-footer__link:hover { color: var(--orn-gold); }
.orn-footer__user { color: var(--orn-gold); font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.08em; }
.orn-footer__base { max-width: var(--orn-container); margin: var(--sp-7) auto 0; padding: var(--sp-5) var(--orn-gutter) 0; border-top: 1px solid rgba(240, 230, 200, 0.10); display: flex; flex-wrap: wrap; gap: var(--sp-4); justify-content: space-between; font-size: var(--orn-fs-small); color: rgba(240, 230, 200, 0.5); }

/* =============================================================
   Utility
   ============================================================= */
.orn-hide { display: none !important; }
.orn-visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.orn-mt-6 { margin-top: var(--sp-6); }
.orn-mt-7 { margin-top: var(--sp-7); }
.orn-text-mute { color: var(--orn-mute); }
.orn-text-center { text-align: center; }

/* Type-scale utilities — mirror the sizes used across ORN components. */
.orn-text-xs   { font-size: 12px; line-height: 1.5; }
.orn-text-sm   { font-size: 14px; line-height: 1.55; }
.orn-text-md   { font-size: 16px; line-height: 1.6; }
.orn-text-lg   { font-size: 20px; line-height: 1.45; }
.orn-text-xl   { font-size: 28px; line-height: 1.2; letter-spacing: -0.01em; }
.orn-text-xxl  { font-size: 40px; line-height: 1.08; letter-spacing: -0.015em; }
.orn-text-xxxl { font-size: 56px; line-height: 1.04; letter-spacing: -0.02em; }
@media (max-width: 767px) {
    .orn-text-xl   { font-size: 22px; }
    .orn-text-xxl  { font-size: 30px; }
    .orn-text-xxxl { font-size: 40px; }
}

/* =============================================================
   Journey-detail customer skin — overlay applied to the cockpit
   DOM when selling_room.jsp is rendered with `orn.skin == customer`.
   Body class chain: body.srBody.orn-jd.orn-skin-customer.

   Strategy: hide the agent-facing chrome (region picker, inputs
   column, agent-only controls), keep the cockpit's data DOM
   (#srBrainPanel, #srCockpit, rungs, calendar, itinerary), and
   restyle the visible surfaces to match the ORN customer mockup.
   ============================================================= */

body.orn-jd { background: var(--orn-cream); color: var(--orn-ink); font-family: var(--orn-font-body); }

/* Agent-only chrome — hide on the customer skin */
body.orn-skin-customer .srTopBar, /* region picker strip */ body.orn-skin-customer .srRegionsBar, body.orn-skin-customer .srRegionTopBtn, body.orn-skin-customer .srInputsCol, /* left inputs column */ body.orn-skin-customer .srInputsReopen, body.orn-skin-customer .srAgentInput, body.orn-skin-customer .srBrainLang, /* output-language dropdown */ body.orn-skin-customer #srBrainLang, body.orn-skin-customer .srWhatsAppPreview, body.orn-skin-customer #srCopyWhatsApp, body.orn-skin-customer #srDownloadFlyer, body.orn-skin-customer #srDownloadBrochure, body.orn-skin-customer #srDownloadReel, body.orn-skin-customer .srFamilyList-wrapper, /* family picker (customer arrives pre-selected) */ body.orn-skin-customer #srFamilyList, body.orn-skin-customer .srObjectionChips, body.orn-skin-customer .srWizard, body.orn-skin-customer .srFoldBtn { display: none !important; }

/* Cockpit container — drop the cockpit's own padding/border so the
   customer skin chrome (navy hero, container max-width) drives the
   layout. */
body.orn-skin-customer #srCockpit { background: transparent; box-shadow: none; border: 0; padding: 0; max-width: var(--orn-container); margin-inline: auto; padding-inline: var(--orn-gutter); }

/* Brain panel — re-skin to match the ORN customer co-pilot card.
   Cockpit defaults to a tall sidebar; on customer we keep the
   sidebar position on desktop but restyle the background to the
   navy-on-gold ORN mockup palette. */
body.orn-skin-customer #srBrainPanel { background: var(--orn-navy); border-radius: var(--r-card); color: var(--orn-text-light); box-shadow: var(--sh-raised); }
body.orn-skin-customer #srBrainPanel #srBrainEyebrow { color: var(--orn-gold-3); font-family: var(--orn-font-mono); letter-spacing: 0.18em; text-transform: uppercase; font-size: var(--orn-fs-eyebrow); }
body.orn-skin-customer #srBrainPanel #srBrainBody { background: transparent; }
body.orn-skin-customer #srBrainPanel .srBrainMsg { color: rgb(195, 204, 214); }

/* Family card — visible to agents only; customer skin already hid
   #srFamilyList above. No styling needed for customer. */

/* Rung cards — cockpit's ladder renders into #srLadder. Restyle each
   rung card to the ORN customer rung mockup: white paper, 16px
   radius, tone-coloured top border to match the family palette,
   "RECOMMENDED" badge absolute-positioned. The cockpit DOM marks the
   recommended rung with .is-recommended; we leverage that. */
body.orn-skin-customer #srLadder .srRungCard { background: var(--orn-paper); border: 2px solid rgb(228, 221, 205); border-radius: 16px; padding: 20px; position: relative; box-shadow: rgba(20, 35, 59, 0.05) 0 8px 22px; }
body.orn-skin-customer #srLadder .srRungCard .srRung__tier,
body.orn-skin-customer #srLadder .srRungCard .srRung__lane,
body.orn-skin-customer #srLadder .srRungCard .srRung__eyebrow { color: var(--orn-navy) !important; }
body.orn-skin-customer #srLadder .srRungCard.is-recommended { border-color: var(--orn-navy); box-shadow: rgba(0, 0, 0, 0.12) 0 14px 32px; }
body.orn-skin-customer #srLadder .srRungCard.is-recommended::before { content: "RECOMMENDED"; position: absolute; top: -11px; left: 20px; background: var(--orn-navy); color: #fff; font-family: var(--orn-font-mono); font-size: 11px; font-weight: 800; letter-spacing: 0.08em; border-radius: var(--r-pill); padding: 4px 12px; }

/* Tabs row (Map / Detail / Itinerary / Dates / Included) — cockpit
   uses .srTab buttons inside a tab bar. Restyle to the ORN customer
   pill row: cream pill bar with navy active tab. */
body.orn-skin-customer .srTab { padding: var(--sp-3) var(--sp-5); border-radius: var(--r-pill); background: var(--orn-paper); border: 1px solid var(--orn-line); font-size: 14px; font-weight: 600; color: var(--orn-ink); white-space: nowrap; }
body.orn-skin-customer .srTab.is-active { background: rgb(15, 15, 15); color: #fff; border-color: rgb(15, 15, 15); }

/* Page wrapper around the cockpit — give the customer skin a top
   hero strip without rewriting the cockpit DOM. The ORN customer
   header already lands above #srCockpit (via the body-level
   header.jsp include in selling_room.jsp when orn.skin == customer). */
body.orn-skin-customer .srCenterEmpty { background: transparent; color: var(--orn-ink-2); }

/* =============================================================
   Journey-detail page (Results.html layout). Uses
   ornholidays-journey.js for data; this section is purely the
   customer skin styling that wraps the rendered content.

   Page body class is `orn-page orn-page--journey orn-jd` and the
   JS sets familyId/slug attributes on body. Sections render under
   the standard .orn-container max-width.
   ============================================================= */
.orn-jd__main { padding-block: clamp(1.5rem, 4vw, 1rem); }

.orn-jd__back { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; color: rgb(90, 101, 115); margin-bottom: 16px; }
.orn-jd__back:hover { color: var(--orn-navy); }

/* ---------------- Hero card ---------------- */
.orn-jd__hero { background: var(--orn-navy); color: var(--orn-text-light); border-radius: 20px; padding: 34px 38px; }
.orn-jd__hero--image { position: relative; overflow: hidden; padding: 0; min-height: 340px; background-color: rgb(21, 21, 21); background-image: var(--orn-jd-hero-image); background-position: center right; background-size: cover; background-repeat: no-repeat; }
.orn-jd__hero--image::before { content: ""; position: absolute; inset: 0; background: linear-gradient(to right, rgb(21, 21, 21) 0%, rgba(21, 21, 21, 0.85) 30%, rgba(21, 21, 21, 0.4) 55%, rgba(21, 21, 21, 0) 80%); pointer-events: none; z-index: 1; }
.orn-jd__hero--image .orn-jd__hero-body { position: relative; z-index: 2; padding: 40px 44px; max-width: 55%; }
@media (max-width: 720px) {
    .orn-jd__hero--image .orn-jd__hero-body { max-width: 100%; padding: 32px 24px; }
    .orn-jd__hero--image::before { background: linear-gradient(to bottom, rgba(21, 21, 21, 0.3) 0%, rgba(21, 21, 21, 0.85) 100%); }
}
.orn-jd__hero-title { font-family: var(--orn-font-display); font-weight: 800; font-size: 38px; line-height: 1.05; color: #fff; margin: 0; }
.orn-jd__hero-sub { font-size: 16px; color: var(--orn-mute-3); margin: 8px 0 0; }
.orn-jd__hero-copy { font-size: 16px; color: var(--orn-mute-2); line-height: 1.5; margin: 16px 0 0; max-width: 820px; }
.orn-jd__hero-chips { display: flex; gap: 9px; flex-wrap: wrap; margin-top: 20px; }

/* USP strip — sits right below the hero, above the tabs. */
.orn-jd-usps { margin: 0; }
.orn-jd-usps__inner { display: flex; flex-wrap: wrap; gap: 10px; align-items: stretch; background: #fff; border: 1px solid #eceff3; border-radius: 14px; padding: 14px 18px; box-shadow: 0 1px 3px rgba(0,0,0,0.04); }
.orn-jd-usp { display: inline-flex; align-items: center; gap: 10px; padding: 6px 10px; flex: 1 1 160px; min-width: 0; }
.orn-jd-usp + .orn-jd-usp { border-left: 1px solid #eceff3; }
.orn-jd-usp__icon { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; flex-shrink: 0; color: #E4002B; }
.orn-jd-usp__icon svg { width: 22px; height: 22px; display: block; }
.orn-jd-usp__label { font-family: var(--orn-font-body); font-size: 13px; font-weight: 700; color: #14233b; letter-spacing: 0.01em; line-height: 1.25; }
@media (max-width: 860px) {
    .orn-jd-usps__inner { padding: 10px 12px; gap: 6px; }
    .orn-jd-usp { flex: 1 1 45%; padding: 6px; }
    .orn-jd-usp + .orn-jd-usp { border-left: 0; }
    .orn-jd-usp__label { font-size: 12px; }
}
.orn-vhero__price { display: inline-flex; align-items: baseline; flex-wrap: wrap; gap: 4px; margin-top: 12px; color: #fff; }
.orn-vhero__price-label { font-size: 13px; color: rgba(255,255,255,0.75); }
.orn-vhero__price-gross { font-family: var(--orn-font-mono); font-size: 16px; color: rgba(255,255,255,0.6); text-decoration: line-through; font-variant-numeric: tabular-nums; }
.orn-vhero__price-gross:empty { display: none; }
.orn-vhero__price-net { font-family: var(--orn-font-mono); font-size: 28px; font-weight: 700; color: #fff; line-height: 1.05; font-variant-numeric: tabular-nums; }
.orn-vhero__price-net > span { font-family: inherit; }
.orn-vhero__price.is-loading { opacity: 0.5; }

/* Layout A breakdown: Market − Savings − Rewards = Starting Price */
.orn-vhero__price-breakdown { display: flex; align-items: flex-end; flex-wrap: wrap; gap: 10px 14px; width: 100%; }
.orn-vhero__price-term { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
/* a term the band leaves out (e.g. no ORN Savings) - display:flex above would otherwise beat [hidden] */
.orn-vhero__price-term[hidden], .orn-vhero__price-op[hidden] { display: none; }
.orn-vhero__price-term-label { font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; color: rgba(255,255,255,0.7); }
.orn-vhero__price-term-val { font-family: var(--orn-font-mono); font-size: 20px; font-weight: 600; color: rgba(255,255,255,0.85); font-variant-numeric: tabular-nums; }
.orn-vhero__price-term--final .orn-vhero__price-term-val { font-size: 30px; font-weight: 700; color: #fff; }
.orn-vhero__price-op { font-family: var(--orn-font-mono); font-size: 20px; font-weight: 400; color: rgba(255,255,255,0.65); align-self: center; padding-bottom: 2px; }
.orn-vhero__price-op--eq { color: #fff; }
@media (max-width: 640px) {
    /* Receipt stack — one term per row, right-aligned amounts, big final. */
    .orn-vhero__price-breakdown {
        flex-direction: column;
        align-items: stretch;
        gap: 4px;
        width: 100%;
        max-width: 320px;
    }
    .orn-vhero__price-op { display: none; }
    .orn-vhero__price-term {
        flex-direction: row;
        align-items: baseline;
        justify-content: space-between;
        gap: 12px;
        width: 100%;
    }
    .orn-vhero__price-term-label {
        font-size: 12px;
        text-transform: uppercase;
        letter-spacing: 0.06em;
        color: rgba(255,255,255,0.75);
    }
    .orn-vhero__price-term-val {
        font-family: var(--orn-font-mono);
        font-size: 18px;
        font-weight: 600;
        color: #fff;
    }
    /* Prepend minus for deducted terms so the arithmetic stays visible. */
    .orn-vhero__price-term[data-orn-hero-price-term-sav] .orn-vhero__price-term-val::before,
    .orn-vhero__price-term[data-orn-hero-price-term-rew] .orn-vhero__price-term-val::before {
        content: "− ";
        margin-right: 2px;
    }
    .orn-vhero__price-term--final {
        margin-top: 8px;
        padding-top: 10px;
        border-top: 1px solid rgba(255,255,255,0.25);
    }
    .orn-vhero__price-term--final .orn-vhero__price-term-label { font-size: 12px; }
    .orn-vhero__price-term--final .orn-vhero__price-term-val {
        font-size: 26px;
        font-weight: 700;
    }
}
.orn-jd__hero-chip { font-family: var(--orn-font-mono); font-size: 13px; font-weight: 700; border: 1px solid rgba(255, 255, 255, 0.2); border-radius: var(--r-pill); padding: 7px 14px; color: rgb(230, 236, 242); }
.orn-jd__hero-chip--lead { background: #E4002B; border-color: #E4002B; color: #fff; box-shadow: 0 4px 12px rgba(228, 0, 43, 0.35); }
.orn-jd__hero-strip { display: flex; align-items: center; gap: 14px; margin-top: 22px; background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 13px; padding: 15px 18px; }
.orn-jd__hero-strip-eyebrow { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.14em; font-weight: 700; color: rgba(255, 255, 255, 0.9); white-space: nowrap; }
.orn-jd__hero-strip-divider { width: 1px; height: 24px; background: rgba(255, 255, 255, 0.16); }
.orn-jd__hero-strip-text { font-size: 15px; color: rgb(230, 236, 242); line-height: 1.4; }

/* ---------------- Section heads ---------------- */
.orn-jd__sec-title { font-family: var(--orn-font-display); font-weight: 800; font-size: 24px; color: rgb(15, 15, 15); margin: 36px 0 0; }
.orn-jd__sec-sub { font-size: 15px; color: rgb(90, 101, 115); margin: 6px 0 0; }

/* ---------------- Idea mode: hero eyebrow + represents/why sections ---------------- */
.orn-jd__hero-eyebrow { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.18em; font-weight: 700; color: var(--orn-navy); text-transform: uppercase; margin: 0 0 12px; }
.orn-jd__section { margin-top: 32px; }
.orn-jd__represents { list-style: none; padding: 0; margin: 20px 0 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 16px; }
@media (max-width: 720px) {
    .orn-jd__represents { grid-template-columns: 1fr; }
}
.orn-jd__represents-item { background: var(--orn-paper); border-radius: 12px; padding: 14px 18px 14px 42px; font-size: 15px; color: var(--orn-text); box-shadow: rgba(20, 35, 59, 0.04) 0 4px 12px; position: relative; line-height: 1.4; }
.orn-jd__represents-item::before { content: "✓"; position: absolute; left: 18px; top: 14px; color: var(--orn-navy); font-weight: 800; font-size: 15px; }

/* Why travellers choose this — big rounded card + icon column + prose */
.orn-jd__why { background: var(--orn-paper); border-radius: 20px; padding: 28px; box-shadow: rgba(20, 35, 59, 0.05) 0 8px 22px; display: grid; grid-template-columns: 180px 1fr; gap: 28px; align-items: start; }
@media (max-width: 720px) {
    .orn-jd__why { grid-template-columns: 1fr; }
}
.orn-jd__why::before { content: ""; display: block; background: var(--orn-idea-accent, var(--orn-gold)); border-radius: 14px; aspect-ratio: 1 / 1; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M12 2c.9 2.6.7 4.3-.5 5.5-1 1-1.5 2-1.5 3.5 0 1.7 1.3 3 3 3s3-1.3 3-3c0-.9-.3-1.4-.7-2'/><path d='M6 21h12l-1-6H7l-1 6z'/></svg>"); background-repeat: no-repeat; background-position: center; background-size: 46%; }
.orn-jd__why-copy { min-width: 0; }
.orn-jd__why-eyebrow { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.18em; font-weight: 700; color: var(--orn-idea-accent, var(--orn-gold)); text-transform: uppercase; margin: 0 0 10px; }
.orn-jd__why .orn-jd__sec-title { margin: 0 0 12px; }
.orn-jd__why-list { list-style: none; padding: 0; margin: 0; font-size: 15px; color: rgb(74, 84, 100); line-height: 1.6; }
.orn-jd__why-list li { display: inline; }
.orn-jd__why-list li:not(:last-child)::after { content: " "; }

/* ---------------- Rungs ---------------- */
/* Rung ladder — horizontal scroll strip, ~3.5 cards visible per row.
   Same scroll-snap idiom as the departures/promotions strips. */
.orn-jd__rungs { display: flex; flex-wrap: nowrap; gap: 16px; margin-top: 20px; overflow-x: auto; overflow-y: visible; scroll-snap-type: x mandatory; scroll-padding-left: 4px; padding: 22px 4px 12px; -webkit-overflow-scrolling: touch; scrollbar-width: none; -ms-overflow-style: none; }
.orn-jd__rungs::-webkit-scrollbar { display: none; width: 0; height: 0; }
.orn-jd__rungs > .orn-jd__rung { flex: 0 0 calc((100% - 3 * 16px) / 3.2); min-width: 260px; max-width: 400px; scroll-snap-align: start; }
@media (max-width: 768px) {
    .orn-jd__rungs > .orn-jd__rung { flex: 0 0 calc((100% - 16px) / 1.05); }
}
.orn-jd__rung-placeholder { flex: 1 1 100%; background: var(--orn-paper); border: 1px dashed var(--orn-line-2); border-radius: 16px; padding: 24px; color: var(--orn-ink-2); text-align: center; }
.orn-jd__rung { cursor: pointer; background: var(--orn-paper); border: 2px solid rgb(243, 243, 243); border-radius: 16px; padding: 20px; display: flex; flex-direction: column; position: relative; box-shadow: rgba(20, 35, 59, 0.05) 0 8px 22px; text-align: left; font: inherit; color: inherit; transition: transform 0.14s ease, box-shadow 0.14s ease, border-color 0.14s ease; }
.orn-jd__rung:hover { transform: translateY(-2px); box-shadow: rgba(20, 35, 59, 0.12) 0 14px 32px; }
.orn-jd__rung--recommended { box-shadow: rgba(20, 35, 59, 0.12) 0 14px 32px; }
.orn-jd__rung--selected { border-color: var(--orn-green); }
.orn-jd__rung-badge { position: absolute; top: -11px; left: 20px; background: var(--orn-gold); color: var(--orn-navy); font-family: var(--orn-font-mono); font-size: 11px; font-weight: 800; letter-spacing: 0.08em; border-radius: var(--r-pill); padding: 4px 12px; }
.orn-jd__rung-flightpill {
    position: absolute;
    top: -13px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--orn-navy);
    color: #ffffff;
    font-family: var(--orn-font-body);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    border-radius: var(--r-pill);
    padding: 5px 14px;
    box-shadow: 0 4px 10px rgba(20, 35, 59, 0.18);
    white-space: nowrap;
}
.orn-jd__rung-topline { display: flex; align-items: center; justify-content: space-between; }
.orn-jd__rung-tier { font-size: 12px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--orn-green); }
.orn-jd__rung-tier--grand { color: var(--orn-red); }
.orn-jd__rung-tier--starter { color: rgb(90, 101, 115); }
.orn-jd__rung-tier--classic { color: var(--orn-blue); }
.orn-jd__rung-tier--highlights { color: var(--orn-blue); }
.orn-jd__rung-code { font-family: var(--orn-font-mono); font-size: 13px; color: rgb(154, 138, 110); }
.orn-jd__rung-name { font-family: var(--orn-font-display); font-weight: 700; font-size: 20px; color: rgb(15, 15, 15); margin-top: 4px; line-height: 1.15; }
.orn-jd__rung-meta { font-size: 14px; color: rgb(90, 101, 115); margin-top: 4px; }
.orn-jd__rung-blurb { font-size: 13.5px; color: rgb(110, 117, 133); line-height: 1.4; margin: 5px 0 0; }
.orn-jd__rung-foot { display: flex; align-items: flex-end; justify-content: space-between; margin-top: auto; padding-top: 12px; }
.orn-jd__rung-price-label { font-size: 11px; color: rgb(154, 138, 110); }
.orn-jd__rung-price { font-family: var(--orn-font-mono); font-size: 23px; font-weight: 600; color: var(--orn-text); line-height: 1.1; }
.orn-jd__rung-savings { color: #1F7A3D; font-family: var(--orn-font-body); font-size: 12px; font-weight: 600; margin-top: 2px; line-height: 1.2; }
.orn-jd__rung-select { font-size: 13px; font-weight: 700; color: rgb(154, 138, 110); }
.orn-jd__rung--selected .orn-jd__rung-select { color: var(--orn-green); }

/* ---------------- Tabs ---------------- */
/* Tabs — separated pills (Results.html shape). White card with cream
   border for the inactive state; solid navy fill for the active.
   Margin-top=0 because the new orn-jd__body wrapper sets the gap from
   the rungs grid. Doubling it produced a yawning gap. */
/* Single row that scrolls horizontally when it can't fit (mobile) instead of
   wrapping to multiple lines. Scrollbar hidden for a clean look; pills don't
   shrink. On desktop the row fits so no scroll appears. */
.orn-jd__tabs { display: flex; gap: 10px; flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; margin-top: 0; padding: 0; background: transparent; width: auto; }
.orn-jd__tabs::-webkit-scrollbar { display: none; }
.orn-jd__tab { flex: 0 0 auto; padding: 10px 22px; border-radius: var(--r-pill); background: #fff; border: 1px solid #E4DDCD; font-family: Archivo, sans-serif; font-size: 14px; font-weight: 600; color: #3A4654; cursor: pointer; white-space: nowrap; transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease; }
.orn-jd__tab:hover { border-color: #c9a45c; }
.orn-jd__tab--active { background: #14233B; color: #F4EFE3; border-color: #14233B; }

.orn-jd__tabbar { scroll-margin-top: 16px; }   /* breathing room when a tab switch scrolls here */
.orn-jd__panels { margin-top: 20px; }
.orn-jd__panel { display: none; }
.orn-jd__panel--active { display: block; }
.orn-jd__panel-empty { background: var(--orn-paper); border: 1px dashed var(--orn-line-2); border-radius: 16px; padding: 36px 24px; color: var(--orn-ink-2); text-align: left; font-size: 15px; }

/* ============================================================================
   MOBILE: continuous-scroll + scrollspy tour-detail tabs (design parity).
   On mobile the tabs stop being a one-panel-at-a-time switcher and become a
   sticky pill bar over a SINGLE continuous page: every content section is
   stacked & visible, tapping a pill smooth-scrolls to that section, and the
   active pill follows scroll position (scrollspy, driven by JS). Desktop keeps
   the classic switcher untouched. Applies to BOTH van & FD flows.

   NOTE: this block MUST come AFTER the base .orn-jd__panel rules above — media
   queries add no specificity, so equal-specificity selectors resolve by source
   order; the continuous-scroll display:block only wins if it's declared later.
   ============================================================================ */
@media (max-width: 640px) {
    /* The Pricing (Dates) tab is redundant on mobile — the booking flow is
       reached via the sticky "Check dates & prices" button, the only
       full-screen entry point. Hide the pill AND keep its panel out of the
       continuous scroll (but NOT while the full-screen overlay is open, when
       body.orn-jd-dates-open promotes it to a fixed layer). */
    .orn-jd__tab[data-orn-tab="dates"] { display: none; }
    body:not(.orn-jd-dates-open) .orn-jd__panel[data-orn-panel="dates"] { display: none; }

    /* The sticky pill bar itself is the .orn-jd__tabbar wrapper (see the
       max-width:900px block below); the inner .orn-jd__tabs stays a plain
       horizontal-scroll track (base rule: flex-nowrap + overflow-x:auto). */

    /* All content sections stacked & visible — override the switcher's
       display:none so the page becomes one continuous scroll. scroll-margin-top
       lets pill taps land just below the pinned bar. */
    .orn-jd__panels { margin-top: 14px; }
    .orn-jd__panel { display: block; scroll-margin-top: 64px; margin-bottom: 26px; }

    /* Visa & Terms are conditional — their panels stay hidden until the server
       confirms the product has them. JS stamps orn-has-visa / orn-has-terms on
       <body>, mirroring the pill's hidden state. */
    .orn-jd__panel[data-orn-panel="visa"],
    .orn-jd__panel[data-orn-panel="terms"] { display: none; }
    body.orn-has-visa  .orn-jd__panel[data-orn-panel="visa"]  { display: block; }
    body.orn-has-terms .orn-jd__panel[data-orn-panel="terms"] { display: block; }
}

/* ---------------- Detail tab ----------------
   Two-card layout matching the design mockup:
     LEFT  — "Why this journey" (white card, 6 info-meta tiles in 2-col grid)
     RIGHT — "Good to know" (cream-tinted card with + bullet list from
             the inclusions' whatToExpect[] roll-up)
   ------------------------------------------- */
.orn-jd__detail { display: flex; flex-direction: column; gap: 20px; }
.orn-jd__detail-card { border-radius: 20px; padding: 32px; }
.orn-jd__detail-card--why { background: #fff; box-shadow: rgba(20, 35, 59, 0.05) 0 8px 24px; }
.orn-jd__detail-titlerow { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 8px; }
.orn-jd__detail-titlerow .orn-jd__detail-title { margin: 0; }
.orn-jd__brochure-btn { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: var(--button-radius-primary); background: rgb(20, 35, 59); color: #fff; font-family: Archivo, sans-serif; font-size: 13px; font-weight: 600; letter-spacing: 0.02em; text-decoration: none; white-space: nowrap; flex-shrink: 0; transition: background 160ms ease, transform 160ms ease; }
.orn-jd__brochure-btn:hover { background: rgb(30, 50, 80); transform: translateY(-1px); color: #fff; text-decoration: none; }
.orn-jd__brochure-btn svg { width: 16px; height: 16px; flex-shrink: 0; }
/* Same button on the published-journey page is a <button> (it fetches the PDF as
   a blob instead of linking to a static file), so reset the UA button chrome. */
button.orn-jd__brochure-btn { border: 0; cursor: pointer; line-height: 1; }
.orn-jd__brochure-btn.is-loading, .orn-jd__brochure-btn:disabled { opacity: .8; cursor: default; transform: none; }
/* While the PDF is being generated the download glyph is swapped for a spinner.
   It is an <i> (not a <span>) so the mobile rule below, which hides the label,
   leaves the spinner visible — on mobile it is the only affordance left. */
.orn-jd__brochure-spin { display: none; width: 15px; height: 15px; flex-shrink: 0; border-radius: 50%; border: 2px solid rgba(255, 255, 255, .35); border-top-color: #fff; animation: orn-jd-brochure-spin .7s linear infinite; }
.orn-jd__brochure-btn.is-loading .orn-jd__brochure-ico { display: none; }
.orn-jd__brochure-btn.is-loading .orn-jd__brochure-spin { display: block; }
@keyframes orn-jd-brochure-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .orn-jd__brochure-spin { animation-duration: 2s; } }
@media (max-width: 640px) {
    .orn-jd__brochure-btn span { display: none; }
    .orn-jd__brochure-btn { padding: 8px; width: 34px; height: 34px; justify-content: center; }
}
.orn-jd__detail-card--gtk { background: rgb(255, 251, 251); border: 1px solid rgb(231, 231, 231); padding: 26px 28px; margin-top: 20px; }
/* "Why this journey" (21px) on the left, "Good to know" (19px) on the right
   — per the Results.html reference. */
.orn-jd__detail-card--why .orn-jd__detail-title { font-family: Archivo, sans-serif; font-weight: 700; font-size: 21px; color: rgb(20, 35, 59); margin: 0; line-height: 1.2; }
.orn-jd__detail-card--gtk .orn-jd__detail-title { font-family: Archivo, sans-serif; font-weight: 700; font-size: 19px; color: rgb(20, 35, 59); margin: 0; line-height: 1.2; }
.orn-jd__detail-lede { color: rgb(90, 101, 115); font-size: 14px; line-height: 1.55; margin: 12px 0 0; }

/* 6 info meta tiles — 2-col grid, hairline bottom border under each tile */
.orn-jd__detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 26px; margin-top: 22px; }
.orn-jd__detail-meta { border-bottom: 1px solid rgb(237, 231, 218); padding-bottom: 10px; }
.orn-jd__detail-meta-label { font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.14em; font-weight: 600; color: rgb(154, 138, 110); text-transform: none; /* labels are mixed-case in ref ("Group size") */ }
.orn-jd__detail-meta-value { font-family: Archivo, sans-serif; font-size: 15px; font-weight: 500; color: rgb(20, 35, 59); margin-top: 4px; line-height: 1.3; }
@media (max-width: 640px) {
    /* Stack the "Why this journey" facts one per line on phones — the 2-col
       grid squeezed long values (Itinerary, Meals) into awkward multi-line
       wraps. Full-width rows with hairline dividers read cleanly. */
    .orn-jd__detail-card { padding: 24px 20px; }
    .orn-jd__detail-grid { grid-template-columns: 1fr; gap: 0; margin-top: 18px; }
    .orn-jd__detail-meta { padding: 14px 0; }
    .orn-jd__detail-meta:last-child { border-bottom: 0; padding-bottom: 0; }
}

/* Social-proof strip inside the "Why this journey" card. */
.orn-jd__proof { display: flex; gap: 22px; align-items: center; justify-content: flex-start; flex-wrap: wrap; width: fit-content; max-width: 100%; margin: 14px 0 4px 0; padding: 14px 16px; background: rgb(255, 251, 251); border: 1px solid rgb(231, 231, 231); border-radius: 14px; }
.orn-jd__proof-item { display: flex; flex-direction: column; align-items: flex-start; line-height: 1.15; }
.orn-jd__proof-stars { color: var(--orn-navy, #b32232); font-size: 15px; letter-spacing: 1px; }
.orn-jd__proof-value { font-family: Archivo, sans-serif; font-weight: 700; font-size: 18px; color: rgb(20, 35, 59); }
.orn-jd__proof-label { font-size: 12px; color: rgb(120, 128, 140); margin-top: 2px; }
.orn-jd__proof-line { font-family: Archivo, sans-serif; font-weight: 700; font-size: 15px; color: rgb(20, 35, 59); line-height: 1.2; }

/* Traveller reviews grid — 2 cols desktop, 1 col mobile. */
.orn-jd__reviews { margin-top: 28px; }
.orn-jd__reviews-title { font-family: Archivo, sans-serif; font-weight: 700; font-size: 20px; color: rgb(20, 35, 59); margin: 0 0 16px; }
.orn-jd__reviews-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.orn-jd__review { border: 1px solid rgba(179, 34, 50, 0.35); border-radius: 16px; padding: 18px 20px; background: #fff; }
.orn-jd__review-head { display: flex; align-items: center; gap: 12px; }
.orn-jd__review-avatar { flex: 0 0 auto; width: 40px; height: 40px; border-radius: 50%; background: var(--orn-navy, #b32232); color: #fff; display: flex; align-items: center; justify-content: center; font-family: Archivo, sans-serif; font-weight: 700; font-size: 14px; letter-spacing: 0.5px; }
.orn-jd__review-meta { flex: 1 1 auto; min-width: 0; }
.orn-jd__review-name { font-family: Archivo, sans-serif; font-weight: 700; font-size: 15px; color: rgb(20, 35, 59); line-height: 1.2; }
.orn-jd__review-sub { font-size: 12.5px; color: rgb(120, 128, 140); margin-top: 2px; }
.orn-jd__review-rating { flex: 0 0 auto; display: flex; align-items: center; gap: 4px; font-family: Archivo, sans-serif; font-weight: 700; font-size: 14px; color: rgb(20, 35, 59); }
.orn-jd__review-star { color: var(--orn-navy, #b32232); font-size: 15px; }
.orn-jd__review-body { margin: 12px 0 0; font-size: 14px; line-height: 1.55; color: rgb(60, 68, 80); font-style: italic; }
.orn-jd__reviews-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin: 0 0 16px; }
.orn-jd__reviews-head .orn-jd__reviews-title { margin: 0; }
.orn-jd__reviews-headmeta { display: flex; align-items: center; gap: 14px; font-family: Archivo, sans-serif; font-size: 14px; color: rgb(60, 68, 80); }
.orn-jd__reviews-avg { display: inline-flex; align-items: center; gap: 4px; font-weight: 700; color: rgb(20, 35, 59); }
.orn-jd__reviews-count { color: rgb(120, 128, 140); }
.orn-jd__reviews-seeall { margin-top: 18px; display: inline-block; padding: 10px 18px; background: transparent; border: 1px solid var(--orn-navy, #b32232); color: var(--orn-navy, #b32232); border-radius: 999px; font-family: Archivo, sans-serif; font-size: 13px; font-weight: 700; letter-spacing: 0.02em; cursor: pointer; }
.orn-jd__reviews-seeall:hover { background: var(--orn-navy, #b32232); color: #fff; }
.orn-jd__reviews-modal-scrim { position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 9998; }
.orn-jd__reviews-modal { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 720px; max-width: 94vw; height: 88vh; background: #fff; border-radius: 16px; box-shadow: 0 24px 72px rgba(0,0,0,0.35); z-index: 9999; display: flex; flex-direction: column; overflow: hidden; }
.orn-jd__reviews-modal-head { flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between; padding: 20px 24px; border-bottom: 1px solid rgba(0,0,0,0.08); }
.orn-jd__reviews-modal-title { margin: 0; font-family: Archivo, sans-serif; font-weight: 700; font-size: 18px; color: rgb(20, 35, 59); }
.orn-jd__reviews-modal-close { background: none; border: 0; font-size: 26px; line-height: 1; color: rgb(120, 128, 140); cursor: pointer; padding: 0 6px; }
.orn-jd__reviews-modal-close:hover { color: rgb(20, 35, 59); }
.orn-jd__reviews-modal-body { padding: 20px 24px; overflow-y: auto !important; flex: 1 1 auto; min-height: 0; height: 100%; -webkit-overflow-scrolling: touch; }
.orn-jd__reviews-modal-loading { padding: 40px; text-align: center; color: rgb(120, 128, 140); font-size: 14px; }
.orn-jd__reviews-modal-grid { display: grid; grid-template-columns: 1fr; gap: 14px; }
@media (max-width: 900px) {
    .orn-jd__reviews-grid { grid-template-columns: 1fr; gap: 12px; }
    .orn-jd__proof { gap: 16px; padding: 12px 14px; }
    .orn-jd__reviews-head { flex-direction: column; align-items: flex-start; gap: 6px; }
    .orn-jd__reviews-modal { width: 96vw; height: 92vh; }
}

/* Good to know list — + bullets in dark gold, body text 13.5px in warm grey */
.orn-jd__gtk-list { list-style: none; padding: 0; margin: 14px 0 0; display: flex; flex-direction: column; gap: 12px; }
.orn-jd__gtk-item { display: flex; gap: 10px; align-items: flex-start; font-size: 13.5px; color: rgb(90, 101, 115); line-height: 1.45; }
.orn-jd__gtk-plus { color: rgb(201, 10, 18); font-weight: 800; font-size: 15px; margin-top: 1px; flex-shrink: 0; }
.orn-jd__gtk-empty { color: var(--orn-ink-2); font-style: italic; margin: 14px 0 0; font-size: 13.5px; }

/* ---------------- Itinerary tab ----------------
   Vertical timeline (Itinerary.html reference). No white cards — items
   sit directly on the page bg, connected by a 2px cream line, each
   anchored by a gold dot. Eyebrow shows day-range + city; title is
   the city in Archivo 700; description below in ink-2; meal badges
   (B/L/D) float right on the eyebrow line. First node's dot is blue
   (arrival), last is green (departure).
   ----------------------------------------------- */
/* How to read the day-by-day plan — server-authored notes above the timeline.
   Info-tinted, reusing the validation palette's INFO tokens: the page already
   speaks that colour for "something you should know", and grey-on-grey read as
   an empty state against the panel's own background. Not a validation banner —
   no severity icon, no actions. */
.orn-jd__itin-notes { display: flex; align-items: flex-start; gap: 9px; margin: 0 0 18px; padding: 10px 13px; background: var(--orn-vld-info-bg, #F4F9FE); border: 1px solid var(--orn-vld-info-b, #BFD7F2); border-radius: 10px; }
.orn-jd__itin-notes-ico { flex: none; width: 15px; height: 15px; margin-top: 1px; color: var(--orn-vld-info-i, #0D74CE); }
.orn-jd__itin-notes-ico svg { width: 15px; height: 15px; display: block; }
.orn-jd__itin-notes-body { flex: 1; min-width: 0; }
/* Small and italic: an aside about how to read the plan, not a heading for it. */
.orn-jd__itin-note { margin: 0; font-family: Archivo, sans-serif; font-size: 12.5px; font-style: italic; line-height: 1.5; color: var(--orn-vld-info-t, #1E3A8A); }
.orn-jd__itin-note + .orn-jd__itin-note { margin-top: 6px; }
.orn-jd__itin-timeline { padding-top: 4px; }
.orn-jd__day-item { position: relative; padding-left: 20px; padding-bottom: 24px; border-left: 2px solid rgb(231, 231, 231); margin-left: 6px; margin-right: 10px; }
.orn-jd__day-item--last { border-left-color: transparent; padding-bottom: 0; }
.orn-jd__day-dot { position: absolute; left: -9px; top: 0; width: 16px; height: 16px; border-radius: 50%; background: rgb(242, 13, 22); border: 3px solid rgb(237, 234, 225); }
.orn-jd__day-dot--start { background: rgb(47, 128, 237); }
.orn-jd__day-dot--end { background: rgb(30, 122, 78); }

.orn-jd__day-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
/* "Change Day" — staff only, pushed to the end of the eyebrow row so it reads as an
   affordance on the day rather than part of its label. */
.orn-jd__day-itnchg { margin-left: auto; border: 1px solid var(--orn-cream-3, #d6d6d6); background: #fff; color: var(--orn-ink, rgb(20, 35, 59)); border-radius: var(--fit-btn-radius); padding: 5px 13px; font-family: Archivo, sans-serif; font-size: 12px; font-weight: 700; letter-spacing: 0.02em; white-space: nowrap; cursor: pointer; transition: border-color 160ms ease, background 160ms ease; }
.orn-jd__day-itnchg:hover { border-color: var(--orn-ink, rgb(20, 35, 59)); background: var(--orn-cream, #faf9f6); }
.orn-jd__day-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.16em; color: var(--orn-text); font-weight: 600; white-space: nowrap; }
/* Day-by-day calendar date — "FRI 16 OCT" in brand-red mono after a hairline
   divider, sharing the eyebrow row. Drawn only once priced (FIT: Store.checked();
   FD: syncItineraryDayDates in ornholidays-journey.js). */
.orn-jd__day-date { display: inline-flex; align-items: center; gap: 12px; font-family: var(--orn-font-mono); font-size: 12px; line-height: 1; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: var(--orn-gold-3); white-space: nowrap; }
.orn-jd__day-date::before { content: ""; width: 1px; height: 12px; background: var(--orn-line-2); }
/* On phones the date wraps under the eyebrow — a leading divider would dangle. */
@media (max-width: 640px) {
  .orn-jd__day-date::before { display: none; }
}
/* Published-journey page only: the day date follows the eyebrow's look — black
   (not the red --orn-gold-3) with a centered middot "·" separator instead of the
   1px bar, matching "Day N · City". Scoped so the FD itinerary is untouched. No
   `display` here, so the mobile rule above still hides the separator on phones. */
.orn-page--journey-detail .orn-jd__day-date { color: var(--orn-text); }
.orn-page--journey-detail .orn-jd__day-date::before { content: "\00B7"; width: auto; height: auto; background: none; color: var(--orn-text); font-weight: 700; }
/* The day's drive to the next city - "335 KM" - after the date, in the same mono
   type and middot separator, on transfer days whose card gives a distance. */
.orn-jd__day-km { display: inline-flex; align-items: center; gap: 12px; font-family: var(--orn-font-mono); font-size: 12px; line-height: 1; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: var(--orn-text); white-space: nowrap; }
.orn-jd__day-km::before { content: "\00B7"; color: var(--orn-text); font-weight: 700; }
.orn-jd__day-meals { display: flex; gap: 5px; margin-left: auto; }
.orn-jd__day-meal { width: 20px; height: 20px; border-radius: 5px; background: rgb(234, 244, 237); color: rgb(30, 122, 78); font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; display: flex; align-items: center; justify-content: center; }
.orn-jd__day-title { font-family: Archivo, sans-serif; font-weight: 700; font-size: 18px; color: rgb(20, 35, 59); margin-top: 8px; line-height: 1.4; }
.orn-jd__day-desc { font-size: 15px; color: rgb(90, 101, 115); line-height: 1.6; margin-top: 5px; max-width: 760px; }
/* Per-day entrance-ticket disclaimer, after the day's optionals. */
.orn-jd__day-note { font-size: 12px; color: rgb(138, 147, 160); line-height: 1.5; margin-top: 12px; font-style: italic; max-width: 760px; }
.orn-jd__day-feel { background: rgb(255, 251, 251); border: 1px solid rgb(231, 231, 231); border-radius: 12px; padding: 14px 18px; margin-top: 12px; max-width: 760px; }
.orn-jd__day-feel-title { font-family: Archivo, sans-serif; font-weight: 700; font-size: 13px; color: rgb(20, 35, 59); letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 6px; }
.orn-jd__day-feel-line { font-size: 14px; color: rgb(90, 101, 115); line-height: 1.55; margin: 4px 0; }
.orn-jd__day-flights { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; max-width: 760px; }
.orn-jd__day-flight { display: flex; align-items: center; gap: 12px; background: #fff; border: 1px solid rgb(231, 231, 231); border-radius: 10px; padding: 12px 14px; }
.orn-jd__day-flight-ic { flex: none; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; border-radius: 8px; background: rgb(245, 245, 247); color: rgb(150, 158, 172); }
.orn-jd__day-flight-ic svg { width: 17px; height: 17px; }
.orn-jd__day-flight-txt { font-size: 14px; line-height: 1.5; color: rgb(40, 46, 54); }
.orn-jd__day-blks { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; max-width: 760px; }
.orn-jd__day-blk { display: flex; flex-direction: column; gap: 12px; align-items: flex-start; background: #fff; border: 1px solid rgb(231, 231, 231); border-radius: 10px; padding: 12px 14px; }
.orn-jd__day-blk-kind { flex: none; font-family: 'IBM Plex Mono', monospace; font-size: 10.5px; font-weight: 600; color: rgb(20, 35, 59); background: rgb(244, 239, 227); border-radius: 999px; padding: 4px 10px; letter-spacing: 0.06em; text-transform: uppercase; margin-top: 1px; }
.orn-jd__day-blk-kind--TRANSFERS { background: rgb(233, 240, 250); color: rgb(30, 70, 130); }
.orn-jd__day-blk-kind--SIGHTSEEING { background: var(--fit-red, rgb(242, 13, 22)); color: #fff; }
.orn-jd__day-blk-kind--HOTEL_EXTRAS { background: rgb(238, 242, 236); color: rgb(60, 100, 60); }
.orn-jd__day-blk-kind--TRANSPORT { background: rgb(244, 239, 227); color: rgb(120, 95, 45); }
.orn-jd__day-blk-body { flex: 1; min-width: 0; }
.orn-jd__day-blk-name { font-family: Archivo, sans-serif; font-weight: 600; font-size: 14.5px; color: rgb(20, 35, 59); line-height: 1.35; }
.orn-jd__day-blk-sub { font-size: 13px; color: rgb(90, 101, 115); margin-top: 2px; }
.orn-jd__day-blk-desc { font-size: 13px; color: rgb(110, 120, 133); line-height: 1.5; margin-top: 6px; }
.orn-jd__day-blk-slot { font-family: 'IBM Plex Mono', monospace; font-size: 11px; color: rgb(150, 158, 172); text-transform: uppercase; letter-spacing: 0.06em; margin-top: 4px; }
.orn-jd__day-blk-info { display: flex; align-items: flex-start; gap: 6px; margin-top: 8px; font-size: 12.5px; line-height: 1.5; color: rgb(110, 120, 133); }
.orn-jd__day-blk-info--mt { margin-top: 12px; }
.orn-jd__day-blk-info svg { flex: 0 0 auto; margin-top: 1px; color: rgb(156, 163, 175); }
/* Variant chip (Private / Shared / SIC Basis …) under the block name — reuses the
   transfer-type pill component. */
.orn-jd__day-blk-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 5px; }
/* Purchased extras (blk.addOnA) committed onto the block — an "Add-ons" title over a
   tick-first list. */
.orn-jd__day-blk-addons { margin-top: 10px; }
.orn-jd__day-blk-addons-lbl { display: block; font-family: 'IBM Plex Mono', monospace; font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase; color: rgb(150, 158, 172); margin-bottom: 6px; }
.orn-jd__day-blk-addons-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.orn-jd__day-blk-addon { display: flex; align-items: flex-start; gap: 8px; font-size: 13.5px; line-height: 1.4; color: rgb(20, 35, 59); }
.orn-jd__day-blk-addon-ic { flex: 0 0 auto; width: 16px; height: 16px; color: #16a34a; margin-top: 1px; }
/* Description clip + Show more/less (descClipHtml) — shared across day cards. The
   wrapper keeps its caller's class for look; these js-descclip hooks drive the toggle. */
.js-descclip .js-descclip-full { display: none; }
.js-descclip.is-open .js-descclip-full { display: inline; }
.js-descclip.is-open .js-descclip-short { display: none; }
.orn-descclip-more { display: inline; margin-left: 2px; padding: 0; background: none; border: 0; font: inherit; font-size: 0.8125rem; font-weight: 700; color: var(--orn-navy, rgb(242, 13, 22)); cursor: pointer; white-space: nowrap; }
.orn-descclip-more:hover { text-decoration: underline; }
/* Post-pricing block actions (blk.actions[]) — Change / Remove. Quiet by
   default so the day still reads as an itinerary rather than a form; Remove
   only takes the destructive red on hover. */
.orn-jd__day-blk-acts { flex: none; display: flex; align-items: center; gap: 8px; width: 100%; justify-content: flex-end; }
.orn-jd__day-blk-act { flex: none; border: 1px solid var(--orn-cream-3, #e8e8e8); background: #fff; color: var(--orn-ink, rgb(20, 35, 59)); border-radius: var(--fit-btn-radius); padding: 8px 18px; font-family: Archivo, sans-serif; font-size: 12.5px; font-weight: 600; letter-spacing: 0.02em; white-space: nowrap; cursor: pointer; transition: border-color 160ms ease, background 160ms ease, color 160ms ease; }
.orn-jd__day-blk-act:hover { border-color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-jd__day-blk-act--rm { color: var(--orn-mute, #6e6e6e); }
.orn-jd__day-blk-act--rm:hover { border-color: var(--orn-gold-3, rgb(242, 13, 22)); color: var(--orn-gold-3, rgb(242, 13, 22)); }
.orn-jd__day-blk-act:disabled { opacity: .5; cursor: not-allowed; }
@media (max-width: 560px) {
    .orn-jd__day-blk { flex-wrap: wrap; }
    .orn-jd__day-blk-acts { width: 100%; margin-left: 0; justify-content: flex-end; }
}
/* Curated optional tours on a day (tourOptA). Same row shape as the day blocks
   above so the two read as one list, but on a dashed, unfilled card - these are
   offered alongside the day, not part of what is booked. */
.orn-jd__day-opts { margin-top: 14px; max-width: 760px; }
.orn-jd__day-opts-title { font-family: Archivo, sans-serif; font-weight: 700; font-size: 13px; color: rgb(20, 35, 59); letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 8px; }
.orn-jd__day-opts-list { display: flex; flex-direction: column; gap: 8px; }
.orn-jd__day-opt { display: flex; flex-direction: column; gap: 12px; align-items: flex-start; background: rgb(252, 252, 250); border: 1px dashed rgb(214, 214, 214); border-radius: 10px; padding: 12px 14px; }
.orn-jd__day-opt-kind { flex: none; font-family: 'IBM Plex Mono', monospace; font-size: 10.5px; font-weight: 600; color: rgb(120, 85, 30); background: rgb(244, 239, 227); border-radius: 999px; padding: 4px 10px; letter-spacing: 0.06em; text-transform: uppercase; margin-top: 1px; }
.orn-jd__day-opt-body { flex: 1; min-width: 0; }
.orn-jd__day-opt-name { font-family: Archivo, sans-serif; font-weight: 600; font-size: 14.5px; color: rgb(20, 35, 59); line-height: 1.35; }
.orn-jd__day-opt-sub { font-size: 13px; color: rgb(90, 101, 115); margin-top: 2px; line-height: 1.5; }
.orn-jd__day-opt-meta { font-family: 'IBM Plex Mono', monospace; font-size: 11px; color: rgb(150, 158, 172); text-transform: uppercase; letter-spacing: 0.06em; margin-top: 4px; }
.orn-jd__day-opt-prc { flex: none; font-family: Archivo, sans-serif; font-weight: 700; font-size: 14px; color: rgb(20, 35, 59); white-space: nowrap; margin-top: 1px; }
/* Price + Select stack in their own right-hand column; without it the button
   lands on the price baseline and crowds at the 760px max-width. The column is
   only emitted when there is something to put in it, so the pre-pricing row
   (price only, no button) is unchanged. */
.orn-jd__day-opt-side { flex: none; display: flex; flex-direction: row; align-items: center; justify-content: space-between; width: 100%; gap: 8px; }
/* Navy, not FIT-red: red is reserved for the actual commit CTA in the drawer
   footer, so the row button stays secondary. Matches .orn-jd__brochure-btn. */
/* Primary "Select" — red filled, consistent with hotel-room / insurance Select. */
.orn-jd__day-opt-btn { flex: none; border: 1px solid var(--fit-red, #F20D16); background: var(--fit-red, #F20D16); color: #fff; border-radius: var(--fit-btn-radius); padding: 8px 18px; font-family: Archivo, sans-serif; font-size: 12.5px; font-weight: 700; letter-spacing: 0.02em; white-space: nowrap; cursor: pointer; box-shadow: 0 2px 8px rgba(242,13,22,.18); transition: background 160ms ease, border-color 160ms ease, box-shadow 160ms ease, transform 80ms ease; }
.orn-jd__day-opt-btn:hover { background: var(--fit-red-2, #C90A12); border-color: var(--fit-red-2, #C90A12); box-shadow: 0 4px 13px rgba(242,13,22,.26); }
.orn-jd__day-opt-btn:active { transform: scale(.97); }
/* "+ Add Tour" on a day with no itinerary. Same shape as the day-block "Change"
   pill so it reads as an affordance rather than a CTA competing with the red
   "Select" on a curated tour — but its OWN class, because .orn-jd__day-blk-act
   carries the day-block action delegate. */
.orn-jd__day-addtour { margin-top: 14px; }
.orn-jd__day-addtour-btn { border: 1px dashed var(--orn-cream-3, #d6d6d6); background: rgb(252, 252, 250); color: var(--orn-ink, rgb(20, 35, 59)); border-radius: var(--fit-btn-radius); padding: 9px 18px; font-family: Archivo, sans-serif; font-size: 12.5px; font-weight: 700; letter-spacing: 0.02em; white-space: nowrap; cursor: pointer; transition: border-color 160ms ease, background 160ms ease; }
.orn-jd__day-addtour-btn:hover { border-color: var(--orn-ink, rgb(20, 35, 59)); background: #fff; }

/* ── Meal coupons (per-day Breakfast/Lunch/Dinner) ─────────────────────────
   One "Meals" card per day, listing the three slots. A not-included slot shows
   an Add; an included one shows Change + Remove. Add/Change expand an inline
   coupon-option chooser (radio cards + confirm) under the slot row. */
.orn-fit__meals { margin-top: 14px; max-width: 760px; background: #fff; border: 1px solid rgb(231, 231, 231); border-radius: 12px; padding: 14px 16px; }
.orn-fit__meals-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.orn-fit__meals-title { font-family: Archivo, sans-serif; font-weight: 700; font-size: 13px; color: rgb(20, 35, 59); letter-spacing: 0.06em; text-transform: uppercase; }
.orn-fit__meals-count { font-family: 'IBM Plex Mono', monospace; font-size: 11px; color: rgb(150, 158, 172); letter-spacing: 0.04em; white-space: nowrap; }
.orn-fit__meals-list { display: flex; flex-direction: column; }
.orn-fit__meal-row { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-top: 1px dashed rgb(224, 224, 228); }
.orn-fit__meal-row:first-child { border-top: 0; }
.orn-fit__meal-ic { flex: none; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; border-radius: 8px; background: rgb(248, 246, 240); color: rgb(120, 95, 45); }
.orn-fit__meal-row--no .orn-fit__meal-ic { background: rgb(245, 245, 247); color: rgb(150, 158, 172); }
.orn-fit__meal-ic svg { width: 17px; height: 17px; }
.orn-fit__meal-main { flex: 1; min-width: 0; }
.orn-fit__meal-nm { font-family: Archivo, sans-serif; font-weight: 600; font-size: 14px; color: rgb(20, 35, 59); line-height: 1.3; }
.orn-fit__meal-sub { font-size: 12.5px; color: rgb(90, 101, 115); margin-top: 2px; line-height: 1.4; }
.orn-fit__meal-no { color: rgb(150, 158, 172); }
.orn-fit__meal-acts { flex: none; display: flex; align-items: center; gap: 8px; }
/* Buttons follow the day surface's two canonical shapes: secondary = white
   outline PILL (like the day-block "Change"), primary (--go) = red PILL identical
   to the day-tour "Select" (.orn-jd__day-opt-btn). Keeps meals consistent with
   Hotels / Flights / Day-tour buttons. */
.orn-fit__meal-btn { flex: none; border: 1px solid var(--orn-cream-3, #e8e8e8); background: #fff; color: var(--orn-ink, rgb(20, 35, 59)); border-radius: var(--fit-btn-radius); padding: 8px 18px; font-family: Archivo, sans-serif; font-size: 12.5px; font-weight: 600; letter-spacing: 0.02em; white-space: nowrap; cursor: pointer; transition: border-color 160ms ease, background 160ms ease, color 160ms ease, box-shadow 160ms ease; }
.orn-fit__meal-btn:hover { border-color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-fit__meal-btn--rm { color: var(--orn-mute, #6e6e6e); }
.orn-fit__meal-btn--rm:hover { border-color: rgb(242, 13, 22); color: rgb(242, 13, 22); }
.orn-fit__meal-btn--go { border-color: var(--fit-red, #F20D16); background: var(--fit-red, #F20D16); color: #fff; font-weight: 700; box-shadow: 0 2px 8px rgba(242,13,22,.18); }
.orn-fit__meal-btn--go:hover { background: var(--fit-red-2, #C90A12); border-color: var(--fit-red-2, #C90A12); box-shadow: 0 4px 13px rgba(242,13,22,.26); }
.orn-fit__meal-btn:disabled { opacity: .6; cursor: progress; }
/* Inline coupon-option chooser */
.orn-fit__meal-chooser { margin: 2px 0 10px 42px; border: 1px solid rgb(231, 231, 231); border-radius: 10px; padding: 10px; background: rgb(252, 252, 250); }
.orn-fit__meal-chooser-list { display: flex; flex-direction: column; gap: 8px; }
.orn-fit__meal-opt { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border: 1px solid rgb(228, 228, 230); border-radius: 8px; background: #fff; cursor: pointer; transition: border-color 160ms ease, box-shadow 160ms ease; }
.orn-fit__meal-opt-rd { margin-top: 2px; }
.orn-fit__meal-opt.is-on { border-color: rgb(20, 35, 59); box-shadow: inset 0 0 0 1px rgb(20, 35, 59); }
.orn-fit__meal-opt-rd { flex: none; accent-color: rgb(20, 35, 59); }
.orn-fit__meal-opt-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.orn-fit__meal-opt-nm { font-family: Archivo, sans-serif; font-weight: 600; font-size: 13.5px; color: rgb(20, 35, 59); }
.orn-fit__meal-opt-hd { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; }
/* Transfer pill — mirrors orn-ui <Pill> variants (green = private, amber = shared). */
.orn-fit__mpill { display: inline-flex; align-items: center; gap: 4px; border: 1px solid; border-radius: 4px; padding: 2px 8px; font-family: 'Inter', Archivo, sans-serif; font-weight: 500; font-size: 11.5px; line-height: 1.2; white-space: nowrap; }
.orn-fit__mpill--green { background: #f0fdf4; border-color: #16a34a; color: #16a34a; }
.orn-fit__mpill--shared { background: #fefbe9; border-color: #e2a336; color: #ab6400; border-radius: 3px; }
.orn-fit__meal-opt-sub { font-size: 11.5px; line-height: 1.4; color: rgb(120, 128, 140); margin-top: 3px; }
.orn-fit__meal-opt-prcwrap { flex: none; display: flex; flex-direction: column; align-items: flex-end; gap: 2px; text-align: right; }
.orn-fit__meal-opt-prc { flex: none; font-family: Archivo, sans-serif; font-weight: 700; font-size: 13.5px; color: rgb(20, 35, 59); white-space: nowrap; }
.orn-fit__meal-opt-prcnote { font-family: Archivo, sans-serif; font-weight: 400; font-size: 10.5px; line-height: 1.2; color: rgb(150, 158, 172); white-space: nowrap; }
.orn-fit__meal-opt--skel { pointer-events: none; }
.orn-fit__meal-chooser-foot { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 10px; }
.orn-fit__meal-chooser-foot-sp { flex: 1 1 auto; }
@media (max-width: 560px) {
    .orn-fit__meal-row { flex-wrap: wrap; }
    /* width:100% + margin-left overshoots the row by the margin and pushes the
       buttons off the card's right edge — indent with padding (border-box) so the
       acts stay inside the container. */
    .orn-fit__meal-acts { width: 100%; margin-left: 0; padding-left: 42px; box-sizing: border-box; justify-content: flex-end; flex-wrap: wrap; }
    .orn-fit__meal-chooser { margin-left: 0; }
    .orn-fit__meal-chooser-foot { flex-wrap: wrap; }
}

/* ── Optional-tour variant chooser drawer ──────────────────────────────────
   Shell only. The body is the SHARED inline chooser (.orn-fit__bandopts >
   .orn-fit__bandopts-body.orn-sso) painting its facet toggles + option cards
   in, so every .orn-fit__opt* / .orn-sso__* rule further down this file applies
   untouched. Mirrors .orn-fit__vld-pmodal (the issues modal) for geometry,
   z-index and animation. */
.orn-topt__backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 100000; animation: ornFitFade .2s ease both; }
.orn-topt__drawer { position: fixed; top: 0; right: 0; bottom: 0; width: 100%; max-width: 640px; background: var(--orn-paper); z-index: 100001; display: flex; flex-direction: column; box-shadow: -12px 0 40px rgba(0,0,0,.22); animation: ornVldSlide .26s cubic-bezier(.22,.61,.36,1) both; }
.orn-topt__hd { display: flex; align-items: center; gap: 12px; padding: 16px 22px; border-bottom: 1px solid var(--orn-cream-3, #e8e8e8); }
.orn-topt__back { flex: none; cursor: pointer; background: none; border: 0; font-size: 18px; line-height: 1; color: var(--orn-ink, #14233b); padding: 0; }
.orn-topt__hdmain { flex: 1; min-width: 0; }
.orn-topt__ttl { flex: 1; min-width: 0; font-family: Archivo, sans-serif; font-weight: 700; font-size: 17px; line-height: 1.3; color: var(--orn-ink, #14233b); }
/* Which day the activity would land on — "Singapore (Day 2: Mon, 02 Nov, 2026)". */
.orn-topt__sub { font-family: Archivo, sans-serif; font-size: 13.5px; line-height: 1.35; color: var(--orn-mute, #6e6e6e); margin-top: 3px; }
.orn-topt__x { flex: none; cursor: pointer; background: none; border: 0; font-size: 17px; line-height: 1; color: var(--orn-mute, #6e6e6e); padding: 0; }
.orn-topt__x:hover { color: var(--orn-ink, #14233b); }
.orn-topt__body { flex: 1; overflow-y: auto; }
.orn-topt__ft { flex: none; display: flex; align-items: center; justify-content: flex-end; gap: 20px; padding: 16px 22px; border-top: 1px solid var(--orn-cream-3, #e8e8e8); background: var(--orn-paper, #fff); }
.orn-topt__tot { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.orn-topt__tot span { font-family: Archivo, sans-serif; font-size: 12.5px; font-weight: 500; color: var(--orn-mute, #6e6e6e); }
.orn-topt__tot b { font-family: Archivo, sans-serif; font-size: 20px; font-weight: 700; line-height: 1.1; color: var(--orn-ink, #14233b); }
.orn-topt__cta { flex: none; border: 0; border-radius: var(--button-radius-primary); background: var(--orn-gold, rgb(20,20,20)); color: #fff; padding: 13px 26px; font-family: Archivo, sans-serif; font-size: 14px; font-weight: 700; cursor: pointer; transition: background 160ms ease, opacity 160ms ease; }
.orn-topt__cta:hover:not(:disabled) { background: var(--orn-gold-2, #000); }
.orn-topt__cta:disabled { opacity: .45; cursor: not-allowed; }

/* ORN skin for the shared chooser. The engine's own styling is the FIT red
   theme (pink tint surface, red marks, red apply pill) which the visa/band
   surfaces keep — these overrides are scoped to .orn-topt__drawer so only the
   tour drawer is repainted in the ORN palette: light-grey surface, near-black
   CTA, red reserved as a thin accent. Selectors are deliberately deeper than
   the FIT rules they override (noted per rule). */
.orn-topt__drawer .orn-topt__body { background: var(--orn-cream, #f4f4f4); padding: 18px 22px 22px; }
.orn-topt__drawer .orn-fit__bandopts-eyebrow { color: var(--orn-mute, #6e6e6e); }
/* beats .orn-fit__bandopts .orn-fit__bandopts-body .orn-sso__variants (0,3,0) */
.orn-topt__drawer .orn-fit__bandopts .orn-fit__bandopts-body .orn-sso__variants { border-color: var(--orn-cream-3, #e8e8e8); border-radius: 10px; }
.orn-topt__drawer .orn-fit__opt { border-color: var(--orn-cream-3, #e8e8e8); border-radius: 10px; }
/* Radio, not a "+" pill. The shared chooser renders .orn-fit__opt-mark as a
   tinted circle holding a "+" (or "✓" when committed) — one option out of a
   list is a radio choice, so inside the drawer the glyph is suppressed
   (font-size:0) and the circle is redrawn as a ring, with ::after as the dot on
   the focused card. CSS-only: the band/visa choosers keep the "+" mark. */
.orn-topt__drawer .orn-fit__opt-mark { width: 20px; height: 20px; background: transparent; border: 2px solid var(--orn-cream-3, #d9d9d9); font-size: 0; color: transparent; }
.orn-topt__drawer .orn-fit__opt-mark::after { content: ''; width: 10px; height: 10px; border-radius: 50%; background: transparent; transition: background .12s ease; }
/* beats .orn-fit__opt:not(.is-on) .orn-fit__opt-mark:hover (0,4,0) */
.orn-topt__drawer .orn-fit__opt:not(.is-on) .orn-fit__opt-mark:hover { background: transparent; border-color: var(--orn-ink, #14233b); transform: none; }
/* the focused option IS the selection here (nothing comes back isSltd on an
   add), so the filled dot + dark card border are what mark it chosen */
.orn-topt__drawer .orn-fit__opt--focus .orn-fit__opt-mark { border-color: var(--orn-ink, #14233b); }
.orn-topt__drawer .orn-fit__opt--focus .orn-fit__opt-mark::after { background: var(--orn-ink, #14233b); }
.orn-topt__drawer .orn-fit__opt--focus { border-color: var(--orn-ink, #14233b); box-shadow: 0 4px 14px rgba(20, 35, 59, .10); }
/* The option already on the journey comes back isSltd, which the engine paints
   as a red filled circle holding a "✓" — and its font-size:14px re-reveals the
   glyph the radio rule hid. Repaint it as a selected radio in the ORN ink so
   "on the trip" and "focused" read as the same control, not two designs.
   Beats .orn-fit__opt.is-on .orn-fit__opt-mark (0,3,0). */
.orn-topt__drawer .orn-fit__opt.is-on .orn-fit__opt-mark { background: transparent; border-color: var(--orn-ink, #14233b); color: transparent; font-size: 0; }
.orn-topt__drawer .orn-fit__opt.is-on .orn-fit__opt-mark::after { background: var(--orn-ink, #14233b); }
/* card + "CURRENT" chip in ORN neutrals rather than the FIT red tint */
.orn-topt__drawer .orn-fit__opt.is-on { border-color: var(--orn-ink, #14233b); box-shadow: 0 3px 12px rgba(20, 35, 59, .08); }
.orn-topt__drawer .orn-fit__opt-cur { color: var(--orn-ink, #14233b); background: var(--orn-cream, #f4f4f4); border-color: var(--orn-cream-3, #e8e8e8); }
/* the whole row is the radio's hit area */
.orn-topt__drawer .orn-fit__opt { cursor: pointer; }
/* The footer is the single commit path, so the chooser's own per-card apply
   button is suppressed. Must out-specify
   .orn-fit__bandopts .orn-fit__opt .orn-sso__apply (0,3,0), which sets
   display:flex — a plain .orn-topt__drawer .orn-sso__apply loses to it. */
.orn-topt__drawer .orn-fit__bandopts .orn-fit__opt .orn-sso__apply { display: none; }
/* Scroll lock while the drawer is open (the page behind must not scroll). */
body.orn-topt-lock { overflow: hidden; }
@media (prefers-reduced-motion: reduce) {
    .orn-topt__drawer, .orn-topt__backdrop { animation: none; }
}
@media (max-width: 560px) {
    .orn-jd__day-opt { flex-wrap: wrap; }
    .orn-jd__day-opt-side { width: 100%; flex-direction: row; align-items: center; justify-content: space-between; }
    .orn-topt__drawer { max-width: none; }
    .orn-topt__drawer .orn-topt__body { padding: 14px 16px 18px; }
    .orn-topt__hd, .orn-topt__ft { padding-inline: 16px; }
}
/* Mobile itinerary "Read more / Read less" toggle. The collapse markup is only
   emitted on small screens (JS-gated), so this styling is inherently mobile. */
.orn-jd__day-desc-toggle {
    display: inline;
    margin-left: 4px;
    padding: 0;
    background: none;
    border: 0;
    font: inherit;
    font-weight: 700;
    color: var(--orn-navy, rgb(242, 13, 22));
    cursor: pointer;
    white-space: nowrap;
}
.orn-jd__day-desc-toggle:hover { text-decoration: underline; }

/* ---------------- Dates tab ----------------
   Selectors (ex-city + travellers + agent on-behalf), promoted-dates
   list, month pills and per-departure pricing rows. Each row shows
   date range, availability label (Launch/Selling well/Scarcity), price
   per person and Select-seats CTA.
   --------------------------------------- */
/* Step navigator — sits above every dates-tab step (Travellers / Date /
   Price summary). Green (done) → gold (current) → grey (pending). */
/* Single row that scrolls horizontally on narrow screens rather than wrapping
   the numbered steps onto multiple lines. */
.orn-jd__dt-stepnav { display: flex; align-items: center; gap: 12px; padding: 5px 4px 16px; flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.orn-jd__dt-stepnav::-webkit-scrollbar { display: none; }
.orn-jd__dt-stepnav-item { flex: 0 0 auto; display: flex; align-items: center; gap: 8px; color: var(--orn-mute, #9a8a6e); font-size: 13px; font-weight: 500; white-space: nowrap; }
.orn-jd__dt-stepnav-dot { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; background: #d9d2c1; color: #fff; font-weight: 700; font-size: 13px; line-height: 1; flex-shrink: 0; }
.orn-jd__dt-stepnav-item.is-done { color: var(--orn-text); }
.orn-jd__dt-stepnav-item.is-done .orn-jd__dt-stepnav-dot { background: var(--orn-text); }
.orn-jd__dt-stepnav-item.is-current { color: var(--orn-navy); font-weight: 600; }
.orn-jd__dt-stepnav-item.is-current .orn-jd__dt-stepnav-dot { background: var(--orn-navy, rgb(20, 35, 59)); }
.orn-jd__dt-stepnav-sep { flex: 0 0 48px; width: 48px; height: 1px; background: #cfc7b3; }
@media (max-width: 640px) {
    /* Only 3 steps, so make them FIT the width instead of scrolling (which cut
       off "3 Price summary"). Shrink the dots/labels slightly and let the
       connector lines flex to absorb the leftover space. */
    .orn-jd__dt-stepnav { gap: 8px; overflow-x: visible; }
    .orn-jd__dt-stepnav-item { font-size: 12px; gap: 6px; }
    .orn-jd__dt-stepnav-dot { width: 22px; height: 22px; font-size: 12px; }
    .orn-jd__dt-stepnav-sep { flex: 1 1 auto; width: auto; min-width: 10px; }
}

/* Controls wrapper (Step 1) — restructured with a header block. */
.orn-jd__dt-controls { background: #fff; border: 1px solid var(--orn-line); border-radius: 16px; padding: 28px 32px 24px; margin-bottom: 14px; }
.orn-jd__dt-controls-head { margin-bottom: 20px; }
.orn-jd__dt-controls-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.18em; color: var(--orn-gold, #b18a4a); margin-bottom: 6px; text-transform: uppercase; }
.orn-jd__dt-controls-title { font-family: 'Archivo', sans-serif; font-size: 30px; font-weight: 800; color: var(--orn-text); line-height: 1.15; margin: 0 0 8px; letter-spacing: -0.3px; }
@media (max-width: 640px) {
    .orn-jd__dt-controls-title { font-size: 28px; }
}
.orn-jd__dt-controls-lede { font-size: 14px; color: var(--orn-ink-2, #4a4a4a); line-height: 1.5; margin: 0; max-width: 640px; }
.orn-jd__dt-controls-grid { display: grid; grid-template-columns: 1fr; gap: 16px; margin-bottom: 20px; }
@media (min-width: 720px) {
    .orn-jd__dt-controls-grid { grid-template-columns: 1fr 1fr; }
}
.orn-jd__dt-ctrl--agent { grid-column: 1 / -1; }

/* "Select dates →" CTA — full-width navy button under the controls. */
.orn-jd__dt-select-cta { display: block; width: 100%; background: var(--color-primary, #000); color: #fff; border: none; border-radius: var(--button-radius-primary); padding: 14px 18px; font-size: 15px; font-weight: 600; cursor: pointer; font-family: inherit; transition: background 0.15s ease; }
.orn-jd__dt-select-cta:hover { background: var(--color-primary-light, #222); }

/* Change-buttons group in the price summary head (Change date + Change travellers). */
.orn-jd__dt-price-change-group { display: flex; gap: 8px; flex-wrap: wrap; }

.orn-jd__dt-ctrl-label { display: block; font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.14em; font-weight: 600; color: rgb(75, 75, 75); margin-bottom: 6px; }
.orn-jd__dt-select, .orn-jd__dt-input { width: 100%; background: var(--orn-cream-2); border: 1px solid var(--orn-line); border-radius: 10px; padding: 10px 12px; font-family: Archivo, sans-serif; font-size: 14px; color: var(--orn-ink); outline: none; }
.orn-jd__dt-select:focus, .orn-jd__dt-input:focus { border-color: var(--orn-gold); }
.orn-jd__dt-excity-note { display: flex; align-items: flex-start; gap: 8px; margin-top: 10px; padding: 10px 12px; background: #fdf3e2; border: 1px solid #f3d9a4; border-left: 4px solid #d68910; border-radius: 8px; font-family: Archivo, sans-serif; font-size: 12.5px; line-height: 1.45; color: #5a3d0d; }
.orn-jd__dt-excity-note[hidden] { display: none; }
.orn-jd__dt-excity-note::before { content: "!"; flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: 50%; background: #d68910; color: #fff; font-family: Archivo, sans-serif; font-size: 11px; font-weight: 700; line-height: 1; margin-top: 1px; }

/* Change-buttons group in the price summary head (Change date + Change travellers). */
.orn-jd__dt-price-change-group { display: flex; gap: 8px; flex-wrap: wrap; }

.orn-jd__dt-ctrl-label { display: block; font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.14em; font-weight: 600; color: rgb(75, 75, 75); margin-bottom: 6px; }
.orn-jd__dt-select, .orn-jd__dt-input { width: 100%; background: var(--orn-cream-2); border: 1px solid var(--orn-line); border-radius: 10px; padding: 10px 12px; font-family: Archivo, sans-serif; font-size: 14px; color: var(--orn-ink); outline: none; }
.orn-jd__dt-select:focus, .orn-jd__dt-input:focus { border-color: var(--orn-gold); }
.orn-jd__dt-excity-note { display: flex; align-items: flex-start; gap: 8px; margin-top: 10px; padding: 10px 12px; background: #fdf3e2; border: 1px solid #f3d9a4; border-left: 4px solid #d68910; border-radius: 8px; font-family: Archivo, sans-serif; font-size: 12.5px; line-height: 1.45; color: #5a3d0d; }
.orn-jd__dt-excity-note[hidden] { display: none; }
.orn-jd__dt-excity-note::before { content: "!"; flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: 50%; background: #d68910; color: #fff; font-family: Archivo, sans-serif; font-size: 11px; font-weight: 700; line-height: 1; margin-top: 1px; }

/* Rooms-and-pax pill — trigger element that TFRoomPax binds the qtip to */
.orn-jd__dt-roomspax { position: relative; }
.orn-jd__dt-roomspax-trigger { display: flex; align-items: center; justify-content: space-between; gap: 10px; background: var(--orn-cream-2); border: 1px solid var(--orn-line); border-radius: 10px; padding: 10px 14px; cursor: pointer; font-family: Archivo, sans-serif; font-size: 14px; font-weight: 600; color: var(--orn-text); user-select: none; }
.orn-jd__dt-roomspax-trigger:hover { border-color: var(--orn-gold); }
.orn-jd__dt-roomspax-caret { color: var(--orn-mute); font-size: 14px; }

/* ── TFRoomPax popover (scoped) ─────────────────────────────────────
   The cockpit-shape widget renders into a qtip-managed popover with
   the classes below. We don't load travel_styles.css just for these
   ~10 selectors; instead we style them here in ORN's vocabulary. The
   selectors are global by necessity (qtip mounts the popover at
   <body> root, not inside our scoped container) but they're niche
   enough that there's no overlap with other tf-main pages.
   ─────────────────────────────────────────────────────────────────── */

/* Popover chrome — qtip mounts at <body> root; we force position +
   z-index across all .qtip variants so other tf-main page rules
   (some legacy pages set qtip { position: static } on print media)
   can't flatten it. qtip itself only flips aria-hidden on close — it
   relies on the host CSS to map that to display:none, so we map it
   here. Without this the popover stays visible even after Done. */
.qtip, .qtip-sunav3 { position: absolute !important; z-index: 100000 !important; }
.qtip[aria-hidden="true"] { display: none !important; }
.qtip-sunav3 { background: #fff; border: 1px solid var(--orn-line); border-radius: 14px; box-shadow: rgba(20, 35, 59, 0.16) 0 12px 36px; padding: 0; font-family: Archivo, sans-serif; color: var(--orn-ink); max-width: none; }
.qtip-sunav3 .qtip-content { padding: 0; }
.qtip-sunav3 .qtip-tip { display: none; }

/* Root container of rooms-and-pax content */
.rms-pax-inp-ctr { width: 300px; padding: 16px 18px 12px; box-sizing: border-box; background: #fff; border-radius: 14px; }

/* Each labelled row */
.rms-pax-inp-ctr .lbl { font-family: Archivo, sans-serif; font-weight: 600; font-size: 13px; color: var(--orn-ink); line-height: 1.3; }

/* Rooms row at the top — label left, compact counter right, same line */
.rms-inp-ctr { display: flex; align-items: center; justify-content: space-between; padding: 4px 0 12px; border-bottom: 1px solid var(--orn-line); margin-bottom: 12px; }
.rms-inp-ctr .lbl { font-weight: 700; font-size: 14px; color: var(--orn-text); }
.rms-inp-ctr .inp { flex: 0 0 auto; }

/* Per-room block stack */
.rms-inp-lst { display: flex; flex-direction: column; gap: 12px; }
.rms-inp-itm { padding-top: 12px; border-top: 1px dashed var(--orn-line); }
.rms-inp-itm:first-child { padding-top: 0; border-top: 0; }

/* Pax row inside each room — Adults | Children stacked label-over-counter */
.rm-pax { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 14px; }
.rm-pax-inp { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; }
.rm-pax-inp .lbl { font-size: 12px; font-weight: 600; color: var(--orn-ink-2); }
.rm-pax-inp .inp { flex: 0 0 auto; }

/* Child age dropdowns */
.rm-ch-ages { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.rm-ch-age select { background: var(--orn-cream-2); border: 1px solid var(--orn-line); border-radius: 8px; padding: 6px 10px; font-family: Archivo, sans-serif; font-size: 13px; color: var(--orn-ink); }

/* inputCounter widget — wraps the readonly <input> with - / + buttons */
.icounter-group, .icounter-group--sm { display: inline-flex; align-items: center; background: var(--orn-cream-2); border: 1px solid var(--orn-line); border-radius: 999px; overflow: hidden; height: 32px; }
.icounter-group input, .icounter-group--sm input { border: 0; background: transparent; width: 32px; height: 32px; text-align: center; font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 14px; color: var(--orn-text); outline: none; padding: 0; box-sizing: border-box; }
.icounter-btn { width: 32px; height: 32px; border: 0; background: transparent; color: var(--orn-navy); font-weight: 700; font-size: 16px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.icounter-btn:hover { color: var(--orn-gold); }
.icounter-btn-dsb, .icounter-btn-dsb:hover { color: var(--orn-mute); cursor: not-allowed; opacity: 0.4; }

/* Done row at the bottom */
.rms-close { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--orn-line); text-align: right; }
.rms-close a.ui-button { background: var(--orn-navy); color: #fff; border: 0; border-radius: 999px; padding: 8px 18px; font-family: Archivo, sans-serif; font-weight: 600; font-size: 13px; text-decoration: none; display: inline-block; }
.rms-close a.ui-button:hover { background: #1d3055; }

/* Validation message slot used by TFRoomPax.isValid */
.rms-err--msg { color: #b8392f; font-size: 12px; margin-top: 6px; text-align: left; }
.orn-jd__dt-agent-row { display: flex; gap: 8px; align-items: center; }
.orn-jd__dt-chip-clear { background: var(--orn-cream-2); border: 1px solid var(--orn-line); width: 32px; height: 32px; border-radius: 50%; cursor: pointer; color: var(--orn-ink); font-size: 18px; }

/* Promoted dates eyebrow + list */
.orn-jd__dt-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.14em; font-weight: 600; color: rgb(154, 138, 110); margin: 18px 0 12px; }

/* Month pills */
.orn-jd__dt-mnths { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.orn-jd__dt-mnth { background: #fff; border: 1px solid #E4DDCD; border-radius: 999px; padding: 7px 14px; font-family: Archivo, sans-serif; font-size: 13px; font-weight: 600; color: #3A4654; cursor: pointer; user-select: none; }
.orn-jd__dt-mnth.is-active { background: #14233B; color: #F4EFE3; border-color: #14233B; }

/* Rows + empty / loading */
.orn-jd__dt-loading, .orn-jd__dt-empty { background: #fff; border: 1px solid var(--orn-line); border-radius: 14px; padding: 24px; text-align: center; color: var(--orn-ink-2); font-size: 14px; font-style: italic; }
.orn-jd__dt-empty-cta { display: block; margin: 10px auto 0; background: none; border: none; padding: 4px 8px; font-family: var(--orn-font-body); font-size: 13px; font-weight: 600; color: var(--orn-gold-3, #c9a45c); cursor: pointer; text-decoration: underline; text-underline-offset: 3px; font-style: normal; }
.orn-jd__dt-empty-cta:hover { color: var(--orn-navy); }
.orn-jd__dt-rows { display: flex; flex-direction: column; gap: 10px; }
.orn-jd__dt-row { background: #fff; border: 1px solid var(--orn-line); border-radius: 14px; padding: 16px 20px; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) auto; gap: 18px; align-items: center; }
.orn-jd__dt-row.is-disabled { opacity: 0.5; }

.orn-jd__dt-row-range { font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 18px; color: rgb(20, 35, 59); line-height: 1.2; }
.orn-jd__dt-row-ttl { margin-top: 8px; display: inline-flex; align-items: center; gap: 6px; font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.08em; font-weight: 700; color: rgb(90, 101, 115); background: rgb(245, 242, 235); border: 1px solid rgb(228, 222, 210); padding: 4px 10px 4px 8px; border-radius: 999px; text-transform: uppercase; line-height: 1; }
.orn-jd__dt-row-ttl::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: 0.75; flex: 0 0 auto; }
/* Status pill tones — colour-coded by the cockpit's `cls` field.
   ornholidays-journey.js normalizes the value (lowercase + collapse
   spaces/underscores to hyphen) before applying, so the cockpit's
   "FAST FILLING" / "selling_well" / "Sold Out" all land on the
   correct selector below.
   ----------------------------------------------------------- */
/* ORN brand status colours — locked values:
     available     rgb(46, 158, 99)   green
     fast filling  rgb(235, 185, 74)  amber
     last few seats rgb(212, 90, 71)  red
   Selling-well + launch derived from the same family; sold-out / waitlist
   stay neutral so they read as terminal states. */
.orn-jd__dt-row-cls--launch, .orn-jd__dt-row-cls--early, .orn-jd__dt-row-cls--early-seats, .orn-jd__dt-row-cls--launch-layer { background: rgba(46, 158, 99, 0.10); border-color: rgba(46, 158, 99, 0.30); color: rgb(46, 158, 99); }
.orn-jd__dt-row-cls--available, .orn-jd__dt-row-cls--avl, .orn-jd__dt-row-cls--avail, .orn-jd__dt-row-cls--open, .orn-jd__dt-row-cls--selling, .orn-jd__dt-row-cls--selling-well, .orn-jd__dt-row-cls--selling-fast { background: rgba(46, 158, 99, 0.12); border-color: rgba(46, 158, 99, 0.32); color: rgb(46, 158, 99); }
.orn-jd__dt-row-cls--fast-filling, .orn-jd__dt-row-cls--filling-fast, .orn-jd__dt-row-cls--filling, .orn-jd__dt-row-cls--few, .orn-jd__dt-row-cls--few-seats, .orn-jd__dt-row-cls--few-left, .orn-jd__dt-row-cls--scarcity, .orn-jd__dt-row-cls--scarcity-layer { background: rgba(235, 185, 74, 0.16); border-color: rgba(235, 185, 74, 0.40); color: rgb(184, 138, 32); }
.orn-jd__dt-row-cls--low, .orn-jd__dt-row-cls--low-seats, .orn-jd__dt-row-cls--last, .orn-jd__dt-row-cls--final, .orn-jd__dt-row-cls--final-seats, .orn-jd__dt-row-cls--last-seats, .orn-jd__dt-row-cls--almost-full { background: rgba(212, 90, 71, 0.10); border-color: rgba(212, 90, 71, 0.36); color: rgb(190, 63, 57); }
.orn-jd__dt-row-cls--low::before, .orn-jd__dt-row-cls--low-seats::before, .orn-jd__dt-row-cls--last::before, .orn-jd__dt-row-cls--final::before, .orn-jd__dt-row-cls--final-seats::before, .orn-jd__dt-row-cls--last-seats::before, .orn-jd__dt-row-cls--almost-full::before { animation: orn-jd-dot-pulse 1.6s ease-in-out infinite; opacity: 1; }
@keyframes orn-jd-dot-pulse {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.35); opacity: 0.55; }
}
.orn-jd__dt-row-cls--sld, .orn-jd__dt-row-cls--sold-out, .orn-jd__dt-row-cls--soldout, .orn-jd__dt-row-cls--closed { background: rgb(232, 232, 232); border-color: rgb(208, 208, 208); color: rgb(95, 95, 95); }
.orn-jd__dt-row-cls--waitlist { background: rgb(237, 230, 245); border-color: rgba(106, 75, 158, 0.32); color: rgb(106, 75, 158); }

.orn-jd__dt-row-price { text-align: right; }
.orn-jd__dt-row-strike { color: var(--orn-mute); text-decoration: line-through; font-size: 12px; min-height: 14px; }
.orn-jd__dt-row-final { font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 23px; color: rgb(20, 35, 59); line-height: 1.1; }
.orn-jd__dt-row-cap { font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.08em; color: rgb(154, 138, 110); margin-bottom: 4px; }
.orn-jd__dt-row-cta { background: var(--color-primary, var(--orn-text)); color: #fff; border: 0; border-radius: var(--button-radius-primary); padding: 12px 18px; font-family: Archivo, sans-serif; font-weight: 700; font-size: 14px; cursor: pointer; white-space: nowrap; }
.orn-jd__dt-row-cta:hover { background: var(--color-primary-light, rgb(0, 0, 0)); }
.orn-jd__dt-row-cta:disabled { background: #c9c2af; color: #6f6b5e; cursor: not-allowed; }
.orn-jd__dt-more { align-self: center; color: var(--orn-gold-3); font-family: Archivo, sans-serif; font-weight: 600; font-size: 14px; text-decoration: none; margin-top: 6px; }
.orn-jd__dt-more:hover { text-decoration: underline; }

@media (max-width: 720px) {
    .orn-jd__dt-row { grid-template-columns: 1fr; gap: 12px; }
    .orn-jd__dt-row-price { text-align: left; }
    .orn-jd__dt-row-cta { width: 100%; }
}

.orn-jd__dt-row.is-selected { border-color: var(--orn-gold); box-shadow: rgba(201, 164, 92, 0.2) 0 0 0 2px inset; }

/* Price summary panel — paper-white card on the customer surface,
   matching the rest of the ORN journey detail. Gold eyebrow, navy
   display type, hairline cream dividers, navy total in JetBrains
   Mono, gold-pill Save-as-Quote CTA. */
.orn-jd__dt-price { margin-top: 16px; }
.orn-jd__dt-price-loading { background: var(--orn-paper); color: var(--orn-ink-2); border: 1px solid var(--orn-line); border-radius: 16px; padding: 18px; text-align: center; font-style: italic; }
.orn-jd__dt-price-card { background: #fff; border: 1px solid var(--orn-line); border-radius: 20px; padding: 26px 28px; color: var(--orn-ink); box-shadow: rgba(20, 35, 59, 0.06) 0 8px 24px; }

.orn-jd__dt-price-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 16px; }
.orn-jd__dt-price-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: clamp(11px, 3vw, 12px); letter-spacing: 0.14em; font-weight: 700; color: rgb(242, 13, 22); margin-bottom: 6px; }
.orn-jd__dt-price-meta { font-family: Archivo, sans-serif; font-weight: 700; font-size: 18px; color: var(--orn-text); line-height: 1.25; }
.orn-jd__dt-price-date { font-family: Archivo, sans-serif; font-weight: 800; font-size: 18px; color: var(--orn-text); line-height: 1.2; }
.orn-jd__dt-price-sub { font-family: Inter, sans-serif; font-size: 14px; color: var(--orn-ink-2, #5a6472); margin-top: 4px; }
.orn-jd__seats-pill { display: inline-block; margin-top: 8px; padding: 3px 10px; border-radius: 999px; font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; letter-spacing: 0.04em; }
.orn-jd__seats-pill--urgent { background: #E4002B; color: #fff; }
.orn-jd__seats-pill--warn { background: #E88F00; color: #fff; }
.orn-jd__dt-price-cal { display: inline-flex; align-items: center; margin-right: 6px; color: var(--orn-navy, #14233b); vertical-align: -3px; }
.orn-jd__dt-price-cal svg { display: block; }
.orn-jd__dt-price-change { background: rgb(245, 245, 245); color: var(--orn-text); border: 1px solid var(--orn-line); border-radius: 999px; padding: 8px 16px; font-family: Archivo, sans-serif; font-size: 13px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.orn-jd__dt-price-change:hover { border-color: var(--orn-gold); background: rgba(201, 164, 92, 0.08); }
/* Single "Edit" button — mobile only (desktop keeps the two Change buttons). */
.orn-jd__dt-price-edit { display: none; background: rgb(245, 245, 245); color: var(--orn-text); border: 1px solid var(--orn-line); border-radius: 999px; padding: 8px 20px; font-family: Archivo, sans-serif; font-size: 13px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.orn-jd__dt-price-edit:hover { border-color: var(--orn-gold); background: rgba(201, 164, 92, 0.08); }
@media (max-width: 640px) {
    /* On phones the design collapses the two Change buttons into one "Edit"
       button sitting top-right of the date/room/pax summary. Keep the header a
       row so Edit stays on the right; hide the Change group, show Edit. */
    .orn-jd__dt-price-head { flex-direction: row; align-items: flex-start; gap: 12px; }
    .orn-jd__dt-price-change-group { display: none; }
    .orn-jd__dt-price-edit { display: inline-flex; align-items: center; flex: 0 0 auto; }
}

/* Receipt-stitch divider between the header (date/travellers/seats) and the
   price body — two page-bg "punched" circles + a dashed line, same trick the
   design uses so the notches read as cutouts rather than solid dots. */
/* Plain inset divider between the header (date/travellers/seats) and the
   price body — no punch-hole notches in this revision, just a hairline. */
.orn-jd__dt-price-stitch { position: relative; height: 1px; margin: 20px -28px 0; }
.orn-jd__dt-price-stitch-notch { display: none; }
.orn-jd__dt-price-stitch-line { position: absolute; left: 22px; right: 22px; top: 0; border-top: 1px solid rgb(219, 211, 194); }

.orn-jd__dt-price-body { padding-top: 26px; }
.orn-jd__dt-price-hero-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: rgb(242, 13, 22); margin-bottom: 8px; }
.orn-jd__dt-price-hero-amt { font-family: Archivo, sans-serif; font-weight: 700; letter-spacing: -0.02em; font-size: clamp(32px, 8vw, 48px); line-height: 1.02; color: rgb(27, 36, 55); margin-bottom: 8px; }
.orn-jd__dt-price-hero-sub { font-family: Inter, sans-serif; font-size: 13.5px; color: rgb(58, 70, 84); margin-bottom: 14px; }

.orn-jd__dt-price-lines { border-top: 1px solid var(--orn-line); padding-top: 14px; margin-top: 10px; margin-bottom: 14px; display: flex; flex-direction: column; gap: 10px; }
.orn-jd__dt-price-card:not(.is-break-open) .orn-jd__dt-price-lines { display: none; }
.orn-jd__dt-price-line { display: flex; justify-content: space-between; gap: 12px; }
.orn-jd__dt-price-line-l { color: rgb(58, 70, 84); font-size: 14.5px; }
.orn-jd__dt-price-line-v { font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 14.5px; color: var(--orn-text); }

/* Custom hover/focus tooltip — replaces relying on the native `title`
   attribute, which is invisible on touch and easy to miss on desktop.
   tabindex="0" on the wrapper makes it reachable by keyboard Tab and by a
   tap on most mobile browsers (tap focuses the element). */
.orn-jd__tip { position: relative; display: inline-flex; align-items: center; vertical-align: -2px; margin-left: 2px; cursor: help; }
.orn-jd__tip-icon { width: 14px; height: 14px; color: var(--orn-ink-2, #7c8797); }
.orn-jd__tip-bubble { position: absolute; left: 50%; bottom: calc(100% + 8px); transform: translateX(-50%) translateY(4px); width: max-content; max-width: 220px; background: var(--orn-ink, #14233b); color: #fff; font-family: Inter, sans-serif; font-size: 12px; font-weight: 500; line-height: 1.4; padding: 8px 10px; border-radius: 8px; box-shadow: 0 8px 20px rgba(20, 35, 59, 0.25); opacity: 0; visibility: hidden; transition: opacity 0.15s ease, transform 0.15s ease; z-index: 5; pointer-events: none; }
.orn-jd__tip-bubble::after { content: ""; position: absolute; top: 100%; left: 50%; transform: translateX(-50%); border: 5px solid transparent; border-top-color: var(--orn-ink, #14233b); }
.orn-jd__tip:hover .orn-jd__tip-bubble,
.orn-jd__tip:focus .orn-jd__tip-bubble,
.orn-jd__tip:focus-visible .orn-jd__tip-bubble { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }

.orn-jd__dt-price-total { border-top: 1px dashed var(--orn-line); padding-top: 14px; display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 6px; }
.orn-jd__dt-price-terms-row { display: flex; justify-content: flex-end; margin-bottom: 14px; }
.orn-jd__dt-price-terms-link { font-family: Inter, sans-serif; font-size: 13px; color: var(--orn-navy); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.orn-jd__dt-price-terms-link:hover { color: var(--orn-accent, #1f4e8c); }
.orn-jd__dt-price-total-l { font-family: Archivo, sans-serif; font-weight: 600; font-size: 18px; color: rgb(27, 36, 55); }
.orn-jd__dt-price-total-v { font-family: Archivo, sans-serif; font-weight: 600; letter-spacing: -0.01em; font-size: clamp(20px, 5vw, 24px); color: var(--orn-ink); }

/* "View/Hide price breakdown" toggle — sits between the hero total and the
   collapsible per-adult/TCS/rewards detail. Text + chevron both flip off the
   card's is-break-open class (open by default). */
.orn-jd__dt-price-breaktoggle { display: flex; align-items: center; gap: 6px; padding: 4px 0; margin-bottom: 2px; background: none; border: 0; font-family: Archivo, sans-serif; font-size: 13.5px; font-weight: 700; color: var(--orn-ink); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.orn-jd__dt-price-breaktoggle-chev { width: 15px; height: 15px; transition: transform 0.2s ease; }
.orn-jd__dt-price-card.is-break-open .orn-jd__dt-price-breaktoggle-chev { transform: rotate(180deg); }
.orn-jd__dt-price-breaktoggle-txt--show { display: none; }
.orn-jd__dt-price-card:not(.is-break-open) .orn-jd__dt-price-breaktoggle-txt--hide { display: none; }
.orn-jd__dt-price-card:not(.is-break-open) .orn-jd__dt-price-breaktoggle-txt--show { display: inline; }

.orn-jd__dt-price-cashrow { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
/* Redeem/earn are info callouts, not actions — subtle tinted badges (not solid
   pills) so they don't read as CTAs next to the Select-seats button. Red tint =
   redeem, green tint = earn. */
.orn-jd__dt-price-redeem, .orn-jd__dt-price-earn { display: inline-block; width: fit-content; padding: 5px 11px; border-radius: 999px; font-size: 12.5px; font-weight: 600; line-height: 1.25; border: 1px solid transparent; }
.orn-jd__dt-price-cashrow > .orn-jd__dt-price-redeem, .orn-jd__dt-price-cashrow > .orn-jd__dt-price-earn { margin: 0; }
.orn-jd__dt-price-redeem { background: rgba(242, 13, 22, 0.09); color: rgb(201, 10, 18); border-color: rgba(242, 13, 22, 0.28); }
.orn-jd__dt-price-earn { background: var(--orn-navy); color: #fff; border-color: var(--orn-navy); }
.orn-jd__dt-price-line--rewards .orn-jd__dt-price-line-l,
.orn-jd__dt-price-line--rewards .orn-jd__dt-price-line-v { color: var(--orn-green); }

/* CTA row beneath the price total — right-aligned Select-seats button
   using the same .orn-jd__dt-row-cta class as the per-row CTAs so the
   pill chrome stays consistent across the panel. When the user is an
   agent we also render a "Save as Quote" secondary CTA to the left. */
.orn-jd__dt-price-cta-row { display: flex; flex-direction: column; align-items: center; gap: 12px; }
.orn-jd__dt-price-cta-note { font-family: Archivo, sans-serif; font-size: 14px; line-height: 1.45; color: rgb(242, 13, 22); text-align: center; max-width: 640px; }
/* Choose-seats CTA — wider pill, softer corners, no trailing arrow (matches
   the current design). Scoped so the shared .orn-jd__dt-row-cta base (date
   row Select buttons, Save-as-Quote secondary) is untouched elsewhere. */
.orn-jd__dt-price-cta-row .orn-jd__dt-row-cta { width: 100%; max-width: 280px; border-radius: 8px; padding: 14px clamp(22px, 6vw, 30px); font-weight: 600; font-size: 16px; }
.orn-jd__dt-price-cta-actions { display: flex; justify-content: center; align-items: center; gap: 10px; }
.orn-jd__dt-price-cta--secondary { background: transparent !important; color: var(--orn-text) !important; border: 1px solid var(--orn-line) !important; }
.orn-jd__dt-price-cta--secondary:hover { border-color: var(--orn-gold) !important; background: rgba(201, 164, 92, 0.08) !important; }
@media (max-width: 640px) {
    /* Tone down the oversized price-summary type on phones. */
    .orn-jd__dt-price-meta { font-size: 15px; }
    .orn-jd__dt-price-lines { gap: 15px; }
    .orn-jd__dt-price-line-l, .orn-jd__dt-price-line-v { font-size: 13.5px; }
    /* Tidy the action row: two equal-width buttons filling the width instead
       of uneven right-aligned ones. The redeem/earn chips (in .cashrow) become
       an even pair above them. */
    .orn-jd__dt-price-cta-row { align-items: stretch; gap: 10px; }
    .orn-jd__dt-price-cta-note { font-size: 13px; margin-bottom: 8px; }
    .orn-jd__dt-price-cta-actions { display: flex; gap: 10px; }
    .orn-jd__dt-price-cta-actions > * { flex: 1 1 0; }
    /* Stack the redeem/earn chips full-width so they align to the card edges
       (like the rows above/below) and never wrap — natural width left them
       compact with an unbalanced gap on the right, and equal-width forced long
       labels like "Redeem upto ₹ 2,131" to wrap. */
    /* Compact info badges side by side, left-aligned, with clear gaps above and
       below (separating them from the total and the CTA buttons). Tinted (not
       solid) so they read as info, not actions. */
    .orn-jd__dt-price-cashrow { gap: 8px; margin-top: 18px; margin-bottom: 18px; }
    .orn-jd__dt-price-cashrow > .orn-jd__dt-price-redeem,
    .orn-jd__dt-price-cashrow > .orn-jd__dt-price-earn { flex: 0 0 auto; width: auto; white-space: nowrap; }
}

/* ── ORN Save-Proposal modal (clean, native) ─────────────────────
   Replaces the legacy /package/load-package-quote-save fragment.
   Our own DOM + form, posts straight to REPRICE_FIXED_DATE_PACKAGE
   with saveAndEmail=true. No tf-main globals required.
   ──────────────────────────────────────────────────────────────── */
.orn-jd__sq { position: fixed; inset: 0; z-index: 50000; display: flex; align-items: center; justify-content: center; padding: 24px; }
.orn-jd__sq-backdrop { position: absolute; inset: 0; background: rgba(10, 20, 35, 0.55); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); }
.orn-jd__sq-card { position: relative; z-index: 1; width: 800px; max-width: 100%; max-height: calc(100vh - 48px); overflow-y: auto; background: #fff; border: 1px solid var(--orn-line); border-radius: 20px; padding: 32px 36px; box-shadow: 0 24px 60px rgba(20, 35, 59, 0.25); }
.orn-jd__sq-close { position: absolute; top: 14px; right: 14px; width: 32px; height: 32px; border-radius: 50%; background: var(--orn-cream-2); color: var(--orn-ink); border: 1px solid var(--orn-line); font-size: 18px; cursor: pointer; line-height: 1; }
.orn-jd__sq-close:hover { background: rgba(201, 164, 92, 0.12); }

.orn-jd__sq-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.22em; color: var(--orn-text); margin-bottom: 6px; }
.orn-jd__sq-title { font-family: Archivo, sans-serif; font-weight: 800; font-size: 24px; color: var(--orn-text); margin: 0 0 6px; line-height: 1.2; }
.orn-jd__sq-lede { color: var(--orn-ink-2); font-size: 14.5px; line-height: 1.55; margin: 0 0 22px; }

.orn-jd__sq-form { display: flex; flex-direction: column; gap: 18px; }
.orn-jd__sq-fs { border: 1px solid var(--orn-line); border-radius: 14px; background: var(--orn-cream-2); padding: 22px 22px 18px; position: relative; margin: 0; }
.orn-jd__sq-legend { position: absolute; top: -10px; left: 16px; padding: 2px 10px; background: #fff; border: 1px solid var(--orn-line); border-radius: 6px; font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-gold-3); font-weight: 600; }
.orn-jd__sq-row { display: grid; grid-template-columns: 200px 1fr; gap: 14px 22px; align-items: center; padding: 10px 0; }
.orn-jd__sq-row + .orn-jd__sq-row { border-top: 1px dashed var(--orn-line); }
.orn-jd__sq-label { color: var(--orn-ink); font-size: 14px; font-weight: 600; }
.orn-jd__sq-label em { color: #b8392f; font-style: normal; margin-left: 2px; }
.orn-jd__sq-input { background: #fff; border: 1px solid var(--orn-line); border-radius: 8px; padding: 10px 12px; font-family: inherit; font-size: 14px; color: var(--orn-ink); outline: none; width: 100%; box-sizing: border-box; }
.orn-jd__sq-input:focus { border-color: var(--orn-gold); }

.orn-jd__sq-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.orn-jd__sq-pill { background: #fff; border: 1px solid var(--orn-line); border-radius: 999px; padding: 8px 14px; font-family: inherit; font-size: 13px; font-weight: 600; color: var(--orn-ink); cursor: pointer; transition: border-color 0.15s, background 0.15s, color 0.15s; }
.orn-jd__sq-pill:hover { border-color: var(--orn-gold); }
.orn-jd__sq-pill.is-active { background: var(--orn-navy); color: #fff; border-color: var(--orn-navy); }

.orn-jd__sq-err { background: rgba(184, 57, 47, 0.08); border: 1px solid rgba(184, 57, 47, 0.30); color: #b8392f; border-radius: 10px; padding: 10px 14px; font-size: 13.5px; }

.orn-jd__sq-actions { display: flex; justify-content: flex-end; align-items: center; gap: 12px; padding-top: 8px; }
.orn-jd__sq-cancel { background: transparent; border: 0; color: var(--orn-ink-2); font-family: Archivo, sans-serif; font-weight: 600; font-size: 14px; padding: 12px 18px; cursor: pointer; text-decoration: none; }
.orn-jd__sq-cancel:hover { color: var(--orn-navy); }
.orn-jd__sq-submit { background: var(--orn-text); color: #fff; border: 0; border-radius: 999px; padding: 12px 24px; font-family: Archivo, sans-serif; font-weight: 700; font-size: 14px; cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; }
.orn-jd__sq-submit:hover { background: #1d3055; }
.orn-jd__sq-submit:disabled { background: #c9c2af; cursor: progress; }

/* Saved confirmation panel inside the modal — everything centered. */
.orn-jd__sq-saved { text-align: center; padding: 24px 0 4px; display: flex; flex-direction: column; align-items: center; }
.orn-jd__sq-saved-icon { width: 64px; height: 64px; border-radius: 50%; background: rgb(46, 158, 99); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 32px; font-weight: 700; margin: 0 auto 16px; }
.orn-jd__sq-saved .orn-jd__sq-eyebrow { margin-bottom: 8px; text-align: center; }
.orn-jd__sq-saved .orn-jd__sq-title { text-align: center; margin: 0 0 14px; }
.orn-jd__sq-saved-lede { color: var(--orn-ink-2); font-size: 15px; line-height: 1.55; max-width: 520px; margin: 0 auto 24px; text-align: center; }
.orn-jd__sq-saved .orn-jd__sq-actions { justify-content: center; padding-top: 4px; }

@media (max-width: 640px) {
    /* Full-screen Save Proposal modal on phones — fill the viewport like the
       rest of the mobile booking flow (no centred card, no backdrop gap). */
    .orn-jd__sq { padding: 0; }
    .orn-jd__sq-card {
        width: 100%;
        max-width: 100%;
        height: 100vh;
        height: 100dvh;
        max-height: none;
        border: none;
        border-radius: 0;
        padding: 24px 18px calc(24px + env(safe-area-inset-bottom, 0px));
    }
    .orn-jd__sq-row { grid-template-columns: 1fr; gap: 8px; padding: 12px 0; }
}

.orn-jd__dt-price-card--unavl { border-color: #f5c6c6; background: #fff5f5; }
.orn-jd__dt-price-card--unavl .orn-jd__dt-price-eyebrow { color: #b03030; }
.orn-jd__dt-price-card--unavl .orn-jd__dt-price-unavl { color: #8b1e1e; font-style: normal; font-weight: 500; line-height: 1.4; margin-top: 6px; }
.orn-jd__dt-price-unavl-ctas { display: flex; align-items: center; gap: 16px; margin-top: 10px; flex-wrap: wrap; }
.orn-jd__dt-price-unavl-cta { background: none; border: none; padding: 4px 0; font-family: var(--orn-font-body); font-size: 13px; font-weight: 700; color: #b03030; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.orn-jd__dt-price-unavl-cta:hover { color: #7a1e1e; }
.orn-jd__dt-price-unavl-cta + .orn-jd__dt-price-unavl-cta { border-left: 1px solid #e3b3b3; padding-left: 16px; }
.orn-jd__dt-price-unavl-actions { display: flex; align-items: center; gap: 10px; margin-top: 14px; padding-top: 12px; border-top: 1px solid #f0d3d3; font-size: 13px; }
.orn-jd__dt-price-unavl-link { color: #b03030; font-weight: 600; text-decoration: underline; cursor: pointer; }
.orn-jd__dt-price-unavl-link:hover { color: #8b1e1e; }
.orn-jd__dt-price-unavl-sep { color: #b98484; }

/* When a date is picked + repriced, hide the controls / promoted-dates
   eyebrow / dates list so the price summary owns the top of the panel.
   The "Change date" button on the summary removes this class. */
.orn-jd__dt-controls, .orn-jd__dt-eyebrow, .orn-jd__dt-list { transition: opacity 0.15s ease; }
#ornJdDatesBody.is-priced .orn-jd__dt-controls, #ornJdDatesBody.is-priced .orn-jd__dt-eyebrow, #ornJdDatesBody.is-priced .orn-jd__dt-list { display: none; }
#ornJdDatesBody.is-priced .orn-jd__dt-price { margin-top: 0; }

/* Optional add-ons block — 3-across grid of pickable optional cards */
.orn-jd__dt-addons { margin-top: 28px; }
.orn-jd__dt-visa-guarantee { margin-top: 16px; }
.orn-jd__dt-visa-guarantee-grid { display: grid; grid-template-columns: 1fr; gap: 16px; }
.orn-jd__dt-visa-guarantee + .orn-jd__dt-addons { margin-top: 28px; }
/* Price-summary visa card reuses the shared .orn-jd__visa-promise component. */

/* ── Talk to ORN — mobile floating pill + bottom sheet (hidden on desktop,
   which keeps the inline Talk-to-Expert card). ── */
.orn-jd__talk { display: none; }
@keyframes orn-sheet-up { from { transform: translateY(100%); } to { transform: translateY(0); } }
@media (max-width: 640px) {
    /* Inline Talk-to-Expert card is replaced by the pill on the price step. */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__tte--inline { display: none; }

    .orn-jd__talk { display: block; }
    .orn-jd__talk-pill {
        position: fixed; right: 16px; bottom: calc(128px + env(safe-area-inset-bottom, 0px));
        z-index: 1250; display: inline-flex; align-items: center; gap: 8px;
        padding: 11px 16px 11px 12px; border-radius: 999px; background: rgb(21, 21, 21);
        border: none; box-shadow: 0 10px 24px rgba(0, 0, 0, 0.28); cursor: pointer;
    }
    .orn-jd__talk-pill:active { transform: scale(0.96); }
    .orn-jd__talk-pill-ic { width: 24px; height: 24px; border-radius: 12px; background: rgba(242, 13, 22, 0.2); display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
    .orn-jd__talk-pill-lbl { font-family: Archivo, sans-serif; font-weight: 700; font-size: 13px; color: #fff; white-space: nowrap; }

    .orn-jd__talk-overlay { position: fixed; inset: 0; z-index: 1260; background: rgba(0, 0, 0, 0.45); }
    .orn-jd__talk-sheet {
        position: fixed; left: 0; right: 0; bottom: 0; z-index: 1270;
        background: rgb(21, 21, 21); border-radius: 22px 22px 0 0;
        padding: 26px 22px calc(26px + env(safe-area-inset-bottom, 0px));
        box-shadow: 0 -12px 36px rgba(0, 0, 0, 0.4); animation: orn-sheet-up 0.25s ease;
    }
    .orn-jd__talk-grip { width: 40px; height: 4px; border-radius: 2px; background: rgba(255, 255, 255, 0.25); margin: 0 auto 20px; }
    .orn-jd__talk-eyebrow { display: block; font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 11px; letter-spacing: 1.6px; color: rgb(242, 13, 22); text-transform: uppercase; margin-bottom: 8px; }
    .orn-jd__talk-title { display: block; font-family: Archivo, sans-serif; font-weight: 500; font-size: 26px; line-height: 1.2; color: #fff; margin-bottom: 14px; }
    .orn-jd__talk-title em { font-style: italic; }
    .orn-jd__talk-lede { margin: 0 0 20px; font-family: Archivo, sans-serif; font-weight: 400; font-size: 14px; line-height: 1.55; color: rgb(182, 193, 211); }
    .orn-jd__talk-btn { width: 100%; height: 44px; border-radius: 10px; background: rgb(242, 13, 22); border: none; color: #fff; font-size: 14px; font-weight: 600; font-family: Archivo, sans-serif; cursor: pointer; }
    .orn-jd__talk-btn:active { transform: scale(0.99); }
    .orn-jd__talk-thanks:not([hidden]) { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 14px; padding: 6px 4px 4px; }
    .orn-jd__talk-check { width: 52px; height: 52px; border-radius: 26px; background: rgba(242, 13, 22, 0.18); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
    .orn-jd__talk-thanks-txt { font-family: Archivo, sans-serif; font-weight: 500; font-size: 22px; color: #fff; line-height: 1.25; }
    .orn-jd__talk-thanks .orn-jd__talk-btn { margin-top: 20px; }
}
.orn-jd__dt-addons-head { margin-bottom: 18px; }
.orn-jd__dt-addons-title { font-family: var(--orn-font-display); font-weight: 800; font-size: 24px; color: var(--orn-text); margin: 0 0 6px; line-height: 1.2; }
.orn-jd__dt-addons-lede { color: var(--orn-ink-2); font-size: 14.5px; line-height: 1.5; margin: 0; max-width: 720px; }

.orn-jd__dt-addons-daygroup { margin-bottom: 22px; }
.orn-jd__dt-addons-daygroup:last-child { margin-bottom: 0; }
.orn-jd__dt-addons-dayhead { font-family: 'JetBrains Mono', monospace; font-size: 11.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-text); margin: 0 0 12px; }
.orn-jd__dt-addons-grid { display: grid; grid-template-columns: 1fr; gap: 16px; }

.orn-jd__dt-addon { position: relative; display: flex; align-items: flex-start; gap: 16px; background: #fff; border: 1px solid var(--orn-cream-3, #e6dfc9); border-radius: 14px; padding: 16px 20px; margin-bottom: 10px; cursor: pointer; transition: background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease; }
.orn-jd__dt-addon:hover { border-color: rgba(201, 164, 92, 0.55); box-shadow: rgba(20, 35, 59, 0.06) 0 6px 18px; }
.orn-jd__dt-addon.is-checked { background: rgb(253, 243, 242); border: 1.5px solid rgb(242, 13, 22); }
.orn-jd__dt-addon.is-mandatory { cursor: not-allowed; background: rgb(240, 249, 255); border: 1.5px solid rgb(38, 132, 255); }
.orn-jd__dt-addon.is-mandatory .orn-jd__dt-addon-mark { background: rgb(38, 132, 255); }
.orn-jd__dt-addon.is-mandatory:hover { border-color: rgb(38, 132, 255); box-shadow: none; }
.orn-jd__dt-addon.is-mandatory .orn-jd__dt-addon-title::after { content: 'Mandatory included'; display: inline-block; margin-left: 8px; padding: 2px 8px; border-radius: 999px; background: rgb(38, 132, 255); color: #fff; font-size: 10px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; vertical-align: middle; }
@media (max-width: 640px) {
    .orn-jd__dt-addon.is-mandatory .orn-jd__dt-addon-title::after { margin-left: 0; margin-top: 8px; }
}
.orn-jd__dt-addon-chk { position: absolute; opacity: 0; pointer-events: none; }

/* Left-side icon mark: white "+" on a filled brand-red square when
   unselected (matches the add-on design); white tick on the same red
   square when selected. Both nested inside .orn-jd__dt-addon-mark;
   visibility toggles via .is-checked on the parent. */
.orn-jd__dt-addon-mark { flex: 0 0 auto; width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; background: var(--color-primary, rgb(242, 13, 22)); color: #fff; border-radius: 12px; font-family: 'JetBrains Mono', monospace; font-size: 24px; font-weight: 700; line-height: 1; transition: background 0.15s ease, color 0.15s ease; }
.orn-jd__dt-addon-mark-tick { display: none; font-size: 20px; }
.orn-jd__dt-addon.is-checked .orn-jd__dt-addon-mark-plus { display: none; }
.orn-jd__dt-addon.is-checked .orn-jd__dt-addon-mark-tick { display: inline; }

.orn-jd__dt-addon-body { flex: 1 1 auto; display: flex; flex-direction: column; min-width: 0; gap: 4px; }
.orn-jd__dt-addon-priceblock { flex: 0 0 auto; align-self: center; text-align: right; }

.orn-jd__dt-addon-chip { display: inline-flex; align-self: flex-start; align-items: center; background: rgba(20, 35, 59, 0.08); color: var(--orn-navy); font-family: 'JetBrains Mono', monospace; font-size: 10.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; padding: 4px 10px; border-radius: 999px; margin-bottom: 10px; }
.orn-jd__dt-addon-titlerow { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.orn-jd__dt-addon-title { flex: 1 1 0; min-width: 0; font-family: Archivo, sans-serif; font-weight: 700; color: var(--orn-text); font-size: 15px; line-height: 1.25; }
.orn-jd__dt-addon-unittype { flex: 0 0 auto; display: inline-flex; align-items: center; padding: 4px 10px; border-radius: 999px; font-family: 'JetBrains Mono', monospace; font-size: 10.5px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; white-space: nowrap; background: rgba(20, 35, 59, 0.08); color: var(--orn-navy); }
.orn-jd__dt-addon-unittype--visa { background: #E7EEF9; color: #1E4C8A; }
.orn-jd__dt-addon-unittype--sightseeing { background: #E9F5EE; color: #1F7A3D; }
.orn-jd__dt-addon-unittype--transfers { background: #FFF4E0; color: #B36A00; }
.orn-jd__dt-addon-unittype--travel_insurance { background: #F3E9F8; color: #6B2E8E; }
.orn-jd__dt-addon-unittype--travel_pass { background: #E7EEF9; color: #1E4C8A; }
.orn-jd__dt-addon-unittype--attraction_ticket { background: #FFE9E6; color: #B4432B; }
.orn-jd__dt-addon-unittype--event_ticket { background: #FFE9E6; color: #B4432B; }
.orn-jd__dt-addon-unittype--shopping_coupons { background: #FFF7D6; color: #8A6C1A; }
.orn-jd__dt-addon-unittype--stay_extra_service { background: #E9F0FF; color: #2A4A9E; }
.orn-jd__dt-addon-metarow { display: flex; align-items: center; gap: 8px; margin-top: 4px; font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: #1F7A3D; }
.orn-jd__dt-addon-duration { display: inline-block; font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; letter-spacing: 0.06em; color: rgb(110, 110, 110); background: transparent; padding: 0; border-radius: 0; white-space: nowrap; text-transform: uppercase; }
.orn-jd__dt-addon-desc { color: var(--orn-ink-2); font-size: 13.5px; line-height: 1.5; margin-top: 2px; }
.orn-jd__dt-addon-desc-text { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
.orn-jd__dt-addon-desc[data-collapsed="true"] .orn-jd__dt-addon-desc-text { -webkit-line-clamp: 3; line-clamp: 3; }
.orn-jd__dt-addon-desc[data-collapsed="false"] .orn-jd__dt-addon-desc-text { -webkit-line-clamp: unset; line-clamp: unset; }
.orn-jd__dt-addon-desc-toggle { background: none; border: none; padding: 0; margin-top: 4px; color: var(--orn-navy); font-family: var(--orn-font-body); font-weight: 700; font-size: 13px; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.orn-jd__dt-addon-desc-toggle:hover { color: var(--orn-gold-3); }

.orn-jd__dt-addon-priceblock { display: flex; flex-direction: column; align-items: flex-end; text-align: right; gap: 2px; }
.orn-jd__dt-addon-price { display: inline-flex; align-items: baseline; gap: 2px; font-family: 'JetBrains Mono', monospace; font-weight: 700; color: var(--orn-text); font-size: 15.5px; line-height: 1.1; white-space: nowrap; }
.orn-jd__dt-addon-price-plus { color: inherit; margin-right: 2px; }
.orn-jd__dt-addon-price-val { color: inherit; }
.orn-jd__dt-addon-price-note { color: var(--orn-mute, #9a8a6e); font-family: var(--orn-font-body); font-weight: 400; font-size: 12px; letter-spacing: normal; white-space: nowrap; }
@media (max-width: 640px) {
    /* On phones the nowrap price column ("+ ₹43,050" / "total for group") held
       its full width and squeezed the long inclusion title. Wrap the card so the
       price drops below as a footer. The body needs flex-basis 0 (not auto) or
       its long-title max-content basis pushes it under the +icon instead of
       sitting beside it. Price footer is right-aligned + separated by a rule. */
    .orn-jd__dt-addon { flex-wrap: wrap; }
    .orn-jd__dt-addon-body { flex: 1 1 0; }
    .orn-jd__dt-addon-priceblock { flex: 1 1 100%; flex-direction: row; align-items: baseline; justify-content: flex-end; gap: 8px; text-align: right; margin: 10px 0 0; padding-top: 10px; border-top: 1px solid var(--orn-cream-3, #e6dfc9); }
}

/* ---------------- Included tab ---------------- */
.orn-jd__incl-grid { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 768px) {
    .orn-jd__incl-grid { grid-template-columns: repeat(3, 1fr); }
}
.orn-jd__incl-tile { background: var(--orn-paper); border: 1px solid var(--orn-line); border-radius: 16px; padding: 22px; }
.orn-jd__incl-tile-title { font-family: var(--orn-font-display); font-weight: 700; font-size: 16px; color: var(--orn-navy); margin: 0; }
.orn-jd__incl-tile-lede { color: var(--orn-ink-2); font-size: 14px; margin: 6px 0 0; line-height: 1.5; }

/* ---------------- Body 2-col layout ----------------
   Left: tabs + active panel (the cockpit-shape content). Right:
   sticky Trip co-pilot column. On <1100px the co-pilot stacks
   below the main panel; on mobile (<768px) it collapses to the
   floating FAB.
   --------------------------------------------------- */
.orn-jd__body { display: grid; grid-template-columns: 1fr; gap: 24px; align-items: start; }
@media (min-width: 1100px) {
    .orn-jd__body { grid-template-columns: minmax(0, 1fr) 420px; }
}
.orn-jd__main { min-width: 0; }
/* Align the co-pilot's top with the panels row (tabs + 20px gap),
   not with the tabs row itself. Visually anchors the card to the
   content the customer is reading, not to the secondary tab strip. */
.orn-jd__copilot { position: sticky; top: 24px; margin-top: calc(44px + 20px); /* tab pill ~44px + .orn-jd__panels margin-top 20px */ }
@media (max-width: 1099px) {
    .orn-jd__copilot { position: static; margin-top: 0; }
}

.orn-jd__aside-stack { position: sticky; top: 24px; margin-top: calc(44px + 20px); display: flex; flex-direction: column; gap: 16px; }
.orn-jd__aside-stack .orn-jd__copilot { position: static; margin-top: 0; }
@media (max-width: 1099px) {
    .orn-jd__aside-stack { position: static; margin-top: 0; }
}

/* ── Dates & Pricing as a persistent right-rail sidebar (desktop ≥1100 only).
   The JS portal (ornholidays-journey.js placeDatesPanel) moves the live dates
   panel into .orn-jd__aside-stack above the expert card and adds
   body.orn-jd-dates-rail. Mobile/tablet keep the tab + full-screen overlay flow. ── */
@media (min-width: 1100px) {
    /* Persistent (not tab-gated) + hide the now-redundant desktop tab pill. */
    body.orn-jd-dates-rail .orn-jd__aside-stack .orn-jd__panel[data-orn-panel="dates"] { display: block !important; margin-top: 0; }
    body.orn-jd-dates-rail .orn-jd__tab[data-orn-tab="dates"] { display: none; }
    /* Reflow the wizard for the ~360px rail — its inner grids key off the wide
       VIEWPORT (e.g. .orn-jd__dt-controls-grid goes 2-col ≥720px), so force the
       multi-column rows single-column inside the rail. */
    body.orn-jd-dates-rail .orn-jd__aside-stack .orn-jd__panel[data-orn-panel="dates"] .orn-jd__dt-controls-grid { grid-template-columns: 1fr; }
    body.orn-jd-dates-rail .orn-jd__aside-stack .orn-jd__panel[data-orn-panel="dates"] .orn-jd__dt-row { grid-template-columns: 1fr; gap: 8px; }
    /* Price-summary header: keep the info row and replace the two Change pills
       with a single red underlined "Edit" link (top-right) that jumps back to the
       Travellers step — #ornJdPriceEdit already delegates to that action. */
    body.orn-jd-dates-rail .orn-jd__dt-price-change-group { display: none; }
    body.orn-jd-dates-rail .orn-jd__dt-price-edit { display: inline-flex; align-items: flex-start; flex: 0 0 auto; background: none; border: 0; padding: 0; border-radius: 0; color: rgb(242, 13, 22); font-family: Archivo, sans-serif; font-weight: 700; font-size: 14px; text-decoration: underline; text-underline-offset: 3px; }
    body.orn-jd-dates-rail .orn-jd__dt-price-edit:hover { background: none; color: rgb(216, 10, 18); }
    /* "How many travelling?" heading on a single line in the rail. */
    body.orn-jd-dates-rail .orn-jd__dt-controls-title { white-space: nowrap; font-size: 24px; }
    /* Step nav (Travellers · Date · Price summary) grouped to the left with tight
       connectors, instead of stretched across the rail. */
    body.orn-jd-dates-rail .orn-jd__dt-stepnav { justify-content: flex-start; gap: 8px; overflow-x: visible; padding-bottom: 37px; }
    body.orn-jd-dates-rail .orn-jd__dt-stepnav-sep { flex: 0 0 16px; width: 16px; }
    /* Align the wizard's step nav vertically-centered on the tab strip row: the
       rail's base offset (calc(44px+20px)) dropped it a full pill below the tabs;
       zero pushed it a pill above. ~24px centers the 24px dots on the pill row
       (main has 24px top padding, pills ~37px tall). */
    body.orn-jd-dates-rail .orn-jd__aside-stack { margin-top: 24px; }
    /* "Choose your seats" CTA spans the rail width (was capped at 280px, centered). */
    body.orn-jd-dates-rail .orn-jd__dt-price-cta-row { align-items: stretch; }
    body.orn-jd-dates-rail .orn-jd__dt-price-cta-actions { display: flex; gap: 10px; }
    body.orn-jd-dates-rail .orn-jd__dt-price-cta-actions > * { flex: 1 1 0; }
    body.orn-jd-dates-rail .orn-jd__dt-price-cta-row .orn-jd__dt-row-cta { max-width: none; width: 100%; }

    /* ---- Rail price summary — van-tour/published-journey structure ----
       Only rendered in the desktop rail (renderPriceSummary's isRail branch):
       grey pax chip + Edit, a Start-date row, a TOTAL PRICE head with the price
       on the right (struck gross over net + red ▲), the reused breakup lines,
       and an Earn / View-Terms foot. Ported from the .orn-fit__ reference but
       using --orn-* tokens (the --fit-* tokens are scoped to the FIT page). */
    body.orn-jd-dates-rail .orn-jd__psum-rooms { display: flex; align-items: center; justify-content: space-between; gap: 12px; background: #f5f5f5; border: 1px solid var(--orn-line, #E4DDCD); border-radius: 12px; padding: 12px 14px; }
    body.orn-jd-dates-rail .orn-jd__psum-rooms-txt { font-family: Archivo, sans-serif; font-size: 14px; font-weight: 700; color: var(--orn-text); }
    body.orn-jd-dates-rail .orn-jd__psum-edit { flex: 0 0 auto; background: none; border: 0; padding: 0; cursor: pointer; color: rgb(242, 13, 22); font-family: Archivo, sans-serif; font-weight: 700; font-size: 14px; text-decoration: underline; text-underline-offset: 3px; }
    body.orn-jd-dates-rail .orn-jd__psum-edit:hover { color: rgb(216, 10, 18); }
    body.orn-jd-dates-rail .orn-jd__psum-daterow { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 13.5px; margin-top: 16px; }
    body.orn-jd-dates-rail .orn-jd__psum-daterow span:first-child { color: var(--orn-mute, #9a8a6e); }
    body.orn-jd-dates-rail .orn-jd__psum-daterow span:last-child { font-weight: 700; color: var(--orn-text); }
    body.orn-jd-dates-rail .orn-jd__psum-card .orn-jd__seats-pill { margin-top: 14px; }
    body.orn-jd-dates-rail .orn-jd__psum { border-top: 1px solid var(--orn-line-2, #EAEAEA); margin-top: 16px; }
    body.orn-jd-dates-rail .orn-jd__psum-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; width: 100%; background: none; border: 0; border-bottom: 1px solid var(--orn-line-2, #EAEAEA); padding: 14px 0; cursor: pointer; text-align: left; }
    body.orn-jd-dates-rail .orn-jd__psum-head-l { display: flex; flex-direction: column; gap: 3px; }
    body.orn-jd-dates-rail .orn-jd__psum-eyebrow { font-family: var(--orn-font-mono), monospace; font-size: 12px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--orn-text); }
    body.orn-jd-dates-rail .orn-jd__psum-sub { font-family: var(--orn-font-display), sans-serif; font-size: 12.5px; line-height: 1.35; color: var(--orn-mute, #9a8a6e); }
    body.orn-jd-dates-rail .orn-jd__psum-total { display: inline-flex; flex-direction: column; align-items: flex-end; gap: 2px; font-family: var(--orn-font-mono), monospace; font-weight: 700; font-size: 24px; line-height: 1; color: rgb(242, 13, 22); }
    body.orn-jd-dates-rail .orn-jd__psum-gross { font-size: 14px; font-weight: 500; color: var(--orn-mute, #9a8a6e); text-decoration: line-through; text-decoration-thickness: 1.5px; }
    body.orn-jd-dates-rail .orn-jd__psum-netrow { display: inline-flex; align-items: center; gap: 6px; }
    body.orn-jd-dates-rail .orn-jd__psum-net { color: var(--orn-text); }
    body.orn-jd-dates-rail .orn-jd__psum-chev { font-size: 13px; transition: transform 0.18s ease; }
    body.orn-jd-dates-rail .orn-jd__dt-price-card:not(.is-break-open) .orn-jd__psum-chev { transform: rotate(180deg); }
    /* psum-body reuses .orn-jd__dt-price-lines, which carries its own border-top +
       margin-top. That duplicates the psum-head's border-bottom → a double divider
       line (visible when there's no Super Deal / Priced-for row between them). Drop
       the body's border + top margin so only the head divider shows. */
    body.orn-jd-dates-rail .orn-jd__psum-body { padding-top: 8px; border-top: 0; margin-top: 0; }
    body.orn-jd-dates-rail .orn-jd__psum-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; padding-top: 14px; border-top: 1px solid var(--orn-line-2, #EAEAEA); }
    body.orn-jd-dates-rail .orn-jd__psum-earn { font-family: Archivo, sans-serif; font-weight: 700; font-size: 14px; color: #1F7A3D; }
    body.orn-jd-dates-rail .orn-jd__psum-terms { background: none; border: 0; padding: 0; cursor: pointer; color: rgb(242, 13, 22); font-family: Archivo, sans-serif; font-weight: 600; font-size: 14px; text-decoration: underline; text-underline-offset: 3px; }
    body.orn-jd-dates-rail .orn-jd__psum-terms:hover { color: rgb(216, 10, 18); }
    /* Vertical rhythm inside the rail summary: breathing room after the TOTAL
       PRICE head divider (Super Deal note), and around the seats note / CTA. */
    body.orn-jd-dates-rail .orn-jd__dt-price-flightnote { margin-top: 16px; }
    body.orn-jd-dates-rail .orn-jd__psum + .orn-jd__dt-price-cta-row,
    body.orn-jd-dates-rail .orn-jd__dt-price-cta-row { margin-top: 18px; }
    body.orn-jd-dates-rail .orn-jd__dt-price-cta-note { margin: 4px 0 14px; }
    /* "PRICE SUMMARY" heading at the top of the rail card, above the pax chip. */
    body.orn-jd-dates-rail .orn-jd__psum-eyebrow-top { margin: 0 0 14px; }
}

.orn-jd__tte { background: var(--orn-text); color: #e5edf7; border-radius: 18px; padding: 26px; font-family: var(--orn-font-display); }
.orn-jd__tte-eyebrow { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--orn-navy); margin: 0 0 12px; }
.orn-jd__tte-title { font-family: var(--orn-font-display); font-size: 26px; font-weight: 500; line-height: 1.12; color: #fff; margin: 0 0 14px; }
.orn-jd__tte-title em { color: #fff; font-style: italic; font-weight: 500; }
.orn-jd__tte-lede { font-size: 14px; line-height: 1.5; color: #b6c1d3; margin: 0 0 20px; }
.orn-jd__tte-people { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; }
.orn-jd__tte-avatars { display: flex; }
.orn-jd__tte-av { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%; border: 2px solid #0f1a2b; margin-left: -8px; font-family: var(--orn-font-display); font-weight: 700; font-size: 14px; color: #fff; }
.orn-jd__tte-av:first-child { margin-left: 0; }
.orn-jd__tte-av--1 { background: #c9a951; }
.orn-jd__tte-av--2 { background: #6b7a90; }
.orn-jd__tte-av--3 { background: #b8956e; }
.orn-jd__tte-av--4 { background: #4b5b73; }
.orn-jd__tte-people-names { font-size: 14px; font-weight: 700; color: #fff; }
.orn-jd__tte-people-sub { font-size: 12px; color: #97a3b8; margin-top: 2px; }
.orn-jd__tte-ctas { display: grid; grid-template-columns: 1fr; gap: 8px; margin-bottom: 14px; }
.orn-jd__tte-cta { display: flex; align-items: center; justify-content: center; padding: 10px 12px; border-radius: var(--button-radius-primary); font-family: var(--orn-font-display); font-size: 13px; font-weight: 600; text-decoration: none; transition: background 0.15s ease, transform 0.05s ease; box-sizing: border-box; }
.orn-jd__tte-cta--primary { background: var(--color-primary, var(--orn-navy)); color: #fff; }
.orn-jd__tte-cta--primary:hover { background: var(--color-primary-light, var(--orn-navy-2)); }
.orn-jd__tte-cta--ghost { background: transparent; color: #fff; border: 1px solid #2a3a52; }
.orn-jd__tte-cta--ghost:hover { background: #182437; }
.orn-jd__tte-thanks { font-size: 13px; color: #7cd07c; margin-bottom: 10px; }
.orn-jd__tte-avail { font-size: 11px; color: #7d8ba3; text-align: center; margin: 0; }

/* Inline Talk-to-Expert card injected into the mobile Price-summary step,
   sitting between the price card and the add-ons list. Hidden on desktop —
   the sticky aside column already carries the card there — and revealed only
   on phones/tablets, where the booking flow is a full-screen takeover and the
   page-bottom aside is out of view. */
.orn-jd__tte--inline { display: none; margin-top: 16px; }
@media (max-width: 1099px) {
    .orn-jd__tte--inline { display: block; }
}

/* Published-journey floating "Talk to ORN" pill + sheet — shown on BOTH
   desktop and mobile (journeyId + mobile → JourneyAction.CALLBACK_REQUEST).
   Reuses the FD .orn-jd__talk* markup/visual language, but this scoped block
   makes it a bottom-right anchored PANEL on desktop and a full-width bottom
   SHEET on phones. Scoped to the published page (.orn-page--journey-detail) and
   the FD page (body.orn-jd, which mounts the pill on <body> at load); other pages
   keep their own .orn-jd__talk rules in the @media ≤640 block above. */
@keyframes orn-talk-pop { from { transform: translateY(12px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }

:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk { display: block; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-pill {
    position: fixed; right: 24px; bottom: 24px; z-index: 1250;
    display: inline-flex; align-items: center; gap: 8px;
    padding: 12px 18px 12px 13px; border-radius: 999px; background: rgb(21, 21, 21);
    border: none; box-shadow: 0 12px 30px rgba(0, 0, 0, 0.32); cursor: pointer;
}
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-pill:hover { background: rgb(33, 33, 33); }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-pill:active { transform: scale(0.97); }
:is(.orn-page--journey-detail, .orn-jd).orn-jd-talk-open .orn-jd__talk-pill { display: none; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-pill-ic { width: 24px; height: 24px; border-radius: 12px; background: rgba(242, 13, 22, 0.2); display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-pill-lbl { font-family: Archivo, sans-serif; font-weight: 700; font-size: 13px; color: #fff; white-space: nowrap; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-overlay { position: fixed; inset: 0; z-index: 1260; background: rgba(0, 0, 0, 0.45); }
/* Desktop: right-anchored rounded panel near the pill. */
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-sheet {
    position: fixed; right: 24px; bottom: 24px; left: auto; z-index: 1270;
    width: 380px; max-width: calc(100vw - 48px); max-height: calc(100vh - 48px); overflow-y: auto;
    background: rgb(21, 21, 21); border-radius: 22px; padding: 26px 24px 24px;
    box-shadow: 0 24px 60px rgba(0, 0, 0, 0.5); animation: orn-talk-pop 0.2s ease;
}
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-x { position: absolute; top: 14px; right: 16px; background: none; border: 0; color: rgba(255, 255, 255, 0.6); font-size: 26px; line-height: 1; cursor: pointer; padding: 0; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-x:hover { color: #fff; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-grip { display: none; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-eyebrow { display: block; font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 11px; letter-spacing: 1.6px; color: rgb(242, 13, 22); text-transform: uppercase; margin-bottom: 8px; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-title { display: block; font-family: Archivo, sans-serif; font-weight: 500; font-size: 24px; line-height: 1.2; color: #fff; margin-bottom: 12px; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-title em { font-style: italic; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-lede { margin: 0 0 18px; font-family: Archivo, sans-serif; font-weight: 400; font-size: 14px; line-height: 1.55; color: rgb(182, 193, 211); }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-btn { width: 100%; height: 44px; border-radius: 10px; background: rgb(242, 13, 22); border: none; color: #fff; font-size: 14px; font-weight: 600; font-family: Archivo, sans-serif; cursor: pointer; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-btn:hover { background: rgb(216, 10, 18); }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-btn:active { transform: scale(0.99); }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-thanks:not([hidden]) { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 14px; padding: 6px 4px 4px; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-check { width: 52px; height: 52px; border-radius: 26px; background: rgba(242, 13, 22, 0.18); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-thanks-txt { font-family: Archivo, sans-serif; font-weight: 500; font-size: 22px; color: #fff; line-height: 1.25; }
:is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-thanks .orn-jd__talk-btn { margin-top: 20px; }

/* Phones/tablets: pill lifts above the sticky booking bar; the panel becomes a
   full-width bottom sheet with a grip (× hidden — grip + overlay-tap close it). */
@media (max-width: 900px) {
    :is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-pill { right: 16px; bottom: calc(148px + env(safe-area-inset-bottom, 0px)); }
    :is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-sheet {
        right: 0; left: 0; bottom: 0; width: auto; max-width: none;
        border-radius: 22px 22px 0 0; padding: 26px 22px calc(26px + env(safe-area-inset-bottom, 0px));
        box-shadow: 0 -12px 36px rgba(0, 0, 0, 0.4); animation: orn-sheet-up 0.25s ease;
    }
    :is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-grip { display: block; width: 40px; height: 4px; border-radius: 2px; background: rgba(255, 255, 255, 0.25); margin: 0 auto 20px; }
    :is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-x { display: none; }
    :is(.orn-page--journey-detail, .orn-jd) .orn-jd__talk-title { font-size: 26px; }
}

/* FD page with the dates rail (≥1100px): the aside already shows the Talk to an
   ORN expert card open, so no floating pill. */
body.orn-jd-dates-rail .orn-jd__talk { display: none; }

/* Booking form steps (Travellers / Date): the pill would float over the form next
   to its own CTA, so it is kept off them and returns on the price summary. */
body.orn-jd-dates-open.orn-jd-dates-form .orn-jd__talk-pill,
body.orn-fit-wiz-form .orn-jd__talk-pill { display: none; }

/* Wherever the FD floating pill is mounted, it replaces the inline Talk-to-Expert
   card on the price summary step. */
@media (max-width: 1099px) {
    body.orn-jd-has-talk .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__tte--inline { display: none; }
}

.orn-jd__anon-pricing { position: sticky; top: 24px; margin-top: 0; }
.orn-jd__anon-card { background: #fff; border: 1px solid #e6e6e6; border-radius: 14px; padding: 24px; box-shadow: 0 4px 20px rgba(20, 35, 59, 0.06); }
.orn-jd__anon-flightnote,
.orn-jd__dt-price-flightnote { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; letter-spacing: 0.02em; }
.orn-jd__anon-flightnote svg,
.orn-jd__dt-price-flightnote svg { width: 14px; height: 14px; stroke: currentColor; fill: none; flex-shrink: 0; }
.orn-jd__anon-flightnote { color: var(--orn-navy); font-size: 15px; }
/* display:flex (not inline-flex, unlike the shared rule above) so this sits
   on its own line — the sibling breakdown-toggle button is inline-flex too,
   and two adjacent inline-level boxes were running onto the same line. */
.orn-jd__dt-price-flightnote { display: flex; font-family: Archivo, sans-serif; color: rgb(242, 13, 22); font-size: 15px; margin-bottom: 18px; }
.orn-jd__dt-price-flightnote svg { width: 16px; height: 16px; }
.orn-jd__dt-price-flightnote + .orn-jd__dt-price-flightvalid { margin-top: -14px; margin-bottom: 18px; }
.orn-jd__dt-price-flightvalid { font-family: Archivo, sans-serif; color: #6f7580; font-size: 12px; font-weight: 500; letter-spacing: 0.02em; }
.orn-jd__anon-lines { padding-bottom: 18px; border-bottom: 1px solid #eee; }
.orn-jd__anon-line { display: flex; justify-content: space-between; align-items: baseline; font-family: var(--orn-font-display); font-size: 17px; color: var(--orn-text); padding: 6px 0; }
.orn-jd__anon-line[hidden] { display: none; }
.orn-jd__anon-line--wallet { color: #b8392f; }
.orn-jd__anon-label { font-weight: 500; }
.orn-jd__anon-value { font-weight: 500; font-variant-numeric: tabular-nums; }
.orn-jd__anon-net { padding: 18px 0 20px; }
.orn-jd__anon-net-eyebrow { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.08em; color: #6b7280; text-transform: uppercase; margin-bottom: 6px; }
.orn-jd__anon-net-amount { font-family: var(--orn-font-mono); font-size: 36px; font-weight: 700; color: var(--orn-text); line-height: 1.05; font-variant-numeric: tabular-nums; }
.orn-jd__anon-skel { display: inline-block; min-width: 90px; height: 1em; border-radius: 6px; background: linear-gradient(90deg, rgba(20,35,59,0.06), rgba(20,35,59,0.12), rgba(20,35,59,0.06)); background-size: 200% 100%; animation: orn-skel-shimmer 1.2s ease-in-out infinite; }
.orn-jd__anon-net-amount.orn-jd__anon-skel { min-width: 160px; height: 1em; }
@keyframes orn-skel-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
.orn-jd__anon-net-sub { font-family: var(--orn-font-display); font-size: 13px; color: #6b7280; margin-top: 5px; }
.orn-jd__anon-cta { display: block; width: 100%; padding: 16px 18px; background: var(--orn-text, #14233b); color: #fff; text-align: center; font-family: var(--orn-font-display); font-size: 17px; font-weight: 700; border-radius: 12px; text-decoration: none; transition: background 0.15s ease; box-sizing: border-box; }
.orn-jd__anon-cta:hover { background: #0f1a2b; }
@media (max-width: 1099px) {
    .orn-jd__anon-pricing { position: static; margin-top: 0; }
}
/* Co-pilot card — dark coffee bg with subtle gold radial glow top-right,
   cream type, Spectral serif title, gold CTA. Whole card is the click
   target (role="button"); matches Results.html data-dc-tpl="918". */
.orn-jd__copilot-card { position: relative; background: rgb(15, 15, 15); border: 1px solid rgb(40, 40, 40); border-radius: 20px; padding: 26px 24px; color: rgb(242, 242, 242); box-shadow: rgba(0, 0, 0, 0.3) 0 16px 40px; overflow: hidden; cursor: pointer; transition: border-color 0.18s ease, transform 0.18s ease; }
.orn-jd__copilot-card:hover { border-color: rgba(242, 13, 22, 0.55); transform: translateY(-1px); }
.orn-jd__copilot-card:focus { outline: none; }
.orn-jd__copilot-card:focus-visible { outline: 2px solid var(--orn-navy); outline-offset: 3px; }
.orn-jd__copilot-card::before { content: ''; position: absolute; inset: 0; background: radial-gradient(120% 80% at 100% 0%, rgba(242, 13, 22, 0.14), transparent 60%); pointer-events: none; }
.orn-jd__copilot-card > * { position: relative; }

/* Head row — gold-circle moon icon + eyebrow/title stack */
.orn-jd__copilot-head { display: flex; align-items: center; gap: 13px; }
.orn-jd__copilot-disc { flex: 0 0 46px; width: 46px; height: 46px; border-radius: 50%; border: 1.5px solid var(--orn-navy); background: rgba(242, 13, 22, 0.12); display: flex; align-items: center; justify-content: center; color: var(--orn-navy); }
.orn-jd__copilot-disc svg { stroke: var(--orn-navy) !important; }

.orn-jd__copilot-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.22em; color: var(--orn-navy); margin: 0 0 3px; text-transform: uppercase; font-weight: 600; }
.orn-jd__copilot-title { font-family: Spectral, serif; font-weight: 600; font-size: 23px; line-height: 1.1; margin: 0; color: #fff; }
.orn-jd__copilot-lede { font-size: 14px; color: rgba(255, 255, 255, 0.72); line-height: 1.5; margin: 16px 0 0; }

/* Chips row — outlined pill chips (display-only; the whole card opens
   the panel, but the visual matches the mockup exactly). */
.orn-jd__copilot-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.orn-jd__copilot-chip { display: inline-block; border: 1px solid rgb(60, 60, 60); color: rgba(255, 255, 255, 0.9); border-radius: 999px; padding: 7px 13px; font-size: 12.5px; font-family: inherit; background: transparent; }

/* Full-width gold "Open co-pilot →" CTA */
.orn-jd__copilot-cta { display: flex; align-items: center; justify-content: space-between; margin-top: 20px; background: var(--orn-navy); color: #fff; border-radius: 12px; padding: 13px 18px; font-weight: 700; font-size: 15px; font-family: inherit; }
.orn-jd__copilot-cta svg { stroke: #fff !important; }
.orn-jd__copilot-card:hover .orn-jd__copilot-cta { background: var(--orn-navy-2); }

/* ---------------- Map tab (SVG route map) ----------------
   Dark-navy card with grid backdrop. Country outlines render as
   muted polygons behind the route line; gold dashed line connects
   stops; gold anchor pins for START/END, blue mid-stops; white
   bold labels with START / END eyebrows under the anchors.
   ---------------------------------------------------------- */
.orn-jd__map-card { padding: 28px 0 24px; }
.orn-jd__map-eyebrow { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--orn-navy); margin-bottom: 16px; }
.orn-jd__map-eyebrow::before { content: 'ROUTE MAP'; color: var(--orn-navy); }
.orn-jd__map-eyebrow:has(span:not(:empty))::before { content: 'ROUTE MAP \00B7  '; }

.orn-jd__map-svg-wrap { position: relative; width: 100%; aspect-ratio: 16 / 9; background: linear-gradient(rgba(255,255,255,0.06) 1px, transparent 1px) 0 0 / 60px 60px, linear-gradient(90deg, rgba(255,255,255,0.06) 1px, transparent 1px) 0 0 / 60px 60px, linear-gradient(180deg, rgba(255,255,255,0.04), rgba(255,255,255,0)) #12233b; border-radius: 12px; border: 1px solid rgba(255, 255, 255, 0.08); overflow: hidden; }
.orn-jd__map-svg { width: 100%; height: 100%; display: block; }
.orn-jd__map-gmap { position: absolute; inset: 0; }

.orn-jd__map-country { fill: rgba(255, 255, 255, 0.07); stroke: rgba(255, 255, 255, 0.30); stroke-width: 1; vector-effect: non-scaling-stroke; }
.orn-jd__map-line { fill: none; stroke: var(--orn-navy); stroke-width: 2.6; stroke-dasharray: 8 6; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; opacity: 0.95; }
.orn-jd__map-pin { fill: #9fb1c8; stroke: rgba(255, 255, 255, 0.85); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.orn-jd__map-pin--anchor { fill: var(--orn-navy); stroke: rgba(255, 255, 255, 0.95); }
.orn-jd__map-label { fill: #fff; font-family: var(--orn-font-display); font-weight: 800; paint-order: stroke; stroke: rgba(0, 0, 0, 0.85); stroke-width: 3.5; stroke-linejoin: round; }
.orn-jd__map-anchor-label { fill: var(--orn-navy); font-family: var(--orn-font-mono); font-weight: 600; letter-spacing: 0.16em; }
.orn-jd__map-anchor-label--end { fill: var(--orn-navy); }

@media (max-width: 640px) {
    /* The map was tiny on phones: a 16/9 box inside 32px side padding left it
       ~156px tall. Trim the side padding and make it near-square so the route
       map reads much larger. */
    .orn-jd__map-card { padding: 22px 0 20px; }
    .orn-jd__map-svg-wrap { aspect-ratio: 1 / 1; }
}

/* ---------------- Inclusions tab ----------------
   The renderer in ornholidays-journey.js uses the cockpit's exact class
   names so the DOM structure is the single source of truth. The rules
   below restyle those cockpit classes to the ORN theme — paper card
   chrome, contained hero images, navy display titles, gold count pill,
   tidy city rows with proper night-pill spacing.
   ----------------------------------------------- */

/* Section header ("Hotels that make the route…" eyebrow + lede above stays grid) */
.srSectionHeader { margin: 8px 0 16px; }
.srSectionHeader .tourHero.is-hero { background: transparent; border: 0; padding: 0; }
.srSectionHeader .eyebrow, .srSectionHeader .sr-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.14em; font-weight: 600; color: rgb(154, 138, 110); margin-bottom: 8px; text-transform: none; }
.srSectionHeader h2 { font-family: Archivo, sans-serif; font-weight: 700; font-size: 21px; color: rgb(20, 35, 59); line-height: 1.2; margin: 0 0 8px; }
.srSectionHeader .lede { color: rgb(90, 101, 115); font-size: 15.5px; line-height: 1.55; margin: 0; }

/* Zero Visa Hassle promise banner — sits at the top of the Inclusions tab
   as a customer-reassurance strip. Gradient + shield glyph make it read as
   a guarantee, not just another inclusion line. */
.orn-jd__visa-promise { display: flex; align-items: center; gap: 18px; padding: 20px 24px; margin-bottom: 18px; border-radius: 16px; background: rgb(240, 249, 255); border: 1px solid rgba(38, 132, 255, 0.28); color: rgb(15, 44, 92); box-shadow: 0 8px 22px rgba(38, 132, 255, 0.10); position: relative; overflow: hidden; }
.orn-jd__visa-promise::before { content: ''; position: absolute; top: -60px; right: -60px; width: 180px; height: 180px; border-radius: 50%; background: rgba(38, 132, 255, 0.06); pointer-events: none; }
.orn-jd__visa-promise-badge { flex: 0 0 auto; width: 52px; height: 52px; border-radius: 14px; background: rgb(38, 132, 255); color: #fff; display: inline-flex; align-items: center; justify-content: center; position: relative; }
.orn-jd__visa-promise-body { flex: 1 1 auto; position: relative; }
.orn-jd__visa-promise-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: rgb(38, 132, 255); font-weight: 700; margin-bottom: 6px; }
.orn-jd__visa-promise-title { font-family: Archivo, sans-serif; font-weight: 800; font-size: 24px; line-height: 1.15; letter-spacing: -0.01em; color: rgb(15, 44, 92); margin: 0 0 4px; }
.orn-jd__visa-promise-lede { font-size: 14.5px; line-height: 1.5; color: rgb(58, 74, 102); margin: 0; }
@media (max-width: 640px) {
    .orn-jd__visa-promise { padding: 16px 18px; gap: 14px; }
    .orn-jd__visa-promise-badge { width: 42px; height: 42px; border-radius: 12px; }
    .orn-jd__visa-promise-title { font-size: 20px; }
    .orn-jd__visa-promise-lede { font-size: 13.5px; }
}

/* Flights inclusion card — shows the ops-authored flight line as the first
   item in the Inclusions tab when the customer picked a real ex-city. */
.orn-jd__incl-flights-card {
    background: #fff;
    border: 1px solid rgba(20, 35, 59, 0.10);
    border-radius: 16px;
    padding: 22px 26px;
    margin: 0 0 28px;
    display: flex;
    align-items: center;
    gap: 16px;
    box-shadow: 0 6px 18px rgba(20, 35, 59, 0.05);
}
.orn-jd__incl-flights-icon {
    flex: 0 0 38px;
    width: 38px;
    height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--orn-red, #F20D16);
    color: #fff;
    border-radius: 12px;
    box-shadow: 0 4px 10px rgba(242, 13, 22, 0.25);
}
.orn-jd__incl-flights-list { list-style: none; margin: 0; padding: 4px 0 0; display: flex; flex-direction: column; gap: 6px; flex: 1 1 auto; }
.orn-jd__incl-flights-list li { color: var(--orn-ink, rgb(20, 35, 59)); font-family: 'Archivo', sans-serif; font-weight: 600; font-size: 16px; line-height: 1.4; letter-spacing: -0.01em; }
@media (max-width: 640px) {
    .orn-jd__incl-flights-card { padding: 18px 20px; gap: 12px; }
    .orn-jd__incl-flights-icon { flex-basis: 38px; width: 38px; height: 38px; border-radius: 10px; }
    .orn-jd__incl-flights-list li { font-size: 14.5px; }
}

/* Stay grid — 3-col on desktop, 2-col on tablet, 1-col on mobile */
.srStayGrid { display: grid; grid-template-columns: 1fr; gap: 16px; margin-bottom: 14px; }
@media (min-width: 640px) {
    .srStayGrid { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 1024px) {
    .srStayGrid { grid-template-columns: 1fr 1fr 1fr; }
}

.srStayTile { background: var(--orn-paper); border: 1px solid var(--orn-line); border-radius: 16px; overflow: hidden; display: flex; flex-direction: column; box-shadow: rgba(20, 35, 59, 0.04) 0 4px 12px; }
.srStayHero { position: relative; width: 100%; aspect-ratio: 16 / 10; background-size: cover; background-position: center; background-color: var(--orn-cream-2); background-repeat: no-repeat; /* fix the tiled stretched image */ }
.srStayHero.is-placeholder { background: linear-gradient(135deg, rgba(201,164,92,0.18), rgba(20,35,59,0.10)); }
.srStayBadge { position: absolute; top: 10px; left: 10px; background: rgba(10, 24, 55, 0.78); color: #fff; font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; padding: 4px 10px; border-radius: 999px; }
.srStayStars { position: absolute; bottom: 10px; left: 12px; color: var(--orn-gold); font-size: 13px; text-shadow: 0 1px 2px rgba(0,0,0,0.5); }
.srStayCity { position: absolute; bottom: 10px; right: 12px; color: #fff; font-family: var(--orn-font-display); font-weight: 700; font-size: 15px; text-shadow: 0 1px 2px rgba(0,0,0,0.5); }
.srStayBody { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 4px; }
.srStayName { font-family: var(--orn-font-display); font-weight: 700; font-size: 16px; color: var(--orn-text); line-height: 1.3; }
.srStayTag { align-self: flex-start; display: inline-block; padding: 3px 8px; border-radius: 4px; background: var(--orn-navy); color: var(--orn-paper); font-family: var(--orn-font-display); font-size: 10.5px; font-weight: 600; letter-spacing: 0; text-transform: uppercase; margin-top: 2px; }
.srStayMeta { color: var(--orn-ink-2); font-size: 13.5px; }
.srStayFoot { color: var(--orn-text); font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; margin-top: 2px; }

/* Detail cards — used for "City by city" + "What's included" + "What's not included" */
.detailGrid { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 768px) {
    .detailGrid { grid-template-columns: 1fr 1fr; }
    .detailGridFull { grid-template-columns: 1fr; }
}
.detailCard { background: var(--orn-paper); border: 1px solid var(--orn-line); border-radius: 16px; padding: 20px; }
.detailCard h3 { font-family: Archivo, sans-serif; font-weight: 700; font-size: 19px; color: rgb(20, 35, 59); margin: 0 0 14px; line-height: 1.2; }
.detailCard h3 .count { display: inline-block; color: rgb(154, 138, 110); font-family: 'JetBrains Mono', monospace; font-weight: 600; font-size: 13px; letter-spacing: 0.05em; margin-left: 6px; }
.detailCard ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.detailCard ul li { color: var(--orn-ink-2); font-size: 14.5px; line-height: 1.5; padding-left: 22px; position: relative; }
.detailCard ul li::before { content: '\2713'; position: absolute; left: 0; top: 1px; color: var(--orn-green, #2f7a4f); font-weight: 700; }
.detailCard ul li.miss::before { content: '\2715'; color: #b8392f; }
.detailCard ul li b { color: var(--orn-navy); font-weight: 700; }
.srInclEmpty { color: var(--orn-ink-2); font-style: italic; margin: 0; }

/* City-by-city rows inside the detailCard */
.cityRow { padding: 14px 0; border-top: 1px solid var(--orn-line); }
.cityRow:first-of-type { border-top: 0; padding-top: 0; }
.cityHead { font-family: Archivo, sans-serif; font-weight: 700; font-size: 16px; color: rgb(20, 35, 59); margin-bottom: 8px; display: flex; align-items: baseline; gap: 10px; }
.cityHead .nights { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.12em; color: var(--orn-text); font-weight: 600; background: rgb(243, 243, 243); padding: 2px 8px; border-radius: 999px; text-transform: none; }
.cityRow ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
.cityRow ul li { color: var(--orn-ink-2); font-size: 14.5px; line-height: 1.5; padding-left: 18px; position: relative; }
.cityRow ul li::before { content: '\2022'; position: absolute; left: 4px; top: 0; color: var(--orn-gold); font-size: 16px; line-height: 1.4; }

/* ---------------- Not found ---------------- */
.orn-jd__notfound { background: var(--orn-paper); border: 1px solid var(--orn-line); border-radius: 16px; padding: 48px 32px; text-align: center; margin-block: 24px; }
.orn-jd__notfound-title { font-family: var(--orn-font-display); font-weight: 800; font-size: 28px; color: var(--orn-navy); margin: 0 0 12px; }
.orn-jd__notfound-lede { color: var(--orn-ink-2); font-size: 15px; margin: 0 0 24px; line-height: 1.5; }

/* ---------------- Tour manager section ----------------
   Navy card, gold avatar disc with initials, gold eyebrow, Archivo 700
   white name, slate role, light-ink-blue bio, gold-bordered italic
   quote, mono stat grid, green WhatsApp disc.
   Ported verbatim from the Itinerary.html reference (data-dc-tpl="936"
   through "951") — exact rgb / px / family values preserved so the
   section reads identically to the design source.
   ------------------------------------------------------ */
.orn-jd__tm { background: #fff; color: var(--orn-text); border: 1px solid rgb(231, 231, 231); border-radius: 20px; padding: 44px 48px; margin-top: 30px; display: flex; gap: 40px; align-items: flex-start; flex-wrap: wrap; box-shadow: 0 4px 18px rgba(0,0,0,0.03); position: relative; }
.orn-jd__tm-avatar { width: 140px; height: 140px; border-radius: 50%; background: rgb(242, 13, 22); display: flex; align-items: center; justify-content: center; flex-shrink: 0; font-family: Archivo, sans-serif; font-weight: 800; font-size: 48px; color: #fff; letter-spacing: 0.02em; }
.orn-jd__tm-body { flex: 1 1 0%; min-width: 280px; }
.orn-jd__tm-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.22em; color: rgb(242, 13, 22); font-weight: 600; text-transform: uppercase; }
.orn-jd__tm-name { font-family: Archivo, sans-serif; font-weight: 800; font-size: 34px; color: var(--orn-text); margin-top: 8px; letter-spacing: -0.01em; }
.orn-jd__tm-role { font-size: 15px; color: var(--orn-text-muted); margin-top: 6px; }
.orn-jd__tm-bio { font-size: 15px; color: rgb(51, 65, 85); line-height: 1.6; margin-top: 20px; max-width: 720px; }
.orn-jd__tm-quote { border-left: 3px solid rgb(242, 13, 22); padding-left: 18px; margin: 22px 0 0; font-style: italic; font-weight: 600; font-size: 17px; color: var(--orn-text); line-height: 1.5; max-width: 720px; }
.orn-jd__tm-stats { display: flex; gap: 48px; margin-top: 32px; flex-wrap: wrap; align-items: flex-start; }
.orn-jd__tm-stat-v { font-family: 'JetBrains Mono', monospace; font-size: 26px; font-weight: 600; color: var(--orn-text); letter-spacing: 0.01em; }
.orn-jd__tm-stat-k { font-size: 12px; color: var(--orn-text-muted); letter-spacing: 0.03em; margin-top: 4px; }
.orn-jd__tm-wa { text-decoration: none; position: absolute; right: 32px; bottom: 32px; width: 56px; height: 56px; border-radius: 50%; background: rgb(37, 211, 102); display: flex; align-items: center; justify-content: center; box-shadow: rgba(37, 211, 102, 0.32) 0 10px 24px, 0 0 0 6px rgba(37, 211, 102, 0.15); flex-shrink: 0; }
.orn-jd__tm-wa:hover { background: rgb(50, 220, 113); }

@media (max-width: 640px) {
    .orn-jd__tm { padding: 28px 24px; gap: 22px; }
    .orn-jd__tm-avatar { width: 96px; height: 96px; font-size: 34px; }
    .orn-jd__tm-name { font-size: 26px; }
    .orn-jd__tm-stats { gap: 24px; margin-top: 22px; }
    .orn-jd__tm-wa { position: static; margin-top: 20px; }
}

/* ---------------- Visa tab ----------------
   Two-card layout: cream card on the left with the numbered process
   timeline; navy card on the right with the documents checklist. The
   data comes from SellingRoomBean.loadJourneyVisa which stamps a
   VisaInformationDetail on the request; the partial at
   _includes/visa.jsp renders these classes. */
.orn-jd__visa-grid { display: grid; grid-template-columns: 1.5fr 1fr; gap: 24px; align-items: start; }
.orn-jd__visa-main { background: #fff; border: 1px solid var(--orn-line); border-radius: 20px; padding: 36px 40px; }
.orn-jd__visa-eyebrow { font-family: var(--orn-font-mono); font-size: 11px; font-weight: 700; letter-spacing: 2.4px; text-transform: uppercase; color: var(--orn-gold-2); margin-bottom: 16px; }
.orn-jd__visa-title { font-family: var(--orn-font-display); font-size: 24px; font-weight: 800; line-height: 1.2; color: var(--orn-text); margin: 0 0 14px; }
.orn-jd__visa-lede { font-size: 15px; line-height: 1.55; color: var(--orn-ink-2); margin: 0 0 28px; max-width: 56ch; }
.orn-jd__visa-steps { list-style: none; margin: 0; padding: 0; position: relative; }
.orn-jd__visa-steps::before { content: ""; position: absolute; left: 18px; top: 18px; bottom: 18px; width: 2px; background: var(--orn-cream-3); }
.orn-jd__visa-step { display: flex; align-items: flex-start; gap: 18px; padding: 10px 0 18px; position: relative; }
.orn-jd__visa-step:last-child { padding-bottom: 0; }
.orn-jd__visa-step-num { flex: 0 0 36px; height: 36px; border-radius: 50%; background: var(--orn-text); color: #fff; display: flex; align-items: center; justify-content: center; font-family: var(--orn-font-mono); font-weight: 700; font-size: 14px; position: relative; z-index: 1; }
.orn-jd__visa-step-body { flex: 1; padding-top: 4px; }
.orn-jd__visa-step-title { font-family: var(--orn-font-display); font-size: 18px; font-weight: 700; color: var(--orn-text); margin-bottom: 4px; }
.orn-jd__visa-step-desc { font-size: 14px; line-height: 1.55; color: var(--orn-ink-2); }
.orn-jd__visa-footer { margin: 28px 0 0; padding-top: 20px; border-top: 1px solid var(--orn-cream-3); font-size: 13px; line-height: 1.55; color: var(--orn-ink-2); font-style: italic; }

.orn-jd__visa-checklist { background: var(--orn-text); border-radius: 20px; padding: 32px 30px; color: #f0e6c8; }
.orn-jd__visa-checklist-eyebrow { font-family: var(--orn-font-mono); font-size: 11px; font-weight: 700; letter-spacing: 2.4px; text-transform: uppercase; color: var(--orn-gold-3); margin-bottom: 20px; }
.orn-jd__visa-checklist-list { list-style: none; margin: 0; padding: 0; }
.orn-jd__visa-checklist-list li { position: relative; padding: 10px 0 10px 28px; font-size: 14px; line-height: 1.5; color: #fff; border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.orn-jd__visa-checklist-list li:last-child { border-bottom: 0; }
.orn-jd__visa-checklist-list li::before { content: "\2713"; position: absolute; left: 0; top: 10px; color: var(--orn-gold-3); font-weight: 700; font-size: 14px; }

@media (max-width: 900px) {
    .orn-jd__visa-grid { grid-template-columns: 1fr; }
    .orn-jd__visa-main { padding: 28px 22px; }
    .orn-jd__visa-title { font-size: 26px; }
    .orn-jd__visa-checklist { position: static; padding: 26px 22px; }
}

/* =========================================================
   Coach seat map modal
   -------------------
   Opens over the journey-detail Dates tab when the customer
   clicks "Select seats" on the price-summary panel. Driven by
   ornholidays-seatmap.js against the DOM shell in
   _includes/seat_map_modal.jsp.
   ========================================================= */

.orn-body--lock { overflow: hidden; }

.orn-seatmap { position: fixed; inset: 0; z-index: 9999; display: none; align-items: center; justify-content: center; padding: 24px; }
.orn-seatmap--open { display: flex; }
.orn-seatmap__backdrop { position: absolute; inset: 0; background: rgba(11, 18, 32, 0.55); backdrop-filter: blur(4px); }
.orn-seatmap__panel { position: relative; width: 100%; max-width: 520px; max-height: 92vh; background: var(--orn-cream-2); border-radius: 24px; padding: 28px 24px 20px; box-shadow: 0 30px 80px rgba(11, 18, 32, 0.25); display: flex; flex-direction: column; overflow: hidden; }
.orn-seatmap__close { position: absolute; top: 14px; right: 14px; width: 36px; height: 36px; border-radius: 50%; border: 0; background: rgba(11, 18, 32, 0.08); color: var(--orn-navy); font-size: 22px; cursor: pointer; line-height: 1; }
.orn-seatmap__close:hover { background: rgba(11, 18, 32, 0.14); }

.orn-seatmap__header { padding-right: 40px; margin-bottom: 12px; }
.orn-seatmap__eyebrow { display: flex; gap: 10px; align-items: center; font-family: var(--orn-font-mono, monospace); font-size: 11px; letter-spacing: 0.14em; color: var(--orn-ink-2); text-transform: uppercase; margin-bottom: 4px; }
.orn-seatmap__front-chip { background: var(--orn-navy); color: #f0e6c8; padding: 4px 10px; border-radius: 999px; font-weight: 700; }
.orn-seatmap__coach-chip { background: rgba(11, 18, 32, 0.06); padding: 4px 10px; border-radius: 999px; font-weight: 600; }
.orn-seatmap__title { font-family: var(--orn-font-display); font-size: 22px; font-weight: 800; color: var(--orn-navy); margin: 6px 0 4px; }
.orn-seatmap__lede { font-size: 13px; line-height: 1.4; color: var(--orn-ink-2); margin: 0; }

.orn-seatmap__body { flex: 1; overflow: auto; padding: 12px 6px 12px; background: #fff; border-radius: 16px; border: 1px solid var(--orn-line, rgba(11, 18, 32, 0.08)); margin: 12px 0; }
.orn-seatmap__loading, .orn-seatmap__empty { padding: 24px; text-align: center; color: var(--orn-ink-2); font-size: 13px; }
.orn-seatmap__front { text-align: center; padding: 6px 0 14px; border-bottom: 1px dashed var(--orn-cream-3); margin-bottom: 10px; }
.orn-seatmap__front-label { font-family: var(--orn-font-mono, monospace); font-size: 10px; letter-spacing: 0.2em; color: var(--orn-ink-2); text-transform: uppercase; }
.orn-seatmap__grid { display: flex; flex-direction: column; gap: 8px; padding: 0 10px 8px; }
.orn-seatmap__row { display: flex; align-items: center; gap: 10px; }
.orn-seatmap__row-num { flex: 0 0 24px; font-family: var(--orn-font-mono, monospace); font-size: 11px; color: var(--orn-ink-2); text-align: right; }
.orn-seatmap__row-items { display: flex; gap: 6px; flex: 1; justify-content: center; align-items: center; }

.orn-seatmap__tile { width: 42px; height: 42px; border-radius: 8px; border: 1.5px solid var(--orn-cream-3); background: #fff; color: var(--orn-navy); font-family: var(--orn-font-mono, monospace); font-size: 11px; font-weight: 700; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; transition: transform 0.06s ease-out, box-shadow 0.15s ease; }
.orn-seatmap__tile:hover:not(:disabled) { box-shadow: 0 4px 12px rgba(11, 18, 32, 0.1); transform: translateY(-1px); }
.orn-seatmap__tile--available { background: #fff; }
.orn-seatmap__tile--selected { background: var(--orn-navy); color: #f0e6c8; border-color: var(--orn-navy); }
.orn-seatmap__tile--reserved, .orn-seatmap__tile--booked, .orn-seatmap__tile--taken { background: var(--orn-cream-3); color: rgba(11, 18, 32, 0.42); cursor: not-allowed; border-color: var(--orn-cream-3); }
.orn-seatmap__tile--blocked { background: repeating-linear-gradient(45deg, var(--orn-cream-3), var(--orn-cream-3) 6px, rgba(255,255,255,0.6) 6px, rgba(255,255,255,0.6) 10px); color: rgba(11, 18, 32, 0.36); cursor: not-allowed; border-color: var(--orn-cream-3); }
.orn-seatmap__tile--blank { background: transparent; border-color: transparent; visibility: hidden; }
.orn-seatmap__aisle { flex: 0 0 20px; height: 42px; }

.orn-seatmap__footer { border-top: 1px solid var(--orn-line, rgba(11, 18, 32, 0.08)); padding-top: 14px; }
.orn-seatmap__legend { display: flex; gap: 18px; font-size: 11px; color: var(--orn-ink-2); flex-wrap: wrap; margin-bottom: 12px; }
.orn-seatmap__legend-item { display: inline-flex; align-items: center; gap: 6px; }
.orn-seatmap__tile--legend { width: 16px; height: 16px; border-radius: 4px; display: inline-block; padding: 0; cursor: default; border-width: 1px; }
.orn-seatmap__actionbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.orn-seatmap__status { font-size: 12px; color: var(--orn-gold-2); font-weight: 600; }
.orn-seatmap__status--ready { color: #2f7a4f; }
.orn-seatmap__status--warn { color: var(--orn-red, #b8392f); }
.orn-seatmap__actions { display: flex; gap: 10px; }
.orn-seatmap__cancel { background: transparent; color: var(--orn-navy); border: 1px solid var(--orn-navy); border-radius: 999px; padding: 8px 16px; font-size: 13px; cursor: pointer; }
.orn-seatmap__save { background: var(--orn-navy); color: #fff; border: 0; border-radius: 999px; padding: 8px 18px; font-size: 13px; font-weight: 700; cursor: pointer; }
.orn-seatmap__save:disabled { background: rgba(11, 18, 32, 0.24); cursor: not-allowed; }

/* Price-summary panel: seats chip rendered by ornholidays-journey.js */
.orn-jd__dt-price-seats { background: var(--orn-cream-2); border: 1px solid var(--orn-cream-3); border-radius: 12px; padding: 10px 14px; margin: 10px 0 12px; font-size: 13px; color: var(--orn-text); font-weight: 600; }
.orn-jd__dt-price-seats-coach { color: var(--orn-ink-2); font-weight: 400; margin-left: 4px; }

/* Book page: seats strip + expiry countdown */
.orn-book__seats { background: var(--orn-cream-2); border: 1px solid var(--orn-cream-3); border-radius: 12px; padding: 14px 18px; margin: 0 0 18px; }
.orn-book__seats-eyebrow { font-family: var(--orn-font-mono, monospace); font-size: 10px; letter-spacing: 0.16em; color: var(--orn-gold-2); text-transform: uppercase; margin-bottom: 6px; }
.orn-book__seats-row { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.orn-book__seats-codes { font-family: var(--orn-font-mono, monospace); font-size: 16px; font-weight: 700; color: var(--orn-navy); letter-spacing: 0.05em; }
.orn-book__seats-coach { color: var(--orn-ink-2); font-size: 13px; }
.orn-book__seats-countdown { margin-left: auto; font-size: 12px; color: var(--orn-ink-2); font-family: var(--orn-font-mono, monospace); }
.orn-book__seats-expired { margin-top: 8px; color: var(--orn-red, #b8392f); font-size: 13px; font-weight: 600; }
.orn-book__seats-expired a { color: inherit; text-decoration: underline; }

.orn-book__care { margin: 0 0 18px; padding: 2px 4px; font-size: 13px; color: var(--orn-ink-2); display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
.orn-book__care-text { color: var(--orn-ink-2); }
.orn-book__care-link { color: var(--orn-red, #b8392f); text-decoration: none; font-weight: 600; }
.orn-book__care-link:hover, .orn-book__care-link:focus { text-decoration: underline; }
.orn-book__care-thanks { color: var(--orn-ink-2); font-style: italic; }

@media (max-width: 640px) {
    .orn-seatmap__panel { padding: 20px 16px 14px; max-height: 96vh; border-radius: 20px; }
    .orn-seatmap__tile { width: 36px; height: 36px; font-size: 10px; }
    .orn-seatmap__aisle { flex: 0 0 14px; }
    .orn-seatmap__title { font-size: 20px; }
}

/* =========================================================
   Full-page seat picker (/trip/orn-holidays-seat-map)
   ---------------------------------------------------
   Two-column layout matching the design mockup:
   - Left  : white coach card with FRONT chip + coach code
             chip, seat grid, legend at the bottom
   - Right : sticky navy booking-summary card with the
             journey title, party, fare, live seats-selected
             chip strip, total, and a big gold Continue CTA
   ========================================================= */

.orn-seatpage { padding: 32px 0 64px; background: var(--orn-cream); }
.orn-seatpage__back { display: inline-block; font-family: var(--orn-font-display); font-size: 15px; color: var(--orn-text); text-decoration: none; margin-bottom: 18px; }
.orn-seatpage__back:hover { text-decoration: underline; }
.orn-seatpage__title { font-family: var(--orn-font-display); font-size: 32px; font-weight: 800; line-height: 1.1; color: var(--orn-text); margin: 0 0 24px; }
.orn-seatpage__grid { display: grid; grid-template-columns: 1fr 2fr; gap: 32px; align-items: start; }

/* Coach card (left) */
.orn-seatpage__coach { background: #fff; border-radius: 24px; padding: 24px 20px 20px; box-shadow: 0 4px 12px rgba(11, 18, 32, 0.05); }
.orn-seatpage__coach-head { display: flex; justify-content: space-between; align-items: center; padding: 0 6px 16px; border-bottom: 1px dashed var(--orn-cream-3); margin-bottom: 16px; font-family: var(--orn-font-mono, monospace); font-size: 11px; letter-spacing: 0.16em; color: var(--orn-ink-2); text-transform: uppercase; }
.orn-seatpage__front-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; background: rgba(11, 18, 32, 0.06); border-radius: 999px; color: var(--orn-navy); font-weight: 700; }
.orn-seatpage__coach-chip { color: var(--orn-ink-2); font-weight: 600; }
.orn-seatpage__coach-body { display: flex; flex-direction: column; gap: 10px; padding: 4px 0 12px; }
.orn-seatpage__row { display: flex; justify-content: center; }
.orn-seatpage__row-items { display: flex; gap: 8px; align-items: center; justify-content: center; }

/* Seat tile */
.orn-seatpage__tile { width: 62px; height: 54px; border-radius: 10px; border: 1.5px solid rgb(212, 212, 212); background: rgb(235, 220, 218); color: var(--orn-text); font-family: var(--orn-font-mono, monospace); font-size: 14px; font-weight: 700; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; padding: 0; transition: transform 0.06s ease-out, box-shadow 0.15s ease, background 0.15s ease; }
.orn-seatpage__tile:hover:not(:disabled) { box-shadow: 0 4px 14px rgba(11, 18, 32, 0.12); transform: translateY(-1px); background: rgb(222, 213, 196); }
.orn-seatpage__tile--available { background: #fff; }
.orn-seatpage__tile--available:hover:not(:disabled) { background: #fff; }
.orn-seatpage__tile--selected { background: var(--orn-text); color: #fff; }
.orn-seatpage__tile--selected:hover { background: var(--orn-text); }
.orn-seatpage__tile--booked, .orn-seatpage__tile--reserved, .orn-seatpage__tile--taken { background: rgb(210, 200, 184); color: rgba(11, 18, 32, 0.42); cursor: not-allowed; }
/* Already-BOOKED seats belonging to the viewer's own travelling party (e.g.
   picking a seat for a newly-added traveller, alongside the existing
   party) — same "taken" look, but ringed so it doesn't read as an
   anonymous other-booking seat. Name is on the title tooltip. */
.orn-seatpage__tile--mine { border: 2px solid var(--orn-gold-3, rgb(242, 13, 22)); color: var(--orn-ink, rgb(20, 35, 59)); font-weight: 800; }
.orn-seatpage__tile--blocked { background: repeating-linear-gradient(45deg, rgb(210, 200, 184), rgb(210, 200, 184) 6px, rgba(255,255,255,0.5) 6px, rgba(255,255,255,0.5) 10px); color: rgba(11, 18, 32, 0.36); cursor: not-allowed; }
.orn-seatpage__tile--blank { width: 62px; height: 54px; display: inline-block; background: transparent; border-color: transparent; visibility: hidden; }
.orn-seatpage__aisle { flex: 0 0 24px; height: 54px; }

.orn-seatpage__legend { display: flex; gap: 24px; justify-content: center; align-items: center; padding: 16px 0 4px; border-top: 1px dashed var(--orn-cream-3); margin-top: 8px; font-size: 12px; color: var(--orn-ink-2); }
.orn-seatpage__legend-item { display: inline-flex; align-items: center; gap: 8px; }
.orn-seatpage__tile--legend { width: 18px; height: 18px; border-radius: 4px; display: inline-block; padding: 0; cursor: default; border-width: 1.5px; }

/* Summary card (right) */
.orn-seatpage__summary { background: var(--orn-text); color: #f0e6c8; border-radius: 24px; padding: 32px 30px; position: sticky; top: 100px; }
.orn-seatpage__summary-eyebrow { font-family: var(--orn-font-mono, monospace); font-size: 11px; letter-spacing: 0.2em; color: rgba(240, 230, 200, 0.6); text-transform: uppercase; margin-bottom: 12px; }
.orn-seatpage__summary-title { font-family: var(--orn-font-display); font-size: 28px; font-weight: 800; line-height: 1.15; color: #fff; margin: 0 0 8px; }
.orn-seatpage__summary-meta { font-size: 14px; color: rgb(195, 204, 214); margin: 0 0 4px; }
.orn-seatpage__summary-party { font-size: 14px; color: rgb(195, 204, 214); margin: 0; }
.orn-seatpage__summary-divider { height: 1px; background: rgba(255, 255, 255, 0.12); margin: 22px 0; }
.orn-seatpage__summary-line { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 10px; }
.orn-seatpage__summary-line--redeem .orn-seatpage__summary-k,
.orn-seatpage__summary-line--redeem .orn-seatpage__summary-v { color: #4dc089; font-weight: 600; }
.orn-seatpage__summary-k { font-size: 14px; color: rgb(195, 204, 214); }
.orn-seatpage__summary-v { font-family: var(--orn-font-mono, monospace); font-size: 15px; font-weight: 700; color: #fff; }
.orn-seatpage__summary-seats { font-family: var(--orn-font-mono, monospace); font-size: 13px; color: rgba(240, 230, 200, 0.6); margin: 4px 0 0; min-height: 18px; }
.orn-seatpage__summary-total { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 20px; }
.orn-seatpage__summary-total-k { font-size: 16px; color: rgb(195, 204, 214); font-weight: 600; }
.orn-seatpage__summary-total-v { font-family: var(--orn-font-mono, monospace); font-size: 32px; font-weight: 800; color: var(--orn-navy);letter-spacing: 0.02em; }
.orn-seatpage__cta { width: 100%; padding: 16px 24px; background: var(--color-primary, var(--orn-navy)); color: var(--orn-text); border: 0; border-radius: var(--button-radius-primary); font-family: var(--orn-font-display); font-size: 16px; font-weight: 800; cursor: pointer; transition: background 0.15s ease, transform 0.06s ease-out; }
.orn-seatpage__cta:hover:not(:disabled) { transform: translateY(-1px); }
.orn-seatpage__cta:disabled { background: rgb(128 121 111 / 35%); color: rgba(11, 18, 32, 0.55); cursor: not-allowed; }
.orn-seatpage__cta-note { font-size: 12px; color: rgb(195, 204, 214); margin: 10px 0 0; text-align: center; }
.orn-seatpage__cta-note--warn { color: #ffb4a2; }

@media (max-width: 900px) {
    /* minmax(0,1fr) instead of 1fr: a 1fr track = minmax(auto,1fr), which grows
       to the widest grid item's min-content (the summary card's 32px total),
       forcing the whole column to ~402px and clipping both cards off-screen.
       minmax(0,1fr) lets the track shrink to the viewport so both cards fit. */
    .orn-seatpage__grid { grid-template-columns: minmax(0, 1fr); }
    .orn-seatpage__title { font-size: 30px; }
    .orn-seatpage__summary { position: static; }
    .orn-seatpage__tile { width: 52px; height: 46px; font-size: 12px; }
    .orn-seatpage__tile--blank { width: 52px; height: 46px; }
    .orn-seatpage__aisle { flex: 0 0 18px; height: 46px; }
    /* Keep the legend swatches small — the mobile .orn-seatpage__tile size above
       otherwise blows them up to full seat size (52x46). */
    .orn-seatpage__tile--legend { width: 18px; height: 18px; }
}
/* Desktop keeps the topbar as a plain block (back link above title); the
   info icon + mobile seat-count chips only exist for the phone bottom bar. */
.orn-seatpage__info,
.orn-seatpage__mob-count { display: none; }

@media (max-width: 640px) {
    /* ---- Mobile: top bar (circular back + inline title) ---------------- */
    .orn-seatpage { padding: 0 0 232px; }            /* clear the fixed bottom bar */
    .orn-seatpage__topbar {
        position: sticky; top: 0; z-index: 20;
        display: flex; align-items: center; gap: 12px;
        margin: 0 -16px 12px; padding: 12px 16px;
        background: var(--orn-cream-2, #fff);
        border-bottom: 1px solid var(--orn-cream-3);
    }
    .orn-seatpage__back {
        flex: 0 0 auto; width: 40px; height: 40px; margin: 0; font-size: 0;
        border-radius: 50%; background: var(--orn-cream); border: 1px solid var(--orn-cream-3);
        display: inline-flex; align-items: center; justify-content: center;
    }
    .orn-seatpage__back::before { content: "\2190"; font-size: 20px; line-height: 1; color: var(--orn-text); }
    .orn-seatpage__title { font-size: 22px; margin: 0; }

    .orn-seatpage__coach { border-radius: 18px; }
    .orn-seatpage__tile { width: 52px; height: 46px; font-size: 12px; }
    .orn-seatpage__tile--blank { width: 52px; height: 46px; }
    .orn-seatpage__aisle { flex: 0 0 18px; height: 46px; }
    .orn-seatpage__tile--legend { width: 18px; height: 18px; }

    /* ---- Mobile: summary becomes a light, fixed bottom action bar ------
       Collapsed = compact light bar (total + seat count + CTAs). Tapping the
       (i) adds .orn-seatpage__summary--expanded, which turns this same element
       into a dark bottom sheet revealing the full booking breakdown that the
       compact bar hides — no duplicated DOM, #ornSmPriceBreak stays live. */
    .orn-seatpage__summary {
        position: fixed; left: 0; right: 0; bottom: 0; top: auto; z-index: 40;
        background: var(--orn-cream-2, #fff); color: var(--orn-text);
        border-radius: 16px 16px 0 0;
        padding: 8px 16px calc(7px + env(safe-area-inset-bottom, 0px));
        box-shadow: 0 -6px 24px rgba(11, 18, 32, 0.14);
        max-height: 88vh; overflow-y: auto;
        transition: background 0.2s ease;
    }
    /* Collapsed bar hides everything but total + seat count + CTAs. */
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__summary-eyebrow,
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__summary-title,
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__summary-meta,
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__summary-party,
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__summary-divider,
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) #ornSmPriceBreak,
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__summary-seats,
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) > .orn-seatpage__summary-line,
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__vanup,
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__cta-note { display: none !important; }

    /* Collapsed total row: label + price on the left, seat progress on the right. */
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__summary-total {
        display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto auto;
        align-items: center; column-gap: 12px; margin: 0 0 6px;
    }
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__summary-total-k {
        grid-column: 1; grid-row: 1; align-self: end;
        font-size: 11px; font-weight: 500; color: var(--orn-text-muted); letter-spacing: 0;
    }
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__summary-total-note { font-size: 11px; color: var(--orn-text-muted); }
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__total-price { grid-column: 1; grid-row: 2; align-self: start; display: inline-flex; align-items: center; gap: 6px; }
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__summary-total-v { font-size: 20px; color: var(--orn-text); }
    .orn-seatpage__info { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; padding: 0; border: 0; background: transparent; color: var(--orn-text-muted); cursor: pointer; }
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__mob-count {
        display: inline-block; grid-column: 2; grid-row: 1 / span 2;
        align-self: center; justify-self: end;
        font-family: var(--orn-font-mono, monospace); font-size: 12px; font-weight: 700;
        letter-spacing: 0.06em; text-transform: uppercase; color: var(--orn-text-muted);
    }

    /* ---- Mobile: expanded dark bottom sheet (booking breakdown) --------- */
    .orn-seatpage__summary--expanded {
        background: var(--orn-text); color: #f0e6c8;
        padding: 12px 22px calc(22px + env(safe-area-inset-bottom, 0px));
        box-shadow: 0 -10px 34px rgba(0, 0, 0, 0.4);
    }
    .orn-seatpage__summary--expanded .orn-seatpage__info,
    .orn-seatpage__summary--expanded .orn-seatpage__mob-count { display: none; }
    .orn-seatpage__sheet-handle { display: none; }
    .orn-seatpage__summary--expanded .orn-seatpage__sheet-handle {
        display: block; width: 44px; height: 5px; border-radius: 3px;
        background: rgba(255, 255, 255, 0.28); margin: 0 auto 18px;
    }
    .orn-seatpage__sheet-backdrop {
        position: fixed; inset: 0; z-index: 39; background: rgba(6, 10, 16, 0.55);
        opacity: 0; visibility: hidden; transition: opacity 0.2s ease, visibility 0.2s ease;
    }
    .orn-seatpage__sheet-backdrop.is-open { opacity: 1; visibility: visible; }

    /* CTAs: full width, stacked, light-gray disabled look per the mockup. */
    .orn-seatpage__cta { border-radius: 11px; padding: 10px 18px; font-size: 14px; color: #fff; }
    .orn-seatpage__summary:not(.orn-seatpage__summary--expanded) .orn-seatpage__cta:disabled { background: rgb(214, 217, 222); color: rgb(107, 114, 128); }
    .orn-seatpage__cta--hold {
        margin-top: 6px !important;
        background: rgb(243, 244, 246) !important; color: rgb(140, 146, 154) !important;
        border: 0 !important;
    }
    .orn-seatpage__cta--hold:not(:disabled) { color: var(--orn-text) !important; }
}

/* =============================================================
   My bookings — customer account landing
   Cream page background, navy booking cards with a cream tile
   action strip below each — matches the mockup.
   ============================================================= */
.orn-page--my-bookings { background: var(--orn-cream, rgb(240, 235, 220)); }
.orn-mybookings { padding-block: 16px 96px; }

.orn-mybookings__hello { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding-block: 20px; }
.orn-mybookings__hello-left { display: flex; align-items: center; gap: 20px; }
.orn-mybookings__avatar { width: 68px; height: 68px; border-radius: 50%; background: var(--orn-navy, rgb(20, 35, 59)); color: var(--orn-gold, rgb(193, 142, 69)); display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.orn-mybookings__hello-name { font-family: var(--orn-font-display); font-weight: 800; font-size: 32px; color: var(--orn-navy); margin: 0; line-height: 1.15; }
.orn-mybookings__hello-phone { margin: 4px 0 0; font-family: 'JetBrains Mono', monospace; font-size: 14px; letter-spacing: 0.04em; color: var(--orn-gold, rgb(193, 142, 69)); }
.orn-mybookings__signout { padding: 10px 22px; border-radius: var(--r-pill, 24px); border: 1px solid var(--orn-navy, rgb(20, 35, 59)); background: transparent; color: var(--orn-navy); font-weight: 700; font-size: 15px; text-decoration: none; cursor: pointer; white-space: nowrap; }
.orn-mybookings__signout:hover { background: var(--orn-navy); color: var(--orn-cream, rgb(240, 235, 220)); }

.orn-mybookings__section { margin-top: 24px; }
.orn-mybookings__section-title { font-family: var(--orn-font-display); font-weight: 800; font-size: 26px; color: var(--orn-text); margin: 0 auto 20px; max-width: 840px; }

.orn-mybookings__list { display: flex; flex-direction: column; gap: 24px; max-width: 840px; margin-left: auto; margin-right: auto; }

.orn-booking-card { background: #fff; border-radius: 14px; box-shadow: 0 4px 12px rgba(20, 35, 59, 0.04); overflow: hidden; border: 1px solid rgba(20, 35, 59, 0.08); }

/* Navy hero band — compact: meta + title + route on the left, departs
   + travellers on the right, no oversized display font. */
.orn-booking-card__hero { display: flex; align-items: center; justify-content: space-between; gap: 20px; background: var(--orn-text); color: var(--orn-text-light, rgb(240, 235, 220)); padding: 16px 20px; text-decoration: none; }
.orn-booking-card__hero:hover { background: rgb(26, 44, 71); }
.orn-booking-card__hero-main { min-width: 0; flex: 1 1 auto; }
.orn-booking-card__meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.orn-booking-card__ref { font-family: 'Archivo', sans-serif; font-weight: 400; font-size: 17px; letter-spacing: 0.06em; color: rgb(244, 239, 227); }
.orn-booking-card__status { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 999px; font-family: var(--orn-font-body); font-size: 12px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.orn-booking-card__status--ok { background: rgb(224, 242, 232); color: rgb(24, 82, 51); box-shadow: inset 0 0 0 1px rgba(24, 82, 51, 0.28); }
.orn-booking-card__status--warn { background: rgb(253, 226, 220); color: rgb(139, 34, 22); box-shadow: inset 0 0 0 1px rgba(139, 34, 22, 0.28); }
.orn-booking-card__status--pending { background: rgb(253, 236, 205); color: rgb(129, 71, 12); box-shadow: inset 0 0 0 1px rgba(129, 71, 12, 0.32); }
.orn-booking-card__code { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(240, 230, 200, 0.55); }
.orn-booking-card__title { font-family: var(--orn-font-display); font-weight: 700; font-size: 17px; line-height: 1.25; margin: 4px 0 2px; color: #fff; }
.orn-booking-card__route { font-family: 'JetBrains Mono', monospace; font-size: 12.5px; letter-spacing: 0.03em; color: rgb(159, 176, 196); margin: 0; }
.orn-booking-card__aside { text-align: right; flex-shrink: 0; }
.orn-booking-card__aside-k { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.22em; color: rgba(240, 230, 200, 0.55); text-transform: uppercase; }
.orn-booking-card__aside-v { font-family: var(--orn-font-display); font-weight: 700; font-size: 15px; color: #fff; margin-top: 2px; }
.orn-booking-card__aside-muted { font-size: 12px; color: rgb(159, 176, 196); font-family: 'JetBrains Mono', monospace; margin-top: 4px; }
.orn-booking-card__status--hold { background: #b4e1fa; color: #084e8a; box-shadow: inset 0 0 0 1px rgba(8, 78, 138, 0.28); }
.orn-booking-card__status--muted { background: rgb(236, 237, 240); color: rgb(90, 98, 110); box-shadow: inset 0 0 0 1px rgba(90, 98, 110, 0.28); }
.orn-booking-card__note { margin: 8px 0 0; font-size: 13px; line-height: 1.4; color: #084e8a; }

/* On hold (BLOCKED) - the alabel-info blue, so a held booking never reads as a
   confirmed one. */
.orn-booking-card--hold { border-color: #b4e1fa; }
.orn-booking-card--hold .orn-booking-card__hero { background: rgb(234, 246, 254); color: #084e8a; }
.orn-booking-card--hold .orn-booking-card__hero:hover { background: rgb(222, 240, 252); }
.orn-booking-card--hold .orn-booking-card__ref,
.orn-booking-card--hold .orn-booking-card__title,
.orn-booking-card--hold .orn-booking-card__aside-v { color: #084e8a; }
.orn-booking-card--hold .orn-booking-card__code,
.orn-booking-card--hold .orn-booking-card__aside-k { color: rgba(8, 78, 138, 0.55); }
.orn-booking-card--hold .orn-booking-card__route,
.orn-booking-card--hold .orn-booking-card__aside-muted { color: rgba(8, 78, 138, 0.75); }

/* Incomplete (never paid / aborted) - a muted outline card, clearly not a trip. */
.orn-booking-card--incomplete { border: 1px dashed rgba(20, 35, 59, 0.25); box-shadow: none; }
.orn-booking-card--incomplete .orn-booking-card__hero { background: #fff; color: rgb(90, 98, 110); }
.orn-booking-card--incomplete .orn-booking-card__hero:hover { background: rgb(250, 250, 251); }
.orn-booking-card--incomplete .orn-booking-card__ref,
.orn-booking-card--incomplete .orn-booking-card__title,
.orn-booking-card--incomplete .orn-booking-card__aside-v { color: rgb(90, 98, 110); }
.orn-booking-card--incomplete .orn-booking-card__code,
.orn-booking-card--incomplete .orn-booking-card__aside-k,
.orn-booking-card--incomplete .orn-booking-card__route,
.orn-booking-card--incomplete .orn-booking-card__aside-muted { color: rgb(140, 147, 158); }

/* Action tiles below the hero — three bordered, icon-on-top cards
   with a title and a small subtitle. Compact, cream-and-gold, sits
   inside the same card container as the hero (no separate strip). */
.orn-booking-card__tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; padding: 18px; background: #fff; border-top: 1px solid rgba(20, 35, 59, 0.06); }
.orn-booking-card__tile { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 22px 14px; border-radius: 12px; border: 1px solid rgba(193, 142, 69, 0.32); background: #fff; text-decoration: none; color: var(--orn-text); transition: border-color 0.15s ease, background 0.15s ease, transform 0.15s ease; text-align: center; }
.orn-booking-card__tile:hover { border-color: rgba(193, 142, 69, 0.7); background: rgba(193, 142, 69, 0.04); }
.orn-booking-card__tile-icon { color: var(--orn-gold, rgb(193, 142, 69)); margin-bottom: 2px; }
.orn-booking-card__tile-title { font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 16px; line-height: 1.15; letter-spacing: -0.01em; }
.orn-booking-card__tile-sub { font-size: 12.5px; color: rgba(20, 35, 59, 0.55); letter-spacing: 0.01em; }
@media (max-width: 600px) {
    .orn-booking-card__tiles { grid-template-columns: 1fr; gap: 10px; padding: 14px; }
    .orn-booking-card__tile { padding: 18px 14px; }
}

/* Newer / Older pager under the list — same look as the credit dashboard's
   .orn-cd-pager ghost buttons, rendered server-side as links. */
.orn-mybookings__pager { display: flex; justify-content: space-between; gap: var(--sp-3); max-width: 840px; margin: var(--sp-5) auto 0; }
.orn-mybookings__pager-btn { display: inline-flex; align-items: center; justify-content: center; font-family: var(--orn-font-body); font-weight: 600; font-size: var(--orn-fs-small); padding: 11px 20px; border-radius: var(--r-pill); background: #fff; border: 1px solid var(--orn-line-2); color: var(--orn-ink-2); text-decoration: none; white-space: nowrap; transition: color .15s ease, border-color .15s ease; }
.orn-mybookings__pager-btn:hover { border-color: var(--orn-gold); color: var(--orn-navy); }

/* Empty state */
.orn-mybookings__empty { background: #fff; border-radius: 22px; padding: 48px 40px; text-align: center; border: 1px solid rgba(20, 35, 59, 0.08); }
.orn-mybookings__empty-title { font-family: var(--orn-font-display); font-weight: 800; font-size: 24px; color: var(--orn-navy); margin-bottom: 10px; }
.orn-mybookings__empty-body { font-size: 15px; color: rgba(20, 35, 59, 0.7); max-width: 520px; margin: 0 auto 20px; }
.orn-mybookings__empty-cta { display: inline-block; padding: 12px 26px; background: var(--orn-gold, rgb(193, 142, 69)); color: var(--orn-navy); border-radius: var(--r-pill, 24px); font-weight: 700; text-decoration: none; }

@media (max-width: 900px) {
    .orn-mybookings__hello { flex-direction: column; align-items: flex-start; gap: 16px; }
    .orn-booking-card__hero { padding: 22px 22px 26px; }
    .orn-booking-card__code { font-size: 32px; }
    .orn-booking-card__aside { position: static; align-items: flex-start; text-align: left; margin-top: 18px; }
    .orn-booking-card__tiles { grid-template-columns: 1fr; gap: 12px; padding: 18px; }
}

/* ─────────────────────────────────────────────────────────────
 * How-it-works page — components
 * .orn-hiw-rule       — numbered section rule ("01 · WHY IT'S DIFFERENT")
 * .orn-steps          — numbered 5-step booking flow
 * .orn-inclusions     — "one fare, everything in" checklist
 * .orn-hiw-cta        — closing CTA row alignment
 * ───────────────────────────────────────────────────────────── */

.orn-hiw-rule { display: flex; align-items: center; gap: 16px; margin: 4px 0 18px; font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 12px; font-weight: 600; letter-spacing: 0.24em; color: rgb(242, 13, 22); }
.orn-hiw-rule__num, .orn-hiw-rule__label { flex-shrink: 0; }
.orn-hiw-rule__line { flex: 1; height: 1px; background: rgb(224, 216, 199); }

/* Why ORN · The Campaign Enemy — X-list vs tick-list two-column card grid */
.orn-hiw-enemy__eyebrow { font-family: var(--orn-font-mono); font-size: 12px; font-weight: 700; letter-spacing: 0.22em; text-transform: uppercase; color: var(--orn-navy); margin: 40px 0 12px; }
.orn-hiw-enemy__title { font-family: var(--orn-font-display); font-weight: 800; font-size: 32px; line-height: 1.1; color: var(--orn-text); margin: 0 0 16px; max-width: 900px; }
.orn-hiw-enemy__title-hi { color: var(--orn-navy); }
.orn-hiw-enemy__lede { font-size: 16px; line-height: 1.5; color: var(--orn-ink-2); max-width: 720px; margin: 0 0 36px; }
.orn-hiw-enemy__grid { display: grid; grid-template-columns: 1fr; gap: 20px; }
@media (min-width: 900px) { .orn-hiw-enemy__grid { grid-template-columns: 1fr 1fr; } }
.orn-hiw-enemy__col { border-radius: 20px; padding: 34px 36px; }
.orn-hiw-enemy__col--old { background: #fff; box-shadow: 0 8px 24px rgba(20, 35, 59, 0.06); }
.orn-hiw-enemy__col--new { background: var(--orn-text); color: #fff; }
.orn-hiw-enemy__col-eyebrow { font-family: var(--orn-font-mono); font-size: 12px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; margin: 0 0 20px; }
.orn-hiw-enemy__col--old .orn-hiw-enemy__col-eyebrow { color: var(--orn-navy); }
.orn-hiw-enemy__col--new .orn-hiw-enemy__col-eyebrow { color: #7ed6a6; }
.orn-hiw-enemy__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 14px; font-size: 14px; font-weight: 400; line-height: 1.1; }
.orn-hiw-enemy__col--new .orn-hiw-enemy__list { color: #fff; }
.orn-hiw-enemy__list li { display: flex; align-items: baseline; gap: 14px; }
.orn-hiw-enemy__list--x li::before { content: "\2715"; color: var(--orn-navy); font-weight: 800; font-size: 15px; flex: 0 0 auto; }
.orn-hiw-enemy__list--tick li::before { content: "\2713"; color: #7ed6a6; font-weight: 800; font-size: 17px; flex: 0 0 auto; }

/* The Benchmark — IndiGo/Emirates comparison, single dark rounded card */
.orn-hiw-benchmark { background: var(--orn-text); border-radius: 24px; padding: 38px 34px; color: #fff; margin-top: 20px; }
.orn-hiw-benchmark__eyebrow { font-family: var(--orn-font-mono); font-size: 12px; font-weight: 700; letter-spacing: 0.22em; text-transform: uppercase; color: #f5c9c1; margin: 0 0 18px; }
.orn-hiw-benchmark__title { font-family: var(--orn-font-display); font-weight: 800; font-size: 30px; line-height: 1.15; color: #fff; margin: 0 0 40px; max-width: 900px; }
.orn-hiw-benchmark__grid { display: grid; grid-template-columns: 1fr; gap: 22px; }
@media (min-width: 900px) { .orn-hiw-benchmark__grid { grid-template-columns: 1fr 1fr; } }
.orn-hiw-benchmark__card { background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 18px; padding: 20px 22px; }
.orn-hiw-benchmark__card-title { color: #f5c9c1; font-family: var(--orn-font-body); font-weight: 700; font-size: 16px; margin: 0 0 14px; }
.orn-hiw-benchmark__card-body { color: rgba(255, 255, 255, 0.86); font-family: var(--orn-font-body); font-size: 14px; line-height: 1.5; margin: 0; }
@media (max-width: 640px) {
    .orn-hiw-enemy__title { font-size: 30px; }
    .orn-hiw-enemy__col { padding: 24px 22px; }
    .orn-hiw-benchmark { padding: 34px 26px; border-radius: 18px; }
    .orn-hiw-benchmark__title { font-size: 26px; }
    .orn-hiw-benchmark__card { padding: 22px 22px; }
}

.orn-steps { list-style: none; padding: 0; margin: 34px 0 0; display: grid; grid-template-columns: 1fr; gap: 22px; }
.orn-step { display: grid; grid-template-columns: 60px 1fr; gap: 0; padding: 22px 24px; background: #fff; border-radius: 14px; box-shadow: 0 6px 22px rgba(20, 35, 59, 0.06); }
.orn-step__num { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 50%; background: rgb(20, 35, 59); color: rgb(244, 239, 227); font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 16px; line-height: 1; }
.orn-step__body { display: flex; flex-direction: column; gap: 6px; }
.orn-step__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 700; font-size: 17px; color: rgb(20, 35, 59); margin: 0; }
.orn-step__lede { font-size: 14px; line-height: 1.6; color: rgb(58, 70, 84); margin: 0; }

.orn-inclusions { list-style: none; padding: 0; margin: 22px 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px 22px; }
.orn-inclusions li { display: flex; align-items: flex-start; gap: 12px; padding: 14px 18px; background: #fff; border-radius: 10px; box-shadow: 0 4px 14px rgba(20, 35, 59, 0.05); font-size: 15px; color: rgb(20, 35, 59); font-weight: 600; }
.orn-inclusions li::before { content: "\2713"; display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: rgb(201, 164, 92); color: #fff; font-size: 13px; font-weight: 800; flex-shrink: 0; }

.orn-hiw-cta { text-align: center; }
.orn-hiw-cta__row { display: inline-flex; gap: 14px; margin-top: 22px; flex-wrap: wrap; justify-content: center; }

@media (max-width: 640px) {
    .orn-step { grid-template-columns: 44px 1fr; gap: 16px; padding: 18px 20px; }
    .orn-step__num { width: 40px; height: 40px; font-size: 18px; }
    .orn-step__title { font-size: 17px; }
}

/* ─── How-it-works page — section rhythm & type constraints ─── */
/* ─── Shared rhythm for how-it-works · about-orn · investors · van-tours
 * Opt-in via `.orn-page--content` on <body>. Per-page overrides live in
 * each page's own block below. */
.orn-page--content .orn-secthead__title { font-size: 28px; line-height: 1.15; letter-spacing: -0.01em; color: var(--orn-text); max-width: 900px; margin: 0; }
/* Serif title inside sections on the two journey-home pages. Colour is scoped to
   .orn-section--black so cream sections keep the default dark ink. */
.orn-page--journeys-home .orn-secthead__title,
.orn-page--trip-journeys-home .orn-secthead__title,
.orn-page--welcome-home .orn-secthead__title,
.orn-page--welcome-home .orn-lp-secthead__title,
#ornPjSimilarSection .orn-secthead__title { font-family: var(--orn-font-heading-serif); font-weight: 500; }
#ornPjSimilarSection .orn-secthead__title { color: #fff; }
#ornPjSimilarSection { padding-block: clamp(48px, 5vw, 96px); }
#ornPjSimilarSection .orn-depstrip { padding-block: 20px; }
.orn-page--welcome-home .orn-lp-hero,
.orn-page--trip-journeys-home .orn-lp-hero { background: #0A0E17; min-height: 640px; }
/* Rotating hero: slides stack absolutely, only .is-active fades in. When there's a
   single slide (no data-orn-lp-hero-carousel), the .is-active default keeps it visible. */
.orn-lp-hero-carousel { position: relative; }
.orn-lp-hero-carousel[data-orn-lp-hero-carousel] { min-height: 680px; }
.orn-lp-hero-carousel[data-orn-lp-hero-carousel] .orn-lp-hero-carousel__slide { position: absolute; inset: 0; opacity: 0; transition: opacity 1.2s ease-in-out; pointer-events: none; }
.orn-lp-hero-carousel[data-orn-lp-hero-carousel] .orn-lp-hero-carousel__slide.is-active { opacity: 1; pointer-events: auto; }
@media (max-width: 900px) {
    .orn-lp-hero-carousel[data-orn-lp-hero-carousel] { min-height: 0; }
    .orn-lp-hero-carousel[data-orn-lp-hero-carousel] .orn-lp-hero-carousel__slide { position: relative; inset: auto; opacity: 1; pointer-events: auto; display: none; }
    .orn-lp-hero-carousel[data-orn-lp-hero-carousel] .orn-lp-hero-carousel__slide.is-active { display: block; }
}
.orn-page--welcome-home .orn-lp-hero__scrim,
.orn-page--trip-journeys-home .orn-lp-hero__scrim { background: radial-gradient(ellipse at top left, rgba(3, 14, 24, 0.92) 0%, rgba(3, 14, 24, 0.72) 22%, rgba(3, 14, 24, 0.42) 42%, rgba(3, 14, 24, 0.15) 62%, rgba(3, 14, 24, 0) 82%), radial-gradient(ellipse at bottom left, rgba(3, 14, 24, 0.88) 0%, rgba(3, 14, 24, 0.62) 22%, rgba(3, 14, 24, 0.32) 42%, rgba(3, 14, 24, 0.1) 60%, rgba(3, 14, 24, 0) 78%); }
.orn-lp-hero__cta-hint { display: block; font-family: 'Archivo', sans-serif; font-size: 22px; font-weight: 700; letter-spacing: 0.03em; color: #fff !important; text-shadow: 0 1px 8px rgba(0,0,0,0.5); margin: 50px 0 14px; max-width: 400px; }
.orn-lp-hero__cta-hint strong { color: #fff; }
.orn-page--welcome-home .orn-lp-hero__bg img,
.orn-page--trip-journeys-home .orn-lp-hero__bg img { object-position: right center; }
.orn-page--welcome-home .orn-lp-hero__inner,
.orn-page--trip-journeys-home .orn-lp-hero__inner { max-width: var(--orn-container); margin-inline: auto; padding-inline: var(--orn-gutter); padding-top: 140px; padding-bottom: 80px; align-items: flex-start; }
.orn-page--welcome-home .orn-lp-hero__eyebrow,
.orn-page--trip-journeys-home .orn-lp-hero__eyebrow { font-family: 'Archivo', sans-serif; font-weight: 800; letter-spacing: 0.16em; font-size: 13px; color: #E4002B; text-transform: uppercase; margin-bottom: 24px; }
.orn-page--welcome-home .orn-lp-hero__hd,
.orn-page--trip-journeys-home .orn-lp-hero__hd { font-family: var(--orn-font-heading-serif); font-weight: 500; font-size: clamp(34px, 4vw, 110px); line-height: 0.95; letter-spacing: -0.02em; text-transform: none; margin: 0 0 28px; text-shadow: 0 2px 20px rgba(0, 0, 0, 0.55); text-align: left; color: #fff; }
.orn-page--welcome-home .orn-lp-hero__hd em,
.orn-page--trip-journeys-home .orn-lp-hero__hd em { font-style: normal; color: var(--orn-navy); display: block; }
.orn-page--welcome-home .orn-lp-hero__sub,
.orn-page--trip-journeys-home .orn-lp-hero__sub { font-family: var(--orn-font-heading-serif); font-style: italic; font-weight: 400; font-size: clamp(22px, 2.4vw, 32px); line-height: 1.25; margin: 0 0 24px; color: #fff; text-align: left; letter-spacing: normal; text-transform: none; }
.orn-page--welcome-home .orn-lp-hero__lede,
.orn-page--trip-journeys-home .orn-lp-hero__lede { font-family: var(--orn-font-body); font-size: 16px; line-height: 1.55; color: rgba(255, 255, 255, 0.82); margin: 0 0 32px; text-shadow: 0 1px 8px rgba(0, 0, 0, 0.4); font-weight: 400; text-align: left; max-width: 440px; }
.orn-page--welcome-home .orn-lp-hero__ctas,
.orn-page--trip-journeys-home .orn-lp-hero__ctas { justify-content: flex-start; margin-top: 0; }
/* Float the marketing header over the hero with a soft red-to-transparent bleed
   so the red bar dissolves into the hero image instead of a hard edge. */
body.orn-page--welcome-home .orn-mh { position: absolute; top: 0; left: 0; right: 0; z-index: 10; padding-bottom: 40px; background: linear-gradient(to bottom, var(--color-primary, #E4002B) 0%, var(--color-primary, #E4002B) 35%, color-mix(in srgb, var(--color-primary, #E4002B) 75%, transparent) 55%, color-mix(in srgb, var(--color-primary, #E4002B) 35%, transparent) 78%, transparent 100%) !important; }
body.orn-page--welcome-home .orn-lp-hero { position: relative; }
/* Same red-bleed treatment for post-login trip/journeys-home over the carousel hero. */
body.orn-page--trip-journeys-home .orn-header,
body.orn-page--destination .orn-header { position: absolute; top: 0; left: 0; right: 0; z-index: 50; padding-bottom: 40px; background: linear-gradient(to bottom, var(--color-primary, #E4002B) 0%, var(--color-primary, #E4002B) 35%, color-mix(in srgb, var(--color-primary, #E4002B) 75%, transparent) 55%, color-mix(in srgb, var(--color-primary, #E4002B) 35%, transparent) 78%, transparent 100%) !important; backdrop-filter: none; -webkit-backdrop-filter: none; }
body.orn-page--trip-journeys-home .orn-lp-hero { position: relative; }
@media (max-width: 900px) {
    .orn-page--welcome-home .orn-lp-hero,
    .orn-page--trip-journeys-home .orn-lp-hero { min-height: 0; }
    .orn-page--welcome-home .orn-lp-hero__inner,
    .orn-page--trip-journeys-home .orn-lp-hero__inner { padding-top: 150px; padding-bottom: 48px; }
}
@media (max-width: 640px) {
    body.orn-lp-page.orn-page--welcome-home .orn-lp-hero__hd,
    body.orn-page--trip-journeys-home .orn-lp-hero__hd { line-height: 1.02 !important; }
    .orn-page--welcome-home .orn-lp-hero__sub,
    .orn-page--trip-journeys-home .orn-lp-hero__sub { font-size: 20px; }
    .orn-page--welcome-home .orn-lp-hero__lede,
    .orn-page--trip-journeys-home .orn-lp-hero__lede { font-size: 15px; max-width: 280px; }
}
.orn-page--journeys-home .orn-section--black .orn-secthead__title,
.orn-page--trip-journeys-home .orn-section--black .orn-secthead__title,
.orn-page--welcome-home .orn-section--black .orn-secthead__title,
.orn-fleet-page .orn-section--black .orn-secthead__title,
.orn-page--welcome-home .orn-section--black .orn-lp-secthead__title { color: #fff; }
.orn-page--journeys-home .orn-section--black .orn-secthead__title em,
.orn-page--trip-journeys-home .orn-section--black .orn-secthead__title em,
.orn-page--welcome-home .orn-section--black .orn-secthead__title em,
.orn-fleet-page .orn-section--black .orn-secthead__title em { color: #fff; }
.orn-page--welcome-home .orn-secthead__lede,
.orn-page--trip-journeys-home .orn-secthead__lede,
.orn-fleet-page .orn-section--black .orn-secthead__lede { color: #bbb; }
.orn-fleet-page .orn-section--black .orn-secthead__eyebrow { display: block; color: #E4002B; }
.orn-page--welcome-home .orn-tstm__proof-v,
.orn-page--trip-journeys-home .orn-tstm__proof-v { color: #fff; }
.orn-page--welcome-home .orn-tstm__proof-k,
.orn-page--trip-journeys-home .orn-tstm__proof-k { color: #bbb; }
.orn-page--welcome-home .orn-vstory__name,
.orn-page--trip-journeys-home .orn-vstory__name { color: #fff; }
.orn-page--welcome-home .orn-vstory__sub,
.orn-page--trip-journeys-home .orn-vstory__sub { color: #bbb; }
.orn-page--welcome-home .orn-tstm__card,
.orn-page--trip-journeys-home .orn-tstm__card { box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.14), 0 24px 56px rgba(255, 255, 255, 0.12), 0 8px 22px rgba(0, 0, 0, 0.5) !important; border-color: rgba(255, 255, 255, 0.10) !important; transition: transform 0.25s ease, box-shadow 0.25s ease; }
.orn-page--welcome-home .orn-tstm__card:hover,
.orn-page--trip-journeys-home .orn-tstm__card:hover { transform: translateY(-4px); box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.22), 0 32px 72px rgba(255, 255, 255, 0.18), 0 14px 32px rgba(0, 0, 0, 0.55) !important; }

/* Testimonials scrolling carousel — shared across welcome and trip/journeys home. */
.orn-tstm__scroller { position: relative; margin-top: 24px; }
.orn-tstm__track { display: flex; gap: 20px; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding: 4px 4px 20px; scrollbar-width: thin; }
.orn-tstm__track::-webkit-scrollbar { height: 8px; }
.orn-tstm__track::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.2); border-radius: 4px; }
.orn-tstm__card--scroll { flex: 0 0 360px; scroll-snap-align: start; max-width: 90vw; }
.orn-tstm__proof-nav { align-self: center; margin-left: auto; }
@media (max-width: 640px) {
    .orn-tstm__card--scroll { flex-basis: 85vw; }
}

/* Hero carousel — 2-slide crossfade with dot nav. Each slide holds its own image + copy
   so image and text fade together. Image is full-bleed (edge-to-edge); the copy block
   sits inside .orn-container so its horizontal alignment matches the rest of the page. */
.orn-page--content .orn-secthead__lede { font-size: 16px; line-height: 1.65; color: rgb(58, 70, 84); max-width: 780px; margin: 14px 0 0; }
.orn-page--content .orn-section { padding-block: clamp(40px, 4vw, 56px); }
.orn-page--content .orn-container { padding-inline: clamp(28px, 2vw, 140px); }
@media (max-width: 640px) {
    .orn-page--content .orn-container { padding-bottom: 30px; }
}
.orn-page--van-tour-detail .orn-container { padding-inline: 0; }
.orn-page--content .orn-hero__inner { padding-block: clamp(36px, 4vw, 60px); }
.orn-page--content .orn-hero__title { font-size: 42px; line-height: 1.15; max-width: 900px; }
.orn-page--content .orn-hero__lede { max-width: 640px; }
.orn-page--content .orn-hiw-cta__row .orn-btn--ghost { color: var(--orn-navy); border-color: rgba(20, 35, 59, 0.28); background: transparent; }
.orn-page--content .orn-hiw-cta__row .orn-btn--ghost:hover { background: rgba(20, 35, 59, 0.04); }

/* how-it-works — small local extras (rule margin + rule→title tightening) */
.orn-page--how-it-works .orn-hiw-rule { margin: 0 0 22px; }
.orn-page--how-it-works .orn-hiw-rule + .orn-secthead__title { margin-top: 4px; }

/* Collapse vertical spacing when two same-tone cream sections stack. */
.orn-page--how-it-works .orn-section--cream + .orn-section--cream { padding-block-start: 8px; margin-top: -8px; }

/* Cards on the "From booking to boarding" grid — icon tile + variant. */
.orn-page--how-it-works .orn-tier { position: relative; padding: 30px 26px 26px; background: #fff; border-radius: 14px; box-shadow: 0 8px 22px rgba(20, 35, 59, 0.06); display: flex; flex-direction: column; gap: 12px; min-height: 220px; }
.orn-page--how-it-works .orn-tier__topline { margin-bottom: 22px; }
.orn-page--how-it-works .orn-tier__eyebrow { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 10px; background: rgba(201, 164, 92, 0.14); color: rgb(140, 100, 40); font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 10px; font-weight: 700; letter-spacing: 0.12em; padding: 6px; text-align: center; line-height: 1.1; }
.orn-page--how-it-works .orn-tier__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-size: 19px; font-weight: 700; color: var(--orn-navy); margin: 0; }
.orn-page--how-it-works .orn-tier__lede { font-size: 14.5px; line-height: 1.6; color: rgb(58, 70, 84); margin: 0; }

/* Second rule inside a merged section gets top space above it. */
.orn-page--how-it-works .orn-hiw-rule--spaced { margin-top: 76px; }

/* Navy accent tier — used for the "On the road" card. */
.orn-page--how-it-works .orn-tier--navy { background: var(--orn-navy); color: rgb(233, 239, 246); }
.orn-page--how-it-works .orn-tier--navy .orn-tier__title { color: #fff; }
.orn-page--how-it-works .orn-tier--navy .orn-tier__lede { color: rgba(233, 239, 246, 0.86); }
.orn-page--how-it-works .orn-tier__eyebrow--check { background: rgb(31, 128, 68); color: #fff; font-size: 22px; font-weight: 800; letter-spacing: 0; padding: 0; }

/* ─── How-it-works — rebuilt section components ───────────────── */

/* 03 · From booking to boarding — plain white cards, small eyebrow */
.orn-hiw-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; margin-top: 34px; }
.orn-hiw-card { background: #fff; border-radius: 14px; padding: 28px 26px; box-shadow: 0 8px 22px rgba(20, 35, 59, 0.06); display: flex; flex-direction: column; gap: 12px; }
.orn-hiw-card__eyebrow { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 11px; letter-spacing: 0.22em; font-weight: 700; color: rgb(242, 13, 22); }
.orn-hiw-card__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-size: 20px; font-weight: 700; color: var(--orn-text); margin: 4px 0 0; }
.orn-hiw-card__lede { font-size: 14.5px; line-height: 1.6; color: rgb(58, 70, 84); margin: 0; }
@media (max-width: 900px) {
    .orn-hiw-cards { grid-template-columns: 1fr; }
}

/* 04 · One fare — single white pill, 2 col × 4 row, green checks */
.orn-hiw-inclusions { list-style: none; padding: 26px 32px; margin: 34px 0 22px; background: #fff; border-radius: 18px; box-shadow: 0 8px 22px rgba(20, 35, 59, 0.06); display: grid; grid-template-columns: 1fr 1fr; column-gap: 44px; row-gap: 0; }
.orn-hiw-inclusions li { display: flex; align-items: center; gap: 14px; padding: 16px 4px; font-size: 15.5px; color: var(--orn-text); font-weight: 500; border-top: 1px solid rgb(230, 224, 210); }
.orn-hiw-inclusions li:first-child, .orn-hiw-inclusions li:nth-child(2) { border-top: 0; }
.orn-hiw-inclusions li::before { content: "\2713"; color: rgb(31, 128, 68); font-size: 18px; font-weight: 800; flex-shrink: 0; width: 22px; }
.orn-hiw-fare-foot { font-size: 13.5px; color: rgb(122, 133, 147); line-height: 1.6; margin: 8px 0 0; }
@media (max-width: 720px) {
    .orn-hiw-inclusions { grid-template-columns: 1fr; }
    .orn-hiw-inclusions li:nth-child(2) { border-top: 1px solid rgb(230, 224, 210); }
}

/* 05 · Priced like an airline — bar chart */
.orn-hiw-fares { background: #fff; border-radius: 18px; padding: 40px 36px 32px; box-shadow: 0 8px 22px rgba(20, 35, 59, 0.06); margin-top: 34px; }
.orn-hiw-fares__chart { display: grid; grid-template-columns: repeat(4, 1fr); align-items: end; gap: 30px; height: 260px; padding: 0 12px 12px; border-bottom: 1px solid rgb(230, 224, 210); }
.orn-hiw-fare { display: flex; flex-direction: column; align-items: center; gap: 8px; height: 100%; justify-content: flex-end; }
.orn-hiw-fare__cap { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 13px; font-weight: 700; color: rgb(242, 13, 22); }
.orn-hiw-fare__cap--low { color: rgb(31, 128, 68); }
.orn-hiw-fare__cap--high { color: rgb(140, 100, 40); }
.orn-hiw-fare__bar { width: 78%; max-width: 130px; background: linear-gradient(rgb(237, 184, 179), rgb(242, 13, 22)); border-radius: 8px 8px 0 0; box-shadow: inset 0 -4px 0 rgba(0, 0, 0, 0.08); }
.orn-hiw-fare__bar--low { background: linear-gradient(rgb(62, 154, 106), rgb(201, 10, 18)); }
.orn-hiw-fare__bar--high { background: linear-gradient(rgb(242, 13, 22), rgb(158, 8, 16)); }
.orn-hiw-fares__labels { display: grid; grid-template-columns: repeat(4, 1fr); gap: 30px; margin-top: 18px; padding: 0 12px; }
.orn-hiw-fare-label { text-align: center; }
.orn-hiw-fare-label__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 700; font-size: 16px; color: var(--orn-text); }
.orn-hiw-fare-label__sub { font-size: 13.5px; color: rgb(242, 13, 22); margin-top: 4px; }
.orn-hiw-fares__note { margin: 28px 0 0; font-size: 15px; line-height: 1.6; color: rgb(58, 70, 84); text-align: center; }
@media (max-width: 720px) {
    .orn-hiw-fares__chart { height: 200px; gap: 14px; }
    .orn-hiw-fares__labels { gap: 14px; }
    .orn-hiw-fare-label__title { font-size: 14px; }
    .orn-hiw-fare-label__sub { font-size: 12px; }
}

/* 07 · Why ORN — pillar cards + navy stat bar */
.orn-hiw-pillars { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; margin-top: 34px; }
.orn-hiw-pillar { background: #fff; border-radius: 14px; padding: 30px 28px 26px; box-shadow: 0 8px 22px rgba(20, 35, 59, 0.06); display: flex; flex-direction: column; gap: 12px; }
.orn-hiw-pillar__icon { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 10px; background: rgba(201, 201, 201, 0.18); color: var(--orn-navy); margin-bottom: 22px; }
.orn-hiw-pillar__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-size: 19px; font-weight: 700; color: var(--orn-text); margin: 0; }
.orn-hiw-pillar__lede { font-size: 14.5px; line-height: 1.6; color: rgb(58, 70, 84); margin: 0; }
@media (max-width: 900px) {
    .orn-hiw-pillars { grid-template-columns: 1fr; }
}

.orn-hiw-statbar { background: var(--orn-text); color: rgb(233, 239, 246); border-radius: 18px; padding: 34px 40px; margin-top: 28px; display: grid; grid-template-columns: repeat(5, 1fr); gap: 22px; }
.orn-hiw-statbar__stat { text-align: left; }
.orn-hiw-statbar__n { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 40px; line-height: 1; color: #fff; }
.orn-hiw-statbar__l { margin-top: 6px; font-size: 13.5px; color: rgba(233, 239, 246, 0.72); }
@media (max-width: 900px) {
    .orn-hiw-statbar { grid-template-columns: repeat(2, 1fr); padding: 24px 28px; }
    .orn-hiw-statbar__n { font-size: 32px; }
}

/* Ghost button on cream — visible navy outline instead of the white one
   which .orn-btn--ghost uses for the dark hero band. */
.orn-hiw-cta__row .orn-btn--ghost { color: var(--orn-navy); border-color: rgba(20, 35, 59, 0.28); background: transparent; }
.orn-hiw-cta__row .orn-btn--ghost:hover { background: rgba(20, 35, 59, 0.04); }

/* Merged section 01 — subtitles for the four inner topics. */
.orn-page--how-it-works .orn-hiw-subtitle { font-size: 24px; line-height: 1.25; margin-top: 40px; }
.orn-page--how-it-works .orn-hiw-subtitle + .orn-secthead__lede { margin-top: 8px; }

/* ─── How-it-works — From-the-road gallery ────────────────────── */
.orn-hiw-gallery__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; flex-wrap: wrap; margin-bottom: 26px; }
.orn-hiw-gallery__eyebrow { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 11.5px; letter-spacing: 0.24em; color: rgb(242, 13, 22); font-weight: 700; margin: 0 0 8px; }
.orn-hiw-gallery__title { font-size: 28px; margin: 0; }
.orn-hiw-gallery__follow { display: inline-flex; align-items: center; gap: 10px; padding: 12px 20px; border: 1px solid rgba(20, 35, 59, 0.16); border-radius: 999px; background: transparent; color: var(--orn-text); font-weight: 600; font-size: 14.5px; text-decoration: none; }
.orn-hiw-gallery__follow:hover { background: rgba(20, 35, 59, 0.04); }

.orn-hiw-gallery__grid { display: grid; grid-template-columns: 300px 1fr; gap: 16px; }
.orn-hiw-gallery__reel { position: relative; display: block; border-radius: 18px; overflow: hidden; background-size: cover; background-position: center; min-height: 460px; text-decoration: none; color: #fff; }
.orn-hiw-gallery__reel::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20, 35, 59, 0.05) 45%, rgba(20, 35, 59, 0.85) 100%); }
.orn-hiw-gallery__reel-tag { position: absolute; top: 16px; left: 16px; z-index: 2; display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border-radius: 999px; background: rgba(20, 35, 59, 0.6); color: rgb(201, 164, 92); font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 11px; letter-spacing: 0.18em; font-weight: 700; }
.orn-hiw-gallery__reel-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 2; width: 66px; height: 66px; border-radius: 50%; background: rgba(255, 255, 255, 0.9); color: var(--orn-navy); display: inline-flex; align-items: center; justify-content: center; font-size: 22px; padding-left: 4px; }
.orn-hiw-gallery__reel-caption { position: absolute; left: 22px; right: 22px; bottom: 22px; z-index: 2; color: #fff; }
.orn-hiw-gallery__reel-title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 700; font-size: 20px; line-height: 1.2; }
.orn-hiw-gallery__reel-sub { font-size: 13.5px; color: rgba(255, 255, 255, 0.72); margin-top: 4px; }

.orn-hiw-gallery__tiles { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 220px; gap: 14px; }
.orn-hiw-gallery__tile { display: block; border-radius: 16px; background-size: cover; background-position: center; background-color: rgb(230, 224, 210); text-decoration: none; position: relative; overflow: hidden; }
.orn-hiw-gallery__tile--reel::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20, 35, 59, 0) 55%, rgba(20, 35, 59, 0.5) 100%); }
.orn-hiw-gallery__tile-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 2; width: 44px; height: 44px; border-radius: 50%; background: rgba(255, 255, 255, 0.9); color: var(--orn-navy); display: inline-flex; align-items: center; justify-content: center; font-size: 15px; padding-left: 3px; }
.orn-hiw-gallery__note { font-size: 13.5px; color: rgb(122, 133, 147); line-height: 1.6; margin: 22px 0 0; }

.orn-hiw-gallery__reel[data-video-src], .orn-hiw-gallery__tile--reel[data-video-src] { cursor: pointer; }

.orn-hiw-vmodal { position: fixed; inset: 0; z-index: 9000; display: flex; align-items: center; justify-content: center; }
.orn-hiw-vmodal[hidden] { display: none; }
.orn-hiw-vmodal__scrim { position: absolute; inset: 0; background: rgba(10, 14, 23, 0.92); }
.orn-hiw-vmodal__stage { position: relative; height: min(92vh, 900px); aspect-ratio: 9 / 16; max-width: 92vw; background: #000; border-radius: 16px; overflow: hidden; box-shadow: 0 30px 80px rgba(0, 0, 0, 0.55); }
.orn-hiw-vmodal__video { width: 100%; height: 100%; display: block; background: #000; object-fit: contain; }
.orn-hiw-vmodal__close { position: absolute; top: 14px; right: 14px; width: 40px; height: 40px; border-radius: 50%; background: rgba(20, 35, 59, 0.55); color: #fff; border: 0; display: flex; align-items: center; justify-content: center; padding: 0; cursor: pointer; backdrop-filter: blur(4px); transition: background 150ms ease, transform 150ms ease; z-index: 2; }
.orn-hiw-vmodal__close:hover { background: rgba(20, 35, 59, 0.85); transform: scale(1.06); }
.orn-hiw-vmodal__close svg { width: 18px; height: 18px; }
@media (max-width: 640px) {
    .orn-hiw-vmodal__stage { width: 100vw; height: 100vh; max-width: none; aspect-ratio: auto; border-radius: 0; }
    .orn-hiw-vmodal__video { object-fit: cover; }
    .orn-hiw-vmodal__close { top: 12px; right: 12px; width: 42px; height: 42px; }
}

@media (max-width: 1024px) {
    .orn-hiw-gallery__grid { grid-template-columns: 1fr; }
    .orn-hiw-gallery__reel { min-height: 340px; }
}
@media (max-width: 720px) {
    .orn-hiw-gallery__tiles { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 180px; }
    .orn-hiw-gallery__title { font-size: 22px; }
}

/* ─── About ORN — 4×3 tile grid, country chips, audience split ─── */

.orn-about-tiles { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-top: 34px; }
.orn-about-tile { background: #fff; border-radius: 14px; padding: 26px 24px 24px; box-shadow: 0 8px 22px rgba(20, 35, 59, 0.06); border: 1px solid rgb(231, 231, 231); display: flex; flex-direction: column; gap: 10px; }
.orn-about-tile__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 700; font-size: 16px; color: var(--orn-text); margin: 0; }
.orn-about-tile__lede { font-size: 13px; line-height: 1.6; color: rgb(58, 70, 84); margin: 0; }
@media (max-width: 1024px) {
    .orn-about-tiles { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
    .orn-about-tiles { grid-template-columns: 1fr; }
}

/* Country chip cloud (section 03) */
.orn-about-countries { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 30px; }
.orn-about-country { display: inline-flex; align-items: center; padding: 10px 16px; background: #fff; border: 1px solid rgb(230, 224, 210); border-radius: 999px; font-size: 14px; font-weight: 500; color: var(--orn-navy); }

/* Audience split (section 04) — For travellers + For agents */
.orn-about-audience { display: grid; grid-template-columns: repeat(2, 1fr); gap: 22px; margin-top: 34px; }
.orn-about-audience__card { background: #fff; border-radius: 18px; padding: 34px 32px; box-shadow: 0 8px 22px rgba(20, 35, 59, 0.06); display: flex; flex-direction: column; gap: 12px; }
.orn-about-audience__eyebrow { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 11.5px; letter-spacing: 0.22em; font-weight: 700; color: rgb(242, 13, 22); }
.orn-about-audience__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 24px; color: var(--orn-text); margin: 4px 0 0; }
.orn-about-audience__lede { font-size: 15.5px; line-height: 1.65; color: rgb(58, 70, 84); margin: 0; }
@media (max-width: 900px) {
    .orn-about-audience { grid-template-columns: 1fr; }
}

/* Section 05 · centered rule (both sides) */
.orn-hiw-rule--center { justify-content: center; }
.orn-hiw-rule--center .orn-hiw-rule__line { max-width: 220px; }

/* About-orn page rhythm — mirrors how-it-works constraints. */
/* about-orn — rule margin only (rest inherited from .orn-page--content) */
.orn-page--about-orn .orn-hiw-rule { margin: 0 0 22px; }

/* ─── About ORN — navy statement + navy end-to-end ─────────────── */

/* Navy statement band: THE ORN IDEA */
.orn-about-idea { background: var(--orn-text); color: #fff; padding-block: clamp(60px, 6vw, 96px); }
.orn-about-idea__eyebrow { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 12px; letter-spacing: 0.28em; color: var(--orn-navy); font-weight: 600; margin: 0; }
.orn-about-idea__statement { font-family: Spectral, Georgia, serif; font-size: 30px; line-height: 1.42; margin: 18px 0 0; max-width: 900px; color: rgb(244, 239, 227); }
.orn-about-idea__mark { color: var(--orn-navy); }
@media (max-width: 720px) {
    .orn-about-idea__statement { font-size: 22px; line-height: 1.4; }
}

.orn-about-film { background: rgb(243, 243, 243); padding-block: clamp(48px, 5vw, 80px); }
.orn-about-film__eyebrow { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 12px; letter-spacing: 0.28em; text-transform: uppercase; color: var(--orn-navy); font-weight: 600; margin: 0; }
.orn-about-film__title { font-family: var(--orn-font-display); font-size: 32px; line-height: 1.1; letter-spacing: -0.01em; color: var(--orn-text); margin: 14px 0 0; max-width: 900px; }
.orn-about-film__lede { color: rgb(90, 101, 115); font-size: 17px; line-height: 1.5; margin: 14px 0 0; max-width: 720px; }
.orn-about-film__video { margin-top: 32px; border-radius: 20px; overflow: hidden; background: rgb(15, 15, 15); box-shadow: rgba(20, 35, 59, 0.14) 0 20px 48px; }
.orn-about-film__video video { display: block; width: 100%; height: auto; }
@media (max-width: 720px) {
    .orn-about-film__title { font-size: 30px; }
}

/* Navy end-to-end band + gold-tab stat cards */
.orn-about-end2end { background: var(--orn-text); color: #fff; padding-block: clamp(56px, 6vw, 90px); }
.orn-about-end2end__eyebrow { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 12px; letter-spacing: 0.28em; color: var(--orn-navy); font-weight: 600; margin: 0 0 22px; }
.orn-about-end2end__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 32px; line-height: 1.15; letter-spacing: -0.01em; color: rgb(244, 239, 227); margin: 0; max-width: 900px; }
.orn-about-end2end__lede { font-size: 16px; line-height: 1.65; color: rgba(233, 239, 246, 0.72); max-width: 780px; margin: 18px 0 0; }
.orn-about-stats { margin-top: 36px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.orn-about-stat { background: rgb(21, 21, 21); border: 1px solid rgb(38, 38, 38); border-radius: 14px; padding: 18px 20px; }
.orn-about-stat__n { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 40px; line-height: 1; color: rgb(244, 239, 227); }
.orn-about-stat__l { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 11px; letter-spacing: 0.12em; color: rgba(233, 239, 246, 0.55); margin-top: 10px; font-weight: 600; }
@media (max-width: 900px) {
    .orn-about-stats { grid-template-columns: repeat(2, 1fr); }
    .orn-about-end2end__title { font-size: 32px; }
}

/* ─── About ORN — Trusted-by-travellers world map ──────────────── */
.orn-about-world { background: #000; color: rgb(233, 239, 246); padding-block: clamp(56px, 7vw, 96px); }
.orn-about-world__inner { text-align: center; }
.orn-about-world__eyebrow { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 12px; letter-spacing: 0.28em; color: var(--orn-navy); font-weight: 600; margin: 0 0 14px; }
.orn-about-world__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 34px; line-height: 1.15; letter-spacing: -0.01em; color: #fff; margin: 0 0 44px; }
.orn-about-world__map { position: relative; width: 100%; max-width: 1100px; aspect-ratio: 60 / 30; margin: 0 auto; }
.orn-about-world__grid { position: absolute; inset: 0; }
.orn-about-world__dot-land, .orn-about-world__dot-origin { position: absolute; aspect-ratio: 1 / 1; border-radius: 50%; transform: translate(-50%, -50%); }
.orn-about-world__dot-land { width: 0.34%; background: rgb(36, 59, 84); }
.orn-about-world__dot-origin { width: 0.64%; background: radial-gradient(circle, rgba(228, 196, 137, 0.34) 0%, rgba(228, 196, 137, 0) 70%), rgb(243, 180, 175); box-shadow: 0 0 8px 2px rgba(243, 180, 175, 0.55); animation: 3.4s ease-in-out 0s infinite normal none running ornpulse; }
@keyframes ornpulse {
    0%, 100% { opacity: 0.9; transform: translate(-50%, -50%) scale(1); }
    50% { opacity: 1; transform: translate(-50%, -50%) scale(1.35); }
}
.orn-about-world__ocean { position: absolute; font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 12px; letter-spacing: 0.26em; color: rgba(120, 145, 175, 0.6); pointer-events: none; z-index: 1; }
.orn-about-world__ocean--pacific { top: 42%; left: 14%; }
.orn-about-world__ocean--atlantic { top: 46%; left: 40%; }
.orn-about-world__ocean--indian { top: 74%; left: 64%; }

.orn-about-world__legend { display: flex; justify-content: space-between; gap: 2px; max-width: 900px; margin: 40px auto 0; padding-top: 22px; border-top: 1px solid rgba(255, 255, 255, 0.06); flex-wrap: wrap; }
.orn-about-world__region { display: inline-flex; align-items: center; gap: 10px; flex: 1 1 180px; min-width: 180px; }
.orn-about-world__dot { width: 7px; height: 7px; border-radius: 50%; background: rgb(243, 180, 175); box-shadow: rgba(228, 196, 137, 0.55) 0px 0px 7px 1px; flex-shrink: 0; }
.orn-about-world__region-label { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 12.5px; letter-spacing: 0.2em; color: var(--orn-navy); font-weight: 600; }
.orn-about-world__region-n { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 12px; color: rgb(110, 130, 152); margin-left: auto; }
@media (max-width: 720px) {
    .orn-about-world__title { font-size: 24px; }
    .orn-about-world__ocean { font-size: 9px; letter-spacing: 0.2em; }
}

/* About-ORN — world-map legend country lists */
.orn-about-world__legend { align-items: flex-start !important; }
.orn-about-world__region-col { flex: 1 1 220px; min-width: 220px; text-align: left; }
.orn-about-world__region-col .orn-about-world__region { padding-bottom: 12px; border-bottom: 1px solid rgba(255, 255, 255, 0.06); margin-bottom: 14px; }
.orn-about-world__country-list { list-style: none; padding: 0; margin: 0; columns: 2; column-gap: 22px; }
.orn-about-world__country-list--single { columns: 1; }
.orn-about-world__country-list li { display: flex; align-items: flex-start; gap: 9px; padding: 4px 0; font-size: 14.5px; color: rgb(195, 204, 214); break-inside: avoid; }
.orn-about-world__country-list li::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: rgb(78, 99, 119); flex-shrink: 0; margin-top: 8px; }
.orn-page--about-orn .orn-about-world__foot, .orn-about-world__foot { margin: 44px auto 0; text-align: center !important; font-size: 19px; color: rgb(159, 176, 196); width: 100%; max-width: 900px; }
.orn-about-world__foot strong { font-size: 22px; font-weight: 700; color: var(--orn-navy); }
@media (max-width: 900px) {
    .orn-about-world__country-list { columns: 1; }
}

/* ─── Investors page ───────────────────────────────────────────── */

/* Page rhythm — mirrors how-it-works / about-orn */
/* investors — rule margin only (rest inherited from .orn-page--content) */
.orn-page--investors .orn-hiw-rule { margin: 0 0 22px; }

/* Board & backers — split-column person cards */
.orn-inv-board { display: grid; grid-template-columns: 1fr; gap: 22px; margin-top: 34px; }
.orn-inv-person { position: relative; background: #fff; border-radius: 16px; padding: 26px 28px 26px 32px; box-shadow: 0 8px 22px rgba(20, 35, 59, 0.06); display: grid; grid-template-columns: 76px 1fr; gap: 24px; align-items: start; overflow: hidden; }
.orn-inv-person::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--orn-inv-accent, rgb(201, 164, 92)); }
.orn-inv-person__avatar { width: 60px; height: 60px; border-radius: 50%; background: var(--orn-inv-accent, rgb(201, 164, 92)); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 18px; letter-spacing: 0.06em; }
.orn-inv-person__body { display: flex; flex-direction: column; gap: 10px; }
.orn-inv-person__head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.orn-inv-person__name { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 22px; color: var(--orn-text); margin: 0; line-height: 1.15; }
.orn-inv-person__pill { display: inline-flex; align-items: center; padding: 5px 14px; background: var(--orn-navy-2); color: #fff; border-radius: 999px; font-size: 12.5px; font-weight: 600; letter-spacing: 0.02em; }
.orn-inv-person__role { font-size: 14.5px; color: var(--orn-text); line-height: 1.55; margin: 0; font-weight: 600; }
.orn-inv-person__bio { font-size: 15px; line-height: 1.65; color: rgb(58, 70, 84); margin: 4px 0 0; }
@media (max-width: 720px) {
    .orn-inv-person { grid-template-columns: 1fr; gap: 18px; padding: 22px 22px 22px 26px; }
    .orn-inv-person__name { font-size: 20px; }
}

/* Governance pillars — 3-column variant with mono eyebrow */
.orn-hiw-pillars--3 { grid-template-columns: repeat(3, 1fr); }
.orn-inv-pillar__eyebrow { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 11px; letter-spacing: 0.22em; font-weight: 700; color: rgb(242, 13, 22); margin-bottom: 14px; }
@media (max-width: 900px) {
    .orn-hiw-pillars--3 { grid-template-columns: 1fr; }
}

/* Investors — THE ORN IDEA rounded navy card */
.orn-inv-idea { background: var(--orn-navy); color: #fff; border: 1px solid var(--orn-navy); border-radius: 22px; padding: 48px 52px; max-width: 1100px; margin: 0 auto; box-shadow: rgba(20, 20, 20, 0.04) 0px 1px 2px, rgba(20, 20, 20, 0.06) 0px 14px 34px; }
/* On the home page the card sits inside the same container as the journey grid;
   let it fill the container so the left/right edges line up with the neighbouring sections. */
.orn-page--home .orn-inv-idea { max-width: none; }
.orn-page--investors .orn-inv-idea { background: var(--orn-text); border-color: var(--orn-text); color: #fff; }
.orn-page--investors .orn-inv-idea__eyebrow { color: var(--orn-navy); }
.orn-page--investors .orn-inv-idea__tagline { color: var(--orn-navy); }
.orn-inv-idea__eyebrow { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 12px; letter-spacing: 0.28em; color: #fff; font-weight: 600; margin: 0 0 22px; }
.orn-inv-idea__statement { font-family: "Spectral", Georgia, serif; font-weight: 500; font-size: 32px; line-height: 1.28; margin: 0; max-width: 880px; color: #fff; }
.orn-inv-idea__tagline { font-family: "Spectral", Georgia, serif; font-weight: 500; font-size: 26px; color: #fff; margin: 22px 0 0; line-height: 1.2; }
.orn-inv-idea__tagline em { font-style: italic; }
.orn-inv-idea__lede { font-size: 16.5px; line-height: 1.65; color: #fff; margin: 26px 0 0; max-width: 780px; }
@media (max-width: 720px) {
    .orn-inv-idea__statement { font-size: 24px; }
    .orn-inv-idea__tagline { font-size: 20px; }
}

/* Investors — hero stat strip below the lede */
.orn-inv-hero-stats { display: flex; flex-wrap: wrap; align-items: flex-start; column-gap: clamp(20px, 3vw, 40px); row-gap: 22px; margin-top: 56px; }
.orn-page--investors .orn-hero__copy { max-width: none; }
.orn-page--investors .orn-inv-hero-stats { flex-wrap: nowrap; width: max-content; max-width: 100%; }
.orn-inv-hero-stat { flex: 0 0 auto; }
.orn-inv-hero-stat__n { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 26px; font-weight: 500; color: rgb(244, 239, 227); line-height: 1.1; white-space: nowrap; }
.orn-inv-hero-stat__l { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 11px; letter-spacing: 0.22em; color: rgba(233, 239, 246, 0.55); margin-top: 12px; font-weight: 600; white-space: nowrap; }
@media (max-width: 720px) {
    /* Let the 3 stats wrap instead of overflowing off the right edge — the
       desktop override forces flex-wrap:nowrap + width:max-content. */
    .orn-page--investors .orn-inv-hero-stats,
    .orn-inv-hero-stats { flex-wrap: wrap; width: 100%; max-width: 100%; column-gap: 32px; row-gap: 20px; margin-top: 40px; }
    .orn-inv-hero-stat { flex: 0 0 auto; }
    .orn-inv-hero-stat__n { font-size: 24px; }
}

/* Investors — HCL Group navy band with 3 stat tiles */
.orn-inv-hcl { background: var(--orn-text); color: rgb(233, 239, 246); padding-block: clamp(52px, 6vw, 78px); }
.orn-inv-hcl__eyebrow { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 12px; letter-spacing: 0.24em; color: var(--orn-navy); font-weight: 600; margin: 0; }
.orn-inv-hcl__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 40px; color: rgb(244, 239, 227); margin: 12px 0 0; line-height: 1.1; }
.orn-inv-hcl__lede { font-size: 18px; color: rgb(175, 192, 210); line-height: 1.55; max-width: 820px; margin: 14px 0 0; }
.orn-inv-hcl__stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 34px; }
.orn-inv-hcl__stat { background: var(--orn-text); border: 1px solid rgb(35, 51, 71); border-radius: 14px; padding: 22px 24px; }
.orn-inv-hcl__stat-n { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 30px; color: rgb(244, 239, 227); line-height: 1; }
.orn-inv-hcl__stat-l { font-size: 14px; color: rgb(159, 176, 196); margin-top: 8px; }
@media (max-width: 720px) {
    .orn-inv-hcl__stats { grid-template-columns: 1fr; }
    .orn-inv-hcl__title { font-size: 30px; }
}

/* "How our backers think" — crisp title + 3 tight cards */
.orn-inv-think-section { padding-block: clamp(48px, 5vw, 68px) !important; }
.orn-inv-think-title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 30px; color: var(--orn-text); margin: 0 0 24px; letter-spacing: -0.01em; }
.orn-inv-think { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.orn-inv-think__card { background: #fff; border: 1px solid rgb(228, 221, 205); border-radius: 16px; padding: 24px; box-shadow: none; }
.orn-inv-think__card-title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 700; font-size: 20px; color: var(--orn-text); margin: 0; line-height: 1.2; }
.orn-inv-think__card-lede { font-size: 14.5px; color: rgb(90, 101, 115); line-height: 1.5; margin: 8px 0 0; }
@media (max-width: 900px) {
    .orn-inv-think { grid-template-columns: 1fr; }
}

/* Investor relations — beige pill bar with CTA on the right */
.orn-inv-ir { margin-top: 28px; background: rgb(253, 240, 239); border: 1px solid rgb(246, 203, 199); border-radius: 18px; padding: 24px 28px; display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.orn-inv-ir__copy { flex: 1 1 280px; }
.orn-inv-ir__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 22px; color: var(--orn-text); margin: 0; }
.orn-inv-ir__lede { font-size: 14.5px; color: rgb(90, 101, 115); margin: 4px 0 0; line-height: 1.55; }
.orn-inv-ir__cta { display: inline-flex; align-items: center; justify-content: center; padding: 14px 22px; border-radius: 10px; background: var(--orn-text); color: #fff; font-weight: 700; font-size: 15px; text-decoration: none; }
.orn-inv-ir__cta:hover { background: var(--orn-text); }

/* ─── Van tours page — matches how-it-works / about-orn rhythm ─── */
/* van-tours — page-specific overrides on top of .orn-page--content */
.orn-page--van-tours .orn-secthead { display: block; margin-bottom: 22px; }
.orn-page--van-tours .orn-secthead__title { font-size: 32px; }
.orn-page--van-tours .orn-secthead__lede { font-size: 15.5px; line-height: 1.55; color: rgb(90, 101, 115); max-width: 820px; margin: 8px 0 0; flex: none; }
.orn-page--van-tours .orn-container { padding-inline: clamp(28px, 4vw, 40px); }
.orn-page--van-tours .orn-hero__title { font-size: 56px; line-height: 1; max-width: 720px; }
.orn-page--van-tours .orn-hero__lede { max-width: 560px; font-size: 16.5px; }
.orn-page--van-tours .orn-btn--ghost { color: var(--orn-navy); border-color: rgba(20, 35, 59, 0.28); background: transparent; }
.orn-page--van-tours .orn-btn--ghost:hover { background: rgba(20, 35, 59, 0.04); }

/* ─── Van tours — hero split + PRIVATE VAN PASS card ────────────── */
.orn-van-hero { display: grid; grid-template-columns: minmax(360px, 1.2fr) minmax(360px, 440px); gap: 44px; align-items: center; }
.orn-van-hero__copy {}
.orn-van-hero__stats { display: grid; grid-template-columns: repeat(4, auto); column-gap: clamp(20px, 2.6vw, 44px); row-gap: 22px; margin-top: 40px; justify-content: start; }
.orn-van-hero__stat-n { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 28px; font-weight: 500; color: rgb(244, 239, 227); line-height: 1; white-space: nowrap; }
.orn-van-hero__stat-l { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 10.5px; letter-spacing: 0.2em; color: rgba(233, 239, 246, 0.5); margin-top: 8px; font-weight: 600; white-space: nowrap; }
@media (max-width: 1000px) {
    .orn-van-hero { grid-template-columns: 1fr; }
    .orn-van-hero__stats { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
    .orn-page--van-tours .orn-hero__title { font-size: 40px; }
}

.orn-van-pass { background: #fff; border-radius: 20px; overflow: hidden; box-shadow: 0 30px 70px rgba(0, 0, 0, 0.34); display: flex; flex-direction: column; width: 100%; max-width: 420px; margin-inline: auto; transform: rotate(1.3deg); }
.orn-van-pass__top { background: rgb(15, 15, 15); color: #fff; padding: 14px 20px; display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.orn-van-pass__brand { display: inline-flex; align-items: center; gap: 8px; }
.orn-van-pass__brand-disc { width: 30px; height: 30px; border-radius: 50%; background: var(--orn-navy); display: inline-flex; align-items: center; justify-content: center; overflow: hidden; }
.orn-van-pass__brand-disc img { width: 20px; height: 20px; filter: brightness(0) invert(1); }
.orn-van-pass__brand-mark { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; letter-spacing: 0.02em; font-size: 20px; color: #fff; }
.orn-van-pass__brand-divider { color: rgba(255, 255, 255, 0.3); }
.orn-van-pass__brand-eyebrow { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 10.5px; letter-spacing: 0.22em; color: rgba(255, 255, 255, 0.7); font-weight: 600; }
.orn-van-pass__badge { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 10.5px; letter-spacing: 0.22em; color: var(--orn-navy); font-weight: 600; }
.orn-van-pass__image { position: relative; aspect-ratio: 16 / 6; background-size: cover; background-position: center; }
.orn-van-pass__image::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20,35,59,0.05) 40%, rgba(20,35,59,0.72) 100%); }
.orn-van-pass__image-caption { position: absolute; left: 22px; bottom: 20px; z-index: 1; color: rgb(244, 239, 227); }
.orn-van-pass__image-eyebrow { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 10.5px; letter-spacing: 0.24em; color: rgb(243, 180, 175); font-weight: 700; }
.orn-van-pass__image-title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 26px; line-height: 1; margin-top: 6px; }
.orn-van-pass__body { padding: 16px 18px; background: #fff; color: rgb(15, 15, 15); }
.orn-van-pass__meta { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.orn-van-pass__meta-k { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 10px; letter-spacing: 0.22em; color: rgb(110, 110, 110); font-weight: 600; }
.orn-van-pass__meta-v { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 700; font-size: 15.5px; color: rgb(15, 15, 15); margin-top: 4px; }
.orn-van-pass__chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.orn-van-pass__chip { display: inline-flex; align-items: center; padding: 6px 13px; border: 1px solid rgb(243, 180, 175); border-radius: 999px; font-size: 12.5px; color: rgb(15, 15, 15); background: transparent; }
.orn-van-pass__foot { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 20px; padding-top: 18px; border-top: 1px dashed rgb(200, 186, 155); }
.orn-van-pass__barcode { display: inline-flex; align-items: stretch; gap: 2px; height: 32px; padding: 4px 2px; flex: 1; max-width: 260px; }
.orn-van-pass__barcode-bar { display: block; height: 100%; background: rgb(15, 15, 15); border-radius: 0.5px; }
.orn-van-pass__barcode-bar--gap { background: transparent; }
.orn-van-pass__cta { display: inline-flex; align-items: center; padding: 12px 20px; background: rgb(15, 15, 15); color: #fff; font-weight: 700; font-size: 14px; border-radius: 10px; text-decoration: none; white-space: nowrap; }
.orn-van-pass__cta:hover { background: rgb(0, 0, 0); }

/* ─── Van tours — Private van itinerary route cards ─────────────── */
.orn-van-usp { display: flex; flex-wrap: wrap; gap: 44px; margin-top: 22px; }
.orn-van-usp__item { display: flex; align-items: flex-start; gap: 14px; }
.orn-van-usp__ic { color: var(--orn-text); display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: 1px solid var(--orn-text); border-radius: 50%; flex-shrink: 0; }
.orn-van-usp__title { font-family: var(--orn-font-display); font-weight: 800; font-size: 15px; line-height: 1; color: var(--orn-text); }
.orn-van-usp__sub { font-size: 13px; color: rgb(110, 110, 110); margin-top: 2px; }
.orn-van-routes { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; margin-top: 28px; }
.orn-van-route { position: relative; background: #fff; border-radius: 16px; padding: 20px 22px; box-shadow: 0 4px 14px rgba(20, 35, 59, 0.05); display: flex; flex-direction: column; }
.orn-van-route__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.orn-van-route__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 22px; color: var(--orn-text); margin: 0; line-height: 1.1; }
.orn-van-route__seq { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 13px; color: rgb(58, 70, 84); margin: 6px 0 0; letter-spacing: 0.02em; line-height: 1.35; }
.orn-van-route__nights { background: rgb(243, 243, 243); color: var(--orn-text); font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 11.5px; font-weight: 700; letter-spacing: 0.04em; padding: 5px 11px; border-radius: 999px; white-space: nowrap; flex-shrink: 0; }
.orn-van-route__cities { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.orn-van-route__city { display: inline-flex; align-items: center; padding: 5px 12px; background: rgb(243, 243, 243); color: var(--orn-text); border-radius: 999px; font-size: 12.5px; font-weight: 600; }
.orn-van-route__desc { margin: 14px 0 0; color: var(--orn-ink-2, rgb(58, 70, 84)); font-family: var(--orn-font-body); font-size: 13.5px; line-height: 1.5; }
.orn-van-route__hi-label { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 10px; letter-spacing: 0.22em; color: rgb(242, 13, 22); font-weight: 700; margin-top: 14px; }
.orn-van-route__highlights { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; align-items: center; }
.orn-van-route__hi { display: inline-flex; padding: 4px 10px; border: 1px solid rgb(220, 203, 166); border-radius: 999px; font-size: 11.5px; color: rgb(58, 70, 84); background: transparent; }
.orn-van-route__hi-more { font-size: 11.5px; color: rgb(242, 13, 22); font-weight: 600; padding-left: 4px; }
.orn-van-route__foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-top: 16px; padding-top: 14px; }
.orn-van-route__price-label { font-family: var(--orn-font-mono, "JetBrains Mono", monospace); font-size: 11px; letter-spacing: 0; color: rgb(110, 110, 110); font-weight: 500; }
.orn-van-route__price-amount { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 22px; color: var(--orn-text); margin-top: 4px; line-height: 1; }
.orn-van-route__cta { display: inline-flex; align-items: center; padding: 10px 18px; background: var(--orn-text); color: #fff; font-weight: 700; font-size: 13.5px; border-radius: 10px; text-decoration: none; white-space: nowrap; }
.orn-van-route__cta:hover { background: rgb(0, 0, 0); }
@media (max-width: 900px) {
    .orn-van-routes { grid-template-columns: 1fr; }
    .orn-van-route__title { font-size: 20px; }
}

/* ─── Van tours — Hero (first tour) + grid of tiles ───────────── */
/* Container overrides the old 2-col route grid — the JS injects one
 * .orn-vhero + one .orn-van-grid inside #ornVanTourList. */
.orn-van-routes { display: block; margin-top: 28px; }

.orn-vhero {
    position: relative;
    display: block;
    border-radius: 20px;
    overflow: hidden;
    background: var(--color-primary, var(--orn-navy, #14233b)) center/cover no-repeat;
    color: #fff;
    text-decoration: none;
    box-shadow: 0 20px 42px rgba(20, 35, 59, 0.16);
    margin-bottom: 32px;
}
.orn-vhero::before {
    content: "";
    position: absolute; inset: 0;
    background: linear-gradient(90deg, rgba(0,0,0,0.72) 0%, rgba(0,0,0,0.5) 42%, rgba(0,0,0,0.05) 78%, rgba(0,0,0,0) 100%);
    pointer-events: none;
}
/* Extra bottom-up dark overlay so the price breakdown (Market / Savings /
   Rewards / Starting Price) sits on a legible ground regardless of the hero
   image behind it. */
.orn-vhero::after {
    content: "";
    position: absolute; left: 0; right: 0; bottom: 0;
    height: 55%;
    background: linear-gradient(to top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.4) 40%, rgba(0,0,0,0) 100%);
    pointer-events: none;
    z-index: 0;
}
.orn-vhero__inner { z-index: 1; }
.orn-vhero__inner {
    position: relative;
    padding: 30px 42px;
    max-width: 100%;
    display: flex;
    flex-direction: column;
    gap: 14px;
    justify-content: flex-start;
}
.orn-vhero__badge {
    align-self: flex-start;
    display: inline-flex; align-items: center; gap: 7px;
    background: #fff; color: var(--orn-text, #14233b);
    font-family: var(--orn-font-mono, monospace);
    font-weight: 800; font-size: 11.5px; letter-spacing: 0.12em;
    padding: 8px 16px; border-radius: 999px;
    margin-bottom: 4px;
}
.orn-vhero__badge-star { color: #F20D16; font-size: 12px; }
.orn-vhero__title {
    font-family: var(--orn-font-display, Archivo, sans-serif);
    font-weight: 800; font-size: 42px; line-height: 1.05;
    color: #fff; margin: 4px 0 0;
    text-shadow: 0 2px 18px rgba(0,0,0,0.35);
}
.orn-vhero__meta { display: flex; flex-direction: column; gap: 8px; }
.orn-vhero__meta-row { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: rgba(255,255,255,0.9); font-family: var(--orn-font-body); }
.orn-vhero__chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.orn-vhero__chip { display: inline-flex; padding: 6px 14px; border-radius: 999px; border: 1px solid rgba(255,255,255,0.5); color: #fff; font-size: 12.5px; font-weight: 600; background: transparent; }
.orn-vhero__chip--lead { background: #E4002B; border-color: #E4002B; color: #fff; box-shadow: 0 4px 12px rgba(228, 0, 43, 0.35); }
.orn-vhero__lede { margin-top: 10px; }
.orn-vhero__lede-label { font-family: var(--orn-font-mono, monospace); font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; color: rgba(255,255,255,0.75); font-weight: 700; }
.orn-vhero__lede-text { font-size: 15px; line-height: 1.5; color: rgba(255,255,255,0.94); margin: 6px 0 0; max-width: 575px; }
.orn-vhero__foot {
    display: flex; align-items: center; justify-content: space-between;
    gap: 24px; margin-top: 0; padding-top: 22px;
}
.orn-vhero__price { display: flex; flex-direction: column; }
.orn-vhero__price-label { font-family: var(--orn-font-mono, monospace); font-size: 12px; letter-spacing: 0.05em; color: rgba(255,255,255,0.78); font-weight: 500; }
.orn-vhero__price-amount { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 32px; color: #fff; line-height: 1; margin-top: 4px; }
.orn-vhero__price-suffix { font-size: 13px; color: rgba(255,255,255,0.72); margin-top: 4px; }
/* the party the starting price was divided by — a qualifier on the amount
   above it, so it reads quieter than the price and never competes with it */
.orn-vhero__price-basis { font-size: 12px; color: rgba(255,255,255,0.66); margin-top: 4px; }
/* dynamic-pricing disclaimer — quieter still than the basis, sits under it */
.orn-vhero__price-note { display: block; font-size: 11px; color: rgba(255,255,255,0.55); margin-top: 3px; font-style: italic; }
.orn-vhero__arrow {
    flex-shrink: 0;
    width: 56px; height: 56px; border-radius: 50%;
    background: #fff; color: var(--orn-text, #14233b);
    display: inline-flex; align-items: center; justify-content: center;
    box-shadow: 0 8px 22px rgba(0,0,0,0.24);
    transition: transform 0.15s ease-out;
}
.orn-vhero:hover .orn-vhero__arrow { transform: translateX(4px); }
@media (max-width: 900px) {
    .orn-vhero::before { background: linear-gradient(180deg, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.75) 60%, rgba(0,0,0,0.85) 100%); }
    .orn-vhero__inner { padding: 32px 24px; }
    .orn-vhero__title { font-size: 30px; }
}

/* Grid of tiles below the hero — 3 columns on desktop */
.orn-van-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
@media (max-width: 1080px) { .orn-van-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 700px)  { .orn-van-grid { grid-template-columns: 1fr; } }

/* Horizontal-scroll variant used on JD "Book Your Private Tour" strip */
.orn-van-scroll {
    display: flex;
    flex-wrap: nowrap;
    gap: 24px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 12px;
}
.orn-van-scroll > .orn-vtile {
    flex: 0 0 340px;
    width: 340px;
    max-width: 340px;
    min-width: 340px;
    scroll-snap-align: start;
}
.orn-van-scroll::-webkit-scrollbar { height: 8px; }
.orn-van-scroll::-webkit-scrollbar-thumb { background: rgba(20, 35, 59, 0.15); border-radius: 4px; }
@media (max-width: 700px) {
    /* Full-bleed the strip to the screen edges, then near-full-width cards with
       a small peek of the next — instead of a fixed 280px that left a large gap. */
    .orn-van-scroll { margin-inline: calc(var(--orn-gutter, 28px) * -1); padding-inline: 16px; scroll-padding-left: 16px; gap: 14px; }
    .orn-van-scroll > .orn-vtile { flex: 0 0 95%; width: 95%; max-width: 95%; min-width: 0; }
    .orn-vtile__image { height: 180px; }
    .orn-page--van-tour-detail .orn-container { padding: 20px; }
}

.orn-vtile {
    display: flex; flex-direction: column;
    background: #fff;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 8px 22px rgba(20, 35, 59, 0.08);
    text-decoration: none;
    color: inherit;
    transition: transform 0.16s ease-out, box-shadow 0.16s ease-out;
}
.orn-vtile:hover { transform: translateY(-3px); box-shadow: 0 16px 32px rgba(20, 35, 59, 0.14); }

.orn-vtile__image {
    position: relative;
    height: 220px;
    background: var(--orn-navy, #14233b) center/cover no-repeat;
}
.orn-vtile__tag {
    position: absolute; top: 14px; left: 14px;
    display: inline-flex; align-items: center; gap: 7px;
    background: #fff; color: var(--orn-text, #14233b);
    font-family: var(--orn-font-mono, monospace);
    font-weight: 800; font-size: 10.5px; letter-spacing: 0.12em;
    padding: 7px 14px; border-radius: 999px;
    box-shadow: 0 3px 10px rgba(0,0,0,0.14);
}
.orn-vtile__tag-star { color: #F20D16; font-size: 11px; }

.orn-vtile__body { display: flex; flex-direction: column; gap: 10px; padding: 22px 22px 22px; flex: 1; }
.orn-vtile__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 22px; line-height: 1.15; margin: 0; color: var(--orn-text); }
.orn-vtile__meta { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: rgb(80, 92, 108); font-family: var(--orn-font-body); }
.orn-vtile__chips { display: flex; flex-wrap: wrap; gap: 6px; }
.orn-vtile__chip { display: inline-flex; padding: 5px 12px; background: #fff; border: 1px solid rgb(228, 228, 228); color: var(--orn-text); border-radius: 999px; font-size: 12px; font-weight: 600; }
.orn-vtile__chip--more { background: transparent; border-style: dashed; border-color: rgb(200, 200, 200); color: var(--orn-mute, rgb(120, 120, 120)); font-weight: 500; }

.orn-vtile__lede { margin-top: 4px; }
.orn-vtile__lede-label { font-family: var(--orn-font-mono, monospace); font-size: 10.5px; letter-spacing: 0.2em; text-transform: uppercase; color: rgb(110, 110, 110); font-weight: 700; }
.orn-vtile__lede-text { font-size: 13.5px; line-height: 1.5; color: rgb(58, 70, 84); margin: 6px 0 0; }

.orn-vtile__foot { display: flex; align-items: flex-end; justify-content: space-between; margin-top: auto; padding-top: 12px; }
.orn-vtile__price { display: flex; flex-direction: column; }
.orn-vtile__price-label { font-family: var(--orn-font-mono, monospace); font-size: 11px; letter-spacing: 0.05em; color: rgb(110, 110, 110); font-weight: 500; }
.orn-vtile__price-amount { font-family: var(--orn-font-display, Archivo, sans-serif); font-weight: 800; font-size: 22px; color: var(--orn-text); line-height: 1; margin-top: 4px; }
.orn-vtile__price-redeem { font-size: 12px; color: var(--orn-navy); margin-top: 4px; }
.orn-vtile__price-gross { font-family: var(--orn-font-mono, monospace); font-size: 13px; color: rgb(140, 140, 140); text-decoration: line-through; margin-top: 4px; font-variant-numeric: tabular-nums; }
.orn-vtile__redeem { color: #1F7A3D; font-family: var(--orn-font-body); font-size: 12.5px; font-weight: 600; margin-top: 6px; line-height: 1.2; }
.orn-vtile__arrow {
    width: 40px; height: 40px; border-radius: 50%;
    background: #000;
    display: inline-flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    transition: transform 0.15s ease-out;
}
.orn-vtile:hover .orn-vtile__arrow { transform: translateX(3px); }

/* ─── Van Tour Detail page ─────────────────────────────────── */
.orn-vtd__hero { height: 340px; display: flex; align-items: flex-end; padding: 44px 0 20px; color: #fff; background-size: cover; background-position: center right; }

/* New product-image hero — reuses .orn-vhero from the listing page */
.orn-vtd__herowrap-outer { padding-top: 0; }
@media (min-width: 1100px) { .orn-vtd__herowrap-outer { padding-top: 20px; } }
.orn-vtd__herowrap { padding: 0px 0 20px; background: transparent; }
.orn-vtd__herowrap-inner { max-width: var(--orn-container); margin: 0 auto; padding-left: 0; padding-right: 0; }
.orn-vtd__crumb-outer { display: inline-flex; align-items: center; gap: 8px; color: var(--orn-text, #14233b); text-decoration: none; font-family: var(--orn-font-body); font-size: 14px; margin: 0 0 16px; font-weight: 500; }
.orn-vtd__crumb-outer:hover { color: var(--orn-red, #F20D16); }
.orn-vtd__crumb-outer .orn-vtd__crumb-arrow { font-size: 16px; }
.orn-vtd__vhero { margin-bottom: 0; min-height: 300px; }

/* Group-price nudge banner — sits between hero and main content, info-only.
   Shared shape between van-tour detail (.orn-vtd-grouptip) and journey detail
   (.orn-jd-grouptip). */
.orn-vtd-grouptip,
.orn-jd-grouptip { padding: 0; }
.orn-vtd-grouptip__card,
.orn-jd-grouptip__card { display: flex; align-items: flex-start; gap: 18px; padding: 18px 22px; background: #fdf0ef; border: 1px solid #f6cbc7; border-radius: 14px; }
.orn-vtd-grouptip__icon,
.orn-jd-grouptip__icon { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 50%; background: #fff; color: #E4002B; box-shadow: 0 1px 3px rgba(228, 0, 43, 0.15); }
.orn-vtd-grouptip__icon svg,
.orn-jd-grouptip__icon svg { width: 22px; height: 22px; }
.orn-vtd-grouptip__body,
.orn-jd-grouptip__body { flex: 1 1 auto; min-width: 0; }
.orn-vtd-grouptip__eyebrow,
.orn-jd-grouptip__eyebrow { font-family: var(--orn-font-mono, 'JetBrains Mono', monospace); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: #E4002B; font-weight: 700; margin-bottom: 4px; }
.orn-vtd-grouptip__title,
.orn-jd-grouptip__title { font-family: var(--orn-font-display, Archivo, sans-serif); font-size: 18px; font-weight: 800; color: #14233b; letter-spacing: -0.005em; margin: 0 0 6px; line-height: 1.25; }
.orn-vtd-grouptip__lede,
.orn-jd-grouptip__lede { font-size: 14px; color: #555; line-height: 1.55; margin: 0; }
@media (max-width: 640px) {
    .orn-jd-grouptip { padding-top: 28px; }
    .orn-vtd-grouptip__card,
    .orn-jd-grouptip__card { padding: 14px 16px; gap: 14px; }
    .orn-vtd-grouptip__icon,
    .orn-jd-grouptip__icon { width: 36px; height: 36px; }
    .orn-vtd-grouptip__icon svg,
    .orn-jd-grouptip__icon svg { width: 18px; height: 18px; }
    .orn-vtd-grouptip__title,
    .orn-jd-grouptip__title { font-size: 16px; }
    .orn-vtd-grouptip__lede,
    .orn-jd-grouptip__lede { font-size: 13px; }
}
.orn-page--content .orn-container.orn-vtd__hero-inner, .orn-vtd__hero-inner { width: 100%; max-width: var(--orn-container); margin: 0 auto; padding-left: 24px; padding-right: 24px; }
.orn-vtd__hero-inner > * { max-width: 620px; }
.orn-vtd__crumb { display: inline-flex; align-items: center; gap: 6px; color: var(--orn-cream-1, #f5efe0); text-decoration: none; font-family: var(--orn-font-body); font-size: 13.5px; margin: 0 0 30px; }
.orn-vtd__crumb:hover { color: #fff; }
.orn-vtd__eyebrow { font-family: var(--orn-font-mono, monospace); font-size: 12px; letter-spacing: 0.24em; text-transform: uppercase; color: rgb(243, 180, 175); margin: 0 0 10px; }
.orn-vtd__title { font-family: var(--orn-font-display, "Recoleta", serif); font-size: 48px; line-height: 1.05; margin: 0; color: var(--orn-cream-1, #f5efe0); letter-spacing: -0.5px; text-shadow: 0 2px 20px rgba(20,35,59,0.35); }
.orn-vtd__cityline { font-family: var(--orn-font-mono, monospace); font-size: 15px; color: rgba(255,255,255,0.9); margin: 0; }
@media (max-width: 700px) {
    .orn-vtd__title { font-size: 30px; }
}

.orn-vtd__main { padding: 32px 20px 60px; max-width: var(--orn-container); margin: 0 auto; }
@media (max-width: 640px) {
    .orn-vtd__herowrap { padding: 0; }
    .orn-vtd__main { padding: 2px 20px 60px; }
}
.orn-page--van-tour-detail .orn-jd__main { padding-top: 0; }
/* =============================================================
 * Right-rail sticky booking summary card (van-tour detail).
 * Filled by ornholidays-summary-card.js from reprice + roomspax
 * events dispatched by ornholidays-journey.js.
 * ============================================================= */
.orn-sum { position: sticky; top: 24px; align-self: start; }
@media (max-width: 1099px) {
    .orn-sum { position: static; }
}
.orn-sum__inner { background: #fff; border-radius: 20px; padding: 22px 22px 18px; box-shadow: 0 12px 36px rgba(20,35,59,0.08); font-family: var(--orn-font-body); }
.orn-sum__title { font-family: var(--orn-font-display); font-size: 22px; font-weight: 800; color: var(--orn-text); margin: 0 0 18px; }
.orn-sum__section { margin-bottom: 16px; }
.orn-sum__section--flat { margin-bottom: 8px; }
.orn-sum__eyebrow { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--orn-text); font-weight: 600; margin-bottom: 8px; }
.orn-sum__eyebrow--inline { margin-bottom: 0; }
.orn-sum__row { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.orn-sum__pill { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; background: var(--orn-cream-2, #f4ece0); border: 1px solid var(--orn-text); border-radius: 12px; padding: 12px 16px; font-family: inherit; font-size: 13px; font-weight: 600; color: var(--orn-text); cursor: pointer; text-align: left; }
.orn-sum__pill:hover { background: var(--orn-cream-3, #ece2d0); }
.orn-sum__pill-text { flex: 1; min-width: 0; }
.orn-sum__pill-edit { font-family: var(--orn-font-mono); font-size: 12px; font-weight: 700; letter-spacing: 0.06em; color: rgb(75, 75, 75); text-transform: uppercase; }
.orn-sum__vehicle { font-size: 15px; font-weight: 600; color: var(--orn-navy); }
.orn-sum__vehicle-note { font-size: 12.5px; color: rgb(122, 133, 147); margin-top: 4px; }
.orn-sum__date-pill { background: none; border: none; padding: 4px 0; font-family: inherit; font-size: 14px; font-weight: 600; color: rgb(122, 133, 147); cursor: pointer; }
.orn-sum__date-pill:hover { color: var(--orn-navy); }
.orn-sum__rule { height: 1px; background: var(--orn-cream-3, #e6dfc9); margin: 12px 0 14px; }
.orn-sum__breakup { margin-bottom: 14px; }
.orn-sum__breakup:empty { display: none; }
/* Reuse existing .orn-vtd__breakup-row shape — declared below at line ~2370. */
.orn-sum__breakup .orn-vtd__breakup-row { font-size: 13.5px; margin: 10px 0; }
.orn-sum__totals { margin-bottom: 16px; }
.orn-sum__perperson-row { display: flex; justify-content: space-between; align-items: flex-end; gap: 10px; margin-bottom: 4px; }
.orn-sum__perperson-label { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-gold-3, #c9a45c); font-weight: 600; }
.orn-sum__perperson-val { font-family: var(--orn-font-mono); font-size: 24px; font-weight: 800; color: var(--orn-navy); line-height: 1.1; }
.orn-sum__grouptotal-row { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.orn-sum__grouptotal-label { font-size: 13px; color: rgb(122, 133, 147); flex: 1 1 auto; min-width: 0; }
.orn-sum__grouptotal-val { font-family: var(--orn-font-mono); font-size: 28px; font-weight: 700; color: var(--orn-text); white-space: nowrap; }
.orn-sum__rewards { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.orn-sum__rewards[hidden] { display: none; }
.orn-sum__name { margin-bottom: 12px; }
.orn-sum__name-input { width: 100%; box-sizing: border-box; padding: 12px 16px; border: 1px solid var(--orn-cream-3, #e6dfc9); border-radius: 12px; font-family: inherit; font-size: 15px; color: var(--orn-navy); background: #fff; }
.orn-sum__name-input:focus { outline: none; border-color: var(--orn-gold-3, #c9a45c); }
.orn-sum__cta { display: block; width: 100%; padding: 14px 18px; border: none; border-radius: 14px; background: var(--orn-text); color: #fff; font-family: inherit; font-size: 15px; font-weight: 700; cursor: pointer; text-align: center; margin-bottom: 10px; }
.orn-sum__cta:hover:not(:disabled) { background: rgb(0, 0, 0); }
.orn-sum__cta--disabled, .orn-sum__cta:disabled { background: var(--orn-cream-3, #d8ceb4); color: rgba(20,35,59,0.55); cursor: not-allowed; }
.orn-sum__note { font-size: 12px; color: rgb(122, 133, 147); text-align: center; margin: 0; }
.orn-sum__addon-hint { display: block; width: 100%; background: none; border: none; padding: 4px 0 8px; font-family: var(--orn-font-body); font-size: 13px; font-weight: 600; color: var(--orn-gold-3, #c9a45c); text-align: center; cursor: pointer; }
.orn-sum__addon-hint:hover { color: var(--orn-navy); text-decoration: underline; text-underline-offset: 3px; }
.orn-sum__addon-hint[hidden] { display: none; }
.orn-sum__unavl { display: block; margin-bottom: 12px; padding: 14px 16px; border-radius: 14px; background: rgb(253, 240, 239); border: 1px solid rgb(246, 203, 199); text-align: center; }
.orn-sum__unavl[hidden] { display: none; }
.orn-sum__unavl-msg { font-family: var(--orn-font-body); font-size: 13px; font-weight: 600; color: var(--orn-text); margin-bottom: 8px; }
.orn-sum__unavl-cta { display: inline-block; font-family: var(--orn-font-body); font-size: 13px; font-weight: 700; color: var(--orn-navy); text-decoration: none; }
.orn-sum__unavl-cta:hover { text-decoration: underline; text-underline-offset: 3px; }
.orn-sum__cta[hidden] { display: none; }

/* =============================================================
 * Floating bottom-right copilot chip. Keeps .orn-jd__copilot-card
 * class so ornChatPanel.init's triggerSelector still binds.
 * ============================================================= */
.orn-jd__copilot-fab { position: fixed; right: 24px; bottom: 24px; z-index: 60; display: inline-flex; align-items: center; gap: 10px; background: var(--orn-gold, #c9a45c); color: #fff; border: none; border-radius: 999px; padding: 12px 20px 12px 14px; box-shadow: 0 10px 28px rgba(20,35,59,0.28); cursor: pointer; font-family: var(--orn-font-body); font-size: 14px; font-weight: 700; }
.orn-jd__copilot-fab:hover { background: var(--orn-gold-2, #d4b06b); box-shadow: 0 14px 32px rgba(20,35,59,0.34); }
.orn-jd__copilot-fab-label { line-height: 1; }
@media (max-width: 640px) {
    .orn-jd__copilot-fab { padding: 12px; }
    .orn-jd__copilot-fab-label { display: none; }
}

/* =============================================================
 * Inline day-optionals inside the Itinerary panel timeline.
 * ornholidays-summary-card.js fills these slots from the addons
 * dispatched via orn:addons-ready.
 * ============================================================= */
.orn-jd__day-addons { margin-top: 14px; }
.orn-jd__day-addons:empty { display: none; }

/* =============================================================
 * Custom-styled wait modal for orn-holidays surfaces.
 * Invoked via MODAL_PANEL.show(html, { blockClass: 'orn-wait-block' })
 * from srAsyncCall(url, params, cb, { waitMsg: '...' }).
 *
 * blockUI DOM shape after invocation:
 *   .blockUI.blockDialog.blockPage.orn-wait-block  (outer)
 *     .blockMsg
 *       .blockBd
 *         .orn-wait__spinner  (our SVG-less circular spinner)
 *         .orn-wait__msg      (localized status text)
 *
 * blockUI stamps inline styles for z-index/position/left/top —
 * we don't override those. Width/padding/typography live here.
 * ============================================================= */
.orn-wait-block { width: 320px !important; padding: 0 !important; border: none !important; background: transparent !important; box-shadow: none !important; }
.orn-wait-block .blockMsg { background: var(--orn-paper, #ffffff) !important; border: 1px solid var(--orn-cream-3, #e6dfc9) !important; border-radius: 18px !important; padding: 28px 28px 24px !important; box-shadow: 0 24px 60px rgba(20, 35, 59, 0.20) !important; }
.orn-wait-block .blockBd { padding: 0 !important; display: flex; flex-direction: column; align-items: center; gap: 16px; text-align: center; }
.orn-wait__spinner { width: 36px; height: 36px; border-radius: 50%; border: 3px solid var(--orn-cream-3, #e6dfc9); border-top-color: var(--orn-gold, #c9a45c); animation: orn-wait-spin 0.85s linear infinite; }
.orn-wait__msg { font-family: var(--orn-font-body); font-size: 15px; font-weight: 600; color: var(--orn-navy); line-height: 1.35; letter-spacing: 0.01em; text-align: center; }
@keyframes orn-wait-spin { to { transform: rotate(360deg); } }
/* Slightly darker overlay so the cream card pops. blockUI applies
   opacity:0.3 via inline style — we tint the background beyond that. */
.orn-wait-block ~ .blockUIOverlay, .blockUIOverlay:has(+ .orn-wait-block) { background: rgba(20, 35, 59, 0.35) !important; opacity: 1 !important; }
.orn-jd__day-addons-head { font-family: var(--orn-font-mono); font-size: 11.5px; text-transform: uppercase; color: var(--orn-text); font-weight: 600; letter-spacing: 0.05em; margin-bottom: 10px; }
.orn-jd__day-addons-grid { display: flex; flex-direction: column; gap: 10px; }

/* When the summary card is present the flat addons block below the
 * Dates panel is redundant on DESKTOP — the right-rail summary card owns
 * the price and the add-ons surface inside the Itinerary tab, so hide the
 * inline block there. .orn-jd__body:has() gates so we don't hide it on
 * pages without the summary card.
 * On MOBILE (<=640px, isMobileBookingFlow) the Dates step is the primary
 * booking surface and the summary card is below the fold, so the inline
 * add-ons section MUST stay visible — matching the FD flow. Hence the
 * hide is scoped above the mobile booking-flow breakpoint. */
@media (min-width: 641px) {
    .orn-jd__body:has(#ornSumCard) .orn-jd__dt-addons { display: none; }
}

.orn-vtd__grid { display: grid; gap: 28px; grid-template-columns: 1fr; }
@media (min-width: 1000px) {
    .orn-vtd__grid { grid-template-columns: minmax(0, 1fr) 380px; }
}
.orn-vtd__col-left { min-width: 0; }
.orn-vtd__col-right { min-width: 0; }
.orn-vtd__pricing { position: sticky; top: 20px; background: #fff; border-radius: 20px; padding: 24px 22px; box-shadow: 0 12px 36px rgba(20,35,59,0.08); font-family: var(--orn-font-body); }
.orn-vtd__pricing-title { font-family: var(--orn-font-display, "Recoleta", serif); font-size: 24px; margin: 0 0 16px; color: var(--orn-navy); }
.orn-vtd__cities { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 18px; }
.orn-vtd__city { display: inline-flex; align-items: center; padding: 4px 10px; background: rgb(244,239,227); color: var(--orn-navy); border-radius: 999px; font-size: 12px; font-weight: 600; }
.orn-vtd__field { margin: 0 0 18px; }
.orn-vtd__label { display: block; font-family: var(--orn-font-mono, monospace); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--orn-gold-2); margin: 0 0 6px; }
.orn-vtd__select, .orn-vtd__input { width: 100%; box-sizing: border-box; padding: 10px 12px; border: 1px solid var(--orn-cream-3, #e6dfc9); border-radius: 8px; font-size: 14px; color: var(--orn-ink-1, #14233b); background: #fff; font-family: inherit; }
.orn-vtd__roomspax { position: relative; }
.orn-vtd__roomspax-trigger { display: flex; align-items: center; justify-content: space-between; gap: 10px; background: #fff; border: 1px solid var(--orn-cream-3, #e6dfc9); border-radius: 8px; padding: 10px 14px; cursor: pointer; font-family: inherit; font-size: 14px; font-weight: 600; color: var(--orn-ink-1, #14233b); user-select: none; }
.orn-vtd__roomspax-trigger:hover { border-color: var(--orn-gold-2); }
.orn-vtd__roomspax-caret { color: var(--orn-ink-2, rgb(58,70,84)); font-size: 12px; }
.orn-vtd__field-help { margin: 6px 0 0; font-size: 12px; color: var(--orn-ink-2, rgb(58,70,84)); }
.orn-vtd__price-block { margin: 22px 0; padding: 18px 0; border-top: 1px solid var(--orn-cream-3, #e6dfc9); border-bottom: 1px solid var(--orn-cream-3, #e6dfc9); }
.orn-vtd__price-row { display: flex; justify-content: space-between; align-items: baseline; margin: 6px 0; font-size: 14px; color: var(--orn-ink-2, rgb(58,70,84)); }
.orn-vtd__price-row--total { margin-top: 12px; }
.orn-vtd__price-row--total .orn-vtd__price-v { font-size: 26px; font-weight: 700; color: var(--orn-navy); letter-spacing: -0.5px; }
.orn-vtd__price-v { font-weight: 600; color: var(--orn-navy); }
.orn-vtd__price-status { margin: 12px 0 0; font-size: 12px; color: var(--orn-ink-2, rgb(58,70,84)); font-style: italic; }
.orn-vtd__cta { display: block; width: 100%; padding: 14px 18px; border: none; border-radius: 10px; background: var(--orn-navy); color: #fff; font-family: inherit; font-size: 15px; font-weight: 600; letter-spacing: 0.3px; cursor: pointer; }
.orn-vtd__cta:disabled { background: var(--orn-cream-3, #d6cdb2); color: rgba(20,35,59,0.55); cursor: not-allowed; }
.orn-vtd__cta:not(:disabled):hover { background: rgb(30,45,68); }
.orn-vtd__cta-note { margin: 10px 0 0; font-size: 11.5px; color: var(--orn-ink-2, rgb(58,70,84)); text-align: center; }
.orn-vtd__breakup { margin: 10px 0 16px; padding: 12px 0 4px; border-top: 1px dashed var(--orn-cream-3, #e6dfc9); }
.orn-vtd__breakup:empty { display: none; }
.orn-vtd__breakup-row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin: 4px 0; font-size: 12.5px; color: var(--orn-ink-2, rgb(58,70,84)); }
.orn-vtd__breakup-k { display: flex; flex-direction: column; flex: 1 1 auto; min-width: 0; }
.orn-vtd__breakup-sub { font-size: 11px; color: rgba(58,70,84,0.7); margin-top: 2px; }
.orn-vtd__breakup-v { font-weight: 600; color: var(--orn-text); white-space: nowrap; }
.orn-vtd__breakup-row--sub { padding-top: 6px; margin-top: 6px; border-top: 1px solid var(--orn-cream-3, #e6dfc9); font-weight: 600; color: var(--orn-navy); }
.orn-vtd__breakup-row--voucher .orn-vtd__breakup-v { color: #1f7a3a; }
.orn-vtd__breakup-row--rewards { padding-top: 6px; margin-top: 6px; border-top: 1px dashed var(--orn-cream-3, #e6dfc9); }
.orn-vtd__breakup-row--rewards .orn-vtd__breakup-k,
.orn-vtd__breakup-row--rewards .orn-vtd__breakup-v { color: var(--orn-green); font-weight: 600; }

/* ─────────────────────────────────────────────────────────────────────
   Promotions page — /tours/promotions
   ──────────────────────────────────────────────────────────────────── */

/* Hero band */
.orn-page--promotions { background: var(--orn-cream, #f5efe0); }
.orn-promo__hero { background: var(--orn-navy, #14233b); color: var(--orn-cream-1, #f4efe3); padding: 32px 0; }
.orn-page--promotions .orn-container { max-width: 1200px; padding-inline: clamp(20px, 3vw, 48px); margin: 0 auto; }
.orn-promo__hero-inner { position: relative; }
.orn-promo__crumb { display: inline-flex; align-items: center; gap: 6px; color: rgba(244, 239, 227, 0.7); font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.14em; text-decoration: none; margin-bottom: 10px; }
.orn-promo__crumb-arrow { font-size: 14px; }
.orn-promo__eyebrow { color: var(--orn-gold-3, #c9a45c); font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.22em; font-weight: 600; margin: 0 0 11px; }
.orn-promo__title { font-family: Anton, sans-serif; font-weight: 400; font-size: 40px; line-height: 1.05; letter-spacing: -0.02em; color: #fff; margin: 0 0 20px; max-width: 900px; }
.orn-promo__lede { font-size: 17px; line-height: 1.55; color: rgba(244, 239, 227, 0.78); max-width: 780px; margin: 0; }
@media (max-width: 700px) {
    .orn-promo__hero { padding: 40px 0 48px; }
    .orn-promo__title { font-size: 32px; }
    .orn-promo__lede { font-size: 15px; }
}

/* Strip container */
.orn-promo__main { padding: 32px 0 80px; }
.orn-promo__strips { display: flex; flex-direction: column; gap: 36px; }

/* One strip = header band + horizontal card scroller */
.orn-promo__strip {}

/* Colored header band — the "Lowest launch fares" blue block from the mockup.
   Colour driven by data-tone; defaults to the LOWEST_LAUNCH blue. */
.orn-promo__strip-header { border-radius: 20px; padding: 16px 20px; display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; background: #3a6ea9; color: #fff; }
.orn-promo__strip-header[data-tone="BLUE"] { background: rgb(15, 15, 15); }
.orn-promo__strip-header[data-tone="AMBER"] { background: rgb(209, 75, 119); }
.orn-promo__strip-header[data-tone="GOLD"] { background: rgb(30, 122, 107); }
.orn-promo__strip-header[data-tone="RED"] { background: rgb(109, 90, 166); }
.orn-promo__strip-title-wrap { min-width: 0; }
.orn-promo__strip-title { margin: 0 0 6px; font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 24px; line-height: 1.15; letter-spacing: -0.01em; color: inherit; }
.orn-promo__strip-subtitle { margin: 0; color: rgba(255,255,255,0.85); font-size: 15px; line-height: 1.4; }
.orn-promo__strip-count { flex-shrink: 0; background: rgba(255,255,255,0.18); color: #fff; border-radius: 999px; padding: 6px 14px; font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.12em; font-weight: 600; }

/* Horizontal card scroller */
.orn-promo__strip-cards { display: flex; gap: 20px; margin-top: 24px; overflow-x: auto; padding: 6px 2px 20px; scroll-snap-type: x mandatory; scrollbar-width: thin; }
.orn-promo__strip-cards::-webkit-scrollbar { height: 8px; }
.orn-promo__strip-cards::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.15); border-radius: 4px; }

/* Cards */
.orn-promo__strip-card { flex: 0 0 295px; scroll-snap-align: start; background: #fff; border-radius: 18px; padding: 20px 22px 18px; text-decoration: none; color: var(--orn-text); box-shadow: 0 8px 24px rgba(20,35,59,0.06); border: 1px solid rgb(231, 231, 231); display: flex; flex-direction: column; gap: 2px; transition: box-shadow .18s ease, transform .18s ease; }
.orn-promo__strip-card:hover { box-shadow: 0 14px 32px rgba(20,35,59,0.12); transform: translateY(-2px); }
.orn-promo__strip-card-topline { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 2px; }
.orn-promo__strip-card-family { font-family: var(--orn-font-mono); color: var(--orn-text-muted); font-size: 12px; letter-spacing: 0.16em; font-weight: 600; }
.orn-promo__strip-card-savings-text { color: #1F7A3D; font-family: var(--orn-font-body); font-size: 12px; font-weight: 600; margin-top: 2px; line-height: 1.2; }
.orn-promo__strip-card-route { display: flex; align-items: baseline; gap: 5px; flex-wrap: wrap; }
.orn-promo__strip-card-city { font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 18px; line-height: 1.05; letter-spacing: -0.01em; color: var(--orn-text); }
.orn-promo__strip-card-arrow { color: var(--orn-text); font-size: 22px; font-weight: 600; }
.orn-promo__strip-card-date { color: var(--orn-text); font-size: 14px; letter-spacing: 0.02em; font-weight: 500; }

/* Fill bar — unified red across every tone (matches the sample). */
.orn-promo__strip-card-bar { height: 6px; background: rgba(20, 35, 59, 0.08); border-radius: 3px; overflow: hidden; margin-top: 8px; }
.orn-promo__strip-card-bar-fill { height: 100%; background: rgb(210, 100, 78); border-radius: 3px; transition: width .3s ease; }

.orn-promo__strip-card-status { color: rgb(210, 100, 78); font-size: 13px; font-weight: 500; letter-spacing: 0; margin-top: 6px; }

.orn-promo__strip-card-price-row { display: flex; justify-content: space-between; align-items: flex-end; margin-top: auto; gap: 12px; padding-top: 12px; }
.orn-promo__strip-card-price-meta { font-family: var(--orn-font-mono); color: var(--orn-text-muted); font-size: 11.5px; text-transform: lowercase; margin: 0 0 2px; }
.orn-promo__strip-card-price-val { font-family: var(--orn-font-mono); font-weight: 800; font-size: 22px; letter-spacing: -0.01em; color: var(--orn-text); }
.orn-promo__strip-card-price-strike { font-family: var(--orn-font-mono); color: var(--orn-text-muted); font-size: 13px; text-decoration: line-through; margin-top: 6px; }
.orn-promo__strip-card-price-save { color: #1F7A3D; font-size: 13px; font-weight: 700; margin-left: 6px; }
.orn-promo__strip-card-cta { background: var(--orn-text); color: #fff; border-radius: 12px; padding: 12px 22px; font-family: 'Archivo', sans-serif; font-weight: 600; font-size: 14px; white-space: nowrap; }

/* Savings pill top-right of the card */
.orn-promo__strip-card-savings-pill { background: #E9F5EE; color: #1F7A3D; font-family: var(--orn-font-mono); font-weight: 600; font-size: 12px; letter-spacing: 0.02em; border-radius: 999px; padding: 4px 10px; }

/* Skeleton (shown until brain returns) */
.orn-promo__strip-header--skeleton { height: 96px; background: rgba(20,35,59,0.06); }
.orn-promo__strip-cards--skeleton { pointer-events: none; }
.orn-promo__strip-card--skeleton { background: rgba(20,35,59,0.05); box-shadow: none; border-top-color: rgba(20,35,59,0.08); height: 240px; animation: ornPromoPulse 1.6s ease-in-out infinite; }
@keyframes ornPromoPulse {
    0%, 100% { opacity: 0.55; }
    50% { opacity: 0.85; }
}

/* =============================================================
 * Header utility "NEW" badge — small pill next to What's New link
 * ============================================================= */
.orn-header__util-badge { display: inline-block; background: var(--orn-gold); color: var(--orn-navy); font-family: var(--orn-font-mono); font-size: 9px; font-weight: 700; letter-spacing: 0.12em; padding: 2px 6px; border-radius: 8px; margin-left: 4px; vertical-align: middle; text-transform: uppercase; }

/* =============================================================
 * What's New page — navy hero + 4 colored top-border cards
 * ============================================================= */
.orn-page--whats-new .orn-hero__title { font-size: 56px; line-height: 1.1; max-width: 900px; font-weight: 700; }
.orn-page--whats-new .orn-wn-hi { color: var(--orn-gold); }
.orn-page--whats-new .orn-wn-back { color: rgba(255,255,255,0.72); text-decoration: none; font-size: 14px; margin-bottom: 24px; display: inline-block; }
.orn-page--whats-new .orn-wn-back:hover { color: var(--orn-gold); }
.orn-page--whats-new .orn-wn-dot { color: var(--orn-gold); margin-right: 4px; }
.orn-page--whats-new .orn-hero__eyebrow { display: inline-block; border: 1px solid rgba(255,255,255,0.16); padding: 6px 14px; border-radius: 20px; color: rgba(255,255,255,0.9); font-size: 12px; letter-spacing: 0.16em; }

.orn-wn-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.orn-wn-card { background: var(--orn-paper); border-radius: 14px; padding: 24px 26px 22px; border-width: 4px 1px 1px; border-style: solid; border-color: var(--orn-blue) rgb(228, 221, 205) rgb(228, 221, 205); display: flex; flex-direction: column; gap: 12px; min-height: 340px; }
.orn-wn-card--red { border-top-color: var(--orn-red); }
.orn-wn-card--amber { border-top-color: var(--orn-amber); }
.orn-wn-card--blue { border-top-color: var(--orn-blue); }
.orn-wn-card--green { border-top-color: var(--orn-green); }
.orn-wn-card__eyebrow { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; color: var(--orn-blue); margin: 0; }
.orn-wn-card--red .orn-wn-card__eyebrow, .orn-wn-card--red .orn-wn-card__cta { color: var(--orn-red); }
.orn-wn-card--amber .orn-wn-card__eyebrow, .orn-wn-card--amber .orn-wn-card__cta { color: var(--orn-amber); }
.orn-wn-card--blue .orn-wn-card__eyebrow, .orn-wn-card--blue .orn-wn-card__cta { color: var(--orn-blue); }
.orn-wn-card--green .orn-wn-card__eyebrow, .orn-wn-card--green .orn-wn-card__cta { color: var(--orn-green); }
.orn-wn-card__title { font-family: var(--orn-font-display); font-weight: 700; font-size: 22px; color: var(--orn-navy); line-height: 1.2; margin: 0; }
.orn-wn-card__lede { color: rgb(90, 101, 115); font-size: 14px; line-height: 1.55; margin: 0; flex-grow: 1; }
.orn-wn-card__cta { font-weight: 700; font-size: 14px; text-decoration: none; letter-spacing: 0.01em; margin-top: 6px; align-self: flex-start; }
.orn-wn-card__cta:hover { text-decoration: underline; }
@media (max-width: 900px) {
    .orn-wn-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
    .orn-wn-grid { grid-template-columns: 1fr; }
    .orn-page--whats-new .orn-hero__title { font-size: 40px; }
}
.orn-visuallyhidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* ==========================================================================
   Credit / Rewards Dashboard  (/tours/credit-dashboard)
   Scoped under body.orn-page--credit-dashboard. Built on the --orn-* tokens
   above (navy / gold / cream, Archivo + Hanken Grotesk + JetBrains Mono).
   ========================================================================== */

/* ---- Hero (tighter than the marketing hero) ------------------------------ */
.orn-page--credit-dashboard .orn-hero--tight { padding-block: 0; }
.orn-page--credit-dashboard .orn-hero--tight .orn-hero__inner { padding-block: clamp(24px, 5vw, 90px); gap: 32px; }
.orn-page--credit-dashboard .orn-hero--tight .orn-hero__title { font-size: 42px; line-height: 1.15; margin-top: 12px; margin-bottom: 16px; max-width: 720px; }
.orn-page--credit-dashboard .orn-hero--tight .orn-hero__lede { font-size: 16.5px; max-width: 640px; margin-bottom: 12px; }
.orn-page--credit-dashboard .orn-hero--tight .orn-hero__eyebrow { margin-bottom: 12px; }
/* "← Home" sits on the red hero — muted grey was invisible and its hover
   mapped to red-on-red. Use light text with a full-white hover. */
.orn-page--credit-dashboard .orn-cd-back { display: inline-block; font-family: var(--orn-font-mono); font-size: var(--orn-fs-small); color: rgba(255, 255, 255, 0.75); margin-bottom: var(--sp-4); }
.orn-page--credit-dashboard .orn-cd-back:hover { color: #fff; }
/* Hero sits on the red banner: keep the accent dot and the "Dashboard"
   highlight white so the title stays readable (the skin's gold token maps
   to black, which was unreadable here). */
.orn-page--credit-dashboard .orn-cd-dot { color: #fff; }
.orn-page--credit-dashboard .orn-cd-hi { color: #fff; }

/* ---- Top section spacing ------------------------------------------------- */
.orn-page--credit-dashboard .orn-cd-top { padding-block: 24px 40px; }

/* ---- Navy balance card --------------------------------------------------- */
.orn-page--credit-dashboard .orn-cd-balance { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: var(--sp-5); background: linear-gradient(135deg, #1c1c1c 0%, #121212 55%, #000 100%); border-radius: var(--r-card); box-shadow: var(--sh-raised); padding: var(--sp-6) var(--sp-7); color: var(--orn-text-light); }
.orn-page--credit-dashboard .orn-cd-balance__label { font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.18em; text-transform: uppercase; color: var(--orn-mute-2); margin: 0 0 var(--sp-3); }
.orn-page--credit-dashboard .orn-cd-balance__amount { display: flex; align-items: flex-end; gap: var(--sp-3); }
.orn-page--credit-dashboard .orn-cd-balance__coin { width: 44px; height: 44px; }
.orn-page--credit-dashboard .orn-cd-balance__value { font-family: var(--orn-font-display); font-weight: 800; font-size: 52px; line-height: 1; color: #fff; }
.orn-page--credit-dashboard .orn-cd-balance__unit { font-family: var(--orn-font-body); font-size: var(--orn-fs-body); color: var(--orn-mute-3); padding-bottom: 6px; }
.orn-page--credit-dashboard .orn-cd-balance__sub { font-family: var(--orn-font-body); font-size: var(--orn-fs-small); color: var(--orn-mute-3); margin: var(--sp-3) 0 0; }
.orn-page--credit-dashboard .orn-cd-balance__actions { display: flex; gap: var(--sp-3); flex-wrap: wrap; }

/* ---- Buttons ------------------------------------------------------------- */
.orn-page--credit-dashboard .orn-cd-btn { display: inline-flex; align-items: center; justify-content: center; font-family: var(--orn-font-body); font-weight: 600; font-size: var(--orn-fs-small); padding: 11px 20px; border-radius: var(--r-pill); transition: background .15s ease, color .15s ease, border-color .15s ease; white-space: nowrap; }
/* Reward-page CTAs: filled = red bg / white text; secondary = white bg / red text. */
.orn-page--credit-dashboard .orn-cd-btn--gold { background: #F20D16; color: #fff; }
.orn-page--credit-dashboard .orn-cd-btn--gold:hover { background: #C50A12; color: #fff; }
.orn-page--credit-dashboard .orn-cd-btn--ghost { background: #fff; border: 1px solid #fff; color: #F20D16; }
.orn-page--credit-dashboard .orn-cd-btn--ghost:hover { background: #F4F4F4; border-color: #F4F4F4; color: #C50A12; }

/* Ghost button on cream/paper (pager) reads on light bg */
.orn-page--credit-dashboard .orn-cd-pager .orn-cd-btn--ghost { border-color: var(--orn-line-2); color: var(--orn-ink-2); }
.orn-page--credit-dashboard .orn-cd-pager .orn-cd-btn--ghost:hover { border-color: var(--orn-gold); color: var(--orn-navy); }

/* ---- Summary tiles ------------------------------------------------------- */
.orn-page--credit-dashboard .orn-cd-tiles { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--sp-4); margin-top: var(--sp-5); }
.orn-page--credit-dashboard .orn-cd-tile { background: var(--orn-paper); border: 1px solid var(--orn-line); border-radius: var(--r-tile); box-shadow: var(--sh-card); padding: var(--sp-5); }
.orn-page--credit-dashboard .orn-cd-tile--warn { border-color: rgba(199, 122, 43, 0.35); }
.orn-page--credit-dashboard .orn-cd-tile__label { font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.12em; text-transform: uppercase; color: var(--orn-mute); margin: 0 0 var(--sp-3); }
/* Metric values render black (per reward-page spec), incl. the warn tile. */
.orn-page--credit-dashboard .orn-cd-tile__value { font-family: var(--orn-font-display); font-weight: 700; font-size: var(--orn-fs-stat); color: #0F0F0F; margin: 0; }
.orn-page--credit-dashboard .orn-cd-tile--warn .orn-cd-tile__value { color: #0F0F0F; }

/* ---- Activity ------------------------------------------------------------ */
.orn-page--credit-dashboard .orn-cd-activity__title { font-size: var(--orn-fs-h2); margin-bottom: var(--sp-5); }
.orn-page--credit-dashboard .orn-cd-tabs { display: flex; gap: var(--sp-2); flex-wrap: wrap; border-bottom: 1px solid var(--orn-line); margin-bottom: var(--sp-5); }
.orn-page--credit-dashboard .orn-cd-tab { font-family: var(--orn-font-body); font-weight: 600; font-size: var(--orn-fs-body); color: var(--orn-mute); padding: var(--sp-3) var(--sp-4); border-bottom: 2px solid transparent; margin-bottom: -1px; }
.orn-page--credit-dashboard .orn-cd-tab:hover { color: var(--orn-navy); }
.orn-page--credit-dashboard .orn-cd-tab.is-active { color: var(--orn-navy); border-bottom-color: var(--orn-gold); }

/* ---- Table --------------------------------------------------------------- */
.orn-page--credit-dashboard .orn-cd-tablewrap { overflow-x: auto; }
.orn-page--credit-dashboard .orn-cd-table { width: 100%; border-collapse: collapse; min-width: 720px; }
.orn-page--credit-dashboard .orn-cd-th { font-family: var(--orn-font-mono); font-size: var(--orn-fs-eyebrow); letter-spacing: 0.1em; text-transform: uppercase; color: var(--orn-mute); text-align: left; font-weight: 500; padding: var(--sp-3) var(--sp-4); border-bottom: 1px solid var(--orn-line-2); white-space: nowrap; }
.orn-page--credit-dashboard .orn-cd-th--num { text-align: right; }
.orn-page--credit-dashboard .orn-cd-td { font-family: var(--orn-font-body); font-size: var(--orn-fs-small); color: var(--orn-ink-2); padding: var(--sp-4); border-bottom: 1px solid var(--orn-line); white-space: nowrap; vertical-align: middle; }
.orn-page--credit-dashboard .orn-cd-td--desc { color: var(--orn-text); font-weight: 500; white-space: normal; min-width: 220px; }
.orn-page--credit-dashboard .orn-cd-td--num { text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; }
.orn-page--credit-dashboard .orn-cd-amt--pos { color: var(--orn-green); }
.orn-page--credit-dashboard .orn-cd-amt--neg { color: var(--orn-red); }

/* Status pills */
.orn-page--credit-dashboard .orn-cd-pill { display: inline-block; font-family: var(--orn-font-mono); font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; padding: 3px 10px; border-radius: var(--r-pill); }
.orn-page--credit-dashboard .orn-cd-pill--credit { background: rgba(47, 122, 79, 0.12); color: var(--orn-green); }
.orn-page--credit-dashboard .orn-cd-pill--debit { background: rgba(190, 63, 57, 0.12); color: var(--orn-red); }

/* ---- Empty state --------------------------------------------------------- */
.orn-page--credit-dashboard .orn-cd-empty { text-align: center; padding: var(--sp-8) var(--sp-5); background: var(--orn-cream-2); border: 1px solid var(--orn-line); border-radius: var(--r-card); }
.orn-page--credit-dashboard .orn-cd-empty__title { font-family: var(--orn-font-display); font-weight: 700; font-size: var(--orn-fs-h3); color: var(--orn-navy); margin: 0 0 var(--sp-2); }
.orn-page--credit-dashboard .orn-cd-empty__sub { font-family: var(--orn-font-body); font-size: var(--orn-fs-body); color: var(--orn-mute); margin: 0; }

/* ---- Pager --------------------------------------------------------------- */
.orn-page--credit-dashboard .orn-cd-pager { display: flex; justify-content: space-between; gap: var(--sp-3); margin-top: var(--sp-5); }

/* ---- Responsive ---------------------------------------------------------- */
@media (max-width: 768px) {
    .orn-page--credit-dashboard .orn-cd-balance { padding: var(--sp-5); }
    .orn-page--credit-dashboard .orn-cd-balance__value { font-size: 40px; }
    .orn-page--credit-dashboard .orn-cd-balance__actions { width: 100%; }
    .orn-page--credit-dashboard .orn-cd-balance__actions .orn-cd-btn { flex: 1; }
    .orn-page--credit-dashboard .orn-cd-tiles { grid-template-columns: repeat(2, 1fr); }
}

/* ---------------- Dates tab · calendar grid ----------------
   Replaces the earlier row-list. Each month renders a 7-column grid
   (Sun→Sat). Days with a matching dtA entry become clickable tiles
   colour-coded by availability bucket (avl / fill / last / none).
   ------------------------------------------------------- */
/* Bounded rectangle around the whole calendar (legend + month grids). */
.orn-jd__dt-cal-wrap { border-radius: 20px; padding: 22px 0; }

.orn-jd__dt-cal-legend { display: flex; align-items: center; gap: 20px; margin-bottom: 18px; flex-wrap: wrap; font-size: 13px; color: var(--orn-ink-2, #4a4a4a); }
.orn-jd__dt-cal-legend-k { font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.14em; color: var(--orn-gold, #b18a4a); text-transform: uppercase; margin-right: 4px; }
.orn-jd__dt-cal-leg { display: inline-flex; align-items: center; gap: 8px; }
.orn-jd__dt-cal-leg > span { display: inline-block; width: 14px; height: 14px; border-radius: 4px; }
.orn-jd__dt-cal-leg--avl > span { background: #3e8b62; }
.orn-jd__dt-cal-leg--good > span { background: #e0b64a; }
.orn-jd__dt-cal-leg--fill > span { background: #d68a3f; }
.orn-jd__dt-cal-leg--last > span { background: #c86050; }
.orn-jd__dt-cal-leg--promo > span { background: var(--orn-navy, rgb(20, 35, 59)); position: relative; }
.orn-jd__dt-cal-leg--promo > span::after { content: '\2605'; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #f1c86a; font-size: 10px; line-height: 1; }

.orn-jd__dt-cal { display: grid; grid-template-columns: 1fr; gap: 14px; }
@media (min-width: 900px) {
    .orn-jd__dt-cal { grid-template-columns: 1fr 1fr; }
}

.orn-jd__dt-cal-mo { background: #fff; border: 1px solid rgba(230, 221, 196, 0.7); border-radius: 12px; padding: 14px 14px 16px; min-width: 0; }
.orn-jd__dt-cal-title { font-family: 'Archivo', sans-serif; font-size: 16px; font-weight: 700; color: var(--orn-text); margin-bottom: 10px; letter-spacing: -0.2px; }
/* Desktop rail calendar: one month wide and bounded to ~one month tall, so a
   single month shows in the section and the rest are reached by vertical scroll.
   Scoped to the sidebar (body.orn-jd-dates-rail ≥1100px); mobile/tablet keep the
   full inline calendar. The legend sits in .orn-jd__dt-cal-wrap above and stays
   fixed while .orn-jd__dt-cal (the month grids) scrolls. */
@media (min-width: 1100px) {
    body.orn-jd-dates-rail .orn-jd__dt-cal { grid-template-columns: 1fr; min-height: 680px; max-height: 80vh; overflow-y: auto; overscroll-behavior: contain; padding-right: 4px; }
    /* Legend: title on its own row, items packed tighter (the 20px gap spreads
       them across the rail). */
    body.orn-jd-dates-rail .orn-jd__dt-cal-legend { gap: 8px 14px; }
    body.orn-jd-dates-rail .orn-jd__dt-cal-legend-k { flex: 1 0 100%; margin: 0; }
}
.orn-jd__dt-cal-head, .orn-jd__dt-cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.orn-jd__dt-cal-head { margin-bottom: 4px; }
.orn-jd__dt-cal-dow { text-align: center; font-family: 'JetBrains Mono', monospace; font-size: 10px; color: var(--orn-mute, #9a8a6e); letter-spacing: 0.08em; padding: 2px 0; }
.orn-jd__dt-cal-cell { aspect-ratio: 1 / 1; border: none; border-radius: 6px; background: transparent; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; cursor: pointer; padding: 2px 1px; font-family: inherit; color: inherit; position: relative; transition: transform 0.1s ease, box-shadow 0.1s ease; min-width: 0; overflow: hidden; }
.orn-jd__dt-cal-cell--pad, .orn-jd__dt-cal-cell--empty { background: transparent; cursor: default; color: var(--orn-mute, #9a8a6e); opacity: 0.55; }
.orn-jd__dt-cal-cell--pad { visibility: hidden; }
.orn-jd__dt-cal-num { font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 13px; line-height: 1; }
.orn-jd__dt-cal-prc { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 0.01em; opacity: 0.95; white-space: nowrap; }
.orn-jd__dt-cal-star { position: absolute; top: 3px; right: 4px; font-size: 10px; color: #f1c86a; }
/* Fare / availability buckets — 4-band gradient (Best → Good → Rising → Last)
   plus a neutral "none" for unavailable. Text stays readable on each fill. */
.orn-jd__dt-cal-cell--avl { background: #3e8b62; color: #ffffff; }
.orn-jd__dt-cal-cell--good { background: #e5c15f; color: #4a3a10; }
.orn-jd__dt-cal-cell--fill { background: #dc964b; color: #ffffff; }
.orn-jd__dt-cal-cell--last { background: #c96a5c; color: #ffffff; }
.orn-jd__dt-cal-cell--none { background: #ebe6da; color: #7a7160; }

.orn-jd__dt-cal-cell:not(.is-disabled):not(.orn-jd__dt-cal-cell--empty):not(.orn-jd__dt-cal-cell--pad):hover { transform: translateY(-1px); box-shadow: 0 4px 10px rgba(20, 35, 59, 0.12); }
.orn-jd__dt-cal-cell.is-disabled { cursor: not-allowed; opacity: 0.55; }
.orn-jd__dt-cal-cell.is-promoted { outline: 2px solid var(--orn-navy, rgb(20, 35, 59)); outline-offset: 1px; }
.orn-jd__dt-cal-cell.is-selected { outline: 2px solid var(--orn-gold, #b18a4a); outline-offset: 2px; box-shadow: 0 6px 14px rgba(20, 35, 59, 0.18); }
.orn-visuallyhidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* ===== Account / login-register modal (merged from ornholidays-account.css) ===== */

/* =============================================================
 * ORN Holidays — account (login / register) styling.
 *
 * Two responsibilities:
 *
 * 1) Re-skin the legacy login_register.jsp modal when it opens on
 *    any ORN page. The modal is rendered by MODAL_PANEL.show() →
 *    jQuery blockUI; the container carries class `lgnSmBlk u_block`
 *    and the backdrop is `.blockOverlay`. Inside lives login.jsp +
 *    register.jsp with legacy classes (.lgnInpCtr / .decInp /
 *    .lgnButton / .lgnTxtSep / #signupForm / #loginForm).
 *
 *    Every override is scoped under `body.orn-page` so the SAME
 *    modal looks legacy when opened on non-ORN pages.
 *
 * 2) Custom .orn-account__* layout for the dedicated /signup page
 *    landing next turn. Not present yet; placeholder block at the
 *    bottom marks where those rules will live.
 * ============================================================= */

/* ─── ORN modal chrome (blockUI scrim + container) ────────────── */

body.orn-page .blockOverlay { background-color: rgba(10, 8, 4, 0.72) !important; backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); }

/* The legacy `.lgnSmBlk` is 350px — too cramped for the ORN look.
   Bump width, switch to dark coffee bg, gold accents, Spectral title. */
body.orn-page .lgnSmBlk, body.orn-page .blockMsg.lgnSmBlk { width: min(440px, 92vw) !important; max-width: 92vw; background: rgb(16, 14, 11) !important; border: 1px solid rgb(58, 51, 37) !important; border-radius: 20px !important; box-shadow: 0 24px 80px rgba(10, 8, 4, 0.55) !important; color: rgb(242, 233, 216); padding: 26px 28px 28px !important; overflow: hidden; }

/* Subtle gold radial glow top-right (matches the chat-panel card) */
body.orn-page .lgnSmBlk::before { content: ''; position: absolute; inset: 0; background: radial-gradient(120% 80% at 100% 0%, rgba(201, 164, 92, 0.14), transparent 60%); pointer-events: none; border-radius: inherit; }
body.orn-page .lgnSmBlk > * { position: relative; }

/* blockUI's default close × is a tiny dark image — replace */
body.orn-page .lgnSmBlk .close-block-msg, body.orn-page .lgnSmBlk .modalClose, body.orn-page .lgnSmBlk a.closeAct { background: transparent !important; border: 1px solid rgba(201, 164, 92, 0.4) !important; color: rgb(201, 164, 92) !important; border-radius: 50% !important; width: 30px !important; height: 30px !important; line-height: 28px !important; text-align: center !important; font-size: 18px !important; top: 14px !important; right: 14px !important; }

/* ─── #_loginBox shell ────────────────────────────────────────── */

body.orn-page #_loginBox { color: rgb(242, 233, 216); text-align: left; }
body.orn-page #_loginBox h2 { font-family: 'Spectral', 'Archivo', serif !important; font-weight: 600 !important; font-size: 22px !important; line-height: 1.15 !important; color: rgb(248, 241, 226) !important; margin: 0 0 6px !important; text-align: left !important; }
body.orn-page #_loginBox h2::before { content: 'ORN · ACCOUNT'; display: block; font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; letter-spacing: 0.22em; color: rgb(201, 164, 92); margin-bottom: 6px; font-weight: 600; }

/* Suppress the legacy ResourcePairKey.SIGNUP_PROMOTION block (often a
   blue tagline that clashes); fade it to a muted note. */
body.orn-page #_loginBox > p, body.orn-page #_loginBox > div:not([id]):not([class]) { color: rgba(184, 172, 146, 0.85) !important; font-size: 13.5px !important; line-height: 1.5 !important; margin: 0 0 14px !important; }

/* ─── Inputs (.lgnInpCtr .decInp) ─────────────────────────────── */

body.orn-page .lgnInpCtr { margin-bottom: 10px !important; }
body.orn-page .lgnInpCtr .decInp, body.orn-page #_loginBox .decInp, body.orn-page #_loginBox input[type="text"], body.orn-page #_loginBox input[type="email"], body.orn-page #_loginBox input[type="password"] { background: rgb(22, 19, 13) !important; background-image: none !important; /* kill the icon-sprite */ border: 1px solid rgb(58, 51, 37) !important; border-radius: 12px !important; padding: 12px 16px !important; font-family: 'Archivo', 'Inter', sans-serif !important; font-size: 14.5px !important; color: rgb(232, 222, 200) !important; width: 100% !important; box-sizing: border-box !important; transition: border-color 0.15s ease, box-shadow 0.15s ease; }
body.orn-page #_loginBox .decInp::placeholder, body.orn-page #_loginBox input::placeholder { color: rgba(184, 172, 146, 0.6) !important; }
body.orn-page #_loginBox .decInp:focus, body.orn-page #_loginBox input:focus { outline: none !important; border-color: rgb(201, 164, 92) !important; box-shadow: 0 0 0 2px rgba(201, 164, 92, 0.18) !important; }

/* Select boxes (rare in login but present in some variants) */
body.orn-page .lgnInpCtr select { background: rgb(22, 19, 13) !important; border: 1px solid rgb(58, 51, 37) !important; border-radius: 12px !important; color: rgb(232, 222, 200) !important; padding: 10px 14px !important; height: auto !important; }

/* ─── Primary CTA (.lgnButton) ────────────────────────────────── */

body.orn-page .lgnButton, body.orn-page #_loginBox .lgnButton, body.orn-page #signupForm .lgnButton, body.orn-page #loginForm .lgnButton { background-color: rgb(201, 164, 92) !important; background-image: none !important; color: rgb(20, 14, 6) !important; border: none !important; border-radius: 12px !important; padding: 13px 18px !important; font-family: 'Archivo', 'Inter', sans-serif !important; font-weight: 700 !important; font-size: 15px !important; line-height: 1 !important; width: 100% !important; cursor: pointer !important; margin: 14px 0 0 !important; box-shadow: none !important; transition: background-color 0.15s ease, transform 0.1s ease; }
body.orn-page .lgnButton:hover { background-color: rgb(217, 180, 110) !important; }
body.orn-page .lgnButton:active { transform: translateY(1px); }

/* ─── Separator ("or") ────────────────────────────────────────── */

body.orn-page .lgnTxtSep { height: 32px !important; margin: 16px 0 !important; }
body.orn-page .lgnTxtSep hr { border-top: 1px solid rgba(201, 164, 92, 0.18) !important; margin: -16px auto 10px !important; }
body.orn-page .lgnTxtSep .sepTxt { background: rgb(16, 14, 11) !important; color: rgba(217, 201, 164, 0.7) !important; font-family: 'JetBrains Mono', ui-monospace, monospace !important; font-size: 11px !important; letter-spacing: 0.2em !important; text-transform: uppercase !important; font-weight: 600 !important; padding: 6px 10px !important; }

/* ─── Social (FB + Google) — outline-gold pills ───────────────── */

body.orn-page #_loginBox a[href*="facebook"], body.orn-page #_loginBox a[href*="google"], body.orn-page #_loginBox #fconnectLogin, body.orn-page #_loginBox #gconnectLogin { display: block !important; background: transparent !important; border: 1px solid rgb(74, 65, 48) !important; border-radius: 12px !important; padding: 11px 16px !important; color: rgb(217, 201, 164) !important; text-align: center !important; text-decoration: none !important; font-family: 'Archivo', sans-serif !important; font-weight: 600 !important; font-size: 14px !important; margin-bottom: 8px !important; transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease; }
body.orn-page #_loginBox a[href*="facebook"]:hover, body.orn-page #_loginBox a[href*="google"]:hover, body.orn-page #_loginBox #fconnectLogin:hover, body.orn-page #_loginBox #gconnectLogin:hover { border-color: rgb(201, 164, 92) !important; background: rgba(201, 164, 92, 0.08) !important; }
/* Strip the legacy social brand image inside the link */
body.orn-page #_loginBox #fconnectLogin img, body.orn-page #_loginBox #gconnectLogin img { max-height: 18px; vertical-align: middle; margin-right: 8px; filter: brightness(1.1); }

/* ─── Tab toggles / footer links ("New here? Sign up", "Forgot password?") ── */

body.orn-page #_loginBox a, body.orn-page #_loginBox .toggleLink { color: rgb(201, 164, 92) !important; text-decoration: none !important; transition: color 0.15s ease; }
body.orn-page #_loginBox a:hover { color: rgb(217, 180, 110) !important; text-decoration: underline !important; }

body.orn-page #_loginBox label, body.orn-page #_loginBox .lgnInpCtr label { color: rgb(217, 201, 164) !important; font-family: 'Archivo', sans-serif !important; font-size: 13px !important; font-weight: 500 !important; }

body.orn-page #_loginBox .lgnErrMsg { background: rgba(190, 63, 57, 0.12); color: rgb(248, 196, 188) !important; border: 1px solid rgba(190, 63, 57, 0.32); border-radius: 10px; padding: 10px 14px; margin: 0 0 12px !important; text-align: left !important; font-size: 13.5px !important; }

/* jQuery validate error labels */
body.orn-page #_loginBox label.error { color: rgb(248, 196, 188) !important; font-size: 12.5px !important; margin-top: 4px !important; display: block !important; }

/* The "How Works" decorative line — hide on ORN; it's brand-clash */
body.orn-page #_loginBox .howWorksAct { display: none !important; }

/* =============================================================
 * .orn-signup__* — dedicated full-page ORN signup
 * (templates/ornholidays/customer/account/signup.jsp).
 *
 * Two-column layout on ≥900px: navy hero left, paper card right.
 * Stacks (hero → card) on smaller screens. All ORN tokens (gold,
 * navy, cream, Spectral display, Archivo body, JetBrains Mono
 * eyebrow) sourced from ornholidays-customer.css :root.
 * ============================================================= */

body.orn-page.orn-signup { background: var(--orn-cream, #EDEAE1); }

.orn-signup__main { padding: 36px 0 64px; }
.orn-signup__container { max-width: 1100px; padding: 0 24px; margin: 0 auto; }

.orn-signup__grid { display: grid; grid-template-columns: 1fr; gap: 0; background: var(--orn-paper, #ffffff); border-radius: 24px; overflow: hidden; box-shadow: 0 20px 60px rgba(20, 35, 59, 0.12); }
@media (min-width: 900px) {
    .orn-signup__grid { grid-template-columns: minmax(0, 480px) minmax(0, 1fr); min-height: 560px; }
}

/* ─── Left: navy hero ─────────────────────────────────────────── */

.orn-signup__hero { position: relative; background: linear-gradient(180deg, rgba(255,255,255,0.02) 0%, rgba(255,255,255,0) 100%), var(--orn-navy, rgb(20, 35, 59)); color: var(--orn-text-light, rgb(244, 239, 227)); padding: 44px 40px 40px; display: flex; flex-direction: column; gap: 18px; overflow: hidden; }
.orn-signup__hero::before { content: ''; position: absolute; inset: 0; background: radial-gradient(120% 80% at 100% 0%, rgba(201, 164, 92, 0.18), transparent 60%); pointer-events: none; }
.orn-signup__hero > * { position: relative; }

.orn-signup__brand { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.orn-signup__brand-disc { flex: 0 0 42px; width: 42px; height: 42px; border-radius: 50%; border: 1.5px solid var(--orn-gold-3, rgb(201, 164, 92)); display: flex; align-items: center; justify-content: center; }
.orn-signup__brand-mark { font-family: 'Spectral', var(--orn-font-display), serif; font-weight: 700; font-size: 20px; letter-spacing: 0.06em; color: rgb(248, 241, 226); }

.orn-signup__eyebrow { margin: 0; font-family: var(--orn-font-mono, 'JetBrains Mono', ui-monospace, monospace); font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--orn-gold-3, rgb(201, 164, 92)); font-weight: 600; }
.orn-signup__title { margin: 4px 0 0; font-family: 'Spectral', var(--orn-font-display), serif; font-weight: 600; font-size: 38px; line-height: 1.05; color: rgb(248, 241, 226); }
@media (max-width: 600px) {
    .orn-signup__title { font-size: 30px; }
}

.orn-signup__lede { margin: 0; font-family: var(--orn-font-body, 'Hanken Grotesk', sans-serif); font-size: 16px; line-height: 1.55; color: var(--orn-mute-3, rgb(195, 204, 214)); max-width: 38ch; }

.orn-signup__bullets { list-style: none; padding: 0; margin: 14px 0 0; display: flex; flex-direction: column; gap: 12px; }
.orn-signup__bullets li { display: flex; align-items: flex-start; gap: 12px; font-family: var(--orn-font-body, 'Hanken Grotesk', sans-serif); font-size: 14.5px; line-height: 1.5; color: rgba(244, 239, 227, 0.92); }
.orn-signup__bullet-icon { flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%; background: rgba(201, 164, 92, 0.16); color: var(--orn-gold-3, rgb(201, 164, 92)); display: inline-flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; margin-top: 1px; }

.orn-signup__hero-footnote { margin: auto 0 0; /* push to bottom of hero */ padding-top: 20px; font-family: var(--orn-font-body); font-size: 13.5px; color: rgba(195, 204, 214, 0.85); border-top: 1px solid rgba(201, 164, 92, 0.18); }
.orn-signup__hero-footnote a { color: var(--orn-gold-3, rgb(201, 164, 92)); font-weight: 600; text-decoration: none; margin-left: 6px; }
.orn-signup__hero-footnote a:hover { color: rgb(217, 180, 110); text-decoration: underline; }

/* ─── Right: paper form card ──────────────────────────────────── */

.orn-signup__card { background: var(--orn-paper, #ffffff); padding: 44px 44px 40px; color: var(--orn-ink, rgb(20, 35, 59)); display: flex; flex-direction: column; gap: 16px; }
@media (max-width: 600px) {
    .orn-signup__card { padding: 32px 22px 28px; }
}

.orn-signup__card-title { margin: 0; font-family: 'Spectral', var(--orn-font-display), serif; font-weight: 600; font-size: 26px; line-height: 1.1; color: var(--orn-ink); }
.orn-signup__card-lede { margin: -6px 0 6px; font-family: var(--orn-font-body); font-size: 14.5px; color: var(--orn-ink-2, rgb(58, 70, 84)); }

.orn-signup__err { background: rgba(190, 63, 57, 0.08); border: 1px solid rgba(190, 63, 57, 0.32); color: rgb(140, 36, 32); border-radius: 12px; padding: 12px 14px; font-size: 14px; font-family: var(--orn-font-body); line-height: 1.45; }

/* OAuth */
.orn-signup__oauth { display: flex; flex-direction: column; gap: 10px; }
.orn-signup__oauth-btn { display: flex; align-items: center; justify-content: center; gap: 10px; background: transparent; border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); border-radius: 12px; padding: 12px 16px; font-family: var(--orn-font-body); font-size: 14.5px; font-weight: 600; color: var(--orn-ink); text-decoration: none; transition: border-color 0.15s ease, background 0.15s ease; }
.orn-signup__oauth-btn:hover { border-color: var(--orn-gold, rgb(193, 142, 69)); background: rgba(201, 164, 92, 0.06); }
.orn-signup__oauth-icon { width: 22px; height: 22px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-family: 'Spectral', serif; font-weight: 800; font-size: 13px; }
.orn-signup__oauth-btn--google .orn-signup__oauth-icon { background: #4285F4; color: #fff; }
.orn-signup__oauth-btn--facebook .orn-signup__oauth-icon { background: #1877F2; color: #fff; }

.orn-signup__sep { display: flex; align-items: center; gap: 12px; margin: 4px 0; }
.orn-signup__sep::before, .orn-signup__sep::after { content: ''; flex: 1 1 0; height: 1px; background: var(--orn-line, rgba(20, 35, 59, 0.10)); }
.orn-signup__sep-txt { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.22em; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 600; text-transform: uppercase; }

/* Form */
.orn-signup__form { display: flex; flex-direction: column; gap: 14px; }
.orn-signup__field { display: flex; flex-direction: column; gap: 6px; }
.orn-signup__field-label { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 600; }
.orn-signup__input { background: var(--orn-cream-2, rgb(246, 241, 230)); border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); border-radius: 12px; padding: 13px 16px; font-family: var(--orn-font-body); font-size: 15px; color: var(--orn-ink); width: 100%; box-sizing: border-box; transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease; }
.orn-signup__input::placeholder { color: rgba(58, 70, 84, 0.45); }
.orn-signup__input:focus { outline: none; background: var(--orn-paper); border-color: var(--orn-gold, rgb(193, 142, 69)); box-shadow: 0 0 0 3px rgba(201, 164, 92, 0.18); }
.orn-signup__field-hint { font-size: 12px; color: var(--orn-mute); font-family: var(--orn-font-body); margin-top: -2px; }
.orn-signup__field-error { color: rgb(140, 36, 32); font-family: var(--orn-font-body); font-size: 12.5px; font-weight: 500; margin-top: 4px; display: block; }

/* Submit — gold pill, matches journey-detail "Open co-pilot" */
.orn-signup__submit { background-color: var(--orn-gold, rgb(193, 142, 69)); color: rgb(20, 14, 6); border: none; border-radius: 12px; padding: 14px 20px; font-family: var(--orn-font-display, 'Archivo', sans-serif); font-weight: 700; font-size: 15px; line-height: 1; cursor: pointer; margin-top: 6px; transition: background-color 0.15s ease, transform 0.1s ease; }
.orn-signup__submit:hover { background-color: rgb(217, 180, 110); }
.orn-signup__submit:active { transform: translateY(1px); }
.orn-signup__submit:disabled { opacity: 0.55; cursor: not-allowed; }

/* Privacy-policy consent (EngagementHelper output — usually a checkbox
   + inline text. The wrapper holds whatever HTML the helper renders;
   we just tone it down typographically). */
.orn-signup__consent { font-family: var(--orn-font-body); font-size: 13px; color: var(--orn-mute); line-height: 1.5; margin-top: 6px; }
.orn-signup__consent a { color: var(--orn-gold, rgb(193, 142, 69)); text-decoration: none; }
.orn-signup__consent a:hover { text-decoration: underline; }
.orn-signup__consent input[type="checkbox"] { accent-color: var(--orn-gold); margin-right: 8px; vertical-align: middle; }

.orn-signup__alt { margin: 16px 0 0; text-align: center; font-family: var(--orn-font-body); font-size: 13.5px; color: var(--orn-ink-2, rgb(58, 70, 84)); border-top: 1px solid var(--orn-line, rgba(20, 35, 59, 0.10)); padding-top: 16px; }
.orn-signup__alt a { color: var(--orn-gold, rgb(193, 142, 69)); font-weight: 700; text-decoration: none; margin-left: 6px; }
.orn-signup__alt a:hover { text-decoration: underline; color: rgb(169, 124, 60); }

/* =============================================================
 * .orn-book__* — ORN booking summary page
 * (templates/ornholidays/customer/account/book.jsp).
 *
 * Two-column layout on ≥1000px: traveller + contact cards left,
 * sticky pricing summary right. Stacks on mobile.
 * Reuses ORN tokens from ornholidays-customer.css :root.
 * ============================================================= */

body.orn-page.orn-book { background: var(--orn-cream, #EDEAE1); }

.orn-book__main { padding: 28px 0 64px; }
.orn-book__container { max-width: 1180px; padding: 0 24px; margin: 0 auto; }

.orn-book__back { display: inline-block; margin: 4px 0 14px; color: var(--orn-ink-2, rgb(58, 70, 84)); font-family: var(--orn-font-body, 'Hanken Grotesk', sans-serif); font-size: 14px; text-decoration: none; }
.orn-book__back:hover { color: var(--orn-ink, rgb(20, 35, 59)); }

.orn-book__step { margin: 0 0 6px; font-family: var(--orn-font-mono, 'JetBrains Mono', ui-monospace, monospace); font-size: 11.5px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--orn-gold, rgb(193, 142, 69)); font-weight: 600; }
.orn-book__title { margin: 0; font-family: 'Archivo', var(--orn-font-display), sans-serif; font-weight: 800; font-size: 38px; line-height: 1.05; color: var(--orn-ink, rgb(20, 35, 59)); }
@media (max-width: 700px) {
    .orn-book__title { font-size: 28px; }
}

.orn-book__lede { margin: 10px 0 22px; max-width: 64ch; color: var(--orn-ink-2, rgb(58, 70, 84)); font-family: var(--orn-font-body); font-size: 15px; line-height: 1.55; }

/* ─── Fare-guard banners (reprice / sold-out) ─────────────────── */

.orn-book__banner { display: flex; align-items: center; gap: 12px; background: var(--orn-cream-2); border: 1px solid var(--orn-cream-3); border-radius: 12px; padding: 12px 18px; margin: 0 0 18px; width: 100%; font-family: var(--orn-font-body); flex-wrap: wrap; }

.orn-book__banner::before { content: ""; flex: 0 0 18px; width: 18px; height: 18px; background-repeat: no-repeat; background-position: center; background-size: 18px 18px; }

.orn-book__banner-title { font-family: var(--orn-font-mono, monospace); font-size: 10px; letter-spacing: 0.16em; color: var(--orn-gold-2); text-transform: uppercase; }

.orn-book__banner-body { font-size: 13px; line-height: 1.45; color: var(--orn-ink-2, rgb(58, 70, 84)); flex: 1 1 auto; }

.orn-book__banner-prices { display: inline-flex; align-items: center; gap: 8px; padding: 4px 10px; background: rgba(20, 35, 59, 0.06); border-radius: 6px; font-size: 12px; font-weight: 600; color: var(--orn-navy); letter-spacing: 0.2px; }

.orn-book__banner--reprice::before { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23d97706' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 9v4'/><path d='M12 17h.01'/><path d='M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z'/></svg>"); }
.orn-book__banner--soldout::before { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23dc2626' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/><line x1='4.93' y1='4.93' x2='19.07' y2='19.07'/></svg>"); }

.orn-book__banner-cta { display: inline-flex; align-items: center; padding: 5px 12px; font-size: 12px; font-weight: 600; color: var(--orn-navy); background: #fff; border: 1px solid var(--orn-cream-3); border-radius: 6px; text-decoration: none; transition: background 0.15s ease; }
.orn-book__banner-cta:hover { background: var(--orn-cream-1); }

/* ─── 2-col grid ──────────────────────────────────────────────── */

.orn-book__grid { display: grid; grid-template-columns: 1fr; gap: 22px; /* No `align-items: start` — let grid items stretch to row height so
       the right column is as tall as the left, giving the inner summary
       card room to stick past the form. */ }
@media (min-width: 1000px) {
    .orn-book__grid { grid-template-columns: minmax(0, 1fr) 360px; }
    /* Reliable sticky sidebar: the right COLUMN is content-height (align-self:start)
       and sticks as a whole, rather than a child sticking inside a stretched item
       (which wasn't engaging). No overflow here — it would clip the card shadow. */
    .orn-book__col-right { align-self: start; position: sticky; top: 24px; }
}

.orn-book__col-left { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.orn-book__col-right { min-width: 0; }

/* ─── Card chrome (traveller details, contact details) ─────────── */

.orn-book__card { background: var(--orn-paper, #ffffff); border-radius: 20px; box-shadow: 0 12px 36px rgba(20, 35, 59, 0.08); padding: 24px 26px 22px; }
.orn-book__card-head { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; margin-bottom: 14px; }
.orn-book__card-title { margin: 0; font-family: 'Archivo', var(--orn-font-display), sans-serif; font-weight: 800; font-size: 19px; color: var(--orn-ink); }
.orn-book__card-meta { font-family: var(--orn-font-body); font-size: 13px; letter-spacing: 0; text-transform: none; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 500; }

/* ── Journey trip-detail card (shared _journey_summary_detail.jsp) — ORN theme.
   The .orn-book__card wrapper provides the paper/radius/shadow; these rules restyle
   the legacy pkgSmry/ui-crd/flt/sty/txpt markup into the ORN look. Scoped to
   .orn-book__jd so the legacy journey_booking_summary.jsp keeps its own styling. */
.orn-book__col-right .orn-book__jd { margin-top: 18px; }
/* The trip detail renders into two mounts: the desktop rail card (in col-right)
   and a mobile card (in col-left, below the pay-now panel). Desktop shows the
   rail; the mobile card is hidden until the phone breakpoint swaps them. */
.orn-book__jd--main { display: none; }
.orn-book__jd .pkgSmryCtr, .orn-book__jd .pkgSmryCntCtr { background: none; box-shadow: none; border-radius: 0; margin: 0; font-family: var(--orn-font-body); color: var(--orn-ink); }
.orn-book__jd .pkgSmryExtndCtr { display: none; }
.orn-book__jd .ui-crd--hd-bdr { padding: 0 0 16px; border-bottom: 1px solid var(--orn-line, #ece7dd); }
.orn-book__jd h2.ui-hd { margin: 0; font-family: 'Archivo', var(--orn-font-display), sans-serif; font-weight: 800; font-size: 18px; color: var(--orn-ink); }
.orn-book__jd .ui-crd--sct { padding: 16px 0 0; }
.orn-book__jd .ui-crd--sct + .ui-crd--sct { border-top: 1px solid var(--orn-line, #ece7dd); margin-top: 16px; }
.orn-book__jd .ui-crd--sct--hd { padding: 0 0 10px; }
.orn-book__jd h3.ui-subhd { margin: 0; font-family: var(--orn-font-body); font-weight: 700; font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--orn-mute, #9a8a6e); }
.orn-book__jd .ui-stk { display: flex; align-items: center; gap: 10px; }
.orn-book__jd .ui-stk-itm--fill { flex: 1 1 auto; }
/* travel summary (date + travellers) */
.orn-book__jd .pkgTvlSmry { display: flex; flex-wrap: wrap; gap: 6px 24px; }
.orn-book__jd .pkgTvlSmryItm { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--orn-ink); }
.orn-book__jd .pkgTvlSmryItm i { color: var(--orn-mute, #9a8a6e); }
/* flights */
.orn-book__jd .fltsSltnCtr + .fltsSltnCtr, .orn-book__jd .fltDtlCtr + .fltDtlCtr { border-top: 1px dashed var(--orn-line, #ece7dd); margin-top: 14px; padding-top: 14px; }
.orn-book__jd .fltLyvr { font-size: 12px; color: var(--orn-mute, #9a8a6e); text-align: center; padding: 10px 0; }
.orn-book__jd .fltLgSct { font-weight: 600; font-size: 13.5px; color: var(--orn-ink); padding: 0 0 6px; }
.orn-book__jd .fltLgDtl { display: flex; align-items: center; text-align: center; gap: 8px; }
.orn-book__jd .fltLgDtl .arI { flex: 0 0 28px; }
.orn-book__jd .fltLgDtl .arI img { width: 100%; border-radius: 4px; }
.orn-book__jd .fltLgDtl .dep, .orn-book__jd .fltLgDtl .arr { flex: 1 1 auto; font-size: 12.5px; }
.orn-book__jd .fltLgDtl .depA, .orn-book__jd .fltLgDtl .arrA { font-weight: 700; color: var(--orn-ink); }
.orn-book__jd .fltLgDtl .depD, .orn-book__jd .fltLgDtl .arrD { color: var(--orn-mute, #9a8a6e); font-size: 11.5px; margin-top: 2px; }
.orn-book__jd .fltLgDtl .dur { width: 84px; }
.orn-book__jd .fltLgDtl .dur .durIc { color: var(--orn-mute, #9a8a6e); }
.orn-book__jd .fltLgDtl .dur .durD { font-size: 11px; color: var(--orn-mute, #9a8a6e); }
.orn-book__jd .fltTmNR { font-size: 12px; margin-top: 12px; }
.orn-book__jd .ancIncLstCtr { margin-top: 4px; }
.orn-book__jd .ancIncLstCtr .styIncItm { padding-top: 6px; }
.orn-book__jd .ancIncLstCtr .cnt { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--orn-ink); }
/* Inclusion blocks (transfers / sightseeing) — name + date, matching the legacy
   booking summary. Date sits below the name, indented past the icon. */
.orn-book__jd .incBlkLstCtr .styIncItm { padding-top: 9px; }
.orn-book__jd .ancIncLstCtr .cnt { align-items: flex-start; }
.orn-book__jd .ancIncLstCtr .cnt { gap: 10px; }
.orn-book__jd .incBlkIco { flex: none; width: 19px; height: 19px; margin-top: 1px; color: var(--orn-mute, #9a8a6e); }
.orn-book__jd .incBlkDt { font-size: 11.5px; color: var(--orn-mute, #9a8a6e); margin-top: 3px; margin-left: 22px; }
/* City section header: city name (ui-subhd) + total-nights chip on the right. */
.orn-book__jd .orn-book__jd-nights { font-family: 'IBM Plex Mono', monospace; font-size: 11px; font-weight: 600; letter-spacing: 0.04em; color: var(--orn-mute, #9a8a6e); white-space: nowrap; }
/* per-city stay */
.orn-book__jd .stySmryDtlCtr h2 { margin: 0; font-family: 'Archivo', var(--orn-font-display), sans-serif; font-size: 15.5px; font-weight: 700; color: var(--orn-ink); display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.orn-book__jd .stySmryDtlCtr .loc { font-size: 12.5px; color: var(--orn-mute, #9a8a6e); margin-top: 4px; }
/* A stay the guest arranged themselves: the h2 above is a flex row, so the pill
   sits inline with the name. Unscoped, since trip_summary.jsp shares this renderer. */
.orn-book__jd-sb { padding: 2px 8px; border-radius: 999px; background: #F3ECFA; color: #6B3FA0; font-size: 10.5px; font-weight: 700; letter-spacing: .02em; white-space: nowrap; }
.orn-book__jd-sbadr { font-size: 12.5px; color: var(--orn-mute, #9a8a6e); margin-top: 4px; }
.orn-book__jd .stySmryDtlCtr .styImg { margin-top: 12px; }
.orn-book__jd .stySmryDtlCtr .styImg img { max-width: 100%; border-radius: 12px; display: block; }
.orn-book__jd .styDtsCtr { display: flex; align-items: center; text-align: center; margin-top: 14px; background: var(--orn-sand, #f7f3ea); border-radius: 12px; padding: 12px; }
.orn-book__jd .styDtsCtr .cntC { flex: 1 1 auto; }
.orn-book__jd .styDtsCtr .cntC .lbl { font-size: 10px; letter-spacing: .05em; text-transform: uppercase; color: var(--orn-mute, #9a8a6e); }
.orn-book__jd .styDtsCtr .cntC .val { font-size: 13px; font-weight: 600; color: var(--orn-ink); margin-top: 3px; }
.orn-book__jd .styDtsCtr .cntC .val .tsC { font-size: 11px; font-weight: 400; color: var(--orn-mute, #9a8a6e); }
.orn-book__jd .styDtsCtr .durC { width: 92px; }
.orn-book__jd .styDtsCtr .durC .val { font-size: 12px; font-weight: 500; }
.orn-book__jd .stySmryDtlCtr .rmPax { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--orn-mute, #9a8a6e); margin-top: 12px; }
.orn-book__jd .stySmryDtlCtr .hsRmXclP { font-size: 12px; margin-top: 12px; }
.orn-book__jd .styPrcBkupCtr { background: var(--orn-sand, #f7f3ea); border-radius: 12px; padding: 12px 14px; margin-top: 12px; font-size: 13px; }
.orn-book__jd .styPrcBkupItm { display: flex; justify-content: space-between; gap: 10px; }
.orn-book__jd .styPrcBkupItm + .styPrcBkupItm { margin-top: 8px; }
.orn-book__jd .styPrcBkupItm .ttl .sub { font-size: 11.5px; color: var(--orn-mute, #9a8a6e); }
.orn-book__jd .styPrcBkupInf { font-size: 11px; color: var(--orn-mute, #9a8a6e); margin-top: 8px; }
/* transport (car rental / road) */
.orn-book__jd .txptDtlCtr .ttl { font-family: 'Archivo', var(--orn-font-display), sans-serif; font-size: 15px; font-weight: 700; color: var(--orn-ink); }
.orn-book__jd .txptDtlCtr .sub { font-size: 12.5px; color: var(--orn-mute, #9a8a6e); margin-top: 3px; }
.orn-book__jd .txptDtlCtr .sts { margin-top: 6px; }
.orn-book__jd .txptDtlCtr .tnc { font-size: 12.5px; margin-top: 8px; }
.orn-book__jd .txptDtlCtr .tnc a { color: var(--orn-red-2, #C90A12); }
/* badges */
.orn-book__jd .alabel { display: inline-block; font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 999px; }
.orn-book__jd .alabel-critical { background: #fdecea; color: #c0392b; }
.orn-book__jd .alabel-info, .orn-book__jd .alabel-normal { background: var(--orn-sand, #f7f3ea); color: var(--orn-mute, #9a8a6e); cursor: pointer; }
.orn-book__jd .alabel-important { background: #fff4e5; color: #b26a00; }
.orn-book__jd .star img { display: inline; vertical-align: middle; }

/* ── All-passenger inputs (shared /trip/includes/booking_pax_inputs.jsp) — ORN theme.
   Scoped to .orn-book__pax-inputs so the legacy journey_booking_summary.jsp (no wrapper)
   keeps its own styling. Restyles the partial's legacy dl/dd pax markup to match the
   ORN book inputs. */
.orn-book__pax-inputs .paxTmpNmActCtr { display: none; }
.orn-book__pax-inputs .bkPaxsFldsCtr { display: flex; flex-direction: column; }
.orn-book__pax-inputs .paxFldsCtr { border: 0; border-radius: 0; padding: 0; margin: 0; }
.orn-book__pax-inputs .paxFldsCtr + .paxFldsCtr { border-top: 1px solid var(--orn-line, #ece7dd); margin-top: 18px; padding-top: 18px; }
.orn-book__pax-inputs .paxFldsHd { display: flex; align-items: flex-start; justify-content: space-between; margin: 0 0 10px; }
.orn-book__pax-inputs .paxFldsHd .ttl { font-family: var(--orn-font-display, 'Archivo', sans-serif); font-size: 14px; font-weight: 700; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-book__pax-inputs .paxFldsHd .ttl .sub { display: inline-block; font-family: var(--orn-font-body); font-size: 10.5px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--orn-mute, #9a8a6e); margin-right: 8px; }
/* field grid: Title · First · Last */
.orn-book__pax-inputs .fldsHCtr { width: 100%; }
.orn-book__pax-inputs .fldsHCtrInfo { display: grid; grid-template-columns: 110px minmax(0, 1fr) minmax(0, 1fr); gap: 10px 12px; width: 100%; }
.orn-book__pax-inputs dl { width: auto; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.orn-book__pax-inputs dl.ttlSpc { width: auto; }
.orn-book__pax-inputs dt { margin: 0; }
.orn-book__pax-inputs dt label { font-family: var(--orn-font-body); font-size: 12.5px; font-weight: 500; color: var(--orn-mute, #9a8a6e); }
.orn-book__pax-inputs dt label sup { color: var(--orn-red, rgb(190, 63, 57)); font-weight: 700; }
.orn-book__pax-inputs dd { margin: 0; }
/* Layout — DESKTOP: Title · First · Last in one row (matches the desktop booking
   reference). MOBILE: stacked, compact Title, tighter padding. The pax-inputs
   partial ships an inline <style> (`.fmFldsBlkCtr .fldsHCtr .fldsHCtrInfo{display:
   flex;flex-wrap:wrap}` + mobile `dl.ttlSpc{width:100%}` / `select.paxTitle{max-
   width:none}`) that outranks a bare `.orn-book__pax-inputs` rule, so every layout
   selector here is wrapper + `.fmFldsBlkCtr`-prefixed to win on specificity. */
.orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr .fldsHCtrInfo { display: grid; grid-template-columns: minmax(150px, 190px) minmax(0, 1fr) minmax(0, 1fr); gap: 10px 14px; align-items: start; width: 100%; }
.orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl { width: 100%; margin: 0; }
.orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl.ttlSpc { width: 100%; }
.orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl dd { margin: 0; }
/* The partial emits an empty error-message <div> after each input; collapse it
   when empty so it does not add a phantom gap before the next field. */
.orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl dd > div:empty { display: none; margin: 0; }

/* inputs — clean, FD-style: white field, a clearly visible hairline border and a
   6px radius (both viewports; padding is tightened on mobile below). */
.orn-book__pax-inputs .paxTitle,
.orn-book__pax-inputs .paxnameF,
.orn-book__pax-inputs .paxnameL,
.orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl dd select,
.orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl dd input[type="text"] {
    width: 100%; max-width: 100%; box-sizing: border-box; background: #fff;
    border: 1px solid rgb(201, 205, 214); border-radius: 6px; padding: 5px 10px; box-shadow: none;
    font-family: var(--orn-font-body); font-size: 14.5px; line-height: 1.4; color: var(--orn-ink, rgb(20, 35, 59));
    transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
/* Desktop: the Title dropdown fills its grid column. */
.orn-book__pax-inputs .bkPaxsFldsCtr .paxFldsCtr select.paxTitle,
.orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl.ttlSpc dd select.paxTitle { width: 100%; max-width: 100%; }
.orn-book__pax-inputs .paxTitle:focus,
.orn-book__pax-inputs .paxnameF:focus,
.orn-book__pax-inputs .paxnameL:focus,
.orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl dd select:focus,
.orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl dd input[type="text"]:focus {
    outline: none; background: var(--orn-paper); border-color: var(--orn-gold, rgb(193, 142, 69));
    box-shadow: 0 0 0 3px rgba(201, 164, 92, 0.18);
}

/* MOBILE only (≤768px) — stack Title/First/Last, tighten field + label spacing
   and input padding, and keep the Title dropdown compact. Desktop keeps the
   3-column row above untouched. */
@media (max-width: 768px) {
    .orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr .fldsHCtrInfo { display: flex; flex-direction: column; flex-wrap: nowrap; align-items: stretch; gap: 5px; }
    .orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl { gap: 0; }
    .orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl.ttlSpc { width: auto; max-width: 100%; }
    .orn-book__pax-inputs dt { margin-bottom: 0; padding: 0; }
    .orn-book__pax-inputs .paxTitle,
    .orn-book__pax-inputs .paxnameF,
    .orn-book__pax-inputs .paxnameL,
    .orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl dd select,
    .orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl dd input[type="text"] { padding: 6px 10px; }
    .orn-book__pax-inputs .bkPaxsFldsCtr .paxFldsCtr select.paxTitle,
    .orn-book__pax-inputs .fmFldsBlkCtr .fldsHCtr dl.ttlSpc dd select.paxTitle { width: 160px; max-width: 160px; }
}

.orn-book__room-band { margin: 6px 0 12px; font-family: var(--orn-font-display, 'Archivo', sans-serif); font-size: 13px; letter-spacing: 0; text-transform: none; color: var(--orn-gold, rgb(193, 142, 69)); font-weight: 700; padding-top: 8px; border-top: 1px dashed var(--orn-line, rgba(20, 35, 59, 0.10)); }
.orn-book__room-band:first-of-type { border-top: none; padding-top: 0; }

/* ─── Per-pax row (full-width; type is inlined in the row title) ── */

.orn-book__pax { padding: 14px 0; border-bottom: 1px solid var(--orn-line, rgba(20, 35, 59, 0.08)); }
.orn-book__pax:last-of-type { border-bottom: none; padding-bottom: 0; }

.orn-book__pax-fields { flex: 1 1 0; min-width: 0; }
.orn-book__pax-rowtitle { font-family: var(--orn-font-display, 'Archivo', sans-serif); font-size: 14px; letter-spacing: 0; text-transform: none; color: var(--orn-ink, rgb(20, 35, 59)); font-weight: 700; margin-bottom: 8px; }
.orn-book__pax-row { display: grid; grid-template-columns: 100px minmax(0, 1fr) minmax(0, 1fr); gap: 10px; }
.orn-book__pax-row .orn-book__field--age { grid-column: 1 / -1; max-width: 140px; }
@media (max-width: 720px) {
    .orn-book__pax-row { grid-template-columns: 100px minmax(0, 1fr); }
    .orn-book__pax-row .orn-book__field--first, .orn-book__pax-row .orn-book__field--last { grid-column: span 2; }
}

/* ─── Field / input chrome ─────────────────────────────────────── */

.orn-book__field { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.orn-book__field-label { font-family: var(--orn-font-body); font-size: 12.5px; letter-spacing: 0; text-transform: none; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 500; }
.orn-book__req { color: var(--orn-red, rgb(190, 63, 57)); font-weight: 700; }

.orn-book__input { background: var(--orn-cream-2, rgb(246, 241, 230)); border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); border-radius: 5px; padding: 11px 14px; font-family: var(--orn-font-body); font-size: 14.5px; color: var(--orn-ink, rgb(20, 35, 59)); width: 100%; box-sizing: border-box; transition: border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease; }
.orn-book__input::placeholder { color: rgba(58, 70, 84, 0.4); }
.orn-book__input:focus { outline: none; background: var(--orn-paper); border-color: var(--orn-gold, rgb(193, 142, 69)); box-shadow: 0 0 0 3px rgba(201, 164, 92, 0.18); }
/* A locked contact is a statement of fact, not a field: strip the box entirely so it
   reads as text under its label. Still an <input readonly> underneath so the value
   posts (a disabled input would not) and can be selected and copied. */
/* Qualified with the field wrapper AND the element on purpose. The booking form also
   carries the legacy `def-form` class, whose `.def-form input` rule (b2c-*.css) is
   (0,1,1) and so outranks a lone class - it was repainting the border, background and
   padding while only :focus (0,2,0) got through, which is why a locked field kept its
   box until you clicked it. */
.orn-book__field input.orn-book__input--locked { background: none; border-color: transparent; box-shadow: none; padding-left: 0; padding-right: 0; font-weight: 600; color: var(--orn-ink, rgb(20, 35, 59)); cursor: default; }
.orn-book__field input.orn-book__input--locked:focus { background: none; border-color: transparent; box-shadow: none; }
.orn-book__input--select { appearance: none; -webkit-appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--orn-mute, rgb(154, 138, 110)) 50%), linear-gradient(135deg, var(--orn-mute, rgb(154, 138, 110)) 50%, transparent 50%); background-position: calc(100% - 14px) 50%, calc(100% - 9px) 50%; background-size: 5px 5px, 5px 5px; background-repeat: no-repeat; padding-right: 28px; }

/* ─── Contact card layout ─────────────────────────────────────── */

.orn-book__contact { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 600px) {
    .orn-book__contact { grid-template-columns: 1fr; }
}

.orn-book__contact-note { margin: 12px 0 0; font-family: var(--orn-font-body); font-size: 13px; color: var(--orn-mute, rgb(154, 138, 110)); line-height: 1.5; }

/* ─── Sticky pricing summary (right column) ────────────────────── */

.orn-book__summary { background: var(--orn-paper, #fff); border-radius: 20px; box-shadow: 0 12px 36px rgba(20, 35, 59, 0.10); padding: 26px 26px 24px; position: relative; overflow: hidden; }

.orn-book__summary-eyebrow { margin: 0; font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--orn-gold, rgb(193, 142, 69)); font-weight: 600; }
.orn-book__summary-title { margin: 6px 0 8px; font-family: 'Archivo', var(--orn-font-display), sans-serif; font-weight: 800; font-size: 20px; line-height: 1.15; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-book__summary-meta { font-family: var(--orn-font-body); font-size: 13.5px; color: var(--orn-ink-2, rgb(58, 70, 84)); display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.orn-book__summary-dot { color: var(--orn-mute, rgb(154, 138, 110)); }

.orn-book__summary-rule { border: none; border-top: 1px solid var(--orn-line, rgba(20, 35, 59, 0.10)); margin: 16px 0; }

.orn-book__summary-lines { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; font-family: var(--orn-font-body); font-size: 14px; color: var(--orn-ink-2); }

.orn-book__summary-totalrow { display: flex; align-items: baseline; justify-content: space-between; margin: 4px 0 2px; }
.orn-book__summary-tlabel { font-family: var(--orn-font-display, 'Archivo', sans-serif); font-size: 15px; letter-spacing: 0; text-transform: none; color: var(--orn-ink, rgb(20, 35, 59)); font-weight: 700; }

/* City-by-city nights + meta rows + price-breakdown lines */
.orn-book__summary-cities { margin-top: 4px; font-family: var(--orn-font-body); font-size: 14px; color: var(--orn-ink-2, rgb(58, 70, 84)); line-height: 1.45; }
.orn-book__summary-tripmeta { display: flex; flex-direction: column; gap: 6px; margin-top: 14px; }
.orn-book__summary-meta-row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; font-family: var(--orn-font-body); font-size: 13.5px; line-height: 1.5; }
.orn-book__summary-meta-k { color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 500; flex: 0 0 auto; }
.orn-book__summary-meta-v { color: var(--orn-ink-2, rgb(58, 70, 84)); font-weight: 600; text-align: right; flex: 1 1 0; min-width: 0; }
.orn-book__summary-meta-ic { font-size: 14px; opacity: 0.85; }
.orn-book__summary-prc { display: flex; flex-direction: column; gap: 8px; }
.orn-book__summary-prc-line { display: flex; align-items: baseline; justify-content: space-between; font-family: var(--orn-font-body); font-size: 14px; color: var(--orn-ink-2, rgb(58, 70, 84)); gap: 12px; }
.orn-book__summary-prc-line > span:last-child { font-family: var(--orn-font-display, 'Archivo', sans-serif); font-weight: 600; color: var(--orn-ink, rgb(20, 35, 59)); white-space: nowrap; }
.orn-book__summary-prc-line--tax { color: var(--orn-mute, rgb(154, 138, 110)); font-size: 13px; }
.orn-book__summary-prc-line--tax > span:last-child { color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 500; }
.orn-book__summary-tvalue { font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 28px; color: var(--orn-ink, rgb(20, 35, 59)); letter-spacing: -0.5px; }
.orn-book__summary-perp { font-family: var(--orn-font-body); font-size: 13px; color: var(--orn-mute, rgb(154, 138, 110)); margin: 2px 0 18px; }

.orn-book__summary-redeem, .orn-book__summary-earn { display: inline-block; margin: 0 6px 8px 0; padding: 6px 12px; border-radius: 999px; font-size: 13px; font-weight: 600; line-height: 1.2; }

.orn-book__summary-redeem { background: var(--orn-navy); color: #fff; }

.orn-book__summary-earn { background: var(--orn-text); color: #fff; }

/* Selected optionals block — grouped by city under the price summary. */
.orn-book__summary-extras { margin-top: 18px; }
.orn-book__summary-extras-eyebrow { font-family: var(--orn-font-mono); font-size: 10.5px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 600; margin: 0 0 12px; }
.orn-book__summary-extras-group { margin: 0 0 14px; }
.orn-book__summary-extras-group:last-child { margin-bottom: 0; }
.orn-book__summary-extras-city { font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 13px; color: var(--orn-ink, rgb(20, 35, 59)); margin-bottom: 6px; letter-spacing: 0.01em; }
.orn-book__summary-extras-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.orn-book__summary-extras-row { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; font-family: var(--orn-font-body); font-size: 13.5px; color: var(--orn-ink-2, rgb(58, 70, 84)); line-height: 1.35; }
.orn-book__summary-extras-name { flex: 1 1 auto; }
.orn-book__summary-extras-price { flex: 0 0 auto; font-family: 'Archivo', sans-serif; font-weight: 700; color: var(--orn-ink, rgb(20, 35, 59)); font-variant-numeric: tabular-nums; }
.orn-book__summary-extras-kind { flex: 0 0 auto; font-family: var(--orn-font-mono); font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-mute, rgb(154, 138, 110)); }

/* Expandable payment schedule + cancellation policy block on book.jsp.
   Renders below the pay-now card; reads pkgDataJson.terms which is the
   same shape as ornJdTermsBody on the journey-detail Terms tab. */
.orn-book__terms { margin-top: 16px; padding: 0; overflow: hidden; }
.orn-book__terms-toggle {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 18px 22px;
    background: #fff;
    border: 0;
    cursor: pointer;
    font-family: 'Archivo', sans-serif;
    text-align: left;
}
.orn-book__terms-toggle:hover { background: rgba(20, 35, 59, 0.02); }
.orn-book__terms-toggle-t { font-weight: 700; font-size: 15px; color: var(--orn-ink, rgb(20, 35, 59)); letter-spacing: -0.01em; }
.orn-book__terms-toggle-i { font-family: 'Archivo', sans-serif; font-weight: 400; font-size: 22px; color: var(--orn-ink, rgb(20, 35, 59)); line-height: 1; width: 24px; text-align: center; }
.orn-book__terms-body { padding: 0 22px 22px; display: flex; flex-direction: column; gap: 22px; }
.orn-book__terms-body[hidden] { display: none !important; }
.orn-book__terms-toggle[aria-expanded="false"] + .orn-book__terms-body { display: none !important; }
.orn-book__terms-block { display: flex; flex-direction: column; gap: 10px; }
.orn-book__terms-block-title { font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 13px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--orn-mute, rgb(154, 138, 110)); margin: 0 0 4px; }
.orn-book__terms-grid { display: flex; flex-direction: column; border: 1px solid var(--orn-line, rgba(20, 35, 59, 0.10)); border-radius: 8px; overflow: hidden; }
.orn-book__terms-head, .orn-book__terms-row { display: grid; align-items: center; gap: 12px; padding: 10px 14px; }
.orn-book__terms-grid--2col .orn-book__terms-head,
.orn-book__terms-grid--2col .orn-book__terms-row { grid-template-columns: 1fr auto; }
.orn-book__terms-grid--3col .orn-book__terms-head,
.orn-book__terms-grid--3col .orn-book__terms-row { grid-template-columns: 1fr 1fr auto; }
.orn-book__terms-head { background: rgba(20, 35, 59, 0.04); }
.orn-book__terms-row + .orn-book__terms-row,
.orn-book__terms-head + .orn-book__terms-row { border-top: 1px solid var(--orn-line, rgba(20, 35, 59, 0.08)); }
.orn-book__terms-cell { font-family: var(--orn-font-body); font-size: 13.5px; color: var(--orn-ink-2, rgb(58, 70, 84)); line-height: 1.4; }
.orn-book__terms-cell--head { font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--orn-mute, rgb(154, 138, 110)); }
.orn-book__terms-cell--num { text-align: right; font-weight: 600; color: var(--orn-ink, rgb(20, 35, 59)); white-space: nowrap; }
.orn-book__terms-note { margin: 4px 0 0; font-family: var(--orn-font-body); font-size: 12px; color: var(--orn-mute, rgb(154, 138, 110)); line-height: 1.55; }

@media (max-width: 767px) {
    .orn-book__terms-head { display: none; }
    .orn-book__terms-grid { border-radius: 10px; }
    .orn-book__terms-row { grid-template-columns: 1fr !important; gap: 4px; padding: 10px 14px; }
    .orn-book__terms-cell {
        display: flex;
        justify-content: space-between;
        align-items: baseline;
        gap: 12px;
        font-size: 13px;
        line-height: 1.4;
    }
    .orn-book__terms-cell::before {
        content: attr(data-label);
        font-family: var(--orn-font-body);
        font-weight: 500;
        font-size: 12px;
        letter-spacing: 0;
        text-transform: none;
        color: var(--orn-mute, rgb(154, 138, 110));
        flex-shrink: 0;
    }
    .orn-book__terms-cell--num { text-align: right; font-weight: 700; }
    .orn-book__terms-cell--num::before { font-weight: 500; color: var(--orn-mute, rgb(154, 138, 110)); }
}

.orn-book__summary-rewardsrow { display: flex; justify-content: space-between; align-items: baseline; margin: 14px 0 6px; padding: 10px 12px; background: var(--orn-navy); color: #fff; border-radius: 8px; }

/* One highlighted bubble for every saving off the total (special discount +
   rewards applied): the bubble moves to the wrapper, the rows inside are plain lines. */
.orn-book__summary-savings { display: flex; flex-direction: column; gap: 6px; margin: 14px 0 6px; padding: 10px 12px; background: var(--orn-navy); color: #fff; border-radius: 8px; }
.orn-book__summary-savings .orn-book__summary-rewardsrow { margin: 0; padding: 0; background: none; border-radius: 0; }

.orn-book__summary-rewards-l { font-family: var(--orn-font-body); font-size: 13px; font-weight: 600; color: #fff; letter-spacing: 0.2px; }

.orn-book__summary-rewards-v { font-family: 'JetBrains Mono', monospace; font-size: 15px; font-weight: 700; color: #fff; }

.orn-book__summary-netrow { display: flex; justify-content: space-between; align-items: baseline; margin: 4px 0 12px; padding-top: 10px; border-top: 1px dashed rgba(20, 35, 59, 0.15); }

.orn-book__summary-net-l { font-family: var(--orn-font-body); font-size: 15px; font-weight: 700; color: var(--orn-ink, rgb(20, 35, 59)); }

.orn-book__summary-net-v { font-family: 'JetBrains Mono', monospace; font-size: 20px; font-weight: 700; color: var(--orn-ink, rgb(20, 35, 59)); letter-spacing: -0.3px; }

.orn-book__cta { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; background-color: var(--orn-gold, rgb(193, 142, 69)); color: rgb(20, 14, 6); border: none; border-radius: 12px; padding: 15px 20px; font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 15.5px; line-height: 1; cursor: pointer; transition: background-color 0.15s ease, transform 0.1s ease; }
.orn-book__cta:hover { background-color: rgb(217, 180, 110); }
.orn-book__cta:active { transform: translateY(1px); }

.orn-book__cta-foot { margin: 10px 0 0; text-align: center; font-family: var(--orn-font-body); font-size: 12.5px; color: var(--orn-mute, rgb(154, 138, 110)); }

/* =============================================================
 * .orn-book__paynow — "How much do you want to pay now" card
 * (renders below contact card on the left column; replaces the
 * right-rail Continue CTA so the customer takes one action here).
 * ============================================================= */

.orn-book__paynow { /* Inherits .orn-book__card chrome (paper card, radius, shadow). */ }

.orn-book__paynow-opts { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
@media (max-width: 720px) {
    .orn-book__paynow-opts { grid-template-columns: 1fr; }
}

.orn-book__paynow-opt { display: flex; align-items: flex-start; gap: 10px; padding: 14px 16px; border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); border-radius: 12px; background: var(--orn-cream-2, rgb(246, 241, 230)); cursor: pointer; transition: border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease; }
.orn-book__paynow-opt:hover { border-color: var(--orn-gold, rgb(193, 142, 69)); }
.orn-book__paynow-opt input[type="radio"] { margin-top: 2px; accent-color: var(--orn-gold, rgb(193, 142, 69)); flex: 0 0 auto; }
.orn-book__paynow-opt:has(input:checked) { border-color: var(--orn-gold, rgb(193, 142, 69)); background: var(--orn-paper, #fff); box-shadow: 0 0 0 3px rgba(201, 164, 92, 0.14); }
.orn-book__paynow-opt-body { flex: 1 1 0; min-width: 0; }
.orn-book__paynow-opt-title { font-family: var(--orn-font-display, 'Archivo', sans-serif); font-size: 14px; font-weight: 700; color: var(--orn-ink, rgb(20, 35, 59)); line-height: 1.35; }
.orn-book__paynow-opt-balance { margin-top: 6px; font-family: var(--orn-font-body); font-size: 13px; color: var(--orn-navy); font-weight: 600; }
.orn-book__paynow-opt-schedule { margin-top: 4px; font-family: var(--orn-font-body); font-size: 13px; color: rgb(122, 133, 147); font-weight: 500; }
.orn-book__paynow-opt-fine { margin-top: 6px; font-family: var(--orn-font-body); font-size: 12px; color: var(--orn-mute, rgb(154, 138, 110)); line-height: 1.4; }

.orn-book__paynow-rows { border-top: 1px solid var(--orn-line, rgba(20, 35, 59, 0.10)); padding-top: 14px; display: flex; flex-direction: column; gap: 6px; }
.orn-book__paynow-row { display: flex; align-items: baseline; justify-content: space-between; font-family: var(--orn-font-body); font-size: 14px; color: var(--orn-ink-2, rgb(58, 70, 84)); }
.orn-book__paynow-row-k { color: var(--orn-mute, rgb(154, 138, 110)); }
.orn-book__paynow-row-v { font-family: var(--orn-font-display, 'Archivo', sans-serif); font-weight: 700; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-book__paynow-row--now .orn-book__paynow-row-k { color: var(--orn-ink, rgb(20, 35, 59)); font-weight: 600; }
.orn-book__paynow-row--now .orn-book__paynow-row-v { font-size: 22px; letter-spacing: -0.3px; }

.orn-book__paynow-terms { margin: 14px 0 0; font-family: var(--orn-font-body); font-size: 12.5px; color: var(--orn-mute, rgb(154, 138, 110)); line-height: 1.5; }
.orn-book__paynow-terms a { color: var(--orn-gold, rgb(193, 142, 69)); text-decoration: none; }
.orn-book__paynow-terms a:hover { text-decoration: underline; }

.orn-book__paynow-actions { display: flex; align-items: flex-start; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
.orn-book__paynow-holdwrap { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.orn-book__paynow-holdwrap .orn-book__paynow-btn { width: 100%; }
.orn-book__paynow-holdmeta { display: flex; align-items: center; justify-content: center; gap: 8px; font-size: 12px; color: var(--orn-ink-dim, rgba(20, 35, 59, 0.6)); }
.orn-book__paynow-holdmeta-sep { opacity: 0.5; }
.orn-book__paynow-holdmeta-link { color: var(--orn-gold, rgb(193, 142, 69)); text-decoration: none; }
.orn-book__paynow-holdmeta-link:hover { text-decoration: underline; }
.orn-book__paynow-btn { flex: 1 1 0; min-width: 0; border: none; border-radius: var(--button-radius-primary); padding: 14px 18px; font-family: var(--orn-font-display, 'Archivo', sans-serif); font-weight: 700; font-size: 15px; line-height: 1; cursor: pointer; transition: background-color 0.15s ease, transform 0.1s ease, border-color 0.15s ease; }
.orn-book__paynow-btn--primary { background-color: var(--color-primary, var(--orn-gold, rgb(193, 142, 69))); color: #fff; }
.orn-book__paynow-btn--secondary { background: transparent; color: var(--orn-ink, rgb(20, 35, 59)); border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.32)); }
.orn-book__paynow-btn--secondary:hover { border-color: var(--orn-ink, rgb(20, 35, 59)); background: var(--orn-cream-2, rgb(246, 241, 230)); }
.orn-book__paynow-btn:active { transform: translateY(1px); }

.orn-book__paynow-foot { margin: 10px 0 0; text-align: center; font-family: var(--orn-font-body); font-size: 12.5px; color: var(--orn-mute, rgb(154, 138, 110)); }

/* =============================================================
 * .orn-summary__* — Post-booking trip summary page
 * (templates/ornholidays/customer/account/trip_summary.jsp).
 *
 * Six-section layout: navy hero · booking-status + payment row ·
 * visa & documents · vouchers (day tabs + active day card) ·
 * add-to-trip · manage booking · what's included + before-you-travel.
 * ============================================================= */

body.orn-page.orn-summary { background: var(--orn-cream, #EDEAE1); }
.orn-summary__main { padding: 24px 0 64px; }
.orn-summary__container { max-width: 1180px; padding: 0 24px; margin: 0 auto; }

.orn-summary__back { display: inline-block; margin: 0 0 14px; color: var(--orn-ink-2, rgb(58, 70, 84)); font-family: var(--orn-font-body); font-size: 14px; text-decoration: none; }
.orn-summary__back:hover { color: var(--orn-ink, rgb(20, 35, 59)); }

/* ─── Navy hero ─── */

.orn-summary__hero { position: relative; background: var(--orn-text); color: #fff; border-radius: 18px; padding: 30px 36px 32px; overflow: hidden; }
.orn-summary__hero::before { content: ''; position: absolute; inset: 0; background: radial-gradient(120% 80% at 100% 0%, rgba(201, 164, 92, 0.16), transparent 60%); pointer-events: none; }
.orn-summary__hero > * { position: relative; }

.orn-summary__hero-eyebrow { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.22em; color: var(--orn-gold-3, rgb(201, 164, 92)); font-weight: 600; }
.orn-summary__hero-ref { color: rgb(244, 239, 227); font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 16px; letter-spacing: 0.06em; margin-left: 4px; }
.orn-summary__hero-chip { display: inline-block; padding: 3px 9px; border-radius: 999px; background: transparent; border: 1px solid #fff; color: #fff; font-size: 10.5px; letter-spacing: 0.24em; font-weight: 700; vertical-align: middle; }
.orn-summary__hero-title { margin: 8px 0 0; font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 40px; line-height: 1.04; color: rgb(244, 239, 227); }
@media (max-width: 700px) {
    .orn-summary__hero-title { font-size: 28px; }
}
.orn-summary__hero-cities { margin-top: 8px; font-family: var(--orn-font-mono); font-size: 14px; color: var(--orn-mute-3, rgb(195, 204, 214)); }
.orn-summary__hero-meta { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; margin-top: 22px; }
@media (max-width: 720px) {
    .orn-summary__hero-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.orn-summary__hero-meta-cell { min-width: 0; }
.orn-summary__hero-meta-k { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.16em; color: var(--orn-mute-2, rgb(159, 176, 196)); font-weight: 600; }
.orn-summary__hero-meta-v { margin-top: 4px; font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 18px; color: rgb(244, 239, 227); }

/* ─── 2-col rows (booking-status + payment, included + before-travel) ─── */

.orn-summary__row { display: grid; grid-template-columns: 1fr; gap: 18px; margin-top: 22px; }
@media (min-width: 900px) {
    .orn-summary__row { grid-template-columns: 1fr 1fr; }
}

.orn-summary__card { background: var(--orn-paper, #fff); border-radius: 16px; box-shadow: 0 10px 32px rgba(20, 35, 59, 0.08); padding: 24px 26px; }
.orn-summary__card-title { margin: 0 0 14px; font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 21px; color: var(--orn-ink, rgb(20, 35, 59)); }

/* Booking status card */
.orn-summary__status-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
.orn-summary__status-head .orn-summary__card-title { margin: 0; }
.orn-summary__status-pill { display: inline-flex; align-items: center; border-radius: 999px; padding: 4px 12px; font-family: var(--orn-font-body); font-size: 13px; font-weight: 700; }
.orn-summary__status-pill--ok { background: rgb(234, 244, 237); color: rgb(27, 94, 60); }
.orn-summary__status-pill--warn { background: rgb(251, 231, 227); color: rgb(194, 69, 58); }
.orn-summary__status-pill--hold { background: #FFF4E0; color: #B36A00; box-shadow: inset 0 0 0 1px rgba(179, 106, 0, 0.18); }
.orn-summary__status-lede strong { display: block; font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 17px; color: var(--orn-ink); margin-bottom: 6px; }
.orn-summary__status-sub { color: var(--orn-ink-2, rgb(58, 70, 84)); font-family: var(--orn-font-body); font-size: 14px; line-height: 1.5; }

/* Payment card */
.orn-summary__pay-rows { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.orn-summary__pay-row { min-width: 0; }
.orn-summary__pay-k { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.18em; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 600; }
.orn-summary__pay-v { margin-top: 6px; font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 24px; color: var(--orn-ink, rgb(20, 35, 59)); letter-spacing: -0.4px; }
.orn-summary__pay-v--paid { color: rgb(30, 122, 78); }
.orn-summary__rule { border: none; border-top: 1px solid var(--orn-line, rgba(20, 35, 59, 0.10)); margin: 18px 0; }
.orn-summary__pay-line { display: flex; align-items: center; gap: 10px; font-family: var(--orn-font-body); font-size: 14.5px; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__pay-tick { flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%; background: rgb(30, 122, 78); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; }
.orn-summary__pay-label { flex: 1 1 0; font-weight: 600; }
.orn-summary__pay-amount { font-family: 'Archivo', sans-serif; font-weight: 800; color: var(--orn-ink); }

/* Hero: eyebrow + status-pill top row (pill sits on the right) */
.orn-summary__hero-topline { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.orn-summary__hero-topline .orn-summary__status-pill { background: rgb(244, 239, 227); color: rgb(20, 35, 59); box-shadow: inset 0 0 0 1px rgba(20, 35, 59, 0.15); }
.orn-summary__hero-topline .orn-summary__status-pill--ok { background: rgb(224, 242, 232); color: rgb(24, 82, 51); box-shadow: inset 0 0 0 1px rgba(24, 82, 51, 0.28); }
.orn-summary__hero-topline .orn-summary__status-pill--warn { background: rgb(253, 236, 205); color: rgb(129, 71, 12); box-shadow: inset 0 0 0 1px rgba(129, 71, 12, 0.32); }
.orn-summary__hero-topline .orn-summary__status-pill--hold { background: #FFF4E0; color: #B36A00; box-shadow: inset 0 0 0 1px rgba(179, 106, 0, 0.18); }

/* Payment section — statement-style, condensed */
.orn-summary__payment { margin-top: 24px; padding: 22px 26px; }
/* Add to your trip — same rhythm as the section above it */
.orn-summary__addons { margin-top: 24px; }
/* Task-submitted banner, shown inline after a successful Add — reuses the
   same green "ok" tone as the status pill elsewhere on this page. */
#ornAddToTripBanner { margin: 12px 0; padding: 12px 16px; border-radius: 10px; background: rgb(224, 242, 232); color: rgb(24, 82, 51); font-size: 13.5px; }
#ornAddToTripBanner a { color: rgb(24, 82, 51); font-weight: 700; text-decoration: underline; }
/* Top bar: totals + optional CTA on one row, no separate title */
/* top-aligned so every label sits on one line and every figure on the next; the due-now item carries
   a third caption line and would otherwise drag itself above the rest under align-items:center */
.orn-summary__pay-bar { display: flex; align-items: flex-start; gap: 32px; padding-bottom: 16px; border-bottom: 1px solid var(--orn-line, rgba(20, 35, 59, 0.08)); }
.orn-summary__pay-bar-item { min-width: 0; }
.orn-summary__pay-k { font-family: var(--orn-font-mono); font-size: 10px; letter-spacing: 0.20em; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 600; text-transform: uppercase; }
.orn-summary__pay-v { margin-top: 2px; font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 22px; color: var(--orn-ink, rgb(20, 35, 59)); letter-spacing: -0.4px; font-variant-numeric: tabular-nums; }
.orn-summary__pay-v--paid { color: rgb(30, 122, 78); }
.orn-summary__pay-v--rewards { color: #1F7A3D; }
.orn-summary__pay-sub { margin-top: 1px; font-family: var(--orn-font-body); font-size: 12px; font-weight: 500; color: var(--orn-mute, rgb(154, 138, 110)); white-space: nowrap; }
.orn-summary__pay-v + .orn-summary__pay-sub { margin-top: 4px; }

.orn-summary__rewards { padding: 20px 22px 20px; margin-top: 20px; }
.orn-summary__rewards-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; margin-top: 12px; }
.orn-summary__rewards-tile { padding: 16px 18px; border-radius: 12px; background: #F6F1E3; border: 1px solid rgba(20, 35, 59, 0.08); }
.orn-summary__rewards-tile--redeem { background: #E9F5EE; border-color: rgba(31, 122, 61, 0.18); }
.orn-summary__rewards-tile--earn { background: #FFF4E0; border-color: rgba(179, 106, 0, 0.18); }
.orn-summary__rewards-eyebrow { font-family: var(--orn-font-body); font-size: 11.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-mute, rgb(154, 138, 110)); margin-bottom: 6px; }
.orn-summary__rewards-tile--redeem .orn-summary__rewards-eyebrow { color: #1F7A3D; }
.orn-summary__rewards-tile--earn .orn-summary__rewards-eyebrow { color: #B36A00; }
.orn-summary__rewards-amt { font-family: 'JetBrains Mono', monospace; font-size: 22px; font-weight: 700; letter-spacing: -0.3px; color: var(--orn-ink, rgb(20, 35, 59)); font-variant-numeric: tabular-nums; }
.orn-summary__rewards-note { margin-top: 6px; font-size: 13px; line-height: 1.4; color: var(--orn-mute, rgb(154, 138, 110)); }

.orn-summary__pay-btn { align-self: center; display: inline-flex; align-items: center; padding: 9px 18px; border-radius: 8px; background: var(--orn-ink, rgb(20, 35, 59)); color: rgb(244, 239, 227); font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 13px; letter-spacing: 0.02em; text-decoration: none; white-space: nowrap; }
.orn-summary__pay-btn:hover { background: rgb(30, 45, 69); color: rgb(244, 239, 227); }
/* Each CTA is wrapped in its own <form>, so the FORM is the flex/grid item - layout rules must
   target this, not the button inside it. */
.orn-summary__pay-form { margin-left: auto; align-self: center; }
.orn-summary__pay-actions .orn-summary__pay-form { margin-left: 0; }
.orn-summary__pay-btn--red { background: var(--orn-navy, rgb(242, 13, 22)); color: #fff; }
.orn-summary__pay-btn--red:hover { background: var(--orn-navy-2, rgb(201, 10, 18)); color: #fff; }

/* amount due now — the only critical figure in the pay bar, so it gets the red the
   overdue CTA already uses; the note under it carries the due/overdue date */
.orn-summary__pay-v--due { color: var(--orn-navy, rgb(242, 13, 22)); }
.orn-summary__pay-note { margin-top: 3px; font-family: var(--orn-font-body); font-size: 11.5px; color: var(--orn-mute, rgb(154, 138, 110)); white-space: nowrap; }
.orn-summary__pay-note--due { color: var(--orn-navy, rgb(242, 13, 22)); }

/* Secondary payment actions, sitting under the bar so the bar keeps exactly one button. Outlined
   rather than plain text: as bare links they read as two stray sentences between the bar and the
   transaction list, not as things you can click. */
/* right-aligned so every action on the card sits in one column under the primary button, rather
   than the primary pulling right while the secondaries hug the left edge */
.orn-summary__pay-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 10px; padding-top: 14px; }
/* explicit border rather than --orn-line: that token is a 10%-opacity hairline for dividers and
   would leave these reading as text again */
.orn-summary__pay-link { display: inline-flex; align-items: center; padding: 8px 14px; border-radius: 8px; border: 1px solid rgba(20, 35, 59, 0.24); background: #fff; cursor: pointer; font-family: 'Archivo', sans-serif; font-size: 13px; font-weight: 700; color: var(--orn-ink, rgb(20, 35, 59)); white-space: nowrap; }
.orn-summary__pay-link:hover { border-color: var(--orn-ink, rgb(20, 35, 59)); background: rgba(20, 35, 59, 0.04); }

/* follows the actions row to the right, since it opens from a button sitting there */
.orn-summary__pay-partial { padding-top: 14px; text-align: right; }
.orn-summary__pay-partial-k { display: block; font-family: var(--orn-font-mono); font-size: 10px; letter-spacing: 0.20em; text-transform: uppercase; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 600; }
.orn-summary__pay-partial-row { display: flex; align-items: center; justify-content: flex-end; gap: 12px; margin-top: 8px; }
.orn-summary__pay-partial-inp { width: 180px; padding: 9px 12px; border: 1px solid rgba(20, 35, 59, 0.24); border-radius: 8px; background: #fff; font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 15px; color: var(--orn-ink, rgb(20, 35, 59)); text-align: right; font-variant-numeric: tabular-nums; }
.orn-summary__pay-partial-inp:focus { outline: none; border-color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__pay-partial .orn-summary__pay-btn { margin-left: 0; }

@media (max-width: 640px) {
    .orn-summary__hero-eyebrow { font-size: 11px; }
    .orn-summary__hero-meta-v { font-size: 16px; }
    .orn-jd__rung-blurb { font-size: 11.5px; max-height: 30px; overflow-y: hidden; }
    .orn-secthead__title { font-size: 24px; }
    .orn-jd__hero--image { min-height: auto; }
    .orn-jd__hero-title { font-size: 28px; }
    .orn-jd__hero-chip { padding: 5px 10px; }
    /* Traveller card on mobile — name stays on one line, seat drops
       to a new row under the name, pill + arrow shrink so they don't
       squeeze the name into 2-3 wrapped lines. */
    .orn-summary__pax { padding: 12px 14px; gap: 10px; }
    .orn-summary__pax-row { gap: 10px; }
    .orn-summary__pax-avatar { flex: 0 0 34px; width: 34px; height: 34px; font-size: 13px; }
    .orn-summary__pax-name { flex-wrap: nowrap; gap: 6px; font-size: 14.5px; min-width: 0; }
    .orn-summary__pax-name-txt { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
    .orn-summary__pax-seat { display: block; margin-left: 0; margin-top: 2px; flex-basis: 100%; font-size: 12.5px; }
    .orn-summary__pax-pill { font-size: 10.5px; padding: 3px 9px; white-space: nowrap; }
    .orn-summary__pax-pill.orn-summary__pax-pill--warn { display: none !important; }
    .orn-summary__pax-arrow { font-size: 15px; }
    .orn-summary__pax-status { font-size: 11.5px; }
    /* Pay bar on mobile — 2-column grid so 4-5 metric items stack
       cleanly instead of overlapping the Pay CTA. Button drops below
       full-width so it doesn't fight for space on the metric row. */
    .orn-summary__payment { padding: 18px 18px; }
    .orn-summary__pay-bar {
        display: grid;
        grid-template-columns: 1fr 1fr;
        column-gap: 16px;
        row-gap: 14px;
        align-items: start;
        padding-bottom: 14px;
    }
    .orn-summary__pay-bar-item { min-width: 0; }
    .orn-summary__pay-k { font-size: 9.5px; letter-spacing: 0.16em; }
    .orn-summary__pay-v { font-size: 18px; line-height: 1.15; word-break: break-word; }
    .orn-summary__pay-sub { font-size: 11px; white-space: normal; }
    /* the FORM is the grid item, so span that and let the button fill it */
    .orn-summary__pay-bar .orn-summary__pay-form {
        grid-column: 1 / -1;
        margin-left: 0;
        margin-top: 4px;
    }
    .orn-summary__pay-form .orn-summary__pay-btn,
    .orn-summary__pay-form .orn-summary__pay-link { width: 100%; }
    .orn-summary__pay-btn {
        justify-content: center;
        padding: 12px 18px;
        font-size: 14px;
    }
    .orn-summary__pay-note { white-space: normal; font-size: 11px; }
    /* stacked full width on a phone - and the form-wrapped action must size like the bare one */
    .orn-summary__pay-actions { gap: 10px; margin-bottom: 6px; }
    .orn-summary__pay-actions > * { flex: 1 1 100%; }
    .orn-summary__pay-link { justify-content: center; padding: 11px 14px; }
    .orn-summary__pay-partial-row { flex-wrap: wrap; }
    .orn-summary__pay-partial-inp { flex: 1 1 140px; width: auto; }
    .orn-summary__pay-partial .orn-summary__pay-form { margin-left: 0; margin-top: 0; }
    .orn-summary__pay-partial .orn-summary__pay-btn { width: auto; margin-top: 0; }
}

/* Transaction list — one row per PaymentRequest */
.orn-summary__pay-list { list-style: none; margin: 0; padding: 0; }
.orn-summary__pay-row { display: flex; align-items: center; gap: 14px; padding: 12px 0; font-family: var(--orn-font-body); border-bottom: 1px solid var(--orn-line-soft, rgba(20, 35, 59, 0.05)); }
.orn-summary__pay-row:last-child { border-bottom: none; padding-bottom: 4px; }
.orn-summary__pay-dot { flex: 0 0 8px; width: 8px; height: 8px; border-radius: 50%; background: rgb(154, 138, 110); }
.orn-summary__pay-row--ok .orn-summary__pay-dot { background: rgb(30, 122, 78); }
.orn-summary__pay-row--pending .orn-summary__pay-dot { background: rgb(214, 130, 26); }
.orn-summary__pay-row-main { flex: 1 1 0; min-width: 0; }
.orn-summary__pay-row-status { font-size: 14px; font-weight: 700; color: var(--orn-ink, rgb(20, 35, 59)); line-height: 1.2; }
.orn-summary__pay-row-when { margin-top: 2px; font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.06em; color: var(--orn-mute, rgb(154, 138, 110)); }
.orn-summary__pay-row-amt { font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 15px; color: var(--orn-ink, rgb(20, 35, 59)); font-variant-numeric: tabular-nums; letter-spacing: -0.2px; text-align: right; }
.orn-summary__pay-row-link { display: inline-block; margin-top: 4px; font-family: 'Archivo', sans-serif; font-weight: 600; font-size: 12.5px; color: var(--orn-red, #F20D16); text-decoration: none; letter-spacing: 0.01em; }
.orn-summary__pay-row-link:hover { text-decoration: underline; }
/* Receipt hangs off the payment timestamp, so it inherits that line's mono register and stays a
   quiet piece of metadata rather than a second action competing with "Pay now". Underlined so
   it still reads as clickable at this size. */
.orn-summary__pay-row-receipt { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.06em; color: var(--orn-mute, rgb(154, 138, 110)); text-decoration: underline; text-underline-offset: 2px; text-decoration-color: rgba(154, 138, 110, 0.45); }
.orn-summary__pay-row-receipt:hover { color: var(--orn-ink, rgb(20, 35, 59)); text-decoration-color: currentColor; }

/* booking documents footer, under the transaction list */
.orn-summary__pay-docs { display: flex; justify-content: flex-end; padding-top: 14px; margin-top: 4px; border-top: 1px solid var(--orn-line-soft, rgba(20, 35, 59, 0.05)); }

/* ─── Sections (visa & docs, vouchers, add-to-trip, manage) ─── */

.orn-summary__section { margin-top: 30px; }
.orn-summary__section-head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 14px; gap: 12px; }
.orn-summary__section-title { margin: 0; font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 26px; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__section-meta { font-family: var(--orn-font-body); font-size: 13.5px; color: var(--orn-mute, rgb(154, 138, 110)); }
.orn-summary__section-lede { margin: -6px 0 16px; font-family: var(--orn-font-body); font-size: 14.5px; color: var(--orn-ink-2, rgb(58, 70, 84)); }

/* Visa & documents alert + pax list */
.orn-summary__alert { background: rgb(251, 231, 227); color: rgb(140, 36, 32); border-radius: 12px; padding: 14px 18px; display: flex; align-items: flex-start; gap: 10px; font-family: var(--orn-font-body); font-size: 14.5px; line-height: 1.5; margin-bottom: 14px; }
.orn-summary__alert-ic { flex: 0 0 22px; color: rgb(194, 69, 58); font-size: 18px; }
.orn-summary__pax-list { display: flex; flex-direction: column; gap: 12px; }
.orn-summary__pax { background: var(--orn-paper, #fff); border-radius: 14px; padding: 14px 18px; display: flex; align-items: center; gap: 14px; box-shadow: 0 8px 24px rgba(20, 35, 59, 0.05); }
.orn-summary__pax-avatar { flex: 0 0 38px; width: 38px; height: 38px; border-radius: 50%; background: var(--orn-text); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 14px; }
.orn-summary__pax-body { flex: 1 1 0; min-width: 0; }
.orn-summary__pax-name { font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 15px; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__pax-status { margin-top: 2px; font-family: var(--orn-font-body); font-size: 12.5px; }
.orn-summary__pax-status--ok { color: rgb(30, 122, 78); }
.orn-summary__pax-status--warn { color: rgb(194, 97, 82); }
.orn-summary__pax-seat { font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 13.5px; color: var(--orn-gold, rgb(184, 149, 91)); margin-left: 4px; letter-spacing: 0.02em; }
.orn-summary__pax-pill { flex: 0 0 auto; font-family: var(--orn-font-body); font-size: 11.5px; font-weight: 700; border-radius: 999px; padding: 4px 12px; }
.orn-summary__pax-pill--ok { background: rgb(234, 244, 237); color: rgb(27, 94, 60); }
.orn-summary__pax-pill--warn { background: rgb(251, 231, 227); color: rgb(194, 69, 58); }
.orn-summary__pax-arrow { color: rgb(242, 13, 22); font-size: 18px; font-weight: 700; }

/* Vouchers */
/* View switcher: By Day / All hotels */
.orn-summary__view-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 0; background: var(--orn-paper, #fff); border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.12)); border-radius: 14px; padding: 4px; margin: 6px 0 18px; }
.orn-summary__view-tabs--3 { grid-template-columns: 1fr 1fr 1fr; }
.orn-summary__day-vehicle { border-style: solid; background: rgba(20, 35, 59, 0.03); }
.orn-summary__view-tab { background: transparent; border: none; border-radius: 10px; padding: 13px 18px; font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 15px; color: var(--orn-ink-2, rgb(58, 70, 84)); cursor: pointer; transition: background 0.15s ease, color 0.15s ease; }
.orn-summary__view-tab:hover { color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__view-tab.is-active { background: var(--orn-text); color: #fff; }

.orn-summary__hotels-lede { font-family: var(--orn-font-body); font-size: 14px; color: var(--orn-ink-2, rgb(58, 70, 84)); margin: 0 0 14px; }

.orn-summary__day-tabs { display: flex; gap: 10px; overflow-x: auto; padding-bottom: 4px; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
.orn-summary__day-tab { flex: 0 0 auto; background: var(--orn-paper, #fff); border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.10)); border-radius: 12px; padding: 10px 16px; text-align: left; cursor: pointer; font-family: inherit; transition: border-color 0.15s ease, background 0.15s ease; }
.orn-summary__day-tab:hover { border-color: var(--orn-gold, rgb(193, 142, 69)); }
.orn-summary__day-tab.is-active { background: var(--orn-text); border-color: var(--orn-text); }
.orn-summary__day-tab-eyebrow { text-transform: uppercase; display: block; font-family: var(--orn-font-mono); font-size: 10px; letter-spacing: 0.16em; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 600; }
.orn-summary__day-tab.is-active .orn-summary__day-tab-eyebrow { color: var(--orn-gold-3, rgb(201, 164, 92)); }
.orn-summary__day-tab-city { display: block; margin-top: 4px; font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 14px; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__day-tab.is-active .orn-summary__day-tab-city { color: rgb(244, 239, 227); }

.orn-summary__day-card { margin-top: 16px; background: var(--orn-paper, #fff); border-radius: 16px; padding: 26px 28px; box-shadow: 0 10px 32px rgba(20, 35, 59, 0.06); }
.orn-summary__day-card-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 18px; }
.orn-summary__day-card-eyebrow { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.16em; color: var(--orn-gold, rgb(193, 142, 69)); font-weight: 600; }
.orn-summary__day-card-title { margin: 4px 0 0; font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 24px; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__day-nav { display: flex; gap: 8px; flex: 0 0 auto; }
.orn-summary__day-nav-btn { width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); background: var(--orn-paper, #fff); color: var(--orn-ink, rgb(20, 35, 59)); cursor: pointer; font-size: 18px; line-height: 1; }
.orn-summary__day-nav-btn:hover { border-color: var(--orn-gold, rgb(193, 142, 69)); }

/* Booked room block on the hotel voucher — room count/type, board basis and
   refundability, all off the StayConfig. */
.orn-summary__voucher-room { margin-top: 8px; font-family: var(--orn-font-body); font-size: 13.5px; line-height: 1.4; color: var(--orn-ink, rgb(20, 35, 59)); font-weight: 600; }
.orn-summary__voucher-rmeta { margin-top: 2px; font-family: var(--orn-font-body); font-size: 12.5px; line-height: 1.4; color: var(--orn-mute, rgb(154, 138, 110)); }
/* Booked rooms (JSON rmA[]) and hotel check-in/out times on the JS-rendered voucher. */
.orn-summary__voucher-rooms { margin-top: 8px; font-family: var(--orn-font-body); font-size: 13.5px; line-height: 1.4; color: var(--orn-ink, rgb(20, 35, 59)); font-weight: 600; }
.orn-summary__voucher-times { margin-top: 8px; font-family: var(--orn-font-mono); font-size: 11.5px; letter-spacing: 0.04em; color: var(--orn-mute, rgb(154, 138, 110)); }

/* Day-wise inclusions — the ORN re-skin of the legacy itinerary activity rows
   (trip_itinerary_view.jsp .dayItnACtr / .incICtr). Journey bookings only. */
.orn-summary__dincl { margin-top: 20px; }
.orn-summary__dincl-head { display: flex; align-items: center; gap: 10px; font-family: var(--orn-font-mono); font-size: 11.5px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--orn-gold, rgb(193, 142, 69)); font-weight: 700; }
.orn-summary__dincl-head::after { content: ''; flex: 1 1 0; height: 1px; background: var(--orn-line, rgba(20, 35, 59, 0.10)); }
.orn-summary__dincl-row { display: flex; align-items: flex-start; gap: 12px; padding: 14px 0; border-top: 1px solid var(--orn-line, rgba(20, 35, 59, 0.10)); }
/* the row right under the heading: the heading already draws its rule (:first-of-type
   never matched here - the heading is a div too, so the first row is the second div) */
.orn-summary__dincl-head + .orn-summary__dincl-row { border-top: 0; }
.orn-summary__dincl-ic { flex: 0 0 auto; font-size: 18px; line-height: 1.3; }
.orn-summary__dincl-main { flex: 1 1 auto; min-width: 0; }
.orn-summary__dincl-title { font-family: 'Archivo', sans-serif; font-weight: 600; font-size: 15px; line-height: 1.35; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__dincl-badge { display: inline-block; margin-left: 6px; padding: 2px 7px; border-radius: 4px; background: rgba(193, 142, 69, 0.12); font-family: var(--orn-font-mono); font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase; font-weight: 700; color: var(--orn-gold, rgb(193, 142, 69)); vertical-align: 2px; }
.orn-summary__dincl-dsc { margin-top: 3px; font-family: var(--orn-font-body); font-size: 13.5px; line-height: 1.5; color: var(--orn-mute, rgb(154, 138, 110)); }
.orn-summary__dincl-pickup { margin-top: 7px; font-family: var(--orn-font-body); font-size: 13px; color: var(--orn-ink-2, rgb(70, 82, 100)); }
.orn-summary__dincl-time { display: inline-block; margin-right: 8px; padding: 2px 7px; border-radius: 4px; background: var(--orn-ink, rgb(20, 35, 59)); color: #fff; font-family: var(--orn-font-mono); font-size: 11.5px; font-weight: 600; letter-spacing: 0.04em; }
.orn-summary__dincl-sub { margin-top: 10px; padding: 10px 12px; border-radius: 10px; background: var(--orn-cream, rgb(250, 248, 244)); }
.orn-summary__dincl-sub-ttl { font-family: var(--orn-font-mono); font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; color: var(--orn-mute, rgb(154, 138, 110)); margin-bottom: 6px; }
.orn-summary__dincl-sub-list { list-style: disc; margin: 0 0 0 16px; padding: 0; }
.orn-summary__dincl-sub-list li { list-style: disc outside; display: list-item; font-family: var(--orn-font-body); font-size: 13px; line-height: 1.5; color: var(--orn-ink-2, rgb(70, 82, 100)); margin-bottom: 6px; }
.orn-summary__dincl-sub-list li:last-child { margin-bottom: 0; }
.orn-summary__dincl-note { display: block; margin-top: 2px; font-size: 12px; font-weight: 600; color: rgb(30, 122, 78); }
.orn-summary__dincl-dts { margin-top: 2px; font-size: 12px; line-height: 1.45; color: var(--orn-mute, rgb(154, 138, 110)); }
@media (max-width: 560px) {
    .orn-summary__dincl-row { gap: 9px; }
    .orn-summary__dincl-ic { font-size: 16px; }
    .orn-summary__dincl-badge { display: inline-block; margin: 4px 0 0; vertical-align: baseline; }
}
.orn-summary__voucher-section-head { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.16em; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 600; margin: 18px 0 10px; }
.orn-summary__voucher { background: transparent; border-radius: 12px; overflow: hidden; margin-bottom: 12px; border: 1px solid rgb(228, 221, 205); }
.orn-summary__voucher-head { padding: 10px 14px; border-bottom: 1px dashed rgb(216, 207, 187); display: flex; align-items: center; justify-content: space-between; }
.orn-summary__voucher-eyebrow { font-family: var(--orn-font-mono); font-size: 9.5px; letter-spacing: 0.16em; color: rgb(242, 13, 22); font-weight: 600; }
.orn-summary__voucher-ref { font-family: var(--orn-font-mono); font-size: 11px; color: var(--orn-mute, rgb(154, 138, 110)); }
.orn-summary__voucher-body { padding: 14px 18px; display: flex; gap: 14px; align-items: flex-start; }
.orn-summary__voucher-ic { flex: 0 0 32px; font-size: 22px; line-height: 1; }
/* Hotel image thumb — same role as the .ic glyph, just a real photo. */
.orn-summary__voucher-img { flex: 0 0 96px; width: 96px; height: 96px; border-radius: 10px; overflow: hidden; background: var(--orn-cream-2, rgb(246, 241, 230)); border: 1px solid rgba(216, 207, 187, 0.7); display: inline-block; }
.orn-summary__voucher-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 600px) {
    .orn-summary__voucher-img { flex: 0 0 64px; width: 64px; height: 64px; }
}
.orn-summary__voucher-main { flex: 1 1 0; min-width: 0; }
.orn-summary__voucher-title { font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 16px; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__voucher-star { color: var(--orn-gold, rgb(193, 142, 69)); }
.orn-summary__voucher-sub { margin-top: 2px; font-family: var(--orn-font-body); font-size: 12.5px; color: var(--orn-mute, rgb(154, 138, 110)); }
.orn-summary__voucher-dates { display: flex; gap: 24px; margin-top: 10px; }
.orn-summary__voucher-date-cell { display: flex; flex-direction: column; }
.orn-summary__voucher-date-k { font-family: var(--orn-font-mono); font-size: 10px; letter-spacing: 0.16em; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 600; }
.orn-summary__voucher-date-v { margin-top: 3px; font-family: var(--orn-font-mono); font-size: 13px; color: var(--orn-ink, rgb(20, 35, 59)); font-weight: 600; }
.orn-summary__voucher-tag { display: inline-block; margin-top: 10px; padding: 4px 10px; border-radius: 999px; font-family: var(--orn-font-body); font-size: 12px; font-weight: 600; }
.orn-summary__voucher-tag--ok { background: rgb(234, 244, 237); color: rgb(30, 122, 78); }

/* Add to your trip — extras */
.orn-summary__extra { background: var(--orn-paper, #fff); border-radius: 14px; padding: 16px 18px; display: flex; align-items: center; gap: 14px; margin-bottom: 10px; box-shadow: 0 6px 20px rgba(20, 35, 59, 0.05); }
.orn-summary__extra-body { flex: 1 1 0; min-width: 0; }
.orn-summary__extra-title { font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 16px; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__extra-sub { margin-top: 2px; font-family: var(--orn-font-body); font-size: 13px; color: var(--orn-ink-2, rgb(58, 70, 84)); }
.orn-summary__extra-view { flex: 0 0 auto; background: var(--orn-navy, rgb(20, 35, 59)); color: rgb(255, 255, 255); font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 13px; border: none; border-radius: 9px; padding: 9px 18px; cursor: pointer; min-width: 62px; }
.orn-summary__extra-view:hover { background: rgb(30, 54, 86); }

/* Manage your booking */
.orn-summary__manage { display: flex; flex-direction: column; gap: 10px; }
.orn-summary__manage[hidden] { display: none; }
.orn-summary__manage-row { background: var(--orn-paper, #fff); border: 1px solid rgb(228, 221, 205); border-radius: 13px; padding: 14px 16px; display: flex; align-items: center; gap: 14px; cursor: pointer; transition: border-color 0.15s ease; }
.orn-summary__manage-row:hover { border-color: var(--orn-gold, rgb(193, 142, 69)); }
.orn-summary__manage-row--danger { border-color: rgb(237, 211, 206); }
.orn-summary__manage-row--danger:hover { border-color: rgb(194, 97, 82); }
.orn-summary__manage-ic { flex: 0 0 24px; color: var(--orn-gold, rgb(242, 13, 22)); font-size: 18px; }
.orn-summary__manage-row--danger .orn-summary__manage-ic { color: rgb(194, 97, 82); }
.orn-summary__manage-body { flex: 1 1 0; min-width: 0; }
.orn-summary__manage-title { font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 15px; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__manage-row--danger .orn-summary__manage-title { color: rgb(194, 97, 82); }
.orn-summary__manage-sub { margin-top: 1px; font-family: var(--orn-font-body); font-size: 12.5px; color: var(--orn-ink-2, rgb(58, 70, 84)); }
.orn-summary__manage-arrow { color: var(--orn-gold, rgb(242, 13, 22)); font-size: 18px; font-weight: 700; }
.orn-summary__manage-row--danger .orn-summary__manage-arrow { color: rgb(194, 97, 82); }

/* Already-cancelled banner (replaces the manage card once a cancellation
   has been requested) */
.orn-manage__cancelled-banner { background: rgb(251, 233, 230); border: 1px solid rgb(231, 183, 174); border-radius: 14px; padding: 16px; }
.orn-manage__cancelled-head { display: flex; align-items: center; gap: 9px; }
.orn-manage__cancelled-ic { color: rgb(178, 58, 46); }
.orn-manage__cancelled-title { font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 16px; color: rgb(178, 58, 46); }
.orn-manage__cancelled-sub { margin-top: 7px; font-family: var(--orn-font-body); font-size: 13px; color: rgb(122, 64, 57); line-height: 1.45; }

/* Manage-booking modal content — injected into MODAL_PANEL via
   blockClass "ornManageBlk"; .orn-manage wraps every step's markup. */
.ornManageBlk { width: 460px; max-width: 92vw; }
.orn-manage { font-family: var(--orn-font-body); color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-manage__lede { font-size: 13.5px; line-height: 1.5; color: var(--orn-ink-2, rgb(58, 70, 84)); margin: 0 0 14px; }
.orn-manage__empty { font-size: 13px; color: var(--orn-ink-2, rgb(58, 70, 84)); }

.orn-manage__opts { display: flex; flex-direction: column; gap: 9px; margin-bottom: 16px; }
.orn-manage__opt { cursor: pointer; background: var(--orn-paper, #fff); border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); border-radius: 11px; padding: 12px 15px; font-family: 'IBM Plex Mono', monospace; font-weight: 600; font-size: 14px; transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease; }
.orn-manage__opt:hover { border-color: var(--orn-gold-3, rgb(242, 13, 22)); }
.orn-manage__opt.is-selected { background: var(--orn-ink, rgb(20, 35, 59)); border-color: var(--orn-ink, rgb(20, 35, 59)); color: #fff; }

/* Seat picker (date-change flow) reuses seat_map.jsp's own
   .orn-seatpage__coach/__tile styling via the shared seat_grid.jsp
   fragment — see ORNHolidaysAmendmentBean / CoachMapBean.renderSeatGrid. */

.orn-manage__card { background: var(--orn-paper, #fff); border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); border-radius: 14px; padding: 4px 15px; margin-bottom: 14px; }
.orn-manage__row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--orn-line, rgba(20, 35, 59, 0.10)); }
.orn-manage__row:last-child { border-bottom: none; }
.orn-manage__row-k { font-size: 12.5px; color: var(--orn-ink-2, rgb(58, 70, 84)); }
.orn-manage__row-v { font-family: 'IBM Plex Mono', monospace; font-size: 13px; font-weight: 600; color: var(--orn-ink, rgb(20, 35, 59)); text-align: right; }
.orn-manage__row-v--strong { color: var(--orn-gold-3, rgb(242, 13, 22)); }

.orn-manage__field { margin-bottom: 12px; }
.orn-manage__field-label { display: block; font-family: 'IBM Plex Mono', monospace; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--orn-ink-2, rgb(58, 70, 84)); margin-bottom: 5px; }
.orn-manage__input { width: 100%; box-sizing: border-box; border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); border-radius: 10px; padding: 11px 13px; font-size: 14px; font-family: var(--orn-font-body); }
.orn-manage__input--sm { width: auto; padding: 7px 10px; font-size: 13px; }

/* Room/pax editor (add-remove travellers flow) */
.orn-manage__pax-rooms { display: flex; flex-direction: column; gap: 12px; margin: 16px 0 10px; }
.orn-manage__pax-room { background: var(--orn-paper, #fff); border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); border-radius: 14px; padding: 12px 14px; }
.orn-manage__pax-room-head { display: flex; align-items: center; justify-content: space-between; font-family: 'IBM Plex Mono', monospace; font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--orn-ink-2, rgb(58, 70, 84)); font-weight: 700; margin-bottom: 8px; }
.orn-manage__pax-room-head a { font-family: var(--orn-font-body); text-transform: none; letter-spacing: 0; font-size: 12px; font-weight: 500; color: var(--orn-gold-3, rgb(242, 13, 22)); }
.orn-manage__pax-row { display: flex; align-items: center; gap: 10px; padding: 7px 0; border-top: 1px dashed var(--orn-line-2, rgba(20, 35, 59, 0.14)); }
.orn-manage__pax-row:first-of-type { border-top: none; }
.orn-manage__pax-row--removed { opacity: 0.5; }
.orn-manage__pax-row--removed .orn-manage__pax-name { text-decoration: line-through; }
.orn-manage__pax-type { flex: 0 0 52px; font-family: 'IBM Plex Mono', monospace; font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--orn-ink-2, rgb(58, 70, 84)); }
.orn-manage__pax-name { flex: 1 1 auto; font-size: 13.5px; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-manage__pax-row input.orn-manage__input--sm { flex: 1 1 auto; }
.orn-manage__pax-remove { flex: 0 0 auto; font-size: 12px; color: var(--orn-gold-3, rgb(242, 13, 22)); font-weight: 500; }
.orn-manage__pax-room-actions { display: flex; gap: 16px; margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--orn-line-2, rgba(20, 35, 59, 0.14)); }
.orn-manage__pax-room-actions a { font-size: 12px; font-weight: 600; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-manage__pax-add-room { margin-bottom: 16px; }
.orn-manage__pax-add-room a { font-size: 13px; font-weight: 600; color: var(--orn-gold-3, rgb(242, 13, 22)); }

.orn-manage__refund-box { background: var(--orn-ink, rgb(20, 35, 59)); color: #fff; border-radius: 14px; padding: 16px; display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.orn-manage__refund-k { font-size: 11px; color: rgba(255, 255, 255, 0.6); flex-basis: 100%; }
.orn-manage__refund-v { font-family: 'IBM Plex Mono', monospace; font-weight: 600; font-size: 24px; color: var(--orn-gold-3, rgb(242, 13, 22)); }
.orn-manage__refund-of { font-size: 11px; color: rgba(255, 255, 255, 0.6); }
.orn-manage__policy { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px; font-size: 12.5px; }
.orn-manage__policy > div { display: flex; justify-content: space-between; padding: 2px 2px; color: var(--orn-ink-2, rgb(58, 70, 84)); }
.orn-manage__policy > div:last-child { color: rgb(194, 97, 82); }

.orn-manage__confirm-copy { text-align: center; padding: 6px 0 4px; }
.orn-manage__confirm-title { font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 18px; color: var(--orn-ink, rgb(20, 35, 59)); margin-bottom: 8px; }
.orn-manage__confirm-copy p { font-size: 13px; line-height: 1.45; color: var(--orn-ink-2, rgb(58, 70, 84)); }

.orn-manage__result { text-align: center; }
.orn-manage__result-title { font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 20px; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-manage__result-sub { margin: 4px 0 16px; font-size: 13px; color: var(--orn-ink-2, rgb(58, 70, 84)); }
.orn-manage__result .orn-manage__card { text-align: left; }
.orn-manage__note { font-size: 12px; color: var(--orn-ink-2, rgb(58, 70, 84)); margin: 12px 0 0; }

.orn-manage__btn { display: block; width: 100%; box-sizing: border-box; background: var(--orn-ink, rgb(20, 35, 59)); color: #fff; font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 15px; border: none; border-radius: 12px; padding: 14px; text-align: center; cursor: pointer; margin-top: 14px; }
.orn-manage__btn:disabled { opacity: 0.4; cursor: not-allowed; }
.orn-manage__btn--danger { background: rgb(194, 69, 58); }
.orn-manage__btn--text { background: none; color: var(--orn-ink-2, rgb(58, 70, 84)); font-weight: 600; padding: 11px; margin-top: 4px; }

/* Included list */
/* City-wise inclusions: each city is a soft block with an eyebrow
   "DUBAI · 4 NIGHTS" header, then the inclusion lines as warm-cream
   rows with a green tick. Spacious, scannable, brand-consistent. */

.orn-summary__incl-cities { display: flex; flex-direction: column; gap: 18px; }
.orn-summary__incl-city { display: flex; flex-direction: column; gap: 10px; }
.orn-summary__incl-city-head { display: flex; align-items: center; gap: 10px; margin-top:10px; }
.orn-summary__incl-city-head::after { content: ''; flex: 1 1 0; height: 1px; background: var(--orn-line, rgba(20, 35, 59, 0.10)); }
.orn-summary__incl-city-name { font-family: var(--orn-font-mono); font-size: 11.5px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--orn-gold, rgb(193, 142, 69)); font-weight: 700; flex: 0 0 auto; }
.orn-summary__incl-city-nts { font-family: var(--orn-font-mono); font-size: 11.5px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 600; flex: 0 0 auto; }

.orn-summary__incl-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
.orn-summary__incl-list li { display: flex; align-items: flex-start; gap: 10px; font-family: var(--orn-font-body); font-size: 14.5px; line-height: 1.5; color: var(--orn-ink-2, rgb(58, 70, 84)); }
.orn-summary__incl-tick { flex: 0 0 auto; color: rgb(30, 122, 78); font-weight: 700; font-size: 14px; line-height: 1.5; }

.orn-summary__incl-empty { font-family: var(--orn-font-body); font-size: 13.5px; color: var(--orn-mute, rgb(154, 138, 110)); font-style: italic; padding: 14px 0; text-align: center; background: rgb(251, 249, 243); border: 1px dashed rgba(228, 221, 205, 0.9); border-radius: 10px; }

/* Before you travel — navy panel */
.orn-summary__before { background: rgb(14, 26, 43); color: rgb(220, 228, 238); }
.orn-summary__before .orn-summary__card-title { color: rgb(244, 239, 227); }
.orn-summary__before-eyebrow { font-family: var(--orn-font-mono); font-size: 11.5px; letter-spacing: 0.14em; color: rgb(159, 176, 196); font-weight: 600; }
.orn-summary__before-list { list-style: none; padding: 0; margin: 14px 0 0; display: flex; flex-direction: column; gap: 11px; font-family: var(--orn-font-body); font-size: 13.5px; line-height: 1.5; }
.orn-summary__before-rule { border: none; border-top: 1px solid rgb(35, 51, 71); margin: 18px 0 14px; }
.orn-summary__before-support { display: flex; align-items: center; gap: 14px; margin-top: 12px; flex-wrap: wrap; }
/* was referenced by the support block but never defined, so the number rendered unstyled */
.orn-summary__call-num { font-family: var(--orn-font-mono); font-size: 14px; color: rgb(244, 239, 227); text-decoration: none; white-space: nowrap; }
.orn-summary__call-num:hover { color: #fff; text-decoration: underline; }
/* authored hours / response time under the contacts */
.orn-summary__support-note { margin-top: 10px; font-family: var(--orn-font-body); font-size: 12.5px; color: rgb(159, 176, 196); }
/* =========================================================
   PICK THE RIGHT DESK
   One layout at every width: icon tile, copy, then round call/mail
   buttons. Desktop centres the panel; narrow screens raise it as a
   bottom sheet. Motion reuses the house keyframes.
   ========================================================= */
.orn-summary__desk-link { margin-top: 12px; padding: 0; background: none; border: none; cursor: pointer;
    font-family: var(--orn-font-body); font-size: 13px; line-height: 1.3;
    color: rgb(159, 176, 196); text-decoration: underline; text-underline-offset: 3px; }
.orn-summary__desk-link:hover { color: rgb(244, 239, 227); }

/* Floating "Need help?" trigger. Fixed on every screen size, below the dialog's z-index so it
   is never on top of the backdrop; the JS also hides it while the dialog is open. */
.orn-desk__fab {
    position: fixed; right: 22px; bottom: 22px; z-index: 45;
    display: inline-flex; align-items: center; gap: 8px;
    padding: 12px 18px 12px 15px; min-height: 44px; box-sizing: border-box;
    border: none; border-radius: 999px; cursor: pointer;
    background: rgb(242, 13, 22); color: #fff;
    font-family: var(--orn-font-body); font-size: 14px; font-weight: 700; line-height: 1;
    box-shadow: 0 8px 22px rgba(242, 13, 22, .38);
    transition: background .15s ease, transform .15s ease, box-shadow .15s ease;
}
.orn-desk__fab:hover { background: rgb(214, 8, 16); box-shadow: 0 10px 26px rgba(242, 13, 22, .46); }
.orn-desk__fab:active { transform: scale(0.96); }
.orn-desk__fab svg { width: 18px; height: 18px; fill: currentColor; display: block; }
@media (max-width: 560px) {
    /* min-height keeps it a 44px tap target, which 13.5px text and 11px padding fall short of */
    .orn-desk__fab { right: 14px; bottom: 14px; padding: 12px 17px 12px 14px; font-size: 13.5px;
        min-height: 44px; }
    .orn-desk__fab svg { width: 17px; height: 17px; }
}
@media (prefers-reduced-motion: reduce) {
    .orn-desk__fab { transition: none; }
    .orn-desk__fab:active { transform: none; }
}

@keyframes orn-desk-fade { from { opacity: 0; } to { opacity: 1; } }
/* the sheet's own rise - orn-sheet-up is shared with other ORN sheets, so it is left alone */
@keyframes orn-desk-sheet {
    from { transform: translateY(100%); }
      to { transform: translateY(0); }
}
@keyframes orn-desk-pop { from { opacity: 0; transform: translateY(10px) scale(0.985); }
                            to { opacity: 1; transform: translateY(0) scale(1); } }

/* display:none, not just [hidden]: a display rule beats the attribute, so the dialog is
   switched on rather than off (same as .orn-cmp__overlay). */
.orn-desk__overlay {
    position: fixed; inset: 0; z-index: 60; display: none;
    align-items: center; justify-content: center; padding: 20px;
    background: rgba(9, 16, 28, .62); overflow: auto;
}
.orn-desk__overlay[hidden] { display: none; }
.orn-desk__overlay.is-open { display: flex; animation: orn-desk-fade .3s ease-out both; }

.orn-desk__modal {
    /* margin:0, not auto: the panel is width:100% and shrinkable, so an auto margin
       resolves against the shrunken box and pins it left. The overlay centres it. */
    width: 100%; max-width: 560px; max-height: 92vh; margin: 0; overflow: hidden;
    flex: 0 1 auto; box-sizing: border-box; position: relative;
    display: flex; flex-direction: column;
    background: rgb(247, 245, 240); border-radius: 20px;
    box-shadow: 0 28px 70px rgba(0, 0, 0, .38); outline: none;
    animation: orn-desk-pop .34s cubic-bezier(.22, 1, .36, 1) both;
}

.orn-desk__head { position: relative; flex-shrink: 0; padding: 22px 26px 20px;
    background: linear-gradient(150deg, rgb(30, 44, 66) 0%, rgb(17, 30, 48) 48%, rgb(9, 17, 30) 100%);
    color: rgb(244, 239, 227); }
/* the eyebrow reads gold on the navy head - label, separator and reference alike */
.orn-desk__eyebrow { font-family: var(--orn-font-mono); font-size: 10px; line-height: 1.3;
    letter-spacing: 0.16em; text-transform: uppercase; color: rgb(193, 142, 69); font-weight: 600; }
.orn-desk__separator { padding: 0 5px; opacity: .55; }
.orn-desk__ref { color: rgb(193, 142, 69); }
/* right margin keeps the title clear of the close button */
/* Archivo 800, matching .orn-summary__hero-title: --orn-font-heading resolves to Anton,
   which this page never loads, so it fell back to a generic sans. */
.orn-desk__title { margin: 6px 45px 0 0; font-family: 'Archivo', sans-serif;
    font-size: 26px; line-height: 1.12; font-weight: 800; letter-spacing: -.02em;
    color: rgb(244, 239, 227); }

.orn-desk__close {
    position: absolute; top: 17px; right: 17px; width: 32px; height: 32px; padding: 0;
    border: none; border-radius: 50%; display: flex; align-items: center; justify-content: center;
    cursor: pointer; background: rgba(244, 239, 227, .12); color: rgb(244, 239, 227);
    font-size: 21px; line-height: 1; transition: background .15s ease, transform .15s ease;
}
.orn-desk__close:hover { background: rgba(244, 239, 227, .22); }
.orn-desk__close:active { transform: scale(0.94); }

.orn-desk__body { padding: 14px; overflow-y: auto; display: flex; flex-direction: column; gap: 10px;
    background: rgb(247, 245, 240); }

.orn-desk__row {
    display: flex; align-items: center; gap: 16px;
    padding: 14px 15px; background: #ffffff; border: 1px solid rgba(20, 24, 40, .07);
    border-radius: 14px; box-shadow: 0 1px 2px rgba(20, 24, 40, .03);
}

/* leading glyph tile — tinted per desk kind */
/* one tint for every desk, as in the reference art - the glyph carries the meaning */
.orn-desk__row-icon { flex-shrink: 0; width: 42px; height: 42px; border-radius: 13px;
    display: flex; align-items: center; justify-content: center;
    background: #FDECEC; color: #E5342A; }
.orn-desk__row-icon svg { width: 21px; height: 21px; fill: currentColor; display: block; }

.orn-desk__row-copy { min-width: 0; flex: 1; }
.orn-desk__row-label { font-family: var(--orn-font-mono); font-size: 9.5px; line-height: 1.3;
    letter-spacing: 0.14em; text-transform: uppercase; color: #7A869A; font-weight: 600; }
.orn-desk__row-desc { margin-top: 4px; font-family: var(--orn-font-body); font-size: 14.5px;
    line-height: 1.35; color: rgb(20, 24, 40); font-weight: 700; letter-spacing: -.005em; }
/* hours as a badge, so it reads as a fact rather than more body copy */
.orn-desk__row-note { display: inline-block; margin-top: 7px; padding: 3px 9px; border-radius: 999px;
    background: #E4F4E9; color: #25794E;
    font-family: var(--orn-font-mono); font-size: 9.5px; line-height: 1.5;
    letter-spacing: .1em; text-transform: uppercase; font-weight: 600; }

/* round call / mail buttons, at every width */
/* desktop shows the number and address as text, right-aligned; the round icon buttons are
   the narrow-screen affordance and are switched on in the mobile query below. */
/* fixed width, not shrink-to-fit: a desk with no phone would otherwise give its copy column
   ~30px more than its neighbours, so the descriptions wrapped at different widths and the
   contact column never lined up down the card stack */
.orn-desk__row-reach { flex: 0 0 168px; width: 168px; display: flex; flex-direction: column;
    align-items: flex-end; justify-content: center; gap: 2px; text-align: right; }
.orn-desk__desktop-phone { display: block; font-family: var(--orn-font-mono); font-size: 17px;
    font-weight: 700; color: #141828; text-decoration: none; white-space: nowrap;
    letter-spacing: -.01em; }
.orn-desk__desktop-email { display: block; font-family: var(--orn-font-mono); font-size: 13.5px;
    font-weight: 500; color: #C53A32; text-decoration: none; word-break: break-word; }
.orn-desk__desktop-phone:hover, .orn-desk__desktop-email:hover { text-decoration: underline; }
/* hidden on desktop (the text links are shown instead); the mobile query turns these on */
.orn-desk__action { display: none; width: 40px; height: 40px; align-items: center;
    justify-content: center; flex-shrink: 0; border-radius: 11px;
    background: #F3F5F4; color: #141828; text-decoration: none;
    transition: background .15s ease, transform .15s ease; }
.orn-desk__action:hover { background: #E8ECEB; transform: translateY(-1px); }
.orn-desk__action:active { transform: scale(0.93); }
.orn-desk__action svg { width: 18px; height: 18px; fill: currentColor; display: block; }
.orn-desk__phone-action { color: #E5342A; }
.orn-desk__email-action { color: #E5342A; }

@media (max-width: 560px) {
    /* Compact bottom sheet: inset from the edges, ending just above the bottom, with the
       page blurred behind it. overflow:hidden, not auto - the overlay's own scrollbar was
       eating width; .orn-desk__body scrolls instead. */
    /* stretch, not center: the page's scrollbar makes the overlay's content box narrower
       than the viewport, and centring a max-width panel inside it left an uneven gap.
       The 14px padding is the side margin; the panel simply fills what remains. */
    .orn-desk__overlay { padding: 0; align-items: flex-end; justify-content: stretch;
        overflow: hidden; background: rgba(9, 16, 28, .58);
        backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); }
    .orn-desk__modal { width: 100%; max-width: none; max-height: 92dvh; margin: 0;
        flex: 0 1 auto; border-radius: 17px 17px 0 0;
        box-shadow: 0 -8px 30px rgba(0, 0, 0, .25);
        /* the sheet travels its whole height, so it needs longer than the desktop pop and a
           curve that decelerates late; will-change keeps it on the compositor */
        will-change: transform;
        animation: orn-desk-sheet .42s cubic-bezier(.32, .94, .26, 1) both; }

    /* the sheet head is short and wide, so the 150deg desktop angle barely reads across it;
       a flatter sweep keeps a visible dark-to-darker fade behind the gold eyebrow. */
    .orn-desk__head { min-height: 76px; padding: 17px 52px 14px 20px; border-radius: 17px 17px 0 0;
        background: linear-gradient(108deg, rgb(33, 48, 71) 0%, rgb(18, 32, 51) 55%, rgb(8, 16, 28) 100%); }
    .orn-desk__eyebrow { margin: 0; font-size: 9px; line-height: 1.2; letter-spacing: 0.15em;
        white-space: nowrap; }
    .orn-desk__separator { padding: 0 4px; }
    /* no nowrap: forcing one line squeezed the title and read as stretched */
    .orn-desk__title { margin: 5px 0 0; font-size: 23px; line-height: 1.12; }
    .orn-desk__close { top: 15px; right: 15px; min-width: 32px; min-height: 32px;
        background: rgba(244, 239, 227, .13); }

    .orn-desk__body { flex: 0 1 auto; padding: 12px 11px 18px; gap: 11px; overflow-y: auto; }
    .orn-desk__body::-webkit-scrollbar { width: 3px; }
    .orn-desk__body::-webkit-scrollbar-thumb { background: rgba(20, 24, 40, .15); border-radius: 10px; }

    /* icon | copy | actions stays on one line at every width */
    .orn-desk__row { min-height: 78px; padding: 15px 13px; gap: 12px; justify-content: space-between;
        border: 1px solid rgba(20, 24, 40, .09); border-radius: 14px; }
    .orn-desk__row-icon { width: 40px; height: 40px; min-width: 40px; border-radius: 12px; }
    .orn-desk__row-icon svg { width: 19px; height: 19px; }

    .orn-desk__row-copy { flex: 1 1 auto; min-width: 0; overflow: hidden; }
    .orn-desk__row-label { margin: 0; font-size: 8.5px; line-height: 1.2; letter-spacing: 0.14em;
        white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    /* clamped to two lines so a long description cannot stretch the card */
    .orn-desk__row-desc { margin: 5px 0 0; font-size: 13.5px; line-height: 1.35;
        display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; }
    .orn-desk__row-note { max-width: 100%; margin: 7px 0 0; padding: 4px 10px; font-size: 8.5px;
        line-height: 1.25; letter-spacing: 0.08em; font-weight: 700;
        background: #E4F4E9; color: #25794E; white-space: normal; }

    /* icons only here, so the column is only as wide as its buttons */
    .orn-desk__row-reach { flex: 0 0 auto; width: auto; flex-direction: row; align-items: center;
        gap: 7px; }
    .orn-desk__desktop-phone, .orn-desk__desktop-email { display: none; }
    .orn-desk__action { display: flex; width: 40px; height: 40px; min-width: 40px; min-height: 40px; }
    .orn-desk__action svg { width: 17px; height: 17px; }
    .orn-desk__phone-action, .orn-desk__email-action { color: #E5342A; background: #F3F5F4; }
}

@media (max-width: 360px) {
    .orn-desk__head { padding-left: 18px; padding-right: 18px; }
    .orn-desk__body { padding-left: 9px; padding-right: 9px; }
    .orn-desk__row { padding: 11px 10px; gap: 9px; }
    .orn-desk__row-icon { width: 34px; height: 34px; }
    .orn-desk__row-desc { font-size: 12.5px; }
    .orn-desk__action { width: 36px; height: 36px; }
    /* the badge is the first thing to go when width is scarce */
    .orn-desk__row-note { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    .orn-desk__overlay.is-open, .orn-desk__modal { animation: none; will-change: auto; }
    .orn-desk__action, .orn-desk__close { transition: none; }
    .orn-desk__action:hover { transform: none; }
}

body.is-desk-open { overflow: hidden; }
.orn-summary__wa { display: inline-flex; align-items: center; gap: 8px; background: rgb(37, 211, 102); color: #fff; font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 13.5px; border-radius: 10px; padding: 11px 18px; text-decoration: none; }
.orn-summary__wa:hover { background: rgb(28, 184, 87); color: #fff; }
.orn-summary__wa-num { font-family: var(--orn-font-mono); font-size: 14px; color: rgb(244, 239, 227); }

/* Footer link */
.orn-summary__home-wrap { display: flex; justify-content: center; margin-top: 32px; }
.orn-summary__home-btn { border: 1px solid rgb(199, 191, 174); color: var(--orn-ink, rgb(20, 35, 59)); font-family: var(--orn-font-body); font-weight: 600; font-size: 16px; border-radius: 12px; padding: 14px 28px; text-decoration: none; transition: border-color 0.15s ease, background 0.15s ease; }
.orn-summary__home-btn:hover { border-color: var(--orn-gold, rgb(193, 142, 69)); background: rgba(201, 164, 92, 0.06); }
/* When used on a <button> (in the passes view) — reset native UA chrome. */
button.orn-summary__home-btn { background: transparent; font: inherit; cursor: pointer; font-family: var(--orn-font-body); font-weight: 600; font-size: 16px; }

/* =============================================================
 * .orn-summary__pass-* — Boarding-pass view (toggled from trip
 * summary via the topbar button). Replicates the
 * Boarding Passes.html mockup: white left card + navy right stub.
 * ============================================================= */

.orn-summary__topbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 14px; }

.orn-summary__pass-toggle { background: var(--orn-navy, rgb(20, 35, 59)); color: #fff; border: none; border-radius: 999px; padding: 10px 22px; font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 14px; cursor: pointer; }
.orn-summary__pass-toggle.is-active { background: var(--orn-gold, rgb(193, 142, 69)); color: #fff; }

/* Intro band on passes view */
.orn-summary__pass-intro { margin-bottom: 22px; }
.orn-summary__pass-intro--van { text-align: center; margin-bottom: 32px; }
.orn-summary__pass-intro--van .orn-summary__pass-intro-eyebrow, .orn-summary__pass-intro--van .orn-summary__pass-intro-title, .orn-summary__pass-intro--van .orn-summary__pass-intro-lede { text-align: center; }
.orn-summary__pass-intro--van .orn-summary__pass-intro-lede { max-width: 720px; margin-left: auto; margin-right: auto; }
.orn-summary__pass-intro--van .orn-summary__pass-intro-tick { display: flex; justify-content: center; margin-bottom: 14px; }
.orn-summary__pass-intro-eyebrow { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--orn-gold, rgb(193, 142, 69)); font-weight: 600; }
.orn-summary__pass-intro-title { margin: 8px 0 0; font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 36px; line-height: 1.04; color: var(--orn-ink, rgb(20, 35, 59)); }
@media (max-width: 700px) {
    .orn-summary__pass-intro-title { font-size: 28px; }
}
.orn-summary__pass-intro-lede { margin: 10px 0 0; max-width: 64ch; color: var(--orn-ink-2, rgb(58, 70, 84)); font-family: var(--orn-font-body); font-size: 16px; line-height: 1.55; }

/* Per-pass block (eyebrow + card) */
.orn-summary__pass { margin-bottom: 26px; }
.orn-summary__pass-eyebrow { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.18em; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 600; }
.orn-summary__pass-eyebrow-num { background: var(--orn-text); color: #fff; border-radius: 6px; padding: 3px 9px; }

/* ─── Pass card — warm-cream body + navy header strip + navy stub ─── */

.orn-summary__pass-card { display: grid; grid-template-rows: auto 1fr; grid-template-columns: 1fr 240px; grid-template-areas: "head head" "main stub"; background: #fff; border-radius: 18px; overflow: hidden; box-shadow: 0 14px 40px rgba(20, 35, 59, 0.12); position: relative; }
/* Vertical perforation between main and stub on ≥761px */
@media (min-width: 761px) {
    .orn-summary__pass-card::before { content: ''; position: absolute; top: 64px; /* below the navy head strip */ bottom: 0; right: 240px; width: 0; border-left: 2px dotted rgba(20, 35, 59, 0.25); pointer-events: none; z-index: 1; }
}
@media (max-width: 760px) {
    .orn-summary__pass-card { grid-template-columns: 1fr; grid-template-areas: "head" "main" "stub"; }
}

@media (max-width: 640px) {
    .orn-summary__pass-intro-eyebrow { margin-top: 25px; }
    .orn-summary__pass-intro-lede { line-height: 1.85; }
    .orn-summary__pass-card { border-radius: 14px; box-shadow: 0 10px 26px rgba(20, 35, 59, 0.10); }
    /* Head strip: tighter padding, stack brand + journey so long routes wrap cleanly */
    .orn-summary__pass-card-head { flex-wrap: wrap; padding: 12px 16px; gap: 10px; }
    .orn-summary__pass-card-head-left { gap: 10px; flex: 1 1 auto; min-width: 0; }
    .orn-summary__pass-card-head-right {
        gap: 8px;
        flex: 1 1 100%;
        padding-top: 8px;
        margin-top: 4px;
        border-top: 1px solid rgba(244, 239, 227, 0.14);
    }
    .orn-summary__pass-card-disc { width: 26px; height: 26px; }
    .orn-summary__pass-card-disc svg { width: 15px; height: 15px; }
    .orn-summary__pass-card-brand { font-size: 17px; }
    .orn-summary__pass-card-head-divider { height: 18px; }
    .orn-summary__pass-card-head-label { font-size: 11px; letter-spacing: 0.16em; }
    .orn-summary__pass-card-journey { font-size: 12px; letter-spacing: 0.14em; white-space: normal; line-height: 1.25; min-width: 0; }
    /* Main body: tighter padding so route+chips don't overflow */
    .orn-summary__pass-card-main { padding: 16px; }
    .orn-summary__pass-route { gap: 15px; margin-bottom: 18px; }
    .orn-summary__pass-route-city { font-size: 26px; }
    .orn-summary__pass-route-arrow { font-size: 26px; }
    .orn-summary__pass-grid { grid-template-columns: repeat(1, minmax(0, 1fr)); gap: 14px; margin-bottom: 16px; }
    .orn-summary__pass-grid--bottom { grid-template-columns: repeat(1, minmax(0, 1fr)); gap: 14px; }
    .orn-summary__pass-v--mono { font-size: 16px; }
    /* Chips: hidden on mobile */
    .orn-summary__pass-chips { display: none; }
    /* Stub: keep giant SEAT block but shrink padding; hide the decorative bg fade */
    .orn-summary__pass-stub { padding: 20px 18px; gap: 14px; }
    .orn-summary__pass-stub-seat { font-size: 60px; }
    .orn-summary__pass-eyebrow { flex-wrap: wrap; gap: 4px 10px; }
    .orn-summary__pass-eyebrow-num, .orn-summary__pass-eyebrow-meta { font-size: 11.5px; }
}

/* Navy head strip (spans the whole card top) */
.orn-summary__pass-card-head { grid-area: head; background: var(--orn-text); color: #fff; padding: 14px 24px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.orn-summary__pass-card-head-left, .orn-summary__pass-card-head-right { display: flex; align-items: center; gap: 12px; }
.orn-summary__pass-card-disc { width: 30px; height: 30px; border-radius: 50%; background: var(--orn-gold, rgb(193, 142, 69)); display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.orn-summary__pass-card-disc svg { width: 18px; height: 18px; }
.orn-summary__pass-card-brand { font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 21px; letter-spacing: 0.04em; color: rgb(244, 239, 227); }
.orn-summary__pass-card-head-divider { width: 1px; height: 22px; background: rgba(244, 239, 227, 0.25); display: inline-block; }
.orn-summary__pass-card-head-label { font-family: 'Archivo', sans-serif; font-weight: 600; font-size: 14px; letter-spacing: 0.22em; color: #fff; }
.orn-summary__pass-card-plane { color: var(--orn-gold-3, rgb(201, 164, 92)); font-size: 16px; line-height: 1; }
.orn-summary__pass-card-journey { font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 14px; letter-spacing: 0.18em; color: #fff; }

/* Main body */
.orn-summary__pass-card-main { grid-area: main; padding: 28px 32px 28px; position: relative; }

.orn-summary__pass-card-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; margin-bottom: 24px; }
.orn-summary__pass-card-cell { min-width: 0; }
.orn-summary__pass-card-cell--r { text-align: right; flex-shrink: 0; padding-left: 18px; }

.orn-summary__pass-k { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.24em; color: var(--orn-mute, rgb(154, 138, 110)); font-weight: 600; text-transform: uppercase; }
.orn-summary__pass-v { margin-top: 5px; font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 18px; color: var(--orn-ink, rgb(20, 35, 59)); line-height: 1.2; }
.orn-summary__pass-v--xl { font-size: 28px; margin-top: 6px; }
@media (max-width: 700px) {
    .orn-summary__pass-v--xl { font-size: 18px; }
    .orn-summary__pass-v--mono { font-size: 16px; }
}
.orn-summary__pass-v--mono { font-family: var(--orn-font-mono); font-weight: 600; font-size: 22px; }

.orn-summary__pass-route { display: flex; align-items: center; gap: 22px; margin-bottom: 24px; flex-wrap: wrap; }
.orn-summary__pass-route-city { font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 56px; color: var(--orn-ink, rgb(20, 35, 59)); line-height: 0.95; }
@media (max-width: 700px) {
    .orn-summary__pass-route { gap: 15px; }
    .orn-summary__pass-route-city { font-size: 26px; }
}
.orn-summary__pass-route-arrow { color: var(--orn-gold, rgb(193, 142, 69)); font-size: 36px; font-weight: 600; line-height: 1; }

.orn-summary__pass-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; margin-bottom: 20px; }
.orn-summary__pass-grid--bottom { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 0; }
@media (max-width: 700px) {
    .orn-summary__pass-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .orn-summary__pass-grid--bottom { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Gold inclusion chips */
.orn-summary__pass-chips { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 22px; }
.orn-summary__pass-chip { display: inline-flex; align-items: center; gap: 8px; border: 1px solid rgba(193, 142, 69, 0.45); border-radius: 999px; padding: 7px 14px; background: rgba(193, 142, 69, 0.06); color: var(--orn-ink, rgb(20, 35, 59)); font-family: 'Archivo', sans-serif; font-weight: 600; font-size: 13.5px; }
.orn-summary__pass-chip-ic { color: var(--orn-gold, rgb(193, 142, 69)); font-size: 14px; }

.orn-summary__pass-rule { border: none; border-top: 1px dashed rgba(20, 35, 59, 0.20); margin: 0 0 20px; }

/* Navy stub (right) */
.orn-summary__pass-stub { grid-area: stub; background: var(--orn-text); color: #fff; padding: 22px 24px 22px; display: flex; flex-direction: column; gap: 18px; position: relative; overflow: hidden; }
.orn-summary__pass-stub::before { content: ''; position: absolute; inset: 0; background: radial-gradient(120% 80% at 100% 0%, rgba(201, 164, 92, 0.16), transparent 60%); pointer-events: none; }
.orn-summary__pass-stub > * { position: relative; }

.orn-summary__pass-stub-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.orn-summary__pass-stub-eyebrow { font-family: 'Archivo', sans-serif; font-weight: 600; font-size: 13px; letter-spacing: 0.22em; color: var(--orn-gold-3, rgb(201, 164, 92)); }
.orn-summary__pass-stub-plane { color: var(--orn-gold-3, rgb(201, 164, 92)); font-size: 14px; }

.orn-summary__pass-stub-seat-block { display: flex; flex-direction: column; }
.orn-summary__pass-stub-k { font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.24em; color: rgb(159, 176, 196); font-weight: 600; }
.orn-summary__pass-stub-seat { margin-top: 6px; font-family: 'Archivo', sans-serif; font-weight: 800; font-size: 72px; color: rgb(244, 239, 227); line-height: 0.9; }
.orn-summary__pass-stub-sub { margin-top: 8px; font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.16em; color: rgba(244, 239, 227, 0.72); }

/* ── Van-tour variant: cream body, faint van jpg background, BOOKED stamp ── */
.orn-summary__pass--van .orn-summary__pass-card-main { position: relative; background-color: #fff; overflow: hidden; }
.orn-summary__pass--van .orn-summary__pass-card-bg { position: absolute; top: 0; right: 0; bottom: 0; width: 58%; background-image: url("https://cdn.yourholiday.me/static/img/orn/merc_van.jpg"); background-size: cover; background-position: 50% 60%; background-repeat: no-repeat; opacity: 0.10; -webkit-mask-image: linear-gradient(to left, #000 10%, transparent 85%); mask-image: linear-gradient(to left, #000 10%, transparent 85%); pointer-events: none; z-index: 0; }
.orn-summary__pass--van .orn-summary__pass-card-stamp { position: absolute; top: 34px; right: 90px; width: 200px; padding: 6px; border: 3px solid rgb(47, 110, 91); border-radius: 12px; color: rgb(47, 110, 91); font-family: 'Archivo', sans-serif; transform: rotate(-12deg); opacity: 0.82; mix-blend-mode: multiply; pointer-events: none; z-index: 2; }
.orn-summary__pass--van .orn-summary__pass-card-stamp-inner { border: 1.5px solid rgb(47, 110, 91); border-radius: 8px; padding: 9px 14px; text-align: center; }
.orn-summary__pass--van .orn-summary__pass-card-stamp-eyebrow { font-size: 11px; letter-spacing: 0.2em; font-weight: 700; }
.orn-summary__pass--van .orn-summary__pass-card-stamp-main { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 4px 0 3px; }
.orn-summary__pass--van .orn-summary__pass-card-stamp-main-txt { font-size: 25px; font-weight: 800; letter-spacing: 0.03em; }
.orn-summary__pass--van .orn-summary__pass-card-stamp-route { font-size: 11px; letter-spacing: 0.1em; font-weight: 600; }
.orn-summary__pass--van .orn-summary__pass-card-row, .orn-summary__pass--van .orn-summary__pass-route, .orn-summary__pass--van .orn-summary__pass-grid, .orn-summary__pass--van .orn-summary__pass-chips, .orn-summary__pass--van .orn-summary__pass-rule { position: relative; z-index: 1; }

.orn-summary__pass-stub-foot { margin-top: auto; display: flex; flex-direction: column; gap: 8px; }
.orn-summary__pass-stub-scan-k { font-family: var(--orn-font-mono); font-size: 11.5px; letter-spacing: 0.18em; color: rgb(159, 176, 196); font-weight: 600; }
.orn-summary__pass-stub-meta { font-family: var(--orn-font-mono); font-size: 11.5px; letter-spacing: 0.08em; color: rgb(159, 176, 196); }
.orn-summary__pass-stub-qr { display: inline-flex; align-items: center; justify-content: center; width: 108px; height: 108px; padding: 8px; background: rgb(244, 239, 227); border-radius: 4px; }
.orn-summary__pass-stub-qr img, .orn-summary__pass-stub-qr canvas { display: block; width: 92px; height: 92px; }

/* -- Traveller row inline edit (pencil ✎ → title/first/middle/last form) -- */
.orn-summary__pax { /* Overriding: switch to column so editor stacks below the row. */ flex-direction: column; align-items: stretch; gap: 0; }
.orn-summary__pax-row { display: flex; align-items: center; gap: 14px; width: 100%; }
.orn-summary__pax-name { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.orn-summary__pax-edit { color: var(--orn-gold, rgb(184, 149, 91)); text-decoration: none; font-size: 15px; line-height: 1; padding: 2px 4px; border-radius: 4px; cursor: pointer; }
.orn-summary__pax-edit:hover { background: rgba(184, 149, 91, 0.12); }
.orn-summary__pax-editor { margin-top: 14px; padding-top: 14px; border-top: 1px solid rgba(20, 35, 59, 0.08); }
.orn-summary__pax-editor-fields { display: flex; align-items: stretch; gap: 10px; flex-wrap: nowrap; }
.orn-summary__pax-editor-fields .orn-summary__pax-title { flex: 0 0 100px; }
.orn-summary__pax-editor-fields .orn-summary__pax-first, .orn-summary__pax-editor-fields .orn-summary__pax-last { flex: 1 1 0; min-width: 0; }
.orn-summary__pax-editor-fields .orn-summary__pax-save { flex: 0 0 44px; }
.orn-summary__pax-editor-fields select, .orn-summary__pax-editor-fields input { padding: 8px 11px; border: 1px solid rgb(199, 191, 174); border-radius: 9px; font-size: 14px; font-family: inherit; background: rgb(251, 248, 241); color: var(--orn-ink, rgb(20, 35, 59)); width: 100%; box-sizing: border-box; }
.orn-summary__pax-editor-fields select:focus, .orn-summary__pax-editor-fields input:focus { outline: none; border-color: var(--orn-navy, rgb(20, 35, 59)); }
.orn-summary__pax-save { background: var(--orn-navy, rgb(20, 35, 59)); color: #fff; border: 0; border-radius: 8px; font-size: 18px; cursor: pointer; padding: 0; min-height: 44px; }
.orn-summary__pax-save:hover { background: rgb(30, 54, 86); }
.orn-summary__pax-editor-hint { margin-top: 10px; font-size: 12.5px; color: var(--orn-gold, rgb(184, 149, 91)); }

/* -- Flights section -- */
.orn-summary__flights-list { display: flex; flex-direction: column; gap: 12px; }
.orn-summary__flight { background: var(--orn-paper, #fff); border-radius: 14px; padding: 18px 22px; display: flex; align-items: flex-start; gap: 16px; box-shadow: 0 8px 24px rgba(20, 35, 59, 0.05); }
.orn-summary__flight-ic { flex: 0 0 30px; width: 30px; height: 40px; border-radius: 10px; background: rgba(184, 149, 91, 0.12); color: var(--orn-gold, rgb(184, 149, 91)); display: inline-flex; align-items: center; justify-content: center; font-size: 22px; }
.orn-summary__flight-body { flex: 1 1 0; min-width: 0; }
.orn-summary__flight-title { font-family: 'Archivo', sans-serif; font-weight: 600; font-size: 16px; color: var(--orn-ink, rgb(20, 35, 59)); line-height: 1.3; }
.orn-summary__flight-desc { margin-top: 6px; font-family: var(--orn-font-body); font-size: 14px; color: rgb(90, 101, 115); line-height: 1.5; }

/* a flight booked with its own carrier / airport / time information, leg by leg */
.orn-summary__flight--detailed { flex-direction: column; align-items: stretch; gap: 0; }
.orn-summary__flight-leg { display: flex; align-items: center; gap: 18px; padding: 4px 0; flex-wrap: wrap; }
.orn-summary__flight-carrier { flex: 0 0 auto; display: flex; align-items: center; gap: 10px; min-width: 168px; }
.orn-summary__flight-logo { display: block; height: 16px; width: auto; border: 0; }
.orn-summary__flight-carrier-name { font-family: 'Archivo', sans-serif; font-weight: 600; font-size: 14px; color: var(--orn-ink, rgb(20, 35, 59)); line-height: 1.3; }
.orn-summary__flight-carrier-num { font-family: var(--orn-font-body); font-size: 12px; color: rgb(130, 140, 152); }
.orn-summary__flight-point { flex: 0 0 auto; min-width: 92px; }
.orn-summary__flight-point--end { text-align: right; }
.orn-summary__flight-time { font-family: 'Archivo', sans-serif; font-weight: 600; font-size: 16px; color: var(--orn-ink, rgb(20, 35, 59)); line-height: 1.3; }
.orn-summary__flight-place { font-family: var(--orn-font-body); font-size: 13px; color: rgb(90, 101, 115); }
.orn-summary__flight-date { font-family: var(--orn-font-body); font-size: 12px; color: rgb(130, 140, 152); margin-top: 2px; }
.orn-summary__flight-dur { flex: 1 1 90px; display: flex; flex-direction: column; align-items: center; gap: 4px; font-family: var(--orn-font-body); font-size: 12px; color: rgb(130, 140, 152); }
.orn-summary__flight-dur-line { display: block; width: 100%; height: 1px; background: rgb(225, 229, 234); }
.orn-summary__flight-layover { font-family: var(--orn-font-body); font-size: 12px; color: rgb(130, 140, 152); padding: 8px 0; border-top: 1px dashed rgb(225, 229, 234); border-bottom: 1px dashed rgb(225, 229, 234); margin: 8px 0; }
.orn-summary__flight-meta { display: flex; flex-wrap: wrap; gap: 8px; padding: 4px 0 2px; }
.orn-summary__flight-tag { font-family: var(--orn-font-body); font-size: 12px; color: rgb(90, 101, 115); background: rgba(20, 35, 59, 0.05); border-radius: 999px; padding: 3px 10px; }
.orn-summary__flight-tag-k { color: rgb(130, 140, 152); }
.orn-summary__flight-pnr { margin-top: 10px; padding-top: 10px; border-top: 1px solid rgb(235, 238, 242); font-family: var(--orn-font-body); font-size: 13px; color: var(--orn-ink, rgb(20, 35, 59)); font-weight: 600; }
.orn-summary__flight-pnr-k { color: rgb(130, 140, 152); font-weight: 400; text-transform: uppercase; letter-spacing: 0.04em; font-size: 11px; }

@media (max-width: 640px) {
    .orn-summary__flight-carrier { min-width: 100%; }
    .orn-summary__flight-dur { flex-basis: 60px; }
}

/* -- Booked-item details: what trip_request.jsp shows the customer about a stay, flight
      or vehicle - status, confirmation numbers, cancellation, what is paid at the hotel -
      as a quiet strip under each card. -- */
.orn-summary__booking { margin-top: 10px; padding: 14px 18px; background: var(--orn-paper, #fff); border: 1px solid var(--orn-line, rgba(20, 35, 59, 0.10)); border-radius: 12px; font-family: var(--orn-font-body); font-size: 13.5px; color: var(--orn-ink-2, rgb(58, 70, 84)); display: flex; flex-direction: column; gap: 10px; }
.orn-summary__flight .orn-summary__booking { margin-top: 12px; border-width: 1px 0 0; border-radius: 0; padding: 12px 0 0; background: transparent; }
.orn-summary__booking-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; }
.orn-summary__booking-k { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--orn-mute, rgb(110, 110, 110)); font-weight: 600; margin-right: 4px; }
.orn-summary__booking-ref { font-weight: 600; color: var(--orn-ink, rgb(20, 35, 59)); overflow-wrap: anywhere; }
.orn-summary__booking-status { display: inline-block; padding: 3px 10px; border-radius: 999px; font-size: 12px; font-weight: 700; }
.orn-summary__booking-status--ok { background: rgb(234, 244, 237); color: rgb(27, 94, 60); }
.orn-summary__booking-status--hold { background: rgb(232, 240, 252); color: rgb(30, 84, 160); }
.orn-summary__booking-status--warn { background: rgb(253, 243, 226); color: rgb(150, 90, 20); }
.orn-summary__booking-tag { display: inline-block; padding: 3px 10px; border-radius: 999px; background: rgba(20, 35, 59, 0.05); font-size: 12px; color: var(--orn-ink-2, rgb(58, 70, 84)); }
.orn-summary__booking-tag[title] { cursor: help; text-decoration: underline dotted rgba(20, 35, 59, 0.3); text-underline-offset: 3px; }
.orn-summary__booking-line { line-height: 1.5; }
/* label and amount side by side, not pushed to opposite edges of the card */
.orn-summary__booking-pay .orn-summary__booking-list { display: inline-grid; grid-template-columns: auto auto; column-gap: 28px; row-gap: 4px; }
.orn-summary__booking-pay .orn-summary__booking-list li { display: contents; }
.orn-summary__booking-pay .orn-summary__booking-list li > span:last-child { color: var(--orn-ink, rgb(20, 35, 59)); text-align: right; }
.orn-summary__booking-list { margin: 6px 0 0; padding-left: 20px; list-style: disc outside; line-height: 1.55; }
/* set on the items themselves: the legacy stack's `ul li` reset sits on the li, and a rule
   on the element beats anything the ul would pass down */
.orn-summary__booking-list > li { display: list-item; list-style: disc outside; margin-bottom: 6px; }
/* the hotel's own copy can carry a nested list (charges at the property) */
.orn-summary__booking-list ul { margin: 6px 0 0; padding-left: 20px; list-style: circle outside; }
.orn-summary__booking-list ul li { display: list-item; list-style: circle outside; margin-bottom: 3px; }
.orn-summary__booking-pay .orn-summary__booking-list { list-style: none; padding-left: 0; }
.orn-summary__booking-pay .orn-summary__booking-list > li { display: contents; list-style: none; }
/* voucher and its booking details read as one card: the wrapper carries the card, the
   voucher inside it (which the journey script may swap) and the details sit flush */
.orn-summary__stay { border: 1px solid rgb(228, 221, 205); border-radius: 12px; overflow: hidden; margin-bottom: 12px; background: var(--orn-paper, #fff); }
.orn-summary__stay:empty { display: none; }
.orn-summary__stay > .orn-summary__voucher { border: 0; border-radius: 0; margin: 0; }
.orn-summary__stay > .orn-summary__booking { margin: 0; border: 0; border-top: 1px dashed rgb(216, 207, 187); border-radius: 0; background: rgb(250, 249, 246); padding: 14px 18px 16px; }
.orn-summary__selfstay { display: flex; align-items: flex-start; gap: 14px; padding: 18px 20px; }
.orn-summary__selfstay-ic { flex: 0 0 42px; width: 42px; height: 42px; border-radius: 12px; background: rgba(20, 35, 59, 0.05); display: inline-flex; align-items: center; justify-content: center; font-size: 20px; }
.orn-summary__selfstay-body { min-width: 0; }
.orn-summary__selfstay-eyebrow { font-family: var(--orn-font-mono); font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 700; color: rgb(242, 13, 22); }
.orn-summary__selfstay-name { margin-top: 4px; font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 16px; color: var(--orn-ink, rgb(20, 35, 59)); line-height: 1.3; }
.orn-summary__selfstay-addr { margin-top: 3px; font-size: 13px; color: rgb(90, 101, 115); line-height: 1.45; }
.orn-summary__selfstay-dates { margin-top: 10px; font-family: 'Archivo', sans-serif; font-weight: 600; font-size: 13.5px; color: var(--orn-ink, rgb(20, 35, 59)); }
/* two lines of rooms read as one block - no rule between them */
.orn-summary__hcard .orn-fit__hsimple-room.orn-summary__hcard-room-more { border-top: 0; margin-top: 2px; padding-top: 0; }
.orn-summary__view--all-hotels .orn-summary__stay { margin-top: 18px; }
.orn-summary__booking-note { margin-top: 6px; font-size: 12px; color: var(--orn-mute, rgb(110, 110, 110)); }
.orn-summary__booking-more > summary { cursor: pointer; font-weight: 600; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__booking-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.orn-summary__booking-btn { display: inline-flex; align-items: center; padding: 8px 14px; border-radius: 999px; background: var(--orn-text, rgb(21, 21, 21)); color: #fff; font-size: 13px; font-weight: 600; text-decoration: none; }
.orn-summary__booking-btn:hover { color: #fff; opacity: 0.9; }
.orn-summary__booking-btn--sec { background: transparent; color: var(--orn-ink, rgb(20, 35, 59)); border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); }
.orn-summary__booking-btn--sec:hover { color: var(--orn-ink, rgb(20, 35, 59)); }
/* -- Booked hotel card, refined: status first, one divider, a quiet footer for extras -- */
.orn-summary__hcard .orn-fit__hsimple-img { flex-basis: 280px; width: 280px; min-height: 0; }
.orn-summary__hcard .orn-fit__hsimple-body { padding: 18px 22px 20px; }
.orn-summary__hcard-status { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-top: 14px; font-family: var(--orn-font-body); font-size: 13px; }
.orn-summary__hcard-status .orn-summary__booking-ref { font-family: var(--orn-font-mono); font-size: 13px; letter-spacing: 0.02em; }
.orn-summary__hcard-status .orn-summary__booking-k { font-size: 10px; }
.orn-summary__booking-ref--sub { font-weight: 400; color: rgb(90, 101, 115); }
/* room, board and terms read as one block - the only rule is the one above the dates */
.orn-summary__hcard .orn-fit__hsimple-room { border-top: 0; margin-top: 12px; padding-top: 0; }
.orn-summary__hcard .orn-fit__hsimple-rmeta { margin-top: 3px; font-size: 12.5px; }
.orn-summary__hcard-xcl--ok { color: rgb(30, 122, 78); font-weight: 600; }
.orn-summary__hcard-xcl--nr { color: rgb(180, 50, 45); font-weight: 600; }
.orn-summary__hcard .orn-fit__hcico { margin-top: 14px; padding-top: 14px; gap: 18px; }
.orn-summary__hcard-span { display: inline-flex; flex-direction: column; align-items: center; gap: 1px; flex: none; }
.orn-summary__hcard-nights { font-family: var(--orn-font-mono); font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; color: rgb(150, 158, 172); white-space: nowrap; }
/* the footer only carries extras: taxes at the hotel, pickup, the hotel's own notes */
.orn-summary__hcard-info > summary { list-style: none; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; cursor: pointer; font-weight: 600; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__hcard-info > summary::-webkit-details-marker { display: none; }
.orn-summary__hcard-info > summary::after { content: '\25BE'; order: 2; margin-left: -4px; color: rgb(110, 118, 130); font-size: 13px; transition: transform 0.15s ease; }
.orn-summary__hcard-info[open] > summary::after { transform: rotate(180deg); }
.orn-summary__hcard-info-ic { width: 20px; height: 20px; border-radius: 50%; border: 1.5px solid currentColor; display: inline-flex; align-items: center; justify-content: center; font-family: Georgia, serif; font-style: italic; font-size: 12px; font-weight: 700; flex: none; }
.orn-summary__hcard-info-hint { order: 3; font-weight: 400; font-size: 12.5px; color: rgb(130, 140, 152); }
.orn-summary__hcard-info-body { margin-top: 10px; padding: 12px 16px; background: var(--orn-paper, #fff); border: 1px solid var(--orn-line, rgba(20, 35, 59, 0.10)); border-radius: 10px; }
@media (max-width: 640px) {
    .orn-summary__hcard .orn-fit__hsimple-img { flex-basis: auto; width: 100%; height: 160px; }
    .orn-summary__hcard .orn-fit__hsimple-body { padding: 14px 16px 16px; }
    .orn-summary__hcard-info-hint { flex-basis: 100%; margin-left: 30px; }
}
/* published_journey's hotel card, sitting flush inside the stay card */
.orn-summary__stay > .orn-summary__hcard { border: 0; border-radius: 0; }
.orn-summary__hcard-city { font-family: var(--orn-font-mono); font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 700; color: var(--orn-mute, rgb(110, 110, 110)); margin-bottom: 4px; }
.orn-summary__hcard-addr { font-size: 12.5px; color: rgb(90, 101, 115); margin-top: 4px; line-height: 1.45; }
.orn-summary__hcard-addr a { color: inherit; }
.orn-summary__hcard-room-more { border-top: 0; margin-top: 2px; padding-top: 0; }
.orn-summary__hcard-terms { cursor: help; text-decoration: underline dotted rgba(20, 35, 59, 0.3); text-underline-offset: 3px; }
.orn-summary__stay-night { display: flex; align-items: center; gap: 10px; padding: 12px 16px; margin-bottom: 12px; border: 1px dashed rgb(216, 207, 187); border-radius: 12px; font-family: var(--orn-font-body); font-size: 14px; color: var(--orn-ink-2, rgb(58, 70, 84)); }
.orn-summary__stay-night-ic { font-size: 16px; }
/* plain text after the hotel name - no badge; darker and heavier than the muted meta so it is not missed */
.orn-summary__hcard-similar { font-family: var(--orn-font-body); font-size: 14px; font-weight: 600; font-style: italic; color: var(--orn-ink-2, rgb(58, 70, 84)); cursor: help; white-space: nowrap; }
.orn-summary__voucher-similar { font-family: var(--orn-font-body); font-size: 13px; font-weight: 400; color: var(--orn-mute, rgb(110, 110, 110)); }
.orn-summary__voucher-date-t { display: block; margin-top: 2px; font-family: var(--orn-font-body); font-size: 11.5px; color: var(--orn-mute, rgb(110, 110, 110)); }
.orn-summary__voucher-city { margin-bottom: 4px; }

/* -- Alerts band under the hero -- */
.orn-summary__alerts { margin: 0 0 18px; }
.orn-summary__alerts .orn-summary__alert { margin-bottom: 8px; }
.orn-summary__alert--hold { background: rgb(232, 240, 252); color: rgb(30, 60, 110); }
.orn-summary__alert--hold .orn-summary__alert-ic { color: rgb(30, 84, 160); }
.orn-summary__alert--occasion { background: rgb(253, 243, 226); color: rgb(110, 70, 20); }
.orn-summary__alert--occasion .orn-summary__alert-ic { color: rgb(199, 122, 43); }

/* -- Travellers: facts under each name, documents, and the one-traveller editor -- */
.orn-summary__pax-room { margin: 8px 2px -4px; font-family: var(--orn-font-mono); font-size: 11.5px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-summary__pax-room:first-child { margin-top: 0; }
.orn-summary__pax-room-sub { font-weight: 400; color: var(--orn-mute, rgb(110, 110, 110)); letter-spacing: 0.04em; text-transform: none; font-family: var(--orn-font-body); font-size: 12.5px; }
.orn-summary__pax-facts { margin-top: 3px; font-family: var(--orn-font-body); font-size: 12.5px; line-height: 1.5; color: var(--orn-mute, rgb(110, 110, 110)); }
.orn-summary__pax-docs, .orn-summary__pax-uploads { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 6px 14px; }
.orn-summary__pax-doc { font-family: var(--orn-font-body); font-size: 12.5px; font-weight: 600; color: var(--orn-ink, rgb(20, 35, 59)); text-decoration: none; }
.orn-summary__pax-doc:hover { text-decoration: underline; }
.orn-summary__pax-upload-btn { position: relative; overflow: hidden; display: inline-flex; padding: 5px 12px; border: 1px dashed var(--orn-line-2, rgba(20, 35, 59, 0.3)); border-radius: 999px; font-family: var(--orn-font-body); font-size: 12.5px; font-weight: 600; color: var(--orn-ink, rgb(20, 35, 59)); cursor: pointer; }
.orn-summary__pax-upload-btn input[type=file] { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
button.orn-summary__pax-edit { background: transparent; border: 0; flex: 0 0 auto; }
.orn-summary__pax-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr)); gap: 12px; margin-bottom: 12px; }
.orn-summary__pax-fields--name { grid-template-columns: minmax(90px, 110px) 1fr 1fr; }
.orn-summary__pax-field { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.orn-summary__pax-field > span { font-family: var(--orn-font-mono); font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--orn-mute, rgb(110, 110, 110)); }
.orn-summary__pax-field select, .orn-summary__pax-field input { padding: 9px 11px; border: 1px solid rgb(199, 191, 174); border-radius: 9px; font-size: 14px; font-family: inherit; background: rgb(251, 248, 241); color: var(--orn-ink, rgb(20, 35, 59)); width: 100%; box-sizing: border-box; }
.orn-summary__pax-field select:focus, .orn-summary__pax-field input:focus { outline: none; border-color: var(--orn-text, rgb(21, 21, 21)); }
.orn-summary__pax-date { display: flex; gap: 6px; }
.orn-summary__pax-date select { flex: 1 1 0; min-width: 0; padding-left: 8px; padding-right: 4px; }
.orn-summary__pax-hint { margin: -4px 0 12px; font-size: 12.5px; color: var(--orn-mute, rgb(110, 110, 110)); }
.orn-summary__pax-editor-actions { display: flex; justify-content: flex-end; gap: 10px; }
.orn-summary__pax-editor-actions .orn-summary__pax-save { min-height: 40px; padding: 0 18px; font-size: 14px; font-weight: 600; border-radius: 999px; background: var(--orn-text, rgb(21, 21, 21)); }
.orn-summary__pax-cancel { min-height: 40px; padding: 0 18px; border-radius: 999px; background: transparent; border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); font-size: 14px; cursor: pointer; color: var(--orn-ink, rgb(20, 35, 59)); }

/* -- Getting around: the journey's vehicle card, read-only -- */
.orn-summary__veh { margin-top: 0; margin-bottom: 14px; }
.orn-summary__veh-when { margin-top: 14px; display: flex; flex-direction: column; gap: 6px; font-family: var(--orn-font-body); font-size: 13.5px; color: var(--orn-ink-2, rgb(58, 70, 84)); }
.orn-summary__veh-desc { margin: 12px 0 0; font-size: 14px; line-height: 1.55; color: rgb(90, 101, 115); }
.orn-summary__veh .orn-summary__booking-more { margin-top: 16px; font-size: 13.5px; color: rgb(90, 101, 115); }

/* -- Visa -- */
.orn-summary__visa { padding: 0; margin-bottom: 14px; overflow: hidden; }
.orn-summary__visa-head { display: flex; align-items: flex-start; gap: 14px; padding: 20px 24px 0; }
.orn-summary__visa-ic { flex: 0 0 40px; width: 40px; height: 40px; border-radius: 12px; background: rgba(20, 35, 59, 0.06); display: inline-flex; align-items: center; justify-content: center; font-size: 20px; }
.orn-summary__visa-head-txt { min-width: 0; }
.orn-summary__visa-title { font-family: 'Archivo', sans-serif; font-weight: 700; font-size: 18px; color: var(--orn-ink, rgb(20, 35, 59)); line-height: 1.3; }
.orn-summary__visa-sub { margin-top: 3px; font-family: var(--orn-font-body); font-size: 13.5px; line-height: 1.45; color: rgb(90, 101, 115); }
.orn-summary__visa-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(150px, 100%), 1fr)); gap: 12px; margin: 16px 24px 0; padding: 14px 16px; border-radius: 12px; background: rgb(250, 249, 246); border: 1px solid var(--orn-line, rgba(20, 35, 59, 0.10)); }
.orn-summary__visa-fact { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.orn-summary__visa-fact-k { font-family: var(--orn-font-mono); font-size: 10.5px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 600; color: var(--orn-mute, rgb(110, 110, 110)); }
.orn-summary__visa-fact-v { font-family: 'Archivo', sans-serif; font-weight: 600; font-size: 14.5px; color: var(--orn-ink, rgb(20, 35, 59)); }
/* stepper: numbered dots joined by a line; done steps ticked, the current one highlighted */
.orn-summary__visa-steps { list-style: none; margin: 20px 24px 0; padding: 0; display: flex; counter-reset: none; }
.orn-summary__visa-step { list-style: none; flex: 1 1 0; min-width: 0; position: relative; display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; padding: 0 4px; }
.orn-summary__visa-step::before { content: none; }
.orn-summary__visa-step::after { content: ''; position: absolute; top: 14px; left: calc(50% + 18px); right: calc(-50% + 18px); height: 2px; background: rgb(226, 229, 234); }
.orn-summary__visa-step:last-child::after { display: none; }
.orn-summary__visa-step.is-done::after { background: rgb(40, 130, 70); }
.orn-summary__visa-step-dot { width: 30px; height: 30px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-family: var(--orn-font-mono); font-size: 12.5px; font-weight: 700; background: #fff; border: 2px solid rgb(226, 229, 234); color: rgb(130, 140, 152); position: relative; z-index: 1; }
.orn-summary__visa-step-txt { font-family: var(--orn-font-body); font-size: 12.5px; line-height: 1.35; color: rgb(110, 118, 130); }
.orn-summary__visa-step.is-done .orn-summary__visa-step-dot { background: rgb(40, 130, 70); border-color: rgb(40, 130, 70); color: #fff; }
.orn-summary__visa-step.is-done .orn-summary__visa-step-txt { color: rgb(27, 94, 60); }
.orn-summary__visa-step.is-current .orn-summary__visa-step-dot { border-color: var(--orn-text, rgb(21, 21, 21)); color: var(--orn-text, rgb(21, 21, 21)); box-shadow: 0 0 0 4px rgba(20, 35, 59, 0.08); }
.orn-summary__visa-step.is-current .orn-summary__visa-step-txt { color: var(--orn-ink, rgb(20, 35, 59)); font-weight: 700; }
.orn-summary__visa-step.is-rejected .orn-summary__visa-step-dot { background: rgb(194, 69, 58); border-color: rgb(194, 69, 58); color: #fff; }
.orn-summary__visa-step.is-rejected .orn-summary__visa-step-txt { color: rgb(140, 36, 32); }
.orn-summary__visa-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 20px; padding: 14px 24px; border-top: 1px dashed rgb(216, 207, 187); background: rgb(250, 249, 246); }
.orn-summary__visa-foot-txt { font-family: var(--orn-font-body); font-size: 13px; color: rgb(90, 101, 115); }
.orn-summary__visa > :last-child:not(.orn-summary__visa-foot) { margin-bottom: 20px; }
@media (max-width: 640px) {
    .orn-summary__visa-head { padding: 16px 16px 0; }
    .orn-summary__visa-facts { margin: 14px 16px 0; }
    /* the steps stack, the line running down beside the dots */
    .orn-summary__visa-steps { flex-direction: column; margin: 16px 16px 0; gap: 14px; }
    .orn-summary__visa-step { flex-direction: row; text-align: left; align-items: center; gap: 12px; padding: 0; }
    .orn-summary__visa-step::after { top: 30px; left: 14px; right: auto; width: 2px; height: 14px; }
    .orn-summary__visa-foot { padding: 12px 16px; }
    .orn-summary__visa-foot .orn-summary__booking-btn { width: 100%; justify-content: center; }
}

/* -- Trip documents -- */
.orn-summary__docs { background: var(--orn-paper, #fff); border-radius: 14px; padding: 18px 22px; display: flex; flex-direction: column; gap: 14px; box-shadow: 0 8px 24px rgba(20, 35, 59, 0.05); }
.orn-summary__doc-group { display: flex; flex-direction: column; gap: 6px; }
.orn-summary__doc { font-family: var(--orn-font-body); font-size: 14px; font-weight: 600; color: var(--orn-ink, rgb(20, 35, 59)); text-decoration: none; overflow-wrap: anywhere; }
a.orn-summary__doc:hover { text-decoration: underline; }
.orn-summary__doc--locked { color: var(--orn-mute, rgb(110, 110, 110)); font-weight: 400; }

@media (max-width: 640px) {
    .orn-summary__booking { padding: 12px 14px; }
    .orn-summary__pax-fields--name { grid-template-columns: 1fr 1fr; }
    .orn-summary__pax-fields--name .orn-summary__pax-field--title { grid-column: 1 / -1; }
    .orn-summary__pax-editor-actions { justify-content: stretch; }
    .orn-summary__pax-editor-actions button { flex: 1 1 0; }
    .orn-summary__visa { padding: 16px 18px; }
    .orn-summary__veh .orn-fit__vehx-hero { height: 180px; }
}

/* ── van_tour_detail.jsp — driver-guide section ───────────────────── */
.orn-vtd-guide { background: rgb(15, 15, 15); padding: 36px 24px; color: #ffffff; }
.orn-vtd-guide__inner { max-width: 820px; margin: 0 auto; flex-direction: column; display: flex; align-items: center; }
.orn-vtd-guide__avatar { width: 88px; height: 88px; margin: 0 auto 32px; background: var(--orn-navy); color: #fff; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.orn-vtd-guide__avatar svg { width: 44px; height: 44px; }
.orn-vtd-guide__eyebrow { font-family: monospace; font-size: 12px; letter-spacing: 3px; color: var(--orn-navy); margin: 0 0 14px; text-transform: uppercase; }
.orn-vtd-guide__title { font-size: 34px; font-weight: 700; margin: 0 0 20px; color: #ffffff; line-height: 1.2; }
.orn-vtd-guide__lede { font-size: 17px; line-height: 1.65; color: rgba(255, 255, 255, 0.72); margin: 0 0 32px; }
.orn-vtd-guide__cta { display: inline-block; padding: 14px 28px; background: var(--orn-navy); color: #fff; font-weight: 600; text-decoration: none; border-radius: 6px; font-size: 15px; }
.orn-vtd-guide__cta:hover, .orn-vtd-guide__cta:focus { background: var(--orn-navy-2); color: #fff; }

/* ===== Marketing landing (welcome.jsp / partner signup.jsp) — merged from ornholidays-marketing.css ===== */

/* ─────────────────────────────────────────────────────────────
 * ORN Holidays — public marketing landing (welcome.jsp)
 * Palette: cream #F3EFE6, navy #0E1A2B, gold #C18E45, muted #7C7566
 * Fonts: Space Grotesk (display), IBM Plex Sans (body), IBM Plex Mono (labels)
 * ───────────────────────────────────────────────────────────── */

.orn-mk-page { font-family: "IBM Plex Sans", sans-serif; background: var(--orn-cream); color: var(--orn-text); overflow-x: hidden; margin: 0; }
.orn-mk-page * { box-sizing: border-box; }

/* ── Shared type ──────────────────────────────────────────────── */
.orn-mk-h2 { font-family: Anton, sans-serif; font-size: 52px; font-weight: 700; line-height: 1.02; margin: 16px 0 0; color: #0E1A2B; }
.orn-mk-h2--onDark { color: #F3EFE6; }
.orn-mk-eyebrow { font-family: "IBM Plex Mono", monospace; font-size: 14px; letter-spacing: 0.26em; text-transform: uppercase; color: var(--orn-navy); display: inline-block; }
.orn-mk-eyebrow--onDark { color: var(--orn-navy); }
.orn-mk-gold { color: var(--orn-navy); }
.orn-mk-btn { font-family: Anton, sans-serif; font-size: 15px; font-weight: 600; padding: 12px 24px; text-decoration: none; display: inline-block; border: 1px solid transparent; }
.orn-mk-btn--gold { background: var(--orn-navy); color: #fff; }
.orn-mk-btn--gold:hover, .orn-mk-btn--gold:focus { background: var(--orn-navy-2); color: #fff; }
.orn-mk-btn--ghost { color: #F3EFE6; border: 1px solid #2A3C56; background: transparent; }
.orn-mk-btn--ghost:hover, .orn-mk-btn--ghost:focus { background: rgba(255, 255, 255, 0.04); color: #F3EFE6; }

/* ── Marketing header ─────────────────────────────────────────── */
.orn-mh { position: sticky; top: 0; z-index: 50; background: #0e0d0c; color: #fff; }
.orn-mh__inner { display: flex; align-items: center; justify-content: space-between; padding: 0 var(--orn-gutter); height: 50px; max-width: var(--orn-container); margin-inline: auto; }
.orn-mh__brand { display: flex; align-items: center; gap: 14px; text-decoration: none; flex: 0 1 auto; min-width: 0; }
.orn-mh__brand-img { height: auto; max-height: var(--orn-logo-h, 35px); width: auto; max-width: 100%; min-width: 0; display: block; object-fit: contain; object-position: left center; }
.orn-mh__brand-mark { font-family: Anton, sans-serif; font-size: 30px; font-weight: 400; color: #fff; }
.orn-mh__brand-dot { color: #E4002B; }
.orn-mh__brand-sub { display: inline-flex; align-items: center; font-family: "Archivo Narrow", sans-serif; font-size: 12px; letter-spacing: 0.24em; text-transform: uppercase; color: #cfcac3; padding-left: 14px; margin-left: 8px; border-left: 1px solid rgba(255, 255, 255, 0.4); height: 42px; }
.orn-mh__links { display: flex; align-items: center; gap: 28px; margin-left: 40px; margin-right: auto; }
.orn-mh__link { font-family: Archivo, sans-serif; font-size: 13px; font-weight: 700; letter-spacing: 0; text-transform: none; color: #fff; text-decoration: none; }
.orn-mh__link:hover, .orn-mh__link:focus { color: #E4002B; }
.orn-mh__cta { font-family: Anton, sans-serif !important; font-size: 16px; font-weight: 400; letter-spacing: 0.04em; color: #E4002B; background: #fff; padding: 3px 18px; text-decoration: none; white-space: nowrap; border-radius: var(--button-radius-primary); }
.orn-mh__cta:hover, .orn-mh__cta:focus { background: #F7F4EF; color: #E4002B; }
.orn-mh__actions { display: flex; align-items: center; gap: 12px; flex: 0 0 auto; }
/* Marketing header — mobile hamburger + slide-in drawer (shown <=900px). */
.orn-mh__burger { display: none; }
.orn-mh__burger span { display: block; width: 22px; height: 2px; background: #F3EFE6; border-radius: 2px; }
.orn-mh__scrim { position: fixed; inset: 0; background: rgba(10, 14, 22, 0.6); backdrop-filter: blur(2px); z-index: 60; }
.orn-mh__scrim[hidden] { display: none; }
.orn-mh__drawer { position: fixed; top: 0; right: 0; height: 100vh; width: min(320px, 84vw); max-width: 100vw; background: #0E1A2B; border-left: 1px solid #2A3C56; z-index: 61; display: flex; flex-direction: column; padding: 20px 24px 32px; opacity: 0; visibility: hidden; transition: opacity 0.24s ease, visibility 0.24s ease; }
.orn-mh__drawer.is-open { opacity: 1; visibility: visible; }
.orn-mh__drawer-close { align-self: flex-end; background: none; border: 0; color: #C9CDD3; font-size: 30px; line-height: 1; cursor: pointer; padding: 0 4px; }
.orn-mh__drawer-nav { display: flex; flex-direction: column; margin-top: 10px; }
.orn-mh__drawer-link { font-family: "IBM Plex Mono", monospace; font-size: 14px; letter-spacing: 0.08em; text-transform: uppercase; color: #C9CDD3; text-decoration: none; padding: 15px 4px; border-bottom: 1px solid #22334C; }
.orn-mh__drawer-link:hover, .orn-mh__drawer-link:focus { color: #F3EFE6; }
.orn-mh__drawer-cta { margin-top: 20px; font-family: Anton, sans-serif; font-size: 16px; font-weight: 600; text-align: center; color: #fff; background: var(--color-primary, #E4002B); padding: 14px 24px; text-decoration: none; }
.orn-mh__drawer-cta:hover, .orn-mh__drawer-cta:focus { background: var(--color-primary-light, #C4001F); color: #fff; }

/* ── Live offers strip ────────────────────────────────────────── */
.orn-mk-offers { background: var(--orn-text); border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important; }
.orn-mk-offers__inner { max-width: 1280px; margin: 0 auto; padding: 12px 40px; display: flex; align-items: center; gap: 22px; flex-wrap: wrap; }
.orn-mk-offers__eyebrow { font-family: "IBM Plex Mono", monospace; font-size: 11px; letter-spacing: 0.24em; text-transform: uppercase; color: var(--orn-navy); font-weight: 600; white-space: nowrap; }
.orn-mk-offers__row { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; }
.orn-mk-offers__row::-webkit-scrollbar { display: none; }
.orn-mk-offers__chip { display: flex; align-items: center; gap: 9px; background: rgba(255, 255, 255, 0.04); border: 1px solid #2A3C56; border-radius: 999px; padding: 7px 15px 7px 12px; white-space: nowrap; flex: 0 0 auto; text-decoration: none; }
.orn-mk-offers__chip--red { background: rgba(228, 0, 43, 0.10); border: 1px solid rgba(228, 0, 43, 0.40); }
.orn-mk-offers__dot { width: 7px; height: 7px; border-radius: 50%; flex: 0 0 auto; }
.orn-mk-offers__chip--blue .orn-mk-offers__dot { background: #5A9BD8; }
.orn-mk-offers__chip--green .orn-mk-offers__dot { background: #6FB58C; }
.orn-mk-offers__chip--red .orn-mk-offers__dot { background: #E4002B; }
.orn-mk-offers__chip-tag { font-family: "IBM Plex Mono", monospace; font-size: 10px; letter-spacing: 0.10em; text-transform: uppercase; font-weight: 600; }
.orn-mk-offers__chip--blue .orn-mk-offers__chip-tag { color: #5A9BD8; }
.orn-mk-offers__chip--green .orn-mk-offers__chip-tag { color: #6FB58C; }
.orn-mk-offers__chip--red .orn-mk-offers__chip-tag { color: #FF5A4D; }
.orn-mk-offers__chip-copy { font-family: "IBM Plex Sans", sans-serif; font-size: 13.5px; font-weight: 500; color: #E4E7EB; }
.orn-mk-offers__cta { font-family: "IBM Plex Sans", sans-serif; font-size: 13.5px; font-weight: 600; color: var(--orn-navy); white-space: nowrap; text-decoration: none; }

/* ── Hero ─────────────────────────────────────────────────────── */
.orn-mk-hero { background: #0E1A2B; color: #F3EFE6; position: relative; overflow: hidden; }
.orn-mk-hero__ring { position: absolute; border: 1px solid #2A3C56; border-radius: 50%; pointer-events: none; }
.orn-mk-hero__ring--tr { right: -160px; top: -120px; width: 640px; height: 640px; }
.orn-mk-hero__ring--br { right: 120px; bottom: -260px; width: 520px; height: 520px; }
.orn-mk-hero__inner { max-width: 1280px; margin: 0 auto; padding: 74px 40px 84px; display: grid; grid-template-columns: 0.7fr 1.2fr; gap: 52px; align-items: center; position: relative; }
.orn-mk-hero__eyebrow { font-family: "IBM Plex Mono", monospace; font-size: 14px; letter-spacing: 0.26em; text-transform: uppercase; color: var(--orn-navy); }
.orn-mk-hero__title { font-family: Anton, sans-serif; font-size: 66px; font-weight: 700; line-height: 0.98; letter-spacing: -0.02em; margin: 26px 0 0; color: #F3EFE6; }
.orn-mk-hero__title-hi { color: #fff; }
.orn-mk-hero__lede { font-size: 24px; color: #B9BDC4; font-weight: 300; line-height: 1.5; margin: 30px 0 0; max-width: 520px; }
.orn-mk-hero__lede-strong { color: #F3EFE6; font-weight: 600; }
.orn-mk-hero__ctas { display: flex; gap: 16px; margin-top: 32px; flex-wrap: wrap; }
.orn-mk-hero__ctas .orn-mk-btn { font-size: 19px; padding: 18px 34px; }
.orn-mk-hero__stats { display: flex; gap: 40px; margin-top: 38px; }
.orn-mk-stat--divider { border-left: 1px solid #2A3C56; padding-left: 40px; }
.orn-mk-stat__n { font-family: Anton, sans-serif; font-size: 34px; font-weight: 700; color: #F3EFE6; }
.orn-mk-stat__n--gold { color: var(--orn-navy); }
.orn-mk-stat__l { font-family: "IBM Plex Mono", monospace; font-size: 13px; color: #9A968C; margin-top: 2px; }
.orn-mk-hero__img { width: 100%; height: 520px; background-size: cover; background-position: left; border: 1px solid #2A3C56; border-radius: 18px; }

/* ── Pillars ──────────────────────────────────────────────────── */
.orn-mk-pillars { max-width: 1280px; margin: 0 auto; padding: 74px 40px 66px; }
.orn-mk-pillars__head { display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 20px; }
.orn-mk-pillars__lede { font-family: "IBM Plex Sans", sans-serif; font-size: 19px; color: #7C7566; max-width: 360px; line-height: 1.5; margin: 0; }
.orn-mk-pillars__grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0; margin-top: 32px; border-top: 1px solid #DED7C7; }
.orn-mk-pillar { padding: 36px 26px 30px; border-right: 1px solid #DED7C7; }
.orn-mk-pillar--last { border-right: none; }
.orn-mk-pillar__num { font-family: "IBM Plex Mono", monospace; font-size: 13px; color: var(--orn-navy); }
.orn-mk-pillar__title { font-family: Anton, sans-serif; font-size: 26px; font-weight: 700; margin: 18px 0 12px; }
.orn-mk-pillar__lede { font-size: 16px; color: #7C7566; line-height: 1.5; margin: 0; }

/* ── Fleet ────────────────────────────────────────────────────── */
.orn-mk-fleet { background: var(--orn-text); color: #F3EFE6; }
.orn-mk-fleet__inner { max-width: 1280px; margin: 0 auto; padding: 74px 40px; }
.orn-mk-fleet__grid { display: grid; grid-template-columns: 0.8fr 1.2fr; gap: 52px; align-items: center; }
.orn-mk-fleet__copy .orn-mk-h2 { font-size: 60px; line-height: 1; margin: 20px 0 0; }
.orn-mk-fleet__lede { font-size: 22px; color: #B9BDC4; font-weight: 300; line-height: 1.55; margin: 28px 0 0; }
.orn-mk-fleet__badge { background: var(--orn-text); border: 1px solid #2A3C56; padding: 30px 34px; margin-top: 36px; display: flex; flex-direction: column; justify-content: space-between; }
.orn-mk-fleet__badge-eyebrow { font-family: "IBM Plex Mono", monospace; font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-navy); font-weight: 600; }
.orn-mk-fleet__badge-copy { font-family: Anton, sans-serif; font-size: 32px; font-weight: 700; margin-top: 6px; line-height: 1.2; }
.orn-mk-fleet__punch { font-family: Anton, sans-serif; font-size: 40px; font-weight: 700; color: var(--orn-navy); margin: 34px 0 0; }
.orn-mk-fleet__gallery { display: flex; flex-direction: column; gap: 20px; }
.orn-mk-fleet__img { background-size: cover; background-position: center; border: 1px solid #2A3C56; border-radius: 16px; width: 100%; }
.orn-mk-fleet__img--hero { height: 300px; background-position: bottom; }
.orn-mk-fleet__img-row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.orn-mk-fleet__img--small { height: 220px; }
.orn-mk-fleet__price { border-top: 1px solid #2A3C56; margin-top: 54px; padding-top: 44px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 24px; }
.orn-mk-fleet__price-title { font-family: Anton, sans-serif; font-size: 38px; font-weight: 700; }
.orn-mk-fleet__price-nums { font-family: "IBM Plex Mono", monospace; font-size: 18px; color: #9A968C; }
.orn-mk-fleet__price-you { color: #F3EFE6; }

/* ── Style (V-Class private) ──────────────────────────────────── */
.orn-mk-style { max-width: 1280px; margin: 0 auto; padding: 75px 0; }
.orn-mk-style__grid { display: grid; grid-template-columns: 0.9fr 1.1fr; gap: 52px; align-items: center; }
.orn-mk-style__copy .orn-mk-h2 { font-size: clamp(44px, 6vw, 76px); line-height: 1.02; margin: 20px 0 0; }
.orn-mk-style__lede { font-size: 19px; color: var(--orn-text); line-height: 1.55; margin: 24px 0 0; }
.orn-mk-style__chips { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 32px; }
.orn-mk-chip { font-family: "IBM Plex Mono", monospace; font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; background: #FFFFFF; border: 1px solid #DED7C7; padding: 8px 14px; color: #0E1A2B; border-radius: 999px; }
.orn-mk-chip--onDark { background: rgba(255, 255, 255, 0.04); border: 1px solid #2A3C56; color: #C9CDD3; }
.orn-mk-style__visual { position: relative; }
.orn-mk-style__img { width: 100%; height: 480px; background-size: cover; background-position: right; border-radius: 16px; border: 1px solid #DED7C7; }
.orn-mk-style__banner { margin-top: 20px; background: #0E1A2B; color: #F3EFE6; padding: 22px 26px; }
.orn-mk-style__banner-hi { font-family: "IBM Plex Mono", monospace; font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-navy); font-weight: 600; }
.orn-mk-style__banner-lo { font-family: Anton, sans-serif; font-size: 22px; font-weight: 700; margin-top: 6px; }

/* ── Why (infrastructure) ─────────────────────────────────────── */
.orn-mk-why { background: #0E1A2B; color: #F3EFE6; }
.orn-mk-why__inner { max-width: 1280px; margin: 0 auto; padding: 74px 40px; }
.orn-mk-why__head { display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 24px; }
.orn-mk-why__head .orn-mk-h2 { font-size: 52px; }
.orn-mk-why__lede { font-family: "IBM Plex Sans", sans-serif; font-size: 19px; color: #B9BDC4; max-width: 380px; line-height: 1.5; margin: 0; }
.orn-mk-why__lines { margin-top: 42px; display: flex; flex-direction: column; gap: 20px; }
.orn-mk-why__line { font-family: Anton, sans-serif; font-size: 32px; font-weight: 700; line-height: 1.25; padding-top: 8px; }

/* ── Segments ─────────────────────────────────────────────────── */
.orn-mk-segs { max-width: 1280px; margin: 0 auto; padding: 74px 40px; }
.orn-mk-segs__head { margin: 0 auto; }
.orn-mk-segs__head .orn-mk-h2 { margin-top: 14px; }
.orn-mk-segs__lede { font-size: 18px; color: #7C7566; margin: 18px 0 0; line-height: 1.5; }
.orn-mk-segs__pills { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 36px; }
.orn-mk-segs__pill { font-family: "IBM Plex Mono", monospace; font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600; padding: 12px 22px; border-radius: 999px; background: #FFFFFF; border: 1px solid #DED7C7; color: #0E1A2B; cursor: pointer; }
.orn-mk-segs__pill--active { background: var(--orn-text); color: #fff; border-color: var(--orn-text); }
.orn-mk-segs__pill:hover { background: #EAE4D3; }
.orn-mk-segs__pill--active:hover { background: var(--orn-text); color: #fff; }
.orn-mk-segs__card { margin-top: 44px; background: #FFFFFF; border: 1px solid #DED7C7; border-radius: 4px; display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
.orn-mk-segs__card-left { padding: 40px 44px; border-right: 1px solid #DED7C7; }
.orn-mk-segs__card-right { padding: 40px 44px; background: var(--orn-text); }
.orn-mk-segs__card-eyebrow { font-family: "IBM Plex Mono", monospace; font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; color: #7C7566; font-weight: 600; }
.orn-mk-segs__card-tier { font-family: Anton, sans-serif; font-size: 32px; font-weight: 700; margin-top: 16px; }
.orn-mk-segs__card-amt { font-family: Anton, sans-serif; font-size: 54px; font-weight: 700; color: var(--orn-navy); margin-top: 6px; line-height: 1; }
.orn-mk-segs__card-lede { font-size: 16px; color: #7C7566; margin: 18px 0 0; line-height: 1.5; }
.orn-mk-segs__steps-title { font-family: "IBM Plex Mono", monospace; font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-navy); font-weight: 600; margin-bottom: 22px; }
.orn-mk-segs__step { display: flex; align-items: center; gap: 14px; padding: 14px 0; border-top: 1px solid rgba(255, 255, 255, 0.2); font-family: Anton, sans-serif; font-size: 17px; font-weight: 600; color: #fff; }
.orn-mk-segs__step-num { font-family: "IBM Plex Mono", monospace; font-size: 13px; color: var(--orn-navy); font-weight: 600; }
.orn-mk-segs__cta { display: inline-block; margin-top: 24px; }

/* ── Departures ───────────────────────────────────────────────── */
.orn-mk-deps { background: #ebebeb; padding: 74px 0; }
.orn-mk-deps__head { max-width: 1280px; margin: 0 auto; padding: 0 40px; display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 20px; }
.orn-mk-deps__pill { font-family: "IBM Plex Mono", monospace; font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-text); font-weight: 600; background: #fff; border: 1px solid #e4dfd3; padding: 8px 14px; border-radius: 999px; }
.orn-mk-deps__grid { max-width: 1280px; margin: 36px auto 0; padding: 0 40px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.orn-mk-dep { background: #FFFFFF; border: 1px solid #DED7C7; padding: 26px 26px 22px; border-radius: 6px; }
.orn-mk-dep__row { display: flex; justify-content: space-between; font-family: "IBM Plex Mono", monospace; font-size: 12px; letter-spacing: 0.10em; text-transform: uppercase; color: #7C7566; font-weight: 600; }
.orn-mk-dep__seats { color: var(--orn-navy); }
.orn-mk-dep__route { font-family: Anton, sans-serif; font-size: 24px; font-weight: 700; margin: 14px 0 22px; color: #0E1A2B; }
.orn-mk-dep__bar { height: 8px; background: #EAE4D3; border-radius: 999px; overflow: hidden; }
.orn-mk-dep__bar-fill { height: 100%; background: var(--orn-navy); }
.orn-mk-dep__pct { font-family: "IBM Plex Mono", monospace; font-size: 12px; color: #7C7566; margin-top: 8px; display: inline-block; }
.orn-mk-dep__foot { margin-top: 22px; display: flex; align-items: center; justify-content: space-between; gap: 16px; border-top: 1px solid #DED7C7; padding-top: 18px; }
.orn-mk-dep__pay-l { font-family: "IBM Plex Mono", monospace; font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: #7C7566; }
.orn-mk-dep__pay-v { font-family: Anton, sans-serif; font-size: 24px; font-weight: 700; color: #0E1A2B; margin-top: 2px; }
.orn-mk-dep__cta { font-family: Anton, sans-serif; font-size: 15px; font-weight: 600; color: #fff; background: var(--orn-navy); padding: 12px 18px; text-decoration: none; }
.orn-mk-dep__cta:hover, .orn-mk-dep__cta:focus { background: var(--orn-navy-2); color: #fff; }

/* ── Group blocking ───────────────────────────────────────────── */
.orn-mk-group { max-width: 1280px; margin: 0 auto; padding: 74px 40px; }
.orn-mk-group__inner { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 52px; align-items: center; }
.orn-mk-group__copy .orn-mk-h2 { margin-top: 14px; }
.orn-mk-group__lede { font-size: 19px; color: #7C7566; line-height: 1.55; margin: 22px 0 0; }
.orn-mk-group__tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.orn-mk-group__tile { background: #FFFFFF; border: 1px solid #DED7C7; padding: 30px 20px; text-align: center; border-radius: 6px; }
.orn-mk-group__tile-n { font-family: Anton, sans-serif; font-size: 44px; font-weight: 700; color: #0E1A2B; }
.orn-mk-group__tile-l { font-family: "IBM Plex Mono", monospace; font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: #7C7566; margin-top: 6px; }

/* ── Company ──────────────────────────────────────────────────── */
.orn-mk-co { background: #0E1A2B; color: #F3EFE6; }
.orn-mk-co__inner { max-width: 1280px; margin: 0 auto; padding: 74px 40px; }
.orn-mk-co__top { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 52px; align-items: center; }
.orn-mk-co__copy .orn-mk-h2 { margin-top: 16px; line-height: 1; font-size: 58px; }
.orn-mk-co__lede { font-size: 19px; color: #B9BDC4; line-height: 1.55; margin: 24px 0 0; max-width: 520px; }
.orn-mk-co__chips { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 26px; }
.orn-mk-co__stats { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.orn-mk-co__stat { border: 1px solid #2A3C56; padding: 24px; }
.orn-mk-co__stat-n { font-family: Anton, sans-serif; font-size: 40px; font-weight: 700; color: #fff; }
.orn-mk-co__stat-l { font-family: "IBM Plex Mono", monospace; font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: #9A968C; margin-top: 8px; line-height: 1.4; }
.orn-mk-co__backedby { margin-top: 54px; border-top: 1px solid #2A3C56; padding-top: 44px; }
.orn-mk-co__backedby-head { max-width: 720px; }
.orn-mk-co__backedby-title { font-family: Anton, sans-serif; font-size: 30px; font-weight: 700; margin: 12px 0 0; color: #F3EFE6; }
.orn-mk-co__backedby-lede { font-size: 17px; color: #B9BDC4; margin: 18px 0 0; line-height: 1.55; }
.orn-mk-co__bullets { margin-top: 34px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.orn-mk-co__bullet { font-family: "IBM Plex Sans", sans-serif; font-size: 15px; color: #C9CDD3; line-height: 1.5; }

/* ── Book (closing CTA) ───────────────────────────────────────── */
.orn-mk-book { background: #0B1524; color: #F3EFE6; text-align: center; padding: 90px 40px 100px; }
.orn-mk-book__inner { max-width: 760px; margin: 0 auto; }
.orn-mk-book__eyebrow { font-family: "IBM Plex Mono", monospace; font-size: 14px; letter-spacing: 0.26em; text-transform: uppercase; color: var(--orn-navy); }
.orn-mk-book__title { font-family: Anton, sans-serif; font-size: 48px; font-weight: 700; text-align: center; line-height: 1.1; margin: 22px 0 0; color: #F3EFE6; }
.orn-mk-book__price { display: flex; justify-content: center; align-items: baseline; gap: 18px; margin-top: 32px; flex-wrap: wrap; }
.orn-mk-book__price-l { font-family: "IBM Plex Mono", monospace; font-size: 13px; letter-spacing: 0.20em; text-transform: uppercase; color: var(--orn-navy); }
.orn-mk-book__price-v { font-family: Anton, sans-serif; font-size: 58px; font-weight: 700; color: #F3EFE6; }
.orn-mk-book__price-star { color: var(--orn-navy); font-size: 32px; vertical-align: super; }
.orn-mk-book__meta { font-family: "IBM Plex Mono", monospace; font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; color: #9A968C; margin: 14px 0 0; }
.orn-mk-book__cta { margin-top: 34px; font-size: 19px; padding: 18px 34px; }
.orn-mk-book__wm { font-family: "IBM Plex Mono", monospace; font-size: 12px; letter-spacing: 0.30em; color: #9A968C; margin: 40px 0 0; }

/* ── Marketing footer ─────────────────────────────────────────── */
.orn-mf { background: #0B1524; border-top: 1px solid #2A3C56; color: #C9CDD3; }
.orn-mf__inner { max-width: 1280px; margin: 0 auto; padding: 30px 40px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 20px; }
.orn-mf__brandwrap { display: flex; align-items: center; gap: 14px; }
.orn-mf__brand { font-family: Anton, sans-serif; font-size: 20px; font-weight: 700; color: #F3EFE6; }
.orn-mf__brand-dot { color: #C18E45; }
.orn-mf__tag { font-family: "IBM Plex Mono", monospace; font-size: 16px; letter-spacing: 0.14em; color: #9A968C; }
.orn-mf__links { display: flex; gap: 24px; flex-wrap: wrap; }
.orn-mf__link { font-family: "IBM Plex Mono", monospace; font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: #C9CDD3; text-decoration: none; }
.orn-mf__link:hover, .orn-mf__link:focus { color: #F3EFE6; }

/* ── Responsive: below 900px ──────────────────────────────────── */
@media (max-width: 900px) {
    .orn-mh__inner { padding: 0 16px !important; height: 68px !important; }
    /* Ceiling only. A 10:1 lockup at 36px tall wants ~385px, more than the row
       has once the Login CTA and burger are placed, so the brand shrinks — and
       because the height is auto it scales down whole instead of squashing. */
    .orn-mh__brand-img { max-height: var(--orn-logo-h, 36px); }
    .orn-mh__links { display: none; }
    .orn-mh__burger { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; width: 44px; height: 44px; padding: 0; background: none; border: 0; cursor: pointer; }
    .orn-mh__link { font-size: 12px; }
    .orn-mh__brand-sub { display: none; }
    .orn-mh__cta { font-size: 16px !important; padding: 8px 16px !important; }
    .orn-mh__actions { gap: 8px; }

    /* Live-offers strip — stack on phones so eyebrow, scrolling chips and CTA each get a row. */
    .orn-mk-offers__inner { flex-direction: column; align-items: stretch; gap: 12px; padding: 14px 20px; }
    .orn-mk-offers__eyebrow { white-space: normal; }
    .orn-mk-offers__row { flex: 0 0 auto; gap: 8px; width: 100vw; max-width: 94vw; overflow-x: auto; }
    .orn-mk-offers__chip-copy { font-size: 13px; }
    .orn-mk-offers__cta { align-self: flex-start; }

    .orn-mk-hero__inner { grid-template-columns: 1fr; padding: 54px 20px 64px; gap: 30px; }
    .orn-mk-hero__title { font-size: 46px; }
    .orn-mk-hero__lede { font-size: 18px; }
    .orn-mk-hero__stats { gap: 20px; }
    .orn-mk-stat--divider { padding-left: 20px; }
    .orn-mk-hero__img { height: 320px; }

    .orn-mk-pillars { padding: 54px 20px; }
    .orn-mk-pillars__grid { grid-template-columns: 1fr; }
    .orn-mk-pillar { border-right: none; border-bottom: 1px solid #DED7C7; }
    .orn-mk-pillar--last { border-bottom: none; }
    .orn-mk-h2 { font-size: 36px; }

    .orn-mk-fleet__inner { padding: 54px 20px; }
    .orn-mk-fleet__grid { grid-template-columns: 1fr; gap: 30px; }
    .orn-mk-fleet__copy .orn-mk-h2 { font-size: 42px; }
    .orn-mk-fleet__lede { font-size: 17px; }
    .orn-mk-fleet__badge-copy { font-size: 22px; }
    .orn-mk-fleet__punch { font-size: 28px; }
    .orn-mk-fleet__price-title { font-size: 26px; }

    .orn-mk-style { padding: 54px 20px; }
    .orn-mk-style__grid { grid-template-columns: 1fr; gap: 30px; }
    .orn-mk-style__copy .orn-mk-h2 { font-size: 42px; }
    .orn-mk-style__img { height: 320px; }

    .orn-mk-why__inner { padding: 54px 20px; }
    .orn-mk-why__head .orn-mk-h2 { font-size: 36px; }
    .orn-mk-why__line { font-size: 22px; }

    .orn-mk-segs { padding: 54px 20px; }
    .orn-mk-segs__card { grid-template-columns: 1fr; }
    .orn-mk-segs__card-left { border-right: none; border-bottom: 1px solid #DED7C7; }
    .orn-mk-segs__card-amt { font-size: 42px; }

    .orn-mk-deps__head { padding: 0 20px; }
    .orn-mk-deps__grid { padding: 0 20px; grid-template-columns: 1fr; }

    .orn-mk-group { padding: 54px 20px; }
    .orn-mk-group__inner { grid-template-columns: 1fr; gap: 30px; }

    .orn-mk-co__inner { padding: 54px 20px; }
    .orn-mk-co__top { grid-template-columns: 1fr; gap: 30px; }
    .orn-mk-co__copy .orn-mk-h2 { font-size: 40px; }
    .orn-mk-co__bullets { grid-template-columns: 1fr; }

    .orn-mk-book { padding: 60px 20px 72px; }
    .orn-mk-book__title { font-size: 34px; }
    .orn-mk-book__price-v { font-size: 44px; }

    .orn-mf__inner { padding: 22px 20px; }
}

/* ─────────────────────────────────────────────────────────────
 * Partner (travel-agent) signup — /tours/orn-holidays-partner-signup
 * Two-pane layout: navy hero (left) + paper card with Login/Signup tabs (right).
 * ───────────────────────────────────────────────────────────── */
.orn-ps-page { background: #F3EFE6; min-height: 100vh; }
.orn-ps__main { padding: 48px 24px 80px; }
.orn-ps__grid { max-width: 1120px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; background: #FFFFFF; border: 1px solid #DED7C7; border-radius: 6px; overflow: hidden; min-height: 560px; }

/* Left navy hero pane */
.orn-ps__hero { background: #0E1A2B; color: #F3EFE6; padding: 56px 48px; display: flex; flex-direction: column; justify-content: center; }
.orn-ps__eyebrow { font-family: "IBM Plex Mono", monospace; font-size: 12px; letter-spacing: 0.28em; text-transform: uppercase; color: var(--orn-navy); font-weight: 600; }
.orn-ps__title { font-family: Anton, sans-serif; font-size: 44px; font-weight: 400; line-height: 1.05; color: #F3EFE6; margin: 20px 0 0; }
.orn-ps__lede { font-family: "IBM Plex Sans", sans-serif; font-size: 17px; line-height: 1.55; color: #B9BDC4; margin: 22px 0 0; max-width: 420px; }
.orn-ps__bullets { list-style: none; padding: 0; margin: 34px 0 0; display: flex; flex-direction: column; gap: 14px; }
.orn-ps__bullets li { font-family: "IBM Plex Sans", sans-serif; font-size: 15px; color: #C9CDD3; display: flex; align-items: flex-start; gap: 12px; line-height: 1.5; }
.orn-ps__check { color: var(--orn-navy); font-weight: 700; flex: 0 0 auto; }
.orn-ps__foot { margin-top: 40px; font-family: "IBM Plex Sans", sans-serif; font-size: 14px; color: #9A968C; }
.orn-ps__foot a { color: var(--orn-navy); text-decoration: none; font-weight: 600; }
.orn-ps__foot a:hover, .orn-ps__foot a:focus { text-decoration: underline; }

/* Right paper card */
.orn-ps__card { padding: 40px 44px; display: flex; flex-direction: column; }
.orn-ps__tabs { display: flex; gap: 0; border-bottom: 1px solid #DED7C7; margin-bottom: 28px; }
.orn-ps__tab { flex: 1; background: transparent; border: 0; padding: 12px 8px; font-family: "IBM Plex Mono", monospace; font-size: 13px; letter-spacing: 0.18em; text-transform: uppercase; color: #7C7566; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; font-weight: 600; }
.orn-ps__tab:hover { color: #0E1A2B; }
.orn-ps__tab--active { color: #0E1A2B; border-bottom-color: var(--orn-navy); }

.orn-ps__pane { display: flex; flex-direction: column; flex: 1; }
.orn-ps__pane[hidden] { display: none; }
.orn-ps__card-h { font-family: Anton, sans-serif; font-size: 24px; font-weight: 700; color: #0E1A2B; margin: 0; }
.orn-ps__card-lede { font-family: "IBM Plex Sans", sans-serif; font-size: 14px; color: #7C7566; margin: 8px 0 22px; }
.orn-ps__err { background: #FDEDEA; border: 1px solid #E4002B; color: #A5001F; padding: 10px 14px; border-radius: 4px; font-size: 14px; margin: 0 0 18px; }

/* Login include container — legacy login_register.jsp writes into this.
 * Field/button style overrides live inline in partner/signup.jsp so
 * the shared CSS doesn't touch legacy .decInp/.lgnButton classes. */
.orn-ps__login { padding: 4px 0 0; }

/* Signup form */
.orn-ps__form { display: flex; flex-direction: column; gap: 14px; margin: 0; }
.orn-ps__row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.orn-ps__field { display: flex; flex-direction: column; gap: 6px; margin-top: 15px; }
.orn-ps__label { font-family: "IBM Plex Mono", monospace; font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: #7C7566; font-weight: 600; }
.orn-ps__input { font-family: "IBM Plex Sans", sans-serif; font-size: 15px; color: #0E1A2B; background: #FFFFFF; border: 1px solid #DED7C7; padding: 12px 14px; border-radius: 4px; outline: none; }
.orn-ps__input:focus { border-color: #C18E45; box-shadow: 0 0 0 3px rgba(193, 142, 69, 0.15); }
.orn-ps__field-error { font-family: "IBM Plex Sans", sans-serif; font-size: 12px; color: #A5001F; margin-top: 4px; display: block; }
.orn-ps__submit { font-family: Anton, sans-serif; font-size: 16px; font-weight: 600; color: #fff; background: var(--orn-navy); border: 0; padding: 14px 24px; border-radius: 4px; cursor: pointer; margin-top: 8px; }
.orn-ps__submit:hover, .orn-ps__submit:focus { background: var(--orn-navy-2); color: #fff; }

.orn-ps__alt { margin-top: 22px; font-family: "IBM Plex Sans", sans-serif; font-size: 14px; color: #7C7566; }
.orn-ps__alt a { color: var(--orn-navy); text-decoration: none; }
.orn-ps__alt a:hover, .orn-ps__alt a:focus { text-decoration: underline; }

/* Responsive */
@media (max-width: 900px) {
    .orn-ps__main { padding: 24px 16px 60px; }
    .orn-ps__grid { grid-template-columns: 1fr; min-height: 0; }
    .orn-ps__hero { padding: 40px 28px; }
    .orn-ps__title { font-size: 32px; }
    .orn-ps__card { padding: 28px 24px; }
    .orn-ps__row { grid-template-columns: 1fr; }
}

.ui-button-sec { background: var(--orn-navy) !important; }

/* =============================================================
   Landing page — Europe Ka Naya Rasta (welcome.jsp, campaign deck)
   Scoped to body.orn-lp-page. Font: Anton + Archivo + Archivo Narrow.
   Palette: cream #F7F4EF, ink #141210, red var(--color-primary, #E4002B).
   ============================================================= */
.orn-lp-page { font-family: Archivo, sans-serif; color: #141210; background: #F7F4EF; margin: 0; }
html:has(body.orn-lp-page) { scroll-behavior: smooth; }
.orn-lp-page * { box-sizing: border-box; }
/* Anchor targets sit under the 104px sticky header — offset the scroll so
   the section heading isn't hidden behind the nav. */
.orn-lp-page #aapka, .orn-lp-page #naya, .orn-lp-page #maths, .orn-lp-page #departures, .orn-lp-page #join { scroll-margin-top: 120px; }
.orn-lp-page .orn-lp-sec a,
.orn-lp-page .orn-lp-hero a,
.orn-lp-page .orn-lp-band a { color: #222; text-decoration: none; }
.orn-lp-page .orn-lp-sec a:hover,
.orn-lp-page .orn-lp-hero a:hover,
.orn-lp-page .orn-lp-band a:hover { color: #000; }
/* Drawer / header links on the landing page must stay light — they render on
   dark chrome, not on the cream page body. */
.orn-lp-page .orn-mh__drawer-link,
.orn-lp-page .orn-mh__drawer-link:hover,
.orn-lp-page .orn-mh__drawer-link:focus { color: #fff; }
.orn-lp-page .orn-mh__drawer-cta,
.orn-lp-page .orn-mh__drawer-cta:hover,
.orn-lp-page .orn-mh__drawer-cta:focus { color: #fff !important; background: var(--color-primary, #E4002B) !important; }
.orn-lp-page ::selection { background: var(--color-primary, #E4002B); color: #fff; }

/* Marketing header chrome is now the shared base .orn-mh block above. */

/* Marketing footer — deck-styled black band with red accent + 4-col layout. */
.orn-mf { background: #141210; color: #fff; padding: 60px 48px 32px; font-family: Archivo, sans-serif; }
.orn-mf__inner { max-width: 1400px; margin: 0 auto; display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 48px; }

/* Brand column (logo + tagline + slogan + socials). */
.orn-mf__brand-col { max-width: 420px; display: flex; flex-direction: column; gap: 18px; }
.orn-mf__brand-img { width: 120px; max-width: 100%; height: auto; max-height: var(--orn-logo-h, none); object-fit: contain; object-position: left center; display: block; }
.orn-mf__tag { font-size: 16px; line-height: 1.5; color: #cfcac3; }
.orn-mf__slogan { font-family: Archivo, sans-serif; font-weight: 800; letter-spacing: 0.08em; font-size: 15px; color: var(--color-primary, #E4002B); }
.orn-mf__socials { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 4px; }
.orn-mf__social { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; background: #1c1a18; color: #fff !important; border-radius: 6px; }
.orn-mf__social:hover { background: #2a2724; color: #fff !important; }

/* Right-side link columns (Explore / Company / Follow). */
.orn-mf__cols { display: flex; gap: 56px; flex-wrap: wrap; }
.orn-mf__col { display: flex; flex-direction: column; gap: 6px; min-width: 140px; }
.orn-mf__col-hd { font-weight: 800; opacity: 0.5; font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 4px; }
.orn-mf__col-link { color: #fff !important; font-family: Archivo, sans-serif; font-weight: 500; font-size: 17px; text-decoration: none; }
.orn-mf__col-link:hover { color: var(--color-primary, #E4002B) !important; }

/* Base row (copyright + ORN.COM). */
/* Country / currency switcher (drop-in select above copyright). */
.orn-mf__region { max-width: 1400px; margin: 32px auto 0; display: flex; align-items: center; gap: 12px; color: rgba(255, 255, 255, 0.75); font-size: 14px; }
.orn-mf__region-label { font-family: 'Archivo Narrow', sans-serif; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; font-size: 12px; }
.orn-mf__region-select { background: #1c1a18; color: #fff; border: 1px solid #2a2724; padding: 8px 14px; font-family: Archivo, sans-serif; font-size: 14px; font-weight: 600; border-radius: 4px; cursor: pointer; outline: none; }
.orn-mf__region-select:hover, .orn-mf__region-select:focus { border-color: var(--color-primary, #E4002B); }

.orn-mf__base { max-width: 1400px; margin: 24px auto 0; padding-top: 24px; border-top: 1px solid #2a2724; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px; font-size: 15px; color: rgba(255, 255, 255, 0.6); }

@media (max-width: 900px) {
    .orn-mf { padding: 48px 24px 24px; }
    .orn-mf__inner { gap: 32px; }
    .orn-mf__cols { gap: 32px; }
}

/* Layout primitives used across the page. */
.orn-lp-wrap { width: 100%; overflow-x: hidden; }
.orn-lp-container { max-width: 1240px; margin: 0 auto; }
.orn-lp-container--wide { max-width: 1500px; margin: 0 auto; }

/* Section frames — background variants. */
.orn-lp-sec { padding: 90px 48px; }
.orn-lp-sec--cream { background: #F7F4EF; }
.orn-lp-sec--ink { background: #141210; color: #fff; }
.orn-lp-sec--noir { background: #0e0d0c; color: #fff; }
.orn-lp-sec--forest { background: #0f1c14; color: #eef3ee; }
.orn-lp-sec--red { background: #E4002B; color: #fff; }

/* Eyebrow: red uppercase label with 4px red rule. */
.orn-lp-eyebrow { display: flex; align-items: baseline; gap: 16px; margin-bottom: 8px; }
.orn-lp-eyebrow__rule { height: 4px; width: 60px; background: #E4002B; display: inline-block; }
.orn-lp-eyebrow__text { font-weight: 800; letter-spacing: 0.18em; font-size: 16px; color: #E4002B; }
.orn-lp-eyebrow--plain { font-weight: 800; letter-spacing: 0.18em; font-size: 16px; color: #E4002B; margin-bottom: 20px; display: block; }

/* Display heading — Anton, huge. */
.orn-lp-h2 { font-family: Anton, sans-serif; font-weight: 400; font-size: clamp(38px, 6vw, 72px); line-height: 0.95; margin: 0 0 12px; }
.orn-lp-h2--tight { margin-bottom: 56px; }
.orn-lp-h2--sm { font-size: clamp(34px, 5.5vw, 60px); }
.orn-lp-h2--light { color: #141210; }
.orn-lp-h2--dark { color: #fff; }
.orn-lp-h2 span.orn-lp-h2__accent { color: #E4002B; }

/* Body copy under a heading. */
.orn-lp-lede { font-size: 20px; color: #6f6a64; max-width: 900px; line-height: 1.5; margin-bottom: 44px; }
.orn-lp-lede--dark { color: #cfcac3; }
.orn-lp-lede--tight { margin-bottom: 14px; }

/* Grids. */
.orn-lp-grid-4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.orn-lp-grid-4--sm { gap: 16px; }
.orn-lp-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.orn-lp-grid-3--sm { gap: 18px; }
.orn-lp-grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }

/* Simple cream/white card used in the "How travel was re-engineered" + Naya-Rasta infra sections. */
.orn-lp-card { background: #fff; border-radius: 14px; padding: 32px 30px; box-shadow: 0 12px 30px rgba(20, 18, 16, 0.05); }
.orn-lp-card--flat { border-radius: 0; }
.orn-lp-card__num { font-family: Anton, sans-serif; color: #E4002B; font-size: 26px; margin-bottom: 16px; }
.orn-lp-card__title { font-size: 24px; font-weight: 800; line-height: 1.15; color: #141210; margin-bottom: 14px; }
.orn-lp-card__title--sm { font-size: 22px; margin-bottom: 10px; }
.orn-lp-card__body { font-size: 18px; line-height: 1.5; color: #6f6a64; }
.orn-lp-card__body--sm { font-size: 16px; line-height: 1.55; }

/* Three-Rastas chapter cards (Purana / Naya / Aapka). */
.orn-lp-chapter { padding: 36px 34px; display: flex; flex-direction: column; }
.orn-lp-chapter--purana { background: #fff; border-top: 6px solid #6f6a64; color: #141210; }
.orn-lp-chapter--naya { background: #0e0d0c; color: #fff; }
.orn-lp-chapter--aapka { background: #E4002B; color: #fff; }
.orn-lp-chapter__step { font-family: 'Archivo Narrow', sans-serif; font-weight: 700; letter-spacing: 0.22em; font-size: 14px; }
.orn-lp-chapter__step--purana { color: #8a857e; }
.orn-lp-chapter__step--naya { color: #E4002B; }
.orn-lp-chapter__step--aapka { opacity: 0.9; }
.orn-lp-chapter__hd { font-family: Anton, sans-serif; font-size: 44px; line-height: 1; margin-top: 8px; }
.orn-lp-chapter__hd--naya { color: #fff; }
.orn-lp-chapter__punch { font-family: Anton, sans-serif; font-size: 26px; line-height: 1.1; margin-top: 18px; color: #E4002B; }
.orn-lp-chapter__punch--aapka { color: #fff; }
.orn-lp-chapter__punch--aapka .invert { color: #141210; }
.orn-lp-chapter__body { font-size: 16px; line-height: 1.55; margin-top: 14px; }
.orn-lp-chapter__body--purana { color: #6f6a64; }
.orn-lp-chapter__body--naya { color: #cfcac3; }
.orn-lp-chapter__body--aapka { opacity: 0.95; }
.orn-lp-chapter__foot { margin-top: auto; padding-top: 20px; font-size: 16px; }
.orn-lp-chapter__foot--purana { border-top: 1.5px solid #eee5d8; color: #8a857e; font-style: italic; }
.orn-lp-chapter__foot--naya { border-top: 1.5px solid #2a2724; color: #cfcac3; font-style: italic; }
.orn-lp-chapter__foot--aapka { border-top: 1.5px solid rgba(255, 255, 255, 0.3); }
.orn-lp-chapter__foot--aapka a { color: #fff; font-family: Anton, sans-serif; font-size: 22px; }

/* Aapka Rasta segment picker (8 tiles). */
.orn-lp-grid-8 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.orn-lp-seg-tile { padding: 28px 26px; display: flex; flex-direction: column; min-height: 220px; border: 2px solid #eee5d8; background: #fff; color: #141210; transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.orn-lp-seg-tile:hover { transform: translateY(-4px); box-shadow: 0 24px 44px rgba(20, 18, 16, 0.14); border-color: #E4002B; }
.orn-lp-seg-tile--dark { background: #0e0d0c; color: #fff; border-color: #0e0d0c; }
.orn-lp-seg-tile--red { background: #E4002B; color: #fff; border-color: #E4002B; }
.orn-lp-seg-tile__num { font-family: Anton, sans-serif; color: #E4002B; font-size: 22px; }
.orn-lp-seg-tile--red .orn-lp-seg-tile__num { color: #fff; opacity: 0.85; }
.orn-lp-seg-tile__hd { font-family: Anton, sans-serif; font-size: 34px; line-height: 1; margin-top: 10px; }
.orn-lp-seg-tile--dark .orn-lp-seg-tile__hd, .orn-lp-seg-tile--red .orn-lp-seg-tile__hd { color: #fff; }
.orn-lp-seg-tile__body { font-size: 15px; color: #6f6a64; margin-top: 12px; line-height: 1.5; }
.orn-lp-seg-tile--dark .orn-lp-seg-tile__body { color: #cfcac3; }
.orn-lp-seg-tile--red .orn-lp-seg-tile__body { color: #fff; opacity: 0.95; }
.orn-lp-seg-tile__cta { margin-top: auto; padding-top: 14px; font-weight: 800; font-size: 13px; color: #E4002B; letter-spacing: 0.14em; }
.orn-lp-seg-tile--red .orn-lp-seg-tile__cta { color: #fff; }

/* Mobility Ladder cards (Coach / Van / Bespoke). */
.orn-lp-ladder { padding: 30px 32px; }
.orn-lp-ladder--coach { background: #fff; border-top: 6px solid #E4002B; color: #141210; }
.orn-lp-ladder--van { background: #0e0d0c; color: #fff; }
.orn-lp-ladder--mice { background: #E4002B; color: #fff; }
.orn-lp-ladder__hd { font-family: Anton, sans-serif; font-size: 34px; line-height: 1; }
.orn-lp-ladder--van .orn-lp-ladder__hd { color: #E4002B; }
.orn-lp-ladder__list { margin: 16px 0 0; padding-left: 20px; font-size: 16px; line-height: 1.65; }
.orn-lp-ladder--coach .orn-lp-ladder__list { color: #3a3631; }
.orn-lp-ladder--van .orn-lp-ladder__list { color: #cfcac3; }
.orn-lp-ladder--mice .orn-lp-ladder__list { opacity: 0.95; }
.orn-lp-ladder__tag { margin-top: 14px; padding-top: 12px; font-family: Anton, sans-serif; font-size: 19px; }
.orn-lp-ladder--coach .orn-lp-ladder__tag { border-top: 1.5px solid #eee5d8; color: #E4002B; }
.orn-lp-ladder--van .orn-lp-ladder__tag { border-top: 1.5px solid #2a2724; color: #E4002B; }
.orn-lp-ladder--mice .orn-lp-ladder__tag { border-top: 1.5px solid rgba(255, 255, 255, 0.3); }

/* Four ORN Pillars (Affordable / Accessible / Reliable / With you). */
.orn-lp-pillar-sec { position: relative; overflow: hidden; padding: 90px 48px; background: #0e0d0c; color: #fff; }
.orn-lp-pillar-sec__rail { position: absolute; top: 0; left: 0; bottom: 0; width: 8px; background: #E4002B; }
.orn-lp-pillar { padding: 32px 30px; display: flex; flex-direction: column; background: #1c1a18; }
.orn-lp-pillar--red { background: #E4002B; }
.orn-lp-pillar__num { font-family: Anton, sans-serif; color: #E4002B; font-size: 34px; line-height: 1; }
.orn-lp-pillar--red .orn-lp-pillar__num { color: #fff; opacity: 0.7; }
.orn-lp-pillar__hd { font-family: Anton, sans-serif; font-size: 30px; margin: 14px 0 12px; }
.orn-lp-pillar__body { font-size: 18px; line-height: 1.5; opacity: 0.82; }
.orn-lp-pillar--red .orn-lp-pillar__body { opacity: 1; }

/* Europe ka Maths compare rows. */
.orn-lp-maths { display: flex; gap: 64px; align-items: center; flex-wrap: wrap; }
.orn-lp-maths__col { flex: 1; min-width: 340px; }
.orn-lp-maths__stack { display: flex; flex-direction: column; gap: 16px; }
.orn-lp-maths__lede { font-size: 22px; line-height: 1.5; opacity: 0.85; max-width: 460px; }
.orn-lp-maths__row { padding: 26px 32px; display: flex; justify-content: space-between; align-items: center; }
.orn-lp-maths__row--old { background: #1a2b20; }
.orn-lp-maths__row--old .orn-lp-maths__label { font-size: 22px; font-weight: 600; opacity: 0.75; }
.orn-lp-maths__row--old .orn-lp-maths__price { font-family: Anton, sans-serif; font-size: 44px; text-decoration: line-through; opacity: 0.55; }
.orn-lp-maths__row--new { background: #E4002B; }
.orn-lp-maths__row--new .orn-lp-maths__label { font-size: 22px; font-weight: 700; }
.orn-lp-maths__row--new .orn-lp-maths__price { font-family: Anton, sans-serif; font-size: 52px; }
.orn-lp-maths__disc { font-size: 17px; opacity: 0.6; }

/* Giant lock-up section. */
.orn-lp-lockup { text-align: center; padding: clamp(72px, 10vw, 128px) 48px; background: #E4002B; color: #fff; overflow: hidden; }
.orn-lp-lockup--cream { background: #F7F4EF; color: #141210; }
.orn-lp-lockup__eyebrow { font-family: 'Archivo Narrow', sans-serif; font-weight: 700; letter-spacing: 0.26em; font-size: clamp(18px, 2.6vw, 28px); opacity: 0.92; margin-bottom: clamp(14px, 2vw, 26px); }
.orn-lp-lockup--cream .orn-lp-lockup__eyebrow { color: #E4002B; opacity: 1; }
.orn-lp-lockup__hd { font-family: Anton, sans-serif; font-size: clamp(60px, 13vw, 208px); line-height: 0.84; margin: 0; color: #fff; text-align: center; }
.orn-lp-lockup__hd-dark { color: #141210; }
.orn-lp-lockup__hd-red { color: #E4002B; }
.orn-lp-lockup__tag { font-size: clamp(20px, 2.2vw, 28px); font-weight: 700; margin-top: clamp(20px, 3vw, 36px); opacity: 0.95; }
.orn-lp-lockup__tagline { font-family: Anton, sans-serif; font-weight: 400; font-size: clamp(22px, 3vw, 42px); line-height: 1.15; margin-top: clamp(24px, 3vw, 40px); }
.orn-lp-lockup__tagline-dark { color: #141210; }
.orn-lp-lockup__tagline-red { color: #E4002B; margin-left: 8px; }
.orn-lp-lockup__body { font-size: clamp(16px, 1.4vw, 20px); font-weight: 500; line-height: 1.55; color: #6f6a64; max-width: 820px; margin: clamp(18px, 2vw, 28px) auto 0; }

/* Departures cards. */
.orn-lp-dep-head { display: flex; justify-content: space-between; align-items: flex-end; margin-bottom: 44px; flex-wrap: wrap; gap: 16px; }
.orn-lp-dep-head__meta { font-size: 20px; font-weight: 600; color: #6f6a64; max-width: 380px; }
.orn-lp-dep { background: #fff; border: 2px solid #141210; display: flex; flex-direction: column; }
.orn-lp-dep--featured { border-color: #E4002B; box-shadow: 0 24px 48px rgba(228, 0, 43, 0.14); }
.orn-lp-dep__media { position: relative; height: 190px; overflow: hidden; }
.orn-lp-dep__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.orn-lp-dep__scrim { position: absolute; inset: 0; background: linear-gradient(to top, rgba(20, 18, 16, 0.92), rgba(20, 18, 16, 0.05)); pointer-events: none; }
.orn-lp-dep__badge { position: absolute; top: 14px; right: 14px; background: #E4002B; color: #fff; font-weight: 800; font-size: 12px; letter-spacing: 0.1em; padding: 6px 12px; border-radius: 4px; }
.orn-lp-dep__cap { position: absolute; left: 24px; right: 24px; bottom: 16px; color: #fff; pointer-events: none; display: flex; justify-content: space-between; align-items: flex-end; }
.orn-lp-dep__cap-hd { font-family: Anton, sans-serif; font-size: 30px; }
.orn-lp-dep__cap-kind { font-weight: 700; font-size: 13px; opacity: 0.85; letter-spacing: 0.08em; }
.orn-lp-dep__body { padding: 26px 28px; flex: 1; display: flex; flex-direction: column; }
.orn-lp-dep__title { font-size: 22px; font-weight: 700; margin-bottom: 6px; }
.orn-lp-dep__meta { font-size: 16px; color: #6f6a64; margin-bottom: 16px; }
.orn-lp-dep__price { font-family: Anton, sans-serif; font-size: 44px; color: #E4002B; }
.orn-lp-dep__when { font-size: 16px; color: #6f6a64; margin-bottom: 20px; }
.orn-lp-dep__cta { margin-top: auto; text-align: center; font-family: Anton, sans-serif; font-size: 20px; padding: 12px; border: 2px solid #141210; color: #141210; }
.orn-lp-dep__cta--filled { background: #E4002B; color: #fff; border: 0; padding: 14px; }
.orn-lp-dep-fine { margin-top: 24px; font-size: 17px; color: #6f6a64; }

/* How-it-works steps. */
.orn-lp-step { background: #1c1a18; padding: 30px 28px; color: #fff; }
.orn-lp-step--red { background: #E4002B; }
.orn-lp-step__num { font-family: Anton, sans-serif; font-size: 40px; color: #E4002B; }
.orn-lp-step--red .orn-lp-step__num { color: #fff; }
.orn-lp-step__hd { font-family: Anton, sans-serif; font-size: 26px; margin: 10px 0; }
.orn-lp-step__body { font-size: 17px; line-height: 1.55; opacity: 0.8; }
.orn-lp-step--red .orn-lp-step__body { opacity: 1; }

/* Seen-everywhere tile grid. */
.orn-lp-seen { background: #0e0d0c; color: #fff; padding: 80px 48px; }
.orn-lp-seen__head { text-align: center; margin-bottom: 40px; }
.orn-lp-seen__eyebrow { font-family: 'Archivo Narrow', sans-serif; font-weight: 700; letter-spacing: 0.22em; font-size: 16px; opacity: 0.85; margin-bottom: 10px; }
.orn-lp-seen__hd { font-family: Anton, sans-serif; font-size: clamp(34px, 7vw, 64px); line-height: 0.95; margin: 0; color: #fff; }
.orn-lp-seen__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.orn-lp-seen__tile { padding: 22px 24px; min-height: 224px; display: flex; flex-direction: column; justify-content: space-between; }
.orn-lp-seen__tile--white { background: #fff; color: #141210; }
.orn-lp-seen__tile--black { background: #141210; border: 1px solid #2a2724; }
.orn-lp-seen__tile--outline { background: #141210; border: 2px solid #fff; }
.orn-lp-seen__hd-line { font-family: Anton, sans-serif; font-size: clamp(24px, 2vw, 34px); line-height: 0.98; }
.orn-lp-seen__foot { font-weight: 800; font-size: 15px; color: #E4002B; }

/* Join ORN CTA. */
.orn-lp-join { background: var(--color-primary, #E4002B); color: #fff; padding: clamp(80px, 10vw, 128px) 48px; position: relative; overflow: hidden; text-align: center; }
.orn-lp-join__ring-tr { position: absolute; top: -260px; right: -260px; width: 640px; height: 640px; border-radius: 50%; background: rgba(255, 255, 255, 0.06); pointer-events: none; }
.orn-lp-join__ring-bl { position: absolute; bottom: -320px; left: -200px; width: 520px; height: 520px; border-radius: 50%; background: rgba(255, 255, 255, 0.05); pointer-events: none; }
.orn-lp-join__inner { position: relative; z-index: 2; max-width: 1300px; margin: 0 auto; }
.orn-lp-join__eyebrow { font-weight: 800; letter-spacing: 0.3em; font-size: 15px; opacity: 0.95; margin-bottom: 24px; }
.orn-lp-join__hd { font-family: var(--orn-font-heading); font-weight: 400; font-size: clamp(40px, 6.4vw, 96px); line-height: 0.98; margin: 0 auto 32px; max-width: 1200px; color: #fff; text-align: center !important; }
.orn-lp-join__amount { font-family: Anton, sans-serif; font-weight: 400; font-size: clamp(80px, 16vw, 220px); line-height: 0.9; letter-spacing: -0.02em; color: #fff; text-align: center; white-space: nowrap; }
/* Points credit strings ("10,000 ORN Travel Rewards") are split server-side into
   a giant number (one line) + a smaller label BELOW it, so the number stays as
   impactful as a currency amount and the label never clips. Currency amounts
   render as the plain .orn-lp-join__amount above (no --stacked). */
.orn-lp-join__amount--stacked { display: flex; flex-direction: column; align-items: center; }
.orn-lp-join__amount-num { display: block; white-space: nowrap; }
.orn-lp-join__amount-lbl { display: block; font-size: clamp(22px, 4.5vw, 64px); line-height: 1.02; letter-spacing: 0; margin-top: 0.06em; white-space: nowrap; }
.orn-lp-join__lede { font-size: clamp(18px, 1.6vw, 22px); font-weight: 500; line-height: 1.55; max-width: 820px; margin: 26px auto 40px; opacity: 0.96; text-align: center; }
.orn-lp-join__cta { display: inline-block; background: #fff; color: var(--color-primary, #E4002B); font-family: Anton, sans-serif; font-size: 26px; padding: 20px 44px; letter-spacing: 0.06em; border-radius: var(--button-radius-primary); }
.orn-lp-join__disc { font-size: 14px; opacity: 0.82; margin-top: 26px; }

/* Hero. */
.orn-lp-hero { position: relative; overflow: hidden; background: #E4002B; color: #fff; min-height: 520px; }
.orn-lp-hero__bg { position: absolute; inset: 0; pointer-events: none; }
.orn-lp-hero__bg img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: right center; }
.orn-lp-hero__scrim { position: absolute; inset: 0; background: radial-gradient(ellipse at top left, rgba(10, 10, 10, 0.75) 0%, rgba(20, 20, 20, 0.4) 30%, rgba(30, 30, 30, 0) 60%), linear-gradient(to right, rgba(20, 20, 20, 0.85) 0%, rgba(25, 25, 25, 0.7) 22%, rgba(45, 45, 45, 0.4) 44%, rgba(70, 70, 70, 0.12) 62%, rgba(90, 90, 90, 0) 78%); pointer-events: none; z-index: 1; }
.orn-lp-hero__inner { position: relative; z-index: 2; padding: 72px var(--orn-gutter); max-width: var(--orn-container); margin-inline: auto; display: flex; flex-direction: column; justify-content: center; }
.orn-lp-hero__eyebrow { font-family: 'Archivo Narrow', sans-serif; font-weight: 700; letter-spacing: 0.28em; font-size: 18px; color: #fff; }
.orn-lp-hero__hd { font-family: Anton, sans-serif; font-weight: 400; font-size: clamp(64px, 8vw, 168px); line-height: 0.88; margin: 25px 0 0; color: #fff; letter-spacing: -0.005em; text-transform: uppercase; }
.orn-lp-hero__sub { margin-top: 36px; font-family: Anton, sans-serif; font-weight: 400; font-size: clamp(30px, 3.4vw, 54px); line-height: 1; color: #fff; letter-spacing: -0.01em; }
.orn-lp-hero__pillars { margin-top: 26px; font-family: Anton, sans-serif; font-size: clamp(22px, 2.2vw, 32px); letter-spacing: 0.01em; }
.orn-lp-hero__lede { margin-top: 22px; font-size: clamp(16px, 1.5vw, 20px); font-weight: 600; max-width: 640px; line-height: 1.55; }
.orn-lp-hero__ctas { margin-top: 10px; display: flex; gap: 14px; flex-wrap: wrap; }

/* ── THE ORN WAY: chaos → clean route diagram ─────────────────── */
.orn-lp-route { color: #fff; }
.orn-lp-route__sub { font-size: 22px; font-weight: 600; color: #6f6a64; margin-bottom: 28px; max-width: 900px; }
.orn-lp-route__svg { width: 100%; height: auto; display: block; }
.orn-lp-route__bands { display: grid; grid-template-columns: auto auto; gap: 16px; justify-content: start; margin-top: 20px; }
.orn-lp-route__band { padding: 16px 26px; font-family: Anton, sans-serif; font-size: clamp(20px, 3vw, 30px); color: #fff; }
.orn-lp-route__band--dark { background: #141210; }
.orn-lp-route__band--red { background: #E4002B; }
@keyframes ornLpRouteDraw { to { stroke-dashoffset: 0; } }
.orn-lp-route__red { animation: ornLpRouteDraw 1.8s ease-out 0.4s forwards; }

/* ── Mercedes Van full-bleed carousel ─────────────────────────── */
.orn-lp-van { position: relative; width: 100%; aspect-ratio: 1152 / 470; background: #0e0d0c; }
.orn-lp-van__slide { position: absolute; inset: 0; opacity: 0; transition: opacity 0.7s ease; }
.orn-lp-van__slide.is-active { opacity: 1; }
.orn-lp-van__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.orn-lp-van__scrim { position: absolute; inset: 0; background: linear-gradient(to right, rgba(14, 13, 12, 0.82) 0%, rgba(14, 13, 12, 0.35) 42%, rgba(14, 13, 12, 0) 68%); pointer-events: none; }
.orn-lp-van__copy { position: absolute; top: 0; bottom: 0; left: 0; padding: clamp(28px, 4vw, 64px); display: flex; flex-direction: column; justify-content: center; max-width: 640px; color: #fff; }
.orn-lp-van__eyebrow { font-family: 'Archivo Narrow', sans-serif; font-weight: 700; letter-spacing: 0.28em; font-size: clamp(11px, 1.05vw, 14px); color: #E4002B; margin-bottom: 14px; }
.orn-lp-van__hd { font-family: Anton, sans-serif; font-weight: 400; font-size: clamp(36px, 5vw, 68px); line-height: 0.95; margin: 0; letter-spacing: -0.01em; color: #fff; }
.orn-lp-van__hd-accent { color: #E4002B; }
.orn-lp-van__lede { margin-top: 14px; font-size: clamp(15px, 1.4vw, 19px); font-weight: 600; line-height: 1.5; opacity: 0.9; }
.orn-lp-van__loc { margin-top: 22px; font-family: 'Archivo Narrow', sans-serif; font-weight: 700; letter-spacing: 0.24em; font-size: 12px; opacity: 0.75; }
.orn-lp-van__nav { position: absolute; bottom: clamp(20px, 2.5vw, 36px); right: clamp(24px, 3vw, 60px); display: flex; gap: 10px; align-items: center; z-index: 5; }
.orn-lp-van__btn { width: 44px; height: 44px; border: 2px solid rgba(255, 255, 255, 0.65); background: transparent; color: #fff; font-family: Anton, sans-serif; font-size: 22px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.2s ease; }
.orn-lp-van__btn:hover { background: rgba(255, 255, 255, 0.1); border-color: #fff; }
.orn-lp-van__dots { position: absolute; bottom: clamp(28px, 3vw, 44px); left: clamp(28px, 4vw, 64px); display: flex; gap: 8px; align-items: center; z-index: 5; }
.orn-lp-van__dot { width: 16px; height: 5px; border: 0; padding: 0; background: rgba(255, 255, 255, 0.5); cursor: pointer; transition: all 0.35s ease; border-radius: 2px; }
.orn-lp-van__dot.is-active { width: 36px; background: #E4002B; }

/* Buttons — Anton uppercase, filled or outline. */
.orn-lp-btn { font-family: Archivo, sans-serif; font-size: 16px; letter-spacing: 0; padding: 10px 22px; display: inline-block; font-weight: 600; border-radius: var(--button-radius-primary); }
.orn-lp-btn--white { background: var(--color-primary, #E4002B); color: #fff; }
/* Beats the higher-specificity ".orn-lp-page .orn-lp-hero a { color: #222 }"
   link-reset rule so the button keeps the builder's primary color. */
.orn-lp-page .orn-lp-hero .orn-lp-btn--white { color: #fff; }
.orn-lp-btn--ghost { background: transparent; color: #fff !important; border: 2px solid #fff; padding: 18px 32px; }
.orn-lp-btn--dark  { background: var(--orn-text); color: #fff !important; text-decoration: none; border-radius: 4px; }
.orn-lp-btn--dark:hover { background: #000; }

/* Section-level centered CTA row — used under card grids for "View more" links. */
.orn-section__cta-row { display: flex; justify-content: center; margin-top: 28px; }

/* Responsive collapse — matches the deck's breakpoints. */
@media (max-width: 900px) {
    .orn-lp-sec { padding-left: 22px !important; padding-right: 22px !important; }
    .orn-lp-grid-4 { grid-template-columns: 1fr 1fr; }
    .orn-lp-grid-8 { grid-template-columns: 1fr 1fr; }
    .orn-lp-grid-3 { grid-template-columns: 1fr; }
    .orn-lp-hero__inner { padding: 60px 24px 80px; }
    .orn-lp-hero__bg img { object-position: bottom; }
    .orn-lp-seen__grid { grid-template-columns: 1fr 1fr; }
    .orn-lp-join__cta { font-size: 24px; padding: 16px 28px; }
    /* Giant lock-up ("GO THE / ORN WAY.") — base line-height 0.84 is so tight the
       two Anton lines vertically overlap on small screens. Loosen the leading. */
    body.orn-lp-page .orn-lp-lockup__hd { line-height: 0.95 !important; }
}
@media (max-width: 600px) {
    .orn-lp-grid-4 { grid-template-columns: 1fr; }
    .orn-lp-grid-8 { grid-template-columns: 1fr; }
    .orn-lp-seen__grid { grid-template-columns: 1fr; }
    /* Headings ran oversized with too-tight leading on phones — Anton is a
       condensed display face, so 38-40px section titles dominated the 390px
       viewport and stacked lines nearly touched (line-height 0.95). Cap the
       size and loosen the leading a touch. !important is needed because some
       section H2s carry inline clamp() font-sizes that outrank the stylesheet. */
    body.orn-lp-page .orn-lp-hero__hd { line-height: 0.94 !important; text-wrap: balance; }
    /* Cap the pillars + lede width so lines wrap at a natural break instead
       of stranding "and Get" alone at the end of line 1. text-wrap:balance
       lets supporting browsers even out the two lines automatically. */
    body.orn-lp-page .orn-lp-hero__pillars { max-width: 25ch; text-wrap: balance; }
    body.orn-lp-page .orn-lp-hero__lede { max-width: 28ch; }
    body.orn-lp-page .orn-lp-h2 { font-size: 30px !important; line-height: 1.06 !important; }
    body.orn-lp-page .orn-lp-h2--sm { font-size: 27px !important; }

    /* ── Mobile design refinement pass ──────────────────────────────
       Tighten the vertical rhythm and body type so the page reads as a
       considered phone layout rather than a shrunk desktop one. */
    /* Sections used a flat 90px top/bottom — far too airy on a phone.
       Pull them together (beats inline padding overrides via !important). */
    body.orn-lp-page .orn-lp-sec,
    body.orn-lp-page .orn-lp-pillar-sec { padding-top: 54px !important; padding-bottom: 54px !important; }
    body.orn-lp-page .orn-lp-lockup { padding-top: 60px !important; padding-bottom: 60px !important; }
    /* Eyebrow: smaller + tighter tracking so it stops wrapping awkwardly. */
    body.orn-lp-page .orn-lp-eyebrow__text,
    body.orn-lp-page .orn-lp-eyebrow--plain { font-size: 13px !important; letter-spacing: 0.14em !important; }
    body.orn-lp-page .orn-lp-eyebrow { margin-bottom: 14px !important; }
    /* Lede/body: 20px light-grey read washed out — size down + darken for
       crisp contrast on the cream, and tighten the space beneath. */
    body.orn-lp-page .orn-lp-lede { font-size: 17px !important; line-height: 1.55 !important; color: #55514b !important; margin-bottom: 26px !important; }
    body.orn-lp-page .orn-lp-lede--dark { color: #d6d2ca !important; }
    /* Numbered cards: trim padding + type so they don't feel oversized. */
    body.orn-lp-page .orn-lp-card { padding: 24px 22px !important; }
    body.orn-lp-page .orn-lp-card__num { font-size: 22px !important; margin-bottom: 8px !important; }
    body.orn-lp-page .orn-lp-card__title { font-size: 20px !important; margin-bottom: 8px !important; }
    body.orn-lp-page .orn-lp-card__body { font-size: 16px !important; line-height: 1.5 !important; }
    body.orn-lp-page .orn-lp-pillar { padding: 24px 22px !important; }
    body.orn-lp-page .orn-lp-pillar__body { font-size: 16px !important; }
    /* "Seen everywhere" heading overlapped (lh 0.95); billboards too empty. */
    body.orn-lp-page .orn-lp-seen__hd { line-height: 1.05 !important; }
    body.orn-lp-page .orn-lp-seen__tile { min-height: 150px !important; padding: 20px 20px !important; }
    body.orn-lp-page .orn-lp-join { padding-left: 20px !important; padding-right: 20px !important; }
    body.orn-lp-page .orn-lp-join__amount { font-size: clamp(44px, 13vw, 80px) !important; }
    body.orn-lp-page .orn-lp-join__amount-lbl { font-size: clamp(16px, 5.5vw, 30px) !important; }
}

/* =============================================================
   Aapka Rasta segment landing (aapka_rasta.jsp, campaign deck)
   Scoped to body.orn-ar-page. Font: Anton + Archivo + Archivo Narrow.
   ============================================================= */
.orn-ar-page { font-family: Archivo, sans-serif; color: #141210; background: #F7F4EF; margin: 0; }
.orn-ar-page * { box-sizing: border-box; }
.orn-ar-page a { color: #E4002B; text-decoration: none; }
.orn-ar-page a:hover { color: #B10021; }
.orn-ar-page ::selection { background: #E4002B; color: #fff; }

/* Marketing header chrome is now the shared base .orn-mh block above. */

/* Full-bleed AAPKA RASTA hero — background image + red scrim + Anton headline
   + pill nav to segments (deck refresh, Jul 2026). */
.orn-ar-hero { position: relative; background: #E4002B; color: #fff; overflow: hidden; min-height: clamp(640px, 68vw, 900px); display: flex; align-items: center; }
.orn-ar-hero__bg { position: absolute; inset: 0; pointer-events: none; }
.orn-ar-hero__bg img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 60% 50%; }
.orn-ar-hero__scrim { position: absolute; inset: 0; background: linear-gradient(to right, rgba(228, 0, 43, 0.96) 0%, rgba(228, 0, 43, 0.92) 32%, rgba(228, 0, 43, 0.6) 52%, rgba(228, 0, 43, 0.15) 74%, rgba(228, 0, 43, 0) 100%); pointer-events: none; }
.orn-ar-hero__vignette { position: absolute; inset: 0; background: radial-gradient(70% 90% at 100% 100%, rgba(20, 18, 16, 0.28), rgba(228, 0, 43, 0) 60%); pointer-events: none; }
.orn-ar-hero__inner { position: relative; z-index: 2; padding: clamp(88px, 10vw, 144px) clamp(28px, 5vw, 88px) clamp(80px, 9vw, 120px); max-width: 1400px; margin: 0 auto; width: 100%; }
.orn-ar-hero__eyerule { display: flex; align-items: center; gap: 14px; }
.orn-ar-hero__eyerule-line { height: 3px; width: 60px; background: #141210; display: inline-block; }
.orn-ar-hero__eyerule-text { font-family: 'Archivo Narrow', sans-serif; font-weight: 700; letter-spacing: 0.32em; font-size: clamp(13px, 1.2vw, 16px); color: #141210; }
.orn-ar-hero__hd { font-family: Anton, sans-serif; font-weight: 400; font-size: clamp(88px, 14vw, 220px); line-height: 0.86; margin: 22px 0 0; letter-spacing: -0.01em; color: #fff; }
.orn-ar-hero__hd span { color: #141210; }
.orn-ar-hero__sub { margin-top: 34px; font-family: Anton, sans-serif; font-size: clamp(28px, 3.4vw, 52px); line-height: 1.05; max-width: 1100px; color: #fff; }
.orn-ar-hero__sub span { color: #141210; }
.orn-ar-hero__lede { margin-top: 22px; font-size: clamp(17px, 1.4vw, 20px); font-weight: 600; line-height: 1.55; max-width: 720px; opacity: 0.96; color: #fff; }
.orn-ar-hero__pills { margin-top: 36px; display: flex; flex-wrap: wrap; gap: 8px; max-width: 900px; }
.orn-ar-hero__pill { font-family: 'Archivo Narrow', sans-serif; font-weight: 700; letter-spacing: 0.16em; font-size: 13px; padding: 9px 18px; background: rgba(20, 18, 16, 0.4); border: 1px solid rgba(20, 18, 16, 0.7); color: #fff !important; text-decoration: none; }
.orn-ar-hero__pill:hover { background: #141210; border-color: #141210; }

/* Segment card grid. */
.orn-ar-seg { padding: 80px clamp(28px, 5vw, 96px) 90px; background: #F7F4EF; }
.orn-ar-seg:nth-of-type(odd) { background: #EFECE6; }
.orn-ar-seg__inner { max-width: 1240px; margin: 0 auto; }

.orn-ar-seg-hero { position: relative; padding: 56px clamp(28px, 4vw, 72px) 52px; color: #fff; overflow: hidden; background: #141210; border-radius: 8px; border-left: 8px solid #E4002B; box-shadow: 0 24px 60px -30px rgba(20, 18, 16, 0.35); }
.orn-ar-seg-hero::before { content: ""; position: absolute; top: 0; right: 0; bottom: 0; width: 52%; background: radial-gradient(120% 140% at 100% 0%, rgba(228, 0, 43, 0.35) 0%, rgba(228, 0, 43, 0.08) 45%, rgba(20, 18, 16, 0) 72%); pointer-events: none; }
.orn-ar-seg-hero > * { position: relative; z-index: 2; }
.orn-ar-seg-hero__cap { font-family: 'Archivo Narrow', sans-serif; font-weight: 700; letter-spacing: 0.22em; font-size: 14px; color: #E4002B; }
.orn-ar-seg-hero__hd { font-family: Anton, sans-serif; font-weight: 400; font-size: clamp(46px, 6.5vw, 84px); line-height: 0.96; margin: 8px 0 12px; max-width: 960px; color: #fff; }
.orn-ar-seg-hero__hd span { opacity: 0.9; }
.orn-ar-seg-hero__lede { font-size: 20px; font-weight: 600; opacity: 0.95; }

.orn-ar-three { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 24px; }
.orn-ar-card { padding: 32px 30px; display: flex; flex-direction: column; min-height: 340px; }
.orn-ar-card__cap { font-family: 'Archivo Narrow', sans-serif; font-weight: 700; letter-spacing: 0.22em; font-size: 12px; }
.orn-ar-card__h { font-family: Anton, sans-serif; font-size: 36px; line-height: 1; margin-top: 6px; }
.orn-ar-card__quip { font-family: Anton, sans-serif; font-size: 24px; line-height: 1.1; margin-top: 16px; }
.orn-ar-card__body { font-size: 15px; line-height: 1.6; margin: 12px 0 0; }
.orn-ar-card__close { margin-top: auto; padding-top: 16px; font-size: 14px; font-style: italic; border-top: 1.5px solid rgba(0, 0, 0, 0.08); }

.orn-ar-card--old { background: #fff; border-top: 6px solid #6f6a64; }
.orn-ar-card--old .orn-ar-card__cap { color: #8a857e; }
.orn-ar-card--old .orn-ar-card__h { color: #141210; }
.orn-ar-card--old .orn-ar-card__quip { color: #E4002B; }
.orn-ar-card--old .orn-ar-card__body { color: #3a3631; }
.orn-ar-card--old .orn-ar-card__close { color: #8a857e; border-top-color: #eee5d8; }

.orn-ar-card--new { background: #0e0d0c; color: #fff; }
.orn-ar-card--new .orn-ar-card__cap { color: #E4002B; }
.orn-ar-card--new .orn-ar-card__h { color: #fff; }
.orn-ar-card--new .orn-ar-card__quip { color: #E4002B; }
.orn-ar-card--new .orn-ar-card__body { color: #cfcac3; }
.orn-ar-card--new .orn-ar-card__close { color: #cfcac3; border-top-color: #2a2724; }

.orn-ar-card--aap { background: #E4002B; color: #fff; }
.orn-ar-card--aap .orn-ar-card__cap { opacity: 0.9; }
.orn-ar-card--aap .orn-ar-card__h { color: #fff; }
.orn-ar-card--aap .orn-ar-card__quip { color: #141210; }
.orn-ar-card--aap .orn-ar-card__body { opacity: 0.95; }
.orn-ar-card--aap .orn-ar-card__close { border-top-color: rgba(255, 255, 255, 0.3); color: #fff; font-style: normal; font-family: Anton, sans-serif; font-size: 20px; }
.orn-ar-card--aap a.orn-ar-card__close { color: #fff !important; }

.orn-ar-proof { margin-top: 22px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.orn-ar-proof__item { background: #fff; padding: 12px 16px; font-family: 'Archivo Narrow', sans-serif; font-weight: 700; letter-spacing: 0.14em; font-size: 12px; color: #141210; text-transform: uppercase; border-left: 3px solid #E4002B; }

/* Bottom CTA (red). */
.orn-ar-cta { background: #E4002B; color: #fff; padding: clamp(80px, 10vw, 128px) 48px; text-align: center; }
.orn-ar-cta__inner { max-width: 1300px; margin: 0 auto; }
.orn-ar-cta__eyebrow { font-weight: 800; letter-spacing: 0.28em; font-size: 15px; opacity: 0.95; margin-bottom: 20px; }
.orn-ar-cta__hd { font-family: Anton, sans-serif; font-weight: 400; font-size: clamp(48px, 7vw, 110px); line-height: 0.96; margin: 0 auto 32px; text-align: center; color: #fff; }
.orn-ar-cta__hd span { color: #141210; }
.orn-ar-cta__buttons { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
.orn-ar-cta__btn { font-family: Anton, sans-serif; font-size: 22px; padding: 16px 32px; display: inline-block; }
.orn-ar-cta__btn--white { background: #fff; color: #E4002B !important; }
.orn-ar-cta__btn--ghost { border: 2px solid #fff; color: #fff !important; padding: 14px 30px; }

/* Responsive. */
@media (max-width: 900px) {
    .orn-ar-hero { min-height: 560px; }
    .orn-ar-hero__inner { padding: 72px 20px 60px; }
    .orn-ar-hero__hd { font-size: clamp(64px, 16vw, 120px); }
    .orn-ar-hero__sub { font-size: clamp(22px, 4.6vw, 36px); }
    .orn-ar-three { grid-template-columns: 1fr; }
    .orn-ar-proof { grid-template-columns: 1fr 1fr; }
    .orn-ar-seg { padding: 48px 20px 60px; }
    .orn-ar-seg-hero { padding: 40px 24px; }
}

/* =============================================================
   Welcome (2026 refresh) — scoped to .orn-mk-2026 body class
   ============================================================= */
.orn-mk-2026 {
    --mk2-serif: "Cormorant Garamond", "Playfair Display", Georgia, serif;
    --mk2-sans:  Archivo, sans-serif;
    --mk2-ink:   #0a0a0a;
    --mk2-ink-2: rgb(58, 58, 58);
    --mk2-mute:  rgb(154, 154, 154);
    --mk2-red:   rgb(215, 25, 32);
    --mk2-cream: rgb(244, 243, 239);
    --mk2-bg:    #fff;
    --mk2-dark:  rgb(7, 7, 7);
}

/* Font stack — display serif, body sans */
.orn-mk-2026 body,
.orn-mk-2026,
.orn-mk-2026 p,
.orn-mk-2026 li,
.orn-mk-2026 span,
.orn-mk-2026 div,
.orn-mk-2026 a,
.orn-mk-2026 button {
    font-family: var(--mk2-sans);
}

.orn-mk-2026 .orn-mk-h2 {
    font-family: var(--mk2-serif);
    font-weight: 600;
    letter-spacing: -0.015em;
}

/* Buttons — Inter Bold, per design */
.orn-mk-2026 .orn-mk-btn,
.orn-mk-2026 .orn-mk-btn--gold,
.orn-mk-2026 .orn-mk-btn--ghost {
    font-family: var(--mk2-sans);
    font-weight: 700;
    letter-spacing: 0;
}

/* Header restyle — Inter for nav + logo (Quinoa fallback: Inter Bold) */
/* .orn-mk-2026 header font-family overrides removed — inherit shared chrome. */

/* Shared shell width */
.orn-mk2-shell {
    width: min(100% - 48px, 1024px);
    margin: 0 auto;
}

/* --- Section 2: Europe was never difficult -------------------- */
.orn-mk2-frag {
    padding: clamp(80px, 12vw, 150px) 0;
    background: var(--mk2-bg);
}
.orn-mk2-frag__title {
    font-family: var(--mk2-serif);
    font-size: clamp(42px, 6vw, 88px);
    line-height: 1.02;
    letter-spacing: -0.06em;
    margin: 0;
    max-width: 1100px;
    font-weight: 700;
    color: var(--mk2-ink);
}
.orn-mk2-frag__title-mute { color: var(--mk2-mute); }

/* --- Section 3: Now, one journey ----------------------------- */
.orn-mk2-nowone {
    background: var(--mk2-dark);
    color: #fff;
    padding: clamp(84px, 11vw, 60px) 0;
}
.orn-mk2-nowone__title {
    font-family: var(--mk2-sans);
    font-size: clamp(48px, 5vw, 104px);
    letter-spacing: -0.05em;
    line-height: 0.98;
    margin: 0 0 60px;
    font-weight: 800;
    color: #fff;
}
.orn-mk2-nowone__rows {
    border-top: 1px solid rgba(255, 255, 255, 0.18);
}
.orn-mk2-nowone__row {
    font-family: var(--mk2-sans);
    font-size: clamp(28px, 3vw, 60px);
    font-weight: 700;
    letter-spacing: -0.02em;
    padding: 12px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.14);
    display: flex;
    justify-content: space-between;
    align-items: center;
    color: #fff;
}
.orn-mk2-nowone__row small {
    font-family: var(--mk2-sans);
    font-size: 12px;
    letter-spacing: 0.18em;
    color: rgb(119, 119, 119);
    font-weight: 600;
}

/* --- Section 5: Van split ------------------------------------ */
.orn-mk2-van {
    padding: clamp(84px, 11vw, 140px) 0;
    background: var(--mk2-bg);
}
.orn-mk2-van__grid {
    display: grid;
    grid-template-columns: 1.05fr 0.95fr;
    gap: 72px;
    align-items: center;
}
.orn-mk2-van__title {
    font-family: var(--mk2-sans);
    font-size: clamp(46px, 7vw, 90px);
    line-height: 0.98;
    letter-spacing: -0.02em;
    margin: 0 0 28px;
    font-weight: 700;
    color: var(--mk2-ink);
}
.orn-mk2-van__lede {
    font-size: 22px;
    line-height: 1.45;
    color: rgb(85, 85, 85);
    max-width: 560px;
    margin: 0;
    font-family: var(--mk2-sans);
    font-weight: 400;
}
.orn-mk2-van__img {
    border-radius: 28px;
    overflow: hidden;
    background: rgb(238, 238, 238) center/cover no-repeat;
    min-height: min(60vh, 540px);
}
@media (max-width: 820px) {
    .orn-mk2-van__grid { grid-template-columns: 1fr; gap: 34px; }
}

/* --- Section 7: SAME PRICE ----------------------------------- */
.orn-mk2-same {
    padding: clamp(90px, 12vw, 150px) 0;
    background: rgb(11, 11, 11);
    color: #fff;
    text-align: center;
}
.orn-mk2-same__headline {
    font-family: var(--mk2-sans);
    font-size: clamp(72px, 12vw, 180px);
    letter-spacing: -0.05em;
    line-height: 0.9;
    margin: 0;
    font-weight: 700;
    color: #fff;
    text-transform: uppercase;
    text-align: center;
}
.orn-mk2-same__sub {
    font-family: var(--mk2-sans);
    font-size: clamp(22px, 3vw, 42px);
    margin: 42px 0 10px;
    color: rgb(238, 238, 238);
    letter-spacing: -0.015em;
    font-weight: 500;
}
.orn-mk2-same__meta {
    font-family: var(--mk2-sans);
    font-size: 18px;
    color: rgb(170, 170, 170);
    margin-bottom: 60px;
}
.orn-mk2-same__stage {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    max-width: 1250px;
    margin: 0 auto;
}
.orn-mk2-same__card {
    position: relative;
    border-radius: 24px;
    overflow: hidden;
    min-height: 420px;
    background: rgb(21, 21, 21);
}
.orn-mk2-same__card img {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
}
.orn-mk2-same__pill {
    position: absolute;
    left: 24px; bottom: 22px;
    background: rgba(0, 0, 0, 0.55);
    backdrop-filter: blur(10px);
    padding: 12px 18px;
    border-radius: 999px;
    font-family: var(--mk2-sans);
    font-size: 14px;
    font-weight: 500;
    color: #fff;
    white-space: nowrap;
}
@media (max-width: 820px) {
    .orn-mk2-same__stage { grid-template-columns: 1fr; }
}

/* --- Section 9: Included list -------------------------------- */
.orn-mk2-incl {
    padding: clamp(84px, 11vw, 140px) 0;
    background: var(--mk2-bg);
}
.orn-mk2-incl__title {
    font-family: var(--mk2-serif);
    font-size: clamp(50px, 7vw, 104px);
    line-height: 0.98;
    letter-spacing: -0.03em;
    margin: 0 0 64px;
    max-width: 1000px;
    font-weight: 600;
    color: var(--mk2-ink);
}
.orn-mk2-incl__grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    border-top: 1px solid rgba(10, 10, 10, 0.12);
}
.orn-mk2-incl__cell {
    font-family: var(--mk2-serif);
    font-size: clamp(24px, 3vw, 44px);
    padding: 26px 0;
    border-bottom: 1px solid rgba(10, 10, 10, 0.12);
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--mk2-ink);
}
.orn-mk2-incl__cell:nth-child(2n) { padding-left: 28px; }
@media (max-width: 820px) {
    .orn-mk2-incl__grid { grid-template-columns: 1fr; }
    .orn-mk2-incl__cell:nth-child(2n) { padding-left: 0; }
}

/* --- Section 10: Choose your Europe -------------------------- */
.orn-mk2-journeys {
    padding: clamp(84px, 11vw, 130px) 0;
    background: rgb(244, 244, 241);
}
.orn-mk2-journeys__title {
    font-family: var(--mk2-sans);
    font-size: clamp(48px, 5vw, 96px);
    letter-spacing: -0.05em;
    margin: 0 0 50px;
    font-weight: 800;
    color: var(--mk2-ink);
}
.orn-mk2-journeys__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
}
@media (max-width: 900px) {
    .orn-mk2-journeys__grid { grid-template-columns: 1fr; }
}
.orn-mk2-journey {
    position: relative;
    display: block;
    min-height: 440px;
    border-radius: 24px;
    overflow: hidden;
    text-decoration: none;
    color: #fff;
}
.orn-mk2-journey img {
    position: absolute;
    inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
}
.orn-mk2-journey__scrim {
    position: absolute;
    inset: 0;
    background: linear-gradient(rgba(0,0,0,0.62) 0%, rgba(0,0,0,0.12) 52%, rgba(0,0,0,0.35) 100%);
}
.orn-mk2-journey__body {
    position: relative;
    z-index: 2;
    padding: 28px;
    color: #fff;
}
.orn-mk2-journey__num {
    font-family: var(--mk2-sans);
    font-size: 13px;
    letter-spacing: 0.16em;
    color: rgba(255, 255, 255, 0.72);
    font-weight: 600;
}
.orn-mk2-journey__title {
    font-family: var(--mk2-sans);
    font-size: 34px;
    line-height: 1.05;
    letter-spacing: -0.02em;
    margin: 14px 0 12px;
    font-weight: 700;
    color: #fff;
}
.orn-mk2-journey__lede {
    font-family: var(--mk2-sans);
    font-size: 16px;
    line-height: 1.5;
    color: rgba(255, 255, 255, 0.9);
    margin: 0;
    max-width: 290px;
    font-weight: 400;
}
.orn-mk2-journey__cta {
    display: inline-block;
    margin-top: 20px;
    font-family: var(--mk2-sans);
    font-weight: 600;
    color: #fff;
}

/* --- Section 12 supplement: Backer cards --------------------- */
.orn-mk2-backers {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-top: 38px;
    margin-bottom: 36px;
}
@media (max-width: 820px) {
    .orn-mk2-backers { grid-template-columns: 1fr; }
}
.orn-mk2-backer {
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 18px;
    padding: 26px 28px;
    display: flex;
    gap: 18px;
    align-items: flex-start;
}
.orn-mk2-backer__avatar {
    flex-shrink: 0;
    width: 52px; height: 52px;
    border-radius: 50%;
    background: #fff;
    color: var(--mk2-ink);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 17px;
    letter-spacing: 0.02em;
}
.orn-mk2-backer__name {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 17px;
    color: #fff;
}
.orn-mk2-backer__org {
    font-family: var(--mk2-sans);
    font-size: 14px;
    color: var(--mk2-red);
    font-weight: 600;
    margin-top: 3px;
}
.orn-mk2-backer__role {
    font-family: var(--mk2-sans);
    font-size: 13.5px;
    color: rgba(255, 255, 255, 0.68);
    line-height: 1.45;
    margin-top: 6px;
}

/* --- Section 13: Join ORN CTA -------------------------------- */
.orn-mk2-join {
    padding: clamp(100px, 13vw, 160px) 0;
    background: var(--mk2-red);
    color: #fff;
}
.orn-mk2-join__inner { text-align: center; max-width: 900px; }
.orn-mk2-join__eyebrow {
    display: block;
    color: #fff;
    font-family: var(--mk2-sans);
    font-weight: 700;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    font-size: 13px;
    opacity: 0.95;
    margin-bottom: 28px;
}
.orn-mk2-join__title {
    font-family: var(--mk2-sans);
    font-size: clamp(40px, 4vw, 68px);
    line-height: 1.08;
    letter-spacing: -0.02em;
    margin: 0;
    font-weight: 800;
    color: #fff;
    text-align: center;
}
.orn-mk2-join__amount {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: clamp(80px, 11vw, 180px);
    line-height: 1;
    letter-spacing: -0.05em;
    color: #fff;
    margin: 34px 0 34px;
}
.orn-mk2-join__lede {
    font-family: var(--mk2-sans);
    font-size: 17px;
    line-height: 1.55;
    max-width: 560px;
    color: rgba(255, 255, 255, 0.94);
    margin: 0 auto;
    font-weight: 400;
}
.orn-mk2-join__cta {
    display: inline-flex;
    align-items: center;
    background: #fff;
    color: var(--mk2-red);
    padding: 16px 32px;
    border-radius: 999px;
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 15px;
    margin-top: 40px;
    text-decoration: none;
    white-space: nowrap;
    letter-spacing: 0;
}
.orn-mk2-join__cta:hover {
    background: rgb(248, 248, 248);
    color: var(--mk2-red);
}
.orn-mk2-join__fine {
    font-family: var(--mk2-sans);
    font-size: 11.5px;
    line-height: 1.5;
    color: rgba(255, 255, 255, 0.72);
    margin: 32px auto 0;
    max-width: 640px;
    letter-spacing: 0.02em;
}

/* =============================================================
   Hero + Header — 2026 mockup override (Inter sans, warm neutral bg)
   ============================================================= */

/* Header overrides intentionally removed — .orn-mk-2026 pages now inherit
   the shared deck-styled black chrome from the base .orn-mh rules. */

/* --- Hero: warm neutral, big Inter sans headline, image card w/ chip + info card --- */
.orn-mk-2026 .orn-mk-hero {
    background: linear-gradient(135deg, rgb(248, 248, 248) 0%, rgb(224, 224, 224) 100%) !important;
    color: var(--mk2-ink);
    padding: 20px 0 90px;
    overflow: visible;
}
.orn-mk-2026 .orn-mk-hero__inner {
    max-width: 1360px;
    padding: 40px 0;
    grid-template-columns: 1fr 1.05fr;
    gap: 72px;
    align-items: center;
}
.orn-mk-2026 .orn-mk-hero__copy { max-width: 620px; }
.orn-mk-2026 .orn-mk-hero__eyebrow {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--mk2-red);
    margin-bottom: 26px;
    display: block;
}
.orn-mk-2026 .orn-mk-hero__title,
.orn-mk-2026 .orn-mk-hero__title-hi {
    font-family: var(--mk2-sans) !important;
    font-weight: 800;
    color: #0a0a0a;
    font-size: clamp(56px, 6vw, 116px);
    line-height: 0.94;
    letter-spacing: -0.045em;
    margin: 0;
}
.orn-mk-2026 .orn-mk-hero__title-hi {
    display: block;
    font-family: Georgia !important;
    font-style: italic;
    font-weight: 400;
    font-size: 100px;
    color: var(--mk2-red);
    letter-spacing: -0.02em;
}
.orn-mk-2026 .orn-mk-hero__lede {
    font-family: var(--mk2-sans);
    color: rgb(58, 58, 58);
    font-size: 16px;
    line-height: 1.55;
    max-width: 500px;
    margin: 18px 0 0;
    font-weight: 400;
}
.orn-mk-2026 .orn-mk-hero__lede--big {
    font-size: 22px;
    line-height: 1.3;
    color: #0a0a0a;
    font-weight: 500;
    margin-top: 34px;
}
.orn-mk-2026 .orn-mk-hero__lede-strong {
    font-weight: 700;
    color: #0a0a0a;
}
.orn-mk-2026 .orn-mk-hero__ctas {
    display: flex;
    gap: 14px;
    margin-top: 42px;
    flex-wrap: wrap;
}
.orn-mk-2026 .orn-mk-hero__ctas .orn-mk-btn {
    border-radius: 999px;
    padding: 20px 38px;
    font-size: 17px;
    font-weight: 700;
    font-family: var(--mk2-sans);
    letter-spacing: 0;
    border: 1px solid transparent;
    line-height: 1;
}
.orn-mk-2026 .orn-mk-hero__ctas .orn-mk-btn--gold {
    background: var(--mk2-red) !important;
    color: #fff !important;
    box-shadow: 0 12px 30px rgba(215, 25, 32, 0.28);
}
.orn-mk-2026 .orn-mk-hero__ctas .orn-mk-btn--gold:hover { background: rgb(190, 20, 26) !important; }
.orn-mk-2026 .orn-mk-hero__ctas .orn-mk-btn--ghost {
    background: #fff !important;
    color: #0a0a0a !important;
    border-color: rgba(0, 0, 0, 0.12);
}
.orn-mk-2026 .orn-mk-hero__ctas .orn-mk-btn--ghost:hover { background: rgb(248, 248, 248) !important; }

/* Figure: image card + chip + info card */
.orn-mk-2026 .orn-mk-hero__figure {
    position: relative;
    width: 100%;
    aspect-ratio: 4 / 3;
    max-height: 620px;
}
.orn-mk-2026 .orn-mk-hero__img {
    width: 100%;
    height: 100%;
    border: 0;
    border-radius: 22px;
    background-size: cover;
    background-position: center;
    box-shadow: 0 30px 60px rgba(20, 20, 20, 0.18);
}
.orn-mk-2026 .orn-mk-hero__chip {
    position: absolute;
    top: 24px;
    left: 24px;
    background: #fff;
    color: #0a0a0a;
    font-family: var(--mk2-sans);
    font-weight: 600;
    font-size: 14px;
    padding: 10px 18px;
    border-radius: 999px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
}
.orn-mk-2026 .orn-mk-hero__card {
    position: absolute;
    left: 24px;
    right: 24px;
    bottom: 24px;
    background: #fff;
    border-radius: 16px;
    padding: 22px 26px;
    box-shadow: 0 14px 40px rgba(0, 0, 0, 0.12);
    max-width: 460px;
}
.orn-mk-2026 .orn-mk-hero__card-title {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 20px;
    color: #0a0a0a;
    letter-spacing: -0.01em;
    margin-bottom: 6px;
}
.orn-mk-2026 .orn-mk-hero__card-body {
    font-family: var(--mk2-sans);
    font-weight: 400;
    font-size: 14.5px;
    color: rgb(80, 80, 80);
    line-height: 1.5;
}

/* Hide legacy stats + rings on 2026 hero */
.orn-mk-2026 .orn-mk-hero__ring,
.orn-mk-2026 .orn-mk-hero__stats { display: none; }

@media (max-width: 900px) {
    .orn-mk-2026 .orn-mk-hero__inner {
        grid-template-columns: minmax(0, 1fr);
        gap: 40px;
        padding: 28px 20px 24px;
    }
    .orn-mk-2026 .orn-mk-hero__copy { min-width: 0; max-width: 100%; }
    /* title-hi (the italic "bookable now.") stayed at 100px on mobile because
       the override below only targeted .orn-mk-hero__title — so the long word
       overflowed the viewport. Scale both together and let them shrink. */
    .orn-mk-2026 .orn-mk-hero__title,
    .orn-mk-2026 .orn-mk-hero__title-hi { font-size: clamp(42px, 11.5vw, 78px); overflow-wrap: break-word; }
    .orn-mk-2026 .orn-mk-hero__lede--big { font-size: 20px; margin-top: 24px; }
    .orn-mk-2026 .orn-mk-hero__figure { aspect-ratio: 4 / 3.4; }
    .orn-mk-2026 .orn-mk-hero__card { padding: 16px 18px; max-width: none; }
    .orn-mk-2026 .orn-mk-hero__card-title { font-size: 17px; }
    .orn-mk-2026 .orn-mk-hero__card-body { font-size: 13.5px; }
    .orn-mk-2026 .orn-mh__inner { padding: 16px 20px; }
    .orn-mk-2026 .orn-mh__links { display: none; }
}

/* Style section headline — sans on 2026 */
.orn-mk-2026 .orn-mk-style__copy .orn-mk-h2 {
    font-family: var(--mk2-sans);
    font-weight: 800;
    letter-spacing: -0.05em;
    line-height: 0.98;
}

/* --- Section 4: Fleet — copy + photo mosaic ------------------ */
.orn-mk2-fleet {
    padding: clamp(84px, 11vw, 140px) 0;
    background: rgb(243, 243, 239);
}
.orn-mk2-fleet .orn-mk2-shell { max-width: 1400px; width: min(100% - 48px, 1400px); }
.orn-mk2-fleet__copy {
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 80px;
    align-items: end;
    margin-bottom: 56px;
}
.orn-mk2-fleet__copy-left { min-width: 0; }
.orn-mk2-fleet__eyebrow {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--mk2-red);
    display: block;
    margin-bottom: 22px;
}
.orn-mk2-fleet__title {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: clamp(48px, 5vw, 104px);
    line-height: 0.98;
    letter-spacing: -0.05em;
    margin: 0;
    color: var(--mk2-ink);
}
.orn-mk2-fleet__lede {
    font-family: var(--mk2-sans);
    font-weight: 400;
    font-size: 17px;
    line-height: 1.55;
    color: rgb(90, 90, 90);
    margin: 0;
    max-width: 460px;
    padding-bottom: 0;
    align-self: end;
    justify-self: end;
    text-align: left;
}

/* Mosaic: wide banner on top, then 2x2 grid */
.orn-mk2-fleet__mosaic {
    display: grid;
    gap: 16px;
}
.orn-mk2-fleet__wide {
    width: 100%;
    height: clamp(260px, 30vw, 440px);
    background-size: cover;
    background-position: center;
    border-radius: 20px;
}
.orn-mk2-fleet__grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr 1fr;
    grid-template-rows: 260px 260px;
    gap: 16px;
}
.orn-mk2-fleet__tile {
    background-size: cover;
    background-position: center;
    border-radius: 20px;
    width: 100%;
    height: 100%;
}
.orn-mk2-fleet__tile--tall {
    grid-row: 1 / span 2;
    height: 100%;
}

@media (max-width: 900px) {
    .orn-mk2-fleet__copy {
        grid-template-columns: 1fr;
        gap: 20px;
        margin-bottom: 32px;
        align-items: start;
    }
    .orn-mk2-fleet__lede { padding-bottom: 0; max-width: none; }
    .orn-mk2-fleet__wide { height: 220px; border-radius: 16px; }
    .orn-mk2-fleet__grid {
        grid-template-columns: 1fr 1fr;
        grid-template-rows: 220px 180px 180px;
    }
    .orn-mk2-fleet__tile { border-radius: 16px; }
    .orn-mk2-fleet__tile--tall { grid-row: 1 / span 1; grid-column: 1 / span 2; height: 220px; }
}

/* --- Section 8: Why / The Economics -------------------------- */
.orn-mk2-why {
    padding: clamp(84px, 11vw, 140px) 0;
    background: #fff;
}
.orn-mk2-why__eyebrow {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--mk2-red);
    display: block;
    margin-bottom: 24px;
}
.orn-mk2-why__title {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: clamp(48px, 6vw, 100px);
    line-height: 0.98;
    letter-spacing: -0.03em;
    margin: 0;
    color: var(--mk2-ink);
}
.orn-mk2-why__title-mute { color: rgb(180, 180, 180); font-weight: 800; }
.orn-mk2-why__lede {
    font-family: var(--mk2-sans);
    font-weight: 400;
    font-size: 18px;
    line-height: 1.55;
    color: rgb(90, 90, 90);
    max-width: 460px;
    margin: 34px 0 0;
}
.orn-mk2-why__rows {
    margin-top: 60px;
    border-top: 1px solid rgba(0, 0, 0, 0.12);
}
.orn-mk2-why__row {
    font-family: var(--mk2-sans);
    font-size: clamp(28px, 4vw, 58px);
    line-height: 1.2;
    letter-spacing: -0.02em;
    padding: 26px 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.12);
    font-weight: 400;
}
.orn-mk2-why__row-mute { color: rgb(180, 180, 180); font-weight: 500; }
.orn-mk2-why__row-ink { color: var(--mk2-ink); font-weight: 700; margin-left: 4px; font-size: clamp(23px, calc(4vw - 5px), 53px); }
.orn-mk2-why__row-red { color: var(--mk2-red); font-weight: 700; margin-left: 4px; }

@media (max-width: 900px) {
    .orn-mk2-why__lede { font-size: 16px; margin-top: 22px; }
    .orn-mk2-why__row { padding: 18px 0; }
    .orn-mk2-why__row-ink, .orn-mk2-why__row-red { display: block; margin-left: 0; margin-top: 4px; }
}

/* --- Section 12: Company — 2026 override (light theme, sans, card stats) --- */
.orn-mk-2026 .orn-mk-co { background: rgb(243, 243, 239); color: var(--mk2-ink); }
.orn-mk-2026 .orn-mk-co__inner { padding: clamp(84px, 11vw, 50px) 40px; }
.orn-mk-2026 .orn-mk-co__top { grid-template-columns: 1.05fr 0.95fr; gap: 80px; align-items: start; }
.orn-mk-2026 .orn-mk-co .orn-mk-eyebrow--onDark {
    color: var(--mk2-red);
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    background: none;
    padding: 0;
    display: block;
    margin-bottom: 24px;
}
.orn-mk-2026 .orn-mk-co__copy .orn-mk-h2 {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: clamp(56px, 4vw, 108px);
    line-height: 0.95;
    letter-spacing: -0.05em;
    color: var(--mk2-ink);
    margin: 0;
}
.orn-mk-2026 .orn-mk-co__lede {
    font-family: var(--mk2-sans);
    font-size: 18px;
    line-height: 1.55;
    color: rgb(90, 90, 90);
    max-width: 520px;
    margin: 28px 0 0;
    font-weight: 400;
}
.orn-mk-2026 .orn-mk-co__chips { margin-top: 32px; gap: 12px; }
.orn-mk-2026 .orn-mk-co .orn-mk-chip--onDark {
    background: #fff;
    color: var(--mk2-ink);
    border: 1px solid rgba(0, 0, 0, 0.14);
    border-radius: 999px;
    padding: 10px 20px;
    font-family: var(--mk2-sans);
    font-weight: 500;
    font-size: 14px;
    letter-spacing: 0;
    text-transform: none;
}
.orn-mk-2026 .orn-mk-co__stats {
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 20px;
    padding: 12px;
    gap: 0;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.04);
}
.orn-mk-2026 .orn-mk-co__stat {
    border: none;
    padding: 20px 32px;
    position: relative;
}
.orn-mk-2026 .orn-mk-co__stat:nth-child(1) { border-right: 1px solid rgba(0, 0, 0, 0.08); border-bottom: 1px solid rgba(0, 0, 0, 0.08); }
.orn-mk-2026 .orn-mk-co__stat:nth-child(2) { border-bottom: 1px solid rgba(0, 0, 0, 0.08); }
.orn-mk-2026 .orn-mk-co__stat:nth-child(3) { border-right: 1px solid rgba(0, 0, 0, 0.08); }
.orn-mk-2026 .orn-mk-co__stat-n {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: 42px;
    letter-spacing: -0.03em;
    color: var(--mk2-ink);
    line-height: 1;
}
.orn-mk-2026 .orn-mk-co__stat:nth-child(4) .orn-mk-co__stat-n { color: var(--mk2-red); }
.orn-mk-2026 .orn-mk-co__stat-l {
    font-family: var(--mk2-sans);
    font-weight: 500;
    font-size: 13px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: rgb(140, 140, 140);
    margin-top: 12px;
    line-height: 1.4;
}
.orn-mk-2026 .orn-mk-co__backedby { border-top-color: rgba(0, 0, 0, 0.12); margin-top: 80px; padding-top: 60px; }
.orn-mk-2026 .orn-mk-co__backedby-head {
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    grid-template-areas:
        "eyebrow eyebrow"
        "title   lede";
    gap: 0 80px;
    align-items: start;
    max-width: none !important;
    width: 100%;
}
.orn-mk-2026 .orn-mk-co__backedby-head > .orn-mk-eyebrow--onDark { grid-area: eyebrow; }
.orn-mk-2026 .orn-mk-co__backedby-title { grid-area: title; }
.orn-mk-2026 .orn-mk-co__backedby-lede  { grid-area: lede; }
.orn-mk-2026 .orn-mk-co__backedby-title {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: clamp(40px, 3vw, 65px);
    line-height: 1.02;
    letter-spacing: -0.03em;
    color: var(--mk2-ink);
    margin: 12px 0 0;
    max-width: 720px;
}
.orn-mk-2026 .orn-mk-co__backedby-lede {
    font-family: var(--mk2-sans);
    font-size: 17px;
    color: rgb(120, 120, 120);
    margin: 0;
    line-height: 1.55;
    max-width: 380px;
    padding-top: 0;
}
@media (max-width: 700px) {
    /* Stack the "BACKED BY" head on phones — the 2-column grid crammed the
       headline and body into narrow half-width columns that wrapped badly. */
    .orn-mk-2026 .orn-mk-co__backedby-head {
        grid-template-columns: 1fr;
        grid-template-areas: "eyebrow" "title" "lede";
        gap: 0;
    }
    .orn-mk-2026 .orn-mk-co__backedby-title { font-size: clamp(34px, 9vw, 50px); margin-top: 6px; max-width: none; }
    .orn-mk-2026 .orn-mk-co__backedby-lede { max-width: none; margin-top: 20px; }
}
.orn-mk-2026 .orn-mk2-backer {
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 20px;
    padding: 24px 26px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.04);
}
.orn-mk-2026 .orn-mk2-backer__avatar {
    background: var(--mk2-ink);
    color: #fff;
}
.orn-mk-2026 .orn-mk2-backer__name { color: var(--mk2-ink); }
.orn-mk-2026 .orn-mk2-backer__role { color: rgb(120, 120, 120); }
.orn-mk-2026 .orn-mk-co__bullets {
    display: flex;
    flex-wrap: wrap;
    gap: 40px;
    margin-top: 32px;
    grid-template-columns: none;
}
.orn-mk-2026 .orn-mk-co__bullet {
    font-family: var(--mk2-sans);
    color: var(--mk2-ink);
    font-size: 15.5px;
    font-weight: 500;
}
.orn-mk-2026 .orn-mk-co__bullet::first-letter { color: var(--mk2-red); }

@media (max-width: 900px) {
    .orn-mk-2026 .orn-mk-co__top { grid-template-columns: 1fr; gap: 40px; }
    .orn-mk-2026 .orn-mk-co__stat { padding: 24px 20px; }
    .orn-mk-2026 .orn-mk-co__stat-n { font-size: 40px; }
    .orn-mk-2026 .orn-mk-co__backedby-head { grid-template-columns: 1fr; gap: 24px; }
    .orn-mk-2026 .orn-mk-co__backedby-lede { padding-top: 0; }
    .orn-mk-2026 .orn-mk-co__bullets { flex-direction: column; gap: 16px; }
}

/* --- Section 2: Apple analogy — before/now split ------------- */
.orn-mk2-anal {
    padding: clamp(90px, 12vw, 150px) 0;
    background: rgb(243, 240, 232);
}
.orn-mk2-anal__eyebrow {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--mk2-red);
    display: block;
    margin-bottom: 28px;
}
.orn-mk2-anal__title {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: clamp(48px, 4vw, 96px);
    line-height: 1.02;
    letter-spacing: -0.03em;
    color: var(--mk2-ink);
    margin: 0;
    max-width: 1180px;
}
.orn-mk2-anal__title-hi {
    font-family: Georgia, serif;
    font-style: italic;
    font-weight: 400;
    color: rgb(179, 158, 105);
    letter-spacing: -0.01em;
}
.orn-mk2-anal__lede {
    font-family: var(--mk2-sans);
    font-size: 18px;
    line-height: 1.55;
    color: rgb(90, 90, 90);
    max-width: 560px;
    margin: 32px 0 0;
}
.orn-mk2-anal__split {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0;
    margin-top: 72px;
    border-radius: 24px;
    overflow: hidden;
    box-shadow: 0 20px 50px rgba(0, 0, 0, 0.08);
}
.orn-mk2-anal__card {
    padding: 52px 56px 56px;
    display: flex;
    flex-direction: column;
    min-height: 380px;
}
.orn-mk2-anal__card--before { background: #fff; color: var(--mk2-ink); }
.orn-mk2-anal__card--now { background: rgb(11, 11, 11); color: #fff; }
.orn-mk2-anal__label {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 12px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: rgb(140, 140, 140);
    margin-bottom: 32px;
}
.orn-mk2-anal__label--red { color: var(--mk2-red); }
.orn-mk2-anal__card-title {
    font-family: Georgia, serif;
    font-weight: 400;
    font-size: clamp(28px, 3.2vw, 44px);
    line-height: 1.15;
    letter-spacing: -0.015em;
    margin: 0 0 auto;
}
.orn-mk2-anal__card--before .orn-mk2-anal__card-title { color: var(--mk2-ink); }
.orn-mk2-anal__card--now .orn-mk2-anal__card-title { color: #fff; }
.orn-mk2-anal__card-body {
    font-family: var(--mk2-sans);
    font-size: 15px;
    line-height: 1.55;
    margin: 40px 0 0;
    max-width: 420px;
}
.orn-mk2-anal__card--before .orn-mk2-anal__card-body { color: rgb(110, 110, 110); }
.orn-mk2-anal__card--now .orn-mk2-anal__card-body { color: rgb(180, 180, 180); }

@media (max-width: 900px) {
    .orn-mk2-anal__split { grid-template-columns: 1fr; }
    .orn-mk2-anal__card { padding: 36px 28px 40px; min-height: 0; }
    .orn-mk2-anal__card-body { margin-top: 24px; }
    .orn-mk2-anal__lede { font-size: 16px; }
}

/* --- Section 7b: Commercial proof — traditional vs ORN ------- */
.orn-mk2-proof {
    padding: clamp(84px, 11vw, 130px) 0;
    background: rgb(243, 240, 232);
}
.orn-mk2-proof__eyebrow {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--mk2-red);
    display: block;
    margin-bottom: 28px;
}
.orn-mk2-proof__title {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: clamp(48px, 4vw, 96px);
    line-height: 1.02;
    letter-spacing: -0.03em;
    color: var(--mk2-ink);
    margin: 0 0 56px;
    max-width: 1000px;
}
.orn-mk2-proof__grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}
.orn-mk2-proof__card {
    border-radius: 24px;
    padding: 40px 44px 44px;
    display: flex;
    flex-direction: column;
    min-height: 340px;
}
.orn-mk2-proof__card--old {
    background: rgb(226, 224, 220);
    color: var(--mk2-ink);
}
.orn-mk2-proof__card--orn {
    background: var(--mk2-red);
    color: #fff;
    box-shadow: 0 20px 50px rgba(215, 25, 32, 0.25);
}
.orn-mk2-proof__label {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 12px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    margin-bottom: 24px;
}
.orn-mk2-proof__card--old .orn-mk2-proof__label { color: rgb(80, 80, 80); }
.orn-mk2-proof__card--orn .orn-mk2-proof__label { color: rgba(255, 255, 255, 0.9); }
.orn-mk2-proof__price {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: clamp(48px, 5.5vw, 88px);
    line-height: 1;
    letter-spacing: -0.03em;
    margin: 0 0 auto;
}
.orn-mk2-proof__card--old .orn-mk2-proof__price { color: var(--mk2-ink); }
.orn-mk2-proof__card--orn .orn-mk2-proof__price { color: #fff; }
.orn-mk2-proof__body {
    font-family: var(--mk2-sans);
    font-size: 15.5px;
    line-height: 1.55;
    margin: 40px 0 0;
    max-width: 420px;
}
.orn-mk2-proof__card--old .orn-mk2-proof__body { color: rgb(90, 90, 90); }
.orn-mk2-proof__card--orn .orn-mk2-proof__body { color: rgba(255, 255, 255, 0.92); }

@media (max-width: 900px) {
    .orn-mk2-proof__grid { grid-template-columns: 1fr; }
    .orn-mk2-proof__card { min-height: 0; padding: 28px 24px 32px; }
    .orn-mk2-proof__body { margin-top: 24px; }
}

/* --- Section 7: What this means for you — 4-card benefit grid  */
.orn-mk2-benefit {
    padding: clamp(90px, 12vw, 50px) 0;
    background: #fff;
}
.orn-mk2-benefit__eyebrow {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--mk2-red);
    display: block;
    margin-bottom: 28px;
}
.orn-mk2-benefit__head {
    display: grid;
    grid-template-columns: 1.35fr 1fr;
    gap: 60px;
    align-items: end;
    margin-bottom: 56px;
}
.orn-mk2-benefit__title {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: clamp(48px, 4vw, 96px);
    line-height: 1.02;
    letter-spacing: -0.03em;
    color: var(--mk2-ink);
    margin: 0;
}
.orn-mk2-benefit__title-hi {
    font-family: Georgia, serif;
    font-style: italic;
    font-weight: 400;
    color: rgb(200, 178, 122);
    letter-spacing: -0.01em;
}
.orn-mk2-benefit__lede {
    font-family: var(--mk2-sans);
    font-size: 18px;
    line-height: 1.5;
    color: rgb(90, 90, 90);
    margin: 0;
    max-width: 420px;
    padding-bottom: 12px;
}
.orn-mk2-benefit__grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    border: 1px solid rgba(0, 0, 0, 0.10);
    border-radius: 24px;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.04);
}
.orn-mk2-benefit__card {
    padding: 40px 44px 44px;
    border-right: 1px solid rgba(0, 0, 0, 0.10);
    border-bottom: 1px solid rgba(0, 0, 0, 0.10);
}
.orn-mk2-benefit__card:nth-child(2n) { border-right: 0; }
.orn-mk2-benefit__card:nth-last-child(-n+2) { border-bottom: 0; }
.orn-mk2-benefit__label {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 15px;
    color: var(--mk2-ink);
    margin-bottom: 12px;
}
.orn-mk2-benefit__card-title {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 24px;
    line-height: 1.25;
    letter-spacing: -0.015em;
    color: var(--mk2-ink);
    margin: 0 0 12px;
}
.orn-mk2-benefit__card-body {
    font-family: var(--mk2-sans);
    font-weight: 400;
    font-size: 15px;
    line-height: 1.55;
    color: rgb(110, 110, 110);
    margin: 0;
}

@media (max-width: 900px) {
    .orn-mk2-benefit__head { grid-template-columns: 1fr; gap: 20px; align-items: start; }
    .orn-mk2-benefit__lede { padding-bottom: 0; }
    .orn-mk2-benefit__grid { grid-template-columns: 1fr; }
    .orn-mk2-benefit__card { padding: 28px; border-right: 0; }
    .orn-mk2-benefit__card:nth-last-child(1) { border-bottom: 0; }
}

/* --- Section 4: The ORN Answer — red bg headline ------------- */
.orn-mk2-ans {
    padding: clamp(90px, 12vw, 50px) 0;
    background: var(--mk2-red);
    color: #fff;
    position: relative;
    overflow: hidden;
}
.orn-mk2-ans::before {
    content: "";
    position: absolute;
    right: -8%;
    top: -20%;
    width: 720px;
    height: 720px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.05);
    pointer-events: none;
}
.orn-mk2-ans__inner {
    position: relative;
    z-index: 1;
    text-align: center;
}
.orn-mk2-ans__eyebrow {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: #fff;
    display: block;
    margin-bottom: 24px;
    opacity: 0.9;
}
.orn-mk2-ans__title {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: clamp(44px, 5vw, 84px);
    line-height: 1.02;
    letter-spacing: -0.02em;
    color: #fff;
    margin: 0;
    text-align: center;
}
.orn-mk2-ans__title-hi {
    font-family: Georgia, serif;
    font-style: italic;
    font-weight: 400;
    color: rgb(210, 189, 138);
    letter-spacing: -0.01em;
}
.orn-mk2-ans__lede {
    font-family: var(--mk2-sans);
    font-size: 18px;
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.9);
    max-width: 560px;
    margin: 32px auto 0;
}

/* --- Section 3: Why Europe proves the need — dark handoff list */
.orn-mk2-need {
    padding: clamp(90px, 12vw, 150px) 0;
    background: rgb(7, 7, 7);
    color: #fff;
}
.orn-mk2-need__eyebrow {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--mk2-red);
    display: block;
    margin-bottom: 24px;
}
.orn-mk2-need__title {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: clamp(48px, 4.5vw, 96px);
    line-height: 1.02;
    letter-spacing: -0.03em;
    color: #fff;
    margin: 0;
    max-width: 1180px;
}
.orn-mk2-need__title-hi {
    font-family: Georgia, serif;
    font-style: italic;
    font-weight: 400;
    color: rgb(179, 158, 105);
    letter-spacing: -0.01em;
}
.orn-mk2-need__grid {
    display: grid;
    grid-template-columns: 1fr 1.4fr;
    gap: 80px;
    margin-top: 80px;
    align-items: start;
}
.orn-mk2-need__aside {
    font-family: Georgia, serif;
    font-weight: 400;
    font-size: 28px;
    line-height: 1.2;
    color: #fff;
    margin: 0;
    max-width: 380px;
}
.orn-mk2-need__rows {
    border-top: 1px solid rgba(255, 255, 255, 0.14);
}
.orn-mk2-need__row {
    display: grid;
    grid-template-columns: 60px 1fr;
    gap: 24px;
    padding: 28px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.14);
    align-items: start;
}
.orn-mk2-need__num {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 12px;
    letter-spacing: 0.18em;
    color: var(--mk2-red);
    padding-top: 4px;
}
.orn-mk2-need__row-title {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 18px;
    letter-spacing: -0.01em;
    color: #fff;
    margin: 0 0 6px;
}
.orn-mk2-need__row-body {
    font-family: var(--mk2-sans);
    font-weight: 400;
    font-size: 16px;
    line-height: 1.55;
    color: rgb(170, 170, 170);
    margin: 0;
    max-width: 660px;
}

@media (max-width: 900px) {
    .orn-mk2-need__grid { grid-template-columns: 1fr; gap: 40px; margin-top: 48px; }
    .orn-mk2-need__aside { font-size: 22px; max-width: none; }
    .orn-mk2-need__row { grid-template-columns: 40px 1fr; gap: 16px; padding: 22px 0; }
    .orn-mk2-need__row-title { font-size: 17px; }
    .orn-mk2-need__row-body { font-size: 14.5px; }
}

/* --- Section 2: The ORN Thesis (dark investment block) ------- */
.orn-mk2-thesis {
    padding: clamp(90px, 12vw, 150px) 0;
    background: rgb(7, 7, 7);
    color: #fff;
}
.orn-mk2-thesis__eyebrow {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--mk2-red);
    display: block;
    margin-bottom: 32px;
}
.orn-mk2-thesis__title {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: clamp(52px, 4vw, 108px);
    line-height: 0.98;
    letter-spacing: -0.04em;
    color: #fff;
    margin: 0;
    max-width: 1100px;
}
.orn-mk2-thesis__lede {
    font-family: var(--mk2-sans);
    font-size: 20px;
    line-height: 1.5;
    color: rgb(200, 200, 200);
    margin: 40px 0 0;
    max-width: 720px;
}
.orn-mk2-thesis__split {
    display: grid;
    grid-template-columns: 1.35fr 1fr;
    gap: 80px;
    align-items: end;
    margin-top: 40px;
}
.orn-mk2-thesis__amt {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: clamp(64px, 7vw, 160px);
    line-height: 0.9;
    letter-spacing: -0.05em;
}
.orn-mk2-thesis__amt-red { color: var(--mk2-red); display: block; }
.orn-mk2-thesis__amt-ink { color: #fff; display: block; }
.orn-mk2-thesis__note {
    font-family: var(--mk2-sans);
    font-size: 17px;
    line-height: 1.55;
    color: rgb(190, 190, 190);
    margin: 0;
    padding-left: 40px;
    border-left: 1px solid rgba(255, 255, 255, 0.16);
    max-width: 420px;
}

@media (max-width: 900px) {
    .orn-mk2-thesis__lede { font-size: 17px; margin-top: 28px; }
    .orn-mk2-thesis__split { grid-template-columns: 1fr; gap: 32px; margin-top: 48px; align-items: start; }
    .orn-mk2-thesis__note { padding-left: 0; border-left: 0; border-top: 1px solid rgba(255, 255, 255, 0.16); padding-top: 24px; }
}

/* --- Section 3: How travel was re-engineered — 4 pillar cards - */
.orn-mk2-reeng {
    padding: clamp(90px, 12vw, 150px) 0;
    background: rgb(243, 243, 239);
}
.orn-mk2-reeng__eyebrow {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--mk2-red);
    display: block;
    margin-bottom: 28px;
}
.orn-mk2-reeng__title {
    font-family: var(--mk2-sans);
    font-weight: 800;
    font-size: clamp(48px, 4vw, 104px);
    line-height: 0.98;
    letter-spacing: -0.04em;
    color: var(--mk2-ink);
    margin: 0 0 72px;
    max-width: 1200px;
}
.orn-mk2-reeng__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}
.orn-mk2-reeng__card {
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.06);
    border-radius: 22px;
    padding: 22px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.04);
    display: flex;
    flex-direction: column;
}
.orn-mk2-reeng__num {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 14px;
    letter-spacing: 0.08em;
    color: var(--mk2-red);
    margin-bottom: 22px;
}
.orn-mk2-reeng__card-title {
    font-family: var(--mk2-sans);
    font-weight: 700;
    font-size: 19px;
    line-height: 1.2;
    letter-spacing: -0.02em;
    color: var(--mk2-ink);
    margin: 0 0 8px;
}
.orn-mk2-reeng__card-body {
    font-family: var(--mk2-sans);
    font-weight: 400;
    font-size: 13px;
    line-height: 1.55;
    color: rgb(110, 110, 110);
    margin: 0;
}

@media (max-width: 1100px) {
    .orn-mk2-reeng__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
    .orn-mk2-reeng__grid { grid-template-columns: 1fr; gap: 14px; }
    .orn-mk2-reeng__title { margin-bottom: 48px; }
    .orn-mk2-reeng__num { margin-bottom: 24px; }
}

/* ─── Terms tab (Payment / Cancellation / Hold — grid-based, responsive) ─── */
.orn-jd__terms-section { margin: 0 0 32px 0; }
.orn-jd__terms-section:last-child { margin-bottom: 0; }
.orn-jd__terms-title {
    font-family: 'Archivo', sans-serif;
    font-size: 20px;
    line-height: 1.2;
    color: #0b1f3a;
    margin: 0 0 12px 0;
    font-weight: 700;
}
.orn-jd__terms-grid {
    background: #ffffff;
    border: 1px solid rgba(20, 35, 59, 0.10);
    border-radius: 8px;
    overflow: hidden;
    font-family: 'Archivo', sans-serif;
    font-size: 14px;
    color: #14233b;
}
.orn-jd__terms-head,
.orn-jd__terms-row {
    display: grid;
    align-items: center;
    border-bottom: 1px solid rgba(20, 35, 59, 0.06);
}
.orn-jd__terms-head { background: #f5f2ec; border-bottom: 1px solid rgba(20, 35, 59, 0.10); }
.orn-jd__terms-row:last-child { border-bottom: 0; }
.orn-jd__terms-grid--3col .orn-jd__terms-head,
.orn-jd__terms-grid--3col .orn-jd__terms-row { grid-template-columns: 1.4fr 1fr 1fr; }
.orn-jd__terms-grid--2col .orn-jd__terms-head,
.orn-jd__terms-grid--2col .orn-jd__terms-row { grid-template-columns: 1.4fr 1fr; }
.orn-jd__terms-cell {
    padding: 12px 16px;
    font-weight: 500;
}
.orn-jd__terms-cell--head {
    font-weight: 600;
    color: #14233b;
    letter-spacing: 0.02em;
}
.orn-jd__terms-cell--num {
    text-align: right;
    font-variant-numeric: tabular-nums;
}
/* Hold policy — key/value list, always stacked */
.orn-jd__terms-kv {
    background: #ffffff;
    border: 1px solid rgba(20, 35, 59, 0.10);
    border-radius: 8px;
    overflow: hidden;
    font-family: 'Archivo', sans-serif;
    font-size: 14px;
}
.orn-jd__terms-kv-row {
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    padding: 12px 16px;
    border-bottom: 1px solid rgba(20, 35, 59, 0.06);
}
.orn-jd__terms-kv-row:last-of-type { border-bottom: 0; }
.orn-jd__terms-kv-k { color: #6b6b6b; font-weight: 500; }
.orn-jd__terms-kv-v { color: #14233b; font-weight: 500; }
.orn-jd__terms-note {
    color: #6b6b6b;
    font-size: 12px;
    font-style: italic;
    padding: 10px 16px 14px;
    border-top: 1px solid rgba(20, 35, 59, 0.06);
}

/* Mobile stack — under 640px each row becomes a card with data-label lead-ins.
   The head row is hidden and each cell shows its column label inline. */
@media (max-width: 640px) {
    .orn-jd__terms-head { display: none; }
    .orn-jd__terms-row {
        display: block;
        padding: 12px 16px;
    }
    .orn-jd__terms-cell {
        display: flex;
        justify-content: space-between;
        align-items: baseline;
        gap: 12px;
        padding: 4px 0;
        text-align: left;
    }
    .orn-jd__terms-cell--num { text-align: left; }
    .orn-jd__terms-cell::before {
        content: attr(data-label);
        color: #6b6b6b;
        font-weight: 500;
        font-size: 12.5px;
        flex: 0 0 auto;
    }
    .orn-jd__terms-cell[data-label=""]::before { content: none; }
    .orn-jd__terms-kv-row { grid-template-columns: 1fr 1fr; }
}

/* ─── Policy / static content pages (Terms, Privacy Policy, Cookie Policy, etc.) ─── */
.orn-policy {
    background: #ffffff;
    padding: 40px 0 96px;
}
.orn-policy__title {
    font-family: 'Archivo', sans-serif;
    font-weight: 700;
    font-size: 32px;
    line-height: 1.2;
    color: #0b1f3a;
    margin: 0 0 24px 0;
    letter-spacing: -0.01em;
}
.orn-policy__body {
    max-width: 780px;
    color: #14233b;
    font-family: 'Archivo', sans-serif;
    font-size: 15px;
    line-height: 1.7;
}
.orn-policy__body h1,
.orn-policy__body h2,
.orn-policy__body h3,
.orn-policy__body h4 {
    font-family: 'Archivo', sans-serif;
    color: #0b1f3a;
    margin: 32px 0 12px 0;
    font-weight: 700;
    line-height: 1.3;
}
.orn-policy__body h2 { font-size: 22px; }
.orn-policy__body h3 { font-size: 18px; }
.orn-policy__body h4 { font-size: 16px; }
.orn-policy__body p { margin: 0 0 14px 0; }
.orn-policy__body ul,
.orn-policy__body ol {
    padding-left: 22px;
    margin: 0 0 16px 0;
}
.orn-policy__body ul { list-style: disc; }
.orn-policy__body ol { list-style: decimal; }
.orn-policy__body li { margin: 4px 0; }
.orn-policy__body a {
    color: rgb(242, 13, 22);
    text-decoration: underline;
}
.orn-policy__body a:hover { color: rgb(201, 10, 18); }
.orn-policy__body strong { font-weight: 700; color: #0b1f3a; }
.orn-policy__body table {
    width: 100%;
    border-collapse: collapse;
    margin: 12px 0 20px 0;
    font-size: 14px;
}
.orn-policy__body table th,
.orn-policy__body table td {
    padding: 10px 14px;
    border: 1px solid rgba(20, 35, 59, 0.10);
    text-align: left;
    vertical-align: top;
}
.orn-policy__body table th {
    background: #f5f2ec;
    font-weight: 600;
}

@media (max-width: 640px) {
    .orn-policy { padding: 32px 0 64px; }
    .orn-policy__title { font-size: 26px; }
    .orn-policy__body { font-size: 14.5px; }
}

/* ============================================================
   Mobile full-screen booking flow  (Travellers → Date → Price)
   ------------------------------------------------------------
   The Dates tab-panel is an inline section on desktop. On mobile
   we promote the ACTIVE Dates panel to a full-screen overlay with
   a sticky step header (+ back button) and a fixed footer CTA, so
   the booking flow reads as a dedicated screen — matching the ORN
   mobile design. Desktop layout/styles are untouched.
   ============================================================ */

/* Back button, entry bar + Date-step "Next" footer are mobile-only —
   hidden by default so they never appear on desktop (the DOM ships on
   every width; on desktop the calendar reprices on click, no Next step). */
.orn-jd__dt-back { display: none; }
.orn-jd__dates-entry { display: none; }
.orn-jd__dt-datefooter { display: none; }

@media (max-width: 640px) {
    /* ── Entry bar: fixed bottom "Check dates & prices" CTA ── */
    .orn-jd__dates-entry {
        display: block;
        position: fixed;
        left: 0; right: 0; bottom: 0;
        z-index: 1150;
        background: #fff;
        border-top: 1px solid var(--orn-line, #e8e8e8);
        box-shadow: 0 -6px 20px rgba(20, 35, 59, 0.10);
        padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
    }
    .orn-jd__dates-entry-btn {
        display: flex; align-items: center; justify-content: center; gap: 8px;
        width: 100%;
        background: #151515; color: #fff;
        border: none; border-radius: 14px;
        padding: 16px 24px;
        font-family: inherit; font-size: 15px; font-weight: 700;
        cursor: pointer;
    }
    /* Reserve space so the fixed entry bar never covers the page footer. */
    body.orn-page--journey { padding-bottom: calc(80px + env(safe-area-inset-bottom, 0px)); }
    /* Once the flow is open, hide the entry bar + lock the page scroll. */
    body.orn-jd-dates-open .orn-jd__dates-entry { display: none; }
    body.orn-jd-dates-open { overflow: hidden; padding-bottom: 0; }

    /* ── Full-screen overlay for the active Dates panel ──
       Gated on body.orn-jd-dates-open so it ONLY applies when the flow is
       opened via the "Check dates & prices" button. Tapping the Dates/Pricing
       tab leaves this class off, so the panel renders inline like any other
       tab (no full-screen takeover, no history capture). */
    body.orn-jd-dates-open .orn-jd__panel--active[data-orn-panel="dates"] {
        position: fixed;
        inset: 0;
        z-index: 1200;
        margin: 0;
        background: #F4F4F4; /* design page bg (grey) so white cards float — was white --orn-paper */
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        padding: 0 16px calc(100px + env(safe-area-inset-bottom, 0px));
    }

    /* ── Sticky step header (stepnav + back button) — full-screen only ── */
    body.orn-jd-dates-open .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-stepnav {
        position: sticky;
        top: 0;
        z-index: 6;
        margin: 0 -16px 12px;
        padding: 12px 16px;
        background: #fff;
        border-bottom: 1px solid var(--orn-line, #e8e8e8);
        gap: 8px;
    }
    body.orn-jd-dates-open .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-back {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
        width: 34px; height: 34px;
        border-radius: 17px;
        border: none;
        background: var(--orn-paper, #f4f4f4);
        color: var(--orn-text, #151515);
        font-size: 20px; line-height: 1;
        cursor: pointer;
    }

    /* First step card sits flush under the sticky header. */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-controls {
        margin-top: 0;
    }

    /* ── Fixed footer CTA — one per visible sub-step ──
       Only one of these containers is ever visible at a time
       (controls hidden on Price step, price hidden on Travellers). */
    body.orn-jd-dates-open .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-footer,
    body.orn-jd-dates-open .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-datefooter:not([hidden]),
    body.orn-jd-dates-open .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-price-cta-row {
        display: block;
        position: fixed;
        left: 0; right: 0; bottom: 0;
        z-index: 7;
        margin: 0;
        background: #fff;
        border-top: 1px solid var(--orn-line, #e8e8e8);
        box-shadow: 0 -6px 20px rgba(20, 35, 59, 0.08);
        padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-price-cta-row {
        display: flex; gap: 10px;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-price-cta-row > * {
        flex: 1 1 0;
    }

    /* Full-screen loading state (Next → Price summary) — centred spinner
       so the transition reads intentionally on the dedicated screen. */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-price-loading {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 16px;
        min-height: 260px;
        border: none;
        background: transparent;
        font-style: normal;
        font-family: 'JetBrains Mono', monospace;
        font-size: 12px;
        font-weight: 700;
        letter-spacing: 0.14em;
        text-transform: uppercase;
        color: var(--orn-navy, rgb(242, 13, 22));
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-price-loading::before {
        content: "";
        width: 40px; height: 40px;
        border-radius: 50%;
        border: 3px solid rgba(242, 13, 22, 0.2);
        border-top-color: rgb(242, 13, 22);
        animation: orn-jd-spin 0.7s linear infinite;
    }
}

@keyframes orn-jd-spin { to { transform: rotate(360deg); } }


/* ============================================================
   Mobile booking-flow — typography + layout enrichment
   ------------------------------------------------------------
   Scoped to the full-screen overlay (.orn-jd__panel--active
   [data-orn-panel="dates"]) so DESKTOP IS UNTOUCHED. Brings the
   Travellers / Date / Price screens up to the ORN mobile design's
   type scale, spacing, card radii and shadow treatment.
   ============================================================ */
@media (max-width: 640px) {
    /* ── Travellers (controls) card ── */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-controls {
        padding: 24px 20px 22px;
        border-radius: 18px;
        box-shadow: 0 10px 30px rgba(20, 35, 59, 0.05);
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-controls-head {
        margin-bottom: 22px;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-controls-eyebrow {
        font-size: 11px;
        letter-spacing: 0.18em;
        margin-bottom: 12px;
        color: rgb(154, 138, 110);
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-controls-title {
        font-size: 24px;
        line-height: 1.08;
        letter-spacing: -0.4px;
        margin-bottom: 10px;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-controls-lede {
        font-size: 13.5px;
        line-height: 1.55;
        color: rgb(58, 70, 84);
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-controls-grid {
        gap: 18px;
        margin-bottom: 0;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-ctrl-label {
        font-size: 10.5px;
        letter-spacing: 0.14em;
        margin-bottom: 8px;
        color: rgb(110, 110, 110);
    }
    /* Inputs: white field, larger radius + type — matches the design's
       select/room-pax controls (was cream, 10px radius, 14px Archivo). */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-select,
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-roomspax-trigger {
        background: #fff;
        border-radius: 12px;
        padding: 14px 14px;
        font-family: Inter, sans-serif;
        font-size: 15px;
        font-weight: 600;
        color: rgb(20, 35, 59);
    }
    /* Strip the native <select> chrome and give the "Joining from" control the
       design's crisp, defined navy border + dark chevron (it's the primary
       field, sits stronger than the lighter "Rooms and pax" trigger). */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-select {
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        border: 1.5px solid rgba(20, 35, 59, 0.85);
        padding: 15px 44px 15px 16px;
        color: rgb(20, 35, 59);
        font-weight: 600;
        cursor: pointer;
        transition: border-color 0.15s ease, box-shadow 0.15s ease;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Cpath d='M3 5l4 4 4-4' fill='none' stroke='%23172239' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: right 16px center;
        background-size: 14px 14px;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-select:hover {
        border-color: rgb(20, 35, 59);
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-select:focus {
        border-color: rgb(20, 35, 59);
        box-shadow: 0 0 0 3px rgba(20, 35, 59, 0.12);
    }

    /* ── Fixed footer buttons — richer weight + radius ── */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-select-cta {
        border-radius: 14px;
        padding: 16px 20px;
        font-family: Inter, sans-serif;
        font-size: 15px;
        font-weight: 700;
        background: #151515;
    }
    /* ── Date step calendar ── */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-cal-legend-k {
        font-size: 11px;
        letter-spacing: 0.16em;
        color: rgb(110, 110, 110);
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-cal-mo {
        border-radius: 16px;
        padding: 18px 14px;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-cal-title {
        font-size: 18px;
        font-weight: 800;
        margin-bottom: 12px;
    }

    /* ── Price summary card — receipt layout carries over from desktop
       unchanged (hero total, stitch divider, collapsible breakdown); only
       size/spacing shrink for the phone width here. ── */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-price-card {
        padding: 22px 20px;
        border-radius: 18px;
        box-shadow: 0 12px 36px rgba(20, 35, 59, 0.08);
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-price-stitch {
        margin: 18px -20px 0;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-price-date {
        font-size: 22px;
        font-weight: 800;
        line-height: 1.2;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-price-sub {
        font-size: 14.5px;
        color: rgb(107, 114, 128);
        margin-top: 5px;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-price-change {
        border-radius: 999px;
        font-weight: 700;
        font-size: 13px;
        padding: 9px 16px;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-price-line-l,
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-price-line-v {
        font-size: 14px;
    }

    /* ── Add-ons block (on the Price screen) — pixel-matched to design ──
       Design tokens (light mode): themeText #0F0F0F, themeTextSub #5C5C5C,
       themeDivider #E4DDCE. Fonts: Archivo throughout. */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addons-title {
        font-family: 'Archivo', sans-serif;
        font-size: 19px;
        font-weight: 700;
        line-height: 1.16;
        color: #0F0F0F;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addons-lede {
        font-family: 'Archivo', sans-serif;
        font-size: 13px;
        line-height: 1.5;
        color: #5C5C5C;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addons-head {
        margin-bottom: 14px;
    }
    /* Day heading — grey, Archivo, tracked caps (was dark JetBrains-mono) */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addons-dayhead {
        font-family: 'Archivo', sans-serif;
        font-size: 10.5px;
        font-weight: 700;
        letter-spacing: 1.6px;
        text-transform: uppercase;
        color: #5C5C5C;
        margin: 0 0 10px;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addons-daygroup {
        margin-bottom: 16px;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addons-grid {
        gap: 16px;
    }
    /* Card — white on grey page, neutral hairline + soft lift shadow */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addon {
        padding: 16px;
        gap: 12px;
        background: #ffffff;
        border: 1px solid rgb(232, 232, 232);
        border-radius: 14px;
        box-shadow: 0 2px 8px rgba(20, 35, 59, 0.06);
        margin-bottom: 0;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addon.is-checked {
        background: rgb(255, 244, 242);
        border: 2px solid rgb(242, 13, 22);
        box-shadow: 0 8px 20px rgba(242, 13, 22, 0.14);
    }
    /* Title — Archivo semibold, near-black */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addon-title {
        font-family: 'Archivo', sans-serif;
        font-size: 14.5px;
        font-weight: 600;
        line-height: 1.3;
        color: #0F0F0F;
    }
    /* Description — inline red "more", grey body */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addon-desc {
        font-family: 'Archivo', sans-serif;
        font-size: 12.5px;
        line-height: 1.45;
        color: #5C5C5C;
        margin-top: 2px;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addon-desc-text {
        display: inline;
        -webkit-line-clamp: unset;
        line-clamp: unset;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addon-desc-toggle {
        display: inline;
        margin: 0 0 0 5px;
        padding: 0;
        color: #F20D16;
        font-weight: 600;
        font-size: 12.5px;
        text-decoration: none;
    }
    /* Duration — small grey tracked caps */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addon-metarow {
        margin-top: 8px;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addon-duration {
        font-family: 'Archivo', sans-serif;
        font-size: 10px;
        font-weight: 700;
        letter-spacing: 0.08em;
        color: #5C5C5C;
        text-transform: uppercase;
    }
    /* Price footer — cream hairline rule, "total for group" then price, right-aligned */
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addon-priceblock {
        flex: 1 1 100%;
        flex-direction: row;
        align-items: baseline;
        justify-content: flex-end;
        gap: 6px;
        text-align: right;
        margin: 12px 0 0;
        padding-top: 10px;
        border-top: 1px solid #E4DDCE;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addon-price-note {
        order: 1;
        font-family: 'Archivo', sans-serif;
        font-size: 11px;
        font-weight: 400;
        color: #5C5C5C;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addon-price {
        order: 2;
        font-family: 'Archivo', sans-serif;
        font-size: 14px;
        font-weight: 700;
        color: #0F0F0F;
    }
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addon-price-plus,
    .orn-jd__panel--active[data-orn-panel="dates"] .orn-jd__dt-addon-price-val {
        font-family: 'Archivo', sans-serif;
        color: #0F0F0F;
    }
}

/* ============================================================
   Talk to ORN — support page (contact card + topic grid)
   ============================================================ */
.orn-talk {
    background: #f5f2ec;
    padding: 64px 0;
}
.orn-talk--topics {
    background: #ffffff;
    padding: 72px 0 96px;
}
.orn-talk__contact-card {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 32px;
    background: #ffffff;
    border-radius: 24px;
    padding: 40px 44px;
    box-shadow: 0 12px 32px rgba(20, 24, 40, 0.06);
    border: 1px solid rgba(20, 24, 40, 0.05);
}
.orn-talk__contact-col {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.orn-talk__contact-label {
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--orn-muted, #6b7185);
    margin: 0;
}
.orn-talk__phone {
    font-family: 'Archivo', sans-serif;
    font-size: 32px;
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--orn-text, #141828);
    text-decoration: none;
    line-height: 1.15;
}
.orn-talk__phone:hover { color: var(--orn-accent, #1f4e8c); }
.orn-talk__email {
    font-family: 'Archivo', sans-serif;
    font-size: 24px;
    font-weight: 600;
    color: var(--orn-text, #141828);
    text-decoration: none;
    line-height: 1.2;
}
.orn-talk__email:hover { color: var(--orn-accent, #1f4e8c); }
.orn-talk__contact-hint {
    font-size: 13.5px;
    color: var(--orn-muted, #6b7185);
    margin: 4px 0 0;
}
/* Our Offices — three-card grid below the contact card. */
.orn-talk--offices { padding-top: 24px; }
.orn-talk__offices-title {
    font-family: var(--orn-font-heading, 'Anton', sans-serif);
    font-weight: 400;
    font-size: clamp(32px, 4vw, 44px);
    letter-spacing: 0;
    color: var(--orn-text, #141828);
    margin: 0 0 24px;
}
.orn-talk__offices-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}
.orn-talk__office {
    background: #ffffff;
    border-radius: 20px;
    padding: 28px 30px;
    box-shadow: 0 12px 32px rgba(20, 24, 40, 0.06);
    border: 1px solid rgba(20, 24, 40, 0.05);
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.orn-talk__office-city {
    font-family: 'Archivo', sans-serif;
    font-size: 22px;
    font-weight: 800;
    color: var(--orn-text, #141828);
    margin: 0;
    letter-spacing: -0.01em;
}
.orn-talk__office-addr {
    font-family: 'Archivo', sans-serif;
    font-size: 15px;
    line-height: 1.55;
    color: var(--orn-muted, #6b7185);
    margin: 0;
}
.orn-talk__office-phone {
    font-family: 'Archivo', sans-serif;
    font-size: 16px;
    font-weight: 700;
    color: var(--orn-text, #141828);
    text-decoration: none;
    margin-top: auto;
}
.orn-talk__office-phone:hover { color: #E4002B; }
@media (max-width: 900px) {
    .orn-talk__offices-grid { grid-template-columns: 1fr; gap: 14px; }
    .orn-talk__office { padding: 22px 24px; }
}

.orn-talk__topics-title {
    font-family: 'Archivo', sans-serif;
    font-size: 28px;
    font-weight: 700;
    margin: 0 0 8px;
    color: var(--orn-text, #141828);
}
.orn-talk__topics-lede {
    font-size: 15px;
    color: var(--orn-muted, #6b7185);
    margin: 0 0 32px;
    max-width: 640px;
}
.orn-talk__topics {
    list-style: none;
    margin: 0;
    padding: 0;
    max-width: 780px;
    border-top: 1px solid rgba(20, 24, 40, 0.08);
}
.orn-talk__topic {
    border-bottom: 1px solid rgba(20, 24, 40, 0.08);
}
.orn-talk__topic-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    background: transparent;
    border: 0;
    padding: 22px 4px;
    cursor: pointer;
    text-align: left;
    font: inherit;
    transition: color 0.15s ease;
}
.orn-talk__topic-head:hover {
    color: var(--orn-accent, #1f4e8c);
}
.orn-talk__topic-label {
    font-family: 'Archivo', sans-serif;
    font-size: 18px;
    font-weight: 600;
    color: var(--orn-text, #141828);
    line-height: 1.3;
}
.orn-talk__topic-chevron {
    width: 10px;
    height: 10px;
    border-right: 2px solid var(--orn-text, #141828);
    border-bottom: 2px solid var(--orn-text, #141828);
    transform: rotate(45deg);
    transition: transform 0.2s ease;
    margin-right: 6px;
    flex: 0 0 auto;
}
.orn-talk__topic-head[aria-expanded="true"] .orn-talk__topic-chevron {
    transform: rotate(-135deg);
    margin-top: 6px;
}
.orn-talk__questions {
    list-style: none;
    margin: 0 0 20px;
    padding: 0 0 8px;
}
.orn-talk__questions li {
    margin: 0;
    padding: 0;
}
.orn-talk__question {
    display: block;
    width: 100%;
    background: transparent;
    border: 0;
    border-left: 2px solid rgba(20, 24, 40, 0.12);
    padding: 12px 16px;
    margin: 4px 0;
    cursor: pointer;
    text-align: left;
    font: inherit;
    font-size: 15px;
    color: var(--orn-text, #141828);
    line-height: 1.4;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.orn-talk__question:hover {
    background: rgba(31, 78, 140, 0.04);
    border-left-color: var(--orn-accent, #1f4e8c);
    color: var(--orn-accent, #1f4e8c);
}

@media (max-width: 640px) {
    .orn-talk { padding: 40px 0; }
    .orn-talk--topics { padding: 48px 0 72px; }
    .orn-talk__contact-card {
        grid-template-columns: 1fr;
        padding: 28px 24px;
        gap: 24px;
    }
    .orn-talk__phone { font-size: 26px; }
    .orn-talk__email { font-size: 20px; }
    .orn-talk__topics-title { font-size: 22px; }
    .orn-talk__topic-label { font-size: 16px; }
    .orn-talk__question { font-size: 14.5px; padding: 10px 14px; }
}

/* "Select seats" CTA loading state — spinner shown while the snapshot
   reprice runs before navigating to the seat map (JS toggles .is-loading). */
.orn-jd__dt-row-cta.is-loading { opacity: 0.9; cursor: progress; }
.orn-jd__cta-spin {
    display: inline-block;
    width: 15px;
    height: 15px;
    margin-right: 8px;
    vertical-align: -2px;
    border: 2px solid rgba(255, 255, 255, 0.4);
    border-top-color: #fff;
    border-radius: 50%;
    animation: orn-jd-spin 0.7s linear infinite;
}

/* ============================================================
   Book / "Confirm your trip" page — mobile pay bar + breakdown sheet
   ------------------------------------------------------------
   On phones (≤767px) the inline pay-now card and right-column summary
   are replaced by: a fixed bottom pay bar (amount + Breakdown toggle +
   Proceed), and the summary re-presented as a slide-up bottom sheet.
   Desktop (≥768px, two-column sticky) is untouched. New elements are
   hidden by default so they never show on desktop.
   ============================================================ */
.orn-book__mbar { display: none; }
.orn-book__sheet-backdrop { display: none; }
.orn-book__sheet-handle { display: none; }

@media (max-width: 767px) {
    /* Clear space for the fixed pay bar. */
    .orn-book__main { padding-bottom: 150px; }
    /* Extra breathing room under the expanded terms card so the
       cancellation-policy grid isn't hidden by the fixed pay bar. */
    .orn-book__terms { margin-bottom: 60px; }

    /* Keep the pay-now card (pay-choice options + Total/Rewards/Net rows)
       visible inline, but move its Proceed button + terms into the fixed
       bar so they aren't duplicated. */
    .orn-book__paynow-actions,
    .orn-book__paynow-terms,
    .orn-book__paynow-foot { display: none; }

    /* Selected pay-choice option reads red on the customer surface (design). */
    .orn-book__paynow-opt input[type="radio"] { accent-color: rgb(242, 13, 22); }
    .orn-book__paynow-opt:has(input:checked) {
        border-color: rgb(242, 13, 22);
        background: rgba(242, 13, 22, 0.04);
        box-shadow: 0 0 0 3px rgba(242, 13, 22, 0.10);
    }

    /* On phones the right rail collapses into a bottom sheet, so the trip
       detail moves out of it and renders inline below the pay-now panel. */
    .orn-book__jd--rail { display: none; }
    .orn-book__jd--main { display: block; margin-top: 18px; }

    /* ── Breakdown = slide-up bottom sheet (was the inline summary) ── */
    .orn-book__col-right {
        position: fixed;
        left: 0; right: 0; bottom: 0;
        z-index: 1300;
        max-height: 88vh;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        transform: translateY(100%);
        transition: transform 0.28s ease;
    }
    .orn-book__col-right.is-open { transform: translateY(0); }
    .orn-book__col-right .orn-book__summary {
        position: static;   /* not sticky inside the fixed bottom sheet */
        border-radius: 22px 22px 0 0;
        box-shadow: 0 -18px 48px rgba(20, 35, 59, 0.22);
        padding: 8px 20px calc(24px + env(safe-area-inset-bottom, 0px));
    }
    .orn-book__sheet-handle {
        display: block;
        width: 44px; height: 5px;
        margin: 8px auto 14px;
        padding: 0;
        border: none;
        border-radius: 3px;
        background: rgb(228, 224, 214);
        cursor: pointer;
    }
    .orn-book__sheet-backdrop {
        display: block;
        position: fixed;
        inset: 0;
        z-index: 1290;
        background: rgba(10, 20, 35, 0.5);
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.28s ease;
    }
    .orn-book__sheet-backdrop.is-open { opacity: 1; pointer-events: auto; }
    body.orn-book-sheet-open { overflow: hidden; }

    /* ── Fixed pay bar ── */
    .orn-book__mbar {
        display: block;
        position: fixed;
        left: 0; right: 0; bottom: 0;
        z-index: 1200;
        background: #fff;
        border-top: 1px solid var(--orn-line, #e8e8e8);
        box-shadow: 0 -6px 20px rgba(20, 35, 59, 0.10);
        padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
    }
    .orn-book__mbar-bd {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        width: 100%;
        margin-bottom: 10px;
        padding: 12px 14px;
        text-align: left;
        background: var(--orn-cream-2, #f6f1e6);
        border: 1px solid var(--orn-line, #e8e8e8);
        border-radius: 12px;
        cursor: pointer;
    }
    .orn-book__mbar-amt { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
    .orn-book__mbar-amt-k {
        font-family: var(--orn-font-body);
        font-size: 11.5px;
        color: var(--orn-mute, #7a8593);
    }
    .orn-book__mbar-amt-v {
        font-family: 'Archivo', sans-serif;
        font-weight: 800;
        font-size: 20px;
        letter-spacing: -0.3px;
        color: var(--orn-ink, #14233b);
    }
    .orn-book__mbar-bd-label {
        flex: 0 0 auto;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        font-family: var(--orn-font-mono, 'JetBrains Mono', monospace);
        font-size: 11px;
        font-weight: 700;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        color: var(--orn-navy, rgb(242, 13, 22));
    }
    .orn-book__mbar-caret { display: inline-block; transition: transform 0.2s ease; }
    .orn-book__mbar-bd[aria-expanded="true"] .orn-book__mbar-caret { transform: rotate(180deg); }
    .orn-book__mbar-proceed {
        display: block;
        width: 100%;
        background: var(--color-primary, #151515);
        color: #fff;
        border: none;
        border-radius: 14px;
        padding: 16px 20px;
        font-family: Inter, sans-serif;
        font-size: 15px;
        font-weight: 700;
        cursor: pointer;
    }
    .orn-book__mbar-terms {
        margin: 8px 0 0;
        text-align: center;
        font-family: var(--orn-font-body);
        font-size: 11.5px;
        color: var(--orn-mute, #7a8593);
    }
}

/* =============================================================
   Commercial proof — pure-HTML equation card on journeys_home.
   PUBLIC − ORN − CREDITS = TOTAL, red total is a link.
============================================================= */
.orn-proof { max-width: 1360px; margin: 0 auto; padding: 0; }
.orn-proof__head { text-align: left; margin-bottom: 42px; }
.orn-proof__eyebrow {
    font-family: 'Archivo', sans-serif;
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: rgb(215, 25, 32);
    display: block;
    margin-bottom: 15px;
}
.orn-proof__title {
    font-family: var(--orn-font-heading);
    font-weight: 400;
    font-size: clamp(38px, 2vw, 68px);
    line-height: 1.06;
    letter-spacing: -0.03em;
    color: var(--orn-ink, rgb(20, 35, 59));
    margin: 0;
    max-width: 1000px;
}
.orn-proof__equation {
    display: grid;
    grid-template-columns: 1fr auto 1fr auto 1fr auto 1.15fr;
    gap: clamp(10px, 1.6vw, 22px);
    align-items: stretch;
    margin-top: 24px;
}
.orn-proof__cell {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 22px 18px 24px;
    min-width: 0;
    text-decoration: none;
    color: inherit;
    background: #fff;
    border-radius: 20px;
    box-shadow: 0 10px 28px rgba(20, 35, 59, 0.06);
    border: 1px solid rgba(20, 35, 59, 0.04);
}
.orn-proof__cell--total {
    background: rgb(215, 25, 32);
    color: #fff;
    border-radius: 22px;
    padding: 26px 20px 28px;
    justify-content: center;
    box-shadow: 0 18px 40px rgba(215, 25, 32, 0.25);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.orn-proof__cell--total:hover,
.orn-proof__cell--total:focus {
    transform: translateY(-2px);
    box-shadow: 0 22px 48px rgba(215, 25, 32, 0.32);
    color: #fff;
}
.orn-proof__cell-label {
    font-family: 'Archivo', sans-serif;
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--orn-ink, rgb(20, 35, 59));
}
.orn-proof__cell-label--red { color: rgb(215, 25, 32); }
.orn-proof__cell-label--onDark { color: rgba(255, 255, 255, 0.92); font-weight: 600; letter-spacing: 0.2em; font-size: 12.5px; }
.orn-proof__cell-sub {
    font-family: 'Archivo', sans-serif;
    font-size: 14px;
    color: rgb(90, 100, 118);
    margin-top: 4px;
}
.orn-proof__cell--orn .orn-proof__cell-sub { color: rgb(140, 90, 90); }
.orn-proof__cell-amt {
    font-family: 'Archivo', sans-serif;
    font-weight: 800;
    font-size: clamp(28px, 2vw, 44px);
    letter-spacing: -0.02em;
    color: var(--orn-ink, rgb(20, 35, 59));
    margin: 14px 0 6px;
    line-height: 1.05;
}
.orn-proof__cell-amt--red { color: rgb(215, 25, 32); }
.orn-proof__cell-amt--green { color: rgb(31, 138, 91); }
.orn-proof__cell-amt--big {
    color: #fff;
    font-size: clamp(30px, 2.5vw, 52px);
    margin: 8px 0;
}
.orn-proof__cell-star { font-weight: 600; font-size: 0.7em; margin-left: 2px; opacity: 0.85; }
.orn-proof__cell-strike { display: none; }
.orn-proof__cell-divider {
    width: 60%;
    height: 1px;
    background: rgba(255, 255, 255, 0.30);
    margin: 4px auto 12px;
}
.orn-proof__cell-note {
    font-family: 'Archivo', sans-serif;
    font-size: 13px;
    color: rgb(110, 118, 132);
    line-height: 1.4;
    margin-top: 4px;
}
.orn-proof__cell-note--onDark { color: rgba(255, 255, 255, 0.92); font-weight: 500; font-size: 13.5px; }
.orn-proof__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #0a0a0a;
    color: #fff;
    font-family: 'Archivo', sans-serif;
    font-weight: 700;
    font-size: 14px;
    letter-spacing: 0.02em;
    padding: 12px 26px;
    border-radius: 999px;
    text-decoration: none;
    margin-top: 4px;
    transition: background 0.15s ease, transform 0.15s ease;
}
.orn-proof__cta:hover,
.orn-proof__cta:focus {
    background: #222;
    color: #fff;
    transform: translateY(-1px);
}
.orn-proof__op {
    font-family: 'Archivo', sans-serif;
    font-weight: 800;
    font-size: 24px;
    color: rgb(100, 110, 122);
    align-self: center;
    padding: 0 4px;
    line-height: 1;
    background: #fff;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    justify-self: center;
    box-shadow: 0 4px 12px rgba(20, 35, 59, 0.08);
}

@media (max-width: 900px) {
    /* Row 1: the three source cells sit in a compact strip.
       Row 2: the red total drops below and spans the full width.
       Operators between the source cells are hidden on this layout;
       the = between credits and total is preserved as a small pill
       sitting between the two rows. */
    .orn-proof__equation {
        grid-template-columns: 1fr 1fr 1fr;
        grid-template-rows: auto auto auto;
        gap: 8px;
    }
    /* Mobile: hide the three source cells + all ops; render only the total
       cell with a strike-through of the market price above the payable amount. */
    .orn-proof__cell--public,
    .orn-proof__cell--orn,
    .orn-proof__cell--credits,
    .orn-proof__op { display: none; }
    .orn-proof__cell--total {
        grid-row: 1;
        grid-column: 1 / -1;
        padding: 24px 22px 24px;
    }
    .orn-proof__cell-strike { display: block; font-family: var(--orn-font-mono); font-size: 18px; color: rgba(255, 255, 255, 0.55); text-decoration: line-through; margin-top: 6px; font-variant-numeric: tabular-nums; }
    /* Shrink typography inside the compact strip so each column holds a
       label + amount without wrapping the price. */
    .orn-proof__cell-label { font-size: 10.5px; letter-spacing: 0.16em; }
    .orn-proof__cell-sub   { font-size: 11.5px; margin-top: 2px; }
    .orn-proof__cell-amt   { font-size: 18px; margin: 8px 0 4px; }
    .orn-proof__cell-note  { font-size: 11px; line-height: 1.35; }
    /* Total keeps a bigger amount + button. */
    .orn-proof__cell--total .orn-proof__cell-label { font-size: 11px; }
    .orn-proof__cell-amt--big { font-size: 30px; margin: 6px 0 10px; }
    .orn-proof__cta { font-size: 14px; padding: 12px 26px; }
    .orn-proof__title { font-size: clamp(30px, 6vw, 44px); }
    .orn-proof__head { margin-bottom: 24px; }
}

@media (max-width: 420px) {
    .orn-proof__cell { padding: 12px 6px 14px; }
    .orn-proof__cell-label { font-size: 9.5px; letter-spacing: 0.14em; }
    .orn-proof__cell-sub   { font-size: 10.5px; }
    .orn-proof__cell-amt   { font-size: 16px; }
    .orn-proof__cell-note  { display: none; }
}

/* ============================================================
   Become-a-Franchise landing (franchise.jsp)
   Scoped to body.orn-fr-page. Anton + Archivo, cream + deep-red.
   ============================================================ */
.orn-fr-page { font-family: Archivo, sans-serif; color: #141210; background: #F7F4EF; margin: 0; }
.orn-fr-page * { box-sizing: border-box; }

/* Hero */
.orn-fr-hero { padding: 80px 24px 60px; background: #F7F4EF; border-bottom: 1px solid #E4DCC9; }
.orn-fr-hero__inner { max-width: 1180px; margin: 0 auto; text-align: center; }
.orn-fr-hero__eyebrow { font-family: Archivo, sans-serif; font-weight: 700; letter-spacing: 0.22em; font-size: 12px; color: #E4002B; margin-bottom: 20px; }
.orn-fr-hero__hd { font-family: Anton, sans-serif; font-size: clamp(48px, 8vw, 108px); line-height: 1.02; margin: 0 0 20px; letter-spacing: -0.005em; text-transform: uppercase; text-align: center; }
.orn-fr-hero__hd span { color: #E4002B; }
.orn-fr-hero__lede { max-width: 720px; margin: 0 auto 32px; font-size: 18px; line-height: 1.5; color: #4A423A; }
.orn-fr-hero__ctas { display: inline-flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
.orn-fr-hero__cta { display: inline-block; padding: 15px 30px; font-family: "Archivo Narrow", Archivo, sans-serif; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; font-size: 13px; text-decoration: none; border-radius: 999px; transition: transform 0.15s ease, background 0.15s ease; }
.orn-fr-hero__cta--primary { background: #E4002B; color: #fff; }
.orn-fr-hero__cta--primary:hover { background: #B00022; transform: translateY(-1px); }
.orn-fr-hero__cta--ghost { background: transparent; color: #141210; border: 1.5px solid #141210; }
.orn-fr-hero__cta--ghost:hover { background: #141210; color: #fff; }

/* Stats band */
.orn-fr-stats { background: #141210; color: #fff; padding: 44px 24px; }
.orn-fr-stats__inner { max-width: 1180px; margin: 0 auto; display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 30px 24px; }
.orn-fr-stat { text-align: center; }
.orn-fr-stat__num { font-family: Anton, sans-serif; font-size: 54px; line-height: 1; color: #E4002B; letter-spacing: 0.01em; }
.orn-fr-stat__lbl { font-size: 13px; color: #C7BFB0; margin-top: 8px; letter-spacing: 0.02em; }

/* Why ORN */
.orn-fr-why { padding: 88px 24px; background: #FBF9F4; }
.orn-fr-why__inner { max-width: 1180px; margin: 0 auto; }
.orn-fr-why__hd-block { max-width: 820px; margin: 0 auto 48px; text-align: center; }
.orn-fr-why__eyebrow { font-weight: 700; letter-spacing: 0.22em; font-size: 12px; color: #E4002B; margin-bottom: 14px; }
.orn-fr-why__hd { font-family: Anton, sans-serif; font-size: clamp(36px, 5.2vw, 68px); line-height: 1.05; margin: 0 0 18px; text-transform: uppercase; letter-spacing: -0.005em; text-align: center; }
.orn-fr-why__hd span { color: #E4002B; }
.orn-fr-why__sub { font-size: 17px; line-height: 1.55; color: #4A423A; }
.orn-fr-why__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; }
.orn-fr-why__card { background: #fff; border: 1px solid #E4DCC9; border-radius: 18px; padding: 26px 24px; transition: transform 0.15s ease, box-shadow 0.15s ease; }
.orn-fr-why__card:hover { transform: translateY(-2px); box-shadow: 0 10px 30px rgba(20, 18, 16, 0.06); }
.orn-fr-why__card-hd { font-family: "Archivo Narrow", Archivo, sans-serif; font-weight: 700; font-size: 19px; margin-bottom: 10px; color: #141210; }
.orn-fr-why__card p { margin: 0; font-size: 15px; line-height: 1.55; color: #4A423A; }

/* How it works */
.orn-fr-how { padding: 88px 24px; background: #F7F4EF; }
.orn-fr-how__inner { max-width: 1180px; margin: 0 auto; text-align: center; }
.orn-fr-how__eyebrow { font-weight: 700; letter-spacing: 0.22em; font-size: 12px; color: #E4002B; margin-bottom: 14px; }
.orn-fr-how__hd { font-family: Anton, sans-serif; font-size: clamp(36px, 5.2vw, 68px); line-height: 1.05; margin: 0 0 48px; text-transform: uppercase; letter-spacing: -0.005em; text-align: center; }
.orn-fr-how__steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 18px; text-align: left; }
.orn-fr-how__step { background: #fff; border: 1px solid #E4DCC9; border-radius: 16px; padding: 22px 20px; position: relative; }
.orn-fr-how__step-num { font-family: Anton, sans-serif; font-size: 32px; color: #E4002B; margin-bottom: 8px; letter-spacing: 0.02em; }
.orn-fr-how__step-hd { font-family: "Archivo Narrow", Archivo, sans-serif; font-weight: 700; font-size: 18px; margin-bottom: 8px; color: #141210; }
.orn-fr-how__step p { margin: 0; font-size: 14px; line-height: 1.55; color: #4A423A; }

/* Who we're looking for */
.orn-fr-who { padding: 88px 24px; background: #EDE7DC; }
.orn-fr-who__inner { max-width: 1180px; margin: 0 auto; }
.orn-fr-who__eyebrow { font-weight: 700; letter-spacing: 0.22em; font-size: 12px; color: #E4002B; margin-bottom: 14px; text-align: center; }
.orn-fr-who__hd { font-family: Anton, sans-serif; font-size: clamp(36px, 5.2vw, 68px); line-height: 1.05; margin: 0 0 44px; text-transform: uppercase; letter-spacing: -0.005em; text-align: center; }
.orn-fr-who__hd span { color: #E4002B; }
.orn-fr-who__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 18px; }
.orn-fr-who__box { background: #fff; border-radius: 16px; padding: 26px 24px; }
.orn-fr-who__box-hd { font-family: "Archivo Narrow", Archivo, sans-serif; font-weight: 700; font-size: 19px; margin-bottom: 10px; color: #141210; }
.orn-fr-who__box p { margin: 0; font-size: 15px; line-height: 1.55; color: #4A423A; }

/* Enquiry form */
.orn-fr-enquire { padding: 96px 24px; background: #FBF9F4; }
.orn-fr-enquire__inner { max-width: 1180px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: start; }
.orn-fr-enquire__copy { padding-top: 8px; }
.orn-fr-enquire__eyebrow { font-weight: 700; letter-spacing: 0.22em; font-size: 12px; color: #E4002B; margin-bottom: 14px; }
.orn-fr-enquire__hd { font-family: Anton, sans-serif; font-size: clamp(36px, 5vw, 60px); line-height: 1.05; margin: 0 0 18px; text-transform: uppercase; letter-spacing: -0.005em; }
.orn-fr-enquire__sub { font-size: 17px; line-height: 1.55; color: #4A423A; margin-bottom: 24px; }
.orn-fr-enquire__list { list-style: none; padding: 0; margin: 0 0 28px; }
.orn-fr-enquire__list li { padding-left: 22px; position: relative; font-size: 15px; color: #4A423A; margin-bottom: 10px; }
.orn-fr-enquire__list li::before { content: "\2713"; position: absolute; left: 0; top: 0; color: #E4002B; font-weight: 700; }
.orn-fr-enquire__reach { background: #F0EBDF; border-radius: 12px; padding: 16px 18px; }
.orn-fr-enquire__reach-hd { font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; font-weight: 700; color: #4A423A; margin-bottom: 4px; }
.orn-fr-enquire__mail { color: #E4002B; font-weight: 700; font-size: 17px; text-decoration: none; }
.orn-fr-enquire__mail:hover { text-decoration: underline; }

.orn-fr-enquire__form-wrap { background: #fff; border: 1px solid #E4DCC9; border-radius: 22px; padding: 32px; box-shadow: 0 12px 40px rgba(20, 18, 16, 0.05); }
.orn-fr-enquire__form { display: flex; flex-direction: column; gap: 18px; }
.orn-fr-enquire__row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.orn-fr-enquire__field { display: flex; flex-direction: column; gap: 6px; }
.orn-fr-enquire__lbl { font-family: "Archivo Narrow", Archivo, sans-serif; font-weight: 700; font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: #4A423A; }
.orn-fr-enquire__inp { border: 1px solid #D9D0BE; border-radius: 10px; padding: 13px 15px; font-family: Archivo, sans-serif; font-size: 15px; color: #141210; background: #FBF9F4; transition: border-color 0.15s ease, background 0.15s ease; }
.orn-fr-enquire__inp:focus { outline: none; border-color: #E4002B; background: #fff; }
.orn-fr-enquire__inp--ta { resize: vertical; min-height: 96px; font-family: Archivo, sans-serif; }

/* Thank-you modal */
.orn-fr-modal { position: fixed; inset: 0; background: rgba(20, 18, 16, 0.65); z-index: 9999; display: flex; align-items: center; justify-content: center; padding: 20px; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); }
.orn-fr-modal__card { position: relative; background: #fff; border-radius: 22px; max-width: 460px; width: 100%; padding: 44px 36px 36px; text-align: center; box-shadow: 0 30px 80px rgba(20, 18, 16, 0.35); animation: ornFrModalIn 0.22s ease-out; }
@keyframes ornFrModalIn { from { opacity: 0; transform: translateY(12px) scale(0.98); } to { opacity: 1; transform: translateY(0) scale(1); } }
.orn-fr-modal__close { position: absolute; top: 14px; right: 16px; width: 34px; height: 34px; border-radius: 50%; border: 0; background: transparent; color: #7B7368; font-size: 26px; line-height: 1; cursor: pointer; transition: background 0.15s ease, color 0.15s ease; }
.orn-fr-modal__close:hover { background: #F0EBDF; color: #141210; }
.orn-fr-modal__tick { width: 72px; height: 72px; line-height: 72px; margin: 0 auto 20px; border-radius: 50%; background: #E4002B; color: #fff; font-size: 36px; font-weight: 700; }
.orn-fr-modal__hd { font-family: Anton, sans-serif; font-size: 32px; text-transform: uppercase; margin: 0 0 12px; color: #141210; letter-spacing: -0.005em; line-height: 1.1; text-align: center; }
.orn-fr-modal__body { font-size: 16px; line-height: 1.55; color: #4A423A; margin: 0 0 26px; }
.orn-fr-modal__btn { display: inline-block; padding: 12px 30px; background: #141210; color: #fff; font-family: "Archivo Narrow", Archivo, sans-serif; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; font-size: 13px; border: 0; border-radius: 999px; cursor: pointer; transition: background 0.15s ease, transform 0.15s ease; }
.orn-fr-modal__btn:hover { background: #E4002B; transform: translateY(-1px); }
@media (max-width: 480px) {
    .orn-fr-modal__card { padding: 36px 24px 28px; }
    .orn-fr-modal__hd   { font-size: 26px; }
}
.orn-fr-enquire__submit-wrap { margin-top: 8px; text-align: center; }
.orn-fr-enquire__submit { display: inline-block; padding: 15px 40px; background: #E4002B; color: #fff; font-family: "Archivo Narrow", Archivo, sans-serif; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; font-size: 14px; text-decoration: none; border-radius: 999px; transition: background 0.15s ease, transform 0.15s ease; }
.orn-fr-enquire__submit:hover { background: #B00022; transform: translateY(-1px); }
.orn-fr-enquire__legal { margin-top: 12px; font-size: 12px; color: #7B7368; }

/* Final CTA */
.orn-fr-final { padding: 88px 24px; background: #141210; color: #fff; text-align: center; }
.orn-fr-final__eyebrow { font-weight: 700; letter-spacing: 0.22em; font-size: 12px; color: #E4002B; margin-bottom: 14px; }
.orn-fr-final__hd { font-family: Anton, sans-serif; font-size: clamp(40px, 6.5vw, 88px); line-height: 1.02; margin: 0 0 30px; text-transform: uppercase; letter-spacing: -0.005em; color: #fff; text-align: center; }
.orn-fr-final__hd span { color: #E4002B; }
.orn-fr-final__btn { display: inline-block; padding: 18px 40px; background: #fff; color: #141210; font-family: "Archivo Narrow", Archivo, sans-serif; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; font-size: 14px; text-decoration: none; border-radius: 999px; transition: background 0.15s ease, transform 0.15s ease; }
.orn-fr-final__btn:hover { background: #E4002B; color: #fff; transform: translateY(-1px); }

@media (max-width: 900px) {
    .orn-fr-enquire__inner { grid-template-columns: 1fr; gap: 40px; }
    .orn-fr-enquire__row { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
    .orn-fr-hero { padding: 60px 20px 44px; }
    .orn-fr-why, .orn-fr-how, .orn-fr-who, .orn-fr-enquire, .orn-fr-final { padding: 60px 20px; }
    .orn-fr-stats { padding: 32px 20px; }
    .orn-fr-stat__num { font-size: 44px; }
    .orn-fr-enquire__form-wrap { padding: 24px; }
}

/* Hide the inline copilot card on mobile — the sidebar it lives in stacks
   below the main content and pushes the primary CTAs way down. Chat is
   still reachable via the floating .orn-copilot-fab and the /talk-to-orn
   page. */
@media (max-width: 900px) {
    .orn-jd__copilot-card { display: none !important; }
}
/* ═══════════════════════════════════════════════════════════════
   Refer & earn page (.orn-page--refer-earn)
   Peer referral share page. Exact-match ORN tokens reused for paper,
   radius and spacing; design-specific brand hex kept literal so the
   approved layout renders 1:1.
   ═══════════════════════════════════════════════════════════════ */
.orn-page--refer-earn .orn-re { background: #F3F3F3; color: #111; }
.orn-page--refer-earn .orn-re__wrap { max-width: var(--orn-container); margin: 0 auto; padding: 0 40px; }

/* Hero */
.orn-page--refer-earn .orn-re__hero { padding: 56px 0 24px; }
.orn-page--refer-earn .orn-re__crumbs { display: flex; align-items: center; gap: var(--sp-3); margin-bottom: 14px; }
.orn-page--refer-earn .orn-re__crumbs a { color: #666; font-size: 14px; font-weight: 500; }
.orn-page--refer-earn .orn-re__crumbs span.sep { color: #bbb; }
.orn-page--refer-earn .orn-re__crumbs span.cur { color: #111; font-size: 14px; font-weight: 600; }
.orn-page--refer-earn .orn-re__title { font-size: 48px; font-weight: 800; letter-spacing: -0.03em; line-height: 1.02; margin: 0 0 14px; max-width: 900px; }
.orn-page--refer-earn .orn-re__title .amt { color: #E4002B; }
.orn-page--refer-earn .orn-re__lede { font-size: 18px; color: #555; max-width: 640px; line-height: 1.5; margin: 0; }

/* Body grid */
.orn-page--refer-earn .orn-re__body { padding: 24px 0 40px; }
.orn-page--refer-earn .orn-re__grid { display: grid; grid-template-columns: 1.35fr 1fr; gap: var(--sp-5); }

.orn-page--refer-earn .orn-re__card { background: var(--orn-paper); border-radius: 20px; }
.orn-page--refer-earn .orn-re__card--main { padding: 40px 44px; }

.orn-page--refer-earn .orn-re__label { font-size: 12px; font-weight: 700; letter-spacing: 0.16em; color: #888; text-transform: uppercase; margin: 0 0 12px; }

/* Code box */
.orn-page--refer-earn .orn-re__codebox { background: #F7F5F1; border: 2px dashed #E4002B; border-radius: var(--r-tile); padding: 22px 26px; display: flex; align-items: center; justify-content: space-between; gap: var(--sp-4); margin-bottom: 28px; }
.orn-page--refer-earn .orn-re__code { font-size: 38px; font-weight: 800; letter-spacing: 0.08em; color: #111; word-break: break-all; }
.orn-page--refer-earn .orn-re__codecopy { background: none; border: none; cursor: pointer; color: #E4002B; font-size: 12px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; white-space: nowrap; padding: 6px 0; }
.orn-page--refer-earn .orn-re__codecopy:hover { color: #B60022; }

/* Share link row */
.orn-page--refer-earn .orn-re__linkrow { display: flex; gap: 10px; margin-bottom: 24px; }
.orn-page--refer-earn .orn-re__linkrow input { flex: 1; background: #F7F7F7; border: 1px solid #E5E5E5; border-radius: var(--r-soft); padding: 16px 20px; font-size: 15px; color: #333; font-family: inherit; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.orn-page--refer-earn .orn-re__linkrow input:focus { outline: none; border-color: #111; }

.orn-page--refer-earn .orn-re__btn { border: none; border-radius: var(--r-soft); font-size: 15px; font-weight: 700; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-family: inherit; text-decoration: none; }
.orn-page--refer-earn .orn-re__btn svg { width: 18px; height: 18px; }
.orn-page--refer-earn .orn-re__btn--dark { background: #111; color: #fff; padding: 0 26px; min-width: 130px; }
.orn-page--refer-earn .orn-re__btn--dark:hover { background: #000; color: #fff; }

/* Direct share */
.orn-page--refer-earn .orn-re__share { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-3); }
.orn-page--refer-earn .orn-re__share .orn-re__btn { padding: 18px 20px; border-radius: var(--r-tile); font-size: 16px; }
.orn-page--refer-earn .orn-re__share .orn-re__btn svg { width: 22px; height: 22px; }
.orn-page--refer-earn .orn-re__btn--wa { background: #25D366; color: #fff; }
.orn-page--refer-earn .orn-re__btn--wa:hover { background: #1FB558; color: #fff; }
.orn-page--refer-earn .orn-re__btn--email { background: #fff; color: #111; border: 1.5px solid #E5E5E5; }
.orn-page--refer-earn .orn-re__btn--email:hover { border-color: #111; color: #111; }

.orn-page--refer-earn .orn-re__terms { margin: 22px 0 0; padding-top: 22px; border-top: 1px solid #EEE; font-size: 13px; color: #888; line-height: 1.5; }

/* Right column */
.orn-page--refer-earn .orn-re__side { display: flex; flex-direction: column; gap: var(--sp-5); }

.orn-page--refer-earn .orn-re__earned { background: #111; color: #fff; border-radius: 20px; padding: 32px 34px; }
.orn-page--refer-earn .orn-re__earned .lbl { font-size: 12px; font-weight: 700; letter-spacing: 0.16em; color: #888; text-transform: uppercase; margin: 0 0 14px; }
.orn-page--refer-earn .orn-re__earned .val { font-size: 52px; font-weight: 800; letter-spacing: -0.03em; line-height: 1; }
.orn-page--refer-earn .orn-re__earned .sub { font-size: 14px; color: #B5AB9A; margin: 8px 0 0; }
.orn-page--refer-earn .orn-re__earned .row { display: flex; gap: var(--sp-5); margin-top: 26px; padding-top: 22px; border-top: 1px solid #333; }
.orn-page--refer-earn .orn-re__earned .row .k { font-size: 11px; letter-spacing: 0.16em; color: #888; text-transform: uppercase; font-weight: 700; display: block; margin-bottom: 6px; }
.orn-page--refer-earn .orn-re__earned .row .v { font-size: 22px; font-weight: 700; color: #FFB800; }

.orn-page--refer-earn .orn-re__card--refs { padding: 28px 30px; }
.orn-page--refer-earn .orn-re__refhd { font-size: 18px; font-weight: 700; margin: 0 0 18px; }
.orn-page--refer-earn .orn-re__list { list-style: none; margin: 0; padding: 0; }
.orn-page--refer-earn .orn-re__list li { display: flex; align-items: center; gap: 14px; padding: 14px 0; border-bottom: 1px solid #F0F0F0; }
.orn-page--refer-earn .orn-re__list li:last-child { border-bottom: none; }
.orn-page--refer-earn .orn-re__avatar { width: 38px; height: 38px; border-radius: var(--r-pill); color: #fff; font-weight: 700; font-size: 14px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.orn-page--refer-earn .orn-re__person { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.orn-page--refer-earn .orn-re__person .nm { font-size: 15px; font-weight: 600; color: #111; }
.orn-page--refer-earn .orn-re__person .mt { font-size: 13px; color: #888; }
.orn-page--refer-earn .orn-re__badge { font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; padding: 6px 10px; border-radius: var(--r-pill); background: #E8F7EA; color: #1D8B3A; white-space: nowrap; }
.orn-page--refer-earn .orn-re__empty { font-size: 14px; color: #888; padding: 10px 0; }

/* How it works */
.orn-page--refer-earn .orn-re__hiw { padding: 24px 0 80px; }
.orn-page--refer-earn .orn-re__hiwcard { background: var(--orn-paper); border-radius: 20px; padding: 44px 48px; }
.orn-page--refer-earn .orn-re__eyebrow { font-size: 12px; font-weight: 700; letter-spacing: 0.16em; color: #888; text-transform: uppercase; margin: 0 0 14px; }
.orn-page--refer-earn .orn-re__hiwtitle { font-size: 34px; font-weight: 800; letter-spacing: -0.025em; margin: 0 0 var(--sp-6); }
.orn-page--refer-earn .orn-re__steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-6); }
.orn-page--refer-earn .orn-re__stepn { width: 44px; height: 44px; border-radius: var(--r-pill); background: #E4002B; color: #fff; font-weight: 800; font-size: 18px; display: flex; align-items: center; justify-content: center; margin-bottom: 18px; }
.orn-page--refer-earn .orn-re__steptitle { font-size: 20px; font-weight: 700; margin: 0 0 8px; }
.orn-page--refer-earn .orn-re__steptext { font-size: 15px; color: #666; line-height: 1.55; margin: 0; }

/* Toast */
.orn-page--refer-earn .orn-re__toast { position: fixed; bottom: 32px; left: 50%; transform: translateX(-50%); background: #111; color: #fff; padding: 14px 22px; border-radius: var(--r-soft); font-size: 14px; font-weight: 600; box-shadow: var(--sh-raised); z-index: 100; opacity: 0; pointer-events: none; transition: opacity .2s ease; }
.orn-page--refer-earn .orn-re__toast.show { opacity: 1; }

@media (max-width: 900px) {
    .orn-page--refer-earn .orn-re__wrap { padding: 0 20px; }
    .orn-page--refer-earn .orn-re__hero { padding: 32px 0 16px; }
    .orn-page--refer-earn .orn-re__title { font-size: 34px; }
    .orn-page--refer-earn .orn-re__lede { font-size: 16px; }
    .orn-page--refer-earn .orn-re__grid { grid-template-columns: 1fr; }
    .orn-page--refer-earn .orn-re__card--main { padding: 28px 22px; }
    .orn-page--refer-earn .orn-re__code { font-size: 30px; }
    .orn-page--refer-earn .orn-re__steps { grid-template-columns: 1fr; gap: var(--sp-5); }
    .orn-page--refer-earn .orn-re__hiwcard { padding: 32px 24px; }
    .orn-page--refer-earn .orn-re__hiwtitle { font-size: 26px; }
    .orn-page--refer-earn .orn-re__earned { padding: 28px 26px; }
    .orn-page--refer-earn .orn-re__earned .val { font-size: 44px; }
    .orn-page--refer-earn .orn-re__hiw { padding: 16px 0 56px; }
}

/* Mobile: stick the journey-detail tabs to the top as the user scrolls so
   switching between sections stays one tap away. Uses --orn-cream (page
   background) to blend into the section — --orn-paper would be white on a cream
   page and read as a stray banner. Desktop keeps tabs in-flow.

   iOS Safari won't keep an element position:sticky if that SAME element is an
   overflow-x scroll container. So the structure is two elements (see
   tour_detail_tabs.jsp): the .orn-jd__tabbar WRAPPER sticks (no overflow) and
   the inner .orn-jd__tabs stays the horizontal-scroll track (base rule keeps
   flex-nowrap + overflow-x:auto — pills scroll sideways, never wrap). */
@media (max-width: 900px) {
    .orn-jd__tabbar {
        position: -webkit-sticky;
        position: sticky;
        top: 0;
        z-index: 40;
        background: var(--orn-cream, transparent);
        padding: 10px var(--sp-5, 20px);
        margin-left: calc(var(--sp-5, 20px) * -1);
        margin-right: calc(var(--sp-5, 20px) * -1);
    }
    /* Drop-shadow only once actually pinned (JS toggles --stuck). */
    .orn-jd__tabbar--stuck { box-shadow: 0 6px 10px -6px rgba(20, 35, 59, 0.18); }
    /* Trailing scroll room so the last pill isn't flush to the edge. */
    .orn-jd__tabs { padding-right: var(--sp-4, 16px); }
}
@media (max-width: 560px) {
    .orn-page--refer-earn .orn-re__wrap { padding: 0 16px; }
    .orn-page--refer-earn .orn-re__hero { padding: 24px 0 12px; }
    .orn-page--refer-earn .orn-re__title { font-size: 28px; line-height: 1.08; }
    .orn-page--refer-earn .orn-re__codebox { flex-direction: column; align-items: flex-start; gap: var(--sp-3); padding: 20px 22px; }
    .orn-page--refer-earn .orn-re__code { font-size: 26px; letter-spacing: 0.06em; }
    .orn-page--refer-earn .orn-re__linkrow { flex-direction: column; }
    .orn-page--refer-earn .orn-re__btn--dark { width: 100%; padding: 15px 0; min-width: 0; }
    .orn-page--refer-earn .orn-re__share { grid-template-columns: 1fr; }
    .orn-page--refer-earn .orn-re__card--main { padding: 24px 18px; }
    .orn-page--refer-earn .orn-re__card--refs { padding: 22px 20px; }
    .orn-page--refer-earn .orn-re__toast { left: 16px; right: 16px; transform: none; text-align: center; }
}
/* Refer & earn — "See all" control + referrals modal (MODAL_PANEL) */
.orn-page--refer-earn .orn-re__refhead { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); margin-bottom: 18px; }
.orn-page--refer-earn .orn-re__refhead .orn-re__refhd { margin: 0; }
.orn-page--refer-earn .orn-re__seeall { background: none; border: none; cursor: pointer; color: #E4002B; font-size: 13px; font-weight: 700; font-family: inherit; padding: 4px 0; white-space: nowrap; }
.orn-page--refer-earn .orn-re__seeall:hover { color: #B60022; }
.orn-page--refer-earn .orn-re__modal { max-width: 440px; width: 100%; }
.orn-page--refer-earn .orn-re__modal-title { font-size: 20px; font-weight: 700; margin: 0 0 8px; color: #111; }
.orn-page--refer-earn .orn-re__list--modal { max-height: 60vh; overflow-y: auto; }

/* =============================================================
 * Home — Why ORN compact stats band
 * Sits between the Maths section and the Join CTA on welcome.jsp.
 * Four stats in a row, right-aligned "know more" link, single line.
 * ============================================================= */
.orn-why-band {
    background: #fff;
    border: 1px solid rgb(231, 231, 231);
    border-radius: 20px;
    padding: 26px 40px;
    display: flex;
    align-items: center;
    gap: 125px;
    flex-wrap: wrap;
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.03);
}
.orn-why-band__stat { display: flex; flex-direction: column; gap: 4px; flex: 0 0 auto; }
.orn-why-band__stat-v {
    font-family: Archivo, sans-serif;
    font-weight: 800;
    font-size: 32px;
    line-height: 1;
    color: var(--orn-text);
    letter-spacing: -0.01em;
}
.orn-why-band__stat-k {
    font-family: var(--orn-font-mono, "JetBrains Mono", monospace);
    font-size: 11px;
    letter-spacing: 0.18em;
    color: var(--orn-text-muted);
    text-transform: uppercase;
    font-weight: 600;
}
.orn-why-band__more {
    margin-left: auto;
    font-family: Archivo, sans-serif;
    font-weight: 700;
    font-size: 14px;
    color: var(--orn-navy);
    text-decoration: none;
    white-space: nowrap;
}
.orn-why-band__more:hover { text-decoration: underline; }
@media (max-width: 720px) {
    .orn-why-band { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 18px; }
    .orn-why-band__stat { flex: none; min-width: 0; padding: 14px 14px 14px 16px; border-left: 3px solid var(--orn-text); background: rgba(0, 0, 0, 0.02); border-radius: 8px; gap: 6px; }
    .orn-why-band__stat:nth-child(4) { border-left-color: var(--orn-navy); }
    .orn-why-band__stat-v { font-size: 22px; font-weight: 800; }
    .orn-why-band__stat-k { font-size: 11px; letter-spacing: 0.10em; text-transform: none; font-weight: 500; color: var(--orn-text-muted); }
    .orn-why-band__more { grid-column: 1 / -1; margin-left: 0; text-align: right; white-space: nowrap; font-size: 13px; padding-top: 4px; }
}

/* ── One clean price · two-card layout (group_tours.jsp) ─────────────── */
.orn-clean__head { text-align: center; margin-bottom: var(--sp-6); }
.orn-clean__eyebrow { font-family: var(--orn-font-mono); letter-spacing: 0.24em; text-transform: uppercase; color: var(--orn-navy); font-size: var(--orn-fs-tiny); font-weight: 700; display: block; margin-bottom: var(--sp-3); }
.orn-clean__title { font-family: var(--orn-font-display); font-size: 56px; line-height: 1.05; color: var(--orn-text); margin: 0; font-weight: 700; letter-spacing: -0.01em; }
.orn-clean__title em { font-style: italic; font-weight: 500; }
.orn-clean__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-6); align-items: stretch; max-width: 1360px; margin: 0 auto; }
.orn-clean__card { border-radius: var(--r-card); padding: 36px 40px; display: flex; flex-direction: column; }
.orn-clean__card--includes { background: var(--orn-cream-2); color: var(--orn-text); border: 1px solid var(--orn-cream-3); }
.orn-clean__card--maths    { background: var(--orn-text); color: rgba(255, 255, 255, 0.92); }
.orn-clean__card-hd { font-family: var(--orn-font-display); font-size: 30px; line-height: 1.15; font-weight: 600; margin: 0 0 var(--sp-5); }
.orn-clean__card--maths .orn-clean__card-hd { color: #fff; }
.orn-clean__inc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 32px; }
.orn-clean__inc-col { list-style: none; margin: 0; padding: 0; }
.orn-clean__inc-col li { display: flex; align-items: flex-start; gap: 10px; padding: 6px 0; font-size: 14px; color: var(--orn-text); line-height: 1.45; }
.orn-clean__tick { color: rgb(31, 138, 91); font-weight: 700; flex-shrink: 0; margin-top: 1px; }
.orn-clean__excl { margin-top: var(--sp-5); padding-top: var(--sp-4); border-top: 1px solid var(--orn-cream-3); font-size: 13px; color: var(--orn-text-muted); line-height: 1.5; }
.orn-clean__row { display: flex; justify-content: space-between; align-items: baseline; padding: 12px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.10); font-size: 15px; }
.orn-clean__row-k { color: rgba(255, 255, 255, 0.85); }
.orn-clean__row-v { color: #fff; font-family: var(--orn-font-mono); font-size: 15px; }
.orn-clean__row-mult { color: rgba(255, 255, 255, 0.55); }
.orn-clean__row--sub .orn-clean__row-k,
.orn-clean__row--sub .orn-clean__row-v { color: #fff; font-size: 17px; }
.orn-clean__row--credit .orn-clean__row-k,
.orn-clean__row--credit .orn-clean__row-v { color: #fff; }
.orn-clean__paybox { margin-top: var(--sp-5); background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: var(--r-soft); padding: 22px 24px; }
.orn-clean__pay-label { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--orn-navy); font-weight: 700; margin-bottom: var(--sp-2); }
.orn-clean__pay-row { display: flex; justify-content: space-between; align-items: center; gap: var(--sp-4); flex-wrap: wrap; }
.orn-clean__pay-amt-col { display: flex; flex-direction: column; }
.orn-clean__pay-amt { font-family: var(--orn-font-display); font-size: 40px; line-height: 1; font-weight: 700; color: #fff; letter-spacing: -0.01em; }
.orn-clean__pay-sub { font-size: 12.5px; color: rgba(255, 255, 255, 0.6); margin-top: 6px; }
.orn-clean__pay-cta { display: inline-block; background: var(--orn-navy); color: #fff; font-family: var(--orn-font-mono); font-size: 13px; letter-spacing: 0.10em; text-transform: none; font-weight: 700; padding: 14px 26px; border-radius: var(--r-pill); text-decoration: none; transition: background 0.15s ease; }
.orn-clean__pay-cta:hover, .orn-clean__pay-cta:focus { background: var(--orn-navy-2); color: #fff; }

@media (max-width: 900px) {
    .orn-clean__grid { grid-template-columns: 1fr; }
    .orn-clean__title { font-size: 40px; }
    .orn-clean__card { padding: 26px 22px; }
    .orn-clean__inc-grid { grid-template-columns: 1fr; gap: 4px; }
    .orn-clean__pay-amt { font-size: 32px; }
}

/* ── Clean-price maths — per-person / for-2 two-column values ── */
.orn-clean__row-v-pair { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-4); min-width: 260px; text-align: right; }
.orn-clean__col-v { font-family: var(--orn-font-mono); font-size: 15px; color: #fff; }
.orn-clean__col-lbl { font-family: var(--orn-font-mono); font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; color: rgba(255, 255, 255, 0.55); font-weight: 700; }
.orn-clean__row--head { border-bottom: none; padding-bottom: 4px; }
.orn-clean__row--sub .orn-clean__col-v { font-size: 17px; }
.orn-clean__row--credit .orn-clean__col-v { color: #fff; }
.orn-clean__pay-amt-pair { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-6); }
.orn-clean__pay-amt-col-item { display: flex; flex-direction: column; }
.orn-clean__pay-cta { font-family: Anton, sans-serif; font-size: 16px; letter-spacing: 0.10em; text-transform: uppercase; }

@media (max-width: 900px) {
    .orn-clean__row-v-pair { min-width: 0; grid-template-columns: minmax(70px, auto) minmax(70px, auto); gap: 12px; justify-content: end; text-align: right; flex-shrink: 0; }
    .orn-clean__row { align-items: flex-start; gap: 12px; }
    .orn-clean__row-k { flex: 1 1 auto; min-width: 0; }
    .orn-clean__col-v { text-align: right; white-space: nowrap; font-size: 14px; }
    .orn-clean__col-lbl { text-align: right; }
    .orn-clean__row--sub .orn-clean__col-v { font-size: 15px; }
    .orn-clean__pay-amt-pair { grid-template-columns: 1fr; gap: var(--sp-3); }
}

/* ── Traveller stories — quote cards (group_tours.jsp) ─────────────── */
.orn-tstm__head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--sp-6); margin-bottom: var(--sp-4); flex-wrap: wrap; }
.orn-tstm__head-copy { flex: 1 1 320px; }
.orn-tstm__title { font-family: var(--orn-font-display); font-size: 48px; line-height: 1.05; color: var(--orn-text); margin: 8px 0 0; font-weight: 700; letter-spacing: -0.01em; }
.orn-tstm__title em { font-style: italic; font-weight: 500; }
.orn-tstm__proof { display: flex; gap: 40px; flex-wrap: wrap; }
.orn-tstm__proof-stat { display: flex; flex-direction: column; }
.orn-tstm__proof-v { font-family: var(--orn-font-mono); font-size: 22px; font-weight: 700; color: var(--orn-text); letter-spacing: -0.01em; }
.orn-tstm__proof-star { color: var(--orn-navy); }
.orn-tstm__proof-k { font-size: 13px; color: var(--orn-text-muted); margin-top: 4px; }
.orn-tstm__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-5); max-width: 1360px; margin: 0 auto; }
.orn-tstm__card { background: var(--orn-cream-2); border: 1px solid var(--orn-cream-3); border-radius: var(--r-card); padding: 32px 28px; display: flex; flex-direction: column; gap: var(--sp-5); }
.orn-tstm__quote { font-family: var(--orn-font-display); font-size: 19px; line-height: 1.45; color: var(--orn-text); margin: 0; font-style: italic; font-weight: 400; }
.orn-tstm__meta { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); padding-top: var(--sp-4); border-top: 1px solid var(--orn-cream-3); margin-top: auto; }
.orn-tstm__meta-name { font-weight: 700; font-size: 15px; color: var(--orn-text); }
.orn-tstm__meta-sub { font-size: 13px; color: var(--orn-text-muted); margin-top: 2px; }
.orn-tstm__stars { color: var(--orn-navy); letter-spacing: 2px; font-size: 14px; }

@media (max-width: 900px) {
    .orn-tstm__title { font-size: 34px; }
    .orn-tstm__grid { grid-template-columns: 1fr; }
    .orn-tstm__proof { gap: 24px; justify-content: space-between; }
    .orn-tstm__proof-v { font-size: 18px; }
}

/* ── Traveller stories — 2x2 with avatar cardhead ── */
.orn-tstm__grid--2x2 { grid-template-columns: repeat(2, 1fr); }
.orn-tstm__cardhead { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 14px; margin-bottom: var(--sp-3); }
.orn-tstm__avatar { width: 44px; height: 44px; border-radius: 50%; background: var(--orn-navy); color: #fff; display: flex; align-items: center; justify-content: center; font-family: var(--orn-font-mono); font-size: 14px; font-weight: 700; letter-spacing: 0.02em; flex-shrink: 0; }
.orn-tstm__rating { font-family: var(--orn-font-mono); font-size: 15px; font-weight: 700; color: var(--orn-text); white-space: nowrap; }
.orn-tstm__rating-star { color: var(--orn-navy); margin-right: 2px; }
.orn-tstm__card .orn-tstm__quote { font-style: normal; font-size: 16px; line-height: 1.65; }

@media (max-width: 900px) {
    .orn-tstm__grid--2x2 { grid-template-columns: 1fr; }
}

/* ── Booking to Boarding — dark section (group_tours.jsp) ─────────────── */
.orn-b2b { background: var(--orn-text); color: rgba(255, 255, 255, 0.92); padding: 72px 0 88px; }
.orn-b2b__head { text-align: center; margin-bottom: 56px; }
.orn-b2b__eyebrow { font-family: var(--orn-font-mono); letter-spacing: 0.24em; text-transform: uppercase; color: var(--orn-navy); font-size: var(--orn-fs-tiny); font-weight: 700; margin: 0 0 var(--sp-4); }
.orn-b2b__title { font-family: var(--orn-font-display); font-size: 56px; line-height: 1.05; color: #fff; margin: 0; font-weight: 700; letter-spacing: -0.01em; }
.orn-b2b__title em { font-style: italic; font-weight: 500; color: rgba(255, 255, 255, 0.78); }

.orn-b2b__steps { list-style: none; margin: 0 0 56px; padding: 0; display: grid; grid-template-columns: repeat(7, 1fr); gap: 0; position: relative; }
.orn-b2b__steps::before { content: ''; position: absolute; top: 26px; left: 8%; right: 8%; height: 1px; background: rgba(255, 255, 255, 0.15); z-index: 0; }
.orn-b2b__step { display: flex; flex-direction: column; align-items: center; text-align: center; position: relative; z-index: 1; gap: 6px; padding: 0 6px; }
.orn-b2b__num { width: 52px; height: 52px; border-radius: 50%; background: var(--orn-text); border: 1px solid rgba(255, 255, 255, 0.28); color: rgba(255, 255, 255, 0.7); font-family: var(--orn-font-display); font-size: 20px; font-weight: 600; display: flex; align-items: center; justify-content: center; margin-bottom: 14px; }
.orn-b2b__step.is-active .orn-b2b__num { background: var(--orn-navy); border-color: var(--orn-navy); color: #fff; }
.orn-b2b__lbl { color: #fff; font-size: 15px; font-weight: 600; }
.orn-b2b__sub { color: rgba(255, 255, 255, 0.55); font-size: 12.5px; }

.orn-b2b__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-6); }
.orn-b2b__card { background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.10); border-radius: var(--r-card); padding: 32px 36px; }
.orn-b2b__card-hd { display: flex; align-items: center; gap: 14px; margin-bottom: var(--sp-4); }
.orn-b2b__ic { width: 40px; height: 40px; border-radius: 10px; background: var(--orn-navy); color: #fff; display: flex; align-items: center; justify-content: center; font-family: var(--orn-font-display); font-size: 18px; font-weight: 700; flex-shrink: 0; }
.orn-b2b__card-title { font-family: var(--orn-font-display); font-size: 26px; line-height: 1.15; color: #fff; margin: 0; font-weight: 600; }
.orn-b2b__card-body { font-size: 15px; line-height: 1.55; color: rgba(255, 255, 255, 0.78); margin: 0 0 var(--sp-3); }
.orn-b2b__card-note { font-family: var(--orn-font-mono); font-size: 13px; color: rgb(76, 200, 130); margin: 0; }

.orn-b2b__cxl { list-style: none; margin: 0; padding: 0; }
.orn-b2b__cxl li { display: flex; justify-content: space-between; align-items: baseline; gap: var(--sp-4); padding: 12px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.08); font-size: 15px; }
.orn-b2b__cxl li:last-child { border-bottom: none; }
.orn-b2b__cxl-k { color: rgba(255, 255, 255, 0.85); }
.orn-b2b__cxl-v { font-family: var(--orn-font-mono); color: #fff; }
.orn-b2b__cxl-v--good { color: rgb(76, 200, 130); }

@media (max-width: 900px) {
    .orn-b2b { padding: 48px 0 56px; }
    .orn-b2b__title { font-size: 34px; }
    .orn-b2b__steps { display: flex; grid-template-columns: none; gap: 20px; overflow-x: auto; -webkit-overflow-scrolling: touch; padding: 4px 4px 12px; scrollbar-width: none; }
    .orn-b2b__steps::-webkit-scrollbar { display: none; }
    .orn-b2b__steps::before { left: 40px; right: 40px; top: 30px; }
    .orn-b2b__step { flex: 0 0 auto; min-width: 96px; padding: 0; }
    .orn-b2b__num { width: 44px; height: 44px; font-size: 17px; margin-bottom: 10px; }
    .orn-b2b__lbl { font-size: 13px; }
    .orn-b2b__sub { font-size: 11.5px; }
    .orn-b2b__grid { grid-template-columns: 1fr; }
    .orn-b2b__card { padding: 24px 22px; }
}

/* ── b2b · visa bullet list ── */
.orn-b2b__list { list-style: none; margin: 0 0 var(--sp-4); padding: 0; }
.orn-b2b__list li { position: relative; padding: 8px 0 8px 22px; font-size: 15px; line-height: 1.5; color: rgba(255, 255, 255, 0.85); border-bottom: 1px solid rgba(255, 255, 255, 0.06); }
.orn-b2b__list li:last-child { border-bottom: none; }
.orn-b2b__list li::before { content: '\2713'; position: absolute; left: 0; top: 8px; color: var(--orn-navy); font-weight: 700; font-size: 14px; }

/* ── b2b · solo card centered ── */
.orn-b2b__grid--solo { grid-template-columns: minmax(0, 720px); justify-content: center; }
.orn-b2b__list li strong { color: #fff; font-weight: 700; }

/* ── join-cta italic accent (naya rasta em) ── */
.orn-lp-join__hd em { font-family: var(--orn-font-heading); font-style: italic; font-weight: 500; color: #fff; display: inline-block; }

/* ── clean-card foot note (van-tours edition) ── */
.orn-clean__card--maths .orn-clean__foot { margin: var(--sp-4) 0 0; font-family: var(--orn-font-mono); font-size: 12.5px; text-align: center; color: rgb(76, 200, 130); letter-spacing: 0.04em; font-weight: 700; }

/* ── Find your Europe · search page ─────────────────────────────────── */
.orn-page--find { background: var(--orn-cream); }
.orn-page--find-journey { background: var(--orn-text); color: var(--orn-text-light); }
.orn-page--find-journey .orn-find__title { font-family: var(--orn-font-heading-serif); font-weight: 500; }
.orn-page--find-journey .orn-find__title em { font-weight: 500; }
.orn-page--find-journey .orn-find__title,
.orn-page--find-journey .orn-find__title em,
.orn-page--find-journey .orn-find__lede,
.orn-page--find-journey .orn-find__count,
.orn-page--find-journey .orn-secthead__title,
.orn-page--find-journey .orn-secthead__title em,
.orn-page--find-journey .orn-secthead__lede,
.orn-page--find-journey .orn-secthead__eyebrow { color: #fff; }
.orn-find { padding: 30px 0 96px; }
.orn-find__head { text-align: left; margin-bottom: 22px; }
.orn-find__title { font-family: var(--orn-font-display); font-size: 44px; line-height: 1.02; font-weight: 700; color: var(--orn-text); margin: 0; letter-spacing: -0.02em; }
.orn-find__title em { font-style: italic; font-weight: 500; }
.orn-find__lede { font-size: 16px; color: var(--orn-text-muted); margin: 8px 0 0; }
.orn-noscroll { overflow: hidden; }

/* Pill filter bar (desktop) */
.orn-find__bar { position: relative; display: flex; align-items: stretch; background: #fff; border: 1px solid var(--orn-cream-3); border-radius: 999px; padding: 4px; margin-bottom: 14px; box-shadow: 0 2px 12px rgba(20, 35, 59, 0.05); }
.orn-find__pill { position: relative; flex: 1 1 0; display: inline-flex; align-items: center; justify-content: center; gap: 8px; background: transparent; border: 0; padding: 14px 18px; font-family: var(--orn-font-body); font-size: 15px; font-weight: 500; color: var(--orn-text); cursor: pointer; border-right: 1px solid var(--orn-cream-3); white-space: nowrap; }
.orn-find__pill:last-of-type { border-right: 0; }
.orn-find__pill.is-active .orn-find__pill-lbl { color: var(--orn-navy); font-weight: 700; }
.orn-find__pill.is-open .orn-find__pill-lbl { text-decoration: underline; text-underline-offset: 4px; }
.orn-find__pill-lbl { color: var(--orn-text); }
.orn-find__pill-chev { width: 10px; height: 10px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); margin-top: -4px; opacity: 0.65; }
.orn-find__pill.is-open .orn-find__pill-chev { transform: rotate(-135deg); margin-top: 4px; }

/* Popover panel opened from a pill */
.orn-find__pop { position: absolute; top: calc(100% + 8px); min-width: 260px; max-width: 320px; background: #fff; border: 1px solid var(--orn-cream-3); border-radius: 14px; box-shadow: 0 12px 32px rgba(20, 35, 59, 0.12); padding: 8px; z-index: 30; max-height: 360px; overflow-y: auto; }
.orn-find__opt { display: flex; align-items: center; gap: 12px; width: 100%; padding: 10px 12px; background: transparent; border: 0; border-radius: 10px; font-size: 15px; color: var(--orn-text); text-align: left; cursor: pointer; }
.orn-find__opt:hover { background: rgba(20, 35, 59, 0.05); }
.orn-find__opt-dot { width: 18px; height: 18px; border-radius: 50%; border: 2px solid var(--orn-cream-3); flex: 0 0 auto; position: relative; }
.orn-find__opt.is-selected .orn-find__opt-dot { border-color: var(--orn-navy); }
.orn-find__opt.is-selected .orn-find__opt-dot::after { content: ""; position: absolute; inset: 3px; border-radius: 50%; background: var(--orn-navy); }
.orn-find__opt-lbl { flex: 1 1 auto; }
.orn-find__opt--muted { color: var(--orn-text-muted); cursor: default; font-size: 14px; }
.orn-find__opt--muted:hover { background: transparent; }
.orn-find__opt-box { width: 18px; height: 18px; border-radius: 4px; border: 2px solid var(--orn-cream-3); flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; color: var(--orn-navy); }
.orn-find__opt--check.is-selected .orn-find__opt-box { border-color: var(--orn-navy); background: var(--orn-navy); color: #fff; }

/* Result bar: count + active-filter chips */
.orn-find__resbar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px; margin: 8px 0 18px; }
.orn-find__count { font-family: var(--orn-font-body); font-size: 15px; color: var(--orn-text); font-weight: 500; }
.orn-find__chips { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.orn-find__chip { display: inline-flex; align-items: center; gap: 8px; background: var(--orn-cream-2); border: 0; border-radius: 999px; padding: 8px 14px; font-size: 14px; color: var(--orn-text); cursor: pointer; font-family: var(--orn-font-body); }
.orn-find__chip:hover { background: var(--orn-cream-3); }
.orn-find__chip-x { font-size: 18px; line-height: 1; color: var(--orn-text-muted); }
.orn-find__chip-clear { background: transparent; border: 0; padding: 6px 4px; font-size: 14px; color: var(--orn-text); text-decoration: underline; cursor: pointer; font-family: var(--orn-font-body); }

/* Mobile Filter & sort button (hidden on desktop) */
.orn-find__fs-btn { display: none; align-items: center; justify-content: center; gap: 10px; width: 100%; background: #fff; border: 1px solid var(--orn-cream-3); border-radius: 999px; padding: 14px 18px; font-family: var(--orn-font-body); font-size: 15px; font-weight: 500; color: var(--orn-text); cursor: pointer; margin-bottom: 14px; }

/* Result grid — 3 across on desktop, 1 across on mobile */
.orn-find__grid { }
.orn-depstrip.orn-depstrip--grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; overflow: visible; }
.orn-page--find-journey .orn-depstrip.orn-depstrip--grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 640px) {
    .orn-page--find-journey .orn-depstrip.orn-depstrip--grid { grid-template-columns: 1fr; }
    .orn-page--find-journey .orn-depstrip.orn-depstrip--grid > .orn-depcard { width: 100%; max-width: none; justify-self: center; }
}
.orn-depstrip.orn-depstrip--grid > .orn-depcard { flex: initial; width: auto; scroll-snap-align: none; max-width: none; }
.orn-depstrip.orn-depstrip--grid > .orn-depcard .orn-depcard__media { aspect-ratio: 16 / 9; }
.orn-find__grid.is-loading { opacity: 0.6; pointer-events: none; }
.orn-find__empty { padding: 40px; text-align: center; color: var(--orn-text-muted); background: #fff; border: 1px dashed var(--orn-cream-3); border-radius: 14px; }

/* Mobile bottom sheet */
.orn-find__sheet-scrim[hidden], .orn-find__sheet[hidden] { display: none !important; }
.orn-find__sheet-scrim { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.45); z-index: 1200; }
.orn-find__sheet { position: fixed; top: 0; right: 0; bottom: 0; width: min(88vw, 380px); background: #fff; z-index: 1210; display: flex; flex-direction: column; box-shadow: -8px 0 32px rgba(0, 0, 0, 0.2); }
.orn-find__sheet-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px; border-bottom: 1px solid var(--orn-cream-3); }
.orn-find__sheet-title { position: absolute; left: -9999px; }
.orn-find__sheet-clear, .orn-find__sheet-close { background: transparent; border: 0; font-size: 15px; color: var(--orn-text); text-decoration: underline; cursor: pointer; font-family: var(--orn-font-body); padding: 4px 6px; }
.orn-find__sheet-close { text-decoration: none; }
.orn-find__sheet-body { flex: 1 1 auto; overflow-y: auto; padding: 4px 0; }
.orn-find__sheet-group { border-bottom: 1px solid var(--orn-cream-3); }
.orn-find__sheet-group[open] .orn-find__sheet-chev { transform: rotate(180deg); }
.orn-find__sheet-summary { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; font-family: var(--orn-font-body); font-size: 16px; font-weight: 500; color: var(--orn-text); cursor: pointer; list-style: none; }
.orn-find__sheet-summary::-webkit-details-marker { display: none; }
.orn-find__sheet-chev { width: 10px; height: 10px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); opacity: 0.6; transition: transform 0.18s ease; }
.orn-find__sheet-list { padding: 4px 12px 14px; }

@media (max-width: 900px) {
    .orn-find__title { font-size: 34px; }
    .orn-find__bar { display: none; }
    .orn-find__fs-btn { display: inline-flex; }
    .orn-depstrip.orn-depstrip--grid { grid-template-columns: 1fr; gap: 14px; }
    .orn-depstrip.orn-depstrip--grid > .orn-depcard { max-width: none; }
    .orn-find__pop { position: fixed; left: 12px !important; right: 12px; top: auto; bottom: 12px; max-width: none; }
    .orn-find__grid { padding: 0; }
}

/* ── Marketing "Find your journey" 3-input finder on welcome.jsp ────── */
.orn-mkfind-section { padding: 44px 0 40px; }
.orn-hero--with-finder { position: relative; padding-bottom: 150px; overflow: visible !important; }
.orn-first-below-hero { margin-top: 80px; }
@media (max-width: 900px) { .orn-first-below-hero { margin-top: 0; } }
.orn-hero--with-finder .orn-mkfind-section { position: absolute; left: 0; right: 0; bottom: -80px; padding: 0; z-index: 4; }
@media (max-width: 900px) {
    .orn-hero--with-finder { padding-bottom: 40px; }
    .orn-hero--with-finder .orn-mkfind-section { position: static; margin-top: 24px; }
}
.orn-mkfind { display: grid; grid-template-columns: 1fr; gap: 24px; align-items: flex-start; background: var(--orn-text); color: #fff; border-radius: 22px; padding: 36px 40px; }
.orn-mkfind__copy { color: #fff; }
.orn-mkfind__eyebrow { font-family: var(--orn-font-mono); letter-spacing: 0.24em; font-size: 12px; color: rgb(190, 148, 66); text-transform: uppercase; font-weight: 700; margin: 0 0 12px; }
.orn-mkfind__title { font-family: var(--orn-font-heading); font-size: 34px; line-height: 1.08; margin: 0 0 12px; font-weight: 700; letter-spacing: -0.01em; color: #fff; }
.orn-mkfind__title em { font-family: var(--orn-font-display); font-style: italic; font-weight: 500; color: rgba(255, 255, 255, 0.85); }
.orn-mkfind__lede { color: rgba(255, 255, 255, 0.72); font-size: 15px; line-height: 1.5; margin: 0; }
.orn-mkfind__form { display: grid; grid-template-columns: 1fr 1fr 1fr auto; gap: 16px 20px; align-items: end; }
.orn-mkfind__field { display: flex; flex-direction: column; gap: 6px; }
.orn-mkfind__lbl { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.14em; color: rgba(255, 255, 255, 0.6); font-weight: 700; }
.orn-mkfind__ctl { background: transparent; border: 0; border-bottom: 1px solid rgba(255, 255, 255, 0.24); color: #fff; font-family: var(--orn-font-body); font-size: 16px; padding: 4px 0 8px; -webkit-appearance: none; appearance: none; background-image: linear-gradient(45deg, transparent 50%, rgba(255,255,255,0.55) 50%), linear-gradient(135deg, rgba(255,255,255,0.55) 50%, transparent 50%); background-position: right 4px top 18px, right 0 top 18px; background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; padding-right: 22px; }
.orn-mkfind__ctl option { color: var(--orn-text); }
.orn-mkfind__ctl:focus { outline: none; border-bottom-color: var(--orn-navy); }
.orn-mkfind__cta { background: var(--orn-navy); color: #fff; border: 0; border-radius: 999px; padding: 14px 28px; font-family: Anton, sans-serif; font-size: 16px; letter-spacing: 0.06em; cursor: pointer; text-transform: none; white-space: nowrap; }
.orn-mkfind__cta:hover, .orn-mkfind__cta:focus { background: var(--orn-navy-2); color: #fff; }

@media (max-width: 900px) {
    .orn-mkfind { grid-template-columns: 1fr; padding: 26px 22px; }
    .orn-mkfind__title { font-size: 26px; }
    .orn-mkfind__form { grid-template-columns: 1fr; }
}

/* ── Shop by Budget · elegant paper tiles with tier accent bar ────── */
.orn-budget-grid { display: flex; gap: 14px; overflow-x: auto; -webkit-overflow-scrolling: touch; scroll-snap-type: x mandatory; padding: 4px 4px 12px; scrollbar-width: thin; }
.orn-budget-grid::-webkit-scrollbar { height: 6px; }
.orn-budget-grid::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.18); border-radius: 3px; }
.orn-budget-tile { position: relative; display: flex; flex-direction: column; justify-content: flex-end; padding: 18px; background: linear-gradient(180deg, var(--tier-a, #4a5568), var(--tier-b, #2d3748)); color: #fff; border: 0; border-radius: 16px; text-decoration: none; aspect-ratio: 3 / 4; overflow: hidden; transition: transform 0.16s ease, box-shadow 0.16s ease; flex: 0 0 calc((100% - 14px * 4) / 5); scroll-snap-align: start; }
.orn-budget-tile:hover, .orn-budget-tile:focus { transform: translateY(-2px); box-shadow: 0 12px 28px rgba(0, 0, 0, 0.18); }
.orn-budget-tile__pill { position: absolute; top: 14px; left: 14px; display: inline-block; padding: 6px 12px; border-radius: 6px; background: rgba(0, 0, 0, 0.45); color: #fff; font-family: var(--orn-font-body); font-size: 13px; font-weight: 600; letter-spacing: 0.01em; backdrop-filter: blur(4px); }
.orn-budget-tile__foot { display: flex; flex-direction: column; gap: 4px; }
.orn-budget-tile__title { font-family: var(--orn-font-display); font-style: italic; font-size: 22px; font-weight: 500; line-height: 1.1; color: #fff; letter-spacing: -0.01em; }
.orn-budget-tile__meta { font-family: var(--orn-font-body); font-size: 13px; color: rgba(255, 255, 255, 0.78); }

@media (max-width: 1100px) { .orn-budget-tile { flex: 0 0 calc((100% - 14px * 2) / 3); } }
@media (max-width: 720px)  {
    .orn-budget-grid { gap: 12px; scrollbar-width: none; }
    .orn-budget-grid::-webkit-scrollbar { display: none; }
    .orn-budget-tile { flex: 0 0 220px; }
    .orn-budget-tile__amt { font-size: 20px; }
}

/* Tier accent — one hue per band, escalating in richness. */
.orn-budget-tile[data-band="a"] { --tier-a: #b09cc4; --tier-b: #6a4d80; }
.orn-budget-tile[data-band="b"] { --tier-a: #9db2cc; --tier-b: #4a6b8c; }
.orn-budget-tile[data-band="c"] { --tier-a: #b9c69e; --tier-b: #6a7d54; }
.orn-budget-tile[data-band="d"] { --tier-a: #d4a985; --tier-b: #8a5a3e; }
.orn-budget-tile[data-band="e"] { --tier-a: #c5a3a3; --tier-b: #7a4a4a; }
.orn-budget-tile[data-band="f"] { --tier-a: #a894bd; --tier-b: #4a3560; }

/* ── Poster-style card (Trending) — full-bleed hero + giant index ─── */
.orn-poster-card { position: relative; flex: 0 0 auto; max-width: 260px; scroll-snap-align: start; cursor: pointer; background: rgb(15, 15, 15); border-radius: var(--button-radius-card); overflow: hidden; box-shadow: rgba(0, 0, 0, 0.28) 0 12px 30px; aspect-ratio: 2 / 3; display: block; text-decoration: none; color: #fff; }
.orn-poster-card__media { position: absolute; inset: 0; background: rgb(15, 15, 15) center/cover no-repeat; }
.orn-poster-card__scrim { position: absolute; inset: 0; background: linear-gradient(to top, rgba(8, 12, 20, 0.9) 0%, rgba(8, 12, 20, 0.72) 25%, rgba(8, 12, 20, 0.55) 45%, rgba(8, 12, 20, 0.18) 68%, transparent 100%); }
.orn-poster-card__title { position: absolute; left: 16px; right: 16px; bottom: 70px; font-family: var(--orn-font-display); font-weight: 700; font-size: 16px; line-height: 1.15; color: #fff; text-shadow: 0 1px 4px rgba(0, 0, 0, 0.55); }
.orn-poster-card__num { position: absolute; top: 10px; right: 10px; font-family: var(--orn-font-display); font-weight: 800; font-size: 96px; line-height: 0.9; color: rgba(255, 255, 255, 0.94); text-shadow: 0 2px 12px rgba(0, 0, 0, 0.35); pointer-events: none; }
.orn-poster-card__foot { position: absolute; left: 0; right: 0; bottom: 0; color: #fff; padding: 12px 16px 14px; }
.orn-poster-card__from { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.14em; color: rgba(255, 255, 255, 0.72); text-transform: uppercase; }
.orn-poster-card__price { font-family: var(--orn-font-mono); font-size: 18px; font-weight: 700; color: #fff; margin-top: 2px; }

.orn-depstrip > .orn-poster-card { flex: 0 0 226px; }
@media (max-width: 720px) {
    .orn-poster-card { max-width: 220px; }
    .orn-poster-card__num { font-size: 78px; }
}

/* Idea variant — no rank number, no price foot. Title anchors near bottom
   with the short description below it. Both sit above the same dark scrim. */
.orn-poster-card--idea .orn-poster-card__title { bottom: 56px; font-family: var(--orn-font-heading-serif); font-size: 20px; font-weight: 500; }
.orn-poster-card--idea .orn-poster-card__desc {
    position: absolute; left: 16px; right: 16px; bottom: 18px;
    font-family: var(--orn-font-body, inherit); font-size: 12px; line-height: 1.35;
    color: rgba(255, 255, 255, 0.86); text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55);
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}

/* ── b2b · visa refund callout ── */
.orn-b2b__card-callout { margin: var(--sp-5) 0 0; padding: 14px 18px; background: rgba(76, 200, 130, 0.12); border-radius: 6px; font-family: var(--orn-font-display); font-size: 17px; font-weight: 700; color: rgb(120, 220, 160); line-height: 1.4; }

/* =============================================================
 * Published Journey detail page (.orn-page--journey-detail)
 * Rendered by ornholidays-published-journey.js off
 * window.__ORN_JOURNEY__. Reuses .orn-vhero / .orn-jd__* / .orn-sum__*
 * from the van-tour-detail design; the orn-jrn__* classes below add
 * the journey-specific day/hotel/inclusion/terms/editor cards.
 * ============================================================= */

/* Breadcrumb above hero */

/* Summary mount participates in the .orn-jd__body grid */
#ornJourneySummaryMount { min-width: 0; }

/* ── Itinerary — day accordion ── */

/* Generic block row (flight / transfer / misc) */
.orn-jrn__blk { display: flex; gap: 14px; align-items: flex-start; background: var(--orn-cream); border-radius: 14px; padding: 14px 16px; }

.orn-jrn__blk-title { font-size: 15px; font-weight: 700; color: var(--orn-text); }
.orn-jrn__blk-sub { font-size: 13px; color: var(--orn-ink-2); margin-top: 2px; }

/* Hotel block */
.orn-jrn__hotel { display: flex; gap: 16px; background: var(--orn-cream); border-radius: 14px; overflow: hidden; }

.orn-jrn__stars { color: #e6b800; font-size: 13px; letter-spacing: 1px; }
.orn-jrn__star--off { color: var(--orn-cream-3); }

/* Included panel */

/* Visa & Insurance */

/* Terms */
.orn-jrn__terms-sec { background: var(--orn-cream-2); border: 1px solid var(--orn-cream-3); border-radius: 16px; padding: 4px 22px; margin-bottom: 12px; }
.orn-jrn__terms-title { font-family: var(--orn-font-display); font-size: 16px; font-weight: 800; color: var(--orn-text); cursor: pointer; padding: 16px 0; list-style: none; }
.orn-jrn__terms-title::-webkit-details-marker { display: none; }
.orn-jrn__terms-title::before { content: '＋ '; color: var(--orn-navy); font-weight: 700; }
.orn-jrn__terms-sec[open] .orn-jrn__terms-title::before { content: '－ '; }
.orn-jrn__terms-list { list-style: disc; margin: 0 0 16px; padding-left: 22px; display: flex; flex-direction: column; gap: 8px; }
.orn-jrn__terms-list li { font-size: 13.5px; color: var(--orn-ink-2); line-height: 1.5; }
.orn-jrn__terms-dest { list-style: none; margin-left: -22px; font-family: var(--orn-font-mono); font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--orn-navy); font-weight: 700; }
.orn-jrn__terms-prod { list-style: none; margin-left: -22px; font-weight: 700; color: var(--orn-text); }
.orn-jrn__terms-list .hltip { background: rgba(242,13,22,0.1); color: var(--orn-red); padding: 1px 6px; border-radius: 6px; font-weight: 600; }
/* Dated cancellation ladder (J.xclD) and staged payment ladder (J.pymtPolA) —
   two-column tables inside the Terms tab, sharing one set of rules so the two
   sections stay visually identical. */
.orn-jrn__xcl { margin: 0 0 16px; border: 1px solid var(--orn-cream-3); border-radius: 12px; overflow: hidden; background: var(--orn-paper, #fff); }
/* Same frame, but WITHOUT overflow:hidden — the amount cells carry a tooltip
   that escapes the table, so the corners are rounded on the end rows instead. */
.orn-jrn__pmt { margin: 0 0 16px; border: 1px solid var(--orn-cream-3); border-radius: 12px; background: var(--orn-paper, #fff); }
.orn-jrn__pmt-row:first-child { border-radius: 11px 11px 0 0; }
.orn-jrn__pmt-row:last-child { border-radius: 0 0 11px 11px; }
.orn-jrn__xcl-row, .orn-jrn__pmt-row { display: grid; grid-template-columns: 1fr auto; gap: 16px; padding: 12px 16px; align-items: center; }
.orn-jrn__xcl-row + .orn-jrn__xcl-row, .orn-jrn__pmt-row + .orn-jrn__pmt-row { border-top: 1px solid var(--orn-cream-3); }
.orn-jrn__xcl-row--head, .orn-jrn__pmt-row--head { background: var(--orn-cream-2); }
.orn-jrn__xcl-row--head .orn-jrn__xcl-when, .orn-jrn__xcl-row--head .orn-jrn__xcl-charge, .orn-jrn__pmt-row--head .orn-jrn__pmt-when, .orn-jrn__pmt-row--head .orn-jrn__pmt-amt { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--orn-mute, #9a8a6e); font-weight: 700; }
/* the cancellation ladder's left cell stacks the day over the date */
.orn-jrn__xcl-when { display: flex; flex-direction: column; gap: 2px; }
.orn-jrn__xcl-row--head .orn-jrn__xcl-when { flex-direction: row; }
.orn-jrn__xcl-day { font-size: 13.5px; color: var(--orn-text); font-weight: 600; }
.orn-jrn__xcl-date { font-size: 11.5px; color: var(--orn-mute, #9a8a6e); }
.orn-jrn__xcl-charge { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; text-align: right; }
.orn-jrn__xcl-val { font-size: 14px; font-weight: 700; color: var(--orn-text); white-space: nowrap; }
.orn-jrn__xcl-range, .orn-jrn__pmt-sub { font-size: 11.5px; color: var(--orn-mute, #9a8a6e); line-height: 1.35; }
.orn-jrn__xcl-row--head .orn-jrn__xcl-charge { flex-direction: row; }
/* Both payment cells stack a lead value over relative wording, so each is its
   own column; amounts can be prose ("25% of the remaining tour cost") and wrap. */
.orn-jrn__pmt-when { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.orn-jrn__pmt-amt { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; text-align: right; }
.orn-jrn__pmt-val { font-size: 14px; font-weight: 700; color: var(--orn-text); }
/* The tip sits in the right-aligned amount cell, so the default centre-anchored
   bubble would hang off the table edge. Anchor it to the icon's right instead
   and move the arrow under the icon to match. */
.orn-jrn__pmt .orn-jd__tip-bubble { left: auto; right: -4px; transform: translateY(4px); max-width: 260px; white-space: normal; z-index: 20; }
.orn-jrn__pmt .orn-jd__tip-bubble::after { left: auto; right: 6px; transform: none; }
.orn-jrn__pmt .orn-jd__tip:hover .orn-jd__tip-bubble,
.orn-jrn__pmt .orn-jd__tip:focus .orn-jd__tip-bubble,
.orn-jrn__pmt .orn-jd__tip:focus-visible .orn-jd__tip-bubble { transform: translateY(0); }
/* the amount itself is bold and right-aligned; keep the tip baseline-aligned */
.orn-jrn__pmt-val .orn-jd__tip { font-weight: 400; }
.orn-jrn__pmt-row--head .orn-jrn__pmt-when, .orn-jrn__pmt-row--head .orn-jrn__pmt-amt { flex-direction: row; }
.orn-jrn__xcl-row--nr .orn-jrn__xcl-val { color: var(--orn-red, rgb(242,13,22)); }
.orn-jrn__pmt-note { margin: -8px 0 16px; font-size: 12px; font-style: italic; color: var(--orn-mute, #9a8a6e); line-height: 1.4; }

/* Editable summary-card controls */

@media (max-width: 760px) {
    .orn-jrn__hotel { flex-direction: column; }
    
}

/* Journey page keeps tab-switching at all widths (it has no mobile scrollspy
 * JS), so override the van page's <640px continuous-scroll + conditional
 * visa/terms hiding. Higher specificity (.orn-page--journey-detail) wins. */
@media (max-width: 640px) {
    .orn-page--journey-detail .orn-jd__panel { display: none; }
    .orn-page--journey-detail .orn-jd__panel--active { display: block; }
    .orn-page--journey-detail .orn-jd__panel[data-orn-panel="visa"],
    .orn-page--journey-detail .orn-jd__panel[data-orn-panel="terms"] { display: none; }
    .orn-page--journey-detail .orn-jd__panel--active[data-orn-panel="visa"],
    .orn-page--journey-detail .orn-jd__panel--active[data-orn-panel="terms"] { display: block; }
}

/* =============================================================
 * Journey itinerary BLOCK CARDS — ORN block layouts (flight,
 * stay, transfer, sightseeing, visa/insurance) restyled in the
 * light van-tour design. Ported from orn-ui journeyv3 inclusion
 * cards; see ornholidays-published-journey.js renderBlock().
 * ============================================================= */
.orn-jrn__block { display: flex; flex-direction: column; gap: 10px; }
.orn-jrn__ihdr { display: flex; align-items: center; gap: 9px; }
.orn-jrn__ihdr-icon { display: inline-flex; color: var(--orn-navy); }
.orn-jrn__ihdr-label { font-family: var(--orn-font-mono); font-size: 11.5px; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: var(--orn-ink-2); }

.orn-jrn__card2 { background: var(--orn-cream-2); border: 1px solid var(--orn-cream-3); border-radius: 14px; overflow: hidden; box-shadow: 0 8px 24px rgba(20,35,59,0.05); }
.orn-jrn__card2--pad { padding: 16px; }
.orn-jrn__card2-in { padding: 16px; }
.orn-jrn__card2--media { border-radius: 20px; }

/* Chips (block-chip) + semantic transfer-type variants */
.orn-jrn__chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.orn-jrn__chip { display: inline-flex; align-items: center; border-radius: 999px; padding: 4px 12px; font-size: 12px; font-weight: 500; background: var(--orn-cream); border: 1px solid var(--orn-cream-3); color: var(--orn-ink-2); }
.orn-jrn__chip--plain { background: #fff; }
.orn-jrn__chip--green { background: #e6f6eb; border-color: #8eceaa; color: #193b2d; }
.orn-jrn__chip--amber { background: #fff4e6; border-color: #ffd89e; color: #8b5a00; }
.orn-jrn__chip--red { background: #fff7f7; border-color: #fdbdbe; color: #991b1b; }
.orn-jrn__chip--teal { background: #f3fbf9; border-color: #12a594; color: #008573; }

/* Shared block text bits */
.orn-jrn__blk-title { font-family: var(--orn-font-display); font-size: 16px; font-weight: 800; color: var(--orn-text); }
.orn-jrn__blk-sub { font-size: 13px; color: var(--orn-ink-2); margin-top: 2px; }
.orn-jrn__blk-date { font-size: 12.5px; color: var(--orn-ink-2); margin-top: 4px; }
.orn-jrn__blk-info { display: flex; align-items: flex-start; gap: 6px; margin-top: 8px; font-size: 12.5px; color: var(--orn-ink-2); }
.orn-jrn__blk-info svg { flex: 0 0 auto; margin-top: 1px; color: rgb(156,163,175); }
.orn-jrn__blk-desc { font-size: 13px; color: var(--orn-ink-2); line-height: 1.5; margin-top: 8px; }

/* Thumb-row layout (transfer / generic) */
.orn-jrn__row { display: flex; gap: 14px; }
.orn-jrn__row-body { flex: 1 1 auto; min-width: 0; }
.orn-jrn__thumb { flex: 0 0 115px; height: 84px; border-radius: 8px; background-size: cover; background-position: center; }
.orn-jrn__banner { height: 140px; background-size: cover; background-position: center; }

/* Stars */
.orn-jrn__stars { color: #e6b800; font-size: 13px; letter-spacing: 1px; white-space: nowrap; }
.orn-jrn__star--off { color: var(--orn-cream-3); }

/* ── Hotel / Train card ── */
.orn-jrn__hhero { position: relative; height: 160px; background-size: cover; background-position: center; }
.orn-jrn__hhero-grad { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0) 40%, rgba(20,18,15,0.55) 100%); }
.orn-jrn__hinfo { padding: 18px 20px 6px; }
.orn-jrn__hname { font-family: var(--orn-font-display); font-size: 17px; font-weight: 800; color: var(--orn-text); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.orn-jrn__hloc { display: flex; align-items: center; gap: 5px; font-size: 13px; color: rgb(116,116,116); margin-top: 5px; }
.orn-jrn__hloc svg { flex: 0 0 auto; }
.orn-jrn__hdates { display: flex; align-items: flex-start; gap: 12px; padding: 8px 20px 20px; }
.orn-jrn__hdate { display: flex; flex-direction: column; gap: 3px; flex: 0 0 auto; }
.orn-jrn__hdate--r { text-align: right; align-items: flex-end; }
.orn-jrn__hdate-lbl { font-family: var(--orn-font-mono); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: rgb(116,116,116); }
.orn-jrn__hdate-time { font-size: 15px; font-weight: 600; color: var(--orn-text); }
.orn-jrn__hdate-date { font-size: 11.5px; color: rgb(116,116,116); }
.orn-jrn__nights { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 6px; padding-top: 6px; }
.orn-jrn__nights-row { display: flex; align-items: center; width: 100%; gap: 8px; }
.orn-jrn__nights-line { flex: 1 1 auto; height: 1px; background: linear-gradient(90deg, rgba(20,35,59,0.04), rgba(201,152,58,0.55)); }
.orn-jrn__nights-line:last-child { background: linear-gradient(90deg, rgba(201,152,58,0.55), rgba(20,35,59,0.04)); }
.orn-jrn__nights-moon { display: inline-flex; color: #c9983a; }
.orn-jrn__nights-count { font-size: 11px; color: rgb(122,133,147); white-space: nowrap; }

/* ── Visa / Insurance service cards ── */

/* Compact, clean card-level action buttons (override the full-width .orn-jrn__act CTA). */

@media (max-width: 760px) {
    .orn-jrn__row { flex-direction: column; }
    .orn-jrn__thumb { flex-basis: auto; width: 100%; height: 150px; }
    .orn-jrn__hdates { flex-wrap: wrap; }
}

/* =============================================================
 * Journey right-rail two-state pricing widget
 *   State A — DurationSelect (.orn-jrn__ds-*): starting price, flight
 *             pill, editable date/travellers, Check Availability.
 *   State B — BookingSummary travel-details header (.orn-jrn__td-*)
 *             + action buttons (.orn-jrn__act*).
 * ============================================================= */

/* Booking-summary travel details header */

/* Action buttons */

.orn-jrn__act { display: block; width: 100%; padding: 14px 18px; border-radius: 14px; font-family: inherit; font-size: 15px; font-weight: 700; cursor: pointer; text-align: center; border: 1px solid transparent; }
.orn-jrn__act--primary { background: var(--orn-text); color: #fff; border-color: var(--orn-text); }
.orn-jrn__act--primary:hover { background: #000; }
.orn-jrn__act--secondary { background: var(--orn-cream, #f4f4f4); color: var(--orn-text); border-color: var(--orn-cream-3, #e8e8e8); }
.orn-jrn__act--secondary:hover { background: var(--orn-cream-3, #e8e8e8); }
.orn-jrn__act--blue { background: #0d74ce; color: #fff; border-color: #0d74ce; }
.orn-jrn__act--blue:hover { background: #0b62ad; }
.orn-jrn__act--bordered { background: #fff; color: var(--orn-text); border-color: var(--orn-ink-2, #3a4654); font-weight: 600; }
.orn-jrn__act--bordered:hover { background: var(--orn-cream, #f4f4f4); }
.orn-jrn__act--link { background: none; border: none; color: var(--orn-navy); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; padding: 6px; }

/* Compact the shared .orn-jd__dt-cal* calendar for the narrow "Leaving on"
 * editor inside the DurationSelect rail. */

.orn-jrn__cal.orn-jd__dt-cal-wrap { padding: 4px 0 2px; }
.orn-jrn__cal .orn-jd__dt-cal { gap: 10px; }
.orn-jrn__cal .orn-jd__dt-cal-mo { padding: 10px 10px 12px; }
.orn-jrn__cal .orn-jd__dt-cal-legend { flex-wrap: wrap; gap: 6px 10px; padding: 0 2px 10px; font-size: 10.5px; }

/* "Leaving on" DatePick (jQuery datepick) rendered inline in the rail —
 * fully re-skinned to the ORN design (the stock datepick.css is bypassed).
 * NOTE: datepick puts state classes (selected/today/other-month) on the <a>
 * itself, so those selectors are a.datepick-* (not a descendant a). */

/* Nav bar: ‹ prev · month title · next › */

/* Grid */

 /* unselectable (past / blocked) */

 /* no special weekend colour */

/* Current / picked day — datepick marks the default date with .datepick-highlight
 * and a clicked date with .datepick-selected; both read as the filled selection. */

/* =============================================================
 * BookingSummary — Travel Details card + PRICE SUMMARY card
 * (state B of the right rail). Sticky on desktop.
 * ============================================================= */
#ornJourneySummaryMount { align-self: start; }
@media (min-width: 1100px) {
    #ornJourneySummaryMount { position: sticky; top: 24px; }
}


/* Travel Details card */

/* Price Summary card */

/* Total */

/* Earn rewards banner */

/* Breakdown links */

/* Action buttons sit flush inside the card body */


/* =============================================================
 * Edit-mode Flights / Hotels tabs — same block-card layout as the
 * itinerary, with a per-block action footer (Change/Add buttons).
 * ============================================================= */
.orn-jrn__prod-list { display: flex; flex-direction: column; gap: 16px; }
.orn-jrn__prod { display: flex; flex-direction: column; gap: 10px; }
.orn-jrn__prod-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.orn-jrn__prod-actions .orn-jrn__prod-act { display: inline-flex; align-items: center; justify-content: center; gap: 6px; flex: 0 1 auto; width: auto; min-width: 120px; padding: 10px 18px; font-size: 13.5px; font-weight: 600; border-radius: 10px; line-height: 1.1; white-space: nowrap; }
.orn-jrn__prod-actions .orn-jrn__prod-act.orn-jrn__act--bordered { border-color: var(--orn-cream-3, #d9d9d9); }
.orn-jrn__prod-actions .orn-jrn__prod-act.orn-jrn__act--bordered:hover { border-color: var(--orn-ink-2, #3a4654); background: var(--orn-cream, #f4f4f4); }
@media (max-width: 520px) {
    .orn-jrn__prod-actions .orn-jrn__prod-act { flex: 1 1 100%; min-width: 0; }
}

/* ============================================================================
   ORN "Private FIT" journey configurator — redesign (2026)
   New design direction from the Bali-Honeymoon reference prototype. All rules
   are scoped under `.orn-page--journey-detail` so they override the shared
   van-tour shell classes (.orn-vtd__* / .orn-jd__*) for THIS page only — the
   van-tour-detail page (orn-page--van-tour-detail, no --journey-detail) is
   untouched. New components use the `.orn-fit__*` namespace.
   Fonts: Inter (headings/UI), IBM Plex Mono (eyebrows/prices/labels), Spectral.
   ========================================================================= */
.orn-page--journey-detail {
    --fit-red: var(--color-primary, #F20D16);         /* primary / CTA            */
    --fit-red-2: var(--color-primary-light, #C90A12);       /* links / secondary accent */
    --fit-red-3: var(--color-primary-200, #9E0810);       /* darkest red              */
    --fit-blush: #F3B4AF;       /* blush accent on dark     */
    --fit-red-tint: #FBF3F2;
    --fit-red-tint-2: #FBEEED;
    --fit-red-border: #F6CBC7;
    --fit-ink: #151515;         /* primary text / dark surf */
    --fit-ink-2: #0B0B0B;       /* darkest panels (map)     */
    --fit-ink-foot: #0F0F0F;    /* footer                   */
    --fit-surface: #F5F5F5;
    --fit-surface-2: #F7F7F7;
    --fit-border: #E7E7E7;
    --fit-border-2: #EAEAEA;
    --fit-grey: #6E6E6E;        /* mono labels              */
    --fit-grey-2: #5C5C5C;      /* body sub-text            */
    --fit-grey-3: #7C7C7C;
    --fit-disabled: #ECECEC;    /* disabled button fill     */
    --fit-disabled-2: #F6F6F6;  /* disabled ghost/secondary */
    --fit-disabled-ink: #9A9A9A;/* disabled label / border  */
    --fit-sand: #C7BFAE;
    --fit-mono: 'IBM Plex Mono', ui-monospace, monospace;
    --fit-sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    --fit-serif: 'Spectral', Georgia, serif;
    --fit-maxw: 1180px;
    --fit-btn-radius: 8px;      /* shared action-button corner radius */
}

/* =========================================================================
   COMMON ACTION BUTTONS — single source of truth for the journey/FIT buttons.
   Use .orn-fit-btn + a variant; every bespoke button below also points its
   corner radius at --fit-btn-radius so rounding is changed in ONE place.
     .orn-fit-btn--primary   → red filled CTA  (Select / Add meal / Book)
     .orn-fit-btn--secondary → white outline    (Change / Add / Cancel)
   ========================================================================= */
.orn-fit-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 1px solid transparent; border-radius: var(--fit-btn-radius); padding: 8px 18px; font-family: Archivo, sans-serif; font-size: 12.5px; font-weight: 700; letter-spacing: 0.02em; white-space: nowrap; cursor: pointer; transition: background .14s ease, border-color .14s ease, color .14s ease, box-shadow .14s ease, transform .08s ease; }
.orn-fit-btn--primary { background: var(--fit-red, #F20D16); border-color: var(--fit-red, #F20D16); color: #fff; box-shadow: 0 2px 8px rgba(242,13,22,.18); }
.orn-fit-btn--primary:hover { background: var(--fit-red-2, #C90A12); border-color: var(--fit-red-2, #C90A12); box-shadow: 0 4px 13px rgba(242,13,22,.26); }
.orn-fit-btn--primary:active { transform: scale(.97); }
.orn-fit-btn--secondary { background: #fff; border-color: var(--fit-border, #E7E7E7); color: var(--fit-ink, #151515); font-weight: 600; }
.orn-fit-btn--secondary:hover { border-color: var(--fit-ink, #151515); }
.orn-fit-btn:disabled { opacity: .55; cursor: not-allowed; }

/* -- Button hierarchy convention -------------------------------------------
   The FIT theme uses THREE button tiers. Reserve fill-red for the one true
   money action on a surface; everything else steps down so the page doesn't
   read as a wall of red.
     PRIMARY  — solid --fit-red, white text. The terminal/priced commit:
                Get price / Book (side-cta, mbar-cta, mwiz-cta), flights
                "Add To Trip" (flt-add), validation apply (vld-btn--primary).
     SECONDARY— white bg, --fit-red-2 text, --fit-red-border, hover red-tint.
                Selection / optional / "explore" actions that are NOT a priced
                commit: Add flights (flt-open), Select option / Update
                (opt-apply), Select room (hroom-btn), Select flight (flt-select).
     GHOST    — white bg, ink text, grey border. Non-committal: Change / Skip /
                Close (flt-open--change, flt-skip, hcard-btn resting).
   When a secondary button shows a loading spinner, use the 'red' variant
   (red-on-white) — NOT 'light' (white-on-red). --------------------------- */

/* -- Shell overrides: 2-col body grid ---------------------- */
.orn-page--journey-detail .orn-vtd__main { background: var(--fit-surface-2); padding: 0; }
.orn-page--journey-detail .orn-jd__body {
    display: grid; grid-template-columns: 1fr 388px; gap: 34px; align-items: start;
    margin: 0 auto; padding: 0;
}
.orn-page--journey-detail .orn-jd__main { min-width: 0; }
@media (max-width: 900px) {
    .orn-page--journey-detail .orn-jd__body { grid-template-columns: 1fr; }
}

/* -- Hero ------------------------------------------------------------------- */
.orn-fit__hero { position: relative; }
.orn-fit__hero-img {
    width: 100%; height: 340px; display: block; background-size: cover; background-position: center;
    background-color: var(--fit-ink);
}
.orn-fit__hero-shade {
    position: absolute; inset: 0;
    background: linear-gradient(to top, rgba(17,17,17,.92) 6%, rgba(17,17,17,.35) 52%, rgba(17,17,17,.12) 100%);
}
.orn-fit__hero-body { position: absolute; left: 0; right: 0; bottom: 0; }
.orn-fit__hero-inner { max-width: var(--fit-maxw); margin: 0 auto; padding: 0 28px 28px; color: var(--fit-surface); }
.orn-fit__hero-back {
    cursor: pointer; display: inline-flex; align-items: center; gap: 8px;
    font: 600 14px/1 var(--fit-sans); color: #D7DEE7; margin-bottom: 14px; text-decoration: none;
}
.orn-fit__hero-back:hover { color: #fff; }
.orn-fit__hero-eyebrow { font: 600 12px/1 var(--fit-mono); letter-spacing: .24em; color: var(--fit-blush); }
.orn-fit__hero-title { font: 800 46px/1.02 var(--fit-sans); margin-top: 8px; }
.orn-fit__hero-areas { font: 400 15px/1.3 var(--fit-mono); color: #C3CCD6; margin-top: 8px; }
@media (max-width: 640px) { .orn-fit__hero-title { font-size: 32px; } }

/* -- Choose your route ------------------------------------------------------ */
.orn-fit__sec-title { font: 800 22px/1.1 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__sec-sub { font: 400 14px/1.4 var(--fit-sans); color: var(--fit-grey-2); margin-top: 4px; }
.orn-fit__routes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin: 16px 0 26px; }
.orn-fit__route {
    position: relative; cursor: pointer; background: #fff; border: 1px solid var(--fit-border);
    border-radius: 16px; padding: 20px 18px; display: flex; flex-direction: column;
    box-shadow: 0 1px 2px rgba(20,20,20,.04);
}
.orn-fit__route--sel { border-color: var(--fit-red); box-shadow: 0 0 0 2px rgba(242,13,22,.18); }
.orn-fit__route--ph { cursor: default; background: #FBFBFB; color: var(--fit-grey-3); }
.orn-fit__route-rec {
    position: absolute; top: -11px; left: 18px; font: 700 9.5px/1 var(--fit-mono);
    letter-spacing: .14em; color: var(--fit-ink); background: var(--fit-blush);
    border-radius: 999px; padding: 4px 11px;
}
.orn-fit__route-top { display: flex; align-items: center; justify-content: space-between; }
.orn-fit__route-tier { font: 700 10.5px/1 var(--fit-mono); letter-spacing: .14em; color: var(--fit-red-2); }
.orn-fit__route-nights { font: 400 11px/1 var(--fit-mono); color: var(--fit-grey); }
.orn-fit__route-name { font: 800 19px/1.1 var(--fit-sans); color: var(--fit-ink); margin-top: 8px; }
.orn-fit__route-path { font: 400 12px/1.2 var(--fit-mono); color: var(--fit-grey-3); margin-top: 4px; }
.orn-fit__route-blurb { font: 400 13px/1.5 var(--fit-sans); color: var(--fit-grey-2); margin-top: 10px; flex: 1; }
.orn-fit__route-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 8px; flex-wrap: wrap; margin-top: 14px; }
.orn-fit__route-from { font: 400 10px/1 var(--fit-mono); letter-spacing: .12em; color: var(--fit-grey); }
.orn-fit__route-price { font: 600 18px/1 var(--fit-mono); color: var(--fit-ink); margin-top: 2px; white-space: nowrap; }
.orn-fit__route-sel { font: 700 12.5px/1 var(--fit-sans); color: var(--fit-red-2); white-space: nowrap; }
.orn-fit__route--sel .orn-fit__route-sel { color: var(--fit-red); }
/* Choose-your-route → swipeable horizontal carousel on mobile (was a 1-col stack);
   cards ~86% wide so the next one peeks. */
@media (max-width: 720px) {
  /* padding-top/bottom give the absolutely-positioned "RECOMMENDED" badge (top:-11px)
     + the selected card's 2px ring room inside the scroll box (overflow-x:auto makes
     overflow-y compute to auto → it clips the vertical axis too). */
  .orn-fit__routes { display: flex; grid-template-columns: none; flex-wrap: nowrap; overflow-x: auto; gap: 12px; padding: 14px 3px 8px; scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .orn-fit__routes::-webkit-scrollbar { display: none; }
  .orn-fit__route { flex: 0 0 86%; scroll-snap-align: start; }
  /* Selected/available route first; "coming soon" placeholders after. */
  .orn-fit__route--sel { order: -1; }
}

/* -- Tab bar: inherit shared .orn-jd__tab rules (van_tour parity) ---------- */
.orn-page--journey-detail .orn-jd__panels { margin-top: 22px; }
.orn-page--journey-detail .orn-jd__panel { display: none; }
.orn-page--journey-detail .orn-jd__panel--active { display: block; }
.orn-page--journey-detail .orn-jd__panel-empty {
    padding: 40px 20px; text-align: center; color: var(--fit-grey-2);
    font: 400 14px/1.5 var(--fit-sans); background: #fff;
    border: 1px solid var(--fit-border); border-radius: 14px;
}

/* -- Placeholder scaffold (tabs not yet redesigned) ------------------------- */
.orn-fit__ph {
    background: #fff; border: 1px dashed var(--fit-red-border); border-radius: 14px;
    padding: 26px 24px; color: var(--fit-grey-2); font: 400 14px/1.6 var(--fit-sans);
}
.orn-fit__ph-eyebrow { font: 700 10.5px/1 var(--fit-mono); letter-spacing: .18em; color: var(--fit-red-2); text-transform: uppercase; }
.orn-fit__ph-title { font: 800 18px/1.2 var(--fit-sans); color: var(--fit-ink); margin: 8px 0 6px; }

/* -- Tab: Hotels (city-grouped) ------------------------------------------- */
.orn-fit__hotels { }
.orn-fit__hcity { margin-top: 26px; }
.orn-fit__hcity:first-of-type { margin-top: 18px; }
.orn-fit__hcity-head { display: flex; align-items: baseline; gap: 12px; margin-bottom: 10px; padding-bottom: 6px; border-bottom: 1px solid rgb(231, 231, 231); }
.orn-fit__hcity-name { font-family: Archivo, sans-serif; font-weight: 700; font-size: 19px; color: rgb(20, 35, 59); }
.orn-fit__hcity-nights { display: inline-flex; align-items: center; padding: 4px 12px; border-radius: 999px; background: rgb(20, 35, 59); color: #fff; font-family: 'IBM Plex Mono', monospace; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; }
.orn-fit__hcity-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.orn-fit__hsimple { display: flex; flex-direction: row; align-items: stretch; background: #fff; border: 1px solid rgb(231, 231, 231); border-radius: 14px; overflow: hidden; }
.orn-fit__hsimple-img { flex: 0 0 320px; width: 320px; min-height: 240px; background-size: cover; background-position: center; background-color: #eee; }
.orn-fit__hsimple-img--ph { background: linear-gradient(135deg, #f6f0e6 0%, #ece3d0 100%); }
.orn-fit__hsimple-body { flex: 1 1 auto; padding: 18px 22px; min-width: 0; }
@media (max-width: 768px) {
    .orn-fit__hsimple { flex-direction: column; }
    .orn-fit__hsimple-img { flex: 0 0 auto; width: 100%; height: 180px; min-height: 0; }
    .orn-fit__hsimple-body { padding: 14px 16px 16px; }
}
.orn-fit__hsimple-name { font-family: Archivo, sans-serif; font-weight: 700; font-size: 16px; color: rgb(20, 35, 59); line-height: 1.3; }
.orn-fit__hsimple-stars { color: #c9a45c; font-size: 13px; margin-left: 4px; letter-spacing: 1px; }
.orn-fit__hsimple-area { font-size: 12px; color: rgb(150, 158, 172); margin-top: 2px; }
.orn-fit__hsimple-dsc { font-size: 13.5px; color: rgb(90, 101, 115); line-height: 1.55; margin: 8px 0 0; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
/* Booked room on the stay card — set off by a hairline so it reads as the
   booking detail rather than more hotel copy. Type matches the card's own
   name/area scale; no new palette. */
.orn-fit__hsimple-room { margin-top: 10px; padding-top: 10px; border-top: 1px solid rgb(240, 240, 240); font-family: Archivo, sans-serif; font-weight: 600; font-size: 13.5px; color: rgb(20, 35, 59); line-height: 1.35; }
.orn-fit__hsimple-rmeta { font-size: 12px; color: rgb(150, 158, 172); margin-top: 2px; line-height: 1.4; }
.orn-fit__hsimple-nights { font-family: 'IBM Plex Mono', monospace; font-size: 11px; color: rgb(150, 158, 172); text-transform: uppercase; letter-spacing: 0.06em; margin-top: 10px; }
/* Check-in / check-out on the hotel card — two labelled columns split by an
   arrow, set off from the room detail by a hairline. */
.orn-fit__hcico { display: flex; align-items: center; gap: 14px; margin-top: 12px; padding-top: 12px; border-top: 1px solid rgb(240, 240, 240); }
.orn-fit__hcico-col { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.orn-fit__hcico-lbl { font-family: 'IBM Plex Mono', monospace; font-size: 10px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: rgb(150, 158, 172); }
.orn-fit__hcico-val { font-family: Archivo, sans-serif; font-weight: 600; font-size: 13px; color: rgb(20, 35, 59); line-height: 1.3; }
.orn-fit__hcico-arrow { flex: none; color: rgb(193, 142, 69); font-size: 15px; }
/* City-header check-in → check-out range, next to the nights pill. */
.orn-fit__hcity-cico { font-family: 'IBM Plex Mono', monospace; font-size: 14px; font-weight: 700; color: rgb(20, 35, 59); letter-spacing: 0.02em; white-space: nowrap; }
@media (max-width: 560px) { .orn-fit__hcity-head { flex-wrap: wrap; } .orn-fit__hcity-cico { flex-basis: 100%; } }

/* -- Tab: Vehicle (friendly card) ----------------------------------------- */
.orn-fit__vehx { background: #fff; border: 1px solid rgb(231, 231, 231); border-radius: 16px; overflow: hidden; margin-top: 12px; }
.orn-fit__vehx-hero { width: 100%; height: 260px; background-size: cover; background-position: center; background-color: #eee; }
/* A vehicle per part of a journey joined from two: the section header carries
   the days they run, and each card opens with where and when its vehicle runs. */
.orn-fit__veh-sechd { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.orn-fit__veh-sechd .orn-fit__sec-title2 { font: 800 26px/1.2 Archivo, sans-serif; letter-spacing: -0.02em; color: #151515; }
.orn-fit__veh-sechd-days { flex: none; font: 600 16px/1.2 Archivo, sans-serif; color: #5A6573; white-space: nowrap; }
.orn-fit__vehx-route { display: flex; align-items: center; gap: 12px; padding: 14px 20px; background: #FAFAFA; border-bottom: 1px solid #F0F0F0; }
.orn-fit__vehx-route-ic { flex: none; width: 40px; height: 40px; border-radius: 12px; background: #EEF0F3; color: #14233B; display: flex; align-items: center; justify-content: center; }
.orn-fit__vehx-route-ic svg { width: 20px; height: 20px; }
.orn-fit__vehx-route-txt { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.orn-fit__vehx-route-ttl { font: 700 16.5px/1.3 Archivo, sans-serif; letter-spacing: -0.01em; color: #14233B; }
.orn-fit__vehx-route-sub { display: flex; align-items: center; gap: 6px; font: 400 13px/1.4 Archivo, sans-serif; color: #3A4654; }
.orn-fit__vehx-route-dot { width: 3px; height: 3px; border-radius: 50%; background: #8A94A3; flex: none; }
/* "Choose your vehicle", per the same design */
.orn-fit__veh-body > .orn-fit__sec-title2 { margin-top: 12px; font: 800 26px/1.2 Archivo, sans-serif; letter-spacing: -0.02em; color: #151515; }
@media (max-width: 768px) {
    .orn-fit__veh-sechd .orn-fit__sec-title2 { font-size: 22px; }
    .orn-fit__vehx-route { padding: 12px 14px; }
    .orn-fit__veh-body > .orn-fit__sec-title2 { margin-top: 20px; font-size: 22px; }
}
.orn-fit__vehx-body { padding: 20px 24px 24px; }
.orn-fit__vehx-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding-bottom: 16px; border-bottom: 1px solid rgb(240, 240, 240); }
/* journey page: the description sits under the name, and the rule goes below both */
.orn-fit__vehx-intro { padding-bottom: 18px; border-bottom: 1px solid rgb(240, 240, 240); }
.orn-fit__vehx-intro .orn-fit__vehx-head { padding-bottom: 0; border-bottom: 0; }
.orn-fit__vehx-intro .orn-fit__vehx-sub { font-family: Archivo, sans-serif; }
/* Journey page vehicle card, per the "ORN Private Tour" design. Scoped to the
   tab (.orn-fit__flt) so the trip summary's copy of the card keeps its own. */
.orn-fit__flt .orn-fit__vehx { margin-top: 22px; border: 1px solid #E3E6EA; box-shadow: 0 1px 2px rgba(20, 35, 59, 0.04), 0 8px 24px -12px rgba(20, 35, 59, 0.12); font-family: Archivo, sans-serif; }
.orn-fit__flt .orn-fit__vehx + .orn-fit__vehx { margin-top: 24px; }
.orn-fit__flt .orn-fit__vehx-hero { height: auto; aspect-ratio: 16 / 4.5; background-color: #22324F; }
.orn-fit__flt .orn-fit__vehx-body { padding: 30px 32px; }
.orn-fit__flt .orn-fit__vehx-intro { padding-bottom: 20px; border-bottom: 1px solid #ECECEC; }
.orn-fit__flt .orn-fit__vehx-intro .orn-fit__vehx-head { gap: 14px; }
.orn-fit__flt .orn-fit__vehx-name { font: 700 clamp(17px, 2vw, 21px)/1.3 Archivo, sans-serif; color: #14233B; }
.orn-fit__flt .orn-fit__vehx-sub { margin-top: 4px; font: 400 13px/1.4 Archivo, sans-serif; color: #5A6573; }
.orn-fit__flt .orn-fit__vehx-dsc { margin: 12px 0 0; font: 400 13.5px/1.6 Archivo, sans-serif; color: #4A5565; }
.orn-fit__flt .orn-fit__veh-change { flex: none; height: 36px; padding: 0 16px; margin-top: 0; border-radius: 7px; border: 1px solid #DADADA; background: #fff; font: 700 13.5px/1 Archivo, sans-serif; color: #151515; }
.orn-fit__flt .orn-fit__vehx-cols { margin-top: 20px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 20px; padding-bottom: 22px; border-bottom: 1px solid #ECECEC; }
.orn-fit__flt .orn-fit__vehx-collbl { margin-bottom: 0; font: 700 11px/1.4 'JetBrains Mono', monospace; letter-spacing: 0.14em; color: #14233B; }
.orn-fit__flt .orn-fit__vehx-list { gap: 0; }
.orn-fit__flt .orn-fit__vehx-item { margin-top: 12px; align-items: flex-start; gap: 10px; font: 400 14px/1.45 Archivo, sans-serif; color: #14233B; }
.orn-fit__flt .orn-fit__vehx-tick { width: 20px; height: 20px; margin-top: 0; background: #E8F6EE; color: #1F9D6B; font-size: 11px; font-weight: 700; }
.orn-fit__flt .orn-fit__vehx-tick--x { background: #FDECEC; color: #E4002B; font-size: 10px; }
.orn-fit__flt .orn-fit__vehx-notes { margin-top: 20px; padding-top: 0; border-top: 0; }
.orn-fit__flt .orn-fit__vehx-notelist { margin: 10px 0 0; padding-left: 20px; list-style: disc; gap: 6px; }
.orn-fit__flt .orn-fit__vehx-notelist li { display: list-item; font: 400 14px/1.5 Archivo, sans-serif; color: #4A5565; }
.orn-fit__flt .orn-fit__vehx-notelist li::before { content: none; }
@media (max-width: 768px) {
    .orn-fit__flt .orn-fit__vehx-hero { aspect-ratio: 16 / 8; }
    .orn-fit__flt .orn-fit__vehx-body { padding: 24px 20px; }
    .orn-fit__flt .orn-fit__vehx-dsc { font-size: 14px; }
    .orn-fit__flt .orn-fit__vehx-item, .orn-fit__flt .orn-fit__vehx-notelist li { font-size: 15px; }
}
.orn-fit__vehx-name { font-family: Archivo, sans-serif; font-weight: 700; font-size: 20px; color: rgb(20, 35, 59); line-height: 1.25; }
.orn-fit__vehx-sub { font-size: 13.5px; color: rgb(90, 101, 115); margin-top: 3px; }
.orn-fit__vehx-mark { flex: none; height: 30px; box-sizing: border-box; display: inline-flex; align-items: center; gap: 6px; padding: 0 12px; border-radius: 999px; background: #E8F6EE; color: #1F8A4C; font: 700 12.5px/1 Archivo, sans-serif; white-space: nowrap; }
.orn-fit__vehx-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 18px; }
@media (max-width: 700px) { .orn-fit__vehx-cols { grid-template-columns: 1fr; gap: 14px; } }
.orn-fit__vehx-col { }
.orn-fit__vehx-collbl { font-family: 'IBM Plex Mono', monospace; font-size: 11.5px; font-weight: 600; color: rgb(20, 35, 59); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 8px; }
.orn-fit__vehx-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
.orn-fit__vehx-item { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; color: rgb(60, 70, 85); line-height: 1.45; }
.orn-fit__vehx-tick { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 999px; background: rgb(238, 248, 240); color: rgb(40, 130, 70); font-size: 12px; font-weight: 700; flex: none; margin-top: 1px; }
.orn-fit__vehx-tick--x { background: rgb(250, 240, 240); color: rgb(180, 60, 60); }
.orn-fit__vehx-dsc { font-size: 14px; color: rgb(90, 101, 115); line-height: 1.55; margin: 14px 0 4px; }
.orn-fit__vehx-notes { margin-top: 18px; padding-top: 16px; border-top: 1px solid rgb(240, 240, 240); }
/* list-style renders nothing here — a list-item that is also a flex item
   generates no marker box (spec behaviour), and this <ul> is display:flex for
   the gap-based spacing — so the bullet is drawn manually via ::before instead. */
.orn-fit__vehx-notelist { list-style: none; padding-left: 0; margin: 8px 0 0; display: flex; flex-direction: column; gap: 5px; }
.orn-fit__vehx-notelist li { display: flex; gap: 8px; align-items: flex-start; font-size: 13.5px; color: rgb(90, 101, 115); line-height: 1.5; }
.orn-fit__vehx-notelist li::before { content: "\2022"; flex-shrink: 0; color: #000; font-weight: 700; line-height: 1.5; }

/* -- Tab: Day by day -------------------------------------------------------- */
.orn-fit__sec-title2 { font: 800 24px/1.1 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__daybd .orn-fit__sec-sub { max-width: 640px; font-size: 14.5px; line-height: 1.5; margin-top: 6px; }
.orn-fit__timeline { margin-top: 20px; padding-left: 6px; }
.orn-fit__day2 {
    position: relative; padding-left: 64px; padding-bottom: 22px;
    border-left: 2px solid var(--fit-border); margin-left: 20px;
}
.orn-fit__day2:last-child { border-left-color: transparent; padding-bottom: 0; }
.orn-fit__day2-badge {
    position: absolute; left: -21px; top: -2px; width: 40px; height: 40px; border-radius: 50%;
    background: var(--fit-ink); color: var(--fit-blush); display: flex; flex-direction: column;
    align-items: center; justify-content: center; font-family: var(--fit-mono); line-height: 1;
}
.orn-fit__day2-badge span:first-child { font-size: 9px; letter-spacing: .06em; color: #9A9A9A; }
.orn-fit__day2-badge span:last-child { font-size: 15px; font-weight: 600; margin-top: 2px; }
.orn-fit__day2-card { background: #fff; border: 1px solid var(--fit-border); border-radius: 14px; padding: 16px 20px; }
.orn-fit__day2-card--changed { background: #FDF6F5; border-color: #F3B4AF; }
.orn-fit__day2-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.orn-fit__day2-tag {
    font: 700 10px/1 var(--fit-mono); letter-spacing: .14em; color: var(--fit-red-2);
    background: var(--fit-red-tint); border-radius: 999px; padding: 4px 10px;
}
.orn-fit__day2-meals { font: 400 11.5px/1 var(--fit-mono); color: var(--fit-grey); margin-left: auto; }
.orn-fit__day2-changed {
    font: 700 9.5px/1 var(--fit-mono); letter-spacing: .12em; color: var(--fit-ink);
    background: var(--fit-blush); border-radius: 999px; padding: 4px 10px; text-transform: uppercase;
}
.orn-fit__day2-title { font: 700 17px/1.2 var(--fit-sans); color: var(--fit-ink); margin-top: 8px; }
.orn-fit__day2-desc { font-size: 13.5px; color: var(--fit-grey-2); line-height: 1.55; margin-top: 4px; }
/* Full-width day-plan block list — every transfer / sightseeing / train block as
   its own row (band chip · name+variant · Change), in backend order. Rows are
   separated by a hairline; the border-radius rounds the first/last of the list. */
.orn-fit__blklist { margin-top: 12px; border: 1px solid var(--fit-border); border-radius: 10px; background: #fff; overflow: hidden; }
.orn-fit__blk { display: grid; grid-template-columns: 68px 1fr auto; align-items: center; gap: 10px; padding: 10px 12px; border-top: 1px solid var(--fit-border); }
.orn-fit__blk:first-child { border-top: 0; }
.orn-fit__blk--empty { background: #FAFAFA; }
.orn-fit__blk--edit { cursor: pointer; transition: background .12s ease; }
.orn-fit__blk--edit:hover { background: var(--fit-red-tint, #FBF3F2); }
.orn-fit__blk-band { font: 700 8.5px/1.3 var(--fit-mono); letter-spacing: .1em; color: var(--fit-grey); text-transform: uppercase; }
.orn-fit__blk--empty .orn-fit__blk-band { color: #C4C4C4; }
.orn-fit__blk-main { min-width: 0; }
.orn-fit__blk-nm { font-size: 12.5px; line-height: 1.3; color: var(--fit-ink); font-weight: 600; }
.orn-fit__blk--empty .orn-fit__blk-nm { color: #9A9A9A; font-weight: 400; }
.orn-fit__blk-sub { font-size: 10.5px; line-height: 1.3; margin-top: 2px; color: var(--fit-grey-2, #5C5C5C); font-weight: 400; }
/* Committed slot + add-on meta on a day-by-day block row. */
.orn-fit__blk-metas { display: flex; flex-wrap: wrap; gap: 5px 12px; margin-top: 5px; }
.orn-fit__blk-meta { display: inline-flex; align-items: center; gap: 5px; font: 600 10.5px/1.25 var(--fit-sans); color: var(--fit-grey, #6E6E6E); }
.orn-fit__blk-meta svg { width: 12px; height: 12px; flex: none; color: var(--fit-red-2, #C90A12); }
.orn-fit__blk-hint { font: 700 8px/1 var(--fit-mono); letter-spacing: .1em; color: var(--fit-red-2); text-transform: uppercase; white-space: nowrap; }
@media (max-width: 560px) { .orn-fit__blk { grid-template-columns: 58px 1fr auto; gap: 8px; padding: 9px 10px; } }
/* Meal rows — folded into the day's block list at their time band (Breakfast→Morning,
   Lunch→Afternoon, Dinner→Evening). Reuses the .orn-fit__blk grid so they align with
   activity rows: [band] · [icon + name + inclusion]. State is shown by the icon tile
   colour (green/grey) + the inclusion sub — no right-side badge. */
.orn-fit__blk-meal { display: flex; align-items: center; gap: 9px; min-width: 0; }
.orn-fit__blk-meal-ic { flex: none; width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center; border-radius: 7px; }
.orn-fit__blk-meal-ic svg { width: 15px; height: 15px; }
.orn-fit__blk-meal-tx { min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.orn-fit__blk--meal-inc .orn-fit__blk-meal-ic { background: #DCF3EE; color: #008573; }
.orn-fit__blk--meal-inc .orn-fit__blk-sub { color: #037A69; }
.orn-fit__blk--meal-no .orn-fit__blk-meal-ic { background: #F0F0F0; color: #B4B4B4; }
.orn-fit__blk--meal-no .orn-fit__blk-nm { color: #9A9A9A; font-weight: 600; }
.orn-fit__blk--meal-no .orn-fit__blk-sub { color: #B4B4B4; }

/* -- Day-by-day inline "Change" option chooser (Sightseeing + Transfers) -----
   The open block row goes dark; the inline chooser renders directly under that
   row (inside the list) and reuses the shared .orn-sso__* option UI re-skinned
   to the FIT design. */
/* Open block row = a light "active" bar (blush + red left accent) — keeps only ONE
   dark block on screen (the selected option card) so the section reads lighter. */
.orn-fit__blk--open { background: var(--fit-red-tint, #FBF3F2); box-shadow: inset 3px 0 0 var(--fit-red, #F20D16); }
.orn-fit__blk--open .orn-fit__blk-band { color: var(--fit-red-2, #C90A12); }
.orn-fit__blk--open .orn-fit__blk-nm { color: var(--fit-ink, #151515); }
.orn-fit__blk--open .orn-fit__blk-sub { color: var(--fit-grey-2, #5C5C5C); }
.orn-fit__blk--open .orn-fit__blk-hint { color: var(--fit-red-2, #C90A12); }
.orn-fit__bandopts { padding: 13px 14px 15px; background: var(--fit-red-tint, #FBF3F2); }
.orn-fit__bandopts-eyebrow { font: 700 9px/1 var(--fit-mono); letter-spacing: .16em; color: var(--fit-grey, #6E6E6E); text-transform: uppercase; margin-bottom: 11px; }
.orn-fit__bandopts-loading, .orn-fit__bandopts-empty { font: 500 12.5px/1.4 var(--fit-sans); color: var(--fit-grey); padding: 6px 2px; }
.orn-fit__bandopts-body.orn-sso { padding: 0; font-family: var(--fit-sans); }

/* Compact, on-theme variant toggle (e.g. TRANSFER · Shared / Private). The
   double-ancestor scope outweighs ornholidays-content-options.css (loaded later). */
.orn-fit__bandopts .orn-fit__bandopts-body .orn-sso__variants { background: #fff; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 12px; padding: 11px 13px; margin: 0 0 10px; }
.orn-fit__bandopts .orn-fit__bandopts-body .orn-sso__grp + .orn-sso__grp { margin-top: 8px; }
.orn-fit__bandopts .orn-fit__bandopts-body .orn-sso__grp-lbl { font: 700 9px/1 var(--fit-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--fit-grey, #6E6E6E); margin: 0 0 7px; }
.orn-fit__bandopts .orn-fit__bandopts-body .orn-sso__tags { gap: 6px; }
.orn-fit__bandopts .orn-fit__bandopts-body .orn-sso__tag { border: 1px solid var(--fit-border, #E7E7E7); background: #fff; color: var(--fit-ink, #151515); border-radius: 999px; padding: 6px 14px; font: 700 12px/1 var(--fit-sans); height: auto; width: auto; }
.orn-fit__bandopts .orn-fit__bandopts-body .orn-sso__tag:hover { border-color: var(--fit-ink, #151515); color: var(--fit-ink, #151515); }
.orn-fit__bandopts .orn-fit__bandopts-body .orn-sso__tag.is-on { background: var(--fit-ink, #151515); color: #fff; border-color: var(--fit-ink, #151515); }

/* Option rows — pixel-perfect reference chooser. */
.orn-fit__opts { display: flex; flex-direction: column; gap: 8px; }
.orn-fit__opt { border: 1px solid var(--fit-border, #E7E7E7); border-radius: 13px; background: #fff; transition: border-color .12s, background .12s; }
.orn-fit__opt-row { display: flex; align-items: flex-start; gap: 12px; padding: 11px 14px; cursor: pointer; }
/* Visa/insurance compact row: details left, price + Select inline on the right. */
.orn-fit__opt-row--vi { align-items: center; }
.orn-fit__opt-side { flex: none; display: flex; align-items: center; gap: 16px; }
.orn-fit__opt-mark { flex: none; width: 26px; height: 26px; border-radius: 50%; background: var(--fit-red-tint, #FBF3F2); color: var(--fit-red-2, #C90A12); display: flex; align-items: center; justify-content: center; font: 800 15px/1 var(--fit-sans); transition: background .12s ease, color .12s ease, transform .1s ease; }
/* The "+" mark is the select button (only it commits an option). */
.orn-fit__opt:not(.is-on) .orn-fit__opt-mark { cursor: pointer; }
.orn-fit__opt:not(.is-on) .orn-fit__opt-mark:hover { background: var(--fit-red, #F20D16); color: #fff; transform: scale(1.08); }
.orn-fit__opt.is-on .orn-fit__opt-mark { cursor: default; }
.orn-fit__opt-main { flex: 1 1 auto; min-width: 0; }
.orn-fit__opt-nm { font: 700 13.5px/1.25 var(--fit-sans); color: var(--fit-ink, #151515); }
.orn-fit__opt-dsc { font: 400 11.5px/1.4 var(--fit-sans); color: var(--fit-grey-2, #5C5C5C); margin-top: 2px; }
/* Clipped description (~100 chars) with an inline Show more/less toggle. */
.orn-fit__opt-dsc--clip .orn-fit__opt-dsc-full { display: none; }
.orn-fit__opt-dsc.is-open .orn-fit__opt-dsc-short { display: none; }
.orn-fit__opt-dsc.is-open .orn-fit__opt-dsc-full { display: inline; }
.orn-fit__opt-dsc-more { background: none; border: 0; padding: 0; cursor: pointer; font: 700 11px/1.4 var(--fit-sans); color: var(--fit-red-2, #C90A12); white-space: nowrap; }
.orn-fit__opt-dsc-more:hover { text-decoration: underline; }
/* ---- "Add Activity" browse screen (orn-ui ContentCardList parity) ----
   Its own orn-act__* namespace rather than the .orn-fit__opt family: those are
   restyled inside .orn-topt__drawer into a radio-style OPTION picker, which is the
   wrong affordance for a row that drills into a further choice. The visa
   destination picker keeps the .orn-fit__opt rows it has always had. */
.orn-act__bar { display: flex; align-items: center; gap: 10px; margin: 0 0 12px; }
.orn-act__search { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: 8px; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 10px; background: #fff; padding: 0 12px; }
.orn-act__search-ic { flex: none; width: 16px; height: 16px; color: var(--fit-grey, #6E6E6E); }
.orn-act__search-in { flex: 1 1 auto; min-width: 0; border: 0; background: none; padding: 10px 0; font: 500 13.5px/1.2 var(--fit-sans); color: var(--fit-ink, #151515); }
.orn-act__search-in:focus { outline: none; }
/* City chips appear only when the day spans more than one city (a transfer day),
   so they sit inline with the time-of-day chips rather than behind a disclosure. */
.orn-act__cities, .orn-act__slots { display: flex; flex-wrap: wrap; gap: 8px; }
.orn-act__cities { margin: 0 0 10px; }
.orn-act__slots { margin: 0 0 14px; }
.orn-act__city, .orn-act__slot { display: inline-flex; align-items: center; gap: 7px; border: 1px solid var(--fit-border, #E7E7E7); background: #fff; color: var(--fit-ink, #151515); border-radius: 999px; padding: 8px 16px; font: 600 13px/1 var(--fit-sans); cursor: pointer; transition: border-color .12s, background .12s, color .12s; }
.orn-act__slot svg { width: 15px; height: 15px; }
.orn-act__city:hover, .orn-act__slot:hover { border-color: var(--fit-ink, #151515); }
.orn-act__city.is-on, .orn-act__slot.is-on { background: var(--fit-ink, #151515); color: #fff; border-color: var(--fit-ink, #151515); }

/* Activity card: media rail + body, footer rule carrying duration vs total price. */
.orn-act__list { display: flex; flex-direction: column; gap: 14px; }
.orn-act__card { display: flex; align-items: stretch; background: #fff; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 12px; overflow: hidden; cursor: pointer; transition: border-color .12s, box-shadow .12s; }
.orn-act__card:hover { border-color: var(--fit-ink, #151515); box-shadow: 0 4px 14px rgba(20, 35, 59, .08); }
.orn-act__media { position: relative; flex: none; width: 168px; min-height: 132px; background: var(--orn-cream, #f4f4f4); display: flex; align-items: center; justify-content: center; }
/* Absolute rather than height:100% — the rail is a stretched flex item with no
   resolved height of its own, so a percentage height would collapse the image. */
.orn-act__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.orn-act__noimg { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; color: var(--fit-grey, #6E6E6E); font: 500 12px/1.2 var(--fit-sans); text-align: center; padding: 18px 8px; }
.orn-act__noimg svg { width: 38px; height: 38px; }
.orn-act__ribbon { position: absolute; top: 10px; left: 0; z-index: 1; background: #8a3b16; color: #fff; font: 600 12px/1 var(--fit-sans); padding: 6px 11px; border-radius: 0 4px 4px 0; }
.orn-act__body { flex: 1 1 auto; min-width: 0; padding: 14px 16px; display: flex; flex-direction: column; }
.orn-act__nm { font: 700 16px/1.3 var(--fit-sans); color: var(--fit-ink, #151515); }
.orn-act__meta { font: 500 10.5px/1.3 var(--fit-mono); letter-spacing: .04em; text-transform: uppercase; color: var(--fit-grey, #6E6E6E); margin-top: 4px; }
.orn-act__card .orn-fit__opt-dsc { font: 400 13px/1.5 var(--fit-sans); color: var(--fit-grey-2, #5C5C5C); margin-top: 7px; }
.orn-act__tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.orn-act__tag { display: inline-flex; align-items: center; gap: 6px; background: var(--orn-cream, #f4f4f4); color: var(--fit-grey-2, #5C5C5C); border-radius: 999px; padding: 6px 12px; font: 500 12.5px/1 var(--fit-sans); }
.orn-act__tag svg { width: 14px; height: 14px; }
.orn-act__foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-top: 12px; padding-top: 11px; border-top: 1px dashed var(--fit-border, #E7E7E7); }
.orn-act__dur { display: inline-flex; align-items: center; gap: 7px; font: 500 13px/1 var(--fit-sans); color: var(--fit-grey-2, #5C5C5C); }
.orn-act__dur svg { width: 15px; height: 15px; }
.orn-act__prc { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.orn-act__prc b { font: 700 17px/1.1 var(--fit-sans); color: var(--fit-ink, #151515); }
.orn-act__prc small { font: 500 11.5px/1 var(--fit-sans); color: var(--fit-grey, #6E6E6E); }
@media (max-width: 560px) {
  .orn-act__card { flex-direction: column; }
  .orn-act__media { width: 100%; height: 150px; }
  .orn-act__ribbon { border-radius: 0 4px 4px 0; }
}

/* Back to the browse list from a tour's options (and from a dead end). */
.orn-fit__bandopts-back { display: inline-block; background: none; border: 0; padding: 0; margin: 0 0 10px; cursor: pointer; font: 700 11.5px/1 var(--fit-sans); color: var(--fit-grey-2, #5C5C5C); }
.orn-fit__bandopts-back:hover { color: var(--fit-ink, #151515); }

.orn-fit__opt-nmrow { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.orn-fit__opt-cur { font: 700 8px/1 var(--fit-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--fit-red-2, #C90A12); background: var(--fit-red-tint, #FBF3F2); border: 1px solid var(--fit-red-border, #F6CBC7); border-radius: 999px; padding: 3px 8px; }
.orn-fit__opt-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; margin-top: 6px; }
.orn-fit__opt-chip { display: inline-flex; align-items: center; gap: 4px; font: 400 12px/1.3 Archivo, sans-serif; color: var(--fit-grey, #6E6E6E); }
.orn-fit__opt-chip svg { width: 14px; height: 14px; flex: none; }
.orn-fit__opt-badge { font: 700 8.5px/1 var(--fit-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fit-grey, #6E6E6E); }
.orn-fit__opt-note { font: 400 10.5px/1.3 var(--fit-sans); color: var(--fit-red-2, #C90A12); }
.orn-fit__opt-prc { flex: none; font: 700 13px/1.2 var(--fit-mono); color: var(--fit-ink, #151515); white-space: nowrap; padding-top: 1px; }
/* Per-person delta price (day-by-day option rows): increase red, decrease green. */
.orn-fit__opt-prc--up { color: var(--fit-red-2, #C90A12); }
.orn-fit__opt-prc--down { color: #1F8A5B; }
.orn-fit__opt-prc--same { color: var(--fit-grey, #6E6E6E); font-weight: 600; }
.orn-fit__opt-pp { font-weight: 500; opacity: .7; }
.orn-fit__opt:hover { border-color: var(--fit-red-border, #F6CBC7); }
/* Selected (current) option → SAME light card as the others; the ONLY differentiator
   is the mark (filled-red ✓ vs the red-tint +), a soft red ring + the "Current" tag.
   No dark fill / no white-text overrides, so it stays visually consistent with the
   unselected options. */
.orn-fit__opt.is-on { background: #fff; border-color: var(--fit-red-border, #F6CBC7); box-shadow: 0 3px 12px rgba(242, 13, 22, .07); }
.orn-fit__opt.is-on .orn-fit__opt-mark { background: var(--fit-red, #F20D16); color: #fff; font-size: 14px; }
/* Focused (being-configured) NON-selected option — a light card with a red ring
   so it reads as "picking", not "selected". */
.orn-fit__opt--focus { border-color: var(--fit-red-border, #F6CBC7); box-shadow: 0 4px 14px rgba(242, 13, 22, .08); }
/* Mandatory time-slot picker — appears on the focused option (current OR the one
   being configured). Layout is shared; light by default, dark-card overrides below. */
.orn-fit__bandopts .orn-fit__opt .orn-sso__slots { margin: 13px 14px; padding-top: 13px; border-top: 1px solid var(--fit-border, #E7E7E7); }
.orn-fit__bandopts .orn-fit__opt .orn-sso__slots-lbl { display: flex; align-items: center; gap: 6px; font: 700 9px/1 var(--fit-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--fit-grey, #6E6E6E); margin-bottom: 10px; }
.orn-fit__bandopts .orn-fit__opt .orn-sso__slots-lbl svg { width: 12px; height: 12px; }
.orn-fit__slot-req { font: 700 7.5px/1 var(--fit-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fit-grey, #6E6E6E); border: 1px solid var(--fit-border, #E7E7E7); border-radius: 999px; padding: 3px 7px; }
.orn-fit__bandopts .orn-fit__opt .orn-sso__slot-row { display: flex; flex-wrap: wrap; gap: 8px; }
.orn-fit__bandopts .orn-fit__opt .orn-sso__slot { display: inline-flex; align-items: center; background: #fff; color: #151515; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 10px; padding: 8px 15px; font: 700 12.5px/1 var(--fit-sans); transition: transform .1s ease, border-color .12s ease, box-shadow .12s ease; }
.orn-fit__bandopts .orn-fit__opt .orn-sso__slot:hover:not([disabled]) { border-color: var(--fit-red, #F20D16); transform: translateY(-1px); box-shadow: 0 3px 10px rgba(0, 0, 0, .12); }
/* Selected slot = a chosen CHIP (red-tint + outline + red ✓), NOT a solid CTA — so it
   doesn't compete with the solid-red "Select this option"/"Update" button. */
.orn-fit__bandopts .orn-fit__opt .orn-sso__slot.is-on { background: var(--fit-red-tint, #FBF3F2); color: var(--fit-red-2, #C90A12); border-color: var(--fit-red, #F20D16); font-weight: 800; }
.orn-fit__bandopts .orn-fit__opt .orn-sso__slot.is-on .orn-fit__slot-ck { color: var(--fit-red, #F20D16); }
.orn-fit__bandopts .orn-fit__opt .orn-sso__slot[disabled] { background: #F2F2F2; color: #B4B4B4; border-color: var(--fit-border, #E7E7E7); opacity: 1; }
.orn-fit__slot-ck { margin-right: 5px; font-size: 11px; line-height: 1; }
/* (Current card is now a light card — no dark slot overrides needed.) */
.orn-fit__slot-opt { font: 700 7.5px/1 var(--fit-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fit-grey, #6E6E6E); border: 1px solid var(--fit-border, #E7E7E7); border-radius: 999px; padding: 3px 7px; }

/* Add-ons ("Extras available for purchase") — multi-select checkbox list on the
   focused option, mirroring orn-ui's TicketCard extras block. */
.orn-fit__bandopts .orn-fit__opt .orn-sso__addons { margin: 13px 14px; padding-top: 13px; border-top: 1px solid var(--fit-border, #E7E7E7); }
.orn-fit__bandopts .orn-fit__opt .orn-sso__addon-list { display: flex; flex-direction: column; gap: 8px; }
.orn-fit__bandopts .orn-fit__opt .orn-sso__addon { display: flex; align-items: flex-start; gap: 10px; width: 100%; text-align: left; font: inherit; appearance: none; -webkit-appearance: none; padding: 9px 11px; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 10px; background: #fff; cursor: pointer; transition: border-color .12s ease, background .12s ease; }
.orn-fit__bandopts .orn-fit__opt .orn-sso__addon:hover { border-color: var(--fit-red-border, #F6CBC7); }
.orn-fit__bandopts .orn-fit__opt .orn-sso__addon.is-disabled { cursor: not-allowed; opacity: .55; }
.orn-fit__bandopts .orn-fit__opt .orn-sso__addon-box { flex: none; width: 18px; height: 18px; margin-top: 1px; border: 1.5px solid var(--fit-border, #D9D9D9); border-radius: 5px; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; line-height: 1; color: transparent; transition: background .12s ease, border-color .12s ease, color .12s ease; }
.orn-fit__bandopts .orn-fit__opt .orn-sso__addon.is-on .orn-sso__addon-box { background: var(--fit-red, #F20D16); border-color: var(--fit-red, #F20D16); color: #fff; }
.orn-fit__bandopts .orn-fit__opt .orn-sso__addon.is-on { border-color: var(--fit-red-border, #F6CBC7); background: var(--fit-red-tint, #FBF3F2); }
.orn-fit__bandopts .orn-fit__opt .orn-sso__addon-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.orn-fit__bandopts .orn-fit__opt .orn-sso__addon-nm { font: 700 12.5px/1.25 var(--fit-sans); color: var(--fit-ink, #151515); }
.orn-fit__bandopts .orn-fit__opt .orn-sso__addon-dsc { font: 400 11px/1.35 var(--fit-sans); color: var(--fit-grey-2, #5C5C5C); }
.orn-fit__bandopts .orn-fit__opt .orn-sso__addon-warn { font: 400 10.5px/1.3 var(--fit-sans); color: var(--fit-red-2, #C90A12); }
.orn-fit__bandopts .orn-fit__opt .orn-sso__addon-prc { flex: none; font: 700 12.5px/1.2 var(--fit-mono); color: var(--fit-ink, #151515); white-space: nowrap; padding-top: 1px; }

/* The single commit control on the focused option — "Select this option" / "Update".
   Replaces the split "auto-commit on current" vs "+-mark on others" behaviour. */
.orn-fit__bandopts .orn-fit__opt .orn-sso__apply { margin: 13px 14px; display: flex; justify-content: flex-end; }
/* SECONDARY — selection action, not a priced commit (see button hierarchy). */
.orn-fit__opt-apply { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 1px solid var(--fit-red, #F20D16); background: var(--fit-red, #F20D16); color: #fff; border-radius: var(--fit-btn-radius); padding: 10px 24px; font: 800 13px/1 var(--fit-sans); letter-spacing: .01em; cursor: pointer; box-shadow: 0 2px 9px rgba(242,13,22,.20); transition: background .14s ease, border-color .14s ease, transform .08s ease, box-shadow .14s ease; }
.orn-fit__opt-apply:hover { background: var(--fit-red-2, #C90A12); border-color: var(--fit-red-2, #C90A12); box-shadow: 0 4px 15px rgba(242,13,22,.28); }
.orn-fit__opt-apply:active { transform: scale(.97); }
.orn-fit__opt-apply.is-loading { opacity: .95; cursor: progress; }
.orn-fit__opt-apply:disabled:not(.is-loading) { background: var(--fit-disabled-2); color: var(--fit-disabled-ink); border-color: var(--fit-disabled); cursor: not-allowed; }
.orn-fit__opt-apply:disabled:not(.is-loading):hover { background: var(--fit-disabled-2); }

/* -- Tab: Itinerary (read-only split-stay overview + highlights) ------------ */
.orn-fit__itin { display: grid; grid-template-columns: 1.1fr .9fr; gap: 18px; }
.orn-fit__itin-main { background: #fff; border: 1px solid var(--fit-border); border-radius: 16px; padding: 24px 26px; }
.orn-fit__itin-title { font: 800 22px/1.1 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__itin-story { font-size: 15px; color: var(--fit-grey-2); line-height: 1.55; margin-top: 10px; }
.orn-fit__legs { margin-top: 20px; padding-left: 6px; }
.orn-fit__leg { position: relative; padding-left: 30px; padding-bottom: 20px; border-left: 2px solid var(--fit-border); margin-left: 6px; }
.orn-fit__leg:last-child { border-left-color: transparent; padding-bottom: 0; }
.orn-fit__leg-dot { position: absolute; left: -8px; top: 1px; width: 14px; height: 14px; border-radius: 50%; background: var(--fit-red); border: 3px solid #fff; box-shadow: 0 0 0 1px #E8E8E8; }
.orn-fit__leg-eyebrow { font: 600 11.5px/1 var(--fit-mono); letter-spacing: .12em; color: var(--fit-red-2); }
.orn-fit__leg-city { font: 700 17px/1.2 var(--fit-sans); color: var(--fit-ink); margin-top: 3px; }
.orn-fit__leg-blurb { font-size: 13.5px; color: var(--fit-grey-3); margin-top: 2px; line-height: 1.5; }
.orn-fit__leg-hotel { font-size: 13px; color: #3A3A3A; margin-top: 6px; }
.orn-fit__leg-hotel strong { color: var(--fit-ink); }
.orn-fit__leg-stars { color: var(--fit-red); }
.orn-fit__itin-side { background: var(--fit-surface); border: 1px solid var(--fit-border); border-radius: 16px; padding: 24px 26px; align-self: start; }
.orn-fit__itin-side-title { font: 800 20px/1.1 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__hl { margin-top: 12px; display: flex; flex-direction: column; gap: 10px; }
.orn-fit__hl-row { display: flex; gap: 10px; font-size: 14px; color: #3A3A3A; line-height: 1.45; }
.orn-fit__hl-plus { color: var(--fit-red); font-weight: 800; flex-shrink: 0; }
@media (max-width: 720px) { .orn-fit__itin { grid-template-columns: 1fr; } }

/* -- Tab: Map (generic stylized zone map + route chain + stay list) --------- */
.orn-fit__map-panel { background: var(--fit-ink-2); border-radius: 16px; padding: 18px; margin-top: 16px; }
.orn-fit__map-eyebrow { font: 600 10.5px/1 var(--fit-mono); letter-spacing: .16em; color: var(--fit-red); margin-bottom: 12px; }
.orn-fit__map-stage {
    position: relative; width: 100%; max-width: 600px; margin: 0 auto; height: 420px;
    border-radius: 12px; overflow: hidden;
    background: radial-gradient(120% 100% at 20% 15%, #1D1D1D 0%, #171717 55%, #111 100%);
}
.orn-fit__map-panel--google { position: relative; padding: 0; border-radius: 12px; overflow: hidden; }
.orn-fit__map-stage-google { width: 100%; height: 420px; }
/* Strip Google's default InfoWindow chrome (white box, tail, close button) so
   it reads as our own plain black card. */
.orn-fit__map-stage-google .gm-style-iw-c,
.orn-jd__map-gmap .gm-style-iw-c { background: transparent; box-shadow: none; padding: 0; }
.orn-fit__map-stage-google .gm-style-iw-d,
.orn-jd__map-gmap .gm-style-iw-d { overflow: visible !important; padding: 0; }
.orn-fit__map-stage-google .gm-style-iw-tc, .orn-fit__map-stage-google .gm-style-iw-t::after,
.orn-jd__map-gmap .gm-style-iw-tc, .orn-jd__map-gmap .gm-style-iw-t::after { display: none; }
.orn-fit__map-stage-google button.gm-ui-hover-effect,
.orn-jd__map-gmap button.gm-ui-hover-effect { display: none !important; }

.orn-rm-card {
    display: flex; align-items: center; gap: 8px;
    background: #171717; color: #fff; border-radius: 10px; padding: 8px 14px 8px 8px;
    box-shadow: 0 6px 16px rgba(0, 0, 0, .35); white-space: nowrap;
}
.orn-rm-card__badge {
    flex-shrink: 0; width: 22px; height: 22px; border-radius: 50%;
    background: var(--fit-red); color: #fff; font: 700 12px/1 var(--fit-mono);
    display: flex; align-items: center; justify-content: center;
}
.orn-rm-card__city { font: 700 14px/1.3 var(--fit-mono); }
.orn-rm-card__days { color: #E58A8A; font: 500 11.5px/1.3 var(--fit-mono); margin-top: 1px; }
.orn-fit__map-grid {
    position: absolute; inset: 0;
    background-image: repeating-linear-gradient(0deg, rgba(255,255,255,.035) 0 1px, transparent 1px 42px), repeating-linear-gradient(90deg, rgba(255,255,255,.035) 0 1px, transparent 1px 42px);
}
.orn-fit__map-svg2 { position: absolute; inset: 0; width: 100%; height: 100%; }
.orn-fit__map-pin { position: absolute; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; z-index: 2; }
.orn-fit__map-dot {
    width: 26px; height: 26px; border-radius: 50%; background: var(--fit-blush);
    box-shadow: 0 0 0 6px rgba(242,13,22,.18); display: flex; align-items: center; justify-content: center;
    font: 700 11px/1 var(--fit-mono); color: var(--fit-ink);
}
.orn-fit__map-plabel { font: 700 12.5px/1 var(--fit-sans); color: var(--fit-surface); margin-top: 6px; white-space: nowrap; text-shadow: 0 1px 5px rgba(0,0,0,.9); }
.orn-fit__map-empty { color: #9A9A9A; font-size: 13px; text-align: center; padding-top: 180px; }
.orn-fit__routechain { display: flex; align-items: center; flex-wrap: wrap; gap: 14px 16px; margin-top: 16px; background: #fff; border: 1px solid var(--fit-border); border-radius: 14px; padding: 16px 18px; }
.orn-fit__rc-item { display: inline-flex; align-items: center; gap: 14px; }
.orn-fit__rc-stop { display: flex; align-items: center; gap: 9px; }
.orn-fit__rc-n { flex-shrink: 0; width: 26px; height: 26px; border-radius: 50%; background: var(--fit-ink); color: var(--fit-blush); display: flex; align-items: center; justify-content: center; font: 600 12px/1 var(--fit-mono); }
.orn-fit__rc-stop-txt { line-height: 1; }
.orn-fit__rc-city { font: 700 14.5px/1.15 var(--fit-sans); color: var(--fit-ink); white-space: nowrap; }
.orn-fit__rc-nights { font: 400 10px/1 var(--fit-mono); color: var(--fit-grey); margin-top: 3px; }
.orn-fit__rc-leg { display: inline-flex; flex-direction: column; align-items: center; gap: 3px; }
.orn-fit__rc-arrow { color: var(--fit-sand); font-size: 14px; line-height: 1; }
.orn-fit__rc-mode { font: 700 8px/1 var(--fit-mono); letter-spacing: .08em; color: var(--fit-grey); text-transform: uppercase; white-space: nowrap; }
.orn-fit__staylist { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; margin-top: 16px; }
.orn-fit__stay { background: #fff; border: 1px solid var(--fit-border); border-radius: 14px; padding: 16px 18px; display: flex; gap: 12px; align-items: flex-start; }
.orn-fit__stay-n { flex-shrink: 0; width: 30px; height: 30px; border-radius: 50%; background: var(--fit-ink); color: var(--fit-blush); display: flex; align-items: center; justify-content: center; font: 600 14px/1 var(--fit-mono); }
.orn-fit__stay-area { font: 700 16px/1.1 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__stay-vibe { font-size: 12.5px; color: var(--fit-red-2); font-weight: 600; }
.orn-fit__stay-hotel { font-size: 13px; color: var(--fit-grey-2); margin-top: 4px; }
.orn-fit__stay-stars { color: var(--fit-red); }

/* -- Tab: Vehicle (whole-trip vehicle-on-disposal chooser) ------------------ */
.orn-fit__veh { display: flex; flex-direction: column; gap: 12px; margin-top: 16px; }
.orn-fit__veh-row { background: #fff; border: 1px solid var(--fit-border); border-radius: 14px; padding: 18px 22px; display: flex; align-items: center; gap: 18px; }
.orn-fit__veh-row[data-veh-id] { cursor: pointer; transition: border-color .15s, box-shadow .15s; }
.orn-fit__veh-row[data-veh-id]:hover { border-color: var(--fit-grey); box-shadow: 0 6px 16px rgba(20,20,20,.06); }
.orn-fit__veh-row--sel { background: var(--fit-ink); border-color: var(--fit-ink); }
.orn-fit__veh-row--sel[data-veh-id]:hover { border-color: var(--fit-ink); }
/* Radio + thumbnail (per ORN Journey Detail.dc.html) — #C9C5BD has no existing
   token, so it's hardcoded to match the comp exactly. */
.orn-fit__veh-radio { flex-shrink: 0; width: 20px; height: 20px; border-radius: 999px; display: flex; align-items: center; justify-content: center; border: 1.5px solid #C9C5BD; }
.orn-fit__veh-radio-dot { width: 10px; height: 10px; border-radius: 999px; background: transparent; }
.orn-fit__veh-radio--on { border: 2px solid var(--fit-red); }
.orn-fit__veh-radio--on .orn-fit__veh-radio-dot { background: var(--fit-red); }
.orn-fit__veh-thumb { flex-shrink: 0; width: 72px; height: 52px; border-radius: 8px; background-size: cover; background-position: center; background-color: var(--fit-surface-2); }
.orn-fit__veh-main { flex: 1; min-width: 0; }
.orn-fit__veh-name { font: 700 18px/1.1 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__veh-row--sel .orn-fit__veh-name { color: var(--fit-surface); }
.orn-fit__veh-note { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--fit-grey-2); margin-top: 4px; }
.orn-fit__veh-note svg { flex-shrink: 0; }
.orn-fit__veh-row--sel .orn-fit__veh-note { color: #C3CCD6; }
.orn-fit__veh-right { text-align: right; flex-shrink: 0; }
/* Flat base price (per ORN Journey Detail.dc.html) — stays ink/black regardless
   of selection state; only the expanded footer's Total tracks add-ons. */
.orn-fit__veh-trip { font: 600 16px/1 var(--fit-mono); color: var(--fit-ink); white-space: nowrap; }
.orn-fit__veh-mark { display: inline-flex; align-items: center; justify-content: flex-end; gap: 6px; font-size: 13px; font-weight: 700; color: var(--fit-red-2); margin-top: 5px; }
.orn-fit__veh-row--sel .orn-fit__veh-mark { color: var(--fit-blush); }
/* Change = ghost (per the button-tier convention): white, ink, grey border. */
.orn-fit__veh-change { cursor: pointer; font: 700 13px/1 var(--fit-sans); color: var(--fit-ink); background: #fff; border: 1px solid var(--fit-border); border-radius: var(--fit-btn-radius); padding: 9px 18px; margin-top: 6px; }
.orn-fit__veh-change:hover { border-color: var(--fit-grey); }
.orn-fit__veh-retry { cursor: pointer; background: none; border: 0; padding: 0; font: 700 12.5px/1 var(--fit-sans); color: var(--fit-red-2); text-decoration: underline; }

/* Rich rows (option + committed-vehicle): the summary line sits in .orn-fit__veh-top,
   with components / inclusion detail stacked below it. */
.orn-fit__veh-row--opt { flex-direction: column; align-items: stretch; gap: 0; }
.orn-fit__veh-top { display: flex; align-items: center; gap: 18px; }
/* Focused (clicked) option — reveals its extras + Select button; red hairline like
   the sightseeing chooser's --focus card. */
.orn-fit__veh-row--focus { border-color: var(--fit-red-border); box-shadow: 0 4px 14px rgba(242,13,22,.08); }
.orn-fit__veh-row--sel .orn-fit__veh-select { background: var(--fit-red, #F20D16); }
.orn-fit__veh-cmplbl { font: 600 10.5px/1 var(--fit-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--fit-grey); }
/* Inclusions/add-ons box (per ORN Journey Detail.dc.html): a bordered list.
   Mandatory inclusions are static rows (.orn-fit__veh-inclitem); payable extras
   stay interactive checkboxes (.orn-fit__veh-xtra). Both share .orn-fit__veh-cmprow
   so one sibling rule draws the divider between rows of either kind. */
.orn-fit__veh-cmps { display: flex; flex-direction: column; gap: 10px; margin-top: 14px; padding-top: 14px; border-top: 1px dashed var(--fit-border); }
.orn-fit__veh-inclbox { border: 1px solid var(--fit-border); border-radius: 10px; overflow: hidden; background: #fff; margin-top: 8px; }
.orn-fit__veh-cmprow { display: flex; align-items: center; gap: 12px; padding: 12px 14px; }
.orn-fit__veh-inclbox > .orn-fit__veh-cmprow + .orn-fit__veh-cmprow { border-top: 1px solid var(--fit-border); }
.orn-fit__veh-inclitem { cursor: not-allowed; background: var(--fit-surface-2); }
/* #B9B4AA (disabled checkbox fill) has no existing token — hardcoded to match the comp. */
.orn-fit__veh-cb-incl { flex-shrink: 0; width: 18px; height: 18px; border-radius: 4px; display: flex; align-items: center; justify-content: center; background: #B9B4AA; color: #fff; font-size: 11px; }
.orn-fit__veh-inclitem-nm { flex: 1; min-width: 0; font-size: 13.5px; color: var(--fit-grey-2); }
.orn-fit__veh-xtra { cursor: pointer; background: #fff; transition: background .15s; }
.orn-fit__veh-xtra:hover { background: var(--fit-surface-2); }
.orn-fit__veh-xtra--on { background: var(--fit-red-tint); }
.orn-fit__veh-xtra-cb { width: 16px; height: 16px; flex-shrink: 0; accent-color: var(--fit-red); cursor: pointer; }
.orn-fit__veh-xtra-nm { flex: 1; min-width: 0; font-size: 13.5px; color: var(--fit-ink); }
.orn-fit__veh-xtra-pr { flex-shrink: 0; font: 700 13px/1 var(--fit-mono); color: var(--fit-red-2); white-space: nowrap; }
/* Reused as the "Included" pill on .orn-fit__veh-inclitem rows (#1F7A46/#EAF5EE —
   no existing token for this green). */
.orn-fit__veh-xtra-inc { flex-shrink: 0; font: 600 11px/1 var(--fit-mono); letter-spacing: .04em; color: #1F7A46; background: #EAF5EE; padding: 3px 9px; border-radius: 999px; white-space: nowrap; }
/* Total + Select/Update strip — bleeds to the row's own padding edges. */
.orn-fit__veh-footer { display: flex; align-items: center; justify-content: flex-end; gap: 20px; margin: 14px -22px -18px; padding: 14px 22px; border-top: 1px solid var(--fit-border); flex-wrap: wrap; }
.orn-fit__veh-total { display: flex; flex-direction: column; align-items: flex-end; text-align: right; }
.orn-fit__veh-total-lbl { font-size: 12px; font-weight: 500; color: var(--fit-grey); }
.orn-fit__veh-total-val { font: 700 17px/1.2 var(--fit-mono); color: var(--fit-ink); }
/* Mobile-only sticky footer (shown under the ≤768px query below) — one Total +
   Select/Update bar for the whole "Choose your vehicle" sheet, not per row. */
.orn-fit__veh-footbar { display: none; }
/* Selected vehicle = a WHITE card with an ink "selected" border (matches the hotel
   --sel treatment), not a dark card. */
.orn-fit__veh-row--sel { background: #fff; border: 2px solid var(--fit-ink); box-shadow: 0 3px 12px rgba(20,35,59,.08); }
.orn-fit__veh-row--sel[data-veh-id]:hover { border-color: var(--fit-ink); }
.orn-fit__veh-row--sel .orn-fit__veh-name { color: var(--fit-ink); }
.orn-fit__veh-row--sel .orn-fit__veh-note { color: var(--fit-grey-2); }
.orn-fit__veh-row--sel .orn-fit__veh-mark { color: var(--fit-red-2); }
/* Committed-vehicle inclusion detail (vodO): tick rows (image-3 static, ORN theme). */
.orn-fit__veh-cmp { display: flex; align-items: flex-start; gap: 8px; font-size: 13.5px; color: var(--fit-ink); }
.orn-fit__veh-cmp-tick { flex-shrink: 0; font-weight: 700; color: var(--fit-red); line-height: 1.35; }
.orn-fit__veh-cmp-tick--pay { color: var(--fit-grey); }
/* Committed-vehicle detail (vodO): pickup/drop, capacity, inclusions, fuel policy. */
.orn-fit__veh-detail { margin-top: 14px; padding-top: 16px; border-top: 1px dashed var(--fit-border); display: flex; flex-direction: column; gap: 14px; }
.orn-fit__veh-leg { display: flex; flex-wrap: wrap; gap: 12px 40px; background: var(--fit-surface-2); border: 1px solid var(--fit-border); border-radius: 10px; padding: 12px 16px; }
.orn-fit__veh-legcol { display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 150px; }
.orn-fit__veh-legval { font: 600 14px/1.3 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__veh-badges { display: flex; flex-wrap: wrap; gap: 8px; }
.orn-fit__veh-badge { font: 600 12px/1 var(--fit-sans); color: var(--fit-red-2); background: var(--fit-red-tint-2); border: 1px solid var(--fit-red-border); border-radius: 6px; padding: 5px 9px; }
.orn-fit__veh-badge--muted { color: var(--fit-grey); background: var(--fit-surface-2); border-color: var(--fit-border); }
.orn-fit__veh-inc { display: flex; flex-wrap: wrap; gap: 16px 40px; background: var(--fit-surface-2); border: 1px solid var(--fit-border); border-radius: 10px; padding: 14px 16px; }
.orn-fit__veh-inccol { display: flex; flex-direction: column; gap: 8px; flex: 1; min-width: 180px; }
.orn-fit__veh-fuel { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; font-size: 13px; color: var(--fit-grey-2); }
.orn-fit__veh-fuel strong { color: var(--fit-ink); font-weight: 700; }
.orn-fit__veh-fuel-note { flex-basis: 100%; font-size: 12px; color: var(--fit-grey); }
.orn-fit__veh-farenote { display: flex; gap: 7px; font-size: 12.5px; color: var(--fit-grey); }
.orn-fit__veh-farenote::before { content: "\24D8"; flex-shrink: 0; color: var(--fit-grey); }

/* -- Right rail: unified "Your private <dest>" sidebar --------------------- */
.orn-fit__side { background: #fff; border: 1px solid var(--fit-border); border-radius: 18px; padding: 24px 24px 26px; box-shadow: 0 14px 34px rgba(20,20,20,.08); position: sticky; top: 18px; }
.orn-fit__side-title { font: 800 20px/1.1 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__side-eyebrow { font: 600 11px/1 var(--fit-mono); letter-spacing: .14em; color: var(--fit-grey); font-weight: 600; margin-top: 18px; }
.orn-fit__side-rooms { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 9px; background: var(--fit-surface); border: 1px solid var(--fit-border); border-radius: 12px; padding: 12px 14px; }
.orn-fit__side-rooms-txt { font-size: 14px; font-weight: 600; color: var(--fit-ink); }
.orn-fit__side-edit { cursor: pointer; font-size: 13px; font-weight: 700; color: var(--fit-red-2); white-space: nowrap; background: none; border: 0; padding: 0; text-decoration: underline; }
/* Itinerary summary + Edit affordance above "Check availability & price" — system
   users only (window.ORN_JRN_SESSION.isSystemUser), pre-price only. */
.orn-fit__side-hd { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.orn-fit__itin-bar { margin-bottom: 10px; }
.orn-fit__itin-line { font-size: 13px; font-weight: 600; color: var(--fit-ink); line-height: 1.4; }
.orn-fit__side-veh { font-size: 14px; color: #3A3A3A; margin-top: 8px; font-weight: 600; }
.orn-fit__side-veh-note { font-size: 12px; color: var(--fit-grey); margin-top: 4px; }
.orn-fit__side-daterow { display: flex; justify-content: space-between; font-size: 13.5px; margin-top: 16px; }
.orn-fit__side-daterow span:first-child { color: var(--fit-grey); }
.orn-fit__side-daterow span:last-child { font-weight: 700; color: var(--fit-ink); }
.orn-fit__side-prices { border-top: 1px solid var(--fit-border-2); margin-top: 18px; padding-top: 16px; }
.orn-fit__side-li { display: flex; justify-content: space-between; font-size: 13.5px; color: var(--fit-grey-2); padding: 4px 0; gap: 12px; }
.orn-fit__side-total { display: flex; justify-content: space-between; align-items: baseline; margin-top: 10px; gap: 12px; }
.orn-fit__side-total-lbl { font-size: 13px; color: var(--fit-grey); }
.orn-fit__side-total-val { font: 600 30px/1 var(--fit-mono); color: var(--fit-ink); }
.orn-fit__side-group { display: flex; justify-content: space-between; font-size: 13px; color: var(--fit-grey-3); margin-top: 4px; }
.orn-fit__side-group span:last-child { font-weight: 700; color: var(--fit-ink); }
.orn-fit__side-lead { width: 100%; box-sizing: border-box; margin-top: 18px; border: 1px solid var(--fit-border); border-radius: 11px; padding: 13px 15px; font-size: 15px; font-family: inherit; color: var(--fit-ink); }
.orn-fit__side-err { font-size: 12.5px; color: var(--fit-red-3); margin-top: 10px; }
.orn-fit__side-cta { display: block; width: 100%; cursor: pointer; background: var(--color-primary, var(--fit-red)); color: #fff; font: 700 15.5px/1 var(--fit-sans); text-align: center; border: 0; border-radius: 12px; padding: 15px; margin-top: 12px; }
.orn-fit__side-cta:hover:not(:disabled):not(.orn-fit__side-cta--off) { background: var(--color-primary-light, var(--fit-red-2)); }
.orn-fit__side-cta--off, .orn-fit__side-cta:disabled { background: var(--fit-disabled); color: var(--fit-disabled-ink); cursor: default; }
.orn-fit__side-note { font-size: 12px; color: var(--fit-grey); text-align: center; margin-top: 11px; }
.orn-fit__side-acts { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
/* Booking-blocked banner (mirrors orn-ui BookMessage): red on hasError, amber otherwise. */
.orn-fit__bookmsg { display: flex; align-items: flex-start; gap: 10px; border: 1px solid; border-radius: 8px; padding: 10px 12px; font: 500 13px/1.4 var(--fit-sans); }
.orn-fit__bookmsg--error { background: #FEF2F2; border-color: #FECACA; color: #991B1B; }
.orn-fit__bookmsg--warn { background: #FFFBEB; border-color: #FDE68A; color: #92400E; }
.orn-fit__bookmsg-ic { flex: none; font-size: 15px; line-height: 1.35; }
.orn-fit__bookmsg-txt { flex: 1; min-width: 0; }
.orn-fit__bookmsg-txt a { color: inherit; text-decoration: underline; font-weight: 700; }
.orn-fit__bookmsg-viewall { flex: none; align-self: center; margin-left: auto; color: inherit; text-decoration: underline; font-weight: 700; white-space: nowrap; cursor: pointer; }
.orn-fit__side-acts .orn-jrn__act { display: block; width: 100%; text-align: center; cursor: pointer; border-radius: 12px; padding: 14px; font: 700 15px/1 var(--fit-sans); border: 1px solid var(--fit-border); background: #fff; color: var(--fit-ink); }
.orn-fit__side-acts .orn-jrn__act--primary { background: var(--fit-red); color: #fff; border-color: var(--fit-red); }
.orn-fit__side-acts .orn-jrn__act--primary:hover { background: var(--fit-red-2); }

/* -- Tab: Dates (rooms & guests stepper + two-month calendar) -------------- */
.orn-fit__dates { display: flex; flex-direction: column; gap: 16px; }
/* Right-rail select state (orn-ui reference): the OUTER .orn-fit__side card
   carries the single border; inner field groups are FLAT (label + input), not
   nested cards. Generous vertical rhythm between groups. */
.orn-fit__side--select { display: flex; flex-direction: column; gap: 10px; }
.orn-fit__side--select .orn-fit__dt-card { background: none; border: 0; border-radius: 0; padding: 0; margin-top: 10px; }
.orn-fit__side--select .orn-fit__dt-head { gap: 12px; }
.orn-fit__side--select .orn-fit__dt-sub { margin-top: 6px; }
.orn-fit__dt-card { background: #fff; border: 1px solid var(--fit-border); border-radius: 16px; padding: 22px 24px; }
.orn-fit__dt-head { display: flex; align-items: center; gap: 10px; }
.orn-fit__dt-num { width: 26px; height: 26px; border-radius: 50%; background: var(--fit-ink); color: var(--fit-blush); display: flex; align-items: center; justify-content: center; font: 600 13px/1 var(--fit-mono); flex: none; }
.orn-fit__dt-title { font: 800 18px/1.1 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__dt-sub { font-size: 13px; color: var(--fit-grey-2); line-height: 1.5; margin-top: 8px; }
.orn-fit__dt-rooms-row { display: flex; align-items: center; justify-content: space-between; margin-top: 16px; }
.orn-fit__dt-room { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; border-top: 1px solid var(--fit-border-2); padding-top: 14px; margin-top: 14px; }
.orn-fit__dt-room-lbl { font: 700 11px/1 var(--fit-mono); letter-spacing: .12em; color: var(--fit-grey); }
.orn-fit__dt-steppers { display: flex; gap: 22px; flex-wrap: wrap; }
.orn-fit__dt-step { display: flex; align-items: center; gap: 10px; }
.orn-fit__dt-step-lbl { font-size: 13px; color: var(--fit-grey-2); }
.orn-fit__dt-step-ctl { display: inline-flex; align-items: center; gap: 12px; }
.orn-fit__dt-step-ctl button { width: 30px; height: 30px; border-radius: 8px; border: 1px solid var(--fit-sand); background: #fff; color: var(--fit-ink); font-size: 17px; line-height: 1; cursor: pointer; }
.orn-fit__dt-step-ctl button:hover { border-color: var(--fit-ink); }
.orn-fit__dt-step-ctl b { min-width: 14px; text-align: center; font-size: 15px; font-weight: 700; }
.orn-fit__dt-roomrm { background: none; border: 0; color: var(--fit-red-2); font-size: 12px; font-weight: 700; cursor: pointer; }
.orn-fit__dt-travelling { font-size: 13px; color: var(--fit-grey-2); margin-top: 16px; }
.orn-fit__dt-travelling strong { color: var(--fit-ink); }
.orn-fit__dt-excity { width: 100%; box-sizing: border-box; margin-top: 10px; border: 1px solid var(--fit-border); border-radius: 12px; padding: 13px 15px; font-size: 15px; font-family: inherit; color: var(--fit-ink); background: #fff; }
.orn-fit__dt-excity:focus { outline: none; border-color: var(--fit-ink); }
/* "Leaving from" search field (orn-ui parity): text input + filtered dropdown. */
.orn-fit__dt-req { color: var(--fit-red); }
.orn-fit__excity { position: relative; margin-top: 10px; }
.orn-fit__excity-inp { width: 100%; box-sizing: border-box; border: 1px solid var(--fit-border); border-radius: 12px; padding: 13px 15px; font: 500 15px/1.2 var(--fit-sans); color: var(--fit-ink); background: #fff; }
.orn-fit__excity-inp::placeholder { color: var(--fit-grey); font-weight: 400; }
.orn-fit__excity-inp:focus { outline: none; border-color: var(--fit-ink); }
.orn-fit__excity-menu { position: absolute; z-index: 30; left: 0; right: 0; top: calc(100% + 6px); background: #fff; border: 1px solid var(--fit-border); border-radius: 12px; box-shadow: 0 12px 28px rgba(20,20,20,.12); max-height: 240px; overflow-y: auto; padding: 6px; }
.orn-fit__excity-opt { display: block; width: 100%; text-align: left; border: 0; background: none; border-radius: 8px; padding: 10px 12px; font: 500 14.5px/1.2 var(--fit-sans); color: var(--fit-ink); cursor: pointer; }
.orn-fit__excity-opt:hover { background: var(--fit-surface); }
.orn-fit__excity-opt.is-sel { background: var(--fit-blush); color: var(--fit-red-2); font-weight: 700; }
.orn-fit__excity-empty { padding: 10px 12px; font-size: 13.5px; color: var(--fit-grey); }
/* Compact "ROOMS AND PAX" field (FD-tours style): a summary row + chevron that
   opens the shared TFRoomPax rooms/adults/children popover (.rms-pax-inp-ctr). */
.orn-fit__dt-roomspax { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; box-sizing: border-box; margin-top: 12px; border: 1px solid var(--fit-border); border-radius: 10px; padding: 12px 14px; font-size: 15px; color: var(--fit-ink); cursor: pointer; background: #fff; }
.orn-fit__dt-roomspax:hover { border-color: var(--fit-grey); }
.orn-fit__dt-roomspax .rms-pax-smry { font: 600 15px/1.2 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__dt-roomspax-edit { flex: none; font: 600 13px/1 var(--fit-sans); color: var(--fit-red); text-decoration: underline; text-underline-offset: 2px; }
.orn-fit__dt-roomspax:hover .orn-fit__dt-roomspax-edit { color: var(--fit-red-2, var(--fit-red)); }
.orn-fit__cal-nav { display: flex; align-items: center; justify-content: space-between; margin-top: 14px; }
.orn-fit__cal-nav button { width: 30px; height: 30px; border-radius: 8px; border: 1px solid var(--fit-border); background: #fff; cursor: pointer; font-size: 15px; }
.orn-fit__cal-nav button:disabled { opacity: .4; cursor: default; }
.orn-fit__cal-nav-lbl { font: 700 13px/1 var(--fit-sans); letter-spacing: .01em; color: var(--fit-ink); }
/* Single-month calendar (one grid) — FD-tours style with a next-month arrow. */
.orn-fit__cal-months { display: block; margin-top: 18px; }
.orn-fit__cal-mo-lbl { font: 700 14px/1 var(--fit-sans); color: var(--fit-ink); text-align: center; margin-bottom: 10px; }
.orn-fit__cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.orn-fit__cal-dow { font: 600 10px/1 var(--fit-mono); color: var(--fit-grey); text-align: center; padding: 2px 0 6px; }
.orn-fit__cal-day { aspect-ratio: 1; max-height: 46px; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 10px; background: #fff; color: var(--fit-ink); font-size: 13.5px; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; transition: border-color .12s ease, background .12s ease; }
.orn-fit__cal-day:hover:not(:disabled) { border-color: var(--fit-red); }
.orn-fit__cal-day--off { color: #CFCFCF; cursor: default; background: #FAFAFA; border-color: transparent; }
.orn-fit__cal-day--sel { background: var(--fit-ink); color: #fff; border-color: var(--fit-ink); font-weight: 700; }
.orn-fit__cal-foot { font-size: 13px; color: var(--fit-grey-2); margin-top: 18px; }
.orn-fit__cal-foot strong { color: var(--fit-ink); }

/* -- Dates tab: bottom check-availability action --------------------------- */
.orn-fit__dt-checkwrap { margin-top: 4px; }
.orn-fit__dt-checknote { font-size: 12.5px; color: var(--fit-grey); text-align: center; margin-top: 10px; }
.orn-fit__dt-checked {
    background: var(--fit-red-tint); border: 1px solid var(--fit-red-border); border-radius: 14px;
    padding: 16px 18px; font: 600 14px/1.4 var(--fit-sans); color: var(--fit-red-3);
    display: flex; align-items: center; gap: 10px;
}

/* Sidebar pre-pricing hint (replaces the old right-side Check-availability CTA) */
.orn-fit__side-hint { margin-top: 14px; font-size: 12.5px; line-height: 1.5; color: var(--fit-grey); background: var(--fit-surface); border: 1px solid var(--fit-border); border-radius: 12px; padding: 12px 14px; }
.orn-fit__side-hint strong { color: var(--fit-ink); }

/* -- Tab: Visa & Insurance (new design, no traveller avatars) -------------- */
.orn-fit__vi-sec { margin-bottom: 22px; }
.orn-fit__vi-sec:last-child { margin-bottom: 0; }
.orn-fit__vi-eyebrow { display: flex; align-items: center; gap: 8px; font: 700 11.5px/1 var(--fit-mono); letter-spacing: .18em; color: var(--fit-red-2); text-transform: uppercase; margin-bottom: 12px; }
.orn-fit__vi-eyebrow svg { width: 16px; height: 16px; flex: none; }
.orn-fit__vi-card { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; background: #fff; border: 1px solid var(--fit-border); border-radius: 16px; padding: 20px 22px; margin-bottom: 12px; }
.orn-fit__vi-card:last-child { margin-bottom: 0; }
.orn-fit__vi-main { min-width: 0; }
.orn-fit__vi-title { font: 800 18px/1.2 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__vi-desc { font-size: 13px; color: var(--fit-grey-2); line-height: 1.5; margin-top: 6px; }
.orn-fit__vi-status { display: inline-flex; align-items: center; gap: 6px; font: 700 13px/1 var(--fit-sans); border-radius: 10px; padding: 9px 14px; margin-top: 12px; }
.orn-fit__vi-status--out { color: var(--fit-red-2); background: var(--fit-red-tint); border: 1px solid var(--fit-red-border); }
.orn-fit__vi-status--in { color: #1F8A5B; background: #ECF7F1; border: 1px solid #CDE9DC; }
.orn-fit__vi-actions { display: flex; flex-direction: row; align-items: center; gap: 8px; flex-shrink: 0; }
/* SECONDARY — "Add"/"Update" opens the visa/insurance chooser; the priced
   commit is downstream (opt-apply), so not a red primary. Compact pills, side by side. */
.orn-fit__vi-act { cursor: pointer; white-space: nowrap; font: 800 12px/1 var(--fit-sans); letter-spacing: .01em; color: #fff; background: var(--fit-red, #F20D16); border: 1px solid var(--fit-red, #F20D16); border-radius: 999px; padding: 8px 16px; box-shadow: 0 2px 9px rgba(242,13,22,.20); transition: background .14s ease, border-color .14s ease, transform .08s ease, box-shadow .14s ease; }
.orn-fit__vi-act:hover { background: var(--fit-red-2, #C90A12); border-color: var(--fit-red-2, #C90A12); box-shadow: 0 4px 15px rgba(242,13,22,.28); }
.orn-fit__vi-act:active { transform: scale(.97); }
/* Remove = quiet, destructive secondary — outline, never the loudest button. */
.orn-fit__vi-act--rm { color: var(--fit-red-2, #C90A12); background: #fff; border-color: var(--fit-red-border, #F6CBC7); box-shadow: none; }
.orn-fit__vi-act--rm:hover { background: var(--fit-red-tint, #FBF3F2); border-color: var(--fit-red, #F20D16); box-shadow: none; }
@media (max-width: 560px) { .orn-fit__vi-card { flex-direction: column; } .orn-fit__vi-actions { flex-direction: row; flex-wrap: wrap; } }
/* Visa/Insurance inline option chooser — the card + options read as one attached
   unit (open card loses its bottom radius; the chooser box continues below). The
   inner .orn-sso body reuses the day-by-day .orn-fit__bandopts skin. */
.orn-fit__vi-card--open { margin-bottom: 0; border-bottom: 0; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
/* GHOST — open-state label is "Close"; neutral, not red. */
/* Close = the open-chooser toggle — a prominent solid dark button. */
.orn-fit__vi-act--open { color: #fff; background: var(--fit-ink, #151515); border-color: var(--fit-ink, #151515); box-shadow: 0 2px 9px rgba(21,21,21,.18); }
.orn-fit__vi-act--open:hover { background: #000; border-color: #000; box-shadow: 0 4px 15px rgba(21,21,21,.26); }
.orn-fit__vi-opts.orn-fit__bandopts { margin: 0 0 12px; padding: 8px 22px 14px; background: #fff; border: 1px solid var(--fit-border); border-top: 0; border-radius: 0 0 16px 16px; animation: ornFitRooms .26s cubic-bezier(.22,.61,.36,1) both; }
.orn-fit__vi-opts .orn-fit__bandopts-body { padding: 0; }
.orn-fit__opt--grp { cursor: pointer; }
.orn-fit__opt--grp:hover { border-color: var(--fit-ink); }
@media (prefers-reduced-motion: reduce) { .orn-fit__vi-opts.orn-fit__bandopts { animation: none; } }

/* -- Tab: Flights (load_flight_options combos, shimmer, select) ------------- */
.orn-fit__flt-list { display: flex; flex-direction: column; gap: 12px; margin-top: 18px; }
.orn-fit__flt-card { background: #fff; border: 1px solid var(--fit-border); border-radius: 16px; padding: 18px 20px; }
.orn-fit__flt-card--sel { border-color: var(--fit-red); box-shadow: 0 0 0 2px rgba(242,13,22,.16); }
.orn-fit__flt-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.orn-fit__flt-route { font: 800 17px/1.2 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__flt-price { text-align: right; flex: none; }
.orn-fit__flt-price-v { font: 600 18px/1 var(--fit-mono); color: var(--fit-ink); display: block; }
.orn-fit__flt-price-pp { font: 400 10.5px/1 var(--fit-mono); letter-spacing: .1em; color: var(--fit-grey); text-transform: uppercase; }
.orn-fit__flt-airlines { font-size: 12.5px; color: var(--fit-grey-2); margin-top: 4px; }
.orn-fit__flt-dirs { display: flex; flex-direction: column; gap: 10px; margin-top: 14px; }
.orn-fit__flt-dir { border-left: 2px solid var(--fit-red-tint-2); padding-left: 12px; }
.orn-fit__flt-dir-lbl { font: 700 9.5px/1 var(--fit-mono); letter-spacing: .16em; color: var(--fit-red-2); text-transform: uppercase; }
.orn-fit__flt-dir-main { display: flex; align-items: center; gap: 10px; margin-top: 5px; font: 700 15px/1.15 var(--fit-sans); color: var(--fit-ink); flex-wrap: wrap; }
.orn-fit__flt-ap small { font: 400 11.5px/1 var(--fit-sans); color: var(--fit-grey-2); margin-left: 3px; }
.orn-fit__flt-arrow { color: var(--fit-sand); font-size: 14px; }
.orn-fit__flt-dir-meta { font: 400 12px/1.4 var(--fit-mono); color: var(--fit-grey); margin-top: 4px; }
.orn-fit__flt-foot { display: flex; justify-content: flex-end; margin-top: 14px; border-top: 1px solid var(--fit-border-2); padding-top: 14px; }
/* SECONDARY — pick a flight; the priced commit is "Add To Trip" (flt-add).
   Selected state fills ink to read "locked in". */
/* Primary "Select" — red filled, consistent with hotel-room / insurance Select. */
.orn-fit__flt-select { cursor: pointer; font: 700 13.5px/1 var(--fit-sans); color: #fff; background: var(--fit-red, #F20D16); border: 1px solid var(--fit-red, #F20D16); border-radius: var(--fit-btn-radius); padding: 10px 22px; box-shadow: 0 2px 8px rgba(242,13,22,.18); transition: background .14s ease, border-color .14s ease, box-shadow .14s ease; }
.orn-fit__flt-select:hover { background: var(--fit-red-2, #C90A12); border-color: var(--fit-red-2, #C90A12); box-shadow: 0 4px 13px rgba(242,13,22,.26); }
/* Committed/selected combo keeps the dark confirmation state. */
.orn-fit__flt-card--sel .orn-fit__flt-select { background: var(--fit-ink); border-color: var(--fit-ink); color: #fff; box-shadow: none; }
.orn-fit__flt-select[disabled] { opacity: .55; cursor: default; }
.orn-fit__flt-error { background: var(--fit-red-tint); border: 1px solid var(--fit-red-border); border-radius: 12px; padding: 16px 18px; margin-top: 18px; color: var(--fit-red-3); font-size: 14px; }
.orn-fit__flt-retry { margin-left: 8px; cursor: pointer; font-weight: 700; color: var(--fit-red-2); background: none; border: 0; text-decoration: underline; }
.orn-fit__flt-busy { font-size: 12.5px; color: var(--fit-grey); margin-top: 10px; text-align: right; }
/* shimmer skeleton */
.orn-fit__flt-card--skel { pointer-events: none; }
.orn-fit__sk { border-radius: 8px; background: linear-gradient(90deg, #EDEDED 25%, #F6F6F6 37%, #EDEDED 63%); background-size: 400% 100%; animation: ornFitShimmer 1.3s ease infinite; }
.orn-fit__sk--route { height: 20px; width: 55%; }
.orn-fit__sk--line { height: 12px; width: 40%; margin-top: 10px; }
.orn-fit__sk--rows { height: 46px; width: 100%; margin-top: 14px; }
@keyframes ornFitShimmer { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }

/* Flights sub-tabs (Arrival & Departure / Internal) + internal route groups */
.orn-fit__flt-subtabs { display: flex; gap: 8px; margin-top: 16px; }
.orn-fit__flt-subtab { cursor: pointer; font: 700 12.5px/1 var(--fit-sans); color: var(--fit-grey-2); background: #fff; border: 1px solid var(--fit-border); border-radius: 999px; padding: 8px 16px; }
.orn-fit__flt-subtab.is-on { background: var(--fit-ink); color: var(--fit-surface); border-color: var(--fit-ink); }
.orn-fit__flt-route-grp { margin-top: 18px; }
.orn-fit__flt-route-lbl { font: 700 11px/1 var(--fit-mono); letter-spacing: .14em; color: var(--fit-red-2); text-transform: uppercase; margin-bottom: 8px; }

/* -- Flights: rich combo/segment rows + internal route stepper ------------- */
.orn-fit__flt-head-l { min-width: 0; }
.orn-fit__flt-daterange { font: 400 12.5px/1.3 var(--fit-mono); color: var(--fit-grey); margin-top: 4px; }
.orn-fit__flt-head-r { display: flex; align-items: center; gap: 16px; flex: none; }
.orn-fit__flt-segs { margin-top: 14px; display: flex; flex-direction: column; gap: 12px; }
.orn-fit__flt-seg { border: 1px solid var(--fit-border); border-radius: 12px; padding: 12px 15px; }
.orn-fit__flt-seg-lbl { font: 700 9.5px/1 var(--fit-mono); letter-spacing: .16em; color: var(--fit-grey); text-transform: uppercase; margin-bottom: 8px; }
.orn-fit__flt-seg-row { display: flex; align-items: center; gap: 14px; }
.orn-fit__flt-air { display: flex; align-items: center; gap: 10px; width: 150px; flex: none; min-width: 0; }
.orn-fit__flt-logo { width: 36px; height: 36px; border-radius: 8px; background: var(--fit-surface); border: 1px solid var(--fit-border); display: flex; align-items: center; justify-content: center; font: 700 12px/1 var(--fit-mono); color: var(--fit-ink); flex: none; }
.orn-fit__flt-air-t { min-width: 0; }
.orn-fit__flt-air-nm { display: block; font: 700 13.5px/1.2 var(--fit-sans); color: var(--fit-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.orn-fit__flt-air-no { display: block; font: 400 11px/1.2 var(--fit-mono); color: var(--fit-grey); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.orn-fit__flt-pt { width: 120px; flex: none; }
.orn-fit__flt-pt--r { text-align: right; }
.orn-fit__flt-time { font: 700 19px/1 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__flt-next { font: 700 10px/1 var(--fit-sans); color: var(--fit-red-2); margin-left: 2px; }
.orn-fit__flt-city { display: block; font-size: 12px; color: var(--fit-grey-2); margin-top: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.orn-fit__flt-term { font-size: 11px; color: var(--fit-grey); margin-top: 2px; }
.orn-fit__flt-mid { flex: 1; min-width: 110px; text-align: center; }
.orn-fit__flt-dur { font: 400 11.5px/1 var(--fit-mono); color: var(--fit-grey); }
.orn-fit__flt-line { display: flex; align-items: center; justify-content: center; margin: 5px 0; }
.orn-fit__flt-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--fit-sand); flex: none; }
.orn-fit__flt-plane { position: relative; padding: 0 24px; color: var(--fit-grey-3); font-size: 13px; }
.orn-fit__flt-plane::before, .orn-fit__flt-plane::after { content: ''; position: absolute; top: 50%; width: 20px; height: 1px; background: var(--fit-border); }
.orn-fit__flt-plane::before { right: 100%; } .orn-fit__flt-plane::after { left: 100%; }
.orn-fit__flt-stops { font-size: 11.5px; color: var(--fit-grey); }
.orn-fit__flt-bag { font-size: 11px; color: var(--fit-grey); margin-top: 2px; }
.orn-fit__flt-side { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; width: 140px; flex: none; }
.orn-fit__flt-seats { font: 600 11px/1 var(--fit-sans); color: var(--fit-red-2); display: block; margin-top: 4px; }
.orn-fit__flt-seg-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 12px; border-top: 1px dashed var(--fit-border); padding-top: 10px; }
.orn-fit__flt-nr { font: 600 11px/1 var(--fit-sans); color: var(--fit-grey-2); background: var(--fit-surface); border: 1px solid var(--fit-border); border-radius: 999px; padding: 5px 11px; }
.orn-fit__flt-vfd { cursor: pointer; background: none; border: 0; font: 600 12.5px/1 var(--fit-sans); color: var(--fit-red-2); display: inline-flex; align-items: center; gap: 5px; }
.orn-fit__flt-vfd-panel { margin-top: 10px; border-top: 1px solid var(--fit-border-2); padding-top: 10px; display: flex; flex-direction: column; gap: 8px; }
.orn-fit__flt-leg-h { font: 700 12px/1.3 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__flt-leg-b { font: 400 11.5px/1.4 var(--fit-mono); color: var(--fit-grey-2); margin-top: 2px; }
.orn-fit__flt-card--row { padding: 16px 18px; }
.orn-fit__flt-stepper { display: flex; align-items: center; gap: 6px; margin-top: 16px; overflow-x: auto; padding-bottom: 4px; }
.orn-fit__flt-step { flex: none; display: flex; align-items: center; gap: 10px; cursor: pointer; background: #fff; border: 1px solid var(--fit-border); border-radius: 12px; padding: 12px 16px; text-align: left; }
.orn-fit__flt-step.is-on { border-color: var(--fit-ink); }
.orn-fit__flt-step-n { width: 24px; height: 24px; border-radius: 50%; border: 1px solid var(--fit-sand); display: flex; align-items: center; justify-content: center; font: 600 12px/1 var(--fit-mono); color: var(--fit-grey); flex: none; }
.orn-fit__flt-step.is-on .orn-fit__flt-step-n { background: var(--fit-ink); color: var(--fit-blush); border-color: var(--fit-ink); }
.orn-fit__flt-step-r { font: 700 13.5px/1.2 var(--fit-sans); color: var(--fit-ink); display: block; white-space: nowrap; }
.orn-fit__flt-step-d { font: 400 11px/1 var(--fit-mono); color: var(--fit-grey); display: block; margin-top: 3px; }
.orn-fit__flt-step-sep { color: var(--fit-sand); flex: none; }
.orn-fit__flt-routehdr { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-top: 18px; }
.orn-fit__flt-routehdr > span:first-child { font: 700 11px/1 var(--fit-mono); letter-spacing: .14em; color: var(--fit-red-2); text-transform: uppercase; }
.orn-fit__flt-routehdr-r { display: inline-flex; align-items: baseline; gap: 14px; flex: none; }
.orn-fit__flt-optn { font-size: 12px; color: var(--fit-grey); }
.orn-fit__flt-skiplink { background: none; border: 0; padding: 0; cursor: pointer; font: 600 12px/1 var(--fit-sans); color: var(--fit-grey); text-decoration: underline; }
.orn-fit__flt-skiplink:hover { color: var(--fit-ink); }
.orn-fit__flt-skiplink:disabled { opacity: .5; cursor: default; }
@media (max-width: 860px) { .orn-fit__flt-seg-row { overflow-x: auto; gap: 12px; } .orn-fit__flt-air { width: 130px; } }

/* Flights footer bar (Total amount + Add To Trip / Confirm & Next / Skip) */
.orn-fit__flt-footer { position: sticky; bottom: 0; display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 20px; padding: 16px 4px 4px; background: linear-gradient(to top, var(--fit-surface-2) 70%, rgba(247,247,247,0)); flex-wrap: wrap; }
.orn-fit__flt-total { display: flex; flex-direction: column; }
.orn-fit__flt-total span { font: 700 10px/1 var(--fit-mono); letter-spacing: .16em; color: var(--fit-grey); text-transform: uppercase; }
.orn-fit__flt-total b { font: 600 20px/1.1 var(--fit-mono); color: var(--fit-ink); margin-top: 4px; }
.orn-fit__flt-actions { display: flex; align-items: center; gap: 10px; }
.orn-fit__flt-skip { cursor: pointer; font: 700 13.5px/1 var(--fit-sans); color: var(--fit-ink); background: #fff; border: 1px solid var(--fit-border); border-radius: 10px; padding: 12px 22px; }
.orn-fit__flt-skip:hover { border-color: var(--fit-ink); }
.orn-fit__flt-add { cursor: pointer; font: 700 13.5px/1 var(--fit-sans); color: #fff; background: var(--fit-red); border: 1px solid var(--fit-red); border-radius: 10px; padding: 12px 26px; }
.orn-fit__flt-add:hover:not([disabled]) { background: var(--fit-red-2); }
.orn-fit__flt-add[disabled] { background: var(--fit-disabled); color: var(--fit-disabled-ink); border-color: var(--fit-disabled); cursor: default; }
.orn-fit__flt-step.is-done .orn-fit__flt-step-n { background: #1F8A5B; color: #fff; border-color: #1F8A5B; }
.orn-fit__flt-cerr { margin-top: 14px; font-size: 13px; color: var(--fit-red-3); background: var(--fit-red-tint); border: 1px solid var(--fit-red-border); border-radius: 10px; padding: 11px 14px; }
/* Fix: the base .orn-fit__flt-vfd-panel display:flex was overriding the [hidden]
   attribute (UA [hidden]{display:none}), so View Flight Details never collapsed. */
.orn-fit__flt-vfd-panel[hidden] { display: none; }

/* Flights blocks view (journey flight blocks + Add flights / Change) */
.orn-fit__flt-blocks { display: flex; flex-direction: column; gap: 24px; margin-top: 18px; }
.orn-fit__flt-blk { background: #fff; border: 1px solid var(--fit-border); border-radius: 14px; padding: 20px 24px; }
.orn-fit__flt-blk--empty { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.orn-fit__flt-blk-info { min-width: 0; }
.orn-fit__flt-blk-nm { font: 800 16px/1.2 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__flt-blk-sub { font-size: 13px; color: var(--fit-grey-2); margin-top: 4px; }
.orn-fit__flt-blk-body { display: flex; flex-direction: column; }
.orn-fit__flt-blk-body + .orn-fit__vlds { margin-top: 16px; }
.orn-fit__flt-blk-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 18px -24px 0; padding: 18px 24px 0; border-top: 1px solid var(--fit-border-2); }
.orn-fit__flt-blk-foot-l { display: flex; align-items: center; }
.orn-fit__flt-blk-foot-r { display: flex; align-items: center; gap: 10px; }
/* "Add flights" / "Change Flight" — filled with the tenant's own brand
   colour (--fit-red = the website builder's primary colour) as the
   background only; the label stays a fixed white, never a brand variable. */
.orn-fit__flt-open { cursor: pointer; font: 700 13.5px/1 var(--fit-sans); color: #fff; background: var(--fit-red); border: 1px solid var(--fit-red); border-radius: var(--fit-btn-radius); padding: 11px 22px; transition: filter .14s ease; }
.orn-fit__flt-open:hover { filter: brightness(.92); }
/* Desktop: text "Remove" pill (color:#14233B; border:#C5C4C1, per ORN Journey Detail.dc.html). Mobile flips to icon-only via the media query below. */
.orn-fit__flt-remove { cursor: pointer; font: 700 14px/1 var(--fit-sans); color: var(--fit-ink); background: #fff; border: 1px solid #C5C4C1; border-radius: 9px; padding: 11px 22px; transition: background .14s ease, border-color .14s ease; }
.orn-fit__flt-remove:hover { background: var(--fit-surface); border-color: var(--fit-grey); }
.orn-fit__flt-remove-ic { display: none; }
/* Early Check-in / Late Check-out Options — rendered INLINE below the flight block
   (orn-ui TransportEarlyLateInfo). Clicking an unselected card executes the API. */
.orn-fit__eci-inline { margin: 20px 0 8px; }
.orn-fit__eci-inline.is-busy { opacity: .6; pointer-events: none; }
.orn-fit__eci-title { display: flex; align-items: flex-start; gap: 7px; margin: 0 0 12px; color: var(--fit-ink-soft, #60646c); font: 400 12px/1.5 var(--fit-sans); }
.orn-fit__eci-info { flex: 0 0 auto; margin-top: 2px; color: var(--fit-ink, #111); }
.orn-fit__eci-cards { display: flex; flex-wrap: wrap; gap: 12px; }
.orn-fit__eci-opt { display: flex; align-items: flex-start; gap: 10px; flex: 1 1 260px; max-width: 360px; text-align: left; padding: 14px 16px; border: 1px solid var(--fit-line, #e6e6e6); border-radius: 10px; background: #fff; cursor: pointer; transition: border-color .14s ease, box-shadow .14s ease, background .14s ease; }
.orn-fit__eci-opt:hover { border-color: #9ca3af; }
.orn-fit__eci-opt.is-sel { background: #edeff2; border-color: var(--fit-ink, #111827); cursor: default; }
.orn-fit__eci-radio { flex: 0 0 auto; width: 16px; height: 16px; margin-top: 2px; border-radius: 50%; border: 1.5px solid #d1d5db; background: #fff; box-sizing: border-box; display: inline-block; position: relative; }
.orn-fit__eci-opt.is-sel .orn-fit__eci-radio { border-color: var(--fit-ink, #111827); }
.orn-fit__eci-opt.is-sel .orn-fit__eci-radio::after { content: ""; position: absolute; inset: 3px; border-radius: 50%; background: var(--fit-ink, #111827); }
.orn-fit__eci-opt-msg { font: 500 12.5px/1.5 var(--fit-sans); color: var(--fit-ink, #111827); white-space: pre-line; }
/* Advanced-mode per-leg flight card (image #201): "Add Flights - <route>" title,
   "No Flight Included", green Add/Change button. */
.orn-fit__flt-adv { padding: 22px 24px; }
.orn-fit__flt-adv-hd { font: 700 16px/1.3 var(--fit-sans); color: var(--fit-ink); padding-bottom: 14px; border-bottom: 1px solid var(--fit-border-2); }
.orn-fit__flt-adv-bd { padding: 16px 0; }
.orn-fit__flt-adv-empty { font: 400 14px/1.45 var(--fit-sans); color: var(--fit-grey); }
.orn-fit__flt-adv-foot { display: flex; gap: 12px; }
.orn-fit__flt-adv-add { cursor: pointer; font: 700 13.5px/1 var(--fit-sans); color: #fff; background: #3f8a3f; border: 1px solid #3f8a3f; border-radius: var(--fit-btn-radius); padding: 12px 22px; transition: background .14s ease; }
.orn-fit__flt-adv-add:hover { background: #357435; }
.orn-fit__flt-back { cursor: pointer; background: none; border: 0; font: 600 13px/1 var(--fit-sans); color: var(--fit-red-2); padding: 4px 0; margin: 8px 0 4px; display: inline-flex; }

/* Flight block route lines (empty block) + real airline logo images */
.orn-fit__flt-blk-legs { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
.orn-fit__flt-blk-leg { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.orn-fit__flt-blk-leg-r { font: 700 14px/1.3 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__flt-blk-leg-d { font: 400 12px/1 var(--fit-mono); color: var(--fit-grey); white-space: nowrap; }
.orn-fit__flt-logo--img { padding: 0; overflow: hidden; background: #fff; }
.orn-fit__flt-logo--img img { width: 100%; height: 100%; object-fit: contain; }

/* Disabled tab (e.g. Vehicle — hidden for now) + sidebar hint "Dates" link */
/* .orn-jd__tab--disabled: inherit shared van_tour styling */
.orn-fit__side-datelink { font: inherit; font-weight: 700; color: var(--fit-red-2); background: none; border: 0; padding: 0; cursor: pointer; text-decoration: underline; }
.orn-fit__side-datelink:hover { color: var(--fit-red); }
/* Sidebar: payment schedule + TCS info box + terms link (ORN theme, side-* family) */
.orn-fit__side-sched { border-top: 1px solid var(--fit-border-2); margin-top: 16px; padding-top: 4px; }
.orn-fit__side-sched .orn-fit__side-eyebrow { margin-top: 12px; margin-bottom: 6px; }

/* ============================================================
   Priced summary card (Image 21): TOTAL PRICE eyebrow + collapsible
   breakdown — per-adult/child rows, TCS, ORN Rewards Redeemed, Earn +
   View Terms. All values are server-driven (prcBkA / taxBkupA / cashbackO).
   ============================================================ */
.orn-fit__psum { border-top: 1px solid var(--fit-border-2); margin-top: 16px; padding-top: 4px; }
.orn-fit__psum-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; width: 100%; background: none; border: 0; padding: 12px 0 14px; margin: 0; text-align: left; cursor: pointer; border-bottom: 1px solid var(--fit-border-2); }
.orn-fit__psum-head-l { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.orn-fit__psum-eyebrow { font: 700 12px/1.1 var(--fit-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--orn-text); }
.orn-fit__psum-sub { font: 400 12.5px/1.35 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__psum-total { display: inline-flex; flex-direction: column; align-items: flex-end; gap: 2px; font: 700 26px/1 var(--fit-mono); color: var(--fit-red); white-space: nowrap; }
/* Net-after-redeem, stacked: gross struck through ("before rewards") on top, net below. */
.orn-fit__psum-gross { font: 500 14px/1 var(--fit-mono); color: var(--fit-grey); text-decoration: line-through; text-decoration-thickness: 1.5px; }
.orn-fit__psum-netrow { display: inline-flex; align-items: center; gap: 6px; }
.orn-fit__psum-net { font: inherit; color: var(--orn-text); }
.orn-fit__psum-chev { font-size: 13px; transition: transform .18s ease; }
.orn-fit__psum.is-collapsed .orn-fit__psum-chev { transform: rotate(180deg); }
.orn-fit__psum-body { overflow: hidden; padding-top: 14px; }
.orn-fit__psum.is-collapsed .orn-fit__psum-body { display: none; }
.orn-fit__psum-li { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 7px 0; }
.orn-fit__psum-k { font: 400 14px/1.35 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__psum-v { font: 600 14px/1.35 var(--fit-mono); color: var(--fit-ink); white-space: nowrap; }
.orn-fit__psum-li--redeem .orn-fit__psum-k,
.orn-fit__psum-li--redeem .orn-fit__psum-v { color: #1F7A3D; }
.orn-fit__psum-info { background: none; border: 0; padding: 0 0 0 2px; margin: 0; font-size: 13px; line-height: 1; color: var(--fit-grey); cursor: pointer; vertical-align: middle; }
.orn-fit__psum-infotxt { font: 400 12px/1.45 var(--fit-sans); color: var(--fit-grey-2); background: var(--fit-red-tint); border-radius: 8px; padding: 8px 10px; margin: 2px 0 4px; }
.orn-fit__psum-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 10px; padding-top: 12px; border-top: 1px solid var(--fit-border-2); }
.orn-fit__psum-earn { font: 700 14px/1.2 var(--fit-sans); color: #1F7A3D; }
.orn-fit__psum-terms { background: none; border: 0; padding: 0; margin-left: auto; font: 700 14px/1.2 var(--fit-sans); color: var(--fit-red); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
/* Dark mobile sheet variant */
.orn-fit__msheet-dark .orn-fit__psum,
.orn-fit__msheet-dark .orn-fit__psum-head,
.orn-fit__msheet-dark .orn-fit__psum-foot { border-color: rgba(255,255,255,.14); }
.orn-fit__msheet-dark .orn-fit__psum-eyebrow,
.orn-fit__msheet-dark .orn-fit__psum-total { color: var(--fit-red, #F20D16); }
.orn-fit__msheet-dark .orn-fit__psum-sub { color: #9A9A9A; }
.orn-fit__msheet-dark .orn-fit__psum-gross { color: #8A8A8A; }
/* Net payable sits below the struck gross; --orn-text is near-black, so on the
   dark sheet it needs a light override or the actual amount is invisible. */
.orn-fit__msheet-dark .orn-fit__psum-net { color: #fff; }
.orn-fit__msheet-dark .orn-fit__psum-k,
.orn-fit__msheet-dark .orn-fit__psum-v { color: #EDEDED; }
.orn-fit__msheet-dark .orn-fit__psum-li--redeem .orn-fit__psum-k,
.orn-fit__msheet-dark .orn-fit__psum-li--redeem .orn-fit__psum-v,
.orn-fit__msheet-dark .orn-fit__psum-earn { color: #6FD08A; }
.orn-fit__msheet-dark .orn-fit__psum-terms { color: #FF8A8A; }
.orn-fit__msheet-dark .orn-fit__psum-infotxt { background: rgba(255,255,255,.06); color: #C9C9C9; }
.orn-fit__side-tcsinf { margin: 4px 0 2px; }
.orn-fit__side-tcsinf > summary { list-style: none; font: 600 12px/1.4 var(--fit-sans); color: var(--fit-red-2); cursor: pointer; }
.orn-fit__side-tcsinf > summary::-webkit-details-marker { display: none; }
.orn-fit__side-tcsinf > summary::after { content: ' ▾'; opacity: .7; }
.orn-fit__side-tcsinf[open] > summary::after { content: ' ▴'; }
.orn-fit__side-tcsinf > div { font: 400 12px/1.5 var(--fit-sans); color: var(--fit-grey); margin-top: 6px; }
/* Edit-mode × close (top-right of the edit rail) — returns to the priced quote. */
.orn-fit__side-closerow { display: flex; justify-content: flex-end; margin: -2px -2px -8px; }
.orn-fit__side-close { width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--fit-border, #E7E7E7); background: #fff; color: var(--fit-ink, #151515); font: 400 20px/1 var(--fit-sans); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: background .14s ease, border-color .14s ease; }
.orn-fit__side-close:hover { background: var(--fit-surface, #F5F4F3); border-color: var(--fit-ink, #151515); }
.orn-fit__side-termslink { display: block; width: 100%; text-align: left; font: 600 12.5px/1.4 var(--fit-sans); color: var(--fit-red-2); background: none; border: 0; border-top: 1px solid var(--fit-border-2); padding: 12px 0 0; margin-top: 2px; cursor: pointer; }
.orn-fit__side-termslink:hover { color: var(--fit-red); }

/* Flights toast (empty/errored options) */
/* Toasts must sit above every slide-in drawer / modal (the .orn-topt__drawer,
   the validation modal etc. all use z-index 100001), so pin
   the toast near the top of the stacking range — an error toast fired while a
   drawer is open was rendering behind it. */
.orn-fit__toast { position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%) translateY(12px); background: #151515; color: #fff; font: 600 14px/1.4 'Inter', -apple-system, sans-serif; padding: 13px 20px; border-radius: 12px; box-shadow: 0 12px 30px rgba(0,0,0,.28); z-index: 2147483000; opacity: 0; transition: opacity .25s ease, transform .25s ease; max-width: 90vw; }
.orn-fit__toast.is-on { opacity: 1; transform: translateX(-50%) translateY(0); }
.orn-fit__toast--err { background: var(--fit-red, #F20D16); }

@font-face {
  font-family: 'icomoon';
  src:  url('/static/fonts/v2/icomoon.eot?nixcmo11');
  src:  url('/static/fonts/v2/icomoon.eot?nixcmo11#iefix') format('embedded-opentype'),
    url('/static/fonts/v2/icomoon.ttf?nixcmo11') format('truetype'),
    url('/static/fonts/v2/icomoon.woff?nixcm11') format('woff'),
    url('/static/fonts/v2/icomoon.svg?nixcmo11#icomoon') format('svg');
  font-weight: normal;
  font-style: normal;
  vertical-align: middle;
}
.orn-fit__ic { font-family: 'icomoon'; font-style: normal; font-weight: normal; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; }
.orn-fit__ic--plane { transform: rotate(-60deg); }
.orn-fit__ic--plane:before { content: "\e904"; }
.orn-fit__ic--people { font-size: 14px; }
.orn-fit__ic--people:before { content: "\ea26"; }
.orn-fit__ic--chevron { font-size: 14px; }
.orn-fit__ic--chevron:before { content: "\ea19"; }
.orn-fit__flt-blk2-ico .orn-fit__ic, .orn-fit__flt-sleg-logobox .orn-fit__ic { font-size: 19px; }

/* Richer "flights not added yet" block card */
.orn-fit__flt-blk2 { padding: 20px 24px; border: 1.5px dashed #D6D3CC; }
.orn-fit__flt-blk2-legs { display: flex; flex-direction: column; }
.orn-fit__flt-blk2-legs--boxed { gap: 18px; }
.orn-fit__flt-blk2-leg { padding: 14px 0; border-top: 1px dashed var(--fit-border-2); }
.orn-fit__flt-blk2-leg:first-child:not(.orn-fit__flt-blk2-leg--box) { border-top: 0; padding-top: 4px; }
.orn-fit__flt-blk2-leg--box { background: #FAFAF9; border: 1px solid #EDEBE6; border-radius: 12px; padding: 20px 24px; }
.orn-fit__flt-blk2-route { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; font: 700 15.5px/1.35 var(--fit-sans); color: var(--fit-ink); margin-bottom: 14px; }
.orn-fit__flt-blk2-row { display: flex; align-items: center; gap: 12px; }
.orn-fit__flt-blk2-row .orn-fit__flt-blk2-pax { margin-left: auto; margin-top: 0; }
.orn-fit__flt-blk2-status { font: 600 15px/1 var(--fit-sans); color: #4A5568; }
.orn-fit__flt-blk2-ico { width: 38px; height: 38px; border-radius: 8px; background: #F0F0F0; color: #8A93A6; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.orn-fit__flt-blk2-foot { display: flex; align-items: center; justify-content: flex-end; gap: 16px; flex-wrap: wrap; margin: 18px -24px 0; padding: 18px 24px 0; border-top: 1px solid var(--fit-border-2); }
.orn-fit__flt-blk2-pax { display: inline-flex; align-items: center; gap: 6px; font: 600 13px/1 var(--fit-sans); color: var(--fit-ink); flex: none; margin-top: -2px; }
.orn-fit__flt-blk2-pax svg { color: var(--fit-ink); }
.orn-fit__flt-blk2 .orn-fit__flt-open { display: inline-flex; align-items: center; gap: 8px; }

.orn-fit__flt-sleg:not(.orn-fit__flt-sleg--box) + .orn-fit__flt-sleg:not(.orn-fit__flt-sleg--box) { margin-top: 18px; padding-top: 18px; border-top: 1.5px dashed var(--fit-border-2); }
/* Second flight card in a group follows the inline early/late options, so it loses the
   adjacent-sleg spacing above — restore a top margin + the same dashed leg divider. */
.orn-fit__eci-inline + .orn-fit__flt-sleg:not(.orn-fit__flt-sleg--box) { margin-top: 18px; padding-top: 18px; border-top: 1.5px dashed var(--fit-border-2); }
.orn-fit__flt-sleg--box { background: #fff; border: 1px solid #EDEBE6; border-radius: 12px; padding: 20px 24px; }
.orn-fit__flt-sleg--box + .orn-fit__flt-sleg--box { margin-top: 18px; }
.orn-fit__flt-sleg-eyebrow { font: 700 13px/15.5px Archivo, sans-serif; letter-spacing: .08em; text-transform: uppercase; color: #E4002B; margin-bottom: 6px; }
.orn-fit__flt-sleg-hd { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; }
.orn-fit__flt-sleg-route { font: 700 16px/24px var(--fit-sans); color: var(--fit-ink); }
.orn-fit__flt-arrow { color: var(--fit-red-2); }
.orn-fit__flt-grouphd .orn-fit__flt-arrow { color: inherit; }
.orn-fit__flt-sleg-divider { border-top: 1.5px dashed var(--fit-border-2); margin: 18px 0; }
.orn-fit__flt-chips { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.orn-fit__flt-chip { font: 600 12px/16px var(--fit-sans); color: var(--fit-grey-2); border: 1px solid var(--fit-border-2); background: var(--fit-surface); border-radius: 999px; padding: 4px 11px; white-space: nowrap; }
.orn-fit__flt-chip--red { color: var(--fit-red-2); background: var(--fit-red-tint); border-color: var(--fit-red-border); }
.orn-fit__flt-chip--green { color: #1D7A3E; background: #F0FAF3; border-color: #C3E4CE; }
.orn-fit__flt-sleg-air { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; flex-wrap: wrap; }
.orn-fit__flt-sleg-logobox { width: 38px; height: 38px; border-radius: 8px; background: var(--fit-surface); display: inline-flex; align-items: center; justify-content: center; overflow: hidden; flex: none; color: var(--fit-grey); }
.orn-fit__flt-sleg-logobox img { width: 100%; height: 100%; object-fit: contain; }
.orn-fit__flt-sleg-air-t { min-width: 0; }
.orn-fit__flt-sleg-air-nm { font: 600 15px/1.3 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__flt-sleg-air-meta { font: 400 13px/1.3 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__flt-manual { font: 600 11.5px/1 var(--fit-sans); color: #2A9D8F; background: #EAFBFA; border: 1px solid #CBEEEC; border-radius: 6px; padding: 6px 9px; white-space: nowrap; }
.orn-fit__flt-sleg-pnr { font: 400 12.5px/1 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__flt-sleg-air-end { margin-left: auto; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.orn-fit__flt-sleg-pax { display: inline-flex; align-items: center; gap: 6px; font: 600 13px/1 var(--fit-sans); color: var(--fit-ink); margin-top: -2px; }
.orn-fit__flt-sleg-pax svg { color: var(--fit-ink); }
.orn-fit__flt-sleg-times { display: flex; align-items: center; gap: 12px; }
.orn-fit__flt-sleg-pt { flex: 1 1 0; display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.orn-fit__flt-sleg-pt--r { text-align: right; align-items: flex-end; }
.orn-fit__flt-sleg-datelbl { font: 400 12px/1 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__flt-sleg-time { font: 800 18px/1.15 var(--fit-sans); letter-spacing: -.01em; color: var(--fit-ink); white-space: nowrap; }
.orn-fit__flt-sleg-ap { display: block; font: 400 13px/1.3 var(--fit-sans); color: var(--fit-grey-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.orn-fit__flt-daysup { font-size: 12px; font-weight: 800; color: var(--fit-red-2); margin-left: 2px; vertical-align: super; }
.orn-fit__flt-sleg-mid { flex: 0 0 180px; display: flex; flex-direction: column; align-items: center; gap: 6px; position: relative; padding-top: 2px; }
.orn-fit__flt-sleg-dur { font: 500 13px/1 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__flt-sleg-line { width: 100%; height: 2px; background: var(--fit-border-2); border-radius: 2px; position: relative; }
.orn-fit__flt-sleg-line::before { content: ''; position: absolute; left: 50%; top: 50%; width: 8px; height: 8px; border-radius: 50%; background: #A3AAB6; transform: translate(-50%,-50%); }
.orn-fit__flt-sleg-stops { font: 500 13px/1 var(--fit-sans); color: var(--fit-grey-2); white-space: nowrap; }
.orn-fit__flt-grouphd { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 18px; }
.orn-fit__flt-grouphd .orn-fit__flt-sleg-route { font-size: 18px; }
/* Desktop: toggles the inline .orn-fit__flt-vd-panel with a rotating chevron. Mobile: opens the bottom sheet instead (onFlightViewDetails), no chevron. */
.orn-fit__flt-vd { cursor: pointer; background: none; border: 0; padding: 0; font: 700 14px/1 var(--fit-sans); color: var(--fit-ink); display: inline-flex; align-items: center; gap: 6px; }
.orn-fit__flt-vd-lbl { text-decoration: underline; text-underline-offset: 3px; }
.orn-fit__flt-vd-chev { transition: transform .15s ease; }
.orn-fit__flt-vd.is-open .orn-fit__flt-vd-chev { transform: rotate(180deg); }
.orn-fit__flt-vd-panel { margin-top: 20px; padding-top: 20px; border-top: 1.5px dashed #DEDBD4; }
.orn-fit__flt-vd-panel[hidden] { display: none; }
.orn-fit__flt-dg-label { font: 700 15px/1.3 var(--fit-sans); color: var(--fit-ink); margin-bottom: 18px; }
/* Airline info box is mobile-only (the bottom sheet) — desktop's inline panel goes straight from the group label to the hop rail. */
.orn-fit__flt-dg-air { display: none; align-items: center; gap: 12px; background: #FAFAF9; border: 1px solid #EDEBE6; border-radius: 12px; padding: 12px 14px; margin-bottom: 18px; }
.orn-fit__flt-dg-air .orn-fit__flt-sleg-air-nm { font-size: 17px; line-height: 22px; }
.orn-fit__vd-sheet-body .orn-fit__flt-dg-air { display: flex; }
.orn-fit__vd-sheet-body .orn-fit__flt-dg-label { margin-bottom: 12px; }
.orn-fit__flt-dg--sep { margin-top: 22px; padding-top: 20px; border-top: 1.5px dashed var(--fit-border-2); }

/* Mobile overrides (ORN Journey Detail - Mobile.dc.html) — the two mockups use different spacing/sizes for the same components, so narrow viewports override rather than share values. */
@media (max-width: 768px) {
  .orn-fit__flt-blk { padding: 16px; }
  .orn-fit__flt-blk-body { gap: 16px; }
  .orn-fit__flt-blk-foot { gap: 4px; margin: 16px -16px 0; padding: 14px 16px 0; }
  .orn-fit__flt-remove { flex: 0 0 auto; width: 38px; height: 38px; padding: 0; display: flex; align-items: center; justify-content: center; color: #C90A12; border-color: #F1B9B6; }
  .orn-fit__flt-remove:hover { background: var(--fit-red-tint); border-color: var(--fit-red); }
  .orn-fit__flt-remove-ic { display: block; }
  .orn-fit__flt-remove-lbl { display: none; }
  .orn-fit__flt-remove.is-loading .orn-fit__btn-lbl { display: none; }
  .orn-fit__flt-remove.is-loading .orn-fit__spin { margin-right: 0; }
  .orn-fit__flt-blk2 { padding: 16px; }
  .orn-fit__flt-blk2-legs--boxed { gap: 10px; }
  .orn-fit__flt-blk2-leg--box { padding: 14px; }
  .orn-fit__flt-blk2-route { margin-bottom: 12px; }
  .orn-fit__flt-blk2-status { font: 500 14px/20px var(--fit-sans); }
  .orn-fit__flt-blk2-ico { width: 32px; height: 32px; color: #B9BBBE; }
  .orn-fit__flt-blk2-foot { margin: 16px -16px 0; padding: 14px 16px 0; }
  .orn-fit__flt-blk2 .orn-fit__flt-open { justify-content: center; width: 100%; height: 40px; }
  .orn-fit__flt-sleg--box { background: #fff; padding: 14px; }
  .orn-fit__flt-sleg--box + .orn-fit__flt-sleg--box { margin-top: 0; }
  .orn-fit__flt-sleg-route { font: 600 15px/21px var(--fit-sans); margin: 3px 0 12px; }
  .orn-fit__flt-sleg-divider { margin: 14px 0; }
  .orn-fit__flt-sleg-air { gap: 10px; margin-bottom: 14px; }
  .orn-fit__flt-sleg-logobox { width: 32px; height: 32px; background: #F6F6F4; }
  .orn-fit__flt-sleg-air-nm { font: 500 15px/19px var(--fit-sans); }
  .orn-fit__flt-sleg-air-meta { font: 400 12px/16px var(--fit-sans); color: #7C8698; }
  .orn-fit__flt-sleg-times { display: grid; grid-template-columns: minmax(0,1fr) 72px minmax(0,1fr); gap: 10px; }
  .orn-fit__flt-sleg-datelbl { font: 400 11px/14px var(--fit-sans); color: #7C8698; }
  .orn-fit__flt-sleg-time { font-weight: 600; line-height: 24px; }
  .orn-fit__flt-sleg-ap { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; font: 400 12px/16px var(--fit-sans); color: #7C8698; white-space: normal; text-overflow: clip; margin-top: 3px; cursor: default; }
  .orn-fit__flt-daysup { font-size: 10px; font-weight: 600; }
  .orn-fit__flt-sleg-mid { flex-basis: auto; gap: 5px; padding-top: 0; }
  .orn-fit__flt-sleg-dur { font: 400 11px/14px var(--fit-sans); color: #7C8698; min-height: 14px; }
  .orn-fit__flt-sleg-line { background: #E7E4DE; }
  .orn-fit__flt-sleg-line::before { width: 7px; height: 7px; }
  .orn-fit__flt-sleg-stops { font: 400 11px/14px var(--fit-sans); color: #7C8698; }
  .orn-fit__flt-grouphd .orn-fit__flt-sleg-route { font-size: 17px; line-height: 23px; margin: 0; }
  .orn-fit__flt-vd { font: 600 13px/1 var(--fit-sans); letter-spacing: -.01em; gap: 0; }
  .orn-fit__flt-vd-chev { display: none; }
}

body.orn-fit__noscroll { overflow: hidden; }
/* "View details" bottom sheet, appended to <body> (not the tab panel) so it isn't clipped by that panel's scroll container. */
.orn-fit__vd-sheet[hidden] { display: none; }
/* z-index above this page's floating widgets (Instant Call Back/Talk to ORN at 9990/9991) — same reasoning as fltAdvOpen()'s baseZ:10000. */
.orn-fit__vd-sheet-bg { position: fixed; inset: 0; background: rgba(10,15,25,.45); z-index: 10001; opacity: 0; transition: opacity .22s ease; }
.orn-fit__vd-sheet.is-open .orn-fit__vd-sheet-bg { opacity: 1; }
.orn-fit__vd-sheet-panel { position: fixed; left: 0; right: 0; bottom: 0; max-height: 84vh; z-index: 10002; display: flex; flex-direction: column; background: #fff; border-radius: 20px 20px 0 0; box-shadow: 0 -10px 30px rgba(0,0,0,.2); font: 400 15px/1.55 var(--fit-sans); color: var(--fit-ink); transform: translateY(100%); transition: transform .22s ease; }
.orn-fit__vd-sheet.is-open .orn-fit__vd-sheet-panel { transform: translateY(0); }
.orn-fit__vd-sheet-hd { flex: 0 0 auto; padding: 8px 20px 14px; border-bottom: 1px solid var(--fit-border-2); }
.orn-fit__vd-sheet-handle { width: 36px; height: 4px; border-radius: 999px; background: #DAD7D0; margin: 0 auto 12px; }
.orn-fit__vd-sheet-hdrow { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.orn-fit__vd-sheet-hdtext { min-width: 0; }
.orn-fit__vd-sheet-date { margin-bottom: 2px; }
.orn-fit__vd-sheet-title { font: 600 17px/23px var(--fit-sans); }
.orn-fit__vd-sheet-sub { font: 400 12px/16px var(--fit-sans); color: var(--fit-grey-2); margin-top: 2px; }
.orn-fit__vd-sheet-x { flex: 0 0 auto; width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--fit-border-2); background: var(--fit-surface); color: var(--fit-ink); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.orn-fit__vd-sheet-body { flex: 1 1 auto; overflow-y: auto; padding: 18px 20px 28px; -webkit-overflow-scrolling: touch; }
@media (min-width: 640px) {
  .orn-fit__vd-sheet-panel { left: 50%; right: auto; bottom: 24px; width: 480px; max-width: calc(100vw - 32px); border-radius: 16px; transform: translate(-50%, 16px); }
  .orn-fit__vd-sheet.is-open .orn-fit__vd-sheet-panel { transform: translate(-50%, 0); }
  .orn-fit__vd-sheet-handle { display: none; }
}

.orn-fit__flt-hops { display: flex; flex-direction: column; }
.orn-fit__flt-hop { display: flex; gap: 16px; }
.orn-fit__flt-hop-pt { flex: 0 0 84px; padding-top: 1px; display: flex; flex-direction: column; gap: 2px; }
.orn-fit__flt-hop-time { font: 600 14px/1.3 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__flt-hop-date { font: 400 12px/1.3 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__flt-hop-rail { flex: 0 0 14px; display: flex; flex-direction: column; align-items: center; }
.orn-fit__flt-hop-dot { box-sizing: border-box; width: 10px; height: 10px; border-radius: 999px; border: 2px solid var(--fit-ink); background: #fff; margin-top: 6px; flex: none; }
.orn-fit__flt-hop-dot--on { background: var(--fit-ink); }
.orn-fit__flt-hop-vline { flex: 1 1 auto; width: 2px; background: var(--fit-border-2); margin: 3px 0; }
.orn-fit__flt-hop-vline--dash { width: 0; border-left: 2px dashed var(--fit-border-2); background: none; }
.orn-fit__flt-hop-body { flex: 1 1 auto; min-width: 0; padding-bottom: 22px; }
.orn-fit__flt-hop:last-child .orn-fit__flt-hop-body { padding-bottom: 0; }
.orn-fit__flt-hop-place { font: 600 14px/1.35 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__flt-hop-meta { font: 400 13px/1.35 var(--fit-sans); color: var(--fit-grey-2); margin-top: 3px; }
.orn-fit__flt-hop-layover { display: inline-block; margin-top: 8px; font: 600 12px/1 var(--fit-sans); color: var(--fit-grey-2); background: var(--fit-surface); border: 1px solid var(--fit-border-2); padding: 4px 11px; border-radius: 999px; }

.orn-fit__flt-addons, .orn-fit__flt-prices { margin-top: 16px; padding-top: 16px; border-top: 1px dashed var(--fit-border-2); }
.orn-fit__flt-other-ttl { font: 700 11px/1 var(--fit-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fit-grey-2); margin-bottom: 10px; }
.orn-fit__flt-addon { display: flex; align-items: center; gap: 8px; font: 400 13px/1.5 var(--fit-sans); color: var(--fit-ink); padding: 3px 0; }
.orn-fit__flt-addon-c { color: #1D7A3E; font-weight: 700; }
.orn-fit__flt-vlds { margin-top: 16px; display: flex; flex-direction: column; gap: 8px; }
.orn-fit__flt-vld { font: 400 13px/1.45 var(--fit-sans); border-radius: 8px; padding: 9px 12px; }
.orn-fit__flt-vld--info { background: #F4F9FE; border: 1px solid #BFD7F2; color: #0D74CE; }
.orn-fit__flt-vld--warn { background: #FEF8EC; border: 1px solid #F1D2A0; color: #92400E; }
.orn-fit__flt-vld--error { background: var(--fit-red-tint); border: 1px solid var(--fit-red-border); color: var(--fit-red-3); }
.orn-fit__flt-price-row { font: 500 13.5px/1.6 var(--fit-sans); color: var(--fit-grey-2); }


/* ================= Hotels tab — inline area-mode (zones → hotels → rooms) ======= */
.orn-page--journey-detail .orn-fit__hotels-map { margin: 18px 0 4px; }
/* Shorter map on the Hotels tab (the Map tab keeps its full 420px height). */
.orn-page--journey-detail .orn-fit__hotels-map .orn-fit__map-stage { height: 300px; }
.orn-page--journey-detail .orn-fit__hstays { display: flex; flex-direction: column; gap: 26px; margin-top: 18px; }
.orn-page--journey-detail .orn-fit__hstay { border: 1px solid var(--fit-border); border-radius: 18px; background: #fff; padding: 22px 22px 20px; }
.orn-fit__hstay-hd { margin-bottom: 16px; }
.orn-fit__hstay-eyebrow { font: 700 11px/1 var(--fit-mono); letter-spacing: .16em; color: var(--fit-red-2); text-transform: uppercase; }
.orn-fit__hstay-ttl { margin-top: 7px; font: 700 24px/1.15 var(--fit-serif); color: var(--fit-ink); }

/* Dark area hero */
.orn-fit__ahero { display: flex; gap: 18px; align-items: center; background: var(--fit-ink-2); border-radius: 14px; padding: 16px; }
.orn-fit__ahero-map { position: relative; flex: none; width: 150px; height: 96px; border-radius: 10px; overflow: hidden; background: radial-gradient(120% 120% at 30% 20%, #1c1c1c 0%, #0b0b0b 70%); }
.orn-fit__ahero-mgrid { position: absolute; inset: 0; background-image: linear-gradient(rgba(255,255,255,.06) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.06) 1px, transparent 1px); background-size: 18px 18px; }
.orn-fit__ahero-blob { position: absolute; left: 34%; top: 22%; width: 58%; height: 42%; background: rgba(60,86,68,.55); border-radius: 50%; filter: blur(1px); }
.orn-fit__ahero-pin { position: absolute; left: 24%; top: 66%; width: 14px; height: 14px; border-radius: 50%; background: var(--fit-blush); box-shadow: 0 0 0 4px rgba(243,180,175,.25); transform: translate(-50%, -50%); }
.orn-fit__ahero-mlabel { position: absolute; left: 10px; bottom: 8px; font: 700 11px/1 var(--fit-sans); color: #fff; text-shadow: 0 1px 4px rgba(0,0,0,.6); }
.orn-fit__ahero-txt { min-width: 0; }
.orn-fit__ahero-eyebrow { font: 700 10.5px/1 var(--fit-mono); letter-spacing: .16em; color: var(--fit-red); text-transform: uppercase; }
.orn-fit__ahero-city { margin-top: 8px; font: 600 26px/1.1 var(--fit-serif); color: #fff; }

/* Hotel cards */
.orn-fit__hlist { display: flex; flex-direction: column; gap: 12px; }
/* Hotel tag tabs over the Change-hotel list — single select, "All" first. Ink for
   the active tab (as the nights badge / selected card), so red stays on Select. */
.orn-fit__htg-bar { position: relative; margin-top: 18px; margin-bottom: 16px; padding-bottom: 16px; border-bottom: 1px solid var(--fit-border-2); }
.orn-fit__htg-list { display: flex; flex-wrap: wrap; gap: 8px; }
.orn-fit__htg { appearance: none; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; font: 600 13px/18px var(--fit-sans); color: var(--fit-ink); background: #fff; border: 1px solid var(--fit-border); border-radius: 999px; padding: 7px 14px; white-space: nowrap; transition: border-color .12s, background .12s, color .12s; }
.orn-fit__htg:hover { border-color: var(--fit-ink); }
.orn-fit__htg:focus-visible { outline: 2px solid var(--fit-red); outline-offset: 2px; }
.orn-fit__htg-cnt { font-weight: 500; color: var(--fit-grey-3); font-variant-numeric: tabular-nums; }
.orn-fit__htg--on, .orn-fit__htg--on:hover { background: var(--fit-ink); border-color: var(--fit-ink); color: #fff; cursor: default; }
.orn-fit__htg--on .orn-fit__htg-cnt { color: rgba(255,255,255,.7); }
/* the hotel's own tags, under its price */
.orn-fit__hcard-tags { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: 8px; }
.orn-fit__hcard-tags-more { font: 600 12px/16px var(--fit-sans); color: var(--fit-grey-3); }
@media (max-width: 640px) {
  /* one sideways-scrolling row; JS (htlTagFitStrip) keeps a tab cut by the edge */
  .orn-fit__htg-list { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding-right: 28px; margin-right: -2px; }
  .orn-fit__htg-list::-webkit-scrollbar { display: none; }
  .orn-fit__htg-bar::after { content: ""; position: absolute; top: 0; right: 0; bottom: 16px; width: 32px; pointer-events: none; background: linear-gradient(to right, rgba(255,255,255,0), #fff); transition: opacity .15s; }
  .orn-fit__htg-bar--end::after { opacity: 0; }
}
@media (prefers-reduced-motion: reduce) { .orn-fit__htg, .orn-fit__htg-bar::after { transition: none; } }
/* When a stay has no zones (no "CHOOSE YOUR ZONE" / "HOTELS IN…" labels), the
   hotel list sits directly under the area hero — restore the vertical breathing
   room the labels would otherwise provide. */
.orn-fit__ahero + .orn-fit__hlist, .orn-fit__ahero + .orn-fit__hlist-region { margin-top: 18px; }
.orn-fit__hlist-load, .orn-fit__hlist-empty, .orn-fit__hrooms-load, .orn-fit__hrooms-empty { font: 500 13px/1.4 var(--fit-sans); color: var(--fit-grey); padding: 8px 2px; }
/* Hotel option card — sightseeing-option style: [mark] name+stars / area / price · [button]. */
.orn-fit__hcard { border: 1px solid var(--fit-border); border-radius: 14px; background: #fff; transition: border-color .12s, background .12s; }
.orn-fit__hcard:not(.orn-fit__hcard--sel):hover { border-color: var(--fit-ink); }
.orn-fit__hcard-row { display: flex; align-items: flex-start; gap: 12px; padding: 15px 17px; cursor: pointer; }
/* Hotel thumbnail — h.img over a clean CSS hotel-icon placeholder. When the img
   is missing or fails to load it's removed, revealing the icon underneath. */
.orn-fit__hcard-img { flex: none; width: 92px; height: 84px; border-radius: 12px; overflow: hidden; background: #F0EFEE center/34px no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23BDB8B4' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21h18M5 21V5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v16M15 21V10h3a1 1 0 0 1 1 1v10'/%3E%3Cpath d='M8 8h.01M11 8h.01M8 12h.01M11 12h.01M8 16h.01M11 16h.01'/%3E%3C/svg%3E"); }
.orn-fit__hcard-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.orn-fit__hcard-main { flex: 1 1 auto; min-width: 0; }
.orn-fit__hcard-nmrow { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.orn-fit__hcard-nm { font: 700 15.5px/1.25 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__hcard-stars { font-size: 12px; letter-spacing: 1px; }
.orn-fit__hcard-stars .orn-jrn__star { color: var(--fit-red); }
.orn-fit__hcard-stars .orn-jrn__star--off { color: #D8D8D8; }
.orn-fit__hcard-dsc { margin-top: 4px; font: 400 12.5px/1.4 var(--fit-sans); color: var(--fit-grey-2); }
/* Guest rating of a hotel option: a small score box as in the hotel details
   panel (orn-fit__hv-rtg-score), then the rating word and count */
.orn-fit__hcard-rtg { margin-top: 6px; display: flex; align-items: center; gap: 7px; min-width: 0; }
.orn-fit__hcard-rtg-score { flex: none; background: var(--fit-red, #F20D16); color: #fff; border-radius: 6px; padding: 3px 6px; font: 800 12px/1 var(--orn-font-mono); }
.orn-fit__hcard-rtg-meta { font: 500 12.5px/1.3 var(--fit-sans); color: var(--fit-grey-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.orn-fit__hcard-prc { margin-top: 9px; font: 800 16px/1 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__hcard-prq { font: 500 11.5px/1 var(--fit-sans); color: var(--fit-grey); }
.orn-fit__hcard-btn { flex: none; align-self: center; border: 1px solid var(--fit-red, #F20D16); background: var(--fit-red, #F20D16); color: #fff; border-radius: var(--fit-btn-radius); padding: 7px 15px; font: 800 12px/1 var(--fit-sans); cursor: pointer; box-shadow: 0 2px 8px rgba(242,13,22,.18); transition: background .12s, border-color .12s, box-shadow .14s; }
.orn-fit__hcard-btn:hover { background: var(--fit-red-2, #C90A12); border-color: var(--fit-red-2, #C90A12); box-shadow: 0 4px 13px rgba(242,13,22,.26); }
/* Selected hotel = dark card, ✓ mark in front of the name */
/* The selected hotel used to be a near-black card with white text. The ORN skin
   is a light one, so it now reads as selected the way the rest of the page does:
   white paper, ORN ink border + a soft ink shadow, ink tick. Every child keeps
   the normal light styling, so no colour overrides are needed here. */
.orn-fit__hcard--sel { background: var(--orn-paper, #fff); border-color: var(--orn-ink, #14233b); box-shadow: 0 3px 12px rgba(20, 35, 59, .08); }
/* GHOST — the selected card's action is "Change room"/"Hide rooms", so it stays
   a neutral outline rather than the priced-commit red. */
/* Selected hotel's action is "Change room"/"Hide rooms" — a quiet outline secondary. */
.orn-fit__hcard--sel .orn-fit__hcard-btn { background: #fff; border-color: var(--orn-ink, #14233b); color: var(--orn-ink, #14233b); box-shadow: none; }
.orn-fit__hcard--sel .orn-fit__hcard-btn:hover { background: var(--orn-ink, #14233b); color: #fff; box-shadow: none; }
/* "Current hotel" in place of a meaningless "+ ₹ 0" delta on the committed stay. */
.orn-fit__hcard-prc--cur { font-weight: 600; font-size: 13px; color: var(--orn-mute, #6e6e6e); }

/* Committed hotel — full details block (orn-ui parity, FIT theme). */
.orn-fit__hsel-lbl { font: 700 10px/1 var(--fit-mono); letter-spacing: .16em; color: var(--fit-grey); text-transform: uppercase; margin: 22px 0 11px; }
.orn-fit__hsel { border: 1px solid var(--fit-border); border-radius: 14px; background: #fff; padding: 14px; }
.orn-fit__hsel-top { display: flex; gap: 12px; align-items: flex-start; }
.orn-fit__hsel-img { flex: none; width: 66px; height: 66px; border-radius: 10px; overflow: hidden; background: #F1F1F1; border: 1px solid var(--fit-border); }
.orn-fit__hsel-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.orn-fit__hsel-img.is-noimg { background-color: #F1F1F1; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23BDBDBD' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21h18'/%3E%3Cpath d='M5 21V5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v16'/%3E%3Cpath d='M15 9h4a1 1 0 0 1 1 1v11'/%3E%3Cpath d='M9 8h.01M9 12h.01M12 8h.01M12 12h.01'/%3E%3C/svg%3E"); background-position: center; background-repeat: no-repeat; background-size: 30px; }
/* Read-only stay: hero + hotel details as ONE connected card (dark header → white body). */
.orn-fit__hro { border: 1px solid var(--fit-border); border-radius: 14px; overflow: hidden; background: #fff; }
.orn-fit__hro .orn-fit__ahero { border-radius: 0; }
.orn-fit__hro .orn-fit__hsel { border: 0; border-radius: 0; }
.orn-fit__hsel-id { min-width: 0; padding-top: 1px; }
.orn-fit__hsel-nm { font: 800 15.5px/1.25 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__hsel-stars { margin-top: 4px; font-size: 11.5px; letter-spacing: 1.5px; }
.orn-fit__hsel-stars .orn-jrn__star { color: var(--fit-red); }
.orn-fit__hsel-stars .orn-jrn__star--off { color: #D8D8D8; }
.orn-fit__hsel-loc { margin-top: 5px; display: flex; align-items: center; gap: 5px; font: 400 11.5px/1.3 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__hsel-loc svg { width: 13px; height: 13px; color: var(--fit-grey); flex: none; }
.orn-fit__hsel-stay { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 11px; border: 1px solid var(--fit-border); border-radius: 10px; padding: 10px 13px; }
.orn-fit__hsel-col--end { text-align: right; }
.orn-fit__hsel-cl { font: 400 11px/1 var(--fit-sans); color: var(--fit-grey); }
.orn-fit__hsel-cd { margin-top: 4px; font: 700 13.5px/1.2 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__hsel-ct { margin-top: 3px; font: 400 11px/1 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__hsel-nts { flex: none; font: 700 9.5px/1 var(--fit-mono); letter-spacing: .06em; color: var(--fit-grey, #6E6E6E); background: var(--fit-surface, #F2F2F2); border-radius: 999px; padding: 6px 10px; }
.orn-fit__hsel-room { margin-top: 12px; }
.orn-fit__hsel-rlbl { font: 700 9px/1 var(--fit-mono); letter-spacing: .16em; color: var(--fit-grey); text-transform: uppercase; margin-bottom: 8px; }
.orn-fit__hsel-rcard { border: 1px solid var(--fit-border); border-radius: 10px; padding: 11px 13px; }
.orn-fit__hsel-rnm { display: flex; align-items: center; gap: 7px; font: 700 13px/1.2 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__hsel-rnm svg { width: 15px; height: 15px; color: #1F8A5B; flex: none; }
.orn-fit__hsel-rboard { margin: 4px 0 0 22px; font: 400 11.5px/1.3 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__hsel-chips { margin: 9px 0 0 22px; display: flex; flex-wrap: wrap; gap: 6px; }
.orn-fit__hsel-chip { display: inline-flex; align-items: center; gap: 5px; font: 600 10.5px/1 var(--fit-sans); border-radius: 999px; padding: 5px 9px; border: 1px solid; }
.orn-fit__hsel-chip svg { width: 12px; height: 12px; flex: none; }
.orn-fit__hsel-chip--meal, .orn-fit__hsel-chip--ref { color: #1F8A5B; border-color: #A7E0D6; background: #F3FBF9; }
.orn-fit__hsel-chip--nr { color: var(--fit-red-2, #C90A12); border-color: var(--fit-red-border, #F6CBC7); background: var(--fit-red-tint, #FBF3F2); }
.orn-fit__hsel-note { margin-top: 11px; }
.orn-fit__hsel-note summary { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; list-style: none; font: 700 11px/1 var(--fit-sans); color: var(--fit-red-2, #C90A12); border: 1px solid var(--fit-red-border, #F6CBC7); border-radius: 999px; padding: 6px 12px; }
.orn-fit__hsel-note summary::-webkit-details-marker { display: none; }
.orn-fit__hsel-note summary svg { width: 13px; height: 13px; }
.orn-fit__hsel-note-body { margin-top: 9px; font: 400 12px/1.55 var(--fit-sans); color: var(--fit-grey-2); background: var(--fit-surface, #FAFAFA); border: 1px solid var(--fit-border); border-radius: 10px; padding: 11px 13px; max-height: 240px; overflow-y: auto; }
.orn-fit__hsel-note-body ul { margin: 6px 0 0; padding-left: 18px; }
.orn-fit__hsel-note-body p { margin: 0 0 6px; }
/* Lazy-browse hotel controls: "Change hotel & room" / "Add a hotel" (committed
   view) and "Back" (browse view). The search API only loads on Change/Add. */
/* GHOST — "Change hotel & room" is a non-committal action (enters browse mode);
   neutral outline, not the priced-commit red (see button hierarchy). */
.orn-fit__hchange { display: flex; align-items: center; justify-content: center; gap: 7px; width: fit-content; margin: 16px auto 2px; border: 1px solid var(--fit-border, #E7E7E7); background: #fff; color: var(--fit-ink, #151515); border-radius: 999px; padding: 11px 25px; font: 700 13.5px/1 var(--fit-sans); cursor: pointer; transition: background .12s ease, border-color .12s ease, transform .08s ease; }
/* "Change hotel" in the city header — same pill, sized down and pushed to the
   end of the header row (which is a baseline flex). */
.orn-fit__hchange--hd { margin: 0 0 0 auto; padding: 7px 16px; font-size: 12.5px; align-self: center; }
/* The stay card doubles as the way in to its room options. */
.orn-fit__hpick { cursor: pointer; border-radius: 14px; transition: box-shadow .12s ease; }
.orn-fit__hpick:hover { box-shadow: 0 4px 16px rgba(20, 35, 59, .10); }
.orn-fit__hpick:focus-visible { outline: 2px solid var(--fit-ink, #151515); outline-offset: 2px; }
/* .orn-fit__hcity-cards is a multi-column grid — an expanded stay (hotel listing
   or room options) spans every column so the options get the full width. */
.orn-fit__hstay--wide { grid-column: 1 / -1; }
.orn-fit__hchange::before { content: "\21BB"; font-size: 15px; line-height: 1; }
.orn-fit__hchange:hover { background: var(--fit-surface, #F5F5F5); border-color: var(--fit-ink, #151515); }
.orn-fit__hchange:active { transform: scale(.98); }
.orn-fit__hchange--add { margin-top: 16px; background: var(--fit-red-tint, #FBF3F2); border: 1px dashed var(--fit-red-border, #F6CBC7); color: var(--fit-red-2, #C90A12); }
.orn-fit__hchange--add::before { content: "\002B"; }
.orn-fit__hchange--add:hover { background: var(--fit-red, #F20D16); border-color: var(--fit-red, #F20D16); color: #fff; }
/* "Lookup" header button — sits beside "Change hotel"; its own magnifier glyph. */
.orn-fit__hchange--lookup::before { content: "\1F50D"; font-size: 13px; }
/* adding a stay (Add a hotel / Add manual hotel) in the stay's action row: a "+", not the change arrow */
.orn-fit__hchange--plus::before { content: "+"; font-size: 17px; font-weight: 500; }
/* "Change hotel" / "Lookup" group in the card's acts row (see .orn-fit__hstay-acts
   below) — pushed to the row's right end while "View hotel details" stays left. */
.orn-fit__hstay-acts-r { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.orn-fit__hstay-acts-r .orn-fit__hchange--hd { margin: 0; }
/* "Remove" — staff only, so it reads as the destructive one in the acts row. */
.orn-fit__hchange--rm { color: var(--fit-red-2, #C90A12); }
.orn-fit__hchange--rm::before { content: "\00D7"; font-size: 15px; }
.orn-fit__hchange--rm:hover { background: var(--fit-red-tint, #FBF3F2); border-color: var(--fit-red-border, #F6CBC7); }
/* "Self-booked" pill on a stay the guest arranged themselves. */
.orn-fit__hsimple-sb { display: inline-block; vertical-align: middle; margin-left: 8px; padding: 2px 8px; border-radius: 999px; background: #F3ECFA; color: #6B3FA0; font-size: 11px; font-weight: 600; letter-spacing: .02em; }
/* ---- "Change Day": the itinerary-card list, in the tour drawer ----
   Its own rows rather than the shared .orn-fit__opt radio family: each row commits
   on its own Select, so a radio affordance would be wrong. */
.orn-itn__list { display: flex; flex-direction: column; gap: 10px; }
.orn-itn__row { display: flex; align-items: flex-start; gap: 14px; padding: 14px; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 12px; background: #fff; }
.orn-itn__row.is-current { border-color: var(--fit-ink, #151515); background: var(--fit-surface, #F7F7F8); }
.orn-itn__row-body { flex: 1; min-width: 0; }
.orn-itn__row-name { font-size: 14px; font-weight: 700; color: var(--fit-ink, #151515); }
.orn-itn__row-cur { display: inline-block; margin-left: 8px; padding: 2px 8px; border-radius: 999px; background: var(--fit-ink, #151515); color: #fff; font-size: 10.5px; font-weight: 700; letter-spacing: .02em; }
/* This plan is on another day — selecting it moves it. */
.orn-itn__row-used { display: inline-block; margin-left: 8px; padding: 2px 8px; border-radius: 999px; background: #FFF4E5; color: #8A5300; font-size: 10.5px; font-weight: 700; letter-spacing: .02em; }
.orn-itn__row-move { margin-top: 4px; font-size: 12px; color: #8A5300; }
/* A plan that cannot be used at all - one of its included legs is unavailable. */
.orn-itn__row.is-unavailable { background: var(--fit-surface, #F7F7F8); }
.orn-itn__row.is-unavailable .orn-itn__row-name { color: var(--fit-grey, #6B6B6B); }
.orn-itn__row-blocked { margin-top: 4px; font-size: 12px; color: var(--fit-red-2, #C90A12); }
/* clamped rather than a Show more/less toggle - that helper is scoped to the
   day-by-day renderer and these rows are painted from the editor module */
.orn-itn__row-dsc { margin-top: 4px; font-size: 12.5px; line-height: 1.5; color: var(--fit-grey, #6B6B6B); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.orn-itn__row-meta { margin-top: 5px; font-size: 12px; color: var(--fit-grey-2, #969EAC); }
.orn-itn__row-btn { flex: none; height: 34px; padding: 0 16px; border: 1px solid var(--fit-ink, #151515); border-radius: 10px; background: var(--fit-ink, #151515); color: #fff; font-size: 12.5px; font-weight: 700; cursor: pointer; }
.orn-itn__row-btn:hover { filter: brightness(1.15); }
.orn-itn__row-btn:disabled { opacity: .5; cursor: default; }

/* ---- A stay with no hotel and no self-booked details ----
   Replaces the city hero on this state: a settled statement, not a gap. */
.orn-fit__hnostay { padding: 22px 20px; border: 1px dashed var(--fit-border, #E7E7E7); border-radius: 12px; background: var(--fit-surface, #F7F7F8); text-align: center; }
.orn-fit__hnostay-ttl { font-size: 16px; font-weight: 700; color: var(--fit-ink, #151515); }
.orn-fit__hnostay-meta { margin-top: 4px; font-size: 13px; color: var(--fit-grey, #6B6B6B); }
/* "Add a hotel" is still available, just no longer the thing the card is about. */
.orn-fit__hnostay-add { display: block; margin: 12px auto 0; padding: 0; border: 0; background: none; color: var(--fit-red-2, #C90A12); font-size: 13px; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.orn-fit__hnostay-add:hover { color: var(--fit-red, #F20D16); }

/* ---- Remove-stay panel (system users): removal + optional self-booked details ----
   Rendered inside MODAL_PANEL (blockUI), which moves the node onto the body — hence
   the .ornHrmBlk sizing below rather than any positioning of our own. */
.ornHrmBlk { width: 92%; max-width: 520px; }
.orn-fit__hrm-modal { text-align: left; }
.orn-fit__hrm { padding: 4px 2px 2px; }
.orn-fit__hrm-sub { font-size: 12px; color: var(--fit-grey, #6B6B6B); }
/* Which stay is being removed — the modal is detached from its card, so it has to say so. */
.orn-fit__hrm-stay { margin-top: 10px; padding: 9px 11px; border-radius: 10px; background: var(--fit-surface, #F5F5F5); font-size: 13px; font-weight: 600; color: var(--fit-ink, #151515); }
.orn-fit__hrm-rd { display: flex; align-items: center; gap: 8px; margin-top: 12px; font-size: 13px; color: var(--fit-ink, #151515); cursor: pointer; }
.orn-fit__hrm-rd.is-disabled { color: var(--fit-grey-2, #969EAC); cursor: not-allowed; }
.orn-fit__hrm-form { margin: 10px 0 2px; padding-left: 24px; display: flex; flex-direction: column; gap: 10px; }
.orn-fit__hrm-lbl { display: flex; flex-direction: column; gap: 5px; font-size: 12px; color: var(--fit-grey, #6B6B6B); }
.orn-fit__hrm-inp { width: 100%; height: 38px; padding: 0 11px; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 10px; background: #fff; font-size: 13px; color: var(--fit-ink, #151515); }
.orn-fit__hrm-inp:focus { outline: none; border-color: var(--fit-ink, #151515); box-shadow: 0 0 0 3px rgba(20,20,20,.06); }
/* the shared autocomplete sits inside a label here, so drop its standalone gap */
.orn-fit__hrm-lbl .orn-fit__hlookup { margin: 0; }
.orn-fit__hrm-cb { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--fit-grey, #6B6B6B); cursor: pointer; }
.orn-fit__hrm-err { margin-top: 10px; font-size: 12px; color: var(--fit-red-2, #C90A12); }
.orn-fit__hrm-acts { display: flex; justify-content: flex-end; gap: 8px; margin-top: 14px; }
.orn-fit__hrm-cancel,
.orn-fit__hrm-ok { height: 36px; padding: 0 16px; border-radius: 10px; font-size: 13px; font-weight: 600; cursor: pointer; }
.orn-fit__hrm-cancel { border: 1px solid var(--fit-border, #E7E7E7); background: #fff; color: var(--fit-ink, #151515); }
.orn-fit__hrm-cancel:hover { border-color: var(--fit-ink, #151515); }
.orn-fit__hrm-ok { border: 1px solid var(--fit-red, #F20D16); background: var(--fit-red, #F20D16); color: #fff; }
.orn-fit__hrm-ok:hover { filter: brightness(.95); }
.orn-fit__hrm-ok:active { transform: scale(.98); }
/* ---- A stay's room set-up: the card line (only when it differs from the trip) and
   the rooms pill to the right of the back link on Change hotel / Change room. ---- */
.orn-fit__hsimple-rmcfg { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.orn-fit__hsimple-rmcfg-pill { display: inline-flex; align-items: center; gap: 7px; padding: 4px 11px; border-radius: 999px; background: #F4F9FE; border: 1px solid #BFD7F2; font-size: 12.5px; font-weight: 600; color: var(--fit-ink, #151515); }
.orn-fit__hsimple-rmcfg-pill svg { width: 15px; height: 15px; flex: none; color: #1E3A8A; }
.orn-fit__hsimple-rate { margin-top: 6px; font-size: 12.5px; color: var(--fit-grey, #6B6B6B); }
.orn-fit__hsimple-rate.is-invalid { display: inline-block; padding: 4px 10px; border-radius: 6px; background: var(--orn-vld-warn-bg, #FEF8EC); border: 1px solid var(--orn-vld-warn-b, #F1D2A0); color: var(--orn-vld-warn-t, #92400E); font-weight: 600; }
.orn-fit__hsimple-rate-lnk { margin-left: 6px; font-weight: 600; color: #0D74CE; text-decoration: underline; text-underline-offset: 2px; }
.orn-fit__hbrowse-top { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; }
.orn-fit__hbrowse-top .orn-fit__hbrowse-back { margin-bottom: 0; }
.orn-fit__rmcfg-btn { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; min-height: 36px; padding: 6px 12px; border-radius: 8px; border: 1px solid #9CC3EE; background: #F4F9FE; font: 600 13px/1.2 var(--fit-sans); color: var(--fit-ink, #151515); cursor: pointer; }
.orn-fit__rmcfg-btn svg { width: 15px; height: 15px; flex: none; color: #1E3A8A; }
.orn-fit__rmcfg-btn svg:last-child { width: 14px; height: 14px; color: #0D74CE; }
.orn-fit__rmcfg-btn:hover { border-color: #0D74CE; }
.orn-fit__rmcfg-btn:focus-visible { outline: 2px solid var(--fit-ink, #151515); outline-offset: 2px; }
/* ---- Classic forms opened from this page: the manual hotel price form (MODAL_PANEL,
   blockClass ornMnHtlBlk) and the "+ Add Room" form that slides over it. Their grid
   styles live in poc_b2c.css, which this page does not load, so they are laid out here
   in the orn-ui look. Every rule is rooted at the form itself and walks its own direct
   children only (R = either form), so nothing reaches the cancellation-policy editor
   nested inside, or any other classic markup. ---- */
/* wider than the classic .lgnRgBlk (701px); blockUI centres it from its width */
.ornMnHtlBlk.lgnRgBlk { width: 94%; max-width: 900px; box-sizing: border-box; }
.ornMnHtlBlk #mnHtlPrcAddForm { max-height: 86vh; overflow-y: auto; background: #F5F5F7; border-radius: 12px; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) { width: 100%; margin: 0; padding: 0; text-align: left; color: #1C2024; font-size: 14px; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--hd { position: sticky; top: 0; z-index: 3; display: flex; align-items: center; gap: 16px; padding: 22px 64px 18px 28px; background: #fff; border-bottom: 1px solid #E5E7EB; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--hd .ui-hd { flex: 1; min-width: 0; margin: 0; font-size: 20px; font-weight: 600; line-height: 1.3; color: #1C2024; text-align: left; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--hd .ui-hd .sub { display: block; margin-top: 4px; font-size: 14px; font-weight: 400; color: #60646C; }
.ornMnHtlBlk .orn-fit__mnh-rooms { flex: none; margin-left: 0; }
/* each field group is a white card; the manual form's first (hotel) one has no heading of its own */
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct { margin: 18px 28px; padding: 0; background: #fff; border: 1px solid #E5E7EB; border-radius: 10px; }
.ornMnHtlBlk #mnHtlPrcAddForm > .ui-crd--hd + .ui-crd--sct::before { content: "Hotel Details"; display: block; padding: 14px 22px; border-bottom: 1px solid #E5E7EB; font-size: 16px; font-weight: 600; color: #1C2024; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > .ui-crd--sct--hd { display: block; padding: 14px 22px; border-bottom: 1px solid #E5E7EB; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > .ui-crd--sct--hd .ui-subhd { margin: 0; font-size: 16px; font-weight: 600; text-transform: none; letter-spacing: 0; color: #1C2024; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > .ui-fm-flds { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px 20px; margin: 0; padding: 18px 22px 20px; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > .ui-fm-flds + .ui-fm-flds { border-top: 1px solid #EEF0F2; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > .ui-fm-flds--w100 { grid-template-columns: minmax(0, 1fr); }
.sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm > .ui-crd--sct > .ui-fm-flds--w50 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > .ui-fm-flds > dl { width: auto; min-width: 0; margin: 0; padding: 0; float: none; }
/* the inclusions box takes two columns */
.ornMnHtlBlk #mnHtlPrcAddForm > .ui-crd--sct > .ui-fm-flds > dl:has(textarea) { grid-column: span 2; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > .ui-fm-flds > dl > dt { float: none; width: auto; padding: 0 0 6px; text-align: left; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > .ui-fm-flds > dl > dt label { display: block; padding: 0; font-size: 13px; font-weight: 500; color: #60646C; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > .ui-fm-flds > dl > dd { position: relative; float: none; margin: 0; padding: 0; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > .ui-fm-flds > dl > dd :is(input[type="text"], input[type="number"], select) { width: 100% !important; height: 40px; box-sizing: border-box; margin: 0; padding: 0 12px; border: 1px solid #D9DBE0; border-radius: 6px; background-color: #fff; box-shadow: none; font: inherit; font-size: 14px; color: #1C2024; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > .ui-fm-flds > dl > dd textarea { width: 100%; min-height: 76px; box-sizing: border-box; margin: 0; padding: 10px 12px; border: 1px solid #D9DBE0; border-radius: 6px; font: inherit; font-size: 14px; color: #1C2024; resize: vertical; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > .ui-fm-flds > dl > dd :is(input, select, textarea):focus { outline: none; border-color: #0090FF; box-shadow: 0 0 0 2px rgba(0,144,255,.2); }
/* help text sits under its field (the classic .fhelp is indented 125px for a side label) */
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > .ui-fm-flds > dl > dd :is(.help-block, .fhelp) { margin: 6px 0 0; padding: 0; background: none; font-size: 12px; line-height: 1.4; color: #8B8D98; }
/* the hotel / supplier autocompletes: full-width field, and a real dropdown over the form */
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) .tf-autocomplete { position: relative; display: block !important; width: 100%; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) .tt-menu { position: absolute; top: calc(100% + 4px) !important; left: 0; right: 0; z-index: 20; min-width: 260px; max-height: 280px; overflow-y: auto; margin: 0; padding: 6px 0; box-sizing: border-box; background: #fff; border: 1px solid #E5E7EB; border-radius: 8px; box-shadow: 0 12px 28px rgba(20,20,20,.14); text-align: left; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) .tt-menu .tt-suggestion { padding: 9px 14px; font-size: 13.5px; line-height: 1.35; color: #1C2024; cursor: pointer; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) .tt-menu .tt-suggestion:is(:hover, .tt-cursor) { background: #F3F4F6; }
/* the cancellation policy: its text and the Change button, and the inline editor at the
   card's width. The editor's "Common Terms" is a hover dropdown whose classic styles are
   not on this page either. */
.ornMnHtlBlk #mnHtlPrcAddForm .xclPolicyCtr { font-size: 14px; color: #1C2024; }
.ornMnHtlBlk #mnHtlPrcAddForm .xclPolicyCtr .xclPolicyBtn { margin-top: 6px; padding: 7px 14px; border-radius: 6px; font-size: 13px; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr { min-width: 0; max-width: none; padding: 16px; border: 1px solid #E5E7EB; border-radius: 8px; box-shadow: none; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .ui-crd--sct { margin: 0; padding: 0; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .ui-crd--sct + .ui-crd--sct { margin-top: 14px; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .ui-crd--sct--hd { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 12px; padding: 0; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .ui-subhd { margin: 0; font-size: 15px; font-weight: 600; color: #1C2024; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .dropdownBtn { position: relative; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .dropdownBtnCnt { display: inline-flex; align-items: center; gap: 8px; height: 34px; padding: 0 12px; border: 1px solid #D9DBE0; border-radius: 6px; background: #fff; font-size: 13px; font-weight: 500; color: #1C2024; cursor: pointer; white-space: nowrap; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .dropdownBtnCnt i { display: none; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .dropdownBtnCnt::after { content: ""; width: 7px; height: 7px; margin-top: -4px; border-right: 1.5px solid #60646C; border-bottom: 1.5px solid #60646C; transform: rotate(45deg); }
/* the list hangs from the button with no gap, so the pointer can travel into it */
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .dropdownBtnOptLst { display: none; position: absolute; top: 100%; right: 0; z-index: 10; min-width: 300px; padding: 6px 0; background: #fff; border: 1px solid #E5E7EB; border-radius: 8px; box-shadow: 0 12px 28px rgba(20,20,20,.14); }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .dropdownBtn:is(:hover, :focus-within) .dropdownBtnOptLst { display: block; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .dropdownBtnOptItm { display: block; width: 100%; padding: 9px 14px; border: 0; background: none; text-align: left; font: inherit; font-size: 13px; color: #1C2024; cursor: pointer; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .dropdownBtnOptItm:hover { background: #F3F4F6; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .xclPolicyTmItmHd { font-size: 11px; letter-spacing: .04em; color: #8B8D98; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .xclPolicyTmItm { gap: 10px; font-size: 13.5px; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .xclPolicyTmItm :is(.xclFm, .xclTill) { margin: 0; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .xclPolicyTmItm .xclChFlds { gap: 8px; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .xclPolicyTmItm .xclChFlds input { margin: 0; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr :is(input[type="text"], input[type="number"], select) { height: 36px; box-sizing: border-box; padding: 0 10px; border: 1px solid #D9DBE0; border-radius: 6px; background-color: #fff; box-shadow: none; font: inherit; font-size: 13px; color: #1C2024; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .ui-stk { display: flex; justify-content: flex-end; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .xclPolicyDoneBtn { height: 34px; padding: 0 18px; border: 1px solid #151515; border-radius: 6px; background: #fff; color: #151515; font-size: 13px; font-weight: 600; text-transform: none; cursor: pointer; }
.ornMnHtlBlk #mnHtlPrcAddForm #xclPolicyUpdCtr .xclPolicyDoneBtn:hover { background: #151515; color: #fff; }
/* while the stay update runs after the rate is saved: nothing in the form is clickable */
.ornMnHtlBlk #mnHtlPrcAddForm.is-busy > .ui-crd--sct:not(:last-child) { opacity: .55; pointer-events: none; }
.ornMnHtlBlk #mnHtlPrcAddForm .search-button-sec.is-loading { pointer-events: none; opacity: .9; }
/* the footer: Save, kept in view while the cards scroll */
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct:last-child { position: sticky; bottom: 0; z-index: 3; margin: 0; padding: 14px 28px; border: 0; border-top: 1px solid #E5E7EB; border-radius: 0; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct:last-child .ui-stk { display: flex; justify-content: flex-end; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct:last-child .search-button-sec { display: inline-flex; align-items: center; height: 40px; padding: 0 26px; border: 0; border-radius: 6px; background: #2F9E44; box-shadow: none; color: #fff; font-size: 15px; font-weight: 600; text-transform: none; text-decoration: none; cursor: pointer; }
:is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct:last-child .search-button-sec:hover { background: #2B8A3E; color: #fff; }
/* "+ Add Room" slides over the manual hotel form, which opens at baseZ 10000 */
html body #_sldrPnlOvlyCtr.sldrPnlOvrMdl { z-index: 10020; }
html body .sldrPnlCtr.sldrPnlOvrMdl { z-index: 10021; }
@media (max-width: 768px) {
  :is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct > :is(.ui-fm-flds, .ui-fm-flds--w50) { grid-template-columns: minmax(0, 1fr); }
  .ornMnHtlBlk #mnHtlPrcAddForm > .ui-crd--sct > .ui-fm-flds > dl:has(textarea) { grid-column: auto; }
  :is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--hd { flex-wrap: wrap; padding: 18px 56px 14px 16px; }
  :is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct { margin: 14px 12px; }
  :is(.ornMnHtlBlk #mnHtlPrcAddForm, .sldrPnlCtr.sldrPnlOvrMdl #htlRoomUpdForm) > .ui-crd--sct:last-child { margin: 0; padding: 12px 16px; }
}
/* ---- Room Selection — a port of orn-ui's SimpleRoomModal (its colours and sizes):
   a 480px dialog on desktop, a full-height sheet on phones. Above the hotel overlays
   (1000) and the slide-overs. ---- */
.orn-fit__rmed-host { position: fixed; inset: 0; z-index: 10100; font-family: var(--fit-sans); text-align: left; animation: ornRmedIn .16s ease-out; }
@keyframes ornRmedIn { from { opacity: 0; } to { opacity: 1; } }
.orn-fit__rmed-bd { position: absolute; inset: 0; background: rgba(0,0,0,.84); }
.orn-fit__rmed-dlg { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 480px; max-width: calc(100vw - 32px); height: calc(100vh - 2rem); max-height: 700px; display: flex; flex-direction: column; overflow: hidden; background: #F9F9FB; border: 1px solid #F0F0F3; border-radius: 8px; box-shadow: 0 10px 30px rgba(0,0,0,.18); }
.orn-fit__rmed-hd { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 20px 16px; background: #fff; border-bottom: 1px solid #E0E1E6; }
.orn-fit__rmed-ttl { margin: 0; font: 500 16px/24px var(--fit-sans); color: #1C2024; }
.orn-fit__rmed-sub { margin: 4px 0 0; font-size: 12px; color: #60646C; }
.orn-fit__rmed-max { color: #0090FF; }
.orn-fit__rmed-x { flex: none; display: inline-flex; padding: 6px; border: 0; border-radius: 4px; background: none; color: #475569; cursor: pointer; }
.orn-fit__rmed-x:hover { background: #F3F4F6; }
.orn-fit__rmed-body { flex: 1; min-height: 0; overflow-y: auto; }
.orn-fit__rmed-list { display: flex; flex-direction: column; gap: 12px; padding: 16px; }
.orn-fit__rmed-card { display: flex; align-items: center; gap: 4px; padding: 0 8px 0 0; border: 1px solid #E0E1E6; border-radius: 8px; background: #fff; transition: border-color .12s ease, box-shadow .12s ease; }
.orn-fit__rmed-card:hover { border-color: rgba(0,144,255,.3); box-shadow: 0 1px 2px rgba(0,0,0,.06); }
.orn-fit__rmed-card-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; padding: 14px 0 14px 16px; border: 0; background: none; text-align: left; font: inherit; cursor: pointer; }
.orn-fit__rmed-card-ttl { font-size: 14px; font-weight: 500; color: #1C2024; }
.orn-fit__rmed-card-sub { font-size: 12px; color: #60646C; }
.orn-fit__rmed-del,
.orn-fit__rmed-go { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; border: 0; border-radius: 4px; background: none; cursor: pointer; }
.orn-fit__rmed-del { color: #EF4444; }
.orn-fit__rmed-del:hover { background: #FEF2F2; }
.orn-fit__rmed-go { color: #60646C; }
.orn-fit__rmed-add { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; padding: 8px 16px; border: 0; background: none; font: 500 14px/1.2 var(--fit-sans); color: #0090FF; cursor: pointer; }
.orn-fit__rmed-add span { font-size: 20px; font-weight: 400; line-height: 16px; }
.orn-fit__rmed-add:hover { color: #0070CC; }
.orn-fit__rmed-alert { flex: none; position: relative; display: flex; align-items: center; gap: 6px; margin: 0 16px 12px; padding: 10px 16px; border: 1px solid #EB8E90; border-left-width: 5px; border-radius: 6px; background: #FFFCFC; box-shadow: 0 4px 12px rgba(0,0,0,.12); color: #CE2C31; }
.orn-fit__rmed-alert svg { flex: none; }
.orn-fit__rmed-alert p { flex: 1; margin: 0; font-size: 13px; font-weight: 500; line-height: 1.4; }
.orn-fit__rmed-alert button { flex: none; display: inline-flex; padding: 0; border: 0; background: none; color: #60646C; cursor: pointer; }
.orn-fit__rmed-tot { flex: none; display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; background: #F3F4F6; border-top: 1px solid #E0E1E6; font-size: 13px; color: #60646C; }
.orn-fit__rmed-tot b { font-weight: 600; color: #1C2024; }
.orn-fit__rmed-ft { flex: none; display: flex; gap: 12px; padding: 12px 16px; background: #fff; border-top: 1px solid #E0E1E6; }
.orn-fit__rmed-btn { flex: 1; padding: 10px 24px; border: 1px solid #E0E1E6; border-radius: 4px; background: #fff; font: 500 13px/1.2 var(--fit-sans); color: #60646C; cursor: pointer; }
.orn-fit__rmed-btn:hover { color: #1C2024; background: #F9FAFB; }
.orn-fit__rmed-btn--pri { border-color: #0588F0; background: #0588F0; color: #fff; }
.orn-fit__rmed-btn--pri:hover { color: #fff; background: #0588F0; filter: brightness(.95); }
.orn-fit__rmed-srch { flex: none; position: relative; padding: 16px; background: #fff; border-bottom: 1px solid #E0E1E6; }
.orn-fit__rmed-srch svg { position: absolute; left: 28px; top: 50%; transform: translateY(-50%); color: #9CA3AF; }
.orn-fit__rmed-srch input { width: 100%; box-sizing: border-box; padding: 8px 12px 8px 36px; border: 1px solid #E0E1E6; border-radius: 8px; font: 400 13px/1.4 var(--fit-sans); color: #1C2024; }
.orn-fit__rmed-srch input:focus { outline: none; border-color: #0090FF; box-shadow: 0 0 0 2px rgba(0,144,255,.2); }
.orn-fit__rmed-empty { padding: 32px 0; text-align: center; font-size: 13px; color: #9CA3AF; }
.orn-fit__rmed-tv { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border: 1px solid #E0E1E6; border-radius: 8px; background: #fff; cursor: pointer; transition: border-color .12s ease, box-shadow .12s ease; }
.orn-fit__rmed-tv:hover { border-color: rgba(0,144,255,.3); box-shadow: 0 1px 2px rgba(0,0,0,.06); }
.orn-fit__rmed-tv.is-off { opacity: .4; cursor: not-allowed; }
.orn-fit__rmed-tv.is-off:hover { border-color: #E0E1E6; box-shadow: none; }
.orn-fit__rmed-tv input { flex: none; width: 16px; height: 16px; margin: 0; accent-color: #0090FF; cursor: inherit; }
.orn-fit__rmed-av { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border: 1px solid #E0E1E6; border-radius: 50%; background: #F0F0F3; font-size: 11px; font-weight: 600; color: #60646C; }
.orn-fit__rmed-tv-info { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.orn-fit__rmed-tv-nm { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; font-weight: 500; color: #1C2024; }
.orn-fit__rmed-tv-typ { display: flex; align-items: center; gap: 4px; margin-top: 2px; font-size: 12px; color: #60646C; }
.orn-fit__rmed-tv-typ svg { color: #0090FF; }
.orn-fit__rmed-dot { color: #D1D5DB; }
.orn-fit__rmed-badge { flex: none; padding: 2px 8px; border: 1px solid #BAE6FD; border-radius: 4px; background: #E0F2FE; font-size: 11px; font-weight: 500; line-height: 16.5px; color: #0090FF; }
@media (max-width: 768px) {
  .orn-fit__rmed-dlg { left: 0; right: 0; top: 0; bottom: 0; transform: none; width: 100%; max-width: none; height: auto; max-height: none; border: 0; border-radius: 16px 16px 0 0; }
  .orn-fit__rmed-hd { padding: 16px; border-radius: 16px 16px 0 0; }
  .orn-fit__rmed-ttl { font-size: 18px; font-weight: 600; }
  .orn-fit__rmed-sub { margin-top: 2px; }
}
/* ---- "Lookup hotels" property-name search field + suggestions ---- */
.orn-fit__hlookup { position: relative; margin: 0 0 16px; }
.orn-fit__hlookup-field { display: flex; align-items: center; gap: 9px; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 12px; background: #fff; padding: 0 13px; transition: border-color .12s ease, box-shadow .12s ease; }
.orn-fit__hlookup-field:focus-within { border-color: var(--fit-ink, #151515); box-shadow: 0 0 0 3px rgba(20,20,20,.06); }
.orn-fit__hlookup-ico { display: inline-flex; color: var(--fit-grey, #6B6B6B); flex: none; }
.orn-fit__hlookup-inp { flex: 1; min-width: 0; border: 0; outline: none; background: none; padding: 12px 0; font: 500 14px/1.2 var(--fit-sans); color: var(--fit-ink, #151515); }
.orn-fit__hlookup-inp::placeholder { color: var(--fit-grey, #9A9A9A); font-weight: 500; }
.orn-fit__hlookup-menu:empty { display: none; }
.orn-fit__hlookup-menu { position: absolute; z-index: 20; left: 0; right: 0; top: calc(100% + 5px); background: #fff; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 12px; box-shadow: 0 14px 34px rgba(20,20,20,.12); overflow: hidden; max-height: 320px; overflow-y: auto; }
.orn-fit__hlookup-msg { padding: 13px 15px; font: 500 13px/1.3 var(--fit-sans); color: var(--fit-grey, #6B6B6B); }
.orn-fit__hlookup-list { list-style: none; margin: 0; padding: 5px; }
.orn-fit__hlookup-item { display: flex; align-items: center; gap: 9px; padding: 10px 11px; border-radius: 9px; cursor: pointer; font: 600 13.5px/1.25 var(--fit-sans); color: var(--fit-ink, #151515); }
.orn-fit__hlookup-item svg { flex: none; width: 15px; height: 15px; color: var(--fit-red-2, #C90A12); }
.orn-fit__hlookup-item:hover, .orn-fit__hlookup-item:focus { background: var(--fit-surface, #F5F5F5); }
.orn-fit__hlookup-hint { padding: 26px 4px; text-align: center; color: var(--fit-grey, #6E6E6E); font: 500 13px/1.4 var(--fit-sans); }
/* Lookup header (eyebrow + title) above the search field. */
.orn-fit__hlookup-head { margin: 2px 0 12px; }
.orn-fit__hlookup-eyebrow { font: 700 11px/1 var(--orn-font-mono, monospace); letter-spacing: .12em; text-transform: uppercase; color: var(--fit-red-2, #C90A12); }
.orn-fit__hlookup-title { margin-top: 6px; font: 800 19px/1.15 var(--orn-font-display); letter-spacing: -.01em; color: var(--orn-ink, #151515); }
/* Friendly empty state before a property is picked. */
.orn-fit__hlookup-empty { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 44px 20px 40px; }
.orn-fit__hlookup-empty-ic { display: inline-flex; align-items: center; justify-content: center; width: 64px; height: 64px; border-radius: 50%; background: var(--fit-red-tint, #FBF3F2); color: var(--fit-red, #F20D16); margin-bottom: 16px; }
.orn-fit__hlookup-empty-t { font: 800 16px/1.2 var(--orn-font-display); color: var(--orn-ink, #151515); }
.orn-fit__hlookup-empty-s { margin-top: 6px; max-width: 320px; font: 400 13.5px/1.5 var(--orn-font-body); color: var(--orn-text-muted, #6B6B6B); }
/* ---- "View hotel details" — read-only RIGHT-SIDE SLIDE-OVER (#ornHViewHost) ----
   Typeset in the ORN theme: Archivo (--orn-font-body/display), JetBrains Mono
   (--orn-font-mono) for eyebrow labels; red accents; generous, even spacing. */
.orn-fit__hstay-acts { display: flex; justify-content: flex-start; margin-top: 10px; }
.orn-fit__hview-btn { display: inline-flex; align-items: center; gap: 7px; border: 1px solid var(--fit-border, #E7E7E7); background: #fff; color: var(--orn-ink, #151515); border-radius: 999px; padding: 9px 20px; font: 700 12.5px/1 var(--orn-font-body); cursor: pointer; transition: background .12s ease, border-color .12s ease; }
.orn-fit__hview-btn::before { content: "\1F441"; font-size: 13px; }
.orn-fit__hview-btn:hover { background: var(--fit-surface, #F5F5F5); border-color: var(--orn-ink, #151515); }
@media (max-width: 640px) {
  .orn-fit__hstay-acts { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; margin-top: 14px; }
  .orn-fit__hstay-acts-r { display: contents; }
  .orn-fit__hstay-acts button { grid-column: span 3; }
  .orn-fit__hstay-acts:has(> .orn-fit__hview-btn):has(> .orn-fit__hstay-acts-r > :last-child:nth-child(even)) > .orn-fit__hview-btn,
  .orn-fit__hstay-acts:has(> .orn-fit__hview-btn):has(> .orn-fit__hstay-acts-r > :nth-child(3)) > .orn-fit__hview-btn,
  .orn-fit__hstay-acts:not(:has(> .orn-fit__hview-btn)) > .orn-fit__hstay-acts-r > :first-child:nth-last-child(odd) { grid-column: 1 / -1; }
  .orn-fit__hstay-acts:has(> .orn-fit__hview-btn):has(> .orn-fit__hstay-acts-r > :nth-child(3)) > .orn-fit__hstay-acts-r > * { grid-column: span 2; }
  .orn-fit__hstay-acts:has(> .orn-fit__hview-btn):has(> .orn-fit__hstay-acts-r > :nth-child(3)) [data-hchange]:not(.is-loading) { font-size: 0; }
  .orn-fit__hstay-acts:has(> .orn-fit__hview-btn):has(> .orn-fit__hstay-acts-r > :nth-child(3)) [data-hchange]:not(.is-loading)::after { content: "Change" / ""; font-size: 13px; }
  .orn-fit__hstay-acts button { box-sizing: border-box; width: auto; height: 44px; margin: 0; padding: 0 10px; display: flex; align-items: center; justify-content: center; gap: 7px; border: 1px solid var(--orn-ink); border-radius: var(--fit-btn-radius); background: #fff; color: var(--orn-ink); font: 600 13px/1 var(--orn-font-body); letter-spacing: .01em; white-space: nowrap; transition: background .12s ease, border-color .12s ease; }
  .orn-fit__hstay-acts button:hover { background: var(--fit-surface); }
  .orn-fit__hstay-acts .orn-fit__hchange--rm { color: var(--fit-red-2); border-color: var(--fit-red-border); background: var(--fit-red-tint); }
  .orn-fit__hstay-acts .orn-fit__hchange--rm:hover { border-color: var(--fit-red-2); background: var(--fit-red-tint-2); }
  .orn-fit__hstay-acts button::before { content: ""; flex: none; width: 16px; height: 16px; background: currentColor; -webkit-mask: var(--ico) center / contain no-repeat; mask: var(--ico) center / contain no-repeat; }
  .orn-fit__hstay-acts button.is-loading::before { display: none; }
  .orn-fit__hview-btn { --ico: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M1.5 8s2.5-5 6.5-5 6.5 5 6.5 5-2.5 5-6.5 5S1.5 8 1.5 8z'/><circle cx='8' cy='8' r='2'/></svg>"); }
  .orn-fit__hchange--hd { --ico: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M13.5 8a5.5 5.5 0 1 1-1.6-3.9'/><path d='M13.5 2.5v3h-3'/></svg>"); }
  .orn-fit__hchange--lookup { --ico: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round'><circle cx='7' cy='7' r='4.5'/><path d='M10.5 10.5 14 14'/></svg>"); }
  .orn-fit__hchange--plus { --ico: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round'><path d='M8 3v10M3 8h10'/></svg>"); }
  .orn-fit__hchange--rm { --ico: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M2.5 4h11M6 4V2.5h4V4M4 4l.7 9.5h6.6L12 4'/></svg>"); }
}
/* Host: nothing until opened (JS toggles .is-open). */
#ornHViewHost { position: fixed; inset: 0; z-index: 1400; display: none; font-family: var(--orn-font-body); }
#ornHViewHost.is-open { display: block; }
body.orn-hv-lock { overflow: hidden; }
.orn-fit__hv-backdrop { position: absolute; inset: 0; background: rgba(15,18,25,.5); animation: ornHvFade .18s ease; }
@keyframes ornHvFade { from { opacity: 0; } to { opacity: 1; } }
.orn-fit__hv-drawer { position: absolute; top: 0; right: 0; height: 100%; width: min(760px, 96vw); background: #fff; display: flex; flex-direction: column; box-shadow: -18px 0 48px rgba(15,18,25,.22); animation: ornHvSlide .24s cubic-bezier(.22,.61,.36,1); }
#ornHViewHost.is-settled .orn-fit__hv-backdrop, #ornHViewHost.is-settled .orn-fit__hv-drawer { animation: none; }
@keyframes ornHvSlide { from { transform: translateX(100%); } to { transform: translateX(0); } }
.orn-fit__hv-top { display: flex; align-items: center; gap: 14px; padding: 18px 24px; border-bottom: 1px solid var(--fit-border, #EEE); flex: none; }
.orn-fit__hv-back { border: 0; background: none; font-size: 20px; line-height: 1; color: var(--orn-ink, #151515); cursor: pointer; padding: 2px 4px; flex: none; }
.orn-fit__hv-id { min-width: 0; flex: 1; }
.orn-fit__hv-nm { font: 800 20px/1.15 var(--orn-font-display); letter-spacing: -.01em; color: var(--orn-ink, #151515); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.orn-fit__hv-stars { color: #E8B305; font-size: 15px; letter-spacing: 1px; }
.orn-fit__hv-addr { display: flex; align-items: flex-start; gap: 6px; margin-top: 5px; color: var(--orn-text-muted, #6B6B6B); font: 500 13px/1.35 var(--orn-font-body); }
.orn-fit__hv-addr svg { width: 15px; height: 15px; flex: none; margin-top: 1px; color: var(--fit-red-2, #C90A12); }
.orn-fit__hv-x { border: 0; background: none; font-size: 24px; line-height: 1; color: var(--orn-text-muted, #6B6B6B); cursor: pointer; padding: 0 2px; flex: none; }
.orn-fit__hv-x:hover { color: var(--orn-ink, #151515); }
.orn-fit__hv-scroll { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 0 24px 28px; position: relative; }
.orn-fit__hview-load, .orn-fit__hview-empty { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 56px 16px; color: var(--orn-text-muted, #6B6B6B); font: 500 14px/1.3 var(--orn-font-body); }
/* ---- "View visa details" — same slide-over shell (#ornVViewHost), visa sections below ---- */
#ornVViewHost { position: fixed; inset: 0; z-index: 1400; display: none; font-family: var(--orn-font-body); }
#ornVViewHost.is-open { display: block; }
.orn-fit__vi-view { cursor: pointer; white-space: nowrap; border: 1px solid var(--fit-border, #E7E7E7); background: #fff; color: var(--orn-ink, #151515); border-radius: 999px; padding: 8px 16px; font: 700 12px/1 var(--orn-font-body); transition: background .12s ease, border-color .12s ease; }
.orn-fit__vi-view:hover { background: var(--fit-surface, #F5F5F5); border-color: var(--orn-ink, #151515); }
.orn-fit__vv { padding-top: 20px; display: flex; flex-direction: column; gap: 22px; color: var(--orn-ink, #151515); }
.orn-fit__vv-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.orn-fit__vv-fact { background: var(--fit-surface, #F5F5F5); border-radius: 12px; padding: 12px 14px; }
.orn-fit__vv-fact-k { font: 600 10.5px/1.2 var(--orn-font-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--orn-text-muted, #6B6B6B); }
.orn-fit__vv-fact-v { margin-top: 6px; font: 700 14px/1.3 var(--orn-font-body); }
.orn-fit__vv-sec { border-top: 1px solid var(--fit-border, #EEE); padding-top: 18px; }
.orn-fit__vv-h { margin: 0 0 12px; font: 800 16px/1.2 var(--orn-font-display); letter-spacing: -.01em; }
.orn-fit__vv-list { margin: 0; padding-left: 20px; list-style: disc outside; font: 500 13.5px/1.45 var(--orn-font-body); color: var(--orn-text, #333); }
/* the base reset strips list markers - set them back explicitly */
.orn-fit__vv-list > li { display: list-item; list-style: inherit; }
.orn-fit__vv-list > li + li { margin-top: 6px; }
.orn-fit__vv-list > li::marker { color: var(--fit-red-2, #C90A12); }
.orn-fit__vv-doc { padding: 12px 0; border-bottom: 1px dashed var(--fit-border, #E7E7E7); }
.orn-fit__vv-doc:first-child { padding-top: 0; }
.orn-fit__vv-doc:last-child { border-bottom: 0; padding-bottom: 0; }
.orn-fit__vv-doc-ttl { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; font: 700 14px/1.3 var(--orn-font-body); }
.orn-fit__vv-doc-ttl svg { color: var(--fit-red-2, #C90A12); flex: none; }
.orn-fit__vv-smps { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.orn-fit__vv-smp { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--fit-red-border, #F6CBC7); border-radius: 999px; padding: 6px 12px; color: var(--fit-red-2, #C90A12); font: 600 12px/1.2 var(--orn-font-body); text-decoration: none; }
.orn-fit__vv-smp:hover { background: var(--fit-red-tint, #FBF3F2); }
.orn-fit__vv-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
.orn-fit__vv-step { position: relative; border: 1px solid var(--fit-border, #EEE); border-radius: 12px; padding: 14px; text-align: center; }
.orn-fit__vv-step-n { position: absolute; top: 10px; left: 12px; font: 800 18px/1 var(--orn-font-display); color: var(--fit-red, #F20D16); }
.orn-fit__vv-step-img { display: block; width: 100%; max-width: 120px; height: 90px; object-fit: contain; margin: 4px auto 10px; }
.orn-fit__vv-step-ttl { font: 700 13.5px/1.3 var(--orn-font-body); }
.orn-fit__vv-step-dsc { margin-top: 4px; font: 500 12px/1.4 var(--orn-font-body); color: var(--orn-text-muted, #6B6B6B); }
.orn-fit__vv-cnss { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; }
.orn-fit__vv-cns { background: var(--fit-surface, #F5F5F5); border-radius: 12px; padding: 12px 14px; font: 500 13px/1.45 var(--orn-font-body); }
.orn-fit__vv-cns-nm { font-weight: 700; margin-bottom: 4px; }
.orn-fit__vv-cns-addr, .orn-fit__vv-cns-ph { color: var(--orn-text, #333); }
@media (max-width: 560px) {
  .orn-fit__vv-steps { grid-template-columns: 1fr 1fr; }
  .orn-fit__vv-facts { grid-template-columns: 1fr 1fr; }
}
/* Gallery — hero (50%) + 2x2 thumbnail grid (50%), orn-ui ImageGallery layout. */
.orn-fit__hv-gal { display: flex; gap: 10px; margin-top: 20px; }
.orn-fit__hv-gal-hero { position: relative; flex: 1 1 50%; height: 320px; border-radius: 12px; overflow: hidden; background: var(--fit-surface, #F1F1F1); }
.orn-fit__hv-gal-hero img { width: 100%; height: 100%; object-fit: cover; display: block; }
.orn-fit__hv-gal-all { position: absolute; bottom: 12px; right: 12px; background: rgba(0,0,0,.7); color: #fff; font: 600 12.5px/1 var(--orn-font-body); padding: 7px 12px; border-radius: 7px; }
.orn-fit__hv-gal-thumbs { flex: 1 1 50%; height: 320px; display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 1fr; gap: 10px; }
.orn-fit__hv-gal-th { position: relative; border-radius: 10px; overflow: hidden; background: var(--fit-surface, #F1F1F1); }
.orn-fit__hv-gal-th img { width: 100%; height: 100%; object-fit: cover; display: block; }
.orn-fit__hv-gal-more { position: absolute; inset: 0; background: rgba(0,0,0,.6); color: #fff; font: 700 16px/1 var(--orn-font-display); display: flex; align-items: center; justify-content: center; }
@media (max-width: 640px) { .orn-fit__hv-gal { flex-direction: column; } .orn-fit__hv-gal-hero { height: 220px; } .orn-fit__hv-gal-thumbs { height: 150px; } }
/* Sticky scroll-spy tab bar — full-bleed white, pins to the top of the scroll. */
.orn-fit__hv-tabs { position: sticky; top: 0; z-index: 5; display: flex; gap: 26px; background: #fff; border-bottom: 1px solid var(--fit-border, #EEE); margin: 22px -24px 0; padding: 14px 24px 0; }
.orn-fit__hv-tab { border: 0; background: none; padding: 0 0 12px; font: 700 14px/1 var(--orn-font-body); color: var(--orn-text-muted, #6B6B6B); cursor: pointer; position: relative; transition: color .12s ease; }
.orn-fit__hv-tab.is-active { color: var(--fit-red-2, #C90A12); }
.orn-fit__hv-tab.is-active::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--fit-red-2, #C90A12); border-radius: 2px 2px 0 0; }
.orn-fit__hv-tabbody { padding-top: 22px; }
/* Stacked sections flow one after another; a divider separates them. */
.orn-fit__hv-anchor { scroll-margin-top: 70px; }
.orn-fit__hv-anchor + .orn-fit__hv-anchor { margin-top: 26px; padding-top: 26px; border-top: 1px solid var(--fit-border, #EEE); }
.orn-fit__hv-h3 { margin: 0 0 12px; font: 800 19px/1.15 var(--orn-font-display); letter-spacing: -.01em; color: var(--orn-ink, #151515); }
/* Overview: About (60%) + guest-ratings card (40%). */
.orn-fit__hv-ov { display: flex; gap: 28px; align-items: flex-start; }
.orn-fit__hv-ov-main { flex: 1 1 58%; min-width: 0; }
.orn-fit__hv-ov-side { flex: 1 1 42%; min-width: 0; }
.orn-fit__hv-about { font: 400 14px/1.65 var(--orn-font-body); color: var(--orn-text-muted, #4B5563); }
.orn-fit__hv-about p { margin: 0 0 12px; }
/* Read more / less clamp on a long About description. */
.orn-fit__hv-about--clamp .orn-fit__hv-about-body { max-height: 150px; overflow: hidden; -webkit-mask-image: linear-gradient(180deg, #000 60%, transparent 100%); mask-image: linear-gradient(180deg, #000 60%, transparent 100%); }
.orn-fit__hv-about--clamp.is-open .orn-fit__hv-about-body { max-height: none; -webkit-mask-image: none; mask-image: none; }
.orn-fit__hv-more { display: inline-flex; align-items: center; gap: 5px; margin-top: 8px; border: 0; background: none; padding: 0; color: var(--fit-red-2, #C90A12); font: 700 13px/1 var(--orn-font-body); cursor: pointer; }
.orn-fit__hv-more::after { content: "\203A"; font-size: 15px; line-height: 1; }
.orn-fit__hv-about--clamp.is-open .orn-fit__hv-more::after { content: "\2039"; }
/* Guest-ratings card — ORN red accents (orn-ui uses blue). */
.orn-fit__hv-rtg-card { background: var(--fit-red-tint, #FBF3F2); border: 1px solid var(--fit-red-border, #F6CBC7); border-radius: 14px; padding: 18px; }
.orn-fit__hv-rtg-hd { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 16px; }
.orn-fit__hv-rtg-score { background: var(--fit-red, #F20D16); color: #fff; border-radius: 9px; padding: 9px 13px; font: 800 19px/1 var(--orn-font-mono); }
.orn-fit__hv-rtg-meta { display: flex; flex-direction: column; gap: 3px; }
.orn-fit__hv-rtg-lbl { font: 800 16px/1.1 var(--orn-font-display); color: var(--fit-red-2, #C90A12); text-transform: capitalize; }
.orn-fit__hv-rtg-cnt { font: 600 12px/1 var(--orn-font-mono); letter-spacing: .02em; color: var(--orn-text-muted, #6B6B6B); }
.orn-fit__hv-rtg-bars { display: flex; flex-direction: column; gap: 12px; }
.orn-fit__hv-rbar { display: flex; align-items: center; gap: 12px; }
.orn-fit__hv-rbar-lbl { flex: 0 0 98px; font: 600 13px/1.2 var(--orn-font-body); color: var(--orn-ink, #444); text-transform: capitalize; }
.orn-fit__hv-rbar-trk { flex: 1; height: 8px; border-radius: 4px; background: rgba(20,20,20,.1); overflow: hidden; }
.orn-fit__hv-rbar-fill { display: block; height: 100%; border-radius: 4px; background: var(--fit-red, #F20D16); }
.orn-fit__hv-rbar-val { flex: 0 0 34px; text-align: right; font: 700 13px/1 var(--orn-font-mono); color: var(--orn-ink, #444); }
/* Details cards (Amenities / Policies) — white card, grey header strip. */
.orn-fit__hv-card { background: #fff; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 10px; margin-bottom: 20px; overflow: hidden; }
.orn-fit__hv-card-hd { background: var(--fit-surface, #F7F7F8); border-bottom: 1px solid var(--fit-border, #E7E7E7); padding: 14px 18px; font: 800 15px/1.2 var(--orn-font-display); color: var(--orn-ink, #151515); }
.orn-fit__hv-card-bd { padding: 20px; }
.orn-fit__hv-amgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 24px; }
.orn-fit__hv-am { display: flex; align-items: flex-start; gap: 9px; font: 500 14px/1.4 var(--orn-font-body); color: #4A4A4A; }
.orn-fit__hv-am-ic { width: 16px; height: 16px; flex: none; margin-top: 1px; color: #2E9E4F; }
@media (max-width: 640px) { .orn-fit__hv-ov { flex-direction: column; gap: 10px; } .orn-fit__hv-ov-side, .orn-fit__hv-ov-main { flex-basis: auto; width: 100%; } .orn-fit__hv-amgrid { grid-template-columns: 1fr; } }
/* Server-rendered hdtlH fragments injected into the panel (parsed from the hotel
   detail JSP) — restyle their legacy classes to sit cleanly in the ORN drawer. */
.orn-fit__hv-scroll .htl--dsc { font: 400 14px/1.65 var(--orn-font-body); color: var(--orn-text-muted, #4B5563); }
.orn-fit__hv-scroll .htl--dsc p { margin: 0 0 12px; }
/* Policy blocks (parsed from hdtlH) rendered as cards, matching the amenities card. */
.orn-fit__hv-polwrap .htlCntSct { background: #fff; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 10px; margin-bottom: 20px; padding: 0 0 6px; overflow: hidden; }
.orn-fit__hv-polwrap .htlCntSct h2 { margin: 0 0 4px; background: var(--fit-surface, #F7F7F8); border-bottom: 1px solid var(--fit-border, #E7E7E7); padding: 14px 18px; font: 800 15px/1.2 var(--orn-font-display); color: var(--orn-ink, #151515); }
.orn-fit__hv-polwrap .htlCntSubSct { padding: 0 18px; margin: 16px 0; }
.orn-fit__hv-polwrap .htlCntSubSctSplt { display: flex; gap: 48px; }
.orn-fit__hv-polwrap .htlCntSubSct h4 { margin: 0 0 5px; font: 700 11.5px/1.2 var(--orn-font-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--orn-text-muted, #6B6B6B); }
.orn-fit__hv-polwrap .htlCntSubSctTxt { font: 400 13.5px/1.6 var(--orn-font-body); color: var(--orn-ink, #2A2A2A); }
@media (max-width: 600px) { .orn-fit__hv-drawer { width: 100vw; } }
.orn-fit__hbrowse-back { display: inline-flex; align-items: center; gap: 4px; border: 0; background: none; color: var(--fit-red-2, #C90A12); font: 700 13px/1 var(--fit-sans); cursor: pointer; padding: 2px 0; margin-bottom: 14px; }
.orn-fit__hbrowse-back:hover { text-decoration: underline; }
@media (max-width: 560px) { .orn-fit__hsel-top { flex-direction: column; } .orn-fit__hsel-img { width: 100%; height: 120px; } }

/* Rooms (inline under an opened hotel card) */
.orn-fit__hrooms { margin: 0 17px 15px; padding-top: 14px; border-top: 1px dashed var(--fit-border, #E7E7E7); }
.orn-fit__hrooms-lbl { font: 700 9.5px/1 var(--fit-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--fit-grey, #6E6E6E); margin-bottom: 10px; }
.orn-fit__hroom { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 11px 0; border-top: 1px solid var(--fit-border-2, #EFEFEF); }
.orn-fit__hroom:first-of-type { border-top: 0; }
.orn-fit__hroom-main { min-width: 0; }
.orn-fit__hroom-nm { font: 700 14px/1.3 var(--fit-sans); color: var(--fit-ink, #151515); }
.orn-fit__hroom-meta { margin-top: 3px; font: 400 12px/1.35 var(--fit-sans); color: var(--fit-grey, #6E6E6E); }
.orn-fit__hroom-keys { margin-top: 5px; font: 400 11.5px/1.4 var(--fit-sans); color: var(--fit-grey, #6E6E6E); }
.orn-fit__hroom-keys ul { margin: 0; padding-left: 15px; list-style: disc; }
.orn-fit__hroom-keys li { margin: 1px 0; }
.orn-fit__hroom-right { display: flex; align-items: center; gap: 12px; flex: none; }
.orn-fit__hroom-prcwrap { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.orn-fit__hroom-prc { font: 800 14px/1 var(--fit-sans); color: var(--fit-ink, #151515); white-space: nowrap; }
.orn-fit__hroom-prq { font: 400 11px/1.2 var(--fit-sans); color: var(--fit-grey, #6E6E6E); white-space: nowrap; }
/* SECONDARY (context-aware) — room pick sits on a dark card when selected, a
   light card when not; outline on dark, red-outline on light. */
.orn-fit__hroom-btn { border: 1px solid var(--fit-red, #F20D16); background: var(--fit-red, #F20D16); color: #fff; border-radius: var(--fit-btn-radius); padding: 6px 14px; font: 800 12px/1 var(--fit-sans); cursor: pointer; box-shadow: 0 2px 8px rgba(242,13,22,.18); transition: background .14s ease, border-color .14s ease, box-shadow .14s ease; }
.orn-fit__hroom-btn:hover { background: var(--fit-red-2, #C90A12); border-color: var(--fit-red-2, #C90A12); box-shadow: 0 4px 13px rgba(242,13,22,.26); }
/* Room-list filters (Meal Plan dropdown + Refundable checkbox). Default styling
   suits a dark card; light overrides for a non-selected card. */
.orn-fit__hrooms-hd { display: flex; align-items: center; justify-content: space-between; gap: 12px 16px; flex-wrap: wrap; margin-bottom: 13px; }
.orn-fit__hrooms-hd .orn-fit__hrooms-lbl { margin-bottom: 0; }
.orn-fit__rfilters { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.orn-fit__rsrch-wrap { flex: 1 1 150px; min-width: 130px; max-width: 230px; }
.orn-fit__rsrch { width: 100%; box-sizing: border-box; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 999px; padding: 8px 14px; font: 500 12.5px/1 var(--fit-sans); color: var(--fit-ink, #151515); background: #fff; outline: none; }
.orn-fit__rsrch::placeholder { color: var(--fit-grey, #6E6E6E); font-weight: 500; }
.orn-fit__rsrch:focus { border-color: var(--fit-ink, #151515); }
/* Multi-select meal-plan dropdown (hotel_selector.js style): a pill trigger with
   a checked count, opening a checkbox list. */
.orn-fit__rmeal-dd { position: relative; }
.orn-fit__rmeal-btn { gap: 6px; }
.orn-fit__rmeal-txt { font: 600 12.5px/1 var(--fit-sans); }
.orn-fit__rmeal-caret { font-size: 10px; color: var(--fit-grey, #6E6E6E); transition: transform .15s ease; }
.orn-fit__rmeal-dd.is-open .orn-fit__rmeal-caret { transform: rotate(180deg); }
.orn-fit__rmeal-menu { position: absolute; top: calc(100% + 6px); left: 0; z-index: 40; min-width: 210px; background: #fff; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 14px; box-shadow: 0 12px 34px rgba(20,35,59,.14); padding: 10px; }
.orn-fit__rmeal-menu-hd { font: 800 13px/1 var(--fit-sans); color: var(--fit-ink, #151515); padding: 4px 10px 10px; }
.orn-fit__rmeal-opt { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 9px; cursor: pointer; font: 500 13.5px/1.2 var(--fit-sans); color: var(--fit-ink, #151515); }
.orn-fit__rmeal-opt:hover { background: var(--fit-red-tint, #FBF3F2); }
.orn-fit__rmeal-opt.is-sel { color: var(--fit-red-2, #C90A12); font-weight: 700; }
.orn-fit__rmeal-cb { accent-color: var(--fit-red, #F20D16); width: 15px; height: 15px; cursor: pointer; margin: 0; flex: none; }
.orn-fit__rmeal-empty { padding: 6px 10px; color: var(--fit-grey, #6E6E6E); font: 500 12.5px/1 var(--fit-sans); }
.orn-fit__hrooms-more { display: inline-flex; align-self: flex-start; margin-top: 4px; border: 0; background: none; padding: 8px 2px; color: var(--fit-red-2, #C90A12); font: 700 13px/1 var(--fit-sans); cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.orn-fit__hrooms-more:hover { color: var(--fit-red, #F20D16); }
.orn-fit__rfilter { display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--fit-border, #E7E7E7); border-radius: 999px; padding: 7px 13px; background: #fff; font: 600 12.5px/1 var(--fit-sans); color: var(--fit-ink, #151515); cursor: pointer; }
.orn-fit__rfilter-lbl { color: var(--fit-grey, #6E6E6E); font: 700 8.5px/1 var(--fit-mono); letter-spacing: .1em; text-transform: uppercase; }
.orn-fit__rref { accent-color: var(--fit-red, #F20D16); width: 15px; height: 15px; cursor: pointer; margin: 0; }

/* Selected-hotel summary line */

@media (max-width: 560px) {
  .orn-fit__ahero { flex-direction: column; align-items: stretch; }
  .orn-fit__ahero-map { width: 100%; }
  .orn-fit__hcard-foot { flex-wrap: wrap; }
}

/* ---- Hotels tab: shimmer skeletons + smooth entrance animations ---- */
@keyframes ornFitShimmer { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }
@keyframes ornFitFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes ornFitRise { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes ornFitRooms { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }

.orn-fit__skel { display: block; border-radius: 7px; background: linear-gradient(90deg, #ECECEC 25%, #F6F6F6 45%, #ECECEC 65%); background-size: 220% 100%; animation: ornFitShimmer 1.25s ease-in-out infinite; }
.orn-fit__skel-bar { height: 14px; margin-top: 9px; }
.orn-fit__skel-stars { width: 78px; height: 13px; border-radius: 999px; }
.orn-fit__skel-mark { width: 26px; height: 26px; border-radius: 50%; flex: none; }
.orn-fit__skel-btn { width: 88px; height: 34px; border-radius: 999px; flex: none; align-self: center; }
.orn-fit__hcard--skel { pointer-events: none; }
.orn-fit__hlist-skel { display: flex; flex-direction: column; gap: 12px; }
/* Skeletons on the dark (selected) card read on a dark base */
/* The selected card is light now, so the shimmer stays the light one from
   .orn-fit__skel — the white-on-dark override it used to carry is gone. */
.orn-fit__hroom--skel { pointer-events: none; }

/* ---- Shared loading vocabulary: inline button spinner + busy/disabled CTAs ----
   The spinner reuses @keyframes orn-jd-spin (defined for the JD CTA spinner) — no
   new rotate keyframe. Injected by Util.spinner()/Util.btnBusy() in the JS. */
.orn-fit__spin { display: inline-block; width: 14px; height: 14px; margin-right: 8px; vertical-align: -2px; border: 2px solid rgba(255,255,255,.4); border-top-color: #fff; border-radius: 50%; animation: orn-jd-spin .7s linear infinite; }
.orn-fit__spin--light { border-color: rgba(255,255,255,.45); border-top-color: #fff; }         /* on red/dark CTAs */
.orn-fit__spin--red   { border-color: var(--fit-blush, #F3B4AF); border-top-color: var(--fit-red, #F20D16); } /* on ghost/light buttons */
.orn-fit__spin--dark  { border-color: rgba(0,0,0,.18); border-top-color: var(--fit-ink, #151515); }
.orn-fit__btn-lbl { vertical-align: baseline; }
@media (prefers-reduced-motion: reduce) { .orn-fit__spin { animation-duration: 1.4s; } }

/* ---- Full-screen Check-Availability loader (FullLoader in the JS) ----
   Blocks the whole viewport while the reprice round-trip runs and swaps the
   page into the priced quote. Reuses @keyframes orn-jd-spin. */
.orn-fit__loadov { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center;
  background: rgba(21,21,21,.42); backdrop-filter: blur(6px) saturate(.9); -webkit-backdrop-filter: blur(6px) saturate(.9);
  opacity: 0; visibility: hidden; transition: opacity .2s ease, visibility .2s ease; }
.orn-fit__loadov.is-open { opacity: 1; visibility: visible; }
.orn-fit__loadov[hidden] { display: none; }
.orn-fit__loadov-card { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 6px;
  padding: 30px 34px; min-width: 240px; max-width: 88vw; background: #fff; border-radius: 16px;
  box-shadow: 0 18px 50px rgba(0,0,0,.28); transform: translateY(8px) scale(.98); transition: transform .2s ease; }
.orn-fit__loadov.is-open .orn-fit__loadov-card { transform: none; }
.orn-fit__loadov-spin { width: 40px; height: 40px; margin-bottom: 8px; border: 3px solid var(--fit-blush, #F3B4AF);
  border-top-color: var(--fit-red, #F20D16); border-radius: 50%; animation: orn-jd-spin .7s linear infinite; }
.orn-fit__loadov-txt { font-size: 16px; font-weight: 700; color: var(--fit-ink, #151515); }
.orn-fit__loadov-sub { font-size: 13px; color: #666; }
@media (prefers-reduced-motion: reduce) { .orn-fit__loadov-spin { animation-duration: 1.4s; } }

/* Busy/disabled treatment for the red-pill CTAs that had none. */
.orn-fit__hchange.is-loading, .orn-fit__hchange:disabled { opacity: .9; cursor: progress; }
.orn-fit__hchange.is-loading::before { display: none; }        /* hide ↻/+ glyph so only the spinner shows */
.orn-fit__hroom-btn.is-loading, .orn-fit__hroom-btn:disabled { opacity: .9; cursor: progress; }
.orn-jrn__act.is-loading, .orn-jrn__act:disabled { opacity: .9; cursor: progress; }
.orn-fit__vld-btn.is-loading, .orn-fit__vld-btn:disabled { opacity: .9; cursor: progress; }

/* Price "recalculating" dim while any commit reprices (reuses the .is-loading idiom). */
.orn-fit__side-prices.is-repricing, .orn-fit__mbar-price.is-repricing { opacity: .45; transition: opacity .18s ease; }

/* Chooser skeleton rows (reuse .orn-fit__skel + ornFitShimmer) — replaces the
   static "Loading options…" text while content-options load. */
.orn-fit__bandopts-skel { display: flex; flex-direction: column; gap: 10px; padding: 4px 2px; }
.orn-fit__bandopts-skel-row { display: flex; align-items: center; gap: 12px; }
.orn-fit__bandopts-skel-row .orn-fit__skel-bar { margin-top: 0; }
.orn-fit__bandopts-skel-row .orn-fit__skel-btn { width: 74px; height: 30px; }

/* Availability calendar dim while getPkgAvail is in flight. */
.orn-fit__cal-months.is-loading { opacity: .5; pointer-events: none; transition: opacity .18s ease; }

/* Entrance motion — kept deliberately minimal to avoid re-render jank. The stay
   section itself is NOT animated (it gets replaced on each load step), and the
   hotel list no longer fades on every swap (that read as a blink on zone switch).
   Instead a zone switch dims the list in place, then swaps results in. */
.orn-fit__hlist-region { transition: opacity .18s ease; }
.orn-fit__hlist-region.is-loading { opacity: .45; pointer-events: none; }
/* Rooms open slower + gentler, with a soft per-row stagger (was too fast/abrupt).
   The list label is child 1, so rooms are nth-child 2+ (stagger from the 2nd room). */
.orn-fit__hrooms { animation: ornFitRooms .44s cubic-bezier(.22,.61,.36,1) both; will-change: transform, opacity; }
.orn-fit__hroom { animation: ornFitRise .42s cubic-bezier(.22,.61,.36,1) both; }
.orn-fit__hroom:nth-child(3) { animation-delay: .07s; }
.orn-fit__hroom:nth-child(4) { animation-delay: .14s; }
.orn-fit__hroom:nth-child(5) { animation-delay: .21s; }
.orn-fit__hroom:nth-child(6) { animation-delay: .28s; }
.orn-fit__hroom:nth-child(n+7) { animation-delay: .34s; }
/* Gentle press feedback on interactive controls */
.orn-fit__hcard-btn, .orn-fit__hroom-btn { transition: background .14s ease, color .14s ease, border-color .14s ease, transform .08s ease; }
.orn-fit__hcard-btn:active, .orn-fit__hroom-btn:active { transform: scale(.97); }
.orn-fit__hcard { transition: border-color .14s ease, background .14s ease, box-shadow .18s ease; }
.orn-fit__hcard:not(.orn-fit__hcard--sel):hover { box-shadow: 0 6px 20px rgba(21,21,21,.06); }

@media (prefers-reduced-motion: reduce) {
  .orn-fit__hlist, .orn-fit__hstay, .orn-fit__hrooms, .orn-fit__hroom, .orn-fit__hlist-skel { animation: none; }
  .orn-fit__hlist-region { transition: none; }
  .orn-fit__hcard-btn:active, .orn-fit__hroom-btn:active { transform: none; }
}

/* ================= Journey validation (parity with orn-ui, ORN skin) ========== */
.orn-page--journey-detail {
    --orn-vld-err-t: #C90A12; --orn-vld-err-b: #F6CBC7; --orn-vld-err-bg: #FBF3F2; --orn-vld-err-i: #F20D16;
    --orn-vld-warn-t: #92400E; --orn-vld-warn-b: #F1D2A0; --orn-vld-warn-bg: #FEF8EC; --orn-vld-warn-i: #C4860A;
    --orn-vld-info-t: #1E3A8A; --orn-vld-info-b: #BFD7F2; --orn-vld-info-bg: #F4F9FE; --orn-vld-info-i: #0D74CE;
}
/* Top summary + pills */
.orn-page--journey-detail .orn-fit__vld-summary:empty { display: none; }
.orn-page--journey-detail .orn-fit__vld-summary { margin: 0 0 14px; }
.orn-fit__vld-pills { display: flex; flex-direction: column; gap: 8px; }
.orn-fit__vld-pill { display: flex; align-items: center; gap: 11px; width: 100%; text-align: left; border-radius: 10px; border: 1px solid; padding: 11px 14px; cursor: pointer; background: #fff; font: inherit; }
.orn-fit__vld-pill-ico { display: inline-flex; flex: none; }
.orn-fit__vld-pill-txt { flex: 1; min-width: 0; font: 500 13.5px/1.35 var(--fit-sans); }
.orn-fit__vld-pill-txt b { font-weight: 800; }
.orn-fit__vld-pill-view { flex: none; display: inline-flex; align-items: center; gap: 5px; font: 700 12px/1 var(--fit-sans); border: 1px solid currentColor; border-radius: 6px; padding: 6px 10px; opacity: .85; }
.orn-fit__vld-pill--error { border-color: var(--orn-vld-err-b); background: var(--orn-vld-err-bg); color: var(--orn-vld-err-t); }
.orn-fit__vld-pill--error .orn-fit__vld-pill-ico { color: var(--orn-vld-err-i); }
.orn-fit__vld-pill--warning { border-color: var(--orn-vld-warn-b); background: var(--orn-vld-warn-bg); color: var(--orn-vld-warn-t); }
.orn-fit__vld-pill--warning .orn-fit__vld-pill-ico { color: var(--orn-vld-warn-i); }
.orn-fit__vld-pill--info { border-color: var(--orn-vld-info-b); background: var(--orn-vld-info-bg); color: var(--orn-vld-info-t); }
.orn-fit__vld-pill--info .orn-fit__vld-pill-ico { color: var(--orn-vld-info-i); }
/* Banner (inline + journey/day/block) */
.orn-fit__vlds { display: flex; flex-direction: column; gap: 8px; margin: 10px 0; }
.orn-fit__vld { border: 1px solid; border-radius: 10px; overflow: hidden; }
.orn-fit__vld-row { display: flex; align-items: flex-start; gap: 10px; padding: 11px 13px; }
.orn-fit__vld-ico { flex: none; display: inline-flex; margin-top: 1px; }
.orn-fit__vld-main { flex: 1; min-width: 0; }
.orn-fit__vld-dhead { font: 700 11px/1.2 var(--fit-mono); letter-spacing: .06em; text-transform: uppercase; opacity: .8; margin-bottom: 4px; }
.orn-fit__vld-msg { font: 500 13.5px/1.45 var(--fit-sans); }
.orn-fit__vld-acc { margin-top: 5px; font: 500 12px/1.3 var(--fit-sans); opacity: .8; }
.orn-fit__vld-right { flex: none; display: flex; align-items: center; gap: 8px; }
.orn-fit__vld--error { border-color: var(--orn-vld-err-b); background: var(--orn-vld-err-bg); color: var(--orn-vld-err-t); }
.orn-fit__vld--error .orn-fit__vld-ico { color: var(--orn-vld-err-i); }
.orn-fit__vld--warning { border-color: var(--orn-vld-warn-b); background: var(--orn-vld-warn-bg); color: var(--orn-vld-warn-t); }
.orn-fit__vld--warning .orn-fit__vld-ico { color: var(--orn-vld-warn-i); }
.orn-fit__vld--info { border-color: var(--orn-vld-info-b); background: var(--orn-vld-info-bg); color: var(--orn-vld-info-t); }
.orn-fit__vld--info .orn-fit__vld-ico { color: var(--orn-vld-info-i); }
.orn-fit__vld-msg, .orn-fit__vld-dhead { color: var(--fit-ink); }
/* Buttons */
.orn-fit__vld-btn { cursor: pointer; white-space: nowrap; font: 700 12.5px/1 var(--fit-sans); color: var(--fit-ink); background: #fff; border: 1px solid var(--fit-border); border-radius: 8px; padding: 8px 13px; }
.orn-fit__vld-btn:hover { border-color: var(--fit-ink); }
.orn-fit__vld-btn--primary { background: var(--fit-red); border-color: var(--fit-red); color: #fff; }
.orn-fit__vld-btn--primary:hover { background: var(--fit-red-2); border-color: var(--fit-red-2); }
.orn-fit__vld-btn--approve { border-color: var(--fit-red); color: var(--fit-red-2); }
.orn-fit__vld-btn--sugg { border-color: var(--orn-vld-warn-b); color: var(--orn-vld-warn-t); background: #fff; }
/* Resolution expander */
.orn-fit__vld-exp { border-top: 1px solid rgba(0,0,0,.08); background: rgba(255,255,255,.55); padding: 4px 13px 10px; }
.orn-fit__vld-res { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 0; border-top: 1px solid rgba(0,0,0,.06); }
.orn-fit__vld-res:first-child { border-top: 0; }
.orn-fit__vld-res-msg { font: 500 12.5px/1.4 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__vld-res-prc { font-weight: 700; color: var(--fit-red-2); }
.orn-fit__vld-res-acts { flex: none; display: flex; gap: 8px; }
.orn-fit__vld-empty { font: 500 13.5px/1.4 var(--fit-sans); color: var(--fit-grey); padding: 12px 2px; }
/* Kept with the issues styles it was written for, though the drawer that used it is
   gone — the tour/options drawer (.orn-topt__drawer) slides in on it too. */
@keyframes ornVldSlide { from { transform: translateX(20px); opacity: .4; } to { transform: none; opacity: 1; } }
/* ---- Compact validation line, used throughout the day-by-day list. The block it
   sits on already names itself, so this only states the problem and offers Resolve,
   which opens the issues modal on it. Quiet on purpose: a full red panel per broken
   block buried the day plan. ---- */
.orn-fit__vlds--cx { display: flex; flex-direction: column; gap: 6px; margin: 6px 0 0; }
.orn-fit__vld-cx { display: flex; align-items: center; gap: 8px; padding: 6px 0 0; }
.orn-fit__vld-cx-ico { flex: none; display: inline-flex; width: 15px; height: 15px; }
.orn-fit__vld-cx-ico svg { width: 15px; height: 15px; }
.orn-fit__vld-cx-msg { flex: 1; min-width: 0; font: 500 12.5px/1.4 var(--fit-sans); }
.orn-fit__vld-cx--error .orn-fit__vld-cx-ico { color: var(--orn-vld-err-i, #D92D20); }
.orn-fit__vld-cx--error .orn-fit__vld-cx-msg { color: var(--orn-vld-err-i, #D92D20); }
.orn-fit__vld-cx--warning .orn-fit__vld-cx-ico { color: var(--orn-vld-warn-i, #B54708); }
.orn-fit__vld-cx--warning .orn-fit__vld-cx-msg { color: var(--orn-vld-warn-i, #B54708); }
.orn-fit__vld-cx--info .orn-fit__vld-cx-ico, .orn-fit__vld-cx--info .orn-fit__vld-cx-msg { color: var(--fit-grey-2, #5C5C5C); }
.orn-fit__vld-cx-btn { flex: none; cursor: pointer; background: none; border: 0; padding: 0; font: 700 12.5px/1.4 var(--fit-sans); color: currentColor; text-decoration: underline; text-underline-offset: 2px; }
.orn-fit__vld-cx-btn:hover { opacity: .75; }
.orn-fit__vld-cx-acc { flex: none; font: 600 11.5px/1.4 var(--fit-sans); color: var(--fit-grey); }
/* Meals render from day.meals[], not as activity cards, so their line lands inside
   the row's own text column. */
.orn-fit__meal-main > .orn-fit__vlds { margin: 4px 0 0; }
/* The activity card is a flex column, so the line stacks under its block. */
.orn-jd__day-blk > .orn-fit__vlds { width: 100%; margin: 0; }
/* Jump target highlight — "View" scrolls here, this says which one. */
@keyframes ornVldFlash { 0%, 100% { box-shadow: 0 0 0 0 rgba(242,13,22,0); } 15%, 70% { box-shadow: 0 0 0 3px rgba(242,13,22,.35); } }
.orn-fit__vld-flash { animation: ornVldFlash 2s ease both; border-radius: 10px; }
/* Advanced-resolutions modal */
.orn-fit__vld-pmodal-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 100000; animation: ornFitFade .2s ease both; }
.orn-fit__vld-pmodal { position: fixed; top: 50%; left: 50%; transform: translate(-50%,-50%); width: min(1080px, 94vw); height: min(84vh, 760px); background: #fff; border-radius: 18px; z-index: 100001; display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 24px 70px rgba(0,0,0,.32); animation: ornVldPop .24s cubic-bezier(.22,.61,.36,1) both; }
@keyframes ornVldPop { from { transform: translate(-50%,-48%) scale(.98); opacity: .5; } to { transform: translate(-50%,-50%) scale(1); opacity: 1; } }
.orn-fit__vld-pmodal-hd { display: flex; align-items: center; justify-content: space-between; padding: 16px 22px; border-bottom: 1px solid var(--fit-border); }
.orn-fit__vld-pmodal-ttl { font: 700 18px/1.2 var(--fit-serif); color: var(--fit-ink); }
.orn-fit__vld-pmodal-x { cursor: pointer; background: none; border: 0; font-size: 18px; color: var(--fit-grey); }
.orn-fit__vld-pmodal-x:hover { color: var(--fit-ink); }
.orn-fit__vld-pmodal-body { flex: 1; min-height: 0; display: grid; grid-template-columns: 280px 1fr; }
.orn-fit__vld-pmodal-left { border-right: 1px solid var(--fit-border); overflow-y: auto; padding: 14px; background: var(--fit-surface); }
.orn-fit__vld-pmodal-right { overflow-y: auto; padding: 18px 22px; }
.orn-fit__vld-pcat { margin-bottom: 14px; }
.orn-fit__vld-pcat-lbl { font: 700 10px/1 var(--fit-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--fit-grey); margin-bottom: 8px; display: flex; gap: 6px; }
.orn-fit__vld-pcat-lbl span { color: var(--fit-red-2); }
.orn-fit__vld-pi { display: block; width: 100%; text-align: left; cursor: pointer; background: #fff; border: 1px solid var(--fit-border); border-radius: 10px; padding: 10px 12px; margin-bottom: 8px; font: inherit; }
.orn-fit__vld-pi:hover { border-color: var(--fit-ink); }
.orn-fit__vld-pi.is-on { background: var(--fit-ink); border-color: var(--fit-ink); }
.orn-fit__vld-pi.is-on .orn-fit__vld-pi-day { color: #B9B9B9; }
.orn-fit__vld-pi.is-on .orn-fit__vld-pi-msg { color: #fff; }
.orn-fit__vld-pi-day { display: block; font: 700 10px/1.2 var(--fit-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--fit-grey); margin-bottom: 4px; }
.orn-fit__vld-pi-msg { display: block; font: 500 12.5px/1.4 var(--fit-sans); color: var(--fit-ink); }
/* What the issue is ON — "Dinner Coupon at local Indian Restaurant" rather than just
   "MEAL VOUCHER", which is what tells two same-type issues on a day apart. Clipped to
   one line so a long content title cannot push the message out of the rail. */
.orn-fit__vld-pi-blk { display: block; font: 600 12px/1.35 var(--fit-sans); color: var(--fit-ink); margin-bottom: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.orn-fit__vld-pi.is-on .orn-fit__vld-pi-blk { color: #fff; }
.orn-fit__vld-pissue { margin-bottom: 18px; }
.orn-fit__vld-pissue-hd { font: 700 11px/1.2 var(--fit-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--fit-grey); margin-bottom: 8px; }
/* Name of the thing at fault on the left, what you can do about it on the right. */
.orn-fit__vld-pissue-blk { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.orn-fit__vld-pissue-nm { min-width: 0; font: 700 15px/1.35 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__vld-pissue-typ { display: inline-block; margin-left: 6px; font: 700 9px/1 var(--fit-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fit-grey); background: var(--fit-cream, #f4f4f4); border-radius: 999px; padding: 4px 9px; vertical-align: middle; }
.orn-fit__vld-pissue-acts { flex: none; display: flex; gap: 8px; }
.orn-fit__vld-pissue-acts--below { justify-content: flex-end; margin-top: 12px; }
.orn-fit__vld-suggs { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.orn-fit__vld-sugg { border: 1px solid var(--fit-border); border-radius: 12px; padding: 14px; display: flex; flex-direction: column; gap: 7px; }
.orn-fit__vld-sugg-nm { font: 700 15px/1.25 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__vld-sugg-msg { font: 400 12.5px/1.4 var(--fit-sans); color: var(--fit-grey-2); flex: 1; }
.orn-fit__vld-sugg-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 4px; }
.orn-fit__vld-sugg-prc { font: 800 14px/1 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__vld-pload, .orn-fit__vld-pempty { font: 500 13px/1.4 var(--fit-sans); color: var(--fit-grey); padding: 14px 2px; }
@media (max-width: 720px) {
  /* Near-fullscreen sheet on phones instead of a floating 1080px box.
     animation:none is REQUIRED — ornVldPop's keyframes keep a
     transform:translate(-50%,-50%) that otherwise overrides transform:none
     (animations beat normal declarations) and mis-positions the sheet. */
  .orn-fit__vld-pmodal { top: 0; left: 0; right: 0; bottom: 0; transform: none; animation: none; width: 100vw; height: 100vh; height: 100dvh; max-height: none; border-radius: 0; }
  .orn-fit__vld-pmodal-hd { padding: 14px 16px; }
  .orn-fit__vld-pmodal-ttl { font-size: 17px; }
  .orn-fit__vld-pmodal-body { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
  .orn-fit__vld-pmodal-left { border-right: 0; border-bottom: 1px solid var(--fit-border); max-height: 30vh; padding: 12px; }
  .orn-fit__vld-pmodal-right { padding: 16px; }
  .orn-fit__vld-pill { flex-wrap: wrap; }
}
@media (prefers-reduced-motion: reduce) {
  .orn-fit__vld-pmodal, .orn-fit__vld-pmodal-backdrop { animation: none; }
}

/* Validation — "pending review" sparkle banner (advanced resolutions) */
.orn-fit__vld-review { display: flex; align-items: center; gap: 14px; width: 100%; text-align: left; cursor: pointer; font: inherit; background: var(--orn-vld-warn-bg); border: 1px solid var(--orn-vld-warn-b); border-radius: 12px; padding: 14px 16px; margin-bottom: 10px; }
.orn-fit__vld-review-ico { flex: none; width: 34px; height: 34px; border-radius: 50%; background: #fff; border: 1px solid var(--orn-vld-warn-b); display: inline-flex; align-items: center; justify-content: center; color: var(--orn-vld-warn-i); }
.orn-fit__vld-review-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.orn-fit__vld-review-txt b { font: 700 14.5px/1.3 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__vld-review-txt span { font: 400 13px/1.35 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__vld-review-cta { flex: none; background: var(--fit-ink); color: #fff; border-radius: 8px; padding: 10px 18px; font: 700 13px/1 var(--fit-sans); }
.orn-fit__vld-review:hover .orn-fit__vld-review-cta { background: var(--fit-ink-2); }
/* Modal subtitle */
.orn-fit__vld-pmodal-sub { margin-top: 3px; font: 400 12.5px/1.3 var(--fit-sans); color: var(--fit-grey); }
/* Current selection preview */
.orn-fit__vld-cursel { display: flex; align-items: center; gap: 11px; padding: 11px 12px; border: 1px solid var(--fit-border); border-radius: 12px; margin-bottom: 16px; }
.orn-fit__vld-cursel-img { flex: none; width: 40px; height: 40px; border-radius: 8px; background: var(--fit-surface) center/cover no-repeat; }
.orn-fit__vld-cursel-nm { flex: 1; min-width: 0; font: 700 14px/1.3 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__vld-cursel-pill { flex: none; font: 700 11px/1 var(--fit-sans); color: #1F8A5B; background: #ECF7F1; border: 1px solid #CDE9DC; border-radius: 999px; padding: 6px 11px; }
/* Resolution rows in the modal's right pane — the non-advanced issues, which carry
   their resolutions inline on resA rather than behind get-issue-resolutions. */
.orn-fit__vld-pres { border: 1px solid var(--fit-border, #E7E7E7); border-radius: 12px; padding: 2px 14px; background: #fff; }
.orn-fit__vld-pres .orn-fit__vld-res { padding: 12px 0; }
.orn-fit__vld-suggs-lbl { display: flex; align-items: center; gap: 7px; font: 700 10px/1 var(--fit-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--fit-grey); margin: 0 0 12px; }
.orn-fit__vld-suggs-lbl svg { width: 15px; height: 15px; color: var(--orn-vld-warn-i); }
/* Rich suggestion cards */
.orn-fit__vld-sugg { border: 1px solid var(--fit-border); border-radius: 14px; overflow: hidden; display: flex; flex-direction: column; }
.orn-fit__vld-sugg-img { height: 120px; background: var(--fit-surface) center/cover no-repeat; }
.orn-fit__vld-sugg-in { padding: 13px 14px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.orn-fit__vld-sugg-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.orn-fit__vld-sugg-nm { font: 700 15px/1.25 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__vld-sugg-stars { flex: none; font-size: 12px; white-space: nowrap; }
.orn-fit__vld-star { color: var(--fit-red); }
.orn-fit__vld-star.is-off { color: #D8D8D8; }
.orn-fit__vld-sugg-loc { font: 400 12px/1.35 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__vld-sugg-meal, .orn-fit__vld-sugg-room { font: 500 12px/1.35 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__vld-sugg-meal { color: #1F8A5B; }
.orn-fit__vld-sugg-room { font: 700 11px/1 var(--fit-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--fit-red-2); }
/* Stacked so the (large) price always gets the full card width and stays on one
   line; the Select & Update button sits full-width beneath it. */
.orn-fit__vld-sugg-foot { display: flex; flex-direction: column; align-items: stretch; gap: 8px; margin-top: auto; padding-top: 8px; }
.orn-fit__vld-sugg-prc { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 6px; font: 800 16px/1.1 var(--fit-sans); color: var(--fit-ink); white-space: nowrap; }
.orn-fit__vld-sugg-pp { font: 500 11px/1 var(--fit-sans); color: var(--fit-grey); }

/* Flight suggestion card (FlightCards) — airline header, one row per direction
   (ONWARD / RETURN), price + Select & Update footer. Mirrors the advisor
   journey's PendingActionsModal FlightCard. */
.orn-fit__vld-suggs--flt { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.orn-fit__vld-fsugg { display: flex; flex-direction: column; background: #fff; border: 1px solid #e5e5e5; border-radius: 11px; overflow: hidden; }
.orn-fit__vld-fsugg-hd { display: flex; align-items: center; gap: 8px; padding: 14px; background: #fafafa; border-bottom: 1px solid #f0f0f0; }
.orn-fit__vld-fsugg-logo { width: 32px; height: 32px; }
.orn-fit__vld-fsugg-air { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.orn-fit__vld-fsugg-nm { font: 600 15px/1.2 var(--fit-sans); color: #171717; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.orn-fit__vld-fsugg-no { font: 500 12px/1.2 var(--fit-sans); color: #737373; }
.orn-fit__vld-fsugg-cbn { flex: none; font: 500 10px/1.2 var(--fit-sans); color: #535353; background: #fafafa; border: 1px solid #d4d4d4; border-radius: 999px; padding: 4px 8px; }
.orn-fit__vld-fsugg-sec + .orn-fit__vld-fsugg-sec { border-top: 1px dashed #e5e5e5; }
.orn-fit__vld-fsugg-sechd { display: flex; align-items: center; justify-content: space-between; padding: 10px 16px 2px; }
.orn-fit__vld-fsugg-dir { font: 600 10px/1.4 var(--fit-sans); letter-spacing: .08em; text-transform: uppercase; border-radius: 999px; padding: 2px 8px; }
.orn-fit__vld-fsugg-dir--on { background: #FFF7EB; color: #B45309; border: 1px solid #FDE68A; }
.orn-fit__vld-fsugg-dir--ret { background: #EEF2FF; color: #4F46E5; border: 1px solid #C7D2FE; }
.orn-fit__vld-fsugg-date { font: 400 12px/1.3 var(--fit-sans); color: #737373; }
.orn-fit__vld-fsugg-row { display: flex; align-items: center; gap: 16px; padding: 12px 16px; }
.orn-fit__vld-fsugg-pt { flex: none; display: flex; flex-direction: column; white-space: nowrap; }
.orn-fit__vld-fsugg-pt--r { align-items: flex-end; text-align: right; }
.orn-fit__vld-fsugg-time { font: 600 16px/26px var(--fit-sans); letter-spacing: -.5px; color: #111827; }
.orn-fit__vld-fsugg-ap { font: 500 13px/19.5px var(--fit-sans); color: #374151; }
.orn-fit__vld-fsugg-term { font: 400 12px/16.5px var(--fit-sans); color: #9ca3af; }
.orn-fit__vld-fsugg-mid { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.orn-fit__vld-fsugg-dur, .orn-fit__vld-fsugg-stops { font: 400 12px/16px var(--fit-sans); color: #737373; white-space: nowrap; min-height: 16px; }
.orn-fit__vld-fsugg-line { width: 100%; display: flex; align-items: center; }
.orn-fit__vld-fsugg-line span { flex: 1; height: 1px; background: #d1d5db; }
.orn-fit__vld-fsugg-line i { flex: none; width: 22px; height: 22px; display: flex; align-items: center; justify-content: center; color: #737373; }
.orn-fit__vld-fsugg-pills { display: flex; flex-wrap: wrap; gap: 6px; padding: 0 16px 10px; }
.orn-fit__vld-fsugg-pill { font: 500 11px/1.3 var(--fit-sans); color: #727272; background: #fff; border: 1px solid #e5e5e5; border-radius: 999px; padding: 3px 9px; white-space: nowrap; }
.orn-fit__vld-fsugg-pill b { font-weight: 600; color: #262626; }
.orn-fit__vld-fsugg-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: auto; padding: 10px 15px; border-top: 1px dashed #e5e5e5; }
.orn-fit__vld-fsugg-prc { font: 700 15px/1.3 var(--fit-sans); color: #171717; white-space: nowrap; }
.orn-fit__vld-fsugg-pp { font: 400 11px/14px var(--fit-sans); color: #60646c; }
.orn-fit__vld-btn.orn-fit__vld-fsugg-btn { flex: none; height: 30px; padding: 0 10px; border-radius: 6px; border: 1px solid #262626; background: #f5f5f5; color: #262626; font: 500 11.5px/1 var(--fit-sans); white-space: nowrap; }
.orn-fit__vld-btn.orn-fit__vld-fsugg-btn:hover { background: #ebebeb; }
.orn-fit__vld-cursel--flt .orn-fit__flt-logo { width: 42px; height: 42px; }
.orn-fit__vld-cursel-sub { display: block; margin-top: 4px; font: 500 13px/1.2 var(--fit-sans); color: #a3a3a3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ================= Optimize hotels (StaysOptimizer) ==============================
   The journey-level hotel changes on the Hotels tab: an entry bar, then a dialog
   built on the issues modal (.orn-fit__vld-pmodal + its rail and suggestion cards).
   Only what the dialog adds is styled here: the inputs bar, preset cards, rail
   dots/chips, the staged card and the sticky footer. */
.orn-fit__vld-sugg-sub { font: 500 12px/1.3 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__vld-sugg.is-selected { border: 2px solid var(--fit-red); box-shadow: 0 0 0 3px rgba(198,40,40,.12); }
.orn-fit__sopt-btn--on { background: #fff; border-color: var(--fit-red); color: var(--fit-red-2); }
/* the stay's current hotel among its options: badged, tinted and dashed until picked */
.orn-fit__vld-sugg-img { position: relative; }
.orn-fit__vld-sugg-badge { position: absolute; top: 10px; left: 10px; display: inline-flex; align-items: center; gap: 5px; font: 700 11px/1 var(--fit-sans); color: #fff; background: #1F8A5B; border-radius: 999px; padding: 6px 10px; }
.orn-fit__vld-sugg-in > div > .orn-fit__vld-sugg-badge { position: static; }
.orn-fit__vld-sugg.is-current { background: #F3F9F5; border: 2px dashed #6FB28C; }
.orn-fit__vld-sugg.is-current.is-selected { border: 2px solid var(--fit-red); }
.orn-fit__sopt-btn--keep { background: #fff; border-color: #1F8A5B; color: #1F8A5B; }
.orn-fit__sopt-btn--keep:hover { border-color: #17704A; color: #17704A; }

.orn-fit__sopt-bar { display: flex; align-items: center; gap: 14px 18px; flex-wrap: wrap; background: #fff; border: 1px solid var(--fit-border); border-radius: 14px; padding: 14px 16px; margin: 18px 0 0; }
/* the two actions stacked, as wide as the wider of them */
.orn-fit__sopt-bar-acts { flex: none; display: flex; flex-direction: column; align-items: stretch; gap: 8px; }
.orn-fit__sopt-bar-acts .orn-fit__vld-btn { padding: 10px 16px; font-size: 13px; text-align: center; }
.orn-fit__sopt-bar-ico { flex: none; display: flex; color: var(--orn-vld-warn-i); }
.orn-fit__sopt-bar-txt { flex: 1 1 260px; min-width: 0; }
@media (max-width: 720px) { .orn-fit__sopt-bar-acts { width: 100%; } }
.orn-fit__sopt-bar-lbl { font: 700 10px/1.2 var(--fit-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--fit-grey); margin-bottom: 4px; }
.orn-fit__sopt-bar-sub { font: 500 13px/1.4 var(--fit-sans); color: var(--fit-ink); }

.orn-fit__sopt.orn-fit__vld-pmodal { width: min(1240px, 96vw); height: min(90vh, 900px); }
.orn-fit__sopt-hd-r { display: flex; align-items: center; gap: 14px; }
.orn-fit__sopt-tabs { display: flex; background: var(--fit-surface); border-radius: 999px; padding: 3px; }
.orn-fit__sopt-tab { cursor: pointer; border: 0; background: none; border-radius: 999px; padding: 8px 14px; font: 600 12.5px/1 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__sopt-tab.is-on { background: var(--fit-ink); color: #fff; }

.orn-fit__sopt-inputs { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px; padding: 12px 22px; background: var(--fit-surface); border-bottom: 1px solid var(--fit-border); }
.orn-fit__sopt-lbl { font: 700 10px/1 var(--fit-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--fit-grey); }
.orn-fit__sopt-pills { display: flex; gap: 6px; flex-wrap: wrap; }
.orn-fit__sopt-pill { cursor: pointer; font: 600 12.5px/1 var(--fit-sans); color: var(--fit-ink); background: #fff; border: 1px solid var(--fit-border); border-radius: 999px; padding: 9px 13px; }
.orn-fit__sopt-pill:hover { border-color: var(--fit-ink); }
.orn-fit__sopt-pill.is-on { background: var(--fit-ink); border-color: var(--fit-ink); color: #fff; }
.orn-fit__sopt-budget { display: inline-flex; align-items: center; gap: 8px; font: 500 12.5px/1 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__sopt-budget input { width: 110px; font: 700 15px/1 var(--fit-sans); color: var(--fit-ink); background: #fff; border: 1px solid var(--fit-border); border-radius: 8px; padding: 9px 10px; }
.orn-fit__sopt-budget input:focus { outline: 2px solid var(--fit-ink); outline-offset: 1px; }
.orn-fit__sopt-hint { font: 500 12.5px/1.3 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__sopt-select { min-width: 150px; font: 600 13.5px/1 var(--fit-sans); color: var(--fit-ink); background: #fff; border: 1px solid var(--fit-border); border-radius: 8px; padding: 9px 10px; cursor: pointer; }
.orn-fit__sopt-select:focus { outline: 2px solid var(--fit-ink); outline-offset: 1px; }
.orn-fit__sopt-fx { font: 500 11.5px/1.3 var(--fit-sans); color: var(--fit-grey); }
.orn-fit__sopt-hint strong { color: var(--fit-ink); }
.orn-fit__sopt-find { margin-left: auto; border-color: var(--fit-red); color: var(--fit-red-2); }

.orn-fit__sopt-main, .orn-fit__sopt-results { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.orn-fit__sopt-results.is-stale .orn-fit__sopt-presets, .orn-fit__sopt-results.is-stale .orn-fit__vld-pmodal-body { opacity: .5; }
.orn-fit__sopt-stale { margin: 12px 22px 0; padding: 10px 14px; border-radius: 10px; background: var(--orn-vld-warn-bg); border: 1px solid var(--orn-vld-warn-b); color: var(--orn-vld-warn-t); font: 500 13px/1.4 var(--fit-sans); }
.orn-fit__sopt-empty { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 24px; text-align: center; font: 500 14px/1.4 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__sopt-muted { color: var(--fit-grey); font-weight: 400; }
.orn-fit__sopt-skel { height: 64px; border-radius: 10px; background: var(--fit-surface); margin-bottom: 8px; }
.orn-fit__sopt-skel--card { height: 300px; margin: 0; }

.orn-fit__sopt-presets { display: flex; gap: 10px; overflow-x: auto; padding: 14px 22px; border-bottom: 1px solid var(--fit-border); }
.orn-fit__sopt-preset { flex: 0 0 auto; min-width: 220px; cursor: pointer; text-align: left; display: flex; flex-direction: column; gap: 5px; background: #fff; border: 1px solid var(--fit-border); border-radius: 12px; padding: 11px 14px; font: inherit; }
.orn-fit__sopt-preset:hover { border-color: var(--fit-ink); }
.orn-fit__sopt-preset.is-on { border: 2px solid var(--fit-red); box-shadow: 0 0 0 3px rgba(198,40,40,.12); }
.orn-fit__sopt-preset:disabled { cursor: not-allowed; opacity: .55; border-style: dashed; }
.orn-fit__sopt-preset-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.orn-fit__sopt-preset-nm { font: 700 13px/1.2 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__sopt-preset-avg { font: 800 17px/1.1 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__sopt-preset-avg span { font: 500 11px/1 var(--fit-sans); color: var(--fit-grey); }
.orn-fit__sopt-preset-sub { font: 500 11.5px/1.3 var(--fit-sans); color: var(--fit-grey-2); }
.orn-fit__sopt-badge { flex: none; font: 700 10.5px/1 var(--fit-sans); border-radius: 999px; padding: 4px 8px; background: #EEF0F7; color: #3B4A7A; }
.orn-fit__sopt-badge.is-ok { background: #ECF7F1; color: #1F8A5B; }
.orn-fit__sopt-badge.is-warn { background: #FBF0E2; color: #8A5300; }

.orn-fit__sopt .orn-fit__vld-pmodal-body { grid-template-columns: 300px 1fr; }
.orn-fit__sopt-pi { display: flex; flex-direction: column; gap: 4px; }
.orn-fit__sopt-pi .orn-fit__vld-pi-day { display: flex; align-items: center; gap: 7px; margin-bottom: 0; }
.orn-fit__sopt-pi .orn-fit__vld-pi-blk { white-space: normal; margin-bottom: 0; }
.orn-fit__sopt-pi.is-off .orn-fit__vld-pi-blk { color: var(--fit-grey); font-weight: 500; }
.orn-fit__sopt-pi.is-fail { border-color: var(--fit-red); }
.orn-fit__sopt-dot { flex: none; width: 9px; height: 9px; border-radius: 50%; box-sizing: border-box; }
.orn-fit__sopt-dot.is-chg { background: var(--fit-red); }
.orn-fit__sopt-dot.is-keep { border: 2px solid var(--fit-grey); }
.orn-fit__sopt-dot.is-none { background: #D0D0D0; }
.orn-fit__vld-pi.is-on .orn-fit__sopt-dot.is-keep { border-color: #fff; }
.orn-fit__sopt-chip { align-self: flex-start; font: 700 10.5px/1 var(--fit-sans); border-radius: 999px; padding: 4px 8px; background: var(--fit-surface); color: var(--fit-grey-2); }
.orn-fit__sopt-chip.is-down { background: #ECF7F1; color: #1F8A5B; }
.orn-fit__sopt-chip.is-up { background: #FBF0E2; color: #8A5300; }
.orn-fit__sopt-opthd { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
.orn-fit__sopt-opthd .orn-fit__vld-suggs-lbl { margin: 0; }
/* the hotel tag tabs and card tags, as on the change hotel list */
.orn-fit__sopt .orn-fit__htg-bar { margin: 0 0 14px; }
.orn-fit__sopt .orn-fit__vld-sugg .orn-fit__hcard-tags { margin: 2px 0 0; }
.orn-fit__sopt-sort { display: flex; align-items: center; gap: 6px; font: 500 12px/1 var(--fit-sans); color: var(--fit-grey); }
.orn-fit__sopt-sort .orn-fit__sopt-pill { padding: 7px 10px; font-size: 11.5px; }
.orn-fit__sopt-fail { margin-bottom: 12px; padding: 10px 14px; border-radius: 10px; background: #FDECEC; border: 1px solid #F3C1C1; color: #9B1C1C; font: 500 13px/1.4 var(--fit-sans); }

.orn-fit__sopt-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px 18px; flex-wrap: wrap; padding: 12px 22px; border-top: 1px solid var(--fit-border); background: #fff; }
.orn-fit__sopt-sum { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 14px; font: 500 13px/1.4 var(--fit-sans); color: var(--fit-ink); }
.orn-fit__sopt-sums { display: flex; flex-direction: column; gap: 6px; }
.orn-fit__sopt-sum--fx { font-size: 12.5px; color: var(--fit-grey-2); }
.orn-fit__sopt-tag { font: 700 10px/1 var(--fit-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fit-ink); background: var(--fit-surface); border-radius: 6px; padding: 4px 7px; }
.orn-fit__sopt-acts { display: flex; gap: 8px; }
.orn-fit__sopt-acts .orn-fit__vld-btn { padding: 11px 18px; font-size: 13.5px; }
.orn-fit__sopt-acts .orn-fit__vld-btn:disabled { cursor: not-allowed; opacity: .5; }

@media (max-width: 720px) {
  .orn-fit__sopt .orn-fit__vld-pmodal-hd { flex-wrap: wrap; gap: 10px; }
  .orn-fit__sopt-inputs { padding: 12px 16px; }
  .orn-fit__sopt-find { margin-left: 0; width: 100%; }
  .orn-fit__sopt-presets { padding: 12px 16px; }
  .orn-fit__sopt-preset { min-width: 180px; }
  .orn-fit__sopt .orn-fit__vld-pmodal-body { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
  .orn-fit__sopt .orn-fit__vld-pmodal-left { display: flex; gap: 8px; overflow-x: auto; max-height: none; }
  .orn-fit__sopt .orn-fit__vld-pcat-lbl { display: none; }
  .orn-fit__sopt-pi { flex: 0 0 auto; width: auto; max-width: 230px; margin-bottom: 0; }
  .orn-fit__sopt-foot { padding: 12px 16px; }
  .orn-fit__sopt-acts { width: 100%; }
  .orn-fit__sopt-acts .orn-fit__vld-btn { flex: 1; }
}

/* ================= Content-options inline chooser base (.orn-sso) ==============
   Moved here 2026-07-28 from the standalone ornholidays-content-options.css (which
   was journey-only after the modal/slider retirement). Container-agnostic base for
   the day-by-day + visa/insurance inline choosers' variant toggles + time slots;
   the FIT skin (colours/spacing) is layered on via the `.orn-fit__bandopts …`
   overrides above, which rely on this base for display:flex etc. */
.orn-sso, .orn-sso *, .orn-sso *::before, .orn-sso *::after { box-sizing: border-box; }
.orn-sso { font-family: var(--orn-font-body, 'Inter', system-ui, -apple-system, sans-serif); color: var(--orn-ink, #14233b); font-size: 14px; line-height: 1.55; }
.orn-sso button, .orn-sso input, .orn-sso select, .orn-sso textarea, .orn-sso a { font-family: inherit; }
.orn-sso .orn-sso__variants { background: var(--orn-cream, #f4f4f4); border: 1px solid var(--orn-cream-3, #e8e8e8); border-radius: 14px; padding: 16px 18px; margin: 0 0 18px; }
.orn-sso .orn-sso__grp { margin: 0 0 14px; }
.orn-sso .orn-sso__grp:last-child { margin-bottom: 0; }
.orn-sso .orn-sso__grp-lbl { font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; font-weight: 700; color: var(--orn-ink-2, #3a4654); margin: 0 0 8px; }
.orn-sso .orn-sso__tags, .orn-sso .orn-sso__slot-row { display: flex; flex-wrap: wrap; gap: 8px; }
.orn-sso .orn-sso__tag, .orn-sso .orn-sso__slot { border: 1px solid var(--orn-cream-3, #d9d9d9); background: #fff; color: var(--orn-ink, #14233b); border-radius: 999px; padding: 8px 16px; font-size: 13.5px; font-weight: 600; line-height: 1.2; height: auto; width: auto; cursor: pointer; transition: border-color .12s, background .12s, color .12s; }
.orn-sso .orn-sso__tag:hover, .orn-sso .orn-sso__slot:hover:not([disabled]) { border-color: var(--orn-ink-2, #3a4654); }
.orn-sso .orn-sso__tag.is-on, .orn-sso .orn-sso__slot.is-on { background: var(--orn-text, #14233b); color: #fff; border-color: var(--orn-text, #14233b); }
.orn-sso .orn-sso__slot { border-radius: 10px; }
.orn-sso .orn-sso__slot[disabled] { opacity: .45; cursor: not-allowed; }
.orn-sso .orn-sso__slots { margin: 18px 0 0; }
.orn-sso .orn-sso__slots-lbl { font-size: 13px; font-weight: 700; color: var(--orn-ink, #14233b); margin: 0 0 8px; }

/* ============================================================
   MOBILE — sticky bottom bar + full-screen 3-step booking sheet,
   + responsive overrides for the journey page (≤900/640/560/480).
   Modelled on the seatpage bottom-sheet pattern (~L2525).
   ============================================================ */
.orn-fit__mbar, .orn-fit__msheet, .orn-fit__msheet-backdrop { display: none; }
body.orn-fit-noscroll { overflow: hidden; }

@media (max-width: 900px) {
  /* The desktop price sidebar is replaced by the sticky bottom bar. */
  /* Hide the desktop price SIDEBAR only (its mount) — NOT the .orn-fit__side the
     mobile summary sheet reuses for its breakdown. */
  .orn-page--journey-detail #ornJourneySummaryMount { display: none; }
  .orn-page--journey-detail .orn-jd__body { padding-bottom: calc(132px + env(safe-area-inset-bottom, 0px)); }

  /* Two-row sticky bar: info (tap to expand) + full-width CTA (seatpage parity). */
  .orn-fit__mbar { display: flex; flex-direction: column; align-items: stretch; gap: 9px; position: fixed; left: 0; right: 0; bottom: 0; z-index: 45; background: #fff; border-top: 1px solid var(--fit-border, #E7E7E7); box-shadow: 0 -6px 24px rgba(21,21,21,.12); padding: 11px 16px calc(11px + env(safe-area-inset-bottom, 0px)); }
  .orn-fit__mbar-info { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; min-width: 0; width: 100%; background: none; border: 0; padding: 0; text-align: left; cursor: pointer; }
  .orn-fit__mbar-lbl { font: 700 9.5px/1 var(--fit-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--fit-grey); }
  .orn-fit__mbar-price { font: 800 22px/1.05 var(--fit-sans); color: var(--fit-ink); }
  .orn-fit__mbar-price--ph { font: 700 15px/1.2 var(--fit-sans); }  /* pre-priced placeholder — smaller so it never wraps the bar */
  /* Rewards redeemed: gross struck, net payable is the headline (matches the summary rail). */
  .orn-fit__mbar-gross { font: 500 14px/1 var(--fit-sans); color: var(--fit-grey); text-decoration: line-through; text-decoration-thickness: 1.5px; }
  .orn-fit__mbar-net { font: inherit; color: var(--fit-ink); }
  .orn-fit__mbar-i { color: var(--fit-grey); font-size: 15px; }
  .orn-fit__mbar-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; }
  .orn-fit__mbar-top .orn-fit__mbar-info { width: auto; flex: 1 1 auto; min-width: 0; }
  .orn-fit__mbar-edit { flex: none; display: inline-flex; align-items: center; min-height: 40px; border: 0; background: none; color: var(--fit-red-2, #C90A12); font: 700 13px/1 var(--fit-sans); cursor: pointer; padding: 6px 4px; text-decoration: underline; }
  .orn-fit__mbar-cta { width: 100%; border: 0; background: var(--fit-red, #F20D16); color: #fff; border-radius: 12px; padding: 15px; font: 700 15px/1 var(--fit-sans); cursor: pointer; text-align: center; }
  .orn-fit__mbar-cta:active { transform: scale(.99); }
  .orn-fit__mbar-cta.is-loading, .orn-fit__mbar-cta:disabled { opacity: .92; cursor: progress; }

  .orn-fit__msheet-backdrop { display: block; position: fixed; inset: 0; z-index: 49; background: rgba(0,0,0,.45); opacity: 0; pointer-events: none; transition: opacity .22s ease; }
  .orn-fit__msheet-backdrop.is-open { opacity: 1; pointer-events: auto; }
  .orn-fit__msheet { display: flex; flex-direction: column; position: fixed; left: 0; right: 0; bottom: 0; z-index: 50; max-height: 92vh; background: var(--fit-surface, #FAFAFA); border-radius: 20px 20px 0 0; box-shadow: 0 -10px 40px rgba(0,0,0,.25); transform: translateY(100%); transition: transform .28s cubic-bezier(.22,.61,.36,1); }
  .orn-fit__msheet.is-open { transform: none; }
  /* Config (Travellers + Dates) = FULL-SCREEN (FD-package pattern); header pins
     top, body scrolls, footer pins bottom. Summary keeps the 92vh bottom sheet. */
  .orn-fit__msheet--full { top: 0; height: 100%; max-height: none; border-radius: 0; }
  .orn-fit__msheet--full .orn-fit__msheet-inner { max-height: none; height: 100%; }
  .orn-fit__msheet--full .orn-fit__msheet-head { border-radius: 0; }
  .orn-fit__msheet-inner { display: flex; flex-direction: column; min-height: 0; max-height: 92vh; }
  .orn-fit__msheet-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 14px; border-bottom: 1px solid var(--fit-border); background: #fff; border-radius: 20px 20px 0 0; }
  .orn-fit__msheet-x { flex: none; display: inline-flex; align-items: center; justify-content: center; min-width: 40px; min-height: 40px; border: 0; background: none; font-size: 26px; line-height: 1; color: var(--fit-grey); cursor: pointer; padding: 0 4px; }
  .orn-fit__msheet-body { flex: 1 1 auto; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 16px 16px 20px; }
  .orn-fit__msheet-body .orn-fit__side { position: static; top: auto; }
  .orn-fit__msheet-foot { display: flex; flex-direction: column; align-items: stretch; gap: 8px; padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--fit-border); background: #fff; }
  /* Full-screen wizard stepnav header (FD-package parity, FIT theme). */
  .orn-fit__mwiz-head { display: flex; align-items: center; gap: 12px; }
  .orn-fit__mwiz-back { flex: none; width: 34px; height: 34px; border-radius: 50%; border: 0; background: var(--fit-surface, #F1F1F1); color: var(--fit-ink); font-size: 19px; line-height: 1; cursor: pointer; }
  .orn-fit__mwiz-steps { display: flex; align-items: center; gap: 8px; flex: 1 1 auto; overflow-x: auto; scrollbar-width: none; }
  .orn-fit__mwiz-steps::-webkit-scrollbar { display: none; }
  .orn-fit__mwiz-step { display: inline-flex; align-items: center; gap: 7px; flex: none; color: var(--fit-grey); font: 600 12.5px/1 var(--fit-sans); }
  .orn-fit__mwiz-dot { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: #DCDCDC; color: #fff; font: 700 11px/1 var(--fit-sans); }
  .orn-fit__mwiz-step.is-current { color: var(--fit-ink); font-weight: 700; }
  .orn-fit__mwiz-step.is-current .orn-fit__mwiz-dot { background: var(--fit-red, #F20D16); }
  .orn-fit__mwiz-step.is-done { color: var(--fit-ink); }
  .orn-fit__mwiz-step.is-done .orn-fit__mwiz-dot { background: var(--fit-ink); }
  .orn-fit__mwiz-sep { flex: 1 1 18px; min-width: 14px; height: 1px; background: var(--fit-border); }
  .orn-fit__mwiz-cta { width: 100%; border: 0; background: var(--color-primary, var(--fit-red, #F20D16)); color: #fff; border-radius: 12px; padding: 15px; font: 700 15px/1 var(--fit-sans); cursor: pointer; }
  .orn-fit__mwiz-cta.is-off { background: var(--fit-disabled); color: var(--fit-disabled-ink); cursor: not-allowed; }
  .orn-fit__mwiz-cta.is-loading, .orn-fit__mwiz-cta:disabled { opacity: .95; cursor: progress; }
  /* Dark post-pricing summary sheet (Image parity). */
  .orn-fit__msheet--dark, .orn-fit__msheet--dark .orn-fit__msheet-inner { background: #151515; }
  .orn-fit__msheet-grip { width: 40px; height: 4px; border-radius: 999px; background: rgba(255,255,255,.3); margin: 10px auto 2px; }
  .orn-fit__msheet-x--dark { position: absolute; top: 10px; right: 12px; color: #9A9A9A; }
  /* Dark theme for the FULL price breakdown (every side-* element re-coloured so
     nothing renders dark-on-dark / on a stray light box). */
  .orn-fit__msheet-dark { color: #F5F5F5; }
  .orn-fit__msheet-dark .orn-fit__side { background: none; border: 0; padding: 0; }
  .orn-fit__msheet-dark .orn-fit__side-title { color: #fff; }
  .orn-fit__msheet-dark .orn-fit__side-eyebrow, .orn-fit__msheet-dark .orn-fit__side-total-lbl, .orn-fit__msheet-dark .orn-fit__side-group { color: #9A9A9A; }
  .orn-fit__msheet-dark .orn-fit__side-rooms { background: #232323; border-color: rgba(255,255,255,.12); }
  .orn-fit__msheet-dark .orn-fit__side-rooms-txt { color: #F0F0F0; }
  .orn-fit__msheet-dark .orn-fit__side-edit { color: var(--fit-blush); }
  .orn-fit__msheet-dark .orn-fit__side-daterow span:first-child { color: #9A9A9A; }
  .orn-fit__msheet-dark .orn-fit__side-daterow span:last-child { color: #fff; }
  .orn-fit__msheet-dark .orn-fit__side-prices, .orn-fit__msheet-dark .orn-fit__side-sched { border-top-color: rgba(255,255,255,.14); }
  .orn-fit__msheet-dark .orn-fit__side-li { color: #C9C9C9; }
  .orn-fit__msheet-dark .orn-fit__side-group span:last-child { color: #fff; }
  .orn-fit__msheet-dark .orn-fit__side-total { border-top-color: rgba(255,255,255,.14); }
  .orn-fit__msheet-dark .orn-fit__side-total-val { color: var(--fit-red, #F20D16); }
  .orn-fit__msheet-dark .orn-fit__side-tcsinf > summary { color: var(--fit-blush); }
  .orn-fit__msheet-dark .orn-fit__side-tcsinf > div { color: #9A9A9A; }
  .orn-fit__msheet-dark .orn-fit__side-lead { background: #232323; border-color: #333; color: #fff; }
  .orn-fit__msheet-foot--dark { background: #151515; border-top-color: rgba(255,255,255,.1); }
  .orn-fit__msheet-foot--dark .orn-jrn__act { width: 100%; }
  .orn-fit__mbk-note { font: 400 12px/1.4 var(--fit-sans); color: #8A8A8A; text-align: center; }
}
@media (max-width: 900px) and (prefers-reduced-motion: reduce) {
  .orn-fit__msheet { transition: none; }
}

@media (max-width: 640px) {
  /* Tab bar → horizontal scroll (was flex-wrap) */
  .orn-page--journey-detail .orn-jd__tabs { flex-wrap: nowrap; overflow-x: auto; scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .orn-page--journey-detail .orn-jd__tabs::-webkit-scrollbar { display: none; }
  .orn-page--journey-detail .orn-jd__tab { flex: none; scroll-snap-align: start; padding: 8px 15px; font-size: 13px; }
  /* Hero + body gutter */
  .orn-fit__hero-img { height: 210px; }
  .orn-fit__hero-inner { padding: 0 16px 20px; }
  .orn-page--journey-detail .orn-jd__body { padding-left: 16px; padding-right: 16px; }
  /* The mobile sheet owns Travellers + Date → hide the Dates tab/panel; keep the
     active NON-dates panel winning over the leaked base .orn-jd__* 640px rules. */
  .orn-page--journey-detail .orn-jd__tab[data-orn-tab="dates"] { display: none; }
  .orn-page--journey-detail .orn-jd__panel[data-orn-panel="dates"] { display: none; }
  .orn-page--journey-detail .orn-jd__panel.orn-jd__panel--active:not([data-orn-panel="dates"]) { display: block; }
}

@media (max-width: 560px) {
  .orn-fit__hstay { padding: 16px; }
  .orn-fit__hsel { padding: 12px; }
  /* Hotel room row: price + Select drop to a full-width line under the name. */
  .orn-fit__hroom { flex-wrap: wrap; }
  .orn-fit__hroom-right { width: 100%; justify-content: space-between; }
  /* Flight card header can wrap price/Select under the route. */
  .orn-fit__flt-head { flex-wrap: wrap; }
}

@media (max-width: 480px) {
  .orn-fit__hero-title { font-size: 26px; }
  .orn-fit__sec-title2 { font-size: 20px; }
  .orn-fit__day2 { padding-left: 46px; }
  .orn-fit__day2-title { font-size: 15.5px; }
  .orn-fit__side-total-val { font-size: 26px; }
  /* Inline option chooser: let the price wrap under the name/meta. */
  .orn-fit__opt-row { flex-wrap: wrap; }
  .orn-fit__opt-prc { margin-top: 4px; }
}

/* ── Comprehensive mobile pass (≤768) — body gutter, tabs, and every tab's
      content section (day-by-day / hotels / flights / visa). ── */
@media (max-width: 768px) {
  /* .orn-vtd__main wraps .orn-jd__body — zero its padding so the gutter isn't
     doubled (only the body's 16px applies). */
  .orn-page--journey-detail .orn-vtd__main { padding: 8px 0 0; }
  .orn-page--journey-detail .orn-jd__body { padding-left: 16px; padding-right: 16px; padding-top: 16px; }
  /* Tabs → sticky bar with a SOLID full-bleed background (content no longer shows
     through when pinned) + a divider line below, horizontal-scroll pills. */
  .orn-page--journey-detail .orn-jd__tabbar { position: sticky; top: 0; z-index: 40; background: var(--fit-surface-2, #EFEFEF); margin-left: -16px; margin-right: -16px; padding: 10px 16px 13px; border-bottom: 1px solid var(--fit-border); }
  .orn-page--journey-detail .orn-jd__tabs { flex-wrap: nowrap; overflow-x: auto; scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .orn-page--journey-detail .orn-jd__tabs::-webkit-scrollbar { display: none; }
  .orn-page--journey-detail .orn-jd__tab { flex: none; scroll-snap-align: start; padding: 9px 16px; font-size: 13.5px; }
  .orn-page--journey-detail .orn-jd__panels { margin-top: 16px; }
  /* Continuous scroll: ALL panels stacked (the sticky tab bar scroll-spies them).
     scroll-margin-top clears the sticky bar when a tab tap scrolls to a section. */
  .orn-page--journey-detail .orn-jd__panels .orn-jd__panel { display: block; scroll-margin-top: 64px; }
  .orn-page--journey-detail .orn-jd__panel + .orn-jd__panel { margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--fit-border); }
  .orn-page--journey-detail .orn-jd__panel[data-orn-panel="dates"] { display: none; margin: 0; padding: 0; border: 0; }
  /* Day by day: DROP the left timeline/badge column (it ate width) → the day card
     is full-width and "DAY N" becomes a small inline pill above it. */
  .orn-fit__timeline { padding-left: 0; }
  .orn-fit__day2 { padding-left: 0; margin-left: 0; border-left: 0; padding-bottom: 14px; }
  .orn-fit__day2-badge { position: static; flex-direction: row; align-items: baseline; gap: 5px; width: auto; height: auto; border-radius: 999px; padding: 5px 12px; margin-bottom: 10px; }
  .orn-fit__day2-badge span:last-child { font-size: 12px; margin-top: 0; }
  .orn-fit__day2-card { padding: 15px 16px; }
  /* Hotels: tighten; the action button goes full-width (bigger tap target) under
     the name/price; check-in/out + room rows wrap; 2-up zones. */
  .orn-fit__hstay { padding: 15px; }
  /* Change hotel (browse) → full-screen overlay so the hotel list + inline room lists
     fill the viewport instead of a cramped in-panel card. The .orn-fit__hbrowse-back
     row pins to the top as the dismiss control (onHCancel clears browse). */
  .orn-page--journey-detail .orn-fit__hstay--browsing,
  .orn-page--journey-detail .orn-fit__hstay--viewing,
  .orn-page--journey-detail .orn-fit__hstay--rooms { position: fixed; inset: 0; z-index: 1000; margin: 0; border: 0; border-radius: 0; background: var(--fit-surface, #fff); padding: 56px 16px 40px; overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
  /* Dismiss control = a floating × in the top-right corner (was a "Back …" bar). */
  .orn-fit__hstay--browsing .orn-fit__hbrowse-back,
  .orn-fit__hstay--viewing .orn-fit__hbrowse-back,
  .orn-fit__hstay--rooms .orn-fit__hbrowse-back { position: fixed; top: 12px; right: 14px; z-index: 3; width: 36px; height: 36px; padding: 0; margin: 0; gap: 0; border-radius: 50%; border: 1px solid var(--fit-border); background: #fff; box-shadow: 0 2px 10px rgba(0,0,0,.15); display: flex; align-items: center; justify-content: center; font-size: 0; color: transparent; }
  .orn-fit__hstay--browsing .orn-fit__hbrowse-back::before,
  .orn-fit__hstay--viewing .orn-fit__hbrowse-back::before,
  .orn-fit__hstay--rooms .orn-fit__hbrowse-back::before { content: "\00D7"; font: 400 22px/1 var(--fit-sans); color: var(--fit-ink, #151515); }
  /* Room filters on mobile: search full-width, then Meal + Refundable 50/50 on a new line. */
  .orn-fit__rsrch-wrap { flex: 1 1 100%; max-width: none; }
  .orn-fit__rmeal-dd, .orn-fit__rfilter--chk { flex: 1 1 calc(50% - 4px); }
  .orn-fit__rmeal-btn { width: 100%; justify-content: space-between; }
  .orn-fit__rfilter--chk { justify-content: center; }
  /* selRooms overlay: the rooms (filters + list) sit in their own white card, matching
     the committed hotel card above, instead of bare on the grey overlay. */
  .orn-fit__hstay--rooms .orn-fit__hrooms { margin: 12px 0 0; background: #fff; border: 1px solid var(--fit-border); border-radius: 16px; padding: 16px 16px 18px; }
  /* Visa/insurance Add/Update (option chooser) → full-screen overlay too. The card
     (title + Close) pins as the header; the options list scrolls below. */
  .orn-page--journey-detail .orn-fit__vi-grp--open { position: fixed; inset: 0; z-index: 1000; background: var(--fit-surface, #fff); padding: 56px 16px 40px; overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
  .orn-fit__vi-grp--open .orn-fit__vi-card { margin: 0; padding: 18px; background: #fff; border: 1px solid var(--fit-border); border-radius: 16px; }
  .orn-fit__vi-grp--open .orn-fit__vi-opts.orn-fit__bandopts { margin: 14px 0 0; border: 0; border-radius: 0; padding: 0; }
  /* Close → floating × in the top-right (matches the hotel overlay). Remove stays a
     normal button in the card. */
  .orn-fit__vi-grp--open .orn-fit__vi-act--open { position: fixed; top: 12px; right: 14px; z-index: 3; width: 36px; height: 36px; padding: 0; margin: 0; gap: 0; border-radius: 50%; border: 1px solid var(--fit-border); background: #fff; box-shadow: 0 2px 10px rgba(0,0,0,.15); display: flex; align-items: center; justify-content: center; font-size: 0; color: transparent; }
  .orn-fit__vi-grp--open .orn-fit__vi-act--open::before { content: "\00D7"; font: 400 22px/1 var(--fit-sans); color: var(--fit-ink, #151515); }
  /* Vehicle change (options view) → full-screen overlay with a × close top-right. */
  /* z-index above this page's floating widgets (Instant Call Back/Talk to ORN at
     9990/9991) — same reasoning as .orn-fit__vd-sheet-bg above. At 1000 this sat
     underneath them, so the Instant Call Back pill floated over the chooser. */
  /* Sheet = a real flex column (header/body/footer as flex children), not fixed
     bars papered over a padded scroll div — matches how the mobile comp actually
     builds it, and is why the header/footer read at true pixel values below instead
     of guessed clearance padding. */
  .orn-page--journey-detail .orn-fit__veh-overlay { position: fixed; inset: 0; z-index: 10001; margin: 0; padding: 0; background: var(--fit-surface, #fff); display: flex; flex-direction: column; }
  /* Header bar (per ORN Journey Detail - Mobile.dc.html): a 56px bar holding one
     40×40 chevron button — vehRow/vehicle() render the real <svg> chevron for this
     breakpoint (isMobileVeh), so there's no ::before glyph layered under/over it. */
  .orn-fit__veh-backbar { flex: 0 0 auto; display: flex; align-items: center; gap: 6px; height: 56px; padding: 0 8px; background: #fff; border-bottom: 1px solid var(--fit-border); }
  .orn-fit__veh-overlay .orn-fit__veh-back { position: static; width: 40px; height: 40px; padding: 0; margin: 0; border-radius: 10px; border: 0; background: none; box-shadow: none; display: flex; align-items: center; justify-content: center; color: var(--fit-ink); cursor: pointer; }
  .orn-fit__veh-overlay .orn-fit__veh-body { flex: 1 1 auto; overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; padding: 18px 16px 24px; }
  /* Card: padding moves off the row onto its inner sections (overflow:hidden clips
     the "Inclusions" box to the card's own radius). Top row stays a plain flex row —
     price is a real 3rd child of .orn-fit__veh-main here (see vehRow), not a
     .orn-fit__veh-right sibling like desktop, so no grid/area trick is needed. */
  .orn-fit__veh-overlay .orn-fit__veh-row--opt { padding: 0; overflow: hidden; border-width: 1.5px; }
  .orn-fit__veh-overlay .orn-fit__veh-top { padding: 12px; align-items: flex-start; gap: 12px; }
  .orn-fit__veh-overlay .orn-fit__veh-radio { margin-top: 2px; }
  .orn-fit__veh-overlay .orn-fit__veh-thumb { width: 68px; height: 52px; }
  .orn-fit__veh-overlay .orn-fit__veh-main { display: flex; flex-direction: column; gap: 3px; }
  .orn-fit__veh-overlay .orn-fit__veh-name { font: 600 15px/1.3 var(--fit-sans); }
  .orn-fit__veh-overlay .orn-fit__veh-note { font-size: 12px; gap: 5px; margin-top: 0; }
  /* Inclusions box: one flat panel (no dashed divider above it, no per-row tint on
     check/hover) instead of the desktop bordered-box-on-white treatment. */
  .orn-fit__veh-overlay .orn-fit__veh-cmps { margin: 0; padding: 0 12px 12px; border-top: 0; }
  /* padding lives on the box (horizontal) + each row (vertical) — not on the row
     alone — so a row's content doesn't sit flush against the box's own border. */
  .orn-fit__veh-overlay .orn-fit__veh-inclbox { background: #FAFAF8; border-color: #EDEBE6; padding: 0 12px; }
  .orn-fit__veh-overlay .orn-fit__veh-cmprow { padding: 10px 0; gap: 10px; }
  .orn-fit__veh-overlay .orn-fit__veh-inclbox > .orn-fit__veh-cmprow + .orn-fit__veh-cmprow { border-top-color: #F0EEEA; }
  .orn-fit__veh-overlay .orn-fit__veh-inclitem, .orn-fit__veh-overlay .orn-fit__veh-xtra:hover, .orn-fit__veh-overlay .orn-fit__veh-xtra--on { background: transparent; }
  .orn-fit__veh-overlay .orn-fit__veh-xtra-cb { appearance: none; -webkit-appearance: none; width: 18px; height: 18px; border-radius: 4px; border: 1.5px solid #C9C5BD; background: #fff; position: relative; }
  .orn-fit__veh-overlay .orn-fit__veh-xtra-cb:checked { border-color: var(--fit-red); background: var(--fit-red); }
  .orn-fit__veh-overlay .orn-fit__veh-xtra-cb:checked::after { content: ""; position: absolute; left: 5px; top: 1px; width: 5px; height: 9px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
  /* One Total + Select/Update bar for the whole sheet (vehGlobalFooter), always
     reflecting vehFocus — a real flex child pinned by the column layout, not
     position:fixed — replacing the desktop pattern of a footer per expanded row. */
  .orn-fit__veh-overlay .orn-fit__veh-footer { display: none; }
  .orn-fit__veh-footbar { display: flex; flex: 0 0 auto; align-items: center; justify-content: space-between; gap: 14px; padding: 12px 18px; background: #fff; border-top: 1px solid var(--fit-border); }
  /* Desktop's .orn-fit__veh-total is right-aligned (it sits directly against the
     button, both hugging the card's right edge); the mobile bar spans full width
     with the button pushed to the far right by space-between, so Total reads
     left-aligned at the bar's own left edge instead. */
  .orn-fit__veh-footbar .orn-fit__veh-total { align-items: flex-start; text-align: left; }
  .orn-fit__veh-footbar .orn-fit__veh-total-lbl { font-size: 11px; }
  .orn-fit__veh-footbar .orn-fit__veh-total-val { font-size: 19px; }
  .orn-fit__veh-footbar .orn-fit__opt-apply { border-radius: 9px; padding: 13px 20px; font-size: 14.5px; }
  .orn-fit__hsel { padding: 12px; }
  .orn-fit__hsel-stay { flex-wrap: wrap; }
  /* Browse hotel cards: stack vertically (full-width image on top, details, then a
     full-width Select) so every card in the list is identical instead of the image
     wrapping unpredictably beside the text. */
  .orn-fit__hcard-row { flex-direction: column; align-items: stretch; gap: 12px; }
  .orn-fit__hcard-img { width: 100%; height: 150px; }
  .orn-fit__hcard-btn { flex: none; align-self: stretch; margin: 0; text-align: center; padding: 11px; }
  .orn-fit__hcard-prc { white-space: nowrap; }
  /* Meal-plan dropdown: right-align + cap width so it never runs off the screen edge. */
  .orn-fit__rmeal-menu { left: auto; right: 0; max-width: calc(100vw - 40px); }
  .orn-fit__hroom { flex-wrap: wrap; gap: 8px 12px; }
  .orn-fit__hroom-right { width: 100%; justify-content: space-between; }
  /* Flights: stack the dense segment row (was a horizontal-scroll strip) → airline
     on top, dep|arr times side-by-side, the duration/stops line below. */
  .orn-fit__flt-card { padding: 14px; }
  .orn-fit__flt-head { flex-wrap: wrap; gap: 8px; }
  .orn-fit__flt-price { text-align: left; }
  .orn-fit__flt-seg-row { flex-wrap: wrap; gap: 8px 12px; overflow: visible; align-items: flex-start; }
  .orn-fit__flt-air { flex: 1 1 100%; }
  .orn-fit__flt-pt { flex: 1 1 42%; min-width: 0; }
  .orn-fit__flt-mid { flex: 1 1 100%; order: 5; min-width: 0; }
  .orn-fit__flt-side { flex: 1 1 100%; order: 6; }
  /* Visa & insurance: stack card + actions */
  .orn-fit__vi-card { flex-direction: column; align-items: stretch; }
  .orn-fit__vi-actions { flex-direction: row; flex-wrap: wrap; }
}

/* =====================================================================
   ORN "How rewards work" explainer (/user/how-rewards-work)
   templates/ornholidays/customer/how_rewards_work.jsp
   All rules scoped under .orn-hrw so the design's generic/element
   selectors never touch the shared ORN header/footer.
   ===================================================================== */
.orn-hrw{
  --red:#E31118; --red-bright:#F0151D; --red-deep:#A50B12;
  --ink:#111214; --ink-2:#4A4D52; --muted:#7A7E85;
  --paper:#F4F3F1; --card:#FFFFFF; --line:#E8E6E3; --line-dark:#212327; --black:#0A0A0B; --panel:#0E0F11; --gold:#F2B705;
  --shadow-sm:0 1px 2px rgba(17,18,20,.05), 0 6px 20px rgba(17,18,20,.05);
  --shadow-md:0 2px 4px rgba(17,18,20,.05), 0 16px 40px rgba(17,18,20,.10);
  --shadow-lg:0 30px 70px rgba(10,10,11,.28);
  --r:18px; --maxw:1180px;
  --disp:'Archivo',system-ui,sans-serif; --body:'Inter',system-ui,sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
  font-family:var(--body);color:var(--ink);background:var(--paper);line-height:1.55;-webkit-font-smoothing:antialiased;
}
.orn-hrw *{box-sizing:border-box}
.orn-hrw .wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
/* color/text-align:inherit so headings follow the section (white + centered in
   the red hero/CTA via .top/.cta, ink + left on light sections) — the ORN global
   `h1..h6 { color: rgb(15,15,15); text-align: left }` rule otherwise overrides both. */
.orn-hrw h1,.orn-hrw h2,.orn-hrw h3{font-family:var(--disp);font-weight:800;letter-spacing:-.025em;line-height:1.03;margin:0;color:inherit;text-align:inherit}
.orn-hrw a{color:inherit;text-decoration:none}
.orn-hrw p,.orn-hrw ul,.orn-hrw ol{margin:0}
.orn-hrw img{max-width:100%;display:block}
.orn-hrw :focus-visible{outline:3px solid #ff9ba0;outline-offset:2px;border-radius:6px}

.orn-hrw .h-lg{font-size:clamp(29px,4vw,45px);letter-spacing:-.03em}

.orn-hrw .eyebrow{display:inline-flex;align-items:center;gap:10px;font-weight:600;font-size:12px;letter-spacing:.2em;text-transform:uppercase}
.orn-hrw .eyebrow .idx{font-family:var(--disp);font-weight:800;color:var(--red);letter-spacing:0}
.orn-hrw .eyebrow::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--red);flex:none}
.orn-hrw .eyebrow.on-red{color:rgba(255,255,255,.92)} .orn-hrw .eyebrow.on-red::before{background:#fff}
.orn-hrw .eyebrow.on-red .idx{color:#fff}
.orn-hrw .eyebrow.on-dark{color:rgba(255,255,255,.62)} .orn-hrw .eyebrow.on-dark .idx{color:#ff7078}

.orn-hrw .btn{display:inline-flex;align-items:center;gap:9px;font-weight:600;font-size:15px;padding:14px 26px;border-radius:999px;border:1.5px solid transparent;cursor:pointer;transition:transform .18s var(--ease),background .18s,box-shadow .18s,color .18s;white-space:nowrap}
.orn-hrw .btn:hover{transform:translateY(-2px)}
.orn-hrw .btn:active{transform:translateY(0)}
.orn-hrw .btn svg{width:16px;height:16px}
.orn-hrw .btn-red{background:var(--red);color:#fff} .orn-hrw .btn-red:hover{background:#c50d14;box-shadow:0 10px 24px rgba(227,17,24,.32)}
.orn-hrw .btn-white{background:#fff;color:var(--ink)} .orn-hrw .btn-white:hover{box-shadow:0 12px 28px rgba(0,0,0,.22)}
.orn-hrw .btn-ghost-light{background:transparent;color:#fff;border-color:rgba(255,255,255,.5)} .orn-hrw .btn-ghost-light:hover{background:rgba(255,255,255,.14)}

/* reveal */
.orn-hrw [data-reveal]{opacity:0;transform:translateY(20px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.orn-hrw [data-reveal].is-in{opacity:1;transform:none}
.orn-hrw [data-reveal].d1{transition-delay:.08s}.orn-hrw [data-reveal].d2{transition-delay:.16s}.orn-hrw [data-reveal].d3{transition-delay:.24s}

/* ===== HERO ===== */
.orn-hrw .top{position:relative;color:#fff;
  background:radial-gradient(130% 135% at 22% -12%, #DE2320 0%, #C51C1B 52%, #A31214 100%)}
/* vertical only — the element is `.wrap.hero`, so a padding shorthand here would
   wipe .wrap's horizontal 0 24px and leave the hero flush to the screen edge. */
.orn-hrw .hero{padding-top:44px;padding-bottom:82px}
.orn-hrw .crumb{font-size:14px;opacity:.85;display:inline-flex;gap:8px;align-items:center;margin-bottom:34px;transition:gap .2s}
.orn-hrw .crumb:hover{opacity:1;gap:12px}
.orn-hrw .hero-grid{display:grid;grid-template-columns:1.06fr .94fr;gap:56px;align-items:center}
.orn-hrw .hero h1{font-size:clamp(40px,5.6vw,50px);font-weight:900;letter-spacing:-.035em;max-width:15ch;margin:20px 0 20px}
.orn-hrw .hero p{font-size:clamp(16px,1.9vw,19px);max-width:46ch;opacity:.92}
.orn-hrw .hero-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:32px}
/* Grid/flex children default to min-width:auto and refuse to shrink below their
   content, forcing horizontal overflow on narrow screens. Let them shrink. */
.orn-hrw .hero-grid > *,.orn-hrw .what-grid > *,.orn-hrw .redeem-grid > *,
.orn-hrw .flow li > *,.orn-hrw .lrow .lname{min-width:0}
.orn-hrw .lrow .lname small{overflow-wrap:anywhere}

.orn-hrw .wallet{position:relative;background:linear-gradient(165deg,#141517 0%,var(--black) 60%);color:#fff;border-radius:26px;padding:36px;
  border:1px solid rgba(255,255,255,.08);box-shadow:var(--shadow-lg);overflow:hidden;transition:transform .3s var(--ease),box-shadow .3s}
.orn-hrw .wallet::before{content:"";position:absolute;top:-60px;right:-60px;width:200px;height:200px;border-radius:50%;
  background:radial-gradient(circle,rgba(242,183,5,.18),transparent 65%);pointer-events:none}
.orn-hrw .wallet:hover{transform:translateY(-4px);box-shadow:0 40px 80px rgba(10,10,11,.4)}
.orn-hrw .wallet .lab{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.55)}
.orn-hrw .wallet .bal{display:flex;align-items:center;gap:16px;margin:16px 0 4px}
.orn-hrw .coin{width:44px;height:44px;border-radius:50%;background:var(--gold);display:grid;place-items:center;flex:none;box-shadow:0 6px 18px rgba(242,183,5,.35)}
.orn-hrw .coin svg{width:22px;height:22px}
.orn-hrw .wallet .amt{font-family:var(--disp);font-weight:900;font-size:clamp(46px,7vw,62px);line-height:1;letter-spacing:-.03em}
.orn-hrw .wallet .name{color:rgba(255,255,255,.6);font-size:14px}
.orn-hrw .wallet .rule{height:1px;background:rgba(255,255,255,.1);margin:26px 0 22px}
.orn-hrw .wallet .facts{display:flex;gap:10px;flex-wrap:wrap}
.orn-hrw .wallet .tag{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);border-radius:999px;padding:8px 14px;font-size:13px}
.orn-hrw .wallet .tag b{font-family:var(--disp);font-weight:800}
.orn-hrw .wallet .tag .dot{width:6px;height:6px;border-radius:50%;background:var(--gold)}

/* ===== generic section ===== */
.orn-hrw .sec{padding:90px 0}
.orn-hrw .sec-head{max-width:60ch;margin-bottom:44px}
.orn-hrw .sec-head h2{margin:16px 0 12px}
.orn-hrw .sec-head p{color:var(--ink-2);font-size:18px}
.orn-hrw .accent{color:var(--red)}

/* ===== WHAT ===== */
.orn-hrw .what{background:var(--card);border-bottom:1px solid var(--line)}
.orn-hrw .what-grid{display:grid;grid-template-columns:1.06fr .94fr;gap:52px;align-items:center}
.orn-hrw .what h2{margin:16px 0 28px}
.orn-hrw .points{list-style:none;display:flex;flex-direction:column;gap:22px}
.orn-hrw .points li{position:relative;padding-left:36px;font-size:17px;color:var(--ink-2);max-width:50ch}
.orn-hrw .points li b{color:var(--ink);font-weight:600}
.orn-hrw .points li::before{content:"";position:absolute;left:0;top:8px;width:16px;height:16px;border-radius:50%;background:var(--red);box-shadow:0 0 0 5px rgba(227,17,24,.13)}
.orn-hrw .eqcard{position:relative;overflow:hidden;background:#fff;border:1px solid rgba(227,17,24,.16);border-radius:26px;padding:48px 44px;
  box-shadow:0 2px 6px rgba(17,18,20,.05), 0 22px 50px rgba(17,18,20,.09);
  transition:transform .3s var(--ease),box-shadow .3s}
.orn-hrw .eqcard:hover{transform:translateY(-4px);box-shadow:0 4px 10px rgba(17,18,20,.06), 0 32px 64px rgba(227,17,24,.13)}
.orn-hrw .eqcard .ey{display:inline-flex;align-items:center;gap:9px;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--red);font-weight:700;margin-bottom:24px}
.orn-hrw .eqcard .ey::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--red)}
.orn-hrw .eqcard .eq{font-family:var(--disp);font-weight:900;letter-spacing:-.035em;font-size:clamp(40px,5.6vw,58px);line-height:1;color:var(--red);display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.orn-hrw .eqcard .eq .sign{color:rgba(227,17,24,.42);font-weight:800}
.orn-hrw .eqcard .cap{margin-top:22px;color:var(--ink-2);font-size:16px;max-width:38ch}
.orn-hrw .eqcard .foot{margin-top:26px;padding-top:22px;border-top:1px solid var(--line);color:var(--muted);font-size:14px;display:flex;gap:11px;align-items:flex-start}
.orn-hrw .eqcard .foot svg{width:18px;height:18px;stroke:var(--red);fill:none;stroke-width:2.2;flex:none;margin-top:1px}

/* ===== EARN ===== */
.orn-hrw .earn{background:var(--paper)}
.orn-hrw .cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.orn-hrw .icard{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:30px;box-shadow:var(--shadow-sm);transition:transform .28s var(--ease),box-shadow .28s,border-color .28s}
.orn-hrw .icard:hover{transform:translateY(-5px);box-shadow:var(--shadow-md);border-color:#dcdad6}
.orn-hrw .icard .step{position:absolute;top:26px;right:28px;font-family:var(--disp);font-weight:800;font-size:14px;color:var(--line);background:none}
.orn-hrw .icard .ic{width:48px;height:48px;border-radius:13px;background:#FDE7E8;display:grid;place-items:center;margin-bottom:22px;transition:background .28s}
.orn-hrw .icard:hover .ic{background:var(--red)}
.orn-hrw .icard .ic svg{width:23px;height:23px;stroke:var(--red);fill:none;stroke-width:2;transition:stroke .28s}
.orn-hrw .icard:hover .ic svg{stroke:#fff}
.orn-hrw .icard h3{font-size:19px;margin-bottom:10px}
.orn-hrw .icard p{color:var(--ink-2);font-size:15px}

/* ===== REDEEM ===== */
.orn-hrw .redeem{background:var(--card);border-top:1px solid var(--line)}
.orn-hrw .redeem-grid{display:grid;grid-template-columns:1fr 1.04fr;gap:52px;align-items:center}
.orn-hrw .flow{list-style:none;position:relative}
.orn-hrw .flow li{display:grid;grid-template-columns:54px 1fr;gap:22px;position:relative;padding-bottom:34px}
.orn-hrw .flow li:last-child{padding-bottom:0}
.orn-hrw .flow li:not(:last-child)::after{content:"";position:absolute;left:26px;top:58px;bottom:-2px;width:2px;
  background:linear-gradient(var(--red),rgba(227,17,24,.18))}
.orn-hrw .flow .dot{width:54px;height:54px;border-radius:50%;color:#fff;display:grid;place-items:center;font-family:var(--disp);font-weight:800;font-size:21px;z-index:1;
  background:radial-gradient(120% 120% at 30% 20%,#ff3a41,var(--red));box-shadow:0 8px 20px rgba(227,17,24,.32)}
.orn-hrw .flow h3{font-size:20px;margin:8px 0 8px}
.orn-hrw .flow p{color:var(--ink-2);font-size:15px;max-width:40ch}
.orn-hrw .flow p b{color:var(--ink);font-weight:600}

.orn-hrw .example{position:relative}
.orn-hrw .ex-tag{position:absolute;top:-14px;left:28px;z-index:2;background:var(--red);color:#fff;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;padding:7px 15px;border-radius:999px;box-shadow:0 8px 20px rgba(227,17,24,.3)}
.orn-hrw .ledger{background:linear-gradient(165deg,#141517,var(--black) 62%);color:#fff;border-radius:24px;padding:34px 32px;box-shadow:var(--shadow-lg);border:1px solid rgba(255,255,255,.07);transition:transform .3s var(--ease),box-shadow .3s}
.orn-hrw .ledger:hover{transform:translateY(-4px);box-shadow:0 40px 80px rgba(10,10,11,.4)}
.orn-hrw .ledger .head{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.5);margin-bottom:22px}
.orn-hrw .lrow{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 0;border-bottom:1px solid rgba(255,255,255,.09)}
.orn-hrw .lrow .lname{display:flex;flex-direction:column}
.orn-hrw .lrow .lname small{color:rgba(255,255,255,.48);font-size:12px;margin-top:4px}
/* label + inline pill: wrap gracefully on narrow screens (pill drops to its own
   line, left-aligned, and never breaks mid-word) instead of detaching awkwardly. */
.orn-hrw .lname-top{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;row-gap:6px}
.orn-hrw .ltag{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.55);border:1px solid rgba(255,255,255,.22);border-radius:6px;padding:2px 7px;white-space:nowrap}
.orn-hrw .lrow .amt{font-family:var(--disp);font-weight:700;font-size:22px;white-space:nowrap}
.orn-hrw .lrow.credit .amt{color:#ff7078}
.orn-hrw .lrow.total{border-bottom:none;padding-top:24px}
.orn-hrw .lrow.total .lname{font-family:var(--disp);font-weight:800;font-size:15px}
.orn-hrw .lrow.total .amt{font-size:clamp(34px,5vw,42px);font-weight:900;letter-spacing:-.02em}
.orn-hrw .allin{display:inline-block;background:rgba(255,255,255,.1);border-radius:8px;padding:3px 9px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.8);margin-top:5px;width:fit-content}
.orn-hrw .lfoot{margin-top:18px;font-size:13px;color:rgba(255,255,255,.68);line-height:1.5}

/* ===== TERMS ===== */
.orn-hrw .terms{background:var(--paper)}
.orn-hrw .terms-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:22px;overflow:hidden;background:var(--card);box-shadow:var(--shadow-sm)}
.orn-hrw .term{padding:38px 34px;transition:background .25s}
.orn-hrw .term:hover{background:#FBFAF9}
.orn-hrw .term + .term{border-left:1px solid var(--line)}
.orn-hrw .term .tk{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--red);font-weight:700;margin-bottom:14px}
.orn-hrw .term .k{font-family:var(--disp);font-weight:900;font-size:32px;letter-spacing:-.02em;color:var(--ink)}
.orn-hrw .term .k .accent{color:var(--red)}
.orn-hrw .term p{color:var(--ink-2);font-size:14px;margin-top:10px}
.orn-hrw .terms-note{margin:22px auto 0;max-width:88ch;text-align:center;color:var(--muted);font-size:12.5px;line-height:1.6}

/* ===== FAQ ===== */
.orn-hrw .faq{background:var(--card);border-top:1px solid var(--line)}
.orn-hrw .faq-list{max-width:840px;margin:8px auto 0}
.orn-hrw .faq details{background:var(--card);border:1px solid var(--line);border-radius:16px;margin-bottom:12px;overflow:hidden;transition:box-shadow .22s,border-color .22s}
.orn-hrw .faq details[open]{box-shadow:var(--shadow-sm);border-color:#dcdad6}
.orn-hrw .faq summary{list-style:none;cursor:pointer;padding:22px 24px;display:flex;justify-content:space-between;align-items:center;gap:20px;font-family:var(--disp);font-weight:700;font-size:18px;letter-spacing:-.01em}
.orn-hrw .faq summary::-webkit-details-marker{display:none}
.orn-hrw .faq .qt{width:24px;height:24px;flex:none;position:relative}
.orn-hrw .faq .qt::before,.orn-hrw .faq .qt::after{content:"";position:absolute;background:var(--red);border-radius:2px}
.orn-hrw .faq .qt::before{left:3px;right:3px;top:11px;height:2.5px}
.orn-hrw .faq .qt::after{top:3px;bottom:3px;left:11px;width:2.5px;transition:transform .25s var(--ease)}
.orn-hrw .faq details[open] .qt::after{transform:rotate(90deg)}
.orn-hrw .faq details p{padding:0 24px 24px;color:var(--ink-2);font-size:15px;max-width:74ch}

/* ===== CTA ===== */
.orn-hrw .cta{position:relative;overflow:hidden;color:#fff;text-align:center;
  background:radial-gradient(130% 130% at 82% -20%, var(--red-bright) 0%, var(--red) 46%, var(--red-deep) 100%)}
.orn-hrw .cta > *{position:relative}
.orn-hrw .cta h2{font-size:clamp(30px,4.6vw,50px);font-weight:900;letter-spacing:-.03em;max-width:20ch;margin:16px auto 16px}
.orn-hrw .cta p{opacity:.92;font-size:17px;max-width:46ch;margin:0 auto}
.orn-hrw .cta-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:32px}

@media(max-width:940px){
  .orn-hrw .hero-grid,.orn-hrw .what-grid,.orn-hrw .redeem-grid{grid-template-columns:1fr;gap:36px}
  .orn-hrw .cards3,.orn-hrw .terms-grid{grid-template-columns:1fr}
  .orn-hrw .term + .term{border-left:none;border-top:1px solid var(--line)}
  .orn-hrw .sec{padding:64px 0}
}
@media(max-width:560px){
  .orn-hrw .eqcard{padding:44px 28px}
}
@media (prefers-reduced-motion: reduce){
  .orn-hrw *{transition:none!important}
  .orn-hrw [data-reveal]{opacity:1!important;transform:none!important}
}

/* ============================================================================
   Compare — find page. Values mirror the approved mock (orn-compare-v18.html)
   exactly: palette, column widths, paddings, type scale. Class names are
   namespaced .orn-cmp__* because the mock's .pcard/.rail/.ct/.fab/.badge would
   collide with this template set.
   ========================================================================= */

.orn-cmp {
    --cmp-red: #F00C18;
    --cmp-red-dark: #CC0A14;
    --cmp-dark: #0D0D0D;
    --cmp-ink: #1A1A1A;
    --cmp-muted: #7A7A76;
    --cmp-line: #EEEEEB;
    --cmp-line2: #E4E4E0;
    --cmp-card: #FFFFFF;
    --cmp-rec: #FBF8F3;
    --cmp-yes: #0E7B45;
}

.orn-cmp__pill {
    position: absolute; bottom: 10px; left: 10px; z-index: 4;
    display: inline-flex; align-items: center; gap: 6px;
    padding: 7px 13px; border: none; border-radius: 999px; cursor: pointer;
    background: rgba(255, 255, 255, .95); color: #0D0D0D;
    font-family: 'Inter', system-ui, sans-serif; font-size: 12px; font-weight: 600; line-height: 1;
}
.orn-cmp__pill.is-on { background: #0D0D0D; color: #fff; }
.orn-cmp__pill svg { width: 14px; height: 14px; }

.orn-cmp__fab {
    position: fixed; right: 24px; bottom: 24px; z-index: 45;
    display: none; align-items: center; gap: 9px;
    padding: 12px 17px 12px 15px; border: none; border-radius: 999px; cursor: pointer;
    background: #0D0D0D; color: #fff;
    font-family: 'Inter', system-ui, sans-serif; font-size: 14px; font-weight: 600;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .28);
}
.orn-cmp__fab.is-on { display: inline-flex; }
.orn-cmp__fab svg { width: 19px; height: 19px; }
.orn-cmp__fab-count {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px;
    background: #F00C18; color: #fff; font-size: 11px; font-weight: 700;
}

.orn-cmp__hint {
    position: fixed; right: 24px; bottom: 80px; z-index: 46;
    padding: 8px 12px; border-radius: 8px;
    background: #0D0D0D; color: #fff; font-size: 12px;
    opacity: 0; pointer-events: none; transition: opacity .2s;
}
.orn-cmp__hint.is-on { opacity: 1; }

.orn-cmp__overlay {
    position: fixed; inset: 0; z-index: 50; display: none;
    align-items: flex-start; justify-content: center; padding: 20px;
    background: rgba(13, 13, 13, .55); overflow: auto;
}
.orn-cmp__overlay.is-open { display: flex; }
.orn-cmp__modal {
    display: flex; flex-direction: column; overflow: hidden;
    width: 100%; max-width: 860px; max-height: 92vh; margin: auto;
    background: #FFFFFF; border-radius: 16px;
    box-shadow: 0 24px 60px rgba(0, 0, 0, .28);
    font-family: 'Inter', system-ui, sans-serif; color: #1A1A1A;
}
.orn-cmp__head {
    flex-shrink: 0; display: flex; align-items: center; justify-content: space-between;
    padding: 16px 22px; border-bottom: 1px solid #E4E4E0;
}
.orn-cmp__title { margin: 0; font-size: 18px; font-weight: 800; color: #1A1A1A; }
.orn-cmp__close {
    width: 32px; height: 32px; border-radius: 50%; cursor: pointer;
    border: 1px solid #E4E4E0; background: #fff; font-size: 16px; line-height: 1; color: #1A1A1A;
}
/* Scroll container for both axes: thead sticks to top, label column to left. */
.orn-cmp__body { flex: 1; overflow: auto; }
.orn-cmp__loading { padding: 40px; text-align: center; color: #7A7A76; font-size: 14px; }

/* width:100% fills the modal; the inline min-width (172 + n*232) forces overflow
   instead of compressing when the columns can't fit. */
.orn-cmp__table { border-collapse: collapse; width: 100%; font-size: 14px; }
.orn-cmp__table th,
.orn-cmp__table td { padding: 12px 18px; text-align: left; vertical-align: middle; }
.orn-cmp__table tbody td { border-bottom: 1px solid #EEEEEB; }

.orn-cmp__lbl {
    position: sticky; left: 0; z-index: 2;
    width: 172px; min-width: 172px;
    background: #FFFFFF; font-weight: 700;
    border-right: 1px solid #E4E4E0;
}
/* Image row scrolls away; only the name row sticks (as the mock does). */
.orn-cmp__colimg {
    width: 232px; min-width: 232px;
    padding: 14px 18px 0; vertical-align: bottom;
    background: #FFFFFF; border: none; border-left: 1px solid #EEEEEB;
}
.orn-cmp__colimg.is-first { border-left: none; }
.orn-cmp__col {
    position: sticky; top: 0; z-index: 3;
    width: 232px; min-width: 232px;
    padding: 8px 18px 12px; vertical-align: top;
    background: #FFFFFF; text-align: center;
    border-bottom: 2px solid #E4E4E0; border-left: 1px solid #EEEEEB;
}
.orn-cmp__col.is-first { border-left: none; }
.orn-cmp__lbl--img { border-right: 1px solid #E4E4E0; }
thead .orn-cmp__lbl { z-index: 4; }
thead tr:last-child .orn-cmp__lbl { border-bottom: 2px solid #E4E4E0; }

.orn-cmp__hero { position: relative; }
.orn-cmp__hero-img {
    width: 100%; height: 112px; object-fit: cover; display: block;
    border-radius: 10px; border: 1px solid rgba(0, 0, 0, .06);
    background: #EEEEEB center/cover no-repeat;
}
.orn-cmp__badge {
    position: absolute; top: 8px; left: 8px;
    padding: 3px 9px; border-radius: 6px;
    background: #0E7B45; color: #fff; font-size: 11px; font-weight: 700;
}
.orn-cmp__x {
    position: absolute; top: 6px; right: 6px;
    width: 24px; height: 24px; border-radius: 50%; cursor: pointer;
    border: none; background: rgba(255, 255, 255, .92); color: #1A1A1A;
    font-size: 15px; line-height: 1;
}
.orn-cmp__name { margin-top: 8px; font-size: 15px; font-weight: 700; }

.orn-cmp__table td.orn-cmp__val { text-align: center; border-left: 1px solid #EEEEEB; }
.orn-cmp__table td.orn-cmp__lbl { text-align: left; }
.orn-cmp__val.is-first { border-left: none; }
.orn-cmp__val.is-empty { color: #bdbdb9; }
/* Lowest-price column tint — the mock's .rec. */
.orn-cmp__col.is-rec,
.orn-cmp__val.is-rec { background: #FBF8F3; }

.orn-cmp__yes { display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
.orn-cmp__yes svg { width: 15px; min-width: 15px; height: 15px; color: #0E7B45; flex-shrink: 0; }
.orn-cmp__sub { display: block; margin-top: 3px; font-size: 12px; color: #7A7A76; }
.orn-cmp__list { margin: 0; padding: 0; list-style: none; }
.orn-cmp__list li { margin: 2px 0; }
.orn-cmp__incl { text-align: left; }
.orn-cmp__incl-city {
    margin: 10px 0 4px; font-size: 12px; font-weight: 700; color: #7A7A76;
    text-transform: uppercase; letter-spacing: .05em;
}
.orn-cmp__incl-city:first-child { margin-top: 0; }

/* tfoot, not a sibling flexbox — price must scroll with its column. */
.orn-cmp__table tfoot td {
    border-top: 1px solid #E4E4E0; background: #FFFFFF;
    box-shadow: 0 -5px 18px rgba(0, 0, 0, .06);
}
.orn-cmp__price { font-size: 18px; font-weight: 800; }
.orn-cmp__was { margin-left: 6px; font-size: 12px; color: #7A7A76; text-decoration: line-through; }
.orn-cmp__cta {
    display: block; width: 100%; margin-top: 7px; padding: 11px; border-radius: 10px;
    background: #F00C18; color: #fff; text-align: center;
    font-size: 13px; font-weight: 700; text-decoration: none;
}
.orn-cmp__cta:hover { background: #CC0A14; color: #fff; }

@media (max-width: 700px) {
    .orn-cmp__overlay { padding: 0; }
    .orn-cmp__modal { max-width: none; max-height: 100vh; border-radius: 0; }
    .orn-cmp__table th,
    .orn-cmp__table td { padding: 10px 12px; }
    /* Two columns visible at once on ~390px; the third is the scroll reveal. */
    .orn-cmp__lbl { width: 104px; min-width: 104px; }
    .orn-cmp__col { width: 150px; min-width: 150px; }
    .orn-cmp__hero-img { height: 84px; }
    .orn-cmp__fab { right: 16px; bottom: 16px; }
}

/* Compare — accordion rows (mock's .acc / .chev / .subr). */
.orn-cmp__accrow td.orn-cmp__lbl { cursor: pointer; user-select: none; }
.orn-cmp__acc-lbl { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.orn-cmp__chev { display: block; width: 15px; height: 15px; color: #7A7A76; flex-shrink: 0; transition: transform .15s; }
.orn-cmp__chev.is-collapsed { transform: rotate(-90deg); }
.orn-cmp__subrow td.orn-cmp__lbl { padding-left: 34px; font-weight: 400; color: #555; }
/* This stylesheet sets a global `img, svg { display:block; max-width:100% }`,
   which blows up a sizeless inline svg — hence the explicit sizing. */
.orn-cmp__yes svg { width: 15px !important; height: 15px !important; max-width: 15px; display: inline-block; }
.orn-cmp__sublbl { display: block; margin-top: 1px; color: #7A7A76; font-size: 12px; font-weight: 400; }
.orn-cmp__yes b, .orn-cmp__yes strong { font-weight: 700; color: #0D0D0D; }
.orn-cmp__lbl--items { font-size: 15px; font-weight: 700; color: #1A1A1A; }
.orn-cmp__itin { font-size: 13px; line-height: 1.45; }
/* Corner cell pins on both axes and must outrank each sticky edge. */
.orn-cmp__table thead tr:last-child .orn-cmp__lbl {
    position: sticky; top: 0; left: 0; z-index: 6;
    background: #FFFFFF; border-bottom: 2px solid #E4E4E0;
}
.orn-cmp__table tbody .orn-cmp__lbl,
.orn-cmp__table tfoot .orn-cmp__lbl { z-index: 1; }
.orn-cmp__table thead .orn-cmp__col { z-index: 4; }
/* Row headings sit centred against tall value cells (meals, itinerary, inclusions). */
.orn-cmp__table tbody td.orn-cmp__lbl { vertical-align: middle; }
.orn-cmp__subrow td { vertical-align: middle; }
/* Outranks `.orn-cmp__table th`, which is more specific than `.orn-cmp__col`. */
.orn-cmp__table th.orn-cmp__col,
.orn-cmp__table th.orn-cmp__colimg { text-align: center; }
/* Highlights read as prose, so: left-aligned, bulleted, a notch smaller. */
.orn-cmp__table td .orn-cmp__hl { text-align: left; list-style: disc; padding-left: 18px; font-size: 12.5px; line-height: 1.5; }
.orn-cmp__hl li { margin: 3px 0; }
/* A global reset sets `li { list-style: none }`, so the bullet has to be set on
   the li itself — styling only the ul silently does nothing. */
.orn-cmp__hl li { list-style: disc outside; }

/* ============================================================================
 * ORN Published Journeys — /tours/journeys home page
 * One archetype strip per section: eyebrow archetype label + optional lede,
 * followed by a responsive grid of image-background idea cards. Cards are
 * clickable a-tags that deep-link to /tours/find-journey?ideaId=<sid>.
 * ==========================================================================*/
.orn-jrn-strip {
    margin-top: 44px;
}
.orn-jrn-strip:first-of-type { margin-top: 8px; }
.orn-jrn-strip__head { margin-bottom: 18px; }

.orn-jrn-strip__grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 16px;
}
@media (max-width: 1400px) { .orn-jrn-strip__grid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 1100px) { .orn-jrn-strip__grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 780px)  { .orn-jrn-strip__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 460px)  { .orn-jrn-strip__grid { grid-template-columns: 1fr; } }

.orn-jrn-idea {
    position: relative;
    display: block;
    aspect-ratio: 4 / 5;
    border-radius: 12px;
    overflow: hidden;
    text-decoration: none;
    color: #fff;
    background: #1f2a3d center/cover no-repeat;
    box-shadow: 0 6px 18px rgba(20, 35, 59, 0.08);
    transition: transform 0.18s ease-out, box-shadow 0.18s ease-out;
}
.orn-jrn-idea:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 32px rgba(20, 35, 59, 0.20);
    color: #fff;
    text-decoration: none;
}
.orn-jrn-idea__shade {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(20,35,59,0.10) 0%, rgba(20,35,59,0.35) 45%, rgba(20,35,59,0.85) 100%);
    pointer-events: none;
}
.orn-jrn-idea__body {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 14px 14px 16px;
    z-index: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.orn-jrn-idea__title {
    font-family: 'Playfair Display', 'Playfair', Georgia, serif;
    font-weight: 700;
    font-size: 17px;
    line-height: 1.2;
    color: #fff;
    letter-spacing: 0.005em;
}
.orn-jrn-idea__sub {
    font-family: Archivo, sans-serif;
    font-size: 12px;
    line-height: 1.4;
    color: rgba(255, 255, 255, 0.9);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-top: 3px;
}
.orn-jrn-idea__count {
    font-family: 'IBM Plex Mono', ui-monospace, monospace;
    font-size: 10px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.75);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-top: 6px;
}

.orn-jrn-empty {
    font-family: Archivo, sans-serif;
    font-size: 14px;
    color: rgb(90, 101, 115);
    text-align: center;
    padding: 40px 0;
}

/* ── "Booking for" modal (orn-agent-customer.js) ───────────────────────────── */
.orn-ac__ovl { position: fixed; inset: 0; z-index: 4000; background: rgba(20, 35, 59, 0.55); display: flex; align-items: center; justify-content: center; padding: 18px; overflow-y: auto; }
.orn-ac__ovl[hidden] { display: none !important; }
body.orn-ac-open { overflow: hidden; }
.orn-ac__panel { position: relative; background: var(--orn-paper, #fff); border-radius: 10px; width: 100%; max-width: 420px; padding: 26px 24px 24px; box-shadow: 0 18px 50px rgba(20, 35, 59, 0.28); box-sizing: border-box; }
.orn-ac__x { position: absolute; top: 10px; right: 12px; background: none; border: 0; font-size: 24px; line-height: 1; color: var(--orn-mute, rgb(154, 138, 110)); cursor: pointer; }
.orn-ac__title { font-family: var(--orn-font-display, serif); font-size: 21px; margin: 0 0 6px; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-ac__sub { margin: 0 0 16px; font-size: 13.5px; color: var(--orn-mute, rgb(154, 138, 110)); }
.orn-ac__steps { list-style: none; display: flex; gap: 8px; margin: 0 0 18px; padding: 0; }
.orn-ac__step-dot { flex: 1; font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--orn-mute, rgb(154, 138, 110)); padding-top: 7px; border-top: 2px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); }
.orn-ac__step-dot.is-on { color: var(--orn-ink, rgb(20, 35, 59)); border-top-color: var(--orn-gold, rgb(193, 142, 69)); }
.orn-ac__step-dot.is-done { border-top-color: var(--orn-gold, rgb(193, 142, 69)); }
.orn-ac__err, .orn-ac__note { font-size: 13px; border-radius: 5px; padding: 9px 11px; margin-bottom: 14px; }
.orn-ac__err { background: rgba(190, 60, 50, 0.09); color: rgb(150, 45, 38); }
.orn-ac__note { background: rgba(20, 35, 59, 0.05); color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-ac__err[hidden], .orn-ac__note[hidden] { display: none !important; }
.orn-ac__field { display: block; position: relative; margin-bottom: 14px; }
.orn-ac__field[hidden] { display: none !important; }
.orn-ac__label { display: block; font-size: 12.5px; margin-bottom: 5px; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-ac__input { width: 100%; box-sizing: border-box; background: var(--orn-cream-2, rgb(246, 241, 230)); border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); border-radius: 5px; padding: 11px 14px; font-family: var(--orn-font-body); font-size: 14.5px; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-ac__input:focus { outline: none; background: var(--orn-paper, #fff); border-color: var(--orn-gold, rgb(193, 142, 69)); box-shadow: 0 0 0 3px rgba(201, 164, 92, 0.18); }
.orn-ac__input--otp { letter-spacing: 0.35em; text-align: center; font-size: 18px; }
/* Dial code beside the number, one field to the eye. The select takes only the width its
   longest code needs so the number keeps the rest. */
.orn-ac__inline { display: flex; gap: 8px; }
.orn-ac__input--dial { width: auto; flex: 0 0 auto; padding-left: 10px; padding-right: 8px; }
.orn-ac__input--tel { flex: 1 1 auto; min-width: 0; }
/* "Priced for <customer>" - sits with the total on both surfaces. */
.orn-ac__pricedfor { margin-top: 8px; font-size: 12.5px; color: var(--orn-mute); }
.orn-ac__pricedfor a { color: var(--orn-gold); text-decoration: underline; }
.orn-ac__radios { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 6px; }
.orn-ac__radios label { display: inline-flex; align-items: center; gap: 6px; font-size: 13.5px; color: var(--orn-ink); cursor: pointer; }
.orn-ac__hint { font-size: 12px; color: var(--orn-mute, rgb(154, 138, 110)); margin: 0 0 16px; }
.orn-ac__btn { width: 100%; background: var(--orn-ink, rgb(20, 35, 59)); color: #fff; border: 0; border-radius: 5px; padding: 12px 16px; font-family: var(--orn-font-body); font-size: 14.5px; cursor: pointer; }
.orn-ac__btn:disabled { opacity: 0.6; cursor: default; }
.orn-ac__link { display: block; width: 100%; background: none; border: 0; margin-top: 10px; color: var(--orn-gold); font-size: 13px; cursor: pointer; text-decoration: underline; }
.orn-ac__sugg { list-style: none; margin: 2px 0 0; padding: 4px 0; position: absolute; z-index: 10; left: 0; right: 0; background: var(--orn-paper, #fff); border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); border-radius: 5px; box-shadow: 0 8px 20px rgba(20, 35, 59, 0.14); max-height: 210px; overflow-y: auto; }
.orn-ac__sugg[hidden] { display: none !important; }
/* The recently-verified shortlist sits inline in the modal, not as an overlay
   dropdown like the city autocomplete it shares .orn-ac__sugg with. */
.orn-ac__sugg--inline { position: static; box-shadow: none; margin-top: 5px; max-height: 168px; }
.orn-ac__sugg-item { padding: 8px 13px; font-size: 13.5px; cursor: pointer; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-ac__sugg-item:hover { background: var(--orn-cream-2, rgb(246, 241, 230)); }
/* Proposal email form + copy-link toast (ornholidays-quote-share.js), on the FD
   tour page and the FIT proposal page alike. */
.orn-qs__panel { max-width: 520px; }
.orn-qs__bodyhd { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 5px; }
.orn-qs__bodyhd .orn-ac__label { margin-bottom: 0; }
.orn-qs__preset { font-size: 12.5px; padding: 4px 8px; border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); border-radius: 5px; background: var(--orn-paper, #fff); color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-qs__preset[hidden], .orn-qs__body[hidden], .orn-qs__preview[hidden] { display: none !important; }
.orn-qs__body { min-height: 150px; resize: vertical; line-height: 1.5; }
.orn-qs__preview { max-height: 200px; overflow-y: auto; background: var(--orn-cream-2, rgb(246, 241, 230)); border-radius: 5px; padding: 11px 14px; font-size: 13.5px; line-height: 1.5; color: var(--orn-ink, rgb(20, 35, 59)); }
.orn-qs__opts { display: flex; flex-direction: column; gap: 8px; }
.orn-qs__opts label { display: inline-flex; align-items: center; gap: 8px; font-size: 13.5px; color: var(--orn-ink, rgb(20, 35, 59)); cursor: pointer; }
.orn-qs__toast { position: fixed; left: 50%; bottom: 28px; transform: translate(-50%, 12px); z-index: 4100; background: var(--orn-ink, rgb(20, 35, 59)); color: #fff; font-size: 14px; padding: 11px 18px; border-radius: 6px; box-shadow: 0 10px 30px rgba(20, 35, 59, 0.25); opacity: 0; transition: opacity 0.25s ease, transform 0.25s ease; pointer-events: none; }
.orn-qs__toast.is-on { opacity: 1; transform: translate(-50%, 0); }
.orn-qs__toast--err { background: rgb(150, 45, 38); }
/* FD quote phone bar: Email / Copy link under the book action */
.orn-jd__qbar-shares { display: flex; gap: 8px; margin-top: 8px; }
.orn-jd__qbar-share { flex: 1 1 0; background: none; border: 1px solid var(--orn-line-2, rgba(20, 35, 59, 0.18)); border-radius: 6px; padding: 9px 10px; font-size: 13.5px; color: var(--orn-ink, rgb(20, 35, 59)); cursor: pointer; }
/* "Booking for" - the in-form control. Two rules, not one: the FD page and the
   published-journey rail are separate design systems (--orn-* vs --fit-*) with
   different field geometry, so each control copies its OWN neighbours. Sharing a
   rule made the journey rail's field the wrong radius, padding and palette. */

/* FD step 1 - matches .orn-jd__dt-roomspax-trigger beside it */
.orn-jd__dt-bookingfor { display: block; width: 100%; box-sizing: border-box; text-align: left; background: var(--orn-cream-2); border: 1px dashed var(--orn-gold); border-radius: 10px; padding: 10px 14px; font-family: Archivo, sans-serif; font-size: 14px; font-weight: 600; color: var(--orn-gold); cursor: pointer; }
.orn-jd__dt-bookingfor:hover { border-color: var(--orn-gold); background: var(--orn-paper, #fff); }
.orn-jd__dt-bookingfor.is-set { border-style: solid; border-color: var(--orn-line); color: var(--orn-text); cursor: default; }
/* The way through to the attached customer's lead: inside the field's box, at the right, so
   it belongs to the customer it names. A sibling of the button rather than a child - the
   button is disabled once a customer is set and would swallow the click - which is what the
   positioned wrapper is for. has-leadlink reserves the room so a long name cannot run under
   it. */
.orn-jd__dt-bookingfor-wrap { position: relative; }
.orn-jd__dt-bookingfor.has-leadlink { padding-right: 104px; }
.orn-jd__dt-leadlink { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); font-size: 12px; font-weight: 600; color: var(--orn-gold); text-decoration: underline; white-space: nowrap; }
.orn-jd__dt-leadlink:hover { color: var(--orn-gold-2, var(--orn-gold)); }

/* Journey rail - matches .orn-fit__excity-inp in the same card stack */
.orn-fit__dt-bookingfor { display: block; width: 100%; box-sizing: border-box; text-align: left; margin-top: 10px; background: #fff; border: 1px dashed var(--fit-ink); border-radius: 12px; padding: 13px 15px; font: 500 15px/1.2 var(--fit-sans); color: var(--fit-ink); cursor: pointer; }
.orn-fit__dt-bookingfor:hover { border-color: var(--fit-red); }
.orn-fit__dt-bookingfor.is-set { border-style: solid; border-color: var(--fit-border); cursor: default; }
/* Same shape as the FD control above: inside the box, right-aligned, sibling of a disabled
   button. The wrapper carries the button's own top margin so the box keeps its place in the
   card stack. */
.orn-fit__dt-bookingfor-wrap { position: relative; margin-top: 10px; }
/* The gap moves to the wrapper: left on the button it collapses through the wrapper's top
   edge, so the wrapper's box no longer matches the button's and the link centres off it. */
.orn-fit__dt-bookingfor-wrap .orn-fit__dt-bookingfor { margin-top: 0; }
.orn-fit__dt-bookingfor.has-leadlink { padding-right: 110px; }
.orn-fit__dt-leadlink { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); font: 600 12.5px/1.2 var(--fit-sans); color: var(--fit-red); text-decoration: underline; white-space: nowrap; }
.orn-fit__dt-leadlink:hover { opacity: 0.85; }

/* Welcome — 4-card story strip (horizontal scroll on mobile, 4-across on desktop). */
.orn-lp-storystrip { padding-top: clamp(40px, 3vw, 48px); padding-bottom: 0; }
.orn-lp-storystrip__rail { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.orn-lp-storycard { color: #fff; display: flex; flex-direction: column; min-width: 0; }
.orn-lp-storycard__img { width: 100%; aspect-ratio: 16 / 9; overflow: hidden; border-radius: 6px; margin-bottom: 14px; background: rgba(255,255,255,0.04); }
.orn-lp-storycard__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.orn-lp-storycard__title { font: 700 18px/1.25 var(--orn-font-body); color: #fff; margin: 0 0 10px; position: relative; padding-bottom: 8px; }
.orn-lp-storycard__title::after { content: ""; display: block; width: 28px; height: 2px; background: #E4002B; position: absolute; left: 0; bottom: 0; }
.orn-lp-storycard__body { font: 400 14px/1.5 var(--orn-font-body); color: rgba(255,255,255,0.82); margin: 6px 0 0; }
@media (max-width: 900px) {
    .orn-lp-storystrip__rail { display: flex; grid-template-columns: none; gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; padding-bottom: 8px; }
    .orn-lp-storystrip__rail::-webkit-scrollbar { display: none; }
    .orn-lp-storycard { flex: 0 0 78%; scroll-snap-align: start; }
}

/* ============================================================
   Agent lead detail (templates/ornholidays/partner/lead_detail.jsp)
   The agent-facing counterpart of the staff CRM page. Its own block
   rather than reused .orn-cd-* rules, because that set is tuned to
   the credit dashboard's ledger table and would fight this layout.
   ============================================================ */
.orn-page--agent-lead { background: var(--orn-cream); }
.orn-ald { padding: 24px 0 56px; }
.orn-ald__crumb { font: 500 13px/1.2 var(--orn-font-body); margin-bottom: 14px; }
.orn-ald__crumb a { color: var(--orn-text-muted); text-decoration: none; }
.orn-ald__crumb a:hover { color: #E4002B; }

/* travel_styles.css is loaded on this page (legacy chrome -> StaticFileGroup.DEFAULT_TF) and
   carries a full element reset: h1 { padding: 24px 0 44px; text-shadow: 0 1px 0 #eee },
   h2 { padding: 0 0 13px }, h3 { padding: 13px 0 10px }, p { padding: 0 0 2px }. These classes
   declared font and margin but not padding, so the legacy padding came through - which is what
   made the title sit in a tall band with embossed text. Declared explicitly here rather than
   with a blanket element reset, because the comments fragment in the right-hand pane WANTS the
   legacy styling and a blanket reset would strip it. */
/* travel_styles.css:522 is `header { background:#fff; width:100%; border-bottom:1px solid #ddd }`
   - a bare element selector, and .orn-ald__head is a <header>. That is the white full-bleed band
   with a hairline under it, not anything this skin asked for. */
.orn-ald__head { margin-bottom: 20px; background: none; width: auto; border-bottom: 0; }
.orn-ald__title { font: 700 26px/1.2 var(--orn-font-body); color: var(--orn-text); margin: 0 0 8px; padding: 0; text-shadow: none; }
.orn-ald__sub { display: flex; flex-wrap: wrap; gap: 8px; }
.orn-ald__pill { display: inline-block; padding: 4px 10px; border-radius: 999px; background: var(--orn-cream-3); color: var(--orn-ink-2); font: 600 11px/1.4 var(--orn-font-body); letter-spacing: 0.04em; text-transform: uppercase; }
.orn-ald__pill--ok { background: rgba(22, 130, 74, 0.12); color: rgb(16, 105, 58); }
.orn-ald__pill--warn { background: rgba(228, 0, 43, 0.10); color: #E4002B; }
.orn-ald__pill--seg { background: rgba(20, 35, 59, 0.08); color: var(--orn-ink-2); }

/* Two columns on desktop, stacked on mobile. The record side is wider
   because the timeline is the tallest thing on the page. */
.orn-ald__grid { display: grid; grid-template-columns: minmax(0, 320px) minmax(0, 1fr); gap: 20px; align-items: start; }
.orn-ald__col { min-width: 0; display: flex; flex-direction: column; gap: 16px; }

.orn-ald__card { background: var(--orn-paper); border: 1px solid var(--orn-cream-3); border-radius: 10px; padding: 18px; }
.orn-ald__card--flush { padding: 0; overflow: hidden; }
.orn-ald__card-title { font: 700 13px/1.2 var(--orn-font-body); color: var(--orn-text); margin: 0 0 14px; padding: 0; letter-spacing: 0.05em; text-transform: uppercase; }

/* Same metrics as customer_crm_detail.jsp's .crmd-kv-row: a 110px label column, 6px gap, 13px
   body, baseline-aligned, separated by margin rather than a rule. The ORN skin's usual 14-16px
   reading sizes are for consumer pages; this is a dense working screen and must not be bigger
   than the CRM page an agent may see beside it. */
/* start, not baseline: several value cells now stack a control, a note and a Save, and a
   baseline-aligned label floats oddly against a tall cell like that. */
.orn-ald__kv { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 6px; margin-bottom: 8px; align-items: start; font: 400 13px/1.45 var(--orn-font-body); }
.orn-ald__kv > .orn-ald__k { padding-top: 3px; }
.orn-ald__k { color: var(--orn-text-muted); font: 700 10px/1.4 var(--orn-font-body); text-transform: uppercase; letter-spacing: 0.05em; }
/* min-width:0 is what stops a row of selects blowing the column out - without it "2 Adults"
   clips to "2 Adu". */
.orn-ald__v { min-width: 0; color: var(--orn-text); word-break: break-word; }
.orn-ald__muted { color: var(--orn-text-muted); }

/* Several values hold a control plus a note plus a Save rather than a word, so the value cell
   stacks its children. */
.orn-ald__v > .orn-ald__row { margin-bottom: 6px; }
.orn-ald__v > .orn-ald__actions { margin-top: 8px; }
.orn-ald__v > .orn-ald__note:first-child { margin-top: 0; }
/* A hidden input carries the picked city id. Belt and braces: nothing should paint it, and an
   empty bordered box appearing mid-card is exactly what it looks like when something does. */
.orn-ald input[type="hidden"] { display: none !important; }

/* Seller tags on the travel-intent card. HNI is the one that carries weight, so it is the one
   that gets the brand red; the rest stay quiet chips. */
.orn-ald__tag { display: inline-block; padding: 3px 10px; margin: 2px 6px 2px 0; border: 1px solid var(--orn-cream-3); border-radius: 12px; background: var(--orn-cream); color: var(--orn-ink-2); font: 700 11px/1.4 var(--orn-font-body); letter-spacing: 0.04em; }
.orn-ald__tag--hni { background: #E4002B; border-color: #E4002B; color: #fff; }

.orn-ald__field { margin-bottom: 16px; }
.orn-ald__label { display: block; font: 700 10px/1.4 var(--orn-font-body); color: var(--orn-text-muted); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 6px; }
/* flex:1 1 0 + min-width:0 on the children, so a date+time or adults+children pair splits the
   column evenly and shrinks instead of overflowing it. */
.orn-ald__row { display: flex; gap: 8px; }
.orn-ald__row > .orn-ald__input { flex: 1 1 0; min-width: 0; }
.orn-ald__input { width: 100%; box-sizing: border-box; padding: 6px 8px; border: 1px solid var(--orn-cream-3); border-radius: 4px; background: #fff; font: 400 13px/1.3 var(--orn-font-body); color: var(--orn-text); }
.orn-ald__input:disabled { background: var(--orn-cream); color: var(--orn-text-muted); }
/* The native date/time controls carry their own spinner and picker glyph, so they need the
   smaller type to fit the 110px-label grid without clipping. */
.orn-ald__input[type="date"], .orn-ald__input[type="time"] { font-size: 12px; }
/* The native multi-select is the fallback only: select2 (bundled in jquery-yui-min.js) replaces
   it on load. Both are styled so the field looks right either way. */
.orn-ald__input--multi { padding: 4px; max-height: 96px; }
.orn-ald__input--multi option { padding: 2px 4px; }
.orn-ald__note { font: 400 11px/1.45 var(--orn-font-body); color: var(--orn-text-muted); margin: 4px 0 0; padding: 0; }

.orn-ald__actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
/* Brand red and a small rectangle, matching .crmd-save - these are dense working controls, not
   the consumer CTA pills the rest of the ORN skin uses. */
.orn-ald__btn { padding: 6px 14px; border: 0; border-radius: 4px; background: #E4002B; color: #fff; font: 700 12px/1.3 var(--orn-font-body); cursor: pointer; }
.orn-ald__btn:hover { background: #b8001f; }
.orn-ald__btn:disabled { opacity: 0.55; cursor: default; }
.orn-ald__msg { font: 500 11px/1.3 var(--orn-font-body); color: var(--orn-text-muted); }
.orn-ald__msg.is-ok { color: rgb(16, 105, 58); }
.orn-ald__msg.is-err { color: #E4002B; }
.orn-ald__btn--quiet { background: #8a94a4; }
.orn-ald__btn--quiet:hover { background: #6f7a8b; }

/* Journey stage: eight segments filled to the lead's ordinal rank. The only genuinely new
   widget on this page - everything else reuses the card/kv rules above. */
.orn-ald__stage { display: flex; gap: 3px; margin-bottom: 4px; }
.orn-ald__stage-seg { flex: 1 1 0; height: 5px; border-radius: 2px; background: var(--orn-cream-3); }
.orn-ald__stage-seg.is-on { background: #E4002B; }
.orn-ald__stage-label { font: 700 11px/1.3 var(--orn-font-body); color: var(--orn-text); letter-spacing: 0.03em; }

/* Lifted into MODAL_PANEL's .blockDialog on demand; hidden in the page until then. A width here
   rather than on the dialog, because MODAL_PANEL sizes itself to its content. */
.orn-ald__modal { width: 320px; max-width: 100%; padding: 4px 2px; text-align: left; }

.orn-ald__tabs { display: flex; gap: 2px; border-bottom: 1px solid var(--orn-cream-3); padding: 0 8px; }
.orn-ald__tab { padding: 13px 16px; border: 0; background: transparent; border-bottom: 2px solid transparent; margin-bottom: -1px; font: 700 12px/1.2 var(--orn-font-body); letter-spacing: 0.05em; text-transform: uppercase; color: var(--orn-text-muted); cursor: pointer; }
.orn-ald__tab.is-active { color: #E4002B; border-bottom-color: #E4002B; }
/* [hidden] is not in play here - panes toggle on .is-active so the markup
   stays declarative and one rule governs both states. */
/* 13px body, as on the CRM page. The pane inherited the ORN consumer reading size, which made
   the proposals list read a size and a half larger than the cards beside it. The timeline's own
   .crmd-tl-* rules set their sizes explicitly, so they are unaffected. */
.orn-ald__pane { display: none; padding: 18px; font-size: 13px; }
.orn-ald__pane.is-active { display: block; }
.orn-ald__empty { padding: 26px 0; text-align: center; color: var(--orn-text-muted); font: 400 12px/1.5 var(--orn-font-body); margin: 0; }

/* Metrics from .crmd-quote-row: 12px rows, a 10px uppercase ref, a 13px name, 11px meta and a
   12px right-hand money column. */
.orn-ald__quote { display: flex; gap: 14px; align-items: flex-start; justify-content: space-between; padding: 12px 0; border-bottom: 1px solid var(--orn-cream); }
.orn-ald__quote:last-child { border-bottom: 0; }
.orn-ald__quote-main { min-width: 0; }
.orn-ald__quote-ref { font: 700 10px/1.4 var(--orn-font-body); color: var(--orn-text-muted); letter-spacing: 0.05em; text-transform: uppercase; }
.orn-ald__quote-name { font: 600 13px/1.4 var(--orn-font-body); color: var(--orn-text); margin: 2px 0 0; }
.orn-ald__quote .orn-ald__muted { font-size: 11px; margin-top: 4px; }
.orn-ald__quote-side { flex: 0 0 auto; text-align: right; font-size: 12px; white-space: nowrap; }
.orn-ald__quote-price { font-weight: 700; color: var(--orn-text); white-space: nowrap; }
/* Per-person sits under the total, smaller — an agent quotes per person more often, but the
   total is the figure that anchors the row. The qualifier keeps the two from being read as
   one number twice. */
.orn-ald__quote-pp { color: var(--orn-text-muted); white-space: nowrap; margin-top: 3px; }
.orn-ald__quote-qual { font-weight: 400; font-size: 11px; color: var(--orn-text-muted); }
.orn-ald__link { display: inline-block; margin-top: 4px; font: 600 12px/1.2 var(--orn-font-body); color: #E4002B; text-decoration: none; white-space: nowrap; }

/* The timeline arrives as a server-rendered string built for the CRM page, so it
   brings .crmd-tl-* markup whose rules live in that page's inline <style> - which
   this page does not include. Ported here rather than restyled, so the timeline
   reads identically on both pages and the renderer stays the single source of
   that markup. Every rule is scoped under .orn-ald__pane so none of it can reach
   another ORN page. */
.orn-ald__pane .crmd-timeline { max-width: 100%; overflow-x: auto; }
.orn-ald__pane img { max-width: 100%; }
.orn-ald__pane .crmd-timeline-empty { padding: 24px; text-align: center; color: #888; font-size: 12px; }
.orn-ald__pane .crmd-tl-label { display: inline-block; border-radius: 3px; color: #fff; padding: 1px 4px 2px; font-size: 12px; margin: 0 2px; line-height: 18px; font-weight: bold; white-space: nowrap; }
.orn-ald__pane .crmd-tl-label-yellow { background: #F7E64F; color: #222; font-weight: normal; }
.orn-ald__pane .crmd-tl-datecube { text-align: center; width: 56px; float: left; position: relative; margin-right: 12px; }
.orn-ald__pane .crmd-tl-datecube:after { position: absolute; top: 11px; width: 37%; border-top: 2px solid #E21313; right: -15px; height: 0; content: ''; }
.orn-ald__pane .crmd-tl-timecube { text-align: center; width: 56px; float: left; position: relative; margin-right: 12px; }
.orn-ald__pane .crmd-tl-timecube:after { position: absolute; top: 11px; width: 55%; border-top: 2px solid #E21313; right: -15px; height: 0; content: ''; }
.orn-ald__pane .crmd-tl-clear { clear: both; height: 12px; }
.orn-ald__pane .crmd-tl-timecube .sSmallF { font-size: 10px; color: #888; margin-top: 2px; }

/* Call player. Rebuilt for this page because the CRM one needs jQuery + MODAL_PANEL. */
.orn-ald__player { position: fixed; inset: 0; z-index: 4000; background: rgba(0, 0, 0, 0.55); display: flex; align-items: center; justify-content: center; padding: 20px; }
/* Must come after the rule above and must be !important-free but specific enough to win:
   the browser's own [hidden] rule is only display:none at UA specificity, so the class
   above would otherwise keep the overlay on screen from page load. */
.orn-ald__player[hidden] { display: none; }
.orn-ald__player-box { position: relative; width: 100%; max-width: 460px; background: var(--orn-paper); border-radius: 12px; padding: 20px; }
.orn-ald__player-close { position: absolute; top: 8px; right: 10px; border: 0; background: transparent; font-size: 26px; line-height: 1; color: var(--orn-text-muted); cursor: pointer; }
.orn-ald__audio { width: 100%; }
.orn-ald__speeds { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 12px; }
.orn-ald__speed { padding: 5px 11px; border: 1px solid var(--orn-cream-3); border-radius: 999px; background: #fff; font: 600 12px/1.2 var(--orn-font-body); color: var(--orn-text-muted); cursor: pointer; }
.orn-ald__speed.is-active { border-color: #E4002B; color: #E4002B; }

@media (max-width: 900px) {
    .orn-ald__grid { grid-template-columns: minmax(0, 1fr); }
    .orn-ald__title { font-size: 22px; }
    .orn-ald__tabs { overflow-x: auto; scrollbar-width: none; }
    .orn-ald__tabs::-webkit-scrollbar { display: none; }
    .orn-ald__quote { flex-direction: column; }
    .orn-ald__quote-side { text-align: left; }
}

/* ============================================================
   ORN styling for the shared legacy list pages (My Leads,
   My Quotes). Those JSPs keep their tfcom markup - the ORN header
   already renders on them, because header_new.jsp resolves its
   inner header through getTemplateJSP - so all they need is a small
   set of overrides.

   No extra scoping class: this stylesheet is only ever loaded from
   templates/ornholidays (meta_info.jsp and header.jsp), so on any
   other partner it is not on the page at all. The load is the
   scope, and the tfcom class names below are safe to target
   directly because of it.
   ============================================================ */
.heading { font: 700 26px/1.2 var(--orn-font-body); color: var(--orn-text); }

/* Anchors in the results tables carried no colour or underline, so a customer
   name and a quote name read as plain text and nothing invited a click.
   Both selectors are needed: the proposals page swaps .ptyTb for
   .tbsorter-xpad when the sortable header filters are on, and keeps #dataTbl
   in either case. */
.ptyTb a,
#dataTbl a { color: #E4002B; text-decoration: none; font-weight: 600; }
.ptyTb a:hover,
#dataTbl a:hover { text-decoration: underline; }
.ptyTb a:visited,
#dataTbl a:visited { color: #E4002B; }

/* Pagination is anchors too, but it is chrome rather than content - keep it
   quiet so it does not compete with the row links above. */
.pages a { color: var(--orn-ink-2); text-decoration: none; font-weight: 500; }
.pages a:hover { color: #E4002B; }

/* ── "Edit Nights" modal (ornholidays-published-journey.js, NightsEditor) —
   bespoke to its own design spec (Claude Design "ORN Holidays - Europe by the
   Seat"), not the .orn-ac__* dialog family — colors/type/spacing below are
   copied from that design verbatim rather than reusing FD/journey tokens. */
body.orn-en-open { overflow: hidden; }
.orn-en__ovl { position: fixed; inset: 0; z-index: 4000; background: rgba(15, 23, 38, 0.55); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; padding: 18px; overflow-y: auto; }
.orn-en__ovl[hidden] { display: none !important; }
.orn-en__panel { position: relative; width: 100%; max-width: 480px; background: #fff; border-radius: 16px; box-shadow: 0 24px 60px rgba(15, 23, 38, 0.35); box-sizing: border-box; overflow: hidden; display: flex; flex-direction: column; }
.orn-en__hd { position: relative; padding: 28px 28px 20px; border-bottom: 1px solid rgb(240, 240, 240); box-sizing: border-box; }
.orn-en__title { display: block; font-family: Archivo, sans-serif; font-weight: 800; font-size: 22px; line-height: 26px; color: rgb(20, 35, 59); }
.orn-en__x { position: absolute; right: 20px; top: 20px; width: 28px; height: 28px; border-radius: 14px; background: rgb(246, 246, 246); border: 0; display: flex; align-items: center; justify-content: center; font-family: Archivo, sans-serif; font-size: 18px; line-height: 1; color: rgb(110, 110, 110); cursor: pointer; }
.orn-en__x:hover { background: rgb(236, 236, 236); }
.orn-en__sub { margin: 6px 0 0; font-family: Archivo, sans-serif; font-weight: 400; font-size: 13.5px; line-height: 20.5px; color: rgb(110, 110, 110); }
.orn-en__err { margin: 14px 28px 0; font-size: 13px; border-radius: 6px; padding: 9px 11px; background: rgba(228, 0, 43, 0.08); color: rgb(150, 20, 30); }
.orn-en__err[hidden] { display: none !important; }
.orn-en__body { padding: 8px 28px 0; box-sizing: border-box; position: relative; max-height: 315px; overflow-y: auto; }
.orn-en__row { position: relative; display: flex; flex-direction: row; justify-content: space-between; align-items: center; padding: 16px 0; border-bottom: 1px solid rgb(240, 240, 240); box-sizing: border-box; }
.orn-en__row:last-child { border-bottom: 0; }
.orn-en__city { font-family: Archivo, sans-serif; font-weight: 500; font-size: 15px; color: rgb(20, 35, 59); }
.orn-en__locked { font-size: 13px; color: rgb(154, 138, 110); }
/* 1–50 nights dropdown per city (mirrors orn-ui's EnterDestination night
   picker) — a custom trigger + floating list (see NightsEditor.openDropdown),
   not a native <select>, so its open state can carry the design's own focus
   ring and caret rotation. */
.orn-en__dd { width: 130px; height: 38px; border-radius: 8px; background: #fff; box-shadow: inset 0 0 0 1px rgba(20, 35, 59, 0.18); border: 0; display: flex; align-items: center; padding: 0 12px; box-sizing: border-box; justify-content: space-between; cursor: pointer; transition: box-shadow 0.15s ease; font: inherit; }
.orn-en__dd.is-open { box-shadow: 0 0 0 2px rgb(20, 35, 59); }
.orn-en__dd-lbl { font-family: Archivo, sans-serif; font-weight: 600; font-size: 13.5px; color: rgb(20, 35, 59); white-space: nowrap; }
.orn-en__dd-caret { flex-shrink: 0; transition: transform 0.15s ease; }
.orn-en__dd.is-open .orn-en__dd-caret { transform: rotate(180deg); }
.orn-en__dd-list { position: fixed; width: 130px; max-height: 220px; overflow-y: auto; border-radius: 8px; background: #fff; box-shadow: 0 12px 28px rgba(20, 35, 59, 0.18); border: 1px solid rgb(234, 234, 234); z-index: 4001; }
.orn-en__dd-opt { padding: 9px 14px; font-family: Archivo, sans-serif; font-weight: 400; font-size: 13.5px; color: rgb(20, 35, 59); background: #fff; cursor: pointer; white-space: nowrap; }
.orn-en__dd-opt:hover { background: rgb(250, 250, 250); }
.orn-en__dd-opt.is-sel { font-weight: 700; background: rgb(246, 246, 246); }
.orn-en__ft { position: relative; z-index: 1; padding: 18px 28px; background: rgb(250, 250, 251); border-top: 1px solid rgba(20, 35, 59, 0.1); box-shadow: 0 -4px 8px rgba(20, 35, 59, 0.06); border-radius: 0 0 16px 16px; box-sizing: border-box; display: flex; flex-direction: row; justify-content: space-between; align-items: center; gap: 20px; }
.orn-en__total { display: flex; flex-direction: column; gap: 6px; align-items: baseline; flex-shrink: 0; }
.orn-en__total-lbl { font-family: Archivo, sans-serif; font-weight: 400; font-size: 14px; color: rgb(110, 110, 110); white-space: nowrap; }
.orn-en__total-val { font-family: Archivo, sans-serif; font-weight: 700; font-size: 15px; color: rgb(20, 35, 59); white-space: nowrap; }
.orn-en__save { width: 160px; height: 44px; border-radius: 8px; background: rgb(20, 35, 59); border: 0; display: flex; justify-content: center; align-items: center; box-sizing: border-box; flex-shrink: 0; cursor: pointer; transition: background 0.15s ease; font-family: Archivo, sans-serif; font-weight: 600; font-size: 14px; color: #fff; }
.orn-en__save:hover:not(:disabled) { background: rgb(30, 48, 76); }
.orn-en__save:disabled { opacity: 0.6; cursor: default; }
/* Edit Cities & Nights (staff): the drag grip, a new city's search input, remove,
   "+ Add another city", and the city search menu - put on <body> so the scrolling
   row list doesn't clip it, and lifted above the dialog while it is open. */
.orn-en__row--cities { justify-content: flex-start; gap: 10px; }
.orn-en__row--cities .orn-en__city { flex: 1 1 auto; min-width: 0; }
.orn-en__row--cities.orn-en__row--locked .orn-en__locked { margin-left: auto; }
.orn-en__drag { flex: 0 0 18px; width: 18px; height: 18px; display: flex; align-items: center; justify-content: center; cursor: grab; fill: rgb(150, 150, 150); }
.orn-en__drag:hover { fill: rgb(20, 35, 59); }
.orn-en__drag.is-off { cursor: default; }
.orn-en__row--ghost { opacity: 0.4; background: rgb(246, 246, 246); }
.orn-en__city--new .tf-autocomplete { display: block !important; width: 100%; }
.orn-en__city-inp { width: 100%; height: 38px; box-sizing: border-box; padding: 0 12px; border: 0; border-radius: 8px; box-shadow: inset 0 0 0 1px rgba(20, 35, 59, 0.18); background: #fff; outline: none; font-family: Archivo, sans-serif; font-weight: 500; font-size: 14px; color: rgb(20, 35, 59); }
.orn-en__city-inp:focus { box-shadow: 0 0 0 2px rgb(20, 35, 59); }
.orn-en__rm { flex: 0 0 28px; width: 28px; height: 28px; border-radius: 14px; border: 0; background: rgb(246, 246, 246); display: flex; align-items: center; justify-content: center; font-family: Archivo, sans-serif; font-size: 18px; line-height: 1; color: rgb(110, 110, 110); cursor: pointer; }
.orn-en__rm:hover:not(:disabled) { background: rgba(228, 0, 43, 0.1); color: rgb(150, 20, 30); }
.orn-en__rm:disabled { opacity: 0.4; cursor: default; }
.orn-en__add-ctr { padding: 6px 28px 14px; box-sizing: border-box; }
.orn-en__add { border: 0; background: none; padding: 6px 0; font-family: Archivo, sans-serif; font-weight: 600; font-size: 14px; color: rgb(20, 35, 59); cursor: pointer; }
.orn-en__add:hover { text-decoration: underline; }
body.orn-en-open .tt-menu-bdy { z-index: 4002; max-height: 260px; overflow-y: auto; background: #fff; border-radius: 8px; border: 1px solid rgb(234, 234, 234); box-shadow: 0 12px 28px rgba(20, 35, 59, 0.18); }
body.orn-en-open .tt-menu-bdy .tt-suggestion { padding: 9px 14px; cursor: pointer; }
body.orn-en-open .tt-menu-bdy .tt-suggestion.tt-cursor,
body.orn-en-open .tt-menu-bdy .tt-suggestion:hover { background: rgb(246, 246, 246); }
body.orn-en-open .tt-menu-bdy .arptACItm .ttl { font-family: Archivo, sans-serif; font-weight: 600; font-size: 13.5px; color: rgb(20, 35, 59); }
body.orn-en-open .tt-menu-bdy .arptACItm .sub { margin-top: 2px; font-family: Archivo, sans-serif; font-size: 12px; color: rgb(110, 110, 110); }
/* A published journey staged to be added before or after this one: its cities
   as one block, which only comes off whole, and the ID box that adds it. */
.orn-en__added:empty { display: none; }
.orn-en__added { padding: 12px 28px 4px; box-sizing: border-box; }
#ornEnAddedAfter { padding-bottom: 18px; }
.orn-en__grp { border-radius: 10px; background: rgb(248, 247, 244); box-shadow: inset 0 0 0 1px rgba(154, 138, 110, 0.35); padding: 4px 14px; box-sizing: border-box; }
.orn-en__grp-hd { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 0 4px; }
.orn-en__grp-ttl { font-family: Archivo, sans-serif; font-weight: 700; font-size: 12px; letter-spacing: 0.04em; text-transform: uppercase; color: rgb(154, 138, 110); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.orn-en__grp-rm { flex: 0 0 24px; width: 24px; height: 24px; border-radius: 12px; border: 0; background: #fff; display: flex; align-items: center; justify-content: center; font-family: Archivo, sans-serif; font-size: 16px; line-height: 1; color: rgb(110, 110, 110); cursor: pointer; }
.orn-en__grp-rm:hover { background: rgba(228, 0, 43, 0.1); color: rgb(150, 20, 30); }
.orn-en__row--added { padding: 10px 0; border-bottom: 1px solid rgba(154, 138, 110, 0.2); }
.orn-en__row--added:last-child { border-bottom: 0; }
.orn-en__add-ctr[hidden], .orn-en__addj[hidden] { display: none !important; }
.orn-en__addj { padding: 4px 28px 16px; box-sizing: border-box; }
.orn-en__addj-lbl { display: block; margin-bottom: 8px; font-family: Archivo, sans-serif; font-weight: 600; font-size: 13px; color: rgb(110, 110, 110); }
.orn-en__addj-row { display: flex; gap: 8px; align-items: center; }
.orn-en__addj-inp { flex: 1 1 auto; min-width: 0; height: 38px; box-sizing: border-box; padding: 0 12px; border: 0; border-radius: 8px; box-shadow: inset 0 0 0 1px rgba(20, 35, 59, 0.18); background: #fff; outline: none; font-family: Archivo, sans-serif; font-weight: 500; font-size: 14px; color: rgb(20, 35, 59); }
.orn-en__addj-inp:focus { box-shadow: 0 0 0 2px rgb(20, 35, 59); }
.orn-en__addj-pos { flex: 0 0 auto; height: 38px; box-sizing: border-box; padding: 0 8px; border: 0; border-radius: 8px; box-shadow: inset 0 0 0 1px rgba(20, 35, 59, 0.18); background: #fff; font-family: Archivo, sans-serif; font-weight: 600; font-size: 13.5px; color: rgb(20, 35, 59); }
.orn-en__addj-btn { flex: 0 0 auto; height: 38px; padding: 0 16px; border-radius: 8px; border: 0; background: rgb(20, 35, 59); color: #fff; font-family: Archivo, sans-serif; font-weight: 600; font-size: 13.5px; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; }
.orn-en__addj-btn:disabled { opacity: 0.6; cursor: default; }
@media (max-width: 480px) {
    .orn-en__row--cities .orn-en__dd { width: 110px; }
    .orn-en__added, .orn-en__addj { padding-left: 16px; padding-right: 16px; }
}

/* ============================================================
   Legacy blockUI dialogs (MODAL_PANEL), restyled for ORN.

   These are the framework's own dialogs - the AJAX error panel, the
   availability/fare notices on the booking page, the wait panel - and
   they keep their legacy markup and class names. Only the appearance is
   overridden, because the JS builds the DOM and computes the geometry;
   touching width/position here would fight it.

   No extra scoping class: this stylesheet is only ever loaded from
   templates/ornholidays, and it is included AFTER the legacy sheet
   (meta_info.jsp pulls headTags.jsp first, then head_assets.jsp), so
   these win the cascade at equal specificity without !important.
   ============================================================ */
.blockUIOverlay { background-color: rgba(15, 15, 15, 0.55); }

.blockDialog {
    background-color: var(--orn-paper);
    border-radius: 14px;
    box-shadow: 0 18px 48px rgba(0, 0, 0, 0.22);
    font-family: var(--orn-font-body);
}

.blockMsg .blockHd {
    font: 700 17px/1.3 var(--orn-font-body);
    color: var(--orn-text);
    padding-bottom: 12px;
    border-bottom: 1px solid var(--orn-cream-3);
    margin-bottom: 4px;
}

/* The status icons are a shared sprite (gn_icons.gif) that reads as a
   different product. Drop the image and draw the badge instead - same box,
   same float, so the layout the JS assumes is unchanged. */
.blockAlert .infoAlert,
.blockAlert .errorAlert,
.blockAlert .successAlert,
.blockAlert .quesAlert {
    background-image: none;
    background-repeat: no-repeat;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    margin-top: 4px;
}
.blockAlert .infoAlert::after,
.blockAlert .errorAlert::after,
.blockAlert .successAlert::after,
.blockAlert .quesAlert::after {
    display: block;
    text-align: center;
    font: 700 21px/40px var(--orn-font-body);
    color: #fff;
}
.blockAlert .errorAlert   { background-color: #E4002B; }
.blockAlert .errorAlert::after   { content: "!"; }
.blockAlert .successAlert { background-color: rgb(22, 130, 74); }
.blockAlert .successAlert::after { content: "\2713"; }
.blockAlert .infoAlert,
.blockAlert .quesAlert    { background-color: var(--orn-ink-2); }
.blockAlert .infoAlert::after    { content: "i"; }
.blockAlert .quesAlert::after    { content: "?"; }

/* Was margin-left:65px against a 62px sprite; realigned to the 40px badge. */
.blockAlert .alertMsg {
    margin-left: 54px;
    font: 500 14px/1.5 var(--orn-font-body);
    color: var(--orn-text);
}

.blockAlert .alertAction { margin-top: 16px; }
.blockAlert .alertAction a {
    display: inline-block;
    padding: 9px 20px;
    border-radius: 999px;
    background: var(--orn-gold);
    color: #fff;
    font: 600 14px/1.2 var(--orn-font-body);
    text-decoration: none;
}
.blockAlert .alertAction a:hover { background: var(--orn-gold-2); }

/* The close affordance is a background image on a 29x28 box. Same box, drawn
   rather than fetched, so it stops being the one legacy-looking thing left. */
.blockMsg .blockClose,
.bkClose {
    background-image: none;
    background-color: var(--orn-text);
    border-radius: 50%;
    width: 26px;
    height: 26px;
    color: #fff;
    font: 400 18px/26px var(--orn-font-body);
    text-align: center;
}
.blockMsg .blockClose::after,
.bkClose::after { content: "\00d7"; display: block; }

/* Position is the one bit of geometry this block does have to own. The legacy
   sheets disagree about it - b2c.css puts the close at right:-10px/top:-16px,
   travel_styles.css at right:-35px/top:-40px - and which of them is on the page
   depends on the chrome: a customer page loads StaticFileGroup.DEFAULT_B2C, a
   staff one (My Leads, Consumer Journeys) loads DEFAULT_TF. Inheriting either
   left the badge detached from the card on staff pages. Both of those offsets
   were tuned for a 29x28 sprite whose artwork sat inside transparent padding;
   the drawn circle above has none, so it needs its own, and pinning it here
   makes the dialog look the same under both chromes. */
.blockMsg .blockClose,
.bkClose { top: -13px; right: -13px; }


/* select2 v4 and the comments fragment (common/util/comments.jsp) are styled by
   travel_styles.css, which this page now loads through the legacy chrome
   (headTagsRevised.jsp -> StaticFileGroup.DEFAULT_TF) exactly as its sibling pages
   My Leads and My Quotes do. Copies of those stylesheets used to live here and have
   been deleted: the real ones are loaded instead. What remains below is only the ORN
   sizing that rides on top of select2's base rules. */

/* ORN sizing on top of the base rules above, so the control matches the 13px inputs
   beside it rather than select2's own 28px default. */
.orn-ald .select2-container { width: 100% !important; }
.orn-ald .select2-container--default .select2-selection--multiple,
.orn-ald .select2-container--default .select2-selection--single { border: 1px solid var(--orn-cream-3); border-radius: 4px; font-size: 13px; min-height: 30px; }
.orn-ald .select2-container--default .select2-selection--multiple .select2-selection__choice { background: var(--orn-cream); border: 1px solid var(--orn-cream-3); border-radius: 3px; color: var(--orn-ink-2); font-size: 12px; margin: 3px 4px 0 0; padding: 1px 6px; }
.orn-ald .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { color: var(--orn-text-muted); margin-right: 4px; }
.orn-ald .select2-container .select2-search--inline .select2-search__field { font-family: var(--orn-font-body); font-size: 13px; }
.orn-ald .select2-dropdown { border-color: var(--orn-cream-3); font-size: 13px; }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background-color: #E4002B; }

/* Featured destinations rail — horizontal circles used below the hero on welcome + journeys_home.
   Section wraps with .orn-section--black so the black background comes from the site token. */
.orn-fd-rail { padding: 40px 0 20px; }

/* Welcome + journeys_home stack many .orn-section--black blocks. Mobile browsers can paint a
   1px subpixel gap between adjacent scroll-container sections; painting the body the same
   black as the sections makes those gaps invisible without touching per-section geometry. */
body.orn-page--welcome-home, body.orn-page--trip-journeys-home { background: var(--orn-text); }
.orn-fd-rail__list { list-style: none; margin: 0; padding: 4px 0; display: flex; gap: 22px; overflow-x: auto; -webkit-overflow-scrolling: touch; scroll-snap-type: x mandatory; }
.orn-fd-rail__list::-webkit-scrollbar { display: none; }
.orn-fd-item { flex: 0 0 auto; scroll-snap-align: start; }
.orn-fd-item__link { display: flex; flex-direction: column; align-items: center; gap: 8px; text-decoration: none; color: var(--orn-text-light); }
.orn-fd-item__img { width: 110px; height: 110px; border-radius: 50%; overflow: hidden; display: block; background: #1a1a1a; box-shadow: 0 1px 4px rgba(0,0,0,0.35); border: 2px solid #fff; }
.orn-fd-item__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.orn-fd-item__label { font-size: 14px; font-weight: 600; letter-spacing: 0.02em; }
.orn-fd-item__link:hover .orn-fd-item__img { transform: scale(1.03); transition: transform 200ms ease; }
@media (max-width: 640px) {
    .orn-fd-item__img { width: 86px; height: 86px; }
    .orn-fd-item__label { font-size: 13px; }
}

/* ---- Saved FD quote on the tour detail page (/tours/<slug>-<id>?cfgId=) ---- */
.orn-vhero__quote-msg { margin-top: 14px; padding: 10px 14px; border-radius: 10px; background: rgba(0,0,0,0.35); color: #fff; font-size: 13.5px; font-weight: 600; max-width: 640px; }
.orn-vhero__quote-msg a { color: #fff; text-decoration: underline; }

.orn-jd__qsender { background: var(--orn-paper); border: 1px solid var(--orn-line); border-radius: 18px; padding: 20px; margin-bottom: 16px; font-family: var(--orn-font-body); color: var(--orn-text); }
.orn-jd__qsender-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--orn-text-muted); margin-bottom: 10px; }
.orn-jd__qsender-row { display: flex; align-items: center; gap: 12px; }
.orn-jd__qsender-img { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; flex: 0 0 48px; }
.orn-jd__qsender-name { font-size: 16px; font-weight: 700; }
.orn-jd__qsender-agency { font-size: 13px; color: var(--orn-text-muted); }
.orn-jd__qsender-contact { display: block; margin-top: 8px; font-size: 14px; color: var(--orn-text); text-decoration: none; }
.orn-jd__qsender-contact:hover { text-decoration: underline; }

.orn-jd__dt-price-sched { margin: 14px 0 0; padding: 14px 0 0; border-top: 1px dashed var(--orn-line); }
.orn-jd__dt-price-sched .orn-jd__dt-price-eyebrow { color: var(--orn-text-muted); text-transform: uppercase; }
.orn-jd__dt-price-sched-row { display: flex; justify-content: space-between; gap: 12px; padding: 5px 0; font-size: 14.5px; color: var(--orn-text); }
.orn-jd__dt-price-sched-due { color: var(--orn-text-muted); }
.orn-jd__dt-price-cta-note--qmsg { font-weight: 600; }
.orn-jd__dt-price-cta-note--qmsg a { color: inherit; text-decoration: underline; }

.orn-jd__qaddons { margin-top: 16px; padding: 18px 20px; background: var(--orn-paper); border: 1px solid var(--orn-line); border-radius: 16px; }
.orn-jd__qaddons-list { margin: 6px 0 0; padding-left: 18px; font-size: 14.5px; line-height: 1.6; color: var(--orn-text); }

.orn-jd__sq-row--check { display: flex; gap: 10px; align-items: center; font-size: 14px; }

/* Book + "Save as Proposal" stacked full width, as on the FIT journey page */
.orn-jd__dt-price-cta-actions.orn-jd__dt-price-cta-actions--stack,
body.orn-jd-dates-rail .orn-jd__dt-price-cta-actions.orn-jd__dt-price-cta-actions--stack { display: flex; flex-direction: column; align-items: stretch; gap: 10px; width: 100%; max-width: 420px; }
.orn-jd__dt-price-cta-actions--stack > *,
body.orn-jd-dates-rail .orn-jd__dt-price-cta-actions--stack > * { flex: 0 0 auto; }
.orn-jd__dt-price-cta-row .orn-jd__dt-price-cta-actions--stack .orn-jd__dt-row-cta { width: 100%; max-width: none; text-align: center; }
.orn-vhero__price--stack { flex-direction: column; align-items: flex-start; }
.orn-vhero__meta-row svg { flex: 0 0 auto; }

/* FIT proposal mobile price sheet — light, like the desktop rail */
@media (max-width: 900px) {
  .orn-fit__msheet-summary .orn-fit__side { background: none; border: 0; padding: 0; }
  .orn-fit__msheet-x--abs { position: absolute; top: 10px; right: 12px; }
  .orn-fit__msheet-grip--light { background: rgba(20, 35, 59, 0.18); }
}

/* FD quote (phone): sticky total bar + price-details sheet, mirroring the FIT proposal */
.orn-jd__qsheet, .orn-jd__qsheet-backdrop { display: none; }
@media (max-width: 640px) {
  .orn-jd__qbar { display: flex; flex-direction: column; gap: 10px; }
  .orn-jd__qbar-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
  .orn-jd__qbar-info { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; min-width: 0; flex: 1 1 auto; background: none; border: 0; padding: 0; text-align: left; cursor: pointer; font-family: inherit; }
  .orn-jd__qbar-lbl { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--orn-text-muted); }
  .orn-jd__qbar-price { font-size: 22px; font-weight: 800; line-height: 1.05; color: var(--orn-text); }
  .orn-jd__qbar-gross { font-size: 14px; font-weight: 500; color: var(--orn-text-muted); text-decoration: line-through; margin-right: 4px; }
  .orn-jd__qbar-i { font-size: 15px; color: var(--orn-text-muted); font-weight: 400; }
  .orn-jd__qbar-edit { flex: none; border: 0; background: none; padding: 6px 4px; min-height: 40px; color: rgb(201, 10, 18); font: 700 13px/1 var(--orn-font-body); text-decoration: underline; cursor: pointer; }
  .orn-jd__qbar-cta { display: block; width: 100%; box-sizing: border-box; border: 0; border-radius: 12px; padding: 15px; background: rgb(242, 13, 22); color: #fff; font: 700 15px/1 var(--orn-font-body); text-align: center; text-decoration: none; cursor: pointer; }
  .orn-jd__qbar-msg { font-size: 13px; font-weight: 600; color: var(--orn-text); }
  .orn-jd__qbar-msg a { color: inherit; text-decoration: underline; }

  .orn-jd__qsheet-backdrop { display: block; position: fixed; inset: 0; z-index: 1160; background: rgba(0,0,0,.45); opacity: 0; pointer-events: none; transition: opacity .22s ease; }
  .orn-jd__qsheet-backdrop.is-open { opacity: 1; pointer-events: auto; }
  .orn-jd__qsheet { display: flex; flex-direction: column; position: fixed; left: 0; right: 0; bottom: 0; z-index: 1170; max-height: 92vh; background: #fff; border-radius: 20px 20px 0 0; box-shadow: 0 -10px 40px rgba(0,0,0,.25); transform: translateY(100%); transition: transform .28s cubic-bezier(.22,.61,.36,1); }
  .orn-jd__qsheet.is-open { transform: none; }
  body.orn-jd-qsheet-open { overflow: hidden; }
  .orn-jd__qsheet-grip { width: 40px; height: 4px; border-radius: 999px; background: rgba(20, 35, 59, 0.18); margin: 10px auto 2px; }
  .orn-jd__qsheet-x { position: absolute; top: 10px; right: 12px; min-width: 40px; min-height: 40px; border: 0; background: none; font-size: 26px; line-height: 1; color: var(--orn-text-muted); cursor: pointer; }
  .orn-jd__qsheet-body { flex: 1 1 auto; overflow-y: auto; padding: 14px 20px 8px; }
  .orn-jd__qsheet-pax { margin: 6px 0 12px; padding: 12px 14px; border: 1px solid var(--orn-line); border-radius: 12px; background: rgb(246, 246, 246); font-size: 15px; font-weight: 700; color: var(--orn-text); }
  .orn-jd__qsheet-row { display: flex; justify-content: space-between; gap: 12px; padding: 4px 0 14px; font-size: 14.5px; color: var(--orn-text-muted); border-bottom: 1px solid var(--orn-line); }
  .orn-jd__qsheet-row span:last-child { color: var(--orn-text); font-weight: 700; }
  .orn-jd__qsheet-total { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--orn-line); }
  .orn-jd__qsheet-total .orn-jd__dt-price-eyebrow { margin: 0; }
  .orn-jd__qsheet-total-v { display: flex; flex-direction: column; align-items: flex-end; font-family: var(--orn-font-mono); font-size: 26px; font-weight: 700; color: var(--orn-text); }
  .orn-jd__qsheet-body .orn-jd__dt-price-lines { padding: 10px 0; }
  .orn-jd__qsheet-body .orn-jd__dt-price-line { padding: 6px 0; }
  .orn-jd__qsheet-earn { padding: 12px 0; border-top: 1px solid var(--orn-line); color: rgb(22, 120, 70); font-weight: 700; }
  .orn-jd__qsheet-body .orn-jd__qaddons { margin: 14px 0 6px; border-radius: 12px; }
  .orn-jd__qsheet-foot { flex: none; padding: 12px 20px calc(12px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--orn-line); display: flex; flex-direction: column; gap: 8px; }
  .orn-jd__qsheet-note { text-align: center; font-size: 12.5px; color: var(--orn-text-muted); }
}
@media (max-width: 640px) {
  body.orn-page--journey.orn-jd-has-qbar { padding-bottom: calc(150px + env(safe-area-inset-bottom, 0px)); }
}
@media (max-width: 640px) {
  /* grip + close in a fixed head, so the close never sits over scrolled content */
  .orn-jd__qsheet-head { position: relative; flex: none; height: 40px; }
  .orn-jd__qsheet-head .orn-jd__qsheet-grip { position: absolute; top: 10px; left: 50%; margin: 0 0 0 -20px; }
  .orn-jd__qsheet-head .orn-jd__qsheet-x { top: 2px; }
  .orn-jd__qsheet-body { padding-top: 4px; }
  /* headings as on the FIT sheet: grey, uppercase */
  .orn-jd__qsheet .orn-jd__dt-price-eyebrow { color: var(--orn-text-muted); text-transform: uppercase; font-size: 11px; }
  .orn-jd__qsheet-body .orn-jd__dt-price-lines { border-top: 0; }
}
/* a saved quote's add-on, listed among a city's inclusions */
.orn-jd__incl-addon { display: inline-block; margin-left: 6px; padding: 1px 8px; border-radius: 999px; background: rgba(242, 13, 22, 0.08); color: rgb(201, 10, 18); font-size: 11px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; vertical-align: middle; }

/* Trip facts in the price block (Start date, Departure city): one tight group */
body.orn-jd-dates-rail .orn-jd__psum-daterow + .orn-jd__psum-daterow { margin-top: 8px; }
.orn-fit__side-daterow + .orn-fit__side-daterow { margin-top: 8px; }
.orn-jd__dt-price-sub + .orn-jd__dt-price-sub { margin-top: 2px; }
@media (max-width: 640px) {
  /* phone quote sheet: the rows sit together, one rule before the total */
  .orn-jd__qsheet-row { padding: 4px 0; border-bottom: 0; }
  .orn-jd__qsheet-total { margin-top: 10px; border-top: 1px solid var(--orn-line); }
}

/* FD hero price band once priced: the per-person figure replaces the starting-price teaser */
.orn-vhero__price.is-priced > :not([data-orn-hero-price-priced]) { display: none !important; }
.orn-vhero__price-priced { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }

/* Details tab: what a joining-direct price leaves out (no transfers, own visa) */
.orn-jd__detail-jdnote { margin: 18px 0 0; padding: 10px 14px; border-radius: 10px; background: rgba(199, 122, 43, 0.10); border: 1px solid rgba(199, 122, 43, 0.30); color: var(--orn-text); font-size: 14px; line-height: 1.5; }
