/**
 * Self-hosted webfonts: the four families of the approved homepage design (docs/design/artifact-home), as the design
 * loads them from Google Fonts, served from this theme. @font-face rules only.
 *
 * Source: the design's two Google Fonts stylesheets, fetched 2026-10-08 with a current Chrome user agent:
 *   css2?family=Bricolage+Grotesque:opsz,wdth,wght@12..96,75..100,200..800&family=Geist+Mono:wght@400..600
 *        &family=Instrument+Serif:ital@0;1&family=Inter:opsz,wght@14..32,400..700&display=swap
 *   css2?family=Noto+Sans+Bengali:wght@400..700&text=%E0%A7%B3&display=swap   (the taka sign only)
 * Every face and unicode-range below is Google's, byte-identical files renamed <Family>-<subset>.woff2. The files are
 * variable: Bricolage Grotesque v9 (opsz 12-96, wdth 75-100, wght 200-800), Inter v20 (opsz 14-32, wght 400-700), Geist
 * Mono v6 (wght 400-600); with font-optical-sizing at its default (auto) the optical size follows the font size, as in
 * the design. Instrument Serif v5 (regular and italic). All SIL Open Font License 1.1. A browser fetches a subset only
 * when the page uses one of its characters. The two preloaded files (BricolageGrotesque-latin, Inter-latin) are
 * requested by inc/enqueue.php with the same URLs as below, so keep the paths in sync.
 */

