/* DI2-A1 — `IBM Plex Sans KR` 셀프호스팅 @font-face. 외부 CDN 무접촉.
 *
 * 출처 = npm `@fontsource/ibm-plex-sans-kr@5.3.0`(SIL OFL 1.1 — 원문 동봉
 * `app/assets/fonts/IBMPlexSansKR.LICENSE`). 받은 .tgz 는 리포에 넣지 않고 woff2 8개만 옮겼다.
 *
 * ★★왜 `tailwind/application.css` 가 아니라 **이 파일**인가 — 게이트 충돌 회피.
 *   `lib/gate/asset_freshness.rb` `WATCHED` 는 **두 자산**의 «서빙 바이트 == 소스 바이트» 를
 *   정확히 일치로 판정한다: `tailwind.css`(← `app/assets/builds/`)와
 *   `application.css`(← `app/assets/stylesheets/`). 그런데 `Propshaft::Compiler::CssAssetUrls` 는
 *   `url("...")` 을 컴파일 시점에 다이제스트 경로로 **재작성**한다
 *   (`url("/assets/IBMPlexSansKR-korean-400-974b924e.woff2")` → `url("/assets/IBMPlexSansKR-korean-400-<해시>.woff2")`).
 *   ⇒ 그 두 파일 중 하나에 `url()` 서체 참조를 쓰면 서빙본과 소스가 **영구히 달라져**
 *     `bin/gate-rspec` 이 `:stale`(종료코드 77)로 막는다 — 실제로는 정확히 최신인데도.
 *   Pretendard(`D-4`)는 그래서 **base64 인라인**을 택했다. 그 길을 여기서 따르지 않은 이유는
 *   **용량**이다: Pretendard 는 가변폰트 1파일(292KB → base64 389KB)이지만 IBM Plex Sans KR 은
 *   굵기별 파일이라 4굵기 한글 서브셋만 2.0MB 다 — base64 로 얹으면 `tailwind.css` 가 2.8MB 가 되고
 *   **모든 페이지가 그 CSS 를 먼저 받아야** 한다(서체는 `font-display:swap` 으로 늦게 와도 되는데).
 *   ⇒ **`WATCHED` 밖의 새 스타일시트**로 분리한다. 여기서는 Propshaft 의 url() 재작성이
 *     «고장» 이 아니라 **정상 동작**이고(다이제스트 = 캐시 무효화), 게이트가 재는 두 파일은
 *     `url()` 을 한 건도 갖지 않아 그대로 바이트 일치를 유지한다.
 *   ⛔이 파일을 `WATCHED` 에 등재하지 마라 — 등재하는 순간 위 충돌이 이 파일로 옮겨온다.
 *
 * ★서브셋 선택 — 왜 `latin` + `korean` **2종**인가.
 *   fontsource 의 집계 CSS(`400.css`)는 한 굵기를 **94개 마이크로 서브셋**으로 쪼갠다
 *   (굵기 4벌 = 376파일). 리포에 넣을 수 없는 수라 **이름 있는 서브셋 2종**만 가져오고
 *   `unicode-range` 를 직접 적었다(fontsource 의 `korean-400.css`·`latin-400.css` 에는
 *   `unicode-range` 가 없다 — 그대로 쓰면 같은 family/weight 선언 2건이 되어 **뒤에 온 것이
 *   앞의 것을 통째로 덮고** 한쪽 파일이 죽은 무게가 된다).
 *   ⇒ 범위를 명시해 브라우저가 **필요한 쪽만** 내려받게 한다: 라틴 본문은 15KB,
 *     한글이 나타나는 화면에서만 추가로 ~520KB.
 *   범위 밖 문자(예: CJK 한자 U+4E00-9FFF)는 다음 서체(Pretendard)가 받는다 — 폴백이 정상 동작.
 */

/* ── 400 (본문) ───────────────────────────────────────────────────────────── */
@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/IBMPlexSansKR-latin-400-e6e96d1f.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/IBMPlexSansKR-korean-400-974b924e.woff2") format("woff2");
  unicode-range: U+1100-11FF, U+3130-318F, U+A960-A97F, U+AC00-D7A3, U+D7B0-D7FF,
    U+3000-303F, U+FF00-FFEF;
}

/* ── 500 (라벨·강조) ──────────────────────────────────────────────────────── */
@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/IBMPlexSansKR-latin-500-6f885627.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/IBMPlexSansKR-korean-500-eec45e57.woff2") format("woff2");
  unicode-range: U+1100-11FF, U+3130-318F, U+A960-A97F, U+AC00-D7A3, U+D7B0-D7FF,
    U+3000-303F, U+FF00-FFEF;
}

/* ── 600 (부제·칩) ────────────────────────────────────────────────────────── */
@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/IBMPlexSansKR-latin-600-7867f825.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/IBMPlexSansKR-korean-600-fc35a3b1.woff2") format("woff2");
  unicode-range: U+1100-11FF, U+3130-318F, U+A960-A97F, U+AC00-D7A3, U+D7B0-D7FF,
    U+3000-303F, U+FF00-FFEF;
}

/* ── 700 (제목·버튼) ─────────────────────────────────────────────────────── */
@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/assets/IBMPlexSansKR-latin-700-9c6192e6.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans KR";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/assets/IBMPlexSansKR-korean-700-d7fbf5bb.woff2") format("woff2");
  unicode-range: U+1100-11FF, U+3130-318F, U+A960-A97F, U+AC00-D7A3, U+D7B0-D7FF,
    U+3000-303F, U+FF00-FFEF;
}
