01
Utilitarian by default
Every element earns its place by helping an operator understand, decide, act, recover, or move work forward. Decoration that doesn't pull its weight is a defect.
Search for a command to run...
System / Specifications
The rules behind every surface. Exact token values, type scale, spacing, motion, iconography, brand, voice, and accessibility floors.
Frame
Five commitments. When two decisions conflict, these are the tiebreaker.
Authority order
infara-theme.css — executable theme contract.colors_and_type.css — flattened CSS token sheet; mirrors the theme.Brand_style_guide.md — human-readable brand spec.DESIGN.md — full token + component + governance manifest.If the theme file and this spec diverge, the theme file wins and this spec is patched.
01
Every element earns its place by helping an operator understand, decide, act, recover, or move work forward. Decoration that doesn't pull its weight is a defect.
02
Operational surfaces run compact or standard density. Hit targets, focus, spacing rhythm, and scanability still have to survive. Whitespace is earned, not defaulted to.
03
If a visual decision can be reused, it belongs in the shared theme or registry surface — not a component-local literal and not an app-local fork.
04
Infara chrome is anchored by the dark shell. Blue owns the default action; fuchsia is promoted attention. Light theme is parity, not an afterthought.
05
Layouts adapt across widths, zoom, and pointer type without breaking the mental model. AI surfaces stay labeled, provenance-aware, and keyboard-complete.
The archetype is the first decision. It locks density, brand expression, and the rest of the typography and color budget.
Dark mode is the default for dense product surfaces, preview cards, and the product UI kit. Light mode is opt-in for content, docs, and marketing surfaces.
Foundations
Brand identity anchors, semantic surface tokens, dark canvas, status pairs, and enforced contrast floors.
Brand identity
--color-brand-blue-identity
#028AE1
Identity blue · logo, brand ribbons
--color-brand-fuchsia-identity
#C019E2
Identity fuchsia · logo, ribbons
--color-action-blue
#147EB3
Primary operational action fill
--color-priority-fuchsia
#C811E4
Promoted attention fill
Signature gradient
Soft washes
--color-primary-soft
#E0F0FA
--color-tertiary-soft
#F4E4FA
--color-dark-brand-soft
rgba(121, 200, 255, 0.16)
--color-dark-priority-soft
rgba(226, 107, 255, 0.16)
Status · light and dark pairs
--info-light
#0369A1
--info-dark
#79C8FF
--success-light
#047857
--success-dark
#4FD6A2
--warning-light
#B45309
--warning-dark
#F3C35B
--danger-light
#BE123C
--danger-dark
#FF7B8F
--processing-light
#0F766E
--processing-dark
#27C2D1
--neutral-status-light
#6B7280
--neutral-status-dark
#A7B5C8
Neutrals
--color-neutral-black
#303030
--color-neutral-dark
#737373
--color-neutral-gray
#D0D0CE
--color-neutral-off
#F7F7F7
--color-neutral-white
#FFFFFF
Dark canvas surfaces
--color-nav
#060F21
--color-dark-canvas
#08111F
--color-dark-surface-1
#101B2D
--color-dark-surface-2
#121F33
--color-dark-surface-3
#17263D
--color-dark-border
#21324A
Semantic surface tokens
Contrast matrix · WCAG 2.2 AA
Orbitron for display and brand emphasis. Inter for body, tables, and forms. JetBrains Mono for IDs, timestamps, and tabular technical data.
Display — Orbitron
Infara operates.
weight 500–700 · letter-spacing 0.02–0.04em
Body — Inter
Grounded, direct, operational. Pairs with Orbitron at a 2:1 weight contrast for hero and section titles.
Default reading size in dense product UI is 14px / 20px. Do not ship body-adjacent text below that floor.
Mono — JetBrains
2026-05-11 14:02:31 UTC · req-Aq2-x9F
IDs, timestamps, code, and tabular technical data. Use tabular figures so columns align in dense tables.
KPI & branded labels
42
STATUS · BRANDED
Orbitron numerals for KPI moments; tracked-caps labels for chrome eyebrows and brand-forward badges.
--font-size-h1
48/56 · weight 700
Hero titles
Operator clarity
--font-size-h2
36/44 · weight 600
Page hero titles
Workspace surfaces
--font-size-h3
28/36 · weight 600
Section headers
Section headers
--font-size-h4
22/30 · weight 500
Subheading, dialog title
Dialog and subheading
--font-size-body-m
16/24 · weight 500
Emphasized body
Body medium — primary emphasis
--font-size-body
16/24 · weight 400
Default body
Body regular — default reading size
--font-size-sm-m
14/20 · weight 500
Compact emphasized labels
Small medium — compact labels
--font-size-sm
14/20 · weight 400
Labels, helper text
Small — hints and metadata
--font-size-label-md
14/20 · weight 500
Standard labels (default)
Standard label text
--font-size-caption
14/20 · weight 400
Caption, chart series legend
Caption text · chart legends
A 4px baseline. Seven radii. Five shadow tokens. Do not invent local gaps when tokens exist.
Spacing — 4px baseline
Radius
radius-none
0px
radius-sm
2px
radius-default
4px
radius-md
6px
radius-lg
8px
radius-pill
999px
radius-full
9999px
Shadows
--shadow-card
Resting card or panel elevation
--shadow-modal
Dialog, popover, dropdown, hover promotion
--shadow-glow
Brand blue focus or emphasis glow
--shadow-glow-fuchsia
Promoted attention glow
--shadow-glow-gradient
High-visibility dual-brand glow — use sparingly
Layout classes
Density profiles
Sidebar expanded
240px
Sidebar collapsed
56px
Topbar height
64px
Content max
1280px
Sidebar row (compact)
32px
Motion reinforces hierarchy. It does not carry meaning on its own. Respect prefers-reduced-motion.
duration · instant
80ms
Focus rings, tap feedback, toggles
duration · fast
140ms
Hovers, button states, tooltip
duration · standard
200ms
Panel slide, menu open, tab switch
duration · slow
320ms
Modal, drawer, page transition
duration · brand
2600ms
Hero pulse, ambient glow
Infara uses lucide-react as the shipped icon set. Keep strokes consistent, size intentionally, and always label icon-only controls.
12px
Inline badge glyph
14px
Sidebar nav
16px
Default
20px
Dense data rows
24px
Hero and surface header
Rules live here. Rendered palettes live on /swatches — one source of truth per concern.
Choosing chart colors
success/warning/danger/info/processing).chart-1…6.theme-chart-1…6.Decision order
Status → semantic. Categorical → chart-*. Tailwind theme utility → theme-chart-*.
Palettes
Categorical
chart-1chart-2chart-3chart-4chart-5chart-6Theme
theme-chart-1theme-chart-2theme-chart-3theme-chart-4theme-chart-5theme-chart-6Theme dark
dark-theme-chart-1dark-theme-chart-2dark-theme-chart-3dark-theme-chart-4dark-theme-chart-5dark-theme-chart-6Brand
Minimum sizes, clear space, placement rules, and forbidden treatments.
Mark · primary
Mark · on dark
Mark · on tint
Minimum sizes
16px
20px
24px
32px
48px
96px
Below 16px switch to the favicon raster. Reserve clear space equal to roughly one glyph-stem height on every side.
Do and don't
Use on neutral, light, or Infara dark canvas
Pair mark with the INFARA wordmark
Recolor, flatten, or invert the mark
Skew, rotate, or stretch either asset
Place on another gradient background
Add outlines, glows, or drop shadows
How Infara sounds. Operational, precise, and honest about uncertainty.
Infara sounds like a senior operator who has already seen the trace. Say what happened, what it affects, what to do next.
Short sentences. Technical where technical is accurate. No marketing hedges or motivational filler.
If a model inferred something, say so. Show provenance and confidence instead of claiming certainty.
Write this · not that
Write
Deployed to us-east-1 · 1.2s
Not
Blazing-fast deploy complete!
Write
Inferred region from IP
Not
Magic — picked the best region for you
Write
Couldn't reach the agent — retry?
Not
Oops! Something went wrong
Write
Grounded on 3 of 18 sources
Not
AI-powered insights unlocked
Write
Rollback · 2-click confirm
Not
Undo (with sparkles)
Capitalization, punctuation, numbers
Discipline
Non-negotiable floors for contrast, hit targets, keyboard control, focus management, and ARIA relationships.
Contrast
AA
4.5:1 for body, 3:1 for large text and UI elements. Every shipped token pair passes the matrix on /specs.
Target
44×44
Minimum hit target in dense product UI. Icon buttons get an 8px inset hit area when they render at 32–36px.
Focus
3px halo
Every focusable surface shows a visible --ring halo. :focus-visible must never be removed, even inside dense tables.
Motion
Respect
Non-essential motion is wrapped in prefers-reduced-motion: no-preference. Skeletons fall back to static on reduced.
Keyboard map
ARIA and semantics
Release blockers
Any of these halt a release. The bar is higher on operational surfaces because an operator who can't see the state can't act on it.
The most compressed form of the spec. When in doubt, fall back to these.
Do
Don't
Every box passes or the work goes back. Run against every UI-affecting change before QA hand-off.
data-density, data-theme or .dark, archetype noted at top of file).:focus { outline: none } without an alternative visible cue.Decisions
Five steps. Walk them in order — stop at the first match.
primary / link / ring.priority-fuchsia / brand-secondary.Rule: if tempted to invent a hex, stop — find the token; if missing, add it upstream.
Three steps. Density is a workflow decision, not a styling preference.
Apply via data-density="compact|standard|spacious" on a region root.
Five steps. Pick by role, not by family. Sentence case is the default.
Four steps. Status wins over categorical. Color never carries meaning alone.
success/warning/danger/info/processing).chart-1…6.theme-chart-1…6.Four steps. Indeterminate spinners are a last resort, never a default.
Five steps. Brand expression scales with surface archetype.
Rule: if a screen has gradient + glow + identity blue + Orbitron body all at once, you've over-spent. Pull back.