Ironbark
Design system

Measured, not eyeballed.

Every contrast figure on this page is computed in your browser, right now, from the same tokens.css the application loads. Nothing here is a screenshot of a spreadsheet, and nothing can drift out of date — if a token changes, this page changes with it.

—foreground and background pairs measured
—meeting WCAG 2.1 AA or better
—lowest ratio anywhere in the system
2themes, both measured independently
body text needs 4.5:1 · large text and control boundaries need 3:1

Contrast, computed

Palette

Ironbark and new growth: a deep olive-black taken from eucalypt bark, and the citron of fresh growth. Colour marks the exception and never the norm — which is why success is neutral plus a check glyph, not green. Citron is reserved for primary action and current selection.

Type

Faces

Scale

fixed rem in product, fluid clamp in brand

Components

Motion

Nothing animates from scale(0) — things that appear from nothing read as broken. Popovers scale from their trigger; modals from their own centre, because they are not anchored to one. ease-in is never used on an entering element: it delays the first movement at exactly the moment the eye is on it. Toasts use transitions rather than keyframes so a rapid second toast retargets smoothly instead of restarting. Under prefers-reduced-motion all movement is removed and only crossfades remain.

Rules we hold ourselves to