Pular para o conteúdo
SELLER HUBIA

Seller HubIA Manual de marca
e sistema de design

O Seller HubIA conecta o seller às contas de marketplace e ao CRM para que a operação aconteça por conversa. Este documento é o corredor dessa operação: cada assunto tem uma doca numerada, um endereço e regras que não dependem de gosto.

Versão
1.0
Docas
10
Tema base
Escuro
Idioma
pt-BR
Contraste
WCAG AA verificado
01

Marca

Um balão de conversa contendo uma grade de módulos, e um desses módulos ligado por uma aresta a um nó externo. É o produto inteiro em um desenho: a conversa contém o catálogo, e o catálogo alcança o canal.

Símbolo

Master · knockout

O painel interno e o halo do nó são vazados. O fundo passa por eles, então o símbolo funciona sobre concreto, sobre branco e sobre foto sem precisar de caixa.

Monocromático · currentColor

Uma cor só, herdada de currentColor. Para estêncil, gravação, bordado, carimbo, fax e qualquer fundo fotográfico que engula o azul.

Logotipo e a regra das três palavras

Sobre fundo escuro Logotipo Seller HubIA para fundos escuros: SELLER e IA em branco, HUB em laranja
Sobre fundo claro Logotipo Seller HubIA para fundos claros: SELLER e IA em azul, HUB em laranja

O nome se lê Seller HUB IA, e o logotipo divide as três palavras por cor. HUB é sempre laranja: é o mecanismo, e nunca muda. SELLER e IA mudam com o fundo.

Cor de cada palavra do logotipo por tipo de fundo
PalavraFundo escuroFundo claro
SELLERBranco sinal #F4F4F1Azul #173DB8
HUBLaranja #FF5400 — sempre
IABranco sinal #F4F4F1Azul #173DB8

SELLER e IA nunca são pretos

No fundo claro eles são azuis. Preto apaga metade da identidade e deixa o laranja sozinho, o que faz a marca parecer de outro produto.

O logotipo ainda é raster

Os arquivos em assets/ são PNG. O símbolo já está vetorizado em brand-kit/marks/; o lettering precisa ser vetorizado a partir do arquivo original de design antes de qualquer aplicação impressa ou em grande formato.

Área de proteção e tamanho mínimo

Um módulo em cada lado

A área de proteção é um módulo, a largura de um ladrilho da grade, que é 18,5% da largura do símbolo. Nada entra ali: nem texto, nem borda, nem outra marca. A medida escala junto com o símbolo, então vale igual no favicon e no adesivo de caixa.

Tamanho mínimo por peça e meio
PeçaTelaImpresso
Símbolo24 px8 mm
Logotipo horizontal120 px30 mm

Abaixo do mínimo o nó azul some e o símbolo vira um balão genérico. Se não couber, use o símbolo sozinho. Nunca reduza o logotipo horizontal.

Uso proibido

Não gire. O balão aponta para baixo à esquerda, sempre.
Não distorça. Escale proporcional ou não escale.
Não recolora. Só existe o master de duas cores e o monocromático.
Não use o master sobre laranja. Aí vai o monocromático em preto.
Não coloque em caixa nem sombra. O vazado existe pra dispensar caixa.
Sobre cor cheia, monocromático em preto. Assim.
02

Cor

As duas cores da marca já são cores de sinalização de segurança: laranja de alta visibilidade e azul de ação obrigatória. O sistema completa a família em vez de inventar uma paleta paralela.

A regra que decide tudo: campo ou tinta

Toda cor deste sistema tem um dos dois papéis, e quase todo erro de aplicação vem de trocar um pelo outro. Campo é a cor preenchendo uma área, com texto por cima. Tinta é a cor sendo o próprio texto ou traço. Uma cor pode servir de campo e falhar como tinta. É exatamente o caso do azul da marca.

#173DB8 nunca é tinta nem traço no escuro

Contra o concreto #0B0C0E ele dá 2,23:1 e reprova até como borda. Como campo com branco sinal dá 7,95:1 e passa folgado. Para traço e ícone azul no escuro, use --mandatory-stroke.

