@charset "UTF-8";
/* ==========================================================================
   雅之林® 伙伴中心 4 页 · 「显示格式锁死」唯一真源 —— shared/lock-type.css
   部署后落到各站根为 `lock.css`，由 4 个页面在 </head> **最后一行**引入。
   --------------------------------------------------------------------------
   🔴🔴 为什么必须有它（用户 2026-10-06 铁律，原话）：
     「4 个页面要锁定格式，因为很多老年人的手机字体调的很大很大，显示的时候很难看，
       格式完全错并且看不到正常的内容。无论苹果还是安卓、无论任何手机、
       无论字体调节得多大，进入我们的伙伴中心就要按照我们的格式来显示。」

   崩的真因（量出来的，不是猜的）：
     ① **根字号没锁**：4 页的 `<html>` 都**没有显式 font-size**，
        而页面自己的 `<style>` 里用了**几十处 `rem`**（伙伴中心 49、伙伴打卡站 69）。
        `rem` 是按**根元素的计算字号**算的 —— 用户的"字体大小"设置一改，
        根字号跟着变大 ⇒ 这些 rem 尺寸**整片等比放大** ⇒ 文字溢出、卡片撑破、错行。
     ② **text-size-adjust 没兜全**：只有伙伴中心写在 `html` 上、打卡站写在个别元素上，
        工作站与商品中心**一处都没有** ⇒ 安卓 Chrome 的"字号档位"与 iOS 小屏
        自动放大（Text Autosizing）会强行把文字撑大。

   锁什么、不锁什么（**刻意只做这两件事**，避免误伤现有设计）：
     · 锁 `:root/html` 的 `font-size`＝**16px**（把 rem 基准钉死）；
     · 锁 `html/body` 的 `-webkit-text-size-adjust:100%`（关掉自动放大）。
     ⛔ 不锁任何具体元素的字号/行高/间距 —— 那些是设计的一部分，
        由各页自己的 CSS 决定；本文件只管"不给外部把基准改掉"。
     ⛔ 不要把它写进 yzl.css：yzl.css 是 8 页共享的设计系统，
        而"锁定外部缩放"是**独立职责**，混进去会让以后分不清谁在管什么。

   ⚠️ 为什么另起一份，而不是复用门户站的 `shared/type.css`：
     `type.css` 的覆盖范围是 group/case/edu/news/check/ai（+ mall），
     里面有几条 `html:not(.y-mall) body …` 的门户排版规则；
     把它引到 hub 会改动 hub 的既有观感。**两套体系，别混。**
   ⚠️ 也别把 hub 加进 `run_deploy.py` 的 `SITE_ROOT`：
     那会连带启用 sync_nav / sync_topbar / sync_hero / sync_desktop / sync_lang
     等**门户站专用注入**，等于把 hub 的设计交给门户规则管。
     ⇒ 本文件走 `sync_lock(site)` 这条**只给 hub** 的通道。

   判据（验收用，⛔ 别靠肉眼）：
     把浏览器默认字号从 16px 调到 24px（+50%），页面布局尺寸**必须逐像素不变**。
     实测脚本会把 4 页的 body 高度 / 关键卡片宽高 / 首个标题的宽高都量出来比。
   ========================================================================== */

/* --------------------------------------------------------------------------
   ① 根字号钉死 16px —— 这一条是「rem 不跟着用户设置放大」的唯一解
   --------------------------------------------------------------------------
   `!important` 是必须的：有的浏览器扩展 / 系统"阅读模式"会往 :root 写内联字号，
   不加 !important 就压不住。 */
:root { font-size: 16px !important; }
html  { font-size: 16px !important; }

/* --------------------------------------------------------------------------
   ② 关闭文字自动放大（安卓"字号档位" / iOS 小屏 Text Autosizing）
   --------------------------------------------------------------------------
   `text-size-adjust:100%` ＝「按我 CSS 写的字号来，不要替我放大」。
   ⚠️ 用 100% 而不是 none：none 会让某些浏览器连用户主动的双指缩放一起失去意义，
      而 100% 只关"自动"放大，语义更准（门户站 type.css 用的也是 100%）。
   ⚠️ `html` 与 `body` **都要写**：iOS Safari 在部分版本上只认 body 上那一条。 */
html, body {
  -webkit-text-size-adjust: 100% !important;
  -moz-text-size-adjust: 100% !important;
  -ms-text-size-adjust: 100% !important;
  text-size-adjust: 100% !important;
}

/* --------------------------------------------------------------------------
   ③ 表单控件再压一道
   --------------------------------------------------------------------------
   系统字体调大时，`input/select/textarea` 最容易把所在行挤破（它们不继承 body 字号）。
   这里**只兜底不覆盖**：不加 !important ⇒ 各页自己写过的字号照样生效，
   没写过的才落到这里；16px 同时满足「iOS 聚焦不放大」那条既有铁律。 */
