Brand Guidelines
Visual standards & UX functional specification for all Noether Capital dashboards — authoritative reference for the software builder
| Logo Mark | "NC" monogram inside a rounded square |
| Logo Dimensions | 40×40px in header. Minimum size: 24×24px. |
| Logo Background | #1d293d (Primary Navy) |
| Logo Text Colour | #ffffff (White) |
| Logo Font | Playfair Display, 700 weight, 16px |
| Logo Border Radius | 6px |
| Brand Name | "NOETHER CAPITAL" — always uppercase, always letter-spacing: 2px |
| Brand Name Font | System sans-serif, 600 weight, 18px |
| Clear Space | Minimum 12px on all sides of the lockup |
| Never | Never change logo colours. Never rotate. Never use below 24px. Never place on busy backgrounds without a white container. |
- ALWAYS use CSS variables (
var(--color-primary)) not hex values in code - Status colours are semantic — green always means success, red always means failure
- Zone colours identify dashboard categories — do not mix across zones
- NEVER use rainbow colour maps for data — they are perceptually non-uniform
- NEVER invent new colours — only use what is defined above
| Brand Font | 'Playfair Display', serif — headings, titles, card titles |
| UI Font | ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif — body, labels, buttons |
| Code Font | monospace — packet IDs, code references, hashes |
- Playfair Display is ONLY for headings and titles. Never for body text.
- Body text is ALWAYS system sans-serif. Never Playfair.
- Line height: 1.6 for body text, 1.3 for headings, 1.0 for single-line labels.
- Monospace is ONLY for code, IDs, and technical values. Never for labels.
| Header Height | 72px, fixed at top |
| Main Content | max-width 1440px, centered, padding 40px 32px |
| Card Margin | 24px margin-bottom between cards |
| Background | White (#ffffff) |
| Border | 1px solid var(--color-gray-light) |
| Border Radius | 8.4px (--radius-sm) |
| Padding | 24px |
| Layout | Title + subtitle at top, body below |
White bg, 1px gray-light border, 8.4px radius, 24px padding
4px left border in --color-primary for overview/callout
Every numerical value that changes frequently (price, P&L, latency, token count, percentage, cost) must use tabular numerals to prevent text “jumping” during refreshes.
/* Apply to ALL elements displaying live-updating numbers */
.numeric, .stat-value, .metric-value, .latency-value, .cost-value, .pnl-value {
font-variant-numeric: tabular-nums;
font-family: var(--font-numeric);
}
/* CSS Variable (add to :root) */
--font-numeric: ui-monospace, 'SF Mono', 'Cascadia Code', monospace;
Rule: Any element whose text content changes on a refresh interval must have font-variant-numeric: tabular-nums. This ensures digits are fixed-width and the layout does not shift when “1” changes to “8” or “0.05” changes to “12.34”.
| State | Colour | CSS Variable | Use For | NOT For |
|---|---|---|---|---|
| Success / Pass / Healthy | Green | --status-green / --status-green-bg | Verified, complete, healthy, pass, connected | — |
| In Progress / Busy / Loading | Blue | --status-info / --status-info-bg | Verifying, building, scanning, calculating, connecting | Do NOT use for warnings or degraded states |
| Warning / Degraded / Attention | Amber | --status-amber / --status-amber-bg | Degraded performance, approaching limit, needs review, stale data | Do NOT use for “system is busy” — use Blue instead |
| Error / Fail / Critical | Red | --status-red / --status-red-bg | Failed, broken, offline, breach, critical alert | — |
| Unchecked / Pending / Unknown | Gray | --color-gray-light / --color-gray | Not yet checked, no data, awaiting input | — |
Critical rule: Blue and Amber must NEVER be used interchangeably. Blue means “the system is actively working.” Amber means “something is degraded and may need attention.” If a button shows a spinner, it is Blue (busy). If a corridor latency is 115% of baseline, it is Amber (degraded). Mixing these causes warning fatigue.
- Use CSS variables for all colours and fonts
- Follow the type scale exactly
- Use Playfair Display ONLY for headings
- Use status colours semantically (green = success, red = failure)
- Keep cards at 24px padding
- Include breadcrumbs on every page
- Match the header/nav exactly — copy from an existing page
- Left-align all body text (stat values may be centred)
- Don't hardcode hex colours — use var(--color-*)
- Don't use Playfair Display for body text
- Don't use rainbow colour scales for data
- Don't add box shadows to cards (the design is flat)
- Don't change the header height or nav structure
- Don't use icon libraries (no FontAwesome, no Material Icons) — use Unicode symbols or plain text
- Don't add custom fonts beyond Playfair Display and system sans-serif
- Don't use gradients
- Don't centre body text — always left-aligned except stat values
Extended visual specification: Chart types, data visualisation colours, refresh rates, interaction patterns, and empty states are defined in the Dashboard Visual Specification →