/* type-system-svc202.css  (svc202)
   One job: cut the painted typeface count and stop the browser synthesizing weights.

   Measured on live svc201, mobile 390x844, full scroll, painted text only:
     Satoshi 427 els, Cabinet Grotesk 84 els (requested at 400/600/700/800/900
     while ONLY weight 800 was ever declared or loaded), Source Serif Pro 32 els,
     Fraunces 2 els for a whole font download, Playfair Display 3 els with ZERO
     @font-face anywhere so it silently painted in Georgia, Georgia 2 els on the
     largest headline of the page at 28.8px, system-ui 3 els in the hero.

   The fix is applied at the TOKEN level, not the selector level, because raydn.css
   sets font-family through --font-display-h1, --font-display, --font-serif and
   --font-sans and enforces some of them with !important on high specificity
   selectors. Overriding tokens fixes every page in one place and does not fight
   the cascade. Loaded last in head so these declarations win.

   No mapping below introduces a new font download. Every target face is already
   loaded and already used for the same role elsewhere on the site. */

/* 1. Real variable faces. Manrope and Inter are variable fonts, so a single file
      covers the whole 400 to 800 range. 'Cabinet Grotesk' previously declared
      weight 800 alone, so 84 elements asking for 400 through 900 got a synthesized
      or snapped weight. That is what "not quite premium" looks like up close. */
@font-face{
  font-family:'Cabinet Grotesk';
  font-style:normal;
  font-weight:400 800;
  font-display:swap;
  src:url(https://fonts.gstatic.com/s/manrope/v20/xn7gYHE41ni1AdIRggexSg.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Satoshi';
  font-style:normal;
  font-weight:400 800;
  font-display:swap;
  src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* 2. Retarget the existing tokens. One loaded serif for display, one loaded sans
      for everything else, and a loaded face as the FIRST fallback in every stack
      so nothing can ever resolve to Georgia or Times New Roman. */
:root{
  --font-display-h1:'Source Serif Pro','Cabinet Grotesk',Georgia,serif !important;
  --font-display:'Source Serif Pro','Cabinet Grotesk',Georgia,serif !important;
  --font-serif:'Source Serif Pro','Cabinet Grotesk',Georgia,serif !important;
  --font-sans:'Satoshi','Cabinet Grotesk',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif !important;
  --rdn-serif:'Source Serif Pro','Cabinet Grotesk',Georgia,serif;
  --rdn-sans:'Satoshi','Cabinet Grotesk',system-ui,sans-serif;
  --rdn-ui:'Cabinet Grotesk','Satoshi',system-ui,sans-serif;
}

/* 3. Playfair Display is referenced by 6 selectors and declared by no @font-face
      anywhere in the codebase, so those elements were painting in Georgia. These
      use a literal family name, not a token, so they need naming directly. */
.trust-ticker__num,
.decoder-card__num,
.decoder-card__quote,
.decoder-finale__title,
.founders-showcase__title,
.founder-card__name{font-family:var(--rdn-serif) !important;}

/* 4. Largest headline on the homepage, 28.8px, was Georgia with a Times New Roman
      fallback and no webfont at all, sitting next to headlines set in a webfont. */
.rr-payback__title,
.rr-payback__title em{font-family:var(--rdn-serif) !important;font-weight:700 !important;}

/* 5. Hero price block was the only system-ui text on the page. */
.hero__price-num,
.hero__price-lbl,
.hero__price-note{font-family:var(--rdn-sans) !important;}

/* 6. Fraunces selectors that survive on other templates. */
.northstar__title,.rdn-addr__q{font-family:var(--rdn-serif) !important;}

/* 7. Optical correction. Synthesized bold needed no tracking compensation.
      Real 700 and 800 weights do, or headlines read loose. */
h1,h2,h3,.section-title,.hero__title{text-wrap:balance;}
h1,.hero__title{letter-spacing:-.02em;}
h2,.section-title{letter-spacing:-.012em;}
.rr-hiw__num,.trust-ticker__num,.rr-select__num,.rr-owntrack strong{font-variant-numeric:tabular-nums;letter-spacing:-.01em;}
