/* OPPO Sans 4.0 自托管声明 · v4 设计系统专用
   20260801 换血:四个字重**全部**来自 OPPO Sans 4.0 可变字体,一份母版实例化出四档。
   在此之前是拼的两套:400/500/700 = OPlusSans 3.0,只有 600 = 4.0 ——
   同一屏跑着两代字库,逐字比对九个汉字没有一个字形相同(4.0 是重画过的:
   中文字面窄 1.4%、数字宽 3.9%、重心下移)。艺浩说"渲染的好像不是 OPPO Sans",
   查下来他看到的正文确实不是 4.0,是上一代的 3.0。
   母版 assets/brand/OPPOSans4-Variable.ttf(wght 100→700),重裁走 scripts/subset_fonts.sh。

   20260729 性能:生产用 GB2312 全集+英数标点子集(7545 字,每档 5.1MB → 1.1MB,
   登录首开不再卡);子集外的生僻字自动回退 PingFang SC。
   映射:R=400 / M=500 / SB=600 / W650=650 / B=700。⚖ 20260830 Typography v1 两柱制:界面只用 500/650(650 当日按艺浩拍板从母版新裁,同吃度量补丁);400/600/700 面留档不上屏(打印纸样除外)

   三条纪律,违反任何一条都会出"极难查"的排版 bug:
   ① 裁完必须把行高度量改回 1100/-320(win 1100/320)——4.0 原生申报 928/-244,
      比它矮 0.25em。四档同源之后彼此本来就一致了,但**全站的行高、留白、卡片高度
      都是照 1100/-320 这个口径调出来的**,换成原生值等于每行的行高盒缩两成,
      几百处间距要重调(20260730 III区日历选中列上移 3px 就是这条没对齐)。
      字形一根笔画不动,只改字体告诉浏览器的行高信息。补丁在脚本里,重裁一律走脚本。
   ② 不许写 local():装了同名字体的机器会拿本机那份(度量未打补丁)顶掉这里的,
      同一套代码在不同电脑上排版不一样,极难查。渲染必须只认自托管这四个文件。
   ③ 换字体文件时把 ?v= 日期一起改掉(本文件四处 + login.html 两处 preload),
      否则浏览器缓存会让人以为改了没效果。

   署名:本系统使用 OPPO Sans 字体(© Guangdong OPPO Mobile Telecommunications Corp., Ltd.),
   授权原文见 assets/brand/OPPOSans4-License.txt。界面内的声明位置由艺浩定在设置页。 */
@font-face{font-family:'OPPO Sans';font-weight:400;font-display:swap;
  src:url(fonts/OPPOSans4-Regular.subset.woff2?v=20260801) format('woff2')}
@font-face{font-family:'OPPO Sans';font-weight:500;font-display:swap;
  src:url(fonts/OPPOSans4-Medium.subset.woff2?v=20260801) format('woff2')}
@font-face{font-family:'OPPO Sans';font-weight:600;font-display:swap;
  src:url(fonts/OPPOSans4-SemiBold.subset.woff2?v=20260801) format('woff2')}
@font-face{font-family:'OPPO Sans';font-weight:650;font-display:swap;
  src:url(fonts/OPPOSans4-W650.subset.woff2?v=20260830) format('woff2')}
@font-face{font-family:'OPPO Sans';font-weight:700;font-display:swap;
  src:url(fonts/OPPOSans4-Bold.subset.woff2?v=20260801) format('woff2')}
