/* ====================================================================
 editorial.css · 风格（高端杂志 Editorial，源自 HE 健康饮食）— 自成一体
 厚边框 + 衬线大标题 + 森绿强调色；HE01 配色为默认。
 勾选「图片取色」时 app.js 会以封面图主色 inline 覆盖 --card-* 变量。
 边框：统一 24px。封面用 --card-frame-deep（pop L=25%）；正文/尾页用 --card-border（pop L=30%）。

 【与 Kinfolk 平级、完全独立】两风格由 app.js 按所选风格切换样式文件（只加载当前风格），
 所以这里用普通 .card 选择器即可，物理上不会串到其它风格（不再需要 [data-theme] 前缀隔离）。
 本主题所需、原本隐性依赖 kinfolk 的规则（封面图拖拽、尾页正文块居中、md-eyebrow、li 字重）已在此自带。
 加载：style.css → base.css →（当前风格，如本文件）→ debug.css。

 【多巴胺色 --card-pop】canonical 定义：= 封面副标题（引用，原 H2）用色。
 取色时由 app.js 计算 = hsl(图片主色相, 高饱和, L=0.4)；默认 = hsl(130,27%,40%)。
 强调文字（封面 H1 em/strong、封面引用、正文/尾页 H2、正文引用、页码当前页、列表标记）均用 --card-pop。
 边框/深边框由 --card-pop 推导（只取其色相+饱和，强制 L=30%/25%）。
 文字色（固定、不随取色变）：
 --card-soft-ink = hsl(0,0%,5%) → 封面标题
 --card-body-ink = hsl(0,0%,10%) → 正文页/尾页除 H2/页眉/页脚/引用 外的所有文字标签
 --card-meta-ink = hsl(0,0%,15%) → 页眉/页脚（页码当前页号用 --card-pop）
 页眉：封面/正文/尾页的栏目（eyebrow）字体/字号/颜色/位置统一：衬线 700 28px meta-ink、字距1px、下内距16px、4px 黑线。页码仅正文页显示（分数式），封面/尾页无。
 注意：正文页与尾页的标签样式完全一致（以正文页为基准，尾页继承），尾页仅保留垂直居中等布局差异。
 它们都带 bd 类，所以不带 :not(.role-end) 的正文页规则会同时作用于尾页；标题规则显式写 padding/letter-spacing 以覆盖 base.css 默认值（如 h1 的 letter-spacing:-0.5px）。
 封面边框 24px → 绝对定位值 = 卡外坐标 - 24。正文水平内边距 68px(+24边框=92)对齐网格。
 引用斜体：.card-content 有 overflow:hidden，斜体末字向右倾斜的笔画会超出盒子被裁切，故引用块加 padding-right:10px 留出倾斜余量。
 ==================================================================== */

/* -------- 主题变量（HE01 森绿；取色开启时被 inline 覆盖） -------- */
.card {
 --card-bg: #f8f7f3;
 --card-ink: #111111;
 /* 标题专用固定色 = #0f0f0f = hsl(0,0%,5%) */
 --card-soft-ink: hsl(0, 0%, 5%);
 /* 正文页/尾页文字色 = hsl(0,0%,10%) */
 --card-body-ink: hsl(0, 0%, 10%);
 /* 页眉/页脚 专用固定色 = hsl(0,0%,15%) */
 --card-meta-ink: hsl(0, 0%, 15%);
 --card-dim: #6b6b6b;
 --card-accent: #5a9e66;
 /* 多巴胺色（canonical，= 封面副标题/引用用色）：默认森绿 L=40%；取色时被 app.js 覆盖 */
 --card-pop: hsl(130, 27%, 40%);
 --card-rule: rgba(17, 17, 17, 0.16);
 /* 正文/尾页边框：取多巴胺色(pop)色相+饱和，亮度强制 30% */
 --card-border: hsl(from var(--card-pop) h s 30%);
 /* 深边框色（封面）：取多巴胺色(pop)色相+饱和，亮度强制 25% → 更深沉的框 */
 --card-frame-deep: hsl(from var(--card-pop) h s 25%);
 --font-serif: 'Playfair Display', 'Noto Serif SC', Georgia, serif;
 --font-cjk: 'Noto Serif SC', 'Noto Sans SC', sans-serif;
 background: var(--card-bg);
 color: var(--card-ink);
 border: 24px solid var(--card-border);
 padding: 80px 68px 104px;
}
.card::before { border: none; }

/* -------- 通用排版 -------- */
.card .card-content strong { color: var(--card-accent); font-weight: 900; }
.card .card-content em { color: var(--card-pop); font-style: normal; }
.card .card-content mark { background: linear-gradient(transparent 56%, color-mix(in srgb, var(--card-accent) 36%, transparent) 56%); padding: 0 4px; }

