/* AUTO-GENERATED by scripts/generate-font-css.mjs — do not edit by hand.
   Montserrat (variable, headings) + Be Vietnam Pro (400/500/600/700, body),
   Latin + Vietnamese. Served as static files under /assets/fonts/ (uploaded by
   the publish pipeline, cached immutable for a year), NOT base64-inlined —
   inlining defeated unicode-range subsetting and cost ~247 KB per page view. */

/* montserrat-latin-wght-normal.woff2 */
@font-face {
  font-family: "Montserrat";
  font-style: normal;
  /* optional (not swap): the font either paints in the ~100ms block period or
     the page keeps the fallback for the rest of that view — never swaps in
     later. swap was reflowing the nav bar and hero heading right as the woff2
     requests settled (measured live: a real layout-shift entry fired the
     instant the font finished downloading), because the fallback's glyph
     metrics don't match Montserrat/Be Vietnam Pro's. The asset is cached
     immutably for a year, so repeat visits paint the brand font immediately
     regardless. */
  font-display: optional;
  font-weight: 100 900;
  src: url("/assets/fonts/montserrat-latin-wght-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;
}

/* montserrat-vietnamese-wght-normal.woff2 */
@font-face {
  font-family: "Montserrat";
  font-style: normal;
  /* optional (not swap): the font either paints in the ~100ms block period or
     the page keeps the fallback for the rest of that view — never swaps in
     later. swap was reflowing the nav bar and hero heading right as the woff2
     requests settled (measured live: a real layout-shift entry fired the
     instant the font finished downloading), because the fallback's glyph
     metrics don't match Montserrat/Be Vietnam Pro's. The asset is cached
     immutably for a year, so repeat visits paint the brand font immediately
     regardless. */
  font-display: optional;
  font-weight: 100 900;
  src: url("/assets/fonts/montserrat-vietnamese-wght-normal.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;
}

/* be-vietnam-pro-latin-400-normal.woff2 */
@font-face {
  font-family: "Be Vietnam Pro";
  font-style: normal;
  /* optional (not swap): the font either paints in the ~100ms block period or
     the page keeps the fallback for the rest of that view — never swaps in
     later. swap was reflowing the nav bar and hero heading right as the woff2
     requests settled (measured live: a real layout-shift entry fired the
     instant the font finished downloading), because the fallback's glyph
     metrics don't match Montserrat/Be Vietnam Pro's. The asset is cached
     immutably for a year, so repeat visits paint the brand font immediately
     regardless. */
  font-display: optional;
  font-weight: 400;
  src: url("/assets/fonts/be-vietnam-pro-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;
}

/* be-vietnam-pro-vietnamese-400-normal.woff2 */
@font-face {
  font-family: "Be Vietnam Pro";
  font-style: normal;
  /* optional (not swap): the font either paints in the ~100ms block period or
     the page keeps the fallback for the rest of that view — never swaps in
     later. swap was reflowing the nav bar and hero heading right as the woff2
     requests settled (measured live: a real layout-shift entry fired the
     instant the font finished downloading), because the fallback's glyph
     metrics don't match Montserrat/Be Vietnam Pro's. The asset is cached
     immutably for a year, so repeat visits paint the brand font immediately
     regardless. */
  font-display: optional;
  font-weight: 400;
  src: url("/assets/fonts/be-vietnam-pro-vietnamese-400-normal.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;
}

/* be-vietnam-pro-latin-500-normal.woff2 */
@font-face {
  font-family: "Be Vietnam Pro";
  font-style: normal;
  /* optional (not swap): the font either paints in the ~100ms block period or
     the page keeps the fallback for the rest of that view — never swaps in
     later. swap was reflowing the nav bar and hero heading right as the woff2
     requests settled (measured live: a real layout-shift entry fired the
     instant the font finished downloading), because the fallback's glyph
     metrics don't match Montserrat/Be Vietnam Pro's. The asset is cached
     immutably for a year, so repeat visits paint the brand font immediately
     regardless. */
  font-display: optional;
  font-weight: 500;
  src: url("/assets/fonts/be-vietnam-pro-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;
}

/* be-vietnam-pro-vietnamese-500-normal.woff2 */
@font-face {
  font-family: "Be Vietnam Pro";
  font-style: normal;
  /* optional (not swap): the font either paints in the ~100ms block period or
     the page keeps the fallback for the rest of that view — never swaps in
     later. swap was reflowing the nav bar and hero heading right as the woff2
     requests settled (measured live: a real layout-shift entry fired the
     instant the font finished downloading), because the fallback's glyph
     metrics don't match Montserrat/Be Vietnam Pro's. The asset is cached
     immutably for a year, so repeat visits paint the brand font immediately
     regardless. */
  font-display: optional;
  font-weight: 500;
  src: url("/assets/fonts/be-vietnam-pro-vietnamese-500-normal.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;
}

/* be-vietnam-pro-latin-600-normal.woff2 */
@font-face {
  font-family: "Be Vietnam Pro";
  font-style: normal;
  /* optional (not swap): the font either paints in the ~100ms block period or
     the page keeps the fallback for the rest of that view — never swaps in
     later. swap was reflowing the nav bar and hero heading right as the woff2
     requests settled (measured live: a real layout-shift entry fired the
     instant the font finished downloading), because the fallback's glyph
     metrics don't match Montserrat/Be Vietnam Pro's. The asset is cached
     immutably for a year, so repeat visits paint the brand font immediately
     regardless. */
  font-display: optional;
  font-weight: 600;
  src: url("/assets/fonts/be-vietnam-pro-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;
}

/* be-vietnam-pro-vietnamese-600-normal.woff2 */
@font-face {
  font-family: "Be Vietnam Pro";
  font-style: normal;
  /* optional (not swap): the font either paints in the ~100ms block period or
     the page keeps the fallback for the rest of that view — never swaps in
     later. swap was reflowing the nav bar and hero heading right as the woff2
     requests settled (measured live: a real layout-shift entry fired the
     instant the font finished downloading), because the fallback's glyph
     metrics don't match Montserrat/Be Vietnam Pro's. The asset is cached
     immutably for a year, so repeat visits paint the brand font immediately
     regardless. */
  font-display: optional;
  font-weight: 600;
  src: url("/assets/fonts/be-vietnam-pro-vietnamese-600-normal.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;
}

/* be-vietnam-pro-latin-700-normal.woff2 */
@font-face {
  font-family: "Be Vietnam Pro";
  font-style: normal;
  /* optional (not swap): the font either paints in the ~100ms block period or
     the page keeps the fallback for the rest of that view — never swaps in
     later. swap was reflowing the nav bar and hero heading right as the woff2
     requests settled (measured live: a real layout-shift entry fired the
     instant the font finished downloading), because the fallback's glyph
     metrics don't match Montserrat/Be Vietnam Pro's. The asset is cached
     immutably for a year, so repeat visits paint the brand font immediately
     regardless. */
  font-display: optional;
  font-weight: 700;
  src: url("/assets/fonts/be-vietnam-pro-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;
}

/* be-vietnam-pro-vietnamese-700-normal.woff2 */
@font-face {
  font-family: "Be Vietnam Pro";
  font-style: normal;
  /* optional (not swap): the font either paints in the ~100ms block period or
     the page keeps the fallback for the rest of that view — never swaps in
     later. swap was reflowing the nav bar and hero heading right as the woff2
     requests settled (measured live: a real layout-shift entry fired the
     instant the font finished downloading), because the fallback's glyph
     metrics don't match Montserrat/Be Vietnam Pro's. The asset is cached
     immutably for a year, so repeat visits paint the brand font immediately
     regardless. */
  font-display: optional;
  font-weight: 700;
  src: url("/assets/fonts/be-vietnam-pro-vietnamese-700-normal.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;
}