input, textarea, select, button { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
input, textarea, select { font-size: 16px; }

/* --------------------------------------------------------------------------
   ④ 字体栈令牌 `--f` —— **全站唯一源**（2026-10-07 用户令）
   --------------------------------------------------------------------------
   用户原话：
     「第一个图是苹果手机的截图，字体是对的，也好看；第二个图是安卓手机的，很难看，
       能不能改成一个字体？」「4 个页面中所有的页面都要改字体哦。」

   🔴 为什么令牌必须放在**本文件**（而不是各页 / `yzl.css`）：
     ① 本文件是**唯一「每页都引」**的样式文件（hub 9 个页面逐个 grep 确认过
        `<link rel="stylesheet" href="/lock.css?v=…">`；门户站也各有一份）⇒ 一处改、全站生效。
     ② 实测抓到的真 bug：`hub/商品详情.html` **并不引 `yzl.css`**（只引 `_sheet.css`），
        却在文件里用了 2 处 `var(--f)` ⇒ `--f` **从未被定义** ⇒ 那两条 `font:` 整条失效
        （`font` 简写里带未定义的自定义属性 = 无效声明）⇒ 该页正文字体落到浏览器默认
        **Times（衬线）**。线上实测 `getComputedStyle(document.body).fontFamily === 'Times'`。
        ⇒ 令牌收到本文件后，这类"没引 yzl.css 的页面"自动被救回来。
     ⚠️ `hub/site/yzl.css` 里那份同名定义**已删**（只留一句指向本文件的注释）——
        「单一方案铁律」：同一个令牌两份定义必然漂。
     ⚠️ 本文件其它规则都带 `!important`，而这一条**故意不带** ——
        它只是「提供默认值」，各页自己的 `font-family` 照样可以覆盖它。

   🔴🔴 顺序是刻意排的，改之前先看懂：
     · **`"PingFang SC"` 仍排第一位** ⇒ 苹果 / macOS **一个像素都不变**
       （用户明说 iOS「字体是对的，也好看」，⛔ 不许动）。
     · 紧随其后插入的是**安卓各厂商自带的旗舰黑体**：华为 HarmonyOS Sans / 小米 MiSans /
       OPPO Sans / vivo Sans / 思源黑体 / Noto Sans CJK。安卓上没有 `PingFang SC`
       ⇒ 自然落到这些字体上。为什么必须这么排：安卓默认（Roboto + Noto Sans）**没有
       800/900 真字重**，而本站大量使用 `font:900 …` / `font:800 …` ⇒ 浏览器只能
       **合成加粗**（faux bold），笔画糊且偏细 —— 这就是用户看到「很难看」的直接原因；
       上面这几款厂商黑体都带完整字重。
     · 末尾 `"Microsoft YaHei"` → `-apple-system` → `sans-serif` 是老链路，原样兜底。
     ⛔ 别把 `-apple-system` 提到最前面（会改掉 iOS 的拉丁/数字字形）。
     ⛔ 别删 `"PingFang SC"` 那一位（iOS 全靠它）。 */
:root {
  --f: "PingFang SC","HarmonyOS Sans SC","HarmonyOS Sans","MiSans","OPPO Sans","vivo Sans",
       "Source Han Sans SC","Noto Sans CJK SC","Noto Sans SC",
       "Microsoft YaHei",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}

/* --------------------------------------------------------------------------
   ⑤ 「禁止折行」锁 —— 只锁**界面元件**，⛔ 绝不碰正文（2026-10-22 第56轮，用户令）
   --------------------------------------------------------------------------
   用户原话（配截图）：「导航栏的底部，这3个按钮自动换行了。…任何手机任何字体，
     能不能锁死禁止换行和增大字体？…很多老年人把字体调的很大，整个伙伴中心都是乱套的。」
   截图实证：官网落款 `.ux-footer-nav` 里「AI健康顾问 / 伙伴打卡站 / 伙伴工作站」
     三项各自折成两行（"AI健康顾 问"）——因为那三个格子是
     `flex:0 0 calc((100% - 66px)/4)` **固定 4 列宽**，而 `white-space` 一直是默认
     `normal` ⇒ 字号一大、字数一多就在格子里折行。

   🔴 只锁下面这几类，理由：它们都是**一两个词长的界面元件**，折行一定难看；
      而正文段落 `p / .sec-sub / .lead-*` **必须允许折行**（锁了会溢出裁切，
      比折行更糟）。⛔ 不要图省事写成 `* { white-space:nowrap }`。
   ⛔ 也故意**不锁全局 `button` / `.btn`**：运营后台 `op/site/admin.html` 也引本文件，
      它有一批长文案按钮（如「撤销（全额回滚：钱＋奖金＋等级）」），nowrap 会横溢。
      后台那套自己用固定 px 管，见 `tools/audit_lock.py` 里 op 整站豁免的说明。

   ⚠️ `!important` 在这里是必要的：各站本地 CSS 有些给这些元素写过 `white-space:normal`，
      不加就压不住。 */
.ux-footer-nav a,
.ux-footer-nav button,
.ux-footer-row,
.ux-footer-copy,
.ux-topbar a,
.ux-topbar button,
.topbar a,
.topbar button,
.home-nav a,
.home-nav button,
.pill,
.tag,
.badge,
.chip {
  white-space: nowrap !important;
}

/* --------------------------------------------------------------------------
   ⑥ 极窄屏（≤360px）落款导航再降一档字号
   --------------------------------------------------------------------------
   落款是**固定 4 列**（见 footer.css 的 calc），而「AI健康顾问」5 个汉字在
   13px 下约 65px 宽；320~360px 屏扣掉左右内边距与 3 个列间距后每列只有约 60px
   ⇒ 加了 nowrap 之后不折行，但会**横向溢出**碰到相邻格。
   这里把字号降到 11.5px（5 字 ≈ 57.5px）刚好放进格子。
   ⚠️ 与 `footer.css` 的 `@media(max-width:480px)` 那条是两回事，别合并：
      480 那条管的是"整体缩小一档"，这条只救 320~360 的极限宽度。 */
@media (max-width: 360px) {
  .ux-footer-nav a,
  .ux-footer-nav button { font-size: 11.5px !important; }
}
