@lemoncat7/dsh-partner 2.8.0 → 2.8.2

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 (793) hide show
  1. package/docs/THIRD_PARTY_LICENSES.md +10 -0
  2. package/docs/blocked-delivery-recovery.md +7 -0
  3. package/docs/concern-attention.md +19 -0
  4. package/docs/observation-contract.md +11 -0
  5. package/docs/releases/2.8.1.md +11 -0
  6. package/docs/releases/2.8.2.md +7 -0
  7. package/lib/agent-runtime.d.ts +7 -0
  8. package/lib/agent-runtime.d.ts.map +1 -1
  9. package/lib/agent-runtime.js +110 -32
  10. package/lib/agent-runtime.js.map +1 -1
  11. package/lib/api.js +28 -6
  12. package/lib/api.js.map +1 -1
  13. package/lib/autonomy.d.ts.map +1 -1
  14. package/lib/autonomy.js +5 -0
  15. package/lib/autonomy.js.map +1 -1
  16. package/lib/channel-message.d.ts +2 -0
  17. package/lib/channel-message.d.ts.map +1 -1
  18. package/lib/channel-message.js.map +1 -1
  19. package/lib/channels/manager.d.ts.map +1 -1
  20. package/lib/channels/manager.js +4 -3
  21. package/lib/channels/manager.js.map +1 -1
  22. package/lib/channels/notification-delivery.d.ts.map +1 -1
  23. package/lib/channels/notification-delivery.js +10 -0
  24. package/lib/channels/notification-delivery.js.map +1 -1
  25. package/lib/channels/weixin/connect.d.ts.map +1 -1
  26. package/lib/client-api.d.ts +7 -2
  27. package/lib/client-api.d.ts.map +1 -1
  28. package/lib/client-api.js +8 -1
  29. package/lib/client-api.js.map +1 -1
  30. package/lib/client.d.ts.map +1 -1
  31. package/lib/client.js +2115 -1884
  32. package/lib/client.js.map +4 -4
  33. package/lib/collaboration/composition.js +1 -1
  34. package/lib/collaboration/composition.js.map +1 -1
  35. package/lib/concern-attention.d.ts +19 -0
  36. package/lib/concern-attention.d.ts.map +1 -0
  37. package/lib/concern-attention.js +36 -0
  38. package/lib/concern-attention.js.map +1 -0
  39. package/lib/concern-domain.d.ts +7 -1
  40. package/lib/concern-domain.d.ts.map +1 -1
  41. package/lib/concern-domain.js +4 -0
  42. package/lib/concern-domain.js.map +1 -1
  43. package/lib/concern-execution-notes.d.ts +18 -0
  44. package/lib/concern-execution-notes.d.ts.map +1 -0
  45. package/lib/concern-execution-notes.js +41 -0
  46. package/lib/concern-execution-notes.js.map +1 -0
  47. package/lib/concern-execution-receipt.d.ts +4 -0
  48. package/lib/concern-execution-receipt.d.ts.map +1 -0
  49. package/lib/concern-execution-receipt.js +28 -0
  50. package/lib/concern-execution-receipt.js.map +1 -0
  51. package/lib/concern-execution.d.ts +30 -0
  52. package/lib/concern-execution.d.ts.map +1 -0
  53. package/lib/concern-execution.js +86 -0
  54. package/lib/concern-execution.js.map +1 -0
  55. package/lib/concern-management-tool.d.ts.map +1 -1
  56. package/lib/concern-management-tool.js +21 -19
  57. package/lib/concern-management-tool.js.map +1 -1
  58. package/lib/concern-note-source.d.ts +7 -0
  59. package/lib/concern-note-source.d.ts.map +1 -0
  60. package/lib/concern-note-source.js +25 -0
  61. package/lib/concern-note-source.js.map +1 -0
  62. package/lib/concern-resources.d.ts +27 -0
  63. package/lib/concern-resources.d.ts.map +1 -0
  64. package/lib/concern-resources.js +36 -0
  65. package/lib/concern-resources.js.map +1 -0
  66. package/lib/concern-sources.d.ts +1 -1
  67. package/lib/concern-sources.d.ts.map +1 -1
  68. package/lib/concern-store.d.ts +9 -1
  69. package/lib/concern-store.d.ts.map +1 -1
  70. package/lib/concern-store.js +111 -34
  71. package/lib/concern-store.js.map +1 -1
  72. package/lib/concern-tool.d.ts +1 -0
  73. package/lib/concern-tool.d.ts.map +1 -1
  74. package/lib/concern-tool.js +8 -4
  75. package/lib/concern-tool.js.map +1 -1
  76. package/lib/decision/conversation.d.ts +11 -0
  77. package/lib/decision/conversation.d.ts.map +1 -0
  78. package/lib/decision/conversation.js +52 -0
  79. package/lib/decision/conversation.js.map +1 -0
  80. package/lib/decision/events.d.ts +16 -0
  81. package/lib/decision/events.d.ts.map +1 -0
  82. package/lib/decision/events.js +9 -0
  83. package/lib/decision/events.js.map +1 -0
  84. package/lib/domain.d.ts +2 -0
  85. package/lib/domain.d.ts.map +1 -1
  86. package/lib/domain.js.map +1 -1
  87. package/lib/heartbeat.d.ts +12 -10
  88. package/lib/heartbeat.d.ts.map +1 -1
  89. package/lib/heartbeat.js +54 -26
  90. package/lib/heartbeat.js.map +1 -1
  91. package/lib/index.d.ts.map +1 -1
  92. package/lib/index.js +3 -0
  93. package/lib/index.js.map +1 -1
  94. package/lib/memory-prompt-context.js +1 -0
  95. package/lib/memory-prompt-context.js.map +1 -1
  96. package/lib/memory-reflection.js +1 -1
  97. package/lib/observation-contract.d.ts +9 -0
  98. package/lib/observation-contract.d.ts.map +1 -0
  99. package/lib/observation-contract.js +19 -0
  100. package/lib/observation-contract.js.map +1 -0
  101. package/lib/observation-executor.d.ts +5 -0
  102. package/lib/observation-executor.d.ts.map +1 -1
  103. package/lib/observation-executor.js +17 -1
  104. package/lib/observation-executor.js.map +1 -1
  105. package/lib/observation-loop.d.ts +5 -0
  106. package/lib/observation-loop.d.ts.map +1 -1
  107. package/lib/observation-loop.js +36 -3
  108. package/lib/observation-loop.js.map +1 -1
  109. package/lib/observation-sources.d.ts +14 -0
  110. package/lib/observation-sources.d.ts.map +1 -0
  111. package/lib/observation-sources.js +12 -0
  112. package/lib/observation-sources.js.map +1 -0
  113. package/lib/requirements/service.d.ts.map +1 -1
  114. package/lib/requirements/service.js +2 -0
  115. package/lib/requirements/service.js.map +1 -1
  116. package/lib/requirements/worker.d.ts.map +1 -1
  117. package/lib/requirements/worker.js +1 -0
  118. package/lib/requirements/worker.js.map +1 -1
  119. package/lib/scheduler/continuations.d.ts.map +1 -1
  120. package/lib/scheduler/continuations.js +17 -3
  121. package/lib/scheduler/continuations.js.map +1 -1
  122. package/lib/skills/builtin.d.ts.map +1 -1
  123. package/lib/skills/builtin.js +2 -0
  124. package/lib/skills/builtin.js.map +1 -1
  125. package/lib/skills/drama-builtin.d.ts.map +1 -1
  126. package/lib/skills/drama-builtin.js +13 -1
  127. package/lib/skills/drama-builtin.js.map +1 -1
  128. package/lib/skills/story-builtins.d.ts +3 -0
  129. package/lib/skills/story-builtins.d.ts.map +1 -0
  130. package/lib/skills/story-builtins.js +72 -0
  131. package/lib/skills/story-builtins.js.map +1 -0
  132. package/lib/skills/viora-canvas-builtin.d.ts.map +1 -1
  133. package/lib/skills/viora-canvas-builtin.js +12 -1
  134. package/lib/skills/viora-canvas-builtin.js.map +1 -1
  135. package/lib/snapshot-cache.d.ts +7 -0
  136. package/lib/snapshot-cache.d.ts.map +1 -0
  137. package/lib/snapshot-cache.js +26 -0
  138. package/lib/snapshot-cache.js.map +1 -0
  139. package/lib/tasks/result.js +1 -1
  140. package/lib/tasks/result.js.map +1 -1
  141. package/lib/ui/memory/concern-board.d.ts +1 -1
  142. package/lib/ui/memory/concern-board.d.ts.map +1 -1
  143. package/lib/ui/memory/concern-board.js +12 -6
  144. package/lib/ui/memory/concern-board.js.map +1 -1
  145. package/lib/ui/memory/concern-deletion.d.ts.map +1 -1
  146. package/lib/ui/memory/concern-deletion.js +2 -1
  147. package/lib/ui/memory/concern-deletion.js.map +1 -1
  148. package/lib/ui/memory/concern-editor.d.ts.map +1 -1
  149. package/lib/ui/memory/concern-editor.js +5 -3
  150. package/lib/ui/memory/concern-editor.js.map +1 -1
  151. package/lib/ui/memory/concern-execution-fields.d.ts +7 -0
  152. package/lib/ui/memory/concern-execution-fields.d.ts.map +1 -0
  153. package/lib/ui/memory/concern-execution-fields.js +8 -0
  154. package/lib/ui/memory/concern-execution-fields.js.map +1 -0
  155. package/lib/ui/memory/concern-feedback.d.ts +15 -0
  156. package/lib/ui/memory/concern-feedback.d.ts.map +1 -0
  157. package/lib/ui/memory/concern-feedback.js +13 -0
  158. package/lib/ui/memory/concern-feedback.js.map +1 -0
  159. package/lib/ui/memory/concern-panel.d.ts.map +1 -1
  160. package/lib/ui/memory/concern-panel.js +11 -3
  161. package/lib/ui/memory/concern-panel.js.map +1 -1
  162. package/package.json +6 -1
  163. package/resources/skills/novel-game-creation/manifest.json +393 -0
  164. package/resources/skills/novel-game-creation/upstream/LICENSE +21 -0
  165. package/resources/skills/novel-game-creation/upstream/README.md +420 -0
  166. package/resources/skills/novel-game-creation/upstream/README_ZH.md +421 -0
  167. package/resources/skills/novel-game-creation/upstream/VERSION +1 -0
  168. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/BUILD_BRIEF.md +219 -0
  169. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/.vercelignore +3 -0
  170. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/RUN.md +138 -0
  171. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/bg/compound_new_guofeng.webp +0 -0
  172. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/finale/fate_coda.webp +0 -0
  173. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/finale/meng.webp +0 -0
  174. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/finale/pan.webp +0 -0
  175. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/finale/pinger.webp +0 -0
  176. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/finale/xuee.webp +0 -0
  177. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/finale/yue.webp +0 -0
  178. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_accord_five.webp +0 -0
  179. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_afterglow_five.webp +0 -0
  180. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_alliance.webp +0 -0
  181. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/group/public_day10.webp +0 -0
  182. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/group/public_day15.webp +0 -0
  183. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/group/public_day5.webp +0 -0
  184. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/group/title_new_guofeng.webp +0 -0
  185. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/joint/pan_pinger.webp +0 -0
  186. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/joint/pan_xuee.webp +0 -0
  187. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/joint/yue_meng.webp +0 -0
  188. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pan.webp +0 -0
  189. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pinger.webp +0 -0
  190. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/meng/explicit.webp +0 -0
  191. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/meng/prelude.webp +0 -0
  192. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/milestone/meng.webp +0 -0
  193. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/milestone/pan.webp +0 -0
  194. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/milestone/pinger.webp +0 -0
  195. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/milestone/xuee.webp +0 -0
  196. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/milestone/yue.webp +0 -0
  197. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/pan/explicit.webp +0 -0
  198. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/pan/prelude.webp +0 -0
  199. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/pinger/explicit.webp +0 -0
  200. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/pinger/prelude.webp +0 -0
  201. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/xuee/explicit.webp +0 -0
  202. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/xuee/prelude.webp +0 -0
  203. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/yue/explicit.webp +0 -0
  204. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/cg/yue/prelude.webp +0 -0
  205. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/heroine/meng/night.webp +0 -0
  206. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/heroine/pan/night.webp +0 -0
  207. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/heroine/pinger/night.webp +0 -0
  208. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/heroine/xuee/night.webp +0 -0
  209. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/heroine/yue/night.webp +0 -0
  210. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/household/li_jiaoer.webp +0 -0
  211. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/assets/scene/gate_collector.webp +0 -0
  212. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/css/new-guofeng.css +1494 -0
  213. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/css/style.css +2508 -0
  214. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/index.html +18 -0
  215. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/js/assets.js +147 -0
  216. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/js/audio.js +332 -0
  217. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/js/data.js +7470 -0
  218. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/js/engine.js +13066 -0
  219. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/js/main.js +3051 -0
  220. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/js/text.js +32 -0
  221. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/package.json +11 -0
  222. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/app/vercel.json +23 -0
  223. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/build/art/generated-art.json +161 -0
  224. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/example.json +12 -0
  225. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/qa/README.md +26 -0
  226. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/qa/playable-model.json +99 -0
  227. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/qa/verification.json +41 -0
  228. package/resources/skills/novel-game-creation/upstream/examples/jin-ping-mei/qa/verify_playable_model.mjs +152 -0
  229. package/resources/skills/novel-game-creation/upstream/manifest.json +498 -0
  230. package/resources/skills/novel-game-creation/upstream/skills/game-art-direction/SKILL.md +47 -0
  231. package/resources/skills/novel-game-creation/upstream/skills/game-art-direction/agents/openai.yaml +4 -0
  232. package/resources/skills/novel-game-creation/upstream/skills/game-art-direction/references/art-direction-method.md +40 -0
  233. package/resources/skills/novel-game-creation/upstream/skills/game-build/SKILL.md +66 -0
  234. package/resources/skills/novel-game-creation/upstream/skills/game-build/agents/openai.yaml +4 -0
  235. package/resources/skills/novel-game-creation/upstream/skills/game-build/references/blender-asset-workflow.md +24 -0
  236. package/resources/skills/novel-game-creation/upstream/skills/game-build/references/build-brief-contract.md +72 -0
  237. package/resources/skills/novel-game-creation/upstream/skills/game-build/references/generative-media-pipeline.md +25 -0
  238. package/resources/skills/novel-game-creation/upstream/skills/game-build/references/playable-model-contract.md +46 -0
  239. package/resources/skills/novel-game-creation/upstream/skills/game-build/references/tts-production-contract.md +23 -0
  240. package/resources/skills/novel-game-creation/upstream/skills/game-concept/SKILL.md +54 -0
  241. package/resources/skills/novel-game-creation/upstream/skills/game-concept/agents/openai.yaml +4 -0
  242. package/resources/skills/novel-game-creation/upstream/skills/game-concept/references/concept-method.md +47 -0
  243. package/resources/skills/novel-game-creation/upstream/skills/game-qa/SKILL.md +39 -0
  244. package/resources/skills/novel-game-creation/upstream/skills/game-qa/agents/openai.yaml +4 -0
  245. package/resources/skills/novel-game-creation/upstream/skills/game-qa/references/qa-contract.md +66 -0
  246. package/resources/skills/novel-game-creation/upstream/skills/game-qa/references/test-design-method.md +49 -0
  247. package/resources/skills/novel-game-creation/upstream/skills/game-world-design/SKILL.md +50 -0
  248. package/resources/skills/novel-game-creation/upstream/skills/game-world-design/agents/openai.yaml +4 -0
  249. package/resources/skills/novel-game-creation/upstream/skills/game-world-design/references/narrative-design-method.md +35 -0
  250. package/resources/skills/novel-game-creation/upstream/skills/game-world-design/references/numeric-design-method.md +22 -0
  251. package/resources/skills/novel-game-creation/upstream/skills/game-world-design/references/world-design-method.md +57 -0
  252. package/resources/skills/novel-game-creation/upstream/skills/novel-game-analyze/SKILL.md +68 -0
  253. package/resources/skills/novel-game-creation/upstream/skills/novel-game-analyze/agents/openai.yaml +4 -0
  254. package/resources/skills/novel-game-creation/upstream/skills/novel-game-analyze/references/gameability-protocol.md +65 -0
  255. package/resources/skills/novel-game-creation/upstream/skills/novel-to-game/SKILL.md +54 -0
  256. package/resources/skills/novel-game-creation/upstream/skills/novel-to-game/agents/openai.yaml +4 -0
  257. package/resources/skills/novel-game-creation/upstream/skills/novel-to-game/references/intake-method.md +50 -0
  258. package/resources/skills/novel-game-creation/upstream/skills/novel-to-game/references/pipeline-contract.md +60 -0
  259. package/resources/skills/story-creation/manifest.json +1477 -0
  260. package/resources/skills/story-creation/upstream/LICENSE.upstream +21 -0
  261. package/resources/skills/story-creation/upstream/manifest.json +1861 -0
  262. package/resources/skills/story-creation/upstream/roles/chapter-extractor.md +254 -0
  263. package/resources/skills/story-creation/upstream/roles/character-designer.md +168 -0
  264. package/resources/skills/story-creation/upstream/roles/consistency-checker.md +192 -0
  265. package/resources/skills/story-creation/upstream/roles/narrative-writer.md +105 -0
  266. package/resources/skills/story-creation/upstream/roles/story-architect.md +139 -0
  267. package/resources/skills/story-creation/upstream/roles/story-explorer.md +262 -0
  268. package/resources/skills/story-creation/upstream/roles/story-researcher.md +303 -0
  269. package/resources/skills/story-creation/upstream/skills/browser-cdp/SKILL.md +175 -0
  270. package/resources/skills/story-creation/upstream/skills/story/SKILL.md +129 -0
  271. package/resources/skills/story-creation/upstream/skills/story/VERSION +1 -0
  272. package/resources/skills/story-creation/upstream/skills/story/references/author-memory-maintenance.md +75 -0
  273. package/resources/skills/story-creation/upstream/skills/story/references/author-memory.md +117 -0
  274. package/resources/skills/story-creation/upstream/skills/story/scripts/author_memory_commit.py +1635 -0
  275. package/resources/skills/story-creation/upstream/skills/story-cover/SKILL.md +336 -0
  276. package/resources/skills/story-creation/upstream/skills/story-cover/references/cover-styles.md +210 -0
  277. package/resources/skills/story-creation/upstream/skills/story-deslop/SKILL.md +274 -0
  278. package/resources/skills/story-creation/upstream/skills/story-deslop/references/agent-calls.md +5 -0
  279. package/resources/skills/story-creation/upstream/skills/story-deslop/references/anti-ai-writing.md +556 -0
  280. package/resources/skills/story-creation/upstream/skills/story-deslop/references/author-memory-maintenance.md +75 -0
  281. package/resources/skills/story-creation/upstream/skills/story-deslop/references/author-memory.md +117 -0
  282. package/resources/skills/story-creation/upstream/skills/story-deslop/references/banned-words.md +151 -0
  283. package/resources/skills/story-creation/upstream/skills/story-deslop/references/deslop-gates.md +171 -0
  284. package/resources/skills/story-creation/upstream/skills/story-deslop/references/style-resolution.md +27 -0
  285. package/resources/skills/story-creation/upstream/skills/story-deslop/scripts/author_memory_commit.py +1635 -0
  286. package/resources/skills/story-creation/upstream/skills/story-deslop/scripts/check-ai-patterns.js +1586 -0
  287. package/resources/skills/story-creation/upstream/skills/story-deslop/scripts/check-degeneration.js +349 -0
  288. package/resources/skills/story-creation/upstream/skills/story-deslop/scripts/normalize-punctuation.js +415 -0
  289. package/resources/skills/story-creation/upstream/skills/story-deslop/scripts/style-whitelist.js +39 -0
  290. package/resources/skills/story-creation/upstream/skills/story-import/SKILL.md +127 -0
  291. package/resources/skills/story-creation/upstream/skills/story-import/references/character-state-reverse.md +82 -0
  292. package/resources/skills/story-creation/upstream/skills/story-import/references/deep-analysis.md +47 -0
  293. package/resources/skills/story-creation/upstream/skills/story-import/references/format-and-structure.md +168 -0
  294. package/resources/skills/story-creation/upstream/skills/story-import/references/import-report.md +64 -0
  295. package/resources/skills/story-creation/upstream/skills/story-import/references/import-special-cases.md +34 -0
  296. package/resources/skills/story-creation/upstream/skills/story-import/references/import-tracking.md +95 -0
  297. package/resources/skills/story-creation/upstream/skills/story-import/references/length-routing.md +134 -0
  298. package/resources/skills/story-creation/upstream/skills/story-import/references/outline-reverse-rules.md +79 -0
  299. package/resources/skills/story-creation/upstream/skills/story-import/references/outline-reverse.md +24 -0
  300. package/resources/skills/story-creation/upstream/skills/story-import/references/state-tracking.md +43 -0
  301. package/resources/skills/story-creation/upstream/skills/story-import/references/structure-mapping-long.md +448 -0
  302. package/resources/skills/story-creation/upstream/skills/story-import/references/structure-mapping-short.md +187 -0
  303. package/resources/skills/story-creation/upstream/skills/story-import/references/tracking-initialization.md +31 -0
  304. package/resources/skills/story-creation/upstream/skills/story-import/references/tracking-transaction.md +146 -0
  305. package/resources/skills/story-creation/upstream/skills/story-import/scripts/build_outline_brief.py +332 -0
  306. package/resources/skills/story-creation/upstream/skills/story-import/scripts/check-outline-contract.js +520 -0
  307. package/resources/skills/story-creation/upstream/skills/story-import/scripts/tracking_commit.py +1691 -0
  308. package/resources/skills/story-creation/upstream/skills/story-import/scripts/wordcount_core.py +405 -0
  309. package/resources/skills/story-creation/upstream/skills/story-long-analyze/SKILL.md +140 -0
  310. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/author-facing.md +252 -0
  311. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/deconstruction-notes.md +270 -0
  312. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/final-checks.md +19 -0
  313. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/index-rebuild.md +11 -0
  314. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/inspiration-library.md +105 -0
  315. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/pipeline-ops.md +154 -0
  316. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +84 -0
  317. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/stage1-golden-chapters.md +128 -0
  318. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/stage2-extraction.md +229 -0
  319. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/stage3-plot-rhythm.md +480 -0
  320. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/stage4-characters-settings.md +195 -0
  321. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/stage5-report.md +33 -0
  322. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/style-profile-generator.md +76 -0
  323. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/style-profile-protocol.md +133 -0
  324. package/resources/skills/story-creation/upstream/skills/story-long-analyze/references/synthesis-inputs.md +39 -0
  325. package/resources/skills/story-creation/upstream/skills/story-long-analyze/scripts/build_chapter_index.py +466 -0
  326. package/resources/skills/story-creation/upstream/skills/story-long-analyze/scripts/inspect_existing_assets.py +702 -0
  327. package/resources/skills/story-creation/upstream/skills/story-long-analyze/scripts/inspiration_index.py +864 -0
  328. package/resources/skills/story-creation/upstream/skills/story-long-analyze/scripts/manage_analysis_run.py +1145 -0
  329. package/resources/skills/story-creation/upstream/skills/story-long-analyze/scripts/render_relation_chart.py +425 -0
  330. package/resources/skills/story-creation/upstream/skills/story-long-scan/SKILL.md +193 -0
  331. package/resources/skills/story-creation/upstream/skills/story-long-scan/references/genre-trends.md +197 -0
  332. package/resources/skills/story-creation/upstream/skills/story-long-scan/references/platform-ciweimao.md +19 -0
  333. package/resources/skills/story-creation/upstream/skills/story-long-scan/references/platform-fanqie.md +45 -0
  334. package/resources/skills/story-creation/upstream/skills/story-long-scan/references/platform-jjwxc.md +28 -0
  335. package/resources/skills/story-creation/upstream/skills/story-long-scan/references/platform-qidian.md +35 -0
  336. package/resources/skills/story-creation/upstream/skills/story-long-scan/references/platform-qimao.md +27 -0
  337. package/resources/skills/story-creation/upstream/skills/story-long-scan/references/publishing-guide.md +114 -0
  338. package/resources/skills/story-creation/upstream/skills/story-long-scan/references/reader-profiling.md +105 -0
  339. package/resources/skills/story-creation/upstream/skills/story-long-scan/references/topic-decision.md +82 -0
  340. package/resources/skills/story-creation/upstream/skills/story-long-scan/scripts/aggregate-rank.js +682 -0
  341. package/resources/skills/story-creation/upstream/skills/story-long-scan/scripts/cdp-utils.js +242 -0
  342. package/resources/skills/story-creation/upstream/skills/story-long-scan/scripts/ciweimao-rank-scraper.js +240 -0
  343. package/resources/skills/story-creation/upstream/skills/story-long-scan/scripts/fanqie-rank-scraper.js +658 -0
  344. package/resources/skills/story-creation/upstream/skills/story-long-scan/scripts/jjwxc-rank-scraper.js +400 -0
  345. package/resources/skills/story-creation/upstream/skills/story-long-scan/scripts/qidian-rank-scraper.js +592 -0
  346. package/resources/skills/story-creation/upstream/skills/story-long-scan/scripts/qimao-rank-scraper.js +435 -0
  347. package/resources/skills/story-creation/upstream/skills/story-long-write/SKILL.md +136 -0
  348. package/resources/skills/story-creation/upstream/skills/story-long-write/references/agent-calls.md +47 -0
  349. package/resources/skills/story-creation/upstream/skills/story-long-write/references/anti-ai-writing.md +556 -0
  350. package/resources/skills/story-creation/upstream/skills/story-long-write/references/artifact-protocols.md +183 -0
  351. package/resources/skills/story-creation/upstream/skills/story-long-write/references/author-memory-maintenance.md +75 -0
  352. package/resources/skills/story-creation/upstream/skills/story-long-write/references/author-memory.md +117 -0
  353. package/resources/skills/story-creation/upstream/skills/story-long-write/references/banned-words.md +151 -0
  354. package/resources/skills/story-creation/upstream/skills/story-long-write/references/benchmark-recall.md +16 -0
  355. package/resources/skills/story-creation/upstream/skills/story-long-write/references/character-basics.md +445 -0
  356. package/resources/skills/story-creation/upstream/skills/story-long-write/references/character-design-methods.md +428 -0
  357. package/resources/skills/story-creation/upstream/skills/story-long-write/references/character-relations.md +433 -0
  358. package/resources/skills/story-creation/upstream/skills/story-long-write/references/commercial-core-methods.md +502 -0
  359. package/resources/skills/story-creation/upstream/skills/story-long-write/references/cross-book-recall.md +88 -0
  360. package/resources/skills/story-creation/upstream/skills/story-long-write/references/deslop-gates.md +171 -0
  361. package/resources/skills/story-creation/upstream/skills/story-long-write/references/dialogue-mastery.md +288 -0
  362. package/resources/skills/story-creation/upstream/skills/story-long-write/references/emotion-on-page.md +116 -0
  363. package/resources/skills/story-creation/upstream/skills/story-long-write/references/emotional-arc-design.md +313 -0
  364. package/resources/skills/story-creation/upstream/skills/story-long-write/references/emotional-methods.md +209 -0
  365. package/resources/skills/story-creation/upstream/skills/story-long-write/references/female-audience-writing.md +188 -0
  366. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//344/270/234/346/226/271/344/273/231/344/276/240.md +51 -0
  367. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//344/274/240/347/273/237/347/216/204/345/271/273.md +51 -0
  368. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//345/216/206/345/217/262/345/217/244/344/273/243.md +51 -0
  369. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//345/216/206/345/217/262/350/204/221/346/264/236.md +51 -0
  370. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//345/217/214/347/224/267/344/270/273.md +53 -0
  371. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//345/217/244/350/250/200/350/204/221/346/264/236.md +51 -0
  372. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//345/217/244/351/243/216/344/270/226/346/203/205.md +51 -0
  373. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//345/245/263/351/242/221/346/202/254/347/226/221.md +51 -0
  374. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//345/245/263/351/242/221/347/247/215/347/224/260.md +51 -0
  375. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//345/256/253/346/226/227/345/256/205/346/226/227.md +51 -0
  376. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//345/271/264/344/273/243.md +53 -0
  377. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//345/277/253/347/251/277.md +51 -0
  378. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//346/202/254/347/226/221/347/201/265/345/274/202.md +51 -0
  379. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//346/202/254/347/226/221/350/204/221/346/264/236.md +51 -0
  380. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//346/210/230/347/245/236/350/265/230/345/251/277.md +51 -0
  381. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//346/212/227/346/210/230/350/260/215/346/210/230.md +51 -0
  382. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//346/230/237/345/205/211/347/222/200/347/222/250.md +51 -0
  383. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//346/260/221/345/233/275/350/250/200/346/203/205.md +51 -0
  384. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//346/270/270/346/210/217/344/275/223/350/202/262.md +51 -0
  385. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//347/216/204/345/271/273/350/204/221/346/264/236.md +53 -0
  386. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//347/216/204/345/271/273/350/250/200/346/203/205.md +51 -0
  387. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//347/216/260/350/250/200/350/204/221/346/264/236.md +51 -0
  388. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//347/247/221/345/271/273/346/234/253/344/270/226.md +51 -0
  389. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//350/201/214/345/234/272/345/251/232/346/201/213.md +51 -0
  390. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//350/245/277/346/226/271/345/245/207/345/271/273.md +51 -0
  391. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//350/261/252/351/227/250/346/200/273/350/243/201.md +53 -0
  392. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/344/277/256/347/234/237.md +51 -0
  393. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/346/227/245/345/270/270.md +53 -0
  394. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/347/247/215/347/224/260.md +51 -0
  395. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/350/204/221/346/264/236.md +53 -0
  396. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/351/253/230/346/255/246.md +53 -0
  397. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards//351/235/222/346/230/245/347/224/234/345/256/240.md +51 -0
  398. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-prose-cards.md +91 -0
  399. package/resources/skills/story-creation/upstream/skills/story-long-write/references/genre-readers.md +235 -0
  400. package/resources/skills/story-creation/upstream/skills/story-long-write/references/long-chapter-hooks.md +225 -0
  401. package/resources/skills/story-creation/upstream/skills/story-long-write/references/long-chapter-quality.md +177 -0
  402. package/resources/skills/story-creation/upstream/skills/story-long-write/references/long-format.md +36 -0
  403. package/resources/skills/story-creation/upstream/skills/story-long-write/references/long-genre-catalog.md +394 -0
  404. package/resources/skills/story-creation/upstream/skills/story-long-write/references/long-genre-mechanics.md +415 -0
  405. package/resources/skills/story-creation/upstream/skills/story-long-write/references/long-reversal.md +335 -0
  406. package/resources/skills/story-creation/upstream/skills/story-long-write/references/long-suspense.md +352 -0
  407. package/resources/skills/story-creation/upstream/skills/story-long-write/references/opening-design.md +349 -0
  408. package/resources/skills/story-creation/upstream/skills/story-long-write/references/outline-conflict.md +457 -0
  409. package/resources/skills/story-creation/upstream/skills/story-long-write/references/outline-methods.md +287 -0
  410. package/resources/skills/story-creation/upstream/skills/story-long-write/references/outline-rhythm.md +389 -0
  411. package/resources/skills/story-creation/upstream/skills/story-long-write/references/outline-structure-theory.md +273 -0
  412. package/resources/skills/story-creation/upstream/skills/story-long-write/references/plot-core-methods.md +522 -0
  413. package/resources/skills/story-creation/upstream/skills/story-long-write/references/plot-emotion-system.md +354 -0
  414. package/resources/skills/story-creation/upstream/skills/story-long-write/references/plot-frameworks.md +711 -0
  415. package/resources/skills/story-creation/upstream/skills/story-long-write/references/plot-special-topics.md +622 -0
  416. package/resources/skills/story-creation/upstream/skills/story-long-write/references/project-files.md +114 -0
  417. package/resources/skills/story-creation/upstream/skills/story-long-write/references/reader-contract-and-progression.md +117 -0
  418. package/resources/skills/story-creation/upstream/skills/story-long-write/references/reference-index.md +86 -0
  419. package/resources/skills/story-creation/upstream/skills/story-long-write/references/stop-and-fix.md +9 -0
  420. package/resources/skills/story-creation/upstream/skills/story-long-write/references/style-combat-face.md +352 -0
  421. package/resources/skills/story-creation/upstream/skills/story-long-write/references/style-craft.md +327 -0
  422. package/resources/skills/story-creation/upstream/skills/story-long-write/references/style-genre-modules.md +510 -0
  423. package/resources/skills/story-creation/upstream/skills/story-long-write/references/style-resolution.md +27 -0
  424. package/resources/skills/story-creation/upstream/skills/story-long-write/references/tracking-initialization.md +31 -0
  425. package/resources/skills/story-creation/upstream/skills/story-long-write/references/tracking-transaction.md +146 -0
  426. package/resources/skills/story-creation/upstream/skills/story-long-write/references/workflow-chapter.md +104 -0
  427. package/resources/skills/story-creation/upstream/skills/story-long-write/references/workflow-daily.md +75 -0
  428. package/resources/skills/story-creation/upstream/skills/story-long-write/references/workflow-outline.md +157 -0
  429. package/resources/skills/story-creation/upstream/skills/story-long-write/references/workflow-revision.md +89 -0
  430. package/resources/skills/story-creation/upstream/skills/story-long-write/references/workflow-setup.md +170 -0
  431. package/resources/skills/story-creation/upstream/skills/story-long-write/references/workflow-volume.md +142 -0
  432. package/resources/skills/story-creation/upstream/skills/story-long-write/references/writer-prompt-fallback.md +24 -0
  433. package/resources/skills/story-creation/upstream/skills/story-long-write/references/writing-craft.md +442 -0
  434. package/resources/skills/story-creation/upstream/skills/story-long-write/scripts/author_memory_commit.py +1635 -0
  435. package/resources/skills/story-creation/upstream/skills/story-long-write/scripts/build_architect_brief.py +260 -0
  436. package/resources/skills/story-creation/upstream/skills/story-long-write/scripts/build_writer_prompt.py +611 -0
  437. package/resources/skills/story-creation/upstream/skills/story-long-write/scripts/check-ai-patterns.js +1586 -0
  438. package/resources/skills/story-creation/upstream/skills/story-long-write/scripts/check-degeneration.js +349 -0
  439. package/resources/skills/story-creation/upstream/skills/story-long-write/scripts/check-outline-contract.js +520 -0
  440. package/resources/skills/story-creation/upstream/skills/story-long-write/scripts/check-outline-copy.js +313 -0
  441. package/resources/skills/story-creation/upstream/skills/story-long-write/scripts/normalize-punctuation.js +415 -0
  442. package/resources/skills/story-creation/upstream/skills/story-long-write/scripts/outline_view.py +286 -0
  443. package/resources/skills/story-creation/upstream/skills/story-long-write/scripts/storyctl.py +561 -0
  444. package/resources/skills/story-creation/upstream/skills/story-long-write/scripts/style-whitelist.js +39 -0
  445. package/resources/skills/story-creation/upstream/skills/story-long-write/scripts/tracking_commit.py +1691 -0
  446. package/resources/skills/story-creation/upstream/skills/story-long-write/scripts/wordcount_core.py +405 -0
  447. package/resources/skills/story-creation/upstream/skills/story-review/SKILL.md +231 -0
  448. package/resources/skills/story-creation/upstream/skills/story-review/references/agent-prompts.md +184 -0
  449. package/resources/skills/story-creation/upstream/skills/story-review/references/anti-ai-writing.md +556 -0
  450. package/resources/skills/story-creation/upstream/skills/story-review/references/author-memory-maintenance.md +75 -0
  451. package/resources/skills/story-creation/upstream/skills/story-review/references/author-memory.md +117 -0
  452. package/resources/skills/story-creation/upstream/skills/story-review/references/banned-words.md +151 -0
  453. package/resources/skills/story-creation/upstream/skills/story-review/references/batch-review.md +19 -0
  454. package/resources/skills/story-creation/upstream/skills/story-review/references/character-relations.md +433 -0
  455. package/resources/skills/story-creation/upstream/skills/story-review/references/dialogue-mastery.md +288 -0
  456. package/resources/skills/story-creation/upstream/skills/story-review/references/plot-core-methods.md +522 -0
  457. package/resources/skills/story-creation/upstream/skills/story-review/references/quality-rubric.md +55 -0
  458. package/resources/skills/story-creation/upstream/skills/story-review/references/review-quality.md +246 -0
  459. package/resources/skills/story-creation/upstream/skills/story-review/references/review-tracking.md +10 -0
  460. package/resources/skills/story-creation/upstream/skills/story-review/references/rubrics/fanqie.md +18 -0
  461. package/resources/skills/story-creation/upstream/skills/story-review/references/rubrics/qidian.md +19 -0
  462. package/resources/skills/story-creation/upstream/skills/story-review/references/rubrics/zhihu.md +20 -0
  463. package/resources/skills/story-creation/upstream/skills/story-review/references/solo.md +52 -0
  464. package/resources/skills/story-creation/upstream/skills/story-review/references/style-resolution.md +27 -0
  465. package/resources/skills/story-creation/upstream/skills/story-review/references/tracking-initialization.md +31 -0
  466. package/resources/skills/story-creation/upstream/skills/story-review/references/tracking-transaction.md +146 -0
  467. package/resources/skills/story-creation/upstream/skills/story-review/scripts/author_memory_commit.py +1635 -0
  468. package/resources/skills/story-creation/upstream/skills/story-review/scripts/check-ai-patterns.js +1586 -0
  469. package/resources/skills/story-creation/upstream/skills/story-review/scripts/check-degeneration.js +349 -0
  470. package/resources/skills/story-creation/upstream/skills/story-review/scripts/normalize-punctuation.js +415 -0
  471. package/resources/skills/story-creation/upstream/skills/story-review/scripts/style-whitelist.js +39 -0
  472. package/resources/skills/story-creation/upstream/skills/story-review/scripts/tracking_commit.py +1691 -0
  473. package/resources/skills/story-creation/upstream/skills/story-review/scripts/wordcount_core.py +405 -0
  474. package/resources/skills/story-creation/upstream/skills/story-setup/SKILL.md +165 -0
  475. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/agent-quality.md +72 -0
  476. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/agent-reference-profiles.md +55 -0
  477. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/anti-ai-writing.md +556 -0
  478. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/banned-words.md +151 -0
  479. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/benchmark-style-load.md +107 -0
  480. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/character-basics.md +445 -0
  481. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/character-design-methods.md +428 -0
  482. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/character-relations.md +433 -0
  483. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/deslop-gates.md +171 -0
  484. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/dialogue-mastery.md +288 -0
  485. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/emotion-on-page.md +116 -0
  486. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/emotional-arc-design.md +313 -0
  487. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/format-and-structure.md +168 -0
  488. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//344/270/234/346/226/271/344/273/231/344/276/240.md +51 -0
  489. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//344/274/240/347/273/237/347/216/204/345/271/273.md +51 -0
  490. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//345/216/206/345/217/262/345/217/244/344/273/243.md +51 -0
  491. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//345/216/206/345/217/262/350/204/221/346/264/236.md +51 -0
  492. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//345/217/214/347/224/267/344/270/273.md +53 -0
  493. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//345/217/244/350/250/200/350/204/221/346/264/236.md +51 -0
  494. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//345/217/244/351/243/216/344/270/226/346/203/205.md +51 -0
  495. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//345/245/263/351/242/221/346/202/254/347/226/221.md +51 -0
  496. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//345/245/263/351/242/221/347/247/215/347/224/260.md +51 -0
  497. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//345/256/253/346/226/227/345/256/205/346/226/227.md +51 -0
  498. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//345/271/264/344/273/243.md +53 -0
  499. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//345/277/253/347/251/277.md +51 -0
  500. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//346/202/254/347/226/221/347/201/265/345/274/202.md +51 -0
  501. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//346/202/254/347/226/221/350/204/221/346/264/236.md +51 -0
  502. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//346/210/230/347/245/236/350/265/230/345/251/277.md +51 -0
  503. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//346/212/227/346/210/230/350/260/215/346/210/230.md +51 -0
  504. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//346/230/237/345/205/211/347/222/200/347/222/250.md +51 -0
  505. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//346/260/221/345/233/275/350/250/200/346/203/205.md +51 -0
  506. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//346/270/270/346/210/217/344/275/223/350/202/262.md +51 -0
  507. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//347/216/204/345/271/273/350/204/221/346/264/236.md +53 -0
  508. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//347/216/204/345/271/273/350/250/200/346/203/205.md +51 -0
  509. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//347/216/260/350/250/200/350/204/221/346/264/236.md +51 -0
  510. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//347/247/221/345/271/273/346/234/253/344/270/226.md +51 -0
  511. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//350/201/214/345/234/272/345/251/232/346/201/213.md +51 -0
  512. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//350/245/277/346/226/271/345/245/207/345/271/273.md +51 -0
  513. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//350/261/252/351/227/250/346/200/273/350/243/201.md +53 -0
  514. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/344/277/256/347/234/237.md +51 -0
  515. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/346/227/245/345/270/270.md +53 -0
  516. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/347/247/215/347/224/260.md +51 -0
  517. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/350/204/221/346/264/236.md +53 -0
  518. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/351/253/230/346/255/246.md +53 -0
  519. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards//351/235/222/346/230/245/347/224/234/345/256/240.md +51 -0
  520. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-prose-cards.md +91 -0
  521. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/genre-readers.md +235 -0
  522. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/long-chapter-hooks.md +225 -0
  523. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/long-emotional-methods.md +209 -0
  524. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/long-genre-catalog.md +394 -0
  525. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/long-genre-mechanics.md +415 -0
  526. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/long-quality.md +42 -0
  527. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/long-reversal.md +335 -0
  528. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/long-suspense.md +352 -0
  529. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/opening-design.md +349 -0
  530. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/outline-conflict.md +457 -0
  531. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/outline-methods.md +287 -0
  532. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/outline-rhythm.md +389 -0
  533. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/plot-core-methods.md +522 -0
  534. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/short-chapter-hooks.md +225 -0
  535. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/short-emotional-methods.md +179 -0
  536. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/short-genre-formulas.md +417 -0
  537. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/short-paragraph-hooks.md +146 -0
  538. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/short-quality.md +39 -0
  539. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/short-reversal.md +355 -0
  540. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/short-suspense.md +352 -0
  541. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/style-combat-face.md +352 -0
  542. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/style-genre-modules.md +510 -0
  543. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/style-resolution.md +27 -0
  544. package/resources/skills/story-creation/upstream/skills/story-setup/references/agent-references/writing-craft.md +442 -0
  545. package/resources/skills/story-creation/upstream/skills/story-setup/references/diagnostics.md +38 -0
  546. package/resources/skills/story-creation/upstream/skills/story-short-analyze/SKILL.md +224 -0
  547. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/analysis-character-basics.md +453 -0
  548. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/analysis-character-design.md +438 -0
  549. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/analysis-character-relations.md +395 -0
  550. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/analysis-method.md +42 -0
  551. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/analysis-paragraph-hooks.md +146 -0
  552. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/analysis-reader-profile.md +245 -0
  553. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/analysis-report-style.md +45 -0
  554. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/analysis-short-genres.md +65 -0
  555. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/analysis-short-hooks.md +77 -0
  556. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/analysis-short-mechanics.md +82 -0
  557. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/analysis-short-patterns.md +50 -0
  558. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/analysis-short-suspense.md +98 -0
  559. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/analysis-writing-techniques.md +477 -0
  560. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/deconstruction-examples.md +79 -0
  561. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/optional-modules.md +97 -0
  562. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/output-contract.md +127 -0
  563. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/quality-checklist.md +80 -0
  564. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/real-market-data.md +90 -0
  565. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/source-story-quality.md +221 -0
  566. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/stage2-3-structure-emotion.md +308 -0
  567. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/stage4-6-reversal-summary.md +611 -0
  568. package/resources/skills/story-creation/upstream/skills/story-short-analyze/references/zhihu-style.md +54 -0
  569. package/resources/skills/story-creation/upstream/skills/story-short-scan/SKILL.md +182 -0
  570. package/resources/skills/story-creation/upstream/skills/story-short-scan/references/manual-rank-input.md +36 -0
  571. package/resources/skills/story-creation/upstream/skills/story-short-scan/references/platform-dianzhong.md +24 -0
  572. package/resources/skills/story-creation/upstream/skills/story-short-scan/references/platform-heiyan.md +21 -0
  573. package/resources/skills/story-creation/upstream/skills/story-short-scan/references/real-market-data.md +90 -0
  574. package/resources/skills/story-creation/upstream/skills/story-short-scan/references/topic-match.md +38 -0
  575. package/resources/skills/story-creation/upstream/skills/story-short-scan/scripts/aggregate-rank.js +682 -0
  576. package/resources/skills/story-creation/upstream/skills/story-short-scan/scripts/cdp-utils.js +242 -0
  577. package/resources/skills/story-creation/upstream/skills/story-short-scan/scripts/dz-browse-scraper.js +232 -0
  578. package/resources/skills/story-creation/upstream/skills/story-short-scan/scripts/heiyan-booklist-scraper.js +345 -0
  579. package/resources/skills/story-creation/upstream/skills/story-short-write/SKILL.md +136 -0
  580. package/resources/skills/story-creation/upstream/skills/story-short-write/references/agent-calls.md +13 -0
  581. package/resources/skills/story-creation/upstream/skills/story-short-write/references/author-memory-maintenance.md +75 -0
  582. package/resources/skills/story-creation/upstream/skills/story-short-write/references/author-memory.md +117 -0
  583. package/resources/skills/story-creation/upstream/skills/story-short-write/references/banned-words.md +151 -0
  584. package/resources/skills/story-creation/upstream/skills/story-short-write/references/benchmark-recall.md +40 -0
  585. package/resources/skills/story-creation/upstream/skills/story-short-write/references/cross-book-recall.md +62 -0
  586. package/resources/skills/story-creation/upstream/skills/story-short-write/references/dialogue-mastery.md +288 -0
  587. package/resources/skills/story-creation/upstream/skills/story-short-write/references/emotional-methods.md +179 -0
  588. package/resources/skills/story-creation/upstream/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +159 -0
  589. package/resources/skills/story-creation/upstream/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +156 -0
  590. package/resources/skills/story-creation/upstream/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +163 -0
  591. package/resources/skills/story-creation/upstream/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +167 -0
  592. package/resources/skills/story-creation/upstream/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +178 -0
  593. package/resources/skills/story-creation/upstream/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +166 -0
  594. package/resources/skills/story-creation/upstream/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +159 -0
  595. package/resources/skills/story-creation/upstream/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +151 -0
  596. package/resources/skills/story-creation/upstream/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +153 -0
  597. package/resources/skills/story-creation/upstream/skills/story-short-write/references/genre-styles//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272.md +210 -0
  598. package/resources/skills/story-creation/upstream/skills/story-short-write/references/genre-writing-formulas.md +417 -0
  599. package/resources/skills/story-creation/upstream/skills/story-short-write/references/genre-writing-techniques.md +490 -0
  600. package/resources/skills/story-creation/upstream/skills/story-short-write/references/hooks-chapter.md +225 -0
  601. package/resources/skills/story-creation/upstream/skills/story-short-write/references/hooks-paragraph.md +146 -0
  602. package/resources/skills/story-creation/upstream/skills/story-short-write/references/output-contract.md +127 -0
  603. package/resources/skills/story-creation/upstream/skills/story-short-write/references/reference-index.md +23 -0
  604. package/resources/skills/story-creation/upstream/skills/story-short-write/references/scene-craft.md +40 -0
  605. package/resources/skills/story-creation/upstream/skills/story-short-write/references/short-craft.md +147 -0
  606. package/resources/skills/story-creation/upstream/skills/story-short-write/references/short-deslop.md +133 -0
  607. package/resources/skills/story-creation/upstream/skills/story-short-write/references/short-format.md +199 -0
  608. package/resources/skills/story-creation/upstream/skills/story-short-write/references/short-prose-quality.md +224 -0
  609. package/resources/skills/story-creation/upstream/skills/story-short-write/references/short-reversal.md +355 -0
  610. package/resources/skills/story-creation/upstream/skills/story-short-write/references/short-suspense.md +352 -0
  611. package/resources/skills/story-creation/upstream/skills/story-short-write/references/style-resolution.md +27 -0
  612. package/resources/skills/story-creation/upstream/skills/story-short-write/references/submission-craft.md +35 -0
  613. package/resources/skills/story-creation/upstream/skills/story-short-write/references/villain-and-reveal.md +153 -0
  614. package/resources/skills/story-creation/upstream/skills/story-short-write/references/workflow-design.md +85 -0
  615. package/resources/skills/story-creation/upstream/skills/story-short-write/references/workflow-draft.md +116 -0
  616. package/resources/skills/story-creation/upstream/skills/story-short-write/references/workflow-revision.md +99 -0
  617. package/resources/skills/story-creation/upstream/skills/story-short-write/references/writing-workflow.md +50 -0
  618. package/resources/skills/story-creation/upstream/skills/story-short-write/scripts/author_memory_commit.py +1635 -0
  619. package/resources/skills/story-creation/upstream/skills/story-short-write/scripts/check-ai-patterns.js +1586 -0
  620. package/resources/skills/story-creation/upstream/skills/story-short-write/scripts/check-degeneration.js +349 -0
  621. package/resources/skills/story-creation/upstream/skills/story-short-write/scripts/check-delivery-contract.js +241 -0
  622. package/resources/skills/story-creation/upstream/skills/story-short-write/scripts/check-outline-copy.js +313 -0
  623. package/resources/skills/story-creation/upstream/skills/story-short-write/scripts/check-phase2-contract.js +363 -0
  624. package/resources/skills/story-creation/upstream/skills/story-short-write/scripts/normalize-punctuation.js +415 -0
  625. package/resources/skills/story-creation/upstream/skills/story-short-write/scripts/style-whitelist.js +39 -0
  626. package/resources/skills/video-recap-production/manifest.json +673 -0
  627. package/resources/skills/video-recap-production/upstream/CHANGELOG.md +371 -0
  628. package/resources/skills/video-recap-production/upstream/LICENSE +21 -0
  629. package/resources/skills/video-recap-production/upstream/README.en.md +468 -0
  630. package/resources/skills/video-recap-production/upstream/README.md +459 -0
  631. package/resources/skills/video-recap-production/upstream/manifest.json +839 -0
  632. package/resources/skills/video-recap-production/upstream/skills/video-assemble/SKILL.md +112 -0
  633. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/audio-modes.md +63 -0
  634. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/explicit-audio-mix.md +75 -0
  635. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/foreground-compose.md +118 -0
  636. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/jianying/LICENSE.duo-video +21 -0
  637. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/jianying/SOURCE.md +15 -0
  638. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/jianying/empty_draft_meta_info.json +69 -0
  639. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/jianying/empty_jy_combination_segment.json +84 -0
  640. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/jianying/empty_jy_combination_video_material.json +98 -0
  641. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/jianying/empty_jy_draft.json +204 -0
  642. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/jianying/empty_jy_material_video.json +83 -0
  643. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/jianying/empty_jy_meta_material_value.json +23 -0
  644. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/jianying/empty_jy_project_info.json +133 -0
  645. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/jianying/empty_jy_segment.json +70 -0
  646. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/jianying/empty_jy_text_styles.json +30 -0
  647. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/jianying/empty_yj_material_audio.json +41 -0
  648. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/jianying/empty_yj_material_text.json +109 -0
  649. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/narration-adoption.md +103 -0
  650. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/packaging.md +45 -0
  651. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/pair-media.md +74 -0
  652. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/source-score.md +147 -0
  653. package/resources/skills/video-recap-production/upstream/skills/video-assemble/references/subtitle-track.md +202 -0
  654. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/adoption/__init__.py +1 -0
  655. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/adoption/audio_mix_binding.py +279 -0
  656. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/adoption/frozen_audio.py +187 -0
  657. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/adoption/narration_binding.py +323 -0
  658. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/adoption/strict_inputs.py +109 -0
  659. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/adoption/strict_publish.py +130 -0
  660. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/artifacts.py +47 -0
  661. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/assemble.py +591 -0
  662. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/assemble_constants.py +51 -0
  663. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/assembly_contract.py +318 -0
  664. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/assembly_settings.py +138 -0
  665. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/audio_automation.py +195 -0
  666. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/audio_mix.py +465 -0
  667. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/compose_foreground.py +293 -0
  668. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/export_jianying.py +254 -0
  669. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/jianying/__init__.py +1 -0
  670. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/jianying/builders.py +718 -0
  671. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/jianying/model.py +105 -0
  672. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/jianying/optional.py +23 -0
  673. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/jianying/schema.py +53 -0
  674. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/jianying/templates.py +37 -0
  675. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/jianying/timeline_contract.py +223 -0
  676. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/jianying/tracks.py +72 -0
  677. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/jianying/writer.py +383 -0
  678. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/lib.py +218 -0
  679. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/media.py +190 -0
  680. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/narration_audio.py +413 -0
  681. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/packaging.py +122 -0
  682. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/pair_media.py +216 -0
  683. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/render_preflight.py +33 -0
  684. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/source_score.py +469 -0
  685. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/source_subtitles.py +423 -0
  686. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/subtitles/__init__.py +1 -0
  687. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/subtitles/core.py +330 -0
  688. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/subtitles/render.py +82 -0
  689. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/subtitles/track.py +324 -0
  690. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/subtitles/track_binding.py +200 -0
  691. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/timeline.py +217 -0
  692. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/timeline_emit.py +167 -0
  693. package/resources/skills/video-recap-production/upstream/skills/video-assemble/scripts/visual_render.py +448 -0
  694. package/resources/skills/video-recap-production/upstream/skills/video-cut/SKILL.md +108 -0
  695. package/resources/skills/video-recap-production/upstream/skills/video-cut/references/shot-review.md +50 -0
  696. package/resources/skills/video-recap-production/upstream/skills/video-cut/scripts/cut.py +41 -0
  697. package/resources/skills/video-recap-production/upstream/skills/video-cut/scripts/cut_cli.py +308 -0
  698. package/resources/skills/video-recap-production/upstream/skills/video-cut/scripts/cut_contract.py +424 -0
  699. package/resources/skills/video-recap-production/upstream/skills/video-cut/scripts/cut_render.py +304 -0
  700. package/resources/skills/video-recap-production/upstream/skills/video-cut/scripts/lib.py +114 -0
  701. package/resources/skills/video-recap-production/upstream/skills/video-cut/scripts/media_geometry.py +238 -0
  702. package/resources/skills/video-recap-production/upstream/skills/video-cut/scripts/narration_mapping.py +71 -0
  703. package/resources/skills/video-recap-production/upstream/skills/video-cut/scripts/narrative_selection.py +244 -0
  704. package/resources/skills/video-recap-production/upstream/skills/video-cut/scripts/sentence_boundaries.py +585 -0
  705. package/resources/skills/video-recap-production/upstream/skills/video-cut/scripts/shot_review.py +357 -0
  706. package/resources/skills/video-recap-production/upstream/skills/video-recap/SKILL.md +260 -0
  707. package/resources/skills/video-recap-production/upstream/skills/video-recap/references/audio-routing.md +126 -0
  708. package/resources/skills/video-recap-production/upstream/skills/video-recap/references/config-playbook.md +65 -0
  709. package/resources/skills/video-recap-production/upstream/skills/video-recap/references/data-schema.md +545 -0
  710. package/resources/skills/video-recap-production/upstream/skills/video-recap/references/resource-library.md +151 -0
  711. package/resources/skills/video-recap-production/upstream/skills/video-recap/references/shift-left-qc-schema.md +23 -0
  712. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/doctor.py +556 -0
  713. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/final_qc.py +527 -0
  714. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/lib.py +220 -0
  715. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/library.py +509 -0
  716. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/materials.py +406 -0
  717. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/mimo_qc.py +33 -0
  718. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/project_binding.py +286 -0
  719. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/qc/__init__.py +1 -0
  720. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/qc/mimo_client.py +13 -0
  721. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/qc/mimo_contract.py +9 -0
  722. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/qc/mimo_evidence.py +287 -0
  723. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/qc/mimo_observations.py +175 -0
  724. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/qc/mimo_payload.py +206 -0
  725. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/qc/mimo_report.py +318 -0
  726. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/qc/mimo_runner.py +130 -0
  727. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/qc_contract.py +320 -0
  728. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/recap.py +9 -0
  729. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/recap_cli.py +209 -0
  730. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/recap_inspect.py +452 -0
  731. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/recap_review.py +70 -0
  732. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/recap_runner.py +696 -0
  733. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/recap_runtime.py +260 -0
  734. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/recap_source.py +278 -0
  735. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/recap_stage_qc.py +160 -0
  736. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/recap_timeline.py +621 -0
  737. package/resources/skills/video-recap-production/upstream/skills/video-recap/scripts/resource_lock.py +162 -0
  738. package/resources/skills/video-recap-production/upstream/skills/video-script/SKILL.md +251 -0
  739. package/resources/skills/video-recap-production/upstream/skills/video-script/references/creative-editing-playbook.md +229 -0
  740. package/resources/skills/video-recap-production/upstream/skills/video-script/references/promotional-copy.md +68 -0
  741. package/resources/skills/video-recap-production/upstream/skills/video-script/references/research-guide.md +75 -0
  742. package/resources/skills/video-recap-production/upstream/skills/video-script/scripts/agent_text.py +301 -0
  743. package/resources/skills/video-recap-production/upstream/skills/video-script/scripts/deslop_qc.py +211 -0
  744. package/resources/skills/video-recap-production/upstream/skills/video-script/scripts/evidence_bundle.py +440 -0
  745. package/resources/skills/video-recap-production/upstream/skills/video-script/scripts/lib.py +254 -0
  746. package/resources/skills/video-recap-production/upstream/skills/video-script/scripts/narration_lint.py +707 -0
  747. package/resources/skills/video-recap-production/upstream/skills/video-script/scripts/review.py +40 -0
  748. package/resources/skills/video-recap-production/upstream/skills/video-script/scripts/review_grounding.py +238 -0
  749. package/resources/skills/video-recap-production/upstream/skills/video-script/scripts/review_response.py +669 -0
  750. package/resources/skills/video-recap-production/upstream/skills/video-script/scripts/review_runner.py +186 -0
  751. package/resources/skills/video-recap-production/upstream/skills/video-script/scripts/speech_ownership.py +143 -0
  752. package/resources/skills/video-recap-production/upstream/skills/video-script/scripts/timeline_fusion.py +108 -0
  753. package/resources/skills/video-recap-production/upstream/skills/video-script/scripts/validate.py +175 -0
  754. package/resources/skills/video-recap-production/upstream/skills/video-understanding/SKILL.md +77 -0
  755. package/resources/skills/video-recap-production/upstream/skills/video-understanding/references/data-schema.md +193 -0
  756. package/resources/skills/video-recap-production/upstream/skills/video-understanding/references/prompt-templates.md +37 -0
  757. package/resources/skills/video-recap-production/upstream/skills/video-understanding/references/research-guide.md +74 -0
  758. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/agent_text.py +301 -0
  759. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/asr.py +279 -0
  760. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/asr_timing_evidence.py +270 -0
  761. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/brief.py +9 -0
  762. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/briefing/__init__.py +1 -0
  763. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/briefing/builder.py +402 -0
  764. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/briefing/context.py +317 -0
  765. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/briefing/inputs.py +268 -0
  766. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/briefing/timeline.py +326 -0
  767. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/consolidate.py +596 -0
  768. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/deslop_qc.py +211 -0
  769. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/detect.py +504 -0
  770. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/extract.py +62 -0
  771. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/lib.py +419 -0
  772. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/narration_lint.py +707 -0
  773. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/speech_ownership.py +143 -0
  774. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/storyboard.py +445 -0
  775. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/timeline_fusion.py +108 -0
  776. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/understand.py +9 -0
  777. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/understanding_brief.py +190 -0
  778. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/understanding_cache.py +345 -0
  779. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/understanding_runner.py +387 -0
  780. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/understanding_storyboard.py +167 -0
  781. package/resources/skills/video-recap-production/upstream/skills/video-understanding/scripts/vlm.py +674 -0
  782. package/resources/skills/video-recap-production/upstream/skills/video-voiceover/SKILL.md +91 -0
  783. package/resources/skills/video-recap-production/upstream/skills/video-voiceover/references/index-tts.md +31 -0
  784. package/resources/skills/video-recap-production/upstream/skills/video-voiceover/scripts/approved_text_policy.py +123 -0
  785. package/resources/skills/video-recap-production/upstream/skills/video-voiceover/scripts/dub.py +623 -0
  786. package/resources/skills/video-recap-production/upstream/skills/video-voiceover/scripts/lib.py +352 -0
  787. package/resources/skills/video-recap-production/upstream/skills/video-voiceover/scripts/providers/__init__.py +1 -0
  788. package/resources/skills/video-recap-production/upstream/skills/video-voiceover/scripts/providers/fish_audio.py +91 -0
  789. package/resources/skills/video-recap-production/upstream/skills/video-voiceover/scripts/providers/index_tts.py +184 -0
  790. package/resources/skills/video-recap-production/upstream/skills/video-voiceover/scripts/tts_audio.py +102 -0
  791. package/resources/skills/video-recap-production/upstream/skills/video-voiceover/scripts/voiceover.py +771 -0
  792. package/resources/skills/viora-canvas-production/manifest.json +5 -1
  793. package/resources/skills/viora-canvas-production/references/story-handoff.md +49 -0
