System

Style guide

Every colour, text style, component and motion token used in Slate. They live as tokens in the :root of css/slate.css; change them once and the whole site follows.

01

Colour

Colour/Ink#0d0d0bPage background, film base
Colour/Ink raised#171714Cards and fields on ink
Colour/Paper#ece8e0Light sections
Colour/Paper raised#e1dcd2Cards on paper
Colour/Text#ede9e1Text on ink (17.4:1)
Colour/Muted#a39e94Secondary text on ink (7.3:1)
Colour/Muted dark#5b5750Secondary text on paper (6.1:1)
Colour/Tally#ff4a1cThe REC light: buttons, playhead, marks
Colour/Tally text#b8300cTally as text on paper (4.9:1)

02

Type

Two families: Anton for headlines, always uppercase and never italic; Hanken Grotesk for everything else, with tabular figures for timecode.

Text/Mega
Anton · 84–400 px · 0.86
NORTHCUT
Text/Display
Anton · 64–184 px · 0.86
Page titles
Text/H2
Anton · 48–128 px · 0.86
Section titles
Text/H3
Hanken Grotesk 600 · 24–34 px
Card and step titles
Text/Lead
Hanken Grotesk 400 · 19–23 px · 1.45
A lead paragraph that introduces a section in one or two sentences.
Text/Body
Hanken Grotesk 400 · 17 px · 1.6
Body copy for project stories, journal posts and legal pages.
Text/Small
Hanken Grotesk 400 · 14 px
Captions, meta and notes
Text/Label
Hanken Grotesk 600 · 12 px · +12% · caps
Slate label
Timecode
Hanken Grotesk 600 · tabular figures
01:23:45:12

03

Components

Buttons

Label, filters and toggle

Slate label

Availability

Accordion

Open state

Answers use Text/Body in the muted colour.

Closed state

Hidden until opened.

CMS cards

Work card (Default, Wide, Five, Seven; Idle and Hover with video), post card (Default, Featured), testimonial, crew card, service row, award row. Each sits inside a Collection List.

04

Motion

One curve, one direction and three durations across the whole site.

TokenValueHow
Motion/Easecubic-bezier(.2,.7,.1,1)CustomEase via GSAP; cubic-bezier fallback in CSS
Hover0.4sCSS :hover, button fill from below
Appear0.7s · y 24 · blur 6→0 · stagger 60 msScrollTrigger reveal, once (data-appear)
Lines0.9s · stagger 70 ms · maskLine split + ScrollTrigger (data-lines)
Image reveal0.9s · clip bottom→top · scale 1.08→1CSS clip-path + scale on reveal
StickyProcess cards stack at top + 14 px × nCSS position: sticky
PageDip to black 0.38s with slateCSS black overlay fade on navigation
Marquee42 s per loop, pauses on hoverCSS marquee animation
Reduced motionAll of the above offprefers-reduced-motion

05

Space & grid

Gutter16 → 48 px
Section88 → 176 px
Max width1720 px
Radius14 → 22 px (cards), 10 px (small), pill (buttons)
Breakpoints1200 · 810 · 390 — tested at 360, 390, 768, 1024, 1440, 1920