Análise concluída

Mosby Files

www.mosbyfiles.com

Mosby Files constrói uma linguagem visual Tipografia de destaque ampla e Paleta semântica monocromática, apoiada por uma base escuro e pela tipografia Signifier. Sua experiência de portfolio coloca a hierarquia do conteúdo e a identidade da marca no centro da composição.

/ 01 . Color

Paleta de cores

Sistema visual extraído de estilos computados, variáveis CSS e usos recorrentes de foreground/background na página analisada.

TextPrimary

#ffffff

Primary text · Observado

Background

#000000

Page canvas · Observado

Neutral family 1

#fdfaf7

Observado família da paleta

Neutral family 2

#787a7f

Observado família da paleta

Neutral family 3

rgba(25, 25, 25, 0.8)

Observado família da paleta

/ 02 . Typography

Sistema tipográfico

body

Aa Linguagem visual

Família
Signifier
Tamanho
26px
Peso
400
Linha
32.5px

navigation

Aa Linguagem visual

Família
Signifier
Tamanho
16px
Peso
400
Linha
20px

display

Aa Linguagem visual

Família
Founders Grotesk
Tamanho
144.06px
Peso
700
Linha
115.248px

caption

Aa Linguagem visual

Família
IBM Plex Mono
Tamanho
12px
Peso
400
Linha
15px

/ 03 . System

Espaçamento e forma

Ritmo de espaçamento

controlGap1

14.406px

controlGap2

24px

contentGap1

40px

contentGap2

61.996px

sectionGap

32px

space-xs

8px

space-sm

12px

space-md

14.406px

Raios de canto

Nenhum token recorrente detectado.

Linguagem de bordas

Nenhum token recorrente detectado.

/ 04 . Components

Padrões de interface

Linked Content Card

observed

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

Signifier, serif | 16px | 400 | 20px | normal4px corner radius1233x980px1233x860px1233x800px

Header

inferred

Reusable header pattern.

Variant A Navigation Link

inferred

Primary navigation between major destinations.

Signifier, serif | 16px | 400 | 20px | normal

Variant B Navigation Link

inferred

Primary navigation between major destinations.

"IBM Plex Mono", sans-serif | 16px | 400 | 32px | normal

Display Heading

inferred

Primary page statement.

"Founders Grotesk", sans-serif | 144.06px | 700 | 115.248px | normal
Ver conteúdo completo do DESIGN.md
# DESIGN.md

## 1. Visão geral

Interface orientada por hierarquia visual clara, superfícies consistentes e uma paleta semântica controlada.
Use os tokens e contratos abaixo como fonte normativa para implementação responsiva e acessível.

> Contrato normativo de implementação: preserve os nomes semânticos dos tokens, regras de responsividade e estados de interação ao estender a interface.

## 2. Cores e acessibilidade

### Tokens semânticos de cor

| Token | Valor Hex | Finalidade |
|---|---|---|
| background | `#000000` | Canvas principal |
| surface | `#000000` | Superfícies elevadas |
| text-primary | `#ffffff` | Texto principal |
| text-secondary | `#ffffff` | Texto secundário |
| text-muted | `#ffffff` | Texto auxiliar |
| text-on-brand | `#ffffff` | Texto sobre a marca |
| border | `#d1d5db` | Bordas e divisores |
| brand | `#2563eb` | Ação principal da marca |
| success | `#166534` | Estado positivo |
| danger | `#b91c1c` | Estado destrutivo |
| warning | `#92400e` | Estado de alerta |
| info | `#075985` | Estado informativo |
| focus | `#1d4ed8` | Anel de foco |

### Regras WCAG AA

- Texto normal deve atingir contraste mínimo de 4,5:1.
- Texto grande e elementos de interface devem atingir contraste mínimo de 3:1.
- O foco visível deve manter contraste mínimo de 3:1 e nunca depender apenas de cor.
- Use somente combinações entre tokens semânticos que cumpram essas taxas.

## 3. Tipografia

### Família

| Token | Família | Uso |
|---|---|---|
| font-navigationfont | `'Signifier', sans-serif` | Body and interface text |
| font-displayfont | `'Founders Grotesk', sans-serif` | Display hierarchy |
| font-monofont | `'IBM Plex Mono', sans-serif` | Metadata and code |

### Escala tipográfica

| Token | Família | Tamanho | Peso | Altura de linha |
|---|---|---:|---:|---:|
| type-body | `'Signifier', sans-serif` | `26px` | `400` | `32.5px` |
| type-navigation | `'Signifier', sans-serif` | `16px` | `400` | `20px` |
| type-display | `'Founders Grotesk', sans-serif` | `144.06px` | `700` | `115.248px` |
| type-caption | `'IBM Plex Mono', sans-serif` | `12px` | `400` | `15px` |

## 4. Layout e espaçamento

