# CRM Design System: Style Guide > Version 1.2 | Last Updated: December 2024 A comprehensive design system reference for building consistent, accessible, and modern CRM interfaces. --- ## Table of Contents 1. [Design Principles](#design-principles) 2. [Color System](#color-system) 3. [CRM-Specific Colors](#crm-specific-colors) 4. [Data Visualization](#data-visualization) 5. [Kanban Board Specs](#kanban-board-specs) 6. [Activity Timeline](#activity-timeline) 7. [Typography](#typography) 8. [Spacing & Layout](#spacing--layout) 9. [Border Radius](#border-radius) 10. [Elevation & Shadows](#elevation--shadows) 11. [Components](#components) 12. [Icons](#icons) 13. [Grid & Breakpoints](#grid--breakpoints) 14. [CSS Variables Reference](#css-variables-reference) --- ## Design Principles 1. **Clarity First**: Every element should serve a purpose. Remove visual clutter. 2. **Data-Driven**: Prioritize readability of data in tables, lists, and cards. 3. **Consistent Rhythm**: Use the 8px grid system for all spacing decisions. 4. **Accessible**: WCAG 2.0 AA compliant color contrast and interactions. 5. **Theme-Ready**: Semantic tokens enable light/dark mode switching. --- ## Color System ### Token Architecture We use a **three-layer token system**: ``` Base Layer (Primitives) → Semantic Layer (Purpose) → Component Layer (Usage) ``` ### Brand Colors | Token | Hex | RGB | Usage | | --------------------- | ------- | ------------- | ----------------------------------- | | --color-brand-primary | #EA580C | 234, 88, 12 | Primary actions, CTAs, brand accent | | --color-brand-dark | #404346 | 64, 67, 70 | Primary text, dark UI elements | | --color-brand-white | #FFFFFF | 255, 255, 255 | Backgrounds, cards, surfaces | ### Neutral Palette | Token | Hex | Usage | | ---------------- | ------- | ---------------------------------- | | --color-grey-50 | #FAFAFA | Subtle backgrounds | | --color-grey-100 | #F5F5F5 | Hover states, zebra stripes | | --color-grey-200 | #EEEEEE | Subtle dividers, table rows | | --color-grey-300 | #E0E0E0 | Default borders (--border-default) | | --color-grey-400 | #BDBDBD | Placeholder text | | --color-grey-500 | #9E9E9E | Secondary icons | | --color-grey-600 | #757575 | Secondary text | | --color-grey-700 | #616161 | Body text | | --color-grey-800 | #424242 | Headings | | --color-grey-900 | #212121 | Primary text | ### Semantic Colors | Category | Token | Hex | Usage | | ------------------ | ------------------------ | ------- | --------------------------------- | | **Primary** | --color-primary-default | #EA580C | Primary buttons, links | | | --color-primary-hover | #C2410C | Primary hover state | | | --color-primary-active | #9A3412 | Primary active/pressed | | | --color-primary-light | #FFF7ED | Primary backgrounds | | **Negative/Error** | --color-negative-default | #DC3545 | Error states, destructive actions | | | --color-negative-hover | #C82333 | Error hover | | | --color-negative-light | #FDEAEA | Error backgrounds | | **Warning** | --color-warning-default | #FFC107 | Warning states | | | --color-warning-dark | #E0A800 | Warning text on light bg | | | --color-warning-light | #FFF8E1 | Warning backgrounds | | **Success** | --color-success-default | #28A745 | Success states | | | --color-success-light | #E8F5E9 | Success backgrounds | | **Info** | --color-info-default | #17A2B8 | Informational states | | | --color-info-light | #E3F2FD | Info backgrounds | ### Surface Colors | Token | Light Mode | Dark Mode | Usage | | ----------------- | ---------- | --------- | ------------------------ | | --surface-default | #FFFFFF | #1E1E1E | Main background | | --surface-raised | #FFFFFF | #252525 | Cards, elevated elements | | --surface-sunken | #F5F5F5 | #141414 | Inset areas, sidebars | | --surface-overlay | #FFFFFF | #2D2D2D | Modals, dropdowns | ### Text Colors | Token | Light Mode | Dark Mode | Usage | | ---------------- | ---------- | --------- | --------------------------- | | --text-primary | #212121 | #FFFFFF | Headings, primary content | | --text-secondary | #616161 | #B0B0B0 | Descriptions, metadata | | --text-tertiary | #9E9E9E | #757575 | Placeholders, hints | | --text-disabled | #BDBDBD | #525252 | Disabled states | | --text-inverse | #FFFFFF | #212121 | Text on colored backgrounds | | --text-link | #EA580C | #FB923C | Links | | --text-error | #DC3545 | #F87171 | Error messages | ### Border Colors | Token | Light Mode | Dark Mode | Usage | | ---------------- | ---------- | --------- | ------------------- | | --border-default | #E0E0E0 | #3D3D3D | Default borders | | --border-strong | #BDBDBD | #525252 | Emphasized borders | | --border-focus | #EA580C | #FB923C | Focus rings | | --border-error | #DC3545 | #F87171 | Error state borders | --- ## CRM-Specific Colors ### Pipeline Stage Colors | Token | Hex | Usage | | ------------------- | ------- | -------------------- | | --stage-new | #EA580C | New/Incoming leads | | --stage-contacted | #F97316 | Initial contact made | | --stage-qualified | #3B82F6 | Lead qualified | | --stage-proposal | #8B5CF6 | Proposal sent | | --stage-negotiation | #F59E0B | In negotiation | | --stage-won | #22C55E | Deal closed won | | --stage-lost | #EF4444 | Deal closed lost | ### Pipeline Stage Backgrounds (Kanban columns) | Token | Hex | Usage | | ---------------------- | ------- | ------------------ | | --stage-new-bg | #FFF7ED | New column | | --stage-contacted-bg | #FFEDD5 | Contacted column | | --stage-qualified-bg | #EFF6FF | Qualified column | | --stage-proposal-bg | #F5F3FF | Proposal column | | --stage-negotiation-bg | #FFFBEB | Negotiation column | | --stage-won-bg | #F0FDF4 | Won column | | --stage-lost-bg | #FEF2F2 | Lost column | ### Activity Type Colors | Token | Hex | Icon | Usage | | ------------------- | ------- | -------- | ------------ | | --activity-call | #22C55E | Phone | Phone calls | | --activity-email | #3B82F6 | Mail | Emails | | --activity-meeting | #8B5CF6 | Calendar | Meetings | | --activity-task | #F59E0B | Check | Tasks/To-dos | | --activity-note | #6B7280 | FileText | Notes | | --activity-deadline | #EF4444 | Clock | Deadlines | ### Lead Temperature | Token | Hex | Usage | | ----------- | ------- | ------------------------ | | --lead-hot | #EF4444 | Hot lead (high intent) | | --lead-warm | #F59E0B | Warm lead (engaged) | | --lead-cold | #6B7280 | Cold lead (low activity) | ### Lead Temperature Backgrounds | Token | Hex | Usage | | -------------- | ------- | ------------------ | | --lead-hot-bg | #FEF2F2 | Hot lead badge/tag | | --lead-warm-bg | #FFFBEB | Warm lead badge | | --lead-cold-bg | #F3F4F6 | Cold lead badge | ### Priority Levels | Token | Hex | Usage | | ----------------- | ------- | --------------- | | --priority-urgent | #DC2626 | Urgent priority | | --priority-high | #F97316 | High priority | | --priority-medium | #FBBF24 | Medium priority | | --priority-low | #22C55E | Low priority | | --priority-none | #9CA3AF | No priority set | ### Deal Health / Probability | Token | Hex | Usage | | ------------------ | ------- | ------------------------- | | --probability-high | #22C55E | 70-100% close probability | | --probability-mid | #F59E0B | 40-69% probability | | --probability-low | #EF4444 | 0-39% probability | ### Task Status | Token | Hex | Usage | | ---------------- | ------- | ------------- | | --task-overdue | #EF4444 | Past due date | | --task-due-today | #F59E0B | Due today | | --task-upcoming | #3B82F6 | Due in future | | --task-completed | #22C55E | Completed | | --task-cancelled | #9CA3AF | Cancelled | ### Task Status Backgrounds | Token | Hex | Usage | | ------------------- | ------- | -------------------- | | --task-overdue-bg | #FEF2F2 | Overdue task badge | | --task-due-today-bg | #FFFBEB | Due today badge | | --task-upcoming-bg | #EFF6FF | Upcoming task badge | | --task-completed-bg | #F0FDF4 | Completed task badge | | --task-cancelled-bg | #F3F4F6 | Cancelled task badge | --- ## Data Visualization ### Chart Color Palette (Sequential) For single-metric charts and gradients: | Token | Hex | Usage | | --------- | ------- | -------------- | | --chart-1 | #EA580C | Primary series | | --chart-2 | #F97316 | Secondary | | --chart-3 | #FB923C | Tertiary | | --chart-4 | #FDBA74 | Fourth | | --chart-5 | #FED7AA | Fifth | ### Chart Color Palette (Categorical) For multi-metric/comparison charts: | Token | Hex | Usage | | ------- | ------- | ------------------- | | --cat-1 | #EA580C | Category 1 (Orange) | | --cat-2 | #3B82F6 | Category 2 (Blue) | | --cat-3 | #22C55E | Category 3 (Green) | | --cat-4 | #8B5CF6 | Category 4 (Purple) | | --cat-5 | #EC4899 | Category 5 (Pink) | | --cat-6 | #14B8A6 | Category 6 (Teal) | ### Progress Bar Colors | Token | Hex | Usage | | ------------------ | ------- | ----------------- | | --progress-default | #EA580C | Standard progress | | --progress-success | #22C55E | Goal achieved | | --progress-warning | #F59E0B | Behind target | | --progress-danger | #EF4444 | Critical/at risk | | --progress-bg | #E5E7EB | Progress track | --- ## Kanban Board Specs | Property | Value | | -------------------- | ------------------------- | | Column Width | 280px - 320px | | Column Gap | 12px | | Card Gap | 8px | | Column Header Height | 48px | | Card Min Height | 80px | | Card Padding | 12px | | Card Border Radius | --radius-lg (8px) | | Column Border Radius | --radius-lg (8px) | | Drop Zone Highlight | 2px dashed --border-focus | | Drag Shadow | --shadow-lg | --- ## Activity Timeline | Property | Value | | ------------------- | -------------------------- | | Timeline Line Width | 2px | | Timeline Line Color | --border-default | | Node Size | 32px | | Node Border | 2px solid (activity color) | | Node Background | --surface-default | | Entry Gap | 16px | | Content Offset | 48px from timeline | --- ## Typography ### Font Stack Geist font from google fonts ```css --font-family-sans: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; --font-family-mono: "Geist Mono", "SF Mono", "Fira Code", Consolas, monospace; ``` ### Type Scale | Token | Size | Weight | Line Height | Letter Spacing | Usage | | --------------- | ---- | ------ | ----------- | -------------- | --------------------- | | --text-display | 40px | 700 | 1.2 | -0.02em | Hero sections | | --text-h1 | 32px | 600 | 1.25 | -0.01em | Page titles | | --text-h2 | 24px | 600 | 1.3 | -0.01em | Section headers | | --text-h3 | 20px | 600 | 1.35 | 0 | Subsection headers | | --text-h4 | 16px | 600 | 1.4 | 0 | Card titles | | --text-h5 | 14px | 600 | 1.4 | 0 | Small headers | | --text-body-lg | 16px | 400 | 1.5 | 0 | Primary body text | | --text-body | 14px | 400 | 1.5 | 0 | Default body text | | --text-body-sm | 13px | 400 | 1.45 | 0 | Secondary body text | | --text-caption | 12px | 400 | 1.4 | 0.01em | Captions, metadata | | --text-label | 12px | 500 | 1.3 | 0.02em | Form labels, badges | | --text-overline | 11px | 600 | 1.4 | 0.08em | Overlines (uppercase) | ### Font Weights | Token | Value | Usage | | ---------------------- | ----- | ----------------------- | | --font-weight-regular | 400 | Body text, descriptions | | --font-weight-medium | 500 | Labels, emphasis | | --font-weight-semibold | 600 | Headings, buttons | | --font-weight-bold | 700 | Strong emphasis | ### Usage Guidelines - **Body text**: 14px for dense UI, 16px for reading-focused areas - **Minimum size**: 12px (never go below for accessibility) - **Line length**: 60-80 characters maximum for readability - **Paragraph spacing**: Use `--space-300` (24px) between paragraphs --- ## Spacing & Layout ### Base Unit All spacing is based on an **8px grid system**. ### Spacing Scale | Token | Value | Usage | | ------------ | ----- | -------------------------- | | --space-0 | 0px | No spacing | | --space-25 | 2px | Micro adjustments, borders | | --space-50 | 4px | Tight spacing, icon gaps | | --space-100 | 8px | Base unit, compact layouts | | --space-150 | 12px | Default internal padding | | --space-200 | 16px | Component padding, gaps | | --space-250 | 20px | Medium spacing | | --space-300 | 24px | Section padding | | --space-400 | 32px | Section margins | | --space-500 | 40px | Large component spacing | | --space-600 | 48px | Page sections | | --space-700 | 56px | Large section gaps | | --space-800 | 64px | Major section breaks | | --space-900 | 72px | Extra-large spacing | | --space-1000 | 80px | Page-level spacing | ### Spacing Usage Guide | Context | Recommended Tokens | | --------------------------- | ------------------------------------ | | Icon to text gap | --space-50 to --space-100 (4-8px) | | Button padding (horizontal) | --space-200 to --space-300 (16-24px) | | Button padding (vertical) | --space-100 to --space-150 (8-12px) | | Card internal padding | --space-200 to --space-300 (16-24px) | | Form field gap | --space-200 (16px) | | Section gap | --space-400 to --space-600 (32-48px) | | Page margins | --space-300 to --space-400 (24-32px) | --- ## Border Radius | Token | Value | Usage | | ------------- | ------ | --------------------- | | --radius-none | 0px | Sharp corners | | --radius-xs | 2px | Subtle rounding | | --radius-sm | 4px | Inputs, small buttons | | --radius-md | 6px | Buttons, dropdowns | | --radius-lg | 8px | Cards, containers | | --radius-xl | 12px | Modals, large cards | | --radius-2xl | 16px | Large containers | | --radius-full | 9999px | Pills, avatars, tags | ### Usage by Component | Component | Radius Token | | ------------ | ------------------ | | Buttons | --radius-md (6px) | | Input fields | --radius-sm (4px) | | Cards | --radius-lg (8px) | | Modals | --radius-xl (12px) | | Avatars | --radius-full | | Tags/Badges | --radius-full | | Tooltips | --radius-sm (4px) | | Dropdowns | --radius-md (6px) | --- ## Elevation & Shadows ### Shadow Scale | Token | Value | Usage | | ------------- | ---------------------------------------------------------- | ------------------------ | | --shadow-none | none | Flat elements | | --shadow-xs | 0 1px 2px rgba(0,0,0,0.04) | Subtle lift | | --shadow-sm | 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04) | Cards (resting) | | --shadow-md | 0 4px 6px rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.05) | Cards (hover), dropdowns | | --shadow-lg | 0 10px 15px rgba(0,0,0,0.08), 0 4px 6px rgba(0,0,0,0.05) | Modals, popovers | | --shadow-xl | 0 20px 25px rgba(0,0,0,0.10), 0 10px 10px rgba(0,0,0,0.04) | Full overlays | ### Elevation Levels | Level | Shadow Token | Z-Index | Usage | | -------- | ------------- | ------- | ------------------- | | Base | --shadow-none | 0 | Page background | | Raised | --shadow-sm | 10 | Cards, sections | | Dropdown | --shadow-md | 100 | Dropdowns, tooltips | | Sticky | --shadow-md | 200 | Sticky headers | | Modal | --shadow-lg | 300 | Modals, dialogs | | Overlay | --shadow-xl | 400 | Full overlays | | Toast | --shadow-lg | 500 | Notifications | ### Focus Ring ```css --focus-ring: 0 0 0 2px var(--surface-default), 0 0 0 4px var(--color-primary-default); ``` --- ## Components ### Buttons #### Variants | Variant | Background | Text | Border | Usage | | --------------- | ------------------------ | ----------------------- | ----------------------- | ------------------- | | **Primary** | --color-primary-default | --text-inverse | none | Main actions | | **Secondary** | transparent | --color-primary-default | --color-primary-default | Alternative actions | | **Tertiary** | transparent | --text-secondary | none | Low emphasis | | **Destructive** | --color-negative-default | --text-inverse | none | Dangerous actions | | **Ghost** | transparent | --text-primary | none | Minimal UI | #### Sizes | Size | Height | Padding (H) | Font Size | Icon Size | | ------ | ------ | ----------- | --------- | --------- | | **XS** | 24px | 8px | 11px | 14px | | **SM** | 28px | 12px | 12px | 16px | | **MD** | 36px | 16px | 14px | 18px | | **LG** | 44px | 20px | 16px | 20px | | **XL** | 52px | 24px | 18px | 24px | #### States | State | Opacity/Change | | -------- | ----------------------- | | Default | 100% | | Hover | Darken 8% or overlay | | Active | Darken 12% | | Disabled | 50% opacity, no pointer | | Loading | Show spinner, disable | #### Button Specs ```css .btn { font-weight: 600; border-radius: var(--radius-md); transition: all 150ms ease; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: var(--space-100); } ``` --- ### Input Fields #### Anatomy ``` ┌─────────────────────────────────────┐ │ Label * (Helper) │ ├─────────────────────────────────────┤ │ [Icon] Placeholder text [Icon] │ ├─────────────────────────────────────┤ │ Helper text or error message │ └─────────────────────────────────────┘ ``` #### Specifications | Property | Value | | ---------------- | -------------------------------------------- | | Height | 40px (default), 36px (compact), 48px (large) | | Padding | 12px horizontal, centered vertical | | Border | 1px solid --border-default | | Border Radius | --radius-sm (4px) | | Font Size | 14px | | Label Font Size | 12px | | Helper Font Size | 12px | #### States | State | Border Color | Background | | --------- | -------------------- | ---------------------- | | Default | --border-default | --surface-default | | Hover | --border-strong | --surface-default | | Focus | --border-focus (2px) | --surface-default | | Error | --border-error | --color-negative-light | | Disabled | --border-default | --surface-sunken | | Read-only | --border-default | --surface-sunken | --- ### Cards #### Specifications | Property | Value | | ---------------- | ------------------------------------- | | Background | --surface-raised | | Border | 1px solid --border-default (optional) | | Border Radius | --radius-lg (8px) | | Padding | --space-200 to --space-300 (16-24px) | | Shadow (resting) | --shadow-sm | | Shadow (hover) | --shadow-md | #### Card Types | Type | Description | Shadow | | --------------- | ---------------------- | ------------------------- | | **Flat** | Border only, no shadow | --shadow-none | | **Elevated** | Subtle lift | --shadow-sm | | **Interactive** | Hover lift | --shadow-sm → --shadow-md | --- ### Modals / Dialogs #### Size Presets | Size | Width | Max Height | Usage | | -------- | ----------- | ----------- | ----------------------- | | **SM** | 400px | 80vh | Confirmations, alerts | | **MD** | 560px | 80vh | Forms, standard content | | **LG** | 720px | 85vh | Complex forms | | **XL** | 900px | 90vh | Data-heavy content | | **Full** | 100% - 48px | 100% - 48px | Wizards, editors | #### Specifications | Property | Value | | ------------------ | -------------------------- | | Border Radius | --radius-xl (12px) | | Padding (Header) | --space-200 to --space-300 | | Padding (Body) | --space-300 | | Padding (Footer) | --space-200 to --space-300 | | Shadow | --shadow-lg | | Overlay Background | rgba(0, 0, 0, 0.5) | #### Structure ``` ┌─────────────────────────────────────┐ │ Header [×] │ ├─────────────────────────────────────┤ │ │ │ Body content │ │ │ ├─────────────────────────────────────┤ │ [Secondary] [Primary] │ └─────────────────────────────────────┘ ``` --- ### Select / Dropdown #### Specifications | Property | Value | | ---------------------- | -------------------- | | Trigger Height | 40px (matches input) | | Trigger Padding | 12px horizontal | | Trigger Border Radius | --radius-sm (4px) | | Dropdown Border Radius | --radius-md (6px) | | Dropdown Shadow | --shadow-md | | Item Height | 36px | | Item Padding | 12px horizontal | | Max Dropdown Height | 320px (scrollable) | --- ### Tables #### Specifications | Property | Value | | ----------------- | -------------------------------------------------- | | Header Height | 44px | | Row Height | 52px (default), 40px (compact), 64px (comfortable) | | Cell Padding | 16px horizontal, centered vertical | | Border | 1px solid --border-default | | Header Background | --surface-sunken | | Row Background | --surface-default | | Zebra Stripe | Alternating --surface-default / --surface-sunken | | Hover Row | --color-grey-100 | | Selected Row | --color-primary-light | #### Column Widths | Content Type | Min Width | Recommended | | ------------ | --------- | ----------- | | Checkbox | 48px | 48px | | Avatar | 56px | 56px | | Short text | 100px | 150px | | Medium text | 150px | 200px | | Long text | 200px | 300px | | Actions | 80px | 120px | --- ### Tags / Badges #### Sizes | Size | Height | Padding (H) | Font Size | Border Radius | | ------ | ------ | ----------- | --------- | ------------- | | **SM** | 20px | 6px | 11px | --radius-full | | **MD** | 24px | 8px | 12px | --radius-full | | **LG** | 28px | 10px | 13px | --radius-full | #### Variants | Variant | Background | Text | | ----------- | ---------------------- | ------------------------ | | **Default** | --color-grey-200 | --text-primary | | **Primary** | --color-primary-light | --color-primary-default | | **Success** | --color-success-light | --color-success-default | | **Warning** | --color-warning-light | --color-warning-dark | | **Error** | --color-negative-light | --color-negative-default | | **Info** | --color-info-light | --color-info-default | --- ### Avatars #### Sizes | Size | Dimensions | Font Size | Usage | | ------- | ---------- | --------- | ----------------- | | **XS** | 24px | 10px | Inline mentions | | **SM** | 32px | 12px | Lists, compact UI | | **MD** | 40px | 14px | Default, cards | | **LG** | 56px | 20px | Profile headers | | **XL** | 80px | 28px | Profile pages | | **2XL** | 120px | 40px | Account settings | #### Specifications | Property | Value | | --------------------- | --------------------------- | | Border Radius | --radius-full (circle) | | Background (fallback) | --color-grey-300 | | Text Color (initials) | --text-primary | | Border (optional) | 2px solid --surface-default | --- ### Toast / Snackbar #### Specifications | Property | Value | | ------------- | -------------------------------------- | | Min Width | 300px | | Max Width | 500px | | Padding | 12px 16px | | Border Radius | --radius-md (6px) | | Shadow | --shadow-lg | | Position | Bottom-left, 24px from edges | | Duration | 4000ms (default), 8000ms (with action) | #### Variants | Variant | Icon | Left Border | | ----------- | ------- | ------------------------ | | **Default** | Info | None | | **Success** | Check | --color-success-default | | **Warning** | Warning | --color-warning-default | | **Error** | Error | --color-negative-default | --- ### Tooltips #### Specifications | Property | Value | | ------------- | ----------------- | | Max Width | 240px | | Padding | 8px 12px | | Border Radius | --radius-sm (4px) | | Background | --color-grey-900 | | Text Color | --text-inverse | | Font Size | 12px | | Shadow | --shadow-md | | Arrow Size | 6px | --- ## Icons ### Style Guidelines - **Style**: Line/outline icons (1.5px stroke weight) - **Corners**: Rounded corners (2px radius on strokes) - **Grid**: Designed on 24px grid with 2px padding - **Consistency**: Uniform stroke weight across all icons ### Sizes | Token | Size | Usage | | ---------- | ---- | ---------------------- | | --icon-xs | 12px | Inline with small text | | --icon-sm | 16px | Buttons, form fields | | --icon-md | 20px | Navigation, default | | --icon-lg | 24px | Headers, emphasis | | --icon-xl | 32px | Empty states | | --icon-2xl | 48px | Illustrations | ### Icon Colors | Context | Color Token | | -------------- | ------------------------ | | Default | --text-secondary | | Interactive | --text-primary | | Primary action | --color-primary-default | | Success | --color-success-default | | Warning | --color-warning-default | | Error | --color-negative-default | | Disabled | --text-disabled | --- ## Grid & Breakpoints ### Breakpoints | Token | Width | Columns | Margin | Gutter | | ---------------- | ----------- | ------- | ------ | ------ | | --breakpoint-xs | 0-479px | 4 | 16px | 16px | | --breakpoint-sm | 480-767px | 8 | 16px | 16px | | --breakpoint-md | 768-1023px | 12 | 24px | 24px | | --breakpoint-lg | 1024-1279px | 12 | 32px | 24px | | --breakpoint-xl | 1280-1439px | 12 | 40px | 24px | | --breakpoint-2xl | 1440px+ | 12 | auto | 24px | ### Container Widths | Token | Max Width | Usage | | ---------------- | --------- | ---------------- | | --container-sm | 640px | Narrow content | | --container-md | 768px | Forms, articles | | --container-lg | 1024px | Standard content | | --container-xl | 1280px | Wide content | | --container-full | 100% | Full width | ### Layout Patterns #### Sidebar Layout ``` ┌────────────┬────────────────────────────┐ │ │ │ │ Sidebar │ Main Content │ │ (240px) │ (flex: 1) │ │ │ │ └────────────┴────────────────────────────┘ ``` | Element | Width | | ------------------- | --------------- | | Sidebar (collapsed) | 64px | | Sidebar (expanded) | 240px | | Secondary panel | 320px - 400px | | Main content | Remaining space | --- ## CSS Variables Reference ### Complete Token Export ```css :root { /* Colors - Brand */ --color-brand-primary: #ea580c; --color-brand-dark: #404346; --color-brand-white: #ffffff; /* Colors - Primary */ --color-primary-default: #ea580c; --color-primary-hover: #c2410c; --color-primary-active: #9a3412; --color-primary-light: #fff7ed; /* Colors - Negative */ --color-negative-default: #dc3545; --color-negative-hover: #c82333; --color-negative-light: #fdeaea; /* Colors - Warning */ --color-warning-default: #ffc107; --color-warning-dark: #e0a800; --color-warning-light: #fff8e1; /* Colors - Success */ --color-success-default: #28a745; --color-success-light: #e8f5e9; /* Colors - Info */ --color-info-default: #17a2b8; --color-info-light: #e3f2fd; /* Colors - Grey Scale */ --color-grey-50: #fafafa; --color-grey-100: #f5f5f5; --color-grey-200: #eeeeee; --color-grey-300: #e0e0e0; --color-grey-400: #bdbdbd; --color-grey-500: #9e9e9e; --color-grey-600: #757575; --color-grey-700: #616161; --color-grey-800: #424242; --color-grey-900: #212121; /* Surface */ --surface-default: #ffffff; --surface-raised: #ffffff; --surface-sunken: #f5f5f5; --surface-overlay: #ffffff; /* Text */ --text-primary: #212121; --text-secondary: #616161; --text-tertiary: #9e9e9e; --text-disabled: #bdbdbd; --text-inverse: #ffffff; --text-link: #ea580c; --text-error: #dc3545; /* Border */ --border-default: #e0e0e0; --border-strong: #bdbdbd; --border-focus: #ea580c; --border-error: #dc3545; /* Pipeline Stages */ --stage-new: #ea580c; --stage-contacted: #f97316; --stage-qualified: #3b82f6; --stage-proposal: #8b5cf6; --stage-negotiation: #f59e0b; --stage-won: #22c55e; --stage-lost: #ef4444; /* Pipeline Stage Backgrounds */ --stage-new-bg: #fff7ed; --stage-contacted-bg: #ffedd5; --stage-qualified-bg: #eff6ff; --stage-proposal-bg: #f5f3ff; --stage-negotiation-bg: #fffbeb; --stage-won-bg: #f0fdf4; --stage-lost-bg: #fef2f2; /* Activity Types */ --activity-call: #22c55e; --activity-email: #3b82f6; --activity-meeting: #8b5cf6; --activity-task: #f59e0b; --activity-note: #6b7280; --activity-deadline: #ef4444; /* Lead Temperature */ --lead-hot: #ef4444; --lead-warm: #f59e0b; --lead-cold: #6b7280; /* Lead Temperature Backgrounds */ --lead-hot-bg: #fef2f2; --lead-warm-bg: #fffbeb; --lead-cold-bg: #f3f4f6; /* Priority */ --priority-urgent: #dc2626; --priority-high: #f97316; --priority-medium: #fbbf24; --priority-low: #22c55e; --priority-none: #9ca3af; /* Deal Probability */ --probability-high: #22c55e; --probability-mid: #f59e0b; --probability-low: #ef4444; /* Task Status */ --task-overdue: #ef4444; --task-due-today: #f59e0b; --task-upcoming: #3b82f6; --task-completed: #22c55e; --task-cancelled: #9ca3af; /* Task Status Backgrounds */ --task-overdue-bg: #fef2f2; --task-due-today-bg: #fffbeb; --task-upcoming-bg: #eff6ff; --task-completed-bg: #f0fdf4; --task-cancelled-bg: #f3f4f6; /* Charts - Sequential */ --chart-1: #ea580c; --chart-2: #f97316; --chart-3: #fb923c; --chart-4: #fdba74; --chart-5: #fed7aa; /* Charts - Categorical */ --cat-1: #ea580c; --cat-2: #3b82f6; --cat-3: #22c55e; --cat-4: #8b5cf6; --cat-5: #ec4899; --cat-6: #14b8a6; /* Progress */ --progress-default: #ea580c; --progress-success: #22c55e; --progress-warning: #f59e0b; --progress-danger: #ef4444; --progress-bg: #e5e7eb; /* Typography */ --font-family-sans: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; --font-family-mono: "Geist Mono", "SF Mono", "Fira Code", Consolas, monospace; --font-weight-regular: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; /* Spacing */ --space-0: 0px; --space-25: 2px; --space-50: 4px; --space-100: 8px; --space-150: 12px; --space-200: 16px; --space-250: 20px; --space-300: 24px; --space-400: 32px; --space-500: 40px; --space-600: 48px; --space-700: 56px; --space-800: 64px; --space-900: 72px; --space-1000: 80px; /* Border Radius */ --radius-none: 0px; --radius-xs: 2px; --radius-sm: 4px; --radius-md: 6px; --radius-lg: 8px; --radius-xl: 12px; --radius-2xl: 16px; --radius-full: 9999px; /* Shadows */ --shadow-none: none; --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.04); --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04); --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.05); --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.08), 0 4px 6px rgba(0, 0, 0, 0.05); --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.1), 0 10px 10px rgba(0, 0, 0, 0.04); /* Focus Ring */ --focus-ring: 0 0 0 2px var(--surface-default), 0 0 0 4px var(--color-primary-default); /* Icon Sizes */ --icon-xs: 12px; --icon-sm: 16px; --icon-md: 20px; --icon-lg: 24px; --icon-xl: 32px; --icon-2xl: 48px; /* Z-Index Scale */ --z-base: 0; --z-raised: 10; --z-dropdown: 100; --z-sticky: 200; --z-modal: 300; --z-overlay: 400; --z-toast: 500; /* Transitions */ --transition-fast: 100ms ease; --transition-normal: 150ms ease; --transition-slow: 300ms ease; /* Breakpoints (for reference in JS) */ --breakpoint-xs: 0px; --breakpoint-sm: 480px; --breakpoint-md: 768px; --breakpoint-lg: 1024px; --breakpoint-xl: 1280px; --breakpoint-2xl: 1440px; /* Containers */ --container-sm: 640px; --container-md: 768px; --container-lg: 1024px; --container-xl: 1280px; } /* Dark Mode Override */ [data-theme="dark"] { --surface-default: #1e1e1e; --surface-raised: #252525; --surface-sunken: #141414; --surface-overlay: #2d2d2d; --text-primary: #ffffff; --text-secondary: #b0b0b0; --text-tertiary: #757575; --text-disabled: #525252; --text-inverse: #212121; --text-link: #fb923c; --text-error: #f87171; --border-default: #3d3d3d; --border-strong: #525252; --border-focus: #fb923c; --border-error: #f87171; --color-primary-default: #fb923c; --color-primary-hover: #fdba74; --color-primary-active: #f97316; --color-primary-light: #431407; } ``` --- ## Changelog | Version | Date | Changes | | ------- | -------- | ---------------------------------------------------------------------- | | 1.2 | Dec 2024 | Fixed font import, added spacing tokens, fixed dark mode hover states | | 1.1 | Dec 2024 | Orange primary color, CRM-specific tokens (pipeline, activities, etc.) | | 1.0 | Dec 2024 | Initial release | --- **Questions?** Contact the Design System team.