|
| 1 | +# Asper Beauty Shop — Design System |
| 2 | + |
| 3 | +> **"Morning Spa" / Medical Luxury** |
| 4 | +> Warm, clinical elegance meets feminine wellness. No cold whites, no stark blacks—only soothing ivory, rose clay, deep burgundy, and polished gold accents. |
| 5 | +
|
| 6 | +--- |
| 7 | + |
| 8 | +## Brand Identity |
| 9 | + |
| 10 | +**Asper Beauty Shop** is the online home of an Egyptian pharmaceutical beauty brand. Our design conveys: |
| 11 | + |
| 12 | +- **Clinical trust** — Medical authority, dermatologist-approved formulations |
| 13 | +- **Feminine warmth** — Soft pinks, terracotta, and nurturing tones |
| 14 | +- **Understated luxury** — Muted elegance, never flashy or loud |
| 15 | +- **Approachability** — Friendly, confident, and welcoming |
| 16 | + |
| 17 | +--- |
| 18 | + |
| 19 | +## Color Palette |
| 20 | + |
| 21 | +All colors below are defined in `tailwind.config.ts` and available via Tailwind utility classes (e.g., `bg-asper-stone`, `text-burgundy`, `border-polished-gold`). |
| 22 | + |
| 23 | +### Primary Canvas — Asper Stone (Warm Ivory / Light Gray) |
| 24 | + |
| 25 | +| Token | Hex | Usage | |
| 26 | +|-------|-----|-------| |
| 27 | +| `asper-stone` (DEFAULT) | `#F2EFEB` | Main background, cards, sections | |
| 28 | +| `asper-stone-light` | `#F8F6F3` | Lightest variant, subtle backgrounds | |
| 29 | +| `asper-stone-dark` | `#E8E4DE` | Darker variant for contrast within ivory areas | |
| 30 | + |
| 31 | +**Never use pure white (`#FFF`)** — always prefer `asper-stone` or `polished-white` for a warmer feel. |
| 32 | + |
| 33 | +### Feminine Softness — Rose Clay (Muted Pink / Terracotta) |
| 34 | + |
| 35 | +| Token | Hex | Usage | |
| 36 | +|-------|-----|-------| |
| 37 | +| `rose-clay` (DEFAULT) | `#C4A494` | Subtle highlights, warm accents, secondary backgrounds | |
| 38 | +| `rose-clay-light` | `#D4B8A8` | Very soft pink, hover states, delicate elements | |
| 39 | +| `rose-clay-dark` | `#A88B7A` | Deeper terracotta, text on light backgrounds | |
| 40 | + |
| 41 | +Use for: |
| 42 | +- Section backgrounds (alternate with asper-stone) |
| 43 | +- Soft hover states |
| 44 | +- Callout boxes or featured content |
| 45 | +- Feminine wellness messaging |
| 46 | + |
| 47 | +### Primary Actions & Authority — Burgundy |
| 48 | + |
| 49 | +| Token | Hex | Usage | |
| 50 | +|-------|-----|-------| |
| 51 | +| `burgundy` (DEFAULT) | `#6B2D3A` | Primary buttons, CTAs, navigation background | |
| 52 | +| `burgundy-light` | `#8B3D4A` | Hover states on burgundy elements | |
| 53 | +| `burgundy-dark` | `#4F222C` | Active states, deep emphasis | |
| 54 | + |
| 55 | +Use for: |
| 56 | +- Primary CTA buttons ("Add to Cart", "Shop Now") |
| 57 | +- Navigation bars and headers |
| 58 | +- Emphasis on clinical authority |
| 59 | +- Links and active states |
| 60 | + |
| 61 | +### Accent — Polished Gold |
| 62 | + |
| 63 | +| Token | Hex | Usage | |
| 64 | +|-------|-----|-------| |
| 65 | +| `polished-gold` | `#C9A962` | Borders, icons, "Midas Touch" accents | |
| 66 | + |
| 67 | +Use **sparingly** to add sophistication: |
| 68 | +- Icon highlights |
| 69 | +- Border accents on hover |
| 70 | +- Badges or labels ("Best Seller", "New") |
| 71 | +- Decorative elements (never as a primary action color) |
| 72 | + |
| 73 | +### Text — Asper Ink (Soft Black / Charcoal) |
| 74 | + |
| 75 | +| Token | Hex | Usage | |
| 76 | +|-------|-----|-------| |
| 77 | +| `asper-ink` | `#2C2825` | Primary body text, headings | |
| 78 | +| `asper-ink-muted` | `#5C5652` | Secondary text, captions, placeholders | |
| 79 | + |
| 80 | +**Never use pure black (`#000`)** — always prefer `asper-ink` for softer readability. |
| 81 | + |
| 82 | +### Utility |
| 83 | + |
| 84 | +| Token | Hex | Usage | |
| 85 | +|-------|-----|-------| |
| 86 | +| `polished-white` | `#FAF9F7` | Off-white for cards on colored backgrounds | |
| 87 | + |
| 88 | +--- |
| 89 | + |
| 90 | +## Typography |
| 91 | + |
| 92 | +### Font Families |
| 93 | + |
| 94 | +Defined in `tailwind.config.ts`: |
| 95 | + |
| 96 | +- **Headings:** `font-heading` → Playfair Display (serif, elegant) |
| 97 | +- **Body:** `font-body` → Montserrat (sans-serif, clean, readable) |
| 98 | +- **Arabic support:** `font-arabic` → Tajawal (for bilingual content) |
| 99 | + |
| 100 | +### Usage Guidelines |
| 101 | + |
| 102 | +| Element | Font | Weight | Size (Desktop) | Size (Mobile) | Color | |
| 103 | +|---------|------|--------|----------------|---------------|-------| |
| 104 | +| Hero Title | Playfair Display | 700 (bold) | 3.5rem | 2.25rem | `asper-ink` | |
| 105 | +| Section Headings | Playfair Display | 600 (semibold) | 2.5rem | 1.875rem | `asper-ink` | |
| 106 | +| Product Titles | Montserrat | 600 | 1.5rem | 1.25rem | `asper-ink` | |
| 107 | +| Body Text | Montserrat | 400 | 1rem | 0.875rem | `asper-ink` | |
| 108 | +| Small Print | Montserrat | 400 | 0.875rem | 0.75rem | `asper-ink-muted` | |
| 109 | +| Buttons | Montserrat | 600 (semibold) | 1rem | 0.875rem | White on burgundy | |
| 110 | + |
| 111 | +--- |
| 112 | + |
| 113 | +## Components |
| 114 | + |
| 115 | +### Buttons |
| 116 | + |
| 117 | +**Primary (Burgundy)** |
| 118 | +- Background: `bg-burgundy` |
| 119 | +- Text: `text-white` |
| 120 | +- Hover: `hover:bg-burgundy-light` |
| 121 | +- Border radius: `rounded-md` (8px) |
| 122 | +- Padding: `px-6 py-3` |
| 123 | +- Font: `font-body font-semibold` |
| 124 | + |
| 125 | +**Secondary (Outlined)** |
| 126 | +- Border: `border-2 border-burgundy` |
| 127 | +- Text: `text-burgundy` |
| 128 | +- Background: `bg-transparent` |
| 129 | +- Hover: `hover:bg-burgundy hover:text-white` |
| 130 | + |
| 131 | +**Accent (Gold — use sparingly)** |
| 132 | +- Border: `border-2 border-polished-gold` |
| 133 | +- Text: `text-asper-ink` |
| 134 | +- Background: `bg-transparent` |
| 135 | +- Hover: `hover:bg-polished-gold hover:text-white` |
| 136 | + |
| 137 | +### Cards |
| 138 | + |
| 139 | +- Background: `bg-asper-stone` or `bg-polished-white` |
| 140 | +- Border: `border border-rose-clay-light` (optional) |
| 141 | +- Border radius: `rounded-lg` (12px) |
| 142 | +- Shadow: `shadow-sm` or `shadow-maroon-glow` |
| 143 | +- Padding: `p-6` (desktop), `p-4` (mobile) |
| 144 | + |
| 145 | +### Navigation |
| 146 | + |
| 147 | +- Background: `bg-burgundy` |
| 148 | +- Text: `text-white` |
| 149 | +- Active link: `text-polished-gold` |
| 150 | +- Hover: `hover:text-polished-gold` |
| 151 | + |
| 152 | +### Product Cards |
| 153 | + |
| 154 | +- Background: `bg-polished-white` |
| 155 | +- Image: rounded corners `rounded-t-lg` |
| 156 | +- Title: `text-asper-ink font-body font-semibold` |
| 157 | +- Price: `text-burgundy font-semibold text-lg` |
| 158 | +- CTA button: Primary burgundy button |
| 159 | + |
| 160 | +### Inputs |
| 161 | + |
| 162 | +- Background: `bg-white` or `bg-polished-white` |
| 163 | +- Border: `border border-rose-clay` |
| 164 | +- Focus: `focus:ring-2 focus:ring-polished-gold focus:border-polished-gold` |
| 165 | +- Text: `text-asper-ink` |
| 166 | +- Placeholder: `placeholder:text-asper-ink-muted` |
| 167 | + |
| 168 | +--- |
| 169 | + |
| 170 | +## Spacing & Layout |
| 171 | + |
| 172 | +Use Tailwind's spacing scale with these conventions: |
| 173 | + |
| 174 | +- **Section padding:** `py-16` (desktop), `py-12` (mobile) |
| 175 | +- **Container max-width:** `max-w-7xl` |
| 176 | +- **Grid gaps:** `gap-6` (desktop), `gap-4` (mobile) |
| 177 | +- **Component spacing:** Use consistent `space-y-4` or `space-y-6` for vertical rhythm |
| 178 | + |
| 179 | +--- |
| 180 | + |
| 181 | +## Shadows |
| 182 | + |
| 183 | +Custom shadows defined in `tailwind.config.ts`: |
| 184 | + |
| 185 | +- **Subtle elevation:** `shadow-sm` |
| 186 | +- **Maroon glow (cards, buttons on hover):** `shadow-maroon-glow` |
| 187 | +- **Deep emphasis (modals, dropdowns):** `shadow-maroon-deep` |
| 188 | + |
| 189 | +--- |
| 190 | + |
| 191 | +## Animations |
| 192 | + |
| 193 | +All animations use the custom `luxury` easing: `cubic-bezier(0.19, 1, 0.22, 1)` |
| 194 | + |
| 195 | +Available utility classes: |
| 196 | +- `animate-fade-in` — Fade in with slight upward movement (0.6s) |
| 197 | +- `animate-fade-up` — Fade in with pronounced upward movement |
| 198 | +- `animate-shake` — Shake animation for errors or emphasis |
| 199 | +- `animate-skeleton-breathe` — Breathing animation for loading skeletons |
| 200 | + |
| 201 | +--- |
| 202 | + |
| 203 | +## Accessibility |
| 204 | + |
| 205 | +- **Contrast:** All text colors meet WCAG AA standards against their backgrounds |
| 206 | +- **Focus states:** All interactive elements have visible focus rings (`focus:ring-2 focus:ring-polished-gold`) |
| 207 | +- **Touch targets:** Minimum 44×44px for mobile |
| 208 | +- **Semantic HTML:** Use proper heading hierarchy (`h1` → `h6`), landmarks (`<nav>`, `<main>`, `<footer>`) |
| 209 | + |
| 210 | +--- |
| 211 | + |
| 212 | +## Implementation Checklist |
| 213 | + |
| 214 | +When building new components or pages: |
| 215 | + |
| 216 | +- [ ] Use only the approved color palette (no pure white/black) |
| 217 | +- [ ] Apply `font-heading` to titles and `font-body` to body text |
| 218 | +- [ ] Use `rounded-md` or `rounded-lg` for border radius |
| 219 | +- [ ] Add shadows with `shadow-maroon-glow` for cards |
| 220 | +- [ ] Ensure all interactive elements have hover and focus states |
| 221 | +- [ ] Test on mobile (responsive spacing and typography) |
| 222 | +- [ ] Verify contrast ratios for accessibility |
| 223 | + |
| 224 | +--- |
| 225 | + |
| 226 | +## Quick Reference |
| 227 | + |
| 228 | +```html |
| 229 | +<!-- Example: Primary CTA Button --> |
| 230 | +<button class="bg-burgundy text-white px-6 py-3 rounded-md font-body font-semibold hover:bg-burgundy-light transition-colors"> |
| 231 | + Add to Cart |
| 232 | +</button> |
| 233 | + |
| 234 | +<!-- Example: Product Card --> |
| 235 | +<div class="bg-polished-white rounded-lg shadow-maroon-glow overflow-hidden"> |
| 236 | + <img src="..." alt="..." class="w-full h-48 object-cover rounded-t-lg"> |
| 237 | + <div class="p-4 space-y-2"> |
| 238 | + <h3 class="text-asper-ink font-body font-semibold text-lg">Product Name</h3> |
| 239 | + <p class="text-asper-ink-muted text-sm">Short description...</p> |
| 240 | + <p class="text-burgundy font-semibold text-lg">€25.99</p> |
| 241 | + </div> |
| 242 | +</div> |
| 243 | + |
| 244 | +<!-- Example: Section with Warm Background --> |
| 245 | +<section class="bg-rose-clay-light py-16"> |
| 246 | + <div class="container max-w-7xl mx-auto px-4"> |
| 247 | + <h2 class="font-heading text-4xl text-asper-ink mb-8">Discover Your Ritual</h2> |
| 248 | + <!-- Content --> |
| 249 | + </div> |
| 250 | +</section> |
| 251 | +``` |
| 252 | + |
| 253 | +--- |
| 254 | + |
| 255 | +**Last updated:** February 2026 |
| 256 | +**Contact:** Design Team — [Lovable Project](https://lovable.dev/projects/657fb572-13a5-4a3e-bac9-184d39fdf7e6) |
0 commit comments