/* 页脚：所有页脚（含品牌）统一衬线体，覆盖 base.css 的 sans */
.card .card-foot,
.card .card-foot .card-brand { font-family: var(--font-serif); font-style: normal; letter-spacing: 0; }

/* -------- 配图滤镜（杂志灰调） -------- */
.card .card-media img { filter: grayscale(18%) contrast(1.08); }
.card .card-content img { filter: grayscale(12%) contrast(1.05); }

/* ====================================================================
 封面 cv · HE-健康饮食（原「大标题下图」，对齐 8×10 网格，边框 24px）
 方案类 .cv-editorial-he：把原先宽泛的 .card.cv 收窄到本方案，便于与 MB 并存。
 边框 24px → 绝对定位值 = 卡外坐标 - 24：left/right 68；页眉 bottom1257.875；
 标题 top134.125 bottom752.9375；图片 top639.0625 bottom183.5625。
 标题居中，H1=128 用 soft-ink(5%)；H1 中 strong/em 与引用用多巴胺色(pop)、作为唯一彩色焦点。
 封面内容仅用：H1、引用（副标题）、img。
 ==================================================================== */
/* 封面边框：图片主色的深色版（L=25%），与强调字同色系，避免纯黑生硬 */
.card.cv.cv-editorial-he { border-color: var(--card-frame-deep); }
.card.cv.cv-editorial-he.layout-bottom { display: block; padding: 0; }
.card.cv.cv-editorial-he.layout-bottom .li-content { display: contents; }

/* 页眉 masthead：左右贴网格，底边贴网格顶端；不斜体；页眉色 15%（栏目基准样式，正文/尾页对齐之） */
.card.cv.cv-editorial-he .card-eyebrow {
 position: absolute; left: 68px; right: 68px; bottom: 1257.875px; margin: 0;
 display: flex; align-items: flex-end; font-family: var(--font-serif); font-style: normal;
 font-weight: 700; text-transform: none; letter-spacing: 1px; font-size: 28px; color: var(--card-meta-ink);
 padding-bottom: 16px; border-bottom: 4px solid var(--card-ink);
}
.card.cv.cv-editorial-he .card-eyebrow::after { display: none; }
.card.cv.cv-editorial-he .md-eyebrow { display: flex; align-items: center; gap: 12px; font-family: var(--font-serif); font-style: normal; font-weight: 700; font-size: 28px; letter-spacing: 4px; text-transform: uppercase; color: var(--card-meta-ink); margin: 0; }
.card.cv.cv-editorial-he .md-eyebrow img { width: 28px; height: 28px; flex: none; object-fit: contain; display: block; }

/* 标题标签：左右贴网格，水平居中 */
.card.cv.cv-editorial-he .card-content {
 position: absolute; left: 68px; right: 68px; top: 134.125px; bottom: 752.9375px;
 display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center;
}
.card.cv.cv-editorial-he .card-content h1 { font-family: 'Noto Serif SC', serif; font-weight: 900; font-size: 128px; line-height: 1.02; letter-spacing: -2px; color: var(--card-soft-ink); margin: 0; }
/* H1 里的 strong(**粗体**) 与 em(*斜体*) 统一：同为多巴胺色、不斜体 */
.card.cv.cv-editorial-he .card-content h1 em,
.card.cv.cv-editorial-he .card-content h1 strong { color: var(--card-pop); font-style: normal; font-weight: inherit; }
/* 封面引用（副标题）：衬体 700 40px 多巴胺色 行高1.3（沿用原封面 H2 样式），去掉 base 的左竖线与斜体；保持正常流位置 */
.card.cv.cv-editorial-he .card-content blockquote {
 font-family: 'Noto Serif SC', serif; font-style: normal; font-weight: 700; font-size: 40px;
 color: var(--card-pop); margin: 0 0 20px; letter-spacing: 0; line-height: 1.3;
 border: none; padding: 0;
}
.card.cv.cv-editorial-he .card-content blockquote::before { content: none; }

/* 图片：左上角 A5 半高、右下角 H10 半高，左右贴网格；上小圆角、下方角 */
.card.cv.cv-editorial-he.layout-bottom .card-media {
 position: absolute; left: 68px; right: 68px; top: 639.0625px; bottom: 183.5625px;
 width: auto; height: auto; flex: none; order: 0;
 border-radius: 8px 8px 0 0; overflow: hidden;
}
.card.cv.cv-editorial-he .card-media.is-empty { background: var(--card-bg); box-shadow: inset 0 0 0 2px var(--card-rule); border-radius: 8px 8px 0 0; }
/* 封面图：框内拖拽平移 + 滚轮缩放（自带） */
.card.cv.cv-editorial-he .card-media img { cursor: grab; transform-origin: center center; will-change: transform; }
.card.cv.cv-editorial-he .card-media img:active { cursor: grabbing; }

