Analysis complete

Abel Fragrance

abelfragrance.com

Abel Fragrance builds a Control-dense composition and Media-heavy content structure visual language around a dark foundation and Founders Grotesk typography. Its commerce experience puts editorial rhythm and content narrative at the center of the composition.

/ 01 . Color

Color palette

Visual system extracted from computed styles, CSS variables and repeated foreground/background usage across the analyzed page.

Background

#030303

Page canvas · Observed

TextPrimary

#ffffff

Primary text · Observed

Border

#121110

Borders and separators · Observed

Neutral family 1

#000000

Observed palette family

Neutral family 2

#807e81

Observed palette family

Neutral family 3

rgba(0, 0, 0, 0.2)

Observed palette family

/ 02 . Typography

Type system

body

Aa Design language

Family
Founders Grotesk
Size
16px
Weight
500
Line
18.4px

button

Aa Design language

Family
Founders Grotesk Mono
Size
13px
Weight
400
Line
13px

caption

Aa Design language

Family
Founders Grotesk Mono
Size
13px
Weight
400
Line
14.3px

headingSmall

Aa Design language

Family
Founders Grotesk Mono
Size
16px
Weight
400
Line
17.6px

label

Aa Design language

Family
Founders Grotesk
Size
13px
Weight
300
Line
17.55px

/ 03 . System

Spacing and shape

Spacing rhythm

controlGap1

12px

controlGap2

64px

contentGap1

73px

contentGap2

121px

sectionGap1

80px

sectionGap2

97px

pageGutter

40px

space-xs

3px

Corner radius

No repeated tokens detected.

Border language

defaultBorder

1px solid rgb(246, 234, 218)

/ 04 . Components

Interface patterns

Inline Text Link

observed

Text navigation embedded in compact content flow.

"Founders Grotesk Mono" | 13px | 400 | 13px | -0.26px"Founders Grotesk Mono" | 13px | 400 | 14.3px | -0.26px12px

Variant A Linked Text

observed

Supporting linked text whose more specific role remains uncertain.

"Founders Grotesk Mono" | 13px | 400 | 13px | -0.26px"Founders Grotesk Mono" | 12px | 400 | 12px | -0.24px10px 0px

Variant B Linked Text

inferred

Supporting linked text whose more specific role remains uncertain.

"Founders Grotesk Mono" | 13px | 400 | 13px | -0.26px

Variant A Button

inferred

Direct interface action.

"Founders Grotesk Mono" | 13px | 400 | 13px | -0.26px13px

Variant B Button

inferred

Direct interface action.

"Founders Grotesk Mono" | 13px | 400 | 13px | -0.26px

Select

inferred

Reusable select pattern.

"Founders Grotesk Mono" | 13px | 400 | 14.95px | normal0px 31px 0px 0px
View the complete DESIGN.md content
# DESIGN.md

## 1. Overview

Interface guided by clear visual hierarchy, consistent surfaces, and a controlled semantic palette.
Use the tokens and contracts below as the normative source for accessible, responsive implementation.

> Normative implementation contract: preserve semantic token names, responsive rules, and interaction states when extending the interface.

## 2. Colors and accessibility

### Semantic color tokens

| Token | Hex value | Purpose |
|---|---|---|
| background | `#030303` | Primary canvas |
| surface | `#030303` | Raised surfaces |
| text-primary | `#ffffff` | Primary text |
| text-secondary | `#ffffff` | Secondary text |
| text-muted | `#ffffff` | Supporting text |
| text-on-brand | `#ffffff` | Text on brand |
| border | `#121110` | Borders and dividers |
| brand | `#2563eb` | Primary brand action |
| success | `#166534` | Positive state |
| danger | `#b91c1c` | Destructive state |
| warning | `#92400e` | Warning state |
| info | `#075985` | Informational state |
| focus | `#1d4ed8` | Focus ring |

### WCAG AA rules

- Normal text must reach a minimum contrast ratio of 4.5:1.
- Large text and interface elements must reach a minimum contrast ratio of 3:1.
- Visible focus must maintain a minimum contrast ratio of 3:1 and must not rely on color alone.
- Use only semantic token combinations that meet these ratios.

