/* R5 accessibility layer, 24 Sep 2026. Loaded after r5-interface.css on the
   pages released so far; the homepage, the airport page and the paid landers
   pick it up with their held release after the 8 Oct measurement read. */

/* Footer column headings are h2 so the outline does not jump from the page's h2s
   to h4 (a11y-07). These copy every declaration styles.css and r5-mobile.css give
   `.r5-footer-col h4` / `.r5-footer h4`, and reset what an h2 would otherwise pick
   up (the shared h2 text-wrap above, the browser's larger h2 size and margins), so
   the footer looks exactly as it did. */
.r5-footer-col h2 {
  font-family: inherit;
  font-size: 11px;
  font-weight: 400;
  line-height: inherit;
  color: rgba(255,255,255,0.5);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  text-wrap: wrap;
  margin: 0 0 20px;
}
@media (max-width: 760px) { .r5-footer-col h2 { padding-bottom: 4px; } }
@media (max-width: 680px) { .r5-footer-col h2 { margin-bottom: 16px !important; font-size: 10px !important; } }

/* Reduced motion at every width (a11y-13). styles.css's catch-all for this sits
   inside its max-width:760px block, so on desktop the hero scroll-cue lines kept
   pulsing forever: scrollPulse on route, area and about pages, cueLine on the
   homepage and the fleet pages' own pulses. styles.css's .r5-post-hero zoom (made
   by the journal redesign script, on no page yet) is stopped too. Each line rests
   on its static styling. */
@media (prefers-reduced-motion: reduce) {
  .r5-scroll-line,
  .scroll-cue .line,
  .mvc-scroll-cue .line,
  .rrad-scroll-cue .line,
  .sp-scroll-cue .line,
  .r5-post-hero img { animation: none !important; }
}

/* ==========================================================================
   R5 type system, tier 1 (typography review, judged merge of A and B, 24 Sep 2026)
   Paste at the end of css/r5-a11y.css. CSS only. Uses faces every page already
   declares: Playfair Display roman 400 and 500, Sora 400, 500 and 600.

   Scope and weight. Every rule starts `html body :is(main, #main) :where(...)`.
   - :is(main, #main) weighs as an ID, so each rule scores (1,0,2). That outranks
     the page <style> blocks (deepest (0,3,2)) and r5-mobile.css's class-only
     !important rules, and it keeps the header, footer, cookie card and booking
     tunnel (all outside <main>) untouched.
   - The role lists sit inside :where(), which adds nothing. Every rule here
     scores the same, so among these rules the later one wins. (Proposal A
     wrapped its lists in :is(), which gave each list its most specific member's
     weight. That is how its section rule beat its statement rule and set the
     legal-page H2s at 44px.) Rules run general to specific: headings by tag
     first, then roles.
   - Sizes, line heights, tracking, weights and resets carry !important only
     because r5-mobile.css sets 295 !important type rules.
   Home, the paid landers and /services/airport-transfers/ do not link this file
   yet. Their selectors below sit dormant until those pages link it on 8 Oct.
   Two landers define --serif/--sans but not --r5-serif/--r5-sans, so every family
   reference carries a var() fallback instead of going invalid there.
   ========================================================================== */

:root {
  --r5-fs-display: clamp(2.5rem, 1.875rem + 2.667vw, 4rem);          /* H1: 40 to 64 */
  --r5-fs-section: clamp(1.875rem, 1.563rem + 1.333vw, 2.625rem);    /* H2, stat figures, photo-band lines: 30 to 42 */
  --r5-fs-statement: clamp(1.5rem, 1.344rem + 0.667vw, 1.875rem);    /* quotes, intros, row and city titles, article H2: 24 to 30 */
  --r5-fs-heading: clamp(1.25rem, 1.198rem + 0.221vw, 1.375rem);     /* H3, serif lead, times: 20 to 22 */
  --r5-fs-long: clamp(1rem, 0.974rem + 0.110vw, 1.0625rem);          /* long-form reading (articles, legal): 16 to 17 */
  --r5-fs-body: 1rem;                                                /* running text: 16 */
  --r5-fs-locator: 0.875rem;                                         /* hero locator, breadcrumbs: 14 */
  --r5-fs-small: 0.8125rem;                                          /* labels, captions, tags, numerals: 13 */
  --r5-ink: #1a1a1a;
  --r5-ink-muted: #5f5b55;                                           /* 6.3:1 on the cream ground */
  --r5-ink-on-dark-muted: rgba(250, 249, 247, 0.72);
}

