Análise concluída

And Friends Soccer

andfriends.soccer

And Friends Soccer constrói uma linguagem visual Tipografia de destaque ampla e Composição densa em controles, apoiada por uma base misto e pela tipografia featureDeck. Sua experiência de entertainment coloca a clareza dos controles e das ações 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

Border

oklab(0.159065 0.00000723451 0.00000317395 / 0.2)

Borders and separators · Observado

Neutral family 1

#0d0d0d

Observado família da paleta

Neutral family 2

#ffffff

Observado família da paleta

Neutral family 3

#eae9e2

Observado família da paleta

Coral family 1

#ffb68f

Observado família da paleta

Coral family 2

#fe5900

Observado família da paleta

Coral family 3

#fcefde

Observado família da paleta

/ 02 . Typography

Sistema tipográfico

navigation

Aa Linguagem visual

Família
featureDeck
Tamanho
16px
Peso
400
Linha
24px

headingMedium

Aa Linguagem visual

Família
featureDeck
Tamanho
79.2px
Peso
300
Linha
85.536px

bodyStrong

Aa Linguagem visual

Família
shrekSansVariable
Tamanho
64px
Peso
700
Linha
64px

body

Aa Linguagem visual

Família
featureDeck
Tamanho
14px
Peso
300
Linha
22.75px

/ 03 . System

Espaçamento e forma

Ritmo de espaçamento

controlGap1

8px

controlGap2

79.2px

contentGap1

16px

contentGap2

32px

sectionGap1

100px

sectionGap2

120px

pageGutter

115.2px

space-xs

8px

Raios de canto

smallRadius

32px

Linguagem de bordas

defaultBorder

1px solid oklab(0.159065 0.00000723451 0.00000317395 / 0.2)

/ 04 . Components

Padrões de interface

Section Heading

inferred

Introduces a content section.

featureDeck, "featureDeck Fallback" | 79.2px | 300 | 85.536px | normal

Large Navigation Link

observed

Primary navigation between major destinations.

shrekSansVariable, "shrekSansVariable Fallback" | 56px | 700 | 56px | -0.28px10px 79.2px203x58px

Small Navigation Link

inferred

Primary navigation between major destinations.

featureDeck, "featureDeck Fallback" | 16px | 400 | 24px | normal

Linked Content Block

observed

A large linked content region with nested supporting content.

featureDeck, "featureDeck Fallback" | 16px | 400 | 24px | normal1440x477px

CTA Link

inferred

High-emphasis conversion or navigation action.

shrekSansVariable, "shrekSansVariable Fallback" | 56px | 700 | 56px | -0.28px10px 79.2px

Large Footer Link

observed

Secondary navigation in the footer.

featureDeck, "featureDeck Fallback" | 16px | 400 | 24px | 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 | `#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 | `#808080` | 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 | `'featureDeck', sans-serif` | Body and interface text |
| font-bodyfont | `'shrekSansVariable', sans-serif` | Body and interface text |

### Escala tipográfica

| Token | Família | Tamanho | Peso | Altura de linha |
|---|---|---:|---:|---:|
| type-navigation | `'featureDeck', sans-serif` | `16px` | `400` | `24px` |
| type-headingmedium | `'featureDeck', sans-serif` | `79.2px` | `300` | `85.536px` |
| type-bodystrong | `'shrekSansVariable', sans-serif` | `64px` | `700` | `64px` |
| type-body | `'featureDeck', sans-serif` | `14px` | `300` | `22.75px` |

## 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 | `16px` | Escala de layout |
| space-lg | `24px` | Escala de layout |
| space-xl | `32px` | 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

### Section Heading

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

### Navigation Link — Large

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

### Block Link — Linked Content Block

- **Componente:** A large linked content region with nested supporting content.
- **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)`

### CTA Link

- **Componente:** High-emphasis conversion or navigation 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)`

### Footer Link — Large

- **Componente:** Secondary navigation in the footer.
- **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)`

## 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: #808080;
  --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: 'featureDeck', sans-serif;
  --ds-type-body: 'featureDeck', sans-serif 16px 400 / 24px;
  --ds-type-heading-large: 'featureDeck', sans-serif 48px 700 / 1.1;
  --ds-type-heading-medium: 'featureDeck', sans-serif 32px 600 / 1.2;
  --ds-type-heading-small: 'featureDeck', sans-serif 24px 600 / 1.25;
  --ds-type-caption: 'shrekSansVariable', 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;
}
```