@vib3code/sdk 2.0.1 → 2.0.3-canary.91a95f3

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 (96) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/DOCS/AGENT_HARNESS_ARCHITECTURE.md +243 -0
  3. package/DOCS/CLI_ONBOARDING.md +1 -1
  4. package/DOCS/CROSS_SITE_DESIGN_PATTERNS.md +117 -0
  5. package/DOCS/EPIC_SCROLL_EVENTS.md +773 -0
  6. package/DOCS/HANDOFF_LANDING_PAGE.md +154 -0
  7. package/DOCS/HANDOFF_SDK_DEVELOPMENT.md +493 -0
  8. package/DOCS/MULTIVIZ_CHOREOGRAPHY_PATTERNS.md +937 -0
  9. package/DOCS/PRODUCT_STRATEGY.md +63 -0
  10. package/DOCS/README.md +103 -0
  11. package/DOCS/REFERENCE_SCROLL_ANALYSIS.md +97 -0
  12. package/DOCS/ROADMAP.md +111 -0
  13. package/DOCS/SCROLL_TIMELINE_v3.md +269 -0
  14. package/DOCS/SITE_REFACTOR_PLAN.md +100 -0
  15. package/DOCS/STATUS.md +24 -0
  16. package/DOCS/SYSTEM_INVENTORY.md +33 -30
  17. package/DOCS/VISUAL_ANALYSIS_CLICKERSS.md +85 -0
  18. package/DOCS/VISUAL_ANALYSIS_FACETAD.md +133 -0
  19. package/DOCS/VISUAL_ANALYSIS_SIMONE.md +95 -0
  20. package/DOCS/VISUAL_ANALYSIS_TABLESIDE.md +86 -0
  21. package/DOCS/{BLUEPRINT_EXECUTION_PLAN_2026-01-07.md → archive/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md} +1 -1
  22. package/DOCS/{DEV_TRACK_ANALYSIS.md → archive/DEV_TRACK_ANALYSIS.md} +3 -0
  23. package/DOCS/{SYSTEM_AUDIT_2026-01-30.md → archive/SYSTEM_AUDIT_2026-01-30.md} +3 -0
  24. package/DOCS/{DEV_TRACK_SESSION_2026-01-31.md → dev-tracks/DEV_TRACK_SESSION_2026-01-31.md} +1 -1
  25. package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-06.md +231 -0
  26. package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-13.md +114 -0
  27. package/DOCS/dev-tracks/README.md +10 -0
  28. package/README.md +26 -13
  29. package/cpp/CMakeLists.txt +236 -0
  30. package/cpp/bindings/embind.cpp +269 -0
  31. package/cpp/build.sh +129 -0
  32. package/cpp/geometry/Crystal.cpp +103 -0
  33. package/cpp/geometry/Fractal.cpp +136 -0
  34. package/cpp/geometry/GeometryGenerator.cpp +262 -0
  35. package/cpp/geometry/KleinBottle.cpp +71 -0
  36. package/cpp/geometry/Sphere.cpp +134 -0
  37. package/cpp/geometry/Tesseract.cpp +94 -0
  38. package/cpp/geometry/Tetrahedron.cpp +83 -0
  39. package/cpp/geometry/Torus.cpp +65 -0
  40. package/cpp/geometry/WarpFunctions.cpp +238 -0
  41. package/cpp/geometry/Wave.cpp +85 -0
  42. package/cpp/include/vib3_ffi.h +238 -0
  43. package/cpp/math/Mat4x4.cpp +409 -0
  44. package/cpp/math/Mat4x4.hpp +209 -0
  45. package/cpp/math/Projection.cpp +142 -0
  46. package/cpp/math/Projection.hpp +148 -0
  47. package/cpp/math/Rotor4D.cpp +322 -0
  48. package/cpp/math/Rotor4D.hpp +204 -0
  49. package/cpp/math/Vec4.cpp +303 -0
  50. package/cpp/math/Vec4.hpp +225 -0
  51. package/cpp/src/vib3_ffi.cpp +607 -0
  52. package/cpp/tests/Geometry_test.cpp +213 -0
  53. package/cpp/tests/Mat4x4_test.cpp +494 -0
  54. package/cpp/tests/Projection_test.cpp +298 -0
  55. package/cpp/tests/Rotor4D_test.cpp +423 -0
  56. package/cpp/tests/Vec4_test.cpp +489 -0
  57. package/package.json +31 -27
  58. package/src/agent/mcp/MCPServer.js +722 -0
  59. package/src/agent/mcp/stdio-server.js +264 -0
  60. package/src/agent/mcp/tools.js +367 -0
  61. package/src/cli/index.js +0 -0
  62. package/src/core/CanvasManager.js +97 -204
  63. package/src/core/ErrorReporter.js +1 -1
  64. package/src/core/Parameters.js +1 -1
  65. package/src/core/VIB3Engine.js +38 -1
  66. package/src/core/VitalitySystem.js +53 -0
  67. package/src/core/renderers/HolographicRendererAdapter.js +2 -2
  68. package/src/creative/AestheticMapper.js +628 -0
  69. package/src/creative/ChoreographyPlayer.js +481 -0
  70. package/src/export/TradingCardManager.js +3 -4
  71. package/src/faceted/FacetedSystem.js +237 -388
  72. package/src/holograms/HolographicVisualizer.js +29 -12
  73. package/src/holograms/RealHolographicSystem.js +68 -12
  74. package/src/polychora/PolychoraSystem.js +77 -0
  75. package/src/quantum/QuantumEngine.js +103 -66
  76. package/src/quantum/QuantumVisualizer.js +7 -2
  77. package/src/render/UnifiedRenderBridge.js +3 -0
  78. package/src/shaders/faceted/faceted.frag.glsl +220 -80
  79. package/src/shaders/faceted/faceted.frag.wgsl +138 -97
  80. package/src/shaders/holographic/holographic.frag.glsl +28 -9
  81. package/src/shaders/holographic/holographic.frag.wgsl +107 -38
  82. package/src/shaders/quantum/quantum.frag.glsl +1 -0
  83. package/src/shaders/quantum/quantum.frag.wgsl +1 -1
  84. package/src/viewer/index.js +1 -1
  85. package/tools/headless-renderer.js +258 -0
  86. package/tools/shader-sync-verify.js +8 -4
  87. package/tools/site-analysis/all-reports.json +32 -0
  88. package/tools/site-analysis/combined-analysis.md +50 -0
  89. package/tools/site-analyzer.mjs +779 -0
  90. package/tools/visual-catalog/capture.js +276 -0
  91. package/tools/visual-catalog/composite.js +138 -0
  92. /package/DOCS/{DEV_TRACK_PLAN_2026-01-07.md → archive/DEV_TRACK_PLAN_2026-01-07.md} +0 -0
  93. /package/DOCS/{SESSION_014_PLAN.md → archive/SESSION_014_PLAN.md} +0 -0
  94. /package/DOCS/{SESSION_LOG_2026-01-07.md → archive/SESSION_LOG_2026-01-07.md} +0 -0
  95. /package/DOCS/{STRATEGIC_BLUEPRINT_2026-01-07.md → archive/STRATEGIC_BLUEPRINT_2026-01-07.md} +0 -0
  96. /package/src/viewer/{ReactivityManager.js → ViewerInputHandler.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,42 @@
2
2
 
3
3
  All notable changes to VIB3+ CORE (`@vib3code/sdk`) will be documented in this file.
4
4
 
5
+ ## [2.0.2] — 2026-02-07
6
+
7
+ ### Fixed
8
+ - **Distribution** — Added `cpp/` directory to `package.json` files list to ensure full C++ source tree (including `geometry` and `tests`) is included in the npm package. This resolves native build failures in downstream applications.
9
+
10
+ ## [2.0.1] — 2026-02-03
11
+
12
+ ### Added
13
+ - **Vitality System** (`src/core/VitalitySystem.js`) — Organic breath-cycle modulation driving `u_breath` uniform across all 3 systems
14
+ - **Exhale feature** — Breath modulation integrated into Quantum, Faceted, and Holographic fragment shaders (inline + external GLSL/WGSL)
15
+ - **Polychora stub** (`src/polychora/PolychoraSystem.js`) — Placeholder for future 4D polytope system
16
+
17
+ ### Fixed
18
+ - Quantum/Faceted external shader flashing — synced shader logic between inline and external files
19
+ - Faceted shader logic bug (wrong SDF replaced with correct lattice-based shader)
20
+ - Holographic shader sync with exhale breathing effect
21
+
22
+ ### Changed
23
+ - Package renamed from `@vib3/sdk` to `@vib3code/sdk` for npm scope availability
24
+ - Published to npm registry as `@vib3code/sdk@2.0.1`
25
+
26
+ ## [2.0.1-hygiene] — 2026-02-06
27
+
28
+ ### Fixed
29
+ - **CanvasManager.js** — Rewrote to match VIB3Engine API contract (`createSystemCanvases`, `registerContext`, `destroy`); old version had no matching methods
30
+ - **HolographicRendererAdapter.js** — Fixed broken import: `HolographicSystem` (non-existent) → `RealHolographicSystem`
31
+ - **TradingCardManager.js** — Fixed imports pointing to non-existent `*Exact.js` and `*MultiLayer.js` generator files; now points to actual generators
32
+ - **Version string inconsistencies** — Unified VIB3Engine (`1.2.0`→`2.0.1`), Parameters (`1.0.0`→`2.0.1`), ErrorReporter (`2.0.0`→`2.0.1`)
33
+ - **External shader sync** — Added `u_breath` uniform to `quantum.frag.glsl`, `faceted.frag.glsl`, `quantum.frag.wgsl`, `faceted.frag.wgsl` (was present in inline shaders but missing from external files)
34
+
35
+ ### Changed
36
+ - **Renamed** `src/viewer/ReactivityManager.js` → `ViewerInputHandler.js` to avoid naming collision with `src/reactivity/ReactivityManager.js` (different classes with different purposes)
37
+ - **Removed** stale `package-lock.json` (project uses pnpm; `pnpm-lock.yaml` is canonical)
38
+
39
+ ---
40
+
5
41
  ## [2.0.0] — 2026-01-30
6
42
 
7
43
  ### Added
@@ -0,0 +1,243 @@
1
+ # VIB3+ Agent Harness Architecture
2
+
3
+ **Purpose**: Close the feedback loop between AI agents and VIB3+ visualization, enabling agents to design ultra-intricate reactive choreographed visuals that would be impractical via manual UI.
4
+
5
+ ---
6
+
7
+ ## Current State (What Exists)
8
+
9
+ - 19 MCP tools for parameter control, system switching, gallery, reactivity, export
10
+ - Agent context packs for Claude and OpenAI
11
+ - Claude Code skills (`/vib3-design`, `/vib3-dev`) for design and development workflows
12
+ - Telemetry instrumentation on all tool calls
13
+
14
+ ## New Additions (This Session)
15
+
16
+ - **7 new MCP tools** (26 total): `describe_visual_state`, `batch_set_parameters`, `create_timeline`, `play_transition`, `apply_color_preset`, `set_post_processing`, `create_choreography`
17
+ - **Claude Code skills**: `.claude/commands/vib3-design.md` and `.claude/commands/vib3-dev.md`
18
+ - **Shader validation hook**: Pre-commit hook for `.glsl`/`.wgsl` changes
19
+
20
+ ---
21
+
22
+ ## Recommended Next Steps
23
+
24
+ ### Phase 1: Visual Feedback Loop (Highest Impact)
25
+
26
+ **Problem**: Agents set parameters but can't see the result. They're designing blind.
27
+
28
+ **Solution**: Screenshot capture + visual analysis pipeline.
29
+
30
+ #### 1A. `capture_screenshot` MCP Tool
31
+
32
+ Add a tool that captures the current visualization as an image:
33
+
34
+ ```javascript
35
+ // Implementation approach:
36
+ // 1. Use canvas.toDataURL('image/png') on the content-canvas layer
37
+ // 2. Composite all 5 layers into a single image
38
+ // 3. Return base64-encoded PNG
39
+
40
+ capture_screenshot: {
41
+ name: 'capture_screenshot',
42
+ description: 'Captures current visualization as a base64 PNG image',
43
+ inputSchema: {
44
+ type: 'object',
45
+ properties: {
46
+ width: { type: 'integer', default: 512 },
47
+ height: { type: 'integer', default: 512 },
48
+ layers: { type: 'string', enum: ['all', 'content', 'composite'], default: 'composite' }
49
+ }
50
+ }
51
+ }
52
+ ```
53
+
54
+ For multimodal agents (Claude with vision, GPT-4V), this enables:
55
+ 1. Set parameters → capture → analyze → refine → capture → analyze...
56
+ 2. "Make it more blue" → agent can verify the blue shift happened
57
+ 3. A/B testing: capture state A, modify, capture state B, compare
58
+
59
+ #### 1B. Headless Rendering Server
60
+
61
+ For CI/automated pipelines where no browser is available:
62
+
63
+ ```javascript
64
+ // Using Puppeteer or Playwright in headless mode
65
+ // Start VIB3+ in headless browser → apply MCP commands → capture frames
66
+ import puppeteer from 'puppeteer';
67
+
68
+ class HeadlessVIB3Renderer {
69
+ async launch() {
70
+ this.browser = await puppeteer.launch({ headless: true });
71
+ this.page = await this.browser.newPage();
72
+ await this.page.goto('http://localhost:3000'); // dev server
73
+ }
74
+
75
+ async captureFrame(params) {
76
+ await this.page.evaluate((p) => {
77
+ for (const [k, v] of Object.entries(p)) {
78
+ window.engine.setParameter(k, v);
79
+ }
80
+ }, params);
81
+ // Wait one frame
82
+ await this.page.evaluate(() => new Promise(r => requestAnimationFrame(r)));
83
+ return await this.page.screenshot({ type: 'png' });
84
+ }
85
+ }
86
+ ```
87
+
88
+ ### Phase 2: Agent Choreography Runtime
89
+
90
+ **Problem**: `create_choreography` generates a JSON spec, but there's no runtime to play it back.
91
+
92
+ **Solution**: Build a `ChoreographyPlayer` class that consumes choreography JSON and orchestrates the engine.
93
+
94
+ ```javascript
95
+ // src/creative/ChoreographyPlayer.js
96
+ export class ChoreographyPlayer {
97
+ constructor(engine) {
98
+ this.engine = engine;
99
+ this.timeline = new ParameterTimeline((n, v) => engine.setParameter(n, v));
100
+ this.transition = new TransitionAnimator(
101
+ (n, v) => engine.setParameter(n, v),
102
+ (n) => engine.getParameter(n)
103
+ );
104
+ }
105
+
106
+ async loadChoreography(spec) {
107
+ // Parse multi-scene choreography
108
+ // Set up scene transitions
109
+ // Wire timeline tracks per scene
110
+ // Handle system switching at scene boundaries
111
+ }
112
+
113
+ play() { /* Start playback with scene management */ }
114
+ pause() { /* Pause all active timelines/transitions */ }
115
+ seek(timeMs) { /* Jump to specific time, load correct scene */ }
116
+ }
117
+ ```
118
+
119
+ ### Phase 3: Design-by-Description (Text → Visual)
120
+
121
+ **Problem**: Users describe what they want in natural language. Agents need to map that to parameters.
122
+
123
+ **Solution**: Extend `AIPresetGenerator.js` with a more structured mapping:
124
+
125
+ ```javascript
126
+ // Emotional/aesthetic vocabulary → parameter ranges
127
+ const AESTHETIC_MAPS = {
128
+ // Emotions
129
+ serene: { speed: [0.1, 0.3], chaos: [0, 0.05], intensity: [0.3, 0.5] },
130
+ energetic: { speed: [2.0, 3.0], chaos: [0.5, 1.0], intensity: [0.7, 1.0] },
131
+ mysterious:{ speed: [0.3, 0.6], chaos: [0.1, 0.3], hue: [220, 280], intensity: [0.2, 0.4] },
132
+ joyful: { speed: [1.0, 1.5], chaos: [0.2, 0.4], hue: [30, 60], intensity: [0.7, 0.9] },
133
+
134
+ // Visual styles
135
+ minimal: { gridDensity: [4, 10], chaos: [0, 0.02], morphFactor: [0, 0.1] },
136
+ intricate: { gridDensity: [40, 80], chaos: [0.1, 0.3], morphFactor: [0.3, 1.0] },
137
+ organic: { chaos: [0.3, 0.7], morphFactor: [0.5, 1.5], speed: [0.5, 1.0] },
138
+ geometric: { chaos: [0, 0.05], gridDensity: [15, 30], morphFactor: [0, 0.2] },
139
+
140
+ // Depth effects
141
+ deep: { dimension: [3.0, 3.3], gridDensity: [30, 60] },
142
+ flat: { dimension: [4.0, 4.5], gridDensity: [8, 15] },
143
+ immersive: { dimension: [3.0, 3.5], rot4dXW: [0.5, 2.0], rot4dYW: [0.3, 1.5] }
144
+ };
145
+ ```
146
+
147
+ ### Phase 4: Collaborative Multi-Agent Workflow
148
+
149
+ Multiple agents working together on a choreography:
150
+
151
+ 1. **Director Agent** — Defines the high-level narrative (scenes, moods, transitions)
152
+ 2. **Color Agent** — Picks color presets and post-processing for each scene
153
+ 3. **Motion Agent** — Designs rotation and parameter timelines
154
+ 4. **Audio Agent** — Maps audio reactivity bands to parameters
155
+
156
+ Each agent uses the same MCP server, different tool subsets.
157
+
158
+ ### Phase 5: Hooks for Agent Workflow
159
+
160
+ #### Pre-export validation hook
161
+
162
+ ```bash
163
+ # .claude/settings.json — validate before export
164
+ {
165
+ "hooks": {
166
+ "PreToolCall": [
167
+ {
168
+ "tool": "export_package",
169
+ "command": "node tools/validate-export.js"
170
+ }
171
+ ]
172
+ }
173
+ }
174
+ ```
175
+
176
+ #### Auto-gallery-save hook
177
+
178
+ After every `batch_set_parameters` or `create_choreography`, auto-save to a rotating gallery slot:
179
+
180
+ ```bash
181
+ # .claude/settings.json
182
+ {
183
+ "hooks": {
184
+ "PostToolCall": [
185
+ {
186
+ "tool": "batch_set_parameters",
187
+ "command": "echo 'Auto-saved state to gallery'"
188
+ }
189
+ ]
190
+ }
191
+ }
192
+ ```
193
+
194
+ ---
195
+
196
+ ## Architecture Diagram: Agent Feedback Loop
197
+
198
+ ```
199
+ ┌─────────────────────────────────────────────────────────┐
200
+ │ AI AGENT (Claude/GPT) │
201
+ │ │
202
+ │ 1. describe_visual_state → understand current visual │
203
+ │ 2. batch_set_parameters → change visualization │
204
+ │ 3. describe_visual_state → verify change │
205
+ │ 4. create_timeline → design animation │
206
+ │ 5. create_choreography → compose full performance │
207
+ │ 6. [future] capture_screenshot → get actual pixels │
208
+ │ │
209
+ └────────────────────┬────────────────────────────────────┘
210
+ │ MCP Protocol (stdio)
211
+
212
+ ┌─────────────────────────────────────────────────────────┐
213
+ │ MCP SERVER (26 tools) │
214
+ │ │
215
+ │ Tool handlers → VIB3Engine API → Render Pipeline │
216
+ │ │
217
+ │ Telemetry ← Event Stream ← Instrumentation │
218
+ └────────────────────┬────────────────────────────────────┘
219
+
220
+
221
+ ┌─────────────────────────────────────────────────────────┐
222
+ │ VIB3+ ENGINE │
223
+ │ │
224
+ │ Quantum │ Faceted │ Holographic │
225
+ │ 24 geometries × 6D rotation × creative tooling │
226
+ │ Audio reactivity × Spatial input × Post-processing │
227
+ │ │
228
+ │ Output: 5-layer canvas composite │
229
+ └─────────────────────────────────────────────────────────┘
230
+ ```
231
+
232
+ ---
233
+
234
+ ## Why This Matters
235
+
236
+ Agents can:
237
+ 1. **Generate mathematically precise timelines** — 50+ parameter keyframes across 8+ tracks, perfectly synced to BPM, with easing functions humans couldn't manually coordinate
238
+ 2. **Explore the parameter space systematically** — Try all 24 geometries × 3 systems × 6 rotation planes in seconds
239
+ 3. **Design by description** — "Make it feel like being underwater at night" maps to specific parameter ranges
240
+ 4. **Compose multi-scene choreographies** — 10+ scenes with cross-fades, system switches, and per-scene timelines
241
+ 5. **Iterate without visual fatigue** — Agents don't get "used to" a look — they objectively assess parameter states
242
+
243
+ The agent harness transforms VIB3+ from a tool you use into a creative medium agents can compose with.
@@ -11,7 +11,7 @@ This guide aligns the current CLI surface (package scripts and telemetry helpers
11
11
  - Optional: renderer lifecycle overview for system orchestration is in [`DOCS/RENDERER_LIFECYCLE.md`](DOCS/RENDERER_LIFECYCLE.md).
12
12
  - Optional: GCP + Firebase provisioning steps live in [`DOCS/PROJECT_SETUP.md`](DOCS/PROJECT_SETUP.md).
13
13
  - Optional: repository directory manifest is in [`DOCS/REPO_MANIFEST.md`](DOCS/REPO_MANIFEST.md).
14
- - Optional: development track analysis is in [`DOCS/DEV_TRACK_ANALYSIS.md`](DOCS/DEV_TRACK_ANALYSIS.md).
14
+ - Optional: development track analysis is in [`DOCS/archive/DEV_TRACK_ANALYSIS.md`](DOCS/archive/DEV_TRACK_ANALYSIS.md).
15
15
  - Optional: WebGPU status/testing notes are in [`DOCS/WEBGPU_STATUS.md`](DOCS/WEBGPU_STATUS.md).
16
16
 
17
17
  ## Baseline setup
@@ -0,0 +1,117 @@
1
+ # Cross-Site Design Pattern Synthesis
2
+
3
+ **Based on actual visual analysis of 4 reference sites via Playwright screenshots**
4
+ **Sites**: weare-simone.webflow.io, facetad.com, clickerss.com, tableside.com.au
5
+ **Date**: 2026-02-10
6
+
7
+ ---
8
+
9
+ ## Universal Patterns (Found in 3+ Sites)
10
+
11
+ ### 1. Typography-as-Hero
12
+ **Simone**: Giant "SIMONE" wordmark fills viewport
13
+ **Clickerss**: Massive B&W portrait, then enormous serif text sections
14
+ **Tableside**: "FOOD & DRINK DIGITAL CREATIVES" in bold coral fills 70% of viewport
15
+ **Facetad**: Single sentence in vast emptiness
16
+
17
+ **What it means**: The hero section is ONE thing — either giant text or a giant image. No competing elements. No "learn more" buttons, no description paragraphs, no gradient overlays.
18
+
19
+ **VIB3+ action**: The opening cinematic must be ONLY the text mask + visualizer. Kill any secondary UI that competes with the hero moment.
20
+
21
+ ### 2. Asymmetric Card Layouts
22
+ **Simone**: Zigzag case study cards (image RIGHT, then LEFT, then RIGHT)
23
+ **Facetad**: Text LEFT + floating image RIGHT (services section)
24
+ **Tableside**: 50/50 split cards (photo one side, text other side)
25
+ **Clickerss**: Text-image interweaving (overlapping, not split)
26
+
27
+ **What it means**: No site uses centered, symmetric card layouts. Everything is offset, asymmetric, or alternating. Visual rhythm comes from the alternation pattern.
28
+
29
+ **VIB3+ action**: Cascade cards should have asymmetric overlay positioning. Alternate text LEFT/RIGHT between cards. The card overlays shouldn't be centered — push them to one side.
30
+
31
+ ### 3. Non-Rectangular Image Boundaries
32
+ **Facetad**: ALL images use parallelogram clip-paths
33
+ **Simone**: Rounded-corner containers (~24px radius)
34
+ **Facetad**: Diagonal section dividers (30-40 degree angle)
35
+ **Clickerss**: Images overlapping text boundaries
36
+
37
+ **What it means**: Rectangular images are boring. Every site transforms image boundaries through clip-paths, rounded corners, diagonal edges, or overlap.
38
+
39
+ **VIB3+ action**: The clip-path polygon morphing system (rect → hex → diamond → oct → narrow) is exactly right. Also consider adding parallelogram/skewed shapes to the shape vocabulary.
40
+
41
+ ### 4. Extreme Negative Space
42
+ **Facetad**: Hero is 95% empty
43
+ **Simone**: Hero is pure text, no images
44
+ **Clickerss**: Large gaps between sections
45
+ **Tableside**: Generous padding around portfolio cards
46
+
47
+ **What it means**: Premium sites use MORE empty space, not less. The content is given room to breathe.
48
+
49
+ **VIB3+ action**: Resist the urge to pack every section with content. The morph experience should have moments of sparse visualization (low density, simple geometry) as breathing room between intense moments.
50
+
51
+ ---
52
+
53
+ ## Distinctive Patterns (Site-Specific but Highly Applicable)
54
+
55
+ ### 5. Diagonal Section Dividers (Facetad)
56
+ All section boundaries use a consistent diagonal angle. Cream → photo → cream → red → cream transitions happen along diagonal slashes, never horizontal lines.
57
+
58
+ **VIB3+ action**: Section dividers could use CSS `clip-path: polygon()` with angled edges instead of straight horizontal borders. A 15-20 degree angle would add visual energy.
59
+
60
+ ### 6. Hard Dark/Light Mode Switches (Simone)
61
+ Cream → dark teal happens as a sharp boundary. The entire palette inverts. No cross-fade.
62
+
63
+ **VIB3+ action**: The morph stages already switch visualization parameters sharply between stages. Could also switch the page background color sharply at section boundaries (not just the visualizer hue).
64
+
65
+ ### 7. Text-Image Interweaving (Clickerss)
66
+ Typography at 100-200px+ runs through/behind portfolio images. Text and images share the same spatial zone.
67
+
68
+ **VIB3+ action**: Section titles could extend BEHIND the cascade cards, visible through the clip-path window. This creates depth between the text layer and the visualizer layer.
69
+
70
+ ### 8. Scattered Floating Gallery (Facetad)
71
+ Portfolio images scattered across viewport at various sizes and positions, all in parallelogram shapes, overlapping each other.
72
+
73
+ **VIB3+ action**: Could be used for a "gallery" or "showcase" section where multiple small visualizer thumbnails float at different positions with skewed clip-paths, each showing a different geometry.
74
+
75
+ ### 9. Color Palette Discipline (All Sites)
76
+ **Simone**: cream + dark teal + chartreuse green (3 colors)
77
+ **Facetad**: cream + terracotta red (2 colors)
78
+ **Clickerss**: white + black (2 colors)
79
+ **Tableside**: cream + coral + navy (3 colors)
80
+
81
+ **What it means**: Maximum 3 colors. The visualizer provides the color variety — the page itself should be restrained.
82
+
83
+ ### 10. Footer Echo (Simone)
84
+ The hero's filled "SIMONE" becomes outlined/stroked at the footer. Same shape, different rendering.
85
+
86
+ **VIB3+ action**: The CTA section should echo the hero — same visualizer geometry but in a different system (e.g., Quantum in hero → Faceted outline in CTA) or with inverted parameters.
87
+
88
+ ### 11. Marquee/Infinite Scroll (Simone)
89
+ "Work with us" repeats horizontally as a continuous scrolling marquee.
90
+
91
+ **VIB3+ action**: A parameter ticker or geometry name marquee could add persistent horizontal motion independent of vertical scroll.
92
+
93
+ ---
94
+
95
+ ## Priority Actions for VIB3+ Landing Page
96
+
97
+ ### Immediate (Apply to existing choreography)
98
+ 1. **Add parallelogram shapes** to SHAPES vocabulary in choreography.js (`skewR`, `skewL` with angled edges)
99
+ 2. **Asymmetric overlay positioning** — alternate cascade-overlay text LEFT/RIGHT per card
100
+ 3. **Increase negative space** — add padding/margins between morph stages
101
+ 4. **Increase hero text size** — opening cinematic text should fill more viewport
102
+ 5. **Add service/parameter metadata** to cascade card overlays (geometry name, system type)
103
+
104
+ ### Medium-term (New section patterns)
105
+ 6. **Diagonal section dividers** — angled `clip-path` on section boundaries
106
+ 7. **Footer echo** — CTA section uses same geometry as hero but different system
107
+ 8. **Split-color CTA** — vertical or diagonal color split in CTA section
108
+ 9. **Text-behind-card** effect — section titles visible through clip-path windows
109
+
110
+ ### Aspirational (Major new features)
111
+ 10. **Scattered gallery section** — multiple small visualizer thumbnails floating with parallelogram clip-paths
112
+ 11. **Horizontal marquee** — continuous ticker with geometry names or parameter readouts
113
+ 12. **Variable card sizing** — some cascade cards appear larger/smaller via clip-path window size
114
+
115
+ ---
116
+
117
+ *Synthesized from actual Playwright visual analysis of 4 reference sites.*