Skip to content
05 Elevação

Tokens de Elevação ​

Design System · Arrow DS · Dimensão 05 Elevação

Versão: 1.0 · Status: Validado
Âncora base: #081128 (Midnight Neutral 900) cor base de todas as sombras
Depende de: Dimensão 01 Cor
Usado por: Todos os componentes de UI, arquitetura de camadas da interface

Princípios da Dimensão ​

Elevação é a dimensão silenciosa.
Cor grita. Tipografia fala. Espaço respira. Elevação organiza sem que o usuário perceba que está sendo organizado.

Em um produto como a Effecti denso em tabelas, prazos, ações e dados a profundidade é o mecanismo que impede a interface de virar ruído. É ela que diz, sem palavras: isso está embaixo, isso está em cima, isso requer sua atenção agora.

Três princípios guiam a construção:

Profundidade como comunicação, não decoração. Cada nível de sombra existe porque um elemento ocupa uma camada funcional diferente não porque ficou mais bonito com sombra.

A sombra é da marca. A cor base de todas as sombras do sistema é o Midnight Neutral #081128. Sombras pretas genéricas não existem aqui.

O pressed afunda, não flutua. Estados de pressão em elementos interativos removem a sombra o elemento recua em vez de se elevar.

Fundação ​

As sombras primitivas são construídas em escala logarítmica de blur e opacidade cada nível tem exatamente o dobro do blur do anterior. Todas as sombras usam camada dupla: uma sombra de ambiente e uma sombra direta.

PropriedadeValorDescrição
Cor base#081128Midnight Neutral 900 a cor mais profunda da Effecti
MétodoCamada duplaSombra de ambiente + sombra direta em cada nível
EscalaLogarítmicaBlur dobra a cada nível; opacidade cresce em progressão controlada
Teto de opacidade16%Conservador suficiente sem competir com cor e tipografia
css
:root {
  --shadow-color-base: 8, 17, 40; /* #081128 em RGB Midnight Neutral 900 */
}

Primitivos ​

PrimitivoValor CSSDescrição
shadow-0noneSem sombra ausência de elevação ou estado pressed
shadow-10px 1px 2px rgba(8,17,40,0.06)Sombra mínima separação sutil de superfície
shadow-20px 2px 4px rgba(8,17,40,0.08), 0px 1px 2px rgba(8,17,40,0.04)Sombra leve card em superfície base
shadow-30px 4px 8px rgba(8,17,40,0.10), 0px 2px 4px rgba(8,17,40,0.06)Sombra média hover, dropdown
shadow-40px 8px 16px rgba(8,17,40,0.12), 0px 4px 8px rgba(8,17,40,0.08)Sombra forte sticky, popover, FAB
shadow-50px 16px 32px rgba(8,17,40,0.16), 0px 8px 16px rgba(8,17,40,0.10)Sombra máxima modal, drawer
css
:root {
  --shadow-0: none;
  --shadow-1: 0px 1px 2px rgba(8,17,40,0.06);
  --shadow-2: 0px 2px 4px rgba(8,17,40,0.08), 0px 1px 2px rgba(8,17,40,0.04);
  --shadow-3: 0px 4px 8px rgba(8,17,40,0.10), 0px 2px 4px rgba(8,17,40,0.06);
  --shadow-4: 0px 8px 16px rgba(8,17,40,0.12), 0px 4px 8px rgba(8,17,40,0.08);
  --shadow-5: 0px 16px 32px rgba(8,17,40,0.16), 0px 8px 16px rgba(8,17,40,0.10);
}

Tokens Semânticos ​

Estrutura de cada token ​

elevation.{família}.{papel}
└── box-shadow (valor via alias do primitivo)

Exemplo:
elevation.surface.sm          → var(--shadow-1)
elevation.interactive.hover   → var(--shadow-3)
elevation.overlay.modal       → var(--shadow-5)

Família 01 elevation.surface ​

Papel: Elementos estáticos que habitam a página. A arquitetura de fundo.

Token semânticoPrimitivoIntenção
elevation.surface.flatshadow-0Card sobre superfície colorida, linha de tabela
elevation.surface.smshadow-1Card padrão sobre color.surface.base
elevation.surface.mdshadow-2Card sobre color.surface.raised, painel lateral
css
--elevation-surface-flat: var(--shadow-0);
--elevation-surface-sm:   var(--shadow-1);
--elevation-surface-md:   var(--shadow-2);

Família 02 elevation.interactive ​

Papel: Elementos que respondem ao toque. A elevação que comunica estado.

Token semânticoPrimitivoIntenção
elevation.interactive.restingshadow-1Botão em repouso elevação discreta
elevation.interactive.hovershadow-3Botão ou card em hover eleva para confirmar a intenção
elevation.interactive.pressedshadow-0Pressionado o elemento afunda. Remove a sombra. Fisicalidade.
css
--elevation-interactive-resting: var(--shadow-1);
--elevation-interactive-hover:   var(--shadow-3);
--elevation-interactive-pressed: var(--shadow-0);

Combinações recomendadas

elevation.interactive.resting + color.action.primary   →  botão primário em repouso
elevation.interactive.hover   + color.action.hover     →  botão primário em hover
elevation.interactive.pressed + color.action.pressed   →  botão primário pressionado
elevation.surface.flat                                 →  botão disabled (sem sombra)

Família 03 elevation.overlay ​

