/* ============================================================================
 * 排版层 —— 与「视觉层」分离的最后缺环
 * ----------------------------------------------------------------------------
 * 前四层（tokens / components / patch / refine）只改颜色、背景、圆角、阴影、模糊。
 * 本层只改「排版」：字号 / 字重 / 字距 / 行高 / 圆角。
 *
 * 关键点：不改任何单个类的 font-size，而是覆盖 styles.css 1741-1754 行的
 * 排版令牌。全站引用这些令牌的地方一次性对齐，杠杆最高。
 *
 * 加载顺序：必须放在 styles.css / v2.css / glass-*.css 之后，即最后一层。
 * ========================================================================== */

/* ---------------------------------------------------------------------------
 * 1. 令牌覆盖：对齐原型实测值
 *    原值 → 新值（原型实测）
 *    --f-cap    11px  → 10.5px   原型 .hd .sub / .stat .n
 *    --f-meta   12px  → 11.5px   原型 .hd .more
 *    --f-body   13px  → 13px     原型 .row .t（本来就对，保留）
 *    --f-title  15.5px→ 14.5px   原型 .hd h3
 *    --f-sec    17px  → 16px     原型区块小标题
 *    --f-num    clamp(28,1.7vw,38) → clamp(24,1.7vw,31)  原型 .stat .v
 *    --f-hero   34px  → 28px
 *    --r-card   12px  → 22px     原型 .g
 *    --r-sm     8px   → 11px     原型 .row / 小控件
 * ------------------------------------------------------------------------- */
:root {
  /* 字体家族：实测确认样板（workbench-proto.html）与源码用的是同一套栈，
     Windows 上双双回退到微软雅黑 —— 字体本来一致，不需要换。
     要让字好看，靠的是字重/字距，不是换字体。此节不再覆盖 --font-sans。 */

  --f-cap: 10.5px;   --lh-cap: 15px;
  --f-meta: 11.5px;  --lh-meta: 17px;
  --f-body: 13px;    --lh-body: 19px;
  --f-title: 14.5px; --lh-title: 21px;
  --f-sec: 16px;     --lh-sec: 23px;
  --f-num: clamp(24px, 1.7vw, 31px);
  --lh-num: 1;
  --f-hero: 28px;    --lh-hero: 32px;

  --r-card: 22px;
  --r-sm: 11px;
}

/* ---------------------------------------------------------------------------
 * 2. 字重：补回程序员收敛掉的 300 / 350 / 650
 *    项目注释写「字重只用 400/600」，但原型的精致感恰恰来自三档差异：
 *    350 = 大数字极细，600 = 次级标题，650 = 主标题
 * ------------------------------------------------------------------------- */
body .card-title,
body .hero-soft .card-title {
  font-weight: 650;
  letter-spacing: -0.012em;
}

body .stat-v,
body .review-v {
  font-weight: 350;
  letter-spacing: -0.035em;
}

/* 与样板逐值对齐：样板的大标题是 300（源码写的 350 偏粗一档） */
body .next-t {
  font-weight: 300;
  letter-spacing: -0.03em;
}

/* 样板列表标题不设字重（继承 400），源码写死 500，偏粗一档 */
body .item-title {
  font-weight: 400;
  letter-spacing: -0.005em;
}

/* 侧栏导航：样板 13px/400，源码 12px/500 —— 只降字重，不动字号
   （字号会撑宽导航项，窄屏可能溢出，属布局风险） */
body .nav-item,
body .nav-label {
  font-weight: 400;
  letter-spacing: -0.005em;
}

/* ---------------------------------------------------------------------------
 * 3. 字距：原型用 -0.03em 收紧标题、+0.03em 放开元信息
 *    源码几乎不设字距，这是「看着松散、不像 Apple」的直接原因
 * ------------------------------------------------------------------------- */
/* 收紧：标题与正文级 */
body .card-title,
body .list-item,
body .item-title,
body .resume-t,
body .next-t,
body .nav-label {
  letter-spacing: -0.02em;
}

