# Migração da base TailAdmin

A inspeção encontrou 88 páginas, 260 partials, 69 módulos JavaScript, 45 gráficos e 176 imagens na base. Código e arquivos de configuração conferem byte a byte com o ZIP fornecido. O snapshot local `tmp/baseline/source-before.zip` permite comparação; o pacote original não foi modificado.

## Alterações compartilhadas

- CSS: paleta primária e secundárias oficiais, tons derivados, semânticos, temas, densidade, foco, marca e componentes. Removida importação remota Outfit; `font-inter` substitui o contrato visual anterior.
- Marca: wordmark em **vetor oficial** (`logo-positive.svg`, `logo-negative.svg`, `logo.svg`, `logo-mono.svg`), extraído de `Troca Pontos 2024.ai` sem redesenho; os PNG do guia permanecem para e-mail. Includes reutilizáveis. Sem fabricação de símbolo; ícone funcional de início em espaços compactos. Favicon antigo não é referenciado pelo Webpack. Assets antigos preservados sem aplicação ativa para rastreabilidade da base, não como identidade corrente.
- JavaScript: adaptador de tokens, atualização visual de instâncias de gráficos e tabelas textuais. Mapas preservam atribuições e cores externas necessárias.
- Internacionalização: pt-BR adicionado, com locales existentes e RTL preservados. Conteúdo demonstrativo é traduzido sem alterar chaves técnicas.
- Navegação: entrada para o design system nas sidebars; controles de tema/navegação com nomes acessíveis. Viewport permite zoom.
- Demonstração: formulários sem submissão e upload com fila local sem processamento. Nenhuma integração real foi criada.
- Webpack: includes continuam recursivos. Teste de presença de include não reutiliza `lastIndex` de regex global; correção evita estado compartilhado em recursão. Exports, docs, exemplos e templates são copiados para `build/`.

## Normalização de cores de ícone

A auditoria final encontrou **119 ocorrências** da paleta de UI do TailAdmin em atributos `fill`/`stroke` de SVG inline, em 26 arquivos de `src` — ícones de sucesso, alerta e texto herdados do template, não ilustrações. Eram a última dependência visual relevante da base original.

`scripts/normalize-icon-colors.py` converteu todas para `var(--tp-…, <fallback>)`, mais 109 equivalentes no `build/`. O mapeamento é explícito: verdes para `--tp-status-success-foreground`, vermelhos para `--tp-status-danger-foreground`, âmbar para `--tp-status-warning-foreground`, cinzas para `--tp-text-primary`/`-secondary`/`-muted`, azul de ação para `--tp-action-primary`.

Logotipos de terceiros — integrações, bandeiras de cartão, modelos de IA, bandeiras de país, imagens de marca — foram **excluídos por padrão de caminho**: ali a cor pertence à marca do terceiro e alterá-la seria erro, não normalização.

Efeito colateral desejado: esses ícones passaram a responder ao tema, porque cada token tem valor próprio em claro e escuro. No tema escuro, o verde de sucesso passou de `#12B76A` para `#80E4CC`, com contraste bastante melhor sobre superfície escura. O fallback literal preserva o render caso a custom property não resolva. Nova varredura retorna 0; evidência em `evidencias/cores-icones-normalizadas.json`.

## Exceções e preservação

Não houve atualização das dependências nem troca de framework. AGENTS menciona versões antigas de FullCalendar/Swiper; o lock efetivo resolve 7.1.0 e 14.2.0 e foi preservado. Metadados/licenças TailAdmin em `package.json`, README original e arquivos legais permanecem. Blue-light é alias técnico apontando para roxos; cores de marcas de integração e mapas externos têm função própria.

Dimensões arbitrárias herdadas do template foram inventariadas; não foram substituídas em massa por dimensões de landing page. Estilos inline funcionais de posicionamento e valores de progresso permanecem quando necessários. Cores de sliders passaram a consumir tokens. E-mails gerados usam CSS inline por exigência do meio, derivado da mesma fonte.

Nenhum arquivo fonte existente foi removido para ocultar lacunas. Verifique a matriz e a validação antes de declarar adoção concluída em outro projeto.