/* Bricolage Grotesque normal 200 800, vietnamese */
@font-face {
	font-family: "Bricolage Grotesque";
	font-style: normal;
	font-weight: 200 800;
	font-stretch: 75% 100%;
	font-display: swap;
	src: url("../fonts/BricolageGrotesque-vietnamese.woff2") format("woff2");
	unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

/* Bricolage Grotesque normal 200 800, latin-ext */
@font-face {
	font-family: "Bricolage Grotesque";
	font-style: normal;
	font-weight: 200 800;
	font-stretch: 75% 100%;
	font-display: swap;
	src: url("../fonts/BricolageGrotesque-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Bricolage Grotesque normal 200 800, latin */
@font-face {
	font-family: "Bricolage Grotesque";
	font-style: normal;
	font-weight: 200 800;
	font-stretch: 75% 100%;
	font-display: swap;
	src: url("../fonts/BricolageGrotesque-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;
}

/* Geist Mono normal 400 600, cyrillic-ext */
@font-face {
	font-family: "Geist Mono";
	font-style: normal;
	font-weight: 400 600;
	font-display: swap;
	src: url("../fonts/GeistMono-cyrillic-ext.woff2") format("woff2");
	unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* Geist Mono normal 400 600, cyrillic */
@font-face {
	font-family: "Geist Mono";
	font-style: normal;
	font-weight: 400 600;
	font-display: swap;
	src: url("../fonts/GeistMono-cyrillic.woff2") format("woff2");
	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* Geist Mono normal 400 600, symbols2 */
@font-face {
	font-family: "Geist Mono";
	font-style: normal;
	font-weight: 400 600;
	font-display: swap;
	src: url("../fonts/GeistMono-symbols2.woff2") format("woff2");
	unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;
}

/* Geist Mono normal 400 600, vietnamese */
@font-face {
	font-family: "Geist Mono";
	font-style: normal;
	font-weight: 400 600;
	font-display: swap;
	src: url("../fonts/GeistMono-vietnamese.woff2") format("woff2");
	unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

/* Geist Mono normal 400 600, latin-ext */
@font-face {
	font-family: "Geist Mono";
	font-style: normal;
	font-weight: 400 600;
	font-display: swap;
	src: url("../fonts/GeistMono-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Geist Mono normal 400 600, latin */
@font-face {
	font-family: "Geist Mono";
	font-style: normal;
	font-weight: 400 600;
	font-display: swap;
	src: url("../fonts/GeistMono-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;
}

/* Instrument Serif italic 400, latin-ext */
@font-face {
	font-family: "Instrument Serif";
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url("../fonts/InstrumentSerif-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Instrument Serif italic 400, latin */
@font-face {
	font-family: "Instrument Serif";
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url("../fonts/InstrumentSerif-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;
}

/* Instrument Serif normal 400, latin-ext */
@font-face {
	font-family: "Instrument Serif";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("../fonts/InstrumentSerif-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Instrument Serif normal 400, latin */
@font-face {
	font-family: "Instrument Serif";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("../fonts/InstrumentSerif-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;
}

/* Inter normal 400 700, cyrillic-ext */
@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/Inter-cyrillic-ext.woff2") format("woff2");
	unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* Inter normal 400 700, cyrillic */
@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/Inter-cyrillic.woff2") format("woff2");
	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* Inter normal 400 700, greek-ext */
@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/Inter-greek-ext.woff2") format("woff2");
	unicode-range: U+1F00-1FFF;
}

/* Inter normal 400 700, greek */
@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/Inter-greek.woff2") format("woff2");
	unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}

/* Inter normal 400 700, vietnamese */
@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/Inter-vietnamese.woff2") format("woff2");
	unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

/* Inter normal 400 700, latin-ext */
@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/Inter-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Inter normal 400 700, latin */
@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/Inter-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;
}

/* Noto Sans Bengali normal 400 700, taka */
@font-face {
	font-family: "Noto Sans Bengali";
	font-style: normal;
	font-weight: 400 700;
	font-stretch: 100%;
	font-display: swap;
	src: url("../fonts/NotoSansBengali-taka.woff2") format("woff2");
	unicode-range: U+9f3;
}

/*
 * Metric-adjusted fallbacks: shown until the webfont swaps in, sized so the
 * swap does not move text (CLS). Each family has an Arial face (Windows,
 * macOS, iOS) and a Roboto face (Android, which has no Arial). Of two faces
 * with the same family and descriptors the browser tries the one defined
 * last first and moves to the earlier one when its local() font is missing,
 * so each Roboto face comes before its Arial face: Arial wherever it is
 * installed, Roboto where it is not, and system-ui (next in the stack) where
 * neither is. Checked in headless Chromium with Arial and Roboto installed,
 * Roboto only, and neither.
 *
 * Roboto faces, measured 2026-10-07 the same way as the Bricolage/Arial face
 * below (canvas measureText of the pangram at 1120px in headless Chromium)
 * against Roboto v51 Regular from Google Fonts, loaded through the FontFace
 * API: Roboto is not installed on the build server. local() names Roboto by
 * its full name in Android's builds ("Roboto") and in current builds
 * ("Roboto Regular"), and by its PostScript name.
 */

/*
 * Inter Fallback, Roboto: Inter 400 = 23789px, Roboto = 22113px, so 107.58%
 * (Inter runs wider than Roboto: at 100% the fallback would be 7% narrower).
 * ascent/descent-override = Inter's ascender 1984 and descender 494 (2048
 * units/em) divided by the size-adjust (90.05% / 22.42%), the ascent rounded
 * up to 90.07% so that Chromium reports Inter's whole-pixel ascent and
 * descent at every size from 12 to 120px. Pangram at 112px: 2370px vs 2381px.
 */
@font-face {
	font-family: "Inter Fallback";
	src: local("Roboto"), local("Roboto Regular"), local("Roboto-Regular");
	size-adjust: 107.58%;
	ascent-override: 90.07%;
	descent-override: 22.42%;
	line-gap-override: 0%;
}

/*
 * Inter Fallback, Arial: values for Inter v4 (2048 units/em, ascender 1984,
 * descender 494) against Arial.
 */
@font-face {
	font-family: "Inter Fallback";
	src: local("Arial");
	size-adjust: 107.12%;
	ascent-override: 90.44%;
	descent-override: 22.52%;
	line-gap-override: 0%;
}

/*
 * Bricolage Fallback, Roboto: Bricolage Grotesque 700 = 24314px, Roboto
 * Regular = 22113px, so 109.95% (the regular face, for the reason given
 * below for Arial). ascent/descent-override = 930 and 270 divided by the
 * size-adjust (84.58% / 24.56%), the ascent rounded up to 84.59%: Chromium
 * then reports Bricolage's whole-pixel ascent and descent at every size from
 * 12 to 120px except 50px (1px less). Pangram at 112px: 2430px vs 2435px.
 */
@font-face {
	font-family: "Bricolage Fallback";
	src: local("Roboto"), local("Roboto Regular"), local("Roboto-Regular");
	size-adjust: 109.95%;
	ascent-override: 84.59%;
	descent-override: 24.56%;
	line-gap-override: 0%;
}

/*
 * Bricolage Fallback, Arial, measured 2026-10-06 in headless Chromium with
 * canvas measureText of "The quick brown fox jumps over the lazy dog" at 112px.
 * Arimo stood in for Arial (identical advance widths; Arial is not installed
 * on the build server). Bricolage Grotesque 700 = 2435px, Arial = 2209px at
 * whole-pixel advances; at 1120px (fractional precision) 24314 / 22163 =
 * 109.71%. Chromium keeps Arial's regular advances when it synthesises bold
 * for 600/700 headings, so the regular face is the right comparison.
 * Result at 112px with these values: 2420px vs 2435px (-0.6%).
 * ascent/descent-override = Bricolage's hhea ascender 930 and descender 270
 * (1000 units/em) divided by the size-adjust; the browser then reports the
 * same 104px/30px ascent/descent at 112px for both faces.
 */
@font-face {
	font-family: "Bricolage Fallback";
	src: local("Arial");
	size-adjust: 109.71%;
	ascent-override: 84.77%;
	descent-override: 24.61%;
	line-gap-override: 0%;
}