Texto sobre laranja é preto

Branco sobre #FF54003,22:1 e reprova. Preto dá 6,52:1. É por isso que --ink-on-signal aponta para preto e não deve ser sobrescrito.

Laranja como texto: só no escuro

Sobre concreto dá 6,08:1 e serve de tinta. Sobre fundo claro dá 2,92:1 e reprova até para texto grande. No tema claro, --signal-ink vira #A83500.

Use o papel, não o primitivo

Em componente, escreva var(--signal) e var(--ink-secondary). Os primitivos --sh-* existem só para os papéis apontarem para eles. Assim o tema claro funciona de graça.

Cores da marca

#FF5400
Laranja alta visibilidade--sh-orange-500 · --signal
#173DB8
Azul ação obrigatória--sh-blue-600 · --mandatory
#0B0C0E
Concreto--sh-concrete-950 · --ground
#F4F4F1
Branco sinal--sh-concrete-050 · --ink

Rampas

Laranja · --sh-orange-*
050
200
300
400
500
600
700
800
Azul · --sh-blue-*
050
200
300
400
500
600
700
800
Concreto · --sh-concrete-*
000
050
100
200
300
400
450
500
600
700
800
900
950

As cinco condições

Um canal de marketplace está sempre em uma destas cinco condições. Elas vêm da sinalização de segurança, e a marca já ocupa duas delas, o que significa que estado nunca precisa de uma cor estranha ao sistema.

Condições operacionais, cor, significado e uso
CondiçãoCampoTinta no escuroQuando
Operando#00843D#4BD98AConta conectada, sincronizando sem erro.
Obrigatório#173DB8#8EA3F2Falta uma ação do seller: autorizar escopo, reconectar OAuth.
Em curso#FF5400#FF7733Operação rodando agora: publicando lote, atualizando ficha.
Atenção#F5B700#FFD04APassou, mas com ressalva: atributo faltando, qualidade baixa.
Parado#C8102E#FF8195Falhou e exige intervenção. Nada avança até resolver.

A mesma peça nos dois temas

Escuro é o padrão da identidade; claro é a variante. Nenhum componente muda de código entre os dois: o que muda são os papéis. Repare que o laranja continua campo nos dois, mas deixa de ser tinta no claro.

Escuro · padrão
02
Shopee — Loja oficial
Publicando lote · 38 de 40
Em curso

Texto de apoio, com um laranja legível como tinta.

Claro · variante
02
Shopee — Loja oficial
Publicando lote · 38 de 40
Em curso

Texto de apoio, com o laranja escurecido para passar no claro.

Contraste verificado

Estes números foram medidos sobre os tokens deste arquivo, não estimados. Rode node brand-kit/contrast.mjs depois de mexer em qualquer cor. Se um par cair abaixo do mínimo, o script reprova.

Razões de contraste medidas por par de cores
ParTemaRazãoMínimoVeredito
Texto sobre fundoEscuro17,76:14,5Passa
Texto secundário sobre fundoEscuro8,60:14,5Passa
Texto terciário sobre placaEscuro5,55:14,5Passa
Laranja 500 como tintaEscuro6,08:14,5Passa
Preto sobre laranja 500Ambos6,52:14,5Passa
Branco sinal sobre azul 600Ambos7,95:14,5Passa
Azul 600 como tintaEscuro2,23:14,5Proibido
Branco sobre laranja 500Ambos3,22:14,5Proibido
Laranja 500 como tintaClaro2,92:14,5Proibido
Azul 600 como tintaClaro7,95:14,5Passa
03

Tipografia

Duas famílias, e a primeira faz o trabalho de duas. Archivo tem eixo de largura real: em 70 vira placa de corredor, em 100 vira texto corrido. Martian Mono carrega dado, e só dado.

As famílias

Archivo · variável 62–125 largura, 100–900 peso

Doca 04
Expedição

Grotesca desenhada para sinalização e leitura em corpo pequeno. O eixo de largura é o motivo da escolha: dá placa condensada e texto normal sem trocar de família, então uma requisição de fonte serve o sistema inteiro.

Martian Mono · variável 75–112,5 largura

