---
name: 263group-brand-guidelines
version: 1.1.0
description: 263 品牌 VI 规范 — 提供品牌色板/字体/Logo/slogan/公司数据与品牌生成流程。**生成前必须先逐字完成「生成前确认」编号话术（使用场景/配色/输出格式/视觉风格，按场景分支问全），未确认不得开始生成。** 只要用户要为 263/二六三 做工作汇报（汇报/述职/周报/月报/季报/年报）、对外展示（介绍/宣传/发布会/客户材料）或任何品牌 PPT/网页/文档，即使没提"品牌/VI"也应使用此 skill。
---

# 263 品牌 VI 规范

## 你的职责

当用户需要输出涉及 263 品牌的内容时，你负责品牌数据层的全部决策。**铁律：任何生成动作之前，必须先完成「生成前确认」——按场景分支逐字问完编号话术（工作汇报 → 问 1/2/3；对外展示 → 问 1/2/3/4），全部确认后才能开始生成。判断只是内部动作，确认是硬性必问，禁止跳过、禁止假设默认值、禁止先动手再问。**

生成流程：

1. **场景判断**（内部动作）——按「场景判断」章节判定工作汇报还是对外展示，不向用户播报
2. **生成前确认**——按分支逐字提问「生成前确认 → 用户话术」编号话术，全部确认后映射到 pages.json
3. **读取品牌数据**——从 `brand-tokens.json`（配色方案、Logo、字号、行距、图表色板）和 `company-data.json`（公司信息）读取
4. **生成**——按确认结果与页面规范产出（对外展示先完成「广告法合规审查」；HTML 走 `generate.js`；PPTX 按「PPT 输出路径」分层决策）

## 品牌数据文件

> **自包含布局（2026-08-20）**：本 skill 的全部数据文件（`brand-tokens.json`、`company-data.json`、`ad-compliance.json`、`generate.js`、`brand-check-pptx.py`、`assets/`、`renderer/`）与 SKILL.md 位于**同一 skill 目录**（分发 zip 解压后即此结构，git 仓库根为开发/测试源、zip 为分发产物）。读取品牌数据文件时以 skill 目录为基准；`node generate.js <pages.json>` 内部自动从 skill 目录解析数据/资产文件（`generate.js` 已按 `__dirname` 解析，任意 CWD 可运行），pages.json 由调用方传入。

| 文件 | 内容 | 何时读取 |
|------|------|----------|
| `brand-tokens.json` | 色板、字体层级、Logo、硬规则 | 任何视觉输出 |
| `company-data.json` | 公司信息、产品、里程碑、资质 | 需要公司/产品信息时 |
| `ad-compliance.json` | 广告法合规词库（极限词/承诺词 + 代码层豁免清单） | 对外展示生成时（提纲审查 + generate.js 兜底） |

## 场景判断（Agent 内部逻辑）

> 本节全部内容是你**内部思考**用的：判断场景、决定问哪几道确认题。本节出现的词（关键词、内部代号等）只用于你的内部判断和 pages.json 写入，**不进入你对用户说的话**。判断完成后，你对用户说的第一句话就是下方「生成前确认 → 用户话术」第 1 问的原文，不要先向用户介绍你在做什么。

**关键词直接锁定：** 用户资料出现下列词，直接判定模式，不做其他推理：

| 用户资料含 | 判定为 |
|------|:--:|
| 汇报、述职、总结、周报、月报、季报、年报 | 工作汇报 |
| 介绍、展示、宣传、发布会、对外、客户 | 对外展示 |

示例（仅供你内部理解，不对用户说）：用户说"帮我做个Q3工作汇报"→ 含「汇报」→ 判定为工作汇报 → 去「生成前确认」问 1/2/3。

**关键词冲突（同时含内部与外部词）→ 不自动锁定：** 用户资料同时出现两列的关键词时（如「为客户提供服务周报」同时含「客户」+「周报」），不做自动判定——这类通常取决于受众/应用场景，以「生成前确认」第 1 问用户的选择为准（用户说用于什么场景就按什么场景，不坚持预设判断）。

**无关键词时按特征推理：**

| 维度 | 工作汇报 | 对外展示 |
|------|-------------------|------------------|
| 受众 | 组织内部 | 组织外部 |
| 目的 | 汇报/同步/述职 | 说服/展示/介绍 |
| 设计 | 统一规范，不追求个性 | 品牌约束内允许个性发挥 |

判断时问自己三个问题：
1. 受众是谁？（内部 → 工作汇报，外部 → 对外展示）
2. 目的是什么？（汇报 → 工作汇报，说服 → 对外展示）
3. 有母版要求吗？（有 → 工作汇报）

二选一，不要犹豫。即使用户说"帮我做个PPT"没有额外信息，也选最可能的。

## 生成前确认

确认问题是硬性必问——Agent 先判断场景，但判断后也必须把对应分支的问题逐一询问用户确认，禁止因已判断而跳过询问或直接生成。确认问题按场景分支：工作汇报 → 问 1/2/3；对外展示 → 问 1/2/3/4。如果你发现自己正在生成内容但还没问完这些必须确认的问题，立即停下来，回到确认步骤。

### 用户话术（对用户的唯一输出）

**你对用户说的每一句话，只能逐字来自下方编号话术。** 不允许改写、转述、拼接、加解释、加铺垫。一句话不在下方，就不对用户说；拿不准时用普通业务词（集团 Logo、网页文件、PPT 文件、集团红、通信蓝、正文、标题、页面、图表等），或回到下方找对应话术。

1. **使用场景**：判断为「工作汇报」→ 逐字说：「根据您提供的资料，我判断这个 PPT 用于**工作汇报**。如果实际是用于**对外展示**，请告诉我，我会切换设计风格。」判断为「对外展示」→ 把两个说法对调。
2. **配色方案**：逐字说：「用**集团红**还是**通信蓝**？（**通信蓝**暂不可选，当前仅集团红可选）」用户只能选集团红（通信蓝选项仅为告知存在，选定即视为集团红）→ 确认结果：`"colorScheme": "group-red"`。
3. **输出格式**：逐字说：「要**网页文件**还是**PPT 文件**？」选「PPT 文件」→ 检查本次对话中**已客观存在且可直接调用**的、能直接产出 .pptx 版式的**外部能力载体**——已加载的专业PPT制作技能或设计类技能、已定义的 agent、已安装插件的技能、已连接且授权可用的设计类 MCP 工具（客观可查的事实，不是你的能力自评）。**263group-brand-guidelines 本身不算**——它只提供品牌数据，产不出 .pptx 版式；通用代码执行类工具/MCP 也不算（仍是你的代码能力）：
   - **已加载** → 有原生 PPTX 排版能力，把品牌数据（尺寸/字号/行距/图片规则）作为契约交给该技能/agent，直接按该路径生成；
   - **未加载** → 无原生能力，唯一 PPT 手段是写代码（python-pptx 等）→ 走 3a 把路径选择摆给用户。
   选「网页文件」→ 工作汇报直接开始生成；对外展示 → 第 4 题询问视觉风格。
3a. **PPT 输出路径·推荐**（第 3 题选「PPT 文件」且对话中未加载 PPT/设计技能或 agent、唯一手段是代码生成时）：逐字说：「当前工具制作 PPT 文件需要**用Python代码生成**，效果可能不够稳定。推荐改生成**网页文件**，或者使用**专业PPT制作技能或设计类技能**。你希望怎么处理？」用户改选网页文件 → 最终格式 = 网页文件；用户选专业能力 → 按该能力路径生成；用户坚持代码生成 → 走 3b。
3b. **PPT 输出路径·坚持警告**（用户坚持代码生成 PPT 时，生成前）：逐字说：「好的，按你的选择用代码生成 PPT 文件。提醒一下：排版效果可能与**HTML版**有差距，个别页面可能需要你**手动调整**。确认后我开始生成。」→ 此路径下读取 `pptx-python-guide.md` 并按其中要点实现。
4. **视觉风格**（仅对外展示时询问；工作汇报不询问，默认严格按模板排版）：逐字说：「**严格按模板排版**，还是**搭配额外专业美化技能**？推荐**搭配额外专业美化技能**。」选「严格按模板」→ 排版完全按固定模板，不调用外部技能；选「搭配额外专业美化技能」→ 逐字回复「好的，为你搜索专业设计技能并使用」，按第 3 题输出格式定向搜索（选网页文件 → 搜网页设计技能；选 PPT 文件 → 搜专业PPT制作技能；搜索定向见「规则 → 视觉风格 · 搜索定向」）。
> 对外展示命中广告法违禁词时的**打断话术**见「工作流 → 广告法合规审查（仅对外展示）」，命中打断时逐字使用（同样属于唯一输出源）。
> Q4 选「搭配额外专业美化技能」后的**承诺话术**「好的，为你搜索专业设计技能并使用」与**搜索失败回退话术**「当前未找到可用的专业美化技能，将按严格模板排版。」同样逐字使用（唯一输出源，见「规则 → 视觉风格 · 搜索定向」）。

**三条铁律（违反任何一条即违规，改回上方话术原文再开口）：**

1. **逐字话术**——上方编号话术必须逐字原样说出；工作流内标明的固定话术（收集大纲、透明声明、广告法合规审查打断）同样逐字使用，禁止自行发挥、改写、加解释、翻译。
2. **不播报判断过程**——「命中」「锚词」「锁定」「检测到」等推理词不出现在你对用户说的话里；也不要先介绍"我在做什么"，你的第一句话就是上方第 1 问的原文。判断过程只留在内部。
3. **不暴露内部信息**——下方「内部思考词汇」是你思考用的，不是输出内容；只输出上方话术。

### 内部思考词汇（用于内部判断与 pages.json 写入，不进入对用户的话）

| 内部思考词汇 | 对用户说法（已在话术中写死） |
|---|---|
| Template / Themed | 工作汇报 / 对外展示 |
| 硬锚词、命中、锁定 | 无单独说法——场景话术已表达结果 |
| red-template、cover-red-template.png | 严谨商务风格 |
| scene、background、colorScheme、logoSet、pages.json | 无——内部字段名 |
| brand-tokens.json、company-data.json、ad-compliance.json、generate.js、renderer | 无——内部文件名 |
| 母版、硬规则、硬门禁 | 无单独说法——话术已用普通词表达 |
| 视觉风格美化、设计 skill 介入、专业设计能力美化排版 | 搭配额外专业美化技能（Q4 话术） |
| 搜索设计技能、加载设计类技能/agent | 好的，为你搜索专业设计技能并使用（Q4 承诺话术）；未找到时用「当前未找到可用的专业美化技能，将按严格模板排版。」（回退话术） |
| PPTX 设计 skill、原生 PPTX 排版能力 | 专业PPT制作技能或设计类技能 |
| 代码生成 PPT（.py / python-pptx / pptx-python-guide.md） | 用Python代码生成（Python/HTML 属正常技术词，可对用户说） |

> 允许对用户说的正常词：集团 Logo、网页文件、PPT 文件、集团红、通信蓝、PPTX、正文、标题、副标题、页面、图表、广告法合规审查、违禁词、极限词、专业美化技能、专业设计技能等业务/格式/合规词汇。

### 规则