/* 封面不要页脚 */
.card.cv.cv-editorial-he .card-foot { display: none; }

/* ====================================================================
 封面 cv · MB-身心健康（硬核身体档案 Sci-Wellness）
 方案类 .cv-editorial-mb：深色霓虹「档案」风。DOM 由 app.js 的 MB 专用分支拼装：
 .mb-glow / .mb-dossier-top / .card-content(标准正文容器) / .mb-image-box / .mb-footer。
 正文改用标准 .card-content：继承 base 的 H1/H2/引用/列表等排版，MB 只覆盖颜色与位置（逻辑同 HE）。字体在 .card-content 上显式声明 Noto Sans SC（不继承 base 的衷线变量）。
 外壳元素（glow/档案页眉/图框/页脚）仍为 MB 专属，故仍针对 .cv-editorial-mb 下对应元素设样式。
 内容映射：# 标题→h1；## →h2；> 引用→霓虹描边小标签（位于标题上方）；顶栏「栏目」→ Subject；末尾图→.mb-image-box。
 霓虹强调色 --mb-accent：默认荧光绿 #39FF14；勾选「图片取色」时由 app.js 按封面图主色注入（明度0.55高饱和）。
 正文页 MB 模版（动作/数据/要点）留待下一期，本方案暂仅作用于首页封面。
 ==================================================================== */
