Principles

Break these and it stops looking — or behaving — like Alchemy. Two sets: how the brand looks, and how the code stays maintainable.

Brand rules

Do

Single-colour headings

A heading and its serif-italic accent word are ALWAYS the same colour. Never mix violet + ink in one heading.

Don't

No gradients

Flat brand colours only. No random linear/radial gradients as decoration.

Do

Rounded sections

Sections and panels use --section-round / --radius-lg. Nothing sharp-cornered.

Do

Serif italic = accent only

Tiempos italic is an accent inside a body-font heading — never full paragraphs.

System rules

The nine engineering rules every component follows. Full detail lives in the EmDash design-system standards.

  1. 01

    Never use raw values

    Every colour, size, space and shadow comes from a token. No hex, no px font sizes in component styles.

  2. 02

    Semantic token names

    Components use --fg-accent, never a raw palette var. Intent over implementation.

  3. 03

    Use shared components

    If Button, Section or Eyebrow exists, import it. Never re-style a button inside a block.

  4. 04

    Compose, don’t duplicate

    Blocks assemble shared components. Catch yourself writing button CSS → import Button instead.

  5. 05

    Thread tone

    Dark sections pass tone to children; children adjust their own colour. Don’t hardcode white per block.

  6. 06

    Variant props, not classes

    Typed variants ('primary' | 'secondary'), not open class strings. Keeps every state visible and testable.

  7. 07

    Typography scale discipline

    Only .t-* classes / --fs-* tokens. Never invent a font size. If Figma needs one, add it to tokens first.

  8. 08

    Standard hover states

    Buttons lift 1px, linked cards lift 4px, static elements don’t hover. Always reset on :active.

  9. 09

    Every heading token clamps

    If any --fs-* heading clamps, they all do — a half-responsive scale inverts the hierarchy on mobile.