The Hidden Cause — Reference
Style Guide
A living reference of the site's design tokens — colours, typography, spacing and components — rendered straight from the live Automatic.css variables.
Accent: sage — one quiet accent for links, active states and markers. Buttons are ink; red is retired. Fonts: Newsreader headings, Source Sans 3 body. Toggle dark mode bottom-right. A public, living reference of the site's design tokens.
Colour
Palette
Three roles are enabled. Each role carries a fixed lightness ramp (chroma & hue held constant) computed in OKLCH.
Primary (oxblood) — retired from the UI. The single quiet accent is now sage.
Base — backgrounds & body text (warm, low-chroma).
Neutral — greys, plus pure white / black.
Assignment tokens — these flip between light and dark.
Type
Typography
Headings are Newsreader (self-hosted): H1 500, H2–H4 600, H5–H6 500 — no 700 anywhere. Body is Source Sans 3 (self-hosted) 400. Every size is a fluid clamp(min, fluid, max).
The hidden cause
h1 · –h1 · clamp(1.944rem, …, 2.961rem) · Newsreader 500
The hidden cause
h2 · –h2 · clamp(1.62rem, …, 2.221rem) · Newsreader 600
The hidden cause
h3 · –h3 · clamp(1.35rem, …, 1.666rem) · Newsreader 600
The hidden cause
h4 · –h4 · clamp(1.125rem, …, 1.25rem) · Newsreader 600
The hidden cause
h5 · –h5 · clamp(0.875rem, …, 0.9375rem) · Newsreader 500
The hidden cause
h6 · –h6 · clamp(0.8125rem, …, 0.875rem) · Newsreader 500
The cause you couldn't see has been working the whole time.
–text-xxl · .text–xxl · clamp(1.728rem, …, 2.665rem) · Source Sans 3 400
The cause you couldn't see has been working the whole time.
–text-xl · .text–xl · clamp(1.44rem, …, 1.999rem) · Source Sans 3 400
The cause you couldn't see has been working the whole time.
–text-l · .text–l · clamp(1.2rem, …, 1.500rem) · Source Sans 3 400
The cause you couldn't see has been working the whole time.
–text-m · .text–m · clamp(1rem, …, 1.125rem) · body · Source Sans 3 400
The cause you couldn't see has been working the whole time.
–text-s · .text–s · clamp(0.875rem, …, 0.9375rem) · Source Sans 3 400
The cause you couldn't see has been working the whole time.
–text-xs · .text–xs · clamp(0.8125rem, …, 0.875rem) · Source Sans 3 400
Body copy with an inline link showing –link-color and its hover.
–link-color: var(–primary) · dark: #D9695C
The hidden cause is not against you — it is how you are able to have an experience at all.
blockquote · –blockquote-border-color: var(–primary)
Space
Spacing & sizing
Spacing is a fluid t-shirt scale. Space between elements comes from gap on flex/grid parents — never margins.
Spacing scale — –space-xs → –space-xxl (bar width = the token).
Section spacing — –section-space-xs → –section-space-xxl.
Contextual gaps: –content-gap = –space-m · –container-gap = –space-xl · –grid-gap = –space-m · –gutter clamp(1rem → 5rem).
Border radius scale.
Layout — content width 85.375rem (1366px); grids .grid–2 … .grid–12; widths .width–10 … .width–90.
Components
Components
Real ACSS component classes — what you'll actually place on the page.
Buttons — role variants (.btn–primary / –base / –neutral) and .btn–outline.
Button sizes — .btn–xs → .btn–xl.
Form fields — border, radius and focus ring from tokens.
Cards.
Card title
A sample card. In dark it drops the shadow and leans on border + surface for elevation.
ActionBadges.
Shadows — –box-shadow-1 → 3 (fade on dark; elevation shifts to surface + border).
Calm system
Semantic roles
The calm system — sage accent, ink buttons, terracotta alert. These flip between light and dark; red plays no role.