/* ==========================================================================
   Brisbane Best Movers — sitewide text comfort
   --------------------------------------------------------------------------
   File: assets/css/bbm-text-comfort.css
   Load: last, after every colour, nav, wordmark and form layer.

   Purpose
   - Bring the whole site back to a readable Material 3 type scale: body copy
     at 16.5–17px, supporting copy at 15px+, functional microcopy at 12.5px+.
   - Replace the 0.90–1.02 display leading and 800 weight with calmer display
     sizes, 1.06–1.28 leading and 650–700 weight.
   - Keep the primary quote headline and its quote card clearly dominant.
   - Keep the palette blue-forward; this file introduces no colour of its own
     except the neutral --outline border already in the palette.

   Boundaries
   - No markup, content, form behaviour, field order or validation changes.
   - No navigation, logo or wordmark rules: those files and their active
     layers are left untouched. About-contact labels are adjusted to 14px/600
     at the parent's request, with its container query preserved.
   - Forms are deliberately excluded. bbm-form-typography.css owns labels,
     hints, placeholders, form headings and control fit.
   - No new green/olive hue. All colour references are semantic tokens.
   ========================================================================== */

/* ---------- 1. Shared reading rhythm ------------------------------------ */
.page {
  --tc-body: 17px;
  --tc-copy: 16.5px;
  --tc-lead: 17.5px;
  --tc-micro: 12.5px;
  --tc-meta: 14px;
  --tc-display-weight: 700;
  --tc-heading-weight: 650;
}

/* Body copy keeps the 17px base but gains a little more air. Headings are
   deliberately not set globally: form headings belong to the form layer. */
.page .lede {
  font-size: clamp(18px, 1.3vw, 20px);
  line-height: 1.65;
  max-width: 60ch;
  text-wrap: pretty;
}

.page .section-head__lead {
  font-size: var(--tc-lead);
  line-height: 1.7;
  max-width: 58ch;
  text-wrap: pretty;
}

.page .section-head__lead,
.page .card p,
.page .step p,
.page .service-row__body > p,
.page .faq-answer,
.page .prose p,
.page .prose li {
  text-wrap: pretty;
}

/* ---------- 2. Display scale --------------------------------------------
   The old build ran 106px/0.90 on the home h1 and 87.8px/0.90 on interior
   heroes. These caps keep the same hierarchy without the wall of text:
   home 44–73.6px, interior 41.6–64.8px, section 32–52px. */
.page.page-home .hero h1 {
  font-size: clamp(2.75rem, 6vw, 4.6rem);
  line-height: 1.06;
  letter-spacing: -.04em;
  font-weight: var(--tc-display-weight);
  max-width: 14ch;
  text-wrap: balance;
}

/* Some templates append a banner sheet after the shared head, so the hero
   rules below carry an extra element+class to win on specificity, not order. */
body.page .page-hero h1 {
  font-size: clamp(2.6rem, 4.6vw, 4.05rem);
  line-height: 1.08;
  letter-spacing: -.038em;
  font-weight: var(--tc-display-weight);
  max-width: 18ch;
  text-wrap: balance;
}

body.page .page-hero--banner .lede {
  font-size: clamp(18px, 1.3vw, 20px);
  line-height: 1.65;
  max-width: 60ch;
  text-wrap: pretty;
}

/* Error templates carry an inline 3–6rem / .9 heading; correct only its
   metrics so the page still reads as an error, not a poster. */
.page-error h1 {
  font-size: clamp(2.5rem, 5vw, 3.8rem) !important;
  line-height: 1.06 !important;
  letter-spacing: -.03em !important;
  font-weight: var(--tc-display-weight) !important;
  text-wrap: balance;
}

.page .section-head h2 {
  font-size: clamp(2rem, 3.6vw, 3.25rem);
  line-height: 1.08;
  letter-spacing: -.032em;
  font-weight: var(--tc-display-weight);
  text-wrap: balance;
}

/* Four templates set their FAQ heading with an inline clamp/0.98. Override
   only the type metrics, not the inline margins, so the layout is unchanged. */
.page .faq-layout h2 {
  font-size: clamp(2rem, 3.35vw, 2.85rem) !important;
  line-height: 1.1 !important;
  letter-spacing: -.028em !important;
  font-weight: var(--tc-display-weight) !important;
  text-wrap: balance;
}