- 全部必答问题确认前，禁止进入后续任何步骤（大纲收集、封面信息提取、数据图表收集、pages.json 生成、透明声明）
- 禁止假设默认值跳过提问。**Agent 的判断结果不能替代用户确认**——每个分支问题都必须向用户询问，用户未明确回答的选项必须追问
- **PPT 能力检查（第 3 题选「PPT 文件」时）**：原生 PPTX 排版能力只看一条客观事实——本次对话中**已客观存在且可直接调用**、能直接产出 .pptx 版式的**外部能力载体**：已加载的专业PPT制作技能/设计类技能、已定义的 agent、已安装插件的技能、已连接且授权可用的设计类 MCP 工具。**263group-brand-guidelines 不算**（品牌数据层，只产品牌数据与 HTML）。**你的代码能力（python-pptx 等）不算，通用代码执行类 MCP/工具也不算**（仍是代码能力伪装）。**agent 不能中途搜索/加载新插件/MCP/agent**（安装/连接是用户侧配置动作）。禁止以「我能用 python-pptx 精确实现规范」「263group-brand-guidelines 就是 PPT 技能」或「我能连一个 MCP」为由跳过 3a/3b；无现成能力 → 按无原生能力处理，走 3a。
- **视觉风格推荐（第 4 题，仅对外展示）**：对外展示**一律推荐**「搭配额外专业美化技能」（受众在组织外部，专业美化是合理默认）——推荐依据第 3 题输出格式（选 PPT 文件 → 按 PPT 搜索方向；选网页文件 → 按网页搜索方向）。工作汇报不询问第 4 题（默认严格按模板排版）。
- **视觉风格 · 搜索定向（第 4 题选「搭配额外专业美化技能」后）**：先承诺（「好的，为你搜索专业设计技能并使用」），**搜索按第 3 题输出格式定向执行**（第 3 题已先确认）——选「网页文件」→ 搜索网页/HTML 设计技能（如 frontend-design）；选「PPT 文件」→ 搜索专业PPT制作技能或设计类技能（若对话中已加载该能力，直接按「PPT 能力检查」路径处理，无需搜索）。**搜索载体写死**：对话中**已客观存在**的设计类能力（技能/agent/插件技能/已连接且授权可用的 MCP 工具）→ 直接用，不搜索；无现成能力 → **扫描当前可用能力列表**找匹配（不是去商店安装新插件/MCP——安装/连接是用户侧配置动作，agent 不能中途加载）。**搜索不到 → 回退话术**：「当前未找到可用的专业美化技能，将按严格模板排版。」（逐字，唯一输出源），按严格模板路径生成，禁止悄悄自行硬排或假装有设计能力。
- 确认结果必须写入 pages.json：问题 1「工作汇报」→ `"scene": "template"`；「对外展示」→ 省略 `scene`。问题 2「集团红」→ `"colorScheme": "group-red"`；「通信蓝」**暂不可选**（选定即视为集团红，映射 `"colorScheme": "group-red"`——business-blue 未启用，禁止写入）。工作汇报封面唯一：`scene:"template"` 即红色位图封面，cover 不再需要 `background` 键
- **对外展示广告法合规审查（硬门禁）**：对外展示提纲文本在写入 pages.json 前必须对照 `ad-compliance.json` 完成广告法合规审查（见「工作流 → 广告法合规审查（仅对外展示）」）。命中 → **打断生成**，列出给用户改，循环至干净。generate.js 渲染时对 pages.json 文本做精确匹配兜底，命中 → exit(1)。**工作汇报（`scene:"template"`）不审查**

## 工作流

### 前置步骤（四条路径共用）

1. **判断场景** → 工作汇报还是对外展示（见上方「场景判断」）。判断是内部动作，不要向用户播报——你的第一句话就是「用户话术」第 1 问的原文
2. **生成前确认** → 按场景分支逐个询问（见上方「生成前确认」：工作汇报 → 问 1/2/3；对外展示 → 问 1/2/3/4）。Agent 先判断场景，但判断后也必须逐一询问用户确认。全部确认后才能继续。禁止跳过，禁止假设默认值
3. **确定品牌上下文** → 按确认结果：配色方案 + Logo（一律集团 Logo——业务线 Logo 切换规则暂隐藏，见「品牌上下文（Logo 按业务线切换）」）
4. **收集内容大纲** → 向用户索要提纲或要点。话术：`"如果你已经做好提纲，请发给我。或者把大概的内容要点列给我，我来帮你整理成提纲。确认后开始生成。"` 用户确认大纲后再进入下一步
5. **收集数据图表** → 大纲确认后，询问用户是否有具体数据。话术：`"提纲确认了。如果有具体的数据、图表或关键数字需要展示，可以一并发给我，我会嵌入到对应页面中。"` 用户没数据则跳过
6. **收集封面信息** → 从用户描述中提取，并向用户确认。不得未经确认直接填入：
   - 副标题：提取后询问"副标题用「xxx」可以吗？"如用户说没有则留空
   - 汇报人：提取后询问。如用户未提及则主动问"需要标注汇报人吗？"
   - 部门：提取后询问。如用户未提及则主动问"需要标注部门吗？"
   - 日期：提取后询问。如用户未提及则主动问"需要标注日期吗？"
7. **输出透明声明** → 生成内容前，用一句话告知用户当前模式（这是生成结果的第一句话，不是对话阶段的确认问题，与第 2 步不重复）：
   - 工作汇报：`"我将按**工作汇报**的设计方式制作。如果你是用于对外展示，请告诉我，我会切换设计风格。"`
   - 对外展示：`"我将按**对外展示**的设计方式制作。如果你是用于内部工作汇报，请告诉我，我会切换设计风格。"`
8. **读取品牌数据** → `brand-tokens.json`（必须）+ `company-data.json`（按需）；对外展示另读 `ad-compliance.json`（合规词库）

### 广告法合规审查（仅对外展示）

对外展示内容的**硬门禁**：提纲文本进入 pages.json 之前，必须对照 `ad-compliance.json` 词库审查一遍；generate.js 渲染时还会对 pages.json 文本做精确匹配 fail-loud（exit 1）兜底。**工作汇报（`scene:"template"`）不审查。**

**触发与时机**：仅对外展示场景。提纲整理为页面文本后、写入 pages.json 前执行。命中 → **打断生成流程**（停止后续策划/渲染，禁止带病继续）。

**审查方法**：对照 `ad-compliance.json` → `bannedWords`（极限词/承诺词），逐条检查提纲中每处页面文本（封面标题/副标题、章节、目录项、内容页标题/正文、卡片、时间轴、公司全称等）。同时注意 `exempt` 豁免清单（`最新版本`/`最佳实践`/`行业第一梯队`/`国家级高新技术企业` 等 263 语境合法词）——这些不是违禁词，命中不作为违禁项上报，避免对用户假阳性打断。

**命中处理（硬门禁循环）**：
1. **打断**——停止生成，不进入下一步
2. **列出给用户**——全部命中逐项列出（词 + 所在位置 + 原文），不挑第一条
3. **用户修改**——用户给出修改文本 → 用修改后的文本重新审查 → 循环直到全部干净 → 才放行继续生成

**话术**（命中打断时逐字说，唯一输出源）：
> 「发现以下表述可能涉及广告法限制：
> **「词」**（位置：「原文」）
> …（全部命中逐项列出）
> 广告法禁止无法核实的绝对化/极限化宣称。建议改为可核实的具体事实表述（数据、案例、认证背书），或直接删除该表述。您希望怎么改？」

**改写由用户定，不代写替代词**：同义替换（如「行业第一」→「行业领先」）同样可能违规；只标记和提示方向，改写方案必须是用户自己的事实性表述。

**generate.js 兜底**：对外展示渲染时对 pages.json 全部文本字段做精确匹配（`ad-compliance.json` → `bannedWords`，先剔除非豁免词），命中 → exit(1) 报 slide 序号 + 字段 + 词。代码判不了语境，靠 `exempt` 清单压误报（`最新版本`/`最佳实践`/`行业第一梯队`/`国家级高新技术企业` 等 263 语境合法词）。代码层命中同样走「列出给用户改」循环，改完重跑直到审查干净。

### 路径选择

| | 路径 A（从零生成） | 路径 B（改写已有） |
|---|---|---|
| **Template** | 按母版填空 | 对齐母版规范 |
| **Themed** | 品牌数据 + 设计 skill 创作 | 品牌约束内重新设计 |

### pages.json 结构

生成 HTML 时，内容必须组织为 `pages.json`，然后执行 `node generate.js <pages.json>`。

**Node.js 可用性分支（渲染不因环境降级）：** 执行前先确认环境有 `node`。若环境无 node，**禁止跳过品牌约束或改用无约束的随意渲染**——回退按序：① 按「HTML 输出规范」章节手动生成**自包含 HTML**（全部品牌约束手动应用：色板从 token 读值、Logo 安全区、字号/行距、图片等比缩放、广告法合规审查（对外展示，见「工作流 → 广告法合规审查」），一条不少）；② 或输出 pages.json + 渲染说明，交用户/具备 node 的环境渲染。**任何情况下不得因渲染器不可用而放宽颜色、安全区、字号、广告法审查约束。**

**顶层字段：**

| 字段 | 类型 | 说明 |
|------|------|------|
| `colorScheme` | string | `"group-red"`（默认）或 `"business-blue"` |
| `logoSet` | string | `"group"`（默认，唯一可用值）。`"cloud"` 暂禁用（`brand-tokens.json → logos.cloud.disabled` 为禁用开关）——云通信蓝 Logo 仅在通信蓝色系下合规，通信蓝未开放前禁止使用 |
| `scene` | string | `"template"`（工作汇报封面）或省略（对外展示封面） |
| `companyName` | string | 公司全称，用于页脚 |
| `slides` | array | 页面数组，封面第一、结尾最后 |

**slide 类型及字段：**

| type | 必填字段 | 可选字段 | 说明 |
|------|------|------|------|
| `cover` | `title` | `subtitle`, `presenter`, `department`, `date`, `background` | 封面页 |
| `section` | `sectionNumber`, `title` | `subtitle`, `background` | 章节过渡页 |
| `toc` | `title`, `items[]` | `sectionLabel`, `background` | 目录页，items 每项含 `index` + `text` |
| `content` | `title`, `blocks[]` | `sectionLabel`, `background` | 文本内容页，blocks 每项含 `heading` + `body` |
| `cards` | `title`, `items[]` | `sectionLabel`, `columns`(默认3), `background` | 卡片网格，items 每项含 `title` + `description`，可选 `icon` |
| `timeline` | `title`, `events[]` | `sectionLabel`, `background` | 时间轴，events 每项含 `year` + `title`，可选 `description` |
| `custom` | `html` | `background` | 自定义 HTML（仅 HTML；PPTX 中改用 `content` 或 `cards` 替代） |
| `end` | — | `background` | 结尾页（居中 Logo + slogan） |

### 路径 A × Template：从零按母版生成

用户描述需求，没有现成文件 → 你按固定母版从零生成

1. 根据用户确认过的提纲策划页面结构
2. 每页按母版填空（封面页固定布局、内容页标准版式）
3. 结尾页必须是最后一页（slide 数组末尾），封面必须是第一页
4. **全部硬规则锁死**：字号、颜色、Logo 位置均不可变
5. 设计 skill **不介入**
6. 用 `node generate.js <pages.json>` 兜底渲染（node 不可用时按「pages.json 结构 → Node.js 可用性分支」回退，禁止降级约束）

