Core
foundations.
Brand primitives are frozen. Semantic tokens translate them into light and dark. Components are forbidden from reading anything but tokens — so a theme can never drift.
- 03
- Token layers
- 6
- Brand primitives
- 11
- Type steps
- AA
- WCAG 2.2
Token pipeline
The system is a one-way pipeline. Brand primitives are frozen at the source. Semantic tokens translate them into light and dark. Components are forbidden from reading anything but tokens — so a theme can never break.
Brand primitives
Frozen. Hex, type files, the mark. Never consumed directly.
Semantic tokens
Light + dark. The only thing components are allowed to read.
Components
Primitives + patterns. Token-only — theming can never break.
Logo lockups
Wordmark / on ivory
Wordmark / on infra-red
Mark / on ivory
Mark / on slate
Combined / on ivory
Combined / on deep blue
Brand primitives
Deep Blue
#0A183D
Tonal accent surface · deep panels
Infra Red
#E43D1A
Primary accent · CTAs · highlights
Forest
#1C2B28
Tonal accent surface · secondary
Slate
#0F1115
Base canvas · the page ground
Ivory
#F2F1EC
Primary ink · light surfaces
Semantic tokens
Typography
Neue Haas
Display Pro
200 / 300 / 400 / 500 / 700 / 900
Inter
400 / 500 / 600 / 700
Signature gradient
Marketing surface only
The right answer.
In seconds.
Reserved for hero surfaces only. Never behind body copy. Never behind interactive elements.
Spacing scale
Radius scale
Astry runs sharp. Every radius token resolves to 0. The only exception is pill (9999 px), reserved for switch knobs, slider thumbs, status dots, and avatar status indicators.
Elevation
Astry stays flat. Cards have no shadow by default. A border delineates. Hover state darkens the border — never adds translate. Use shadow with intent, not for decoration.
Motion
instant
Color shifts on click
fast
Hover, focus
base
Default
slow
Drawer slides, entries
cubic-bezier(0.4, 0, 0.2, 1)
Standard ease-in-out. Applied to all transitions. Killed entirely under prefers-reduced-motion: reduce.
Container & grid
Visual signatures
Section eyebrow
The eyebrow
Uppercase, 12 px, Astry Blue. Sits above every section title. Registered as the Eyebrow primitive.
BracketFrame
SVG L-shapes in Astry Blue. Mark KPIs, hero panels, key quotes. Use sparingly — reserved for brand-weighted moments.
Mascot library
Open the mascot library
9 categories · poses · roles · moods · gestures · alerts
Accessibility
Focus visible
2 px brand ring, 2 px offset, only via :focus-visible.
Touch targets
44 × 44 minimum hit area on every interactive primitive.
Reduced motion
All transitions killed under prefers-reduced-motion: reduce.
Forced colors
Components keep visible 1 px borders under Windows High Contrast.
Color independence
Status badges always pair color with a dot or icon.
Semantics
Inputs labeled. Errors role=alert. Switches expose aria-checked.
Contrast samples
8.34 : 1
AAA
17.4 : 1
AAA
4.7 : 1
AA — non-essential only