# Arquitetura de Estilização & UI/UX — Palavra

Este documento detalha o sistema de design, a arquitetura CSS, a tipografia e os padrões visuais aplicados aos componentes da camada **Uiux**. 

## 1. Princípios Visuais & Design System

A estilização do sistema é estritamente utilitária e semântica, construída sobre uma stack moderna e unificada.

### Stack de Design
* **Tailwind CSS v3:** Framework CSS utility-first usado para toda a estilização.
* **shadcn/ui:** Componentes base acessíveis (Radix UI) estilizados via Tailwind.
* **Lucide Icons:** Biblioteca padrão para ícones em SVG.
* **Recharts:** Biblioteca para renderização de gráficos responsivos.
* **Framer Motion:** Utilizado para animações declarativas.

### Regra de Ouro da Camada UI/UX
Os componentes visuais puros (`.uiux.tsx`) são 100% desacoplados do banco de dados e de regras de negócio. Eles apenas recebem dados prontos via `props`, emitem eventos via `callbacks` e utilizam **exclusivamente tokens semânticos**, sendo expressamente proibido o uso de cores hardcoded (ex: `bg-white`, `text-black`, `bg-amber-500`).

---

## 2. Tipografia

O sistema utiliza duas famílias tipográficas principais para garantir legibilidade e distinção entre interface e dados técnicos:

* **Inter — Display (Font-weight 700):** Utilizada em títulos e headings (aplicada via classe `font-display`).
* **Inter — Body (Font-weights 400, 500, 600):** Utilizada para o texto geral da aplicação (aplicada via classe `font-sans`).
* **JetBrains Mono — Code:** Utilizada especificamente para blocos de código e dados técnicos formatados (aplicada via classe `font-mono-code`).

---

## 3. Tokens CSS e Variáveis de Cor

O coração da estilização é o uso de variáveis CSS customizadas baseadas em HSL. Elas permitem a transição perfeita entre os temas.

### Tokens de Superfície
* `--background`: Fundo geral da aplicação.
* `--foreground`: Cor do texto principal.
* `--card`: Fundo dos cards de conteúdo.
* `--muted`: Fundo de áreas secundárias.
* `--border`: Bordas e divisores estruturais.
* `--input`: Bordas de campos de formulário.

### Tokens de Ação e Feedback
* `--primary`: Ação principal e elementos de destaque.
* `--secondary`: Ações secundárias.
* `--accent`: Destaques e acentos visuais menores.
* `--destructive`: Ações destrutivas ou mensagens de erro.
* `--success`: Feedbacks de sucesso e confirmação.
* `--warning`: Alertas e pontos de atenção.
* `--info`: Dados e balões informativos.
* `--ring`: Cor do anel de foco de acessibilidade.

### Exemplo de Aplicação (Certo vs. Errado)

```tsx
// ✅ CORRETO — Uso exclusivo de tokens semânticos
<div className="bg-card border border-border rounded-lg">
  <h3 className="text-foreground">Título</h3>
  <p className="text-muted-foreground">Descrição</p>
  <button className="bg-primary text-primary-foreground">Ação</button>
  <span className="text-success">Sucesso</span>
  <span className="text-destructive">Erro</span>
</div>

// ❌ ERRADO — Proibido o uso de cores literais/diretas
<div className="bg-white border-gray-200">
  <h3 className="text-black">Título</h3>
  <button className="bg-amber-500 text-white">Ação</button>
</div>
```

---

## 4. Temas Duais (Light & Dark)

A interface suporta dois modos globais gerenciados através da injeção de classes no elemento `<html>` (gerenciado por um Zustand store).

* **☀️ Tema Light:** Estética off-white com tons dourados quentes.
* **🌙 Tema Dark:** Estética em azul profundo, remetendo ao "azul espacial".

A transição ocorre injetando a classe `dark` no `:root`, que remapeia automaticamente todas as variáveis `hsl()` citadas acima.

---

## 5. Padrões de Layout e Componentes

A estrutura de espaçamento e montagem de tela obedece a um esqueleto rígido de alinhamento e respiro.

### Padrão Base de Página (Layout de Contexto)
```tsx
<div className="min-h-screen bg-background">
  <BarraLateral />                     {/* Header/Nav fixo com altura h-11 */}
  <main className="pt-11">             {/* Offset correspondente ao header */}
    <div className="p-5">              {/* Padding interno padrão da tela */}
      <div className="mb-5">           {/* Espaçamento padrão entre título e seções */}
        <h1 className="text-xl font-display text-foreground">Título</h1>
        <p className="mt-0.5 text-xs text-muted-foreground">Subtítulo</p>
      </div>
    </div>
  </main>
</div>
```

### Padrão Visual: Card de KPI
Aplicado em dashboards e resumos de métricas:
```tsx
<div className="bg-card border border-border rounded-lg p-4">
  <div className="flex items-center justify-between">
    <div>
      <p className="text-[10px] font-medium text-muted-foreground uppercase tracking-wider">
        Entregas Realizadas
      </p>
      <p className="text-2xl font-display text-foreground mt-1">1.247</p>
    </div>
    <div className="flex h-9 w-9 items-center justify-center rounded-lg bg-success/10">
      <Package className="h-4.5 w-4.5 text-success" />
    </div>
  </div>
  <div className="mt-2 flex items-center gap-1 text-[10px]">
    <TrendingUp className="h-3 w-3 text-success" />
    <span className="text-success font-medium">+12.5%</span>
    <span className="text-muted-foreground">vs. semana anterior</span>
  </div>
</div>
```

### Padrão Visual: Tabelas de Listagem
Utilizado em telas de gestão (Clientes, Vendedores, etc.):
```tsx
<div className="bg-card border border-border rounded-lg overflow-hidden">
  {/* Cabeçalho de Controle */}
  <div className="p-4 border-b border-border flex items-center justify-between">
    <div>
      <h3 className="text-sm font-semibold text-foreground">Título</h3>
      <p className="text-xs text-muted-foreground">Descrição</p>
    </div>
    <button className="bg-primary text-primary-foreground text-xs px-3 py-1.5 rounded-md">
      + Novo
    </button>
  </div>
  
  {/* Linhas da Tabela */}
  <div className="divide-y divide-border">
    {itens.map(item => (
      <div key={item.id} className="p-3 flex items-center hover:bg-muted/30 transition-colors">
        <p className="text-sm text-foreground">{item.nome}</p>
        <span className="text-xs text-muted-foreground ml-auto">{item.info}</span>
      </div>
    ))}
  </div>
</div>
```