.page .faq-group h2 {
  font-size: clamp(1.85rem, 2.6vw, 2.35rem);
  line-height: 1.2;
  letter-spacing: -.025em;
  font-weight: var(--tc-display-weight);
  text-wrap: balance;
}

.page .still-question h2 {
  font-size: clamp(1.9rem, 2.7vw, 2.4rem);
  line-height: 1.15;
  letter-spacing: -.025em;
  font-weight: var(--tc-display-weight);
  text-wrap: balance;
}

.page .split__body h2,
.page .service-row__body h2,
.page .pricing-banner h2,
.page .area-band h2 {
  font-size: clamp(1.95rem, 3.2vw, 2.9rem);
  line-height: 1.1;
  letter-spacing: -.03em;
  font-weight: var(--tc-display-weight);
  text-wrap: balance;
}

.page .cta-band h2 {
  font-size: clamp(1.9rem, 3vw, 2.7rem);
  line-height: 1.12;
  letter-spacing: -.03em;
  font-weight: var(--tc-display-weight);
  max-width: 22ch;
  text-wrap: balance;
}

.page .site-footer__intro h2 {
  font-size: clamp(1.8rem, 2.8vw, 2.55rem);
  line-height: 1.12;
  letter-spacing: -.03em;
  font-weight: var(--tc-display-weight);
  text-wrap: balance;
}

/* Card and step headings: still clearly headings, no longer shouting. */
.page .card h3,
.page .service-card h3,
.page .truck-card h3,
.page .step h3,
.page .guide-phase__head h2,
.page .aside-card h2,
.page .quote-show__item h3,
.page .share-box h3 {
  font-size: clamp(20px, 1.35vw, 23px);
  line-height: 1.28;
  letter-spacing: -.018em;
  font-weight: var(--tc-heading-weight);
  text-wrap: balance;
}

.page .quote-show__item h3,
.page .share-box h3 {
  font-size: 20px;
  line-height: 1.32;
}

.page.page-home .service-card h3 {
  font-size: clamp(21px, 1.5vw, 24px);
  line-height: 1.25;
}

.page .truck-card h3 {
  font-size: 20px;
  line-height: 1.3;
}

/* Legal pages and the sticky index. */
.page .prose h2 {
  font-size: clamp(1.5rem, 2vw, 1.9rem);
  line-height: 1.28;
  letter-spacing: -.02em;
  font-weight: var(--tc-display-weight);
}

.page .prose h3 {
  font-size: 1.2rem;
  line-height: 1.4;
  letter-spacing: -.01em;
  font-weight: var(--tc-heading-weight);
}

.page .legal-index h2 {
  font-size: var(--tc-micro);
  line-height: 1.45;
  letter-spacing: .08em;
  font-weight: var(--tc-heading-weight);
}

.page .legal-index a {
  font-size: 14.5px;
  line-height: 1.5;
}

/* ---------- 3. Body and supporting copy --------------------------------- */
.page .card p {
  font-size: var(--tc-copy);
  line-height: 1.65;
  opacity: 1;
}

body.page .step p,
body.page .steps--side .step p {
  font-size: 16.5px;
  line-height: 1.65;
}

.page .service-row__body > p {
  font-size: var(--tc-copy);
  line-height: 1.7;
}

.page .quote-show__item p {
  font-size: 16px;
  line-height: 1.65;
}

.page .share-box li {
  font-size: 16px;
  line-height: 1.6;
}

.page .faq-item summary {
  font-size: clamp(17px, 1.3vw, 18.5px);
  line-height: 1.42;
  letter-spacing: -.01em;
  font-weight: 600;
}

.page .faq-answer {
  font-size: 16.5px;
  line-height: 1.72;
  max-width: 70ch;
}

.page .faq-answer p {
  font-size: inherit;
  line-height: inherit;
}

.page .prose {
  max-width: 68ch;
}

.page .prose p,
.page .prose li {
  font-size: 16.5px;
  line-height: 1.78;
}

.page .legal-note {
  font-size: 15px;
  line-height: 1.65;
}

/* Form-card privacy note. This is fine print, not a field: raise it to the
   13.5px floor while leaving the form layer's labels, values and hints alone. */
.page.page-home .home-quote-form .form-note,
.page.page-quote .quote-form .form-note {
  font-size: 13.5px;
  line-height: 1.55;
}

