:root{
  --type-hero:clamp(3rem,7vw,6.75rem);
  --type-page:clamp(2.35rem,5vw,4.75rem);
  --type-section:clamp(2rem,3.4vw,3.25rem);
  --type-article-h2:clamp(1.65rem,2.4vw,2.15rem);
  --type-card:clamp(1.15rem,1.5vw,1.4rem);
  --type-body-lg:clamp(1.05rem,1.3vw,1.18rem);
  --type-body:1.0625rem;
  --type-body-sm:.9375rem;
  --type-label:.8125rem;
}

html{-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
body{
  font-family:var(--font-body);
  font-size:var(--type-body);
  line-height:1.58;
  letter-spacing:0;
  font-size-adjust:from-font;
}
body :is(h1,h2,h3,h4){text-wrap:balance}
body :is(.hero-lead,.svc-lead,.sec-intro,.lede,.cc-desc,.faq-a,.bi-copy,.proof-caption){text-wrap:pretty}

/* Brand display is reserved for the first statement, not every heading. */
body :is(.hero,.svc-hero,.bi-hero,.kjs-hero,.cover) h1,
body .e404 :is(.e404-code,h1){
  font-family:var(--font-display);
  font-weight:700;
  line-height:.96;
  letter-spacing:-.025em;
}
body .hero h1{font-size:var(--type-hero)}
body :is(.svc-hero,.bi-hero,.kjs-hero,.cover) h1{font-size:var(--type-page)}

/* Articles, case studies and legal pages read like documents, not posters. */
body .article h1,
body main.section>.wrap>h1.display,
body .section#content>.wrap>h1.display{
  font-family:var(--font-body);
  font-size:var(--type-page);
  font-weight:800;
  line-height:1.02;
  letter-spacing:-.035em;
  text-transform:none;
}

/* Section hierarchy. */
body :is(.section,.cases-cat,.doc) :is(h2,h2.display,.sec-head .display),
body.bi-page main h2{
  font-family:var(--font-body);
  font-size:var(--type-section);
  font-weight:800;
  line-height:1.08;
  letter-spacing:-.035em;
  text-transform:none;
}
body .article h2{
  font-family:var(--font-body);
  font-size:var(--type-article-h2);
  font-weight:800;
  line-height:1.18;
  letter-spacing:-.025em;
  text-transform:none;
}
body :is(.section,.article,.cases-cat,.doc) h3,
body.bi-page main h3{
  font-family:var(--font-body);
  font-size:var(--type-card);
  font-weight:700;
  line-height:1.2;
  letter-spacing:-.015em;
  text-transform:none;
}

/* Repeated card families follow the same quiet title role. */
body :is(.ps-bad b,.ps-good-body h3,.pain-row .pt,.step h3,.cc-name,.svc-tar h3,.mod h3,.au-gauge h3,.au-scn-card h3,.faq summary){
  font-family:var(--font-body);
  font-weight:700;
  line-height:1.2;
  letter-spacing:-.015em;
  text-transform:none;
}
body .cc-name{font-size:var(--type-card)}
body .faq summary{font-size:1rem;letter-spacing:0}

/* Reading text. */
body :is(.hero-lead,.svc-lead,.sec-intro,.lede){font-size:var(--type-body-lg);line-height:1.55}
body .article :is(p,li,dd){font-size:var(--type-body);line-height:1.62}
body .article :is(p,.lede,blockquote){max-width:68ch}
body :is(.step p,.cc-desc,.pain-cell p,.svc-tar li,.faq-a){font-size:var(--type-body-sm);line-height:1.55}

/* UI text is firm but no longer another display headline. */
body .btn{
  font-family:var(--font-body);
  font-size:.9375rem;
  font-weight:800;
  line-height:1.15;
  letter-spacing:.012em;
}
body .btn-xl{font-size:1rem}
body :is(.site-nav a,.foot-col a,.mm-link){font-family:var(--font-body);font-weight:600;letter-spacing:0}
body :is(label,.quick-field,.lead-form label){font-family:var(--font-body);font-size:var(--type-label);font-weight:700;letter-spacing:0}
body :is(input,textarea,select){font-family:var(--font-body);font-size:1rem;line-height:1.45}
body.bi-page :is(input,textarea,select){font-size:1rem}

/* Mono is reserved for data and state. */
body :is(.post-meta,.case-meta,time,.mono,.proof-index,.au-rank .v,.bi-live-time,.bi-filter-value){
  font-family:var(--font-mono);
  font-size:var(--type-label);
  font-variant-numeric:tabular-nums;
}
body :is(.eyebrow,.kick,.article-kicker,.case-kicker,.svc-num,.sec-num){
  font-family:var(--font-body);
  font-size:var(--type-label);
  font-weight:600;
  letter-spacing:.025em;
}

/* Changing numbers stay aligned and keep the mechanical accent. */
body :is(.tprice,.pt-price,.pp-mega .x,.bi-kpi-value,.au-num,.cc-v,.m-v,.stat-demo .v){
  font-family:var(--font-display);
  font-weight:700;
  font-variant-numeric:tabular-nums;
  letter-spacing:-.025em;
}

@media(max-width:560px){
  body{font-size:1.03125rem;line-height:1.58}
  body :is(h1,h2,h3,.display,.svc-h1){overflow-wrap:normal;word-break:normal;hyphens:none}
  body :is(.hero,.svc-hero,.bi-hero,.kjs-hero,.cover) h1{line-height:1.02}
  body .article h1{line-height:1.06}
  body .btn{font-size:.875rem}
  body :is(input,textarea,select){font-size:1rem}
}