### 工作汇报红色封面（Red Template Cover）

工作汇报封面（唯一）：红色设计位图底图 + 文字叠加，HTML/PPTX 100% 视觉一致。

**触发**：工作汇报（`scene:"template"`）即默认（唯一）封面，cover slide 无需 `background` 键（`scene:"template"` + cover 即可）。

| 属性 | 值 | 刚性 |
|------|-----|:--:|
| 背景 | `brand-tokens.json` → `redTemplateCover.path`（`assets/cover-red-template.png`，1920×1080 位图），HTML 以 base64 全屏背景，PPTX 以全幻灯片背景 | MUST |
| 独立 Logo | **左上角集团红心 Logo**（= 集团彩稿 `logos.group.color`，与内页一致），位置固定：`left:6%` / `top:8%` / 125px 正方形（HTML；PPTX 62pt 正方形，坐标 `left:57.6pt` / `top:43.2pt` = 6%×960 / 8%×540），HTML/PPTX 一致 | MUST |
| 文字区 | 白色留白区（图片左半），`left:7%` / `max-width:50%`，**整体垂直居中**：`startY = (SH − totalH) / 2`（HTML 以 `height:100%` + flex 居中实现，内容中心 = 画布垂直中心 540px；PPTX 显式计算 startY），左对齐 | MUST |
| 标题 | 微软雅黑 Bold，64pt，品牌 dark，左对齐；**≤20 字符/行，禁止折行**；超限 Agent 建议用户改短或自行分为两行（以 `\n` 分行）；`line-height:1.3`；宽度随内容自适应（`white-space:nowrap`），上限 50% | MUST |
| 副标题 | 微软雅黑，30pt，品牌 gray，左对齐，**独立一行**（不与汇报人/部门/日期同行），**不加粗** | MUST |
| 汇报人/部门/日期 | 微软雅黑，**26pt（小于副标题）**，品牌 gray，左对齐，红色圆点（·）分隔，独立一行 | MUST |
| 公司全称 | 底部 `bottom:6%` / `left:7%`，22pt，品牌 gray（浅粉底带上） | MUST |
| 文字重叠 | **禁止**——任何文字元素不得重叠；**间距分层**：标题→副标题 16px（紧凑），副标题→汇报信息 32px（成组拉开） | MUST |

**⚠️ 位图无烘焙 Logo（2026-08-24 修正）**：`cover-red-template.png` 是**纯设计位图（白底 + 右上红系几何），不包含任何集团 Logo**——封面 Logo 必须由渲染器/设计 skill 显式叠加。**禁止**以「位图已带 Logo」「避免 Logo 重叠」为由省略或删除封面 Logo；位图顶部为纯白，左上角叠加 Logo 与位图内容永不重叠。委托任何工具生成封面时，**封面 Logo 是独立必加元素，不是背景位图的一部分**。

**图片缩放规则**：红色封面底图按全幻灯片等比缩放（HTML `background-size:contain`，PPTX 等比缩放至 960×540pt）。图片本身 16:9，与画布同比例，不裁切不变形。**禁止拉伸、裁切、压扁。**

**标题宽度说明**：文字区宽度从 42% 放宽为 `max-width:50%`——标题不折行，宽度随内容自适应，可向右扩展到放得下为止，但不超过 50%（20 字符 @64pt 约 44%，仍在白区安全范围内，不压右侧红区）。

**PPTX 实现**：红色封面底图设为全幻灯片背景，文字框叠加。字号按 PPTX 列：标题 43pt Bold、副标题 20pt、汇报信息 18pt、公司全称 14pt。集团彩稿 Logo 内嵌二进制，位置 `left:57.6pt` / `top:43.2pt`，`LockAspectRatio=true` + 单维度 62pt 正方形。文字块垂直居中：`startY = (540 − totalH) / 2`。文字框必须透明背景（`FillVisible=false`），禁止填充颜色。

### 对外展示封面（Themed）

对外展示封面**设计开放**——由设计 skill 自由设计（版式、色板内配色组合、装饰、图形语言、动效、封面信息布局），但**品牌底线不可碰**（自由外的硬地板）：

1. **色板**：只用 `colorSchemes[colorScheme]` 9 色 + `chartPalette` 色阶 7 档 + 语义色（仅图表涨跌）；禁止自造色
2. **Logo**：封面必须带 263 品牌标识（PNG Logo）；Logo 安全区零容忍（左上角，`layout.coverLogo` 读取位置/尺寸）；**封面 Logo 一律彩稿（`logo-group-color`），禁止反白**——无论封面深浅底。深色封面彩稿不可读时调整布局（Logo 置于浅色区域），而非换反白
3. **封面背景禁红色系**：彩稿 Logo 主色即品牌红 `#D0121B`，红底会吞 Logo——**封面背景禁止红色系**（品牌红 `#D0121B`、色阶 s1-s7、primaryLight `#F0575E`/primaryDark `#72090E`、accent `#FF777F` 及其任何渐变/组合）。**同时禁用 `dark-solid`**——深底会触发反白 Logo，违反「封面 Logo 一律彩稿禁反白」底线。不反白是底线 → 背景避红避深。**两条路径分界：** 渲染器兜底（generate.js，无设计能力时）封面背景只认**兜底封面图（默认）或 `white`**（`primary-gradient`/`primary-solid`/`dark-solid` 封面即报错 exit 1，generate.js 校验）；设计 skill 自由路径（有设计能力时，不经 generate.js）可在色板内拼**非红浅色**组合，同样受本禁红底线约束
4. **公司数据**：不编造（公司名/股票代码/业务/口号）
5. **文字**：禁止纯黑；标题 `dark #2D3847` / 正文 `gray #595959`；字号底线（HTML ≥ 20pt / PPTX ≥ 12pt）
6. **字体**：对外展示用开源栈（`typography.fontFamilyOpenSource`：Noto Sans SC → Source Han Sans SC），禁微软雅黑
7. **结尾页**：固定居中 Logo + slogan（全系统一致，不可协商）
8. **封面信息**：标题/副标题/发布人/日期从 pages.json cover 字段读取，不凭空编造

**兜底封面图（Themed）：** 渲染器（generate.js）渲染 Themed 封面时**默认即兜底封面图**——`brand-tokens.json` → `themedFallbackCover.path`（`assets/cover-themed-fallback.png`，浅蓝灰底 + 右侧蓝色几何，左 ~40% 干净浅色区）。**图无关：换图只替换 PNG 文件，不动渲染代码与规则（2026-08-25 已换为用户提供稿）。** 无需设置背景键；只有显式指定 `white` 才改用白色背景。**封面背景禁止红色系（`primary-gradient`/`primary-solid`）与 `dark-solid`——封面即非法**——见「对外展示封面（Themed）→ 品牌底线」第 3 条。设计能力判定见「与设计 skill 协作 → 设计能力判定」。

**渲染（模式同 red-template：位图底 + 文字叠加，HTML/PPTX 100% 一致）：**
- HTML：base64 全屏背景（`.themed-fallback-bg`，`center/contain`）+ 叠加文字
- PPTX：全幻灯片背景（内嵌二进制）+ 文字框叠加，100% 视觉一致
- 封面元素：彩色 Logo 左上角（`layout.coverLogo`，left:6%/top:8%/125px 正方形）；文字块左侧垂直居中（left:7%，max-width:50%）；标题 `dark` 不折行（`\n` 手动分行，≤20 字符/行）；副标题独立行 `gray`；发布人/部门/日期 `gray` 圆点分隔；公司全称 bottom:6% `gray`

**文字/Logo 深浅判定：** 兜底图是**浅底** → `isDark = false` → 文字 `dark`/`gray`。**Logo 不随深浅切换，一律彩稿 `logo-color-img`（禁止反白）。**

### 封面双模式

- **Template（对内汇报）**：`pages.scene === 'template'` → 红色位图封面（`red-template`）+ 左对齐文字（唯一封面）
- **Themed（对外展示）**：设计 skill 自由设计（品牌底线见「对外展示封面（Themed）」）；渲染器默认 → 兜底封面图（无需背景键）
- 封面背景选项（Themed）：themed-fallback（默认，渲染器兜底图）/ white（**禁 primary-gradient / primary-solid / dark-solid——红色系吞 Logo、dark-solid 深底反白 Logo，均非法**）
- 封面背景选项（Template）：red-template（唯一）

### 路径 A × Themed：从零创作型生成

用户描述需求，没有现成文件，需要对外展示效果 → 你策划内容 + 设计 skill 排版

1. 根据用户确认过的提纲策划页面结构、配图/图表方案
2. **广告法合规审查** → 对提纲页面文本按「广告法合规审查（仅对外展示）」执行，命中 → 打断列出给用户改，循环至干净
3. 将品牌数据（色板、字体层级、Logo 规则）交给设计 skill
4. **硬规则锁死，软规则由设计 skill 自由发挥**
5. 品牌数据层（你管）：色彩不准偏、字体不准换、Logo 不准动、结尾页格式固定
6. 表现层（设计 skill 管）：排版布局、装饰元素、图表风格、动画效果、阴影层次

### 路径 B × Template：已有文件对齐母版

用户提供已有 HTML/JSON 文件，需要对齐工作汇报母版

1. 读取已有文件，提取页面结构和内容
2. **替换所有颜色为品牌色板色值**（不只是主色，包括所有辅助色：绿→品牌红（正向）或保留语义（负向/失败，同「改写功能 → 换色映射」），蓝→深色/辅色，灰→品牌灰）。Template 路径下原文件的一切非品牌颜色必须全部清除
3. 替换字体为微软雅黑，修正字号到 Template 标准
4. 嵌入 Logo（内页右上角，画布宽度 4.2%，见 `layout.innerPageLogo.width/height`），符合深浅底规则
5. **检查 Logo 安全区**：右上角（画布宽度 4.2%，见 `layout.innerPageLogo.width/height`）范围不得有任何 UI 组件（翻页提示、页码、进度条等）。如有冲突，移动 UI 组件而非移动 Logo
6. 对齐母版布局（封面、目录、内容、结尾页统一版式）
7. **结尾页强制替换**：原文件的结尾/感谢页内容全部丢弃，替换为 VI 标准结尾（居中 Logo + slogan PNG）。此规则不可协商，Themed 模式下同样适用
8. 263group-brand-guidelines 全控，设计 skill 不介入

### 路径 B × Themed：已有文件品牌重设计

用户提供已有文件，需要对外展示级别重新设计

1. 读取已有文件，提取内容信息
2. **广告法合规审查** → 对提取的对外文本按「广告法合规审查（仅对外展示）」执行，命中 → 打断列出给用户改，循环至干净
3. 将内容和品牌数据（色板、字体层级、Logo 规则）交给设计 skill
4. 设计 skill 在硬规则约束内重新设计排版和视觉
5. 品牌数据层锁死，表现层自由发挥（同路径 A × Themed 的边界）

### 纯内容咨询

如果用户只问"263 是做什么的"、"有哪些产品"等信息性问题：
- 从 `company-data.json` 提取相关信息回答
- 不需要读取 `brand-tokens.json`

## 改写功能（Phase 2，2026-08-24）

