3.9 KiB
name, source, format, colors, fonts, type_ramp, radius, motion
| name | source | format | colors | fonts | type_ramp | radius | motion | ||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| example-com-intro | https://example.com (live capture, 2026-08-03) | 1920x1080 |
|
|
|
10px |
|
frame.md — example.com intro
Where the palette comes from
Nothing here is chosen by taste. capture/extracted/tokens.json reports three colours
on the live page — #EEEEEE, #000000, #334488 — and its CSS resolves them:
body {
background: #eee;
font-family: system-ui, sans-serif;
}
div {
opacity: 0.8;
} /* so #000 ink actually reads as ~#333 */
a {
color: #348;
} /* → #334488 */
One value is derived, not read: the composition canvas. If the frame were also
#EEEEEE, the captured plate would have the same fill as the ground and only its
border would separate them. Stepping the canvas down to #E9E9E7 gives the plate
somewhere to lift from, which is why its shadow reads at all.
Type
Only weights the renderer actually embeds:
| Role | Family | Weight | Why |
|---|---|---|---|
| Title | Inter | 900 | bundled; the lockup's whole job is mass |
| Body | Inter | 400 | bundled |
| Address | IBM Plex Mono | 400 | bundled; mono says "this is a literal string" |
| Caption | Inter | 700 | bundled; the heaviest weight that is not the title's |
Weights 500 and 600 are not in the embedded bundle. Asking for them means the render machine synthesises or substitutes, and preview stops matching output. Snap to 400 / 700 / 900.
The one graphic device
A single accent family, three instances, each with a job:
- Top rule — 6px, full bleed. The frame asserting itself at t=0.1.
- Brand bar — 200×8px under the title. Separates the name from the address.
- Page marker — 5px vertical, inside the plate, beside the page's own content block. This is the film's argument: those are the page's words, not ours.
Anything that is not one of those three is not in this composition. No sheen, no ambient bloom, no grid or paper texture, no gradient mesh, no drifting camera.
The plate rule
The capture is a 1x, 1920×1080 screenshot. It is displayed through a 1000×400 window
with object-fit: none, so the page renders at exactly 1:1 and its real 16px body
text is as crisp as it is in a browser.
Consequences, and they are hard rules:
- Never scale the plate. Any zoom past 1:1 resamples a 1x capture into mush.
- Never rotate the plate. A 3D tilt does the same thing more expensively.
- Entrance is
xtranslate + opacity only.
Caption skin
Fixed lower band, 184px tall (17% of the canvas), reserved structurally — the stage
ends where the band begins, so nothing can ever collide with it. Dark pill, centred,
one phrase group visible at a time, per-word emphasis by luminance only
(#9A9A9A → #FFFFFF). No colour flashing, no scale popping, no scatter exits, no
random placement.