/* ---------- 1. Italic and gold go from display type --------------------------------------------- */

/* Headings, pull quotes, statements and serif leads set roman. */
html body :is(main, #main) :where(h1, h2, h3, h4, blockquote, cite, p.statement, .svc-bleed-text h3, .rrad-bleed-text h3, .sp-bleed-text h3, .mvc-bleed-text h3, .rrad-range-card-text h3, .rail-cta .rail-cta-link, .sp-ambient-caption span, .r5-route-note, .fc-club .badge, p > strong) {
  font-style: normal !important;
}
/* The italic clause inside them reads as the rest of its line: same colour, same weight, no slant. */
html body :is(main, #main) :where(h1, h2, h3, h4, blockquote, p.statement, .svc-standard-r p:first-of-type, .cc-standard-r p:first-of-type, .cc-procure-cell .pc-value, .rail-item .val, .reviews-bar .rating, .people-text p, .stat b) :where(em, i) {
  font-style: normal !important;
  font-weight: inherit !important;
  color: inherit !important;
}
/* Leftover gold on type: the fleet layout switch and the club badge letter. Stars keep their gold; they are a rating glyph. */
html body :is(main, #main) :where(button.active .nm, .fc-club .badge) { color: var(--r5-ink) !important; }
html body :is(main, #main) :where(.featured .ptag, .fpcard.lead .fptag, [class*="fpcard"].lead .fptag) { color: var(--r5-ink-on-dark-muted) !important; }

/* ---------- 2. Headings by tag (the floor every heading lands on) ------------------------------- */

html body :is(main, #main) :where(h1, .r5-hero-title, .hero-title) {
  font-size: var(--r5-fs-display) !important;
  font-weight: 400 !important;
  line-height: 1.05 !important;
  letter-spacing: -0.015em !important;
  font-variant-numeric: lining-nums;
  text-wrap: balance;
}
html body :is(main, #main) :where(h2) {
  font-size: var(--r5-fs-section) !important;
  font-weight: 400 !important;
  line-height: 1.12 !important;
  letter-spacing: -0.01em !important;
  font-variant-numeric: lining-nums;
  text-wrap: balance;
}
/* H3 and H4: Playfair 500, which every page declares; at 20 to 22px the 400 hairlines break up on phones. */
html body :is(main, #main) :where(h3, h4, .sp-faq-item summary, .mvc-faq-item summary, .jr-row-title, .r5-journal-more-title, .home-faq-q > span:not(.icon), .sp-ambient-caption > span) {
  font-size: var(--r5-fs-heading) !important;
  font-weight: 500 !important;
  line-height: 1.3 !important;
  letter-spacing: -0.005em !important;
  font-variant-numeric: lining-nums;
}

/* ---------- 3. Roles that are not their tag ------------------------------------------------------ */

/* Section size: statement H3s over full-bleed photographs act as section breaks. */
html body :is(main, #main) :where(.bleed-text h3, .ab-bleed-text h3, .ab-bleed-inner h3, .svc-bleed-text h3, .rrad-bleed-text h3, .sp-bleed-text h3, .mvc-bleed-text h3, .moment-bleed-text h3) {
  font-size: var(--r5-fs-section) !important;
  font-weight: 400 !important;
  line-height: 1.12 !important;
  letter-spacing: -0.01em !important;
  text-wrap: balance;
}

/* Statement: paragraph-length intro H2s, pull quotes, fleet and service row titles, city and package
   titles, every panel and form title (booking panel, contact and account forms, author byline), article
   and legal H2s. An H2 is therefore either a section (42) or a statement (30), never a third size. */
html body :is(main, #main) :where(.rrad-intro h2, .sp-intro h2, .mvc-intro h2, :is(h2, h3)[class*="-reveal"], .svc-intro-narrow h2,
  blockquote, .svc-quote blockquote, .cc-svc-quote blockquote, .mvc-members blockquote, .mvc-wrap-narrow blockquote, p.statement,
  .svc-row-text h3, .fl-row-text h3, .city-img h3, .wc-pk h3, .rrad-pillar h3, .concierge-side h3, .cc-acc-side h3, .concierge h3,
  .rrad-concierge h3, .sp-concierge h3, .mvc-concierge h3, [class*="concierge-side"] h3, .sp-moment-text h3, .rrad-moment-text h3, .mvc-moment-text h3,
  .home-airport h3, .acct-card h2, .acct-rail h2, .ct-form-card h2, .r5-booking-form-wrap h2, .r5-journal-author-name, .r5-journal-more h2, .r5-journal-more-inner h2,
  .rrad-cross-head h2, .sp-cross-head h2, .mvc-cross-head h2, .r5-article h2, .r5-legal-content h2) {
  font-size: var(--r5-fs-statement) !important;
  font-weight: 400 !important;
  line-height: 1.28 !important;
  letter-spacing: -0.005em !important;
  font-variant-numeric: lining-nums;
  text-wrap: balance;
}
html body :is(main, #main) :where(blockquote, .svc-quote blockquote, .cc-svc-quote blockquote) { color: var(--r5-ink); }

/* Article and legal H3s were bold Sora questions; they join the serif heading step. */
html body :is(main, #main) :where(.r5-article h3, .r5-legal-content h3) { font-family: var(--r5-serif, var(--serif, 'Playfair Display', Georgia, serif)) !important; }
/* The booking panel's "Prefer to talk?" stays a serif H3 on phones, where styles.css turned it into grey capitals. */
html body :is(main, #main) :where(.r5-booking-contact h3) { font-family: var(--r5-serif, var(--serif, 'Playfair Display', Georgia, serif)) !important; text-transform: none !important; color: var(--r5-ink) !important; }

/* Sans card titles (process steps, airport and value cards) stay Sora 600 at reading size. */
html body :is(main, #main) :where(.r5-process-step h3, .r5-airport-card h3, .r5-value-card h3) {
  font-size: var(--r5-fs-long) !important;
  font-weight: 600 !important;
  line-height: 1.4 !important;
  letter-spacing: 0 !important;
}
/* The footballer week grid: seven narrow tiles, so day titles are data in Sora, not serif headings. */
html body :is(main, #main) :where(.fc-day h3, .fc-day.match h3) {
  font-family: var(--r5-sans, var(--sans, 'Sora', sans-serif)) !important;
  font-size: 0.875rem !important;
  font-weight: 500 !important;
  line-height: 1.4 !important;
  letter-spacing: 0 !important;
  color: #fff !important;
}

/* Serif lead paragraph beside a section heading: roman, heading size. */
html body :is(main, #main) :where(.svc-standard-r p:first-of-type, .cc-standard-r p:first-of-type, .cc-procure-cell .pc-value) {
  font-size: var(--r5-fs-heading) !important;
  font-weight: 400 !important;
  line-height: 1.45 !important;
  font-variant-numeric: lining-nums;
}
/* Strap-line under a section heading: body sans in muted ink, not a second gold italic heading. */
html body :is(main, #main) :where(.svc-standard-l .meta, .cc-standard-l .meta, .sp-ambient-caption) {
  font-family: var(--r5-sans, var(--sans, 'Sora', sans-serif)) !important;
  font-size: var(--r5-fs-body) !important;
  font-style: normal !important;
  font-weight: 400 !important;
  line-height: 1.6 !important;
}
html body :is(main, #main) :where(.svc-standard-l .meta, .cc-standard-l .meta) { color: var(--r5-ink-muted) !important; }

/* ---------- 4. Reading text (before numbers and labels, so a p.num or p.role label still wins) ------------------------------------------------------------------------ */

/* Running text gets a 16px floor (about two thirds of body text sat at 13.5 to 15px). */
html body :is(main, #main) :where(.r5-body, .r5-route-card p, .r5-feature-card p, .r5-final-content p, .r5-process-step p, .r5-airport-card p, .r5-booking-contact p, .r5-article-cta p,
  .r5-journal-author-body p, .r5-post-cta p, .r5-value-card p, .svc-faq-item p, .cc-faq-item p, .sp-faq-item p, .mvc-faq-item p, .svc-feat p, .cc-feat p, .fpbody p, .pt-dest p, .pt-occ-body p,
  .cc-tl-body p, .svc-tl-body p, .svc-final p, .svc-row-text p:not(.num), .city-text p, .fl-row-text p, .principle p, .cc-aud p, .cc-procure-cell p:not(.pc-value, .pc-label), .svc-features-head p, .svc-fp-head p,
  .rrad-discretion-mark p:not(.num), .sp-svc-desc, .mvc-svc-desc, .mvc-feat-item p:not(.glyph), .rail-item p, .acct-rail-item p, .value-card p, .people-text p, .et-role p, .fc-day p, .svc-card-text p,
  .faq-a p, .principle-card p, .wc-pk p, .wc-pk li, .wc-ks-r p, .wc-ks-r li, .cc-acc-side li, .et-disc-row p, .fc-trust-row p, .svc-method-step p, .svc-method-head p, .rrad-svc-desc, .mvc-virtue p,
  .rrad-pillar p, .rrad-heritage-text p, .rrad-range-card-text p, .home-hero .hero-side p, .home-services-head p, .home-airport p, .fleet-head p, .difference-head p, .book-teaser p, .home-faq-head p,
  .home-faq-a p, .acct-card p, .fl-hero p.lead, .ab-hero p.lead, .fl-intro p, .fl-cta-band p, .svc-intro p, .principles-head p, .concierge-side p, .people-head p, .ab-cta p, .at-coverage-head p,
  .at-pricing-head p, .vcard p, .why .col p, .fgrid p.tag, .process-list li p, .airport-section article p, .r5-hero-sub, .svc-standard-r p:not(:first-of-type), .cc-standard-r p:not(:first-of-type),
  .svc-faq-more, p.lead, .final-home p) {
  font-size: var(--r5-fs-body) !important;
  line-height: 1.65 !important;
}
/* The paragraph beside or under each section heading joins body size too. */
html body :is(main, #main) :where(.airport-wrap, .ar-cta, .cc-acc-side, .cc-aud-head, .cc-brief-head, .cc-features-head, .cc-final, .cc-fp-head, .cc-procure-l, .coverage-head, .et-clients, .et-disc-l,
  .et-roles-head, .fc-clubs, .fc-trust-l, .fc-week-head, .hero-copy, .jr-newsletter, .mvc-concierge-side, .mvc-final, .mvc-hero-side, .mvc-services-head, .mvc-virtues-head, .nationwide-inner, .pt-dest-head,
  .pt-occ-head, .rrad-concierge-side, .rrad-discretion, .rrad-final, .rrad-hero-side, .rrad-pillars-head, .rrad-services-head, .section-heading, .sp-ambient-head, .sp-cabin-head, .sp-concierge-side,
  .sp-final, .sp-hero-side, .sp-services-head, .vehicle-heading, .wc-cer-head, .wc-pk-head, .ar-hero-grid, .request-process > div, .sp-compare-inner > div, .mvc-compare-inner > div)
  > p:where(:not(.label, .kicker, [class*="eyebrow"])) {
  font-size: var(--r5-fs-body) !important;
  line-height: 1.65 !important;
}
/* Long-form reading (articles, editorial blocks, legal text): 16 on phones, 17 on desktop. */
html body :is(main, #main) :where(.r5-article p, .r5-article li, .r5-editorial-block p, .r5-editorial-block li, .r5-legal-content p, .r5-legal-content li) {
  font-size: var(--r5-fs-long) !important;
  line-height: 1.7 !important;
}
/* Measure: the two prose blocks that ran past 95 characters a line stop near 66. */
html body :is(main, #main) :where(.home-faq-a p, .city-card .city-text p) { max-width: 36em; }

/* ---------- 5. Numbers ----------------------------------------------------------------------------- */

/* Stat figures (~120, 94%, T+30, 0): display statements in the heading serif, lining figures, ink. */
html body :is(main, #main) :where(.cc-num-cell .big, .r5-stat-number, .stat > b, .stat b, .reviews-bar .rating em) {
  font-family: var(--r5-serif, var(--serif, 'Playfair Display', Georgia, serif)) !important;
  font-size: var(--r5-fs-section) !important;
  font-style: normal !important;
  font-weight: 400 !important;
  line-height: 1.05 !important;
  letter-spacing: 0 !important;
  font-variant-numeric: lining-nums !important;
}
/* Smaller figure rows (Range Rover heritage years, footballer week dates): same serif, statement size. */
html body :is(main, #main) :where(.rrad-heritage-marks div b, .rrad-heritage-marks b, .fc-day .num, .fc-day.match .num) {
  font-family: var(--r5-serif, var(--serif, 'Playfair Display', Georgia, serif)) !important;
  font-size: var(--r5-fs-statement) !important;
  font-style: normal !important;
  font-weight: 400 !important;
  line-height: 1.1 !important;
  letter-spacing: 0 !important;
  font-variant-numeric: lining-nums !important;
}
/* Prices and airport codes are data: Sora 500, tabular lining figures. */
html body :is(main, #main) :where(.at-pcard .pprice b, .at-airport .iata) {
  font-family: var(--r5-sans, var(--sans, 'Sora', sans-serif)) !important;
  font-size: var(--r5-fs-statement) !important;
  font-style: normal !important;
  font-weight: 500 !important;
  line-height: 1.1 !important;
  letter-spacing: -0.01em !important;
  font-variant-numeric: tabular-nums lining-nums !important;
}
/* Timeline times (07:45) are the schedule a reader scans: Sora 500, tabular, heading size, ink not gold. */
html body :is(main, #main) :where(.cc-tl-time, .svc-tl-time, .manifesto .proof-line b) {
  font-family: var(--r5-sans, var(--sans, 'Sora', sans-serif)) !important;
  font-size: var(--r5-fs-heading) !important;
  font-style: normal !important;
  font-weight: 500 !important;
  line-height: 1.25 !important;
  letter-spacing: -0.01em !important;
  font-variant-numeric: tabular-nums lining-nums !important;
}
html body :is(main, #main) :where(.svc-tl-time) { color: var(--r5-ink) !important; }
html body :is(main, #main) :where(.cc-tl-time, .svc-timeline.dark .svc-tl-time) { color: #FAF9F7 !important; }

/* Hero facts under the H1 (Up to 3, 30-day terms, 5.0): Sora 600 at body size, so the H1 is the only display type in the hero. */
html body :is(main, #main) :where(.svc-hero .hero-stats b, .hero-stats > div > b, .hero-stats b, [class*="hero-meta"] span b, .acct-proof strong) {
  font-family: var(--r5-sans, var(--sans, 'Sora', sans-serif)) !important;
  font-size: var(--r5-fs-body) !important;
  font-style: normal !important;
  font-weight: 600 !important;
  line-height: 1.3 !important;
  letter-spacing: 0 !important;
  font-variant-numeric: tabular-nums lining-nums !important;
}
/* Spec values (3 passengers, V-Class, Manchester) in meta rows, spec tables and lists: Sora 500, body size. */
html body :is(main, #main) :where(.fl-specs > div b, .fl-specs b, .fleet-card-meta .specs b, .fleet-meta b, .city-meta b, .pt-occ .occ-meta b, .occ-meta b, .et-role .role-vehicle b, .role-vehicle b,
  .svc-row-fleet b, .svc-row-fleet a b, .ct-hours-inner .item b, .wc-ks-r li b, .ap-row b, .dest-from b, .fl-compare-table .row.head b, .fl-compare-table b, .svc-fpcard .fpmeta b, .cc-fpcard .fpmeta b, .fpmeta b,
  .at-pcard .pmeta b, .at-airport .from b, .fc-club b, .rail-item .val, .rail-item .val em, .rail-item a.val, .acct-direct a, [class*="spec-row"] td.val, .people-text p strong) {
  font-family: var(--r5-sans, var(--sans, 'Sora', sans-serif)) !important;
  font-size: var(--r5-fs-body) !important;
  font-style: normal !important;
  font-weight: 500 !important;
  letter-spacing: 0 !important;
  font-variant-numeric: tabular-nums lining-nums !important;
}
/* Numerals and step labels (i., ii., Step one): small Sora, roman, muted ink instead of gold. */
html body :is(main, #main) :where(.svc-feat .num, .cc-feat .num, .et-disc-row .n, .fc-trust-row .n, .pt-dest .dn, .cc-aud .role, .svc-method-step .ico, .svc-method-step .ord, .et-role .role-num,
  .sp-svc-num, .mvc-svc-num, .rrad-svc-num, .rrad-discretion-mark .num, .mvc-feat-item .glyph, .rrad-pillar .glyph, [class*="pillar"] .glyph, .rrad-pillar li b, .sp-moment-text .num, .rrad-moment-text .num,
  .mvc-moment-text .num, .mvc-virtue .glyph, .why .rn, .book-form-preview .step .num, .fc-club .badge, .svc-row-img .stamp, .svc-row-text p.num, .svc-row-text .num) {
  font-family: var(--r5-sans, var(--sans, 'Sora', sans-serif)) !important;
  font-size: var(--r5-fs-small) !important;
  font-style: normal !important;
  font-weight: 500 !important;
  line-height: 1.45 !important;
  letter-spacing: 0.01em !important;
  text-transform: none !important;
  font-variant-numeric: tabular-nums lining-nums !important;
  color: var(--r5-ink-muted) !important;
}
html body :is(main, #main) :where(.pt-dest .dn, .rrad-discretion-mark .num, .rrad-svc.lead .rrad-svc-num, .sp-svc.lead .sp-svc-num, .mvc-svc.lead .mvc-svc-num, a.lead [class*="svc-num"], .book-form-preview .step .num) {
  color: var(--r5-ink-on-dark-muted) !important;
}

/* ---------- 6. Small labels: sentence case, 13px, no wide tracking -------------------------------- */

html body :is(main, #main) :where(.r5-trust-label, .svc-row-fleet small, .fl-specs > div, .hero-stats > div, .svc-hero .hero-stats > div, .cc-hero .hero-stats > div, .svc-fpcard .fptag, .cc-fpcard .fptag, .fptag,
  .r5-stat-label, .jr-row-meta, .jr-featured .meta, .r5-article-meta, .r5-article-meta *, .et-clients-tags span, .fc-day .dayname, .dayname, .pt-occ .occ-tag, .occ-tag, [class*="spec-row"] .lbl, th.lbl,
  .fl-row-img .stamp, .stamp, [class*="anchor-strip-inner"] .label, .fl-anchor-inner .label, .city-img .badge, .city-meta span, .city-meta .more, [class*="concierge-detail"] span,
  [class*="svc-fit"], [class*="svc-link"], .ct-hours-inner .item, .svc-quote .by, .cc-svc-quote .by, .by, cite, .mvc-members cite, .stat span, .stat > span, .cc-num-cell p, .cc-aud .aud-foot,
  .cc-procure-cell .pc-label, .pc-label, .fc-club span, .rrad-heritage-marks div span, .rrad-heritage-marks span, .rail-item .lab, .rail-cta .lab, .acct-direct span, .et-role .role-tag, .role-tag,
  .wc-pk .ptag, .at-pcard .ptag, .ptag, .rrad-range-card .when, .when, span.tag, .rrad-cross-body .tag, .sp-cross-body .tag, .mvc-cross-body .tag, [class*="hero-meta"] span,
  .cc-trusted .cc-eyebrow, .mvc-wrap-narrow .mvc-eyebrow, .fpmeta span, .pmeta span, .at-airport .from, .pprice small, .fleet-card-img .tier, .fleet-card-meta .more, .fleet-meta small,
  .svc-card-img .badge, .svc-card-text .more, .vcard .lab, .airport-vehicle .kicker, .trust .lbl, .manifesto .proof-line li, .role-vehicle span, .ap-row.head div, .ap-row.head > div, .signoff span,
  .book-form-preview .field label, .r5-proof-strip li, .occ-meta span, .r5-journal-author-role, .r5-hero-scroll span, [class*="scroll-cue"] span, .sp-ambient-caption small, .sp-ambient-toggle button,
  .home-airport-link, .book-form-preview .step span, .airport-section .kicker, .proof-content .kicker, p[style*="uppercase"],
  .r5-label, .r5-label-light, .svc-eyebrow, .cc-eyebrow, .acct-eyebrow, .rrad-eyebrow, .sp-eyebrow, .mvc-eyebrow, .ab-bleed-eyebrow, .story-label, p.label, .eyebrow, .kicker, .marque) {
  font-family: var(--r5-sans, var(--sans, 'Sora', sans-serif)) !important;
  font-size: var(--r5-fs-small) !important;
  font-style: normal !important;
  font-weight: 500 !important;
  line-height: 1.45 !important;
  letter-spacing: 0.01em !important;
  text-transform: none !important;
}
html body :is(main, #main) :where(.marque, .svc-row-text .num) { color: var(--r5-ink-muted) !important; }
html body :is(main, #main) :where(.svc-fpcard .fptag, .cc-fpcard .fptag, .wc-pk .ptag) { color: inherit !important; }

/* Hero locator and breadcrumbs: one plain sentence-case line at 14px. On 24 pages the locator is keyword
   text inside the H1, so it stays visible; tier 2 HTML can fold it into the heading. */
html body :is(main, #main) :where(.hero-eyebrow, .sp-hero-eyebrow, .mvc-hero-eyebrow, .rrad-hero-eyebrow, .ab-hero-eyebrow, .svc-hero-eyebrow, .r5-hero-tag,
  .fl-hero .eyebrow, .ar-hero .eyebrow, .ct-top .label, .jr-hero .label, .acct-shell .acct-eyebrow, .wrap > .eyebrow, .hero-copy .kicker, .crumb, .crumb a, .crumb span) {
  font-family: var(--r5-sans, var(--sans, 'Sora', sans-serif)) !important;
  font-size: var(--r5-fs-locator) !important;
  font-style: normal !important;
  font-weight: 500 !important;
  line-height: 1.4 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}

/* Section kickers go. A label sitting directly on a section H2 repeats the "On this page" strip and the
   heading, so it is removed and the heading speaks alone. Labels on an H3 are kept: there they name the
   audience or the product ("For productions & venues", "A retainer arrangement"). Guards: inside <main>
   only, never inside an H1, and not the paid landers' .eyebrow / .kicker, which keep their labels
   (restyled above) until their own review. Without :has() support the labels simply stay, restyled. */
html body :is(main, #main) :where(.r5-label, .r5-label-light, .svc-eyebrow, .cc-eyebrow, .acct-eyebrow, .rrad-eyebrow, .sp-eyebrow, .mvc-eyebrow, .ab-bleed-eyebrow, .story-label, p.label):where(:not(h1 *)):has(+ h2) {
  display: none !important;
}

/* ---------- 7. Weights: only what the tier 2 link will load --------------------------------------- */

/* Sora 700 folds to 600 and 300 rises to 400, so the 8 Oct link can load Sora 400 to 600 only.
   Deliberately low weight ((0,0,4)): a page's own class rule still wins; this catches bare strong/b/th. */
html body main :is(strong, b, th) { font-weight: 600; }
html body :is(main, #main) :where(.r5-article strong, .r5-article b, .r5-legal-content strong, .r5-legal-content b) { font-weight: 600 !important; }
html body :is(main, #main) :where(.wrap > p.sub, .r5-faq-icon) { font-weight: 400 !important; }

/* ---------- 8. Header stays in view --------------------------------------------------------------- */

/* The header stays in view while scrolling (Louis, 25 Sep 2026). styles.css and r5-mobile.css set
   overflow-x: hidden on body, which made body a scroll container that never scrolls, so no sticky element
   ever stuck. clip trims sideways overflow the same way without that side effect; browsers without clip
   or :has() keep hidden. Scoped to pages with the site header, so the airport lander's own header is
   unchanged. main.js still toggles .hidden on scroll-down: phones keep that slide-away (it returns on
   scroll-up); from 681px up the transform rule cancels it. */
html body:has(> .r5-header) { overflow-x: clip; }
@media (min-width: 681px) { html body .r5-header.hidden { transform: none !important; } }

/* The "On this page" strips sit directly under the header (61px tall above 1024px, 73px at 1024 and
   below), and anchor jumps stop below whatever is stuck at the top. */
html:has(body > .r5-header) { scroll-padding-top: 84px; }
html body :is(.svc-anchor-strip, .cc-anchor-strip) { top: 61px; }
@media (max-width: 1024px) { html body :is(.svc-anchor-strip, .cc-anchor-strip) { top: 73px; } }
@media (min-width: 901px) { html:has(.svc-anchor-strip, .cc-anchor-strip) { scroll-padding-top: 170px; } }

/* The header's logo and "Get a quote" sit on the same 1280px grid as the page content (the header used
   1200px, so the logo started 40px inside the headings from 1281px up). */
@media (min-width: 1025px) {
  html body .r5-header, html body .r5-header.scrolled { padding-left: 40px; padding-right: 40px; }
  html body .r5-header-inner { max-width: 1280px; }
}

/* ---------- 9. Header menus hold open ----------------------------------------------------------- */

/* The Services and Fleet menus sit 8px below their link, and styles.css closed them the moment the
   pointer entered that gap, so a slow move down to "Private travel" lost the menu. An invisible bridge
   spans the gap, the menu waits 150ms before closing (it stays hoverable meanwhile, because only
   visibility turns pointer events off), and keyboard focus opens it too. */
@media (min-width: 1025px) {
  html body .r5-nav-dropdown { pointer-events: auto; transition: opacity .2s ease .15s, transform .2s ease .15s, visibility 0s linear .35s; }
  html body .r5-nav-dropdown::before { content: ""; position: absolute; left: 0; right: 0; bottom: 100%; height: 14px; }
  html body .r5-nav-item:is(:hover, :focus-within, .active) .r5-nav-dropdown { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); pointer-events: auto; transition: opacity .2s ease, transform .2s ease, visibility 0s; }
}

/* ---------- 10. Links in running text underline on hover only -------------------------------------- */

/* Louis (25 Sep 2026): no visible underlines at rest, as on the homepage since #57. Plain links inside
   paragraphs drop the underline and take weight 500 against 400 body text, so they stay recognisable
   without relying on colour (WCAG 1.4.1, technique G182); hover and keyboard focus bring the underline
   back. Buttons, cards and list rows carry a class or sit outside <p>, so they are untouched. */
html body :is(main, #main) p a:not([class]) { text-decoration-line: none; font-weight: 500; }
html body :is(main, #main) p a:not([class]):is(:hover, :focus-visible) { text-decoration-line: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }

/* ---------- 11. No hero scroll cue ---------------------------------------------------------------- */

/* The shared "Scroll" cue sat on top of "Get a quote" and the phone button on 15 pages at 1280 and 1366
   wide (9 at 1440). The homepage and fleet pages already dropped theirs (#53, #57); this drops the rest. */
html body .r5-hero-scroll { display: none !important; }