## 3. Typography

### Family

| Token | Family | Usage |
|---|---|---|
| font-bodyfont | `'Founders Grotesk', sans-serif` | Body and interface text |
| font-monofont | `'Founders Grotesk Mono', sans-serif` | Metadata and code |

### Type scale

| Token | Family | Size | Weight | Line height |
|---|---|---:|---:|---:|
| type-body | `'Founders Grotesk', sans-serif` | `16px` | `500` | `18.4px` |
| type-button | `'Founders Grotesk Mono', sans-serif` | `13px` | `400` | `13px` |
| type-caption | `'Founders Grotesk Mono', sans-serif` | `13px` | `400` | `14.3px` |
| type-headingsmall | `'Founders Grotesk Mono', sans-serif` | `16px` | `400` | `17.6px` |
| type-label | `'Founders Grotesk', sans-serif` | `13px` | `300` | `17.55px` |

## 4. Layout and spacing

### Breakpoints

- **Mobile:** `< 768px` — one-column grid, 16px/24px gutters, and stacked navigation.
- **Tablet:** `768px–1023px` — adaptive grid and 32px/48px gutters.
- **Desktop:** `>= 1024px` — 120px gutters and a container max-width defined by the layout.

### Responsive rules

- **Header:** stack navigation and actions on mobile; keep primary navigation inline from tablet upward.
- **Hero:** use one column on mobile, a balanced two-column composition on tablet, and the full container on desktop.
- **Cards:** stretch to the grid width on mobile, use two columns on tablet, and the defined card grid on desktop.
- **Navigation grid: use one column on mobile, adaptive columns on tablet, and the complete navigation grid on desktop.

### Spacing scale

| Token | Value | Usage |
|---|---:|---|
| space-xs | `3px` | Layout scale |
| space-sm | `5.625px` | Layout scale |
| space-md | `10px` | Layout scale |
| space-lg | `12px` | Layout scale |
| space-xl | `14.6406px` | Layout scale |

## 5. Shapes, borders and depth

### Radii

| Token | Value | Usage |
|---|---:|---|
| radius-sm | `4px` | Compact controls |
| radius-md | `12px` | Cards and surfaces |
| radius-full | `9999px` | Pills and circular controls |

### Borders and depth

- Border width: `var(--ds-border-width)`.
- Border style: `solid`.
- Border color: `var(--ds-color-border)`.
- Use `var(--ds-shadow-sm)` for low elevation and `var(--ds-shadow-inner)` for inner separation.

## 6. Component specification

### Inline Text Link

- **Component:** Text navigation embedded in compact content flow.
- **Typography:** `var(--ds-type-body)`
- **Colors:** `var(--ds-color-brand)` and `var(--ds-color-text-on-brand)` on brand surfaces
- **Geometry:** `var(--ds-radius-md)` and `var(--ds-space-sm)` for internal spacing
- **Border:** `var(--ds-border-width) solid var(--ds-color-border)`

### Linked Text — Variant A

- **Component:** Supporting linked text whose more specific role remains uncertain.
- **Typography:** `var(--ds-type-body)`
- **Colors:** `var(--ds-color-brand)` and `var(--ds-color-text-on-brand)` on brand surfaces
- **Geometry:** `var(--ds-radius-md)` and `var(--ds-space-sm)` for internal spacing
- **Border:** `var(--ds-border-width) solid var(--ds-color-border)`

### Button — Variant A

- **Component:** Direct interface action.
- **Typography:** `var(--ds-type-body)`
- **Colors:** `var(--ds-color-brand)` and `var(--ds-color-text-on-brand)` on brand surfaces
- **Geometry:** `var(--ds-radius-full)` and `var(--ds-space-sm)` for internal spacing
- **Border:** `var(--ds-border-width) solid var(--ds-color-border)`

### Select

- **Component:** Reusable select pattern.
- **Typography:** `var(--ds-type-body)`
- **Colors:** `var(--ds-color-text-primary)` and `var(--ds-color-text-on-brand)` on brand surfaces
- **Geometry:** `var(--ds-radius-md)` and `var(--ds-space-sm)` for internal spacing
- **Border:** `var(--ds-border-width) solid var(--ds-color-border)`

