wizz-method 2.22.0 → 2.23.0

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 (118) hide show
  1. package/THIRD-PARTY-NOTICES.md +7 -1
  2. package/package.json +1 -1
  3. package/removals.txt +3 -0
  4. package/skills-registry.yaml +93 -5
  5. package/src/bmm-skills/1-analysis/research/wizz-market-research/steps/step-06-research-completion.md +27 -0
  6. package/src/modules/lowticket/README.md +2 -1
  7. package/src/modules/lowticket/module.yaml +1 -1
  8. package/src/modules/lowticket/skills/wizz-clone-do-expert/SKILL.md +86 -0
  9. package/src/modules/lowticket/skills/wizz-clone-do-expert/references/clone-prompt-template.md +21 -0
  10. package/src/modules/wizz/_shared/video-pipeline.md +2 -0
  11. package/src/modules/wizz/agents/wizz-copy/customize.toml +1 -1
  12. package/src/modules/wizz/agents/wizz-copy/knowledge/playbook.md +2 -2
  13. package/src/modules/wizz/agents/wizz-growth/customize.toml +7 -2
  14. package/src/modules/wizz/agents/wizz-growth/knowledge/playbook.md +3 -2
  15. package/src/skills-lib/wizz-ios-build/SKILL.md +61 -0
  16. package/src/skills-lib/wizz-offer-forge/SKILL.md +2 -2
  17. package/src/skills-lib/wizz-paywall-upgrade-cro/SKILL.md +1 -0
  18. package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/README.md +13 -13
  19. package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/SKILL.md +11 -7
  20. package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/assets/template.html +8 -21
  21. package/src/skills-lib/wizz-pesquisa-de-publico/references/interview-mode.md +69 -0
  22. package/src/skills-lib/wizz-premium-landing-ui-researcher/references/component-sources.md +23 -0
  23. package/src/skills-lib/wizz-premium-landing-ui-researcher/references/design-sources.yaml +73 -0
  24. package/src/skills-lib/wizz-router/references/routing-table-flat.md +5 -1
  25. package/src/skills-lib/wizz-seo-audit/SKILL.md +4 -0
  26. package/src/skills-lib/wizz-seo-audit/references/gsc-regex-perguntas.md +64 -0
  27. package/src/skills-lib/wizz-signup-flow-cro/SKILL.md +1 -0
  28. package/src/skills-lib/wizz-signup-flow-cro/references/trial-abuse.md +40 -0
  29. package/src/skills-lib/wizz-ui-ux-pro-max/SKILL.md +1 -1
  30. package/src/skills-lib/wizz-ui-ux-pro-max/references/common-rules-checklist.md +11 -0
  31. package/src/skills-lib/wizz-video-effects/SKILL.md +3 -1
  32. package/src/skills-lib/wizz-video-effects/assets/effects.config.template.json +10 -0
  33. package/src/skills-lib/wizz-video-effects/references/data-contract.md +2 -0
  34. package/src/skills-lib/wizz-video-effects/references/gates.md +1 -0
  35. package/src/skills-lib/wizz-video-effects/references/one-take.md +41 -0
  36. package/src/skills-lib/wizz-video-effects/scripts/check_one_take.py +159 -0
  37. package/src/skills-lib/wizz-video-effects/scripts/test_one_take.py +126 -0
  38. package/src/skills-lib/wizz-video-styles/LICENSE-lemo-opuscar.txt +21 -0
  39. package/src/skills-lib/wizz-video-styles/SKILL.md +12 -7
  40. package/src/skills-lib/wizz-video-styles/assets/film-styles/dark-keynote.html +78 -0
  41. package/src/skills-lib/wizz-video-styles/assets/film-styles/remotion/Riso.tsx +63 -0
  42. package/src/skills-lib/wizz-video-styles/assets/film-styles/risograph.html +69 -0
  43. package/src/skills-lib/wizz-video-styles/assets/film-styles/swiss-motion.html +84 -0
  44. package/src/skills-lib/wizz-video-styles/references/check-ins.md +25 -0
  45. package/src/skills-lib/wizz-video-styles/references/film-styles/DIRECTOR.md +139 -0
  46. package/src/skills-lib/wizz-video-styles/references/film-styles/archive-lighttable.md +109 -0
  47. package/src/skills-lib/wizz-video-styles/references/film-styles/art-deco.md +112 -0
  48. package/src/skills-lib/wizz-video-styles/references/film-styles/ascii-crt.md +115 -0
  49. package/src/skills-lib/wizz-video-styles/references/film-styles/backrooms.md +125 -0
  50. package/src/skills-lib/wizz-video-styles/references/film-styles/blueprint.md +120 -0
  51. package/src/skills-lib/wizz-video-styles/references/film-styles/brick-toy.md +114 -0
  52. package/src/skills-lib/wizz-video-styles/references/film-styles/briefing-board.md +122 -0
  53. package/src/skills-lib/wizz-video-styles/references/film-styles/caption-news.md +137 -0
  54. package/src/skills-lib/wizz-video-styles/references/film-styles/cel-anime-80s.md +119 -0
  55. package/src/skills-lib/wizz-video-styles/references/film-styles/city-symphony.md +142 -0
  56. package/src/skills-lib/wizz-video-styles/references/film-styles/countdown.md +132 -0
  57. package/src/skills-lib/wizz-video-styles/references/film-styles/crayon-book.md +109 -0
  58. package/src/skills-lib/wizz-video-styles/references/film-styles/dark-keynote.md +117 -0
  59. package/src/skills-lib/wizz-video-styles/references/film-styles/data-physical.md +119 -0
  60. package/src/skills-lib/wizz-video-styles/references/film-styles/dataviz.md +123 -0
  61. package/src/skills-lib/wizz-video-styles/references/film-styles/engraving.md +123 -0
  62. package/src/skills-lib/wizz-video-styles/references/film-styles/game-show.md +118 -0
  63. package/src/skills-lib/wizz-video-styles/references/film-styles/glass-product.md +110 -0
  64. package/src/skills-lib/wizz-video-styles/references/film-styles/halftone-dossier.md +122 -0
  65. package/src/skills-lib/wizz-video-styles/references/film-styles/hd-2d.md +111 -0
  66. package/src/skills-lib/wizz-video-styles/references/film-styles/hologram-hud.md +129 -0
  67. package/src/skills-lib/wizz-video-styles/references/film-styles/impasto.md +124 -0
  68. package/src/skills-lib/wizz-video-styles/references/film-styles/ink-wash.md +120 -0
  69. package/src/skills-lib/wizz-video-styles/references/film-styles/iso-infographic.md +117 -0
  70. package/src/skills-lib/wizz-video-styles/references/film-styles/kino-montage.md +151 -0
  71. package/src/skills-lib/wizz-video-styles/references/film-styles/lidar-survey.md +118 -0
  72. package/src/skills-lib/wizz-video-styles/references/film-styles/living-screencast.md +124 -0
  73. package/src/skills-lib/wizz-video-styles/references/film-styles/lowpoly-island.md +112 -0
  74. package/src/skills-lib/wizz-video-styles/references/film-styles/microgame.md +122 -0
  75. package/src/skills-lib/wizz-video-styles/references/film-styles/microscope.md +108 -0
  76. package/src/skills-lib/wizz-video-styles/references/film-styles/midcentury-toon.md +124 -0
  77. package/src/skills-lib/wizz-video-styles/references/film-styles/news-package.md +158 -0
  78. package/src/skills-lib/wizz-video-styles/references/film-styles/newsreel.md +136 -0
  79. package/src/skills-lib/wizz-video-styles/references/film-styles/one-line.md +114 -0
  80. package/src/skills-lib/wizz-video-styles/references/film-styles/paper-lantern.md +116 -0
  81. package/src/skills-lib/wizz-video-styles/references/film-styles/paper-popup.md +119 -0
  82. package/src/skills-lib/wizz-video-styles/references/film-styles/papercut-red.md +110 -0
  83. package/src/skills-lib/wizz-video-styles/references/film-styles/pictogram-motion.md +119 -0
  84. package/src/skills-lib/wizz-video-styles/references/film-styles/pixel-rpg.md +117 -0
  85. package/src/skills-lib/wizz-video-styles/references/film-styles/risograph.md +125 -0
  86. package/src/skills-lib/wizz-video-styles/references/film-styles/rubber-hose.md +112 -0
  87. package/src/skills-lib/wizz-video-styles/references/film-styles/satellite-briefing.md +116 -0
  88. package/src/skills-lib/wizz-video-styles/references/film-styles/scifi-toon.md +121 -0
  89. package/src/skills-lib/wizz-video-styles/references/film-styles/shadow-puppet.md +124 -0
  90. package/src/skills-lib/wizz-video-styles/references/film-styles/silent-film.md +109 -0
  91. package/src/skills-lib/wizz-video-styles/references/film-styles/silkscreen-poster.md +140 -0
  92. package/src/skills-lib/wizz-video-styles/references/film-styles/spy-titles.md +116 -0
  93. package/src/skills-lib/wizz-video-styles/references/film-styles/stained-glass.md +123 -0
  94. package/src/skills-lib/wizz-video-styles/references/film-styles/swiss-motion.md +115 -0
  95. package/src/skills-lib/wizz-video-styles/references/film-styles/teardown.md +127 -0
  96. package/src/skills-lib/wizz-video-styles/references/film-styles/telestrator.md +137 -0
  97. package/src/skills-lib/wizz-video-styles/references/film-styles/tilt-shift.md +107 -0
  98. package/src/skills-lib/wizz-video-styles/references/film-styles/ukiyoe.md +112 -0
  99. package/src/skills-lib/wizz-video-styles/references/film-styles/urban-sketch.md +126 -0
  100. package/src/skills-lib/wizz-video-styles/references/film-styles/visual-investigation.md +140 -0
  101. package/src/skills-lib/wizz-video-styles/references/film-styles/watercolor.md +113 -0
  102. package/src/skills-lib/wizz-video-styles/references/film-styles/white-model.md +115 -0
  103. package/src/skills-lib/wizz-video-styles/references/film-styles/whiteboard.md +118 -0
  104. package/src/skills-lib/wizz-video-styles/references/film-styles/woodcut.md +122 -0
  105. package/src/skills-lib/wizz-video-styles/references/film-styles.md +140 -0
  106. package/src/skills-lib/wizz-video-styles/references/insert-recipes.md +33 -0
  107. package/src/skills-lib/wizz-video-styles/scripts/beat_grid.py +38 -6
  108. package/src/skills-lib/wizz-vsl/SKILL.md +1 -1
  109. package/src/skills-lib/wizz-vsl/references/assembly-qa.md +1 -1
  110. package/src/skills-lib/wizz-vsl/references/blocks-and-leads.md +1 -1
  111. package/src/skills-lib/wizz-vsl/references/diagnosis.md +2 -2
  112. package/src/skills-lib/wizz-vsl/references/intake.md +5 -5
  113. package/src/skills-lib/wizz-web-security/SKILL.md +2 -0
  114. package/tools/installer/guided/labels.js +16 -0
  115. package/tools/installer/install-text.js +2 -0
  116. package/tools/installer/modules/cli-config.js +3 -0
  117. package/tools/installer/ui.js +6 -0
  118. /package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/prompts.md +0 -0
