Color System Refresh - Elegant, Minimalistic, Multi-Color Palette
Color System Refresh - Elegant, Minimalistic, Multi-Color Palette
Overview
Expand the current heavily violet-focused color system to include a complementary color palette that maintains elegance, simplicity, and full light/dark mode compatibility. Create a reusable, themed color system that adds visual variety while staying cohesive.
Current State Analysis
Color Usage (830+ instances across 16 files)
Primary Color: Violet (Purple)
- Accent color:
violet-500/600/700 - Backgrounds:
violet-50(light),violet-900/20(dark) - Used for: buttons, links, badges, tech tags, timeline dots, icons, hover states
Supporting Colors:
- Zinc: Base gray scale (100, 400, 600, 800, 900)
- Green: Status indicator only (“Open to opportunities”)
- White/Black: Background extremes
Problems Identified
- ❌ Violet overuse: 73+ instances in
index.htmlalone - ❌ Limited semantic colors: No distinction between categories
- ❌ No visual hierarchy through color: Everything important is violet
- ❌ Monotonous tech badges: All violet
- ❌ No color-coded categories: Experience, projects, blog all same
- ❌ Lacks personality: Professional sites use 2-3 accent colors
Design Principles
Color Psychology & Usage
- Primary (Violet): Brand identity, primary CTAs, featured content
- Secondary (Blue): Links, navigation, information
- Accent 1 (Emerald/Teal): Success, achievements, positive metrics
- Accent 2 (Amber/Orange): Highlights, warnings, special features
- Neutral (Zinc/Gray): Base, backgrounds, subtle elements
Key Requirements
- ✅ Elegant and sophisticated
- ✅ Minimalistic (not rainbow)
- ✅ Full light/dark mode support
- ✅ WCAG AAA contrast ratios
- ✅ Semantic meaning (not arbitrary)
- ✅ Reusable system (CSS custom properties)
Proposed Color System
Tailwind Extended Palette
// tailwind.config.js
theme: {
extend: {
colors: {
// Primary brand color (keep violet)
primary: {
50: '#faf5ff',
100: '#f3e8ff',
200: '#e9d5ff',
300: '#d8b4fe',
400: '#c084fc',
500: '#a855f7', // Main violet
600: '#9333ea',
700: '#7e22ce',
800: '#6b21a8',
900: '#581c87',
},
// Secondary color (blue for links/info)
secondary: {
50: '#eff6ff',
100: '#dbeafe',
200: '#bfdbfe',
300: '#93c5fd',
400: '#60a5fa',
500: '#3b82f6', // Main blue
600: '#2563eb',
700: '#1d4ed8',
800: '#1e40af',
900: '#1e3a8a',
},
// Accent 1 (emerald for success/achievements)
accent: {
50: '#ecfdf5',
100: '#d1fae5',
200: '#a7f3d0',
300: '#6ee7b7',
400: '#34d399',
500: '#10b981', // Main emerald
600: '#059669',
700: '#047857',
800: '#065f46',
900: '#064e3b',
},
// Accent 2 (amber for highlights)
highlight: {
50: '#fffbeb',
100: '#fef3c7',
200: '#fde68a',
300: '#fcd34d',
400: '#fbbf24',
500: '#f59e0b', // Main amber
600: '#d97706',
700: '#b45309',
800: '#92400e',
900: '#78350f',
},
}
}
}
Semantic Color Mapping
| Element | Current | Proposed | Rationale |
|---|---|---|---|
| Primary CTAs | Violet-500 | Primary-600 (Violet) | Keep brand identity |
| Links | Violet-600 | Secondary-600 (Blue) | Standard web convention |
| Tech badges (Frontend) | Violet-50/700 | Primary-50/700 (Violet) | Brand association |
| Tech badges (Backend) | Violet-50/700 | Secondary-50/700 (Blue) | Differentiate categories |
| Tech badges (Tools) | Violet-50/700 | Accent-50/700 (Emerald) | Visual variety |
| Achievements/Stats | Violet-600 | Accent-600 (Emerald) | Success connotation |
| Featured/Highlights | Violet-200 | Highlight-200 (Amber) | Draw attention |
| Timeline dots | Violet-500 | Primary-500 (Violet) | Maintain consistency |
| Hover states | Violet-100/200 | Primary-100/200 (Violet) | Brand reinforcement |
| Icons (Uses page) | Violet-100/600 | Mixed (Context-based) | Add personality |
Implementation Strategy
Phase 1: Foundation (Tailwind Config)
- Extend
tailwind.config.jswith new color system - Create semantic color aliases
- Define CSS custom properties for dynamic theming
- Test dark mode compatibility
Phase 2: Strategic Replacements
A. Links & Navigation
<!-- Before -->
<a class="text-violet-600 dark:text-violet-400 hover:text-violet-700">
<!-- After -->
<a class="text-secondary-600 dark:text-secondary-400 hover:text-secondary-700">
B. Tech Badges (Color-Coded)
<!-- Frontend (Violet) -->
<span class="bg-primary-50 dark:bg-primary-400/10 text-primary-700 dark:text-primary-400 ring-primary-700/10">
React
</span>
<!-- Backend (Blue) -->
<span class="bg-secondary-50 dark:bg-secondary-400/10 text-secondary-700 dark:text-secondary-400 ring-secondary-700/10">
Node.js
</span>
<!-- Tools/DevOps (Emerald) -->
<span class="bg-accent-50 dark:bg-accent-400/10 text-accent-700 dark:text-accent-400 ring-accent-700/10">
Docker
</span>
<!-- Cloud/Infra (Amber) -->
<span class="bg-highlight-50 dark:bg-highlight-400/10 text-highlight-700 dark:text-highlight-400 ring-highlight-700/10">
AWS
</span>
C. Key Achievements Stats
<!-- Before -->
<div class="text-5xl font-bold text-violet-600 dark:text-violet-400">15+</div>
<!-- After -->
<div class="text-5xl font-bold text-accent-600 dark:text-accent-400">15+</div>
D. Icons (Uses Page)
// Category-based icon colors
const iconColors = {
'Workstation': 'secondary', // Blue for hardware
'Development': 'primary', // Violet for dev tools
'Design': 'highlight', // Amber for design
'Database': 'accent', // Emerald for data
'Productivity': 'secondary' // Blue for productivity
};
Phase 3: Component-Specific Updates
Experience Page Timeline
- First dot: Primary (Violet) - current role
- Other dots: Zinc (Gray) - past roles
- Keep consistent
Blog Cards
- Featured badge: Highlight (Amber)
- Category badges: Secondary (Blue)
- Maintain violet for featured post background
Project Cards
- Tech badges: Mix of colors based on category
- Links: Secondary (Blue)
- Hover states: Primary (Violet)
Phase 4: CSS Custom Properties (Optional)
:root {
/* Primary (Violet) */
--color-primary-50: #faf5ff;
--color-primary-600: #9333ea;
--color-primary-900: #581c87;
/* Secondary (Blue) */
--color-secondary-50: #eff6ff;
--color-secondary-600: #2563eb;
--color-secondary-900: #1e3a8a;
/* Accent (Emerald) */
--color-accent-50: #ecfdf5;
--color-accent-600: #059669;
--color-accent-900: #064e3b;
/* Highlight (Amber) */
--color-highlight-50: #fffbeb;
--color-highlight-600: #d97706;
--color-highlight-900: #78350f;
}
Color Usage Guidelines
Do’s
✅ Use Primary (Violet) for brand elements and primary CTAs ✅ Use Secondary (Blue) for links and informational elements ✅ Use Accent (Emerald) for achievements and positive metrics ✅ Use Highlight (Amber) sparingly for special features ✅ Maintain 4.5:1 contrast minimum (WCAG AA) ✅ Test both light and dark modes
Don’ts
❌ Don’t use more than 2 accent colors per component ❌ Don’t make it look like a rainbow ❌ Don’t use colors arbitrarily ❌ Don’t compromise readability for aesthetics ❌ Don’t override brand violet on primary CTAs
Before & After Examples
Tech Badges Section
Before:
- All violet badges (monotonous)
After:
- React (Violet), TypeScript (Violet), Node.js (Blue), Jest (Blue), AWS (Amber), Docker (Emerald)
Key Achievements
Before:
- All violet numbers
After:
- 15+ Years (Emerald - achievement)
- $1M+ ARR (Emerald - success)
- 5x Performance (Amber - highlight)
- 10+ Companies (Blue - info)
Navigation/Links
Before:
- All violet hover states
After:
- Links: Blue (standard)
- Active page: Violet (brand)
- Hover: Slightly darker shade
Files to Modify
Priority 1 (Core System)
tailwind.config.js- Add extended color paletteindex.html- Update homepage colors_layouts/core.html- Navigation colors
Priority 2 (Content Pages)
_layouts/experience.html- Tech badges, stats_layouts/blog.html- Links, badges_layouts/post.html- Links, code highlighting_layouts/uses.html- Icon colorsblog/index.html- Featured badge, cards
Priority 3 (Individual Components)
_includes/partials/nav-bar.html- Navigation links- Individual experience/project files (if needed)
Testing Checklist
- Light mode: All colors readable and aesthetically pleasing
- Dark mode: All colors work with dark backgrounds
- Contrast ratios meet WCAG AA (4.5:1 for text, 3:1 for UI)
- Colors have semantic meaning (not arbitrary)
- Site still feels cohesive (not scattered)
- Brand identity maintained (violet primary)
- Hover/active states work correctly
- Print styles unaffected
- Accessibility tools pass (Lighthouse, axe)
Migration Strategy
Conservative Approach (Recommended)
- Add new colors to Tailwind config
- Update only 20-30% of violet instances
- Focus on semantic improvements:
- Links → Blue
- Achievements → Emerald
- Highlights → Amber
- Keep violet for brand/CTA
- Iterate based on visual results
Aggressive Approach
- Replace 60-70% of violet instances
- Color-code everything by category
- Risk: May look too colorful
Success Metrics
✅ Reduced violet usage by 40-50% ✅ Improved visual hierarchy through color ✅ Clearer semantic meaning for elements ✅ Maintained elegance and minimalism ✅ Full light/dark mode compatibility ✅ Positive user feedback on design ✅ No accessibility regressions
Inspiration & References
Sites with Good Multi-Color Systems
- GitHub (Purple + Blue + Green)
- Stripe (Purple + Blue + Emerald)
- Linear (Purple + Blue for organization)
- Vercel (Black + Blue accents)
Design Principles
- 60-30-10 Rule: 60% neutral, 30% primary, 10% accent
- Color Harmony: Analogous or triadic color schemes
- Semantic Colors: Meaningful, not decorative
- Accessibility First: Contrast over creativity