# Design Patterns Reference Complete design system guidelines for creating visually stunning HTML documentation. ## Color System ### Primary Palette **Gradient Background:** ```css background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); ``` - Use for: Body background, primary branding elements - Creates depth and visual interest **Accent Colors:** - Primary Purple-Blue: `#667eea` - Secondary Purple: `#764ba2` - Use for: Headings, borders, key UI elements ### Semantic Color Scales #### Success / Confirmed / Positive - **Base:** `#48bb78` (green) - **Dark:** `#2f855a` (darker green, for strokes) - **Light:** `#e6f4ea` (pale green, for backgrounds) - Use for: Completed tasks, success messages, positive metrics #### Warning / Uncertain / Attention - **Base:** `#f59e0b` (amber) - **Dark:** `#d97706` (darker amber, for strokes) - **Light:** `#fffbeb` (pale amber, for backgrounds) - Use for: In-progress items, warnings, items needing attention #### Info / Primary / Standard - **Base:** `#4299e1` (blue) - **Dark:** `#2b6cb0` (darker blue, for strokes) - **Light:** `#e6f2ff` (pale blue, for backgrounds) - Use for: Standard information, primary actions, neutral states #### Error / Critical / Negative - **Base:** `#f56565` (red) - **Dark:** `#c53030` (darker red, for strokes) - **Light:** `#fff5f5` (pale red, for backgrounds) - Use for: Errors, critical issues, failed states #### Process / Action / Secondary - **Base:** `#ed8936` (orange) - **Dark:** `#c05621` (darker orange, for strokes) - **Light:** `#fff5e6` (pale orange, for backgrounds) - Use for: Processing states, secondary actions #### Special / Highlight / Tertiary - **Base:** `#9f7aea` (purple) - **Dark:** `#6b46c1` (darker purple, for strokes) - **Light:** `#f3e6ff` (pale purple, for backgrounds) - Use for: Special features, highlights, premium items ### Neutral Palette **Text Colors:** - **Dark (Primary text):** `#2d3748` - Headings, important content - **Medium (Secondary text):** `#718096` - Body text, labels - **Light (Tertiary text):** `#a0aec0` - Captions, metadata **UI Elements:** - **Dark border:** `#cbd5e0` - **Light border:** `#e2e8f0` - **Dark background:** `#edf2f7` - **Light background:** `#f7fafc` - **White:** `#ffffff` ### Color Contrast Guidelines **WCAG AA Compliance:** - Minimum contrast ratio: 4.5:1 for normal text - Large text (18pt+ or 14pt+ bold): 3:1 minimum - Safe combinations: - Dark text (#2d3748) on light backgrounds (#f7fafc, #ffffff) - White text on colored backgrounds (all semantic base colors pass) - Medium text (#718096) on white only ## Typography ### Font Families **Primary (Sans-serif):** ```css font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; ``` - Use for: All body text, headings, UI elements - Fallback chain ensures availability across platforms **Code (Monospace):** ```css font-family: 'Courier New', monospace; ``` - Use for: Code blocks, technical data, fixed-width content ### Type Scale **Display / Hero:** - Size: `2.5em` (40px at 16px base) - Weight: Bold (700) - Use for: Page title (h1) - Special effect: Gradient text clip **Section Heading:** - Size: `1.8em` (28.8px) - Weight: Bold (700) - Color: `#2d3748` - Use for: Major sections (h2) - Decoration: Bottom border `3px solid #667eea` **Subsection:** - Size: `1.4em` (22.4px) - Weight: Bold (700) - Color: `#2d3748` - Use for: Subsections (h3) **Body:** - Size: `1em` (16px base) - Weight: Normal (400) - Line height: 1.6 - Color: `#2d3748` or `#4a5568` - Use for: Paragraphs, general content **Label / Caption:** - Size: `0.9-0.95em` (14.4-15.2px) - Weight: Normal (400) or Medium (500) - Color: `#718096` - Use for: Metric labels, chart labels, form labels **Small / Meta:** - Size: `0.85em` (13.6px) - Weight: Normal (400) - Color: `#a0aec0` - Use for: Footnotes, timestamps, metadata **SVG Text:** - Small labels: `11-12px` - Standard text: `13-14px` - Emphasis: `15-16px` - Large values: `18-24px` - Metric displays: `48px+` ### Text Effects **Gradient Text (for h1):** ```css h1 { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } ``` **Code Highlighting:** ```css .highlight { color: #fbbf24; /* Amber highlight */ font-weight: bold; } ``` ## Spacing & Layout ### Container Sizing **Max Width:** - Container: `1400px` - Comfortable reading: `800-1000px` - Full width sections: No max-width **Padding:** - Desktop container: `40px` - Mobile container: `20px` - Diagram containers: `30px` - Content boxes: `20px` - Metric cards: `25px` **Margins:** - Section bottom: `60px` - Element groups: `30px` - Individual elements: `20px` - Small gaps: `10px` ### Grid Systems **Metric Grid:** ```css display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; ``` - Automatically responsive - Minimum card width: 200px - Equal width distribution **Custom Grids:** - 2-column: `grid-template-columns: 1fr 1fr;` - 3-column: `grid-template-columns: repeat(3, 1fr);` - Sidebar layout: `grid-template-columns: 300px 1fr;` ### Flexbox Patterns **Horizontal Center:** ```css display: flex; justify-content: center; align-items: center; ``` **Space Between:** ```css display: flex; justify-content: space-between; align-items: center; ``` **Wrapped Row:** ```css display: flex; flex-wrap: wrap; gap: 20px; ``` ## Visual Effects ### Shadows **Card Shadow:** ```css box-shadow: 0 20px 60px rgba(0,0,0,0.3); ``` - Use for: Main container, elevated cards **Metric Card Shadow:** ```css box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3); ``` - Use for: Metric cards, smaller elevation **Subtle Shadow:** ```css box-shadow: 0 2px 8px rgba(0,0,0,0.1); ``` - Use for: Buttons, small cards, hover states ### Border Radius **Large (Containers):** - Container: `20px` - Diagram containers: `15px` **Medium (Cards & Boxes):** - Metric cards: `15px` - Content boxes: `10px` - SVG shapes: `10px` **Small (UI Elements):** - Buttons: `8px` - Small badges: `5px` **Pills / Rounded:** - Full rounded: `50%` (circles) or `9999px` (pills) - Timeline progress bars: `20px` ### Opacity **Overlays:** - Light overlay: `0.3` - Medium overlay: `0.5-0.6` - Strong overlay: `0.8-0.9` **Hover States:** - Slight fade: `0.9` - Clear fade: `0.7-0.8` **Disabled:** - `0.5-0.6` ## Responsive Breakpoints ### Mobile First Strategy **Breakpoints:** ```css /* Mobile: default styles, no media query needed */ /* Tablet */ @media (min-width: 768px) { ... } /* Desktop */ @media (min-width: 1024px) { ... } /* Large Desktop */ @media (min-width: 1440px) { ... } ``` **Common Pattern (Desktop First):** ```css @media (max-width: 768px) { .container { padding: 20px; } h1 { font-size: 1.8em; } .section-title { font-size: 1.4em; } .metric-grid { grid-template-columns: 1fr; } } ``` ### Responsive Typography **Desktop:** - h1: `2.5em` - h2: `1.8em` - h3: `1.4em` - body: `1em` **Mobile (max-width: 768px):** - h1: `1.8em` - h2: `1.4em` - h3: `1.2em` - body: `0.95em` **SVG Text Scaling:** - Use `viewBox` for automatic scaling - Font sizes in px remain constant - Increase viewBox dimensions rather than reducing font sizes ## Component Patterns ### Metric Cards **Standard Pattern:** ```html
[LARGE NUMBER]
[DESCRIPTION]
``` **With Custom Color:** ```html
✓ [NUMBER]
[DESCRIPTION]
``` ### Code Blocks **Standard:** ```html
Key term: Regular code text Indented content
``` **CSS:** ```css .code-block { background: #2d3748; color: #e2e8f0; padding: 20px; border-radius: 10px; font-family: 'Courier New', monospace; font-size: 0.9em; overflow-x: auto; line-height: 1.6; } ``` ### Example Boxes **Pattern:** ```html
[TITLE]

[CONTENT]

``` **CSS:** ```css .example-box { background: #fff; border: 2px solid #667eea; border-radius: 10px; padding: 20px; margin: 20px 0; } ``` ### Legends **Pattern:** ```html
[DESCRIPTION]
``` **CSS:** ```css .legend { display: flex; flex-wrap: wrap; gap: 20px; padding: 20px; background: #edf2f7; border-radius: 10px; } ``` ## SVG Styling ### Default SVG Styles **Container:** ```css svg { width: 100%; height: auto; } ``` **Text:** ```css svg text { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } ``` ### Common Stroke/Fill Combinations **Primary Box:** - Fill: `#4299e1` - Stroke: `#2b6cb0` - Stroke-width: `3` **Success Box:** - Fill: `#48bb78` - Stroke: `#2f855a` - Stroke-width: `3` **Warning Box:** - Fill: `#f59e0b` - Stroke: `#d97706` - Stroke-width: `3` **Neutral/Pending:** - Fill: `#cbd5e0` - Stroke: `#a0aec0` - Stroke-width: `2-3` ### ViewBox Guidelines **Common Aspect Ratios:** - Wide: `viewBox="0 0 1200 400"` (3:1) - Standard: `viewBox="0 0 1200 600"` (2:1) - Balanced: `viewBox="0 0 1200 800"` (3:2) - Square: `viewBox="0 0 600 600"` (1:1) - Portrait: `viewBox="0 0 800 1000"` (4:5) **Coordinate System:** - Origin: Top-left (0, 0) - X increases rightward - Y increases downward - Units are relative to viewBox ## Accessibility ### Color Blindness **Safe Patterns:** - Don't rely on color alone (use icons, labels, patterns) - Use both fill and stroke for differentiation - Ensure shapes differ (circle vs square vs diamond) - Add text labels to all visual elements **Color Combinations to Avoid:** - Red/green alone (common color blindness) - Blue/purple alone (hard to distinguish) - Low contrast combinations ### Screen Readers **HTML Structure:** - Use semantic tags: `
`, `
`, `
`, `