Papel: Elementos que flutuam acima da página. Camadas que interrompem ou complementam.

Token semânticoPrimitivoIntenção
elevation.overlay.dropdownshadow-3Select, combobox, menu de contexto
elevation.overlay.popovershadow-4Tooltip rico, date picker, popover de informação
elevation.overlay.modalshadow-5Modal, dialog de confirmação camada máxima
elevation.overlay.drawershadow-5Side sheet, drawer lateral
css
--elevation-overlay-dropdown: var(--shadow-3);
--elevation-overlay-popover:  var(--shadow-4);
--elevation-overlay-modal:    var(--shadow-5);
--elevation-overlay-drawer:   var(--shadow-5);

Família 04 elevation.sticky ​

Papel: Elementos persistentes que permanecem visíveis durante o scroll. A âncora da interface.

Token semânticoPrimitivoIntenção
elevation.sticky.headershadow-2Header fixo separação sutil do conteúdo
elevation.sticky.fabshadow-4Botão de ação flutuante
elevation.sticky.toastshadow-4Notificação toast deve ser percebida imediatamente
css
--elevation-sticky-header: var(--shadow-2);
--elevation-sticky-fab:    var(--shadow-4);
--elevation-sticky-toast:  var(--shadow-4);

Z-index Semântico ​

O fim dos números mágicos. Nenhum z-index: 9999 no código da Effecti.

TokenValorElementos
z.base0Fluxo padrão do documento
z.raised10Cards, painéis, elementos levemente elevados
z.dropdown100Dropdowns, selects, menus de contexto
z.sticky200Headers fixos, footers sticky, colunas fixas
z.popover300Popovers, date pickers, menus flutuantes
z.backdrop400Overlay/backdrop de modal
z.modal500Modal, dialog acima do backdrop
z.toast600Toast, snackbar — sempre visível acima de modais
z.tooltip700Tooltip — camada mais alta (precisa furar modais e toasts)
css
--z-base:     0;
--z-raised:   10;
--z-dropdown: 100;
--z-sticky:   200;
--z-popover:  300;
--z-backdrop: 400;
--z-modal:    500;
--z-toast:    600;
--z-tooltip:  700;

Regra de ouro: nenhum componente usa um valor numérico diretamente. Todo z-index aponta para um token.

Regras Globais do Sistema ​

Dark Mode Elevação ​

No dark mode, sombras perdem eficácia física. A solução é dupla: manter a sombra e complementar com variação de superfície.

NívelLight modeDark mode
elevation.surface.flatshadow-0shadow-0 + diferença de color.surface
elevation.surface.smshadow-1shadow-1 com opacidade reduzida em 30%
elevation.overlay.modalshadow-5shadow-4 + borda color.border.default

Relação sombra–z-index ​

Família de elevaçãoToken de z-index correspondente
elevation.surface.*z.base ou z.raised
elevation.interactive.*z.base
elevation.overlay.dropdownz.dropdown
elevation.overlay.popoverz.popover
elevation.overlay.modalz.modal
elevation.sticky.*z.sticky (toast usa z.toast)

O que nunca fazer ​

ProibidoAlternativa correta
box-shadow: 0 4px 8px rgba(0,0,0,0.2)var(--elevation-overlay-dropdown)
z-index: 9999var(--z-toast) ou valor documentado
Sombra em botão desabilitadovar(--elevation-surface-flat) = shadow-0
shadow-5 em toastvar(--elevation-sticky-toast) = shadow-4
Valores de z-index diretamente no códigoToken semântico correspondente

Decisões Estratégicas Registradas ​

Midnight #081128 como cor base de todas as sombras
Sombras pretas genéricas (rgba(0,0,0,*)) não existem no sistema. A cor base é sempre derivada do Midnight Neutral coerência cromática com a paleta da marca.

Pressed remove sombra o elemento afunda
Estados de pressão em elevation.interactive recorrem ao shadow-0. A remoção de sombra comunica fisicalidade.

Z-index semântico: nenhum número mágico no código
Toda referência de z-index no produto aponta para um token da escala.

Toast acima de tudo sempre
z.toast é o teto absoluto do sistema (600). Nenhum elemento pode ter z-index acima de toast, exceto por decisão explícita documentada.

Exemplos de Uso ​

Escala primitiva de sombras ​

shadow-0 → shadow-5 — distância perceptual uniforme

shadow-0
shadow-1
shadow-2
shadow-3
shadow-4
shadow-5

Estados interativos — o pressed afunda ​

elevation.interactive — resting · hover · pressed · disabled

resting · shadow-1
hover · shadow-3
pressed · afunda
disabled · sem elevação

Z-index semântico — escala de camadas ​

z.base → z.toast — hierarquia sem números mágicos

z.toast · 600toast, snackbar — acima de tudo
z.modal · 500modal, dialog
z.popover · 300tooltips, date picker
z.dropdown · 100selects, menus de contexto
z.base · 0fluxo padrão do documento

Arquivos de Output Dimensão 05 ​

ArquivoFormatoConteúdo
effecti_elevation_tokens_v1.cssCSSCustom Properties primitivos de sombra + tokens semânticos + z-index
effecti_elevation_tokens_v1.dartDartTokens para Flutter/Material
effecti_elevation_scale_v1.svgSVGVisualização da escala de elevação para validação no Figma

Effecti Programa de Governança de Design System · Dimensão 05 · v1.0