Aligna

Design tokens and primitives for the bidirectional auditing workspace — colour, type, spacing, states.

Colours

Two-sided palette — pink anchors the designer-facing surfaces, cyan anchors the code-facing inspection link, violet bridges the schema in the middle. Violation tiers carry calibrated severity (high → low) plus a resolved state.

Brand

Design Side--aligna-brand-design#EC4899
Code Side--aligna-brand-code#06B6D4
Bridge--aligna-brand-bridge#8B5CF6

Surface

Background--aligna-surface-bg#FAFAFA
Accent--aligna-surface-accent#F4F4F5
Inverse--aligna-surface-inverse#0F0F12

Text

Foreground--aligna-text-fg#09090B
Fg Alt--aligna-text-alt#52525B
Muted--aligna-text-muted#A1A1AA

Structural

Border--aligna-border#E4E4E7
Divider--aligna-divider#D4D4D8

Violation tiers

High--aligna-tier-high#EF4444 · −3.5 pts
Medium--aligna-tier-med#F59E0B · −1.5 to −2.0
Low--aligna-tier-low#3B82F6 · −1.0 pts
Resolved--aligna-tier-ok#22C55E

Colour tokens, semantic roles

CSS VariableRoleHex
--aligna-brand-designbrand.design-side#EC4899
--aligna-brand-codebrand.code-side#06B6D4
--aligna-brand-bridgebrand.bridge#8B5CF6
--aligna-surface-bgsurface.background#FAFAFA
--aligna-surface-accentsurface.accent#F4F4F5
--aligna-surface-inversesurface.inverse#0F0F12
--aligna-text-fgtext.foreground#09090B
--aligna-text-alttext.alt#52525B
--aligna-text-mutedtext.muted#A1A1AA
--aligna-borderstructural.border#E4E4E7
--aligna-dividerstructural.divider#D4D4D8
--aligna-tier-highviolation.high · −3.5 pts#EF4444
--aligna-tier-medviolation.medium · −1.5 to −2.0#F59E0B
--aligna-tier-lowviolation.low · −1.0 pts#3B82F6
--aligna-tier-okviolation.resolved#22C55E

Typography

Inter handles every surface a designer or engineer reads. JetBrains Mono carries code, tokens, JSON payloads, and the violation node IDs that link the two sides of the schema.

DisplayInter · 700 · −2px · lh 1
Aa
H1Inter · 600 · −1.5px · lh 1.05
Heading One
H3Inter · 600 · −0.5px · lh 1.2
Section heading
BodyInter · 400 · 0 · lh 24px
The quick brown fox jumps over the lazy dog.
MonoJetBrains Mono · 500 · 0 · lh 20px
--color-neutral-50 · #F9FAFB
SmallInter · 400 · 0 · lh 20px
The quick brown fox jumps over the lazy dog.
XS / LabelInter · 600 · 0.08em uppercase
Label Text

Font families

CSS VariableStackWeightsRole
--font-sans'Inter', system-ui, sans-serif400 · 500 · 600 · 700All UI text, both sides
--font-mono'JetBrains Mono', monospace400 · 500 · 600Code, tokens, violation node IDs

Type scale

CSS VariableSizeWeightTrackingLine height
--text-display48px700−2px1
--text-h132px600−1.5px1.05
--text-h322px600−0.5px1.2
--text-body16px400024px
--text-mono14px500020px
--text-sm14px400020px
--text-xs12px6000.08em16px

Spacing

Tailwind-compatible 4px base scale. All padding, margin, and gap values must reference a token — no magic numbers in component code.

--space-2xs4px
--space-xs8px
--space-md16px
--space-xl24px
--space-2xl32px
--space-page48px
--space-5xl64px

Spacing tokens

CSS VariableValueremUsage
--space-2xs4px0.25remIcon gaps, tight padding
--space-xs8px0.5remInner gaps, list rows
--space-md16px1remDefault component padding
--space-xl24px1.5remSection gaps, modal padding
--space-2xl32px2remBetween content blocks
--space-page48px3remPage horizontal gutter
--space-5xl64px4remSection vertical rhythm

States

All interactive components share a consistent state vocabulary. State is never communicated by colour alone — shape, elevation, or label changes accompany every shift.

Button

Default
Hover
Active
Focus
Disabled

Input

Default
Focus
Filled
Error
Disabled

State treatments

StatePropertyTreatment
defaultbackground / border--primary / --aligna-border
hovertransform / box-shadowtranslateY(−1px) · 0 4px 10px
activetransformscale(0.97)
focusoutline2px solid #60A5FA · offset 2px
errorborder / color--aligna-tier-high (#EF4444)
disabledopacity / pointer-events0.4 · none