/* Final semantic type roles for marketing pages. Loaded after page styles so
   equal heading levels keep equal visual weight. No colour/layout overrides. */
#root h2 {
  font-family: var(--font-h1);
  font-size: var(--pm-type-display-sm);
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: -.01em;
}
#root h3 {
  font-family: var(--font-display);
  font-size: var(--pm-type-title);
  font-weight: 400;
  line-height: 1.3;
  letter-spacing: -.015em;
}
#root h4 {
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 400;
  line-height: 1.3;
}
/* Preserve the homepage hero; align service heroes with its pixel tracking. */
#root .hero-light h1 { font-family: var(--font-h1); letter-spacing: -.035em; line-height: 1.1; }
#root :is(.hero-sub, .sp-lead, .cta-lead, .home-process-steps p, .home-faq-answer) {
  font-family: var(--font-body);
  font-size: var(--pm-type-body);
  line-height: 1.6;
}
#root :is(.product-card-description, .sp-card p, .sp-feature-card p,
  .sp-step p, .product-card-facts li) {
  font-family: var(--font-body);
  font-size: var(--pm-type-body-sm);
  line-height: 1.55;
}
#root :is(.eyebrow, [class*="eyebrow"], .hero-kicker, .hero-tools-title,
  .cta-field-label, .cta-trust span, .quote-callout-credit, .sp-card-badge,
  .sp-ad-result-tag) {
  font-family: var(--font-mono);
  font-size: var(--pm-type-caption);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: .06em;
}
#root :is(.cta-field-input, .cta-field-select, .cta-field-textarea) {
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.5;
}
.site-nav :is(.nav-login-link, .site-nav-link),
.site-footer :is(p, a) { font-size: 12px; }
/* The homepage's semantic heading rules intentionally have higher specificity.
   They use the same tokens; keep their established font and spacing treatment. */
