Portí Design System
A identidade visual da Portí para produto: cores, tipografia, forma, componentes e logos, com os arquivos para usar. As etiquetas hoje marcam o que já está em uso e a definir o que falta decidir antes de virar pacote.
Marca
Símbolo: o "p" formado por um anel e uma gota, chapado, sem volume. Wordmark em minúsculas com acento. Sobre roxo, as duas peças ficam no lavanda claro #D5D2D9 do ícone oficial; sobre fundo claro, no purple #551388. Os arquivos abaixo foram gerados a partir do ícone oficial e do wordmark do Ops Antecipaí.
Voz e nomes hoje
Do único texto de marca escrito na VM (proposta-api/src/defaults.ts): o nome é portí em minúsculas com acento; produtos também em minúsculas: antecipaí, medescomplica, portí Pay. Tagline: "Soluções financeiras para sua jornada médica". Tom: consultivo e profissional. As agentes (Íris, Lia, Nina, Bia) usam tom caloroso com dois ou três emojis por mensagem.
Faltando a definir
Arquivos em SVG (os atuais são PNG extraídos de imagem), área de proteção e tamanho mínimo, e a decisão sobre o roxo de fundo: o ícone oficial usa #4D1A83, mais fechado que o indigo #6007C1 dos apps.
Cor
Paleta dos tokens --porti-* em porti-negocios/client/src/index.css:46. O indigo é a cor de ação; o purple entra no gradiente de assinatura e em textos de destaque. Neutros quentes, puxados para o bege, e não cinzas puros.
Roxos hoje
--porti-indigobotões, links, foco, ring--porti-purpleinício do gradiente, texto de destaque--porti-purple-lighthover, ícones--porti-indigo-lightprimária no tema escuro, nav ativa--chart-4gráficos, texto no escuro--chart-5texto de destaque no escuroNeutros hoje
--porti-off-whitefundo da página--porti-surfacecards, tabelas--porti-surface-altcabeçalho de tabela, secundário--porti-borderhairlines, inputs--porti-border-strongdivisores--porti-mutedrótulos, legendas--porti-slatetexto secundário--porti-graphitetexto principalSemânticas hoje
--porti-successbadges, KPIs positivos--porti-warningalertas, pendências--porti-errorerros, risco--porti-infoavisos neutrosSidebar e tema escuro hoje
gradiente 180°porti-sidebargradiente 180°porti-sidebar--background (.dark)--card (.dark)--secondary (.dark)--foreground (.dark)Gradientes hoje
--porti-gradientbotão primário, capas--porti-gradient-softfundos de seção--porti-gradient-glowtopo de páginaConflito: qual é o roxo da Portí? 5 valores
v8.12 apps em produção--purple-800mockup HTML, porta 3010brandColorPDFs enviados a clientesfundo do app icono roxo da marca de fatogradienteúnico valor consensualTipografia
Inter para interface e JetBrains Mono para rótulos, números e código. Ambas carregadas do Google Fonts; nenhuma está hospedada na VM. A única fonte em arquivo é Poppins, no gerador de propostas, que não segue o v8.1.
A definir a definir
Hospedar as fontes no pacote (woff2) para não depender do Google Fonts nos PDFs e no modo offline; fixar a escala (32 / 24 / 18 / 15 / 13 / 10) e decidir se o gerador de propostas migra de Poppins para Inter.
Forma e espaço
Aqui é onde os projetos mais divergem. Três escalas de raio convivem, e nenhum projeto declara tokens de espaçamento: cada tela usa padding escrito à mão.
Sombras hoje
shadow-card (Ops Antecipaí)
0 10px 24px rgba(17,17,17,.05)kpi-card hover (Porti Negócios)
0 4px 20px rgba(96,7,193,.08)Espaçamento a definir
Proposta de partida, ainda não usada em lugar nenhum: 4 · 8 · 12 · 16 · 24 · 32 · 48 px. Padding interno de card 16 a 20 px, gap entre cards 12 px, margem de seção 32 a 40 px.
Componentes
Renderizados com o CSS utilitário .porti-* do Porti Negócios, sem alteração. É o vocabulário que já existe: botão primário em gradiente, badges em mono, KPI card com hover roxo, tabela com cabeçalho em caixa alta, sidebar em gradiente escuro.
Botões
Badges
Input
KPI card
Tabela
| Conta | Etapa | Saúde | Produção 30 d |
|---|---|---|---|
| Dra. Camila Rocha | Ativação | saudável | R$ 38.400 |
| Dr. Henrique Sales | Adoção | atenção | R$ 12.150 |
| Dr. Otávio Lima | Expansão | risco | R$ 0 |
Navegação lateral
Card sobre fundo
Inventário por projeto
Onde cada decisão visual está escrita hoje. Nenhum projeto importa de outro: o bloco de tokens foi copiado à mão.
| Projeto | Arquivo | Primária | Fonte | Raio | Logo | Situação |
|---|---|---|---|---|---|---|
| Porti Negócios | /srv/porti-negocios/current/client/src/index.css:46 | #6007C1 | Inter · JetBrains Mono | 8 px | não | v8.1 |
| Ops Antecipaí | /srv/ops-antecipai/current/web/src/styles.css:1 | #6007C1 | Inter · JetBrains Mono | 28/18/12/8 | wordmark png (lockup antigo com esfera, descartado) | v8.1 copiado |
| @porti/standards | /srv/ops-antecipai/standards/current/styles.css:1 | #6611b1 | Inter · JetBrains Mono | 28/20/14 | não | diverge |
| Gerador de propostas | ~/proposta-api/src/defaults.ts:6 | #4B1A6C | Poppins (ttf local) | — | texto "portí" | diverge |
| CS Manager (porti-revenue) | ~/porti-revenue/front/src/styles.css:1 | #d98a1f âmbar | sistema | 12 px | ícone genérico | fora da marca |
| Análises Portí e FIDC | ~/analises-porti/front/src/styles.css:1 | #0E6A66 teal | Spectral · Public Sans · IBM Plex Mono | 5 px | não | fora da marca |
| EON OS (@eon/ui) | ~/eon-os/surfaces/ui/src/tokens.ts | #0B7285 petróleo | SF Pro (sistema) | 6/10/14 | não | outra marca |
O EON OS é o único design system de verdade na VM: tokens em TypeScript que geram o CSS, preset Tailwind exportado, Storybook e um teste que falha se os tokens divergirem do documento. É o molde para o pacote da Portí.
Decisões antes de virar pacote
Cada item abaixo é uma escolha que só você pode fazer. Com elas fechadas, o pacote @porti/ui sai com tokens, preset Tailwind, CSS puro para projetos sem Tailwind e os logos, e o CS Manager é o primeiro a adotar.
O ícone oficial usa #4D1A83, quase o mesmo do gerador de propostas. Os apps usam #6007C1. Uma saída: #4D1A83 como cor de marca (logo, fundos, capas) e #6007C1 como cor de ação (botões, links). Aposentar #6611b1 e #4B1A6C.
Escala única: 8 px em controles, 12 px em cards, 20 px em painéis grandes. Cobre os três projetos com um só conjunto.
Inter e JetBrains Mono hospedadas no pacote. Poppins fica só se o gerador de propostas precisar manter a cara do deck.
Adotar a escala 4 · 8 · 12 · 16 · 24 · 32 · 48 px e trocar os paddings escritos à mão aos poucos.
Pedir ao designer o SVG do símbolo e do wordmark, mais a versão branca. Sem isso o pacote embarca só PNG.
Manter como está (só no Porti Negócios) ou levar para todos os apps. Os tokens do .dark já existem.
Repositório próprio em ~/porti-ui publicado como pacote local, ou pasta dentro do porti-revenue. Repositório próprio evita que um app mande nos outros.
Análises Portí e FIDC (teal) e EON OS (petróleo) ficam como estão ou entram na paleta? Ferramentas internas podem ter identidade própria.
Usar no seu projeto
Tudo que está nesta página em arquivo. Os tokens são a fonte da verdade: copie o CSS para o projeto por script, importe antes do seu CSS e nunca edite a cópia.
Tokens
Variáveis --porti-* de cor, tipografia, raio, sombra e espaçamento, com tema escuro.
Logos
Símbolo, wordmark e lockup em claro, roxo e branco, mais o ícone de app 1024×1024. PNG; o SVG está pendente.
Baixar logos.zip ver pastaFontes
Inter e JetBrains Mono, do Google Fonts. Cole no <head>:
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap">
Exemplo de uso
@import "./porti-tokens.css";
:root { --bg: var(--porti-off-white); --primary: var(--porti-indigo); --radius: var(--porti-radius-md); }
body { font-family: var(--porti-sans); background: var(--bg); color: var(--porti-graphite); }
.btn-primary { background: var(--porti-gradient); color: #fff; border-radius: var(--porti-radius-sm); }Referência de implementação completa: CS Manager (porti-revenue), com script de sync e teste de paridade. Guia curto em README.md. Dúvidas e ajustes: Jonathan.