Análise concluída

Lusion

lusion.co

Lusion constrói uma linguagem visual Tipografia de destaque ampla e Estrutura orientada por navegação, apoiada por uma base misto e pela tipografia Aeonik. Sua experiência de studio coloca a organização espacial e a orientação da navegação 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

#000000

Primary text · Observado

Neutral family 1

#ffffff

Observado família da paleta

Neutral family 2

#f0f1fa

Observado família da paleta

Neutral family 3

#2b2e3a

Observado família da paleta

Blue family 1

#1a2ffb

Observado família da paleta

Blue family 2

#0016ec

Observado família da paleta

Blue family 3

#071bdf

Observado família da paleta

/ 02 . Typography

Sistema tipográfico

body

Aa Linguagem visual

Família
Aeonik
Tamanho
43.2px
Peso
400
Linha
49.68px

button

Aa Linguagem visual

Família
Aeonik
Tamanho
14.4px
Peso
400
Linha
16.56px

label

Aa Linguagem visual

Família
Aeonik
Tamanho
18px
Peso
400
Linha
20.7px

caption

Aa Linguagem visual

Família
Aeonik
Tamanho
12.96px
Peso
400
Linha
14.904px

headingSmall

Aa Linguagem visual

Família
Aeonik
Tamanho
144px
Peso
400
Linha
144px

headingMedium

Aa Linguagem visual

Família
Aeonik
Tamanho
38px
Peso
400
Linha
43.7px

/ 03 . System

Espaçamento e forma

Ritmo de espaçamento

controlGap1

26px

controlGap2

28.8px

microSpacing

1px

contentGap1

168px

contentGap2

216px

space-xs

5.4px

space-sm

6px

space-md

8.75px

Raios de canto

smallRadius

3px

mediumRadius

10px

largeRadius

15px

fullRadius

9999px

Linguagem de bordas

Nenhum token recorrente detectado.

/ 04 . Components

Padrões de interface

Variant A Button

inferred

Direct interface action.

Aeonik | 20px | 400 | 23px | normal

Variant B Button

inferred

Direct interface action.

Aeonik | 14.4px | 400 | 16.56px | normal1px 6pxPill

Variant C Button

inferred

Direct interface action.

Aeonik | 14.4px | 400 | 16.56px | normal

Large Navigation Control

inferred

Compact control within site navigation.

Aeonik | 16px | 400 | 16px | normal16px 26px

Medium Navigation Control

inferred

Compact control within site navigation.

Aeonik | 14px | 400 | 16.1px | normal

Small Navigation Control

inferred

Compact control within site navigation.

Aeonik | 14px | 500 | 16.1px | normal0px 15.75px 0px 22.75pxPill
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 | `#ffffff` | Canvas principal |
| surface | `#ffffff` | Superfícies elevadas |
| text-primary | `#000000` | Texto principal |
| text-secondary | `#000000` | Texto secundário |
| text-muted | `#000000` | 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-primaryfont | `'Aeonik', sans-serif` | Body and interface text |

### Escala tipográfica

| Token | Família | Tamanho | Peso | Altura de linha |
|---|---|---:|---:|---:|
| type-body | `'Aeonik', sans-serif` | `43.2px` | `400` | `49.68px` |
| type-button | `'Aeonik', sans-serif` | `14.4px` | `400` | `16.56px` |
| type-label | `'Aeonik', sans-serif` | `18px` | `400` | `20.7px` |
| type-caption | `'Aeonik', sans-serif` | `12.96px` | `400` | `14.904px` |
| type-headingsmall | `'Aeonik', sans-serif` | `144px` | `400` | `144px` |
| type-headingmedium | `'Aeonik', sans-serif` | `38px` | `400` | `43.7px` |

## 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 | `5.4px` | Escala de layout |
| space-sm | `6px` | Escala de layout |
| space-md | `8.75px` | Escala de layout |
| space-lg | `12.96px` | Escala de layout |
| space-xl | `14.4px` | 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

### Button — Variant A

- **Componente:** Direct interface action.
- **Tipografia:** `var(--ds-type-body)`
- **Cores:** `var(--ds-color-brand)` e `var(--ds-color-text-on-brand)` sobre a marca
- **Geometria:** `var(--ds-radius-full)` e `var(--ds-space-sm)` de espaçamento interno
- **Borda:** `var(--ds-border-width) solid var(--ds-color-border)`

### Navigation Control — Large

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

### Section Heading — Large

- **Componente:** Introduces a content section.
- **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)`

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

## 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: #ffffff;
  --ds-color-surface: #ffffff;
  --ds-color-text-primary: #000000;
  --ds-color-text-secondary: #000000;
  --ds-color-text-muted: #000000;
  --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: 'Aeonik', sans-serif;
  --ds-type-body: 'Aeonik', sans-serif 16px 400 / 24px;
  --ds-type-heading-large: 'Aeonik', sans-serif 48px 700 / 1.1;
  --ds-type-heading-medium: 'Aeonik', sans-serif 32px 600 / 1.2;
  --ds-type-heading-small: 'Aeonik', sans-serif 24px 600 / 1.25;
  --ds-type-caption: 'Aeonik', 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;
}
```