# Build Spec — square 1080 changelog master Single-doc `index.html`: scenes are absolutely-positioned `.slide` clips on track 1; the master timeline `tl` (MUST be named `tl` — seam-stamp emits `tl.*`) is paused, padded to total duration, registered as `window.__timelines["main"]`. See `examples/master-skeleton.html` for the verbatim scaffold. ## Brand tokens (HeyGen for Developers) ```css @font-face { font-family: "ABC Solar Display"; font-weight: 700; src: url(assets/fonts/ABCSolarDisplay-Bold.woff2) format("woff2"); } @font-face { font-family: "TT Norms Pro"; font-weight: 400; src: url(assets/fonts/TT_Norms_Pro_Normal.woff2) format("woff2"); } @font-face { font-family: "TT Norms Pro"; font-weight: 500; src: url(assets/fonts/TT_Norms_Pro_Medium.woff2) format("woff2"); } @font-face { font-family: "TT Norms Pro"; font-weight: 700; src: url(assets/fonts/TT_Norms_Pro_Bold.woff2) format("woff2"); } @font-face { font-family: "TT Norms Mono"; font-weight: 400; src: url(assets/fonts/tt_norms_pro_mono_regular-webfont.woff2) format("woff2"); } /* ink #f5f6f4 · ink2 rgba(245,246,244,.72) · dim rgba(245,246,244,.66) — NOT .45: the contrast gate fails small text under 4.5:1 over the glass. green #5ef17c (RATIONED: one moment per scene) · bg #0a0c0b · chip-bg rgba(10,12,11,.78) · glass-line rgba(190,255,205,.32) */ ``` Copy fonts from `/assets/fonts/` into the project's `assets/fonts/` (local @font-face with format('woff2') embeds at render). Glass card: chip-bg fill, 1px glass-line border, radius 22, `box-shadow: 0 24px 60px rgba(0,0,0,.5)`. NO backdrop-filter. Chips: mono 18-22px, radius 12, 1px rgba(255,255,255,.14) border on rgba(255,255,255,.05). Display type: ABC Solar Display 700. Body: TT Norms Pro. Everything code/UI-label: TT Norms Mono. Safe margins x/y ∈ [76, 1004]. ## Animated background (the house pattern) Encode the bundled source to the film's exact duration — the render compiler shortens a video's slot to the media length, so the encode must be ≥ total: ```bash ffmpeg -y -stream_loop 15 -i /assets/bg-pattern.mp4 -t \ -vf "scale=1080:1080,fps=30,eq=saturation=0.72,drawbox=c=black@0.5:t=fill" \ -an -c:v libx264 -crf 20 -pix_fmt yuv420p assets/bg-pattern-s.mp4 ``` Keep the darkening crush — the raw pattern is far too loud. Mount as `