This document defines the visual design language for routatic-proxy's macOS GUI.
Software developers who manage proxy configurations and need quick diagnostic information.
- Information density over decoration — Every pixel should earn its place
- Diagnostic at a glance — Status should be assessable in 3 seconds
- Power-user friendly — Keyboard shortcuts, search, quick actions
- Native feel — Follow Apple Human Interface Guidelines
Uses CSS variables for light/dark mode support:
/* Light Mode */
--bg: #f5f5f7; /* Background */
--surface: #ffffff; /* Card backgrounds */
--surface2: #f0f0f2; /* Secondary surfaces */
--border: #d8d8dc; /* Borders */
--text: #1d1d1f; /* Primary text */
--text-muted: #6e6e73; /* Secondary text */
--accent: #0071e3; /* Primary action color */
--success: #28a745; /* Success states */
--error: #dc3545; /* Error states */
--warning: #fd7e14; /* Warning states */4px base unit:
| Token | Value | Usage |
|---|---|---|
--space-1 |
4px | Tight gaps |
--space-2 |
8px | Standard gaps |
--space-3 |
12px | Section padding |
--space-4 |
16px | Card padding |
--space-5 |
24px | Major sections |
--space-6 |
32px | Page margins |
System font stack (-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif):
| Token | Size | Usage |
|---|---|---|
--text-xs |
11px | Labels, hints |
--text-sm |
12px | Secondary text |
--text-base |
13px | Body text |
--text-md |
14px | Section headers |
--text-lg |
16px | Card titles |
--text-xl |
26px | Metric values |
| Token | Value | Usage |
|---|---|---|
--radius-sm |
4px | Buttons, inputs |
--radius-md |
6px | Fieldsets, smaller cards |
--radius-lg |
10px | Cards, modals |
- Touch targets: 44px minimum (toggle switches, buttons)
- Focus indicators: Custom ring style with
--shadow-focus - Color contrast: WCAG AA compliant (4.5:1 for body text)
- ARIA labels: On all interactive elements
- Keyboard navigation: Full support with visible focus
| Shortcut | Action |
|---|---|
| ⌘K | Open command palette |
| ⌘R | Refresh all data |
| ⌘F | Focus history search (when on History tab) |
| ⌘1 | Go to Overview tab |
| ⌘2 | Go to History tab |
| ⌘3 | Go to Settings tab |
| Escape | Close modal/command palette |
- Animated dot (green for running, red for stopped)
- Text status: Running / Stopped / Connected
- Role:
statuswitharia-live="polite"
- 4-column grid on Overview
- Value in
--text-xl(26px bold) - Label in
--text-xs(11px muted) - No decorative shadows (functional only)
- 44px touch target (accessibility compliant)
- iOS-style slider animation
- Clear on/off visual states
- Sortable columns (click header to sort)
- Search bar with ⌘F shortcut
- Click row for detail modal
- Pagination handled by scroll
- Collapsed by default (progressive disclosure)
- One section expanded at a time
- Smooth expand/collapse animation
- Chevron icon indicates state
- Responsive breakpoints (fixed 375px width for native webview)
- Mobile/tablet layouts
- Custom typography (uses system fonts)
- Animation-heavy interactions