FluxOps

Component library — tokens for the decision intelligence platform. Cool neutral base, amber + violet accents for graph nodes and feasibility tiers.

Colours

Cool-neutral Zinc base for surfaces and structure; amber + violet for brand expression and feasibility tiers. Each swatch shows the light value (left) and dark value (right). Never use raw hex values in components.

FluxOps Brand

Brand Primary--brand-primary#F59E0B / #FBBF24
Brand Accent--brand-accent#A78BFA / #C4B5FD
Brand Container--brand-container#FEF3C7 / #451A03

Zinc Base Palette

50
#fafafa
100
#f4f4f5
200
#e4e4e7
300
#d4d4d8
400
#a1a1aa
500
#71717a
600
#52525b
700
#3f3f46
800
#27272a
900
#18181b
950
#09090b

Surface

Background--background#FFF / #09090B
Card--card#FFF / #09090B
Muted--muted#F4F4F5 / #27272A
Accent--accent#F4F4F5 / #27272A

Text

Foreground--foreground#09090B / #FAFAFA
Muted FG--muted-foreground#71717A / #A1A1AA
Card FG--card-foreground#09090B / #FAFAFA

Interactive

Primary--primary#18181B / #FAFAFA
Primary FG--primary-foreground#FAFAFA / #18181B
Secondary--secondary#F4F4F5 / #27272A
Ring--ring#18181B / #D4D4D8

Structural

Border--border#E4E4E7 / #27272A
Input--input#E4E4E7 / #27272A
Destructive--destructive#EF4444 / #7F1D1D

Status

Successgreen-500#22C55E
Warningamber-500#F59E0B
Errorred-500#EF4444
Infoblue-500#3B82F6

Feasibility Tier

Green--tier-green≥ 8.0 / 10
Amber--tier-amber5.0 – 7.9
Red--tier-red< 5.0

Colour tokens, semantic roles

CSS VariableRoleLightDark
--brand-primarybrand.primary#F59E0B#FBBF24
--brand-accentbrand.accent#A78BFA#C4B5FD
--brand-containerbrand.container#FEF3C7#451A03
--backgroundsurface.background#FFFFFF#09090B
--cardsurface.card#FFFFFF#09090B
--mutedsurface.muted#F4F4F5#27272A
--accentsurface.accent#F4F4F5#27272A
--foregroundtext.foreground#09090B#FAFAFA
--muted-foregroundtext.muted#71717A#A1A1AA
--card-foregroundtext.card#09090B#FAFAFA
--primaryinteractive.primary#18181B#FAFAFA
--primary-foregroundinteractive.primary-fg#FAFAFA#18181B
--secondaryinteractive.secondary#F4F4F5#27272A
--ringinteractive.ring#18181B#D4D4D8
--borderstructural.border#E4E4E7#27272A
--inputstructural.input#E4E4E7#27272A
--destructivestructural.destructive#EF4444#7F1D1D
--tier-greenfeasibility ≥ 8.0#22C55E#22C55E
--tier-amberfeasibility 5.0–7.9#F59E0B#F59E0B
--tier-redfeasibility < 5.0#EF4444#EF4444

Typography

Inter for all UI text — chosen for clarity in data-dense decision interfaces. JetBrains Mono for code, tokens, and structured payloads where character distinction matters.

Font Families

Inter
font-family: 'Inter', sans-serif
Weights used: 400 · 500 · 600 · 700
Role: All UI text — headings, body, labels, data
JetBrains Mono
font-family: 'JetBrains Mono', monospace
Weights used: 400 · 500 · 600
Role: Code, tokens, JSON payloads, decision node IDs

Type Scale

Display72px · 600 · −2px · lh 1.05
Aa
H148px · 600 · −1.5px · lh 1
Heading One
H232px · 600 · −1px · lh 1.15
Heading Two
H324px · 600 · −1px · lh 28.8px
Heading Three
Body16px · 400 · 0 · lh 24px
The quick brown fox jumps over the lazy dog.
Small14px · 400 · 0 · lh 20px
The quick brown fox jumps over the lazy dog.
XS / Label12px · 600 · 0.08em · lh 16px
Label Text

Font families

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

Type scale

CSS VariableSizeWeightTrackingLine height
--text-display72px600−2px1.05
--text-h148px600−1.5px1
--text-h236px600−1px1.15
--text-h324px600−1px28.8px
--text-body16px400024px
--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 Scale

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

Border Radius

--radius-sm4px
--radius-lg8px
border-radius: 9999pxpill

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

Border radius

CSS VariableValueUsage
--radius-sm4pxInputs, chips, small controls
--radius-lg8pxCards, swatches, containers
border-radius9999pxPills, avatars, toggles

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 / --border
hovertransform / box-shadowtranslateY(−1px) · 0 4px 10px
activetransformscale(0.97)
focusoutline2px solid --ring · offset 2px
errorborder / color--destructive (#EF4444)
disabledopacity / pointer-events0.4 · none