@gitruck/cli 1.3.5 → 1.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/AGENT.md +564 -564
  2. package/CHANGELOG.md +14 -0
  3. package/README.en.md +50 -50
  4. package/README.md +50 -50
  5. package/assets/composite-kit/kit.css +57 -57
  6. package/assets/composite-kit/kit.js +246 -246
  7. package/assets/composite-kit/stage.html +19 -2
  8. package/assets/readme/wordmark.svg +6 -6
  9. package/contracts/README.md +16 -16
  10. package/contracts/gsap-emit-v1.md +163 -163
  11. package/contracts/handoff-contracts.json +10 -10
  12. package/dist/index.js +266 -262
  13. package/docs/development.en.md +47 -47
  14. package/docs/development.md +47 -47
  15. package/docs/reference.en.md +32 -2
  16. package/docs/reference.md +32 -2
  17. package/package.json +79 -79
  18. package/skills/gtrk-ai-drama/SKILL.md +10 -10
  19. package/skills/gtrk-ai-drama/references/sparse-key-scenes.md +38 -38
  20. package/skills/gtrk-ai-drama/scripts/validate-storyboard.mjs +119 -119
  21. package/skills/gtrk-composite/SKILL.md +194 -194
  22. package/skills/gtrk-cover/SKILL.md +3 -3
  23. package/skills/gtrk-cover/references/layout-recipes.md +337 -337
  24. package/skills/gtrk-cover/references/prompt-templates.md +119 -119
  25. package/skills/gtrk-food-recap/SKILL.md +9 -9
  26. package/skills/gtrk-mg/SKILL.md +391 -391
  27. package/skills/gtrk-music-visualizer/SKILL.md +3 -3
  28. package/skills/gtrk-narration/SKILL.md +23 -23
  29. package/skills/gtrk-splitter/SKILL.md +298 -298
  30. package/skills/gtrk-splitter/references/example-visual-split.json +645 -645
  31. package/skills/gtrk-splitter/references/example-visual-split.md +439 -439
  32. package/skills/gtrk-splitter/references/field-schema.md +171 -171
  33. package/skills/gtrk-style-maker/SKILL.md +1 -1
  34. package/skills/gtrk-style-maker/references/ammo.md +16 -16
  35. package/skills/gtrk-style-maker/references/contracts-ref.md +9 -9
  36. package/skills/gtrk-style-maker/references/seeds/README.md +4 -4
  37. package/skills/gtrk-style-maker/references/seeds/seed-ecom-home-goods.md +37 -37
  38. package/skills/gtrk-style-maker/references/seeds/seed-psych-humanities.md +35 -35
  39. package/skills/gtrk-talking-head/SKILL.md +205 -205
  40. package/skills/gtrk-transcript/SKILL.md +4 -4
  41. package/skills/gtrk-transcript/agents/openai.yaml +4 -4
  42. package/skills/gtrk-travel-recap/SKILL.md +51 -51
  43. package/skills/gtrk-voiceover/SKILL.md +2 -2
package/CHANGELOG.md CHANGED
@@ -11,6 +11,20 @@
11
11
 
12
12
  ## 未发布
13
13
 
14
+ ## 1.3.7(2026-10-18)
15
+
16
+ - 新增匿名使用统计:每条命令结束时记下命令名(注册名,不含任何参数)、成败、失败时的错误码或分类、耗时区间与调用方(终端或 agent 名称),用于了解命令热度、失败率与版本铺开情况。
17
+ - 不发参数、文件名、路径、内容、API Key、错误原文,也不带设备标识。
18
+ - 首次配置时(紧跟崩溃上报那一行)告知一次,默认开;`gtrk init --no-usage-stats`、`GITRUCK_USAGE_STATS=0` 或 `DO_NOT_TRACK=1` 可关,`gtrk doctor` 显示当前状态。
19
+ - 源码运行、单测与 `CI` 环境不发送。
20
+ - 只往 `~/.gitruck/usage-queue.jsonl` 追加一行,由后台进程发送,不拖慢命令;断网时留在本机最多 7 天,联网后补发。
21
+ - 隐私政策已同步更新(3.6「使用统计」);说明见 `docs/reference.md`「使用统计与关闭方式」。
22
+
23
+ ## 1.3.6(2026-10-18)
24
+
25
+ - `gtrk composite bake` 认合成槽位的用户覆盖 `crop` / `box` / `slip_ms`:校验与输入快照和服务端参考实现同口径,出片台按「颗粒几何 → box → crop → 适配 / 构图 → 形状圆角」绘制,ref 槽取帧加 `slip_ms`;`--abi` 新增 `overrides` 能力位。**客户端 1.2.13 起会写这些覆盖**,旧版 CLI 遇到带覆盖的合成按粗剪出片并提示升级。
26
+ - 烘焙取消或出错时,满载机器上也能很快收尾:先提高被结束进程的优先级再结束,浏览器遗留子进程合并一次查询收掉,删除工作目录限时。
27
+
14
28
  ## 1.3.5(2026-10-17)