### 任务类型识别（agent 内部判定，不向用户提问）

「改写 / 新做」分类对用户完全透明——agent 内部定，用户只看到结果。**不设确认题**。

| 输入 | 判定 | 处理 |
|------|------|------|
| 无文件 + 需求 | 新做 | 生成流程 |
| 内容型文件（txt / md / 提纲） | 新做 | 生成流程 |
| 成品型·有设计 + 改写词（改 / 美化 / 改色 / 加logo / 对齐 / 合规） | 改写 | 改写流程 |
| 成品型·纯内容（每页文字 + 配图，无统一设计；或裸文本 PPT） | 新做 | 提取内容 + 配图，生成品牌演示 |
| 真模糊（罕见） | 按最合理解释执行 + 透明声明，用户可纠正 | — |

**「有设计」判定**（agent 打开文件检查）：存在可保留/调整的**统一配色主题、自定义版式、图形元素、背景设计、动画**。**图片、文字是内容素材，不算设计。** 判定不量化——用户意图优先于成品属性，靠透明声明 + 纠正权兜住。

**内容型演示透明声明**（判定纯内容·新做时，动手前说）：「文件里的内容和配图我会保留，并**重新制作一份规范的演示文件**。」

**判断「有设计」时绑定双声明（动手前一起说）**：
- 改写：「你的版式设计会保留，仅做品牌化替换（Logo/色板/公司数据）。」+ R5
- 纯内容新做：「文件里的内容和配图我会保留，并重新制作一份规范的演示文件。」+ R5

### 改写确认流程（三道平铺题）

| 题 | 问谁 | 决定什么 |
|----|------|----------|
| 场景 内/外 | 改写、新做都问 | 广告法（仅对外）+ 封面处理 + 字体栈 |
| 用途 演示/阅读 | **仅改写问** | 封面/结尾页是否强制 + 字号口径 |
| 改动范围 | 仅改写 | 默认全文件品牌化（**R4 是声明非确认题**） |

**改写不问的题**：配色方案（集团红默认，通信蓝不可选）、输出格式（文件类型已定）、视觉风格/封面风格（生成型问题）。
**为什么用途只在改写问**：新做产出的就是演示，处理已被场景 + 生成流程完全决定；阅读文档只有「改已有」才存在。

### 改写分支话术集（R1-R6，编号是 agent 内部书签，不暴露用户）

| 编号 | 用途 | 逐字话术 |
|------|------|----------|
| R1 | 场景确认（改写版） | 对内：「根据您提供的文件，我判断它是用于**工作汇报**的。如果实际是用于**对外展示**，请告诉我，我会切换处理方式。」<br>对外：「根据您提供的文件，我判断它是用于**对外展示**的。如果实际是用于**内部工作汇报**，请告诉我，我会切换处理方式。」 |
| R2 | 用途确认（仅改写，必问；打印并入屏幕阅读） | 「这个文件是用于**投屏演示**？还是**屏幕阅读**？」 |
| R3 | 双保险行为问法（**仅 HTML** 结构模糊时；PPTX 默认演示文稿不问；R2 与 agent 判断不一致走双保险「停下来描述让用户拍板」，不走 R3） | 「您希望阅读时是像 PPT 一样翻页的，还是像网页一样滚动阅读的？」 |
| R4 | 改动范围透明声明（默认全文件品牌化） | 对内：「我会对文件的颜色、字体、Logo 和公司信息做品牌规范调整，**保留原有排版**。」<br>对外：「我会对文件的颜色、字体、Logo 和公司信息做品牌规范调整，**保留原有排版**，并对内容做**广告法合规审查**。」 |
| R5 | 双保险透明声明（agent 有把握、用户无明确意见时） | 投屏演示：「我按**投屏演示**来调整这个文件，文字偏大处理。」<br>文档：「我按**文档规则**来调整这个文件，阅读更舒适。」 |
| R6 | 交付前自查声明 | 「交付前我会按品牌规范自查一遍，确认颜色、Logo、字体和合规都符合规范，通过后才交付。」 |

**对外广告法命中循环**（复用打断话术，追加来源标注）：（现有打断话术正文）+「其中**部分表述来自您原文件的内容**，是否修改由您决定。」

### 用途驱动的处理分支（仅改写）

| 用途 | 封面 | 结尾页 | 字号行距 | 广告法 |
|------|------|--------|----------|--------|
| **投屏演示** | 强制处理：对内=严谨商务风封面（唯一）；对外=分层修改（见封面分层） | 强制 VI 标准（居中 Logo + slogan），内/外都强制 | 套品牌字号（大屏 26pt 正文等） | 仅对外 |
| **屏幕阅读 / 打印** | **默认保留原封面、仅替换品牌元素（Logo/色板/公司数据）、保持原字号，除非用户明确要求重做封面**；封面分层硬规则永远覆盖默认 | 保留原样 | 保持原样 | 仅对外 |

阅读文档只套品牌（色板/字体/Logo/公司数据）+ 广告法（仅对外），**不套演示画布字号下限**（HTML ≥20pt 那套只针对 1920×1080 画布）。**打印并入屏幕阅读分支**（R2 只问演示/阅读两选项，用户提到打印按屏幕阅读处理）。

### 封面分层修改规则（对外演示）

| 情形 | 处理 |
|------|------|
| 背景红 | **替换封面**（对外=兜底封面图 + 原文字叠加，或有设计 skill 时 Themed 底线内重做；对内=严谨商务风封面） |
| Logo 反白稿（背景非红） | **只替换 Logo**，不动背景 |
| Logo 彩稿但变形/尺寸/溢出边界 | **只替换 Logo**，不动背景 |
| 全合规 | 不处理 |
| 色板/公司数据/文字/字体违规 | **就地修**（保留背景图，只修违规元素） |

**底线**（对外展示封面品牌底线）：只用色板色 / 封面必须带品牌标识 / 背景禁红禁深 / 字号达标 / 禁纯黑 / 开源字体 / 公司数据不编造。任一违反 → 按上表处理。

### 换色映射（按角色不按色相）

| 原元素 | 映射 |
|--------|------|
| 主色/强调/小标题/加粗等重点色（含蓝主色、蓝强调） | **品牌红** primary #D0121B |
| 普通文本（深色字） | dark #2D3847 / gray #595959（标题 dark，正文 gray） |
| 背景/卡片色 | white / lightGray / 浅粉白 #F8B5B8 |
| 边框 | gray |
| 绿 | 仅图表涨跌；非图表绿——**负向/失败绿保留语义，正向一律品牌红** |
| 渐变 | **封面禁红底**；内容页品牌红渐变可用；禁大面积黑/深灰用淡灰纯白代替 |
| 无法归类 | gray 兜底 |
| 图片/照片内容 | 不动（内容素材） |
| Logo | 替换为集团 Logo（一律彩稿 `logo-group-color`；云通信 Logo 暂隐藏，禁止切 `logoSet:"cloud"`） |
| 图表颜色 | 遵循数据图表规范（chartPalette） |

**执行前告知**：原文件为蓝色调时，先告知「原文件是蓝色调，会调整为集团红品牌色」再执行。

### 双保险确认（非自产 HTML 的文件性质判断）

| 情况 | 处理 |
|------|------|
| agent 结构判断有把握 | 跳过问题，用 R5 透明声明直接声明处理方式 |
| 结构模糊 | 用 R3 行为问法（仅 HTML）问用户 |
| 用户回答与 agent 判断不一致 | 停下来，agent 用大白话描述观察到的结构特征，让用户拍板 |
| 用户拿不准 + agent 有把握 | 按 agent 判断 + R5 透明声明 |
| 双方都拿不准 | 非破坏性默认（按阅读文档处理，只做品牌套用不重建结构） |

**例外**：本 skill 自产 HTML（generate.js 输出，结构固定可精确识别）不在此列。

### 广告法审查（改写，仅对外）

- 审查范围：agent 改写文本 + 全文件可见正文（含表格可见单元格），跳过备注与隐藏内容
- 命中循环与生成一致：打断 → 列出（词 + 位置 + 原文）→ 用户改 → 循环至干净
- 用户原文违禁词也列出，标注「部分表述来自您原文件的内容，是否修改由您决定」
- agent 只提示不代写（不代写替代词）
- **generate.js 兜底失效**：手改文件不走渲染器，改写后文本须显式对照 ad-compliance.json 审查

### 执行者分工

- 轻量路径全部 agent 执行：HTML 改 CSS/文字；PPTX 用 python-pptx
- 结构级替换封面 agent 执行：用兜底封面图 / red-template + 文字叠加
- 设计 skill 仅在：用户明确要求重新设计视觉 / PPTX 复杂溢出 agent 无法处理时介入
- **Phase 2 仅支持 HTML/PPTX**：docx/xlsx 显式排除，如用户提交明确告知「暂不支持改写，可转 HTML/PPT」

### 验收 / 校验（不靠 agent「记得」）

| 载体 | 校验方式 | 性质 |
|------|----------|------|
| PPTX | brand-check-pptx.py = 交付断言（改完必须运行，不通过 exit 1 不交付） | 机器强制 |
| HTML | **brand-check-html.py = 交付断言**（自有产出路径嵌入生成脚本末尾，不通过 exit 1 不产出）；设计 skill 产出路径只能后置检具 + 清单人工核对（诚实边界，同 pptx §9.1/§9.2） | 机器强制（自有路径）/ 检具（设计 skill 路径） |
| 自查清单 | 逐项写死（读 token 核对色板 / Logo / 字体 / 公司数据 / 广告法 / 封面结尾页） | 内容锁死兜底 |

**HTML 交付断言用法**：`python brand-check-html.py <file.html> [--scheme group-red] [--external]`——自有产出路径（走 generate.js 或脚本改写）生成动作末尾必须调用，校验不通过 `exit 1` 不交付；设计 skill 产出路径作后置检具 + 清单人工核对。`--external` 追加对外禁微软雅黑检查。

### 与现有路径的整合

- 废除「路径 A / 路径 B」说法 → 「任务类型 × 场景」矩阵（改写 / 新做 × 内 / 外 × 用途）
- 现有路径 B × Template / × Themed 的细则（替换所有颜色 / 结尾页强制 / Logo 安全区 / 广告法）保留为「结构级改写」规则，不重写
- 轻量品牌化 = 新增章节（skill 之前没有「保留原结构只套品牌」能力）

## 品牌规则

### 色彩

两套配色方案，通过 `brand-tokens.json` → `colorSchemes` 选择：

- **集团红（group-red）**：主色 `#D0121B`，集团层面默认
- **通信蓝（business-blue）**：主色 `#1677FF`，**暂不可选**（视觉未补齐，待官方确认后启用）；生成前确认问题 2 向用户标注「暂不可选」

每个方案 9 个核心色值 + `semantic` 语义色。所有颜色从 JSON 读取，不硬编码。

**品牌红色系统一（唯一红色尺度）：** 7 档色阶（`chartPalette.group-red.series`，浅 `#F8B5B8` → 深 `#72090E`）是唯一的红色系统，`colorSchemes` 的 `primary`/`primaryLight`/`primaryDark` 均为其档位指针：primary=s5 `#D0121B`、primaryLight=s3 `#F0575E`、primaryDark=s7 `#72090E`。色阶相邻对 ΔE2000 全 <15，只表方向不表身份（详见数据图表规范）。

