# WorkRoot IT Solutions — Design System **Version:** 1.0.0 **Last Updated:** 2026-03-21 **Stack:** Astro v4 + Tailwind CSS v3 + Plus Jakarta Sans + JetBrains Mono --- ## Table of Contents 1. [Design Principles](#1-design-principles) 2. [Color Palette](#2-color-palette) 3. [Typography Scale](#3-typography-scale) 4. [Spacing System](#4-spacing-system) 5. [Elevation & Shadows](#5-elevation--shadows) 6. [Border Radius](#6-border-radius) 7. [Animation & Motion](#7-animation--motion) 8. [Button Styles](#8-button-styles) 9. [Form Elements](#9-form-elements) 10. [Component Patterns](#10-component-patterns) 11. [Layout System](#11-layout-system) 12. [Icon System](#12-icon-system) 13. [Accessibility](#13-accessibility) 14. [Implementation Notes](#14-implementation-notes) --- ## 1. Design Principles ### Brand Identity WorkRoot IT Solutions is a **professional B2B tech agency** targeting enterprise and startup clients. The visual language must communicate: | Principle | Application | |-----------|-------------| | **Trust** | Consistent, predictable layouts; clear hierarchy | | **Capability** | Polished micro-interactions; precise typography | | **Innovation** | Gradient accents; modern glassmorphism-lite | | **Clarity** | Generous whitespace; high contrast ratios | ### Design Decision Framework 1. **Mobile-first** — All breakpoints start at `sm` and scale up 2. **Performance-first** — Prefer CSS-only animations over JS 3. **Accessibility-first** — WCAG AA minimum for all interactive elements 4. **Consistency** — Use design tokens, never magic numbers --- ## 2. Color Palette ### Primary — Cyan (`#0891b2`) The core action color. Used for CTAs, links, highlights, icon backgrounds, focus rings. | Token | Value | Usage | |-------|-------|-------| | `primary-50` | `#ecfeff` | Subtle tinted backgrounds, badge backgrounds | | `primary-100` | `#cffafe` | Hover backgrounds on light surfaces | | `primary-200` | `#a5f3fc` | — | | `primary-300` | `#67e8f9` | Light mode decorative elements | | `primary-400` | `#22d3ee` | Focus rings, gradient midpoints | | `primary-500` / DEFAULT | `#0891b2` | **Main brand color** — buttons, icons | | `primary-600` | `#0e7490` | Button hover states | | `primary-700` | `#155e75` | Dark text on light backgrounds | | `primary-800` | `#164e63` | — | | `primary-900` | `#083344` | Dark sections / hero gradient end | ### Secondary — Slate (`#1e293b`) Neutral palette for text, backgrounds, borders. The backbone of the design. | Token | Value | Usage | |-------|-------|-------| | `secondary-50` | `#f8fafc` | Page backgrounds, subtle section backgrounds | | `secondary-100` | `#f1f5f9` | Card backgrounds, input backgrounds | | `secondary-200` | `#e2e8f0` | Borders, dividers | | `secondary-300` | `#cbd5e1` | Disabled states, placeholder text | | `secondary-400` | `#94a3b8` | Muted text, icons | | `secondary-500` | `#64748b` | Secondary text | | `secondary-600` | `#475569` | Body text on light backgrounds | | `secondary-700` | `#334155` | Strong body text | | `secondary-800` / DEFAULT | `#1e293b` | **Main text color** | | `secondary-900` | `#0f172a` | Headings, hero/CTA dark sections | ### Accent — Amber (`#f59e0b`) Used sparingly for trust signals, testimonials, star ratings, and call-out badges. | Token | Value | Usage | |-------|-------|-------| | `accent-50` | `#fffbeb` | Badge backgrounds (testimonials, stats) | | `accent-400` | `#fbbf24` | Star ratings, gradient endpoints | | `accent-500` / DEFAULT | `#f59e0b` | **Accent color** — stars, highlights | | `accent-600` | `#d97706` | Accent button hover | | `accent-700` | `#b45309` | Accent text on light backgrounds | ### Semantic Colors (Tailwind defaults) | Purpose | Color | Token | |---------|-------|-------| | Error/Danger | Red 500 | `text-red-500`, `border-red-500` | | Success | Green 500 | `bg-green-500` (toast) | | Warning | Amber (use accent) | `text-accent-600` | | Info | Primary | `bg-primary-50 text-primary-700` | ### Color Combinations — Key Patterns ``` Dark Hero Sections: Background: bg-gradient-to-br from-secondary-900 via-secondary-800 to-primary-900 Text: text-white / text-secondary-200 / text-secondary-300 Badges: bg-primary-400/20 text-primary-300 Light Sections: Background: bg-white Alternate: bg-secondary-50 / bg-gradient-to-b from-secondary-50 to-white Text: text-secondary-900 (headings) / text-secondary-600 (body) Badges: bg-primary-50 text-primary-700 Cards: Background: bg-white rounded-2xl/3xl border-2 border-secondary-100 Hover: hover:border-primary/30 hover:shadow-2xl CTA Dark Sections: Background: bg-gradient-to-br from-secondary-900 via-primary-900 to-primary-800 ``` --- ## 3. Typography Scale ### Font Families | Role | Font | Weights | Usage | |------|------|---------|-------| | **Display / Body** | Plus Jakarta Sans | 200–800 | All UI text, headings | | **Monospace** | JetBrains Mono | 100–800 | Code blocks, pre elements | Load via Google Fonts: ``` https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap ``` ### Type Scale | Step | Size (Mobile) | Size (Desktop) | Weight | Use Case | |------|--------------|----------------|--------|----------| | **Display XL** | `text-5xl` (3rem) | `text-8xl` (6rem) | `font-bold` | Hero headlines | | **Display LG** | `text-4xl` (2.25rem) | `text-7xl` (4.5rem) | `font-bold` | Sub-hero | | **H1** | `text-4xl` | `text-6xl` | `font-bold` | Page titles | | **H2** | `text-3xl` / `text-4xl` | `text-5xl` | `font-bold` | Section titles | | **H3** | `text-2xl` | `text-2xl` | `font-bold` | Card titles | | **H4** | `text-xl` | `text-xl` | `font-bold` / `font-semibold` | Subheadings | | **Body LG** | `text-xl` | `text-2xl` | `font-normal` | Lead paragraphs | | **Body** | `text-base` | `text-lg` | `font-normal` | Standard body | | **Body SM** | `text-sm` | `text-base` | `font-normal` | Supporting text | | **Caption** | `text-xs` | `text-sm` | `font-medium` | Labels, badges | | **Code** | `text-sm` | `text-sm` | `font-normal` | Inline code | ### Responsive Typography Patterns ```html

