# CREDITS — 11-geometric-bauhaus

Everything on screen is original code written for this demo. No third-party visual
assets, images, shaders, models or fonts are vendored, and no real brand appears.
The on-screen marks (GESTALT ARCHIV · 07) are invented.

## Type
| family | source | licence | used for |
|---|---|---|---|
| Avenir Next (Heavy / Demi Bold) | system font, macOS | bundled with macOS | vertical **BAUHAUS**, FORM · FARBE · FUNKTION, meta line |
| Helvetica Neue | system font, macOS | bundled with macOS | fallback for the Latin display type |
| PingFang SC | system font, macOS | bundled with macOS | the Chinese line 包豪斯 · 形式、色彩与功能 |

No webfont is downloaded at render time; only installed system families are referenced,
so there is no CDN dependency and no risk of a fallback-font tofu.

## Code / libraries
- **Rendering:** plain HTML canvas 2D (`parts/scene.js`). No GSAP, no three.js, no
  WebGL. Every frame is written as a closed-form function of `t`, which is both
  simplest to keep deterministic and faster than a timeline library would be.
- **`shared/ease.mjs`** (project toolkit supplied with this brief) — only `clamp`,
  `lerp`, `inv`, `easeOutCubic` and `mulberry32` are imported. All other easing
  (`eiq`, `eio`, `eoq`) is defined locally in `parts/scene.js`.
- **`shared/audio.py`** (project toolkit supplied with this brief) — dependency-free
  synthesis (standard library only). The soundtrack is assembled entirely from its
  generators; no samples or loops from anywhere else.

## Sound
100 % synthesised in `audio.py` from `shared/audio.py`: kick, hat, sub, pad, blip,
noise, clap, impact, riser, bell. No recorded material, no sample packs.

## Paper texture
Generated procedurally at load with a seeded PRNG (`mulberry32`): fibre tooth, press
blotches, and a 6-tile film-grain stack — no texture image files.