/* 放开：小号元信息、全大写微标签 */
body .stat-n,
body .stat-k,
body .next-k,
body .next-m,
body .resume-k,
body .review-k,
body .review-n,
body .today-tally,
body .badge,
body .mini-level {
  letter-spacing: 0.02em;
}

/* ---------------------------------------------------------------------------
 * 4. 行高：原型按用途分开，不统一用一个值
 *    --lh-tight 1.3（标题） --lh-snug 1.45（列表） --lh-normal 1.6（正文）
 * ------------------------------------------------------------------------- */
body .card-title { line-height: 1.35; }
body .item-title,
body .list-item .item-title { line-height: 1.45; }
body .review-note { line-height: 1.75; }

/* ---------------------------------------------------------------------------
 * 5. 正文基准：body 14px → 13px，让全站密集度对齐原型
 *    注意：只改 font-size，不碰 line-height（body 的 1.47 保留）
 * ------------------------------------------------------------------------- */
body {
  font-size: 13px;
}

/* ---------------------------------------------------------------------------
 * 6. 强制 13 处硬编码字号走令牌（v2.css 里写死的 10/11/12/13/16/17px）
 * ------------------------------------------------------------------------- */
body .mini-level { font-size: var(--f-cap); }
body .btn-logout { font-size: var(--f-cap); }
body .next-k { font-size: var(--f-cap); }
body .resume-k { font-size: var(--f-cap); }
body .review-k { font-size: var(--f-meta); }
body .review-n { font-size: var(--f-meta); }
body .cmdk-in,
body .cap-input { font-size: var(--f-body); }
body .chip { font-size: var(--f-meta); }

/* ---------------------------------------------------------------------------
 * 7. 表单控件基础尺寸
 *    问题：reviews.js 用 <input class="input">，但 styles.css 只定义了
 *    textarea.input，input.input 没有任何 padding → 被浏览器默认样式压成细条。
 *    这里只补内边距与最小高度，不改字号（避免触发 iOS 聚焦放大）。
 * ------------------------------------------------------------------------- */
body input.input {
  padding: 9px 12px;
  line-height: 1.45;
  min-height: 38px;
}

body textarea.input {
  padding: 11px 13px;
  line-height: 1.7;
}

/* 复盘页两个输入框（做得好的 / 可改进的）文字不要顶到边 */
body .review-cols input.input {
  padding-left: 13px;
  padding-right: 13px;
}

/* ---------------------------------------------------------------------------
 * 8. 暗色背景修正
 *    根因：styles.css 暗色块里 --bg-0 是 #000000（纯黑）。
 *    有 4 个控件拿它当背景，在深色玻璃卡片上就成了一块突兀的纯黑。
 *    只改这几个控件，不动 --bg-0 本身（body 背景还靠它）。
 * ------------------------------------------------------------------------- */
[data-theme="dark"] body .close-in,
[data-theme="dark"] body .imp-tip,
[data-theme="dark"] body .td-bulk-row:hover {
  background: rgba(255, 255, 255, 0.055);
}

[data-theme="dark"] body .imp-pay {
  background: rgba(255, 255, 255, 0.08);
}

[data-theme="dark"] body .close-in {
  border-color: rgba(255, 255, 255, 0.14);
}

[data-theme="dark"] body .close-in:focus {
  background: rgba(255, 255, 255, 0.09);
}

/* ---------------------------------------------------------------------------
 * 9. 顶栏命令面板按钮（搜索 ⌘K）
 *    根因：v2.js 生成的 <button class="cmdk-hint"> 只设了 border 和 color，
 *    没设 background → 浏览器默认按钮底色 buttonface（浅灰），
 *    在深色顶栏上就是一个刺眼的白胶囊。亮色下同样存在，只是不明显。
 * ------------------------------------------------------------------------- */
body .cmdk-hint {
  background: transparent;
}

[data-theme="dark"] body .cmdk-hint {
  background: rgba(255, 255, 255, 0.06);
}

[data-theme="dark"] body .cmdk-hint:hover {
  background: rgba(255, 255, 255, 0.10);
}