.page .aside-card p,
.page .aside-card li,
.page .mini-steps li {
  font-size: 15.5px;
  line-height: 1.65;
}

.page .mini-steps strong {
  font-size: 15.5px;
}

.page .detail-list li,
.page .detail-list li span {
  font-size: 15.5px;
  line-height: 1.65;
}

.page .pricing-points li {
  font-size: 15px;
  line-height: 1.55;
}

.page .check-item label {
  font-size: 15px;
  line-height: 1.55;
}

.page .segmented button {
  font-size: 14.5px;
}

.page .metric-panel p {
  font-size: 15.5px;
  line-height: 1.65;
}

.page .area-chips .chip {
  font-size: 14.5px;
  line-height: 1.5;
}

.page .small {
  font-size: 15.5px;
  line-height: 1.6;
}

.page .tiny {
  font-size: 13.5px;
  line-height: 1.55;
}

/* ---------- 4. Eyebrows and functional microcopy ------------------------
   Uppercase is kept as the wayfinding cue, but 10–11.5px at .14–.18em is
   too small to read comfortably. 12.5px/.08em stays distinct without
   becoming a caption. Form-card eyebrows are excluded by selector scope. */
.page .hero__eyebrow,
.page .page-hero .eyebrow,
.page .section-head .eyebrow,
.page .split__body > .eyebrow,
.page .area-band .eyebrow,
.page .faq-layout .eyebrow,
.page .faq-group > .eyebrow,
.page .still-question .eyebrow,
.page .cta-band .eyebrow,
.page .pricing-banner .eyebrow,
.page .service-row__body > .eyebrow,
.page .site-footer__intro .eyebrow {
  font-size: var(--tc-micro);
  line-height: 1.5;
  letter-spacing: .08em;
  font-weight: var(--tc-heading-weight);
}

.page .hero__meta li {
  font-size: 13px;
  line-height: 1.4;
  letter-spacing: .05em;
  font-weight: 650;
}

/* The quote card eyebrow is 11.5px in the form layer. Match the sitewide
   microcopy scale; the card's labels, hints and values are left untouched. */
.page.page-home .home-quote-card__head .eyebrow,
.page.page-quote .quote-card__head .eyebrow {
  font-size: 12.5px;
  line-height: 1.35;
  letter-spacing: .08em;
  font-weight: 650;
}

.page .truck-card__tag {
  font-size: 12.5px;
  line-height: 1.4;
  letter-spacing: .09em;
  font-weight: 650;
}

.page .truck-card__dims {
  font-size: var(--tc-meta);
  line-height: 1.6;
}

.page .truck-card__suit {
  font-size: 16px;
  line-height: 1.65;
}

.page .truck-card__rate {
  font-size: 14.5px;
  line-height: 1.55;
}

.page .service-row__num,
.page .quote-show__num,
.page .metric-panel__label,
.page .split__badge,
.page .status-chip,
.page .progress-pill {
  font-size: var(--tc-micro);
  line-height: 1.5;
  letter-spacing: .06em;
  font-weight: 650;
}

.page .figcaption,
.page figcaption,
.page .editorial-plate figcaption,
.page .area-band__media figcaption,
.page .process-art figcaption,
body.page.page-home .area-band__media figcaption,
body.page.page-home .process-art figcaption {
  font-size: var(--tc-meta);
  line-height: 1.55;
}

.page .art-note {
  font-size: 14.5px;
  line-height: 1.6;
}

.page .metric-card__unit {
  font-size: 12.5px;
  line-height: 1.5;
}

.page .card__link {
  font-size: 14.5px;
  line-height: 1.55;
  font-weight: 600;
}

/* Home service cards set their own 13.5px label in the expressive layer. */
.page.page-home .service-card .card__link {
  font-size: 14.5px;
}

.page .legal-meta {
  font-size: var(--tc-micro);
}

/* ---------- 5. Tables ---------------------------------------------------- */
.page .compare-table {
  font-size: 15.5px;
  line-height: 1.6;
}

.page .compare-table thead th {
  font-size: 12.5px;
  line-height: 1.45;
  letter-spacing: .07em;
  font-weight: 650;
}

.page .compare-table tbody th {
  font-size: 15.5px;
  line-height: 1.55;
}

/* ---------- 6. Footer reading comfort ------------------------------------
   The footer is body copy, not a legal thumbnail: 14.5px links, 14px contact
   details, 13px notes. Navigation files are not touched. */
