Stage
舞台 单光一间暗室、一束会动的光:雾、尘、颗粒都被它照亮,三幕从靛紫到冷青到日出金。
One dark room lit by one moving light; fog, dust and grain all lit by it, graded in three acts from indigo to cyan to sunrise gold.
一束光
act I · midnight indigo
Palette
Type
标题 Display 永正文 Body — 好的界面不抢内容 123456789000:12:04:18 monoPreviews use your installed fonts; webfonts are not bundled.
| Display | "Source Han Serif SC", "Noto Serif SC", "Songti SC", serif |
|---|---|
| Body | "Source Han Serif SC", "Noto Serif SC", serif |
| Mono | "JetBrains Mono", ui-monospace, monospace |
| brand | 96–104px |
| claim | 44–49px (floor 49px for claims) |
| evidence number | ≥ 86px |
| support | ≥ 34px |
Discrete size tiers with gaps: micro 1–3%, command 8–11%, display 10–16%, giant 55–70% of frame height. Contrast ≥ 4.5:1.
Shape & surface
| radius · screen | 14px |
|---|---|
| shadow | none |
| glass | none |
Motion
- Words blur in one by one: blur 14px → 0, 0.16–0.2s apart, slight rise; emphasis words take the light colour.
- World layer pushes 1.0 → 1.055 with drift ~(16, 9)px; text layer follows at half amplitude for parallax.
- Transitions only hard cut, full-frame flash or wipe; never dissolve. Cuts snap to the music grid.
Film parameters
| Resolution | 1920×1080, 24–30 fps (4K with --pr 2) |
|---|---|
| Light | One source, centre of mass ~y 0.42, breathing beam length and alpha |
| Fog | Two scrolling fbm layers, fog 0.5 → fog_late 0.34, 30% haze in front of screens |
| God rays | 11 rays, slowly swinging, ray_strength ~0.03 |
| Particles | 300 dust motes with depth parallax, bright only near the light |
| Grain / vignette | 0.13 per-frame reseeded / 0.72 |
| Acts | 3 acts, colour blends ~2s around each start (example 0s / 12s / 24.8s) |
| Shots | 5 shots of 5.5–6.5s |
| Accent share | One hue, 0.3–5.5% of the frame |
| Self-check | R-alive, R-proof, R-beat-bg, R-cause, R-density ≤ 2 blocks, R-hold 1.5–3.5s |
Do / Don't
Do
- Keep something moving after the text lands; a still over 1s reads as a slide deck (R-alive).
- Follow every claim with moving proof within 2s (R-proof); change base colour or brightness every 10–15s (R-beat-bg).
- Show real screenshots as lit, tilted screens (~8°) with an edge glint and a faint reflection below.
Don't
- Don't paste UI cards onto black; devices are drawn and lit.
- Don't use dissolves or more than one accent hue.
- Don't put more than 2 text blocks in a frame (R-density).
Used in
Sources
missiond docs/plans/launchreel-d0-stage-sample-20261008.mdlaunchreel: stage/README.md, stage/lib/spec.mjsfilm anatomy notes 2026-10-08, PPT-feel diagnosis 2026-10-10
Updated 2026-10-13
Export
/* Stage / 舞台 单光 — One dark room lit by one moving light; fog, dust and grain all lit by it, graded in three acts from indigo to cyan to sunrise gold. */
:root {
--stage-single-light-bg: #05040c;
--stage-single-light-surface: rgb(132 116 255 / .06);
--stage-single-light-ink: #f1eee8;
--stage-single-light-muted: #9d98b8;
--stage-single-light-accent: #8474ff;
--stage-single-light-accent-ink: #05040c;
--stage-single-light-line: rgb(132 116 255 / .22);
--stage-single-light-highlight: #ffb256;
--stage-single-light-pal-act-1-bg: #05040c;
--stage-single-light-pal-act-1-light: #8474ff;
--stage-single-light-pal-act-2-bg: #03090c;
--stage-single-light-pal-act-2-light: #60dae6;
--stage-single-light-pal-act-3-bg: #0a0603;
--stage-single-light-pal-act-3-light: #ffb256;
--stage-single-light-pal-ink: #f1eee8;
--stage-single-light-font-display: "Source Han Serif SC", "Noto Serif SC", "Songti SC", serif;
--stage-single-light-font-body: "Source Han Serif SC", "Noto Serif SC", serif;
--stage-single-light-font-mono: "JetBrains Mono", ui-monospace, monospace;
--stage-single-light-text-brand: 96–104px;
--stage-single-light-text-claim: 44–49px (floor 49px for claims);
--stage-single-light-text-evidence-number: ≥ 86px;
--stage-single-light-text-support: ≥ 34px;
--stage-single-light-radius-screen: 14px;
--stage-single-light-shadow: none;
}/* Tailwind v4 — paste into your main CSS after @import "tailwindcss"; */
@theme {
--color-bg: #05040c;
--color-surface: rgb(132 116 255 / .06);
--color-ink: #f1eee8;
--color-muted: #9d98b8;
--color-accent: #8474ff;
--color-accent-ink: #05040c;
--color-line: rgb(132 116 255 / .22);
--color-highlight: #ffb256;
--font-display: "Source Han Serif SC", "Noto Serif SC", "Songti SC", serif;
--font-sans: "Source Han Serif SC", "Noto Serif SC", serif;
--font-mono: "JetBrains Mono", ui-monospace, monospace;
--radius-screen: 14px;
}
// Tailwind v3 — tailwind.config.js
export default {
theme: {
extend: {
colors: {
"bg": "#05040c",
"surface": "rgb(132 116 255 / .06)",
"ink": "#f1eee8",
"muted": "#9d98b8",
"accent": "#8474ff",
"accent-ink": "#05040c",
"line": "rgb(132 116 255 / .22)",
"highlight": "#ffb256",
},
fontFamily: {
display: ["\"Source Han Serif SC\", \"Noto Serif SC\", \"Songti SC\", serif"],
sans: ["\"Source Han Serif SC\", \"Noto Serif SC\", serif"],
mono: ["\"JetBrains Mono\", ui-monospace, monospace"],
},
borderRadius: {
"screen": "14px",
},
},
},
};