@layer wsb-v4-typography {
  .wsb-booking-app,
  .wsb-booking-app__portal {
    font-size: var(--wsb-font-size-body);
    font-weight: var(--wsb-font-weight-body);
    line-height: var(--wsb-line-height-body);
  }

  .wsb-booking-app :where(h1, h2, h3, h4, h5, h6),
  .wsb-booking-app__portal :where(h1, h2, h3, h4, h5, h6) { font-weight: var(--wsb-font-weight-medium) !important; }
  .wsb-booking-app :where(p, li, dt, dd),
  .wsb-booking-app__portal :where(p, li, dt, dd) { font-weight: var(--wsb-font-weight-body); }
  .wsb-booking-app :where(button),
  .wsb-booking-app__portal :where(button) { font-weight: var(--wsb-font-weight-medium); }
  .wsb-booking-app :where(strong),
  .wsb-booking-app__portal :where(strong) { font-weight: var(--wsb-font-weight-medium); }

  .wsb-booking-app :where(.wsb-booking-app__summary-price, .wsb-booking-app__summary-total > strong, .wsb-checkout-trip__price strong, .wsb-checkout-total, .wsb-review-shuttle__price strong, .wsb-vehicle-card__price strong),
  .wsb-booking-app__portal :where(.wsb-checkout-trip__price strong, .wsb-checkout-total) { font-weight: 600; }

  .wsb-booking-app__step-copy strong,
  .wsb-booking-app .wsb-vehicle-filter-status,
  .wsb-booking-app .wsb-quote__info-action,
  .wsb-booking-app .wsb-route-hero__eyebrow,
  .wsb-booking-app .wsb-route-map-label,
  .wsb-booking-app .wsb-route-map-label__icon,
  .wsb-booking-app .wsb-route-map-label__metrics strong,
  .wsb-booking-app .wsb-route-map-label__metrics small,
  .wsb-booking-app .wsb-route-option__head small,
  .wsb-booking-app .wsb-route-options__intro,
  .wsb-booking-app .wsb-route-options__list .wsb-route-option__metrics,
  .wsb-booking-app .wsb-route-option__description,
  .wsb-booking-app .wsb-vehicle-card__capacity > span,
  .wsb-booking-app .wsb-vehicle-card__price small,
  .wsb-booking-app .wsb-vehicle-card__badge,
  .wsb-booking-app .wsb-vehicle-review__hero .wsb-booking-app__eyebrow,
  .wsb-booking-app .wsb-review-shuttle__models,
  .wsb-booking-app .wsb-review-shuttle__capacity,
  .wsb-booking-app .wsb-review-shuttle__note,
  .wsb-booking-app .wsb-review-shuttle__price > span,
  .wsb-booking-app .wsb-charter-suggestion-group > p,
  .wsb-booking-app .wsb-charter__ordered-copy small,
  .wsb-booking-app .wsb-charter-place__category,
  .wsb-booking-app .wsb-charter-place > .wsb-trip__action,
  .wsb-booking-app .wsb-charter-place > .wsb-trip__action:disabled,
  .wsb-booking-app .wsb-charter-place__added-status,
  .wsb-booking-app .wsb-charter-map-label,
  .wsb-booking-app .wsb-charter-map-label--preview,
  .wsb-booking-app .wsb-charter-map-label strong,
  .wsb-booking-app .wsb-charter-map-label small,
  .wsb-booking-app .wsb-charter__map-helper,
  .wsb-booking-app .wsb-charter__map-warning,
  .wsb-booking-app .wsb-charter__places-heading span,
  .wsb-booking-app .wsb-charter__order { font-size: var(--wsb-font-size-min); }

  .wsb-booking-app__step-copy strong,
  .wsb-booking-app .wsb-route-options__intro,
  .wsb-booking-app .wsb-route-options__list .wsb-route-option__metrics,
  .wsb-booking-app .wsb-route-option__description,
  .wsb-booking-app .wsb-vehicle-card__capacity > span,
  .wsb-booking-app .wsb-vehicle-card__price small,
  .wsb-booking-app .wsb-review-shuttle__models,
  .wsb-booking-app .wsb-review-shuttle__capacity,
  .wsb-booking-app .wsb-review-shuttle__note,
  .wsb-booking-app .wsb-review-shuttle__price > span,
  .wsb-booking-app .wsb-charter-suggestion-group > p,
  .wsb-booking-app .wsb-charter__ordered-copy small,
  .wsb-booking-app .wsb-charter-place > .wsb-trip__action,
  .wsb-booking-app .wsb-charter-place__added-status,
  .wsb-booking-app .wsb-charter__map-warning,
  .wsb-booking-app .wsb-charter__places-heading span { font-size: var(--wsb-font-size-meta); }

  .wsb-booking-app .wsb-trip__identity-chip,
  .wsb-booking-app .wsb-vehicle-drawer__identity { font-size: var(--wsb-font-size-card-title); }
  .wsb-booking-app .wsb-trip__route-row { font-size: 14px; font-weight: var(--wsb-font-weight-body); }
  .wsb-booking-app .wsb-trip__date-row { font-size: var(--wsb-font-size-meta); font-weight: var(--wsb-font-weight-body); }
  .wsb-booking-app .wsb-trip__meta-chip,
  .wsb-booking-app .wsb-trip__support-chip,
  .wsb-booking-app .wsb-trip__extras-line { font-size: var(--wsb-font-size-min); font-weight: var(--wsb-font-weight-medium); }
  .wsb-booking-app .wsb-trip__types .wsb-trip__action,
  .wsb-booking-app .wsb-trip__action,
  .wsb-booking-app .wsb-booking-app__button { font-size: 15px; font-weight: var(--wsb-font-weight-medium); }
  .wsb-booking-app .wsb-trip__group-title,
  .wsb-booking-app .wsb-vehicle-card__content h5,
  .wsb-booking-app .wsb-review-shuttle__title { font-size: var(--wsb-font-size-card-title); font-weight: var(--wsb-font-weight-medium); }
  .wsb-booking-app .wsb-extra-control__copy,
  .wsb-booking-app .wsb-extra-control__copy small,
  .wsb-booking-app .wsb-vehicle-card p,
  .wsb-booking-app .wsb-vehicle-selection-recovery,
  .wsb-booking-app .wsb-vehicle-drawer__list-title { font-size: var(--wsb-font-size-meta); }
  .wsb-booking-app .wsb-charter-experience__label { font-size: var(--wsb-font-size-meta); font-weight: var(--wsb-font-weight-medium); }

  .wsb-booking-app :where(.wsb-field, .wsb-place-field),
  .wsb-booking-app :where(.wsb-field__label, .wsb-checkout-field__label) { font-size: var(--wsb-font-size-label); font-weight: var(--wsb-font-weight-medium); }
  .wsb-booking-app :where(input, textarea, select, .wsb-checkout-picker__trigger),
  .wsb-booking-app__portal :where(input, textarea, select, .wsb-checkout-picker__trigger) { font-size: var(--wsb-font-size-body); font-weight: var(--wsb-font-weight-body); }
  .wsb-booking-app__portal .wsb-tip-editor__custom input,
  .wsb-booking-app .wsb-checkout-overlay .wsb-tip-editor__custom input { font-size: var(--wsb-font-size-body); font-weight: var(--wsb-font-weight-body); }
  .wsb-booking-app :where(.wsb-field__hint, .wsb-field-error, .wsb-place-field__status) { font-size: var(--wsb-font-size-meta); font-weight: var(--wsb-font-weight-body); line-height: 1.4; }

  .wsb-booking-app .wsb-booking-app__summary-heading h2,
  .wsb-booking-app .wsb-checkout-summary__head h2 { font-size: var(--wsb-summary-heading-size); font-weight: var(--wsb-summary-heading-weight); }
  .wsb-booking-app .wsb-booking-app__summary-identity,
  .wsb-booking-app .wsb-checkout-trip-badge { font-size: var(--wsb-summary-identity-size); font-weight: var(--wsb-summary-identity-weight); }
  .wsb-booking-app :where(.wsb-booking-app__summary-route, .wsb-checkout-trip__route) { font-size: var(--wsb-summary-route-size); font-weight: var(--wsb-summary-route-weight); }
  .wsb-booking-app :where(.wsb-booking-app__summary-date, .wsb-checkout-trip__meta, .wsb-checkout-trip__facts) { font-size: var(--wsb-summary-meta-size); font-weight: var(--wsb-summary-meta-weight); }

  .wsb-booking-app .wsb-vehicle-review__support,
  .wsb-booking-app .wsb-review__route,
  .wsb-booking-app .wsb-vehicle-review__itinerary,
  .wsb-booking-app .wsb-vehicle-review__date { font-size: 14px; font-weight: var(--wsb-font-weight-body); }
  .wsb-booking-app .wsb-stage-back-link { font-size: 15px; font-weight: var(--wsb-font-weight-medium); }

  .wsb-booking-app .wsb-checkout-hero h2 { font-weight: var(--wsb-font-weight-medium); }
  .wsb-booking-app .wsb-checkout-hero p { font-size: 15px; font-weight: var(--wsb-font-weight-body); }
  .wsb-booking-app .wsb-checkout-section__title strong { font-size: var(--wsb-font-size-card-title); font-weight: var(--wsb-font-weight-medium); }
  .wsb-booking-app .wsb-checkout-section__title small,
  .wsb-booking-app .wsb-checkout-picker__option strong,
  .wsb-booking-app .wsb-checkout-trip-completion__trip legend,
  .wsb-booking-app .wsb-checkout-success,
  .wsb-booking-app .wsb-checkout-tip-row small,
  .wsb-booking-app .wsb-checkout-tip-row__status,
  .wsb-booking-app .wsb-checkout-payment small,
  .wsb-booking-app .wsb-tip-editor__helper,
  .wsb-booking-app__portal .wsb-tip-editor__helper { font-size: var(--wsb-font-size-meta); font-weight: var(--wsb-font-weight-body); }
  .wsb-booking-app .wsb-checkout-payment__brands,
  .wsb-booking-app .wsb-checkout-payment__eft-mark,
  .wsb-booking-app .wsb-checkout-trip__chips > span { font-size: var(--wsb-font-size-min); font-weight: var(--wsb-font-weight-medium); }
  .wsb-booking-app .wsb-checkout-trip__price small { font-size: var(--wsb-font-size-meta); font-weight: var(--wsb-font-weight-body); }
  .wsb-booking-app .wsb-checkout-consent label { font-size: 15px; font-weight: var(--wsb-font-weight-body); }
  .wsb-booking-app .wsb-checkout-secondary,
  .wsb-booking-app .wsb-checkout-text-action { font-size: 15px; font-weight: var(--wsb-font-weight-medium); }
  .wsb-booking-app .wsb-tip-editor legend { font-size: var(--wsb-font-size-card-title); font-weight: var(--wsb-font-weight-medium); }

  .wsb-booking-app :where(.wsb-checkout, .wsb-checkout-summary) :where(span, small, a, label, legend, strong, p, dt, dd),
  .wsb-booking-app__portal :where(.wsb-checkout-drawer, .wsb-checkout-picker) :where(span, small, a, label, legend, strong, p, dt, dd) { font-size: var(--wsb-font-size-min); }
  .wsb-booking-app :where(.wsb-checkout, .wsb-checkout-summary) :where(button, [role="button"]),
  .wsb-booking-app__portal :where(.wsb-checkout-drawer, .wsb-checkout-picker) :where(button, [role="button"]) { font-size: 15px; }
  .wsb-booking-app :where(.wsb-checkout, .wsb-checkout-summary) p,
  .wsb-booking-app__portal .wsb-checkout-drawer p { font-size: 15px; }
  .wsb-booking-app .wsb-checkout-section__title strong,
  .wsb-booking-app .wsb-checkout-payment strong,
  .wsb-booking-app__portal .wsb-tip-choice strong { font-size: var(--wsb-font-size-card-title); }
  .wsb-booking-app .wsb-checkout-field__label { font-size: var(--wsb-font-size-label); }
  .wsb-booking-app :where(
    .wsb-checkout-section__title small,
    .wsb-checkout-picker__option strong,
    .wsb-checkout-trip-completion__trip legend,
    .wsb-checkout-success,
    .wsb-checkout-tip-row small,
    .wsb-checkout-tip-row__status,
    .wsb-checkout-payment small,
    .wsb-checkout-trip__price small
  ),
  .wsb-booking-app__portal .wsb-tip-editor__helper { font-size: var(--wsb-font-size-meta); }
  .wsb-booking-app .wsb-checkout-consent label { font-size: 15px; }
  .wsb-booking-app__portal .wsb-tip-editor legend { font-size: var(--wsb-font-size-card-title); font-weight: var(--wsb-font-weight-medium); }
  .wsb-booking-app .wsb-checkout-hero h2,
  .wsb-booking-app__portal .wsb-checkout-drawer > header h2 { font-size: var(--wsb-font-size-section-title); }
  .wsb-booking-app .wsb-stage-back-link__arrow { font-size: var(--wsb-font-size-meta); }

  /* DrawerPrimaryAction follows the accepted Driver-tip action in every drawer. */
  .wsb-booking-app .wsb-drawer-primary-action,
  .wsb-booking-app__portal .wsb-drawer-primary-action {
    width: 100%; min-width: 0; height: 52px; min-height: 52px; border-radius: 10px;
    padding: 14px 24px; background-color: var(--wsb-color-border-strong);
    font-size: 15px; font-weight: var(--wsb-font-weight-medium); box-shadow: none;
  }
  .wsb-booking-app .wsb-drawer-primary-action.wsb-booking-app__button--ready,
  .wsb-booking-app__portal .wsb-drawer-primary-action.wsb-booking-app__button--ready {
    background-image: linear-gradient(115deg, var(--wsb-color-brand) 2%, var(--wsb-color-interaction) 98%);
    box-shadow: none;
  }
  .wsb-booking-app .wsb-drawer-primary-action[aria-disabled="true"],
  .wsb-booking-app__portal .wsb-drawer-primary-action[aria-disabled="true"] {
    background-image: none; background-color: var(--wsb-color-border-strong); box-shadow: none;
  }
  .wsb-booking-app .wsb-drawer-primary-action:focus-visible,
  .wsb-booking-app__portal .wsb-drawer-primary-action:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--wsb-color-interaction) 55%, var(--wsb-color-surface));
    outline-offset: 3px;
  }

  @media (max-width: 47rem) {
    .wsb-booking-app .wsb-trip--open.wsb-trip--stuck .wsb-trip__meta-chip,
    .wsb-booking-app .wsb-trip--open.wsb-trip--stuck .wsb-trip-context__chips > .wsb-trip__support-chip { font-size: var(--wsb-font-size-min); }
  }
}
