/* Self-hosted Poppins (files copied from @fontsource/poppins).
 *
 * These @font-face rules live in a static stylesheet (linked once from
 * __root.tsx) instead of app.css on purpose: in dev, TanStack Start serves
 * app.css twice — via the SSR styles.css link and again as a Vite-injected
 * style module after hydration. Duplicated @font-face rules re-run font
 * matching after first paint, which visibly swaps the page out of Poppins
 * and back on every refresh. A static file is never re-evaluated, so the
 * faces are declared exactly once in both dev and prod.
 *
 * font-display: fallback (not optional): Chrome implements optional with a
 * ZERO-length block period — it paints whatever fallback is ready at first
 * layout (raw Helvetica, since even local() faces load async) and then
 * reflows, which is exactly the refresh jitter this file exists to prevent.
 * fallback gives ~100ms of invisible text instead; with the preloads in
 * __root.tsx the woff2s arrive inside that window, so the first VISIBLE
 * text is already Poppins. On a slow network the page shows the
 * metric-matched "Poppins Fallback" below and swaps within 3s — a swap
 * that is sub-pixel because the fallback is tuned per glyph class.
 */

/* The font stack is set HERE, not only via Tailwind's --font-sans: in dev
   the @theme custom properties arrive in a later stylesheet batch than
   first paint, so a var()-based stack lays the whole page out in
   ui-sans-serif and reflows it to Poppins ~30ms later on every refresh.
   This un-layered rule beats Tailwind's layered preflight and is present
   from the very first stylesheet, so the stack never changes after first
   paint. Keep it in sync with --font-sans in src/app.css. */
html {
	font-family: "Poppins", "Poppins Fallback", ui-sans-serif, system-ui, sans-serif;
}