### Footer

- **Component:** Reusable footer pattern.
- **Typography:** `var(--ds-type-body)`
- **Colors:** `var(--ds-color-text-primary)` and `var(--ds-color-text-on-brand)` on brand surfaces
- **Geometry:** `var(--ds-radius-md)` and `var(--ds-space-sm)` for internal spacing
- **Border:** `var(--ds-border-width) solid var(--ds-color-border)`

## 7. Interaction contract

### Universal state rules

| State | Visual behavior |
|---|---|
| Initial state | Use `var(--ds-color-surface)`, `var(--ds-color-text-primary)`, `var(--ds-color-border)`, `var(--ds-type-body)` and `var(--ds-radius-md)`. |
| `:hover` | Increase emphasis with `var(--ds-color-brand-hover)` or `var(--ds-color-surface-hover)`; preserve geometry and layout. |
| `:active` | Apply `var(--ds-color-brand-active)` or `var(--ds-color-surface-active)`; preserve dimensions. |
| `:focus-visible` | Show a ring of `var(--ds-focus-ring-width)` using `var(--ds-color-focus)`, with offset `var(--ds-focus-ring-offset)`. |
| `:disabled` | Use `var(--ds-state-disabled-opacity)`, `cursor: not-allowed` and `pointer-events: none`; remove pointer events. |

## 8. Design tokens

```css
:root {
  --ds-color-background: #030303;
  --ds-color-surface: #030303;
  --ds-color-text-primary: #ffffff;
  --ds-color-text-secondary: #ffffff;
  --ds-color-text-muted: #ffffff;
  --ds-color-text-on-brand: #ffffff;
  --ds-color-border: #121110;
  --ds-color-brand: #2563eb;
  --ds-color-brand-hover: color-mix(in srgb, var(--ds-color-brand) 86%, var(--ds-color-text-primary));
  --ds-color-brand-active: color-mix(in srgb, var(--ds-color-brand) 72%, var(--ds-color-text-primary));
  --ds-color-surface-hover: color-mix(in srgb, var(--ds-color-surface) 92%, var(--ds-color-text-primary));
  --ds-color-surface-active: color-mix(in srgb, var(--ds-color-surface) 84%, var(--ds-color-text-primary));
  --ds-color-success: #166534;
  --ds-color-danger: #b91c1c;
  --ds-color-warning: #92400e;
  --ds-color-info: #075985;
  --ds-color-focus: #1d4ed8;
  --ds-font-body: 'Founders Grotesk', sans-serif;
  --ds-type-body: 'Founders Grotesk', sans-serif 16px 400 / 24px;
  --ds-type-heading-large: 'Founders Grotesk', sans-serif 48px 700 / 1.1;
  --ds-type-heading-medium: 'Founders Grotesk', sans-serif 32px 600 / 1.2;
  --ds-type-heading-small: 'Founders Grotesk', sans-serif 24px 600 / 1.25;
  --ds-type-caption: 'Founders Grotesk', sans-serif 12px 500 / 16px;
  --ds-space-xs: 4px;
  --ds-space-sm: 8px;
  --ds-space-md: 16px;
  --ds-space-lg: 24px;
  --ds-space-xl: 40px;
  --ds-border-width: 1px;
  --ds-radius-sm: 4px;
  --ds-radius-md: 12px;
  --ds-radius-full: 9999px;
  --ds-shadow-sm: 0 2px 8px rgb(0 0 0 / 0.12);
  --ds-shadow-inner: inset 0 1px 2px rgb(0 0 0 / 0.12);
  --ds-breakpoint-tablet: 768px;
  --ds-breakpoint-desktop: 1024px;
  --ds-gutter-mobile: 16px;
  --ds-gutter-mobile-large: 24px;
  --ds-gutter-tablet: 32px;
  --ds-gutter-tablet-large: 48px;
  --ds-gutter-desktop: 120px;
  --ds-focus-ring-width: 2px;
  --ds-focus-ring-offset: 2px;
  --ds-state-disabled-opacity: 0.5;
  --ds-transition-fast: 150ms ease-out;
}
```