### Breakpoints

- **Mobile:** `< 768px` — grid de 1 coluna, gutters de 16px/24px e navegação empilhada.
- **Tablet:** `768px–1023px` — grid adaptativo e gutters de 32px/48px.
- **Desktop:** `>= 1024px` — gutters de 120px e container com largura máxima definida pelo layout.

### Regras responsivas

- **Header:** empilhe navegação e ações no mobile; mantenha a navegação principal em linha a partir do tablet.
- **Hero:** use uma coluna no mobile, composição equilibrada em duas colunas no tablet e o container completo no desktop.
- **Cards:** ocupe a largura do grid no mobile, use duas colunas no tablet e o grid definido no desktop.
- **Grid de navegação: use uma coluna no mobile, colunas adaptativas no tablet e a composição completa no desktop.

### Escala de espaçamento

| Token | Valor | Uso |
|---|---:|---|
| space-xs | `8px` | Escala de layout |
| space-sm | `12px` | Escala de layout |
| space-md | `14.406px` | Escala de layout |
| space-lg | `20px` | Escala de layout |
| space-xl | `24px` | Escala de layout |

## 5. Formas, bordas e profundidade

### Raios

| Token | Valor | Uso |
|---|---:|---|
| radius-sm | `4px` | Controles compactos |
| radius-md | `12px` | Cards e superfícies |
| radius-full | `9999px` | Pills e controles circulares |

### Bordas e profundidade

- Largura da borda: `var(--ds-border-width)`.
- Estilo da borda: `solid`.
- Cor da borda: `var(--ds-color-border)`.
- Use `var(--ds-shadow-sm)` para elevação baixa e `var(--ds-shadow-inner)` para separação interna.

## 6. Especificação de componentes

### Card Link — Linked Content Card

- **Componente:** A linked editorial or product card whose full surface is interactive.
- **Tipografia:** `var(--ds-type-body)`
- **Cores:** `var(--ds-color-brand)` e `var(--ds-color-text-on-brand)` sobre a marca
- **Geometria:** `var(--ds-radius-md)` e `var(--ds-space-sm)` de espaçamento interno
- **Borda:** `var(--ds-border-width) solid var(--ds-color-border)`

### Header

- **Componente:** Reusable header pattern.
- **Tipografia:** `var(--ds-type-body)`
- **Cores:** `var(--ds-color-text-primary)` e `var(--ds-color-text-on-brand)` sobre a marca
- **Geometria:** `var(--ds-radius-md)` e `var(--ds-space-sm)` de espaçamento interno
- **Borda:** `var(--ds-border-width) solid var(--ds-color-border)`

### Navigation Link — Variant A

- **Componente:** Primary navigation between major destinations.
- **Tipografia:** `var(--ds-type-body)`
- **Cores:** `var(--ds-color-brand)` e `var(--ds-color-text-on-brand)` sobre a marca
- **Geometria:** `var(--ds-radius-md)` e `var(--ds-space-sm)` de espaçamento interno
- **Borda:** `var(--ds-border-width) solid var(--ds-color-border)`

### Display Heading

- **Componente:** Primary page statement.
- **Tipografia:** `var(--ds-type-heading-medium)`
- **Cores:** `var(--ds-color-text-primary)` e `var(--ds-color-text-on-brand)` sobre a marca
- **Geometria:** `var(--ds-radius-md)` e `var(--ds-space-sm)` de espaçamento interno
- **Borda:** `var(--ds-border-width) solid var(--ds-color-border)`

## 7. Contrato de interação

### Regras universais de estado

| Estado | Comportamento visual |
|---|---|
| Estado inicial | Use `var(--ds-color-surface)`, `var(--ds-color-text-primary)`, `var(--ds-color-border)`, `var(--ds-type-body)` e `var(--ds-radius-md)`. |
| `:hover` | Aumente a ênfase com `var(--ds-color-brand-hover)` ou `var(--ds-color-surface-hover)`; preserve geometria e layout. |
| `:active` | Aplique `var(--ds-color-brand-active)` ou `var(--ds-color-surface-active)`; preserve dimensões. |
| `:focus-visible` | Exiba anel de `var(--ds-focus-ring-width)` usando `var(--ds-color-focus)`, com afastamento `var(--ds-focus-ring-offset)`. |
| `:disabled` | Use `var(--ds-state-disabled-opacity)`, `cursor: not-allowed` e `pointer-events: none`; remova eventos de ponteiro. |

## 8. Design tokens

```css
:root {
  --ds-color-background: #000000;
  --ds-color-surface: #000000;
  --ds-color-text-primary: #ffffff;
  --ds-color-text-secondary: #ffffff;
  --ds-color-text-muted: #ffffff;
  --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: 'Signifier', sans-serif;
  --ds-type-body: 'Signifier', 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: 'Signifier', 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;
}
```