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,112 @@
1
+ <!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/lowpoly-island), 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
+ # Low-poly Isometric Island — Style Prompt
4
+
5
+ > A tiny faceted world seen through an orthographic isometric lens: everything is a geometric block, and everything that appears arrives with a bounce and a note.
6
+ > References (grammar only): *Townscaper* (building is the performance; every piece lands with a springy bounce and a sound; pieces sprout small details by themselves); *Monument Valley* (isometric geometry, soft pastel palettes, gradient skies, calm pacing, lots of empty space). Never copy their grids, buildings, characters, UI or typography, and never name them on screen.
7
+
8
+ ## 1. Essence, and what it is not
9
+
10
+ A miniature world built from **flat-shaded low-poly geometry** (hexagonal tile columns, box buildings with prism roofs, cone and icosahedron trees) floating in a faceted sea or void, watched by an **orthographic camera** at an isometric angle. No perspective and no horizon: distance dissolves into a **screen-space sky gradient**, so the world looks like a model suspended in colour. **Light, not texture, tells time**: every facet changes colour as the sun moves; in the dark only emissive blocks keep their colour.
11
+
12
+ Not a voxel game (no cubes-of-cubes, no pixel texture), not a tilt-shift photograph of a real place (no perspective, no photo detail), not a smooth-shaded 3D cartoon (no rounded normals, no subsurface).
13
+
14
+ ## 2. Materials & rendering
15
+
16
+ - **Geometry** (world unit = one hex tile's circumradius): pointy-top hexagonal columns (`CylinderGeometry(r, r, h, 6)`), axial → world `x = √3(q + r/2)`, `z = 1.5 r`. Terrain height encodes material (sand low, grass, hills, rock highest). A thin separate top cap sits over a darker side colour; **sink the side column's top below the cap** or it z-fights. Leave a small gap between tiles so AO draws the seams.
17
+ - **Props** are primitive assemblies: boxes, prisms, low-segment cylinders and cones, icosahedra at detail 0, pinched boxes. Emissive parts (windows, lamps) get their own material per object so they can light individually.
18
+ - **Materials**: `MeshStandardMaterial({ flatShading: true, roughness ≈ .9 })`, **no textures**. Jitter each tile's lightness a few percent so the ground isn't a spreadsheet.
19
+ - **Water** (if any): a dense non-indexed plane displaced by summed sines in the shader, flat-shaded so each triangle glints on its own (not too low a roughness or facets flash white); a coarse plane below for zoom-outs; a **shallow map** redrawn per frame where land exists, mixing deep → shallow colour with a faint foam rim; a thin transparent ring at each tile's water line for surf.
20
+ - **Sky without a horizon**: in post, linearise the orthographic depth and blend distant pixels into a vertical screen gradient; set haze start/end as fractions of frustum height × cot(elevation) so the horizon band stays in the top third at any zoom. Stars (hash grid, twinkle) only where haze is thick.
21
+ - **Post**: MSAA + depth → **GTAO** (mandatory: it draws the seams between tiles and under roofs) → sky/haze composite → a very light tilt-shift at the frame edges → bloom (stronger at night) → pastel grade → Neutral tone mapping. Supersample 2×.
22
+ - **Light beams** (searchlight, projector, torch): a camera-facing ribbon with a Gaussian profile, bright at the root and fading with distance, plus a wider faint halo copy; light the surface under it in its own shader.
23
+
24
+ ## 3. Colour logic
25
+
26
+ - **Pastel, low contrast, a handful of hues**: one ground family (sand/grass/earth or its equivalent), one neutral rock, and a small set of wall and roof colours repeated across buildings.
27
+ - **Time of day is a keyframed set of colours** (zenith, horizon, deep, shallow, sun colour, intensity, elevation, azimuth), interpolated. Day is airy and cool; dusk warms the horizon; night desaturates everything toward blue-violet.
28
+ - **At night, warm emissives are the only bright things** (windows, lamps, a beam). Keep the sun sideways to the camera in key shots (low sun behind the target turns faceted water into glare); water receives no shadows.
29
+ - No outlines, no black; shadows and AO are the only darks.
30
+
31
+ Examples of world palettes: sand, grass and coral roofs under a pale-blue day; snow tiles, pine greens and red cabins under a lilac sky; terracotta mesas, sage scrub and turquoise pools under an apricot dusk.
32
+
33
+ ## 4. Type & subtitles
34
+
35
+ - Geometric OFL sans faces: a rounded one for subtitles (e.g. Quicksand 600), a geometric caps face with wide tracking for titles (e.g. Josefin Sans).
36
+ - **Subtitles**: no box; warm white with a soft dark-blue drop shadow, centred low; a small flat-shaded tile icon beside them whose top colour follows the time of day. Hold ≥ max(1.8 s, speech + 0.6 s), never overlapping the next line or a title.
37
+ - **Titles behave like tiles**: letters rise one by one from under a water line, overshoot and settle.
38
+ - A text card over the world leaves a gap where the world stays visible.
39
+
40
+ ## 5. Motion quality
41
+
42
+ - On ones (24 fps), smooth. The charm is in the **arrival curves**, not stepping.
43
+ - **Rise from below**: a short cubic ease up, then a damped-sine overshoot; a splash ring and spray the moment it breaks the surface. The event time is when it settles.
44
+ - **Drop and stack** (floors, roofs, rings): a fast ease-in fall, a damped bounce, and volume-preserving squash-and-stretch on landing.
45
+ - **Pop** (trees, lamps, details): scale `1 − e^(−k s)·cos(ω s)`, about 25 % overshoot.
46
+ - **Life**: mills turn, smoke puffs, birds circle, boats bob with the same wave function as the water (evaluated on the CPU).
47
+ - **Schedule growth on the music grid**: at most one piece per smallest slot, so every event keeps its own note; accelerate by density (halves → quarters → eighths), not by tempo.
48
+ - Never moves: the projection (no perspective, no fov change).
49
+
50
+ ## 6. Camera grammar
51
+
52
+ `THREE.OrthographicCamera`. **Frustum height is the zoom** (a few units for a close-up, the whole world at a dozen or more, hundreds for a scale reveal); place the camera ≥ 3 × frustum height away or the bottom of the frame looks under the sea. A vocabulary, not a route. Opening and ending come from the topic.
53
+
54
+ | Move | What it expresses | Can serve |
55
+ |---|---|---|
56
+ | Turntable (azimuth sweep) | the thing seen from every side | building; inspecting; a product assembled |
57
+ | Pure orthographic zoom (frustum change) | scale without perspective | a detail in context; smallness; a world among worlds |
58
+ | Elevation change | low (≈20–25°) widens the sky band; high (≈50°) reads as a map | night and stars; a sweep across the whole world; a plan |
59
+ | Locked 3/4 wide | the world lives on its own | lights coming on; time-lapse; waiting |
60
+ | Tight close-up on one arrival | the bounce and the splash | a key piece; a milestone; a gag |
61
+ | Side angle trailing a mover | travel across the frame, never at the lens | a delivery; a departure; a route |
62
+ | Lateral truck along a row of tiles | a list, a sequence | steps of a process; a timeline |
63
+ | Time-lapse sun sweep, camera still | light is the time machine | a day; a season; history |
64
+
65
+ Intercut wide and close on beats: wide shows the shape growing, close sells the bounce. Transitions: hard cuts on the beat, a time-of-day change, a zoom through the sky; no dissolves, no perspective whip-pans.
66
+
67
+ ## 7. Sound palette
68
+
69
+ - **Music can be event-driven**: growth events carry a note, and the score synthesizes each one at its exact time, so the picture writes the tune. Pitched percussion suits the facets: marimba, kalimba, woodblock, bells, vibraphone, celesta, steel drum; underneath, a soft pad, a gentle ostinato, light shaker or soft kick. Pentatonic or modal material keeps any order of notes consonant. **No piano, no strings.**
70
+ - **A single note can be a motif**: one sound owned by the world (a bell, a chime, a horn) that returns changed.
71
+ - **Foley follows material**, all synthesizable: bubble sweep + splash with droplet ticks for rising tiles (bigger = lower); wooden knock plus a quieter bounce knock for floors; ceramic clack for roofs; hollow plank knock; heavy stone thunk; glass tink; a low whump with electric hum for anything switching on.
72
+ - **Beds**: low-passed brown-noise water with swells, birds as downward-gliding FM chirps, creaking wood, crickets or wind at night.
73
+ - **Silence**: drop to a low drone and a bed; a moment of digital zero on the music bus before a big downbeat. Options: thin the ostinato to one voice instead of stopping it; let the world's own events carry the rhythm for a passage.
74
+ - **Voice**: clear and gentle, few short lines; avoid words that collide with the film's subject (a film about baking: "flour" heard as "flower").
75
+ - **Mix**: voice compressed and well above the music, music ducked under it, −14 LUFS; **grain 0** (flat colour shimmers with grain).
76
+
77
+ ## 8. Native moves
78
+
79
+ A menu: use the ones your story needs.
80
+
81
+ - **Building is composing**: every piece that lands plays a note; a later sweep can replay them in spatial order as a finished melody. *Fits content like:* a skyline whose floors are notes; a team assembling a product; a garden whose flowers form a chord.
82
+ - **Procedural growth**: tiles rise, floors stack, trees pop. *Fits content like:* a startup's first year; a coral reef recovering; a neighbourhood being planned.
83
+ - **Scale by pure zoom**: one object fills the frame, then the world becomes a speck (or the reverse). *Fits content like:* one user among millions; a village on a continent; a data centre inside a network.
84
+ - **Turntable**: a continuous rotation around the thing being made. *Fits content like:* a machine being assembled; a museum object; a house renovation.
85
+ - **Light as clock**: shadows sweep and facets re-colour. *Fits content like:* a day of a shop; a year of a farm; a shift at a hospital.
86
+ - **Emissive blocks in the dark**: lights coming on one by one, a beam sweeping like a clock hand. *Fits content like:* a network going live; a town at nightfall; volunteers joining a cause.
87
+
88
+ ## 9. Pitfalls of the medium
89
+
90
+ - `perspectiveDepthToViewZ` in shared post code is wrong for an orthographic camera → `orthographicDepthToViewZ`.
91
+ - GTAO renders sprites and transparent objects as solid quads → hide them during the AO pass; set `visible = false` at zero opacity.
92
+ - Side column and top cap sharing one plane → z-fighting → sink the column.
93
+ - A double-sided additive cone reads as two white lines → a camera-facing Gaussian ribbon + halo.
94
+ - Camera too close for its frustum → the frame bottom shows below the sea → distance ≥ 3 × frustum height.
95
+ - Two pieces landing in one grid slot muddy the melody → one piece per slot.
96
+ - `half` is a reserved word in GLSL.
97
+
98
+ ## 10. Engine
99
+
100
+ In `demo/` (three.js): `world.js` (hex layout, primitive props, growth schedule → events with notes, arrival curves), `sea.js` (faceted wave shader, shallow map, beam-lit water), `post.js` (ortho post: GTAO → sky/haze + stars → tilt-shift → bloom → grade), `story.js` (beat grid, time-of-day keyframes, shots), `main.js` (renderer, lights, per-shot cameras, HUD, event export), `music/score.py` (event-driven score; `music/check.py` compares audio onsets and pitches with the events), `mix.py` (foley, beds, ducking). File map and build steps: DEMO.md.
101
+
102
+ ## 11. Variation space
103
+
104
+ You decide the world (island, town, orchard, factory floor, planet), what grows or changes, the palette within the colour logic, the opening, the ending, the camera path and the pacing. All far from our demo:
105
+
106
+ - Structures: **erosion** (a finished world loses pieces one by one, each removal a falling note, until only the essential piece remains); **two worlds** side by side trading pieces across a gap until they join; **a year in four seasons** on one fixed world, the palette keyframes carrying the story.
107
+ - Openings: **mid-construction** (a busy half-built world, many pieces already dropping); **from above** (a top-down map that tilts down into isometric); **the full world first**, then a push into one tile where the story lives.
108
+ - Endings: **a close-up on one final piece** landing, no pull-back; **the world packed away** (pieces fly up and stack into a box); **daylight** (dawn floods the world and the music resolves on the first sunlit facet).
109
+
110
+ ---
111
+
112
+ How our demo was made (story, shots, score, end card, build): [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/lowpoly-island/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/microgame), 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
+ # Microgame Frenzy — Style Prompt
4
+
5
+ > A rapid-fire party-game film: one command word, a few seconds, one action. Every microgame is drawn in a completely different art style, and the film keeps getting faster.
6
+ > Genre reference (grammar only): the WarioWare series. Never use its name, characters, UI, microgames or music.
7
+
8
+ The format suits short films; once the frenzy stops building, end it.
9
+
10
+ ## 1. Essence, and what it is not
11
+
12
+ - **A microgame = a shouted command word + 2.5–4 s + one action + one result** (success, or a funny failure).
13
+ - **Each microgame uses a different visual medium** (crayon, ink wash, terminal, risograph, pixel, blueprint, Swiss type, clay, cut paper, woodcut…). The jolt of each switch is both the joke and the beat.
14
+ - **One fixed home look** holds the film together: a show stage with a host, a lives counter and a stage number, which the film returns to between games.
15
+ - **It keeps accelerating**: every few games tempo, game length, dwell, command hold and animation frame rate step up together.
16
+ - **The hero survives every medium** by keeping two or three silhouette marks.
17
+
18
+ Not Game Show Flat (one art style, rounds of bars, call-and-response), not a style sampler reel (every game has stakes; lives connect them), not a montage (each game has a rule grasped in under a second).
19
+
20
+ ## 2. Materials & rendering
21
+
22
+ - **Home stage**: flat toon, thick near-black outline (~7 px), flat fills, **one hard-edged shadow** (fill in the shade colour, clip to the shape, refill shifted up-left). Fixed furniture: a frame-within-the-frame where games play (a TV, an arcade cabinet, a phone, a window), the lives board, a stage badge, a trigger prop (button, lever, bell).
23
+ - **Each medium is a simplified re-drawing, 100–200 lines of code**, built around one channel trick that makes it read at a glance:
24
+ - drawn media store **pressure or wetness in a channel** (crayon: alpha = pressure against paper tooth; ink: wet and dry ink channels);
25
+ - print media store **plate densities** (riso: a channel per plate, additive overprint, halftone, misregistration);
26
+ - screen media are **low-res buffers** scaled up (pixel: indexed buffer, auto outline, dither; terminal: hand-authored glyph art, phosphor shader);
27
+ - technical media are **line systems** (blueprint: line weights and dimensions; Swiss: a strict grid, one sans, one signal colour).
28
+ - **Hero translation**: the hero is redrawn from scratch in each medium, but the same marks always survive (e.g. a hat shape, one coloured dot, a number on the chest). Make a model sheet of the hero in every medium before animating.
29
+ - **Mixed-media frames**: alpha-coverage media over a base, paper media multiplied, screen media flat and clipped to a panel. WebGL2 material shaders turn the channel buffers into each look.
30
+
31
+ ## 3. Colour logic
32
+
33
+ - **The home stage owns a saturated party palette**: a deep ground behind a rotating sunburst, two or three loud accents, plus a fixed success colour and a fixed fail colour used by stamps and the lives board only.
34
+ - **Each medium brings its own palette** from its tradition (wax colours, one-ink-plus-vermilion, amber phosphor, three riso plates, a limited pixel palette, white-on-blue, black-white-red). Never tint a medium with the home palette.
35
+ - **One accent follows the hero across media** where the medium allows (a single vermilion dot in ink, an inverse glyph in a terminal, a signal-red circle in Swiss type): it is how the eye finds the hero after a switch.
36
+ - Example home palettes: violet `#2a0f5c` with magenta `#ff2e88`, gold `#ffc928`, cyan `#1fd1d1`; teal ground with coral and lemon; black stage with hot orange and electric blue.
37
+
38
+ ## 4. Type & subtitles
39
+
40
+ - **The command word is the subtitle**: a heavy display face (e.g. Titan One), white with a thick ink outline, a coloured drop and a burst behind it, skewed a few degrees. It slams in over ~3 frames (overshoot → settle), holds, then **shrinks into a corner tag before the first action**, so the result is never covered. One-off banners fly out instead of tagging, so tags never pile up.
41
+ - **Other lines**: a rounded card in the home palette with the home outline and hard shadow, a friendly rounded face (e.g. Lilita One ~50 px), a small speaker icon; placed above the timer in games. Hold ≥ max(1.8 s, speech + 0.6 s), never under a big banner.
42
+ - Inside a game, any text (replay captions, labels) uses **that medium's own typography**.
43
+ - The command word appears in the .srt only, never burned twice.
44
+
45
+ ## 5. Motion quality
46
+
47
+ - **The frame rate is part of the ladder**: characters step on twos or at 8 fps early, faster later, on ones at the climax. Camera moves, transitions and the timer spark always run on ones.
48
+ - **Five things accelerate together** at each speed-up: tempo, game length, stage dwell, command hold, character frame rate.
49
+ - **The timer is visible and on the beat**: e.g. a fuse with one knot per beat, the spark passing each knot exactly on it. It freezes in a replay.
50
+ - **Unified transition through the frame-within-the-frame**: push into the screen to start a game (~0.25 s), shrink the game back into it to return (~0.33 s) with a ✓ / ✗ stamp. No fades, no blank frames.
51
+ - **Failure is performed**: the action overshoots, splats, bonks or rolls off; the medium's own physics makes the joke.
52
+ - **Instant replay** for a failure that must be understood: freeze, half speed, push-in, letterbox, a caption in the medium's type.
53
+ - The home host has a tick on every beat; stopping it dead is the strongest emotional tool.
54
+
55
+ ## 6. Camera grammar
56
+
57
+ A vocabulary, not a route. Opening and ending come from the topic.
58
+
59
+ | Move | What it expresses | Can serve |
60
+ |---|---|---|
61
+ | Start inside a game, command already slamming | the rules explain themselves | throwing the viewer in |
62
+ | Pull back out of the game screen | scale: this was one screen on a show | the first return to the stage |
63
+ | Locked frontal home frame | the constant; only the scoreboard changes | stage beats; the host's reaction |
64
+ | Slot reels (the stage splits into spinning strips of earlier frames, stopping one per beat) | acceleration, a summary | a speed-up; a change of round |
65
+ | Extreme insert on the trigger prop | the start, felt | a game starting on the downbeat |
66
+ | Lights cut to one top spot, frame unchanged | stakes; the last chance | the last life; a decision |
67
+ | Tile flip (last frames of past games flip into pieces of a new frame) | the past becomes the material of the present | a boss or finale; a recap |
68
+ | Push into a detail, hold | the viewer notices before the hero does | a clue; a silence |
69
+ | Snap back to wide on one beat | release | a solution blooming; a save |
70
+ | Split screen, two media side by side | comparison, rivalry | two players; before/after; two approaches |
71
+
72
+ Framing: the game screen is a fixed fraction of the frame (around 40 % of the width); in a mixed-media frame keep **one focal chain** (A leads to B leads to C) and push info panels into a corner.
73
+
74
+ ## 7. Sound palette
75
+
76
+ - **Music first**: a tempo grid and a cue table before any animation; every picture hit lands on a listed cue.
77
+ - **A constant groove + one colour instrument per medium.** The groove (kit with ghost notes, slap or synth bass, brass stabs, keys) runs throughout; each medium adds its own timbre: toy piano for crayon, shakuhachi or guqin for ink, square beeps for terminals, vibes for print, pulse arpeggios for pixel, a typewriter for drafting, claves for Swiss, kalimba for clay, koto for woodcut.
78
+ - **Foley follows the medium**: wax squeaks, wet splats, teletype relays, paper crunch, bit-crushed noise, ratchets and stamps, hollow bonks. Home stage: a spring trigger click, glass crack for a lost life, card flips, a reel whirr, sparse claps.
79
+ - **Acceleration options** (use what fits): a rising brass run into each speed-up; the key rising a step per round; halving note values instead of changing tempo; dropping the groove to a heartbeat on the last life.
80
+ - **Real silences**: at least one before the biggest hit (a heartbeat or one pitched note may remain). The loudest moment comes right after the longest silence.
81
+ - **Voices**: a host who shouts every command a hair *after* the stab so brass doesn't mask it; a hero with very few words (reactions work best). Duck music ~11 dB and foley ~6 dB under voice. −14 LUFS.
82
+
83
+ ## 8. Native moves
84
+
85
+ A menu: use the ones your story needs.
86
+
87
+ - **Style switch per game.** Each task is drawn in the medium that suits it. *Fits content like:* the steps of baking bread (flour in crayon, oven dial in blueprint, crust in woodcut); a day of a nurse; a heist's roles.
88
+ - **Command word.** One verb is script, subtitle and downbeat. *Fits content like:* SCAN! at a checkout; BREATHE! in a yoga class; SIGN! at a contract signing.
89
+ - **Lives as UI.** The counter carries emotion without narration; 3 → 2 → 1 (blinking) builds tension alone. *Fits content like:* a phone battery; retries on a driving test; chances left on a quiz.
90
+ - **SPEED UP.** Everything steps up together. *Fits content like:* rush hour; the last week before a deadline; a kitchen during dinner service.
91
+ - **Failure becomes the solution.** The material of an earlier failure returns in the final game as the answer. *Fits content like:* a spilled coffee that later stains the winning map; a bug that becomes a feature; a missed train that leads to the right meeting.
92
+ - **Boss mixes the rules.** The final game is built from pieces of earlier media. *Fits content like:* a final exam; launch day; a festival's closing night.
93
+ - **Instant replay.** The joke explained in slow motion. *Fits content like:* a goal-line decision; a typo that shipped; a cat's leap that missed.
94
+
95
+ ## 9. Pitfalls of the medium
96
+
97
+ - **A luminance-ramp ASCII figure is mush** → hand-authored glyph art with structural glyphs, an inverse glyph for the accent.
98
+ - **Ink shapes read as smoke** unless their silhouette is designed (a short round blot phase, then a clear structure with seams and light edges).
99
+ - **A failure at high tempo goes unread** → make the action overshoot and hit something, or give it an instant replay.
100
+ - **Alpha-coverage media show the background through gaps** → a full-pressure base where it must be solid.
101
+ - **Drawing helpers with a global context** draw on the wrong canvas when scenes render into offscreen buffers (game screen, reels, tiles) → set and restore the context.
102
+ - **Command tags pile up** → secondary commands fly out.
103
+ - **A 100 % white flash** reads as a blank frame → cap at ~60 %.
104
+ - **TTS single-word commands** gain a vowel tail ("Pump!" → "Pompey") → generate a two-word phrase and cut after the first word using ASR timestamps; verify each clip, since ASR mishears 0.2 s words in a dense mix.
105
+
106
+ ## 10. Engine
107
+
108
+ `demo/timeline.js` (tempo grid and segments, the single source of truth), `demo/toon.js` + `demo/stage.js` + `demo/hud.js` (home look, stage, timer, command word, stamps, lives, subtitle cards; call `setCtx` when drawing offscreen), `demo/chars.js` (host and hero rigs), `demo/glpass.js` (WebGL2 material shaders: riso, crayon, CRT, ink, blueprint paper), one `demo/g_<medium>.js` per medium (`sceneX(g, lt)` + the hero translation), `demo/film.js` (transitions through the TV, slot reels, tiles, events). Module map and build: [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/microgame/DEMO.md#build-notes).
109
+
110
+ ## 11. Variation space
111
+
112
+ You decide the tasks, which medium draws each, the home stage and its frame-within-the-frame, the host and hero, the number of rounds, where failures fall, the finale, the opening and the ending. The command → action → result unit, the medium switch and the acceleration stay.
113
+
114
+ All far from our demo:
115
+
116
+ - Structures: **two players, alternating** (each game is played by one of two rivals; the lives board is a tug-of-war); **one day, hour by hour** (each game is an hour, the speed-ups are the morning rush and the evening rush, the finale is midnight); **a relay** (the result of each game is the object handed into the next one, so the chain is the story).
117
+ - Openings: **the home stage asleep** (lights off, the host wakes on the first beat); **a game-over screen** we rewind from; **the lives board alone**, a counter clicking down before we know what it counts.
118
+ - Endings: **a high-score table** where the hero types their name letter by letter in each medium; **the credits as one more microgame** (CATCH THE NAMES!); **the home stage packs away** into the frame-within-the-frame and the screen switches off.
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/microgame/DEMO.md). Read it after your treatment exists.
@@ -0,0 +1,108 @@
1
+ <!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/microscope), 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
+ # Microscope Story — Style Prompt
4
+
5
+ > Real, licence-clean microscopy of a real specimen, seen as it is, and one continuous change of scale that carries the viewer from the glass slide in the hand to a single cell. Focus breathes when the magnification changes, a focal plane sweeps when the camera lands, and every scale bar, field of view and reading comes from the image's own metadata.
6
+ > References (grammar only): Charles and Ray Eames' *Powers of Ten* (one continuous change of scale with a readout riding along); premium microscope launch films (dark bench, glass catching light, restrained marks, clean instrument sound); digital-pathology viewers' instruments (scale bar, field of view, magnification). Copy none of their layouts, interfaces, typefaces or music; never name them in the film.
7
+
8
+ ## 1. Essence, and what it is not
9
+
10
+ - **The specimen is a photograph**: a real micrograph or whole-slide scan of the actual sample, CC0, public domain or CC BY. Nothing on the specimen is drawn, retouched or generated. A whole-slide image (WSI) is the ideal source: one sample, one registered pyramid from millimetres to microns, with the pixel size in its metadata.
11
+ - **Scale is the camera**: one log-space dive (and, when the story wants it, the climb back) through nested plates of the same sample. The scale bar shortens and jumps in a 1-2-5 sequence, the field-of-view readout rolls, the magnification steps.
12
+ - **Focus has a grammar**: a rack-in from soft at the start, a short breath (blur + a hint of field change) each time the magnification changes, a focal-plane sweep across the frame when the camera lands.
13
+ - **Readings are measured**: every number is computed from the file (pixel size × pixels) and the screen says how it was measured. Describe what was measured; never diagnose. Keep a `FACTS.md` in the project folder (claim, source URL, quoted wording, or the measurement method) and deliver it with the film.
14
+ - **One reading per screen**, in the single accent colour.
15
+
16
+ Not Satellite Briefing (no grey grade; the stain keeps its colour), not Sci-fi HUD (no glowing wireframes or crosshairs), not Data Storytelling (no chart paper), not a keynote (no slides or header bars).
17
+
18
+ ## 2. Materials & rendering
19
+
20
+ - **Plates**: the WSI pyramid levels as plates in one world frame (level-0 pixels), the coarse levels whole and alpha-feathered at the scan edge, the fine levels as crops around where the camera lands. Each frame draws the finest plate that is downsampled no more than ~1.45×, and blends the next level in between 2.2× and 1.45×: no seams and no visible upsampling, because every level is the same sample, already registered.
21
+ - **The naked-eye plate**: the scanner's own photo of the whole slide (many WSI files carry one), registered through the scan's area-of-interest metadata and checked against the tissue's centroid. Cut the glass out of the scanner tray, remove the line-sensor streaks, and fill any manufacturer's printed logo with the surrounding frosted glass. Below ~30 mm of field the photo would be upsampled: let the cover glass become clean glass (its dust leaves the focal plane).
22
+ - **One grade for every plate**: glass normalised to a warm white, a little density and chroma in the stain, nothing else. No false colour, no film emulation.
23
+ - **The bench**: graphite under a slow pool of light; a soft shadow under the slide.
24
+ - **Focus**: screen-space Gaussian blur on a frame rendered with a margin (so edges never go dark); the focal sweep is a tilted sharp front crossing a softened frame. A light illumination vignette, nothing more.
25
+ - **Marks** in screen space but anchored to the specimen through one world → screen function: hairlines 1.5–2.5 px with a dark or light halo, circles drawn on as arcs with cardinal ticks, dimension lines with end ticks, leader lines with one elbow. Counted pixels are shown as a mask revealed behind a scan front, then kept as a faint trace.
26
+ - **Frosted panels** (dark translucent glass over a blurred copy of the frame) for readings, instruments, subtitles and the credit: white type reads on glass and stain alike, nothing switches colour mid-shot.
27
+
28
+ ## 3. Colour logic
29
+
30
+ - Glass: warm paper white. Bench: graphite. The stain is evidence and keeps its true colour (e.g. trichrome red and blue, H&E pink and purple).
31
+ - One accent, cool and away from the stain's hues (mint against red and blue; amber against a green or purple stain), only for the measured reading and the counted pixels.
32
+ - Ink on glass is near-black; type on stain sits on a frosted panel in warm white.
33
+
34
+ Example (our demo): glass #F4F1EC, bench #0B0D0F → #2A3036, ink #181B1F, panel rgba(12,14,17,0.74), accent mint rgb(120,240,205) (on stain) / rgb(0,122,99) (on glass).
35
+
36
+ ## 4. Type & subtitles
37
+
38
+ - **Roles**: a light condensed grotesk for readings and the scale bar (40–72 px, e.g. Barlow Condensed); a monospace for instruments and pixel counts (20 px, e.g. IBM Plex Mono); a sans in the film's language for labels (20–34 px, e.g. Noto Sans SC); a serif only for the title. OFL, self-hosted, CJK subset.
39
+ - **Instruments** live in one frosted panel in a corner: scale bar with its value, field of view, magnification with a small nosepiece glyph that turns a quarter on every change. The source credit in a small panel in the opposite corner.
40
+ - **Readings** sit in a frosted panel beside what they measure, joined by a leader: a small label above ("collagen share of tissue area"), the number large in the accent, the method or the raw counts below.
41
+ - **Subtitles**: a frosted strip at the bottom; if the film is bilingual, one line per language with the film's language on top, never wrapped. Measure each line with the real font and split long lines into two cues.
42
+ - Nothing below 20 px at 1080p. Hold labels ≥ characters ÷ 4.5 + 1.5 s (CJK); a reading that rolls is reported by its landing value.
43
+
44
+ ## 5. Motion quality
45
+
46
+ - The camera is a similarity transform (zoom, roll, position) interpolated as a log spiral between keys (M^u about the fixed point of the two frames), so every push is a true dive towards one point and the roll is part of it. Ease the moves, creep 2–5 % during holds; never a frozen frame longer than a second.
47
+ - Magnification changes happen where the plates actually change, each with a breath of focus, a turret click and the new magnification said once, large.
48
+ - Marks arrive by being made: a dimension line grows from its centre, a circle is drawn as an arc, a scan front counts pixels while the reading rolls, the reading lands with a small spring.
49
+ - Never moves: the specimen under its marks, the instrument positions.
50
+
51
+ ## 6. Camera grammar
52
+
53
+ | Move | What it expresses | Can serve |
54
+ |---|---|---|
55
+ | The dive (log zoom with roll) | going to look for yourself | an opening; from the slide to the cell |
56
+ | Locked frame, slow creep | evidence, a measurement | a reading; a comparison |
57
+ | Truck at one magnification | a second sample of the same thing | the counter-example; "meanwhile, nearby" |
58
+ | Pull back to frame two marks | comparison | the verdict |
59
+ | Focal-plane sweep | arriving; depth | a landing; a reveal inside one frame |
60
+ | The climb (reverse dive, scale bar jumping back) | consequence, scale | an ending; a return to the eye's scale |
61
+
62
+ At key moments the measured structure fills a third of the frame height or more; instruments in a corner, subtitles bottom centre, readings beside their marks. Transitions are scale changes, trucks and focus, never cuts or crossfades between samples.
63
+
64
+ ## 7. Sound palette
65
+
66
+ - **Instrument foley**: the objective turret (a click, a detent, a small metal ring), a focus servo, pen on glass for each line drawn, a band-passed scan travelling left to right with counter ticks that speed up, a soft filtered sweep for the focal plane.
67
+ - **Music**: hard-mallet vibraphone in 8ths and 16ths, marimba ticks, bowed vibraphone and water glasses for pads and the motif, glockenspiel for each reading that lands, a pulse bass with 2nd/3rd harmonics, timpani and bass drum under the landings. Harmony stays open and light; the score is the user's to shape.
68
+ - **Beds**: a quiet lab room (fan, a little mains hum).
69
+ - **Silence** before the verdict and before the climb; the first sound after it is the reading or the turn.
70
+ - **Mix**: voice ~10 dB over music, music ducked under it; −14 LUFS. Voice: a calm, exact narrator; numbers spelled out for the TTS, digits on screen.
71
+
72
+ ## 8. Native moves
73
+
74
+ - **The dive.** From the slide in the hand to a cell in one camera, the turret clicking at each real change of level. *Fits content like:* a biopsy to its cells; a coated surface to its crystals; a hair or skin section to its layers.
75
+ - **Counting the colour.** Draw a circle, let a scan front cross it, light up every counted pixel and roll the share up to its landing value; show the raw counts underneath. *Fits content like:* collagen in tissue; porosity in a ceramic; coverage of a coating; pigment in a sample.
76
+ - **Two circles, one verdict.** Measure one place, truck to another at the same scale, then frame both and say what differs. *Fits content like:* treated against untreated; edge against centre; before against after.
77
+ - **The focal sweep and the ring.** Land, sweep the focal plane across the frame, ring one structure and give its size. *Fits content like:* a nucleus; a grain; a fibre's diameter.
78
+ - **The climb back.** Pull out to the eye's scale with the scale bar jumping backwards; a title card written on the glass.
79
+
80
+ ## 9. Pitfalls of the medium
81
+
82
+ - **Licences**: most microscopy on the web is CC BY-NC or all rights reserved. Usable: CC0 whole-slide scans (e.g. the OpenSlide test data: check each file's licence line), public-domain government micrographs (NIH, CDC PHIL, NASA, USGS), CC BY collections (Cell Image Library, Wellcome Collection), with every file listed in `CREDITS`. Not usable: CC BY-SA without agreement, NC images, journal figures, AI images.
83
+ - **Finding material for a new topic**: search by organ, stain or material plus "whole slide" in the OpenSlide test data, NCI Imaging Data Commons (TCGA/CPTAC slides, licence per collection), the Cell Image Library, Wellcome Collection, Wikimedia Commons (filter by licence) and NIH/CDC galleries; prefer a file whose metadata carries its pixel size. CC BY-SA, ODbL or "no known restrictions" are not CC0: name the terms to the user and ask before using them. For a product, a lab or a brand, ask the user for their own scans (SVS/NDPI/MRXS, SEM TIFFs with a scale) first. Never stand in a generated image for a real specimen.
84
+ - **Different samples never zoom into each other**: two micrographs of "the same thing" at two scales are two specimens. Use one pyramid; if you must join sources, cut on a focus breath and say so.
85
+ - **Pixel size**: read it from the file (XMP `ScanRes`, TIFF resolution, OME `PhysicalSizeX`); a slide-photo's resolution tag can be trusted only after checking against the scan.
86
+ - **Upsampling** shows as mush beyond ~1.6×: end the dive at the scan's real resolution.
87
+ - **Tile seams**: some scanners overlap tiles; check the joint info, frame out visible seams.
88
+ - **Labels and logos** on the slide: barcodes and IDs are part of the object; manufacturer logos are not — fill or crop them.
89
+ - **Claims**: a stain's colour means what the stain protocol says, nothing more; measured shares are of the drawn region and the stated threshold, never a clinical score.
90
+
91
+ ## 10. Engine
92
+
93
+ - `demo/film.js`: log-spiral camera (`camAt`), plate selection by downsampling ratio and coverage, objective events from real level changes, focus, frosted `panel()`, marks, readings, `TEXTS` / `SUBCHECK` / `EV`.
94
+ - `demo/tools/plates.py`: slide-photo registration and cleaning, graded plates, collagen mask and the scan's cumulative curve, the tissue axis. `nucleus.py`: membrane edge on 72 rays, least-squares circle.
95
+ - **Extra packages and packs** (beyond `setup.sh deps voice`): `tifffile` + `imagecodecs` read TIFF-based slides (Ventana BIF, Aperio SVS, Hamamatsu NDPI, generic pyramidal TIFF; `demo/tools/plates.py` is written for BIF: its label page, XMP and AOI); MRXS, SCN, VMS and others need `openslide-python` with the OpenSlide library (`brew install openslide`), or an adapter of your own. Install them yourself into a private venv in the project folder, not into `$LIB/.venv`.
96
+ - Minimal example, not in the demo: a coated steel sample: one SEM pyramid, a dive to one crack, a circle counting coverage, a ring around one grain.
97
+
98
+ ## 11. Variation space
99
+
100
+ The agent decides the specimen, the stain or modality, what is counted, the camera path, the accent, the ending.
101
+
102
+ - **Structures**: a single dive ending in one measurement; a comparison of two regions or two samples at one scale; a climb that starts on a cell and reveals the object.
103
+ - **Openings**: the slide on the bench under moving light; a cell already in focus, the climb revealing what it belongs to; a blurred field racking into focus.
104
+ - **Endings**: the title written on the glass; a last reading held in silence; the slide lifted out of frame.
105
+
106
+ ---
107
+
108
+ How our demo was made (story, shots, score, title card, build): [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/microscope/DEMO.md). Read it after your treatment exists.
@@ -0,0 +1,124 @@
1
+ <!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/midcentury-toon), 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
+ # Mid-century Cartoon — Style Prompt
4
+
5
+ > 1950s flat colour and limited animation for "follow along" films: colour printed a few pixels off its broken ink line, bodies that hold still while hands do the work, abstract colour-block rooms, a calm classroom narrator, and a cool-jazz combo.
6
+ > References (grammar only): UPA's early-1950s shorts (*Gerald McBoing-Boing*, *Rooty Toot Toot*): colour and line on separate cels, geometric people, colour-plane backgrounds, limited animation. 1950s classroom films (Coronet, Encyclopaedia Britannica): direct address, one sentence per picture, numbered cards. Charley Harper and Mary Blair: soft atomic-age complements, geometric figures. 1950s appliance manuals: numbered medallions, curved arrows, round call-outs, sunbursts. Copy none of their characters, drawings, lettering or music, and never name them in a film.
7
+
8
+ A **scene style**: it performs a real use (a set-up guide, a how-to, a recipe card, a safety card) rather than telling a story. The viewer should come away able to do the thing. See §11 for the jobs.
9
+
10
+ ## 1. Essence, and what it is not
11
+
12
+ Flat, printed-looking colour with a thin, breathing ink line that never quite closes. **Every fill is a separate "cel" printed a few px off its line**, re-rolled on twos, so the picture shimmers like hand-registered paint while the camera glides. Light dry-brush tooth, paper grain, warm vignette.
13
+
14
+ People and things are geometric: egg or bean heads with the nose part of the face outline, simple garments in two or three flat colours, four-finger cartoon gloves. **A presenter's body is a held drawing: only arms, hands, eyes and mouth animate.** Rooms are not drawn: a scene is one colour plane, a floor band, a horizon line with gaps, and one or two props.
15
+
16
+ Not the 1930s rubber-hose cartoon (no black-and-white, no bouncing world, no hot jazz). Not a whiteboard explainer: it shows *how to do*, not *why*. The pictures are printed, not written on.
17
+
18
+ ## 2. Materials & rendering
19
+
20
+ - **Off-register cels**: fill drawn with a small offset (a few px, down-right) from its line; the offset jitters ±1–2 px on twos. Keep it on everything, text included; switch it off only for a crisp diagram.
21
+ - **Line**: 3–5 px ink ribbons with ±40 % width breathing and 12–25 % breaks. Characters ~4 px, props 3–4.5 px, walls in plans thicker and broken. Hands: one outline around the union of palm and fingers, thin finger separations.
22
+ - **Shading**: one flat darker plane clipped inside a shape, never a gradient. Drop shadows are a copy of the shape offset down-right in a paper shade at ~50 %.
23
+ - **Ornaments**: 4-point atomic sparkles, 8–18-point starbursts, sunburst rays (~30 wedges, semi-transparent), boomerang and kidney shapes, polka dots.
24
+ - **Grain**: light; print, not film.
25
+
26
+ ## 3. Colour logic
27
+
28
+ - **A warm paper ground, a warm near-black ink, soft atomic-age complements.** Nothing pure or neon.
29
+ - **One ground colour per scene**: a lighter tint for walls, a darker shade for floors. Never place the product on its own colour, never the presenter on their own accent.
30
+ - **The product keeps one colour through the whole film**; the accent (a presenter's garment, stars, bullets) is a different hue. Step grounds rotate through the rest.
31
+ - Examples: *coral / mustard / turquoise* on cream; *tomato / olive / powder blue* on oatmeal; *plum / lime / sand* on off-white.
32
+
33
+ ## 4. Type & subtitles
34
+
35
+ - Roles: a 1950s script for a kicker (Oleo Script Bold); a slab serif (Alfa Slab One) for titles, numerals and headers, in ink over an offset colour plate; a geometric sans (Jost 500/600) for body, details, labels and captions.
36
+ - **Caption card**: a paper-coloured rounded slab with a thin ink border (its colour cel offset too), small turning stars at the ends, ~40 px sans, bottom-centre. Fades in quickly with a small rise. Hold ≥ max(1.8 s, speech + 0.6 s, chars/12 + 1 s).
37
+ - **Step header**: an ink disc with a paper numeral, a small letter-spaced "STEP n OF N", and the step title with a cream plate; it slides in on twos.
38
+ - **Detail tags**: a paper card with a star bullet, popping on the action beat next to the call-out. Data lands on the picture, never as a slide.
39
+
40
+ ## 5. Motion quality
41
+
42
+ - **On twos:** poses, hand shapes and the cel jitter change at 12 fps. The camera, iris wipes, arrows, plan routes and rays move at 24 fps.
43
+ - **Held body, moving hands:** switch poses with a single in-between. A hand action has anticipation (pull back or lift), a fast action (0.15–0.25 s, eased out), a follow-through (recoil, settle, lift away) and lands exactly on a beat.
44
+ - **Pop-ins:** medallions, tags, labels and titles scale in with a back-ease (~0.25 s, strong overshoot).
45
+ - **Reaching the floor**: a kneel pose with 2-bone IK keeps the hands on the object while it moves; never stretch standing arms.
46
+ - **Lettering**: a script writes on left→right with a clip; headers slide in on twos.
47
+
48
+ ## 6. Camera grammar
49
+
50
+ The camera is "the stand": never handheld. A vocabulary, not a route. Opening and ending come from the topic.
51
+
52
+ | Move | What it expresses | Can serve |
53
+ |---|---|---|
54
+ | Slow push (a few %) | Collecting the eye | a product on its stage; a result settling |
55
+ | Iris through a medallion | The number *is* the door | a change of step; a change of rule |
56
+ | Round call-out with a leader line | Context and detail at once | a hand action; a screen; a small part |
57
+ | Tilt with a pointing finger | The finger leads the frame | the one action that matters most |
58
+ | Push into a device, pan along signal rings | Person → interface → device | pairing; connecting |
59
+ | Iris from a round object into a top view | Circle to circle, function to plan | a button starting a job; a lid opening; a dial |
60
+ | Pull-back with counter-rotation from a detail to a plan | One lane becomes a pattern | a route, a schedule, a garden, a floor plan |
61
+ | Colour-block wipe (side, bottom-up) | Turning the manual's page | a tip; a summary; a new card |
62
+ | Split frame in two colour blocks | Right vs wrong, before vs after | a safety rule; an upgrade |
63
+ | Dead still ≥ 3 s | "This is the frame to screenshot" | a summary; a CTA; a QR code |
64
+ | Iris-out onto one object | The last circle | a closing on the product, the logo, the result |
65
+
66
+ Key subjects ≥ 1/3 frame height and clear of the caption band. Transitions are circles, colour-block wipes and cuts on a beat; no dissolves.
67
+
68
+ ## 7. Sound palette
69
+
70
+ Three layers, always:
71
+ - **Music**: an original West-Coast cool-jazz combo: flute or muted trumpet, vibraphone (chords, arpeggios, glissandi, tremolo), pizzicato walking bass, brushes (sticks on the ride for energy), celesta, bongos or finger snaps. Not ragtime, not a spy big band, not piano and strings. Options: give **every step its own vibraphone chord** and bring them back one per summary item; halve or double the feel instead of changing tempo; move up a step for a payoff.
72
+ - **Silence as a tool**: cut *everything*, ambience included, for the beat before the most important action, so the first sound after it (the click, the pour) is the step. Room tone alone before a summary.
73
+ - **Foley by material**: cardboard creaks and thumps, appliance plastic knocks and clicks, floor scrapes, glass and ceramic clinks, pours, damped rubber stamps for medallions, paper swishes for wipes, slide whistles for dimension arrows, rising pips for "connected", pen scratches for a route, an iris "shhk".
74
+ - **Ambience**: warm room tone (low-passed brown noise, very quiet), a mantel-clock tick on the grid; a device's motor hum can take over when it works.
75
+ - **Mix**: J/L cuts (lines start before their iris, tails ring on); narration compressed on top, music ducks ~8 dB, foley unducked, −14 LUFS.
76
+ - **Voice**: calm classroom authority, one clause per line ("Step one. Set it against a wall."). Whisper-check every line; accents can blur key nouns.
77
+
78
+ ## 8. Native moves
79
+
80
+ Each move serves information. A menu: use the ones your film needs.
81
+
82
+ - **Off-register colour** makes an info card hand-made and warm. *Fits content like:* museum rules; a bank app screen; hotel check-in.
83
+ - **Limited animation points the eye**: the still body leaves the hand as the only mover, and the hand *is* the step (one hand action per step, on a beat). *Fits content like:* threading a sewing machine; changing a bike tyre; setting a thermostat.
84
+ - **The round call-out** is the close-up; the step's data lands inside or on it on the action beat. *Fits content like:* a dosage on a measuring cup; a torque value on a bolt; a PIN on a keypad.
85
+ - **The numbered medallion** marks hierarchy and opens the next step; it stamps onto the outgoing subject and the camera goes through it. *Fits content like:* a pool's five rules; a checklist for a flight; stages of a recycling sort.
86
+ - **The payoff turns function into ornament**: a real process (a route, a watering schedule, a seating plan) draws itself region by region and, seen whole, reads as an atomic-age textile. *Fits content like:* a sprinkler's coverage; a delivery round; a week of medication.
87
+
88
+ ## 9. Pitfalls of the medium
89
+
90
+ - A route that ignores obstacles → follow the product's real rules; flow streamlines bend around obstacles and never cross. Lay it one region per beat, not all at once.
91
+ - A separate nose wedge looks glued on → one open spline from the bridge round the skull, closed at the nose tip.
92
+ - Thin arms read as sticks from the neck → shoulders at the torso corners, sleeves as a thick ink ribbon with a colour ribbon on top.
93
+ - Fat-blob fingers turn the hand into a cloud → stroke every part first, fill second (one union outline), slender fingers with separation lines.
94
+ - Zooming the world triples the ink → close-ups in call-out circles drawn at native scale.
95
+ - Detail text without reading time → move the data into the detail, the context into the title and the voice; chars/12 + 1 s.
96
+ - A transition drawing the next scene before its start → clamp local time to just past the start.
97
+
98
+ ## 10. Engine
99
+
100
+ `demo/engine/toon.js` (the style: `setClock`, `shape` for any shape in the style, `ink` ribbons, `plane`, two-plate `text`, `fit`, the manual `arrow`, ornaments, the global register `REG`), `demo/engine/chars.js` (presenter, glove hands, the demo product), `demo/engine/icons.js` (18 icons). `demo/film.js` has liftable helpers: `callout()`, `medallionAt()`, `tag()`, `stepHeader()`, the flow-route generator `laneY()` + `buildPath()`, and the transition block (medallion iris, button iris, colour-block wipe, iris-out). API table and a minimal example: [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/midcentury-toon/DEMO.md#engine-reference).
101
+
102
+ ## 11. Variation space
103
+
104
+ You decide the thing, the presenter (or none), which steps and in what order, the opening, the ending, the camera path, the colours, the pacing and the music. Use cases are **grammar for the order and duration of information**; build your own timeline from the user's facts.
105
+
106
+ | Use case | Information order | Hold per layer | Length |
107
+ |---|---|---|---|
108
+ | **Product set-up guide** | product name → title → step title → step detail on the action beat → payoff → tip → CTA | title ≥ 4 s; step title the whole step; detail ≥ chars/12 + 1 s; summary ≥ 3 s clean | 30–40 s, 2–5 steps |
109
+ | **Safety / rules card** | rule number → rule → one "why"; a held figure, a medallion, a gesture, a pictogram per rule | 3–4 s per rule | 20–40 s, 3–6 rules |
110
+ | **Recipe or ritual card** | step → quantity/time → result; side view, call-out on the hands, result as a top-view pattern | 3–5 s per step | 30–45 s |
111
+ | **Onboarding for an app or service** | screen action → setting value → confirmation stamp; the screen lives in the call-out | 3–4 s per action | 20–30 s |
112
+ | **Store or event notice** | headline → time/place → CTA; colour-block wipes between cards | ≥ 3 s per card | 15–25 s |
113
+
114
+ All far from our demo:
115
+
116
+ - Structures: **a rules card with no product**, one held figure and a medallion per rule; **a recipe on a tabletop**, seen from the side, ending in a top view; **a do / don't split**, each rule shown twice in two colour blocks.
117
+ - Openings: **the finished result first**, then "here's how"; **the problem in one gesture** (a hand fumbling a cable); **a numbered list** stamped on, then opened item by item.
118
+ - Endings: **a checklist ticking itself**; **the hands at rest** beside the finished thing; **a QR code** held dead still in a starburst.
119
+
120
+ Swapping `demo/content.json` and rebuilding is a technical check that the engine re-flows, not a way to make a film.
121
+
122
+ ---
123
+
124
+ 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/midcentury-toon/DEMO.md). Read it after your treatment exists.