15
29
 
16
30
  - 新增合成层命令族 `gtrk composite`:`plan` / `review` / `scaffold` / `shots` 把候选窗口写进 `struct_meta.composite`(客户端大纲 CP 行),支持整片铺满 / AI 判定 / 指定区间三种入口;`build` 把场景构建成自包含合成颗粒(随包工具箱 `composite-kit@1`);`lint` 做静态校验加本机 Chrome / Edge 逐帧排版机检(穿模 / 线条穿画面 / 越界);`lay` 按自产身份幂等铺进 beat 轨最上层。新增 `/gtrk-composite` skill,口播图纸挂可选合成步。
package/README.en.md CHANGED
@@ -10,9 +10,9 @@
10
10
  <p>
11
11
  <a href="#demo">Demo</a> ·
12
12
  <a href="#quick-start">Quick start</a> ·
13
- <a href="https://hocassian.feishu.cn/wiki/HCFpwoF7SivIFbkKosgcFMcEnxk">Tutorials</a> ·
14
- <a href="https://github.com/Gitruck/ai-drama-desk">AI Drama Desk</a> ·
15
- <a href="docs/development.en.md">Develop</a> ·
13
+ <a href="https://hocassian.feishu.cn/wiki/HCFpwoF7SivIFbkKosgcFMcEnxk">Tutorials</a> ·
14
+ <a href="https://github.com/Gitruck/ai-drama-desk">AI Drama Desk</a> ·
15
+ <a href="docs/development.en.md">Develop</a> ·
16
16
  <a href="README.md">简体中文</a>
17
17
  </p>
18
18
 
@@ -157,37 +157,37 @@ flowchart LR
157
157
 
158
158
  **Conversations currently happen in your own agent; the desktop client has no built-in AI chat.** Review and refine the project in the client after your agent changes it, or render with `gtrk render`. Motion graphics that require cloud rendering are billed separately; cached renders can be reused.
159
159
 
