Clareza operacional de padrão internacional
Um sistema pequeno, rigoroso e legível nos três idiomas.
Grid suíço de 12 colunas, tipografia Funnel em escala modular 1,25, cor quase só em tinta e gelo, e o ponto vermelho da marca como único recurso gráfico. Tudo na home consome custom properties geradas de tokens.json; esta página lê o mesmo arquivo e calcula os contrastes a partir das cores aplicadas.
Princípios
Grid antes de ornamento
Rótulo nas colunas 1–3, conteúdo a partir da coluna 4. Toda seção abre com uma régua de 1 px em tinta. Hierarquia por posição e peso, não por cor.
Densidade calma
Muita informação, pouco ruído: fios em vez de caixas, cantos retos, nenhuma sombra, nenhuma foto. Respiro de 104 px entre seções no desktop.
Um acento, com regra
O vermelho só existe como ponto quadrado: marcador, item ativo, item resolvido, nó final de diagrama. Nunca em texto, nunca em fundo grande.
Três idiomas, mesmo layout
Componentes medidos com o texto mais longo (EN) e o mais denso (JA). Japonês tem modo próprio de tokens: entrelinha 1,85, tracking 0, quebra por frase.
Arquitetura de tokens
- 1 · Primitivos
color.palette.*,color.neutral.*,font.*,space.*. Valores brutos; nunca usados direto em componente. - 2 · Semânticos
color.bg|text|border|action|accent|focus|feedback. Apelidos de primitivos com mododark. - 3 · Papéis
type.display … type.numeral: composição tipográfica com modoswide,ja,ja-wide. - 4 · Componentes
Classes
.nk-*(BEM) que só leemvar(--nk-…). Estados por pseudo-classe;.is-hoveretc. só para documentação.
Nome da variável CSS = caminho do token: color.text.secondary → --nk-color-text-secondary; papéis tipográficos se desdobram em -family, -size, -weight, -line-height, -tracking. Superfície escura: atributo data-surface="dark" redefine os semânticos. Japonês: :root:lang(ja).
Cor
Paleta da Rota C validada no PLANO (§2). A rampa neutra é derivada (não é cor de marca) e existe para fios, borda de campo e texto secundário no escuro. Valores e razões abaixo são lidos da página renderizada.
Primitivos
Semânticos (claro e escuro)
| Token | Claro | Escuro | Uso |
|---|
Pares de contraste (WCAG 2.2)
Texto exige 4,5:1; componente de interface e gráfico, 3:1 (1.4.11). Calculado pela fórmula de luminância relativa do WCAG.
| Amostra | Primeiro plano | Fundo | Superfície | Razão | Mínimo | Resultado |
|---|
- Texto sempre em
text.primaryoutext.secondary. - Link e foco sempre em azul funcional.
- Verde só em status de envio.
- Vermelho em texto, título ou fundo de faixa.
- Azul como cor de destaque de título (confunde com link).
- Cinza novo fora da rampa
color.neutral.
Tipografia
Funnel Display (títulos, numeração, citação) e Funnel Sans (texto, interface, tabelas), ambas OFL. Japonês em Noto Sans JP, segunda fonte da pilha: os kana e kanji caem nela, o latim continua em Funnel. Destaque (<em>) por peso, nunca itálico.
Escala modular 1,25 · base 16 px
Papéis tipográficos
| Papel | Família | Mobile | ≥ 1024 px | Japonês | Uso |
|---|
Amostras em PT, EN e JA
Texto real das chaves do conteúdo. Cada amostra recebe o atributo lang e o modo de tokens do idioma (.nk-scope).
Espaço e grid
Base de 4 px; o nome do token é o múltiplo (space.6 = 24 px). Grid de 4, 8 e 12 colunas; container de 1280 px.
Escala de espaçamento
Grid de 12 colunas (≥ 1024 px)
Colunas 1–3: índice, eyebrow, rótulos, título de tabela de perfil. Colunas 4–12: título, texto e conteúdo (.nk-offset).
Layout, tamanhos e pontos de quebra
| Token | Valor | Modos | Uso |
|---|
Borda, raio, foco e movimento
Cantos retos por padrão, ecoando o ponto quadrado; 2 px só em botão e campo. Sem sombra: elevação é expressa por fio e por fundo gelo. O foco é um contorno azul de 2 px com 2 px de afastamento, visível sobre branco, gelo e tinta.
| Token | Valor | Uso |
|---|
Hover de botão, borda de campo, cor de link.
Ícone do menu, sinal de mais/menos da FAQ.
Zera transições e rolagem suave. Nenhum conteúdo depende de animação para aparecer.
O ponto
O quadrado vermelho do símbolo “NK.” é o único elemento gráfico do sistema. Significa sempre a mesma coisa: aqui, resolvido, ativo. Tamanhos: 6 px (marcador), 8 px (estado), 16 px (nó de diagrama). Contraste 4,95:1 sobre branco, acima dos 3:1 de elemento de interface; nunca carrega informação sozinho.
Ícones de linha
Desenhados em 24 × 24, traço 1,5 (2 px exibidos a 32), terminais retos, só retângulos e retas. Sem gráfico subindo, cifrão, moeda, calculadora, balança, lupa, check, escudo, aperto de mão ou globo. Sempre decorativos (aria-hidden): o título ao lado carrega o sentido.
Botão e link
.nk-btn + variante. Primário para a ação principal da seção (no máximo um por bloco); secundário para a alternativa. Altura 48 px (40 px na variante --sm, só no cabeçalho desktop). Abaixo de 480 px os botões de .nk-actions ocupam a largura toda.
Estados · superfície clara
Superfície escura
Link
- PapelNavegação =
<a href>; ação no lugar =<button type>. Nuncadivclicável. - TecladoTab chega, Enter ativa (Espaço também no botão). Foco visível por
:focus-visible. - Leitor de telaO rótulo é o próprio texto da chave; nada de “clique aqui”. WhatsApp e mapa abrem em nova aba com
rel="noopener". - Alvo48 × ≥ 120 px; 40 px só no desktop.
Seletor de idioma
Marcação gerada pelo i18n.js (ul.nk-lang > li > a.nk-lang__btn); o sistema só estiliza. Bandeira + código; o idioma ativo ganha peso 600 e o ponto depois do código (“PT.”, como “NK.”). Bandeira não é idioma: por isso o código está sempre visível e o nome por extenso aparece no menu.
Variantes
.nk-langbar · faixa utilitária do cabeçalho, alinhada à margem direita do grid. Altura = layout.utility-height: 44 px no mobile (alvo de toque), 36 px no desktop.
.nk-langbar--named · dentro do menu mobile: lista vertical com o nome no próprio idioma, linhas de 48 px.
- PapelLista de links com
aria-label“Idioma/Language/言語”; cada link temhreflang,langearia-currentno ativo. - Leitor de telaAnunciado como “PT — Português”, “JA — 日本語” (bandeira e código são
aria-hidden). - MobileFaixa sempre no topo da página; ao rolar, a faixa recolhe e o seletor completo segue no menu.
Cabeçalho
Duas faixas. Utilitária (gelo): telefone e e-mail no tablet/desktop, idioma à direita. Principal (branca, fio inferior): símbolo + nome e descritor, navegação em linha a partir de 1200 px, CTA compacto a partir de 768 px. O cabeçalho gruda com top: −utility-height: ao rolar, só a barra principal fica.
index.html (EN)aria-expanded="true")- Landmarks
header›navcom rótulo; link “Ir para o conteúdo” como primeiro foco. - MenuBotão com
aria-expandedearia-controls; rótulo oculto troca entreui.menuAbrireui.menuFechar. Esc fecha e devolve o foco ao botão. - Âncoras
scroll-padding-top= altura da barra, para o título não ficar sob o cabeçalho.
Cabeçalho de seção, cartão, linha de índice e pessoa
Cabeçalho de seção
Cartão (situação) e linha de índice (serviço)
- 5.2
Pessoa com retrato reservado
A moldura 4:5 com marcas de corte é o lugar exato da foto da sessão (cor natural, fundo claro uniforme, recorte cabeça e ombros). Quando a foto chegar, ela substitui as iniciais dentro da mesma moldura, com alt = nome e cargo; as marcas de corte saem.
Painel em superfície escura
- HierarquiaUm
h1por página;h2por seção;h3em cartão, pessoa, serviço e etapa. Numeração (“1.4”) é decorativa e ficaaria-hidden. - ListasCartões, serviços, etapas e pessoas são
ol/ulcomrole="list"(o reset de estilo não apaga a semântica no Safari). - RetratoMoldura vazia é
aria-hidden; a nota da sessão fotográfica é texto real.
Diagramas
Três diagramas, todos com a mesma gramática: fio de 1 px em tinta, nós quadrados vazados, o ponto como nó resolvido. Nenhum diagrama carrega informação que não esteja no texto.
Etapas (Como trabalhamos)
Horizontal a partir de 768 px; vertical abaixo. A 4ª etapa é o ponto, e o fio tracejado depois dela indica recorrência mensal.
Comparativo sem × com
Tabela real (th scope="col"): cada linha pareia a tarefa de hoje com a que a NK assume. Abaixo de 768 px vira pares empilhados com a legenda no topo.
Calendário (hero) e rota de idiomas (empresas estrangeiras)
O calendário mostra a rotina como padrão repetido semana a semana, com o ponto no fechamento do mês; some abaixo de 768 px. A rota liga as bandeiras da matriz (JA · EN) ao símbolo NK e ao Brasil (PT), com os códigos lidos de meta.langShort e as bandeiras de NK.flags.
Tabela de perfil (会社概要)
Padrão dos sites corporativos japoneses: rótulo à esquerda em gelo, valor à direita, fios horizontais, sem bordas verticais. Sem tabular-nums aqui: em Funnel Sans a pontuação de CNPJ fica espaçada. Abaixo de 768 px cada linha vira rótulo pequeno sobre valor.
- Semântica
th scope="row"em cada rótulo; leitores anunciam “CNPJ, 18.494.175/0001-68”.
Pergunta frequente
<details>/<summary> nativos: funcionam sem JavaScript, com teclado e com leitor de tela. Marcador vazado = fechada; ponto = aberta. Sinal de mais/menos à direita.
- TecladoTab até a pergunta, Enter ou Espaço abre e fecha. Estado anunciado como “recolhido/expandido” pelo próprio navegador.
Campos de formulário
Rótulo visível acima do campo (nunca só placeholder). Borda border.control com 3,76:1 sobre branco e 3,42:1 sobre o painel gelo. Obrigatório é o padrão; o opcional é marcado com a etiqueta form.opcional. Erro: borda e barra lateral no vermelho do ponto, mensagem em tinta com o ponto como marcador (a cor nunca é o único sinal).
Informe um e-mail completo, como nome@empresa.com.br.
Erro · mensagem de documentação: o conteúdo ainda não tem chaves de erro por campo- Rótulo
label forreal em todos os campos;autocomplete(name, organization, email, tel, country-name). - Erro
aria-invalid="true"+aria-describedbyapontando a mensagem. Estilo também por:user-invalid, que só aparece depois da interação. - EnvioO status recebe
role="status"e foco programático (feito peloi18n.js). - SeleçãoO idioma de atendimento acompanha o idioma da página até o visitante escolher outro.
Acessibilidade (WCAG 2.2 AA)
- ContrasteTodos os pares de texto da tabela de cor passam 4,5:1; elementos de interface passam 3:1. O vermelho nunca é texto.
- FocoContorno azul de 2 px em todo elemento interativo; azul claro na superfície escura.
- Alvos≥ 44 px no mobile: idioma, menu, links do rodapé, CTA, campos (48 px).
- Estrutura
header,nav,main,footer; umh1; títulos sem saltos; tabelas com cabeçalhos. - MovimentoSem animação de entrada;
prefers-reduced-motiondesliga transições e rolagem suave. - Japonês
langcorreto na raiz e em cada link de idioma; sem itálico, sem tracking,word-break: auto-phraseeline-break: strict. - ImagensNenhuma foto. Diagramas e ícones são decorativos e repetem o que o texto diz.