D-04-C · MLB2841
--sh-space-5: 24px

Mono técnica de largura variável. Entra em endereço de doca, nome e valor de token, SKU, código de anúncio, número tabular e bloco de código. Nunca entra em título nem em texto corrido para “parecer técnico”.

Escala

Numeral de docaclamp 56–96px · wdth 75 · 700 · mono
04
Placa 1clamp 36–72px · wdth 70 · 900 · caixa alta
Expedição
Placa 2clamp 30–48px · wdth 76 · 900 · caixa alta
Tipografia
Placa 3clamp 24–32px · wdth 78 · 900 · caixa alta
Componentes
Placa 422px · wdth 78 · 900 · caixa alta
Conectar conta
Chamada18px · wdth 100 · 400 · entrelinha 1,75
Publique cem anúncios por conversa, sem abrir o seller center.
Corpo16px · wdth 100 · 400 · entrelinha 1,6 · medida 68ch
O hub conecta suas contas de marketplace e o CRM ao cliente de LLM que você já usa. Criar anúncio, corrigir ficha, republicar lote: tudo por conversa, no mesmo lugar onde você já pede as coisas.
Nota14px · wdth 100 · 400
Aplica-se a contas conectadas com escopo de escrita autorizado.
Etiqueta12px · mono wdth 87,5 · 500 · caixa alta · +0,14em
Endereço de posição
Micro11px · mono wdth 75 · 500 · caixa alta
Operando

Regras

Medida de 68ch no texto corrido

Use --sh-measure. Linha mais longa que isso e o olho perde o começo da próxima.

Caixa alta só em placa e etiqueta

Título de doca, rótulo e botão. Frase inteira em caixa alta não se lê, se soletra.

Mono não é fantasia

Martian Mono entra onde há dado, código, medida ou endereço. Um parágrafo em mono porque o produto é técnico é o erro mais comum deste sistema.

Nada de largura abaixo de 70

Archivo vai até 62, mas abaixo de 70 as contrafomas fecham e a placa some no corpo pequeno.

04

Espaço e grade

Base de 4px, como marcação de piso. Grupo apertado, separação generosa, e sempre mais espaço acima de um título do que abaixo: é o espaço que agrupa, não a linha.

Escala

--sh-space-14px
--sh-space-28px
--sh-space-312px
--sh-space-416px
--sh-space-524px
--sh-space-632px
--sh-space-748px
--sh-space-864px
--sh-space-996px
--sh-space-10128px

Medidas de layout

Tokens de layout e seus valores
TokenValorUso
--sh-shell-max1320pxLargura máxima do corredor.
--sh-gutter20–56pxMargem lateral, fluida.
--sh-measure68chMedida do texto corrido.
--sh-measure-tight46chChamada, legenda, coluna estreita.
--sh-tap-min44pxAlvo de toque mínimo.

Um ritmo só na página inteira

Escolha os degraus e repita. Um trecho denso paga um trecho calmo. Variação de densidade é o que dá cadência; valor solto de espaçamento é o que dá bagunça.

05

Forma

O raio não foi escolhido, foi medido: o ladrilho do símbolo tem 20 de raio em 93 de lado. Toda superfície quadrada do sistema segue essa proporção.

Raio · a regra do módulo

--sh-radius-xs · 3px
--sh-radius-sm · 6px
--sh-radius-md · 10px
--sh-radius-lg · 16px

Superfície quadrada usa 21% do lado

--sh-radius-module. Ladrilho de 64px pede 13px; de 24px pede 5px. É o que mantém o parentesco com o símbolo quando a peça é quadrada. Superfície retangular usa a escala fixa acima.

Linha e elevação

Hairline · 1px · --line-hairline

Separa o que já está agrupado. É o padrão.

Marcada · 2px · --line-marked

Divide zonas: cabeçalho de tabela, limite de seção.

Pintada · 6px · --sh-border-painted

Marcação de piso. Carrega estado no topo da doca, nunca na lateral, e nunca em texto ou alerta.

--elev-plate

Placa apoiada. Quase nada: a sinalização é plana.

--elev-overhead

