/* Shared reading sizes, loaded after page and fleet styles. */
:root {
  --text-body: 1.125rem;
  --text-support: 1rem;
  --text-label: .9375rem;
  --text-small: .875rem;
  --font-reading: "Segoe UI", Arial, ui-sans-serif, system-ui, sans-serif;
  --text-description: #23384a;
  --muted: #354f63;
}

body { font-family: var(--font-reading); font-size: var(--text-body); font-weight: 500; line-height: 1.65; }
h1, h2, h3, .main-nav, .journey-eyebrow, .reference-pill { font-family: Montserrat, ui-sans-serif, system-ui, sans-serif; }

/* Descriptions retain a comfortable reading size on every page. */
.reference-heading p, .benefit-card p, .reference-callback > p,
.journey-section-heading > p, .journey-inline-help p,
.journey-fleet__copy > p:last-of-type, .journey-service-list p,
.journey-request__intro > p:last-of-type, .journey-contact-card__lead,
.fleet-card__description, .fleet-selection p {
  color: var(--text-description);
  font-size: var(--text-body);
  font-weight: 500;
  line-height: 1.65;
}
.journey-subtitle, .journey-page-hero__lead {
  color: #e6eef3;
  font-size: 1.125rem;
  font-weight: 500;
  line-height: 1.7;
}
.benefit-card h3 { font-size: 1.125rem; line-height: 1.4; }
.journey-service-list h3, .journey-group-note strong { font-size: 1rem; line-height: 1.5; }

