Skip to content

Brand Foundations

The Aesthetic Is the Structure

Bauhaus made industrial structure visible. Nodus makes algorithmic structure visible. Every token, every color rule, every type decision exists to serve that single goal.

01

The Bauhaus Principle

Bauhaus (1919–1933) performed one decisive inversion: make the industrial structure visible. Before Gropius, steel buildings hid their frames in stone. Bauhaus showed the beam, revealed the weld, exposed the glass. The aesthetic was truth-telling about materials.

The 21st-century machine is invisible by design. Algorithms rank your feed, score your loan, route your payment — all behind smooth surfaces that conceal the logic entirely. Nodus inverts this. The design system is built on one commitment: every visual choice reveals structure, never conceals it.

In practice this means: borders and grids ARE the decoration. Color carries semantic meaning, not brand preference. Typography hierarchy encodes data density, not aesthetic whim. No element appears without a reason traceable to the underlying information architecture.

Structure IS the decoration. No gratuitous ornament.

Color is semantic

Three signals, three meanings. Never decorative.

Never skip a token layer

Primitives → Semantic → Component. Hierarchy enforced.

Legibility over beauty

Every pixel earns its place or is removed.

02

The Semantic Color System

Three colors. Three meanings. No exceptions. You can read a screen without reading a word — the color layer encodes behavioral structure that text only confirms.

--ds-color-agency

Agency Red

Committed AI action, authority, consequence

Use for

  • AI-initiated actions
  • Active execution states
  • Destructive / irreversible operations
  • Agent-owned decisions

Never use for

  • Brand accent
  • Decorative emphasis
  • Error states (use --ds-color-error)
  • Non-committed or speculative actions
--ds-color-temporal

Temporal Blue

In-flight, processing, uncertainty, time

Use for

  • Loading and processing states
  • In-flight requests
  • Informational content
  • Links and navigation
  • Timestamps, staleness indicators

Never use for

  • Settled / completed states
  • Brand color
  • Error or warning states
--ds-color-validation

Validation Gold

Enrichment, trust, thresholds, confirmation

Use for

  • Human-verified data
  • Confidence threshold passed
  • Caution / near-limit states
  • Quality enrichment badges

Never use for

  • Celebration / success (use --ds-color-outcome-positive)
  • Decoration
  • Errors

Agency Red ≠ Error Red

--ds-color-agency marks committed AI action. --ds-color-error marks system failure. Using agency red for errors corrupts the semantic channel — users lose the ability to read screens at a glance.

03

Typography as Signal

Every type decision in the system answers a functional question. Monospace for data: because financial numbers must align vertically across rows — tabular figures prevent the eye from losing position. The 10px floor: because dense financial interfaces routinely pack dozens of data points into one viewport, and going below 10px fails WCAG at normal viewing distances.

Contrast floors are not aesthetic minimums — they are accessibility requirements enforced at the token layer. Body text at 7:1 contrast. Secondary at 4.83:1. Muted at 4.83:1. You cannot use a lower-contrast token for readable text — the naming convention tells you this.

42,819.00
Display / HeroMonospace tabular figures — amounts, IDs, timestamps
--ds-type-mono-font + tabular-nums
AGENT DECISION LOG
Section HeadingUppercase grotesque — section anchors, feature names
--ds-type-display-font
Treasury position confirmed. Agent executed at 14:32 UTC with full audit trail.
BodyProse, descriptions, metadata — 15px, 1.65 leading
--ds-type-body-size
COUNTERPARTY RISK
Label / Overline11px uppercase — field labels, table headers, category chips
--ds-type-label-size (11px floor)
Last updated 4 seconds ago · via agent run #d4f2
Caption11px meta — timestamps, source attribution, secondary context
--ds-type-caption-size

Aa

Primary

14:1

--ds-text-primary

Aa

Secondary

7:1

--ds-text-secondary

Aa

Muted

4.83:1

--ds-text-muted

Aa

Inverse

on dark bg

--ds-text-inverse

04

Dark Mode First

Service interfaces are dark-mode primary. The treasury dashboard, agent monitor, and real-time data surfaces are all designed dark-first because dense financial data reduces eye strain on dark backgrounds during sustained use — the same reason Bloomberg Terminal has run dark for 40 years.

Documentation (this site) is light-mode primary. Reading prose at length is faster on light backgrounds; accessibility standards are easier to validate against light defaults. The token system handles both surfaces transparently — components that use onlyvar(--ds-*)tokens invert correctly without any conditional logic.

Surface Hierarchy — Ground → Raised → Inverse

--ds-surface-groundGround

Page background. The lowest layer — never use for cards or panels.

--ds-surface-raisedRaised

Cards, panels, sidebar. Elevated one level above ground.

--ds-surface-inverseInverse

Primary buttons, active chips, high-contrast callouts. Text MUST use --ds-text-inverse.

The Rule

Any component built exclusively on var(--ds-*) tokens inherits light/dark inversion automatically — no media queries, no className conditionals. This is why the three-layer token architecture exists: primitives carry values, semantic tokens carry meaning, and the mode switch is a single CSS variable reassignment at the root.

✕ Wrong — breaks dark mode

background: '#E4E4E7'
color: '#18181B'
border: '1px solid #D4D4D8'

✓ Correct — adapts to both modes

background: 'var(--ds-surface-ground)'
color: 'var(--ds-text-primary)'
border: '1px solid var(--ds-border-structure)'