**角色去向（每色一身份，禁止串用）：**
- **文字**：标题 `dark #2D3847`、正文 `gray #595959`；禁止纯黑
- **结构色**：`lightGray #F2F2F2` 结构浅灰 —— 卡片底 / 表头底 / 斑马纹 / 分割线
- **装饰色**：`accent #FF777F` 浅粉 —— 仅封面点缀/强调线条，**禁止进图表数据**、**禁止作正文/卡片文字或红底上的次级强调**（与色阶 s2 ΔE 仅 3.7，红底上同属红系不可见）
- **语义色**：`semantic` —— positive=品牌红（涨/正）、negative=深绿 `#3E8E4E`（跌/负）、neutral=中灰 `#BFBFBF`。中国惯例**红涨绿跌**，品牌红天然承担"涨"，绿承担"跌"。**语义色仅用于图表涨跌数据；深绿 `#3E8E4E` 禁止用于任何非图表设计**（A/B 对比、标注、强调、装饰均不可用绿）。非图表的两项对比用 **品牌红 vs 中灰**（或 深蓝灰 vs 灰），不引入绿
- **图表色**：见「数据图表规范 → chartPalette」

**两灰唯一命名（禁止混用）：** `#F2F2F2` = 结构浅灰（卡片底/表头底/斑马纹/分割线），`#BFBFBF` = 图表中灰（仅图表非重点）。二者都不是通用"淡灰"。

**小标题：内容页小标题（h3）必须用品牌红 `#D0121B`**（对比度 5.55:1 正文可读），禁止用浅红 `#F0575E` 或浅粉替代。

**红底场景次级元素 = 白色（强制）：** 红底/红卡片（品牌红 `#D0121B` 或色阶**深档 s4-s7**（s4 `#EC2831`/s5 `#D0121B`/s6 `#A10D14`/s7 `#72090E`）填充）上的文字、次级强调一律用白色 `#FFFFFF`，**禁止用 accent 浅粉 `#FF777F`、色阶浅档（s1/s2/s3）或任何色板外浅色**——同属红系对比度极低，红底+浅粉是"死色"（视觉不可见）。层次感用白色分级（如白 100% / 白 80% 透明度）实现，**不靠引入色板外颜色**。**边界定义：** 深档判定 = 色阶 s4-s7（含品牌红 s5）作底即触发白字规则；s1-s3 属浅档，其上文字按常规对比度规则（不强制白字）。此边界与 `brand-check-pptx.py` 的 `RED_BOTTOM_HEXES` 一致（唯一真源，见「PPTX 生成后自查」）。

### 背景系统

- 内页：白色背景

### 布局

**HTML 画布：** 1920×1080（px），响应式缩放至视口。
**PPTX 幻灯片：** 960×540（pt），PowerPoint 16:9 宽屏默认尺寸。所有百分比规则按此基准换算 pt 值。

- 内页内容可用范围：`top:12% ~ bottom:18%`（为右上 Logo 和底部 footer 留出空间）。**注意 top:12% 已高于 Logo 底边（5.3% + 80px ≈ 12.7%）**——顶部元素（标题等）右边界必须同时 ≤ 画布宽 − right − width（≈ 90.6%），否则与右上角 Logo 重叠（详见「Logo 安全区」章节）。内容主体区（如 top:28%）垂直已低于 Logo 底边，不在此约束内
- **内容垂直居中：** 内容视觉重心围绕页面 50% 垂直中心对称分布，不得整体偏上或偏下
- 左右留白：≥ 5%
- 封面标题位置：HTML `top:48%`，水平居中

### PPTX 输出路径（第 3 题选「PPT 文件」后的决策）

PPTX 布局比 HTML 脆，不鼓励手写代码排版。按优先级决策（交互见「生成前确认 → 用户话术」3a/3b）：

1. **对话中已客观存在且可直接调用、能直接产出 .pptx 版式的外部能力载体**（已加载的专业PPT制作技能/设计类技能、已定义的 agent、已安装插件的技能、已连接且授权可用的设计类 MCP 工具） → 这就是原生 PPTX 排版能力，优先用它，把品牌数据（尺寸/字号/行距/图片规则）作为契约交给它。**263group-brand-guidelines 不算**（品牌数据层，只产品牌数据与 HTML）；你的代码能力、通用代码执行类 MCP 也不构成原生能力；agent 不能中途加载新能力——判断只看用户是否已加载/连接该能力，不是你的能力自评。**产出后校验见「PPTX 生成后自查」——此路径产出方式在设计技能手中，无法机器强制，靠清单人工核对（见 pptx-python-guide.md §9.2 强制边界）**。
2. **未加载 → 推荐生成网页文件（HTML）**：交互见 3a，用户接受则按网页文件生成（可靠）。
3. **用户坚持代码生成 PPT** → 生成前逐字提醒（3b）效果可能有差距；**当且仅当此路径下读取 `pptx-python-guide.md`**（python-pptx 实现要点，把行距/中文字体/图片等比/透明文字框等机械点写死），其他路径不读该文件。**此路径产出即校验——生成脚本末尾必须嵌入 brand-check 交付断言（`pptx-python-guide.md` §9.1），校验不通过不产出，无法事后跳过**。
4. **复杂溢出判据（改写时字号放大，按载体分流）**：PPTX——改动只落 1 个文本框且不重叠 → agent 调整框尺寸/位置即可；重叠或跨元素联动（牵动图表/图片位置）→ 转设计 skill 或退回用户。HTML——不用「跨元素联动」信号（文档流自动 reflow 是免费行为），只保留「不重叠」判断用于绝对定位/定高容器（封面标题/Logo 安全区/定高卡片），正常流元素 agent 直接处理；HTML 走 generate.js 时字号渲染器强制，此判据基本不触发。

### PPTX 生成后自查（硬门禁）

PPTX 由 agent 直接产出（设计技能或代码生成），**没有 generate.js 那样的机器闸门**——品牌规范对 agent 是声明式，必须靠**生成后逐条自查**强制。无论哪条 PPT 路径，产出 .pptx 后必须逐条核对以下清单，任何一条不符即视为不合格，返工修复后才可交付：

1. **颜色全部来自色板白名单（读 token 规则）**：所有形状填充色、文字色逐一对照 `brand-tokens.json` → `colorSchemes[colorScheme]`（9 色）+ `semantic` + `chartPalette` 色值，**无自造 hex、无手写非白名单色值**。颜色值必须从 token 读取，禁止凭记忆写色号
2. **红底场景次级元素 = 白**：品牌红/色阶深档填充（红底/红卡片）上的文字、次级强调一律白色 `#FFFFFF`，**未用 accent 浅粉 `#FF777F`、色阶浅档或任何色板外浅色**（红底+浅粉=死色）
3. **结尾页是最后一页**：最后一页为居中 Logo + slogan PNG（VI 标准结尾页）；**无原文件的结尾/感谢页残留**；结尾页未插到中间位置
4. **Logo 合规**：内嵌二进制（无外部路径链接）；`LockAspectRatio=true` + 仅设单一维度（正方形 Logo 宽=高）；结尾 178pt / 内页右上 40pt / 封面 62pt 正方形；安全区无任何元素像素进入
5. **字体分流**：工作汇报 = 微软雅黑栈；对外展示 = 开源栈（Noto Sans SC → Source Han Sans SC），**对外展示产出不含微软雅黑**
6. **图片等比**：Logo/slogan 未裁切/拉伸/压扁；slogan 只设宽（480pt），显式宽高时 高 = 宽 ÷ 9.44（原生 1360×144），未写死比例不符的高度
7. **封面文字框透明**：封面叠加文字框 `FillVisible=false`（透明背景），未填充颜色遮挡底图

> **校验强度分两条路径**：**4b 代码生成路径**——`brand-check-pptx.py` 是生成脚本的**交付断言**（嵌进生成动作，校验不通过不产出，见 `pptx-python-guide.md` §9.1）；**设计技能产出路径**——产出方式在设计技能手中，只能作为可选检具 + 本清单人工核对（无机器强制，见 `pptx-python-guide.md` §9.2 强制边界）。两条路径都要过本清单；有 python-pptx 时用脚本机器校验，无 python-pptx 时**禁止降级**按清单人工逐条自查，一条不少。

### 响应式缩放（仅 HTML）

- 按视口等比缩放（`scale = Math.min(window.innerWidth / 1920, window.innerHeight / 1080)`）
- 取宽高缩放比的较小值，保证 1920×1080 画布始终完整可见
- CSS 变量 `--s` 控制缩放
- 播放器垂直居中：`position:fixed; top:50%; left:50%; transform:translate(-50%,-50%) scale(var(--s))`
- F11 → 浏览器原生全屏

### 字体

**正文字体：微软雅黑。** 字号值在不同输出格式下取不同数据源，数值即 pt（PPTX/PDF/印刷原生单位），不硬编码：

| 层级 | HTML 值（`sizes.*.template`） | PPTX 值（硬编码） | 刚性 |
|------|------------------------|------------------------|------|
| 封面标题 | 64 | 43 | Template MUST / Themed 区间 |
| 内容页标题 | 40 | 24 | 同上 |
| 副标题 | 30 | 20 | 同上 |
| 正文 | 26 | 18 | MUST |
| 图表标签/注脚 | 22 | 14 | MUST |

**Template：全部使用固定值。Themed：设计 skill 在区间内自由决定。** 数据源：`brand-tokens.json` → `typography.sizes`（Template 用 `*.template`，Themed 用 `*.themed.min/max` 区间）。PPTX 字号值从上表"PPTX 值"列取值，不在 JSON 中重复存储。

**字体按场景分流（对外展示路径开放决策，2026-08-18）：**
- **工作汇报（Template/内部）**：微软雅黑栈（`typography.fontFamily`）——内部自用，渲染最稳
- **对外展示（Themed/外部）**：开源栈（`typography.fontFamilyOpenSource`）——`"Noto Sans SC", "Source Han Sans SC", sans-serif`，**禁微软雅黑**（闭源，对外分发/嵌入有许可风险；Noto/Source Han 为 SIL OFL 开源，任何使用无风险）

**字体回退链（工作汇报栈）：** 微软雅黑 → Noto Sans SC → Source Han Sans SC → sans-serif。如果运行环境无微软雅黑（Mac/Linux/纯 Web），使用 **Noto Sans SC**（开源无版权，SIL Open Font License）。CSS font-family 完整栈从 `brand-tokens.json` → `typography.fontFamily` 读取。

**跨格式直出规则：** HTML/CSS 输出在数字后加 `pt` 后缀（如 `font-size: 64pt`），PPTX 直接写入数字（PPTX fontSize 原生单位即 pt）。**禁止任何 pt↔px 乘除换算。** 值从 JSON 读取为 number，单位由输出端明确补上。

**行距（HTML/PPTX 两套规范，禁止互套）：** 从 `brand-tokens.json` → `typography.lineHeight` 读取。HTML 用 CSS line-height 乘数（行盒 = 字号 × 值），PPTX 用倍距（基于字体自身行高）。**PPTX 1.2倍 ≈ HTML line-height ~1.6（一般换算）**，不可直接复刻数值——HTML 正文取 1.8 是屏幕阅读的宽松值，PPTX 取 1.2倍是 PPTX 习惯，两套规范各自取值。

