:root {
    /* ── Body / labels — FIXED (do not scale with viewport) ───────────
       Scale bumped up so every element is >= its pre-token (original) size. */
    --bgo-fs-3xs:  0.8125rem;  /* 13px — micro all-caps mono labels / eyebrows / badges (was 11) */
    --bgo-fs-2xs:  0.8125rem;  /* 13px — (legacy spare) */
    --bgo-fs-xs:   0.875rem;   /* 14px — small labels, captions, chips, small CTAs (was 13) */
    --bgo-fs-sm:   0.9375rem;  /* 15px — secondary / meta text */
    --bgo-fs-base: 1.125rem;   /* 18px — body copy (was 16) */
    --bgo-fs-md:   1.25rem;    /* 20px — lead paragraphs (was 18) */

    /* ── Headings — FLUID (clamp: mobile → desktop) ───────────────── */
    --bgo-fs-lg:   clamp(1.375rem, 1.15rem + 1vw,    1.5rem);    /* 22→24px — component titles (cards, doctor name, h3) */
    --bgo-fs-xl:   clamp(1.625rem, 1.25rem + 1.7vw,  1.875rem);  /* 26→30px — h2 subheads */
    --bgo-fs-2xl:  clamp(2.25rem,  1.5rem  + 3.4vw,  3.625rem);  /* 36→58px — section / CTA titles */
    --bgo-fs-3xl:  clamp(2.5rem,   1.7rem  + 3.6vw,  3.75rem);   /* 40→60px — (spare) */
    --bgo-fs-4xl:  clamp(2.75rem,  1.7rem  + 5.2vw,  4.25rem);   /* 44→68px — hero display */

    /* ── Line-height tokens (so enlarged text breathes) ───────────── */
    --bgo-lh-tight: 1.15;  /* display / headings */
    --bgo-lh-snug:  1.4;   /* subheads */
    --bgo-lh-base:  1.65;  /* body copy */
}