@font-face {
	font-family: "Poppins";
	font-style: normal;
	font-display: fallback;
	font-weight: 400;
	src: url("/fonts/poppins-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: "Poppins";
	font-style: normal;
	font-display: fallback;
	font-weight: 500;
	src: url("/fonts/poppins-latin-500-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: "Poppins";
	font-style: normal;
	font-display: fallback;
	font-weight: 600;
	src: url("/fonts/poppins-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: "Poppins";
	font-style: normal;
	font-display: fallback;
	font-weight: 700;
	src: url("/fonts/poppins-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;
}

/* latin-ext (accented European characters) — loaded on demand via
   unicode-range; not preloaded. */
@font-face {
	font-family: "Poppins";
	font-style: normal;
	font-display: fallback;
	font-weight: 400;
	src: url("/fonts/poppins-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;
}

@font-face {
	font-family: "Poppins";
	font-style: normal;
	font-display: fallback;
	font-weight: 500;
	src: url("/fonts/poppins-latin-ext-500-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;
}

@font-face {
	font-family: "Poppins";
	font-style: normal;
	font-display: fallback;
	font-weight: 600;
	src: url("/fonts/poppins-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;
}

@font-face {
	font-family: "Poppins";
	font-style: normal;
	font-display: fallback;
	font-weight: 700;
	src: url("/fonts/poppins-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;
}

/* "Poppins Fallback": local Arial reshaped to Poppins' metrics so any text
   painted before Poppins arrives occupies (nearly) the same space. A single
   size-adjust can't work — Poppins' proportions vs Arial differ per glyph
   class (lowercase ~+14..21%, capitals ~-6..+1%, digits ~+4..7%, narrow
   punctuation ~-20%, wide punctuation ~+50%) — so each class gets its own
   unicode-range face per weight. Values were measured empirically in
   Chromium (see git history of this fix); ascent/descent/line-gap overrides
   keep the used ascent at 105%/35%/10% of font-size (Poppins' hhea metrics)
   after size-adjust scaling. */

/* weight 400 */

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 400;
	src: local("Arial");
	size-adjust: 118.14%;
	ascent-override: 88.88%;
	descent-override: 29.63%;
	line-gap-override: 8.46%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 400;
	src: local("Arial");
	unicode-range: U+0022, U+0025, U+0027, U+002C, U+002E, U+003A-003B, U+00B7;
	size-adjust: 80.12%;
	ascent-override: 131.05%;
	descent-override: 43.68%;
	line-gap-override: 12.48%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 400;
	src: local("Arial");
	unicode-range: U+0028-0029, U+002D, U+002F;
	size-adjust: 151.54%;
	ascent-override: 69.29%;
	descent-override: 23.10%;
	line-gap-override: 6.60%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 400;
	src: local("Arial");
	unicode-range: U+0020;
	size-adjust: 96.1%;
	ascent-override: 109.26%;
	descent-override: 36.42%;
	line-gap-override: 10.41%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 400;
	src: local("Arial");
	unicode-range: U+0030-0039;
	size-adjust: 104.49%;
	ascent-override: 100.49%;
	descent-override: 33.50%;
	line-gap-override: 9.57%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 400;
	src: local("Arial");
	unicode-range: U+0041-005A, U+00C0-00D6, U+00D8-00DE;
	size-adjust: 94.17%;
	ascent-override: 111.50%;
	descent-override: 37.17%;
	line-gap-override: 10.62%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 400;
	src: local("Arial");
	unicode-range: U+0061-007A, U+00DF-00F6, U+00F8-00FF;
	size-adjust: 114.32%;
	ascent-override: 91.85%;
	descent-override: 30.62%;
	line-gap-override: 8.75%;
}

/* weight 500 */

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 500;
	src: local("Arial");
	size-adjust: 122.51%;
	ascent-override: 85.71%;
	descent-override: 28.57%;
	line-gap-override: 8.16%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 500;
	src: local("Arial");
	unicode-range: U+0022, U+0025, U+0027, U+002C, U+002E, U+003A-003B, U+00B7;
	size-adjust: 88.49%;
	ascent-override: 118.66%;
	descent-override: 39.55%;
	line-gap-override: 11.30%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 500;
	src: local("Arial");
	unicode-range: U+0028-0029, U+002D, U+002F;
	size-adjust: 163.14%;
	ascent-override: 64.36%;
	descent-override: 21.45%;
	line-gap-override: 6.13%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 500;
	src: local("Arial");
	unicode-range: U+0020;
	size-adjust: 93.58%;
	ascent-override: 112.20%;
	descent-override: 37.40%;
	line-gap-override: 10.69%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 500;
	src: local("Arial");
	unicode-range: U+0030-0039;
	size-adjust: 106.5%;
	ascent-override: 98.59%;
	descent-override: 32.86%;
	line-gap-override: 9.39%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 500;
	src: local("Arial");
	unicode-range: U+0041-005A, U+00C0-00D6, U+00D8-00DE;
	size-adjust: 96.56%;
	ascent-override: 108.74%;
	descent-override: 36.25%;
	line-gap-override: 10.36%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 500;
	src: local("Arial");
	unicode-range: U+0061-007A, U+00DF-00F6, U+00F8-00FF;
	size-adjust: 116.03%;
	ascent-override: 90.49%;
	descent-override: 30.16%;
	line-gap-override: 8.62%;
}

/* weight 600 */

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 600;
	src: local("Arial");
	size-adjust: 122.41%;
	ascent-override: 85.78%;
	descent-override: 28.59%;
	line-gap-override: 8.17%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 600;
	src: local("Arial");
	unicode-range: U+0022, U+0025, U+0027, U+002C, U+002E, U+003A-003B, U+00B7;
	size-adjust: 95.82%;
	ascent-override: 109.58%;
	descent-override: 36.53%;
	line-gap-override: 10.44%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 600;
	src: local("Arial");
	unicode-range: U+0028-0029, U+002D, U+002F;
	size-adjust: 159.69%;
	ascent-override: 65.75%;
	descent-override: 21.92%;
	line-gap-override: 6.26%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 600;
	src: local("Arial");
	unicode-range: U+0020;
	size-adjust: 85.66%;
	ascent-override: 122.58%;
	descent-override: 40.86%;
	line-gap-override: 11.67%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 600;
	src: local("Arial");
	unicode-range: U+0030-0039;
	size-adjust: 106.86%;
	ascent-override: 98.26%;
	descent-override: 32.75%;
	line-gap-override: 9.36%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 600;
	src: local("Arial");
	unicode-range: U+0041-005A, U+00C0-00D6, U+00D8-00DE;
	size-adjust: 98.41%;
	ascent-override: 106.70%;
	descent-override: 35.57%;
	line-gap-override: 10.16%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 600;
	src: local("Arial");
	unicode-range: U+0061-007A, U+00DF-00F6, U+00F8-00FF;
	size-adjust: 118.14%;
	ascent-override: 88.88%;
	descent-override: 29.63%;
	line-gap-override: 8.46%;
}

/* weight 700 */

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 700;
	src: local("Arial");
	size-adjust: 122.25%;
	ascent-override: 85.89%;
	descent-override: 28.63%;
	line-gap-override: 8.18%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 700;
	src: local("Arial");
	unicode-range: U+0022, U+0025, U+0027, U+002C, U+002E, U+003A-003B, U+00B7;
	size-adjust: 104.22%;
	ascent-override: 100.75%;
	descent-override: 33.58%;
	line-gap-override: 9.60%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 700;
	src: local("Arial");
	unicode-range: U+0028-0029, U+002D, U+002F;
	size-adjust: 155.62%;
	ascent-override: 67.47%;
	descent-override: 22.49%;
	line-gap-override: 6.43%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 700;
	src: local("Arial");
	unicode-range: U+0020;
	size-adjust: 76.3%;
	ascent-override: 137.61%;
	descent-override: 45.87%;
	line-gap-override: 13.11%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 700;
	src: local("Arial");
	unicode-range: U+0030-0039;
	size-adjust: 107.27%;
	ascent-override: 97.88%;
	descent-override: 32.63%;
	line-gap-override: 9.32%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 700;
	src: local("Arial");
	unicode-range: U+0041-005A, U+00C0-00D6, U+00D8-00DE;
	size-adjust: 100.54%;
	ascent-override: 104.44%;
	descent-override: 34.81%;
	line-gap-override: 9.95%;
}

@font-face {
	font-family: "Poppins Fallback";
	font-weight: 700;
	src: local("Arial");
	unicode-range: U+0061-007A, U+00DF-00F6, U+00F8-00FF;
	size-adjust: 120.59%;
	ascent-override: 87.07%;
	descent-override: 29.02%;
	line-gap-override: 8.29%;
}
