Analysis complete

Studio Bruch

studiobruch.com

Studio Bruch builds a Large display typography and Control-dense composition visual language around a dark foundation and GT Standard typography. Its studio 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

#212121

Page canvas · Observed

TextPrimary

#ececec

Primary text · Observed

Neutral family 1

#000000

Observed palette family

Neutral family 2

#919191

Observed palette family

Neutral family 3

#cdcdcd

Observed palette family

Coral family 1

#f46626

Observed palette family

Coral family 2

#ff6900

Observed palette family

Coral family 3

#fcb900

Observed palette family

Blue family 1

#007cba

Observed palette family

Blue family 2

#006ba1

Observed palette family

Blue family 3

#005a87

Observed palette family

Red family 1

#f78da7

Observed palette family

/ 02 . Typography

Type system

label

Aa Design language

Family
GT Standard
Size
29.1067px
Weight
600
Line
36.3834px

bodyStrong

Aa Design language

Family
GT Standard
Size
21.404px
Weight
600
Line
23.5444px

button

Aa Design language

Family
GT Standard
Size
18px
Weight
600
Line
18px

headingLarge

Aa Design language

Family
ABC Daily Slab
Size
92.5518px
Weight
400
Line
92.5518px

body

Aa Design language

Family
ABC Daily Slab
Size
17.7027px
Weight
400
Line
17.7027px

/ 03 . System

Spacing and shape

Spacing rhythm

controlGap1

18px

controlGap2

37.0213px

microSpacing

2px

contentGap1

24px

contentGap2

74.0427px

space-xs

6px

space-sm

8px

space-md

12px

Corner radius

No repeated tokens detected.

Border language

No repeated tokens detected.

/ 04 . Components

Interface patterns

Variant A Navigation Link

inferred

Primary navigation between major destinations.

"GT Standard", sans-serif | 18px | 600 | 18px | normal4px

Variant B Navigation Link

observed

Primary navigation between major destinations.

"GT Standard", sans-serif | 18px | 600 | 18px | -0.18px

Navigation Icon Button

inferred

Compact control within site navigation.

"GT Standard", sans-serif | 18px | 600 | 18px | normalCircular

Large Card Link

observed

A linked editorial or product card whose full surface is interactive.

"GT Standard", sans-serif | 29.1067px | 600 | 36.3834px | normal0px 37.0213px 0px 0px0px 0px 0px 37.0213px1440x1000px

Small Card Link

observed

A linked editorial or product card whose full surface is interactive.

"GT Standard", sans-serif | 21.404px | 600 | 23.5444px | -0.21404px436x630px

Header

inferred

Reusable header pattern.

0px 37.0213px
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 | `#212121` | Primary canvas |
| surface | `#212121` | Raised surfaces |
| text-primary | `#ececec` | Primary text |
| text-secondary | `#ececec` | Secondary text |
| text-muted | `#ececec` | Supporting text |
| text-on-brand | `#ffffff` | Text on brand |
| border | `#d1d5db` | 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 | `'GT Standard', sans-serif` | Body and interface text |
| font-primaryfont | `'ABC Daily Slab', sans-serif` | Body and interface text |

### Type scale

| Token | Family | Size | Weight | Line height |
|---|---|---:|---:|---:|
| type-label | `'GT Standard', sans-serif` | `29.1067px` | `600` | `36.3834px` |
| type-bodystrong | `'GT Standard', sans-serif` | `21.404px` | `600` | `23.5444px` |
| type-button | `'GT Standard', sans-serif` | `18px` | `600` | `18px` |
| type-headinglarge | `'ABC Daily Slab', sans-serif` | `92.5518px` | `400` | `92.5518px` |
| type-body | `'ABC Daily Slab', sans-serif` | `17.7027px` | `400` | `17.7027px` |

## 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 | `6px` | Layout scale |
| space-sm | `8px` | Layout scale |
| space-md | `12px` | Layout scale |
| space-lg | `14px` | Layout scale |
| space-xl | `18px` | 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

### Navigation Link — Variant A

- **Component:** Primary navigation between major destinations.
- **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)`

### Navigation Control — Navigation Icon Button

- **Component:** Compact control within site navigation.
- **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)`

### Card Link — Large

- **Component:** A linked editorial or product card whose full surface is interactive.
- **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)`

### Header

- **Component:** Reusable header 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)`

### Inline Text Link — Large

- **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)`

## 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: #212121;
  --ds-color-surface: #212121;
  --ds-color-text-primary: #ececec;
  --ds-color-text-secondary: #ececec;
  --ds-color-text-muted: #ececec;
  --ds-color-text-on-brand: #ffffff;
  --ds-color-border: #d1d5db;
  --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: 'GT Standard', sans-serif;
  --ds-type-body: 'GT Standard', sans-serif 16px 400 / 24px;
  --ds-type-heading-large: 'ABC Daily Slab', sans-serif 48px 700 / 1.1;
  --ds-type-heading-medium: 'ABC Daily Slab', sans-serif 32px 600 / 1.2;
  --ds-type-heading-small: 'ABC Daily Slab', sans-serif 24px 600 / 1.25;
  --ds-type-caption: 'GT Standard', 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;
}
```