.page .site-footer__intro p {
  font-size: 16px;
  line-height: 1.65;
  max-width: 44ch;
}

.page .site-footer__cols h3 {
  font-size: var(--tc-micro);
  line-height: 1.4;
  letter-spacing: .08em;
  font-weight: var(--tc-heading-weight);
}

.page .site-footer__cols a,
.page .site-footer__cols span {
  font-size: 14.5px;
  line-height: 1.55;
}

.page .site-footer__contact a,
.page .site-footer__contact span {
  font-size: 14px;
  line-height: 1.55;
}

.page .site-footer__note {
  font-size: 13px;
  line-height: 1.6;
}

.page .site-footer__bottom {
  font-size: 13px;
  line-height: 1.55;
}

/* ---------- 7. About-page contact labels --------------------------------
   About contact is a two-row detail block, not a caption. 11.5px/750
   uppercase was the smallest functional text on the page. 14px/600 with
   .06em tracking stays compact enough for the 4.25rem label column while
   reading as a real label; the value links keep their existing 16/17px. */
body.page .about-contact > .phone-contact > strong,
body.page .about-contact__row > strong {
  font-size: 14px;
  font-weight: 600;
  line-height: 1.45;
  letter-spacing: .06em;
}

body.page .about-contact__note {
  font-size: 15px;
  line-height: 1.6;
}

@container about-contact (min-width: 360px) {
  body.page .about-contact > .phone-contact,
  body.page .about-contact__row {
    grid-template-columns: 4.25rem minmax(0, 1fr);
  }

  body.page .about-contact__note {
    margin-left: calc(4.25rem + 12px);
  }
}

/* ---------- 8. Control legibility (no state or size changes) -------------
   1.4.11 needs a 3:1 boundary for controls that are identified by their
   outline. The old outline-button border (#aec5da) was 1.69:1 on paper and
   the tinted chip border 1.25:1; --outline is the palette's 4.7:1 neutral. */
.page .btn--outline {
  border-color: var(--outline);
}

.page .chip {
  border-color: color-mix(in srgb, currentColor 55%, transparent);
}

.page .truck-card .btn--tonal {
  border-color: var(--outline);
}

body.page .table-wrap {
  border-color: var(--outline);
}

/* Keep focus rings exactly as the interaction layer draws them; this rule
   only guarantees they remain visible if a later layer removes the outline. */
.page :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline-width: 3px;
  outline-style: solid;
}

/* ---------- 9. Narrow screens -------------------------------------------
   Keep the reading sizes; reduce only the display steps so the page does not
   become a headline with a long scroll beneath it. */
@media (max-width: 760px) {
  .page .lede {
    font-size: 17.5px;
    line-height: 1.65;
  }

  .page .section-head__lead {
    font-size: 16.5px;
    line-height: 1.7;
  }

  .page.page-home .hero h1 {
    font-size: clamp(2.6rem, 11.2vw, 2.85rem);
    line-height: 1.06;
  }

  body.page .page-hero h1 {
    font-size: clamp(2.35rem, 10.2vw, 2.6rem);
    line-height: 1.08;
  }

  .page .section-head h2 {
    font-size: clamp(1.9rem, 8vw, 2rem);
    line-height: 1.1;
  }

  .page .split__body h2,
  .page .service-row__body h2,
  .page .pricing-banner h2,
  .page .area-band h2,
  .page .cta-band h2 {
    font-size: clamp(1.8rem, 7.2vw, 1.95rem);
    line-height: 1.12;
  }

  .page .hero__eyebrow {
    font-size: 12.5px;
    letter-spacing: .07em;
  }

  .page .hero__meta li {
    font-size: 12.5px;
  }

  .page .card p,
  .page .step p,
  .page .faq-answer {
    font-size: 16px;
  }

  .page .prose p,
  .page .prose li {
    font-size: 16.5px;
    line-height: 1.75;
  }

  .page .site-footer__cols a,
  .page .site-footer__cols span,
  .page .site-footer__contact a,
  .page .site-footer__contact span {
    font-size: 14.5px;
  }
}

/* ---------- 10. User preferences ---------------------------------------- */
@media (prefers-contrast: more) {
  /* No new colour: only remove the fading some cards apply to body copy. */
  .page .card p {
    opacity: 1;
  }
}

/* The layer changes type only; motion settings are left to the interaction
   and reduced-motion layers. */
