AKRIBIS GroupBrand
Sistema digital
3.1

Tokens

Proposto

Quais valores o sistema define, e como cada site os recebe?

Já decidido

  • Os tokens de cor existem e este site os consome: base.css (neutros, semânticos, assinaturas), um CSS por marca com sua escala e funções em claro e escuro, all.css com todas as marcas sob data-brand, e tokens.json no formato DTCG (ADR-0015).
  • Os tokens de tipografia existem e este site os consome: type.css com as fontes, a escala, as entrelinhas, o tracking, a medida e as funções (--type-…), e os grupos font e typography de tokens.json (ADR-0020, proposta).
  • Os tokens de forma existem e este site é construído só com eles: shape.css com espaçamento, raios, molduras, movimento, foco e elevação, e os grupos space, radius, layout, motion, focus e elevation de tokens.json (ADR-0021, proposta).

Especificação

  1. O contrato são propriedades CSS personalizadas: um site vincula /tokens/base.css, /tokens/type.css, /tokens/shape.css e depois /tokens/<marca>.css, e estiliza só com as funções (--color-page, --color-text, --color-accent…; font: var(--type-body)…), nunca com passos crus da escala nem com tamanhos próprios.
  2. Um componente que mostra outra marca é envolvido em data-brand="<marca>" com all.css: as funções se resolvem para essa marca dentro do elemento.
  3. Claro e escuro: o CSS de cada marca traz ambos; todo site aparece claro e o escuro é ativado só a pedido, com data-theme="dark" no elemento raiz, que o seletor de tema define e o cookie akribis-theme lembra; nunca pela preferência do sistema (ADR-0037, proposta).
  4. tokens.json (DTCG) é a mesma fonte para ferramentas que não leem CSS.
  5. Forma (ADR-0021): um espaçamento é um múltiplo de 0,25 rem (4 px), --space-1 a --space-24 (0,25 a 6 rem): 1–2 dentro de um controle e entre um rótulo e seu valor; 3–4 dentro de um componente; 6–8 entre componentes; 12–20 entre seções. Nada no meio.
  6. Raios: 0 em superfícies, cartões, tabelas e imagens (cantos justos leem-se precisos); 2 px em etiquetas e chips; 4 px em controles; 8 px em diálogos, menus e avisos; pílula em estados; redondo em avatares e pontos.
  7. Molduras: contêiner 80 rem, conteúdo 64 rem, coluna de leitura 46 rem; margem lateral 1 rem, 2 rem a partir de md; 12 colunas com 1,5 rem de separação; pontos de quebra sm 36, md 48, lg 64, xl 80 rem, sempre do celular para cima (só min-width); alvos interativos de pelo menos 1,5 rem (24 px), controles de 2,75 rem (44 px) de altura; a barra primária de um site, 3,25 rem (52 px).
  8. Movimento: 120 ms para uma mudança de estado (hover, foco), 200 ms para revelar (menus, tooltips, acordeões), 320 ms para mover (diálogos, painéis); curvas padrão cubic-bezier(0.2, 0, 0, 1) e saída cubic-bezier(0.4, 0, 1, 1). Com prefers-reduced-motion toda duração é 0.
  9. Foco: um anel de 2 px no destaque, 2 px por fora do elemento, em todo elemento interativo; sobre um controle preenchido com destaque, o anel é on-accent e fica por dentro da borda.
  10. Elevação: a estrutura é desenhada com filetes de 1 px em --color-line e com faixas; a única sombra é para sobreposições (menus, diálogos, avisos) e nunca para cartões; camadas raised 1, sticky 10, overlay 100, toast 1000.
  11. Este site se estiliza só com estes tokens: o build falha diante de um espaçamento, raio, sombra, duração ou ponto de quebra próprio.

Para repensar

  • Se alguma vez for preciso uma segunda elevação com sombra, ou sombras diferentes no modo escuro além da opacidade.
  • Tailwind como camada opcional sobre as propriedades CSS.

Evidência para auditar

  • brand/shape.yaml · brand/src/shape.ts · brand/test/shape.test.ts (the ladder, the files and the lint of this site's own CSS)
  • Draft 0.2 brandbook artifact (2 Oct 2026), section 08 Shape & motion: 4 px base, radii 2/4/6/8, hairlines and bands, one shadow for overlays, 2 px focus, 120/200/320 ms
  • This site's CSS before the tokens: 19 distinct gaps and paddings, four breakpoints (36, 40, 48, 56 rem), max-width queries
  • WCAG 2.2: 1.4.11 non-text contrast, 2.4.13 focus appearance, 2.5.8 target size, 2.3.3 animation from interactions
  • AKRIBIS-Group/design@main · brand/tokens/, packages/theme/
  • Token files of akribis_info, akribis_one, akiot_es, akleia_info, solfarma_com

Entrega

  • tokens.json
  • base.css
  • type.css
  • shape.css e um arquivo CSS por marca.

Decisão

Figuras

Os tokens, publicados em cada build: base.css (neutros, semânticos, assinaturas), um CSS por marca com escala e funções em claro e escuro, all.css com todas as marcas sob data-brand, e tokens.json no formato DTCG.

Espaçamento múltiplos de 0,25 rem (4 px); nada no meio

  • --space-1 · 0.25 rem · 4 px
  • --space-2 · 0.5 rem · 8 px
  • --space-3 · 0.75 rem · 12 px
  • --space-4 · 1 rem · 16 px
  • --space-5 · 1.25 rem · 20 px
  • --space-6 · 1.5 rem · 24 px
  • --space-8 · 2 rem · 32 px
  • --space-10 · 2.5 rem · 40 px
  • --space-12 · 3 rem · 48 px
  • --space-16 · 4 rem · 64 px
  • --space-20 · 5 rem · 80 px
  • --space-24 · 6 rem · 96 px

Raios

  • --radius-none · 0px
  • --radius-tag · 2px
  • --radius-control · 4px
  • --radius-dialog · 8px
  • --radius-pill · 999px
  • --radius-round · 50%

Molduras e grade

Contêiner
80rem
Conteúdo
64rem
Coluna de leitura
46rem
Margem lateral
--space-4 · md --space-8
Colunas
12 · separação --space-6
Pontos de quebra (só min-width)
sm 36rem · md 48rem · lg 64rem · xl 80rem
Alvo mínimo
1.5rem · controle 2.75rem

Movimento passe o cursor por uma linha: o ponto se move na sua duração; com movimento reduzido, salta

  • --duration-state · 120 ms · estado: hover, foco
  • --duration-reveal · 200 ms · revelar: menus, tooltips, acordeões
  • --duration-move · 320 ms · mover: diálogos, painéis

--ease-standard: cubic-bezier(0.2, 0, 0, 1) · --ease-exit: cubic-bezier(0.4, 0, 1, 1) · com prefers-reduced-motion, 0 ms

Foco

BotãoBotão · sobre destaque, o anel por dentro--focus-ring · 2px · offset 2px

Elevação

Superfície com filete--hairline 1px
Faixa--color-band
Sobreposição: a única sombra--shadow-overlay · --radius-dialog

Camadas (z-index): raised 1 · sticky 10 · overlay 100 · toast 1000

Os tokens de forma (ADR-0021): espaçamento em múltiplos de 0,25 rem, raios justos, as molduras e os pontos de quebra, três durações que se anulam com movimento reduzido, o anel de foco e as elevações: filetes e faixas desenham a estrutura; a única sombra é para sobreposições. Esta página é construída só com eles: o build falha diante de um valor próprio.