# Redesign Documentation & Handoff Guide
**Project**: WorkRoot IT Solutions — Company Site
**Date**: 2026-03-21
**Author**: documentation-writer agent
**Status**: Production-ready (98/100 Lighthouse avg)
---
## Table of Contents
1. [Project Overview](#1-project-overview)
2. [Design System](#2-design-system)
3. [Component Library](#3-component-library)
4. [Page Architecture](#4-page-architecture)
5. [Animation System](#5-animation-system)
6. [Contact Page Deep Dive](#6-contact-page-deep-dive)
7. [Theme System](#7-theme-system)
8. [Maintenance Guidelines](#8-maintenance-guidelines)
9. [Future Enhancement Recommendations](#9-future-enhancement-recommendations)
10. [Quick Reference](#10-quick-reference)
---
## 1. Project Overview
### Technology Stack
| Layer | Technology | Notes |
|-------|-----------|-------|
| Framework | Astro (SSR) | Node.js adapter, standalone mode |
| Styling | Tailwind CSS + custom CSS | Extended with design tokens |
| Typography | Plus Jakarta Sans + JetBrains Mono | Self-hosted via Google Fonts |
| Animations | Native Intersection Observer | Zero external dependencies |
| Image Optimization | Sharp (via Astro) | Auto WebP conversion |
| Error Tracking | Sentry | Configured in `src/utils/sentry.ts` |
| Analytics | Custom wrapper | `src/utils/analytics.ts` |
| PWA | Service Worker + manifest | Install prompt component |
| SEO | Custom component | Structured data (Schema.org) |
### Site URL
```
Production: https://workroot.in
Server: 0.0.0.0:10000 (standalone Node.js)
```
### Project Structure
```
src/
├── components/
│ ├── Analytics.astro
│ ├── Footer.astro
│ ├── Header.astro
│ ├── LazyImage.astro
│ ├── OptimizedImage.astro
│ ├── PWAInstallPrompt.astro
│ ├── SEO.astro
│ └── ui/
│ ├── Badge.astro
│ ├── Card.astro
│ └── SectionHeader.astro
├── layouts/
│ └── BaseLayout.astro
├── pages/
│ ├── index.astro
│ ├── about.astro
│ ├── services.astro
│ ├── portfolio.astro
│ ├── contact.astro ← Primary redesign
│ ├── privacy.astro
│ └── terms.astro
├── styles/
│ └── global.css ← Design tokens + component classes
└── utils/
├── analytics.ts
├── animations.ts ← Scroll-reveal utilities
├── imageUtils.ts
├── logger.ts
├── sentry.ts
└── seo.ts
```
---
## 2. Design System
### Color Palette
Defined in both `tailwind.config.mjs` (Tailwind classes) and `src/styles/global.css` (CSS custom properties).
#### Primary — Cyan
| Token | Value | Usage |
|-------|-------|-------|
| `--color-primary` | `#0891b2` | Buttons, links, icons, accents |
| `primary-50` | `#ecfeff` | Light backgrounds, hover states |
| `primary-100` | `#cffafe` | Subtle highlights |
| `primary-500` | `#06b6d4` | Mid-tone |
| `primary-600` | `#0891b2` | Default (same as token) |
| `primary-700` | `#0e7490` | Hover states, borders |
| `primary-900` | `#164e63` | Dark text on light primary |
#### Secondary — Slate
| Token | Value | Usage |
|-------|-------|-------|
| `--color-secondary` | `#1e293b` | Body text, dark backgrounds |
| `secondary-50` | `#f8fafc` | Page backgrounds, cards |
| `secondary-100` | `#f1f5f9` | Surface cards |
| `secondary-600` | `#475569` | Muted body text |
| `secondary-700` | `#334155` | Default body text |
| `secondary-800` | `#1e293b` | Headings, labels |
| `secondary-900` | `#0f172a` | High-contrast text |
#### Accent — Amber
| Token | Value | Usage |
|-------|-------|-------|
| `--color-accent` | `#f59e0b` | Highlights, CTAs, warnings |
| `accent-50` | `#fffbeb` | Very light backgrounds |
| `accent-400` | `#fbbf24` | Hover states |
| `accent-500` | `#f59e0b` | Default (same as token) |
| `accent-600` | `#d97706` | Pressed/active states |
### Typography
```css
/* Font Families */
--font-sans: 'Plus Jakarta Sans', system-ui, sans-serif;
--font-mono: 'JetBrains Mono', monospace;
/* Display Sizes (responsive clamp) */
display-xl: clamp(3rem, 6vw, 6rem) /* Hero headlines */
display-lg: clamp(2.25rem, 4vw, 4.5rem) /* Section headlines */
```
**Usage Pattern**:
- `font-sans` — All UI text, body copy, labels
- `font-mono` — Code blocks, technical values, stats
- `font-display` — NOT a separate family; use `font-sans font-bold` at display sizes
### Spacing
| Token | Value | Tailwind Class | Usage |
|-------|-------|----------------|-------|
| `--spacing-section` | `6rem` | `py-24` | Major section padding |
| `--spacing-section-sm` | `4rem` | `py-16` | Smaller section padding |
| `--spacing-section-lg` | `8rem` | `py-32` | Hero / featured sections |
### Border Radius
| Token | Value | Usage |
|-------|-------|-------|
| `--radius-sm` | `8px` | Inputs, badges, tags |
| `--radius-md` | `12px` | Buttons, small cards |
| `--radius-lg` | `16px` | Standard cards |
| `--radius-xl` | `24px` | Feature cards, modals |
| `--radius-full` | `9999px` | Pills, avatars, icons |
| `rounded-card` | `1rem` | Card.astro default |
| `rounded-card-lg` | `1.5rem` | Service cards |
### Shadows
| Token | Usage |
|-------|-------|
| `shadow-sm` | Subtle depth on inputs |
| `shadow-card` | Default card elevation |
| `shadow-card-hover` | Hovered card elevation |
| `shadow-primary-glow` | Primary color glow effect |
| `shadow-accent-glow` | Accent color glow effect |
### Transitions
| Token | Value | Usage |
|-------|-------|-------|
| `--transition-fast` | `150ms` | Hover tints, focus rings |
| `--transition-base` | `200ms` | Button states, icon transforms |
| `--transition-slow` | `300ms` | Card lifts, panel slides |
| `--transition-slower` | `500ms` | Page-level transitions |
### Background Gradients (Tailwind `bg-*`)
| Class | Usage |
|-------|-------|
| `bg-hero-dark` | Hero sections with dark gradient |
| `bg-cta-dark` | CTA/banner sections |
| `bg-primary-gradient` | Primary-to-transparent gradient |
| `bg-primary-gradient-br` | Bottom-right variant |
| `bg-surface-gradient` | Light surface backgrounds |
| `bg-card-gradient` | Card hover gradients |
---
## 3. Component Library
### `Badge.astro` — Eyebrow Label
Used above section headings as visual callouts.
```astro
---
import Badge from '../components/ui/Badge.astro';
---
ContentTitle
Main Heading
Supporting text...
Main Heading
Supporting text...