| 元素 | HTML（CSS line-height） | PPTX（倍距） |
|------|:--:|:--:|
| 主标题 | 1.3 | 单倍 (100%) |
| 小标题 | 1.8 | 1.2倍 (120%) |
| 正文 | 1.8 | 1.2倍 (120%) |
| 卡片 | 1.8 | 1.2倍 (120%) |
| 时间轴 | 1.8 | 1.2倍 (120%) |
| 章节页大号数字 | 2.0 | 1.2倍 (120%) |
| 章节页标题 | 1.3 | 单倍 (100%) |
| 章节页副标题 | 1.8 | 1.2倍 (120%) |
| 目录页标题 | 1.3 | 单倍 (100%) |
| 目录条目 | 1.8 | 1.2倍 (120%) |

> 章节页标题/副标题与目录页标题分别复用 title/heading/title 行距值；目录条目用独立 `tocItem` key；章节页大号数字用独立 `sectionNumber` key。两套规范值禁止互套。

HTML 渲染器从 token 读取行距；PPTX agent 按倍距设置行距（标题单倍、其余 1.2倍）。

### Logo

| 规则 | 刚性 |
|------|:--:|
| 内页 Logo 尺寸：画布宽度的 4.2%（`layout.innerPageLogo.width/height` 正方形） | MUST |
| Logo 安全区内禁止任何装饰元素、文字、页码、页脚组件 | MUST |
| 浅色底 → 彩稿 Logo / 深色底 → 反白 Logo | MUST |
| 结尾页：原内容全部丢弃，替换为居中 Logo + slogan PNG 图片（不可用文字代替） | MUST |
| 封面 Logo（Themed）：左上角，画布宽度 6.5%（`layout.coverLogo`），安全区同内页规则 | MUST |
| 封面 Logo（Template）：左上角集团彩稿 PNG Logo（`layout.coverLogo` 位置/尺寸，见「工作汇报红色封面」章节） | MUST |
| Logo 图片必须使用 `background-size: contain`（CSS background-image）或 `object-fit: contain`（`<img>` 标签），禁止裁切、禁止拉伸、禁止压扁 | MUST |
| Logo 图片容器禁止同时固定宽高两个维度为不匹配原图比例的值；只能固定单一维度，另一维度 auto 或等比推算 | MUST |

**Logo 安全区 = Logo 图片的矩形边界框。** 安全区外边界即 Logo 边缘，不需要额外 margin。坐标从 `brand-tokens.json` → `layout` 读取。

**绝对禁止：** 任何内容元素（标题、正文、页码、页脚、装饰、分割线、图标、背景图形）的任何像素进入安全区。Template 和 Themed 模式下同等适用，无一例外。

**内页安全区（`layout.innerPageLogo`）：**
- Logo 位于右上角，`right` / `top` 定位，`width` = `height` 正方形（token 存 `width`/`height` 两键，HTML 各 80px、PPTX 各 40pt）。下文用「尺寸」指代这个正方形边长，**token 里没有 `size` 键，禁止读 `layout.innerPageLogo.size`**
- **安全区 = Logo 矩形边界框，X 与 Y 两个方向都算：** X 范围 `[画布宽 − right − 尺寸, 画布宽 − right]`，Y 范围 `[top, top + 尺寸]`。任一元素只要与安全区 X 和 Y 同时相交即越界——**单独 X 相交或单独 Y 相交不算越界**，但 X 和 Y 同时相交就是 Logo 压在元素上
- **内容区右边界约束：** 内容区任何元素右边界 ≤ 画布宽 − right − 尺寸（以默认 `right:5.2%`、`width:80px` 计 = 画布宽 × 90.6%，**不是 91.6%**——91.6% 是 `right:4.2%` 的旧值，与 token 不符，禁止使用）。数值按 token 实际计算，不硬编码
- **内容区顶部元素（标题、正文起点 top:12% 附近）特别危险：** 内容区 top:12% = 129.6px 在 Logo 底边（top:5.3% + 80px = 137.2px）之上，Y 已与安全区相交 → 顶部元素必须同时满足右边界 ≤ 画布宽 − right − 尺寸（≈90.6%），否则 Logo 盖住右侧图形/卡片。**任何顶部高于 Logo 底边的元素，右边界强制 ≤ 画布宽 − right − 尺寸**
- 页脚右侧元素（页码等）必须显式约束在此边界内，禁用 `space-between` 布局

**封面安全区（`layout.coverLogo`）：**
- Logo 位于左上角，`left` / `top` 定位，`size` 正方形
- 封面 Logo 尺寸（6.5%）大于内页（4.2%），视觉权重更高
- 安全区范围：X: left ~ left+size, Y: top ~ top+size
- 封面常见违规：装饰圆/半透明图形侵入左上角、标题文字 `padding-left` 不足导致进入安全区
- **生成封面时强制检查：** 所有装饰元素（背景圆、渐变块、几何图形）的左上边界必须 ≥ left+size，标题文字的 `left` 或 `padding-left` 必须 ≥ left+size

### 图片素材缩放规则（硬门禁）

**所有品牌图片素材（Logo PNG、slogan PNG）只允许等比缩放，绝对禁止裁切或变形。HTML 和 PPTX 同等适用。此规则优先级最高，覆盖一切排版决策。**

| # | 规则 | HTML 实现 | PPTX 实现 |
|---|------|-----------|-----------|
| 1 | 只允许等比缩放 | `background-size: contain` 或 `object-fit: contain` | `LockAspectRatio=true` |
| 2 | 只能固定单一维度 | `width`+`height:auto`，或宽=高正方形 | 仅设 Width 或仅设 Height |
| 3 | 禁止同时设两个不同宽高值 | 禁止 `width:300;height:100` | 禁止 Width≠Height 且不锁比例 |
| 4 | 禁止裁切模式 | 禁止 `cover`、`overflow:hidden` | 禁止 Crop、禁止裁剪 |
| 5 | Logo 容器始终正方形 | 宽=高，`contain` 内部适配 | Width=Height，`LockAspectRatio=true` |

**各场景正确写法：**

内页右上角 Logo（HTML: 80px = 1920×4.2%；PPTX: 40pt = 960×4.2%）：
```
HTML ✅ width:80px; height:80px;  (background-size:contain)
PPTX ✅ Width=40pt, Height=40pt, LockAspectRatio=true
```

封面左上角 Logo / Themed（HTML: 125px = 1920×6.5%；PPTX: 62pt = 960×6.5%）：
```
HTML ✅ width:125px; height:125px;  (background-size:contain)
PPTX ✅ Width=62pt, Height=62pt, LockAspectRatio=true
```
> 注意：封面 Logo 禁止使用百分比（`6.5%` 在 1920×1080 上宽高解析为 125×70，破坏正方形）。必须用 px/pt 固定值。

结尾页居中 Logo（HTML: 356px = 1080×33%；PPTX: 178pt = 540×33%）：
```
HTML ✅ width:356px; height:356px;  (background-size:contain)
PPTX ✅ Width=178pt, Height=178pt, LockAspectRatio=true
```

结尾页 Slogan（HTML: 960px = 1920×50%；PPTX: 480pt = 960×50%）。**slogan 原生像素尺寸从 `brand-tokens.json` → `slogan` 读取（当前 1360×144，宽高比 9.44:1）**。只固定宽度、不设高度时另一维自动按原图比例：
```
HTML ✅ width:960px; height:auto;  (background-size:contain)
PPTX ✅ Width=480pt, LockAspectRatio=true, 不设 Height
```
**当目标工具必须显式填写宽高两个值（如 slidep 类组件要求 width+height 成对）时：** 高度 = 宽度 ÷ aspectRatio（即 宽度 ÷ 高度 = aspectRatio = 原生宽高比 9.44:1，禁止另造比例）。以当前 slogan 为例：宽度 640 → 高度 = 640 ÷ 9.44 ≈ 68；宽度 480 → 高度 ≈ 51。**禁止写死与原生比例不符的高度**（如 640×120：比例 5.33:1 ≠ 9.44:1，渲染引擎按裁切填满处理，slogan 文字被切掉两头）。

**禁止做法（任何格式）：**
- ❌ 同时设定不同的宽高值（如 300×100）→ 图片被压扁/拉伸
- ❌ slogan 宽高比 ≠ 原生宽高比（如 640×120，原生 9.44:1）→ 渲染引擎裁切填满，slogan 文字被切
- ❌ 裁切模式（`cover` / Crop / srcRect 裁剪）→ 图片边缘被切掉
- ❌ 不对 PPTX 图片设置 `LockAspectRatio` → 拖拽即变形
- ❌ 容器非正方形（宽≠高）+ Logo 图片 → Logo 在错误比例框内

**PPTX 图片嵌入：**
- 必须内嵌图片二进制到 .pptx 文件中，禁止使用外部路径链接
- LockAspectRatio 的正确设置顺序：① 插入图片 → ② 设置 `LockAspectRatio=true` → ③ 设置 Width（或 Height）单维度值。必须先锁比例再设尺寸，顺序反了会变形
- 所有 Logo 文件路径从 `brand-tokens.json` → `logos` 读取；slogan 路径从 `brand-tokens.json` → `slogan.path` 读取，**slogan 原生像素尺寸/宽高比同源读取**（`slogan.nativeWidth` / `slogan.nativeHeight` / `slogan.aspectRatio`）

**生成前自检（HTML & PPTX）：**
- [ ] 所有 Logo 容器为正方形（宽=高）
- [ ] 所有 Slogan 只固定宽度，高度按原图比例自适应；**slogan 宽高比 = 原生 9.44:1（1360×144，从 `brand-tokens.json` → `slogan` 读取）**，未写死比例不符的高度（如 640×120）
- [ ] 没有任何品牌图片使用裁切/拉伸模式
- [ ] 结尾页 Logo + slogan 格式正确
- [ ] 内页右上角 Logo 格式正确
- [ ] 字号全部从 `typography.sizes.*.template` 读取（封面标题 64 / 内容页标题 40 / 副标题 30 / 正文 26 / 图表标签 22），HTML 一律 `pt` 后缀——无 px、无 pt↔px 换算、无凭记忆写字号
- [ ] 字号底线达标：正文 ≥ 24pt，任何文字 ≥ 20pt
- [ ] 行距从 `typography.lineHeight.html` 读取（主标题 1.3、其余 1.8），未用 px 或 PPTX 倍距
- [ ] PPTX: 所有图片已内嵌（非外部链接）；LockAspectRatio 设置顺序正确
- [ ] 字体栈按场景分流：工作汇报 = 微软雅黑栈（`typography.fontFamily`）；对外展示 = 开源栈（`typography.fontFamilyOpenSource`），对外展示产出**不含微软雅黑**
- [ ] 对外展示封面：渲染器默认即兜底封面图（仅加载 263group-brand-guidelines → 判定无设计能力，未自评「能设计」而跳过兜底）；封面 Logo 一律彩稿 `logo-color-img`（禁止反白）
- [ ] 封面背景非红色系（禁 `primary-gradient`/`primary-solid`/`dark-solid`，合法背景：兜底图默认或 white）——红底吞 Logo、深底反白 Logo 均违反底线
- [ ] 所有颜色值逐一对照 colorSchemes 白名单（9 色 + semantic + chartPalette），**无自造 hex**（含 custom.html 内嵌样式）；红底场景次级元素用白色，未用 accent 浅粉作红底次级强调

