/**
 * Self-hosted theme fonts (TMS-646).
 *
 * Libre Franklin (body / UI) + Newsreader (headline), both under the SIL Open Font
 * License — see assets/fonts/OFL.txt. Each family ships as a single VARIABLE woff2 per
 * subset (latin, latin-ext), which covers the full weight range the theme uses (400–800,
 * including the 650 on the section masthead) with no per-weight request and no third-party
 * Google Fonts dependency. `font-display: swap` keeps text visible while the face loads.
 *
 * These families are referenced by --tms-font-body / --tms-font-headline (base.css); this
 * sheet is enqueued first (inc/assets.php) so the faces are declared before any rule uses
 * them. Newsreader carries an optical-size axis; `font-optical-sizing: auto` (the CSS
 * default) picks the display cut for large headlines automatically.
 */

/* Libre Franklin — body / UI (variable, wght 100–900). */
@font-face {
	font-family: 'Libre Franklin';
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url('../fonts/libre-franklin-latin.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: 'Libre Franklin';
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url('../fonts/libre-franklin-latin-ext.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;
}

/* Newsreader — headline (variable, opsz 6–72 + wght 400–800). The theme sets it at 550–800 (the wordmark,
   headlines, the nav), so the files carry only wght 400–800. Same glyphs, widths and metrics in that range,
   at 98.7 KB instead of 132 KB for latin (see assets/fonts/OFL.txt). */
@font-face {
	font-family: 'TMS Headline';
	font-style: normal;
	font-weight: 400 800;
	font-display: swap;
	src: url('../fonts/newsreader-latin.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: 'TMS Headline';
	font-style: normal;
	font-weight: 400 800;
	font-display: swap;
	src: url('../fonts/newsreader-latin-ext.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;
}

/* TMS Headline Fallback: Times New Roman sized to the headline face (Newsreader), so a headline wraps the same before and
   after the swap. On the nationwidetimes homepage (2026-10-23, 412px phone) the lead headline was 3
   lines in Times and 4 in Newsreader. The swap added 34px and moved everything below it. Lighthouse's
   CLS was 0.061, and 0.073 on ourcaliforniatimes.

   Newsreader's width against Times changes with weight and with its optical size, so each weight
   range gets the size-adjust that matched the most line breaks. They were measured on the
   nationwidetimes headlines at 18–44px and 280–720px wide. Against plain Times, line counts that
   differ fell from 524 to 237 of 3,888 cases there, and from 354 to 166 of 2,448 on
   ourcaliforniatimes. The ascent and descent overrides are Newsreader's own (1470 / 530 of 2000 units),
   divided by the size-adjust. Liberation Serif and Tinos have Times's widths (Linux, ChromeOS).
   A device without any of them skips these faces and uses the rest of the stack as before. */
@font-face {
	font-family: 'TMS Headline Fallback';
	font-style: normal;
	font-weight: 100 549;
	src: local('Times New Roman'), local('TimesNewRomanPSMT'), local('Liberation Serif'), local('Tinos');
	size-adjust: 103%;
	ascent-override: 71.36%;
	descent-override: 25.73%;
	line-gap-override: 0%;
}

@font-face {
	font-family: 'TMS Headline Fallback';
	font-style: normal;
	font-weight: 550 649;
	src: local('Times New Roman Bold'), local('TimesNewRomanPS-BoldMT'), local('Liberation Serif Bold'), local('Tinos Bold');
	size-adjust: 101%;
	ascent-override: 72.77%;
	descent-override: 26.24%;
	line-gap-override: 0%;
}

@font-face {
	font-family: 'TMS Headline Fallback';
	font-style: normal;
	font-weight: 650 749;
	src: local('Times New Roman Bold'), local('TimesNewRomanPS-BoldMT'), local('Liberation Serif Bold'), local('Tinos Bold');
	size-adjust: 104%;
	ascent-override: 70.67%;
	descent-override: 25.48%;
	line-gap-override: 0%;
}

@font-face {
	font-family: 'TMS Headline Fallback';
	font-style: normal;
	font-weight: 750 900;
	src: local('Times New Roman Bold'), local('TimesNewRomanPS-BoldMT'), local('Liberation Serif Bold'), local('Tinos Bold');
	size-adjust: 108%;
	ascent-override: 68.06%;
	descent-override: 24.54%;
	line-gap-override: 0%;
}

/* Italic. The theme uses real italics — article body <em>/<i> and an explicit
   newsroom.css rule — so these keep emphasis on the true italic design instead of a
   browser-synthesized faux slant (especially visible on the Newsreader serif). Loaded
   only on pages that actually render italic text. */

/* Libre Franklin — italic (variable, wght 100–900). */
@font-face {
	font-family: 'Libre Franklin';
	font-style: italic;
	font-weight: 100 900;
	font-display: swap;
	src: url('../fonts/libre-franklin-italic-latin.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: 'Libre Franklin';
	font-style: italic;
	font-weight: 100 900;
	font-display: swap;
	src: url('../fonts/libre-franklin-italic-latin-ext.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;
}

/* Newsreader — italic (variable, opsz 6–72, wght fixed at 400). Only the wordmark's light words ("Times",
   "News Online", tms_news_wordmark_generic_words()) use it, and every page loads it there. It is cut to the
   one weight they use: 63.8 KB instead of 146.9 KB for latin, with the same characters. A bold italic in
   this family would be synthesized. */
@font-face {
	font-family: 'TMS Headline';
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url('../fonts/newsreader-italic-latin.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: 'TMS Headline';
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url('../fonts/newsreader-italic-latin-ext.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;
}