.card.cv.cv-editorial-mb {
 /* MB 为无衬线档案系统：整张 MB 卡片统一 Noto Sans SC，不能继承 Editorial / HE 的衬线字。 */
 font-family: 'Noto Sans SC', sans-serif;
 background: #111; color: #fff; border: none; padding: 0;
 display: block; position: relative; overflow: hidden;
}
.card.cv.cv-editorial-mb .mb-glow { position: absolute; width: 680px; height: 680px; background: var(--mb-accent, #39FF14); filter: blur(150px); opacity: 0.28; top: 8%; right: -250px; border-radius: 50%; transform: translateZ(0); will-change: transform; pointer-events: none; }
.card.cv.cv-editorial-mb .mb-dossier-top { position: absolute; left: 92px; right: 92px; bottom: 1281.875px; display: flex; justify-content: space-between; align-items: center; border-bottom: 2px solid #333; padding-bottom: 24px; font-family: 'Inter', sans-serif; font-size: 24px; font-weight: 800; letter-spacing: 0.1em; color: #888; z-index: 2; text-transform: uppercase; }
.card.cv.cv-editorial-mb .card-content { position: absolute; left: 92px; right: 92px; top: 158.125px; bottom: 874.375px; display: flex; flex-direction: column; justify-content: flex-end; z-index: 2; overflow: visible; margin: 24px 0; }
/* 24px 是内容区的上下外距，不改变内容区内部留白。MB 无衬线字体由根节点统一提供。 */
.card.cv.cv-editorial-mb .card-content > *:last-child { margin-bottom: 0; }
/* 标题：无衬线大字白色；加粗与斜体文字均用霓虹强调色。 */
/* 对齐 HE 封面 H1：无内距、外距归零，避免继承 base 的 8px / 36px 外距。 */
.card.cv.cv-editorial-mb .card-content h1 { font-family: 'Noto Sans SC', sans-serif; font-size: 100px; font-weight: 900; line-height: 1.15; letter-spacing: -0.02em; color: #fff; margin: 0; padding: 0; }
.card.cv.cv-editorial-mb .card-content h2 { margin: 24px 0 0; font-family: 'Noto Sans SC', sans-serif; font-size: 40px; font-weight: 700; line-height: 1.3; letter-spacing: 0; color: #bbbbbb; }
.card.cv.cv-editorial-mb .card-content h3 { margin: 20px 0 0; font-family: 'Noto Sans SC', sans-serif; font-size: 32px; font-weight: 700; color: var(--mb-accent, #39FF14); }
.card.cv.cv-editorial-mb .card-content p { margin: 20px 0 0; font-family: 'Noto Sans SC', sans-serif; font-size: 30px; font-weight: 400; line-height: 1.6; color: #cccccc; }
.card.cv.cv-editorial-mb .card-content blockquote { align-self: flex-start; margin: 24px 0; padding: 8px 16px; border: 2px solid var(--mb-accent, #39FF14); border-radius: 6px; font-family: 'Inter', sans-serif; font-style: normal; font-size: 20px; font-weight: 800; line-height: 1; letter-spacing: 0.1em; text-transform: uppercase; color: var(--mb-accent, #39FF14); white-space: nowrap; }
.card.cv.cv-editorial-mb .card-content blockquote::before { content: none; }
.card.cv.cv-editorial-mb .card-content ul, .card.cv.cv-editorial-mb .card-content ol { margin: 20px 0 0; padding-left: 6px; }
.card.cv.cv-editorial-mb .card-content li { font-size: 30px; font-weight: 400; line-height: 1.5; color: #cccccc; margin-bottom: 14px; padding-left: 40px; }
.card.cv.cv-editorial-mb .card-content ul li::before { content: ''; top: 18px; left: 4px; width: 12px; height: 12px; background: var(--mb-accent, #39FF14); border: none; border-radius: 0; }
.card.cv.cv-editorial-mb .card-content ol li::before { color: var(--mb-accent, #39FF14); font-size: 28px; font-weight: 700; top: 0; left: 0; }
.card.cv.cv-editorial-mb .card-content strong { color: var(--mb-accent, #39FF14); font-weight: 900; }
.card.cv.cv-editorial-mb .card-content em { color: var(--mb-accent, #39FF14); font-style: normal; }
.card.cv.cv-editorial-mb .card-content mark { background: color-mix(in srgb, var(--mb-accent, #39FF14) 30%, transparent); color: #ffffff; padding: 0 4px; }
.card.cv.cv-editorial-mb .card-content a { color: var(--mb-accent, #39FF14); border-bottom: 2px solid color-mix(in srgb, var(--mb-accent, #39FF14) 45%, transparent); }
.card.cv.cv-editorial-mb .card-content code { background: rgba(255, 255, 255, 0.08); color: #ffffff; }
.card.cv.cv-editorial-mb .mb-image-box { position: absolute; left: 92px; right: 92px; top: 613.625px; bottom: 272px; border-left: 6px solid var(--mb-accent, #39FF14); padding-left: 24px; margin: 0; }
.card.cv.cv-editorial-mb .mb-image-box img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(30%) contrast(1.2); border-radius: 8px; display: block; cursor: grab; transform-origin: center center; will-change: transform; }
.card.cv.cv-editorial-mb .mb-image-box img:active { cursor: grabbing; }
.card.cv.cv-editorial-mb .mb-image-box.is-empty { background: #1a1a1a; box-shadow: inset 0 0 0 2px #333; }
.card.cv.cv-editorial-mb .mb-footer { position: absolute; left: 92px; right: 92px; top: 1281.875px; border-top: 2px solid #333; padding-top: 24px; display: none; justify-content: space-between; font-family: 'Inter', sans-serif; font-size: 20px; color: #666; font-weight: 700; z-index: 2; text-transform: uppercase; } 

/* ====================================================================
 MB 正文 / 尾页 · 观点页（points）：MB 自有构图——主图在上、文字在下，
 图片底部以霓虹横线分隔内容；深色档案主题。（不采用 HE 的网格绝对定位）
 仅两处与 HE 对齐：文字标签字号（h1 72 / h2 48 / h3 40 / p 32 / li 31 / blockquote 32）；
 card-img 直角（border-radius:0）。页脚沿用 MB 封面惯例贴 A10 下沿。
 ==================================================================== */
.card.bd.mb-body.mb-points-page {
 background: #111; color: #fff; border: none; padding: 92px 92px 198.125px;
 font-family: 'Noto Sans SC', sans-serif;
}
.card.bd.mb-body.mb-points-page::before { display: none; }
.card.bd.mb-body.mb-points-page .card-head {
 position: static; margin: 0 0 36px;
 display: flex; align-items: center; border-bottom: 2px solid #333; padding-bottom: 20px;
}
.card.bd.mb-body.mb-points-page .card-eyebrow {
 font-family: 'Inter', sans-serif; font-size: 22px; font-weight: 800;
 letter-spacing: .1em; color: #888; text-transform: uppercase; margin: 0;
}
.card.bd.mb-body.mb-points-page .card-progress.kind-numbers { font-family: 'Inter', sans-serif; gap: 4px; }
.card.bd.mb-body.mb-points-page .card-progress.kind-numbers .pg { font-size: 18px; color: #666; }
.card.bd.mb-body.mb-points-page .card-progress.kind-numbers .pg.active { color: var(--mb-accent, #39FF14); }
.card.bd.mb-body.mb-points-page .card-progress.kind-numbers .pg-sep,
.card.bd.mb-body.mb-points-page .card-progress.kind-numbers .pg.total { color: #666; }
.card.bd.mb-body.mb-points-page .card-content {
 position: static; flex: 1 1 auto; min-height: 0; margin: 0;
 display: flex; flex-direction: column; overflow: hidden; color: #fff;
}
.card.bd.mb-body.mb-points-page .card-text { flex: 0 0 auto; min-height: 0; }
.card.bd.mb-body.mb-points-page .card-text > *:first-child { margin-top: 0; }
.card.bd.mb-body.mb-points-page .card-text > *:last-child { margin-bottom: 0; }
.card.bd.mb-body.mb-points-page .card-img {
 order: -1; flex: 1 1 auto; min-height: 0; position: relative; overflow: hidden;
 margin: 0 0 32px; border-bottom: 6px solid var(--mb-accent, #39FF14);
 border-radius: 0; background: #1a1a1a;
}
.card.bd.mb-body.mb-points-page .card-img.is-empty { box-shadow: inset 0 0 0 2px #333; }
.card.bd.mb-body.mb-points-page .card-img img {
 position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
 border-radius: 0; filter: grayscale(24%) contrast(1.14);
 transform-origin: center center; will-change: transform; cursor: grab;
}
.card.bd.mb-body.mb-points-page .card-img img:active { cursor: grabbing; }
.card.bd.mb-body.mb-points-page .card-content h1 {
 margin: 0 0 44px; padding: 0; font-family: 'Noto Sans SC', sans-serif;
 font-size: 72px; font-weight: 900; line-height: 1.06; letter-spacing: -.02em; color: #fff;
}
.card.bd.mb-body.mb-points-page .card-content h2 {
 margin: 0 0 28px; padding: 0; font-family: 'Noto Sans SC', sans-serif;
 font-size: 48px; font-weight: 700; line-height: 1.2; letter-spacing: 0; color: var(--mb-accent, #39FF14);
}
.card.bd.mb-body.mb-points-page .card-content h3 {
 margin: 32px 0 16px; font-family: 'Noto Sans SC', sans-serif;
 font-size: 40px; font-weight: 800; color: #fff;
}
.card.bd.mb-body.mb-points-page .card-content p {
 margin: 0 0 26px; font-family: 'Noto Sans SC', sans-serif;
 font-size: 32px; font-weight: 400; line-height: 1.7; color: #cfcfcf;
}
.card.bd.mb-body.mb-points-page .card-content strong,
.card.bd.mb-body.mb-points-page .card-content em { color: var(--mb-accent, #39FF14); font-style: normal; }
.card.bd.mb-body.mb-points-page .card-content ul,
.card.bd.mb-body.mb-points-page .card-content ol { margin: 0 0 28px; padding-left: 6px; }
.card.bd.mb-body.mb-points-page .card-content li {
 margin: 0 0 18px; padding-left: 46px; font-family: 'Noto Sans SC', sans-serif;
 font-size: 31px; font-weight: 400; line-height: 1.6; color: #d2d2d2;
}
.card.bd.mb-body.mb-points-page .card-content ul li::before {
 left: 6px; top: 19px; width: 10px; height: 10px; border: none; border-radius: 0;
 background: var(--mb-accent, #39FF14);
}
.card.bd.mb-body.mb-points-page .card-content ol li::before {
 left: 0; top: 0; color: var(--mb-accent, #39FF14); font-family: 'Inter', sans-serif;
 font-size: 24px; font-weight: 800;
}
.card.bd.mb-body.mb-points-page .card-content blockquote {
 font-family: 'Noto Sans SC', sans-serif; font-style: italic; font-size: 32px; font-weight: 400;
 line-height: 1.7; letter-spacing: 0; text-transform: none; color: var(--mb-accent, #39FF14);
 border: none; padding: 0 10px 0 0; margin: 32px 0;
}
.card.bd.mb-body.mb-points-page .card-content blockquote::before { content: none; }
/* 参考 SAMPLE：主图在上、文字在下；图片底部以霓虹横线分隔内容。 */
.card.bd.mb-body.mb-points-page .card-foot {
 position: absolute; left: 92px; right: 92px; top: 1281.875px; bottom: auto; margin: 0;
 display: flex; justify-content: flex-end; align-items: center;
 border-top: 2px solid #333; padding-top: 16px;
 font-family: 'Inter', sans-serif; font-size: 22px; font-weight: 700;
 letter-spacing: .04em; color: #888; text-transform: uppercase;
}
.card.bd.mb-body.mb-points-page .card-foot .card-brand { font-family: 'Inter', sans-serif; }
.card.role-end.mb-body.mb-points-page .card-text { flex: 1 1 auto; display: flex; flex-direction: column; justify-content: center; }
.card.role-end.mb-body.mb-points-page .card-img { display: none; }
/* 尾页：套用 MB 封面背景（深色 #111 + 霓虹光晕），正文文字沿用正文页样式，居中收束。光晕在底(z-index:0)，页眉/中部内容置于其上(z-index:1)，页脚(绝对定位)本就在其上。 */
.card.bd.role-end.mb-body.mb-points-page::before {
 content: ''; display: block; position: absolute; z-index: 0; pointer-events: none;
 width: 680px; height: 680px; border-radius: 50%;
 background: var(--mb-accent, #39FF14); filter: blur(150px); opacity: 0.28;
 top: 8%; right: -250px; bottom: auto; left: auto;
}
.card.bd.role-end.mb-body.mb-points-page .card-head,
.card.bd.role-end.mb-body.mb-points-page .card-content { position: relative; z-index: 1; }

/* ===================== WL-体重管理（生存指南）· 方案 variantId=wl =====================
   米白底 + 墨绿强调。DOM 由 app.js 的 buildWlCover / buildWlBody 专用分支拼装。
   配色变量集中在此，方便日后切换其余两套候选（雷区恐吓 / 反常识捷径）。 */
.card.cv.cv-editorial-wl,
.card.wl-body.wl-points-page {
  --wl-bg: #F1ECE0; --wl-ink: #1B1B1A; --wl-dim: #6E6E64; --wl-accent: #2E5E3A; --wl-line: #1B1B1A;
}

/* -------- WL 封面 -------- */
.card.cv.cv-editorial-wl { background: var(--wl-bg); color: var(--wl-ink); border: none; padding: 0; position: relative; overflow: hidden; }
.card.cv.cv-editorial-wl .wl-cv { position: absolute; inset: 0; padding: 92px; display: flex; flex-direction: column; }
.card.cv.cv-editorial-wl .wl-cv-top { display: flex; justify-content: space-between; align-items: center; font-family: 'Inter','Noto Sans SC',sans-serif; }
.card.cv.cv-editorial-wl .wl-cv-index { font-size: 30px; font-weight: 900; letter-spacing: 0.08em; color: var(--wl-ink); text-transform: uppercase; }
.card.cv.cv-editorial-wl .wl-cv-pill { font-size: 26px; font-weight: 800; letter-spacing: 0.04em; color: var(--wl-bg); background: var(--wl-accent); padding: 12px 26px; border-radius: 999px; }
.card.cv.cv-editorial-wl .wl-cv-main { margin-top: auto; }
.card.cv.cv-editorial-wl .wl-cv-num { font-family: 'Inter','Noto Sans SC',sans-serif; font-size: 440px; font-weight: 900; line-height: 0.82; letter-spacing: -0.05em; color: var(--wl-accent); }
.card.cv.cv-editorial-wl .wl-cv-title { font-family: 'Noto Sans SC',sans-serif; font-size: 88px; font-weight: 900; line-height: 1.22; letter-spacing: -0.01em; color: var(--wl-ink); margin-top: 12px; }
.card.cv.cv-editorial-wl .wl-cv-title mark { background: var(--wl-accent); color: var(--wl-bg); padding: 2px 14px; border-radius: 4px; }
.card.cv.cv-editorial-wl .wl-cv-title strong { color: var(--wl-accent); font-weight: 900; }

/* -------- WL 正文 / 尾页 -------- */
.card.bd.wl-body.wl-points-page { background: var(--wl-bg); color: var(--wl-ink); border: none; padding: 92px 92px 104px; display: flex; flex-direction: column; font-family: 'Noto Sans SC',sans-serif; }
.card.bd.wl-body.wl-points-page::before { display: none; }
.card.wl-body.wl-points-page .wl-bd-head { display: flex; justify-content: space-between; align-items: center; padding-bottom: 24px; border-bottom: 3px solid var(--wl-line); font-family: 'Inter','Noto Sans SC',sans-serif; }
.card.wl-body.wl-points-page .wl-bd-brand { font-size: 26px; font-weight: 900; letter-spacing: 0.12em; text-transform: uppercase; }
.card.wl-body.wl-points-page .wl-bd-pill { font-size: 24px; font-weight: 800; color: var(--wl-bg); background: var(--wl-accent); padding: 8px 22px; border-radius: 999px; }
.card.wl-body.wl-points-page .wl-bd-eyebrow { margin-top: 52px; font-family: 'Inter','Noto Sans SC',sans-serif; font-size: 30px; font-weight: 800; letter-spacing: 0.1em; color: var(--wl-dim); text-transform: uppercase; }
.card.wl-body.wl-points-page .wl-bd-no { color: var(--wl-accent); margin-right: 16px; }
.card.wl-body.wl-points-page .wl-bd-h1 { margin: 22px 0 0; font-size: 62px; font-weight: 900; line-height: 1.3; color: var(--wl-ink); }
.card.wl-body.wl-points-page .wl-bd-h1 mark { background: none; color: var(--wl-ink); border-bottom: 8px solid var(--wl-accent); padding-bottom: 2px; }
.card.wl-body.wl-points-page .wl-bd-h1 strong { color: var(--wl-accent); }
.card.wl-body.wl-points-page .wl-stat { margin: 48px 0 0; border: 3px solid var(--wl-line); padding: 34px 38px; }
.card.wl-body.wl-points-page .wl-stat-head { display: flex; align-items: baseline; gap: 22px; }
.card.wl-body.wl-points-page .wl-stat-num { font-family: 'Inter','Noto Sans SC',sans-serif; font-size: 100px; font-weight: 900; line-height: 1; letter-spacing: -0.02em; color: var(--wl-accent); }
.card.wl-body.wl-points-page .wl-stat-label { font-size: 34px; font-weight: 700; color: var(--wl-ink); }
.card.wl-body.wl-points-page .wl-stat-desc { margin-top: 18px; font-size: 28px; font-weight: 400; line-height: 1.6; color: var(--wl-dim); }
.card.wl-body.wl-points-page .wl-rule { margin-top: auto; }
.card.wl-body.wl-points-page .wl-rule-label { display: inline-block; font-family: 'Inter','Noto Sans SC',sans-serif; font-size: 22px; font-weight: 900; letter-spacing: 0.08em; color: var(--wl-bg); background: var(--wl-ink); padding: 8px 18px; margin-bottom: 20px; }
.card.wl-body.wl-points-page .wl-rule-body { font-size: 32px; font-weight: 400; line-height: 1.7; color: var(--wl-ink); }
.card.wl-body.wl-points-page .wl-rule-body p { margin: 0 0 16px; }
.card.wl-body.wl-points-page .wl-rule-body p:last-child { margin-bottom: 0; }
.card.wl-body.wl-points-page .wl-bd-foot { margin-top: 40px; display: flex; justify-content: space-between; font-family: 'Inter','Noto Sans SC',sans-serif; font-size: 22px; font-weight: 700; letter-spacing: 0.06em; color: var(--wl-dim); }

/* ===================== 正文 bd （同时也是尾页的基准） =====================
 边框 24px 多巴胺色 30%；页眉/页脚 用 15%，其他文字用 10%；页脚无上边框、不显页码、品牌靠右。
 内容仅用：H1、H2、p、ul、li、blockquote、img（有序列表 ol 备用）。
 以下不带 :not(.role-end) 的规则会同时作用于尾页（尾页同样带 bd 类）。
 ===================== */
.card.bd { background: var(--card-bg); padding: 134.125px 68px 72px; }
/* 页眉栏：文档流中的第一段；中部 card-content 与其统一间隔 48px。 */
.card.bd .card-head {
 position: static; left: auto; right: auto; bottom: auto; margin: 0;
 display: flex; align-items: flex-end;
 border-bottom: 4px solid var(--card-ink); padding-bottom: 16px;
}
/* 栏目：字体/字号/颜色/字距 统一到封面（衬线 700 28px meta-ink、字距1px） */
.card.bd .card-eyebrow {
 font-family: var(--font-serif); font-style: normal; font-weight: 700; text-transform: none;
 letter-spacing: 1px; font-size: 28px; color: var(--card-meta-ink); margin-bottom: 0;
}
.card.bd .card-eyebrow::after { display: none; }
/* 页码：属于页眉的一部分；分数式 03 / 06，当前页号用多巴胺色 pop、无底色，总页浅(dim)；同页眉衬线体 */
.card.bd .card-progress.kind-numbers { font-family: var(--font-serif); display: flex; align-items: baseline; gap: 4px; }
.card.bd .card-progress.kind-numbers .pg { font-size: 20px; font-weight: 700; letter-spacing: 1px; line-height: 1; }
.card.bd .card-progress.kind-numbers .pg.active { color: var(--card-pop); }
.card.bd .card-progress.kind-numbers .pg-sep { color: var(--card-dim); font-weight: 400; font-size: 18px; margin: 0 1px; }
.card.bd .card-progress.kind-numbers .pg.total { color: var(--card-dim); font-weight: 400; font-size: 18px; }
/* H1 = 72px；H2 = 48px 多巴胺色 pop；显式写 padding/letter-spacing 以覆盖 base.css 默认值。H1 下边距 44px 与正文拉开距离 */
.card.bd .card-content h1 { font-family: 'Noto Serif SC', serif; font-size: 72px; font-weight: 900; line-height: 1.06; margin: 0 0 44px; padding: 0; letter-spacing: 0; color: var(--card-body-ink); }
.card.bd .card-content h1::before { content: none; }
.card.bd .card-content h2 { font-family: 'Noto Serif SC', serif; font-size: 48px; font-weight: 700; line-height: 1.2; margin: 0 0 28px; padding: 0; letter-spacing: 0; color: var(--card-pop); }
.card.bd .card-content h2:first-child { margin-top: 0; }
.card.bd .card-content p { font-size: 32px; font-weight: 400; line-height: 1.7; letter-spacing: 0; margin: 0 0 26px; }

/* -------- 列表：标记用多巴胺色 pop；无序=实心小方块，有序=前导零衬线数字 -------- */
.card.bd .card-content ul,
.card.bd .card-content ol { margin: 0 0 28px; padding-left: 6px; }
/* li 字重 300（Noto Serif SC 无 300、实际回退 400） */
.card.bd .card-content li { font-size: 31px; font-weight: 300; line-height: 1.6; letter-spacing: 0; margin-bottom: 18px; padding-left: 46px; }
/* 无序：多巴胺实心小方块，竖直对齐首行光学中心 */
.card.bd .card-content ul li::before {
 content: ''; top: 19px; left: 6px; width: 10px; height: 10px;
 background: var(--card-pop); border: none; border-radius: 0;
}
/* 有序：前导零衬线数字 01 02 03，多巴胺色、略加重 */
.card.bd .card-content ol li::before {
 color: var(--card-pop); font-size: 30px; font-weight: 700; top: 0; left: 0;
}
/* 引用：斜体；右侧加 10px 避免斜体末字被 .card-content 的 overflow:hidden 裁切 */
.card.bd .card-content blockquote {
 font-family: 'Noto Serif SC', serif; font-style: italic; font-size: 32px; line-height: 1.7;
 color: var(--card-pop); border: none; padding: 0 10px 0 0; margin: 32px 0;
}
.card.bd .card-content blockquote::before { content: none; }
/* 文字配色：除 H2/页眉/页脚/引用 外，正文页与尾页所有带文字标签统一 hsl(0,0%,10%)。 */
.card.bd .card-content { color: var(--card-body-ink); }
.card.bd .card-content p,
.card.bd .card-content li,
.card.bd .card-content strong,
.card.bd .card-content em { color: var(--card-body-ink); }
.card.bd .card-foot {
 left: auto; right: auto; bottom: auto; justify-content: flex-end;
 border-top: 2px solid var(--card-ink); padding-top: 16px; margin: 0; font-family: var(--font-serif);
 font-style: normal; font-size: 22px; color: var(--card-meta-ink); letter-spacing: 0; text-transform: none;
}
.card.bd .card-content .body-figure.is-empty {
 background: var(--card-bg); box-shadow: inset 0 0 0 2px var(--card-rule);
}

/* ===================== 尾页 role-end （仅保留布局差异，标签样式全部继承正文页） ===================== */
.card.role-end .card-content { justify-content: center; align-items: stretch; text-align: left; }
.card.role-end .card-content .body-figure { display: none; }
/* 尾页正文块：撑满并垂直居中（自带） */
.card.role-end .card-content .body-text { flex: 1 1 auto; display: flex; flex-direction: column; justify-content: center; }
.card.role-end .card-eyebrow { justify-content: flex-start; }
/* 去掉尾页 H1 上方那条 accent 短横线（正文页 h1 规则已 padding:0） */
.card.role-end .card-content h1::before { content: none; }
.card.role-end .card-foot { display: flex; }

/* ==== HE 三段绝对定位·坐标基准（一次锁定，勿逐次微调）====
   卡片 border:24px → 绝对定位子元素以 padding box 为参照，画布范围 y∈[24,1416]。
   网格叠层在 .card-frame 上、用整卡画布坐标：A1 上沿=158.125，A10 下沿=1281.875。
   换算：top = canvas_y − 24；bottom = 1416 − canvas_y。
   • 页眉底边 → A1 上沿 158.125 → bottom = 1416 − 158.125 = 1257.875
   • 页脚顶边 → A10 下沿 1281.875 → top = 1281.875 − 24 = 1257.875
   • 内容顶边（A1 下 40 = 198.125） → top = 198.125 − 24 = 174.125
   • 内容底边（A10 上 40 = 1241.875） → bottom = 1416 − 1241.875 = 174.125 */
.card.bd:not(.mb-body) { padding: 134.125px 68px 104px; }
.card.bd:not(.mb-body) .card-head {
 position: absolute; left: 68px; right: 68px; bottom: 1257.875px; margin: 0;
}
.card.bd:not(.mb-body) .card-foot {
 position: absolute; left: 68px; right: 68px; top: 1257.875px; bottom: auto; margin: 0; line-height: 26px;
}
.card.bd:not(.mb-body) .card-content {
 position: absolute; left: 68px; right: 68px; top: 174.125px; bottom: 174.125px;
 margin: 0;
}