@@ -0,0 +1,123 @@
1
+ <!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/engraving), MIT, (c) 2026 LemoLab; see ../../LICENSE-lemo-opuscar.txt. Paths under demo/ and core/ name that repo's engine, which is not shipped here: build the look in HyperFrames (../film-styles.md). -->
2
+
3
+ # Copperplate Engraving — Style Prompt
4
+
5
+ > An intaglio plate that engraves itself: a burin cuts swelling lines into copper, a proof is pulled, and the figure builds up — outline, hatching, cross-hatching — until engraved lettering, magnified details and a hand-laid wash make a finished plate.
6
+ > References (grammar only): 19th-century natural-history plates — Haeckel, Audubon, Westwood, the *Britannica* copperplates (centred subject, numbered roundels, roman title over an italic name, "del." / "sculp." credits, the plate mark); Hogarth and Doré for the burin line (hatching that follows the form, crossing only in half-tones); hand-coloured plates for washes laid after printing. Never copy a plate, pose, border or title.
7
+
8
+ ## 1. Essence, and what it is not
9
+
10
+ An **intaglio print**: the line is ink held in a groove a burin cut into copper. Three rules:
11
+
12
+ 1. **Tone is made of lines, never of fills.** Light is bare paper; half-tone is one family of parallel lines; shadow a second family crossing it; the deepest dark a third, lozenge-making family. No grey fill anywhere in the ink.
13
+ 2. **Every line swells and tapers.** The burin enters fine, bites deeper mid-run and lifts out to a point. Lines thicken where the form turns from the light and vanish where it faces it; contours are cut in several runs and thin where runs hand over. A uniform-width line reads as a pen or vector drawing — never.
14
+ 3. **Colour comes afterwards, by hand**: transparent watercolour laid flat region by region over the finished black print, spilling past the lines, pooling at its edges, ink always on top. A film may stay monochrome long; colour arriving is an event.
15
+
16
+ Not a woodcut (black block, white gouges — `woodcut`), not a pen sketch (loose broken lines — `urban-sketch`), not an engineering drawing (`blueprint`), not a sepia filter.
17
+
18
+ ## 2. Materials & rendering
19
+
20
+ - **The sheet is the world**: 1920×1080 world units of laid paper (cream, ~`#f1e8d2`) with world-space texture (fibres, laid lines, sparse foxing) that zooms with the camera; a pressed, bevelled **plate mark** and a ruled border (rule + hairline) frame it.
21
+ - **Ink** is one warm near-black (~`#1c1510`). Width ratios: outlines heaviest (swelling ×0.45–1.35), first hatching from a hair (~0.18 px) to ~2 px, crossing ~0.8×, third family ~0.6×, hair and stipple finest. Spacing is **relative to the figure** (~1/180 of its height, a little wider per later family) so small figures never go grey.
22
+ - **Swell law** for every hatch line: width × (0.2 + 0.8·sin(πu)^0.7), tapered over its first and last ~22 %. Families switch on by tone thresholds (~0.14, ~0.5, ~0.75 on a 0–1 tone).
23
+ - **One light direction** for the whole film (upper left by convention); heavier outlines away from it; tone fields come from the shape (pillow lighting, analytic spheres and cylinders), never from texture. **Occlusion** is geometric: lines stop at the shapes in front.
24
+ - **Roundels**: double-ruled circle, ruled-machine ground with a white halo round the subject, content authored at a large radius and scaled in. **Leaders**: hairlines from a dot on the part to the rim, routed with clearance, a small italic figure number at the root.
25
+ - **Hand colouring** multiplies over paper and under ink: a few px of spill, slight misregister, tide-line at the wet edge, low-frequency density lift, occasional backruns, granulation; each region blooms from where the brush touched.
26
+ - **Copper** (when shown): polished warm metal, polishing hairlines, a soft reflected window; grooves = dark trough + bright burr toward the light. The **burin** (lozenge steel shaft, bevelled face, mushroom handle) is held low and turned ≤ 15° off the line so the fresh groove shows; **swarf** is a narrowing ribbon curling ahead of the point, one edge lit.
27
+
28
+ ## 3. Colour logic
29
+
30
+ - The print is two values, paper and ink; all tone is line density.
31
+ - Colour is **transparent wash only**, in muted earth and mineral pigments, one stronger pigment at most. Never opaque, never on lettering, rules or paper outside the figure.
32
+ - Reserve it: the whole subject at one moment, or only the part that matters — or none.
33
+ - Example wash sets: an amber insect with blue-grey wings; a map with a sea-green coastal band on buff land; one madder-rose organ on an otherwise black anatomy plate.
34
+
35
+ ## 4. Type & subtitles
36
+
37
+ - Lettering belongs to the plate: **roman capitals** (Bodoni Moda; title ~44–56 px, wide tracking; labels ~15–19 px), **italics** for scientific names (~20–24 px), **script** (Pinyon Script) for notes, fixed size, balanced over two lines, never shrunk.
38
+ - Roman letters are **cut glyph by glyph**; script is **written** in one left-to-right stroke. Nothing fades in.
39
+ - Subtitles: script on a deckled paper slip, bottom centre, ≤ 2 lines, never over a label. Hold ≥ max(1.8 s, speech + 0.6 s). An engraved note stays in frame chars ÷ 12 + 1 s from when it starts writing.
40
+
41
+ ## 5. Motion quality
42
+
43
+ - **Cutting order is the animation**: outline → first hatching sweeping across each form → crossing → darks, hair, stipple. Strokes run at constant burin speed, many at once (a few for outlines, dozens for hatching).
44
+ - A long single stroke may be followed by the camera; start it partly cut so no frame is empty. Keep a full build to a few seconds.
45
+ - Roundels fly on an eased arc with a small lift, growing log-linearly to size. Colour blooms from one point with a ragged front and a wet rim that dries; regions staggered.
46
+ - Nothing fades or slides like UI: lines are cut, text cut or written, colour blooms, sheets are pressed, peeled or laid down.
47
+
48
+ ## 6. Camera grammar
49
+
50
+ The camera is a **loupe over a sheet**. A vocabulary, not a route. Opening and ending come from the topic.
51
+
52
+ | Move | Expresses | Can serve |
53
+ |---|---|---|
54
+ | Loupe following the burin tip | One point of attention; making | a first mark; a signature |
55
+ | Log-zoom pull-out | The line was part of something larger | scale reveal; context |
56
+ | Push to a part, ride with its roundel | Where → what, in one take | an invisible detail; a mechanism |
57
+ | Tilt/pan along the sheet at reading zoom | Labels in order | a parts list; a coastline |
58
+ | Pull back while something flies | Everything placed in relation | acceleration; summary |
59
+ | Locked frame, or a ≤ 2 % breathing push | The plate as document | reading time; colour moving |
60
+ | Raking view across the copper | The groove as depth | the cost of craft |
61
+ | Cut from mirrored copper to true proof | Reversal | a hidden truth; before/after |
62
+
63
+ Framing: subject inside the plate mark, labels and roundels in the margins; order details so push-ins never crop a note early. Transitions from printmaking only (proof pulled, tissue guard laid over, region burnished out and re-cut, new sheet on the bed); no dissolves or wipes.
64
+
65
+ ## 7. Sound palette
66
+
67
+ - **Foley by material**: paper (peel crackle, slip tapped down, tissue rustle, sheet whoosh); press (roller rumble, thump); copper and steel (high band-passed burin hiss with chatter and faint plate ring, swarf pings, a tick on lift, circular scribe, burnishing rub); ink and water (pen scratch, ticks for cut letters, a water plip and wet brush swish). Hatching = micro-scratches denser each pass.
68
+ - **Room**: a quiet workroom (faint clock), paper room once the print exists.
69
+ - **Instruments** (choose): harpsichord, string quartet, solo cello or viola da gamba, lute, chamber organ, glass harmonica for a cold subject. Plucked and dry while lines are cut; bowed or sustained only when something soft arrives; tiny tings for a scribed ring, a low pluck on landing.
70
+ - **Silence** is real: cut room tone too, keep at most one small sound.
71
+ - **Mix**: melody an octave above the voice, music ~half under speech, −14 LUFS. Voice: a quiet curator or naturalist.
72
+
73
+ ## 8. Native moves
74
+
75
+ A menu: use the ones your story needs.
76
+
77
+ - **The cut.** Burin mid-stroke, swarf rising, nothing else. *Fits:* the first line of a treaty; a watchmaker's scribe; a coast being charted.
78
+ - **The three passes.** Form gains volume pass by pass. *Fits:* a building from its plan; a portrait emerging; a skill improving.
79
+ - **Magnification roundel.** Ring scribed, burnished, re-cut larger, flown to a margin with a leader, label cut on landing. *Fits:* a gear in a clock; a pollen grain; a harbour inset on a chart.
80
+ - **The proof.** Sheet peels off; mirrored copper becomes true paper. *Fits:* a secret out; a draft made final; a coin's die and strike.
81
+ - **States of the plate.** A region burnished out and re-cut. *Fits:* a border redrawn; before/after; a design revision.
82
+ - **Hand colouring.** Washes bloom after the print. *Fits:* one organ lit; a flag on a historical map; a ripening fruit.
83
+ - **Natural size.** A tiny true-scale figure beside the engraving. *Fits:* a seed by its tree; a chip by its circuit; a stamp by its enlargement.
84
+ - **The finished plate.** Every label and credit, locked. *Fits:* a museum label; a frontispiece; a certificate.
85
+
86
+ ## 9. Pitfalls of the medium
87
+
88
+ - Uniform width reads as pen → swell hatches, pinch contours between runs (`hatch({swell})`, `outline({run, pinch})`), keep wMin hair-fine.
89
+ - Overlaps without occlusion → pass occluders as `excl` (subtracted ring by ring; even-odd would cancel overlaps).
90
+ - Outline-only parts beside a hatched body → hatch along each part's axis, a dark at every joint.
91
+ - Burin along the cut hides the groove; big skew looks like poking → ≤ 15°. Regular swarf helix reads as a spring → vary winding, twist, light one edge.
92
+ - Reflections over grooves wash them out → copper light first. Roundels authored small freeze sub-pixel → author large, scale in. Leaders hugging the subject read as crossing it → clearance.
93
+ - A long early stroke never draws → the ink's early exit must look ahead by the longest stroke.
94
+ - A push-in cropping a fresh note breaks the reading rule → put consecutive details on one side.
95
+ - Scientific names: TTS may manage, ASR won't → give the checker a plain spelling.
96
+
97
+ ## 10. Engine
98
+
99
+ `demo/engine/`: `burin.js` (`B.Ink` ordered stroke store + `schedule`, `B.hatch`, `B.engraveTone`, `B.contourHatch`, `B.outline`/`B.stroke`, `B.stipple`, `B.fur`, tone fields), `plate.js` (`drawSheet`, `engraveText`, `writeScript`, `roundelFrame`), `wash.js` (`Wash`), `copper.js` (copper, burin, swarf), `index.js` (`engraveShape(svgPath, {at, light, spacing, style})`: any SVG shape → engraved figure). `demo/example/index.html` engraves and colours a four-pointed spark in ~20 lines; code and function table in DEMO.md "Engine reference".
100
+
101
+ ## 11. Variation space
102
+
103
+ You decide subject, details, order, opening, ending, camera path, colour, pacing and music. Use cases are **grammar for the order and duration of information**; build your own timeline from the user's facts.
104
+
105
+ | Use case | Information order | Hold per layer | Length |
106
+ |---|---|---|---|
107
+ | **Museum label / case screen** | title + scientific name → detail + term + note (×N) → where to see it | title ≥ 2.2 s; note ≥ chars/12 + 1 s; final ≥ 4 s | 30–40 s |
108
+ | **"One minute on …"** | question → name → 2–3 facts → one number → follow prompt | number ≥ 2.5 s alone | 35–60 s |
109
+ | **Textbook figure** | figure → parts labelled one by one → caption | label ≥ chars/12 + 1 s | 20–45 s |
110
+ | **Craft heritage** | object → 2–3 craft details → maker / edition | as above | 30–45 s |
111
+ | **Map / site plan** | place → insets → legend → visiting info | inset ≥ 3 s; legend ≥ 4 s | 30–45 s |
112
+
113
+ All far from our demo:
114
+
115
+ - Structures: **states of one plate** (one view re-cut three times as a place changes); **a book of plates** (four small plates turned like pages, one fact each, no roundels); **a dissection** (parts labelled in teaching order, colour only on the part taught).
116
+ - Openings: **the finished proof burnished back** to its first line; **on paper at 1×** (title cut first, figure grows below); **raking light over blank copper** as the design is traced.
117
+ - Endings: **plate beside its proof**; **the natural-size figure** held alone; **a blank new sheet** laid on the stack.
118
+
119
+ Swapping `demo/content.json` and rebuilding is a technical check that the engine re-flows, not a way to make a film.
120
+
121
+ ---
122
+
123
+ How our demo was made (story, shots, score, end card, build, content fields): [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/engraving/DEMO.md). Read it after your treatment exists.
@@ -0,0 +1,118 @@
1
+ <!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/game-show), MIT, (c) 2026 LemoLab; see ../../LICENSE-lemo-opuscar.txt. Paths under demo/ and core/ name that repo's engine, which is not shipped here: build the look in HyperFrames (../film-styles.md). -->
2
+
3
+ # Game Show Flat — Style Prompt
4
+
5
+ > A rhythm-game variety show in flat vector: toy-like mascots with thick ink outlines on candy-coloured stripes and sunbursts, every hit landing on a fixed tempo grid, call-and-response patterns, and a judgement word when each round is won.
6
+ > References (grammar only): rhythm-action party games in the Rhythm Heaven mould (cue → answer, round cards, judgement words), Japanese variety-show telops (thick outlined captions, stripe and sunburst sets), WarioWare-style stage cards. Never use their names, characters, UI, levels or music.
7
+
8
+ The length follows the number of rounds: each round is a title card plus its bars of play. Narration is optional: the style can carry a film on short shouts and telops alone.
9
+
10
+ ## 1. Essence, and what it is not
11
+
12
+ - **Everything is on the grid.** One fixed, fast tempo. Every pop, drop, stamp, typed character and camera punch sits at a (bar, beat) and is also a sound event; the score is generated from the picture's own timeline, so they can't drift.
13
+ - **One drawing kit, many sets.** Flat fills, one heavy ink outline, round caps, hard offset shadows; each round gets a new saturated background colour and pattern.
14
+ - **Characters are toys.** One body construction for the whole cast, told apart by colour, a belly patch, one head accessory and a name tag. They hop on the beat, squash on hits, throw arms up on a shout.
15
+ - **A round = a repeatable verb + a win.** The topic is split into rounds; each round has one action that can repeat on a beat, and ends on a judgement the audience reads in one glance.
16
+
17
+ Not a microgame frenzy (no timer or one-verb command per 3 s game, no change of art style per round), not a mid-century cartoon (no textured painted backgrounds, no character acting), not a keynote (no slow reveals, no gradients).
18
+
19
+ ## 2. Materials & rendering
20
+
21
+ - **Vector only**, SVG or canvas paths at 1920×1080: flat fills, one outline colour (near-black), 8 px outlines on characters and props, 5–7 px on small parts, round joins and caps.
22
+ - **No gradients, no blur, no texture, no soft shadow.** Depth is a **hard offset shadow**: the same shape in outline colour shifted ~10 px (stickers, banners) to ~14 px (cards), then the coloured shape on top.
23
+ - **Sets** = one saturated background + a same-hue pattern one step lighter: diagonal stripes (often scrolling slowly), offset polka dots (~20 % white), or a rotating sunburst. A darker floor band with an ink line on top grounds the characters.
24
+ - **Characters**: a rounded bean body, stubby arms with mitten hands, oval eyes with a catch-light, a mouth that swaps to an open one. Humans share the construction; older machines or eras read through a boxier silhouette.
25
+ - **UI kit**: round card, corner sticker banner, judgement word, burst (star + ring + speed lines), scoreboards.
26
+ - `render(t)` is a pure function of `t`: every element's state is recomputed from `t`, never carried over from the previous frame.
27
+
28
+ ## 3. Colour logic
29
+
30
+ - **Ink + paper + candy.** Near-black ink, white, and a warm cream for cards and paper props; around eight saturated candy hues (yellow, orange, red, pink, green, lime, sky, blue) plus two or three deep hues with darker partners for night or finale sets.
31
+ - **One set = one hue.** The background, its pattern and the round card share a hue; the card changes colour to match the set it introduces. Neighbouring rounds never share a hue.
32
+ - **Characters own colours.** A contestant's body colour is its identity and never changes; keep it distinct from the set it stands on (a character is never the same hue as the background).
33
+ - Big words are white or yellow with a thick ink stroke; judgement words may be pink or yellow.
34
+ - Set examples: tangerine ground `#FFB870` with `#FFA85A` stripes; teal with mint dots; navy with a gold sunburst.
35
+
36
+ ## 4. Type & subtitles
37
+
38
+ - **Display**: a heavy rounded sans for Latin and numbers (e.g. Fredoka 700); a black-weight sans for CJK (e.g. Noto Sans SC 900); a hand-lettered face only for handwritten props (e.g. ZCOOL KuaiLe).
39
+ - **Telop text**: white or yellow fill with an ink stroke ≈ 14 % of the font size painted *under* the fill (`paint-order: stroke`). Titles are built glyph by glyph so each character can pop in.
40
+ - **The telops are the subtitles.** Round cards, corner banners, labels, prop text and judgement words carry the meaning; keep them short (≤ ~20 CJK characters on a banner line, ≤ ~12 on a plate; Latin runs ~1.6× wider). With narration, subtitles are telop plates at the bottom in the same outlined type, never a thin generic caption.
41
+ - Hold every text ≥ max(1.8 s, speech + 0.6 s); a judgement word may be shorter because it is read at a glance.
42
+
43
+ ## 5. Motion quality
44
+
45
+ - **Idle = hop on the beat**: a parabola per beat (8–30 px); neighbours hop on the off-beat so a crowd ripples.
46
+ - **Hit = squash**: a damped wobble (~30 rad/s, ~0.35 s) after each hit; a small squash on every downbeat.
47
+ - **Entrances drop from the sky** with ease-in and land exactly on their beat, so the sound lands with them. Crowds drop in one per beat or half-beat.
48
+ - **Pops use back-ease** for anything appearing (cards, stickers, stamps, words); ease-in for exits. Nothing fades in slowly: things are either on or popping.
49
+ - **Shout pose**: arms up + open mouth for about half a beat.
50
+ - **Typewriter** reveals on fractions of a beat, with a click every few characters.
51
+ - Scene changes are **hard cuts on bar lines**, with a very short white flash. A fade is saved for the very end, if at all.
52
+ - Nothing moves off the grid: an event between beats sits on a subdivision.
53
+
54
+ ## 6. Camera grammar
55
+
56
+ The stage is a frontal, symmetrical proscenium; the frame itself does the moving. A vocabulary, not a route. Opening and ending come from the topic.
57
+
58
+ | Move | What it expresses | Can serve |
59
+ |---|---|---|
60
+ | Beat punch (zoom 0.8–5 % around centre, decays in ~0.16 s) | the hit, felt in the frame | any accent; a slam; a count-in |
61
+ | Several punches in one bar | the frame breathing with the music | a chorus; an escalating pattern |
62
+ | Locked frontal wide | the whole stage as a game board | a pattern being set up; a crowd; a scoreboard |
63
+ | Hard cut on the bar line + flash | a new round, a new set | chapter changes; a before/after |
64
+ | Split stage (two halves, two sets) | two sides answering each other | a rivalry; human vs machine; old vs new |
65
+ | Shrink to thumbnail (a finished bit scales down into a slot) | memory, accumulation | a recap; "and then all of this happened" |
66
+ | Vertical scroll of the set (floor to sky) | rising stakes or scale | a leaderboard; growth; a tower of items |
67
+ | Snap zoom onto one prop (hard cut to a 2× framing, back on the next bar) | this detail is the joke | a price tag; a number; a face reacting |
68
+
69
+ Keep the sum of simultaneous punches below ~0.06 so the frame edge never shows. Characters stand on the floor band; banners top-left, judgement words centre-top. Hard cuts only; no dissolves.
70
+
71
+ ## 7. Sound palette
72
+
73
+ - **All synthesized** from the picture's events: a sine kick with soft saturation, band-passed noise snare and clap, hats, slap bass, detuned-saw brass stabs with a closing filter, square lead with vibrato, marimba-like pluck, music-box bell, triangle pad, square arp, cowbell.
74
+ - **A bright major pop harmony** on a short chord loop, one chord per bar; each round gets its own flavour (funk, quiz, electro, dream, heavy…), not a new song.
75
+ - **Event foley is toy-like and pitched**: pops, plop + boing landings, stamps, typewriter clicks, buzzers, dings, servo whirs, splats; pitched pips can spell a melody as a crowd drops in.
76
+ - **Shouts, not sentences**: one- to three-word calls ("Hey!", a number, a verdict), placed 20–30 ms before the beat so the consonant lands on it. A crowd shout = several different voices stacked a few ms apart and panned across the stereo field.
77
+ - Options to vary intensity (pick what the film needs): a jingle (crash + rising brass + snare roll) into each round; a transposition up for a finale; dropping to drums only for one bar before a big hit; a half-time bar for a reveal; one bar of silence broken by a single shout.
78
+ - **Mix**: voices and foley on their own bus; music ducked from that bus's envelope; soft-clip rather than hard limit; −14 LUFS, true peak ≤ −1 dB.
79
+
80
+ ## 8. Native moves
81
+
82
+ A menu: use the ones your story needs.
83
+
84
+ - **Rounds with a card.** A 1-bar card (round number + name + a tag such as a year or a step) flies in on a jingle, then play. *Fits content like:* the steps of a recipe; the stages of a startup; the chapters of a museum tour.
85
+ - **Report card.** A typewritten recap with a grade stamp. *Fits content like:* a quarterly review; a trip summary; a final score.
86
+ - **Call-and-response.** Anything with a turn becomes a rhythm pattern; speeding up the pattern (quarters → eighths) *is* the plot. *Fits content like:* a teacher's question and the class answer; a customer order and the barista's reply; ping-pong between two negotiators.
87
+ - **Next-level tease.** Something hatches or unlocks. *Fits content like:* a next version; next season; a next grade.
88
+ - **Judgement word.** A big outlined word pops at an angle on the round's last hit. *Fits content like:* "Delivered!" on a logistics step; "Approved!" on a permit; "Personal best!" on a training plan.
89
+ - **Remix board.** One set with a timeline ribbon; each item gets a few bars centre stage, then shrinks into a slot along the bottom; at a climax all slots bounce together. *Fits content like:* a year in review; a team's release list; a festival line-up.
90
+ - **Stats as game UI.** Numbers become podium scores, counters racing to a target, price tags getting hammered, bar charts that grow per beat. *Fits content like:* fundraising progress; calories per dish; downloads of an app.
91
+ - **Crowd drop.** Many contestants drop in one per beat, each with a pitched pip. *Fits content like:* every member of a club; the planets; the ingredients of a dish.
92
+
93
+ ## 9. Pitfalls of the medium
94
+
95
+ - **Stateful updates break parallel renders**: a worker starting cold shows the initial state. Recompute every pose from `t`; compare single stills with a sequential render.
96
+ - **Cue lists drift** when cut flashes, jingles and arrangement are separate hand lists: derive them from one table.
97
+ - **Fixed-length audio buffers** cut the tail: size them from the duration.
98
+ - **Text measured before fonts load** overflows plates: load fonts, then build.
99
+ - **TTS misreads digits and symbols** in shouts: spell them out.
100
+ - **Real products as characters**: names on tags, original mascots, no logos or UI; real people only as generic stand-ins.
101
+
102
+ ## 10. Engine
103
+
104
+ `demo/frame_head.html` (SVG helpers: `el`, `txt`, `tf`, `op`, easing `E`, per-glyph `chars`/`charsPop`, `measure`), `demo/main_v1.js` (tempo grid `at(bar, beat)`, `ev()` sound events, `punch()`, `hopY`/`hitSq`, `gtext` telops, `stripes`/`dots`/`raysEl` sets, `burst`, `judge`, `banner`), `demo/main_b.js` (`bean()` characters + `pose()`, `human()`, `scene(t0, t1, build)`, `card()`, `dropY`, `heyAt`), `demo/music.py` + `demo/synth_lib.py` (event-driven score and SFX). The contract: `scene()` builds nodes once and returns `update(t)`, which only sets attributes. Module table and a minimal new round: [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/game-show/DEMO.md#engine-reference).
105
+
106
+ ## 11. Variation space
107
+
108
+ You decide the rounds and their verbs, the cast, the sets and colours, whether there is narration, the tempo, the opening, the ending and the length. The grid, the drawing kit and the telop language stay.
109
+
110
+ All far from our demo:
111
+
112
+ - Structures: **a tournament bracket** (two contestants per round, the winner advances, the final is a split stage); **one long round** that keeps escalating its single pattern from quarters to sixteenths as the story's pressure rises; **a quiz show** with three contestants where each question is a fact of the topic and the scoreboard is the argument.
113
+ - Openings: **the judgement first** (a "Perfect!" pops on an empty stage, then we rewind to how it was earned); **a single contestant alone** hopping on a bare floor until the crowd drops in; **the scoreboard** showing a final number, then counting back to zero.
114
+ - Endings: **a group photo** (everyone freezes mid-hop, a flash, the frame becomes a polaroid on a card); **a level-select map** where every finished round is a lit node; **a curtain** falling bar by bar with the last shout under it.
115
+
116
+ ---
117
+
118
+ How our demo was made (story, shots, score, end card, build): [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/game-show/DEMO.md). Read it after your treatment exists.
@@ -0,0 +1,110 @@
1
+ <!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/glass-product), MIT, (c) 2026 LemoLab; see ../../LICENSE-lemo-opuscar.txt. Paths under demo/ and core/ name that repo's engine, which is not shipped here: build the look in HyperFrames (../film-styles.md). -->
2
+
3
+ # Glass Product Render — Style Prompt
4
+
5
+ > Launch-film product rendering in transparent and frosted glass: a dark-field studio, strip-light sweeps, dispersion, caustics, light travelling inside the object, slow exploded views that snap shut on a downbeat.
6
+ > References (grammar only): premium launch films (a sweep drawing a contour in the dark, slow orbits, macro rack focus, cuts on the beat, ultra-thin wide type); transparent-hardware adverts (internals as ornament, exploded views, black and white plus one accent); dark-field glass photography. Copy none of their silhouettes, typefaces, sounds or colour templates, and never name them in the film.
7
+
8
+ ## 1. Essence, and what it is not
9
+
10
+ A single hero object of **glass, metal and light** floating in an infinite black studio. Long strips *behind and beside* it turn clear glass into a thin white outline with rainbow edges; the internals show through as in a display case. Everything moves slowly and precisely; every cut, sweep and pulse lands on the beat.
11
+
12
+ The object is always **fictional**. Never reproduce a real product silhouette (a famous phone or headphone outline), a real brand name, logo, typeface or UI.
13
+
14
+ Not a white-cyclorama catalogue shot, not a wireframe HUD, not a keynote slide: material and light are the subject.
15
+
16
+ ## 2. Materials & rendering
17
+
18
+ - **Studio = a strip-light scene, not an HDRI.** Photo-studio HDRIs contain windows and clutter that print as messy streaks on glass. Build a tiny black scene of emissive planes and bake it to PMREM **every frame** (`pmrem.fromScene(env, 0, 1, 1000)`, dispose the previous RT): tall side strips behind (silhouette), a wide far strip (horizon rim), a soft top box (volume for frosted glass and metal), a weak front card (off when concave glass faces camera), a top-front key only when parts must be read one by one, an accent card driven by the pulses, and **the sweep**: a tall strip on an arc *behind the camera* (azimuth = camera + π). Being real geometry, its highlight, refraction and dispersion move physically; never paint a 2D highlight.
19
+ - **Clear glass**: `MeshPhysicalMaterial`, transmission 1, roughness ≈ 0.015, IOR ≈ 1.5, thickness sets lensing (thicker = stronger), **dispersion on** (three r163+), near-neutral attenuation, `side: DoubleSide` so other glass sees its back faces.
20
+ - **Frosted glass**: transmission ~0.85, roughness ~0.4, milky tint, thick. On black it reads as dark grey plastic unless **something bright is behind or inside it**: an opaque emissive shape inside (blurred into a soft internal glow) and/or a bright gradient behind.
21
+ - **Metals** make transparency worth looking at: satin bands, chrome (roughness ≥ ~0.14), brushed surfaces via a roughness map, boards with gold traces. **Anything inside transmissive glass must be opaque** (only opaque objects reach the transmission buffer).
22
+ - **Light guides**: dark polished opaque acrylic, clearcoat, emissive **comet pulses** along a UV axis via `onBeforeCompile` (Gaussian head, exponential tail, white-hot core, hue drifting with age). Idle emission ≈ 0.
23
+ - **Background**: black with an optional dark-grey radial sweep that separates glass edges; the floor fades into it, **no horizon line**. **Floor**: black gloss, blurred mirror, radial fade, procedural caustics (lens ring with R/G/B radii offset, warped Voronoi filaments, rings spreading from events).
24
+ - **Post**: 2× supersampling; physical DoF (shallow macro, deep exploded views); bloom only above ~1.1; **Neutral tone mapping** (AgX washes accents to white); grain 0. Model in mm, near plane 1.
25
+
26
+ ## 3. Colour logic
27
+
28
+ - The world is neutral: black, greys, the white of strip reflections, the metals' own tints.
29
+ - **One accent colour family, reserved for light** (emission, caustic rings, the dispersion line on UI), optionally drifting between two neighbouring hues with age or energy. Examples: ice blue → soft violet; amber → rose; green → cyan. Pick it from what the product does, never from a brand.
30
+ - Emitters that only illuminate (inside frosted glass) stay cool-white and dim.
31
+ - Dispersion rainbows are allowed only at thick glass edges and in the caustic, never as a gradient on surfaces or type.
32
+
33
+ ## 4. Type & subtitles
34
+
35
+ - **Subtitles are a slab of frosted glass**: a centred rounded bar filled with the live frame blurred (`filter: blur() brightness()` on the WebGL canvas, `preserveDrawingBuffer: true`), a little cool white, a thin highlight stroke and an accent line on top. A licence-free grotesk (e.g. Inter Tight), light weight, ~36–44 px, near-white. Hold ≥ max(1.8 s, speech + 0.6 s).
36
+ - **Titles**: the same grotesk at an ultra-thin weight (200), very large (100–140 px) with very wide tracking, centred in the upper third; a diagonal glint sweeps across the letters in sync with the sweep light on the object. Small tracked caps (18–20 px) for kickers and credits.
37
+ - The product name and slogan are **title cards**, not subtitle lines.
38
+
39
+ ## 5. Motion quality
40
+
41
+ - **Everything moves on ones** (24 fps), eased: ease-in-out for camera orbits, ease-out for parts decelerating into a float, ease-in for a snap back.
42
+ - **The camera always drifts**: slow orbits or push-ins; never a locked-off frame, never handheld, except a couple of frames of micro-shake on an impact.
43
+ - **Exploded view**: parts spread along the axis (~2× product size), each with a small deterministic tilt and a spin proportional to its offset; long ease-out apart → short drifting hover → **very short ease-in snap** on a downbeat.
44
+ - Objects lift out of cradles tilted toward camera and settle upright; lids hinge at the back and stand behind the object as a backlit halo.
45
+ - Light pulses and sweeps are events on the beat grid, not free animation.
46
+
47
+ ## 6. Camera grammar
48
+
49
+ A vocabulary, not a route. Opening and ending come from the topic.
50
+
51
+ | Move | Expresses | Can serve |
52
+ |---|---|---|
53
+ | Sweep over a dark object, slow push | Contour before content | an unknown thing; a before-state |
54
+ | Slow high 3/4 orbit | The whole object in one move | a mechanism opening; variants |
55
+ | Macro, rack focus surface → part inside | Nothing to hide | an ingredient; a sensor |
56
+ | Side macro orbit | Material contrast | layers; a seam |
57
+ | Exploded view, axis ~40° to view, orbit | Technical beauty, suspension | architecture; a pause before a turn |
58
+ | Straight-on front, slight push | Declaration | a single number; a name |
59
+ | Top-down macro | A pattern at full size | channels; a circuit |
60
+ | Top-down on the floor | The effect leaving the object | range; spreading energy |
61
+ | Low orbit under the object | Monument, weight | durability; a flagship |
62
+ | Slow pull-back into negative space | Room for type | a claim; a question |
63
+
64
+ Framing: one hero, centred or on a strong diagonal, never cropped by the frame edge in a wide. Cut only on beats (bar lines where possible). Product films need **no spatial continuity** between shots: each shot is its own presentation stage, so hide or move anything that doesn't serve it. Transitions are cuts on the beat or a sweep passing through black; never dissolves or wipes.
65
+
66
+ ## 7. Sound palette
67
+
68
+ - **Minimal electronic, never piano-and-strings.** Timbres, as options: bowed-glass or wet-finger tones, granular crystal clouds, glass bells and FM glass plucks, a filtered tick grid for precision, a warm pad, sub drone, soft short kicks and claps, 808 bass (sine with pitch envelope, soft saturation, slides), noise and saw risers, a high glass ding. Minor and modal colours suit the dark studio.
69
+ - **Lock every pulse, sweep and snap to the score**: write the cue map first and share one hit list between the score and the renderer; light pulses may follow a syncopated bass pattern exactly.
70
+ - **Silence as a tool**: a short stretch of total silence (reverb tails cut too) before a release, at most a reverse whoosh inside it.
71
+ - **Foley follows the material**: glass shimmer for sweeps (band-passed noise + inharmonic partials, panned with the strip); glass-metal friction for moving covers; magnetic clicks (sub-2 ms transient + 3–5 kHz metal resonances + low thump); air puffs for moving parts; a snap = a cluster of clicks ms apart + an inharmonic glass chord (partials ×2.76, ×5.4); glass-on-glass ticks.
72
+ - **Voice**: restrained, low, launch-like, very few very short lines. Never a product name alone (ASR and viewers mishear it): give it a verb.
73
+ - **Mix**: duck music ~12 dB and foley ~6 dB under the voice; limit the biggest bass peaks ~3 dB so loudnorm stays linear; −14 LUFS; grain 0.
74
+
75
+ ## 8. Native moves
76
+
77
+ A menu: use the ones your story needs. Adapting any topic: find **the invisible thing the product does** and make it visible as light inside glass.
78
+
79
+ - **Transparency.** The inside is the hero; rack focus from the shell to the part within. *Fits content like:* a juicer's blades; a watch movement; a supplement capsule's layers.
80
+ - **Lensing.** A thick glass dome magnifies and bends what is behind it; macro through it feels like looking into a jewel. *Fits content like:* a camera module; a magnifying tool; a water filter.
81
+ - **Dispersion.** A sweep crossing a thick edge becomes a moving spectrum. *Fits content like:* a prism lamp; a display's colour range; a skincare bottle.
82
+ - **Light that travels inside.** Energy (charge, data, heat, sound) runs as light through channels. *Fits content like:* a battery filling; a router's data threads; a kettle heating.
83
+ - **Caustics.** An internal pulse becomes a ring spreading over the floor. *Fits content like:* a speaker's range; a perfume's trail; a wireless charger's field.
84
+ - **Exploded view and snap.** Parts float apart and snap back on a downbeat. *Fits content like:* a modular backpack; a pen's refill system; a repairable phone.
85
+ - **Frost to clear.** A frosted shell clears (roughness and tint animate to zero) and the inside appears. *Fits content like:* a privacy feature; a fridge's contents; an honest price breakdown.
86
+
87
+ ## 9. Pitfalls of the medium
88
+
89
+ - A manually updated mirror uses last frame's camera → call `scene.updateMatrixWorld(); camera.updateMatrixWorld()` first; the transmission pre-pass re-renders it → no-op its `onBeforeRender`, update once per frame.
90
+ - A coloured emitter inside frosted glass tints the whole object; idle glow under a lens dome becomes a pale blob; AgX turns accents white; frosted glass on black is black; mirror chrome becomes a white disc → the rules in §2–§3.
91
+ - An exploded view seen perpendicular to its axis is edge-on lines → axis ~40° to camera.
92
+ - Pure profiles read as simple shapes (mushrooms, pot lids) → 3/4 views, lids upright behind.
93
+ - Bass peaks without headroom push loudnorm into dynamic mode → limit them in the mix.
94
+ - Concave glass facing camera prints the front card as a grey rectangle → card off.
95
+
96
+ ## 10. Engine
97
+
98
+ In `demo/`: `studio.js` (strip env baked per frame, sweep, background, floor mirror + caustics + rings), `product.js` (glass / frosted / metal / guide materials, comet-pulse shader, `explode()`), `main.js` (staging, cameras, frosted subtitle bar, title glint), `story.js` (beat-grid timeline shared with the score), `music/score.py`, `mix.py` (foley + voice + ducking). New object: replace the geometry in `product.js` (e.g. a glass cylinder with a coiled light guide), keep materials and `studio.js`.
99
+
100
+ ## 11. Variation space
101
+
102
+ You decide the object (always fictional), internals, accent, structure, opening, ending, camera path, pacing and music. All far from our demo:
103
+
104
+ - Structures: **a line-up** (three variants compared by what glows inside); **a day in light** (one object through morning, noon and night, the strip kit rotating around it); **material stack** (one layer removed per beat until the core stands alone).
105
+ - Openings: **inside first** (one internal part; the shell forms around it); **caustic first** (light on the floor, followed up to the object); **silhouettes** (several dark outlines; one begins to glow).
106
+ - Endings: **floor only** (the object leaves, its caustic keeps pulsing); **cool down** (emission fades to bare strip outlines); **held macro** (no pull-back; one detail, the name small).
107
+
108
+ ---
109
+
110
+ How our demo was made (story, shots, score, end card, build): [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/glass-product/DEMO.md). Read it after your treatment exists.
@@ -0,0 +1,122 @@
1
+ <!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/halftone-dossier), MIT, (c) 2026 LemoLab; see ../../LICENSE-lemo-opuscar.txt. Paths under demo/ and core/ name that repo's engine, which is not shipped here: build the look in HyperFrames (../film-styles.md). -->
2
+
3
+ # Halftone Dossier — Style Prompt
4
+
5
+ > A retro print case file: cream archive paper, overprinted halftone dots in a few flat inks, huge heavy headlines with misregistered shadows, rubber stamps that slam, and thick-outlined characters. The film is a file that is read out one exhibit at a time.
6
+ > References (grammar only, never copy): Ben-Day-dot pop-art printing (Roy Lichtenstein era comics) for dot density as shading; riso/offset overprint zines for multiply layers and misregistration; police mugshot height charts and case-file folders for the framing device; Japanese variety-show telop captions for the keyword-highlight caption bar.
7
+
8
+ ## 1. Essence, and what it is not
9
+
10
+ - **The whole film is paper.** A warm cream sheet with low-frequency mottling, fine grain, a vignette and a fold; dark scenes are printed on it too, never glowing.
11
+ - **Shading is never a gradient**: it is halftone dots whose size follows a density field. Two or three dot layers at different screen angles overprint (multiply); that is the "printed" feel.
12
+ - **Bureaucratic apparatus**: case numbers, file chips, numbered exhibits, height charts, name plates, stamps. Their seriousness is the frame; the subject can be grave or trivial.
13
+ - **Loud but readable**: one idea per 2–4 s card, one big headline, one visual gag or exhibit, one caption line.
14
+
15
+ Not Risograph (no grainy two-ink riso texture as the whole look, no zine collage), not Swiss motion (no grid-driven kinetic type on white), not Game Show Flat (no candy sets, no rhythm-game rounds). Dots, paper and stamps must be visible in every frame.
16
+
17
+ ## 2. Materials & rendering
18
+
19
+ - **Paper layer** (canvas, multiply over everything, built once): an upscaled random tile for mottling, per-pixel noise with a slight warm bias, a radial vignette, a faint centre fold.
20
+ - **Grain layer** (per frame): a few hundred paper-coloured specks and fewer ink specks, reseeded every 2 frames: dust on the print, not film grain.
21
+ - **Halftone**: a rotated grid of circles drawn as one path; step 20–26 px; screen angle different per layer; radius = density × step × k with k 0.6–0.72 (around 0.7 dots merge into solid ink). Density fields: radial (halos, blooms, corner glows), edge (dots crowding the frame border), linear ramps ("lit from above"). The second layer is multiplied so inks overprint.
22
+ - **Halftone-filled numerals and shapes**: a flat fill overprinted with a darker halftone clipped to the glyph; giant numerals may bleed off the frame.
23
+ - **Line boil**: turbulence displacement (small, ~5 px) reseeded ~10×/s plus a fine ink-grain mask that eats a little of every fill. Characters and hand-drawn props only; **never** on text, halftone, HUD or captions.
24
+ - **Characters**: chunky shapes with a heavy ink outline (~7 px), flat fills, a lighter belly or face area, glossy eyes (ink ellipse + two highlights) that can squint, blink or close into a happy arc. One head rig shared by all body poses.
25
+ - **Stamps**: a double rounded rectangle and bold text through a coarse ink-grain + displacement filter so edges are rough and the ink mottled; ~93 % opacity, tilted ±10°.
26
+ - **Props**: starbursts, speech bubbles, confetti, radial rays, sticky notes, folders, clocks: all flat fill + ink outline.
27
+
28
+ ## 3. Colour logic
29
+
30
+ - **A paper ground, one dark ink, and four or five flat spot inks.** The dark ink (navy, black-brown or deep green) carries every outline, body text and the caption bar, and is the fade-out colour.
31
+ - One ink is the **overprint shadow** colour (misregistration offsets, caption shadows); one is the **highlight** for keywords and numerals; one warm red is reserved for stamps and alarms.
32
+ - Flat inks only. No gradients, no transparency ramps; tone comes from dot size and overprint.
33
+ - **Night or "secret" scenes** switch to a dark ink ground with a lighter dot layer of the same family, still multiplied by the paper.
34
+ - Characters may own one or two local colours (fur, clothing) that appear nowhere else.
35
+ - Example palettes: cream / navy / cobalt / hot pink / yellow / red; manila / sepia-black / teal / mustard / vermilion; off-white / forest green / tomato / sky / ochre.
36
+
37
+ ## 4. Type & subtitles
38
+
39
+ - **Headlines**: a black-weight serif (e.g. Noto Serif SC 900 for CJK; a black slab for Latin), 100–230 px, left-aligned near the margin, with a **misregistration shadow** (+8/+8 px in the overprint ink, multiplied).
40
+ - **Display / numerals**: a fat rounded display face (e.g. Bagel Fat One) for names, big numbers, times.
41
+ - **Interjections**: a playful hand face (e.g. ZCOOL KuaiLe), paper fill with a thick ink stroke and an offset shadow.
42
+ - **Data / HUD**: a heavy monospace (e.g. JetBrains Mono 800) for case numbers, dates, rulers, file names.
43
+ - **Captions and stamps**: a black-weight sans.
44
+ - **Cards are the subtitles.** A headline per beat, plus a **caption bar**: a dark-ink rounded pill with an overprint-ink offset shadow, paper-coloured text, the **keyword in the highlight ink**. It pops in after the headline and holds ≥ max(1.8 s, speech + 0.6 s). With narration, the caption bar carries the spoken line.
45
+ - **HUD**: case number and a chapter chip top-left, a status (REC dot, date) top-right; colours invert on dark scenes.
46
+ - Latin runs 2–3× longer than CJK: smaller headlines, 1–2-word stamps (GUILTY, CLOSED), a tighter per-character stagger.
47
+
48
+ ## 5. Motion quality
49
+
50
+ - 30 fps transforms; **line boil at ~10 fps** on characters, so the drawing breathes while positions stay smooth.
51
+ - **Everything enters with overshoot** (back ease, 0.3–0.45 s): rising from below the frame or scaling from 0. Nothing fades in.
52
+ - **Per-character pop** for headlines: each glyph drops 30–100 px and squashes in, stagger 0.05–0.08 s (0.02 s for small text).
53
+ - **Stamp slam**: ~0.09 s from ~2.6× to 1× (ease-in), then a small damped bounce; camera shake, flash and stamp sound on the same frame.
54
+ - **Squash landings** preserve volume (`scale(1/sq, sq)` with a damped cosine).
55
+ - **Idle life**: breathing, tail or hair sway, blinks at scripted times, twinkles, a blinking REC dot or clock colon.
56
+ - **Dot wipe transitions**: a coarse grid of circles grows to full cover and shrinks back (~0.44 s) with a diagonal delay; the scene switches while covered. Each cut may take its own wipe colour. A hard cut is the contrast tool, on a big hit.
57
+
58
+ ## 6. Camera grammar
59
+
60
+ A 2D camera group over a flat, frontal page. A vocabulary, not a route. Opening and ending come from the topic.
61
+
62
+ | Move | What it expresses | Can serve |
63
+ |---|---|---|
64
+ | Locked frontal with a small beat pulse (~0.6 %) | the page as a poster, grooving | a title; a list; an accusation |
65
+ | Slow push-in (1 → 1.05–1.08) | scrutiny, rising tension | a profile; a summary before a verdict |
66
+ | Shake with quadratic decay (5–26 px) | impact | a stamp; a crash; a landing |
67
+ | Flash frames (white overlay ≤ 0.95 → 0, capped at 0.5 for big hits) | being photographed, a revelation | a mugshot; a verdict; evidence found |
68
+ | Pan across a pinned board | connection between exhibits | a timeline; suspects; a chain of events |
69
+ | Snap zoom into a halftone detail until dots are huge | "look closer" | a fingerprint; a signature; a number |
70
+ | Page turn / folder slide | next file, next chapter | a second case; a flashback |
71
+ | Pull back to reveal the whole desk | the file is one among many | scale; "this happens every day" |
72
+
73
+ Compose like a printed page: headline top-left, subject right-centre, caption bar bottom-centre, HUD in the corners. Transitions: dot wipe or hard cut; no dissolves.
74
+
75
+ ## 7. Sound palette
76
+
77
+ - **Synth pop-print toolkit**: synth kick, snare, clap, hat; a square-ish 8th-note bass; triangle pad; a **marimba-like pluck** (fundamental + ~4× partial) for melody; pizzicato and finger snaps for sneaking; music-box bell for tenderness.
78
+ - **Foley follows the print and the gag**: stamp = pitch-dropping boom + click (a crackle for big ones), camera shutter, paper slides and folder flaps, typewriter or keyboard clicks, whooshes into wipes, pops on every glyph, boings and plops for characters, glass or ceramic for breakables, synthesized animal or creature voices (formant sweeps).
79
+ - **Silence before the stamp**: empty the music just before a verdict so the stamp lands alone. Other options: a snare roll + rising sweep into a reveal; stripping to bass and snaps for a secret scene; a bell arpeggio as a tag; a single sustained pad under a sad exhibit.
80
+ - **Voice** is optional; cards carry the film. If narrated: a dry, deadpan report voice, never breathless.
81
+ - **Mix**: SFX ahead of the music on impacts, soft-clip master, −14 LUFS, true peak ≤ −1 dB.
82
+
83
+ ## 8. Native moves
84
+
85
+ A menu: use the ones your story needs.
86
+
87
+ - **The accusation frame.** A topic becomes "the case of X": list its counts. *Fits content like:* a cognitive bias on trial; a city's traffic problem; a plant that won't stop growing.
88
+ - **Numbered exhibits.** Each beat gets a giant halftone numeral behind it. *Fits content like:* five causes of a blackout; three clauses of a contract; the stages of a recall.
89
+ - **The stamp.** A verdict is a physical slam. *Fits content like:* APPROVED on a grant; EXPIRED on a policy; VERIFIED on a rumour check.
90
+ - **The mugshot.** Frontal subject, height chart, name plate, flash. *Fits content like:* a new species; a product teardown; the "suspect" in a bug report.
91
+ - **Evidence board.** Exhibits pinned and linked with string, then shaken. *Fits content like:* a supply chain; a family tree; a heist's timeline.
92
+ - **Dot density = emotion.** Dots swell into a halo, crowd the edges for tension, bloom radially for joy. *Fits content like:* a record broken; a deadline closing in; a reunion.
93
+ - **Redaction.** Black bars print over words and lift one by one. *Fits content like:* a leaked memo; a surprise party plan; spoilers.
94
+
95
+ ## 9. Pitfalls of the medium
96
+
97
+ - **Fonts not loaded before layout** → per-character positions computed with a fallback font, glyphs overlap. Preload every family against the whole page source and the built text; runtime strings must use only characters that appear in the file. Use `font-display: block`.
98
+ - **Boil on text or dots** turns them to mush → filter only characters and props.
99
+ - **Clip-path ids are global** → every clipped numeral needs a unique id.
100
+ - **Time-windowed scenes** → an element invisible before its cue needs explicit opacity 0 for `t < t0`.
101
+ - **A dot wipe short of full coverage** at the cut shows the hard switch; make the max radius cover the grid cell's diagonal.
102
+ - **A 100 % white flash** reads as a dropped frame → cap at ~0.5.
103
+ - **Dots too small** (< ~14 px step at 1080p) alias into moiré after encoding.
104
+ - **Too many inks** lose the print feel → at most five plus paper.
105
+
106
+ ## 10. Engine
107
+
108
+ Everything lives in `demo/index.html`: helpers (`el`, `txt`, `tf`, `seg`, easings, `measure`), per-character text (`chars` + `charsPop`), **halftone** (`halftone()` with `radial`/`edge` density fields), `caption()` bar, **stamp** (`stampEl` + `stampAnim`), a mascot rig with a `setFace` interface, `scene(t0, t1, build)`, HUD chips, dot wipe (`WIPES`), paper + grain (`buildPaper`, `drawFx`), `render(t)`. `demo/render.mjs` renders stills and video; `demo/music.py` synthesizes score and SFX. Line ranges and a minimal scene: [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/halftone-dossier/DEMO.md#engine-reference).
109
+
110
+ ## 11. Variation space
111
+
112
+ You decide what the file is about, its counts or exhibits, the characters (or none), the inks within the colour logic, the tone (farce or grave), the opening, the ending and the length (it grows with the number of exhibits; each needs time to be read).
113
+
114
+ All far from our demo:
115
+
116
+ - Structures: **a declassified report** whose pages are unredacted one by one until the real story shows; **a missing-person file** that works backwards from the last sighting; **an insurance claim** where each exhibit contradicts the claimant's statement.
117
+ - Openings: **the evidence bag** (one object on a dark ink ground, the file assembles around it); **a fingerprint** in huge dots that resolves into a face as we pull back; **the phone call** (a caption bar alone on paper, the file drops in after).
118
+ - Endings: **the file goes into a drawer** full of identical files; **a redacted final page** (the answer stays blacked out); **the stamp misses** (it lands on the table, the subject walks free out of frame).
119
+
120
+ ---
121
+
122
+ How our demo was made (story, shots, score, end card, build): [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/halftone-dossier/DEMO.md). Read it after your treatment exists.