### 品牌上下文（Logo 按业务线切换）

> **⚠️ 业务线切换规则暂隐藏（2026-08-25，暂停生效）**：以下原规则**保留**，待通信蓝色系（`business-blue`，视觉未补齐、待官方确认后开放）启用后恢复。云通信蓝 Logo 仅在通信蓝色系下合规；当前可用配色仅集团红，红系 PPT 混用云通信蓝 Logo 不合规。
>
> **原规则（保留，当前不生效）：** 默认使用集团 Logo。当用户指定业务线（如云通信）时，切换到该业务线的 Logo，其他品牌规则不变。在 `pages.json` 中设置 `"logoSet": "cloud"` 切换到云通信 Logo，省略或 `"group"` 为集团 Logo。Logo 文件路径从 `brand-tokens.json` → `logos.group` / `logos.cloud` 读取。

**暂隐藏期生效规则：**
- **一律使用集团 Logo**（`logos.group` 彩稿 `logo-group-color`），不受用户业务内容影响——用户内容涉及云通信（企业邮箱、直播、电话会议等）时**不得**自动切换云通信 Logo
- 一律 `logoSet:"group"`（或省略），**禁止 `logoSet:"cloud"`**；`brand-tokens.json` → `logos.cloud` 保留作数据储备（`disabled:true` 为禁用开关，Agent 不得读取使用）；generate.js 读 `logos.*.disabled` 标志 fail-loud（exit 1）兜底拒绝渲染
- Logo 文件路径一律从 `brand-tokens.json` → `logos.group` 读取

### 硬规则

Template：全部锁死。Themed：以下 MUST 规则不可违反，其余交设计 skill。

从 `brand-tokens.json` → `hardRules` 读取完整清单。

### 结尾页

**顺序要求：结尾页必须是整个 PPT 的最后一页。** 无论 Template 还是 Themed 模式，生成或改写 PPT 时，结尾页必须是 slide 数组的最后一个元素。禁止将结尾页插入到中间位置。

**格式：** 居中 Logo + slogan PNG。尺寸按画布比例计算，不硬编码：

- **Logo：** 高度 = 画布高度 × 30%~36%，宽度按原图等比自适应。容器设为正方形（宽=高），CSS `background-size: contain` 保证图片不裁切不变形
- **Slogan：** 宽度 = 画布宽度 × 45%~55%，高度按原图比例自适应，**禁止硬编码固定高度**。使用 `background-size: contain` 或 `object-fit: contain`。**原生像素尺寸从 `brand-tokens.json` → `slogan` 读取（当前 1360×144，宽高比 9.44:1）**；工具要求显式宽高时，高度 = 宽度 ÷ 9.44，禁止写死比例不符的高度（如 640×120 → 裁切）
- **间距：** Logo 与 slogan 之间留白 = 画布高度 × 6%~8%

以 1920×1080 画布为例：Logo 约 356px 正方形，slogan 约 960px 宽，间距约 76px。

**绝对禁止：** 同时固定 Logo 的宽和高为不相同的值（如 `width:288px;height:162px`）——这会创建一个非正方形容器，导致 Logo 在其中被挤压或留白过大。Logo 容器必须宽=高。

## 与设计 skill 协作

263group-brand-guidelines 是品牌数据层，设计 skill 是表现层。

| 层 | 谁负责 | 锁定的内容 |
|----|--------|-----------|
| 品牌数据层 | 263group-brand-guidelines | 色彩、字体、Logo 规则、结尾页格式、硬规则 |
| 表现层 | 设计 skill | 排版布局、装饰元素、图表风格、动画、阴影 |

**设计能力判定（与 PPTX 能力同一把客观尺子，HTML/PPTX 通用）：** 本次对话中**已客观存在且可直接调用**、能直接产出 HTML 或 PPTX 版式的**外部能力载体**——已加载的设计类技能（frontend-design、专业PPT制作技能或设计类技能）、已定义的 agent、已安装插件的技能、已连接且授权可用的设计类 MCP 工具。**263group-brand-guidelines 不算**——只产品牌数据与 pages.json，产不出表现层（HTML 与 PPTX 都如此）；**你的代码能力不算、通用代码执行类 MCP 不算**——任何工具都能写代码，手写 HTML/PPTX 属回退路径；**agent 不能中途加载新插件/MCP/agent**（安装/连接是用户侧配置动作）。仅加载 263group-brand-guidelines → 判定**无设计能力** → Themed 封面走渲染器兜底封面图（默认）。

**Brand Data Contract：** 263group-brand-guidelines 输出给设计 skill 的数据结构：

> **示例仅为结构示意，不是可照抄的常量。** `colorScheme`/`colors` 的取值、`typography` 字号、`slogan` 尺寸等，Agent 传给设计 skill 时必须从 `brand-tokens.json` 对应字段实时读取（如当前 `colorScheme` 决定 `colorSchemes[colorScheme]` 的 9 个色值）。示例中出现的色值/数值一旦与 token 冲突，以 token 为准。

```json
{
  "colorScheme": "<从 pages.json 读取：group-red 或 business-blue>",
  "colors": "<colorSchemes[colorScheme] 的 9 个色值：primary/primaryLight/primaryDark/accent/dark/gray/lightGray/white/black，禁止硬编码示例值>",
  "typography": { "fontFamily": "<工作汇报: typography.fontFamily 微软雅黑栈 / 对外展示: typography.fontFamilyOpenSource 开源栈>", "html": { "body": 26 }, "pptx": { "body": 18 } },
  "logo": { "innerPage": { "width": "80px", "height": "80px", "right": "5.2%", "top": "5.3%" }, "safeZone": "Logo bounding box (X: W−right−width~W−right, Y: top~top+height), zero tolerance. Top elements (title etc.) must keep right edge ≤ W−right−width ≈ 90.6%" },
  "slogan": { "path": "assets/slogan.png", "nativeWidth": 1360, "nativeHeight": 144, "aspectRatio": 9.44 },
  "hardRules": ["Logo安全区", "结尾页格式", "主色不可偏色"],
  "mode": "themed"
}
```

设计 skill 消费这个结构，在硬规则约束内自由创作。

## 模板注入契约（委托任何工具时随附，2026-08-24）

当 263group-brand-guidelines 委托**任何**外部工具（设计 skill、专业PPT制作技能、已定义 agent、插件技能、已授权设计类 MCP）生成表现层时，把本契约作为**自包含模板清单**随附给受托工具——受托工具不得凭直觉猜测下列任何一项，也不得因"看起来重复/位图已带"而省略。本契约是对上文各详细章节的委托摘要；详细规则以对应章节为准。

| 项 | 值（从 token 实时读取） | 刚性 |
|----|----|:--:|
| 画布 | HTML 1920×1080；PPTX 960×540pt；委托 SVG 中间态 1280×720（= 960pt 的 1.333× 源，**pt = px ÷ 0.75**） | MUST |
| 封面背景 | `cover-red-template.png` 全幅位图（工作汇报）；**位图无烘焙 Logo——封面 Logo 必须显式叠加，禁止省略/删除** | MUST |
| 封面 Logo | 彩稿 `logo-group-color`，左上角 left:6%/top:8%，正方形 125px@1920（PPTX 62pt @ 57.6/43.2；委托中间态 77/58/83@1280×720）；Logo 安全区零容忍 | MUST |
| 内页 Logo | 彩稿 `logo-group-color`，**右上角** right:5.2%/top:5.3%，80px@1920（PPTX 40pt；委托中间态 1160/38/53@1280×720） | MUST |
| 结尾页 | 居中彩稿 Logo（高 30%~36% 画布）+ 居中 slogan PNG（宽 45%~55% 画布，显式高度 = 宽度 ÷ 9.44），**必须最后一页** | MUST |
| 色板/字体/公司数据 | 从 `brand-tokens.json` / `company-data.json` 读取，禁手写 hex、禁凭记忆写数值 | MUST |
| 校验 | HTML → `brand-check-html.py`；PPTX → `brand-check-pptx.py`；设计工具产出路径 → 按「PPTX 生成后自查」清单人工核对 | MUST |

**委托时的硬约束**：品牌数据层（本 skill）定色板/字体/Logo/结尾页格式；表现层（受托工具）排版。受托工具产出的页面必须逐条对上表——封面有 Logo、内页 Logo 在右上、结尾页最后，缺一不可。

## 输入格式

263group-brand-guidelines 不负责解析文件。外部 Agent 自行调用 MCP 或其他工具摘取内容后送入管线。

| 分级 | 格式 | 可靠性 |
|------|------|--------|
| 原生支持 | HTML、JSON | 路径 B 完整能力 |
| 尽力而为 | .pptx、.docx、.pdf、图片 | Agent 尽力提取 + VI 化，不保证完美 |

如果用户提供的文件格式不在原生支持列表中，告知用户："这个文件格式需要先提取内容。我会尽力处理，但可能需要你确认提取结果是否准确。"

## HTML 输出规范（仅 HTML）

零外部依赖，单一 HTML 文件，浏览器直接打开。播放壳：全屏（F11）/键盘翻页（方向键 ←/→ 前后翻页，Home/End 首尾）。**点击页面任意位置不翻页**——翻页只能靠键盘（2026-08-21 起，汇报场景防误触）。

### Logo 嵌入（仅 HTML，PPTX 图片规范见"图片素材缩放规则"章节）

Logo 和 slogan 图片**必须**以 base64 data URI 嵌入 CSS `background-image`，**禁止**使用以下方式：

- **禁止** `<img src="...">` 标签引用 Logo 或 slogan
- **禁止** 外部文件路径（`url(assets/logos/...)` 或 `url(../assets/...)`）
- **禁止** 省略图片素材——结尾页必须有 slogan.png，内页必须有 Logo

正确格式：

```css
.logo-color-img { background: url(data:image/png;base64,...) no-repeat center/contain; }
.logo-white-img { background: url(data:image/png;base64,...) no-repeat center/contain; }
.slogan-img    { background: url(data:image/png;base64,...) no-repeat center/contain; }
```

- 内页内容可用范围：`top:12% ~ bottom:18%`，内容视觉重心围绕页面 50% 垂直中心对称分布
- 内页 Logo：右上角固定，位置和尺寸从 `brand-tokens.json` → `layout.innerPageLogo` 读取（`right` / `top` / `width` / `height`，token 无 `size` 键）
- 封面 Logo（Themed）：左上角，从 `layout.coverLogo` 读取
- 浅色底用 `.logo-color-img`，深色底用 `.logo-white-img`
- 结尾页：居中 Logo（`layout.innerPageLogo.width/height`）+ slogan.png（宽度 45%~55% 画布宽），垂直居中排列
- **字号契约（渲染器与手动路径同等适用）：** 字号必须从「字体」章节逐字应用——`typography.sizes.*.template`（封面标题 64pt / 内容页标题 40pt / 副标题 30pt / 正文 26pt / 图表标签 22pt），HTML 一律 `pt` 后缀，**禁止 px 单位、禁止 pt↔px 换算、禁止凭记忆写字号**。底线：正文 ≥ 24pt，极限 ≥ 20pt（`hardRules.typography.html`）。生成后按「生成前自检」核对字号与行距

