# 混合规则

两个流派混合时，每个维度只归一个流派所有，不取平均。

## 1. 维度归属

| 维度 | 归属 | 字段 |
|---|---|---|
| 栅格、构图、布局规则 | 主流派 | `structure.grid` `structure.composition` `structure.rules` |
| 字体 | 主流派 | `structure.type` |
| 圆角、边框、阴影、密度 | 主流派 | `structure.radius` `structure.border` `structure.shadow` `structure.density` |
| 动效 | 主流派 | `structure.motion` |
| 调色板与用色方式 | 副流派 | `palette` `colorUsage` `colorWords` |
| 质感 | 副流派，强度受主流派限制 | `texture` × `structure.textureCap` |
| 母题、生图媒介 | 副流派 | `motifs` `motifsEn` `medium` |
| 布局禁忌 | 主流派 | `structure.dont` `structure.negative` |
| 色彩、质感、画面禁忌 | 副流派 | `dont` `negative` |

禁忌也按归属拆开：`structure.dont` 只管布局和形状，顶层的 `dont` 只管颜色、质感和画面。混合时取 `主.structure.dont + 副.dont`，生图负向词取 `主.structure.negative + 副.negative`，主流派顶层的色彩禁忌不带过来。比如风格派禁止二次色，但风格派 × 野兽派照样可以用翠绿，因为颜色归野兽派管。

主流派和副流派相同时，就是该流派的纯粹形态，两组禁忌都生效。

## 2. 选主流派

1. 只有 `roles` 含 `structure` 的流派能当主流派。
2. 用户说"A × B""A 加 B""A 风格配 B 的颜色"时：
   - 两者都能当主流派：先说的那个是主流派，除非用户明确说了谁管颜色。
   - 只有一个能当主流派：它就是主流派，顺序不重要。
   - 两者都不能当主流派（比如浮世绘 × 水墨）：默认用极简主义做结构，取先说的那个做副流派，后说的那个只贡献母题；并在输出第一行说明这个替换。
3. 用户只说一个流派：能当主流派就主副都用它；不能就用极简主义做结构，它做副流派。
4. 用户说的流派不在 `schools.json` 里：不要编造数据。告诉用户现有的流派列表，并推荐最接近的一个。

## 3. 数值计算

- **质感强度** = `min(副.texture.level, 主.structure.textureCap)`。结果为 0 时视为 `none`。
- **强调色数量**：只使用副流派调色板里的前 `主.structure.accentSlots` 个强调色（顺序：`accent` → `accent2` → `accent3`）。例如极简主义 × 野兽派只用朱红一个强调色，这正是该组合该有的克制。
- **规则里的颜色词**：主流派的 `structure.rules` 里写的"黑线""白格""三原色"只表示角色，混合时换成副流派的对应颜色：黑线 = `line`，黑字 = `ink`，白格 = `bg`，彩色格 = 强调色。风格派 × 浮世绘的网格线是深靛蓝，不是黑色。
- **字体中文回退**：`structure.type.zh` 接在拉丁字体后面，例如 `"Jost", "PingFang SC", "Noto Sans SC", sans-serif`。

## 4. 禁忌冲突

主流派的布局禁忌和副流派的母题冲突时，母题只能退到插图里：

- 风格派禁止曲线，新艺术运动的母题是鞭线：曲线只能出现在插图和装饰图里，不能出现在卡片、按钮、分割线等界面结构上。
- 极简主义禁止装饰，浮世绘的母题是巨浪：巨浪只能作为一张主视觉图出现一次，界面本身不加纹样。
- 装饰艺术要求对称，构成主义的母题是斜向色带：色带可以保留，但要沿中轴镜像放置。
- 生图负向词去重后输出。生成的图就是插图，副流派的母题在插图里是允许的，所以如果某个负向词和副流派的 `medium` 或 `motifsEn` 整词直接矛盾（按整词比较，symmetry 和 asymmetric 不算冲突）（比如 medium 写了 brushstrokes，负向词里有 brush strokes；或者母题是 whiplash curves，负向词里有 curves），删掉这个负向词，以副流派为准。布局禁忌仍然写进代码提示词，管住界面结构。

## 5. 对比度兜底

调色板在 `schools.json` 里已经校验过：`ink/bg ≥ 7`、`ink/surface ≥ 4.5`、`muted/bg ≥ 4.5`、`onAccent/accent ≥ 4.5`。混合时不要改这些颜色。如果主流派的规则要求把文字放在 `accent2` 或 `accent3` 色块上，就改用 `ink` 或 `onAccent` 中对比度更高的那个，并保证至少 4.5:1。

## 6. 示例：包豪斯 × 野兽派

- 结构：12 栏模块网格、巨大的左对齐 Jost 标题、粗黑条分隔、零圆角、无阴影。
- 颜色：奶黄底、深紫文字、朱红 CTA、翠绿面板、粉红点缀；三个强调色都用上（包豪斯的 `accentSlots` 是 3）。
- 质感：野兽派 0.6 被包豪斯上限 0.4 截断，变成 0.4 的碎笔触色斑。
- 禁忌：柔和阴影、大圆角卡片、居中堆叠的布局（包豪斯的布局禁忌），写实固有色、灰调、精细光影（野兽派的画面禁忌）。包豪斯的"渐变""装饰花纹"属于色彩画面禁忌，不带过来。
- 一句话：用包豪斯的网格装下野兽派的颜色，几何是骨架，颜色在骨架里互相碰撞。
