wizz-method 2.21.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.
- package/THIRD-PARTY-NOTICES.md +24 -0
- package/package.json +4 -2
- package/removals.txt +3 -0
- package/skills-registry.yaml +133 -4
- package/src/bmm-skills/1-analysis/research/wizz-market-research/steps/step-06-research-completion.md +27 -0
- package/src/bmm-skills/1-analysis/wizz-set-feature/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-code-review/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-create-story/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-dev-story/SKILL.md +8 -1
- package/src/bmm-skills/4-implementation/wizz-quick-dev/SKILL.md +2 -2
- package/src/bmm-skills/4-implementation/wizz-quick-dev/step-03-implement.md +2 -0
- package/src/bmm-skills/4-implementation/wizz-sprint-status/SKILL.md +1 -1
- package/src/core-skills/wizz-party-mode/customize.toml +3 -3
- package/src/modules/lowticket/README.md +2 -1
- package/src/modules/lowticket/module.yaml +1 -1
- package/src/modules/lowticket/skills/wizz-clone-do-expert/SKILL.md +86 -0
- package/src/modules/lowticket/skills/wizz-clone-do-expert/references/clone-prompt-template.md +21 -0
- package/src/modules/lowticket/skills/wizz-lowticket-trafego/references/reguas.md +2 -0
- package/src/modules/wizz/_shared/cerebro.md +1 -1
- package/src/modules/wizz/_shared/organizacao.md +2 -2
- package/src/modules/wizz/_shared/video-pipeline.md +2 -0
- package/src/modules/wizz/agents/wizz-copy/SKILL.md +1 -0
- package/src/modules/wizz/agents/wizz-copy/customize.toml +5 -0
- package/src/modules/wizz/agents/wizz-copy/knowledge/playbook.md +3 -2
- package/src/modules/wizz/agents/wizz-growth/customize.toml +7 -2
- package/src/modules/wizz/agents/wizz-growth/knowledge/playbook.md +3 -2
- package/src/modules/wizz/agents/wizz-social/knowledge/blueprint-roteiro-viral.md +14 -0
- package/src/modules/wizz/agents/wizz-social/knowledge/legenda-instagram.md +12 -0
- package/src/skills-lib/wizz-cerebro/SKILL.md +18 -5
- package/src/skills-lib/wizz-design-needs/SKILL.md +7 -0
- package/src/skills-lib/wizz-design-needs/references/design-state.md +34 -2
- package/src/skills-lib/wizz-design-needs/references/gap-analysis.md +1 -1
- package/src/skills-lib/wizz-design-needs/scripts/design_state.py +305 -0
- package/src/skills-lib/wizz-design-needs/scripts/tests/test_design_state.py +143 -0
- package/src/skills-lib/wizz-impeccable/references/design-rules.md +18 -0
- package/src/skills-lib/wizz-ios-build/SKILL.md +61 -0
- package/src/skills-lib/wizz-motion-3d-director/references/motion-paths.md +2 -0
- package/src/skills-lib/wizz-offer-forge/SKILL.md +2 -2
- package/src/skills-lib/wizz-paid-ads/SKILL.md +2 -1
- package/src/skills-lib/wizz-paywall-upgrade-cro/SKILL.md +1 -0
- package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/README.md +13 -13
- package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/SKILL.md +11 -7
- package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/assets/template.html +8 -21
- package/src/skills-lib/wizz-pesquisa-de-publico/references/interview-mode.md +69 -0
- package/src/skills-lib/wizz-premium-landing-ui-researcher/SKILL.md +6 -2
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/audit-protocol.md +7 -34
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/component-sources.md +25 -0
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/design-sources.yaml +325 -0
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/mandatory-process.md +1 -1
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/mining-rubric.md +123 -0
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/source-first-protocol.md +10 -4
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/web-access-and-evidence.md +1 -1
- package/src/skills-lib/wizz-premium-landing-ui-researcher/scripts/design_sources.py +221 -0
- package/src/skills-lib/wizz-premium-landing-ui-researcher/scripts/tests/test_design_sources.py +130 -0
- package/src/skills-lib/wizz-router/references/routing-table-flat.md +7 -1
- package/src/skills-lib/wizz-seo-audit/SKILL.md +4 -0
- package/src/skills-lib/wizz-seo-audit/references/gsc-regex-perguntas.md +64 -0
- package/src/skills-lib/wizz-signup-flow-cro/SKILL.md +1 -0
- package/src/skills-lib/wizz-signup-flow-cro/references/trial-abuse.md +40 -0
- package/src/skills-lib/wizz-taste-skill/references/anti-slop-tells.md +8 -0
- package/src/skills-lib/wizz-ui-component-curator/SKILL.md +8 -7
- package/src/skills-lib/wizz-ui-ux-pro-max/SKILL.md +1 -1
- package/src/skills-lib/wizz-ui-ux-pro-max/references/common-rules-checklist.md +11 -0
- package/src/skills-lib/wizz-video-effects/LICENSE-motionmaxxing.txt +202 -0
- package/src/skills-lib/wizz-video-effects/SKILL.md +7 -2
- package/src/skills-lib/wizz-video-effects/assets/chrome/collect_layout.js +113 -0
- package/src/skills-lib/wizz-video-effects/assets/effects.config.template.json +45 -0
- package/src/skills-lib/wizz-video-effects/references/data-contract.md +32 -1
- package/src/skills-lib/wizz-video-effects/references/gates.md +4 -1
- package/src/skills-lib/wizz-video-effects/references/one-take.md +41 -0
- package/src/skills-lib/wizz-video-effects/scripts/check_chrome.py +376 -0
- package/src/skills-lib/wizz-video-effects/scripts/check_dead_frames.py +193 -0
- package/src/skills-lib/wizz-video-effects/scripts/check_one_take.py +159 -0
- package/src/skills-lib/wizz-video-effects/scripts/config.py +13 -0
- package/src/skills-lib/wizz-video-effects/scripts/test_chrome.py +181 -0
- package/src/skills-lib/wizz-video-effects/scripts/test_dead_frames.py +171 -0
- package/src/skills-lib/wizz-video-effects/scripts/test_one_take.py +126 -0
- package/src/skills-lib/wizz-video-styles/LICENSE-lemo-opuscar.txt +21 -0
- package/src/skills-lib/wizz-video-styles/SKILL.md +16 -7
- package/src/skills-lib/wizz-video-styles/assets/film-styles/dark-keynote.html +78 -0
- package/src/skills-lib/wizz-video-styles/assets/film-styles/remotion/Riso.tsx +63 -0
- package/src/skills-lib/wizz-video-styles/assets/film-styles/risograph.html +69 -0
- package/src/skills-lib/wizz-video-styles/assets/film-styles/swiss-motion.html +84 -0
- package/src/skills-lib/wizz-video-styles/references/check-ins.md +25 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/DIRECTOR.md +139 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/archive-lighttable.md +109 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/art-deco.md +112 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/ascii-crt.md +115 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/backrooms.md +125 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/blueprint.md +120 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/brick-toy.md +114 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/briefing-board.md +122 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/caption-news.md +137 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/cel-anime-80s.md +119 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/city-symphony.md +142 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/countdown.md +132 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/crayon-book.md +109 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/dark-keynote.md +117 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/data-physical.md +119 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/dataviz.md +123 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/engraving.md +123 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/game-show.md +118 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/glass-product.md +110 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/halftone-dossier.md +122 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/hd-2d.md +111 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/hologram-hud.md +129 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/impasto.md +124 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/ink-wash.md +120 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/iso-infographic.md +117 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/kino-montage.md +151 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/lidar-survey.md +118 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/living-screencast.md +124 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/lowpoly-island.md +112 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/microgame.md +122 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/microscope.md +108 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/midcentury-toon.md +124 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/news-package.md +158 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/newsreel.md +136 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/one-line.md +114 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/paper-lantern.md +116 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/paper-popup.md +119 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/papercut-red.md +110 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/pictogram-motion.md +119 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/pixel-rpg.md +117 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/risograph.md +125 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/rubber-hose.md +112 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/satellite-briefing.md +116 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/scifi-toon.md +121 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/shadow-puppet.md +124 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/silent-film.md +109 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/silkscreen-poster.md +140 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/spy-titles.md +116 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/stained-glass.md +123 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/swiss-motion.md +115 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/teardown.md +127 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/telestrator.md +137 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/tilt-shift.md +107 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/ukiyoe.md +112 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/urban-sketch.md +126 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/visual-investigation.md +140 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/watercolor.md +113 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/white-model.md +115 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/whiteboard.md +118 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/woodcut.md +122 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles.md +140 -0
- package/src/skills-lib/wizz-video-styles/references/insert-recipes.md +33 -0
- package/src/skills-lib/wizz-video-styles/references/motion-laws.md +62 -0
- package/src/skills-lib/wizz-video-styles/references/styles/desafio-numero.md +1 -0
- package/src/skills-lib/wizz-video-styles/scripts/beat_grid.py +38 -6
- package/src/skills-lib/wizz-video-styles/scripts/blind_review.py +159 -0
- package/src/skills-lib/wizz-video-styles/scripts/taste.mjs +110 -0
- package/src/skills-lib/wizz-video-styles/scripts/test_blind_review.py +82 -0
- package/src/skills-lib/wizz-vsl/LICENSE +49 -0
- package/src/skills-lib/wizz-vsl/SKILL.md +122 -0
- package/src/skills-lib/wizz-vsl/references/assembly-qa.md +123 -0
- package/src/skills-lib/wizz-vsl/references/blocks-and-leads.md +149 -0
- package/src/skills-lib/wizz-vsl/references/diagnosis.md +95 -0
- package/src/skills-lib/wizz-vsl/references/intake.md +200 -0
- package/src/skills-lib/wizz-vsl/references/mechanisms.md +138 -0
- package/src/skills-lib/wizz-vsl/references/niches.md +40 -0
- package/src/skills-lib/wizz-vsl/references/offer.md +91 -0
- package/src/skills-lib/wizz-vsl/references/production.md +75 -0
- package/src/skills-lib/wizz-web-security/SKILL.md +2 -0
- package/tools/hooks/README.md +10 -9
- package/tools/hooks/wizz-arrumar.js +1 -0
- package/tools/hooks/wizz-artifact-guard.js +31 -5
- package/tools/hooks/wizz-cerebro-lib.js +36 -13
- package/tools/hooks/wizz-feature-lib.js +4 -1
- package/tools/hooks/wizz-feature.js +66 -76
- package/tools/hooks/wizz-sprint-archive-lib.js +311 -0
- package/tools/installer/core/hooks-settings.js +1 -0
- package/tools/installer/core/installer.js +6 -0
- package/tools/installer/guided/labels.js +16 -0
- package/tools/installer/install-text.js +2 -0
- package/tools/installer/modules/cli-config.js +3 -0
- package/tools/installer/modules/core-seed.js +72 -0
- package/tools/installer/modules/mcp-config.js +3 -0
- package/tools/installer/ui.js +22 -26
- /package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/prompts.md +0 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
<!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/silkscreen-poster), 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
|
+
# Silkscreen Travel Poster — Style Prompt
|
|
4
|
+
|
|
5
|
+
> Opaque, hard-edged flat inks pulled one colour at a time through a screen: 4–6 inks per poster, stepped colour bands instead of gradients, thin paper-white gaps where the registration slips. Information is revealed the way the print is made: one layer, one beat.
|
|
6
|
+
> References (grammar only):
|
|
7
|
+
> - **1930s–40s WPA national-park screen prints**: 4–6 flat inks, lit and shade faces, stepped-band skies, a dark information band, concentric sun rings.
|
|
8
|
+
> - **Fifty-Nine Parks (contemporary)**: restraint, paper as a colour, a series on one template with a new palette per poster.
|
|
9
|
+
> - **The physical process**: hinged screen, squeegee pushing an ink bead across mesh, split-fountain pulls, drag streaks, pinholes, off-register slivers.
|
|
10
|
+
>
|
|
11
|
+
> Never copy a real poster's composition, park name, lettering or logo, and never name a real agency.
|
|
12
|
+
|
|
13
|
+
A **scene style**: it does a practical job (a guide, an event poster, a destination series) for any place, event or product with a few facts. See §11 for the jobs.
|
|
14
|
+
|
|
15
|
+
## 1. Essence, and what it is not
|
|
16
|
+
|
|
17
|
+
A poster being **printed on camera**. Every colour is an opaque ink laid by its own pull; later ink covers earlier ink completely. No halftone, no fluorescent ink, no line work: a shape's edge is where one flat ink stops. **Gradients are forbidden**: skies and haze are **stepped bands** (a flat colour, thinning stripes, the next colour).
|
|
18
|
+
|
|
19
|
+
What makes it read as silkscreen and not as flat vector art:
|
|
20
|
+
- **Registration**: every layer offset 1–3 px at 1080p; a knocked-out shape leaves a crescent of bare paper.
|
|
21
|
+
- **Overprint edge**: a faint multiply ghost ~2 u off under each ink, leaving a darker sliver where ink laps over ink.
|
|
22
|
+
- **Ink thickness**: a light rim top-left, a dark rim bottom-right, fills only; fresh ink has a wet sheen that fades within a second.
|
|
23
|
+
- **Paper**: cream stock with fibres; mottle and pinholes in paper colour, visible only on ink.
|
|
24
|
+
|
|
25
|
+
Not risograph (translucent fluorescent overprint with halftone grain), not ukiyo-e (key-block line work with bokashi), not woodcut (carved line), not low-poly (3D facets). This style is opaque, line-free, flat and banded.
|
|
26
|
+
|
|
27
|
+
## 2. Materials & rendering
|
|
28
|
+
|
|
29
|
+
- **One `Path2D` per ink layer**, filled in the current transform's units; knock-outs are holes in the path. Any shape can be printed.
|
|
30
|
+
- **Pull reveal**: a ragged squeegee front as a clip (a ~30 u drag tail); blade, bead and a sliver of handle ride on it.
|
|
31
|
+
- **Ink bead**: a round tube with lit half, dark underside, rolling glints and viscous strands; a split fountain puts several colours in one bead.
|
|
32
|
+
- **Screen**: a hinged frame with mesh, emulsion and tape; its shadow is a ring (even-odd), never a full rectangle.
|
|
33
|
+
- **Shapes**: ridges with a jagged lit facet, pines as one outline of drooping tiers, water as a flat body with glint bars. Hard edges everywhere.
|
|
34
|
+
- **Poster template** (1000×1500 u): paper border, art area, a dark **info band** at the foot holding a name, a number, a rule and a row of stats; columns sized by content.
|
|
35
|
+
- **Texture budget**: fine paper tile, mottle multiply ~55 %, pinholes ~75 %, light encode grain. More reads as risograph.
|
|
36
|
+
|
|
37
|
+
## 3. Colour logic
|
|
38
|
+
|
|
39
|
+
- **One palette per poster, ≤ 6 inks**, assigned by role: light sky, deep sky / bands, far, mid, near (darkest; also the info band), and **one bright accent** (sun, route, highlights, key number). An optional lit-face ink.
|
|
40
|
+
- **Values step from far (light) to near (dark)**; depth is value, never blur.
|
|
41
|
+
- **The accent is rare**: the sun or light source, the one route or product, the most important number.
|
|
42
|
+
- **Paper is a colour**: an unprinted area is the brightest thing on the sheet (water, snow, a beam of light).
|
|
43
|
+
- **A series = one template, a new palette per item** (time of day, season, colourway, neighbourhood). Re-inking the same geometry in another palette is a statement.
|
|
44
|
+
- **Text inks are chosen by contrast** against the ink underneath (WCAG), never by a fixed key; a night palette must not swallow a header.
|
|
45
|
+
- Examples (sky1 → near, accent): dawn `#F6CD98 #EE9A73 #9A7FA8 #3E7079 #1E3B3F #FBE6B4`; harbour noon `#E8F0F2 #7FB3C8 #D9C7A3 #2F6E8E #173247 #E8553D`; winter `#EEF1F4 #B8C9D9 #8B9BB0 #4A5D78 #1F2A3C #F2B134`.
|
|
46
|
+
|
|
47
|
+
## 4. Type & subtitles
|
|
48
|
+
|
|
49
|
+
- **Condensed display** for names and values (e.g. Big Shoulders Display, League Gothic), auto-fit; a geometric sans for letter-spaced labels (e.g. Outfit 600).
|
|
50
|
+
- Headers are **printed into the sky**, tracked out; the info band is printed last.
|
|
51
|
+
- **The poster text is the subtitle.** No narration is needed; if there is a voice, subtitles are a printed strip (a band pull), never a floating caption.
|
|
52
|
+
- **Reading rule**: each text stays ≥ chars/12 + 1 s (min 1.5 s) after its **last** item lands, and ≥ max(1.8 s, speech + 0.6 s) with a voice. Compute it from the content, round up to the beat.
|
|
53
|
+
- On a wall shot, labels stay ≥ ~18 px and values ≥ ~30 px at 1080p; close-ups on a band keep the whole band in frame with ≥ 5 % side margins.
|
|
54
|
+
|
|
55
|
+
## 5. Motion quality
|
|
56
|
+
|
|
57
|
+
- **Pulls are linear and steady** (a squeegee does not ease). Accent inks start half a beat after the main ink of their layer.
|
|
58
|
+
- **Info items** print left to right on subdivisions of the beat. **There is no fade anywhere.**
|
|
59
|
+
- **Screen lift**: the frame hinges up (vertical squash + growing shadow) in ~0.4 s.
|
|
60
|
+
- **Palette re-ink**: a wide squeegee travels diagonally over the sheet in ~0.35 s; geometry identical on both sides of the blade, only the inks change. Show only the blade, bead and a sliver of handle.
|
|
61
|
+
- **Loose layers**: in a multi-plane move, planes parallax by depth with paper gaps and thickness shadows, then **snap into register** on one hit.
|
|
62
|
+
|
|
63
|
+
## 6. Camera grammar
|
|
64
|
+
|
|
65
|
+
A vocabulary, not a route. Opening and ending come from the topic.
|
|
66
|
+
|
|
67
|
+
| Move | Expresses | Can serve |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| Truck with the squeegee, slight roll, frame edge in view | the act of printing; colour arriving | a hook; a split-fountain sky |
|
|
70
|
+
| Locked top-down full sheet | layers stacking into a picture | watching a poster build; a comparison |
|
|
71
|
+
| Fast pull-back as the screen lifts | the reveal of a finished layer | a scene complete; a title |
|
|
72
|
+
| Push + tilt to the info band | reading | facts; a date; a price |
|
|
73
|
+
| Truck through a foreground silhouette (tree, lamp post, sail) in screen space | passing into the next poster | poster-to-poster transitions |
|
|
74
|
+
| Crane through loose planes (multi-plane parallax) | depth, a journey inside the print | a route; a climb; a street |
|
|
75
|
+
| Slow lateral dolly along a row of prints | a set, a range | a series wall; colourways |
|
|
76
|
+
| Push into the mesh until the weave shows | the craft, the grain of the medium | an intimate beat; a detail |
|
|
77
|
+
| Log-zoom pull-back to the wall or window | the poster in the world | a final lockup (hold ≥ 3 s) |
|
|
78
|
+
|
|
79
|
+
Close-ups on a sheet keep its edge in frame; a squeegee across a close-up is tilted with the handle hidden, so it doesn't split the frame. Layers change by squeegee, posters through foreground silhouettes or a table move. No dissolves, no bare cuts.
|
|
80
|
+
|
|
81
|
+
## 7. Sound palette
|
|
82
|
+
|
|
83
|
+
- **Acoustic, hand-played instruments**: strummed guitar, slide guitar, harmonica, upright bass, cajon or brushes, banjo, fiddle, accordion, harmonium, ukulele. Choose the family from the place: folk, surf, bossa or brass band all fit.
|
|
84
|
+
- **One pull, one hit**: each ink lands on a musical event (a strum, a hit, a chord change); accelerate by subdividing, not by changing tempo. A registration snap is a loud downbeat.
|
|
85
|
+
- **Foley by material**: squeegee on mesh (band-passed noise with a ~220–280 Hz mesh grain; faster = brighter), wet ink squelch, screen clack and hinge creak, paper stamps, ticks for dashed routes, paper hiss, a wood-and-metal clamp, drying-rack clips.
|
|
86
|
+
- **Ambience from inside the print**: a finished scene may "wake up" (surf, street, crowd), J-cut in and L-cut out. Room tone under the table.
|
|
87
|
+
- **Silence as a tool**: the music drops out for a beat before the key facts; what remains is one ambience, and the first sound after is a decisive gesture (a clamp, a long slide up).
|
|
88
|
+
- Music ducks a few dB under foley. −14 LUFS.
|
|
89
|
+
|
|
90
|
+
## 8. Native moves
|
|
91
|
+
|
|
92
|
+
Each serves information order. A menu: use the ones your film needs.
|
|
93
|
+
|
|
94
|
+
- **One ink, one beat.** Facts print last, when they are read. *Fits content like:* museum hours; a ferry timetable; tasting notes.
|
|
95
|
+
- **Split fountain.** Several inks in one pull fill the frame with colour. *Fits content like:* a festival's night sky; a sunset beach bar; a rainbow of colourways.
|
|
96
|
+
- **Palette re-ink.** Same poster, another palette = time passing, a season, a variant. *Fits content like:* summer vs winter hours; three jacket colourways; day and night at a market.
|
|
97
|
+
- **Registration slip → snap.** Loose layers clamp into register with one hit, before the key facts. *Fits content like:* the date of a race; a launch price; a ticket sale opening.
|
|
98
|
+
- **Paper as a colour.** The unprinted sheet is the brightest element. *Fits content like:* a ski slope; a lighthouse beam; fresh snow on a roof.
|
|
99
|
+
- **The route as a printed layer.** A dashed accent line stamped segment by segment. *Fits content like:* a bus line; a marathon course; a delivery path.
|
|
100
|
+
- **The series wall.** Every print ends up hung together as the final lockup. *Fits content like:* a city's four districts; a band's tour dates; a product family.
|
|
101
|
+
|
|
102
|
+
## 9. Pitfalls of the medium
|
|
103
|
+
|
|
104
|
+
- Stroke edge effects draw internal lines on unioned paths → fills only (fill, then fill shifted inside a clip).
|
|
105
|
+
- A full-rectangle screen shadow muddies the print → ring shadow.
|
|
106
|
+
- Cool shadow facets next to water read as water → shadows in the near ink.
|
|
107
|
+
- Jagged ink beads read as paper edges → a round bead.
|
|
108
|
+
- Parallax alone reads as "the mountains are moving" → paper gaps and thickness while loose, snapped to zero with a sound.
|
|
109
|
+
- Silhouette wipes hold a dark blank → centre on the switch so full cover lasts ~1 frame.
|
|
110
|
+
- Very wide banners are slivers in 16:9 → about 4:1.
|
|
111
|
+
- Random coloured dots on the table read as confetti → a real workbench (planks, grain, muted stains, tape).
|
|
112
|
+
- Too many items at honest reading times overrun the length → print items side by side in the same pulls, or let secondary ones be read on the final wall.
|
|
113
|
+
|
|
114
|
+
## 10. Engine
|
|
115
|
+
|
|
116
|
+
`demo/engine/silk.js` prints **any shape** in this style from a `Path2D`: `makeTextures`, `paperSheet`, `ink(ctx, {path, knock, paint}, {color, reg, clip, sheen, trap})`, `wipeRegion`/`wipeFront` (ragged pull), `squeegee` (blade, beads, split fountain), `screenFrame`, `inkFinish`, `bandSteps` (the gradient substitute), shape helpers. `demo/engine/poster.js` (template, banner, `pickInk` contrast), `demo/engine/scenes.js` (planes you can reorder or extend), `demo/film.js` (timeline and shots). API table and a minimal example that prints a new shape: [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/silkscreen-poster/DEMO.md#engine-reference).
|
|
117
|
+
|
|
118
|
+
## 11. Variation space
|
|
119
|
+
|
|
120
|
+
You decide the subject, the scenes and their planes, the palettes within the colour logic, the number of posters, the camera path, the opening, the ending, the instrument family and the length. Use cases are **grammar for the order and duration of information**; build your own timeline from the user's facts.
|
|
121
|
+
|
|
122
|
+
| Use case | Information order (print order) | Hold per layer | Length |
|
|
123
|
+
|---|---|---|---|
|
|
124
|
+
| **Trail / attraction guide** | place → per item: scene → name → difficulty → distance → time → footer | title ~3 s; name ≥ chars/12 + 1 s; stat row ≥ 2.2–3 s after its last item | 30–40 s, 3 items |
|
|
125
|
+
| **Event / festival poster** | scene pulls → headline → date → venue → call to action | headline 2.5 s, date + venue 3 s, final 3 s | 15–20 s |
|
|
126
|
+
| **Destination series** | one template, a palette per place: name → one fact → series wall | 2.5 s per poster + 4 s wall | 20–30 s |
|
|
127
|
+
| **Product drop** | layers around a flat product silhouette → name → colourway ×3 (re-ink) → price / date | 1.8 s per colourway | 12–18 s |
|
|
128
|
+
| **Seasonal / hours notice** | one poster re-inked per season → season + hours | 2 s per swap | 10–15 s |
|
|
129
|
+
|
|
130
|
+
All far from our demo:
|
|
131
|
+
|
|
132
|
+
- Structures: **one poster, many runs** (re-inked for each of four nights, the line-up changing in the band); **a street walk** (one multi-plane truck down a street, each shop sign printed as we pass); **a misprint story** (registration drifts until the last pull lands true on the date).
|
|
133
|
+
- Openings: **the empty screen** (light through a blank mesh, a stencil being exposed); **the accent first** (a lone product in the bright ink on bare paper); **the finished wall at night**, then back to the table.
|
|
134
|
+
- Endings: **the drying rack** (prints clipped in a row, swaying); **the poster in use** (pasted on a bus shelter, rain starting); **the last pull is paper** (the squeegee runs dry, leaving a white silhouette).
|
|
135
|
+
|
|
136
|
+
Swapping `demo/content.json` and rebuilding is a technical check that the engine re-flows, not a way to make a film.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
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/silkscreen-poster/DEMO.md). Read it after your treatment exists.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
<!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/spy-titles), 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
|
+
# 60s Spy Title Sequence — Style Prompt
|
|
4
|
+
|
|
5
|
+
> A cut-paper, four-ink opening title sequence for a film that never existed: silhouettes move through sets built out of the credits themselves, every brass stab is a cut, and a title is assembled from the pieces.
|
|
6
|
+
> References (grammar only): Saul Bass's titles for *North by Northwest*, *Anatomy of a Murder* and *Vertigo* (flat opaque inks, abstraction down to silhouettes, type as structure); the 2002 homage by Kuntzel + Deygas for *Catch Me If You Can* (a cut-paper chase through graphic sets, lateral tracking). Not a gun-barrel opening, not a tiptoeing cartoon panther, not a copy of any real title's logo, lettering, characters or shots.
|
|
7
|
+
|
|
8
|
+
## 1. Essence, and what it is not
|
|
9
|
+
|
|
10
|
+
- **Flat, opaque inks on paper**: four colours, no gradients.
|
|
11
|
+
- **Hand-cut edges** on every shape; pieces layered with cut gaps and small paper shadows.
|
|
12
|
+
- **Abstraction down to silhouettes**: figures in profile, all acting in outline and timing.
|
|
13
|
+
- **Typography is the picture's structure**: credits are architecture, props, vehicles.
|
|
14
|
+
- **Music cuts the picture**: brass stabs are edit points.
|
|
15
|
+
- A title sequence is a story in itself: one goal, a few locations, one reveal.
|
|
16
|
+
|
|
17
|
+
Not flat vector motion graphics (the edges are cut, the paper is physical), not a halftone print style (no dots), not a Swiss grid (diagonals, jaunty type, playful), not a spy parody with gadgets and gun barrels.
|
|
18
|
+
|
|
19
|
+
## 2. Materials & rendering
|
|
20
|
+
|
|
21
|
+
- **Scissor-cut edges**: every polygon resampled every ~9–10 px and displaced along its normal by low-frequency noise (amp ~1.2–2.2 px, larger for bigger shapes) plus a rare 1–2 px notch. **Cut the edge once in the piece's local space and cache it**, so a moving cutout keeps the same edge, exactly like real cutout animation (screen-space edges crawl).
|
|
22
|
+
- **Paper layering**: separate pieces are separated by a ~2.4 px cut gap in the ground colour and cast a small paper shadow (offset a few px, blur ~5, alpha ~0.3). Whole figures get the gap as an outline, so a black figure reads in front of a black letter.
|
|
23
|
+
- **Paper texture**: one full-frame texture multiplied on top (mottling + faint fibres), a sparse "ink void" speckle on dark ink, faint squeegee streaks; film grain in the mux (~6).
|
|
24
|
+
- **Silhouette figures**: tall stylised adults (~7 heads), identity by hat, coat cut, shoes and **one colour accent** that doubles as a motion indicator (a tie or scarf streaming back when running). Pieces **merge into one outline** inside the figure, with only thin slits at shoulder, elbow, hip and knee. Hands are sharp wedges; no faces except an eye slit in close-ups.
|
|
25
|
+
- **The object of the chase** sits on a black backing (an ink keyline) so it reads on any ground; it is the brightest thing in frame.
|
|
26
|
+
- **Type**: a condensed OFL display face (e.g. League Gothic) for credits, glyph outlines extracted (opentype.js) and **re-cut** per letter (edge noise, ±0.8° rotation, ±1.5 px baseline jitter). A title in custom geometric cut glyphs (straight cuts + arcs, uneven weights, staggered baselines), never a real title's lettering.
|
|
27
|
+
|
|
28
|
+
## 3. Colour logic
|
|
29
|
+
|
|
30
|
+
- **Four inks**: ink black, paper cream, one hot colour, one warm secondary. Darker "shadow paper" variants of those inks only for depth.
|
|
31
|
+
- **One dominant ground colour per scene**, changing with the location; figures and type in the other inks.
|
|
32
|
+
- The hot colour is reserved for one accent on the hero and for danger; the secondary marks the object of the chase.
|
|
33
|
+
- Background props go in a darker version of the ground, never in black, or they read as letters.
|
|
34
|
+
- Examples: black `#1b1714` / cream `#efe4c9` / red `#d23a22` / mustard `#e2a52a`; ink `#161a22` / bone `#ece6d6` / teal `#1f8a8a` / orange `#f07a28`; black / pale pink `#f3d6cc` / cobalt `#2a46b8` / lemon `#f0d23a`.
|
|
35
|
+
|
|
36
|
+
## 4. Type & subtitles
|
|
37
|
+
|
|
38
|
+
- **Credits live in the set**, never in the subtitle band: one line per location, fully readable at some moment. Credits are fictional roles only, never real people's names.
|
|
39
|
+
- **Subtitles** on a narrow paper strip (scissor-cut ends, slightly tilted) bottom-left, a small glyph from the film as bullet, a geometric OFL sans (e.g. League Spartan 600, ~44 px). Light strip on dark scenes, dark strip on light scenes; slides in from the left in ~0.18 s. Hold ≥ max(1.8 s, speech + 0.6 s).
|
|
40
|
+
- Hold each credit long enough to read alongside a subtitle.
|
|
41
|
+
|
|
42
|
+
## 5. Motion quality
|
|
43
|
+
|
|
44
|
+
- **Puppets on twos** (12 fps): poses and positions of figures, hands, letters landing, vehicles. **Camera, credit slides and grid growth on ones** (24 fps): a stepped camera judders.
|
|
45
|
+
- Run cycles of ~8 drawings, one step per beat, a strong lean, the accent flying back. Walks one step per beat, coats swinging.
|
|
46
|
+
- Credits slide in along grid lines and **stop dead on the beat** (short ease-out); letters land with a paper slap.
|
|
47
|
+
- **Stop-time**: at a stab the whole picture freezes (background scroll included) for a couple of beats in total silence, then resumes.
|
|
48
|
+
- Shattering: a scene sliced into strips parallel to a cut line that slide off alternately along the diagonal.
|
|
49
|
+
|
|
50
|
+
## 6. Camera grammar
|
|
51
|
+
|
|
52
|
+
A vocabulary, not a route. Graphic, flat, decisive. Opening and ending come from the topic.
|
|
53
|
+
|
|
54
|
+
| Move | What it expresses | Can serve |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| Wide on a full credit line, then truck in | reading, then action | any location built from type |
|
|
57
|
+
| Lateral tracking, one screen direction | pursuit; momentum | a chase; a race; a delivery |
|
|
58
|
+
| Hard cut on a brass stab | punch; a new location | montage; a reveal; a gag |
|
|
59
|
+
| Graphic match cut (same shape, same position) | rhyme; acceleration | wheel → coin → pupil → moon |
|
|
60
|
+
| Locked single shape on a flat ground | mystery; an icon | a cold open; a clue; a logo |
|
|
61
|
+
| Silhouette against a giant circle | the hero moment | a catch; a triumph; a stand-off |
|
|
62
|
+
| Diagonal split into a grid | fragmentation; many at once | a split screen; a conspiracy; a team |
|
|
63
|
+
| Vertical pan down a column of type | descent; a list | a building; a roster; a countdown |
|
|
64
|
+
| Push into a letter until it fills frame | a letter becomes a place | a door; a tunnel; a window |
|
|
65
|
+
|
|
66
|
+
Framing: strong diagonals (~30°), big flat grounds, figures small against type. Match cuts keep circle centres and sizes identical across the cut. No dissolves.
|
|
67
|
+
|
|
68
|
+
## 7. Sound palette
|
|
69
|
+
|
|
70
|
+
- **1960s spy big band**: stacked staccato trumpets and trombones in octaves with crash (the stab), surf guitar low-string twang through a spring reverb, walking upright bass, brushes or sticks, bongos and shakers, vibraphone, flute, organ stabs, harpsichord. Minor keys, chromatic lines, dotted rhythms. Original motifs only: avoid the famous chromatic crawl of the most famous spy theme and its minor-major-ninth ending chord.
|
|
71
|
+
- **Stabs = edit points**: place staccato brass ~8 ms early so the sample's peak hits the frame.
|
|
72
|
+
- **Techniques (options)**: a cut interval that shrinks as a chase accelerates; stop-time silence; a big chord for the title followed by a short button; a solo instrument alone for a quiet scene.
|
|
73
|
+
- **Foley follows the material**: paper (cut "shh", slides, card slaps for letters landing, blind flips, a tear), metal (keys, chains, locks, clicks), tape (click, hiss). Environments only hinted: a jet pass panned, train wheels in tempo, roulette ticks slowing, wind, a phone ring, footsteps on stairs.
|
|
74
|
+
- **Silence**: true zero, reverb tails included; a single tape click or hiss may remain.
|
|
75
|
+
- **Mix**: music ducks ~7 dB under voice; a peaky mix needs a few dB into a limiter before loudnorm to reach −14 LUFS.
|
|
76
|
+
- **Voice**: a briefing through a tape chain (band-pass ~220–5200 Hz, soft saturation, slow wow, hiss rising under the voice); a few very short lines.
|
|
77
|
+
|
|
78
|
+
## 8. Native moves
|
|
79
|
+
|
|
80
|
+
A menu: use the ones your story needs.
|
|
81
|
+
|
|
82
|
+
- **Type is the set.** Each location is one line of credits and that line is its architecture (letters as pillars, words as carriages, a letter as a lock). *Fits content like:* a conference programme as a city; a menu as a restaurant; team names as a stadium.
|
|
83
|
+
- **Credits are rhythm.** Credits land on beats; stabs are cuts. *Fits content like:* a product's features; a festival line-up; an award's nominees.
|
|
84
|
+
- **Graphic match cuts.** Shape rhymes, the interval shrinking as tension rises. *Fits content like:* a coin → a planet → a clock; a gear → a wheel → a sun.
|
|
85
|
+
- **The diagonal grid.** A diagonal cut multiplies into a grid, and the pieces later fly back along it to assemble something. *Fits content like:* a puzzle solved; a team forming; a logo assembled.
|
|
86
|
+
- **Silhouette puppets.** Profile cut-outs whose acting is outline and timing. *Fits content like:* a heist; a courier on a deadline; a detective.
|
|
87
|
+
- **Stop-time gag.** Freeze on a stab, silence, resume. *Fits content like:* a near miss; a double take; a price reveal.
|
|
88
|
+
- **The object of the chase is the title.** What everyone pursues becomes the last thing assembled. *Fits content like:* a product launch; a book's name; a birthday name.
|
|
89
|
+
|
|
90
|
+
## 9. Pitfalls of the medium
|
|
91
|
+
|
|
92
|
+
- Every internal piece outlined with a gap looks like a mannequin diagram → merge pieces in an offscreen layer, cut only joint slits (`destination-out`), outline the whole figure.
|
|
93
|
+
- A `clear()` that resets the transform silently kills the camera.
|
|
94
|
+
- A figure fully hidden behind a letter reads as "nobody there" → let hat, nose and accent stick out. A stiff streamer reads as a tongue → multi-segment ribbon with a travelling sine.
|
|
95
|
+
- A credit only ever seen partially is uncomfortable → always open wide on the full line.
|
|
96
|
+
- Black background props read as letters → darker ground colour.
|
|
97
|
+
- An object in the same ink as its ground vanishes → black backing.
|
|
98
|
+
- Circular props dropped into a word cover neighbouring letters → lay the word out around a gap.
|
|
99
|
+
- Match cuts fail if circle centres move across the cut.
|
|
100
|
+
- Flat inks + grain make huge files at low CRF → a higher CRF looks the same.
|
|
101
|
+
|
|
102
|
+
## 10. Engine
|
|
103
|
+
|
|
104
|
+
In `demo/`: `paper.js` (four inks, cached scissor edges, cut gaps, paper shadow, texture, silhouette layer with joint slits), `glyph.js` (League Gothic → opentype.js outlines → re-cut letters), `chars.js` (silhouette rigs, poses, run/walk cycles), `title.js` (custom cut title glyphs, diagonal split), `story.js` (tempo grid, single source of timing), `film.js` (timeline, acting, cameras, subtitles, sound events). `?sheet=1` renders a model sheet, `?frame=<scene>` a style frame. File list and build steps: [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/spy-titles/DEMO.md) "Build notes".
|
|
105
|
+
|
|
106
|
+
## 11. Variation space
|
|
107
|
+
|
|
108
|
+
You decide what is pursued, by whom, the locations (as credits), the inks, the opening and the ending. All far from our demo:
|
|
109
|
+
|
|
110
|
+
- Structures: **no chase: a countdown** (ten credits, ten locations, a bomb-clock number built from type in each); **a heist in reverse** (the object is returned, location by location, to where it belongs); **two agents, one frame** (split diagonally, each side a different ground colour, until they meet).
|
|
111
|
+
- Openings: **a full-frame title** that shatters into the sequence (the reveal moved to the start); **a telephone rings** in a single cut-out room; **the hero already falling** through a column of type.
|
|
112
|
+
- Endings: **the title never assembles**, one piece missing, the hero walking off with it; **a slow pull-out** showing every location was one giant credit page; **a stop-time freeze** on the final stab, held.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
How our demo was made (story, shots, score, end card, build): [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/spy-titles/DEMO.md). Read it after your treatment exists.
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
<!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/stained-glass), 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
|
+
# Stained Glass — Style Prompt
|
|
4
|
+
|
|
5
|
+
> A medieval stained-glass window seen from inside a dark stone hall, alive only where the sun touches it: light is the clock, the camera and the story.
|
|
6
|
+
> References (grammar only): the window prologue of *Beauty and the Beast* (1991) (chapters pane by pane, a storyteller's pace); the glass knight of *Young Sherlock Holmes* (1985) (glass that cracks and recombines piece by piece); 12th–13th-century Chartres glass (colour logic, grisaille, leading). Copy none of their characters, compositions, subjects or music.
|
|
7
|
+
|
|
8
|
+
## 1. Essence, and what it is not
|
|
9
|
+
|
|
10
|
+
- **Cut pieces of coloured glass in dark lead cames**, faces and folds **painted in brown grisaille**.
|
|
11
|
+
- Glass has no light of its own: it **glows only when the sun is behind it** and throws a soft coloured copy onto the stone floor; unlit, it is dark and milky.
|
|
12
|
+
- Figures move **piece by piece**, rigid and stepped.
|
|
13
|
+
- The room is always there: stone, a splayed embrasure, iron saddle bars, a floor that catches light.
|
|
14
|
+
- **Secular**: no crosses, saints, halos or other religious imagery; borrow the craft, not the subjects.
|
|
15
|
+
|
|
16
|
+
Not vector art with black outlines, not a kaleidoscope or Voronoi filter, not Tiffany Art Nouveau, not mosaic (mosaic reflects; glass transmits).
|
|
17
|
+
|
|
18
|
+
## 2. Materials & rendering
|
|
19
|
+
|
|
20
|
+
One formula for everything (a WebGL compositor), so every element sits in the same light:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
glass = tonemap( backlight(x,y,time) × transmittance × glass texture ) + weathering haze × room light
|
|
24
|
+
surface = albedo × (room ambient + glow spilled from lit panes + point lights) // stone, lead, iron
|
|
25
|
+
floor = flagstones × (ambient + projected colour-patch map, blurred + halo) // perspective or top-down
|
|
26
|
+
+ additive light shafts with dust · bloom (bright glass eats into the lead: the "irradiation" effect)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
- **Hue-preserving tone mapping**: per-channel `1-exp(-x)` turns cobalt pastel; blend to per-channel only at the very top so a sun disc burns white while blue stays jewel blue.
|
|
30
|
+
- **Unlit panes**: weak sky light + room-lit weathering haze, figures ghostly but readable. **Lit panes**: backlight ~2–3×, a soft, slightly skewed moving band edge.
|
|
31
|
+
- **Pieces**: smooth Catmull-Rom cuts (no deep concave corners). **Every piece is textured** (`multiply` in its clip): streaks at a per-piece angle, hue drift (±10 %), darker aged edges by the lead, ±9 % thickness variation. The shader adds seed bubbles, scratches and thickness clouds in world space; fade small features below ~0.6× zoom or they sparkle.
|
|
32
|
+
- **Lead**: near-black, one planar network, thinner on small pieces, round joins, faint grey flange, solder blobs; only where colours meet (one colour = one piece).
|
|
33
|
+
- **Grisaille**: tapered trace lines in translucent dark brown; **matting** (stippled wash, graded shade, soft band inside the lead); **scraped highlights** (a thin stroke beside each fold in the piece's own colour: the only highlight transmitted light allows). Patterns (mail, scales, plates) are grisaille arcs and bands.
|
|
34
|
+
- **Faces**: almond eyes, heavy upper lid, big pupils, brow flowing into the nose. **Expression lives in brows and mouth**; change it by swapping the face piece, never morphing.
|
|
35
|
+
- **Backgrounds**: hand-cut **lozenge quarries** (jittered lattice, shared vertices, a painted motif each); borders of a coloured band with pearls and a white fillet with a running vine.
|
|
36
|
+
- **Room**: warm grey ashlar, a lighter embrasure, mullions; floor of **large irregular flagstones**, never the wall's running bond.
|
|
37
|
+
- **Floor projection**: blurred, ~20 % desaturated, modulated by the stone, haloed, mirrored (the window's top lands farthest into the room). **Shafts**: additive with dust, near 0 at the window, peaking ~40 % down.
|
|
38
|
+
|
|
39
|
+
## 3. Colour logic
|
|
40
|
+
|
|
41
|
+
- Two hues **carry the picture** (one deep, one hot); three or four more only as **small touches**. Example (Chartres logic): cobalt ground, ruby, touches of gold, green, murrey.
|
|
42
|
+
- Greenish white glass sparingly (faces, fillets, sky). **Flesh darker than you think**, or backlit faces burn white.
|
|
43
|
+
- A story light (candle, lamp, screen) may take a colour no glass uses, so it reads as a source.
|
|
44
|
+
- **The sun's colour is the clock**: blue-white dawn, near-white brightest noon, gold afternoon, deep orange dusk (raise intensity rather than redness), weak blue moonlight. Patch length follows sun height.
|
|
45
|
+
- Stone and lead take colour only from spilled or projected light.
|
|
46
|
+
|
|
47
|
+
## 4. Type & subtitles
|
|
48
|
+
|
|
49
|
+
- **Subtitles**: a parchment **banderole** near the bottom (curled ends, gentle sag, thin rule), IM Fell English ~44 px in dark ink. It unfurls from the centre; text fades in only once it is ≥ 75 % open; pad the ribbon well past the text. Hold ≥ max(1.8 s, speech + 0.6 s).
|
|
50
|
+
- **Titles**: incised Roman capitals (Cinzel 600) in the stone, dark cut, light lower lip, gilding, revealed by a moving band of light; small lines ≥ 30 px on screen. In the glass, text only as grisaille on a white-glass scroll.
|
|
51
|
+
|
|
52
|
+
## 5. Motion quality
|
|
53
|
+
|
|
54
|
+
- **Figures step at 8 fps**; light, camera, shafts and dust move on ones (24 fps): stepped light reads as flicker.
|
|
55
|
+
- Rigid pieces on 2D FK (`setTransform(base · T(part))`, free draw order); long bodies are spine chains of banded pieces.
|
|
56
|
+
- **Freeze rule**: a pane's figures use `min(t, t_lightLeft)`. Actions land on the beat.
|
|
57
|
+
- **Crack**: jagged lines race from the impact in ~¼ s, bright with light, a short white flash and a 2-frame shake.
|
|
58
|
+
- **Re-leading**: piece groups slide one beat each with a small outward bump along the lead, each ending in a weld spark; cracks become mending leads.
|
|
59
|
+
- Glass never bends or morphs; things appear by being lit, not faded in.
|
|
60
|
+
|
|
61
|
+
## 6. Camera grammar
|
|
62
|
+
|
|
63
|
+
A vocabulary, not a route. Opening and ending come from the topic.
|
|
64
|
+
|
|
65
|
+
| Move | Expresses | Can serve |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| Truck sideways with the band of light | Time passing, the story moving on | a sequence of steps; a day; chapters |
|
|
68
|
+
| Locked close-up on one pane | This panel is "now" | a line being read; a character's decision; a detail |
|
|
69
|
+
| Pull back to the whole window | The rule, or the whole story at once | learning the system; a summary; aftermath |
|
|
70
|
+
| Tilt down the shafts to the floor, then top-down | The picture leaves the glass and becomes light | an event too big for its frame; a dream; a memory |
|
|
71
|
+
| Hold through a crack, no cut | The event is the medium breaking | a turning point; a loss; a revelation |
|
|
72
|
+
| Slow push toward a small light | Attention narrowing to one source | a discovery; a secret; hope |
|
|
73
|
+
| Tilt up to a rose or tracery | Something above the panels governs them | a clock; a cycle; an overview |
|
|
74
|
+
| Rack between two panes, one lit, one dark | Past and present side by side | before/after; two lives; cause and effect |
|
|
75
|
+
| Low angle along the embrasure, glass raking | The window as architecture, scale | awe; an institution; a long history |
|
|
76
|
+
| Return to an earlier framing under new light | The rhyme shows what changed | growth; nightfall; repair |
|
|
77
|
+
|
|
78
|
+
Framing: subjects big (close-ups ~1.3–2.3× a lancet width); in a narrow lancet stack figures diagonally; a revealed thing near centre, ≥ ~1/8 frame width with glow. Transitions: moving light, shafts, a crack, darkness; never a dissolve, wipe or flip.
|
|
79
|
+
|
|
80
|
+
## 7. Sound palette
|
|
81
|
+
|
|
82
|
+
- **Instruments**: organ (pedal drone, soft stops, full), harp, hand chimes, tubular bells, recorder or a chant-like voice, water-glass notes, timpani; also hurdy-gurdy drone, psaltery, portative organ. No generic piano or strings.
|
|
83
|
+
- **Mode families**: church modes (Dorian, Mixolydian, Aeolian, Lydian), open fifths, drones, parallel organum.
|
|
84
|
+
- **Options**: free unmetred chant for darkness; one note meaning "the light" each time a pane wakes; an organ pedal that holds and then cuts out; a rising scale, one step per lit piece.
|
|
85
|
+
- **Foley, material first** (synthesizable): struck glass = inharmonic partials ~1 : 2.32 : 4.25 : 6.63 : 9.38; crack = snap + pane thump + rain of tinkles; lead = stick-slip creak; glass sliding in a came = gritty band noise + faint squeal; solder = hiss + tick; air on light moves; stone-hall ambience; birds in the vault; iron ticking as it cools.
|
|
86
|
+
- **Silence**: a hard stop, reverb tails included, only the glass's own ring or creak inside; a single long-reverb bell can close it.
|
|
87
|
+
- **Mix**: big and reverberant; heavy hits avoid word onsets; music ducked ~9 dB under voice; −14 LUFS. **Voice**: a gentle, even storyteller, few short lines.
|
|
88
|
+
|
|
89
|
+
## 8. Native moves
|
|
90
|
+
|
|
91
|
+
A menu: use the ones your story needs.
|
|
92
|
+
|
|
93
|
+
- **Light is time, and the camera.** Only the lit pane is alive; figures freeze when the light leaves. *Fits content like:* the steps of a recipe; a factory's shifts; four seasons of one farm.
|
|
94
|
+
- **Glass projects onto stone.** A key scene plays in the floor patch, which stretches as the sun sinks. *Fits content like:* a memory seen larger than life; a sports play replayed as shadows; a data trend drawn by lengthening light.
|
|
95
|
+
- **Glass cracks, lead mends.** Pieces slide along the leads into a new picture, leaving scars. *Fits content like:* a company's reinvention; an injury and recovery; an old building restored.
|
|
96
|
+
- **A window holds its own light.** At night one pane glows from a source inside the story. *Fits content like:* a lighthouse keeper; a night-shift nurse; a server that never sleeps.
|
|
97
|
+
- **The window as a diagram.** Lancets as columns, a rose as a wheel or dial, the border as a timeline. *Fits content like:* a product lineup; the parts of a cycle; a family tree.
|
|
98
|
+
|
|
99
|
+
## 9. Pitfalls of the medium
|
|
100
|
+
|
|
101
|
+
- Hidden leads show through front pieces → erase the surface under each piece before stroking its lead.
|
|
102
|
+
- Pastel glass → hue-preserving tone mapping; darker flesh. Red dusk × blue glass = mud → keep blue alive, raise intensity.
|
|
103
|
+
- Voronoi reads as a filter; flat fills read as clip-art → hand-cut lozenges, texture on every piece, heavy grisaille.
|
|
104
|
+
- A sharp floor patch looks like a decal → blur, desaturate, stone-modulate, halo. Shafts at full strength at the window wash out the pane.
|
|
105
|
+
- Top-down projection is flipped → put the wall at the frame bottom so figures stand upright (mirrored, correct).
|
|
106
|
+
- Patch-map canvas size mismatched with the code draws into a corner of the texture → one constant size.
|
|
107
|
+
- Carved text in a dark wide is unreadable → push in, park a light on it.
|
|
108
|
+
|
|
109
|
+
## 10. Engine
|
|
110
|
+
|
|
111
|
+
In `demo/`: `glass.js` (pieces, textures, lead, grisaille, lozenges), `comp.js` (WebGL2 compositor), `window.js` (lancets, rose, borders, wall, carving), `scene.js` (camera, floor projection, shafts, dust), `subs.js` (banderole), `test.js` / `frames.js` (model sheets and style frames from the real engine), `music/score.py`, `mix.py` (glass/lead foley). `knight.js` / `dragon.js` show the rigid-piece FK rig pattern; build your own subjects with it.
|
|
112
|
+
|
|
113
|
+
## 11. Variation space
|
|
114
|
+
|
|
115
|
+
You decide the window (lancets, a rose, a medallion, a clerestory), the subjects, the order of light, opening, ending, camera path and pacing. All far from our demo:
|
|
116
|
+
|
|
117
|
+
- Structures: **a rose window as a dial** (petals lit in turn like hours, the centre the answer); **one tall lancet read bottom to top** (a tilt up a life or a process, medallion by medallion); **two windows facing each other** (the sun lights one side in the morning, the other in the evening; the floor between them holds their meeting).
|
|
118
|
+
- Openings: **the floor first** (only a coloured patch on stone; tilt up to find its source); **a lit window from outside at night** (a figure passes a glowing pane, then we are inside); **the glazier's bench** (a single piece cut and leaded, becoming the first piece of the picture).
|
|
119
|
+
- Endings: **clouds cover the sun** (every pane fades to grey at once; one line lingers); **a new pane leaded in** (an empty lancet filled with the last scene); **the camera leaves through the door** (the window small behind, its patch still on the floor).
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
How our demo was made (story, shots, score, end card, build): [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/stained-glass/DEMO.md). Read it after your treatment exists.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
<!-- Vendored from lemo-opuscar (https://github.com/lemomo-ai/lemo-opuscar/tree/413a6bd6/styles/swiss-motion), 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
|
+
# Swiss Motion Graphics — Style Prompt
|
|
4
|
+
|
|
5
|
+
> International Typographic Style in motion: a modular grid, one typeface, one signal colour, and movement as exact as a printing press.
|
|
6
|
+
> References (grammar only): 1950s–70s Zurich posters (Müller-Brockmann, Hofmann, Gerstner, Crouwel) for the grid, flush-left type, scale contrast and "designing programmes"; modern identity systems in motion (Experimental Jetset, Pentagram) for snaps on the beat. Never copy a specific historical poster's composition (no concentric-circle or fan layouts lifted from Müller-Brockmann), never use Helvetica or Akzidenz font files, never name a real institution on a poster.
|
|
7
|
+
|
|
8
|
+
## 1. Essence, and what it is not
|
|
9
|
+
|
|
10
|
+
- **Pure 2D graphic design animated on a grid**: flat paper, black type and bars, a very light grey and **one** saturated signal colour.
|
|
11
|
+
- **Every element snaps to the grid, every move lands on a beat, nothing bounces.**
|
|
12
|
+
- **Rigor with one exception**: the whole frame obeys a system, so the one element that doesn't becomes a character.
|
|
13
|
+
- **Extreme scale contrast**: a giant numeral next to tiny technical notes.
|
|
14
|
+
|
|
15
|
+
Not a keynote (no gradients, no glow, no device renders), not kinetic typography for a lyric video (words don't fly, spin or bounce), not data visualisation (bars have mass as graphic form, not as charted quantities, unless the grid gives them that meaning), not a Bauhaus pastiche of primary shapes.
|
|
16
|
+
|
|
17
|
+
## 2. Materials & rendering
|
|
18
|
+
|
|
19
|
+
- **Frame grid**: 1920×1080, 12 columns, ~96 px side margins, 24 px gutters, 24 px baseline. The frame can act as a **spread**: a left page (the programme: numeral, rule text, notes) and a right page (the artifact).
|
|
20
|
+
- **Artifact grid** derived from the content (Gerstner): what the columns and rows *mean* is a design decision. **Choose module sizes that give the elements mass**; too many thin columns make a layout look like a chart.
|
|
21
|
+
- **Surfaces**: page, paper, ink, signal colour, grid lines in two or three light greys (on page, while building, on paper). No gradients, no shadows, no particles, no grain (mux grain 0).
|
|
22
|
+
- **Bars and blocks** are flat rects; consecutive cells of one unit merge into one bar, overdrawn 1 px at seams (antialiasing shows hairlines, especially when rotated or scaled).
|
|
23
|
+
- **A secondary voice** can be light-grey elements under the black ones: depth without a second colour.
|
|
24
|
+
- **A 2D camera matrix** (centre, scale, rotation) for all moves.
|
|
25
|
+
|
|
26
|
+
## 3. Colour logic
|
|
27
|
+
|
|
28
|
+
- **Paper, ink, greys, and one signal colour.** Only one thing carries the signal colour; that makes it the protagonist. It is the only thing allowed to be inexact.
|
|
29
|
+
- Overprint is allowed: black type on the signal colour.
|
|
30
|
+
- The signal colour can be red, orange, ultramarine or green; choose it for the topic, then never add a second.
|
|
31
|
+
- Examples: `#EAE9E5` page, `#FFFFFF` paper, `#111111` ink, signal `#E30613`; or `#F2F0EA` / `#141414` / signal `#FF5A00`; or `#E9ECEF` / `#0B0B0B` / signal `#1F3FFF`.
|
|
32
|
+
|
|
33
|
+
## 4. Type & subtitles
|
|
34
|
+
|
|
35
|
+
- **One family for the whole film**, an OFL neo-grotesque (Archivo, Inter, Schibsted Grotesk, Instrument Sans…), several weights. Letter-spacing ~−2 % at ≥ 90 px. Headlines can be lowercase. Load every weight with `document.fonts.load` before drawing.
|
|
36
|
+
- **Flush left, ragged right**; everything on a grid line; big white space is part of the layout. Giant numerals are **optically** flush left (subtract the glyph's left bearing).
|
|
37
|
+
- **Subtitles are part of the layout**, not a bar at the bottom: each line sits at a column start in the current composition (a small grey lead-in + a large bold statement, or a caption like a museum label), each word clip-revealed on its whisper timestamp. Hold ≥ max(1.8 s, speech + 0.6 s); assert it in code.
|
|
38
|
+
- **Caption rows**: small (~19 px) medium-weight notes with a 1 px rule above; technical notes in a corner (module sizes, counts, a bar counter).
|
|
39
|
+
|
|
40
|
+
## 5. Motion quality
|
|
41
|
+
|
|
42
|
+
- **Two curves only**: a precise ease `cubic-bezier(.7,0,.2,1)` for snaps; linear for lines being drawn, playheads and the exception. No overshoot, no spring, no bounce.
|
|
43
|
+
- **Durations are note values** at the film's tempo. A snap starts one note value early and **lands on the beat**.
|
|
44
|
+
- **Entrances are wipes or clip-reveals, never fades**: words rise out of a clip rect from below the baseline and leave upward; lines grow along their length; paper appears by a wipe; big numerals climb in eased steps ("one module at a time").
|
|
45
|
+
- **Deletions are knife cuts**: a thin line crosses the element, then the element collapses to its midline.
|
|
46
|
+
- **Ripples are ordered by distance** from their cause, a couple of units per subdivision.
|
|
47
|
+
- **The exception moves differently**: linear, unsnapped, perhaps pausing mid-flight; a coordinate readout beside it can turn from "on grid" to "off grid".
|
|
48
|
+
- Smooth 24 fps, no stepping: digital precision, not hand-made.
|
|
49
|
+
|
|
50
|
+
## 6. Camera grammar
|
|
51
|
+
|
|
52
|
+
A vocabulary, not a route. The camera moves only with the precise ease and only on beats. Opening and ending come from the topic.
|
|
53
|
+
|
|
54
|
+
| Move | What it expresses | Can serve |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| Locked spread | cause (left) → effect (right) | a rule applied; a before/after; a comparison |
|
|
57
|
+
| Hard pan by one page or column | the next step in a system | a sequence; a catalogue; a timeline |
|
|
58
|
+
| Rotate 90° and stop | the same thing read another way | a poster as a score; a chart as a map |
|
|
59
|
+
| Pull out to a wall of artifacts | one programme, many outputs | a brand system; a product range; a series |
|
|
60
|
+
| Push into one module | detail; the unit of the system | a pixel; a letter; a single data point |
|
|
61
|
+
| Grid extends past the page | the system is bigger than the artifact | scale; ambition; a break from constraints |
|
|
62
|
+
| Split frame into equal cells | parallel cases | options; variants; team members |
|
|
63
|
+
| Vertical scroll through a column | reading; a list | a manifesto; a spec sheet; a timetable |
|
|
64
|
+
|
|
65
|
+
Framing: everything on the grid; the signal element may sit off-grid only when it is being the exception. Transitions are wipes, knife cuts, camera moves and re-flows; never dissolves.
|
|
66
|
+
|
|
67
|
+
## 7. Sound palette
|
|
68
|
+
|
|
69
|
+
- **Music with a grid of its own**: a steady pulse whose subdivisions give snap durations. Options: motorik / krautrock kit and bass, minimal techno, marimba or vibraphone patterns, a mechanical piano ostinato, a drum machine with a glockenspiel; one instrument added per new rule is a clear build.
|
|
70
|
+
- **Picture and music can share one data file** (a column → pitch, a row → onset), so a graphic can literally be the score.
|
|
71
|
+
- **Techniques (options)**: drop the drums for the one moment of the exception; a near-silent bar before a reveal; thin the band during a reveal so every note is audible.
|
|
72
|
+
- **Foley follows the materials of print**, dry and close, no reverb: letterpress clack, ruling pen "tss", guillotine snick, paper slap and slide, numeral thunk, block snap, felt thump for a landing, rubber stamp, typewriter carriage.
|
|
73
|
+
- **The exception can be the only element that sings** (a sine glide following its position).
|
|
74
|
+
- **Silence**: a hard stop of everything on a downbeat; the next snap reads as an event.
|
|
75
|
+
- **Mix**: voice compressed and ≥ 6 dB above music, music ducked ~10 dB under voice, −14 LUFS.
|
|
76
|
+
- **Voice**: cool, crisp, rule-like sentences; prefer voices with bright consonants.
|
|
77
|
+
|
|
78
|
+
## 8. Native moves
|
|
79
|
+
|
|
80
|
+
A menu: use the ones your story needs.
|
|
81
|
+
|
|
82
|
+
- **The grid means something.** Columns and rows become a quantity (notes, hours, floors, years). *Fits content like:* a building's floors and rooms; a week's timetable; a city's districts.
|
|
83
|
+
- **Snap = beat.** Every arrival is a percussion hit. *Fits content like:* a product's feature list; the steps of a recipe; a countdown.
|
|
84
|
+
- **Programme.** Rules applied one by one to one artifact, then the same programme generating many. *Fits content like:* a brand identity; a typeface family; a set of stamps.
|
|
85
|
+
- **Extreme scale contrast.** A giant element as chapter card beside tiny notes. *Fits content like:* a record statistic; a year; a price.
|
|
86
|
+
- **The exception.** One element breaks the grid, linear and unsnapped. *Fits content like:* an inventor; an outlier in the data; a rebel employee.
|
|
87
|
+
- **Knife cut.** An element deleted by a line. *Fits content like:* budget cuts; editing a text; removing a feature.
|
|
88
|
+
- **Re-flow.** Everything else rearranges around a change, nearest first. *Fits content like:* a team reorganised; traffic after a road closes; a layout adapting to a phone.
|
|
89
|
+
|
|
90
|
+
## 9. Pitfalls of the medium
|
|
91
|
+
|
|
92
|
+
- Too many thin columns look like a chart → fewer, wider modules.
|
|
93
|
+
- A "better" composition that isn't obviously better → one strong diagonal with long/short rhythm, a larger signal element, bleeds, type over colour. Merely tilting is not enough.
|
|
94
|
+
- Rotating and labelling at once reads as noise → rotate, hold, then add labels.
|
|
95
|
+
- Merged bars show seams after rotation → overdraw 1 px.
|
|
96
|
+
- Elements that share the camera matrix leak into other shots → draw them only when on screen.
|
|
97
|
+
- Canvas `letterSpacing` affects `measureText` → measure after setting the font.
|
|
98
|
+
- Onsets that fall between frames flicker → put visual onsets on whole frames.
|
|
99
|
+
- Whisper splits or merges words and pads the first word → align by letters, clamp to 0.
|
|
100
|
+
|
|
101
|
+
## 10. Engine
|
|
102
|
+
|
|
103
|
+
In `demo/`: `ease.js` (`cubic-bezier(.7,0,.2,1)`, `snap(t, t_arrive, dur)`, `steps()`, `track()`), `film.js` (layout system, clip-reveal text, knife cuts, bars from a score, rotation reveal, wall of artifacts, caption rows), `main.js` (fonts, whisper word times, `?nosub=1`, `?poster=1`), `score.json` (the shared data file for picture and music), `tools/words.py` and `tools/subs.py` (word timings, asserted subtitle intervals). File list and build steps: [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/swiss-motion/DEMO.md) "Build notes".
|
|
104
|
+
|
|
105
|
+
## 11. Variation space
|
|
106
|
+
|
|
107
|
+
You decide the system, what the grid means, the exception (or none), the signal colour, the opening and the ending. All far from our demo:
|
|
108
|
+
|
|
109
|
+
- Structures: **a timetable** (a 24-row grid of hours fills with the topic's day, one row per beat); **an alphabet** (A to Z, each letter a module of the topic, the grid completing as a specimen sheet); **a comparison** (two systems side by side on a split spread until one element crosses the gutter).
|
|
110
|
+
- Openings: **a single dot** placed on the page, then the grid growing from it; **the finished artifact** that is then dismantled into its rules; **a giant numeral** filling the frame, which turns out to be a detail of a small layout.
|
|
111
|
+
- Endings: **the empty grid** after every element has been cut away; **a single word** flush left in the corner; **the exception leaves the frame** and the system closes over the space it left.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
How our demo was made (story, shots, score, end card, build): [DEMO.md](https://github.com/lemomo-ai/lemo-opuscar/blob/413a6bd6/styles/swiss-motion/DEMO.md). Read it after your treatment exists.
|