Placa suspensa. Cabeçalho fixo, menu aberto. Coisas que realmente pairam sobre o corredor.

--elev-lifted

Painel modal. Um por vez na tela, e só quando a tarefa exige foco protegido.

Sombra tem deslocamento e desfoque

Halo colorido sem deslocamento é decoração, não profundidade. Se a peça não paira de verdade, ela não tem sombra.

Fita de risco

A peça assinatura. Marca limite: topo de página, fim de seção crítica, borda de zona restrita. Listra a −45°, passo de 22px. Nunca preenche área, nunca vira textura de fundo, nunca aparece duas vezes na mesma dobra.

Laranja marca limite operacional. Azul marca limite de autorização: a faixa que separa o que exige consentimento explícito do seller.

06

Movimento

Uma gramática só: a coisa avança no trilho e assenta. Nunca aparece do nada, nunca pulsa, nunca chama atenção sem ter mudado de estado.

Durações e curvas de movimento
TokenValorPara quê
--sh-dur-snap140msResposta de controle: hover, foco, pressionar.
--sh-dur-advance320msMudança de estado: doca troca de condição.
--sh-dur-settle640msEntrada de bloco na tela.
--sh-ease-snapcubic-bezier(.2,.9,.3,1)Controle. Sai rápido, para seco.
--sh-ease-settlecubic-bezier(.16,1,.3,1)Assentamento exponencial. O padrão.
--sh-ease-inoutcubic-bezier(.65,0,.35,1)Percurso com ida e volta.

O conteúdo já está visível

A animação de entrada só existe quando há JS. Sem JS, sem observador ou com prefers-reduced-motion, tudo aparece direto. Movimento nunca é pré-requisito para ler.

Nada de efeito espalhado

Um momento orquestrado por página. Hover em tudo que se mexe é ruído, não vida.

Movimento indica progresso real

Se o lote está publicando, a barra anda de verdade. Movimento que finge trabalho quebra a confiança de quem opera cem anúncios por dia.

07

Ícones

Grade de 24, traço de 2, ponta reta e junta viva. Desenhados como pictograma de sinalização, não como ilustração. É o mesmo raciocínio da placa de corredor.

Doca
Conexão
Conversa
Catálogo
Etiqueta
Rota
Token
Verificado
Alerta
Parada

Três tamanhos, um traço aparente

16px usa traço 2,4; 24px usa 2; 32px usa 1,8. O peso óptico fica igual nos três.

Emoji não é ícone

Nem glifo Unicode. Ícone é desenhado, em SVG, nesta grade. Um 🚀 numa interface de operação quebra o sistema inteiro.

08

Componentes

O núcleo que o site e as primeiras telas do produto precisam. Cada peça aparece com todos os seus estados. Um componente sem estado de erro e de carga não está pronto para produção.

Botão

Uma ação laranja por tela: ela é a saída principal. Azul é ação obrigatória de autorização: conectar conta, aprovar escopo. Vermelho é destrutivo e sempre pede confirmação.

Campo

Até 60 caracteres. O marketplace corta o excedente sem avisar.
Só aparecem contas com escopo de escrita autorizado.
SKU não aceita espaço nem barra. Use TWS53-PRETO.
Bloqueado enquanto a campanha de desconto estiver ativa.

O erro nomeia o problema e a saída, nas palavras de quem cadastra. "Campo inválido" não é mensagem de erro, é o sistema se recusando a ajudar.

Doca de canal

Dados sintéticos Nomes, números e horários abaixo são de demonstração.

01
Mercado Livre — Conta principal
1.284 anúncios · sincronizado há 2 min
Operando
02
Shopee — Loja oficial
Publicando lote · 38 de 40
Em curso
03
Amazon — Seller central
12 anúncios sem atributo obrigatório
Atenção
04
Magalu — Parceiro
Autorização expirada há 3 dias
Parado

Romaneio

Dados sintéticos

Últimas operações executadas por conversa
EndereçoOperaçãoCanalItensCondição
D-01-AReescrever ficha técnicaMercado Livre40Operando
D-02-CPublicar loteShopee38Em curso
D-03-BCorrigir atributo obrigatórioAmazon12Atenção
D-04-ARenovar autorizaçãoMagalu1Parado
D-01-DAjustar preço por concorrênciaMercado Livre116Obrigatório

