Desktop App
Electron + React. Dark theme only. ALL styling is inline React.CSSProperties objects — no Tailwind classes in JSX. Colors centralized in the C token object.
The C Token Object
From ProgressPage.tsx — the centralized color constants used across the desktop app.
Color Tokens
The complete color palette used across the desktop app.
Surface Hierarchy
Text Hierarchy
#e5e5e8
C.text — also #eaeaea
#8a8a95
C.textSecondary — also #b8bac0
#55555f
C.textMuted — also #83858b
#5B5D65
Labels, timestamps
Accent Colors
BLE Device Colors
Intensity Colors
Zone Colors (Zwift Standard)
Typography
DM Sans for all text. JetBrains Mono for numeric values and metrics only.
'DM Sans', -apple-system, sans-serif'JetBrains Mono', monospace-webkit-font-smoothing: antialiased
Cards
The ProgressPage card pattern — the primary container for all dashboard content.
Popups / Modals
ConnectPopup pattern — floating overlays with elevated surface and heavier shadow.
Data Visualization
Charts use Canvas 2D via CanvasChart.tsx + DrawChart.ts. D3 for data scaling.
Zone Distribution Bars
Intensity Bars
Score Ring
Monthly Stacked Bars
Chart Colors
#4a9eff
rgba(74,158,255,0.12)
Component Patterns
Spacing, layout, and structural conventions used in the desktop app.
Page Container
Card Grid
Settings Row (SettingsPage Pattern)
Shadows
Dark theme shadows are heavier to remain visible against dark surfaces.
0 2px 8px rgba(0,0,0,0.3)