/* ==========================================================================
   ONE BCG typography system. Single source of truth for type roles.
   Open Sans throughout. Loaded last on every page.
   Token names are the project's existing --ty-* set (plus --ty-svc).
   Hierarchy comes from scale, placement, whitespace and colour. Weight is part
   of the role, never a way to emphasise a sentence.

   Role            1440px   390px   Weight   Token
   Hero H1           50      34      400     --ty-h1   (home hero: --ty-h1-home, max 56)
   Section H2        38      28      400     --ty-h2
   Subsection H3     26      22      400     --ty-st
   Service heading   22      19      400     --ty-svc
   Lead paragraph    20      17      400     --ty-lede
   Support text      18      16      400     --ty-sup
   Body              17      16      400     --ty-body
   Label / eyebrow   12      12      600     --ty-meta
   ========================================================================== */
:root{
  --ty-h1:clamp(2.125rem,1.35rem + 2.5vw,3.125rem);
  --ty-h1-w:400; --ty-h1-lh:1.08; --ty-h1-ls:-.03em;
  --ty-h1-home:clamp(2.25rem,1.4rem + 3.1vw,3.5rem);
  --ty-h2:clamp(1.75rem,1.2rem + 1.4vw,2.375rem);
  --ty-h2-w:400; --ty-h2-lh:1.12; --ty-h2-ls:-.028em;
  --ty-st:clamp(1.375rem,1.15rem + .62vw,1.625rem);
  --ty-st-w:400; --ty-st-lh:1.2; --ty-st-ls:-.02em;
  --ty-svc:clamp(1.1875rem,1.05rem + .45vw,1.375rem);
  --ty-svc-w:400; --ty-svc-lh:1.25; --ty-svc-ls:-.012em;
  --ty-lede:clamp(1.0625rem,.97rem + .45vw,1.25rem);
  --ty-lede-lh:1.55;
  --ty-sup:clamp(1rem,.96rem + .25vw,1.125rem);
  --ty-sup-lh:1.6;
  --ty-reg:400; --ty-flat:normal;
  --ty-body:clamp(1rem,.97rem + .15vw,1.0625rem); --ty-body-lh:1.65;
  --ty-link:1rem;
  --ty-meta:.75rem; --ty-meta-w:600; --ty-meta-ls:.12em;
}
h1,.h1{font-size:var(--ty-h1);font-weight:var(--ty-h1-w);line-height:var(--ty-h1-lh);letter-spacing:var(--ty-h1-ls)}
h2,.h2{font-size:var(--ty-h2);font-weight:var(--ty-h2-w);line-height:var(--ty-h2-lh);letter-spacing:var(--ty-h2-ls)}
h3,h4{font-size:var(--ty-svc);font-weight:var(--ty-svc-w);line-height:var(--ty-svc-lh);letter-spacing:var(--ty-svc-ls)}
.v22hero__h{font-size:var(--ty-h1-home);font-weight:var(--ty-h1-w);line-height:var(--ty-h1-lh);letter-spacing:var(--ty-h1-ls)}
.num{font-size:var(--ty-h1);font-weight:var(--ty-h1-w);line-height:1;letter-spacing:var(--ty-h1-ls)}
.st,.h3{font-size:var(--ty-st);font-weight:var(--ty-st-w);line-height:var(--ty-st-lh);letter-spacing:var(--ty-st-ls)}
.lede{font-size:var(--ty-lede);font-weight:var(--ty-reg);line-height:var(--ty-lede-lh);letter-spacing:var(--ty-flat)}
.sup{font-size:var(--ty-sup);font-weight:var(--ty-reg);line-height:var(--ty-sup-lh);letter-spacing:var(--ty-flat)}
.meta,.eyebrow{font-size:var(--ty-meta);font-weight:var(--ty-meta-w);letter-spacing:var(--ty-meta-ls);line-height:1.65}
/* role classes (statements, service labels, leads) mapped to the tokens above */
.v22conv__res,
.v22why__h,
.v22what__h,
.v22how__h,
.v22ind__h,
.v22rec__h,
.v22about__h,
.v22talk__h,
.w-frame__h,
.hw-model__h,
.hw-prod__h,
.v3-st,
.w-frame__root,
.v3-gap__a,
.v3-gap__b,
.v22what__rule,
.v22ind__out,
.converge__label{font-size:var(--ty-h2);font-weight:var(--ty-h2-w);line-height:var(--ty-h2-lh);letter-spacing:var(--ty-h2-ls)}
.v22panel__k,
.v4-match__a,
.s__lead,
.s__q,
.one__a,
.hw-take,
.brace__a,
.acct__s,
.ab-mission__s,
.evid__a,
.evid__b,
.v22how__payh,
.v22step__k,
.hw-party__t,
.hw-stg__t,
.ab-person__name,
.v22pr__name,
.v22talk__lift,
.env__name,
.ax-fd__ai,
.v4-run__i,
.v4-run__q,
.w-frame__o-p,
.env__t h3,
.legal h2,
.v4-merge p,
.v4-match__a p{font-size:var(--ty-st);font-weight:var(--ty-st-w);line-height:var(--ty-st-lh);letter-spacing:var(--ty-st-ls)}
.v22cap__l,
.v22rec__t,
.cr-opp__n,
.ab-pres__c,
.v3-h3,
.t,
.h,
.cr-ben__l li,
.v5-ins__t li,
.v3-chips--lg li{font-size:var(--ty-svc);font-weight:var(--ty-svc-w);line-height:var(--ty-svc-lh);letter-spacing:var(--ty-svc-ls)}
.v22what__lede,
.v22talk__p,
.v22soft__lede,
.v22panel__p,
.v22how__lede,
.v22hero__def,
.v22about__p,
.w-frame__end,
.v5-ins__r,
.v5-dirs__e,
.s__p,
.hw-appr__lead,
.brace__b,
.ab-hero__l,
blockquote p,
blockquote{font-size:var(--ty-lede);font-weight:var(--ty-reg);line-height:var(--ty-lede-lh);letter-spacing:var(--ty-flat)}
.v22why__sub,
.v22soft__sub,
.v22rec__d,
.v22panel__cross,
.v22how__subs,
.v3-gap__m,
.hw-stg__p,
.w-frame__o p{font-size:var(--ty-sup);font-weight:var(--ty-reg);line-height:var(--ty-sup-lh);letter-spacing:var(--ty-flat)}
.v22fact__v{font-size:var(--ty-h1);font-weight:var(--ty-h1-w);line-height:1;letter-spacing:var(--ty-h1-ls)}
.ab-mission__k,
.n,
.eb,
.k,
.ab-ruler__t,
.v22cap__n,
.cr-ben__n,
.v22pr__n,
.v22rec__yr{font-size:var(--ty-meta);font-weight:var(--ty-meta-w);letter-spacing:var(--ty-meta-ls)}
