Escuro (padrão)
.botaoTinta com texto branco. A ação principal de uma tela ou de um grupo.
Um botão com efeito por grupo de ações. O resto só troca de fundo.
O .botao é o botão da marca: pílula com uma luz que gira pela borda. Os secundários (.fantasma e .translucido) não têm efeito nenhum. Cada exemplo abaixo está ao vivo: passe o mouse, clique e abra Código para copiar o HTML exato.
.botao4
Modelo shiny button: pílula Inter 600 com seta depois do rótulo e um contorno de luz (degradê cônico) que gira devagar pela borda, em 3 segundos. É a ação principal do grupo. Quatro estilos:
.botaoTinta com texto branco. A ação principal de uma tela ou de um grupo.
.botao.claroBranco com anel fino, sem trama, brilho nem halo por dentro. Ação principal sobre fundo colorido; o "Entrar com Google".
.botao.contornoMiolo da cor do fundo onde está e anel Tinta 32%. Ação que precisa de destaque sem pesar.
.botao.destaqueArdósia. O botão principal de uma seção escura ou de chamada.
O .botao.contorno pinta o miolo com a cor do lugar onde está: Tela por padrão e dentro de .bloco; branco dentro de .cartao, .popover e .janela; Névoa dentro de .bloco.nevoa e da barra superior. Em outro fundo, o miolo aparece como uma mancha.
A altura muda com o lugar: 44 é o padrão; 36 em cabeçalho de cartão e janela; 32 em linha de tabela; 52 em capa; cheio em cartão de entrar e formulário estreito.
.pequeno · .compacto · (padrão) · .grandeO tamanho combina com qualquer estilo.
.botao.claro.pequenoAs classes se somam.
.botao.cheioLargura toda do contêiner, 48px de altura.
Todo .botao nasce com a seta → depois do rótulo (desenhada pelo CSS, não vai no HTML). Três classes trocam ou tiram a seta.
.baixa · .sobeTrocam a seta pelo ícone de baixar ou de subir. No hover o ícone desce ou sobe 2px.
.sem-setaTira a seta. O ícone entra dentro do <span>, antes do texto (18px).
.botao.claro.cheio.sem-setaO único login do time. O G vai num disco branco (.g-disco, 24px, em base.css: vale em qualquer botão desde 28/10/2026). Só contas @impulsamos.es.
Lado a lado, parados para você comparar. Os botões das seções acima estão ao vivo: passe o mouse para ver o movimento de verdade.
:hover · :focus-visible · :active · :disabledFoco pelo teclado = o visual do hover + o anel --sombra-foco (28/10/2026).
cubic-bezier(.25,1,.5,1)).disabled no HTML, opacidade 45%, cursor proibido, giro parado..claro · .contorno · .destaqueCorrigido no DS em 28/10/2026: o fundo troca em todos os estilos e temas. Claro → Bruma; contorno → Ardósia com texto branco; destaque → Tinta. Cada estilo só define as variáveis (--b-fundo, --b-fundo-hover…); o hover troca --b-cor e --b-luz-agora, que nenhum estilo define.
Dentro de .cartao.destaque ou .bloco.escuro (Ardósia) os botões se viram sozinhos, sem classe nova: o escuro vira branco com texto Ardósia, o contorno vira anel branco, fantasma e translúcido viram branco 12%.
.cartao.destaque .botaoO cartão mais importante da seção.
.bloco.escuro .botaoA chamada dentro de um cartão branco.
O rótulo do .botao vai sempre dentro de um <span>. Não é enfeite: o efeito depende dele.
<button class="botao"><span>…</span></button>O botão já tem ::before (trama) e ::after (brilho). Faltam camadas: o halo é o span::before e a seta é o span::after. O span também alinha o ícone ao texto (gap 8px).
<button class="botao"><span>Salvar</span></button>, um span só, filho direto..sem-seta.<button>: o botão perde a seta e o halo..fantasma · .translucido2
Sem efeito, só troca de fundo. Sem luz, sem giro, sem ícone que anda (a luz na borda deles foi reprovada em 27/10/2026). Hover em 0,15s; clique encolhe para 97%.
.fantasmaBranco com contorno fino. Todas as ações do grupo menos a principal: Cancelar, Ver detalhes, Copiar. 36px; .grande 44px.
.fantasma.perigoAção que apaga ou remove. Texto vermelho semântico; hover no fundo de erro. Sempre pede confirmação numa .janela.
.translucidoBranco 60% com borda embutida. Controle sobre Névoa, degradê ou foto: barra superior, cartão de destaque. 44px; .compacto 36px.
:hover · :active · :disabledFantasma: hover Bruma Clara + borda Bruma Profunda. Translúcido: branco 85%. Foco pelo teclado: os dois ganham o anel --sombra-foco.
details.baixarUm botão Baixar abre Em preto (tinta) e Em branco. Para arquivos de marca (logotipo, símbolo, variações).
O menu abre para cima, em vidro, 190px. Cada opção tem a bolinha da cor, o nome e o código. Fecha ao clicar fora ou com Esc (comum.js). Os dois arquivos existem lado a lado: nome.svg e nome-branco.svg.
.icone · .redondo2
Sem texto, então sempre com aria-label, que diz a ação.
.iconeQuadrado de 32px, raio 12, ícone Tinta 46%. Ações de linha de tabela (⋯), fechar, navegar o calendário. Hover: fundo 4% e ícone Tinta.
.redondoCírculo translúcido de 44px da barra superior (sino, tema, gaveta). O .ponto de 7px marca não lido (Ardósia; Lima no escuro).
:hoverO .icone e o .redondo recebem o anel de foco do teclado (o do redondo soma a borda embutida).
Um .botao por grupo de ações. As outras são fantasma (ou translúcido sobre Névoa). A ação principal fica à direita; Cancelar vem antes.
Cancelar fantasma, Salvar botão.
Ações no .acoes do .cartao-cabeca; o botão em .compacto.
Dois efeitos competem e ninguém sabe qual é a ação principal.
Apagar não é a ação convidativa da tela: vai no .fantasma.perigo, com confirmação.
.fantasma.perigo + dialog.janelaClique em Excluir: abre a <dialog class="janela"> com showModal(). Na janela, Cancelar antes e a ação à direita, as duas em fantasma; o texto diz que nada se perde (vai para a lixeira). Nunca confirm().
.alternar · .chip2
Botões de escolha, não de ação: trocam a vista ou filtram a lista. Sem efeito; o escolhido muda de fundo. O DS não traz JS para eles: a tela troca a classe .ativo.
.alternarDois botões num trilho Névoa (Grade | Lista). O ativo é branco com sombra; o outro, Tinta 66%. Botões de 28px, ícone 14. Foco pelo teclado: anel --sombra-foco, também no ativo (somado à sombra).
.chip · .chip.ativoFundo Névoa, 32px, um tamanho só. Ativo = Tinta com texto branco (Lima no escuro). .n = contagem; .fechar = remove o filtro.
:hover · .ativoHover: Bruma Clara. Foco do teclado: anel Bruma Profunda. Dentro de .cartao.destaque: branco 12%, ativo branco com texto Ardósia.
Medidas e tokens exatos do base.css. Clique num token para copiar.
| Classe | Altura | Respiro lateral | Fonte | Ícone | Uso |
|---|---|---|---|---|---|
.botao.pequeno | 32px | 14px | Inter 600 12px | 18 (gap 6) | Linha de tabela, lista densa |
.botao.compacto | 36px | 16px | Inter 600 12,5px | 18 | Cabeçalho de cartão, janela |
.botao | 44px | 22px | Inter 600 13px | 18 | Padrão |
.botao.grande | 52px | 28px | Inter 600 14,5px | 18 | Capa, chamada |
.botao.cheio | 48px | largura 100% | Inter 600 13px | 18 | Entrar, formulário estreito |
.fantasma | 36px | 16px | Inter 500 12,5px | 15 (gap 6) | Ações secundárias |
.fantasma.grande | 44px | 18px | Inter 500 13px | 15 | Ao lado de um .botao padrão |
.translucido | 44px | 18px | Inter 500 12,5px | 16 (gap 8) | Barra superior, sobre Névoa |
.translucido.compacto | 36px | 16px | Inter 500 12,5px | 16 | Cartão de destaque |
.icone | 32 × 32 | — | — | 17, Tinta 46% | Ação de linha, fechar |
.redondo | 44 × 44 | círculo | — | 18, Tinta 66% | Barra superior |
.chip | 32px | 14px | Inter 500 12,5px | 14 (gap 8) | Filtro |
.alternar button | 28px (trilho 34) | 12px | Inter 500 12,5px | 14 (gap 6) | Grade | Lista |
As cores do .botao são propriedades CSS próprias (--b-*). Cada estilo só troca os valores. Tema claro:
| Propriedade | Escuro | .claro | .contorno | .destaque | Sobre Ardósia |
|---|---|---|---|---|---|
--b-fundo | --tinta | #fff | --tela (contexto) | --ardosia | #fff |
--b-fundo-hover | --ardosia | --bruma | --ardosia | --tinta | --bruma |
--b-texto / hover | #fff / #fff | --tinta-fixa / igual | --tinta / #fff | #fff / #fff | --ardosia / --tinta-fixa |
--b-anel | branco 8% | --linha-forte → Ardósia 25% | --tinta-32 → transparente | branco 12% | transparente |
--b-luz → hover | --aco → --bruma | --aco → --ardosia | --aco → --bruma | --bruma-profunda → --bruma | --bruma-profunda → #fff |
--b-brilho-hover | #fff | --tinta | #fff | #fff | --bruma |
--b-halo | --bruma-profunda | (sem halo) | --bruma-profunda | --aco | --bruma |
--b-pontos | #fff | (sem trama) | --ardosia | #fff | --ardosia |
| Movimento | Valor | Onde |
|---|---|---|
| Giro da luz | --b-duracao: 3s linear, infinito | Borda, trama e brilho do .botao |
| Giro extra no hover | 7,5s linear, ao contrário, somado (animation-composition: add) | .botao em hover/foco |
| Troca de cor do .botao | .6s cubic-bezier(.25, 1, .5, 1) | Fundo, faixa, luz, texto |
| Halo que respira | 4,5s linear, escala 1 → 1,2 | .botao > span::before |
| Seta | .4s var(--ease-out), 3px | .botao > span::after |
| Hover dos secundários | .15s var(--ease) | .fantasma, .translucido, .redondo, .chip, .alternar |
| Clique | .botao: translateY(1px) scale(.98) · secundários: scale(.97) | :active |
| Movimento reduzido | Sem giro nem halo | prefers-reduced-motion: reduce |
Use sempre <button> (ou <a> se leva a outra página). Botão só de ícone leva aria-label. Área de toque: 44px é o padrão; .pequeno, .icone e .chip (32px) ficam em computador, longe de outros alvos. Foco: todos mostram o anel --sombra-foco — fantasma, ícone, chip, alternar (inclusive o ativo), .translucido, .redondo e o .botao (visual do hover + anel).
Ligue no botão de tema da lateral para ver esta página no escuro. O que muda nos botões ([data-tema="escuro"] no base.css):
| Botão | No escuro |
|---|---|
.botao | Fundo Bruma com texto Tinta; hover branco com a luz da borda em Lima |
.botao.claro | Continua branco; anel some; luz do hover Lima |
.botao.contorno | Miolo da cor do fundo escuro, anel claro, trama Bruma; luz do hover Lima |
.botao.destaque | Continua Ardósia; hover Ardósia + 28% Aço; luz Lima |
.fantasma | Fundo --branco escuro (#1A2C3A); hover --bruma-clara escuro (#1F3546) com borda Tela 20% |
.translucido · .redondo | Tela 6%; hover Tela 12%. O .ponto ganha anel da cor da casca |
.chip.ativo | Lima com texto Tinta |
| Anel de foco | --sombra-foco vira Lima 50%, 3px |