:root {
  /* 色系与图书封面一致：封面黑 / 封面红 / 机器人橙 */
  --ink-deep: #17181c;     /* 封面标题黑 */
  --brand: #d7000f;        /* 封面红（Broadview 红） */
  --brand-600: #a8000c;    /* 封面红 · 深一档（hover） */
  --ink: #2a2a2e;
  --muted: #6b655f;
  --line: #ebe3dc;
  --bg: #ffffff;
  --bg-alt: #faf6f1;
  --accent: #e87a00;       /* 封面机器人橙 */
  --warn: #b4631a;
  --maxw: 1120px;
  --radius: 14px;
  --shadow: 0 6px 24px rgba(70, 25, 12, .08);
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", sans-serif;
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; }
body {
  margin: 0; font-family: var(--font); color: var(--ink); background: var(--bg);
  line-height: 1.7; font-size: 16px; -webkit-font-smoothing: antialiased;
}
a { color: var(--brand); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, h3, h4 { line-height: 1.3; color: var(--ink-deep); margin: 1.4em 0 .6em; }
h1 { font-size: clamp(28px, 5vw, 44px); margin: .2em 0; }
h2 { font-size: clamp(22px, 3.4vw, 30px); }
h3 { font-size: 19px; }
p { margin: .6em 0; }
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 20px; }
.narrow { max-width: 820px; }
.center { text-align: center; }
.muted { color: var(--muted); }

/* header */
.site-header { position: sticky; top: 0; z-index: 50; background: rgba(255,255,255,.92);
  backdrop-filter: blur(8px); border-bottom: 1px solid var(--line); }
