/* ===== Open Sans, self hosted. Added 2026-08-18. =====

   Replaces the Google Fonts link that used to sit in the head of every page.
   Two reasons, one of them the bug Blake reported.

   1. The swap window. The Google link used display=swap, which paints the
      FALLBACK first and swaps when the webfont lands. Getting there cost a DNS
      lookup and TLS handshake to fonts.googleapis.com, then the CSS, then a
      second DNS lookup and handshake to fonts.gstatic.com, then the font. Served
      from our own origin the connection is already open, so it is one request
      after the stylesheet. The window where the fallback shows shrinks to
      almost nothing.

   2. It removes a third party request from every page load, which matters for a
      brokerage site collecting personal information.

   Open Sans is SIL Open Font License 1.1, which permits self hosting and
   redistribution. The licence travels with the files at /assets/fonts/OFL.txt.
   Do not remove it.

   Weights are exactly what the site uses and nothing more: 400, 600, 700, 800
   normal, plus 400 italic for the Capital Markets Snapshot editorial copy.
   Adding a weight here without a rule that uses it is 19KB nobody downloads on
   purpose.

   unicode-range splits latin from latin-ext so a page of English only ever
   fetches the latin file. latin covers U+0000-00FF, which includes every
   accented character French needs. latin-ext is there for client and place
   names carrying Central and Eastern European diacritics, and is fetched only
   when such a character actually appears. If a range were wrong the affected
   glyph falls back to Arial on its own; nothing breaks. */

/* ---- 400 normal, body copy ---- */
@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;font-display:swap;
  src:url('/assets/fonts/open-sans-latin-400-normal.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:'Open Sans';font-style:normal;font-weight:400;font-display:swap;
  src:url('/assets/fonts/open-sans-latin-ext-400-normal.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

/* ---- 600 normal ---- */
@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;font-display:swap;
  src:url('/assets/fonts/open-sans-latin-600-normal.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:'Open Sans';font-style:normal;font-weight:600;font-display:swap;
  src:url('/assets/fonts/open-sans-latin-ext-600-normal.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

/* ---- 700 normal ---- */
@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;font-display:swap;
  src:url('/assets/fonts/open-sans-latin-700-normal.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:'Open Sans';font-style:normal;font-weight:700;font-display:swap;
  src:url('/assets/fonts/open-sans-latin-ext-700-normal.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

/* ---- 800 normal, headings and the wordmark ---- */
@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;font-display:swap;
  src:url('/assets/fonts/open-sans-latin-800-normal.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:'Open Sans';font-style:normal;font-weight:800;font-display:swap;
  src:url('/assets/fonts/open-sans-latin-ext-800-normal.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

/* ---- 400 italic, Snapshot editorial copy ---- */
@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;font-display:swap;
  src:url('/assets/fonts/open-sans-latin-400-italic.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:'Open Sans';font-style:italic;font-weight:400;font-display:swap;
  src:url('/assets/fonts/open-sans-latin-ext-400-italic.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

/* ===== base family, base family 2026-08-18 =====
   Only styles.css used to set a font on body, and only 19 of the 115 pages load
   styles.css. Everywhere else body fell through to the browser default, so the
   injected rebrand banner and the rate ticker rendered in Times on a site that
   is otherwise entirely sans. This file is the one stylesheet every page loads,
   so the base family belongs here. */
html,body{font-family:"Open Sans","Segoe UI",Arial,sans-serif;}