``` ### Line Heights | Context | Class | Value | |---------|-------|-------| | Headings | `leading-[1.1]` or `leading-tight` | 1.1–1.25 | | Subheadings | `leading-snug` | 1.375 | | Body | `leading-relaxed` | 1.625 | | Long-form prose | `leading-loose` | 2 | --- ## 4. Spacing System Tailwind default 4px base unit. Key spacing values in use: | Scale | px | rem | Use Case | |-------|----|-----|----------| | 1 | 4px | 0.25rem | Micro gaps | | 2 | 8px | 0.5rem | Icon-to-text gaps | | 3 | 12px | 0.75rem | Tight form elements | | 4 | 16px | 1rem | Standard gaps, padding | | 5 | 20px | 1.25rem | — | | 6 | 24px | 1.5rem | Section sub-gaps | | 8 | 32px | 2rem | Card padding | | 10 | 40px | 2.5rem | Large card padding | | 12 | 48px | 3rem | CTA button padding | | 16 | 64px | 4rem | — | | 20 | 80px | 5rem | Section padding (mobile) | | 24 | 96px | 6rem | **Standard section padding** | ### Section Padding Convention ```html

``` ### Container ```html
``` --- ## 5. Elevation & Shadows | Level | Class | Use Case | |-------|-------|----------| | 0 — Flat | none | Form inputs (unfocused) | | 1 — Low | `shadow-sm` | Subtle card lift | | 2 — Medium | `shadow-lg` | Icon containers, info cards | | 3 — High | `shadow-xl` | Service cards, large icons | | 4 — Very High | `shadow-2xl` | Card hover states, modals | | Brand Shadow | `shadow-2xl shadow-primary/30` | Primary button hover | ### Shadow on Hover Pattern ```html
``` --- ## 6. Border Radius | Scale | Class | px | Use Case | |-------|-------|----|----------| | Small | `rounded-lg` | 8px | Form inputs, small buttons, tags | | Medium | `rounded-xl` | 12px | Buttons, small cards | | Large | `rounded-2xl` | 16px | Cards, panels, badges | | XL | `rounded-3xl` | 24px | Large cards, testimonial blocks | | Full | `rounded-full` | 9999px | Pills, avatar circles, dot indicators | --- ## 7. Animation & Motion ### Keyframes Defined in Pages ```css /* Entrance animations (page-level) */ @keyframes slide-up { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @keyframes pulse-slow { 0%, 100% { opacity: 0.4; } 50% { opacity: 0.6; } } @keyframes pulse-slower { 0%, 100% { opacity: 0.2; } 50% { opacity: 0.4; } } ``` ### Animation Classes | Class | Duration | Use Case | |-------|----------|----------| | `animate-slide-up` | 0.8s | Hero text entrance | | `animate-fade-in` | 0.8s | Scroll indicator | | `animate-pulse-slow` | 4s loop | Decorative blobs | | `animate-pulse-slower` | 6s loop | Secondary blobs | | `animate-bounce` | Tailwind | Scroll indicators | | `animate-spin` | Tailwind | Loading spinners | ### Transition Conventions ```html transition-all duration-300 transition-all duration-500 transition-colors duration-200 transition-transform duration-300 ``` ### Stagger Pattern (hero entrance) ```html Line 1 Line 2 ``` ### Reduced Motion All animations must respect `prefers-reduced-motion`: ```css @media (prefers-reduced-motion: reduce) { .animate-slide-up, .animate-fade-in { animation: none; opacity: 1; } } ``` --- ## 8. Button Styles ### Button System #### Primary (`.btn-primary`) ``` bg-primary text-white rounded-lg px-6 py-3 hover: bg-primary-600 focus: ring-2 ring-primary-400 ring-offset-2 ``` **Use for:** Main CTAs, one per section maximum. #### Secondary (`.btn-secondary`) ``` border-2 border-secondary bg-transparent text-secondary rounded-lg px-6 py-3 hover: bg-secondary text-white focus: ring-2 ring-secondary-400 ring-offset-2 ``` **Use for:** Paired with primary, less prominent actions. #### Accent (`.btn-accent`) ``` bg-accent text-white rounded-lg px-6 py-3 hover: bg-accent-600 focus: ring-2 ring-accent-400 ring-offset-2 ``` **Use for:** Highlights, promotional actions (use rarely). #### Hero CTA (inline, large) ```html ``` #### Button Sizes | Size | Padding | Text | Use Case | |------|---------|------|----------| | SM | `px-4 py-2` | `text-sm` | Inline, compact | | MD (default) | `px-6 py-3` | `text-base` | Standard actions | | LG | `px-8 py-4` | `text-lg` | Section CTAs | | XL | `px-10 py-5` | `text-lg font-bold` | Hero CTAs | | Full | `w-full py-4 px-6` | `text-base font-semibold` | Form submit | --- ## 9. Form Elements ### Base Input Style ```html ``` ### Error State ```html ``` ### Label ```html ``` ### Select ```html