A clean, professional design emphasizing trust, clarity, and generous whitespace with subtle depth cues.
Communicate value visually. Prioritize scannability, clear hierarchy, and real-feeling interface elements alongside marketing copy.
- Background:
#FFFFFF(pure white) - Surface:
#F7F8FA(light cool gray) - Card:
#FFFFFF - Border:
#E8EAED - Border Subtle:
#F0F1F3
- Primary:
#1A1A2E(deep navy-black) - Secondary:
#6B7280(medium gray) - Tertiary:
#9CA3AF(light gray) - Inverse:
#FFFFFF
- Primary Green:
#43E660 - Primary Brand:
#2D2D2D(dark buttons) - Link Blue:
#3B82F6 - Warning Amber:
#F59E0B - Info Purple:
#8B5CF6
- Success:
#10B981 - Error:
#EF4444 - Warning:
#F59E0B - Info:
#3B82F6
- Primary: Inter, system-ui, -apple-system, sans-serif
- Display: Inter with tighter tracking
- Hero Title: 48px, weight 500, tracking -0.02em, line-height 1.15
- Section Title: 28px, weight 600, tracking -0.01em
- Subsection: 20px, weight 600
- Body Large: 18px, weight 400, line-height 1.6
- Body: 15px, weight 400, line-height 1.5
- Small/Label: 13px, weight 500
- Caption: 12px, weight 500, uppercase, tracking 0.05em
- Primary: Dark background (#2D2D2D), white text, 8px radius, 12px 24px padding
- Secondary: White background, 1px border, dark text, 8px radius
- Ghost: No background, text only with arrow
- Link: Accent color text with underline on hover
- Icon-only buttons: Always use the shared custom
Tooltipcomponent (ui/Tooltip) for hover/focus labels. Keep anaria-labelon the button for accessibility.
- Always use
<Tooltip>(ui/Tooltip) for all hover hints, helper text, and disabled-state explanations. Never use the native HTMLtitleattribute — it renders inconsistently across browsers, cannot be styled, and has an unpredictable delay. - Disabled buttons with tooltips: Wrap the disabled button in
<Tooltip label="reason">with a<div style={{ cursor: 'not-allowed' }}>inside. SetpointerEvents: 'none'on the<Button>itself so the wrapper receives hover events. - Placement: Default to
position="top". Usebottom,left, orrightwhen the element is near the viewport edge or whentopwould obscure related content. - Label text: Keep tooltip labels short (under ~60 characters). Use sentence case, no trailing period. For disabled states, explain why the action is unavailable (e.g., "Select an agent first"), not just that it is disabled.
- White background, 1px border (#E8EAED), 12px radius
- No box-shadow on hover. Cards are flat — interaction is communicated through border color or background tint changes, never shadows.
- Interior padding: 20px-24px
- Rounded pill shape, small text (13px weight 500)
- Colored background at 10% opacity with matching text color
- Used for status, counts, or labels
- Max width: 1200px centered
- 2-column layouts for content sections (text + visual)
- Generous vertical spacing between sections (80-100px)
- Section padding: 80px vertical
- Card padding: 20-24px
- Element gap: 12-16px
- Be intentional with spacing. Every margin and padding should serve hierarchy — avoid arbitrary values. Use the spacing scale consistently (4, 8, 12, 16, 20, 24, 32, 48, 64, 80px). Don't add extra spacing "just to breathe" — whitespace should guide the eye, not fill emptiness.
- Card: Border color darkens or background tint changes on hover. No shadow on hover — no
box-shadowtransitions. No position shift (translateY), no wiggle, no movement — cards stay flat and in place. - Inline text link: Underline grows from left on hover (underline sweep). Only for true inline text links within body copy.
- Navigation link (back links, breadcrumbs): Color darkens on hover. No underline, no movement.
- Interactive controls (buttons, action triggers): Background/border subtly darken. No link-style underlines, no position shift.
- No hover shadows: Never add or enhance
box-shadowon hover. The interface is flat — use border or background changes instead. - No hover movement: Never use
transform: translateY()ortranslate()on hover. Elements must not shift position on interaction. - No fake link styling: Only true inline text links get underline effects. Navigation elements, cards, list items, and action buttons must never gain underlines on hover.
- Link Blue is for links only: Reserve
var(--color-link)for actual hyperlinks and form focus rings. Do not use it for card borders, button hovers, or list item highlights. - No glow effects: Never use
box-shadowfor decorative glows or blurs on elements like dots, badges, or indicators. Keep the interface flat and crisp.
- Duration: 0.2s ease for interactions
- Smooth color and border transitions