/* ===== 12/11/2026 — TOÀN WEB KHÁCH MỘT FONT MONTSERRAT (anh: "đồng bộ font chữ, thay đổi toàn bộ").
   Khai cho mọi trang (trước chỉ giao diện C khai). font-display:swap: chữ hiện ngay bằng font dự phòng rồi đổi sang
   Montserrat khi tải xong — không như 'optional' của Be Vietnam Pro (trang đầu tiên đậm 500–800 rơi về font hệ thống).
   size-adjust:95%: Montserrat rộng hơn Be Vietnam Pro ~4–5% (câu tiếng Việt) và Fraunces ~4–9% — bố cục web canh theo bề ngang cũ
   nên co toàn bộ font 5% để chữ chiếm đúng chỗ cũ, không đẩy nút / menu / tiêu đề xuống dòng (anh: "không muốn lên xuống dòng làm bể khối").
   Giao diện C (canh theo Montserrat từ 07/10) tự khai Montserrat KHÔNG co trong giao-dien-c.css, nạp sau nên thắng.
   Be Vietnam Pro / Fraunces / IBM Plex Mono bên dưới GIỮ khai báo để lùi nhanh, nhưng không còn chỗ nào dùng
   (css/chu-montserrat.css ép Montserrat) nên trình duyệt không tải. */
/* 12/11 tối — CÙNG 3 DẢI ĐỘ ĐẬM cho mọi khối Montserrat (400 500 · 600 · 700 900). Chrome/Edge/Cốc Cốc/Android chỉ ghép các khối
   có ĐÚNG cùng dải font-weight thành một bộ chữ (chia theo unicode-range). Bản trưa khai Việt/Latin 400 800 còn Kirin 400 500/600/700 900
   → với độ đậm 400 trình duyệt chọn nhóm 400 500 chỉ có chữ Nga → chữ Việt/Latin rơi về font máy (đo bằng CDP getPlatformFontsForNode;
   getComputedStyle vẫn báo Montserrat nên tưởng đúng). File Việt/Latin là font biến thiên 400–800 nên khai 3 lần trỏ cùng file.
   Kirin bỏ U+0301 (dấu sắc tổ hợp đã có trong khối Việt) để trang tiếng Việt không tải thừa font Nga. */
