# CREDITS — 15-variety-captions

## Fonts

| file | family (as declared) | version | source | licence |
|---|---|---|---|---|
| `parts/ZCOOLKuaiLe-Regular.ttf` | `ZKL` — 站酷快乐体 | 1.0 (Google Fonts release) | `https://github.com/google/fonts/raw/main/ofl/zcoolkuaile/ZCOOLKuaiLe-Regular.ttf` | SIL Open Font License 1.1 |
| `parts/ZCOOLQingKeHuangYou-Regular.ttf` | `ZKQ` — 站酷庆科黄油体 | 1.0 (Google Fonts release) | `https://github.com/google/fonts/raw/main/ofl/zcoolqingkehuangyou/ZCOOLQingKeHuangYou-Regular.ttf` | SIL Open Font License 1.1 |

Both are vendored into `parts/` and loaded through local `@font-face` rules in `index.html`.
**Nothing is fetched from a CDN at render time.** System CJK faces
(`Hiragino Sans GB`, `STHeiti`) sit at the end of both font stacks purely as a last-resort
fallback; no glyph used in the film falls back (verified by eye on every still — no tofu).

## Images / footage

**None.** There is no `assets/images` directory in this repo and no third-party photograph,
texture, sprite or icon is used anywhere in the film. The whole base layer — room, window,
plants, fairy lights, rug and cat — is drawn procedurally with Canvas 2D in
`parts/art.mjs`, and every decoration (explosion frame, sweat drops, sparkles, radial flash,
speed lines, speech bubble, seal) is drawn procedurally in `parts/type.mjs`.

## Libraries

**None vendored, none loaded.** The film uses only the browser's Canvas 2D API plus a handful
of maths helpers from the project's own `shared/ease.mjs` (`clamp lerp easeOutCubic
easeOutQuart easeOutBack overshoot-style helpers valueNoise1D mulberry32 roundRect grain
vignette`), served from `/shared/`. No GSAP, no three.js, no shader or snippet copied from any
other project.

## Music and sound

Entirely synthesised from the project's own `shared/audio.py` toolkit (pure standard-library
Python, deterministic, no samples): pizzicato bass, chord stabs, claps, shakers, a pentatonic
marimba line, bells, risers, impacts, plus a hand-built record scratch (descending saw + noise
chopped by a fast tremolo) and a slide whistle. No third-party audio, loops or sample packs.

## Brands

`毛球日记` (@毛球日记 · 萌宠日常) is an invented channel name. No real brand, logo, trademark or
recognisable product appears in the film.