.header-inner { display: flex; align-items: center; justify-content: space-between; height: 64px; }
.brand { display: inline-flex; align-items: center; gap: 10px; color: var(--ink-deep); font-weight: 700; }
.brand:hover { text-decoration: none; }
.brand__mark { width: 32px; height: 32px; border-radius: 8px; background: linear-gradient(135deg, var(--ink-deep), var(--brand));
  color: #fff; display: grid; place-items: center; font-weight: 800; font-size: 14px; letter-spacing: .5px; }
.brand__name { white-space: nowrap; font-size: 17px; }
.nav-links { display: flex; gap: 4px; flex-wrap: wrap; }
.nav-links a { padding: 8px 12px; border-radius: 8px; color: var(--ink); font-size: 15px; }
.nav-links a:hover { background: var(--bg-alt); text-decoration: none; }
.nav-links a[aria-current="page"] { background: var(--ink-deep); color: #fff; }
.nav-toggle { display: none; background: none; border: 0; font-size: 22px; cursor: pointer; color: var(--ink-deep); }

/* hero */
.hero { background: radial-gradient(1200px 400px at 70% -10%, #fdeee7 0%, #faf6f1 60%, #fff 100%); padding: 64px 0 56px; }
.kicker { text-transform: uppercase; letter-spacing: .12em; color: var(--brand); font-size: 13px; font-weight: 700; margin: 0 0 8px; }
.lede { font-size: clamp(17px, 2.2vw, 20px); color: var(--ink); max-width: 760px; }
.lede2 { color: var(--muted); max-width: 720px; }
.publish-bar { margin-top: 18px; font-size: 14px; color: var(--muted); }

/* hero 双栏（首页）：左文案 + 右封面；封面为 RGBA 透明底，直置于背景之上，无底板 */
.hero-grid { display: flex; align-items: center; gap: 48px; }
.hero-grid .hero-copy { flex: 1 1 auto; min-width: 0; }
.hero-media { flex: 0 0 auto; }
.hero-cover { display: block; width: min(280px, 56vw); height: auto; }
.cta-row { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 26px; }
.btn { display: inline-block; padding: 12px 22px; border-radius: 10px; font-weight: 700; font-size: 15px; cursor: pointer; border: 1px solid transparent; }
.btn-primary { background: var(--brand); color: #fff; }
.btn-primary:hover { background: var(--brand-600); text-decoration: none; }
.btn-ghost { background: #fff; color: var(--ink-deep); border-color: var(--line); }
.btn-ghost:hover { border-color: var(--brand); text-decoration: none; }

/* sections */
.section { padding: 56px 0; }
.section-alt { background: var(--bg-alt); }
.sec-head { text-align: center; margin-bottom: 28px; }
.sec-head .kicker { display: block; }
.sec-sub { color: var(--muted); }
/* 页面主标题以 h1 语义渲染（SEO/GEO），视觉尺寸与 h2 一致 */
.sec-head h1 { font-size: clamp(22px, 3.4vw, 30px); margin: 0; }
.section-cta { background: var(--ink-deep); color: #fff; }
.section-cta h2, .section-cta .muted { color: #fff; }

/* grid + cards */
.grid { display: grid; gap: 18px; }
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }
.card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 22px; box-shadow: var(--shadow); }
.card h2, .card h3, .card h4 { margin-top: .2em; }
/* SEO/GEO 标题层级修正：页面题 h1 → 节/卡题 h2；.sub 与 .card h2 视觉尺寸与原 h3 保持一致（19px） */
.sub { font-size: 19px; }
.card h2 { font-size: 19px; }
/* 屏幕阅读器专用标题：为纯表单/列表页补足 h1→h2 层级，不改变视觉 */
.sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.card .muted { font-size: 14px; }
.link { font-weight: 600; }

/* flow */
.flow { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin: 22px 0 12px; }
.flow-step { background: #fff; border: 1px solid var(--line); border-radius: 999px; padding: 12px 18px; display: inline-flex; align-items: center; gap: 10px; box-shadow: var(--shadow); }
.flow-step span { width: 24px; height: 24px; border-radius: 50%; background: var(--brand); color: #fff; display: grid; place-items: center; font-size: 13px; font-weight: 700; }

/* views */
.view-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.view-list li { background: #fff; border-left: 4px solid var(--accent); border-radius: 8px; padding: 14px 18px; box-shadow: var(--shadow); }

/* 作者页卡片（2026-09-30：每卡片一条后台可配外链 + 内容可后台覆盖） */
.author-card { text-align: center; }
/* 作者页「联系作者团队」块（编委会名单下方居中） */
.author-contact { margin-top: 18px; }
.author-contact a { font-weight: 600; }
.author-more { margin-top: 12px; }
.author-more a.author-link { font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.author-more a.author-link[hidden] { display: none; }
.a-focus { min-height: 3.2em; }
/* 编委会名单行（2026-10-13 用户裁定）：与上方「三位一线实战者合著」说明行之间加间距
   （两行原为相邻 <p>，margin 折叠后仅 ~9.6px；此处显式拉开至 24px）。 */
.editor-team { margin-top: 24px; }

/* 编委卡片（2026-10-13 用户裁定）：PC 五列一行，窄屏逐级降列至单列；
   照片为方形圆角、**约 60% 卡宽**（2026-10-13 三次裁定：原 30% 偏小，放大至约 60%）。
   🔴 版式（2026-10-13 二次裁定）：卡片内容**顶部对齐**（⛔ 不整卡垂直居中）——
   职务行数不同时，若上下居中最高的卡片会把头像/姓名顶开、各行不齐；
   改为顶部对齐后，五位编委的**照片与姓名落在同一水平线**，职务信息多的向下延伸。 */
.editors-grid { grid-template-columns: repeat(5, 1fr); }
.editor-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;   /* 顶部对齐：照片/姓名统一水平线，职务向下延伸 */
  text-align: center;
  padding: 20px 14px;
}
.editor-photo {
  display: block;
  width: 60%;                /* 约 60% 卡宽（2026-10-13 三次裁定：原 30% 偏小，放大至约 60%） */
  max-width: 220px;          /* 上限兜底：仅超宽单列时生效；常规断点（手机192/平板147/桌面103）不受限＝严格 60% */
  min-width: 64px;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 18px;       /* 方形圆角化 */
  border: 1px solid var(--line);
  box-shadow: var(--shadow);
  background: #f3f4f6;
}
/* 姓名与上方照片之间的行距（2026-10-13 用户裁定）：🔴 原写 `margin: 14px 0 8px` 却**从未生效**
   ——被上方第 87 行 `.card h2, .card h3, .card h4 { margin-top: .2em }`（权重 0,1,1）压过
   `.editor-name`（0,1,0），实测 computed margin-top 恒为 **3.6px**（18px × .2em），故照片紧贴姓名。
   本轮改用 `.editor-card .editor-name`（权重 0,2,0）提高优先级，把行距真正拉开至 **24px**。 */
.editor-card .editor-name { font-size: 18px; margin: 24px 0 8px; }
.editor-titles { margin: 0; color: var(--muted); font-size: 13.5px; line-height: 1.6; }
.editor-more { margin-top: 12px; }
.editor-more a.editor-link { font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.editor-more a.editor-link[hidden] { display: none; }

/* 卡片悬停浮动（全站统一微交互） */
.card, .faq-item { transition: transform .18s ease, box-shadow .18s ease; }
.card:hover, .faq-item:hover { transform: translateY(-4px);
  box-shadow: 0 12px 28px rgba(70, 25, 12, .14); }
/* 减少动效偏好：仅取消过渡动画（悬停态瞬移呈现），保留上浮与阴影反馈；不整体杀死悬停效果 */
@media (prefers-reduced-motion: reduce) {
  .card, .faq-item { transition: none; }
}

/* media：图书封面效果图 / 三位作者合影 */
.book-cover-wrap { margin: 22px auto 8px; text-align: center; }
.book-cover { display: block; width: min(280px, 70vw); height: auto; margin: 0 auto; }

/* 书本图片悬停浮动（首页 hero / 图书页封面） */
.hero-cover, .book-cover { transition: transform .18s ease; }
.hero-cover:hover, .book-cover:hover { transform: translateY(-4px); }
/* 减少动效偏好：仅取消过渡动画，保留上浮反馈 */
@media (prefers-reduced-motion: reduce) {
  .hero-cover, .book-cover { transition: none; }
}
.book-cover-wrap figcaption { margin-top: 10px; color: var(--muted); font-size: 14px; }
.team-photo { margin: 0 auto 26px; text-align: center; }
.team-photo img { width: min(880px, 100%); height: auto; border-radius: var(--radius);
  border: 1px solid var(--line); box-shadow: var(--shadow); }
.team-photo figcaption { margin-top: 10px; color: var(--muted); font-size: 14px; }

/* gates */
.gate-no { display: inline-block; background: var(--ink-deep); color: #fff; border-radius: 8px; padding: 4px 10px; font-weight: 700; margin-bottom: 8px; font-size: 14px; }

/* tables */
.compare, table { width: 100%; border-collapse: collapse; margin: 16px 0; background: #fff; }
.compare th, .compare td, table th, table td { border: 1px solid var(--line); padding: 12px 14px; text-align: left; vertical-align: top; }
.compare thead, thead { background: var(--bg-alt); }
.dot-list, .num-list { padding-left: 22px; }
.dot-list li, .num-list li { margin: .4em 0; }

/* pull quote */
.pull { border-left: 4px solid var(--brand); background: var(--bg-alt); margin: 18px 0; padding: 16px 20px; border-radius: 0 10px 10px 0; font-size: 18px; color: var(--ink-deep); }

/* forms */
.lead-form { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 24px; box-shadow: var(--shadow); }
.lead-form label { display: block; margin: 12px 0; font-weight: 600; }
.lead-form input[type=text], .lead-form input[type=email], .lead-form input[type=tel], .lead-form select {
  display: block; width: 100%; margin-top: 6px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; font: inherit; }
.lead-form .check { font-weight: 400; display: flex; gap: 8px; align-items: flex-start; }
.lead-form .check input { margin-top: 6px; }
.form-note { min-height: 20px; color: var(--warn); font-size: 14px; margin: 8px 0 0; }
/* 蜜罐字段：真人不可见、不可聚焦；被填写即判定为机器提交（服务端静默丢弃） */
.hp-field { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* faq */
.faq-item { border: 1px solid var(--line); border-radius: 10px; margin: 10px 0; overflow: hidden; background: #fff; }
.faq-q { width: 100%; text-align: left; background: none; border: 0; padding: 16px 18px; font: inherit; font-weight: 700; cursor: pointer; display: flex; justify-content: space-between; align-items: center; color: var(--ink-deep); }
.faq-icon { color: var(--brand); font-size: 20px; }
.faq-a { display: none; padding: 0 18px 16px; color: var(--ink); }
.faq-item.open .faq-a { display: block; }

/* timeline */
.timeline { list-style: none; padding: 0; margin: 0; }
.timeline li { padding: 10px 0 10px 14px; border-left: 3px solid var(--brand); margin-left: 6px; }
.timeline span { display: inline-block; background: var(--bg-alt); color: var(--brand); border-radius: 6px; padding: 2px 8px; font-size: 13px; font-weight: 700; margin-right: 8px; }

/* footer */
.site-footer { background: var(--ink-deep); color: #d8d1ca; margin-top: 40px; padding: 40px 0 28px; }
.footer-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }
.fg h4 { color: #fff; margin: 0 0 10px; font-size: 15px; }
.fg ul { list-style: none; padding: 0; margin: 0; }
.fg li { margin: 6px 0; }
.fg a { color: #c9bcb2; }
.decl-wrap { margin-top: 22px; }
.decl { background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12); border-radius: 10px; padding: 12px 16px; font-size: 13px; color: #cdd8e6; margin: 8px 0; }
.decl-ai { border-left: 3px solid var(--accent); }
.footer-base { margin-top: 22px; border-top: 1px solid rgba(255,255,255,.12); padding-top: 16px; font-size: 13px; }
.footer-base p { margin: 4px 0; }
/* 备案号与版权行同字体同色（不使用品牌红） */
.footer-base a { color: inherit; }
.footer-base a:hover { text-decoration: underline; }
.footer-base .muted { color: #a79b91; }

/* 备案行（2026-10-22 起多个备案号并列：两个域名共用同一页脚）
   🔴 `nowrap` 不可去 —— 390px 实测过：不加时「浙公网安备3301 / 0502013558号」会被拦腰
      拆成两行（链接 inline 框跨行的直接后果），既是观感缺陷也易被读成两个号。
      加 nowrap 后换行只发生在 `<a>` 之间，单个备案号始终完整。
   ⚠️ 这是**本行专用类**（.beian-line 仅页脚备案行使用），⛔ 不要挂到 .footer-base 上
      —— 会连带锁住版权行/联系信息，那些文本需要正常折行。 */
.beian-line a { white-space: nowrap; }

/* 版权行：左版权 + 右「联系作者团队」；≤640 换行堆叠（规则并入下方 640 断点块） */
.foot-line { display: flex; justify-content: space-between; align-items: baseline; gap: 6px 24px; margin: 4px 0; }
.foot-line .foot-contact strong { color: inherit; }

/* table 横向滚动容器（窄屏宽表格可左右滑动） */
.table-wrap { overflow-x: auto; }

/* responsive —— 断点体系：960 导航折叠 / 900 平板网格 / 860 hero 换段 / 640 手机单列 / 400 窄屏品牌收缩 */
@media (max-width: 960px) {
  .nav-toggle { display: block; }
  .nav-links { display: none; position: absolute; right: 12px; top: 60px; background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 8px; flex-direction: column; min-width: 180px; box-shadow: var(--shadow); z-index: 60; }
  .nav-links.open { display: flex; }
  .nav-links a { min-height: 44px; display: flex; align-items: center; }
}
@media (max-width: 900px) {
  .grid-4 { grid-template-columns: repeat(2, 1fr); }
  .editors-grid { grid-template-columns: repeat(3, 1fr); }   /* 编委：平板 3 列 */
  .footer-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 860px) {
  .hero-grid { flex-direction: column; gap: 28px; }
  .hero-media { width: 100%; }
  .hero-cover { width: min(240px, 60vw); margin: 0 auto; }
}
@media (max-width: 640px) {
  .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
  .editors-grid { grid-template-columns: 1fr; }   /* 编委：手机端一位一行 */
  .footer-grid { grid-template-columns: 1fr; }
  .foot-line { flex-direction: column; }
  .section { padding: 40px 0; }
  .hero { padding: 44px 0 40px; }
  .cta-row .btn { width: 100%; text-align: center; }
  /* 备案行：窄屏隐藏「｜」分隔符，改用右间距 —— 否则换行后行首会出现孤立竖线
     （390/360 实测：两项 ICP 占第一行，公安备案落第二行，竖线正好卡在行首） */
  .beian-line .beian-sep { display: none; }
  .beian-line a { margin-right: 10px; }
}
@media (max-width: 400px) {
  .brand__name { font-size: 14px; }
  .brand__mark { width: 28px; height: 28px; font-size: 12px; }
}
/* 触屏「粘住」悬停态防护已移除（2026-09-25 裁定）：
   触摸屏笔记本 / 内嵌预览 webview 会上报 hover:none + pointer:coarse，
   取消块在这些环境下会误杀悬停上浮（症状：阴影生效、位移失效）；
   纯触屏上点按后短暂保持浮起态属可接受的轻微外观问题。 */

/* ===================== 分享阅读（v1.2 分享归因，2026-10-04） ===================== */
/* 入口：顶部导航与页脚各一处，继承所在容器既有链接样式，仅以品牌红弱区分 */
.share-read-link { color: var(--brand); }
.share-read-link:hover { color: var(--brand-600); }

/* 分享面板（浮层，轻量；色彩沿用既有设计令牌，⛔ 不新造配色） */
.wb-share-mask {
  position: fixed; inset: 0; background: rgba(23, 24, 28, .45);
  z-index: 9999; display: flex; align-items: center; justify-content: center;
  padding: 16px;
}
.wb-share-panel {
  position: relative; background: var(--bg); border-radius: var(--radius);
  box-shadow: var(--shadow); width: 100%; max-width: 360px; max-height: 90vh;
  overflow: auto; padding: 22px 20px 16px; text-align: center; font-family: var(--font);
}
.wb-share-close {
  position: absolute; top: 6px; right: 8px; border: 0; background: none;
  font-size: 22px; line-height: 1; color: var(--muted); cursor: pointer; padding: 6px;
}
.wb-share-close:hover { color: var(--ink); }
.wb-share-title { margin: 0 0 6px; font-size: 18px; color: var(--ink-deep); }
.wb-share-note { margin: 0 0 12px; font-size: 13px; color: var(--muted); line-height: 1.6; }
.wb-share-url {
  width: 100%; padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px;
  font-size: 12px; color: var(--ink); background: var(--bg-alt); margin-bottom: 12px;
}
.wb-share-actions { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin-bottom: 14px; }
.wb-share-actions button {
  border: 0; border-radius: 999px; padding: 9px 16px; font-size: 14px;
  cursor: pointer; background: var(--brand); color: #fff;
}
.wb-share-actions button:hover { background: var(--brand-600); }
/* ⛔ `.wb-share-native`（「分享给好友」按钮）已随按钮整体移除而删除（v1.3 体验裁定） */
/* Canvas 仅作绘制载体（不直接展示）；展示交给下方 <img>。
   ⚠️ 用 display:none 会让某些浏览器跳过绘制，故改用「透明+零尺寸占位」而非 display:none：
   绘制发生在 JS 里（与是否可见无关），此处仅控制视觉。 */
.wb-share-qr {
  width: 1px; height: 1px; opacity: 0; position: absolute; pointer-events: none;
}
/* v1.3：与 Canvas 同图的常显 <img>——移动端唯一可靠的长按保存载体
   （iOS/微信长按 canvas 无「存储图像」菜单，img 才有）。
   v1.3.1：`.wb-share-imglink` 为包裹 img 的元素，承载**文件名提示文本**
   `WorkBuddy分享二维码.png`（提升右键「图片另存为」默认名概率）。
   🔴 v1.3.2：⛔ 该元素**不得为 `<a>`**——带 href/download 的链接会让 img 自身
   （含右键引发的原生 click）直接触发下载弹窗，且「取消后又弹一次」。
   ⇒ 改为 inline-block + `overflow:hidden` 的**无链接语义**包裹，视觉与裸 img 一致。
   注：文件名提示文本在 `overflow:hidden` 且行高≥容器高时被裁切（仍参与浏览器
   「链接文本」取名启发式），故肉眼不可见、也不影响布局。 */
.wb-share-imglink {
  display: inline-block; position: relative; overflow: hidden;
  width: 240px; max-width: 100%; margin: 0 auto;
  font-size: 1px; line-height: 1.5; color: transparent;
  text-decoration: none; cursor: default;
  -webkit-tap-highlight-color: transparent;
}
.wb-share-img {
  width: 240px; height: auto; max-width: 100%; margin: 0 auto; border: 1px solid var(--line);
  border-radius: 8px; background: #fff; display: block;
  -webkit-touch-callout: default;
  -webkit-user-select: auto; user-select: auto;
}
.wb-share-brand { margin: 10px 0 2px; font-size: 13px; font-weight: 600; color: var(--ink-deep); }
.wb-share-tip { margin: 2px 0 0; font-size: 12px; color: var(--muted); line-height: 1.6; }
/* 🔴 2026-10-16 恢复：本行曾被 `.workbuddy/trim-main-css.js`（任务 Y 清 camp 死代码）连带删除——
   该脚本自 camp 块标记切到文件尾，而本行恰在标记之后 ⇒ 被静默误删。
   但 `tracker.js` 仍在用该类（分享面板「链接生成失败，请稍后再试。」）⇒ 缺失会导致该提示失去样式
   （线上 v1.82 末行即本规则）。已加 `check-site` 护栏防复发。 */
.wb-share-err { margin: 8px 0 0; font-size: 13px; color: var(--brand); }

/* ===================== 建议书专题页引导卡片（2026-10-16 · 用户指令） ===================== */
/* /method/ 页**顶部**「引导阅读」卡片 → /advice/ 建议书专题页。
   复用 .card 的白底/描边/阴影/悬停上浮，仅补三处：① 整卡可点（display:flex）；② 左侧品牌色强调条；
   ③ 右侧箭头；④ ≤640px 竖排堆叠。
   ⚠️ 位置锁定：该卡片必须排在 method 页 .sec-head **之前**（用户要求「顶部」）——由 check-site AJ 段断言。
   ⛔ 卡片内不使用 <h1>/<h2>（会形成 h2 先于 h1 的层级倒置）。 */
a.card.advice-entry {
  display: flex; align-items: center; justify-content: space-between; gap: 18px;
  border-left: 4px solid var(--brand); margin: 0 0 28px; color: inherit;
}
a.card.advice-entry:hover { text-decoration: none; }
.advice-entry__text { display: block; min-width: 0; }
.advice-entry__text .kicker { margin: 0 0 6px; }
.advice-entry__title { display: block; font-size: 19px; line-height: 1.4; color: var(--ink-deep); }
.advice-entry__desc { display: block; margin-top: 6px; font-size: 14.5px; color: var(--muted); }
.advice-entry__go { flex: 0 0 auto; font-weight: 700; color: var(--brand); white-space: nowrap; }
@media (max-width: 640px) {
  a.card.advice-entry { flex-direction: column; align-items: flex-start; gap: 10px; }
}

/* ===================== 企业服务页 FDE 段正文左右满幅（2026-10-16 · 用户指令） ===================== */
/* 用户反馈：/enterprise/「后记主线 · FDE」下方正文「没有左右满幅而换行」。
   实测根因：该段用 .lede，而 .lede 自带 max-width:760px（面向 hero 短导语的可读行长），
   同 .wrap 内后续卡片/.muted 段实宽 1080px ⇒ 右侧与下文对不齐、显得提前换行。
   ⚠️ .lede 为全站共用（首页 hero / book / method / kit / enterprise / updates / 404 共 9 处）
      ⇒ ⛔ 不得直接改 .lede 全局样式（会波及其余页面版式）。
   解法：只加**修饰符**，仅本段生效；用 `p.lede--wide`（元素+类）确保优先级高于 `.lede`，
     与声明顺序无关。由 check-site AK 段断言「本段带 lede--wide」＋「本规则存在」。 */
p.lede--wide { max-width: none; }

/* ===================== 建议书专题页「（来源：…）」出处注右对齐（2026-10-16 · 用户指令） ===================== */
/* 用户指令：/advice/ 页「所有注明（来源：……）的批注，都居右侧对齐」。
   现状：7 处出处注由 tools/lib/pages.js 的 srcNote() 生成 <p class="muted">（来源：…）</p>。
   ⚠️ .muted 为全站共用（纯颜色，另在 .card/.section-cta/.footer-base 下带字号色值）
      ⇒ ⛔ 不得直接给 .muted 加 text-align（会波及页脚/卡片/CTA 等全部弱化文本）。
   解法：只加**修饰符** src-note，仅出处注生效；用 `p.src-note`（元素+类 0-1-1）确保优先级高于 `.muted`（0-1-0），
     与声明顺序无关（后人挪动本规则也不失效）。
   ⛔ 之所以不能只写 `.src-note`：若将来有更高特异度的规则给该元素设了 text-align 会反被盖过；
     元素级修饰符是本项目既有做法（见上 p.lede--wide 同款）。
   由 check-site AL 段守护：① 7 处出处注均带 src-note；② 无遗留裸 .muted 出处注；
     ③ 本规则存在；④ .muted 基类未被加 text-align。 */
p.src-note { text-align: right; }

/* ===================== 建议书专题页表格：手机端「一行一卡」展示（2026-10-16 · 用户指令 · 清单 #36） ===================== */
/* 用户指令原文：
     ① 手机端表格「挤压不美观」⇒ 改为「一行一个卡片式」；
     ② 卡片内容＝首行「表头：内容」（加粗）＋ 后续逐条「表头：内容」；
     ③ 其余表格同款；表格做圆角处理。
   🔴 同日明确：**PC 端展示形式保持不变**。
   实现：生成器侧给容器加 `.table-cards` ＋ 每个 <td> 带 `data-label`（= 该列表头）；
     样式侧**仅 ≤640px** 媒体块内把 table/tr/td 改 block，tr 成圆角卡片，
     thead 隐藏，标签由 `td::before{content:attr(data-label)"："}` 提供。
   ⚠️ 为什么用容器类而非直接改 `.table-wrap`/`table`：二者均为**全站共用**
     （/kit/ 6 张、/camp/ 4 张、/book/ 1 处），直接改会把全站表格在手机端一并变卡片，
     而那些表的 <td> **没有 data-label** ⇒ 只会渲染出一个空的「：」。
     本站 body 无页面标识类（只有 has-ai-decl）⇒ 页级作用域不可用，容器类是唯一可行解。
   由 check-site AM 段守护：① 本页 3 张表均带 `table-cards` 且其 td 全带 `data-label`；
     ② ⛔ 其他页面不得出现 `table-cards`（不外溢）；③ 本媒体块规则存在（形态正则）；
     ④ ⛔ 基础层（PC）不得出现 table/tr/td 的 `display:block`。 */
@media (max-width: 640px) {
  .table-cards { overflow-x: visible; }
  .table-cards table { display: block; margin: 12px 0; background: transparent; }
  .table-cards thead { display: none; }
  .table-cards tbody { display: block; }
  .table-cards tr {
    display: block; background: #fff; border: 1px solid var(--line);
    border-radius: var(--radius); padding: 14px 16px; margin: 0 0 12px;
    box-shadow: 0 1px 2px rgba(23, 24, 28, .04);
  }
  .table-cards td { display: block; border: 0; padding: 0; }
  .table-cards td::before { content: attr(data-label) "："; font-weight: 700; color: var(--ink-deep); }
  /* 首格：**序号须在「：」之前**（清单 #37 · 用户 2026-10-17 指令「统一改为『步骤1：任务定义』」）
     —— 序号由首格 `data-num` 提供 ⇒ ::before 拼成「表头＋序号＋：」，得「步骤1：任务定义」；
        内容里同序号的 `<span class="tc-num">` 在窄屏隐藏（⛔ 否则会重复成「步骤1：1 任务定义」）。
        ⚠️ PC 端**不隐藏**该 span ⇒ 首列仍是「1 任务定义」，PC 端文字与版式零变化。
        特异度：`.table-cards td:first-child::before`（0-2-1）＞ `.table-cards td::before`（0-1-1）
        ⇒ 与声明顺序无关。无序号的首格（表 3「个人 IP」）`data-num` 为空串 ⇒ 退化为「层级（IP）：个人 IP」。 */
  .table-cards td:first-child::before { content: attr(data-label) attr(data-num) "："; }
  .table-cards td:first-child .tc-num { display: none; }
  /* 首行＝卡片标题（表头＋内容加粗、字号略大）；与下文用虚线分隔 */
  .table-cards td:first-child {
    font-size: 16px; font-weight: 700; color: var(--ink-deep);
    padding: 0 0 8px; margin: 0 0 10px; border-bottom: 1px dashed var(--line);
  }
  .table-cards td:not(:first-child) { margin: 0 0 8px; font-size: 14px; line-height: 1.7; }
  .table-cards td:last-child { margin-bottom: 0; }
}