## 数据图表规范

> HTML 实现参考（CSS/SVG）。PPTX 使用原生图表对象，品牌约束（色板、字号、安全区）同等适用，但实现语法由 PPTX 库决定。图表色板只存数据（`brand-tokens.json` → `chartPalette`），**本段存决策规则**——按「色板角色表 → 判定函数 → 数值门禁 → 回退」四层执行。

### 图表色板（角色限定表，每色一身份）

| 角色 | 色值（从 token 读取） | 唯一去向我 | 数据门禁（ΔE2000） |
|------|------|------|------|
| 重点 | s5 `#D0121B` 品牌红 | 模式①唯一强调色 | vs 中灰 40.9 ≥20 ✓；与 s4 不相邻（7.5 <15） |
| 方向梯度 | 7 档 s1→s7 | 模式②按序铺色 | 相邻对 7.5~11.5 全 <15 → 只表方向，不表身份 |
| 远距红 | s1 `#F8B5B8`/s4 `#EC2831`/s7 `#72090E` | 需 2~3 个可区分红色时取此组 | 两两 ≥25 ✓；禁止取相邻档 |
| 非重点 | 中灰 `#BFBFBF` | 模式①非重点数据 | vs 全 7 档 ≥20.2 ✓；配深字 |
| 语义涨跌 | 涨=品牌红 / 跌=`#3E8E4E` 深绿 / 持平=中灰 | 正负对比数据 | 绿 vs 红 65.0 ✓；绿白字 4.05 ✓ |

> **两灰唯一命名（禁止混用）：** `#F2F2F2` = 结构浅灰（表头底/斑马纹/卡片底），`#BFBFBF` = 图表中灰（仅图表非重点）。二者都不是通用"淡灰"。浅粉 `#FF777F` 禁止进图表（与色阶 s2 ΔE 仅 3.7）。

### 系列上色规则

从 `brand-tokens.json` → `chartPalette` 读取，按当前 colorScheme 选择子块（集团红 → `group-red`，通信蓝 → `business-blue`，后者**暂不可选**，当前禁止启用）。

**上色模式二选一，禁止混用：**

**模式① 重点突出（判定函数，不是示例词）：**
- **触发条件：明确强调数据点 = 1~2 处。** "明确强调"定义为：用户话术点名具体数据（含强调词"最高/最/核心/标杆/目标/重点"，或量化对比"增长 ≥50%"/"翻番"/"创新高"），且指向的数据点 ≤2
- **强调 >2 处（含"都重要"）→ 降级模式②**，全部作普通系列，不做重点（多个品牌红互相抢注意力，中灰也容纳不下）
- 执行：强调数据 = 品牌红 `#D0121B`；其余 = 中灰 `#BFBFBF`（配深字）
- 效果：重点与非重点 ΔE ≥ 20，观众一眼锁定重点

**模式② 色阶方向（未触发模式①时）：**
- 按**用户自定义顺序**铺色（禁止按数值大小重新排序），第一行/列取色阶**一端**（最浅 s1 `#F8B5B8` 或最深 s7 `#72090E`）
- 方向由 agent 判断，**必须二选一且全图一致**（全部由浅到深，或全部由深到浅）
- 颜色表**方向**，不表大小——观众靠位置认身份，色阶只强化渐变方向感

**优先级：模式① > 模式②。** 有明确强调（1~2 处）就进重点模式，否则铺色阶。

### 数值门禁（机读，ΔE2000）

- **色阶相邻档禁止作独立身份：** 7 档相邻对 ΔE 7.5~11.5 全 <15。依赖相邻档区分的图表必须二次编码；梯度只表方向
- **远距红取档：** 需 2~3 个可区分红色时取 `distinctReds`（s1/s4/s7），禁止取相邻档
- **对比度门：**

| 组合 | 比值 | 判定 |
|------|------|------|
| 白字 on s5 品牌红 / s6 深红 / s7 深褐红 | 5.55 / 8.13 / 11.93 | ✓ 正文 |
| 白字 on s4 亮红 | 4.27 | ⚠ 仅大字（≥18pt 粗体） |
| 深字 on 中灰 `#BFBFBF` | 6.46 | ✓ 数据标签 |
| 白字 on 中灰 | 1.84 | ✗ 禁止 |
| 白字 on 深绿语义 | 4.05 | ✓ 正文 |

### 回退规则（超容量与边界）

- **系列 >7：** 7 档用尽后禁止自造色。回退按序：①拆图（同图 ≤7 系列）②改模式①（重点 + 中灰）③循环用阶但**必须二次编码**兜底。饼/环扇区数 ≤ 7（不循环）
- **涨跌数据（正负对比）：** 用语义色——正=品牌红、负=深绿 `#3E8E4E`、持平=中灰（中国惯例红涨绿跌）。语义色表"正负属性"，重点模式表"强调"，二者不冲突
- **二次编码**（色阶相邻档色值相近，强化系列身份）：

| 图表 | 二次编码 | 说明 |
|------|------|------|
| 折线图 | **线型 + 标记** | 实线/虚线/点线/点划线 + 方块/圆/三角/菱形等标记，三重身份锁定 |
| 柱状图 | **数值标签** | 柱顶直接标数值，身份交给标签 |
| 饼图/环形图 | **白色硬分割线 + 扇区标签** | 相邻扇区白线隔开 + 标签标注，颜色只做分组 |

### 通用约束（HTML / PPTX 通用）

1. **色值** — 系列色从 `chartPalette` 读取，禁止自造衍生色值。上色方式见「系列上色规则」二选一，禁止混用
2. **安全区** — 图表所有组成部分（图形、坐标轴、刻度、标注、图例）须完整约束在 `top:12% ~ bottom:18%` 内，不得侵犯右上 Logo 安全区
3. **禁止纯黑** `#000000` — 文字用 `#2D3847`（标题）/ `#595959`（标注）
4. **结构底色** — 表头底、斑马纹、卡片底只能用 `#F2F2F2`（结构浅灰）或品牌主色极低透明度，不用自造浅色
5. **网格线/轴线** — 可用中性灰，不属品牌色违规

### 字号阈值（HTML CSS/SVG 参考，PPTX 对应使用上表 PPTX 列字号）

**常规：≤8 个数据点。密集：>8 个数据点。**

| 条件 | 轴标签/图例 | 数据标注 |
|------|:--:|:--:|
| CSS 图表，≤8 数据点 | ≥ 20pt | ≥ 22pt |
| CSS 图表，>8 数据点 | ≥ 18pt | ≥ 20pt |
| SVG 折线图，≤8 点 | viewBox 内 18 | viewBox 内 16 |
| SVG 折线图，>8 点 | viewBox 内 16 | viewBox 内 14 |
| SVG 折线图，底线 | viewBox 内 12 | viewBox 内 12 |

> SVG 字号基于固定 `viewBox="0 0 740 520"`。

### 按图表类型（HTML 实现语法，PPTX 用原生图表复现相同约束）

**柱状图** — 系列色按「系列上色规则」从 `chartPalette` 读取。PPTX: 原生柱状图，系列色同规则。
**数据表格** — HTML: 数值列右对齐，表头底 + 品牌主色底线，峰值行高亮。PPTX: 原生表格，同上格式规则。
**折线图** — HTML: 单 SVG + 固定 viewBox，禁止 CSS/SVG 混用，线型 + 标记二次编码。PPTX: 原生折线图，同二次编码，最新数据点高亮。
**饼图/环形图** — HTML: conic-gradient + 白色硬停止分割线，扇区数 ≤ 7。PPTX: 原生饼图/环形图，同色板约束，扇区数 ≤ 7，扇区标签 + 图例标注。

**图表生成前自检：**
- [ ] 系列色全部来自 `chartPalette`，无自造色
- [ ] 上色模式二选一（重点突出 / 色阶方向），未混用；强调 1~2 处→模式①，>2 处→降级模式②
- [ ] 色阶方向全图一致（全部由浅到深，或全部由深到浅）
- [ ] 用户未排序的数据未按数值大小重排
- [ ] 折线图有线型 + 标记；柱状图有数值标签；饼/环图有白分割线 + 扇区标签
- [ ] 饼/环图扇区数 ≤ 7；超 7 系列已按回退规则拆图/改模式
- [ ] 涨跌数据用语义色（红涨绿跌），未与重点模式混淆

---

## 禁止事项

- 禁止使用非色板颜色（不自己发明颜色，含图表多系列）
- 禁止在非图表设计中使用语义绿 `#3E8E4E`（深绿仅限图表涨跌语义；A/B 对比、标注、强调、装饰等一律不用绿，对比双方用品牌红 vs 中灰/深蓝灰）
- 禁止在 Template 路径下保留原文件的非品牌颜色（绿色/蓝色/橙色等必须全部替换为品牌色板值）
- 禁止保留原文件的结尾页内容（必须替换为 VI 标准：居中 Logo + slogan PNG）
- 禁止任何像素进入 Logo 安全区——安全区 = Logo 矩形边界框（X: 画布宽 − right − width ~ 画布宽 − right，Y: top ~ top + height），无一例外。**顶部元素（标题等，Y 与安全区相交）右边界必须 ≤ 画布宽 − right − width（≈ 90.6%）**；页脚页码用固定右边界，不得越界
- 禁止图表内容超出页面安全区或侵犯 Logo 安全区
- 禁止编造公司信息（名称、股票代码、产品、数据等）
- 禁止 font-size < 各格式底线（HTML 正文 ≥ 24pt 极限 ≥ 20pt；PPTX 正文 ≥ 16pt 极限 ≥ 12pt）
- 禁止在内页自定义 Logo 位置（右上角，画布宽度 4.2%，见 `layout.innerPageLogo.width/height`，固定）
- 禁止在 Logo 安全区放置任何装饰元素
- 禁止在 Template 路径下自行调整字号、布局、配色
- 禁止向用户暴露 Template/Themed 等内部术语**及内部文件名**（如 red-template、cover-red-template.png、scene/background 等字段值）。**模式/封面术语**在用户对话中永远使用「工作汇报」「对外展示」「严谨商务风格」（集团 Logo、HTML/PPTX 等正常用词不受此限）。完整替换对照见「生成前确认 → 内部思考词汇」
- 禁止向用户解释 VI 规范、母版机制、渲染流程等内部实现细节
- 禁止跳过透明声明（每次生成必须告知用户当前模式）
- 禁止裁切、拉伸、压扁任何品牌图片素材（Logo、slogan）—— HTML: `background-size: contain` 或 `object-fit: contain`；PPTX: `LockAspectRatio=true` + 仅设单一维度
- 禁止同时固定 Logo 图片容器的宽和高为不同值（如 `width:288px; height:162px`）—— 结尾页 Logo 容器必须宽=高（HTML & PPTX 通用）
- 禁止使用 `<img>` 标签引用品牌图片素材（仅 HTML）—— 必须使用 CSS `background-image` + base64 data URI
- 禁止 PPTX 中使用外部路径链接图片 —— 必须将图片二进制内嵌到 .pptx 文件中
- 禁止 PPTX 封面文字框填充颜色（`FillVisible=false`）—— 必须透明背景，避免遮挡封面底图
- 禁止省略图片素材 —— 每个内页必须有右上角 Logo，结尾页必须有居中 Logo + slogan
