@oh-story/dsh 0.1.8 → 0.1.10
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.
- package/README.md +14 -14
- package/lib/client.js +237 -84
- package/lib/client.js.map +3 -3
- package/lib/drama/manifest.json +183 -77
- package/lib/drama/skills/short-drama/SKILL.md +5 -1
- package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +140 -9
- package/lib/drama/skills/short-drama/scripts/project_tool.py +11 -0
- package/lib/drama/skills/short-drama-assets/references/character-and-look.md +28 -0
- package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +8 -2
- package/lib/drama/skills/short-drama-assets/references/voice-direction.md +28 -0
- package/lib/drama/skills/short-drama-edit/SKILL.md +146 -0
- package/lib/drama/skills/short-drama-edit/agents/openai.yaml +4 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +60 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +15 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/remotion.config.ts +6 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +26 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +88 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +46 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/index.ts +4 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +32 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +13 -0
- package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +43 -0
- package/lib/drama/skills/short-drama-edit/references/cut-craft.md +38 -0
- package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +29 -0
- package/lib/drama/skills/short-drama-edit/references/generated-footage.md +54 -0
- package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +60 -0
- package/lib/drama/skills/short-drama-edit/references/stage-contract.md +51 -0
- package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1156 -0
- package/lib/drama/skills/short-drama-edit/scripts/selftest.py +520 -0
- package/lib/drama/skills/short-drama-image-prompts/SKILL.md +2 -0
- package/lib/drama/skills/short-drama-image-prompts/assets/image-prompts.md +5 -0
- package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-prompts.md +3 -0
- package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +11 -0
- package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +2 -2
- package/lib/drama/skills/short-drama-novel-analyze/references/chapter-extraction.md +4 -1
- package/lib/drama/skills/short-drama-produce/SKILL.md +29 -4
- package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +22 -0
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +13 -12
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
- package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +7 -0
- package/lib/drama/skills/short-drama-produce/scripts/fixture_adapter.py +18 -1
- package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +181 -2
- package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +199 -3
- package/lib/drama/skills/short-drama-review/SKILL.md +2 -0
- package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +7 -0
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +10 -0
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +12 -1
- package/lib/drama/skills/short-drama-storyboard/assets/keyframe-prompts.md +4 -0
- package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +78 -2
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +2 -0
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +12 -5
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +17 -0
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +76 -7
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +5 -2
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +21 -0
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +6 -17
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +12 -3
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +61 -5
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +3 -3
- package/lib/drama/skills/short-drama-write/SKILL.md +11 -2
- package/lib/drama/skills/short-drama-write/references/screenplay-format.md +6 -0
- package/lib/drama/skills/short-drama-write/references/stage-contract.md +1 -0
- package/lib/index.js +290 -90
- package/lib/index.js.map +4 -4
- package/lib/novel-to-game/README.md +299 -59
- package/lib/novel-to-game/README_ZH.md +299 -56
- package/lib/novel-to-game/VERSION +1 -1
- package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +3 -1
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +11 -3
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +397 -8
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +0 -31
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +71 -73
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +78 -89
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +37 -14
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +5 -5
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +2 -1
- package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +11 -16
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +11 -11
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +23 -0
- package/lib/novel-to-game/manifest.json +77 -87
- package/lib/novel-to-game/skills/game-art-direction/SKILL.md +9 -35
- package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +27 -106
- package/lib/novel-to-game/skills/game-build/SKILL.md +17 -35
- package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +24 -0
- package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +45 -82
- package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +14 -45
- package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +30 -65
- package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +13 -27
- package/lib/novel-to-game/skills/game-concept/SKILL.md +16 -34
- package/lib/novel-to-game/skills/game-concept/references/concept-method.md +28 -75
- package/lib/novel-to-game/skills/game-qa/SKILL.md +9 -20
- package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +10 -6
- package/lib/novel-to-game/skills/game-world-design/SKILL.md +19 -32
- package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +23 -72
- package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +14 -48
- package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +36 -103
- package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +9 -18
- package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +4 -4
- package/lib/novel-to-game/skills/novel-to-game/SKILL.md +10 -27
- package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -6
- package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +6 -11
- package/lib/oh-story/manifest.json +419 -254
- package/lib/oh-story/roles/chapter-extractor.md +177 -237
- package/lib/oh-story/roles/character-designer.md +1 -1
- package/lib/oh-story/roles/consistency-checker.md +4 -4
- package/lib/oh-story/roles/narrative-writer.md +56 -243
- package/lib/oh-story/roles/story-architect.md +6 -6
- package/lib/oh-story/roles/story-explorer.md +11 -11
- package/lib/oh-story/skills/story/SKILL.md +13 -7
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story/references/author-memory.md +61 -29
- package/lib/oh-story/skills/story/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-cover/SKILL.md +10 -1
- package/lib/oh-story/skills/story-deslop/SKILL.md +54 -229
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +29 -56
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +61 -29
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +154 -0
- package/lib/oh-story/skills/story-deslop/references/style-resolution.md +27 -0
- package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +6 -1
- package/lib/oh-story/skills/story-deslop/scripts/check-degeneration.js +39 -20
- package/lib/oh-story/skills/story-deslop/scripts/normalize-punctuation.js +10 -5
- package/lib/oh-story/skills/story-deslop/scripts/style-whitelist.js +39 -0
- package/lib/oh-story/skills/story-import/SKILL.md +78 -82
- package/lib/oh-story/skills/story-import/references/character-state-reverse.md +1 -1
- package/lib/oh-story/skills/story-import/references/format-and-structure.md +2 -2
- package/lib/oh-story/skills/story-import/references/state-tracking.md +4 -69
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +10 -8
- package/lib/oh-story/skills/story-import/references/tracking-initialization.md +31 -0
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +9 -34
- package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +197 -15
- package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +210 -2
- package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +3 -0
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +91 -258
- package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +245 -0
- package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +2 -2
- package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +105 -0
- package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +113 -105
- package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +169 -125
- package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +172 -64
- package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +84 -0
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +42 -132
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +5 -5
- package/lib/oh-story/skills/story-long-analyze/scripts/build_chapter_index.py +466 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py +702 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/inspiration_index.py +864 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +1106 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py +425 -0
- package/lib/oh-story/skills/story-long-scan/SKILL.md +4 -1
- package/lib/oh-story/skills/story-long-write/SKILL.md +52 -216
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +29 -56
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +72 -12
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +61 -29
- package/lib/oh-story/skills/story-long-write/references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +20 -0
- package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +26 -0
- package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +10 -4
- package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +6 -15
- package/lib/oh-story/skills/story-long-write/references/long-format.md +2 -0
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +2 -0
- package/lib/oh-story/skills/story-long-write/references/project-files.md +110 -0
- package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +12 -4
- package/lib/oh-story/skills/story-long-write/references/reference-index.md +86 -0
- package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/style-craft.md +9 -29
- package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/style-resolution.md +27 -0
- package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +31 -0
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +9 -34
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +88 -118
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +55 -119
- package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +15 -11
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +73 -54
- package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +22 -0
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +63 -4
- package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +531 -0
- package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +6 -1
- package/lib/oh-story/skills/story-long-write/scripts/check-degeneration.js +39 -20
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +197 -15
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +90 -23
- package/lib/oh-story/skills/story-long-write/scripts/normalize-punctuation.js +10 -5
- package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +285 -0
- package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +58 -0
- package/lib/oh-story/skills/story-long-write/scripts/style-whitelist.js +39 -0
- package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +210 -2
- package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +3 -0
- package/lib/oh-story/skills/story-review/SKILL.md +80 -87
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +29 -56
- package/lib/oh-story/skills/story-review/references/author-memory.md +61 -29
- package/lib/oh-story/skills/story-review/references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +10 -4
- package/lib/oh-story/skills/story-review/references/review-quality.md +6 -12
- package/lib/oh-story/skills/story-review/references/style-resolution.md +27 -0
- package/lib/oh-story/skills/story-review/references/tracking-initialization.md +31 -0
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +9 -34
- package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +6 -1
- package/lib/oh-story/skills/story-review/scripts/check-degeneration.js +39 -20
- package/lib/oh-story/skills/story-review/scripts/normalize-punctuation.js +10 -5
- package/lib/oh-story/skills/story-review/scripts/style-whitelist.js +39 -0
- package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +210 -2
- package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +3 -0
- package/lib/oh-story/skills/story-setup/SKILL.md +58 -43
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +29 -56
- package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +154 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +10 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +27 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +63 -4
- package/lib/oh-story/skills/story-setup/references/diagnostics.md +38 -0
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +22 -3
- package/lib/oh-story/skills/story-short-analyze/references/analysis-writing-techniques.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +5 -1
- package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +2 -2
- package/lib/oh-story/skills/story-short-scan/SKILL.md +5 -1
- package/lib/oh-story/skills/story-short-write/SKILL.md +15 -324
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +61 -29
- package/lib/oh-story/skills/story-short-write/references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +60 -0
- package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +10 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +5 -5
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +5 -5
- package/lib/oh-story/skills/story-short-write/references/genre-styles//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/reference-index.md +55 -0
- package/lib/oh-story/skills/story-short-write/references/short-craft.md +12 -14
- package/lib/oh-story/skills/story-short-write/references/short-deslop.md +10 -10
- package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -1
- package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/style-resolution.md +27 -0
- package/lib/oh-story/skills/story-short-write/references/workflow-design.md +78 -0
- package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +126 -0
- package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +32 -0
- package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +5 -5
- package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +6 -1
- package/lib/oh-story/skills/story-short-write/scripts/check-degeneration.js +39 -20
- package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +34 -5
- package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +90 -23
- package/lib/oh-story/skills/story-short-write/scripts/normalize-punctuation.js +10 -5
- package/lib/oh-story/skills/story-short-write/scripts/style-whitelist.js +39 -0
- package/lib/types/client/drama-production-view.d.ts.map +1 -1
- package/lib/types/client/file-activity.d.ts +19 -1
- package/lib/types/client/file-activity.d.ts.map +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/production-prompts.d.ts +7 -0
- package/lib/types/client/production-prompts.d.ts.map +1 -1
- package/lib/types/client/production-runtime.d.ts +33 -0
- package/lib/types/client/production-runtime.d.ts.map +1 -1
- package/lib/types/drama-adapters.d.ts +5 -3
- package/lib/types/drama-adapters.d.ts.map +1 -1
- package/lib/types/native-hooks.d.ts +52 -0
- package/lib/types/native-hooks.d.ts.map +1 -1
- package/lib/types/role-identity.d.ts +17 -0
- package/lib/types/role-identity.d.ts.map +1 -0
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/lib/video-recap/CHANGELOG.md +31 -1
- package/lib/video-recap/manifest.json +162 -162
- package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +4 -9
- package/lib/video-recap/skills/video-assemble/scripts/assemble.py +47 -60
- package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +77 -115
- package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +41 -40
- package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +22 -32
- package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +102 -192
- package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +14 -35
- package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +14 -12
- package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +8 -9
- package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +3 -14
- package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +23 -12
- package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +1 -4
- package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +24 -25
- package/lib/video-recap/skills/video-assemble/scripts/lib.py +31 -85
- package/lib/video-recap/skills/video-assemble/scripts/media.py +100 -144
- package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +101 -195
- package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +10 -21
- package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +90 -169
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +69 -122
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +10 -17
- package/lib/video-recap/skills/video-assemble/scripts/timeline.py +33 -48
- package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +14 -20
- package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +135 -213
- package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +49 -57
- package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +38 -74
- package/lib/video-recap/skills/video-cut/scripts/cut_render.py +46 -95
- package/lib/video-recap/skills/video-cut/scripts/lib.py +23 -25
- package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +70 -173
- package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +28 -53
- package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +162 -322
- package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +6 -7
- package/lib/video-recap/skills/video-recap/scripts/doctor.py +104 -124
- package/lib/video-recap/skills/video-recap/scripts/final_qc.py +255 -412
- package/lib/video-recap/skills/video-recap/scripts/lib.py +30 -52
- package/lib/video-recap/skills/video-recap/scripts/materials.py +97 -120
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +7 -12
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +46 -97
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +18 -36
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +29 -47
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +43 -76
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +2 -1
- package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +2 -1
- package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +2 -2
- package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +129 -145
- package/lib/video-recap/skills/video-recap/scripts/recap_review.py +27 -20
- package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +20 -31
- package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +31 -106
- package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +43 -113
- package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +196 -377
- package/lib/video-recap/skills/video-script/scripts/agent_brief.py +1 -1
- package/lib/video-recap/skills/video-script/scripts/agent_text.py +63 -172
- package/lib/video-recap/skills/video-script/scripts/brief_context.py +80 -135
- package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +125 -167
- package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +93 -208
- package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +20 -46
- package/lib/video-recap/skills/video-script/scripts/lib.py +30 -26
- package/lib/video-recap/skills/video-script/scripts/narration_lint.py +145 -140
- package/lib/video-recap/skills/video-script/scripts/review_response.py +12 -42
- package/lib/video-recap/skills/video-script/scripts/review_runner.py +0 -6
- package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +39 -100
- package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +33 -124
- package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +1 -1
- package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +63 -172
- package/lib/video-recap/skills/video-understanding/scripts/asr.py +1 -2
- package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +80 -135
- package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +125 -167
- package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +93 -208
- package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +1 -1
- package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +20 -46
- package/lib/video-recap/skills/video-understanding/scripts/lib.py +31 -26
- package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +145 -140
- package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +39 -100
- package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +33 -124
- package/lib/video-recap/skills/video-understanding/scripts/vlm.py +1 -4
- package/lib/video-recap/skills/video-voiceover/scripts/dub.py +7 -13
- package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +12 -30
- package/lib/video-recap/skills/video-voiceover/scripts/lib.py +98 -131
- package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +17 -28
- package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +151 -240
- package/package.json +45 -45
- package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +0 -59
- package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +0 -53
- package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -42
- package/lib/oh-story/skills/story-long-write/references/state-tracking.md +0 -108
|
@@ -256,8 +256,6 @@ body {
|
|
|
256
256
|
}
|
|
257
257
|
|
|
258
258
|
.choice-button span { color: #676a79; }
|
|
259
|
-
.choice-button .choice-meta { color: #9a6834; }
|
|
260
|
-
|
|
261
259
|
.choice-button:hover:not(:disabled):not([aria-disabled="true"]),
|
|
262
260
|
.choice-button:focus-visible {
|
|
263
261
|
border-color: rgba(200,79,92,.5);
|
|
@@ -305,12 +303,6 @@ body {
|
|
|
305
303
|
.door-knock,
|
|
306
304
|
.door-forecast dd { color: #666978; }
|
|
307
305
|
|
|
308
|
-
/* 人物近景保留插画质感;只在文字所在一侧覆浅色雾纱。 */
|
|
309
|
-
.close-portrait,
|
|
310
|
-
.close-portrait.closer {
|
|
311
|
-
filter: drop-shadow(-16px 20px 22px rgba(74,64,87,.17)) saturate(1.03) brightness(1.04) contrast(1.01);
|
|
312
|
-
}
|
|
313
|
-
|
|
314
306
|
#app .dialogue-stage::after,
|
|
315
307
|
#app .morning-stage::after { background: linear-gradient(90deg, rgba(255,249,245,.34), transparent 60%); }
|
|
316
308
|
|
|
@@ -854,6 +846,25 @@ body {
|
|
|
854
846
|
.ending-copy > p:not(.eyebrow):not(.ending-tag):not(.ending-note) { color: #5f6372; }
|
|
855
847
|
.ending-note { color: #737584; }
|
|
856
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
|
+
|
|
857
868
|
.ending-ledger span,
|
|
858
869
|
.ending-habits,
|
|
859
870
|
.ending-habits article,
|
|
@@ -1103,3 +1114,381 @@ body {
|
|
|
1103
1114
|
animation: none !important;
|
|
1104
1115
|
}
|
|
1105
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
|
+
}
|
|
@@ -292,7 +292,6 @@ button:focus-visible { outline: 2px solid var(--gold-bright); outline-offset: 2p
|
|
|
292
292
|
color: #e7dbc7;
|
|
293
293
|
background: linear-gradient(180deg, #211713, #160f0d);
|
|
294
294
|
}
|
|
295
|
-
.rail-kicker { margin: 0 .2rem; color: #897d6b; font: .68rem var(--sans); letter-spacing: .22em; }
|
|
296
295
|
.relation-card { position: relative; padding: .46rem .58rem .44rem; border: 1px solid rgba(224,202,162,.22); background: rgba(236,222,194,.055); overflow: hidden; }
|
|
297
296
|
.relation-card::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--gold); }
|
|
298
297
|
.relation-pan_jinlian::before { background: #aa3d30; }
|
|
@@ -611,7 +610,6 @@ button:focus-visible { outline: 2px solid var(--gold-bright); outline-offset: 2p
|
|
|
611
610
|
}
|
|
612
611
|
.choice-button b { font-size: .95rem; letter-spacing: .06em; }
|
|
613
612
|
.choice-button span { margin-top: .32rem; color: #b4a48e; font: .74rem/1.5 var(--sans); }
|
|
614
|
-
.choice-button .choice-meta { margin-top: auto; padding-top: .42rem; color: #cfaa67; font: normal .6rem/1.35 var(--sans); letter-spacing: .05em; }
|
|
615
613
|
.choice-button:hover:not(:disabled):not([aria-disabled="true"]) { transform: translateX(3px); border-color: rgba(226,171,104,.9); background: rgba(157,45,37,.17); }
|
|
616
614
|
.choice-button:focus-visible { outline: 0; background: rgba(157,45,37,.13); box-shadow: inset 3px 0 var(--gold-bright); }
|
|
617
615
|
.choice-button[aria-disabled="true"]:focus-visible { opacity: .72; outline: 2px solid #cfaa67; outline-offset: 3px; }
|
|
@@ -662,8 +660,6 @@ button:focus-visible { outline: 2px solid var(--gold-bright); outline-offset: 2p
|
|
|
662
660
|
|
|
663
661
|
/* 对话近景 */
|
|
664
662
|
.dialogue-stage { background: #211712; }
|
|
665
|
-
.close-portrait { position: absolute; z-index: 2; right: -2%; top: -1%; height: 192%; width: 70%; object-fit: contain; object-position: top center; filter: drop-shadow(-24px 20px 18px rgba(0,0,0,.48)) saturate(.96); }
|
|
666
|
-
.close-portrait.closer { height: 208%; right: -4%; filter: drop-shadow(-24px 20px 18px rgba(0,0,0,.58)) saturate(1.05); }
|
|
667
663
|
/* 单张整版之后,舞台级 scrim 与 CG 上的 100° 斜向 scrim 必然打架,统一撤掉。 */
|
|
668
664
|
.dialogue-stage::after, .morning-stage::after { background: none; }
|
|
669
665
|
.dialogue-panel { left: 3.5%; top: 6%; bottom: 5%; width: 40%; padding: 1.5rem; overflow: clip; }
|
|
@@ -733,10 +729,6 @@ button:focus-visible { outline: 2px solid var(--gold-bright); outline-offset: 2p
|
|
|
733
729
|
.intimacy-memory b { margin-top:.16rem; color:#d4e0d8; font:.7rem/1.35 var(--serif); }
|
|
734
730
|
.intimacy-memory p { display:-webkit-box; margin:.25rem 0 0; overflow:hidden; color:#a9b9b0; font:.62rem/1.48 var(--sans); -webkit-line-clamp:2; -webkit-box-orient:vertical; }
|
|
735
731
|
.intimacy-memory em { display:-webkit-box; margin:.25rem 0 0; overflow:hidden; color:#8fa59b; font:normal .58rem/1.48 var(--sans); -webkit-line-clamp:2; -webkit-box-orient:vertical; }
|
|
736
|
-
.aftermath-intimacy-echo { margin:.45rem 0; padding:.48rem .58rem; border-left:2px solid #709b8b; color:#9bb8ad; font:.6rem/1.4 var(--sans); background:rgba(39,75,63,.18); }
|
|
737
|
-
.aftermath-intimacy-echo span,.aftermath-intimacy-echo b { display:block; }
|
|
738
|
-
.aftermath-intimacy-echo span { color:#718f84; letter-spacing:.1em; }
|
|
739
|
-
.aftermath-intimacy-echo b { margin-top:.16rem; color:#c7dbd1; font-size:.68rem; }
|
|
740
732
|
.ordinary-night-memory { margin:.55rem 0; padding:.58rem .65rem; border:1px solid rgba(177,126,75,.3); border-left:2px solid #a96748; background:linear-gradient(110deg,rgba(91,48,31,.22),rgba(0,0,0,.14)); }
|
|
741
733
|
.ordinary-night-memory small,.ordinary-night-memory b { display:block; }
|
|
742
734
|
.ordinary-night-memory small { color:#a37960; font:.55rem var(--sans); letter-spacing:.08em; }
|
|
@@ -749,16 +741,6 @@ button:focus-visible { outline: 2px solid var(--gold-bright); outline-offset: 2p
|
|
|
749
741
|
.night-conversation-life-memory .stake { margin-top:.22rem; color:#c5aa78; font:.56rem/1.4 var(--sans); }
|
|
750
742
|
.night-conversation-life-memory p { display:-webkit-box; margin:.25rem 0 0; overflow:hidden; color:#adc0b6; font:.61rem/1.48 var(--sans); -webkit-line-clamp:3; -webkit-box-orient:vertical; }
|
|
751
743
|
.night-conversation-life-memory em { margin-top:.3rem; color:#86a99b; font:.56rem/1.45 var(--sans); font-style:normal; }
|
|
752
|
-
.aftermath-night-memory { margin:.45rem 0; padding:.48rem .58rem; border-left:2px solid #a96748; color:#b59b86; font:.6rem/1.4 var(--sans); background:rgba(91,48,31,.18); }
|
|
753
|
-
.aftermath-night-memory span,.aftermath-night-memory b,.aftermath-night-memory small { display:block; }
|
|
754
|
-
.aftermath-night-memory span { color:#9c715a; letter-spacing:.08em; }
|
|
755
|
-
.aftermath-night-memory b { margin-top:.15rem; color:#e0bea0; font-size:.68rem; }
|
|
756
|
-
.aftermath-night-memory small { margin-top:.16rem; color:#ad9a85; line-height:1.45; }
|
|
757
|
-
.aftermath-conversation-memory { margin:.45rem 0; padding:.5rem .6rem; border-left:2px solid #6f9b8b; color:#acc0b5; font:.6rem/1.42 var(--sans); background:rgba(45,75,66,.2); }
|
|
758
|
-
.aftermath-conversation-memory span,.aftermath-conversation-memory b,.aftermath-conversation-memory small { display:block; }
|
|
759
|
-
.aftermath-conversation-memory span { color:#82a596; letter-spacing:.08em; }
|
|
760
|
-
.aftermath-conversation-memory b { margin-top:.15rem; color:#c9dfd2; font-size:.68rem; }
|
|
761
|
-
.aftermath-conversation-memory small { margin-top:.17rem; color:#adbbb3; line-height:1.48; }
|
|
762
744
|
.night-talk-observer-reaction { margin:.6rem 0; padding:.58rem .68rem; border:1px solid rgba(112,155,139,.32); border-left:3px solid #6f9b8b; background:rgba(45,75,66,.22); }
|
|
763
745
|
.night-talk-observer-reaction span,.night-talk-observer-reaction b { display:block; }
|
|
764
746
|
.night-talk-observer-reaction span { color:#83a496; font:.56rem var(--sans); letter-spacing:.09em; }
|
|
@@ -1090,12 +1072,6 @@ button:focus-visible { outline: 2px solid var(--gold-bright); outline-offset: 2p
|
|
|
1090
1072
|
.invitation-aftermath-stage.resolved .invitation-aftermath-rule { border-color:rgba(82,156,105,.68); background:rgba(24,67,43,.18); }
|
|
1091
1073
|
.invitation-aftermath-choices { grid-template-columns:repeat(2,minmax(0,1fr)); }
|
|
1092
1074
|
.invitation-aftermath-panel > .ink-button { min-width:12rem; }
|
|
1093
|
-
.pov-prop { position: absolute; z-index: 3; right: 30%; bottom: -8%; width: 28%; height: 28%; transform: rotate(13deg); border-radius: 48% 55% 20% 18%; background: linear-gradient(135deg, #25354e, #111b2d); box-shadow: inset 0 0 0 8px rgba(196,157,92,.12), 0 12px 24px rgba(0,0,0,.5); }
|
|
1094
|
-
.pov-prop::after { content: ""; position: absolute; right: -14%; top: 8%; width: 27%; height: 35%; border-radius: 50%; background: #c39772; }
|
|
1095
|
-
.pov-prop.cup::before { content: ""; position: absolute; right: -28%; top: -24%; width: 62px; height: 40px; border: 5px solid #aa8052; border-radius: 50%; background: radial-gradient(ellipse, #3c1d18 40%, #b38753 44%, #50402d 55%); }
|
|
1096
|
-
|
|
1097
|
-
/* 次晨 */
|
|
1098
|
-
.morning-portrait { position: absolute; z-index: 2; right: 3%; top: 0; height: 140%; filter: drop-shadow(-22px 20px 18px rgba(0,0,0,.45)); }
|
|
1099
1075
|
.morning-panel { left: 4%; top: 8%; width: 47%; padding: 1.45rem; }
|
|
1100
1076
|
.tone-jealous .morning-panel { border-color: rgba(188,73,61,.72); }
|
|
1101
1077
|
.tone-backing .morning-panel { border-color: rgba(126,167,149,.65); }
|
|
@@ -1554,11 +1530,6 @@ button:focus-visible { outline: 2px solid var(--gold-bright); outline-offset: 2p
|
|
|
1554
1530
|
.collapse-final-question p { margin: .3rem 0 0; color: #ae9988; font: .6rem/1.5 var(--sans); }
|
|
1555
1531
|
.collapse-final-choices { grid-template-columns: 1fr 1fr; }
|
|
1556
1532
|
.collapse-continue,.collapse-result-continue { min-width: 15rem; border-color: rgba(198,103,75,.58); }
|
|
1557
|
-
.collapse-result-voices { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .34rem; margin: .58rem 0; }
|
|
1558
|
-
.collapse-result-voices blockquote { margin: 0; padding: .46rem .54rem; border-left: 2px solid rgba(188,95,68,.52); background: rgba(86,34,25,.17); }
|
|
1559
|
-
.collapse-result-voices blockquote:last-child { grid-column: 1 / -1; }
|
|
1560
|
-
.collapse-result-voices b { color: #cf8668; font: .58rem var(--sans); letter-spacing: .08em; }
|
|
1561
|
-
.collapse-result-voices p { margin: .18rem 0 0; color: #cfbaa9; font: .6rem/1.5 var(--serif); }
|
|
1562
1533
|
.collapse-result-current-voice { margin:.62rem 0; padding:.72rem .78rem; border-left:3px solid rgba(202,108,78,.72); background:rgba(96,38,27,.22); }
|
|
1563
1534
|
.collapse-result-current-voice b { color:#dc9271; font:.62rem var(--sans); letter-spacing:.1em; }
|
|
1564
1535
|
.collapse-result-current-voice p { margin:.3rem 0 0; color:#e0cbbb; font:.74rem/1.66 var(--serif); }
|
|
@@ -2106,8 +2077,6 @@ img[alt="孙雪娥"] { --heroine-focus-x: 68%; }
|
|
|
2106
2077
|
.collapse-cast span,.collapse-result-cast span { display: none; }
|
|
2107
2078
|
.collapse-finale-panel,.collapse-result-panel { top: auto; max-height: 94%; }
|
|
2108
2079
|
.collapse-final-choices,.collapse-result-voices { grid-template-columns: 1fr; gap: .26rem; }
|
|
2109
|
-
.collapse-result-voices blockquote:last-child { grid-column: auto; }
|
|
2110
|
-
.collapse-result-voices blockquote { padding: .42rem .48rem; }
|
|
2111
2080
|
.collapse-current-voice { padding: .55rem .62rem; }
|
|
2112
2081
|
.collapse-cause-ledger,.collapse-result-ledger { margin: .45rem 0; padding: .42rem .48rem; }
|
|
2113
2082
|
.collapse-continue,.collapse-result-continue { width: 100%; min-width: 0; }
|