/* ==========================================================================
   全局字体规范（invoice-app）
   1) 界面字体（发票预览以外的全部界面）：
      "PingFang SC" → Inter → -apple-system → BlinkMacSystemFont → "Segoe UI"
      → "Hiragino Sans GB" → "Microsoft YaHei" → sans-serif
      （汉字、数字、字母统一首选 PingFang SC 苹方-简）
   2) 发票票样：SimSun（明细/表头）· 楷体（标题/标签/印章）· Bonava Sans（信用代码）
      ⚠️ 票面楷体不能只写系统字体名 KaiTi —— 见下方 @font-face 说明。
   3) 等宽回退：ui-monospace / monospace（工单编号、发票流水号）
   ========================================================================== */

/* --------------------------------------------------------------------------
   票面楷体兜底（自托管子集）
   为什么要它：KaiTi / "Kaiti SC" / STKaiti 都是「本机字体名」，只有 Windows 与
   macOS 装了楷体。手机——iOS 与 Android 都不带楷体——一个都匹配不上，于是浏览器
   顺着字体栈落到最后的通用族 serif；而手机系统的中文 serif 正好是宋体
   （iOS = Songti SC，Android = Noto Serif CJK），这就是「手机上楷体变宋体」的原因。
   这里补一个只含票面用字的自托管子集（楷体_GB2312，9.8KB / 82 字），
   排在最前作主字源，系统楷体作桌面试兼容回退。手机 / 桌面 / 服务器 / 预览全部
   1:1 渲染同一份字形。
   票面文字若有增删，重新生成：python tools/build_invoice_kai.py
   -------------------------------------------------------------------------- */
@font-face {
  font-family: 'InvoiceKai';
  src: url('/fonts/invoice-kai.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'InvoiceSong';
  src: url('/fonts/invoice-song.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

:root {
  /* 界面主字体栈：汉字 / 数字 / 字母一律首选用苹方-简（发票预览除外） */
  --font-ui: "PingFang SC", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI",
             "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  /* 数字/金额专用（苹方 + tabular-nums 等宽数字） */
  --font-num: "PingFang SC", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI",
              ui-monospace, monospace;
  /* 等宽代码与数据回退 */
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  /* 仿真发票票样 */
  --font-invoice-text: InvoiceSong, SimSun, "Songti SC", STSong, "SimSun-ExtB", serif;
  /* 楷体：自托管子集（楷体_GB2312 9.8KB）作主字源 → 跨设备 1:1 一致；
     系统楷体作桌面试兼容回退（万一子集加载失败） */
  --font-invoice-title: InvoiceKai, KaiTi, "Kaiti SC", STKaiti,
                        "KaiTi_GB2312", serif;
  --font-invoice-code: "Bonava Sans", BonavaSans-Regular, ui-monospace, SFMono-Regular,
                       Menlo, Consolas, monospace;
}

/* 1. 界面全局字体 */
html,
body {
  font-family: var(--font-ui) !important;
}

body {
  /* 开启 Inter 等宽数字特性（tabular-nums）与 cv05 字形优化 */
  font-feature-settings: "tnum" on, "cv05" on;
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* 表单控件继承界面字体，避免浏览器默认字体破坏一致性 */
input,
button,
select,
textarea,
optgroup,
option {
  font-family: inherit;
}

/* 1.1 统一压制 Tailwind 字体工具类：全站（含 toast / 弹窗 / 按钮 / 表单）
      中文、字母、数字一律使用同一字体栈，避免各页面配置不一致 */
.font-sans,
.font-display,
.font-serif,
.font-body,
.font-ui {
  font-family: var(--font-ui) !important;
}

/* 表单控件强制继承界面字体（覆盖浏览器默认与工具类） */
input,
button,
select,
textarea,
optgroup,
option {
  font-family: var(--font-ui) !important;
}
::placeholder {
  font-family: var(--font-ui);
}

/* 弹窗 / 气泡（Toast）：统一字体 + 单行显示 */
.modal-backdrop *,
.modal-panel *,
.modal-content *,
#toast-container *,
.toast-item * {
  font-family: var(--font-ui);
}

/* 唯一例外：仿真发票票面（#invoicePreview 内 SVG）由下方第 4 节规则
   与页面内联样式指定为宋体 / 楷体，不参与界面字体统一 */

/* 2. 金额大字与等宽数据排版：Inter + tabular-nums */
.amount,
.money,
.tnum,
.tabular-nums,
[data-num],
[data-k],
.invoice-no,
.ticket-no,
table td,
table th {
  font-family: var(--font-num) !important;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" on, "cv05" on;
}

/* 3. 工单编号 / 发票流水号：仍用苹方，靠 tabular-nums 保证等宽对齐 */
.font-mono,
.font-num,
.mono-num {
  font-family: var(--font-num) !important;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" on, "cv05" on;
}

/* 真·代码场景才用等宽字体族（作为回退机制保留） */
code,
kbd,
pre,
samp {
  font-family: var(--font-mono) !important;
}

/* 4. 仿真发票票样专用字体 */
.invoice-text,
.invoice-detail {
  font-family: var(--font-invoice-text) !important;
}
.invoice-title,
.invoice-label,
.invoice-seal {
  font-family: var(--font-invoice-title) !important;
}
.invoice-code,
.tax-id {
  font-family: var(--font-invoice-code) !important;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}

/* SVG 内嵌票样（cls-* 类由票样模板生成，按用途归类兜底） */
svg [class*="invoice-text"],
svg .cls-1,
svg .cls-2,
svg .cls-3,
svg .cls-19 {
  font-family: var(--font-invoice-text) !important;
}
/* cls-9 is a path fill class in the reference SVG, not a text class. */
svg .cls-4,
svg .cls-6 {
  font-family: var(--font-invoice-title) !important;
}
svg .cls-16 {
  font-family: var(--font-invoice-code) !important;
}

/* 后备：无网络时 Inter 未加载，退化到系统字体仍保持规范顺序 */
@supports not (font-variant-numeric: tabular-nums) {
  body {
    font-feature-settings: normal;
  }
}