160
- The three-format rough-cut output and the export of a fully packaged project have different support boundaries. The [workflow guide](docs/workflow.en.md) explains where each deliverable opens and which effects need rendering.
161
-
162
- After refining a `.gtrk` project in the client, use `gtrk project export --project <dir>` to produce Jianying, Premiere XML, FCPXML or OTIO while preserving the refined timeline; do not rerun `oralcut`, which rebuilds the rough cut. Export renders MG particles into the NLE package: structural export is billed per task, and particles missing from the shared cache are billed by the minute. `project init` remains zero-credit. When only `gtrk` is requested, the native `beat_track` is kept and particle rendering is skipped.
163
-
164
- ## gtrk + AI Drama Desk: from storyboard to editable clips
165
-
166
- For AI-generated story scenes, connect [Gitruck AI Drama Desk](https://github.com/Gitruck/ai-drama-desk) to the same project workflow. The responsibilities stay separate:
167
-
168
- | Component | What it does | Output |
169
- | --- | --- | --- |
170
- | `gtrk CLI` | Understands the request in your agent, orchestrates workflows and manages `.gtrk` projects | An editable video project |
171
- | `AI Drama Desk` | Imports storyboards, manages characters and styles, generates keyframes / I2V clips and exports a handoff package | A `return-v1` clip package + `manifest` |
172
- | `gtrk ai-drama lay` | Places exported clips back into the project by beat windows | A dedicated AI video track |
173
-
174
- The typical path looks like this:
175
-
176
- ```text
177
- storyboard.md → AI Drama Desk → references / keyframes / I2V → return-v1 package
178
- ↓
179
- gtrk ai-drama lay → .gtrk project → client refinement
180
- ```
181
-
182
- The desk supports mock, cloud and optional local ComfyUI engines. Start with a zero-GPU, zero-key rehearsal, then enable a real engine when needed. For an existing desk project, the CLI only needs the **API base and project ID**; it does not scan the repository:
183
-
184
- ```bash
185
- gtrk ai-drama lay --project ./my-video --desk-project <project-id>
186
- ```
187
-
188
- → [AI Drama Desk README](https://github.com/Gitruck/ai-drama-desk) · [AI drama tutorial](https://hocassian.feishu.cn/wiki/FRAKwUvBWib2vrkqZ5XcLDRqnOe) · [command reference](docs/reference.en.md#command-reference)
189
-
190
- ## Use just one tool, too
160
+ The three-format rough-cut output and the export of a fully packaged project have different support boundaries. The [workflow guide](docs/workflow.en.md) explains where each deliverable opens and which effects need rendering.
161
+
162
+ After refining a `.gtrk` project in the client, use `gtrk project export --project <dir>` to produce Jianying, Premiere XML, FCPXML or OTIO while preserving the refined timeline; do not rerun `oralcut`, which rebuilds the rough cut. Export renders MG particles into the NLE package: structural export is billed per task, and particles missing from the shared cache are billed by the minute. `project init` remains zero-credit. When only `gtrk` is requested, the native `beat_track` is kept and particle rendering is skipped.
163
+
164
+ ## gtrk + AI Drama Desk: from storyboard to editable clips
165
+
166
+ For AI-generated story scenes, connect [Gitruck AI Drama Desk](https://github.com/Gitruck/ai-drama-desk) to the same project workflow. The responsibilities stay separate:
167
+
168
+ | Component | What it does | Output |
169
+ | --- | --- | --- |
170
+ | `gtrk CLI` | Understands the request in your agent, orchestrates workflows and manages `.gtrk` projects | An editable video project |
171
+ | `AI Drama Desk` | Imports storyboards, manages characters and styles, generates keyframes / I2V clips and exports a handoff package | A `return-v1` clip package + `manifest` |
172
+ | `gtrk ai-drama lay` | Places exported clips back into the project by beat windows | A dedicated AI video track |
173
+
174
+ The typical path looks like this:
175
+
176
+ ```text
177
+ storyboard.md → AI Drama Desk → references / keyframes / I2V → return-v1 package
178
+ ↓
179
+ gtrk ai-drama lay → .gtrk project → client refinement
180
+ ```
181
+
182
+ The desk supports mock, cloud and optional local ComfyUI engines. Start with a zero-GPU, zero-key rehearsal, then enable a real engine when needed. For an existing desk project, the CLI only needs the **API base and project ID**; it does not scan the repository:
183
+
184
+ ```bash
185
+ gtrk ai-drama lay --project ./my-video --desk-project <project-id>
186
+ ```
187
+
188
+ → [AI Drama Desk README](https://github.com/Gitruck/ai-drama-desk) · [AI drama tutorial](https://hocassian.feishu.cn/wiki/FRAKwUvBWib2vrkqZ5XcLDRqnOe) · [command reference](docs/reference.en.md#command-reference)
189
+
190
+ ## Use just one tool, too
191
191
 
192
192
  | What you need | Start here |
193
193
  | --- | --- |
@@ -197,7 +197,7 @@ gtrk ai-drama lay --project ./my-video --desk-project <project-id>
197
197
  | A visual style for your show | [Style-maker Skill](skills/gtrk-style-maker/SKILL.md) |
198
198
  | Third-party animation, typography or creative Skills | [Skill map](https://hocassian.feishu.cn/wiki/SxRtwJ0G7inTbQkwckFcZmClnrd) |
199
199
 
200
- ## FAQ
200
+ ## FAQ
201
201
 
202
202
  **Do I need to code?**
203
203
 
@@ -215,21 +215,21 @@ Talking-head and long-to-short project workflows keep the original locally and u
215
215
 
216
216
  The CLI runs across platforms. The Windows client provides visual preview and refinement; the CLI can render existing projects. Jianying and Premiere support depends on the installed software and the project format.
217
217
 
218
- **Skills are missing, or a task failed. What now?**
219
-
220
- Open a new agent session and run `gtrk doctor`. Use `gtrk skills install` to refresh Skills. If a task already has an ID, recover its results before submitting it again. See [workflow and troubleshooting](docs/workflow.en.md).
221
-
222
- ## Star History
223
-
224
- <a href="https://star-history.com/#Gitruck/cli&Date">
225
- <picture>
226
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=Gitruck/cli&type=Date&theme=dark" />
227
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=Gitruck/cli&type=Date" />
228
- <img alt="gtrk CLI Star History" src="https://api.star-history.com/svg?repos=Gitruck/cli&type=Date" />
229
- </picture>
230
- </a>
231
-
232
- ## Documentation and contributions
218
+ **Skills are missing, or a task failed. What now?**
219
+
220
+ Open a new agent session and run `gtrk doctor`. Use `gtrk skills install` to refresh Skills. If a task already has an ID, recover its results before submitting it again. See [workflow and troubleshooting](docs/workflow.en.md).
221
+
222
+ ## Star History
223
+
224
+ <a href="https://star-history.com/#Gitruck/cli&Date">
225
+ <picture>
226
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=Gitruck/cli&type=Date&theme=dark" />
227
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=Gitruck/cli&type=Date" />
228
+ <img alt="gtrk CLI Star History" src="https://api.star-history.com/svg?repos=Gitruck/cli&type=Date" />
229
+ </picture>
230
+ </a>
231
+
232
+ ## Documentation and contributions
233
233
 
234
234
  [Full tutorials](https://hocassian.feishu.cn/wiki/HCFpwoF7SivIFbkKosgcFMcEnxk) · [Workflow](docs/workflow.en.md) · [Command reference](docs/reference.en.md) · [Development](docs/development.en.md) · [Changelog](CHANGELOG.md)
235
235
 
package/README.md CHANGED
@@ -10,9 +10,9 @@
10
10
  <p>
11
11
  <a href="#demo">观看演示</a> ·
12
12
  <a href="#quick-start">快速开始</a> ·
13
- <a href="https://hocassian.feishu.cn/wiki/HCFpwoF7SivIFbkKosgcFMcEnxk">使用教程</a> ·
14
- <a href="https://github.com/Gitruck/ai-drama-desk">AI Drama Desk</a> ·
15
- <a href="docs/development.md">开发文档</a> ·
13
+ <a href="https://hocassian.feishu.cn/wiki/HCFpwoF7SivIFbkKosgcFMcEnxk">使用教程</a> ·
14
+ <a href="https://github.com/Gitruck/ai-drama-desk">AI Drama Desk</a> ·
15
+ <a href="docs/development.md">开发文档</a> ·
16
16
  <a href="README.en.md">English</a>
17
17
  </p>
18
18
 
@@ -157,37 +157,37 @@ flowchart LR
157
157
 
158
158
  **当前对话入口在你自己的 Agent 中,客户端没有内置 AI 对话框。** Agent 修改工程后,在客户端查看效果、继续精修;也可以用 `gtrk render` 渲染成片。需要云端渲染的动态图会单独计费,缓存可复用。
159
159
 
160
- 粗剪阶段的三端工程,与完整包装后的导出支持范围不同;[工作流指南](docs/workflow.md)说明每种交付物在哪打开、哪些效果需要渲染。
161
-
162
- 客户端精修 `.gtrk` 后,用 `gtrk project export --project <目录>` 导出剪映、Premiere XML、FCPXML 或 OTIO,保留精修时间线;不要重跑 `oralcut`,否则会重新生成粗剪。导出会把 MG 颗粒预渲进 NLE 工程,结构导出按次计费,未命中共享缓存的颗粒按分钟计费;`project init` 仍是 0 积分。只选 `gtrk` 时会保留原生 `beat_track` 并自动跳过颗粒预渲。
163
-
164
- ## gtrk + AI Drama Desk:从分镜到可回轨片段
165
-
166
- 如果你的素材不是实拍,而是希望把一份分镜稿变成 AI 情景片段,可以把 [Gitruck AI Drama Desk](https://github.com/Gitruck/ai-drama-desk) 接到同一条工程链里。两者分工很清楚:
167
-
168
- | 组件 | 负责什么 | 产物 |
169
- | --- | --- | --- |
170
- | `gtrk CLI` | 在 Agent 中理解需求、组织工作流、管理 `.gtrk` 工程 | 可继续精修的视频工程 |
171
- | `AI Drama Desk` | 导入分镜稿、管理角色与画风、生成 keyframe / I2V 片段、导出回轨包 | `return-v1` 片段包 + `manifest` |
172
- | `gtrk ai-drama lay` | 把工作台导出的片段按 beat 区间铺回工程 | 独立 AI 视频轨 |
173
-
174
- 典型路径是:
175
-
176
- ```text
177
- 分镜稿 md → AI Drama Desk → 角色参考图 / keyframe / I2V → return-v1 导出包
178
- ↓
179
- gtrk ai-drama lay → .gtrk 工程 → 客户端精修
180
- ```
181
-
182
- 工作台支持 mock、云端出口和可选的本地 ComfyUI;你可以先零 GPU、零 Key 跑通流程,再按需要启用真实引擎。已有工作台项目时,CLI 只需要 **API 地址 + 项目 ID**,不需要扫描仓库目录:
183
-
184
- ```bash
185
- gtrk ai-drama lay --project ./my-video --desk-project <project-id>
186
- ```
187
-
188
- → [AI Drama Desk README](https://github.com/Gitruck/ai-drama-desk) · [AI 漫剧教程](https://hocassian.feishu.cn/wiki/FRAKwUvBWib2vrkqZ5XcLDRqnOe) · [命令参考](docs/reference.md#命令参考)
189
-
190
- ## 成片之外,也能只做一件事
160
+ 粗剪阶段的三端工程,与完整包装后的导出支持范围不同;[工作流指南](docs/workflow.md)说明每种交付物在哪打开、哪些效果需要渲染。
161
+
162
+ 客户端精修 `.gtrk` 后,用 `gtrk project export --project <目录>` 导出剪映、Premiere XML、FCPXML 或 OTIO,保留精修时间线;不要重跑 `oralcut`,否则会重新生成粗剪。导出会把 MG 颗粒预渲进 NLE 工程,结构导出按次计费,未命中共享缓存的颗粒按分钟计费;`project init` 仍是 0 积分。只选 `gtrk` 时会保留原生 `beat_track` 并自动跳过颗粒预渲。
163
+
164
+ ## gtrk + AI Drama Desk:从分镜到可回轨片段
165
+
166
+ 如果你的素材不是实拍,而是希望把一份分镜稿变成 AI 情景片段,可以把 [Gitruck AI Drama Desk](https://github.com/Gitruck/ai-drama-desk) 接到同一条工程链里。两者分工很清楚:
167
+
168
+ | 组件 | 负责什么 | 产物 |
169
+ | --- | --- | --- |
170
+ | `gtrk CLI` | 在 Agent 中理解需求、组织工作流、管理 `.gtrk` 工程 | 可继续精修的视频工程 |
171
+ | `AI Drama Desk` | 导入分镜稿、管理角色与画风、生成 keyframe / I2V 片段、导出回轨包 | `return-v1` 片段包 + `manifest` |
172
+ | `gtrk ai-drama lay` | 把工作台导出的片段按 beat 区间铺回工程 | 独立 AI 视频轨 |
173
+
174
+ 典型路径是:
175
+
176
+ ```text
177
+ 分镜稿 md → AI Drama Desk → 角色参考图 / keyframe / I2V → return-v1 导出包
178
+ ↓
179
+ gtrk ai-drama lay → .gtrk 工程 → 客户端精修
180
+ ```
181
+
182
+ 工作台支持 mock、云端出口和可选的本地 ComfyUI;你可以先零 GPU、零 Key 跑通流程,再按需要启用真实引擎。已有工作台项目时,CLI 只需要 **API 地址 + 项目 ID**,不需要扫描仓库目录:
183
+
184
+ ```bash
185
+ gtrk ai-drama lay --project ./my-video --desk-project <project-id>
186
+ ```
187
+
188
+ → [AI Drama Desk README](https://github.com/Gitruck/ai-drama-desk) · [AI 漫剧教程](https://hocassian.feishu.cn/wiki/FRAKwUvBWib2vrkqZ5XcLDRqnOe) · [命令参考](docs/reference.md#命令参考)
189
+
190
+ ## 成片之外,也能只做一件事
191
191
 
192
192
  | 想做什么 | 从这里开始 |
193
193
  | --- | --- |
@@ -197,7 +197,7 @@ gtrk ai-drama lay --project ./my-video --desk-project <project-id>
197
197
  | 给自己的栏目建立视觉风格 | [风格体系 Skill](skills/gtrk-style-maker/SKILL.md) |
198
198
  | 接入第三方动画、排版或创作 Skills | [Skill 地图](https://hocassian.feishu.cn/wiki/SxRtwJ0G7inTbQkwckFcZmClnrd) |
199
199
 
200
- ## 常见问题
200
+ ## 常见问题
201
201
 
202
202
  **需要会写代码吗?**
203
203
 
@@ -215,21 +215,21 @@ CLI 代码采用 MIT 许可证;同合云能力按对应规则计费,你使
215
215
 
216
216
  CLI 可以跨平台执行。Windows 客户端用于可视化预览与精修;已有工程也可通过 CLI 渲染。剪映、Premiere 的使用取决于对应软件和工程格式的支持情况。
217
217
 
218
- **安装后找不到 Skills,或任务出错怎么办?**
219
-
220
- 重新打开 Agent 会话,运行 `gtrk doctor` 检查环境;补装用 `gtrk skills install`。任务已有 ID 时优先恢复结果,避免重新提交云端任务。详见[工作流与排障](docs/workflow.md)。
221
-
222
- ## Star History
223
-
224
- <a href="https://star-history.com/#Gitruck/cli&Date">
225
- <picture>
226
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=Gitruck/cli&type=Date&theme=dark" />
227
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=Gitruck/cli&type=Date" />
228
- <img alt="gtrk CLI Star History" src="https://api.star-history.com/svg?repos=Gitruck/cli&type=Date" />
229
- </picture>
230
- </a>
231
-
232
- ## 文档与参与
218
+ **安装后找不到 Skills,或任务出错怎么办?**
219
+
220
+ 重新打开 Agent 会话,运行 `gtrk doctor` 检查环境;补装用 `gtrk skills install`。任务已有 ID 时优先恢复结果,避免重新提交云端任务。详见[工作流与排障](docs/workflow.md)。
221
+
222
+ ## Star History
223
+
224
+ <a href="https://star-history.com/#Gitruck/cli&Date">
225
+ <picture>
226
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=Gitruck/cli&type=Date&theme=dark" />
227
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=Gitruck/cli&type=Date" />
228
+ <img alt="gtrk CLI Star History" src="https://api.star-history.com/svg?repos=Gitruck/cli&type=Date" />
229
+ </picture>
230
+ </a>
231
+
232
+ ## 文档与参与
233
233
 
234
234
  [完整教程](https://hocassian.feishu.cn/wiki/HCFpwoF7SivIFbkKosgcFMcEnxk) · [工作流](docs/workflow.md) · [命令参考](docs/reference.md) · [开发文档](docs/development.md) · [更新日志](CHANGELOG.md)
235
235
 
@@ -1,57 +1,57 @@
1
- /* 合成颗粒工具箱 composite-kit@1 的公共样式(构建时内联)。
2
- * 中性:配色、字体、纹理一律走变量,由栏目 / 工程风格(composite/theme.css,构建时接在本文件之后)覆盖。
3
- * 变量:--bg 底色 / --bg2 次底色 / --ink 正文 / --muted 次要文字 / --line 分隔线 /
4
- * --accent 强调 / --accent2 / --accent3 辅助色 / --alert 警示 / --font 正文字体 / --font-serif 标题字体。 */
5
- html, body { margin: 0; height: 100%; overflow: hidden; background: transparent; }
6
- #stage {
7
- position: absolute; left: 0; top: 0; width: 1920px; height: 1080px; transform-origin: 0 0; overflow: hidden;
8
- --bg: #F4F4F2; --bg2: #E6E6E2; --ink: #1D1D1F; --muted: #6B6B70; --line: #CFCFCB;
9
- --accent: #2F6FDE; --accent2: #2E8B57; --accent3: #4A5568; --alert: #D14343;
10
- --font: "Noto Sans SC", "Source Han Sans CN", "Microsoft YaHei", "PingFang SC", sans-serif;
11
- --font-serif: "Noto Serif SC", "Source Han Serif SC", "Source Han Serif", "SimSun", serif;
12
- font-family: var(--font); color: var(--ink);
13
- }
14
- #stage > *, #stage .abs { position: absolute; box-sizing: border-box; }
15
- [data-slot] { visibility: hidden !important; }
16
- .serif { font-family: var(--font-serif); }
17
- .bed { left: 0; top: 0; width: 1920px; height: 1080px; background: var(--bg); }
18
- .bed.dark { background: radial-gradient(ellipse at 30% 35%, #2A2A2E 0%, #141416 70%); }
19
- /* 槽位装饰:阴影在下(back),描边在上(front)。描边只给最上层的画面——下层画面的 front 描边会压到上层画面上 */
20
- .shadow { border-radius: 18px; box-shadow: 0 18px 50px rgba(0, 0, 0, .22), 0 3px 10px rgba(0, 0, 0, .12); background: #000; }
21
- .shadow.round { border-radius: 50%; }
22
- .frame { border: 3px solid var(--ink); border-radius: 18px; }
23
- .frame.round { border-radius: 50%; }
24
- .frame.thin { border-width: 2px; }
25
- .frame.light { border-color: rgba(255, 255, 255, .85); }
26
- .ring { border: 4px solid var(--ink); border-radius: 50%; }
27
- .ring.light { border-color: rgba(255, 255, 255, .9); }
28
- /* 字幕:颗粒接管字幕后自己排 */
29
- .cap {
30
- left: 160px; width: 1600px; top: 958px; height: 70px; text-align: center; white-space: nowrap;
31
- font-size: 44px; font-weight: 600; letter-spacing: .02em; color: var(--ink); line-height: 70px;
32
- }
33
- .cap b { color: var(--accent); font-weight: 800; }
34
- .cap.dark { color: #fff; text-shadow: 0 2px 12px rgba(0, 0, 0, .55); }
35
- .cap.dark b { color: var(--accent); }
36
- /* 文字 */
37
- .tag { font-size: 26px; letter-spacing: .2em; color: var(--muted); white-space: nowrap; }
38
- .kicker { font-size: 28px; font-weight: 700; letter-spacing: .28em; color: var(--accent); white-space: nowrap; }
39
- .h1 { font-size: 96px; font-weight: 900; line-height: 1.12; white-space: nowrap; }
40
- .h2 { font-size: 64px; font-weight: 900; line-height: 1.2; white-space: nowrap; }
41
- .h3 { font-size: 44px; font-weight: 700; line-height: 1.3; white-space: nowrap; }
42
- .body { font-size: 34px; line-height: 1.5; color: var(--ink); }
43
- .num { font-size: 30px; font-weight: 800; color: var(--accent); letter-spacing: .1em; }
44
- .pill { height: 54px; padding: 0 26px; border-radius: 27px; font-size: 28px; font-weight: 700; line-height: 54px; white-space: nowrap; }
45
- .rule { height: 3px; background: var(--ink); }
46
- .card { background: #FFFFFF; border-radius: 22px; box-shadow: 0 10px 30px rgba(0, 0, 0, .08); }
47
- .stamp { font-size: 72px; font-weight: 900; color: var(--alert); border: 6px solid var(--alert); border-radius: 14px; padding: 6px 26px; white-space: nowrap; }
48
- /* 对话气泡(字幕变成一串对话时用) */
49
- .bubble {
50
- height: 76px; padding: 0 30px; border-radius: 38px 38px 10px 38px; background: #FFFFFF; font-size: 32px; line-height: 76px;
51
- white-space: nowrap; color: var(--ink); box-shadow: 0 6px 18px rgba(0, 0, 0, .08); border: 2px solid transparent;
52
- }
53
- .bubble b { color: var(--accent); font-weight: 700; }
54
- .bubble.now { border-color: var(--accent); }
55
- /* 画面标签:贴在画面左上角,说明这张画面对应台词里的哪个词 */
56
- .ptag { height: 46px; padding: 0 20px; border-radius: 23px; background: rgba(20, 20, 22, .74); color: #fff; font-size: 26px; font-weight: 700; line-height: 46px; letter-spacing: .06em; white-space: nowrap; }
57
- .ptag.warm { background: var(--accent); }
1
+ /* 合成颗粒工具箱 composite-kit@1 的公共样式(构建时内联)。
2
+ * 中性:配色、字体、纹理一律走变量,由栏目 / 工程风格(composite/theme.css,构建时接在本文件之后)覆盖。
3
+ * 变量:--bg 底色 / --bg2 次底色 / --ink 正文 / --muted 次要文字 / --line 分隔线 /
4
+ * --accent 强调 / --accent2 / --accent3 辅助色 / --alert 警示 / --font 正文字体 / --font-serif 标题字体。 */
5
+ html, body { margin: 0; height: 100%; overflow: hidden; background: transparent; }
6
+ #stage {
7
+ position: absolute; left: 0; top: 0; width: 1920px; height: 1080px; transform-origin: 0 0; overflow: hidden;
8
+ --bg: #F4F4F2; --bg2: #E6E6E2; --ink: #1D1D1F; --muted: #6B6B70; --line: #CFCFCB;
9
+ --accent: #2F6FDE; --accent2: #2E8B57; --accent3: #4A5568; --alert: #D14343;
10
+ --font: "Noto Sans SC", "Source Han Sans CN", "Microsoft YaHei", "PingFang SC", sans-serif;
11
+ --font-serif: "Noto Serif SC", "Source Han Serif SC", "Source Han Serif", "SimSun", serif;
12
+ font-family: var(--font); color: var(--ink);
13
+ }
14
+ #stage > *, #stage .abs { position: absolute; box-sizing: border-box; }
15
+ [data-slot] { visibility: hidden !important; }
16
+ .serif { font-family: var(--font-serif); }
17
+ .bed { left: 0; top: 0; width: 1920px; height: 1080px; background: var(--bg); }
18
+ .bed.dark { background: radial-gradient(ellipse at 30% 35%, #2A2A2E 0%, #141416 70%); }
19
+ /* 槽位装饰:阴影在下(back),描边在上(front)。描边只给最上层的画面——下层画面的 front 描边会压到上层画面上 */
20
+ .shadow { border-radius: 18px; box-shadow: 0 18px 50px rgba(0, 0, 0, .22), 0 3px 10px rgba(0, 0, 0, .12); background: #000; }
21
+ .shadow.round { border-radius: 50%; }
22
+ .frame { border: 3px solid var(--ink); border-radius: 18px; }
23
+ .frame.round { border-radius: 50%; }
24
+ .frame.thin { border-width: 2px; }
25
+ .frame.light { border-color: rgba(255, 255, 255, .85); }
26
+ .ring { border: 4px solid var(--ink); border-radius: 50%; }
27
+ .ring.light { border-color: rgba(255, 255, 255, .9); }
28
+ /* 字幕:颗粒接管字幕后自己排 */
29
+ .cap {
30
+ left: 160px; width: 1600px; top: 958px; height: 70px; text-align: center; white-space: nowrap;
31
+ font-size: 44px; font-weight: 600; letter-spacing: .02em; color: var(--ink); line-height: 70px;
32
+ }
33
+ .cap b { color: var(--accent); font-weight: 800; }
34
+ .cap.dark { color: #fff; text-shadow: 0 2px 12px rgba(0, 0, 0, .55); }
35
+ .cap.dark b { color: var(--accent); }
36
+ /* 文字 */
37
+ .tag { font-size: 26px; letter-spacing: .2em; color: var(--muted); white-space: nowrap; }
38
+ .kicker { font-size: 28px; font-weight: 700; letter-spacing: .28em; color: var(--accent); white-space: nowrap; }
39
+ .h1 { font-size: 96px; font-weight: 900; line-height: 1.12; white-space: nowrap; }
40
+ .h2 { font-size: 64px; font-weight: 900; line-height: 1.2; white-space: nowrap; }
41
+ .h3 { font-size: 44px; font-weight: 700; line-height: 1.3; white-space: nowrap; }
42
+ .body { font-size: 34px; line-height: 1.5; color: var(--ink); }
43
+ .num { font-size: 30px; font-weight: 800; color: var(--accent); letter-spacing: .1em; }
44
+ .pill { height: 54px; padding: 0 26px; border-radius: 27px; font-size: 28px; font-weight: 700; line-height: 54px; white-space: nowrap; }
45
+ .rule { height: 3px; background: var(--ink); }
46
+ .card { background: #FFFFFF; border-radius: 22px; box-shadow: 0 10px 30px rgba(0, 0, 0, .08); }
47
+ .stamp { font-size: 72px; font-weight: 900; color: var(--alert); border: 6px solid var(--alert); border-radius: 14px; padding: 6px 26px; white-space: nowrap; }
48
+ /* 对话气泡(字幕变成一串对话时用) */
49
+ .bubble {
50
+ height: 76px; padding: 0 30px; border-radius: 38px 38px 10px 38px; background: #FFFFFF; font-size: 32px; line-height: 76px;
51
+ white-space: nowrap; color: var(--ink); box-shadow: 0 6px 18px rgba(0, 0, 0, .08); border: 2px solid transparent;
52
+ }
53
+ .bubble b { color: var(--accent); font-weight: 700; }
54
+ .bubble.now { border-color: var(--accent); }
55
+ /* 画面标签:贴在画面左上角,说明这张画面对应台词里的哪个词 */
56
+ .ptag { height: 46px; padding: 0 20px; border-radius: 23px; background: rgba(20, 20, 22, .74); color: #fff; font-size: 26px; font-weight: 700; line-height: 46px; letter-spacing: .06em; white-space: nowrap; }
57
+ .ptag.warm { background: var(--accent); }