@font-face{font-family:'Montserrat';font-style:normal;size-adjust:95%;font-weight:400 500;font-display:swap;src:url('/fonts/montserrat-400-800-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}
@font-face{font-family:'Montserrat';font-style:normal;size-adjust:95%;font-weight:400 500;font-display:swap;src:url('/fonts/montserrat-400-800-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:'Montserrat';font-style:normal;size-adjust:95%;font-weight:600;font-display:swap;src:url('/fonts/montserrat-400-800-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}
@font-face{font-family:'Montserrat';font-style:normal;size-adjust:95%;font-weight:600;font-display:swap;src:url('/fonts/montserrat-400-800-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:'Montserrat';font-style:normal;size-adjust:95%;font-weight:700 900;font-display:swap;src:url('/fonts/montserrat-400-800-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}
@font-face{font-family:'Montserrat';font-style:normal;size-adjust:95%;font-weight:700 900;font-display:swap;src:url('/fonts/montserrat-400-800-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}
/* Chữ Nga (trang /ru/…): cắt từ Montserrat Regular/SemiBold/Bold (OFL, bản đóng gói ở Go365.Shared/Pdf/Fonts), chỉ tải khi trang có chữ Kirin. */
@font-face{font-family:'Montserrat';font-style:normal;size-adjust:95%;font-weight:400 500;font-display:swap;src:url('/fonts/montserrat-400-cyrillic.woff2') format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Montserrat';font-style:normal;size-adjust:95%;font-weight:600;font-display:swap;src:url('/fonts/montserrat-600-cyrillic.woff2') format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Montserrat';font-style:normal;size-adjust:95%;font-weight:700 900;font-display:swap;src:url('/fonts/montserrat-700-cyrillic.woff2') format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}

/* ===== 03/09/2026 — GỠ toàn bộ khối latin-ext (owner chốt).
   Đo trên prod: font chiếm 332 KB/trang (19 tệp), nặng hơn cả ảnh. latin-ext phục vụ ký tự Đông Âu
   (ā ą ć č ł ń ř ś ž…) mà go365 bán cho khách Việt/Anh/Hàn/Trung/Nga — tiếng Nga dùng Cyrillic,
   không phải latin-ext. Quét 6 trang chính: KHÔNG có ký tự nào thuộc dải này.
   Trình duyệt vẫn tải chúng chỉ vì khối latin-ext khai trùng vài dấu TỔ HỢP (U+0304, U+0308, U+0329)
   với tiếng Việt dạng NFD — tải về rồi không dùng chữ nào.
   Tiếng Việt KHÔNG bị ảnh hưởng: ă đ ĩ ũ ơ ư và toàn bộ dấu nằm trong khối "vietnamese"
   (U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9).
   File .woff2 vẫn nằm trong wwwroot/fonts/, chỉ gỡ khai báo — cần thì khai lại là dùng được. */

/* Font tự host — thay fonts.googleapis.com (07/08/2026).
   07/08 chiều: Spline Sans Mono đổi font-display optional -> swap. Lý do: với
   'optional' trình duyệt chỉ chờ ~100ms, không kịp thì dùng font dự phòng cho
   CẢ lượt tải đó — nên khách vào lần đầu (cache trống) thấy con số KHÔNG phải
   font máy đánh chữ, vào lần hai mới đúng. Đo được: bề rộng chữ số "0" @200px
   là 117,2px khi cache trống và 120,0px khi cache ấm. Kèm preload file
   spline-400-700-latin.woff2 trong App.razor để font về kịp.
   Be Vietnam Pro và Fraunces GIỮ NGUYÊN 'optional' — đó là font thân bài và
   tiêu đề, đổi sang swap sẽ nháy cả trang.
   Sinh từ CSS gốc Google Fonts, giữ nguyên unicode-range + font-display:optional.
   File woff2 nằm ở /fonts/. Sửa file này PHẢI bump ?v= (CF Browser Cache TTL 1 năm). */

/* latin */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 400;
  font-display: optional;
  src: url('/fonts/bvp-400-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;
}

/* vietnamese */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 400;
  font-display: optional;
  src: url('/fonts/bvp-400-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;
}

/* latin */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 500;
  font-display: optional;
  src: url('/fonts/bvp-500-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;
}

/* vietnamese */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 500;
  font-display: optional;
  src: url('/fonts/bvp-500-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;
}

/* latin */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 600;
  font-display: optional;
  src: url('/fonts/bvp-600-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;
}

/* vietnamese */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 600;
  font-display: optional;
  src: url('/fonts/bvp-600-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;
}

/* latin */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 700;
  font-display: optional;
  src: url('/fonts/bvp-700-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;
}

/* vietnamese */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 700;
  font-display: optional;
  src: url('/fonts/bvp-700-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;
}

/* latin */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 800;
  font-display: optional;
  src: url('/fonts/bvp-800-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;
}

/* vietnamese */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 800;
  font-display: optional;
  src: url('/fonts/bvp-800-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;
}

/* Fraunces NGHIÊNG đã bỏ (21/08/2026) — đo trên /tour-listing ở khổ điện thoại: 3 file
   nghiêng (latin 80KB + latin-ext 70KB + vietnamese 22KB = 172KB trên tổng 514KB font) tải về
   chỉ để in vài chữ trang trí kiểu "hot nhất". Trình duyệt tự nghiêng từ bản đứng — vẫn là
   Fraunces, chỉ khác chút dáng chữ. Bỏ CẢ BA subset chứ không bỏ lẻ: giữ lại một subset thì
   một cụm chữ Việt lẫn ASCII sẽ nửa nghiêng thật nửa nghiêng máy, nhìn lệch hẳn.
   File .woff2 vẫn nằm trong /fonts nên muốn lùi chỉ cần dán lại 3 khối @font-face này. */

/* latin */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 500 900;
  font-display: optional;
  src: url('/fonts/fraunces-500-900-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;
}

/* vietnamese */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 500 900;
  font-display: optional;
  src: url('/fonts/fraunces-500-900-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;
}

/* ---------------------------------------------------------------------------
   IBM Plex Mono — thay Spline Sans Mono (17/08/2026)

   VÌ SAO ĐỔI: Spline Sans Mono thiếu 91/103 chữ có dấu tiếng Việt, và thiếu
   luôn hai dấu gốc để ghép là dấu hỏi (U+0309) và dấu râu (U+031B, cho ơ ư).
   Bản vá 12/08 (mượn file Be Vietnam Pro rồi gắn tên 'Spline Sans Mono') KHÔNG
   ăn: đo trên prod 17/08, badge trang chủ được vẽ 50/50 ký tự bằng DejaVu Sans
   Mono của hệ điều hành, chữ ra "QUÔĆ TÊ´ HÀNG ĐÂÙ". Thử tách bạch: đặt một
   dòng chữ font này thì chỉ 3 ký tự SỐ lấy được từ font mình, 24 chữ cái rơi
   hết ra ngoài họ font.

   IBM Plex Mono có ĐỦ 103/103 ký tự tiếng Việt, có cả ₫ (U+20AB). Owner chọn
   bộ này ngày 17/08 sau khi so bằng mắt với Roboto Mono và JetBrains Mono.
   Vẫn là font máy đánh chữ nên giữ được dáng con số/giá như cũ.

   Weight: Plex Mono chỉ tới 700. Chỗ nào CSS xin 800/900 thì khai lại chính
   file 700 để trình duyệt KHÔNG tự bôi đậm giả (synthetic bold) làm bệt chữ.
   --------------------------------------------------------------------------- */

/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/plexmono-400-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;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/plexmono-400-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;
}

/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/plexmono-500-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;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/plexmono-500-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;
}

/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/plexmono-600-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;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/plexmono-600-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;
}

/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/plexmono-700-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;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/plexmono-700-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;
}

/* --- 800/900 dùng lại chính file 700: chặn trình duyệt bôi đậm giả --- */
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 800 900;
  font-display: swap;
  src: url('/fonts/plexmono-700-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;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 800 900;
  font-display: swap;
  src: url('/fonts/plexmono-700-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;
}
