Style sheet · 4 references
Kinetic Typography / Viewport Stretcher
Variable weight and width fonts that physically stretch and compress to fit 100% of the screen width on resize.
Copy CSS :root tokens
Synthesized CSS custom properties derived from this family's dominant surface polarity, highest-contrast WCAG pair, and open-source font stand-ins.
/* Synthesized from Trova family: Kinetic Typography / Viewport Stretcher (kinetic-viewport-stretcher) */
/* Evidence base: 4 curated reference(s) · Primary contrast 21:1 */
:root {
/* Surface & Polarity (Daylight-paper dominant) */
--surface-ground: #ffffff;
--surface-elevated: #262626;
--text-primary: #000000;
--accent-primary: #161618;
--border-hairline: color-mix(in srgb, #000000 16%, transparent);
/* Typography (Loadable open-source stack mapped from observed specimens) */
--font-display: "Archivo", system-ui, sans-serif;
--font-body: "IBM Plex Mono", system-ui, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, monospace;
/* Structural Geometry */
--radius-surface: 0px;
--measure-body: 62ch;
}Copy as DESIGN.md
The whole sheet as Markdown, every move cited to the reference it came from. Paste it into your DESIGN.md as a starting system.
# Kinetic Typography / Viewport Stretcher — style sheet > Variable weight and width fonts that physically stretch and compress to fit 100% of the screen width on resize. Derived from 4 curated reference(s) in the `kinetic-viewport-stretcher` family. Counts are how many references use a value, so a value used once is a lead, not a rule. Paste this into DESIGN.md as a starting system, then verify against the images. ## Type - Archivo — 1/4 - IBM Plex Mono — 1/4 - Monument Extended — 1/4 - Neue Haas Grotesk — 1/4 - SF Mono — 1/4 - SF Pro Display — 1/4 - Space Mono — 1/4 - Whyte Inktrap — 1/4 ## Color - `#000000` dark neutral — 4/4 - `#ffffff` light neutral — 3/4 - `#161618` dark neutral — 1/4 - `#262626` dark neutral — 1/4 - `#3a3a3a` dark neutral — 1/4 - `#e63946` chromatic — 1/4 - `#ff3b30` chromatic — 1/4 - `#ff4d00` chromatic — 1/4 - `#ff9f0a` chromatic — 1/4 - `#30d158` chromatic — 1/4 Readable pairs from these swatches, most-used first (WCAG AA body text needs 4.5:1): - `#000000` / `#ffffff` — 21:1 - `#000000` / `#30d158` — 10.4:1 - `#000000` / `#ff9f0a` — 10.2:1 - `#000000` / `#ff4d00` — 6.3:1 ## Moves ### motion/interaction - Phase-offset sine wave staggering (`delay: calc(var(--line-index) * 45ms)`) turns static multi-line stacked display type into a rhythmic mechanical cylinder. — 133-dia-studio-kinetic-variable-type-identity-system - Project list rows apply a transient `transform: skewX(calc(var(--scroll-velocity) * -0.18deg))` that snaps back to 0deg with a 280ms cubic-bezier ease the instant scrolling stops. — 135-locomotive-montreal-scroll-driven-velocity-skew - Container morphs from a compact 126×36px pill to a 360×180px notification card using critically damped spring physics (stiffness: 320, damping: 26) with velocity handoff mid-gesture. — 136-apple-dynamic-island-fluid-svg-path-interpolation ### typography - Variable font axes (`wdth` 50..150, `wght` 200..900) are driven directly by scroll velocity and pointer X/Y coordinates so the headline stretches edge-to-edge (`100vw`) as a kinetic accordion. — 133-dia-studio-kinetic-variable-type-identity-system - Display masthead uses `font-size: clamp(4.5rem, 16.5vw, 22rem)` with `line-height: 0.84` and `-0.04em` tracking so the wordmark physically locks to both left and right viewport edges. — 134-studio-freight-darkroom-viewport-locked-oversized-type ### component pattern - Hovering a full-width project row expands an inline video reel inside the word gap between the client name and the year (`LOCOMOTIVE [REEL] 2026`), pushing the text apart horizontally. — 135-locomotive-montreal-scroll-driven-velocity-skew - Live waveform bars and countdown timers stay continuously mounted during container expansion, scaling their layout bounds without unmounting or resetting animation frames. — 136-apple-dynamic-island-fluid-svg-path-interpolation ### grid/layout - Tiny 12px uppercase monospace index coordinates (`[01 // ARCHITECTURE]`) sit pinned at the exact mathematical intersections of the 12-column grid beneath the giant display type. — 134-studio-freight-darkroom-viewport-locked-oversized-type ## References - 133-dia-studio-kinetic-variable-type-identity-system — DIA Studio — Kinetic Variable Type Identity System (exemplar) - 134-studio-freight-darkroom-viewport-locked-oversized-type — Studio Freight / Darkroom — Viewport-Locked Oversized Type - 135-locomotive-montreal-scroll-driven-velocity-skew — Locomotive Montreal — Scroll-Driven Velocity Skew - 136-apple-dynamic-island-fluid-svg-path-interpolation — Apple Dynamic Island — Fluid SVG Path Interpolation
Type
- Archivo1/4
- IBM Plex Mono1/4
- Monument Extended1/4
- Neue Haas Grotesk1/4
- SF Mono1/4
- SF Pro Display1/4
- Space Mono1/4
- Whyte Inktrap1/4
Loadable Open-Source Stand-Ins
- Monument Extended (licensed) → Archivo at wdth 125
- Neue Haas Grotesk (licensed) → Inter
- SF Mono (macOS only) → JetBrains Mono
- SF Pro Display (macOS only) → Inter Tight
- Whyte Inktrap (licensed) → Space Grotesk
Color
- #000000
dark neutral · 4× - #ffffff
light neutral · 3× - #161618
dark neutral · 1× - #262626
dark neutral · 1× - #3a3a3a
dark neutral · 1× - #e63946
chromatic · 1× - #ff3b30
chromatic · 1× - #ff4d00
chromatic · 1× - #ff9f0a
chromatic · 1× - #30d158
chromatic · 1×
Pairs that read
- Steal this.#000000 on #ffffff · 21:1
- Steal this.#000000 on #30d158 · 10.4:1
- Steal this.#000000 on #ff9f0a · 10.2:1
- Steal this.#000000 on #ff4d00 · 6.3:1
Moves
motion/interaction
Phase-offset sine wave staggering (`delay: calc(var(--line-index) * 45ms)`) turns static multi-line stacked display type into a rhythmic mechanical cylinder.
Project list rows apply a transient `transform: skewX(calc(var(--scroll-velocity) * -0.18deg))` that snaps back to 0deg with a 280ms cubic-bezier ease the instant scrolling stops.
Container morphs from a compact 126×36px pill to a 360×180px notification card using critically damped spring physics (stiffness: 320, damping: 26) with velocity handoff mid-gesture.
typography
Variable font axes (`wdth` 50..150, `wght` 200..900) are driven directly by scroll velocity and pointer X/Y coordinates so the headline stretches edge-to-edge (`100vw`) as a kinetic accordion.
Display masthead uses `font-size: clamp(4.5rem, 16.5vw, 22rem)` with `line-height: 0.84` and `-0.04em` tracking so the wordmark physically locks to both left and right viewport edges.
component pattern
Hovering a full-width project row expands an inline video reel inside the word gap between the client name and the year (`LOCOMOTIVE [REEL] 2026`), pushing the text apart horizontally.
Live waveform bars and countdown timers stay continuously mounted during container expansion, scaling their layout bounds without unmounting or resetting animation frames.
grid/layout
Tiny 12px uppercase monospace index coordinates (`[01 // ARCHITECTURE]`) sit pinned at the exact mathematical intersections of the 12-column grid beneath the giant display type.