| Token | Hex | Usage |
|---|---|---|
| Background | #0d0f11 |
Page background, card backgrounds |
| Surface | #1a1d21 |
Hover states, input backgrounds, elevated surfaces |
| Border | #1e2126 |
Card borders, dividers, separators |
| Green | #3dd9a4 |
Long positions, profit, positive PnL, connection status |
| Red | #f6465d |
Short positions, loss, negative PnL, liquidation, close actions |
| Cyan | #00d4ff |
Primary accent, selected tabs, active states, links |
| White | #ffffff |
Primary text, headings, asset names |
| Gray 400 | text-gray-400 |
Secondary text, labels, inactive icons |
| Gray 500 | text-gray-500 |
Tertiary text, column headers, metadata |
| Gray 600 | text-gray-600 |
Disabled text, divider text |
- UI text: System font stack (default Tailwind sans)
- Numbers: Monospace (
font-mono) for all prices, sizes, PnL, percentages - Data-dense components: 9-11px (
text-[9px]totext-[11px]) - Headers/labels: 12-14px (
text-xstotext-sm) - Primary values: 16-20px (
text-basetotext-xl) for current price, account balance - Tabular numbers: Use
tabular-numsfor animated/streaming values to prevent layout shift
- Card padding:
px-3 py-2(compact) orpx-4 py-3(standard) - Gap between cards:
gap-2(8px) - Page padding:
p-2(desktop),px-3 py-2.5(mobile header) - Inner grid gaps:
gap-2for data grids,gap-3for nav items
- Dark background (
bg-[#0d0f11]), thin border (border border-[#1e2126]), rounded (rounded-lg) - No shadows. Borders create hierarchy.
- Click to expand/collapse with chevron rotation
- Expanded content uses nested grids for data display
border-b border-[#1e2126]/50between rows (50% opacity for subtlety)
<AnimatedNumber>component for live PnL, prices- 200ms transition duration
- Green/red color based on positive/negative value
- Primary action: Solid background with accent color
- Destructive: Text-only in red (
text-[#f6465d]), no background - Disabled:
cursor-not-allowed, reduced opacity or gray text - Touch targets:
touch-manipulationclass on all interactive elements
- Connection: 2px dot (
w-2 h-2 rounded-full), green=connected, red=disconnected - Signal activity: Pulsing green dot (
animate-pulse)
- Active: white text + cyan bottom border (
border-b-2 border-[#00d4ff]) - Inactive: gray text, no border
- Small inline tags:
text-[9px] px-1 py-0.5 rounded font-medium - Color-coded: green bg for long, red bg for short, with 10% opacity backgrounds
- Source badge:
SIGtag in cyan (text-[#00d4ff] bg-[#00d4ff]/10) for signal-sourced positions
- Three-column: left sidebar (orderbook + trades, 256px), center (chart + positions, flex), right sidebar (account + signals + order form, 320px)
gap-2between columns- Full height, no scroll on page level
- Two-tab navigation: Markets (chart or orderbook) | Trade (orderbook + order form split)
- Bottom nav bar with
pb-12for safe area 100dvhfor full viewport height
- Hover:
hover:bg-[#1a1d21]on interactive rows - Active/pressed:
active:bg-[#1a1d21]on mobile touch targets - Loading:
animate-pulseon skeleton text,opacity-50on loading elements - Error: Toast notifications via ToastContext (top-right, auto-dismiss)
- Empty: Centered gray text with optional action link (e.g., "Login to trade")