Conversa

É aqui que o produto acontece: o seller fala com o LLM que já usa, e o hub executa nas contas dele. A chamada de ferramenta fica visível, porque quem opera cem anúncios precisa ver o que foi feito, não confiar no resumo.

Dados sintéticos

Seller
Pega os 40 fones que estão sem ficha técnica no ML e reescreve. Depois publica os mesmos na Shopee.
Hub
ml_items_searchstatus=active · attr_missing=true40 itens
ml_item_description_updatelote · 40 itens40 ok
shopee_item_createlote · 40 itens38 ok · 2 em fila

Reescrevi as 40 fichas no Mercado Livre e publiquei 38 na Shopee. Dois ficaram na fila porque a categoria exige certificado Anatel. Te aviso quando destravar.

09

Voz

Linguagem de quem vende. Direta, com número quando há número, sem jargão corporativo e sem prometer o que o produto ainda não faz.

O controle nomeia a ação

Publicar lote, não Continuar. Quem lê o botão precisa saber o que vai acontecer com os anúncios dele.

O erro dá a saída

SKU não aceita espaço nem barra. Use TWS53-PRETO. Diz o problema e o próximo passo, na mesma frase.

Número em vez de adjetivo

38 de 40 publicados vale mais que quase tudo publicado. Quem opera em lote conta.

Sem vocabulário de lançamento

Revolucionar, transformar, potencializar, disruptivo, game changer. Nada disso descreve o que o hub faz numa conta de marketplace.

Sem prova inventada

O produto não tem depoimento, número de cliente, benchmark nem parceria oficial declarada. Enquanto não tiver, nenhuma peça afirma que tem.

Roadmap não vira promessa

Canal que ainda não está em produção se diz "em desenvolvimento", nunca aparece numa lista de canais suportados sem marcação.

10

Tokens

Três camadas: primitivo é a tinta, papel é o significado, componente é a medida fixa. Em código você usa papel. É o que faz o tema claro funcionar sem tocar em nada.

Como consumir

HTML estático
<link rel="stylesheet" href="brand-kit/css/fonts.css">
<link rel="stylesheet" href="brand-kit/css/tokens.css">
<link rel="stylesheet" href="brand-kit/css/system.css">

Copie brand-kit/fonts/ junto. Sem fonts.css a placa de corredor cai em Arial, e o sistema perde a voz.

Em componente
.minha-peca {
  background: var(--plate);
  color: var(--ink);
  border-radius: var(--sh-radius-md);
  padding: var(--sh-space-5);
}

tokens.json para build e agente

Mesmos valores em JSON, para gerar preset de Tailwind, tema de biblioteca, ou para uma IA ler antes de escrever tela.

Valor solto é dívida

Um #FF5400 escrito à mão em componente sobrevive à próxima mudança de tema e quebra sozinho. Se falta um token, crie o token.

Papéis de cor

Papéis de cor, valor no tema escuro e uso
PapelEscuroUso
--ground#0B0C0EO chão. Fundo da página.
--deck#131519Zona sobre o chão: cabeçalho, faixa.
--plate#1C1F25Placa. A superfície de componente.
--plate-raised#262A31Placa sobre placa.
--plate-sunken#000000Rebaixo: campo de entrada, bloco de código.
--ink#F4F4F1Texto principal.
--ink-secondary#A9ACB2Texto de apoio.
--ink-tertiary#9096A1Rótulo, metadado, placeholder.
--signal#FF5400Campo laranja: ação primária, faixa, numeral.
--signal-ink#FF7733Laranja como texto.
--ink-on-signal#000000Texto sobre laranja. Sempre preto.
--mandatory#173DB8Campo azul: autorizar, conectar.
--mandatory-ink#8EA3F2Azul como texto no escuro.
--mandatory-stroke#5C7BEAAzul como borda e ícone no escuro.
--focus-ring#FF7733Anel de foco. Nunca removido.