/* Notes, route stops and practical details are secondary, but still readable. */
.route-card__stops, .route-note, .route-card__hint,
.journey-schedule-note p, .journey-inline-help > a,
.journey-form .journey-form__intro, .journey-form .journey-form__note,
.journey-office-note, .journey-office-address address span,
.journey-contact-methods small, .journey-document-links,
.fleet-demo-notice, .fleet-selection > a, .fleet-capacity-hint,
.fleet-optional {
  color: var(--text-description);
  font-size: var(--text-support);
  font-weight: 500;
  line-height: 1.7;
}
.journey-group-note small, .journey-group-note > p,
.journey-network__caption, .journey-network__footer,
.journey-hero-contact > span:last-of-type {
  color: #d8e5ed;
  font-size: var(--text-support);
  font-weight: 500;
  line-height: 1.65;
}
.journey-breadcrumbs { font-size: var(--text-label); }
.journey-network__countries > div > span, .journey-group-note__label,
.journey-hero-contact > p { color: #d0e0ea; font-size: var(--text-small); letter-spacing: .06em; }
.journey-hero-contact > .journey-hero-contact__email { font-size: 1rem; }
.journey-line { font-size: var(--text-label); }

/* Forms use 16px text on desktop and phones, including placeholders. */
.journey-form label, .reference-callback label { color: #29485f; font-size: var(--text-support); line-height: 1.5; }
.journey-form input, .journey-form textarea, .fleet-request select,
.reference-callback input, .reference-callback textarea {
  color: #173b56;
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.5;
  min-height: 48px;
}
input::placeholder, textarea::placeholder { color: #566b7b; opacity: 1; }
.reference-callback [data-form-status], .journey-form [data-form-status],
.fleet-request .fleet-request-status { font-size: 1rem; line-height: 1.7; }

/* Buttons, navigation and metadata scale with the descriptions. */
.main-nav a { font-size: var(--text-support); }
.header-ticket, .hero-link, .journey-button, .chip, .route-tool,
.route-card__action, .benefit-link, .reference-callback .btn,
.journey-form .btn, .fleet-select {
  font-size: var(--text-label);
  line-height: 1.5;
}
.hero-link, .journey-button, .chip, .route-card__action, .fleet-select { min-height: 44px; }
.route-card__action { padding-inline: 12px; white-space: nowrap; }
.reference-pill, .reference-hero .reference-pill, .reference-heading .reference-pill,
.journey-eyebrow, .contact-office-label { font-size: var(--text-small); letter-spacing: .1em; }
.route-card__direction, .route-card__days { font-size: var(--text-small); letter-spacing: .06em; }
.time-block span, .price-block span { color: #465e70; font-size: var(--text-small); letter-spacing: .04em; }
.duration-pill { color: #3e5669; font-size: var(--text-small); line-height: 1.5; white-space: normal; text-align: center; }
.route-card__stops { margin-top: 10px; }
.booking-heading span, .booking-footnote, .booking-clocks { color: #3e5364; font-size: var(--text-label); line-height: 1.65; }
.booking-heading { flex-wrap: wrap; }
.booking-heading strong { font-size: 1.125rem; }
.reference-contact-details p, .journey-office-address address { font-size: var(--text-body); }
.reference-map-link { font-size: var(--text-support); }
.journey-request__phone span, .journey-office-map, .journey-social-band__links a { font-size: var(--text-support); }
.journey-request__phone a, .journey-inline-help > a span { font-size: 1.0625rem; }

/* Fleet descriptions and gallery captions follow the same system. */
.fleet-amenities li { padding: 7px 10px; color: #20384c; background: #eaf0f4; font-size: 1rem; font-weight: 600; line-height: 1.5; }
.fleet-amenities li > span { color: #236747; }
.fleet-seats > span, .fleet-gallery__zoom, .fleet-gallery__count,
.fleet-demo-badge, .fleet-selection__label { font-size: var(--text-small); }
.fleet-seats > span { color: var(--text-description); }
.fleet-credits { color: #465e70; font-size: var(--text-label); }
.fleet-credits summary { padding-block: 8px; }
.fleet-lightbox__top span, [data-lightbox-caption] { color: #e0eaf0; font-size: var(--text-label); line-height: 1.6; }
.fleet-card__description, .fleet-amenities { min-height: 0; }
.fleet-grid { align-items: stretch; }
.fleet-card, .fleet-card__content { display: flex; flex-direction: column; }
.fleet-card__content { flex: 1; }
.fleet-select { margin-top: auto; }

/* The footer contains useful contact and policy information too. */
.footer-brand p, .footer-links a, .footer-brand__phone { color: #d4e0e8; font-size: var(--text-support); line-height: 1.75; }
.footer-title { color: #c5d5e1; font-size: var(--text-label); letter-spacing: .08em; }
.footer-bottom p { color: #c5d5e1; font-size: var(--text-label); line-height: 1.7; }

@media (max-width: 1100px) and (min-width: 981px) {
  .route-card__body { grid-template-columns: minmax(0, 1fr) 300px 190px; }
}
/* Keep five navigation links readable without an orphaned second row. */
@media (min-width: 981px) and (max-width: 1180px) {
  .site-header__inner { grid-template-columns: auto 1fr auto; }
  .brand { grid-column: 1; grid-row: 1; }
  .header-ticket { grid-column: 2; grid-row: 1; justify-self: end; }
  .nav-toggle { display: grid; grid-column: 3; grid-row: 1; justify-self: end; }
  .main-nav { display: none; }
  .main-nav.is-open { display: grid; grid-column: 1 / -1; grid-row: 2; justify-content: stretch; padding-bottom: 14px; }
  .main-nav.is-open .main-nav__list { display: grid; justify-content: stretch; }
  .main-nav.is-open .main-nav__list a { width: 100%; padding: 13px 16px; background: var(--soft); }
}
@media (max-width: 640px) {
  .journey-subtitle, .journey-page-hero__lead { font-size: var(--text-body); }
  .journey-line { gap: 8px; font-size: var(--text-small); }
  .journey-line__track { width: 24px; }
  .benefits-grid { grid-template-columns: 1fr; }
  .benefit-card { padding: 24px; }
  .benefit-card__icon { margin-bottom: 18px; }
  .journey-group-note ol { grid-template-columns: 1fr; gap: 18px; }
  .journey-group-note li { flex-direction: row; align-items: start; gap: 14px; }
  .journey-group-note small { display: block; }
  .journey-hero-contact { grid-template-columns: 32px minmax(0, 1fr); gap: 8px 12px; }
  .journey-hero-contact > p, .journey-hero-contact > span:last-of-type { font-size: var(--text-label); letter-spacing: 0; }
  .journey-hero-contact > .journey-hero-contact__email { font-size: var(--text-support); }
  .journey-social-band__links { grid-template-columns: 1fr; }
  .route-card__heading { align-items: start; flex-wrap: wrap; gap: 8px; }
  .route-save { margin-left: 0; }
  .header-ticket { font-size: var(--text-small); }
}
