/* ============================================================================
 * 全サイト共通 webfont ＋ 書体変数（P411で星詠み向けに新設 → P419で全体基盤化）
 *
 * 読み込まれ方:
 *   - テーブルゲーム50テンプレ … table-common.css が @import
 *   - ポータル/wiki/カードゲーム/マイページ等 … design-tokens.css が @import
 *   - static/pages/*.html（自己完結の静的ページ） … 各HTMLが直接 <link>
 *   ＝ここが全ページの書体の一次ソース。
 *
 * 【配信するのは woff2 サブセットだけ】
 *   原本TTF（static/table-game/fonts/ 配下・合計28MB）は .gitignore 対象で
 *   VPSローカルにしか無い。ここが原本を直に指すと「新規cloneで当てた瞬間に404」
 *   になるので、必ず生成物を指すこと。
 *   再生成: bash tools/fonts/build-webfonts.sh （字種corpusも同時に作り直す）
 *
 *   'ZenOldMinchoUI'      和文明朝・見出し用    かな 61KB ＋ 漢字 493KB（原本 5.4MB）
 *                         └ unicode-range で2分割。かなだけの画面は61KBで済む。
 *   'Cinzel'              欧文セリフ可変400-900  23KB (原本  125KB)
 *   'MPLUSRounded1cCards' 丸ゴシック（カード用）  6.4KB
 *
 * 【和文サブセットの射程 ＝ "こちらが管理できる文字" だけ】
 *   字種は tools/fonts/jp-ui-corpus.txt（リポジトリ内の固定文言から実測・約2000字）。
 *   プレイヤー名・部屋名など**利用者が入力する文字列に和文明朝を当てないこと**。
 *   サブセット範囲外の漢字が1文字混じると、その字だけ別書体に落ちて
 *   「1つの名前の中で字ごとに書体が変わる」最もみすぼらしい絵になる（P419裁定）。
 *   当てて良いのは 見出し / 結果画面 / 宣言テキスト / バッジ / カード名。
 *
 * 【フォールバック】
 *   どの変数もstack末尾にOS標準書体を置いてある。webfontのDLが失敗しても
 *   文字は必ず読める。font-display:swap なので待ちの間も文字は消えない(FOITなし)。
 * ============================================================================ */

/* 和文明朝（原本はBoldのみ）。400-900を1フェイスに割り当てて合成ボールドを防ぐ
   （wiki の .gp-title 等が font-weight:900 を使うため上限は900まで受ける）。

   ★ 同じ font-family 名のまま unicode-range で「かな面」と「漢字面」に割ってある。
     ブラウザは**そのページに実際に出た字の面だけ**を取りに行くので、
     かなと約物しか出ない画面（規約ページ等）は 61KB で済み、漢字が出る画面だけ
     493KB を追加で引く。文言を後から足しても自動的に正しい面が引かれる
     ＝corpusを絞る方式のように「静かに穴が空く」ことが無い。
   ⚠ 別名(family名違い)にすると font stack の解決が壊れるので、必ず同名にすること。
   ⚠ 下の2つの range は6区間で U+0000-10FFFF を隙間なく・重複なく覆っている。
     境界を触る時は tools/fonts/build_corpus.py の is_ideograph() と必ず揃え、
     tools/fonts/verify_split.py（build-webfonts.sh が自動実行）で検算すること。
   ⚠ 約物・記号・全角英数は**かな面**に入れてある。ここを漢字面へ移すと
     「句読点だけ書体が変わる」という一番目立つ壊れ方をする。 */
@font-face {
  font-family: 'ZenOldMinchoUI';
  src: url('/static/table-game/fonts/ZenOldMincho/ZenOldMincho-Bold.ui-subset-kana.woff2') format('woff2');
  font-weight: 400 900;
  font-style: normal;
  font-display: swap;
  /* かな・約物・記号・全角英数・欧文（＝漢字ブロック以外の全部） */
  unicode-range: U+0-33FF, U+4DC0-4DFF, U+A000-F8FF, U+FB00-10FFFF;
}
@font-face {
  font-family: 'ZenOldMinchoUI';
  src: url('/static/table-game/fonts/ZenOldMincho/ZenOldMincho-Bold.ui-subset-kanji.woff2') format('woff2');
  font-weight: 400 900;
  font-style: normal;
  font-display: swap;
  /* CJK統合漢字（拡張A・互換漢字を含む） */
  unicode-range: U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF;
}
/* 欧文セリフ。可変フォントのwght軸(400-900)をそのまま保持したサブセット。
   旧CDN版は wght@500;600 だけだったので700/900は合成太字だった＝実体化する。 */
@font-face {
  font-family: 'Cinzel';
  src: url('/static/table-game/fonts/Cinzel/Cinzel-Variable.ui-subset.woff2') format('woff2');
  font-weight: 400 900;
  font-style: normal;
  font-display: swap;
}
/* カード生成用に既にサブセット化されていた丸ゴシック。 */
@font-face {
  font-family: 'MPLUSRounded1cCards';
  src: url('/static/table-game/fonts/MPLUSRounded1c/MPLUSRounded1c-Bold.cards-subset.woff2') format('woff2');
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}

/* --- 書体変数（各CSSはこれだけを参照する） --------------------------------- */
:root {
  /* 本文・UI。webfontを一切使わない＝どんな文字が来ても崩れない安全側。
     プレイヤー名・部屋名・チャット・ログ・入力欄・記事本文は必ずこれ。 */
  --font-ui:
    -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Hiragino Sans',
    'Hiragino Kaku Gothic ProN', 'Yu Gothic', Meiryo, system-ui, sans-serif;

  /* 見出し・結果画面・宣言テキスト用の主役。欧文=Cinzel / 和文=ZenOldMinchoUI の混植。
     どちらが落ちてもOS標準の明朝→serifへ順に落ちる。 */
  --font-heading:
    'Cinzel', 'ZenOldMinchoUI', 'Hiragino Mincho ProN', 'Yu Mincho',
    YuMincho, 'MS PMincho', serif;

  /* 欧文だけの表示（ロゴ・ラベル・ローマ数字）。和文は含めない。 */
  --font-display: 'Cinzel', Georgia, 'Times New Roman', serif;

  /* 和文だけの表示（見出し・カード名・二つ名）。欧文はOSのserifに任せる。 */
  --font-serif-jp:
    'ZenOldMinchoUI', 'Hiragino Mincho ProN', 'Yu Mincho', YuMincho,
    'MS PMincho', serif;

  /* スコア・残り時間などの数値。tabular表示は各所で font-variant-numeric を併用。 */
  --font-num: 'Cinzel', 'Segoe UI', system-ui, sans-serif;

  /* 丸ゴシック（カード面など、既存資産を当てたい所だけ）。 */
  --font-rounded: 'MPLUSRounded1cCards', var(--font-ui);
}
