# Design tokens The complete token table used across mockups and (eventually) production console. ## Color palette ```css :root { /* Backgrounds */ --bg: #000000; --cell: #0A0E12; --cell-2: #141a20; --cell-3: #1d2630; /* Primary navigation chrome */ --ink: #66CCFF; /* dominant cyan */ --ink-2: #99CCFF; /* secondary text/hint */ --bar: #66CCFF; --bar-dim: #224466; /* Domain colors (per VLAN / per AI type) */ --cam: #6699FF; /* cameras / VLAN-10 — royal blue */ --hai: #CC99CC; /* compute / VLAN-20 — mauve */ --iot: #99CC99; /* health / OK — green */ --mgmt: #CCCC99; /* management / VLAN-30 — olive */ --wan: #66CCCC; /* WAN / external — turquoise */ /* Semantic */ --warn: #99FFFF; /* warnings — bright cyan */ /* Brand (isolated from semantic UI) */ --brand: #9FCB3A; /* Blocao green — logo only */ /* Text on ink-colored backgrounds */ --hai-text: #000; } ``` ## Typography | Use | Font | Weight | Size range | |---|---|---|---| | Primary sans (titles, buttons, labels) | Antonio | 400, 500, 600, 700 | 9-26px | | Mono (data, timestamps, code, IDs) | JetBrains Mono | 400, 500, 700 | 8-13px | Both fonts loaded from Google Fonts. Antonio chosen for its compressed letterforms (LCARS-like), JetBrains Mono for its clarity at small sizes. ## Spacing LCARS-style asymmetric padding. Common values: - Pill height: 36-40px. - Card border-radius: 12-14px (asymmetric corners on chrome elements: `border-radius: 0 28px 28px 0` etc). - Content padding: 12-18px inside cards. - Section gap: 6-12px. ## Border treatments - **Chrome elements** (rail, topbar): solid color blocks with asymmetric rounded corners. - **Content cards**: rounded corners (12-14px), border-left accent in domain color. - **Dotted dividers**: `border-bottom: 1px dashed var(--cell-3)` for sections within a card. ## Animation patterns - **Pulse** (status dots, "live" indicators): 2s ease-in-out, opacity 0.4 → 1. - **Flow lines** (SCADA connections): `stroke-dasharray: 4 8; animation: 1.6s linear` shifting `stroke-dashoffset`. - **Cursor blink** (input fields): 1.1s. - **Panel transitions**: avoid. View switches are instant. ## Iconography Symbols used as text glyphs (no icon font, no SVG sprite): - `▸` / `◂` — section chevrons, "open"/"close". - `◆` — emphasis, brand moment, identified marker. - `●` / `◯` — running / paused indicators. - `✓` / `✗` — pass / fail. - `⊕` — secure / encrypted. - `↑` / `↓` — bridge direction (out / in). - `↑↑` / `↓↓` — fast-forward / rewind in player. Custom SVG only for: Blocao logo (the blockhouse mark), the SCADA component renderings in SYNOPSIS. ## Domain color usage | Color | Use cases | |---|---| | `--ink` (cyan) | Default text, active rail pill, chrome accents | | `--cam` (royal blue) | CAMS view, VLAN-10 references, camera-related events | | `--hai` (mauve) | FRIGATE view, Cell device, edge AI inference | | `--iot` (green) | OK status, health passing, "good" states | | `--mgmt` (olive) | GITOPS view, VLAN-30, system management, deferred topics | | `--wan` (turquoise) | WAN view, external connections, hub references | | `--warn` (bright cyan) | Warnings, alerts, attention-needed | | `--brand` (lime green) | Logo, brand chip, brand moments only | Pattern: when navigating to a view, the chrome of the topbar shifts to that domain's color. CAMS makes the topbar accent royal blue; FRIGATE makes it mauve. Reinforces "what mode am I in". ## Accessibility considerations - All foreground text against `--bg` or `--cell` meets WCAG AA at the size used. - Status is never communicated by color alone — always paired with shape (✓/✗) or text label. - Animations respect `prefers-reduced-motion: reduce` (currently CSS-only; full implementation in production). ## Tooling Tokens will be exported to: - `tokens.css` — CSS custom properties (current). - `tokens.json` — for design tools and JS imports (planned). - `tokens.figma.json` — for Figma library sync (planned). These live in `packages/design-tokens/` of the future code monorepo.