@@ -0,0 +1,1494 @@
1
+ /*
2
+ * 新国风叙事 CG 主题(2026-08)
3
+ *
4
+ * 目标不是复刻古画,也不是把古装人物放进现代时尚棚拍。完整保留晚明世界,
5
+ * 以当代文字游戏常见的二维人物审美、通透光色、情绪化镜头和丝绸层次重塑界面。
6
+ * 白日保持春庭高明度;夜景用蓝紫月光与暖灯形成可读层次,不允许全屏压黑。
7
+ */
8
+
9
+ :root {
10
+ --paper: #fff7ed;
11
+ --paper-light: #fffdf8;
12
+ --paper-dark: #e7d6c7;
13
+ --ink: #292d3b;
14
+ --ink-soft: #646676;
15
+ --night: #e8edf8;
16
+ --night-soft: #d8dfef;
17
+ --gold: #b98642;
18
+ --gold-bright: #d2a15b;
19
+ --cinnabar: #c84f5c;
20
+ --jade: #3f8f83;
21
+ --honey: #d39847;
22
+ --azurite: #355f98;
23
+ --lilac: #8c79ad;
24
+ --line: rgba(72, 75, 96, .2);
25
+ --silk: rgba(255, 250, 245, .9);
26
+ --silk-strong: rgba(255, 253, 249, .975);
27
+ --cg-shadow: 0 22px 64px rgba(79, 63, 74, .16);
28
+ }
29
+
30
+ html,
31
+ body {
32
+ color: var(--ink);
33
+ background:
34
+ radial-gradient(circle at 14% 10%, rgba(242, 180, 188, .2), transparent 28%),
35
+ radial-gradient(circle at 86% 86%, rgba(91, 146, 170, .15), transparent 30%),
36
+ #f3e9df;
37
+ }
38
+
39
+ #app::after {
40
+ opacity: .34;
41
+ mix-blend-mode: soft-light;
42
+ background-image:
43
+ radial-gradient(ellipse at 12% 18%, rgba(255,255,255,.9) 0 1px, transparent 2px),
44
+ radial-gradient(ellipse at 74% 12%, rgba(229,137,154,.34) 0 1px, transparent 2px),
45
+ radial-gradient(circle at 48% 82%, rgba(82,128,152,.22) 0 1px, transparent 2px);
46
+ background-size: 31px 37px, 43px 49px, 53px 61px;
47
+ }
48
+
49
+ .loading,
50
+ .fatal-card {
51
+ color: var(--ink);
52
+ background: linear-gradient(145deg, #fffdf8, #f3e4dd);
53
+ }
54
+
55
+ .eyebrow { color: var(--cinnabar); }
56
+
57
+ /* 年龄门:从明亮宅门进入,而不是穿过一堵黑墙。 */
58
+ .age-gate {
59
+ color: var(--ink);
60
+ background:
61
+ linear-gradient(90deg, rgba(255,250,244,.96) 0%, rgba(255,250,244,.86) 45%, rgba(255,250,244,.25) 76%),
62
+ url('../assets/bg/compound_new_guofeng.webp') center / cover;
63
+ }
64
+
65
+ .age-gate::before {
66
+ border: 1px solid rgba(185, 127, 92, .26);
67
+ background: rgba(255, 248, 242, .12);
68
+ box-shadow:
69
+ inset 0 0 0 8px rgba(255, 253, 249, .42),
70
+ inset 0 0 0 9px rgba(200, 79, 92, .12),
71
+ 0 26px 90px rgba(75, 65, 82, .13);
72
+ }
73
+
74
+ .age-gate p:not(.eyebrow) { color: #5d6070; }
75
+
76
+ .age-seal {
77
+ color: var(--cinnabar);
78
+ border-color: var(--cinnabar);
79
+ background: rgba(255, 250, 245, .76);
80
+ box-shadow: 0 10px 28px rgba(152, 63, 79, .14);
81
+ }
82
+
83
+ /* 按钮是剧情签,不是黑色系统框。 */
84
+ .ink-button,
85
+ .plain-button {
86
+ border-color: rgba(80, 91, 120, .28);
87
+ color: #343745;
88
+ background: rgba(255, 252, 248, .84);
89
+ box-shadow: 0 9px 25px rgba(61, 69, 91, .08);
90
+ backdrop-filter: blur(8px);
91
+ }
92
+
93
+ .ink-button:hover:not(:disabled),
94
+ .plain-button:hover {
95
+ color: #a93345;
96
+ border-color: rgba(200, 79, 92, .58);
97
+ background: #fffaf7;
98
+ }
99
+
100
+ .ink-button.primary {
101
+ color: #fffaf7;
102
+ border-color: #b94050;
103
+ background: linear-gradient(145deg, #d96370, #b83f50);
104
+ box-shadow: 0 13px 32px rgba(177, 56, 73, .24);
105
+ }
106
+
107
+ .ink-button.primary:hover:not(:disabled),
108
+ .ink-button.primary:focus-visible {
109
+ color: #fff;
110
+ border-color: #a83546;
111
+ background: linear-gradient(145deg, #e06d79, #aa3547);
112
+ }
113
+
114
+ .ink-button.story-continue {
115
+ color: #406d91;
116
+ background: transparent;
117
+ box-shadow: none;
118
+ }
119
+
120
+ .ink-button.story-continue:hover:not(:disabled) { color: var(--cinnabar); }
121
+
122
+ /* 标题图自带左侧春庭留白,标题直接进入画面,不另做硬分栏。 */
123
+ .title-screen {
124
+ display: grid;
125
+ grid-template-columns: minmax(19rem, 42%) 1fr;
126
+ color: var(--ink);
127
+ background: #f7e9e2;
128
+ }
129
+
130
+ .title-art {
131
+ background-position: center;
132
+ filter: saturate(1.04) contrast(1.01) brightness(1.02);
133
+ }
134
+
135
+ .title-art::after {
136
+ background:
137
+ linear-gradient(90deg, rgba(255,250,246,.96) 0%, rgba(255,250,246,.82) 22%, rgba(255,250,246,.18) 45%, transparent 66%),
138
+ linear-gradient(0deg, rgba(92,65,83,.1), transparent 45%);
139
+ }
140
+
141
+ .title-copy {
142
+ z-index: 2;
143
+ grid-column: 1;
144
+ padding: 8vh 2.2vw 7vh 5.3vw;
145
+ background: radial-gradient(circle at 30% 48%, rgba(255,255,255,.62), transparent 54%);
146
+ }
147
+
148
+ .title-copy::before {
149
+ right: auto;
150
+ left: 2.1vw;
151
+ top: 8vh;
152
+ color: rgba(192, 66, 85, .08);
153
+ }
154
+
155
+ .title-copy::after {
156
+ content: "";
157
+ width: min(18rem, 76%);
158
+ height: 3px;
159
+ margin: .2rem 0 1.25rem;
160
+ order: -1;
161
+ background: linear-gradient(90deg, var(--azurite) 0 20%, var(--cinnabar) 20% 40%, #d5aa65 40% 60%, var(--lilac) 60% 80%, var(--jade) 80%);
162
+ box-shadow: 0 1px rgba(255,255,255,.86);
163
+ }
164
+
165
+ .title-copy h1 {
166
+ color: #2e3040;
167
+ text-shadow: 0 2px rgba(255,255,255,.78);
168
+ }
169
+
170
+ .title-subtitle { color: #996334; }
171
+ .identity-line { color: #545969; border-left-color: var(--cinnabar); }
172
+ .rating-line { color: #a74d59; }
173
+ .save-note { color: #767786; }
174
+
175
+ /* 游戏框架像一层铺在 CG 上的轻绢,不再把画面装进暗木盒。 */
176
+ .game-shell { background: #e8e5e7; }
177
+
178
+ .topbar {
179
+ color: #343846;
180
+ border-bottom-color: rgba(64, 96, 135, .22);
181
+ background:
182
+ linear-gradient(90deg, rgba(255,253,249,.98), rgba(239,245,248,.95) 55%, rgba(255,241,238,.97));
183
+ box-shadow: 0 8px 30px rgba(65, 71, 91, .12);
184
+ }
185
+
186
+ .day-mark { border-right-color: rgba(64, 96, 135, .18); }
187
+ .day-mark b { color: #7a5a2e; }
188
+ .day-mark span,
189
+ .hud-notice { color: #707383; }
190
+ .hud-notice.urgent { color: #a93647; background: rgba(200,79,92,.08); }
191
+ .top-actions #btn-mute { color: #6e7180; }
192
+
193
+ .phase-stage,
194
+ .dialogue-stage,
195
+ .night-talk-stage,
196
+ .scene-view { background: #e7e4e7; }
197
+
198
+ #app .visual-stage::before { filter: saturate(1.01) contrast(1.01) brightness(1.03); }
199
+
200
+ #app .visual-stage::after {
201
+ background:
202
+ linear-gradient(180deg, rgba(255,248,244,.02), rgba(77,72,91,.08)),
203
+ radial-gradient(120% 96% at 76% 36%, transparent 55%, rgba(70,64,89,.11) 100%);
204
+ }
205
+
206
+ /* 通用对话与账册面板。 */
207
+ .decision-panel,
208
+ .confirm-card,
209
+ .gallery-book,
210
+ .roster-sheet,
211
+ .epilogue-copy,
212
+ .fate-coda-copy {
213
+ color: var(--ink);
214
+ border-color: rgba(86, 92, 119, .22);
215
+ background:
216
+ linear-gradient(145deg, var(--silk-strong), rgba(245, 236, 236, .94));
217
+ box-shadow: var(--cg-shadow);
218
+ backdrop-filter: blur(16px) saturate(.9);
219
+ }
220
+
221
+ .decision-panel::before,
222
+ .confirm-card::before {
223
+ content: "";
224
+ position: absolute;
225
+ inset: 7px;
226
+ pointer-events: none;
227
+ border: 1px solid rgba(200, 79, 92, .09);
228
+ }
229
+
230
+ .phase-header h2,
231
+ .decision-panel h2,
232
+ .confirm-card h2,
233
+ .gallery-book h2,
234
+ .roster-sheet h2 { color: #303342; }
235
+
236
+ .phase-header > p:last-child,
237
+ .phase-lead,
238
+ .speaker-line,
239
+ .consent-note,
240
+ .want-line { color: #626574; }
241
+
242
+ .morning-note,
243
+ .day-speaker,
244
+ .want-line {
245
+ border-left-color: rgba(200,79,92,.58);
246
+ color: #575b69;
247
+ background: rgba(217,99,112,.055);
248
+ }
249
+
250
+ .choice-button {
251
+ color: #343745;
252
+ border: 1px solid rgba(79, 91, 120, .18);
253
+ border-left: 4px solid rgba(78, 125, 155, .58);
254
+ background: rgba(255,253,249,.76);
255
+ box-shadow: 0 7px 22px rgba(66,68,89,.06);
256
+ }
257
+
258
+ .choice-button span { color: #676a79; }
259
+ .choice-button:hover:not(:disabled):not([aria-disabled="true"]),
260
+ .choice-button:focus-visible {
261
+ border-color: rgba(200,79,92,.5);
262
+ border-left-color: var(--cinnabar);
263
+ background: #fffaf7;
264
+ box-shadow: 0 10px 27px rgba(141,65,81,.1);
265
+ }
266
+
267
+ .story-progress { color: #9b6d3a; }
268
+ .story-progress b { color: #4c5060; }
269
+
270
+ /* 五扇院门像角色卡面,但仍属于同一个古代庭院。 */
271
+ .visit-prompt {
272
+ color: #333746;
273
+ border-left-color: var(--cinnabar);
274
+ background: rgba(255,251,247,.9);
275
+ box-shadow: 0 14px 40px rgba(72,67,88,.13);
276
+ backdrop-filter: blur(14px);
277
+ }
278
+
279
+ .accord-panel { border-left-color: rgba(71,101,134,.24); }
280
+ .accord-heading,
281
+ .visit-prompt h2 { color: #353846; }
282
+
283
+ .accord-seal {
284
+ color: #707383;
285
+ border-color: rgba(74,91,118,.2);
286
+ background: rgba(255,253,249,.72);
287
+ }
288
+
289
+ .accord-seal.complete { color: #8d4450; background: rgba(200,79,92,.07); }
290
+
291
+ .door-card {
292
+ color: #303441;
293
+ border: 1px solid rgba(87, 92, 119, .27);
294
+ background: #fbf2ed;
295
+ box-shadow: 0 16px 42px rgba(71,65,87,.15);
296
+ }
297
+
298
+ .door-card::before { border-color: rgba(200,79,92,.16); }
299
+ .door-card > span { color: #4d5264; background: rgba(255,250,246,.88); }
300
+ .door-card img { filter: saturate(1.03) brightness(1.05) contrast(.99); }
301
+ .door-card > div { color: #323542; background: linear-gradient(transparent, rgba(251,242,237,.97) 58%); }
302
+ .door-card small,
303
+ .door-knock,
304
+ .door-forecast dd { color: #666978; }
305
+
306
+ #app .dialogue-stage::after,
307
+ #app .morning-stage::after { background: linear-gradient(90deg, rgba(255,249,245,.34), transparent 60%); }
308
+
309
+ .night-talk-cg,
310
+ .close-cg,
311
+ .close-cg.closer,
312
+ #app .scene-view > img { filter: saturate(1.02) brightness(1.03) contrast(1.01); }
313
+
314
+ .close-cg::after,
315
+ .morning-cg::after {
316
+ background:
317
+ linear-gradient(96deg, rgba(244,240,244,.94) 0%, rgba(244,240,244,.8) 30%, rgba(244,240,244,.08) 58%, rgba(63,59,82,.08) 100%),
318
+ radial-gradient(112% 88% at 72% 40%, transparent 52%, rgba(69,62,91,.13) 100%);
319
+ }
320
+
321
+ .close-cg.closer { filter: saturate(1.04) brightness(1.01) contrast(1.02); }
322
+ .morning-cg { filter: saturate(1) brightness(1.08) contrast(1); }
323
+
324
+ #app .night-talk-stage::after,
325
+ #app .night-talk-result::after {
326
+ background:
327
+ linear-gradient(96deg, rgba(243,241,249,.96) 0%, rgba(243,241,249,.86) 42%, rgba(243,241,249,.1) 69%),
328
+ linear-gradient(0deg, rgba(72,62,98,.08), transparent 62%);
329
+ }
330
+
331
+ .night-talk-voice,
332
+ .night-talk-continuity,
333
+ .night-talk-memory,
334
+ .route-branch-memory,
335
+ .day-consequence,
336
+ .ledger-status {
337
+ color: #515565;
338
+ border-color: rgba(75, 91, 120, .22);
339
+ background: rgba(255,253,250,.68);
340
+ }
341
+
342
+ .night-talk-voice b,
343
+ .night-talk-continuity b,
344
+ .route-branch-memory b,
345
+ .day-consequence b { color: #3f4352; }
346
+
347
+ .night-talk-voice p,
348
+ .night-talk-memory p,
349
+ .night-talk-continuity p,
350
+ .route-branch-memory p { color: #626575; }
351
+
352
+ .night-talk-prop {
353
+ color: #7b5a2e;
354
+ border-color: rgba(179, 130, 66, .35);
355
+ background: radial-gradient(circle, rgba(255,253,249,.98), rgba(226,214,221,.94) 72%);
356
+ box-shadow: 0 18px 46px rgba(74,65,91,.16), inset 0 0 0 8px rgba(255,255,255,.25);
357
+ }
358
+
359
+ /* 场景册与剧情结果让 CG 继续占主位。 */
360
+ #app .scene-scrim {
361
+ background: linear-gradient(90deg, rgba(247,243,246,.93) 0%, rgba(247,243,246,.67) 34%, transparent 66%);
362
+ }
363
+
364
+ #app .scene-caption,
365
+ #app .scene-view:is([data-scene-tier="public"], [data-scene-tier="ensemble"]) .scene-caption {
366
+ color: #303442;
367
+ border: 1px solid rgba(77, 91, 119, .21);
368
+ border-left: 4px solid var(--cinnabar);
369
+ background: rgba(255,251,248,.88);
370
+ box-shadow: 0 20px 52px rgba(67,63,84,.15);
371
+ backdrop-filter: blur(14px);
372
+ }
373
+
374
+ #app .scene-caption h2,
375
+ #app .scene-caption > p:not(.eyebrow) { color: #343746; }
376
+ #app .scene-meta { color: #6a6d7c; }
377
+ #app .scene-meta span { border-color: rgba(75,91,119,.22); }
378
+
379
+ #app .scene-view:is([data-scene-tier="public"], [data-scene-tier="ensemble"]) .scene-scrim {
380
+ background: linear-gradient(0deg, rgba(250,246,247,.72) 0%, rgba(250,246,247,0) 38%);
381
+ }
382
+
383
+ #app .scene-view:is([data-scene-tier="public"], [data-scene-tier="ensemble"]) .scene-caption {
384
+ background: linear-gradient(0deg, rgba(255,251,248,.96) 0%, rgba(255,251,248,.84) 52%, rgba(255,251,248,0) 100%);
385
+ backdrop-filter: none;
386
+ }
387
+
388
+ #app .scene-view:is([data-scene-tier="public"], [data-scene-tier="ensemble"]) > img {
389
+ filter: saturate(1.03) brightness(1.03) contrast(1.01);
390
+ }
391
+
392
+ /* 旧结构里最暗的三张群像,强制回到新 CG 自己的曝光。 */
393
+ .scene-view[data-scene-id="inner_court_alliance"] > img,
394
+ .scene-view[data-scene-id="inner_court_accord"] > img,
395
+ .scene-view[data-scene-id="inner_court_afterglow"] > img {
396
+ filter: saturate(1.03) brightness(1.04) contrast(1.01);
397
+ }
398
+
399
+ .scene-view[data-scene-id="inner_court_alliance"] .scene-caption,
400
+ .scene-view[data-scene-id="inner_court_afterglow"] .scene-caption {
401
+ color: var(--ink);
402
+ border-color: rgba(80,95,123,.22);
403
+ border-left-color: var(--cinnabar);
404
+ background: linear-gradient(145deg, rgba(255,253,249,.97), rgba(241,235,241,.92));
405
+ }
406
+
407
+ .shared-night-accord-overview,
408
+ .shared-night-accord-entry,
409
+ .alliance-tableau-overview,
410
+ .alliance-tableau-entry,
411
+ .shared-afterglow-tableau-overview,
412
+ .shared-afterglow-tableau-entry {
413
+ color: #4a4e5e;
414
+ border-color: rgba(80,96,124,.2);
415
+ background: rgba(255,252,249,.68);
416
+ }
417
+
418
+ .shared-night-accord-overview header,
419
+ .shared-night-accord-entry > header,
420
+ .alliance-tableau-overview > header,
421
+ .alliance-tableau-entry > header,
422
+ .shared-afterglow-tableau-overview header,
423
+ .shared-afterglow-tableau-entry > header { color: #767887; }
424
+
425
+ .shared-night-accord-overview header b,
426
+ .shared-night-accord-entry > header b,
427
+ .alliance-tableau-overview > header b,
428
+ .alliance-tableau-entry > header b,
429
+ .shared-afterglow-tableau-overview header b,
430
+ .shared-afterglow-tableau-entry > header b { color: #8e6040; }
431
+
432
+ .shared-night-accord-overview > div > span,
433
+ .shared-night-accord-ledger article,
434
+ .alliance-tableau-overview,
435
+ .alliance-tableau-entry,
436
+ .alliance-tableau-path > span,
437
+ .alliance-tableau-actions article,
438
+ .shared-afterglow-tableau-overview > div > span,
439
+ .shared-afterglow-tableau-actions article {
440
+ border-color: rgba(91,111,140,.18);
441
+ background: rgba(247,244,247,.68);
442
+ }
443
+
444
+ .shared-night-accord-overview b,
445
+ .shared-night-accord-ledger b,
446
+ .alliance-tableau-members b,
447
+ .alliance-tableau-path b,
448
+ .alliance-tableau-actions b,
449
+ .shared-afterglow-tableau-overview b,
450
+ .shared-afterglow-tableau-actions b { color: #805a42; }
451
+
452
+ .shared-night-accord-overview em,
453
+ .shared-night-accord-overview small,
454
+ .shared-night-accord-ledger p,
455
+ .shared-night-accord-conclusion,
456
+ .alliance-tableau-overview > p,
457
+ .alliance-tableau-entry > p,
458
+ .alliance-tableau-members span,
459
+ .alliance-tableau-path small,
460
+ .alliance-tableau-path em,
461
+ .alliance-tableau-actions p,
462
+ .shared-afterglow-tableau-overview small,
463
+ .shared-afterglow-tableau-overview em,
464
+ .shared-afterglow-tableau-entry > p,
465
+ .shared-afterglow-tableau-actions p { color: #666a79; }
466
+
467
+ .alliance-tableau-members figure { background: rgba(231,226,232,.72); }
468
+ .alliance-tableau-members img,
469
+ .alliance-tableau-actions img { filter: saturate(1) brightness(1.03); }
470
+ .alliance-tableau-members figcaption { background: linear-gradient(90deg, transparent, rgba(251,247,245,.94) 42%); }
471
+
472
+ .shared-night-accord-ledger blockquote,
473
+ .alliance-tableau-entry > blockquote,
474
+ .shared-afterglow-tableau-entry > blockquote {
475
+ color: #4b655f;
476
+ border-left-color: rgba(63,143,131,.54);
477
+ background: rgba(63,143,131,.07);
478
+ }
479
+
480
+ .gallery-overlay,
481
+ .confirm-overlay,
482
+ .roster-overlay,
483
+ .epilogue-overlay,
484
+ .fate-coda-overlay {
485
+ background: rgba(224, 220, 226, .62);
486
+ backdrop-filter: blur(14px) saturate(.82);
487
+ }
488
+
489
+ .gallery-book > header,
490
+ .roster-sheet > header,
491
+ .epilogue-copy > header,
492
+ .fate-coda-copy > header { border-color: rgba(79,94,122,.19); }
493
+
494
+ .roster-sheet,
495
+ .gallery-book { color: #383c4a; }
496
+
497
+ /* 压力与成功只改变局部色,不改变整场曝光。 */
498
+ .day-consequence.resolved {
499
+ border-color: rgba(63,143,131,.4);
500
+ background: rgba(63,143,131,.07);
501
+ }
502
+
503
+ .day-consequence.missed,
504
+ .hud-notice.urgent {
505
+ border-color: rgba(200,79,92,.44);
506
+ background: rgba(200,79,92,.075);
507
+ }
508
+
509
+ .fast .scene-view > img { animation: none; filter: saturate(1.02) brightness(1.03); }
510
+
511
+ /*
512
+ * 复合叙事页不能继续沿用旧主题的“黑底上叠半透明卡”结构。新插画本身已经
513
+ * 承担场景气氛;面板、旁听者和多人回应要成为彼此分开的纸面层,不能互相透图。
514
+ */
515
+ #app :is(.opening-aftermath-stage, .day-aftermath-stage, .aftermath-stage, [class*="-aftermath-stage"]) {
516
+ background: #e8e4e7;
517
+ }
518
+
519
+ #app :is(
520
+ .day-aftermath-lead,
521
+ .aftermath-main,
522
+ .personal-afterglow-aftermath-close
523
+ ) {
524
+ filter: saturate(1.02) brightness(1.04) contrast(1.01);
525
+ }
526
+
527
+ #app .decision-panel :is(p:not(.eyebrow), li, dd, small, em) { color: #626574; }
528
+ #app .decision-panel :is(h2, h3, h4, b, strong, dt) { color: #343746; }
529
+
530
+ #app .decision-panel :is(
531
+ blockquote,
532
+ [class*="-origin"],
533
+ [class*="-echo"],
534
+ [class*="-memory"],
535
+ [class*="-stake"],
536
+ [class*="-ledger"],
537
+ [class*="-rule"],
538
+ [class*="-voice"],
539
+ [class*="-note"]
540
+ ) {
541
+ color: #515565;
542
+ border-color: rgba(75, 91, 120, .22);
543
+ background: rgba(255, 253, 250, .72);
544
+ }
545
+
546
+ #app .decision-panel :is(
547
+ [class*="-transcript"],
548
+ [class*="-archive"]
549
+ ) li,
550
+ #app .supporting-context > summary,
551
+ #app .supporting-context-pages > * {
552
+ color: #5f6271;
553
+ border-color: rgba(75, 91, 120, .18);
554
+ background: rgba(244, 240, 241, .82);
555
+ }
556
+
557
+ #app .decision-panel :is(
558
+ blockquote,
559
+ [class*="-origin"],
560
+ [class*="-echo"],
561
+ [class*="-memory"],
562
+ [class*="-stake"],
563
+ [class*="-ledger"],
564
+ [class*="-rule"],
565
+ [class*="-voice"],
566
+ [class*="-note"],
567
+ [class*="-transcript"] li,
568
+ [class*="-archive"] li
569
+ ) :is(p, small, em) { color: #626574; }
570
+
571
+ #app .decision-panel :is(
572
+ blockquote,
573
+ [class*="-origin"],
574
+ [class*="-echo"],
575
+ [class*="-memory"],
576
+ [class*="-stake"],
577
+ [class*="-ledger"],
578
+ [class*="-rule"],
579
+ [class*="-voice"],
580
+ [class*="-note"],
581
+ [class*="-transcript"] li,
582
+ [class*="-archive"] li
583
+ ) :is(b, strong) { color: #3f4352; }
584
+
585
+ #app .decision-panel :is(
586
+ blockquote,
587
+ [class*="-origin"],
588
+ [class*="-echo"],
589
+ [class*="-memory"],
590
+ [class*="-stake"],
591
+ [class*="-ledger"],
592
+ [class*="-rule"],
593
+ [class*="-voice"],
594
+ [class*="-note"],
595
+ [class*="-transcript"] li,
596
+ [class*="-archive"] li
597
+ ) > span { color: #91623f; }
598
+
599
+ /* 多人卡不再悬浮在同一张人物图上:给卡组一张不透底的薄绢托纸。 */
600
+ #app :is(
601
+ .opening-aftermath-cast,
602
+ .crisis-cast,
603
+ .crisis-aftermath-cast,
604
+ .pair-portraits,
605
+ .pair-aftermath-cast,
606
+ .jiaoer-aftermath-cast,
607
+ .invitation-aftermath-cast,
608
+ .council-resolution-cast,
609
+ .public-aftermath-cast,
610
+ .act-aftermath-cast,
611
+ .final-aftermath-cast,
612
+ .alliance-assembly-cast,
613
+ .alliance-result-cast,
614
+ .collapse-cast,
615
+ .collapse-result-cast,
616
+ .shared-result-cast,
617
+ .shared-dawn-result-cast
618
+ ) {
619
+ padding: .45rem;
620
+ border: 1px solid rgba(80, 95, 123, .18);
621
+ background: rgba(249, 246, 246, .94);
622
+ box-shadow: 0 18px 52px rgba(67, 63, 84, .14);
623
+ backdrop-filter: blur(12px) saturate(.9);
624
+ }
625
+
626
+ #app :is(
627
+ .opening-aftermath-cast,
628
+ .day-aftermath-reactions,
629
+ .crisis-cast,
630
+ .crisis-aftermath-cast,
631
+ .pair-portraits,
632
+ .pair-aftermath-cast,
633
+ .jiaoer-aftermath-cast,
634
+ .invitation-aftermath-cast,
635
+ .council-resolution-cast,
636
+ .public-aftermath-cast,
637
+ .act-aftermath-cast,
638
+ .final-aftermath-cast,
639
+ .alliance-assembly-cast,
640
+ .alliance-result-cast,
641
+ .collapse-cast,
642
+ .collapse-result-cast,
643
+ .shared-result-cast,
644
+ .shared-dawn-result-cast
645
+ ) figure {
646
+ border-color: rgba(80, 95, 123, .2);
647
+ background: #eee7e6;
648
+ filter: none;
649
+ transform: none;
650
+ }
651
+
652
+ #app :is(
653
+ .opening-aftermath-cast,
654
+ .day-aftermath-reactions,
655
+ .crisis-cast,
656
+ .crisis-aftermath-cast,
657
+ .pair-portraits,
658
+ .pair-aftermath-cast,
659
+ .jiaoer-aftermath-cast,
660
+ .invitation-aftermath-cast,
661
+ .council-resolution-cast,
662
+ .public-aftermath-cast,
663
+ .act-aftermath-cast,
664
+ .final-aftermath-cast,
665
+ .alliance-assembly-cast,
666
+ .alliance-result-cast,
667
+ .collapse-cast,
668
+ .collapse-result-cast,
669
+ .shared-result-cast,
670
+ .shared-dawn-result-cast
671
+ ) figure:not(.speaking):not(.is-responding) { opacity: .8; }
672
+
673
+ #app :is(
674
+ .opening-aftermath-cast,
675
+ .day-aftermath-reactions,
676
+ .crisis-cast,
677
+ .crisis-aftermath-cast,
678
+ .pair-portraits,
679
+ .pair-aftermath-cast,
680
+ .jiaoer-aftermath-cast,
681
+ .invitation-aftermath-cast,
682
+ .council-resolution-cast,
683
+ .public-aftermath-cast,
684
+ .act-aftermath-cast,
685
+ .final-aftermath-cast,
686
+ .alliance-assembly-cast,
687
+ .alliance-result-cast,
688
+ .collapse-cast,
689
+ .collapse-result-cast,
690
+ .shared-result-cast,
691
+ .shared-dawn-result-cast
692
+ ) figure:is(.speaking, .is-responding) {
693
+ opacity: 1;
694
+ border-color: rgba(200, 79, 92, .54);
695
+ box-shadow: 0 10px 28px rgba(130, 66, 82, .14);
696
+ }
697
+
698
+ #app :is(
699
+ .opening-aftermath-cast,
700
+ .day-aftermath-reactions,
701
+ .crisis-cast,
702
+ .crisis-aftermath-cast,
703
+ .pair-portraits,
704
+ .pair-aftermath-cast,
705
+ .jiaoer-aftermath-cast,
706
+ .invitation-aftermath-cast,
707
+ .council-resolution-cast,
708
+ .public-aftermath-cast,
709
+ .act-aftermath-cast,
710
+ .final-aftermath-cast,
711
+ .alliance-assembly-cast,
712
+ .alliance-result-cast,
713
+ .collapse-cast,
714
+ .collapse-result-cast,
715
+ .shared-result-cast,
716
+ .shared-dawn-result-cast
717
+ ) img { filter: saturate(1.02) brightness(1.04) contrast(1.01); }
718
+
719
+ #app :is(
720
+ .opening-aftermath-cast,
721
+ .day-aftermath-reactions,
722
+ .crisis-cast,
723
+ .crisis-aftermath-cast,
724
+ .pair-portraits,
725
+ .pair-aftermath-cast,
726
+ .jiaoer-aftermath-cast,
727
+ .invitation-aftermath-cast,
728
+ .council-resolution-cast,
729
+ .public-aftermath-cast,
730
+ .act-aftermath-cast,
731
+ .final-aftermath-cast,
732
+ .alliance-assembly-cast,
733
+ .alliance-result-cast,
734
+ .collapse-cast,
735
+ .collapse-result-cast,
736
+ .shared-result-cast,
737
+ .shared-dawn-result-cast
738
+ ) figcaption {
739
+ color: #444856;
740
+ background: linear-gradient(transparent, rgba(252, 248, 246, .98) 48%);
741
+ }
742
+
743
+ #app :is(
744
+ .opening-aftermath-cast,
745
+ .day-aftermath-reactions,
746
+ .crisis-cast,
747
+ .crisis-aftermath-cast,
748
+ .pair-portraits,
749
+ .pair-aftermath-cast,
750
+ .jiaoer-aftermath-cast,
751
+ .invitation-aftermath-cast,
752
+ .council-resolution-cast,
753
+ .public-aftermath-cast,
754
+ .act-aftermath-cast,
755
+ .final-aftermath-cast,
756
+ .alliance-assembly-cast,
757
+ .alliance-result-cast,
758
+ .collapse-cast,
759
+ .collapse-result-cast,
760
+ .shared-result-cast,
761
+ .shared-dawn-result-cast
762
+ ) figcaption :is(b, strong) { color: #353846; }
763
+
764
+ #app :is(
765
+ .opening-aftermath-cast,
766
+ .day-aftermath-reactions,
767
+ .crisis-cast,
768
+ .crisis-aftermath-cast,
769
+ .pair-portraits,
770
+ .pair-aftermath-cast,
771
+ .jiaoer-aftermath-cast,
772
+ .invitation-aftermath-cast,
773
+ .council-resolution-cast,
774
+ .public-aftermath-cast,
775
+ .act-aftermath-cast,
776
+ .final-aftermath-cast,
777
+ .alliance-assembly-cast,
778
+ .alliance-result-cast,
779
+ .collapse-cast,
780
+ .collapse-result-cast,
781
+ .shared-result-cast,
782
+ .shared-dawn-result-cast
783
+ ) figcaption :is(span, small, em, p) { color: #666978; }
784
+
785
+ .day-aftermath-reactions figure:only-child {
786
+ width: min(250px, 100%);
787
+ height: min(520px, 72%);
788
+ align-self: center;
789
+ }
790
+
791
+ .aftermath-observer {
792
+ padding: .38rem;
793
+ color: #3f4352;
794
+ border: 1px solid rgba(80, 95, 123, .2);
795
+ background: rgba(252, 248, 246, .94);
796
+ box-shadow: 0 14px 38px rgba(67, 63, 84, .14);
797
+ opacity: 1;
798
+ }
799
+
800
+ .aftermath-observer img {
801
+ mask-image: none;
802
+ filter: saturate(1.02) brightness(1.04) contrast(1.01);
803
+ }
804
+
805
+ .aftermath-observer figcaption span { color: #91623f; }
806
+ .aftermath-observer figcaption b { color: #353846; }
807
+
808
+ /* 单人抉择按内容收高,避免短段落被一整块空白纸面包到屏幕底。 */
809
+ .dialogue-panel,
810
+ .night-talk-panel {
811
+ top: 50%;
812
+ bottom: auto;
813
+ max-height: 88%;
814
+ overflow-y: auto;
815
+ transform: translateY(-50%);
816
+ }
817
+
818
+ /* 结局与后日谈也必须延续亮色叙事,不在最后一屏突然回到旧黑金主题。 */
819
+ .ending-view {
820
+ color: var(--ink);
821
+ background: #eee7e6;
822
+ }
823
+
824
+ .ending-art,
825
+ .ending-view[data-ending="exclusive"] .ending-art,
826
+ .ending-view[data-ending="intrigue"] .ending-art,
827
+ .ending-view[data-ending="unstable"] .ending-art {
828
+ filter: saturate(1.01) brightness(1.03) contrast(1.01);
829
+ background-blend-mode: screen;
830
+ }
831
+
832
+ .ending-copy {
833
+ border-left: 1px solid rgba(80, 95, 123, .16);
834
+ background:
835
+ radial-gradient(circle at 18% 12%, rgba(218, 113, 126, .08), transparent 35%),
836
+ linear-gradient(145deg, rgba(255, 253, 249, .985), rgba(240, 237, 243, .97));
837
+ box-shadow: -20px 0 54px rgba(67, 63, 84, .12);
838
+ }
839
+
840
+ .ending-copy h1 { color: #303342; }
841
+ .ending-copy h1:focus-visible {
842
+ outline: 2px solid rgba(200, 79, 92, .54);
843
+ outline-offset: .3rem;
844
+ }
845
+ .ending-tag { color: #9a6834; }
846
+ .ending-copy > p:not(.eyebrow):not(.ending-tag):not(.ending-note) { color: #5f6372; }
847
+ .ending-note { color: #737584; }
848
+
849
+ /* 长结局总账允许读者翻动正文,但结果动作始终像书页脚签一样留在视口内。 */
850
+ .ending-copy > .button-row {
851
+ position: sticky;
852
+ z-index: 4;
853
+ bottom: -4vh;
854
+ margin: auto -1.2vw -4vh;
855
+ padding: .7rem 1.2vw .8rem;
856
+ border-top: 1px solid rgba(80, 95, 123, .16);
857
+ background: linear-gradient(0deg, rgba(250,248,247,.995), rgba(250,248,247,.96));
858
+ box-shadow: 0 -12px 28px rgba(67,63,84,.08);
859
+ }
860
+
861
+ .ending-copy > .button-row .ink-button {
862
+ flex: 1 1 7.5rem;
863
+ min-width: 0;
864
+ padding: .58rem .7rem;
865
+ font-size: .7rem;
866
+ }
867
+
868
+ .ending-ledger span,
869
+ .ending-habits,
870
+ .ending-habits article,
871
+ .household-ending span {
872
+ color: #626574;
873
+ border-color: rgba(80, 95, 123, .18);
874
+ background: rgba(255, 253, 250, .64);
875
+ }
876
+
877
+ .ending-ledger b,
878
+ .ending-habits > header b,
879
+ .ending-habits article b,
880
+ .household-ending b { color: #454958; }
881
+
882
+ .ending-habits > header,
883
+ .ending-habits article span,
884
+ .ending-habits article small,
885
+ .household-ending small { color: #737584; }
886
+
887
+ .epilogue-book,
888
+ .fate-coda-book {
889
+ color: var(--ink);
890
+ border-color: rgba(80, 95, 123, .24);
891
+ background: #eee7e8;
892
+ box-shadow: 0 32px 90px rgba(67, 63, 84, .28);
893
+ }
894
+
895
+ .epilogue-art { background: #e8e2e3; }
896
+ .epilogue-art::after { background: linear-gradient(90deg, transparent 62%, rgba(244, 239, 240, .9)); }
897
+ .epilogue-art img { filter: saturate(1.02) brightness(1.03) contrast(1.01); }
898
+ .epilogue-art > span { color: rgba(154, 104, 52, .22); }
899
+
900
+ .epilogue-copy h2,
901
+ .epilogue-body,
902
+ .epilogue-progress,
903
+ .epilogue-relations b,
904
+ .epilogue-route-note,
905
+ .epilogue-habit b,
906
+ .epilogue-habit p,
907
+ .epilogue-night-conversations header b,
908
+ .epilogue-night-conversations li b,
909
+ .epilogue-night-conversations li p { color: #4e5261; }
910
+
911
+ .epilogue-relations span,
912
+ .epilogue-route-note,
913
+ .epilogue-habit,
914
+ .epilogue-night-conversations,
915
+ .epilogue-night-conversations li {
916
+ color: #666978;
917
+ border-color: rgba(80, 95, 123, .18);
918
+ background: rgba(255, 253, 250, .64);
919
+ }
920
+
921
+ .fate-coda-art { filter: saturate(1.01) brightness(1.03) contrast(1.01); }
922
+ .fate-coda-art::after {
923
+ background: linear-gradient(90deg, rgba(242, 241, 246, .98) 0%, rgba(242, 241, 246, .9) 31%, rgba(242, 241, 246, .2) 55%, transparent 76%);
924
+ }
925
+
926
+ .fate-coda-copy {
927
+ color: #4e5261;
928
+ background: linear-gradient(90deg, rgba(248, 250, 252, .99), rgba(248, 250, 252, .9) 72%, transparent);
929
+ }
930
+
931
+ .fate-coda-copy > header p,
932
+ .fate-coda-copy > header .eyebrow,
933
+ .fate-coda-progress i,
934
+ .fate-coda-variants > span { color: #6d7180; }
935
+
936
+ .fate-coda-variants,
937
+ .fate-coda-variants button {
938
+ color: #555968;
939
+ border-color: rgba(80, 95, 123, .2);
940
+ background: rgba(255, 253, 250, .7);
941
+ }
942
+
943
+ .fate-coda-variants button.current {
944
+ color: #8d4450;
945
+ border-color: rgba(200, 79, 92, .48);
946
+ background: rgba(200, 79, 92, .07);
947
+ }
948
+
949
+ .fate-coda-copy h2 { color: #303442; }
950
+ .fate-coda-body,
951
+ .fate-coda-decision > p,
952
+ .fate-coda-result p,
953
+ .fate-coda-combination > p { color: #5f6372; }
954
+
955
+ .fate-coda-ledger-section,
956
+ .fate-coda-ledger-section article,
957
+ .fate-coda-result {
958
+ color: #555968;
959
+ border-color: rgba(80, 95, 123, .2);
960
+ background: rgba(255, 253, 250, .7);
961
+ }
962
+
963
+ .fate-coda-ledger-section > header span,
964
+ .fate-coda-ledger-section article > span,
965
+ .fate-coda-result span,
966
+ .fate-coda-combination > span { color: #737786; }
967
+
968
+ .fate-coda-ledger-section > header h3,
969
+ .fate-coda-ledger-section article > b,
970
+ .fate-coda-result b,
971
+ .fate-coda-combination > b { color: #454958; }
972
+
973
+ .fate-coda-ledger-section article > p { color: #626574; }
974
+
975
+ .fate-coda-decision .choice-button {
976
+ color: #343745;
977
+ border-color: rgba(79, 91, 120, .2);
978
+ background: rgba(255, 253, 249, .82);
979
+ }
980
+
981
+ .fate-coda-decision .choice-button:hover,
982
+ .fate-coda-decision .choice-button:focus-visible {
983
+ border-color: rgba(200, 79, 92, .5);
984
+ background: #fffaf7;
985
+ }
986
+
987
+ .fate-coda-copy > footer > span { color: #707483; }
988
+
989
+ @media (max-width: 900px) {
990
+ .age-gate {
991
+ background:
992
+ linear-gradient(0deg, rgba(255,250,245,.98) 0%, rgba(255,250,245,.87) 56%, rgba(255,250,245,.22) 100%),
993
+ url('../assets/bg/compound_new_guofeng.webp') center / cover;
994
+ }
995
+
996
+ .title-art {
997
+ inset: 0 0 auto;
998
+ height: 52%;
999
+ background-color: #f8e8e2;
1000
+ background-position: 63% top;
1001
+ background-size: auto 100%;
1002
+ background-repeat: no-repeat;
1003
+ }
1004
+
1005
+ .title-art::after {
1006
+ background: linear-gradient(0deg, #f7e8e2 0%, rgba(247,232,226,.86) 36%, rgba(247,232,226,.04) 72%);
1007
+ }
1008
+
1009
+ .title-copy {
1010
+ justify-content: flex-start;
1011
+ padding: 42vh 1.2rem 1.25rem;
1012
+ background: linear-gradient(0deg, rgba(247,232,226,.99), rgba(247,232,226,.8) 68%, transparent);
1013
+ }
1014
+
1015
+ .title-copy h1 {
1016
+ white-space: nowrap;
1017
+ font-size: clamp(2rem, 8.7vw, 2.45rem);
1018
+ }
1019
+
1020
+ .title-copy::after { width: 13rem; margin-bottom: .65rem; }
1021
+ .visit-prompt { background: rgba(255,251,248,.94); }
1022
+
1023
+ /* 窄屏只保留一张主图;重复的人物卡会把画面和正文同时吃掉。 */
1024
+ .opening-aftermath-cast,
1025
+ .day-aftermath-reactions,
1026
+ .aftermath-observer { display: none; }
1027
+
1028
+ .opening-aftermath-panel,
1029
+ .aftermath-panel { max-height: 76%; overflow-y: auto; }
1030
+
1031
+ .dialogue-panel,
1032
+ .night-talk-panel {
1033
+ top: auto;
1034
+ bottom: 2%;
1035
+ max-height: 76%;
1036
+ transform: none;
1037
+ }
1038
+
1039
+ #app :is(
1040
+ .crisis-cast,
1041
+ .crisis-aftermath-cast,
1042
+ .pair-portraits,
1043
+ .pair-aftermath-cast,
1044
+ .jiaoer-aftermath-cast,
1045
+ .invitation-aftermath-cast,
1046
+ .council-resolution-cast,
1047
+ .public-aftermath-cast,
1048
+ .act-aftermath-cast,
1049
+ .final-aftermath-cast,
1050
+ .alliance-assembly-cast,
1051
+ .alliance-result-cast,
1052
+ .collapse-cast,
1053
+ .collapse-result-cast,
1054
+ .shared-result-cast,
1055
+ .shared-dawn-result-cast
1056
+ ) {
1057
+ top: 1.5%;
1058
+ bottom: auto;
1059
+ height: 22%;
1060
+ padding: .2rem;
1061
+ }
1062
+
1063
+ #app :is(
1064
+ .crisis-cast,
1065
+ .crisis-aftermath-cast,
1066
+ .pair-portraits,
1067
+ .pair-aftermath-cast,
1068
+ .jiaoer-aftermath-cast,
1069
+ .invitation-aftermath-cast,
1070
+ .council-resolution-cast,
1071
+ .public-aftermath-cast,
1072
+ .act-aftermath-cast,
1073
+ .final-aftermath-cast,
1074
+ .alliance-assembly-cast,
1075
+ .alliance-result-cast,
1076
+ .collapse-cast,
1077
+ .collapse-result-cast,
1078
+ .shared-result-cast,
1079
+ .shared-dawn-result-cast
1080
+ ) figcaption :is(p, small, em) { display: none; }
1081
+
1082
+ #app .scene-scrim {
1083
+ background: linear-gradient(0deg, rgba(246,242,246,.96), rgba(246,242,246,.16) 74%);
1084
+ }
1085
+
1086
+ .close-cg::after,
1087
+ .morning-cg::after {
1088
+ background: linear-gradient(0deg, rgba(243,240,245,.98) 0%, rgba(243,240,245,.83) 47%, rgba(243,240,245,.05) 78%);
1089
+ }
1090
+
1091
+ .fate-coda-art::after {
1092
+ background: linear-gradient(0deg, rgba(240,244,248,.99) 0%, rgba(240,244,248,.9) 62%, rgba(240,244,248,.06) 91%);
1093
+ }
1094
+
1095
+ .fate-coda-copy {
1096
+ background: linear-gradient(0deg, rgba(248,250,252,.995), rgba(248,250,252,.91) 78%, transparent);
1097
+ }
1098
+
1099
+ .ending-art { opacity: .76; }
1100
+ .ending-copy {
1101
+ background: linear-gradient(0deg, rgba(250, 247, 245, .995) 0%, rgba(250, 247, 245, .95) 64%, rgba(250, 247, 245, .88) 100%);
1102
+ }
1103
+
1104
+ .epilogue-art::after { background: linear-gradient(0deg, rgba(244, 239, 240, .94), transparent 62%); }
1105
+ }
1106
+
1107
+ @media (prefers-reduced-motion: reduce) {
1108
+ .title-art,
1109
+ .door-card img,
1110
+ .night-talk-cg,
1111
+ .close-portrait,
1112
+ .scene-view > img {
1113
+ transition: none !important;
1114
+ animation: none !important;
1115
+ }
1116
+ }
1117
+
1118
+ /* 2026-09 画面重构:把标题做成一张可读的“人物权力总账”,而不是文案压在 CG 上。 */
1119
+ .title-folio {
1120
+ position: absolute;
1121
+ z-index: 3;
1122
+ top: 4.5vh;
1123
+ left: 2.2vw;
1124
+ display: grid;
1125
+ gap: .3rem;
1126
+ padding-left: .75rem;
1127
+ border-left: 2px solid rgba(200, 79, 92, .54);
1128
+ color: #3d4251;
1129
+ writing-mode: vertical-rl;
1130
+ }
1131
+
1132
+ .title-folio b {
1133
+ font-size: .78rem;
1134
+ font-weight: 600;
1135
+ letter-spacing: .24em;
1136
+ }
1137
+
1138
+ .title-folio span {
1139
+ color: #8c6670;
1140
+ font: .62rem var(--sans);
1141
+ letter-spacing: .14em;
1142
+ }
1143
+
1144
+ .title-cast {
1145
+ position: absolute;
1146
+ z-index: 4;
1147
+ right: 2.2vw;
1148
+ bottom: 2.4vh;
1149
+ width: min(50rem, 55vw);
1150
+ display: grid;
1151
+ grid-template-columns: repeat(5, minmax(0, 1fr));
1152
+ gap: 1px;
1153
+ margin: 0;
1154
+ padding: 0;
1155
+ list-style: none;
1156
+ border: 1px solid rgba(255,255,255,.62);
1157
+ background: rgba(76, 78, 99, .12);
1158
+ box-shadow: 0 16px 40px rgba(65, 56, 74, .16);
1159
+ backdrop-filter: blur(18px) saturate(.86);
1160
+ }
1161
+
1162
+ .title-cast li {
1163
+ position: relative;
1164
+ min-width: 0;
1165
+ display: grid;
1166
+ grid-template-columns: auto 1fr;
1167
+ grid-template-rows: auto auto;
1168
+ column-gap: .65rem;
1169
+ padding: .72rem .8rem .66rem;
1170
+ color: #353947;
1171
+ background: rgba(255, 251, 247, .78);
1172
+ }
1173
+
1174
+ .title-cast li::after {
1175
+ content: "";
1176
+ position: absolute;
1177
+ inset: auto .8rem 0;
1178
+ height: 2px;
1179
+ background: var(--cast-color, var(--cinnabar));
1180
+ }
1181
+
1182
+ .title-cast li:nth-child(1) { --cast-color: var(--azurite); }
1183
+ .title-cast li:nth-child(2) { --cast-color: var(--cinnabar); }
1184
+ .title-cast li:nth-child(3) { --cast-color: #d5aa65; }
1185
+ .title-cast li:nth-child(4) { --cast-color: var(--lilac); }
1186
+ .title-cast li:nth-child(5) { --cast-color: var(--jade); }
1187
+ .title-cast i {
1188
+ grid-row: 1 / 3;
1189
+ align-self: center;
1190
+ color: var(--cast-color);
1191
+ font: 500 .62rem/1 var(--sans);
1192
+ }
1193
+ .title-cast span { font-size: .84rem; letter-spacing: .12em; }
1194
+ .title-cast b { color: #777987; font: 500 .6rem/1.4 var(--sans); letter-spacing: .1em; }
1195
+
1196
+ /* 开局把抉择变成一张靠左的案件封套,留出右侧五人的完整表情和器物。 */
1197
+ .opening-scene::after {
1198
+ background:
1199
+ linear-gradient(90deg, rgba(250,246,244,.96) 0%, rgba(250,246,244,.76) 38%, rgba(250,246,244,.08) 64%, transparent 78%),
1200
+ linear-gradient(0deg, rgba(69,61,79,.12), transparent 58%);
1201
+ }
1202
+
1203
+ .opening-panel {
1204
+ left: 4vw;
1205
+ top: 50%;
1206
+ bottom: auto;
1207
+ width: min(38rem, 44vw);
1208
+ display: grid;
1209
+ grid-template-columns: 4.2rem minmax(0, 1fr);
1210
+ column-gap: 1.15rem;
1211
+ padding: 1.5rem 1.5rem 1.35rem 1.2rem;
1212
+ transform: translateY(-50%);
1213
+ }
1214
+
1215
+ .opening-panel::before {
1216
+ inset: 8px;
1217
+ border-color: rgba(53,95,152,.1);
1218
+ }
1219
+
1220
+ .opening-panel > :not(.opening-case) { grid-column: 2; }
1221
+ .opening-case {
1222
+ grid-column: 1;
1223
+ grid-row: 1 / 4;
1224
+ min-height: 100%;
1225
+ display: flex;
1226
+ flex-direction: column;
1227
+ align-items: center;
1228
+ padding-right: 1rem;
1229
+ border-right: 1px solid rgba(76, 92, 119, .18);
1230
+ }
1231
+ .opening-case span { color: #aa5260; font: 700 .52rem/1 var(--sans); letter-spacing: .18em; }
1232
+ .opening-case b { margin: .35rem 0; color: #343846; font: 300 2.8rem/1 var(--serif); }
1233
+ .opening-case i { color: #8b6a47; font: 500 .65rem/1.6 var(--sans); letter-spacing: .12em; writing-mode: vertical-rl; }
1234
+ .opening-panel .phase-header h2 { font-size: clamp(1.85rem, 2.55vw, 2.8rem); }
1235
+ .opening-panel .speaker-line {
1236
+ margin: .9rem 0 1rem;
1237
+ padding: .65rem .75rem;
1238
+ border-left: 2px solid rgba(200,79,92,.48);
1239
+ }
1240
+ .opening-panel .choice-grid { gap: .55rem; }
1241
+ .opening-panel .choice-button { min-height: 4.2rem; }
1242
+
1243
+ @media (max-width: 900px) {
1244
+ .title-folio { display: none; }
1245
+ .title-cast {
1246
+ top: 35.5%;
1247
+ right: 1rem;
1248
+ bottom: auto;
1249
+ left: 1rem;
1250
+ width: auto;
1251
+ box-shadow: 0 10px 30px rgba(65,56,74,.12);
1252
+ }
1253
+ .title-cast li {
1254
+ display: grid;
1255
+ grid-template-columns: 1fr;
1256
+ justify-items: center;
1257
+ gap: .18rem;
1258
+ padding: .48rem .2rem .45rem;
1259
+ }
1260
+ .title-cast i { display: none; }
1261
+ .title-cast span { font-size: .72rem; letter-spacing: .08em; }
1262
+ .title-cast b { font-size: .48rem; }
1263
+ .title-copy { padding-top: 46vh; }
1264
+
1265
+ .opening-scene::after {
1266
+ background: linear-gradient(0deg, rgba(247,243,245,.99) 0%, rgba(247,243,245,.92) 42%, rgba(247,243,245,.04) 76%);
1267
+ }
1268
+ .opening-panel {
1269
+ left: 3%;
1270
+ right: 3%;
1271
+ top: auto;
1272
+ bottom: 2%;
1273
+ width: auto;
1274
+ max-height: 74%;
1275
+ grid-template-columns: 1fr;
1276
+ gap: 0;
1277
+ padding: 1rem;
1278
+ transform: none;
1279
+ }
1280
+ .opening-panel > :not(.opening-case) { grid-column: 1; }
1281
+ .opening-case {
1282
+ grid-column: 1;
1283
+ grid-row: auto;
1284
+ min-height: 0;
1285
+ flex-direction: row;
1286
+ justify-content: flex-start;
1287
+ gap: .4rem;
1288
+ margin-bottom: .35rem;
1289
+ padding: 0 0 .4rem;
1290
+ border-right: 0;
1291
+ border-bottom: 1px solid rgba(76,92,119,.16);
1292
+ }
1293
+ .opening-case b { margin: 0; font-size: 1.2rem; }
1294
+ .opening-case i { writing-mode: horizontal-tb; }
1295
+ .opening-panel .phase-header h2 { font-size: clamp(1.65rem, 7vw, 2rem); }
1296
+ .opening-panel .phase-header > p:last-child { line-height: 1.65; }
1297
+ .opening-panel .speaker-line { margin: .55rem 0 .7rem; padding: .45rem .55rem; }
1298
+ }
1299
+
1300
+ @media (max-width: 460px) {
1301
+ .title-copy h1 { font-size: 1.9rem; }
1302
+ .title-subtitle { margin-bottom: .7rem; font-size: .88rem; }
1303
+ .identity-line { margin-bottom: .8rem; font-size: .78rem; line-height: 1.65; }
1304
+ .title-actions { gap: .45rem; margin-bottom: .65rem; }
1305
+ .title-actions .ink-button { flex: 1 1 calc(50% - .45rem); min-width: 0; padding: .65rem .7rem; }
1306
+ .title-actions #btn-gallery { flex-basis: 100%; }
1307
+ .rating-line, .save-note { margin-block: .3rem; font-size: .62rem; }
1308
+ .opening-panel { max-height: 78%; }
1309
+ .opening-panel .choice-grid { grid-template-columns: 1fr; gap: .4rem; }
1310
+ .opening-panel .choice-button { min-height: 3.6rem; }
1311
+ }
1312
+
1313
+ /* 2026-09 第二轮整体重设:正戏不再是一组等重的审计卡,而是一桌、一物、一人。 */
1314
+ :root {
1315
+ --scene-ink: #171d29;
1316
+ --scene-paper: #f2eadc;
1317
+ --scene-red: #9f2630;
1318
+ --scene-gold: #c5a264;
1319
+ }
1320
+
1321
+ /* 标题页不再套用第二轮的深色覆盖:那组规则是为已撤回的暗色群像配的,会把原版明亮封面压暗。
1322
+ * 标题沿用上方 08-25 的亮底规则;下方白日、路线与夜谈的重设保留。 */
1323
+
1324
+ /* 白日:一张掀起的宣纸靠左,院落与人物行动留出大面积呼吸。 */
1325
+ #app .hub-stage:not(.evening)::after {
1326
+ background:
1327
+ linear-gradient(90deg, rgba(20,28,36,.24) 0%, rgba(21,28,36,.04) 58%),
1328
+ linear-gradient(0deg, rgba(19,27,34,.24), transparent 52%);
1329
+ }
1330
+ #app .day-panel {
1331
+ left: clamp(1.2rem,5vw,5.5rem);
1332
+ right: auto;
1333
+ top: 50%;
1334
+ bottom: auto;
1335
+ width: min(42rem,48vw);
1336
+ max-height: 88%;
1337
+ padding: clamp(1.3rem,2.3vw,2.4rem) clamp(1.2rem,2.5vw,2.7rem) clamp(1.2rem,2.2vw,2.2rem) 6.1rem;
1338
+ transform: translateY(-50%) rotate(-.22deg);
1339
+ border: 0;
1340
+ border-radius: 0 1.4rem 1.4rem 0;
1341
+ background:
1342
+ linear-gradient(96deg, rgba(229,217,197,.98), rgba(250,244,232,.94) 78%, rgba(248,241,228,.88));
1343
+ box-shadow: 20px 28px 70px rgba(20,26,32,.3), inset 1px 0 rgba(255,255,255,.9);
1344
+ backdrop-filter: blur(7px);
1345
+ }
1346
+ #app .day-panel::before { inset: .65rem; border: 0; border-left: 1px solid rgba(144,73,54,.22); }
1347
+ .day-scene-mark {
1348
+ position: absolute;
1349
+ left: 1rem;
1350
+ top: 1.35rem;
1351
+ bottom: 1.35rem;
1352
+ width: 3.8rem;
1353
+ display: flex;
1354
+ flex-direction: column;
1355
+ align-items: center;
1356
+ gap: .35rem;
1357
+ padding-right: .8rem;
1358
+ border-right: 1px solid rgba(91,79,64,.2);
1359
+ }
1360
+ .day-scene-mark span { color: #a0443e; font: 700 .55rem var(--sans); letter-spacing: .24em; }
1361
+ .day-scene-mark b { color: #252a31; font: 300 2.5rem/1 var(--serif); }
1362
+ .day-scene-mark i { color: #72604c; font: 500 .66rem/1.5 var(--sans); letter-spacing: .14em; writing-mode: vertical-rl; }
1363
+ .day-panel .phase-header .eyebrow { color: #9e413d; letter-spacing: .19em; }
1364
+ .day-panel .phase-header h2 { color: #222833; font-size: clamp(2rem,3vw,3.25rem); line-height: 1.04; }
1365
+ .day-panel .phase-header > p:last-child { color: #574f45; max-width: 34rem; font-size: .95rem; line-height: 1.78; }
1366
+ .day-actions { counter-reset: day-choice; gap: .6rem; }
1367
+ .day-actions .choice-button { counter-increment: day-choice; position: relative; padding-left: 3.25rem; border: 0; border-bottom: 1px solid rgba(91,73,55,.2); border-radius: .2rem; background: rgba(255,252,244,.6); box-shadow: none; }
1368
+ .day-actions .choice-button::before { content: counter(day-choice, cjk-ideographic); position:absolute; left:.9rem; top:50%; translate:0 -50%; color:#a02d35; font: 500 1.2rem var(--serif); }
1369
+ .day-actions .choice-button:hover:not(:disabled) { transform: translateX(.35rem); background: #fffaf0; box-shadow: -4px 0 #9f2630; }
1370
+
1371
+ /* 人物路线与普通夜晚:近景占右,左侧窄绢只承载她此刻的一句话。 */
1372
+ #app :is(.dialogue-stage, .night-talk-stage)::after {
1373
+ background:
1374
+ linear-gradient(90deg, rgba(13,18,28,.96) 0%, rgba(19,24,36,.91) 38%, rgba(18,23,34,.28) 61%, rgba(12,17,26,.08) 100%),
1375
+ linear-gradient(0deg, rgba(7,12,21,.45), transparent 62%);
1376
+ }
1377
+ #app :is(.dialogue-stage, .night-talk-stage) .close-cg { filter: saturate(.92) brightness(.86) contrast(1.08); }
1378
+ #app :is(.dialogue-panel, .night-talk-panel) {
1379
+ left: clamp(1.15rem,4.5vw,5rem);
1380
+ right: auto;
1381
+ top: 50%;
1382
+ bottom: auto;
1383
+ width: min(35rem,41vw);
1384
+ max-height: 88%;
1385
+ padding: 2rem 2rem 1.7rem 4.4rem;
1386
+ transform: translateY(-50%);
1387
+ color: #ede1cf;
1388
+ border: 0;
1389
+ border-left: 1px solid rgba(198,162,99,.56);
1390
+ border-radius: 0;
1391
+ background: linear-gradient(90deg, rgba(16,21,31,.93), rgba(24,29,41,.78));
1392
+ box-shadow: 30px 0 70px rgba(5,8,14,.22);
1393
+ backdrop-filter: blur(10px);
1394
+ }
1395
+ #app :is(.dialogue-panel, .night-talk-panel)::before { display: none; }
1396
+ #app :is(.dialogue-panel, .night-talk-panel) .phase-header .eyebrow { color: #c7a46c; letter-spacing: .2em; }
1397
+ #app :is(.dialogue-panel, .night-talk-panel) .phase-header h2 { color: #fff2da; font-size: clamp(2.4rem,4vw,4.5rem); line-height: .96; }
1398
+ #app :is(.dialogue-panel, .night-talk-panel) .phase-header > p:last-child { color: #e1d2bd; font-size: 1rem; line-height: 1.8; }
1399
+ .character-seal { position:absolute; left:.8rem; top:2rem; display:grid; justify-items:center; gap:.5rem; }
1400
+ .character-seal i { display:grid; place-items:center; width:2.25rem; aspect-ratio:1; color:#ffe8bd; border:1px solid rgba(202,161,95,.65); border-radius:50%; font:500 1rem var(--serif); }
1401
+ .character-seal span { color:rgba(231,211,178,.62); font:600 .55rem var(--sans); letter-spacing:.16em; writing-mode:vertical-rl; }
1402
+ #app .dialogue-panel p.want-line { margin:.85rem 0 1rem; padding:.8rem 0 .8rem 1rem; color:#d8c8b2; border:0; border-left:2px solid #8f2832; background:rgba(255,255,255,.035); }
1403
+ #app .dialogue-panel .want-line > b { display:block; margin-bottom:.3rem; color:#c9a568; font:600 .58rem var(--sans); letter-spacing:.14em; }
1404
+ #app .dialogue-panel .want-line span { color:#bdad97; }
1405
+ #app .dialogue-panel .want-line small { color:rgba(218,204,184,.64); }
1406
+ #app :is(.dialogue-panel, .night-talk-panel) :is(.choice-stack,.choice-grid) { counter-reset: night-choice; gap:.55rem; }
1407
+ #app :is(.dialogue-panel, .night-talk-panel) .choice-button { counter-increment:night-choice; position:relative; min-height:3.6rem; padding:.7rem .9rem .7rem 3.2rem; color:#f1e5d2; border:1px solid rgba(209,178,125,.2); border-left:0; background:rgba(239,223,194,.055); box-shadow:none; }
1408
+ #app :is(.dialogue-panel, .night-talk-panel) .choice-button::before { content:counter(night-choice, cjk-ideographic); position:absolute; left:1rem; top:50%; translate:0 -50%; color:#c5a264; font:500 1rem var(--serif); }
1409
+ #app :is(.dialogue-panel, .night-talk-panel) .choice-button span { color:rgba(224,208,184,.62); }
1410
+ #app :is(.dialogue-panel, .night-talk-panel) .choice-button:hover:not(:disabled) { color:#fff8eb; border-color:rgba(184,54,65,.68); background:rgba(151,35,45,.42); transform:translateX(.3rem); }
1411
+ #app :is(.dialogue-panel, .night-talk-panel) .consent-note { color:rgba(231,215,192,.65); }
1412
+
1413
+ @media (max-width: 900px) {
1414
+ #app .day-panel { left:3%; right:3%; top:auto; bottom:2%; width:auto; max-height:77%; padding:1rem 1rem 1rem 4.4rem; transform:none; }
1415
+ .day-scene-mark { left:.65rem; top:1rem; bottom:1rem; width:3rem; }
1416
+ .day-scene-mark b { font-size:1.8rem; }
1417
+ #app :is(.dialogue-panel, .night-talk-panel) { left:3%; right:3%; top:auto; bottom:2%; width:auto; max-height:74%; padding:1.1rem 1rem 1rem 3.5rem; transform:none; background:linear-gradient(90deg, rgba(16,21,31,.97),rgba(24,29,41,.92)); }
1418
+ .character-seal { left:.55rem; top:1.2rem; }
1419
+ }
1420
+
1421
+ /* 第二轮文字可读性复核:纹理退到空气层,必要事实不能靠低对比度降级。 */
1422
+ #app::after {
1423
+ opacity: .08;
1424
+ mix-blend-mode: soft-light;
1425
+ background-image: linear-gradient(115deg, rgba(255,255,255,.05), transparent 42%, rgba(111,58,68,.035));
1426
+ background-size: auto;
1427
+ }
1428
+ #app :is(.dialogue-stage, .night-talk-stage)::after {
1429
+ background:
1430
+ linear-gradient(90deg, rgba(16,22,32,.88) 0%, rgba(19,26,37,.72) 39%, rgba(19,25,36,.16) 61%, transparent 100%),
1431
+ linear-gradient(0deg, rgba(21,27,38,.14), transparent 58%);
1432
+ }
1433
+ #app :is(.dialogue-panel, .night-talk-panel) {
1434
+ background: linear-gradient(100deg, rgba(25,33,45,.96), rgba(32,40,53,.91));
1435
+ }
1436
+ #app :is(.dialogue-panel, .night-talk-panel) .phase-header > p:last-child {
1437
+ color: #f0e3d0;
1438
+ font-size: 1.04rem;
1439
+ line-height: 1.82;
1440
+ }
1441
+ #app .dialogue-panel p.want-line {
1442
+ color: #eadbc5;
1443
+ background: #303a49;
1444
+ font-size: .9rem;
1445
+ line-height: 1.68;
1446
+ }
1447
+ #app .dialogue-panel .want-line > b { color: #e2bd78; font-size: .75rem; }
1448
+ #app .dialogue-panel .want-line span { color: #dbc8ab; font-size: .86rem; }
1449
+ #app .dialogue-panel .want-line small { color: #cfc0aa; font-size: .76rem; line-height: 1.65; }
1450
+ #app :is(.dialogue-panel, .night-talk-panel) .choice-button b {
1451
+ color: #fff1da;
1452
+ font-size: .93rem;
1453
+ line-height: 1.38;
1454
+ }
1455
+ #app :is(.dialogue-panel, .night-talk-panel) .choice-button span {
1456
+ color: #d7c5a9;
1457
+ font-size: .76rem;
1458
+ line-height: 1.5;
1459
+ }
1460
+ #app :is(.dialogue-panel, .night-talk-panel) .choice-button {
1461
+ border-color: rgba(224,193,140,.3);
1462
+ background: rgba(249,231,201,.085);
1463
+ }
1464
+ #app :is(.dialogue-panel, .night-talk-panel) .choice-button:focus-visible {
1465
+ outline: 2px solid #e2bd78;
1466
+ outline-offset: 3px;
1467
+ }
1468
+ .ending-old-account {
1469
+ margin: .8rem 0 1rem;
1470
+ color: #5f5860;
1471
+ border-top: 1px solid rgba(114,82,72,.18);
1472
+ border-bottom: 1px solid rgba(114,82,72,.18);
1473
+ }
1474
+ .ending-old-account summary {
1475
+ padding: .65rem 0;
1476
+ color: #8d514a;
1477
+ cursor: pointer;
1478
+ font: 600 .76rem var(--sans);
1479
+ letter-spacing: .08em;
1480
+ }
1481
+ .ending-old-account p { margin: 0 0 .8rem; }
1482
+ @media (max-width: 900px) {
1483
+ #app :is(.dialogue-panel, .night-talk-panel) { max-height: 82%; }
1484
+ }
1485
+ @media (max-width: 460px) {
1486
+ #app :is(.dialogue-panel, .night-talk-panel) { padding-top: .9rem; padding-bottom: .8rem; }
1487
+ #app :is(.dialogue-panel, .night-talk-panel) .phase-header h2 { font-size: 2.1rem; }
1488
+ #app :is(.dialogue-panel, .night-talk-panel) .phase-header > p:last-child { font-size: .92rem; line-height: 1.66; }
1489
+ #app .dialogue-panel p.want-line { margin: .55rem 0 .65rem; padding-block: .5rem; font-size: .84rem; }
1490
+ #app .dialogue-panel .want-line span { font-size: .79rem; }
1491
+ #app .dialogue-panel .want-line small { font-size: .75rem; }
1492
+ #app .dialogue-panel .choice-stack { grid-template-columns: 1fr; gap: .4rem; }
1493
+ #app :is(.dialogue-panel, .night-talk-panel) .choice-button { min-height: 3.15rem; padding-block: .55rem; }
1494
+ }