Operar
Listas, editor e reservas usam densidade compacta, campos 42 px e ações 44/48 px. Sem altura artificial para preencher a tela.
Consultar PresentesRevise os termos ou limpe a busca para voltar ao manual.
Uma identidade. Diferentes experiências. Referência de marca, interface e aplicação para todo o ecossistema Vutti.
Este manual reúne fundamentos, componentes e regras de aplicação. Painel de gestão, Presentes e comunicação compartilham a marca; cada superfície conserva sua função e suas decisões próprias.
As demonstrações são locais e didáticas. Não representam dados de clientes, operações, pagamentos ou resultados da Vutti.
Decisão aprovada mais recente > referência viva do produto > implementação atual compatível > fundamentos da família > histórico. Uma implementação isolada não substitui uma decisão aprovada. Tokens históricos não prevalecem sobre overrides e documentação consolidada.
Medidas por função, com escopo explícito. Dimensão de um produto não vira automaticamente regra universal.
| Elemento | Medida | Aplicação |
|---|---|---|
| Botão principal | 48 px | Ação principal da etapa |
| Ação contextual | 44 px | Operação e navegação |
| Alvo somente ícone | 44 × 44 px | Desenho 20 px, nome acessível |
| Campo | 42 px | Inter 16/22; não encolher no mobile |
| Textarea | mín. 104 px | Conteúdo livre, não componentes de kit |
| Topbar Presentes | 64 px | Container 1120; menu em telas estreitas |
| Composição | Container | Gutter | Situação |
|---|---|---|---|
| Presentes | 1120 px | 24 px desktop/tablet; 16 px mobile | Vigente |
| Focado / acesso | 720 / 450 px | Conforme superfície | Vigente; acesso público tem exceção |
| Painel operacional | 1440 px | 24 px desktop; 16 px compacto | Vigente, após a sidebar |
| Cadastro / login | 548 / 542 px | 24 / 27 px internos; 20 px mobile | Exceção PROMPT 090 |
| Sites / blog | Sem máximo universal | Conforme aplicação existente | Sem decisão global |
Listas, editor e reservas usam densidade compacta, campos 42 px e ações 44/48 px. Sem altura artificial para preencher a tela.
Consultar PresentesSidebar administrativa, container operacional, tabelas e fichas. Permissões e dados continuam sendo autoridade do servidor.
Consultar PainelSites, blog, redes e documentos partem da marca, preservam o contexto e não herdam automaticamente o app shell.
Consultar aplicações webO símbolo V e os assets oficiais preservam a identidade da família Vutti. Não redesenhar, distorcer ou recolorir o arquivo para simular uma variante aprovada.
Área de proteção e mínimo de redução não foram consolidados nas fontes. Os arquivos do acervo incluem variações de wordmark, preservadas como recebidas. Este manual não transforma tamanhos de demonstração em norma. Exportação: medidas normativas null.
| Arquivo | Origem | Uso identificado |
|---|---|---|
| vutti-logo.webp | Upload público do site | Logotipo claro sobre superfície escura |
| vutti-symbol.png | Asset do SaaS | Símbolo V |
| vutti-presentes.png | Asset do site Presentes | Mesmo símbolo, preservado como recebido |
| vutti-institutional.png | Upload institucional do site | Arquivo original disponível; não recortar como novo master |
Arquivos disponibilizados na pasta de logos do projeto. Variações Vutti e aplicações CRM são identificadas separadamente, sem substituir automaticamente o símbolo já vigente nos produtos. Os originais permanecem íntegros; dimensões de arquivo não definem redução mínima.
1080 × 1080 pxBaixar original 180 × 180 pxBaixar original 1081 × 1081 pxBaixar original 1081 × 1081 pxBaixar original 764 × 214 pxBaixar original 765 × 214 pxBaixar original 180 × 180 pxBaixar original 180 × 180 pxBaixar original 1921 × 1081 pxBaixar original 1080 × 1080 pxBaixar original 1080 × 1080 pxBaixar original 1080 × 975 pxBaixar original 1077 × 1054 pxBaixar original 1055 × 1031 pxBaixar original 1921 × 1081 pxBaixar original 1921 × 1081 pxBaixar original 1921 × 1081 pxBaixar original 1921 × 1081 pxBaixar original 1921 × 1081 pxBaixar original 1921 × 1081 pxBaixar original Separar marca, ação e superfície operacional. A paleta do Presentes abaixo reflete o CSS efetivo depois dos overrides; valores históricos estão registrados como histórico.
linear-gradient(135deg, #00e497, #01b5f2)| Papel | Claro efetivo · Presentes | Escuro · Painel |
|---|---|---|
| canvas | #f5f7f6 | #111a23 |
| surface | #ffffff | #1c2934 |
| surfaceAlt | #e7f6f2 | #263641 |
| text | #17252b | #f1f5f8 |
| muted | #68777b | #b4c2cb |
| border | #dfe7e4 | #354652 |
| accent | #087d72 | #61d9c3 |
| accentStrong | #05645c | #95eadb |
O gradiente efetivo de ação é linear-gradient(135deg, #00e19f 0%, #00b6ea 100%). A combinação original de marca permanece distinta desse acabamento. Não trocar todos os verdes pelo verde vivo do logo.
O tema escuro do Painel já existe. Cores semânticas escuras usadas nas demonstrações são uma adaptação de leitura do manual, não uma paleta completa aprovada para o futuro Presentes. Estados usam texto e ícone. A borda sutil não substitui um indicador de foco com contraste funcional.
O CSS inicial trazia #fff9f1, #fffdf8, #242424 e #0f8278. Overrides posteriores do redesign operacional definem #f5f7f6, #ffffff, #17252b e #087d72. Não usar o primeiro :root encontrado como prova da aparência atual.
Três famílias por função. A escala da referência viva do Presentes prevalece sobre os tamanhos históricos da matriz de identidade.
Clareza em cada título.
Estrutura · pesos 600, 700 e 800. Peso 900 não é padrão.
Informação que se lê e se usa.
Interface · 400, 500 e 600. 700 em indicadores funcionais.
REFERÊNCIA · TOKEN
Tags técnicas/contextuais curtas · 500; 600 quando necessário.
| Papel | Família / peso | Tamanho / linha | Tracking | Exemplo |
|---|---|---|---|---|
| Auxiliar não crítico | Inter 400 | 12/16 px | 0em | Vutti |
| Labels, botões, navegação | Inter 600 | 14/20 px | 0em | Vutti |
| Ajuda e metadados | Inter 400 | 14/20 px | 0em | Vutti |
| Leitura e campos | Inter 400 | 16/22 px | 0em | Vutti |
| Título de card | Plus Jakarta Sans 700 | 20/26 px | -0.02em | Vutti |
| Seção, painel, modal | Plus Jakarta Sans 700 | 24/30 px | -0.02em | Vutti |
| Título operacional mobile | Plus Jakarta Sans 800 | 28/34 px | -0.025em | Vutti |
| Título operacional amplo | Plus Jakarta Sans 800 | 32/38 px | -0.03em | Vutti |
| Destaque público amplo | Plus Jakarta Sans 800 | 40/44 px | -0.035em | Vutti |
| Resumo numérico | Inter 700 | 28/34 px | 0em | Vutti |
| Tag contextual curta | Sometype Mono 500 | 12/16 px | 0.04em | Vutti |
H1 não impõe um tamanho único. Título operacional mobile usa 28/34; amplo 32/38. Destaque público amplo usa 40/44. Tablet não ganha uma escala própria. Texto auxiliar comum usa 14/20; 12/16 é apenas auxiliar não crítico. Tracking negativo somente nos títulos em Plus Jakarta Sans.
Login e cadastro públicos: 40/48 no desktop/tablet e 28/34 no mobile. Confirmações operacionais: título de referência 20 px, peso 600, linha 1,3. Sites históricos com Montserrat/Nunito Sans conservam sua decisão local até uma migração aprovada.
As fontes do manual são servidas localmente em WOFF2, com font-display: swap; o HTML portátil incorpora os mesmos arquivos.
Dimensões acompanham função e breakpoint. A escala de espaços não arredonda campos, botões, ícones ou radii já definidos.
4 px8 px12 px16 px20 px24 px32 px40 px48 px64 px| Relação | Valor |
|---|---|
| Campo → ajuda | 4 px |
| Label → campo / ícone → texto | 8 px |
| Ações próximas | 12 px |
| Gap padrão / padding mobile | 16 px |
| Padding card desktop/tablet | 20 px |
| Separação interna ampla | 24 px |
| Grupos principais | 32 px |
| Seções principais | 48 px |
| Mudança excepcional de seção | 64 px |
| Superfície | Limite | Observação |
|---|---|---|
| Presentes | 1120 px | Topbar, conteúdo e rodapé no mesmo eixo |
| Focado | 720 px | Formulários lineares e estados |
| Acesso geral | 450 px | Login/cadastro: 542/548 px |
| Painel | 1440 px | Dentro da área restante à direita da sidebar |
| Três resumos | 300 px por card / 932 px conjunto | Gap 16; não aplicar às cinco métricas de Reservas |
| Composição | Largura | Comportamento |
|---|---|---|
| Mobile | < 720 px | Gutter 16; labels contextuais; ações reorganizadas |
| Tablet | 720–1099 px | Composição própria; gutter estrutural 24 no Presentes, principal operacional 16 |
| Desktop | ≥ 1100 px | Aproveitar largura sem alongar leitura; gutter 24 |
Cards seguem o conteúdo. Estados e acesso centralizam sem cortar em viewport baixo ou teclado aberto. Borda/foco/sombras não possuem escala universal fechada; os acabamentos do próprio manual são identificados como adaptação editorial.
Ícones lineares apoiam a leitura. O tamanho do desenho não é o alvo interativo.
| Propriedade | Valor |
|---|---|
| ViewBox | 0 0 24 24 |
| Traço | 1.8 px |
| Cor | currentColor |
| Desenhos | 16, 18, 20, 24 e 32 px |
| Ação com texto | 18 px + gap 8 px |
| Somente ícone | 44 × 44 px de área acionável, nome acessível |
O sprite contém apenas desenhos de interface reutilizáveis, adaptados da referência; marcas de terceiros, como Google e WhatsApp, precisam de seus assets oficiais. Não substituir por emoji.
A alternância deste manual é independente dos produtos. Cada aplicação tem status próprio.
| Aplicação | Claro | Escuro |
|---|---|---|
| Manual Vutti | Implementado | Implementado para consulta |
| Painel Vutti | Implementado | Implementado, preferência local |
| Presentes | Implementado | Aplicação futura; paleta semântica completa pendente |
| Acesso público | Exceção clara aprovada | Sem versão escura de produto aprovada |
| Sites, blog e comunicação | Conforme material | Sem regra universal aprovada |
Texto e ação usam a paleta efetiva.
Base do Painel; preview futuro no Presentes.
O Painel aplica superfícies escuras e salva a preferência local. Acesso administrativo conserva a composição clara aprovada.
Presentes manterá fontes, dimensões, geometria e comportamento. Mapear texto, superfície, campo, borda, foco e feedback; validar todas as combinações antes de implantar.
Semânticas completas, celebração escura e tratamento de imagens não foram aprovados universalmente. Não copiar automaticamente os previews deste manual para produção.
Alternar tema não muda medidas nem ordem de leitura. A preferência do manual é local e retorna a claro quando ausente ou inválida. O foco permanece visível, inclusive em chips, menus e divisores de tabela.
Hierarquia depende da ação. Normal, hover, focus, active, disabled e loading mantêm a geometria.
| Tipo | Dimensões | Regra |
|---|---|---|
| Botão principal | 48 px | Ação principal da etapa |
| Ação contextual | 44 px | Operação e navegação |
| Alvo somente ícone | 44 × 44 px | Desenho 20 px, nome acessível |
Status operacional: ponto e texto 14/20, peso 500; sem pill. Qualificação e conta de teste podem ter badge próprio. Prioridade, Meta atingida e Aceita extra usam 12/16, peso 500.
Desfazer fica disponível por cerca de quatro segundos nas exclusões reversíveis de presente/categoria. Operações sucessivas conservam ações individuais. Lista e conta não oferecem Desfazer.
Não apagar dados já visíveis durante atualização em segundo plano.
A busca não encontrou conteúdo para os critérios atuais.
Revisar os termos ou limpar filtros, sem simular registros.
Não foi possível carregar.
Manter contexto e oferecer uma tentativa pertinente.
Labels permanecem visíveis. Ajuda e erro ficam fora da caixa. O conteúdo não encolhe para caber no mobile.
| Elemento | Medida |
|---|---|
| Campo externo | 42 px |
| Padding horizontal | 16 px |
| Label / conteúdo | Inter 14/20 600 / 16/22 400 |
| Label → campo / campo → ajuda | 8 / 4 px |
| Textarea | mín. 104; padding 12 × 16 |
| Opção de combobox | alvo 44 px |
| Ação mostrar senha | 44 × 44; não aumenta o campo de 42 |
Tipo, Prioridade e Aceito mais: texto central com padding simétrico, seta fora do eixo; dropdown acompanha o campo, inverte quando necessário e evita recorte. Setas, Home/End, letras, Enter/Espaço, Tab e Escape. Campo mantém 42 px.
Os valores acima exemplificam a aparência de escolhas recuperadas. No produto, usar somente o último estado local real; sem menu, edição ou gravação.
O manual demonstra apresentação de erros e foco. Não implementa políticas de conta, aceite, segurança ou salvamento dos produtos.
Ordenar, filtrar e paginar sem perder o contexto. A demonstração usa o inventário real de componentes deste manual, sem criar registros de clientes.
Ações |
|---|
Nenhum componente corresponde aos critérios. Limpe os filtros para retornar.
Métricas numéricas centralizam label e valor; fichas e cards genéricos conservam sua composição. Mini-grades de resumo usam título, duas colunas Indicador/Quantidade ou Indicador/Valor e divisores. Não preencher com números fictícios para simular atividade.
Plataforma administrativa: app shell, permissões, consultas, detalhes e operações. A evolução visual abaixo não altera o sistema existente.
| Aspecto | Estado atual | Padrão desejado |
|---|---|---|
| Container operacional | 1440 px | 1440 px |
| Sidebar expandida / recolhida | 240 / 72 px | 232 / 76 px |
| Organização superior | Sem topbar; busca na primeira linha útil | Header de 64 px no modelo administrativo |
| Gutters | 24 desktop / 16 compacto | 24 desktop / 16 compacto |
| Área de conteúdo | Começa no topo; padding superior 16 | Área à direita da sidebar; modos operacional/focado/acesso |
| Tema escuro | Implementado no Painel | Preservar superfícies, legibilidade e preferência |
| Tablet / mobile | Drawer único sobre conteúdo | Drawer até 286 px / 84vw; alvo 44; foco e Escape |
Organização de conteúdo e indicadores; dados não conectados.
A demonstração troca a área visual e recolhe/abre a sidebar. Não reproduz regras de negócio ou autoriza operações.
Adotar a organização administrativa apresentada na referência HTML: sidebar 232/76, header 64 e container operacional 1440. Conservar os tokens escuros do Painel, módulos e permissões. Formulários lineares podem usar 720 px; acesso geral 450 px. A composição futura precisa de tarefa própria de migração e QA no produto.
Produto especializado, com topbar e container próprios. Compartilha fundamentos; a sidebar de gestão não substitui sua navegação.
Os padrões seguintes vêm do documento específico do SaaS e decisões posteriores incorporadas. Claro vigente; previews escuros deste manual são aplicação futura, sem alteração no produto.
Campos operacionais e autosave no eixo do conteúdo.
Simulação local de feedback; não salva em um servidor.
Linhas estruturadas de até 120 caracteres; colagem com múltiplas linhas preservada integralmente ou rejeitada por inteiro. Kit é uma unidade reservável. Demonstração local, sem salvar no produto.
| Área | Composição e comportamento |
|---|---|
| Acesso | Cadastro 548 / login 542; exceções abaixo; Google e avisos legais preservados |
| Suas listas | Título e apoio centrais, ação desktop à direita/mobile integrada; sem hero ou métricas inventadas |
| Cards de lista | Capa 3:2; desktop mídia à esquerda + gap 24; status ponto/texto; Reservas principal, editar e prévia secundários |
| Editor | Campos agrupados; nome recebe mais espaço; novo item começa com quantidade em branco |
| Categorias | Faixa verde-clara contínua; desktop controles à esquerda, adicionar/excluir à direita; tablet/mobile Adicionar presente em linha própria |
| Presentes / kits | Trilhos coerentes; labels contextuais compactos; kit em linhas até 120 caracteres; sem limite fictício de componentes |
| Reservas | Convidados, Unidades reservadas, Presentes com reserva, Pendentes, Preenchimento; dados confiáveis, cinco métricas |
| Lista pública | Sem edição ou dado privado; Quantidade/Falta/Reservado/Reservar; kit compacto em linha Inclui: |
| Prévia privada | Experiência pública com sessão e faixa de retorno; não possui convite comercial destacado |
| Encerrada / indisponível | Consulta desabilitada ou recuperação estática; sem edição e sem fingir salvamento |
O produto apresenta aqui o resumo compacto da reserva real.
Convite comercial reutilizável, separado do resultado.
Conhecer o Vutti PresentesConfirmação é página dedicada com dois cards centralizados e empilhados em todos os viewports. Pausa, encerramento, arquivamento e disponibilidade esgotada têm mensagens próprias sob o contexto do evento. Data passada não encerra a lista; aceitar extras pode manter disponibilidade; lista vazia não significa tudo reservado.
Referência viva da interface do produto
Revisão consolidada: 9 de outubro de 2026
Escopo: aplicação web Vutti Presentes, superfícies públicas e autenticadas
Este documento reúne os padrões visuais aprovados e as exceções próprias do Vutti Presentes. Deve orientar a criação e a revisão de interfaces do SaaS. Não autoriza alterações de produto, regras de negócio, produção ou outros produtos Vutti.
Uma implementação isolada não substitui uma regra aprovada. Uma regra explícita não deve ser descartada apenas porque uma tela ainda não a aplica integralmente.
| Família | Uso |
|---|---|
| Plus Jakarta Sans | Títulos e hierarquia estrutural. Pesos 600, 700 e 800; 900 não é padrão. |
| Inter | Navegação, leitura, labels, campos, botões, mensagens e interface. Pesos 400, 500 e 600; 700 para indicadores numéricos ou destaques funcionais. |
| Sometype Mono | Tags e pequenos indicadores técnicos/contextuais. Peso 500 por padrão; 600 quando necessário para legibilidade. |
As três famílias são carregadas no HTML da aplicação. A fonte efetiva deve corresponder ao papel acima; declarações antigas remanescentes no CSS não definem a família vigente quando regras posteriores a substituem.
| Papel | Família/peso | Tamanho e entrelinha | Espaçamento entre letras |
|---|---|---|---|
| Auxiliar não crítico | Inter 400 | 12/16 px | 0 |
| Tag contextual curta em caixa alta | Sometype Mono 500 | 12/16 px | +0,04em |
| Labels, botões e navegação | Inter 600 | 14/20 px | 0 |
| Metadados e ênfase moderada | Inter 400 ou 500 | 14/20 px | 0 |
| Leitura e conteúdo de campos | Inter 400 | 16/22 px | 0 |
| Título de card | Plus Jakarta Sans 700 | 20/26 px | -0,02em |
| Título de seção, painel ou modal | Plus Jakarta Sans 700 | 24/30 px | -0,02em |
| Título operacional mobile | Plus Jakarta Sans 800 | 28/34 px | -0,025em |
| Título operacional amplo | Plus Jakarta Sans 800 | 32/38 px | -0,03em |
| Destaque público amplo | Plus Jakarta Sans 800 | 40/44 px | -0,035em |
| Indicador numérico de resumo | Inter 700 | 28/34 px | 0 |
Títulos escolhem o token pela função, não apenas pela tag HTML. Texto auxiliar comum usa 14/20 px; 12/16 px fica restrito a informação auxiliar não crítica e ações textuais terciárias, como Esqueci minha senha. Texto principal de apoio usa 16/22 px. Letter-spacing negativo aplica-se somente a títulos em Plus Jakarta Sans. Não há tamanho exclusivo para tablet.
| Container | Máximo | Uso |
|---|---|---|
| Global | 1120 px | Listas, editor, reservas, lista pública, prévia e rodapé |
| Focado | 720 px | Formulários lineares e estados/conteúdos que não precisam da largura operacional |
| Acesso | 450 px | Recuperação e estados; cadastro/login usam a exceção de 548/542 px da seção 11 |
Os valores são limites, não larguras mínimas. O fundo pode ocupar toda a viewport; conteúdo centralizado respeita o limite e os gutters. O eixo do conteúdo, topbar e rodapé deve permanecer coerente. Superfície que exceda 1120 px é exceção específica, não novo container global.
Gutters estruturais: 24 px em desktop e tablet; 16 px em mobile. Algumas regiões operacionais têm paddings próprios por breakpoint, conforme a composição já consolidada, sem redefinir o container global. No shell operacional, a área principal usa 24 px no desktop, 16 px no tablet e mobile; painéis e grids podem possuir ajustes locais de densidade.
4, 8, 12, 16, 20, 24, 32, 40, 48 e 64 px.
| Valor | Aplicação de referência |
|---|---|
| 4 px | Campo para ajuda e relações muito próximas |
| 8 px | Label para campo; ícone para rótulo; título para apoio curto |
| 12 px | Grupos compactos e ações relacionadas |
| 16 px | Gap padrão, padding mobile e grupos próximos |
| 20 px | Padding padrão de cards e painéis em desktop/tablet |
| 24 px | Separação interna mais ampla |
| 32 px | Grupos principais |
| 40 px | Blocos maiores em mobile |
| 48 px | Seções principais |
| 64 px | Mudança excepcional de seção ou área institucional |
Cards e painéis usam, em regra, padding de 20 px em desktop/tablet e 16 px em mobile. A escala não arredonda dimensões específicas de componentes: controles de 42 px, botões de 44/48 px, ícones de 18 px e radii de 10 px permanecem como definidos.
Cards de resumo em uma composição de três unidades têm máximo de 300 px cada, gap de 16 px e conjunto máximo de 932 px, centralizado no container. O limite de largura se mantém nas composições responsivas; não impor altura fixa nem alargar um card além de 300 px quando restar em coluna única. Esta regra se aplica a esse componente de resumo, não automaticamente às cinco métricas da tela Reservas.
O shell operacional mantém conteúdo compacto, sem altura mínima artificial para preencher a viewport. A área principal flexível leva o rodapé ao fim em páginas curtas; páginas longas seguem o fluxo normal. Páginas de acesso e estados centralizam-se no espaço disponível sem cortar conteúdo em viewports baixos ou com teclado aberto.
O produto usa superfícies claras, fundo suave, texto escuro, acento verde-petróleo Vutti e cores complementares discretas. Verde, azul/ciano, pêssego, manteiga e rosa podem apoiar a camada celebrativa em doses pequenas. Cores semânticas comunicam sucesso, aviso e erro; cor nunca substitui rótulo ou instrução.
O CSS consolidado preserva os tokens de marca e superfícies existentes, incluindo --vutti-dark, --vutti-gradient, --accent, --accent-strong, --soft, --panel, --ink, --muted e --line. O gradiente principal de ação usa a composição verde para ciano já implementada. Não criar uma nova paleta ou copiar valores de mockups didáticos sem aprovação específica. Contraste deve ser avaliado sobre a combinação real de texto, controle e fundo.
| Raio | Uso |
|---|---|
| 10 px | Botões, campos, selects e controles |
| 12 px | Capas, thumbnails e mídia interna |
| 16 px | Cards e painéis operacionais |
| 20 px | Modais, cards de acesso e superfícies elevadas |
| 999 px | Badges e chips realmente em formato pill |
As sombras são suaves e subordinadas à borda e à hierarquia. Não adicionar camadas de sombra ou gradientes para preencher espaço. Espessuras de borda, cores exatas de foco e todos os níveis de elevação não constituem uma escala independente além dos tokens já existentes.
| Tipo | Dimensão | Função |
|---|---|---|
| Primário | 48 px de altura | Ação principal da etapa, como criar, publicar, salvar, entrar, continuar ou reservar |
| Contextual/secundário | 44 px de altura | Navegação e ação operacional contextual, como editar, compartilhar, ver como convidado e adicionar item |
| Somente ícone | Área clicável de 44 × 44 px | Ação operacional sem rótulo visual, com nome acessível |
Botões textuais usam Inter 14/20 px, peso 600, padding horizontal de 16 px e gap de 8 px entre ícone e texto. Largura acompanha o conteúdo, exceto quando a composição exige largura total. Ícones de botão com rótulo medem 18 px. Não somar padding textual à caixa de 44 × 44 px de um botão somente com ícone.
Normal, hover, focus, active, disabled e loading preservam a geometria do componente. O foco permanece visível. O CTA principal usa o gradiente oficial verde/cyan Vutti no estado normal, com texto escuro. O hover usa somente uma variação sutil do mesmo gradiente e mantém a hierarquia visual. Ação neutra e destrutiva mantêm hierarquias distintas. Cor não define sozinha se uma ação é primária: função e contexto definem a altura e a prioridade. Ações recorrentes usam ícones da biblioteca do produto, não emoji ou caracteres tipográficos.
Ações sobre mídia usam botão contextual de 44 px, padding horizontal 16 px, radius 10 px, ícone 18 px e gap 8 px. O rótulo é Adicionar sem imagem própria e Trocar quando ela existe. A ação não muda upload ou enquadramento.
| Elemento | Padrão |
|---|---|
| Input/select/controle de uma linha | 42 px de altura externa, inclusive em mobile |
| Label | Inter 14/20 px, peso 600 |
| Conteúdo | Inter 16/22 px, peso 400 |
| Padding horizontal | 16 px |
| Label até campo | 8 px |
| Campo até ajuda | 4 px |
| Textarea | Mínimo 104 px; padding 12 px vertical e 16 px horizontal; Inter 16/22 px |
Labels permanecem visíveis; placeholder não os substitui. Ajuda e erro ficam fora da caixa e não alteram sua altura. Campos obrigatórios usam *; campos opcionais ficam sem indicação salvo necessidade jurídica ou de negócio. Estados normal, foco, desabilitado e erro preservam a geometria.
Campos independentes com ícone de ação, como mostrar senha, conservam o alvo de toque de 44 × 44 px sem converter o campo de 42 px em botão nem aumentar sua altura. O encaixe específico deve respeitar o componente implementado. Controles nativos são preservados quando sua substituição criaria comportamento ou risco de acessibilidade.
| Desenho | Uso |
|---|---|
| 16 px | Apoio compacto |
| 18 px | Ícone junto a texto em ação recorrente |
| 20 px | Ação de interface |
| 24 px | Contexto ou destaque moderado |
| 32 px | Estado ou destaque de maior presença |
Desenhos mantêm traço simples e coerente com a superfície. Alvo interativo não pode ser confundido com o tamanho do desenho; ações somente com ícone têm alvo mínimo de 44 × 44 px. Ícones apoiam a leitura e não substituem rótulos essenciais.
A topbar ocupa 64 px em desktop, tablet e mobile, sem quebra de linha nem crescimento para acomodar conteúdo local. Usa o container global e seus gutters. Controles de navegação têm 44 px; em telas estreitas, a navegação se concentra em botão/menu de 44 × 44 px.
A navegação global autenticada contém Minhas listas e Conta, mais as ações contextuais cabíveis à superfície. No editor, Ver como convidado, Publicar lista ou Compartilhar, e Reservas ficam na área contextual da topbar, nessa ordem no desktop, separadas visualmente da navegação global. A ação de publicação/compartilhamento ocupa o mesmo lugar e acompanha o status da lista. Em tablet e mobile, ela é a primeira ação contextual destacada no menu hambúrguer. O cabeçalho da lista mantém status e ações administrativas menos frequentes no menu contextual, sem repetir Compartilhar.
A ação correspondente à superfície atual não se repete na navegação dessa tela: por exemplo, Minhas listas não aparece na tela de listas e Reservas não aparece na tela de reservas. Destinos úteis para outra superfície, como Ver como convidado no editor, permanecem acessíveis. Não criar destinos novos como solução visual.
No desktop, o selo Conta de teste ocupa espaço independente entre marca e ações. Em tablet e mobile, pode ser reorganizado dentro do menu global sem comprimir controles ou ultrapassar os 64 px da barra.
A topbar mantém 64 px. O contexto de prévia fica em faixa própria abaixo: etiqueta Prévia privada à esquerda, explicação legível e Voltar à edição à direita. Em tablet/mobile, a faixa pode quebrar em linhas, mantendo alinhamento, alvo e ausência de sobreposição. A prévia usa a mesma apresentação pública, mas continua privada e identificada como prévia.
Menus agrupam ações secundárias e preservam visíveis as ações frequentes. Ações destrutivas são separadas do grupo operacional. O menu cabe na viewport e não fica preso ao recorte de um card; abre abaixo do acionador e inverte quando faltar espaço. Divisores aparecem somente entre grupos distintos; menu de ação única não recebe divisor isolado. Os menus contextuais de lista e cards permanecem junto ao acionador também no mobile; os de categoria e presente seguem esse padrão no desktop, enquanto o editor mobile/tablet utiliza a exclusão direta descrita na seção do editor. Os menus permanecem ancorados, preferencialmente alinhados pela direita, com margem de 12 px da viewport e alvo de toque mínimo de 44 × 44 px. Reposicionam-se durante scroll e resize e fecham quando o acionador sai da viewport. O próprio acionador, clique externo e Escape permitem fechar o menu; ações destrutivas preservam o tratamento visual existente.
Modais têm finalidade e título claros, fechamento visível, largura adequada e conteúdo acessível com viewport baixo ou teclado aberto. Preservam foco, Escape e retorno de foco quando já suportados. Erros aparecem no próprio modal e próximos ao campo relacionado. Confirmações usam superfície Vutti, não alert, confirm ou prompt nativos; sucesso simples usa toast não bloqueante.
Confirmações usam título de referência 20 px, peso 600, line-height 1.3, sem divisor entre cabeçalho e conteúdo. A superfície branca usa sombra suave, contorno fino e raio de 20 px. A ação primária mantém o tratamento principal; cancelar é neutro; ação destrutiva é vermelha e separada, nunca entre cancelar e confirmar/salvar. Nomes longos quebram naturalmente. Não criar modal só para repetir informação já presente.
Vazio, carregando, sucesso, erro, desabilitado e processamento devem ser distinguíveis sem inventar dados. Estado vazio explica a situação e destaca somente a ação existente pertinente. Erros ficam próximos da origem. Status operacional usa indicador circular semântico e texto Inter 14/20 px, peso 500, sem fundo, borda ou formato pill; badges de recomendação, conta de teste e qualificação seguem sua própria função.
Estados de página usam uma superfície central única, com título que nomeia a condição, explicação direta e próximo passo real. Vazio operacional e ausência de resultado de busca usam composições distintas. Lista pausada/encerrada usa faixa contextual, não aparência de erro de navegação.
Toasts não bloqueiam a continuação. Presente excluído. Desfazer permanece disponível por aproximadamente quatro segundos. Mensagens curtas, médias e longas usam duração proporcional à leitura; aviso que exige ação não depende de desaparecimento automático. Autosave mostra Salvando… com spinner compacto, Salvo temporariamente e mantém Falha ao salvar até resolução ou nova tentativa; a ação de nova tentativa fica junto ao erro, com alvo de 44 px, sem CTA permanente de atualização quando o editor já persiste as alterações automaticamente.
Acesso tem maior riqueza visual que as superfícies operacionais, sem virar landing page. A composição desktop pode combinar contexto visual de marca e formulário; tablet/mobile priorizam o formulário e reduzem decoração antes de comprimir fontes e campos. Não adicionar depoimentos, números, benefícios ou promessas. Login e recuperação mantêm a mesma família visual.
Cadastro preserva o aceite exigido e acesso aos documentos legais sem duplicação desnecessária. Continuar com Google segue disponível conforme o fluxo do produto; seu aviso legal compacto fica imediatamente abaixo da ação, com links sublinhados e foco visível. Não criar formulário, senha ou checkbox de aceite na continuação Google quando o fluxo vigente não os exige. Confirmação de e-mail, troca de endereço e recuperação mostram estados objetivos no mesmo sistema de acesso e não revelam existência de conta.
O título Suas listas e seu apoio formam um eixo central; a ação principal fica à direita no desktop e integrada ao eixo em mobile. Não restaurar hero, saudação longa, e-mail redundante ou CTA repetido.
Cards comunicam nome/ocasião, status e data existentes, progresso quando calculado e ações. Não adicionar métricas de convidados, presentes ou unidades, nem exibir progresso que sugira atividade sem reservas. Reservas é ação principal; editar e ver como convidado são secundárias. Compartilhamento reúne cópia de link e WhatsApp. Pausar, reativar e encerrar acompanham o estado real. Excluir usa lixeira acessível, separada das ações operacionais. O menu de três pontos só aparece se contiver ações úteis.
O card operacional usa container de até 1120 px, capa com corte 3:2 e conteúdo central flexível. No desktop, a mídia preenche a coluna esquerda disponível do card para aproveitar sua área útil; mantém-se o corte com object-fit: cover, sem distorcer a imagem, e o espaçamento de 24 px até o conteúdo. Ações ocupam o espaço necessário. Status usa ponto semântico e texto Inter 14/20 px, peso 500. Coluna de status/progresso mantém posição coerente entre cards, independentemente do comprimento do título. Tablet e mobile mantêm composição e dimensões próprias, sem herdar a largura da mídia desktop. A regra se aplica aos cards de lista e não redefine a largura da capa pública.
Em mobile, ações textuais ocupam a largura disponível e se empilham; menu permanece no canto superior do próprio card sem cobrir informação. Status e progresso mantêm posição coerente entre cards equivalentes. Altura segue o conteúdo, sem vazio artificial.
Os seletores Tipo, Prioridade e Aceito mais do editor, incluindo inclusão de presente e categoria, usam combobox com opções em listbox. Texto fechado e opções abertas compartilham o centro horizontal da caixa, com padding simétrico e seta fora do eixo textual. O cabeçalho Aceito mais não quebra no desktop; labels contextuais permanecem visíveis em tablet/mobile. O campo conserva 42 px, Inter 16/22 px e radius de 10 px; opções têm alvo de 44 px. O menu acompanha o campo, evita recortes dos cards e inverte verticalmente quando necessário. Preservar nome acessível, foco visível, setas, Home/End, busca por letras, Enter/Espaço, Tab e Escape, além de mouse e toque.
Na cópia de recuperação de uma lista indisponível, seletores são apresentados como texto estático com nome acessível e o rótulo da escolha local mais recente: Item/Kit e Sim/Não, inclusive no conteúdo de categoria ainda aberto. A apresentação conserva Inter 16/22 px, radius de 10 px e altura mínima de 42 px, com quebra de texto quando necessária. Nomes e componentes ocupam a largura disponível; os demais valores têm labels próprios, sem colunas vazias para ações removidas. Esta superfície permite somente consulta e cópia, sem menus, edição ou salvamento; o editor disponível mantém os comboboxes normais.
Agrupar campos por assunto e ordem de preenchimento. Informações relacionadas podem compartilhar linha apenas com largura suficiente. Nome e texto recebem mais espaço que quantidade. Quantidade de novo item começa em branco conforme o fluxo vigente. Dados e controles não devem ser encapsulados em cards sem função.
No editor, cabeçalho de grade e linhas compartilham a mesma geometria. A grade de presentes dá espaço principal ao nome e usa trilhos próprios e consistentes para tipo, quantidade, prioridade, aceite de extra e ações conforme a superfície. Desktop/tablet apresentam cabeçalhos; mobile repõe labels junto aos campos. Nome e categoria permanecem alinhados à esquerda. Edição em linha, expansão, arraste, validação e autosave preservam a interação vigente. Em mobile e tablet, os puxadores de categoria e de todos os presentes compartilham o mesmo eixo visual e mantêm alvo de 44 × 44 px.
No cabeçalho Informações da lista em mobile e tablet, status e menu de ações ficam agrupados à direita acima do título. O título permanece em linha própria, alinhado à esquerda no eixo dos campos, sem quebra e com a hierarquia tipográfica vigente. Autosave permanece abaixo como informação secundária e não desloca o grupo principal. Publicação e compartilhamento ficam nas ações da topbar. O desktop mantém seu alinhamento vigente.
Prioridade, Meta atingida e Aceita extra são etiquetas informativas compactas, Inter 12/16 px, peso 500, junto ao nome ou metadados; não viram faixa de alerta nem usam a aparência do status operacional. A última só aparece quando a opção correspondente estiver ativa.
Kits permanecem em linhas estruturadas com os comportamentos de teclado, foco, remoção e colagem existentes, sem limite funcional de quantidade de componentes. Cada componente conserva o campo de até 120 caracteres. Abrir, colar, editar ou salvar não pode cortar componentes silenciosamente. Uma colagem com texto inválido deve ser rejeitada por inteiro, com explicação e preservação do conteúdo anterior. O kit permanece uma única unidade reservável. Não substituir por textarea livre. Divisor entre informações da lista e personalização conserva 24 px de cada lado. Capa pública e capa personalizada mantêm proporção 3:2; formatos enviados podem variar e o enquadramento não distorce a imagem.
No editor em mobile e tablet, arraste e expansão de categoria ficam agrupados em alvos adjacentes independentes de 44 × 44 px à esquerda; o título flexível ocupa o centro e pode quebrar linhas; a exclusão permanece à direita. Os estados de foco dos dois controles permanecem distinguíveis. O cabeçalho verde-claro da categoria ocupa toda a largura interna do card, com cantos superiores arredondados e ação Adicionar presente larga abaixo do título. O card externo continua delimitando os presentes. O arraste do presente permanece à esquerda do nome e sua exclusão à direita. No mobile, o rótulo Presente de cada linha fica alinhado à esquerda após o puxador, com respiro confortável; puxador e lixeira mantêm recuos laterais equivalentes de 4 px. No tablet, o rótulo Presente do cabeçalho de colunas fica alinhado ao início do trilho do nome e as linhas usam os mesmos trilhos, com puxador e lixeira em alvos de 44 × 44 px e recuos laterais equivalentes de 4 px. Cabeçalho e linhas de presentes persistidos compartilham o padding horizontal de 4 px para distribuir os trilhos na mesma largura. Na grade tablet, todos os trilhos permanecem dentro do card. O desktop conserva a composição aprovada.
No editor desktop, o cabeçalho verde-claro da categoria também ocupa toda a largura interna do card, encosta nas laterais internas e usa os cantos superiores do componente. Arraste, expandir/recolher e nome flexível ficam à esquerda; Adicionar presente e exclusão ficam à direita, dentro da faixa. Os controles mantêm alvos de aproximadamente 44 × 44 px. Categoria recolhida exibe somente o cabeçalho compacto; expandida inicia a tabela logo abaixo, preservando integralmente seus trilhos, campos e ações. Em mobile e tablet, permanece exatamente a composição aprovada acima, com Adicionar presente em linha própria abaixo do título.
No editor da lista, categoria, presente e item interno de kit usam a mesma lixeira neutra em todos os viewports, com ícone uniforme e alvo de 44 × 44 px; não há cor, fundo ou borda destrutiva permanente. Hover e foco permanecem visíveis. As exclusões de categoria e presente continuam exigindo confirmação, com os títulos “Deseja realmente excluir esta categoria?” e “Deseja realmente excluir este presente?” e aviso de que a exclusão pode ser desfeita por alguns segundos. As proteções de remoção permanecem ativas. Menus com múltiplas ações nas outras superfícies permanecem como estão. O editor de itens do kit conserva seus comportamentos de teclado, foco, remoção e colagem.
Exclusões reversíveis usam notificação não bloqueante com ação Desfazer. Exclusões sensíveis ou irreversíveis mantêm confirmação explícita. Categoria e presente restauráveis exibem mensagem contextual, como “Categoria excluída.” e “Presente excluído.”, com ação individual por quatro segundos; operações sucessivas conservam suas possibilidades de desfazer de forma independente. A restauração de categoria inclui a posição, os presentes, kits, componentes e seus demais atributos. Exclusão de lista inteira e de conta não oferece Desfazer.
Na seção Categorias e presentes do editor, o título e a ação Adicionar categoria ficam centralizados em mobile e tablet; desktop mantém o alinhamento aprovado.
Na lista pública, os componentes do kit aparecem em apresentação compacta somente leitura: rótulo Inclui: seguido pelos itens em linha, separados visualmente por |, em Inter 14/20 px. O texto pode quebrar dentro de nomes longos e não interfere nas colunas de quantidade ou reserva.
Publicação usa a ação contextual Publicar lista na topbar do rascunho. O rodapé do editor não exibe um bloco permanente de publicação. Ao acionar, o editor conclui o autosave e mostra todas as pendências num modal Antes de publicar, com ação para focar a primeira correção. Sem pendências, a confirmação comercial vigente prossegue. Após a primeira publicação confirmada, a ação passa a Compartilhar e abre o compartilhamento uma única vez; o mesmo link público continua válido nas edições seguintes. Não indicar sucesso antes da confirmação. O fluxo externo do Checkout Asaas não é padronizado por este documento.
A publicação vale para um evento, sem vencimento pela data e sem mensalidade. A regra anterior de 30 dias após o evento e limite de 180 dias de adiamento foi superada pelo PROMPT 097; seu histórico está em P087-VALIDADE-LISTAS.md. O modal comercial mantém título, subtítulo, preço do servidor, pagamento único, ações e a informação curta Após o encerramento, sua lista fica disponível para consulta por 12 meses. Crédito, autorização existente, pagamento pendente e teste interno usam mensagens contextuais; teste interno não exibe preço. Não acrescentar checkbox nem transformar o modal em página de explicações.
O nome do evento permanece livremente editável pelo autosave, inclusive após a publicação. A ocasião fica bloqueada após o vínculo da publicação. Data e conteúdo continuam editáveis até o encerramento definitivo. Os três campos mantêm alinhamento e espaçamentos uniformes, sem avisos permanentes de vínculo ou validade. Pausar é reversível. Encerrar lista abre a confirmação destrutiva Encerrar lista definitivamente?, com Cancelar e Encerrar definitivamente. Na consulta do histórico encerrado, campos, mídia, presentes e status das reservas ficam desabilitados; a data prevista de exclusão aparece em texto auxiliar. Cards encerrados usam Consultar.
O lembrete Seu evento já aconteceu! é um aviso em fluxo normal no painel do organizador, com texto e ações Manter ativa / Encerrar lista. Não abre modal automaticamente, não bloqueia conteúdo nem aparece na lista pública. Usa card discreto, espaçamento da escala, título 20/26 px e texto 14/20 px; as ações reorganizam-se sem sobrepor o conteúdo. Encerrar lista aciona a confirmação, sem encerrar diretamente.
Na lista pública e na prévia privada, as etiquetas Prioridade e Aceito mais unidades são controles de explicação com a aparência compacta existente, sem ícone extra. A descrição associada é acessível por foco, mouse e toque; Escape ou toque fora fecham. Um único balão fica no plano superior, limitado à área visível com margem de 12 px e largura máxima de 320 px. Interagir com o balão mantém a leitura. A abertura não desloca a linha nem aciona reserva. O editor conserva os títulos Prioridade e Aceito mais, sem explicações.
Reservas tem título próprio, identificação da lista e cinco métricas distintas: Convidados, Unidades reservadas, Presentes com reserva, Pendentes e Preenchimento. Busca permanece compacta. Cada convidado pode expandir detalhes com presente, quantidade, status e data confiável; dado sem timestamp confiável é indicado como indisponível, não inventado. Status usa controle compacto alinhado ao cabeçalho. No tablet e mobile, o título alinha à esquerda no eixo interno do card e Voltar para a lista fica centralizado com largura ampliada; desktop mantém sua composição. Tablet/mobile reorganizam linhas sem overflow.
A lista pública orienta o convidado por identificação do evento, conteúdo personalizado, categorias/presentes, disponibilidade, ação de reserva e feedback. Não acrescentar cadastro obrigatório, compra do presente, checkout, ações administrativas ou dados privados. Reserva de presente não é compra; cobrança de publicação é outro fluxo.
A data aparece compacta logo abaixo da descrição, alinhada ao conteúdo: rótulo 12/16 px e data 16/22 px, peso 700. Não usa separador, fundo, borda ou largura artificial. Responsável e WhatsApp vêm abaixo em 14/20 px. Lista pública e prévia compartilham a composição.
A capa usa proporção 3:2, fica acima do conteúdo em tela estreita e não é distorcida. A ocasião pode determinar capa local de fallback quando não há imagem própria. A largura final da capa pública não está fixada neste sistema; não assumir uma medida dos mockups como obrigatória.
A coluna numérica Quantidade e seus rótulos responsivos e acessíveis compartilham a mesma nomenclatura. Falta, Reservado e Reservar preservam seus nomes e cálculos.
Cabeçalho da lista pública/prévia reutiliza a geometria e tipografia do cabeçalho do editor: mínimo de 44 px, padding 10 × 14 px, gap 10 px, Inter 14/20 px, peso 500. No desktop, os rótulos de quantidade, falta e reservado ficam no cabeçalho e não se repetem por linha. Em tablet/mobile, labels contextuais reaparecem. As três colunas numéricas têm largura igual; números são tabulares. Nome de categoria e conteúdo permanecem alinhados à esquerda.
Cada categoria pública é um card interno delimitado dentro do contêiner externo existente, com borda sutil, cantos arredondados e cabeçalho em faixa contínua até as laterais internas, respeitando os cantos superiores. Cabeçalhos de coluna, presentes, kits, indicadores, métricas de disponibilidade e ações permanecem dentro do contorno. A mesma composição se mantém responsiva em tablet e mobile, sem trazer controles de edição para a lista pública.
Após reserva concluída, a confirmação é página própria, não modal ou toast. Conforme o PROMPT 101, resultado e convite comercial usam dois cards empilhados e centralizados em desktop, tablet e mobile. O card branco apresenta ícone verde, Reserva confirmada!, resumo compacto com dados reais e retorno secundário Voltar para a lista. O convite reutilizável usa gradiente suave verde/ciano, símbolo oficial V à esquerda de Vutti Presentes e CTA Conhecer o Vutti Presentes, que abre https://vutti.com.br/listas-de-presentes em nova aba. O cabeçalho não repete o CTA nessa composição.
Lista pública sem novas reservas usa a mesma composição abaixo do cabeçalho e contexto preservados do evento, com ícone e mensagem específicos de pausa, encerramento, arquivamento ou disponibilidade esgotada. O estado real prevalece; a data passada não implica encerramento e itens que aceitam unidades extras continuam operacionais. Lista vazia não é apresentada como totalmente reservada. O convite comercial muda o conteúdo por contexto e não aparece em destaque na lista ativa com disponibilidade nem na prévia privada. Esta é uma composição específica dessas superfícies, sem criar tokens globais.
No desktop, o rodapé compacto distribui links legais à esquerda e suporte à direita no mesmo container. O suporte apresenta “Precisa de ajuda com sua lista? Fale com a gente.”, e-mail funcional e número do WhatsApp com o ícone oficial da marca, formando um único link que abre em nova aba. Tablet e mobile reorganizam os grupos conforme o espaço disponível, sem comprimir textos ou produzir overflow.
Login/cadastro e lista pública admitem presença celebrativa moderada; criação, personalização e listas usam acentos leves; edição de itens e estados de erro priorizam a operação. Usar um motivo visual por composição, manter decoração nas margens e reduzir sua presença quando competir com conteúdo em telas menores. Ilustrações não cobrem título, mídia, dados ou controles, não capturam foco e não exigem animação contínua. Evitar mascote infantil como identidade geral, stock genérico, excesso de tons pastel/neon e fundos carregados atrás de listas.
Imagem não é distorcida; preservar proporção ou usar enquadramento deliberado existente. Não inferir uma nova dimensão para capa além de 3:2 quando a largura não estiver definida. Transições são breves e funcionais, não atrasam leitura nem operação. Respeitar prefers-reduced-motion e manter conteúdo disponível quando animação não puder ocorrer.
| Composição | Largura |
|---|---|
| Mobile | abaixo de 720 px |
| Tablet | 720 a 1099 px |
| Desktop | 1100 px ou mais |
Breakpoints adicionais só são usados quando um componente demonstrar necessidade. Viewports de referência para validações visuais: 390 × 844, 768 × 1024 e 1440 × 900. 375 px, 820 × 1180 e 1600 × 1000 são complementares. Nenhuma tela deve produzir overflow horizontal global.
Mobile prioriza título, informação principal, CTA, conteúdo secundário e decoração, nessa ordem. Campos, botões, alvos, menus, modais e ações não são encolhidos apenas para caber lado a lado. Cards, grades, imagens e tabelas reorganizam-se de acordo com conteúdo real. Em desktop, aproveitar largura sem alongar excessivamente texto ou adicionar sidebar sem função. Tablet não é uma versão comprimida do desktop.
Manter labels, foco visível, nomes acessíveis para ações com ícone, contraste funcional, ordem de leitura e navegação por teclado. Estados nunca dependem só de cor. Menus e modais preservam foco, fechamento e retorno conforme implementados. Validar nomes longos, listas vazias, erros, teclado móvel e conteúdo extenso nas superfícies afetadas.
As referências finais aprovadas no PROMPT 090 substituem a apresentação anterior de cadastro e login. O card central tem máximo de 548 px no cadastro e 542 px no login, raio de 20 px, padding lateral de 24 px no cadastro e 27 px no login e título 40/48 px em desktop/tablet. Campos usam 54 px e ações principais, Google e troca de modo usam 62 px; são exceções específicas destas duas telas. O CTA usa gradiente verde/ciano com texto branco conforme a referência. A marca aparece apenas no cabeçalho de 92 px (80 px no mobile), com faixa escura superior; o fundo é suave e o rodapé contém documentos e atendimento em ambos os modos.
No mobile, card com padding lateral de 20 px, título 28/34 px, campos 48 px e botões 52 px reorganizam a composição sem overflow. Labels permanecem visíveis, com os placeholders da referência. Cadastro usa “Crie sua conta” e “Organize e compartilhe suas listas de presentes.”; login usa “Entre na sua conta” e “Continue de onde parou.”. Google usa a marca colorida. Há um único aviso legal abaixo do Google por modo e não há checkbox de aceite no cadastro; a ação de criar conta manifesta o aceite, que continua registrado pelo servidor. Confirmação de e-mail legada e demais aceites específicos conservam seus controles próprios.
A orientação de senha é um popover compacto junto ao campo, oculto inicialmente. Ao digitar uma senha incompleta ou tentar enviá-la, mostra os critérios reais com estado textual de cumprido/falta; atualiza sem anúncios a cada caractere, desaparece ao cumprir a política ou sair do campo, e Escape o dispensa. Não exige maiúsculas: a política vigente é 10–128 caracteres Unicode, uma letra, um número ASCII e um caractere especial não branco. O backend permanece autoridade. Mensagens dinâmicas, foco, recuperação, confirmação, vinculação Google e segurança permanecem funcionais.
O acesso administrativo preserva o card aprovado, fundo suave, marca Painel Vutti, OPERAÇÃO VUTTI e acabamento. E-mail/senha próprios precedem Esqueci minha senha e Entrar, o CTA principal no gradiente Vutti. Depois vêm divisor ou, Google secundário com marca reconhecível, documentos jurídicos e Voltar às minhas listas. Recuperação e redefinição trocam o conteúdo do mesmo card, com foco no título após transição, erro persistente junto ao formulário e campos com mostrar/ocultar senha. O tema escuro pertence à área autenticada; o acesso mantém a composição clara aprovada.
A superfície administrativa em painel.vutti.com.br (frontend independente; presentes.vutti.com.br/painel histórico e desativado, 404 sem redirect) reutiliza identidade, fontes, gutters, campos e botões do SaaS. Seu app shell administrativo não tem topbar: sidebar e conteúdo começam no topo, com busca global na primeira linha útil alinhada à marca. No desktop, a sidebar fixa expande com nomes ou recolhe com ícones e nomes acessíveis. O controle junto à marca tem SVG de 20 px, alvo de 44 × 44 px, tooltip e foco visível. A preferência de recolhimento é local ao navegador. Em tablet/mobile, a navegação única aparece em um drawer sobre o conteúdo, acionado por controle de 44 × 44 px, com fechamento por Escape, seleção e toque fora. O perfil da conta autenticada ocupa o rodapé da sidebar; mostra imagem processada e persistida da própria conta ou iniciais como fallback. Seu menu mostra identidade, e-mail, perfil e as ações Minhas listas, Alternar tema e Sair. A imagem do perfil é alterada pelo avatar grande, um botão de 44 × 44 px com foco visível, nome acessível próprio e suporte a teclado; não há ação textual separada. A imagem aceita JPG, PNG ou WebP de até 5 MB e é armazenada como WebP quadrado. O tema escuro é exclusivo do painel, ativado pelo usuário e salvo no navegador; preferência ausente ou inválida retorna ao claro. Busca global e ações obedecem à hierarquia de cada perfil. Essa composição é própria da administração e não substitui os menus ou o cabeçalho do cliente.
A busca global reúne o campo, Buscar e Atualizar na mesma faixa. Em desktop e tablet com espaço suficiente, os botões ficam juntos imediatamente após o campo; em mobile, o campo pode ocupar a primeira linha e o grupo de ações permanece unido na seguinte. Buscar submete somente a busca; Atualizar é um botão independente que recarrega a rota e o contexto atuais. Ações específicas da área permanecem junto ao título local.
O conteúdo operacional do painel pode atingir 1440 px dentro do espaço restante à direita da sidebar, centralizado com gutters de 24 px no desktop e 16 px em tablet/mobile. A largura global de 1120 px das demais superfícies permanece vigente. Recolher a sidebar disponibiliza imediatamente a largura liberada.
Nos cabeçalhos ordenáveis, somente o texto do título pode ser truncado. O indicador ↑/↓ ocupa espaço próprio, permanece visível na largura padrão da coluna e fica fora do nome acessível; o estado sem ordenação não mostra glifo.
Consultas usam tabelas com cabeçalhos legíveis, ordenação em três estados e rolagem horizontal localizada. Fichas preservam filtros de origem, distinguem dados ausentes de zero e indicam consultas somente leitura. Decisões usam modais com labels, foco inicial e retorno ao controle acionador; feedback simples usa toast. Manter alvos de 44 px e estados em texto, sem depender só de cor. Validar essas superfícies nos viewports oficiais e os componentes críticos em 820×1180 e 360×800. Não transformar uma largura incidental de sidebar em token global.
As tabelas administrativas têm divisores verticais contínuos no cabeçalho e corpo, além das linhas horizontais. A coluna Ações mantém rótulo e conteúdo alinhados sem espaço reservado para divisor ausente; em grades ordenáveis, seu rótulo usa uma caixa interna de 44 px alinhada como os controles de título, sem aumentar a altura existente do cabeçalho. As demais colunas permitem redimensionar por divisor no cabeçalho em desktop e tablet com espaço suficiente. Cada tabela conserva suas larguras próprias no navegador; duplo clique no divisor restaura apenas a coluna correspondente. O divisor não aciona a ordenação. Tabelas largas rolam somente no próprio container, e a coluna Ações permanece no fluxo e alinhada ao cabeçalho. Em mobile estreito, a leitura e a rolagem local têm prioridade sobre o gesto de resize. Cards de métricas numéricas centralizam rótulo e valor; fichas e cards genéricos conservam sua composição. Resumos quantitativos, como reservas e conversão acumulada, usam mini-grade de duas colunas com faixa de título, cabeçalho Indicador/Quantidade ou Indicador/Valor conforme o dado e linhas separadoras. Títulos e textos de apoio de seções compartilham o alinhamento horizontal dos cards e grades abaixo. No resumo de origem da autorização da visão geral, o cabeçalho e os valores de Publicações ficam alinhados à direita.
No tablet (720–1099 px), o divisor de coluna conserva traço visual de 1–2 px, mas oferece alvo de toque transparente de 44 × 44 px dentro do cabeçalho. O espaço do rótulo e da ordenação fica reservado separadamente para não haver sobreposição entre os controles nem com a coluna seguinte.
As tabelas paginadas mostram 10 registros por página e informam a faixa exibida, o total e a página atual. Datas manuais aparecem somente no período personalizado; selecionar um período pronto limpa os valores manuais. A faixa selecionada é apresentada em formato brasileiro, sem expor o identificador de fuso. O cabeçalho da sidebar administrativa usa o símbolo oficial sem moldura e mantém acesso a Minhas listas no menu do perfil. A busca global mantém Buscar e Atualizar agrupados na faixa, conforme a composição responsiva definida nesta seção. As tabelas reduzem o espaço vertical das linhas sem reduzir a área acionável mínima de 44 px nem quebrar palavras comuns. O perfil técnico não é repetido abaixo do título da área.
As exceções abaixo são específicas do Vutti Presentes e não são regras genéricas para outros produtos Vutti:
Pontos sem decisão visual universal fechada: paleta semântica completa além dos tokens já usados; escala de bordas/foco/sombras completa; dimensão final da capa pública; encaixe visual definitivo de ações independentes junto a controles de 42 px; dimensões de marca não consolidadas; e aparência de interações/componentes não especificados neste documento. Preserve o estado atual aprovado nesses pontos e não invente novos tokens.
Antes de alterar uma tela, identificar os tokens e componentes envolvidos e distinguir regra global de exceção específica. Quando uma alteração aprovada mudar um padrão reutilizável, atualizar este documento na mesma tarefa. Registrar exceção apenas quando houver necessidade ligada à superfície e decisão clara; resultado pontual ou aparência incidental não cria regra global.
A aplicação do sistema a uma superfície não autoriza redesenhar outra. Este documento não substitui especificações funcionais, legais, de segurança, comerciais ou de integração. Não usar exemplos como autorização para criar recurso, remover dado ou mudar fluxo.
| Grupo | Referência |
|---|---|
| Tipografia | 12/16, 14/20, 16/22, 20/26, 24/30, 28/34, 32/38, 40/44 px |
| Containers | global 1120 px; focado 720 px; acesso 450 px |
| Gutters | desktop/tablet 24 px; mobile 16 px |
| Espaçamento | 4, 8, 12, 16, 20, 24, 32, 40, 48, 64 px |
| Botões | primário 48 px; contextual 44 px; ícone 44 × 44 px |
| Campos | uma linha 42 px; textarea mínimo 104 px |
| Radius | controle 10 px; mídia interna 12 px; card 16 px; elevado 20 px; pill 999 px |
| Topbar | 64 px em todos os modos |
| Breakpoints | mobile <720 px; tablet 720–1099 px; desktop ≥1100 px |
Login e cadastro do Presentes têm uma composição aprovada própria. As dimensões gerais de operação não as substituem.
| Elemento | Desktop / tablet | Mobile |
|---|---|---|
| Card cadastro / login | 548 / 542 px | Largura disponível |
| Padding lateral cadastro / login | 24 / 27 px | 20 px |
| Título | 40/48 px | 28/34 px |
| Campos | 54 px | 48 px |
| Botões principais / Google / troca | 62 px | 52 px |
| Cabeçalho de marca | 92 px | 80 px |
| Radius card | 20 px | 20 px |
Continue de onde parou.
A continuação no produto segue os Termos de Uso e a Política de Privacidade.
Demonstração visual; não envia dados nem manifesta aceite legal.
A referência de acesso usa texto branco sobre o gradiente verde/ciano. Essa combinação tem contraste baixo para texto de botão comum; é uma pendência de acessibilidade do padrão de produto. O manual preserva a exceção documentada e não a promove a token global. Ações operacionais usam texto escuro.
Identidade institucional com objetivos e composições próprias. O manual descreve aplicações existentes; não substitui decisões aprovadas de cada página.
Hierarquia visual, respiro e ação coerente com a finalidade da página. Este é um espécime de composição, não uma nova landing page.
Consultar site Vutti| Área | Orientação e evidência |
|---|---|
| Cabeçalho / navegação | Preservar a marca, links e hierarquia reais; reorganizar sem reduzir alvos em telas estreitas |
| Hero / seções | Mensagem identificável, ação pertinente, título legível; não inventar promessas ou resultados |
| Cards / blocos | Conteúdo explica a função; evitar duplicação artificial do mesmo CTA |
| CTAs | Gradiente Vutti; hierarquia depende da função. Formulários comerciais mantêm validação e consentimentos vigentes |
| Imagens | Asset oficial, proporção preservada, alt conforme função; evitar material genérico como identidade |
| Rodapé | Marca, links legais, suporte e organização vigente; não alterar tracking/consentimento |
| Tipografia | Widget Presentes: Jakarta/Inter/Mono. Sites históricos: Montserrat/Nunito Sans conforme aprovação local |
| Responsividade | Conteúdo reorganizado, foco e labels; sem overflow global |
| Container | Sem largura única aprovada para todos os sites |
Fontes consultadas: site principal, landing de listas de presentes, widget publicado, assets e documentação local de WordPress. SEO, formulários, pagamentos, consentimento e tracking permanecem fora da padronização visual desta tarefa.
A identidade fornece base de aplicação. Não foi localizada uma referência Vutti aprovada suficiente para declarar um sistema editorial completo.
Marca oficial, contraste, hierarquia por função e leitura acessível. Links reconhecíveis e foco visível; imagens com descrição conforme seu significado.
Largura de artigo, escala de títulos, tipografia editorial, proporção de capa, categorias, autoria, datas, citações e padrões de imagem/legenda.
Texto introdutório com função de apoio, separado do título.
Este espécime permite consultar títulos, corpo, links e legendas. Não define a fonte, a largura ou a escala oficial de um artigo Vutti.
| Decisão | Exportação |
|---|---|
| Container editorial | null |
| Tamanho de artigo | null |
| Proporção de capa | null |
Incorporar artigos e composições aprovados quando disponíveis. Registrar decisões por papel e breakpoint; não aplicar automaticamente a escala operacional do SaaS como norma editorial.
Propostas, materiais comerciais e slides precisam de templates aprovados próprios. Não há master institucional consolidado nas fontes consultadas.
Exemplo da relação entre marca, título, apoio e conteúdo.
Dados, condições e compromissos devem vir de fontes reais. O manual não cria proposta, preço, contrato ou apresentação comercial.
| Decisão | Situação |
|---|---|
| Logo e cor institucional | Assets oficiais disponíveis |
| Hierarquia de títulos e corpo | Princípio compartilhado; escala institucional não normatizada |
| Margens / formatos / paginação | Sem template aprovado localizado |
| Slides / grids / transições | Sem master aprovado localizado |
| Propostas e materiais comerciais | Não inventar termos, preços, depoimentos ou números |
Adicionar documento e apresentação aprovados à pasta de referências; mapear estilos, rodapé, capa, grid e exportação. Valores ausentes permanecem null; não criar uma segunda identidade a partir dos demos.
Legibilidade, semântica e operação fazem parte do padrão. Cor e decoração não substituem texto, foco ou ordem de leitura.
Validar 1440×900, 820×1180 e 390×844, com ambos os temas. Reorganizar primeiro, não comprimir controles. Zoom e textos longos devem preservar acesso. Respeitar prefers-reduced-motion; nenhuma animação é necessária para ler o manual.
Texto comum tem referência de contraste 4,5:1; texto grande 3:1; informação gráfica/controles 3:1. O foco do manual usa o acento escuro/claro com contorno externo. Bordas decorativas sutis não contam como indicador de foco.
O texto branco sobre o gradiente aprovado de login/cadastro tem contraste insuficiente para corpo de botão. A exceção está preservada e identificada; precisa de decisão de produto para correção, sem mudança no SaaS nesta tarefa.
Uma fonte de especificações alimenta tabelas, demonstrações e exports. O HTML publicado é gerado a partir do projeto local.
/* Vutti 1.0.0 — escopos e proveniência no JSON. Semânticas escuras do manual são adaptação futura. */
:root {
--vutti-institutional: #0d252b;
--vutti-green: #00e497;
--vutti-cyan: #01b5f2;
--vutti-gradient: linear-gradient(135deg, #00e497, #01b5f2);
--vutti-action-gradient: linear-gradient(135deg, #00e19f 0%, #00b6ea 100%);
--vutti-action-gradient-hover: linear-gradient(135deg, #00e9a5 0%, #00bdf2 100%);
--vutti-space-4: 4px;
--vutti-space-8: 8px;
--vutti-space-12: 12px;
--vutti-space-16: 16px;
--vutti-space-20: 20px;
--vutti-space-24: 24px;
--vutti-space-32: 32px;
--vutti-space-40: 40px;
--vutti-space-48: 48px;
--vutti-space-64: 64px;
--vutti-radius-control: 10px;
--vutti-radius-media: 12px;
--vutti-radius-card: 16px;
--vutti-radius-overlay: 20px;
--vutti-radius-pill: 999px;
--vutti-font-small: 400 12px/16px 'Inter', sans-serif;
--vutti-tracking-small: 0em;
--vutti-font-label: 600 14px/20px 'Inter', sans-serif;
--vutti-tracking-label: 0em;
--vutti-font-meta: 400 14px/20px 'Inter', sans-serif;
--vutti-tracking-meta: 0em;
--vutti-font-body: 400 16px/22px 'Inter', sans-serif;
--vutti-tracking-body: 0em;
--vutti-font-card: 700 20px/26px 'Plus Jakarta Sans', sans-serif;
--vutti-tracking-card: -0.02em;
--vutti-font-section: 700 24px/30px 'Plus Jakarta Sans', sans-serif;
--vutti-tracking-section: -0.02em;
--vutti-font-mobileTitle: 800 28px/34px 'Plus Jakarta Sans', sans-serif;
--vutti-tracking-mobileTitle: -0.025em;
--vutti-font-pageTitle: 800 32px/38px 'Plus Jakarta Sans', sans-serif;
--vutti-tracking-pageTitle: -0.03em;
--vutti-font-publicTitle: 800 40px/44px 'Plus Jakarta Sans', sans-serif;
--vutti-tracking-publicTitle: -0.035em;
--vutti-font-metric: 700 28px/34px 'Inter', sans-serif;
--vutti-tracking-metric: 0em;
--vutti-font-mono: 500 12px/16px 'Sometype Mono', monospace;
--vutti-tracking-mono: 0.04em;
--vutti-button-primary: 48px;
--vutti-button-contextual: 44px;
--vutti-button-iconTarget: 44px;
--vutti-button-paddingInline: 16px;
--vutti-button-gap: 8px;
--vutti-button-icon: 18px;
--vutti-button-font: 14px;
--vutti-button-line: 20px;
--vutti-button-weight: 600;
--vutti-field-height: 42px;
--vutti-field-paddingInline: 16px;
--vutti-field-labelGap: 8px;
--vutti-field-helpGap: 4px;
--vutti-field-textareaMin: 104px;
--vutti-field-font: 16px;
--vutti-field-line: 22px;
--vutti-panel-container: 1440px;
--vutti-panel-sidebar-open: 232px;
--vutti-panel-sidebar-closed: 76px;
--vutti-panel-topbar: 64px;
--vutti-panel-gutterDesktop: 24px;
--vutti-panel-gutterCompact: 16px;
--vutti-panel-focused: 720px;
--vutti-panel-access: 450px;
--vutti-panel-drawerMax: 286px;
--vutti-panel-drawerVw: 84vw;
--vutti-panel-navTarget: 44px;
--vutti-presentes-container: 1120px;
--vutti-presentes-focused: 720px;
--vutti-presentes-access: 450px;
--vutti-presentes-topbar: 64px;
--vutti-presentes-gutterDesktopTablet: 24px;
--vutti-presentes-gutterMobile: 16px;
--vutti-presentes-cardPaddingDesktopTablet: 20px;
--vutti-presentes-cardPaddingMobile: 16px;
--vutti-presentes-summaryCardMax: 300px;
--vutti-presentes-summaryGroupMax: 932px;
--vutti-presentes-summaryGap: 16px;
--vutti-presentes-loginCardDesktop: 542px;
--vutti-presentes-signupCardDesktop: 548px;
}
:root, [data-theme="light"], [data-local-theme="light"] {
--vutti-canvas: #f5f7f6;
--vutti-surface: #ffffff;
--vutti-surface-alt: #e7f6f2;
--vutti-elevated: #ffffff;
--vutti-text: #17252b;
--vutti-muted: #68777b;
--vutti-border: #dfe7e4;
--vutti-border-strong: #dfe7e4;
--vutti-accent: #087d72;
--vutti-accent-strong: #05645c;
--vutti-success: #34895b;
--vutti-warning: #b7791f;
--vutti-danger: #b64d4d;
--vutti-on-primary: #0d252b;
color-scheme: light;
}
[data-theme="dark"], [data-local-theme="dark"] {
--vutti-canvas: #111a23;
--vutti-surface: #1c2934;
--vutti-surface-alt: #263641;
--vutti-elevated: #263641;
--vutti-text: #f1f5f8;
--vutti-muted: #b4c2cb;
--vutti-border: #354652;
--vutti-border-strong: #40515d;
--vutti-accent: #61d9c3;
--vutti-accent-strong: #95eadb;
--vutti-success: #61d9c3;
--vutti-warning: #ffe7a3;
--vutti-danger: #f7c8d8;
--vutti-on-primary: #082a2d;
color-scheme: dark;
}
{
"name": "Vutti Design System",
"version": "1.0.0",
"date": "2026-10-10",
"language": "pt-BR",
"authority": "Decisão aprovada mais recente > referência viva do produto > implementação atual compatível > fundamentos da família > histórico",
"brand": {
"name": "Vutti",
"institutional": "#0d252b",
"green": "#00e497",
"cyan": "#01b5f2",
"gradient": "linear-gradient(135deg, #00e497, #01b5f2)",
"white": "#ffffff",
"logoProtection": null,
"logoMinPx": null,
"source": "fundamentos-familia + assets oficiais; dimensões normativas ainda não consolidadas",
"actionGradient": "linear-gradient(135deg, #00e19f 0%, #00b6ea 100%)",
"actionGradientHover": "linear-gradient(135deg, #00e9a5 0%, #00bdf2 100%)",
"assets": [
{
"path": "assets/brand/symbol-on-dark.f8bd2a226955.png",
"original": "logos/2.png",
"label": "Símbolo V sobre fundo escuro",
"scope": "Família Vutti",
"width": 1080,
"height": 1080,
"sha256": "f8bd2a22695557e1fd742cc4dd04181152d6cb2ebe872092655079aac4d82a82",
"status": "arquivo disponibilizado no acervo local; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/symbol-compact.6aded557f68f.png",
"original": "logos/4.png",
"label": "Símbolo V compacto",
"scope": "Família Vutti",
"width": 180,
"height": 180,
"sha256": "6aded557f68fddd19b2f1f289888029e8a58855bf9649a0fe2bc423783ec75aa",
"status": "arquivo disponibilizado no acervo local; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/wordmark-on-dark.0d66b4a7f668.png",
"original": "logos/Ativo 19.png",
"label": "Wordmark Vutti em composição escura",
"scope": "Família Vutti",
"width": 1081,
"height": 1081,
"sha256": "0d66b4a7f668ac3d2df8df43fca5f371cc49912f150cea79c756f9d6357d7f0e",
"status": "arquivo disponibilizado no acervo local; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/wordmark-on-light.0e5a81e15db3.png",
"original": "logos/Ativo 20.png",
"label": "Wordmark Vutti em composição clara",
"scope": "Família Vutti",
"width": 1081,
"height": 1081,
"sha256": "0e5a81e15db3ebba65a48c60ccf098851de405749e22edc6bf9d5b8722864bde",
"status": "arquivo disponibilizado no acervo local; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/wordmark-dark.32475fabc741.png",
"original": "logos/Ativo 21.png",
"label": "Wordmark escuro, transparente",
"scope": "Família Vutti",
"width": 764,
"height": 214,
"sha256": "32475fabc7414cb4dbbe25f17353a73e197500e923efdb9a0fcf2ffc61ce6363",
"status": "arquivo disponibilizado no acervo local; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/wordmark-white-accent.5bc1cc381eac.png",
"original": "logos/Ativo 23.png",
"label": "Wordmark branco com acento verde",
"scope": "Família Vutti",
"width": 765,
"height": 214,
"sha256": "5bc1cc381eac15d05d71a4590ea26725a5a470710a7dc2d1ab5a34b7b584d1f9",
"status": "arquivo disponibilizado no acervo local; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/crm-compact-a.e92d5e3dba4b.png",
"original": "logos/21.png",
"label": "Identificador CRM compacto A",
"scope": "Vutti CRM; uso específico",
"width": 180,
"height": 180,
"sha256": "e92d5e3dba4b703f6953419295eb4fe24c506b71debd2df117c7e53e608a27df",
"status": "arquivo disponibilizado no acervo local; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/crm-compact-b.9eced8d6bb27.png",
"original": "logos/3.png",
"label": "Identificador CRM compacto B",
"scope": "Vutti CRM; uso específico",
"width": 180,
"height": 180,
"sha256": "9eced8d6bb27264d289f54d8e9af731fa831122aa7ae3adadcc45ab7059e6343",
"status": "arquivo disponibilizado no acervo local; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/crm-composition.8fc2ee530926.png",
"original": "logos/Ativo 41.png",
"label": "Composição Vutti CRM",
"scope": "Vutti CRM; uso específico",
"width": 1921,
"height": 1081,
"sha256": "8fc2ee5309263b722d81c0077599c55a3f7f48f90b1516a4b0156a84bb2117b4",
"status": "arquivo disponibilizado no acervo local; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/crm-logo-background.5e633a9d3dbe.jpg",
"original": "logos/Logo (com fundo).jpg",
"label": "Logotipo Vutti CRM com fundo",
"scope": "Vutti CRM; uso específico",
"width": 1080,
"height": 1080,
"sha256": "5e633a9d3dbe0af8a584e5f8007429e0b3f8c139c7e4d3c4cf2fdd222d353326",
"status": "arquivo disponibilizado no acervo local; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/crm-logo-transparent.1610b25d7234.png",
"original": "logos/Logo (sem fundo).png",
"label": "Logotipo Vutti CRM transparente",
"scope": "Vutti CRM; uso específico",
"width": 1080,
"height": 1080,
"sha256": "1610b25d7234794b6c7ed69140a195380cdd94b963fb75c78abef27b3a064fea",
"status": "arquivo disponibilizado no acervo local; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/crm-symbol-transparent.3e69048aef9a.png",
"original": "logos/42.png",
"label": "Símbolo Vutti CRM, transparente",
"scope": "Vutti CRM",
"width": 1080,
"height": 975,
"sha256": "3e69048aef9a718b3255511affa342f214758661c63d642dcc864babf90beb94",
"status": "arquivo disponibilizado pelo usuário; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/crm-round-white.63c09066e786.png",
"original": "logos/43.png",
"label": "Assinatura circular CRM branca",
"scope": "Vutti CRM",
"width": 1077,
"height": 1054,
"sha256": "63c09066e78625148c048f1b74720e90e01942a46a4375ea17467229942f0220",
"status": "arquivo disponibilizado pelo usuário; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/crm-round-dark.bf69da9d00a0.png",
"original": "logos/52.png",
"label": "Assinatura circular CRM escura",
"scope": "Vutti CRM",
"width": 1055,
"height": 1031,
"sha256": "bf69da9d00a000bdf0786316ad66ffc6913acba5434e27aa94978e7e4faeca37",
"status": "arquivo disponibilizado pelo usuário; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/wordmark-background-petrol.13f7de10762c.png",
"original": "logos/Ativo 27.png",
"label": "Wordmark em fundo petróleo",
"scope": "Família Vutti",
"width": 1921,
"height": 1081,
"sha256": "13f7de10762cba2af3baaf88070b69a324cbe5fdc116663bae56215940d124af",
"status": "arquivo disponibilizado pelo usuário; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/wordmark-background-dark.20079929854d.png",
"original": "logos/Ativo 28.png",
"label": "Wordmark em fundo escuro",
"scope": "Família Vutti",
"width": 1921,
"height": 1081,
"sha256": "20079929854d062e58ee698e71f8524e20ba982561b31671a1ae696b6109d60d",
"status": "arquivo disponibilizado pelo usuário; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/crm-horizontal-dark.442841f9f131.png",
"original": "logos/Ativo 33.png",
"label": "Assinatura horizontal CRM em fundo escuro",
"scope": "Vutti CRM",
"width": 1921,
"height": 1081,
"sha256": "442841f9f131b7fef5270b25ea2274ae77d1d7c78631736946abe2fc2229ea97",
"status": "arquivo disponibilizado pelo usuário; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/crm-horizontal-petrol.dd832cd8038a.png",
"original": "logos/Ativo 34.png",
"label": "Assinatura horizontal CRM em fundo petróleo",
"scope": "Vutti CRM",
"width": 1921,
"height": 1081,
"sha256": "dd832cd8038a9fc1164cb8fc6678a737907cb729bc8670c744e733d7ed790b82",
"status": "arquivo disponibilizado pelo usuário; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/symbol-background-petrol.847c22a1c2ec.png",
"original": "logos/Ativo 47.png",
"label": "Símbolo em fundo petróleo",
"scope": "Família Vutti",
"width": 1921,
"height": 1081,
"sha256": "847c22a1c2ecc62d4ee0f5f52f8e6ff60cd026b013087cd1c7bbead5fc887f5f",
"status": "arquivo disponibilizado pelo usuário; preservar aplicação original; não define novos mínimos ou grid"
},
{
"path": "assets/brand/symbol-background-dark.3a0509577651.png",
"original": "logos/Ativo 48.png",
"label": "Símbolo em fundo escuro",
"scope": "Família Vutti",
"width": 1921,
"height": 1081,
"sha256": "3a050957765196b449a3e26a51b9b9ee807692c4a39ef514ea76b74f3c0ab630",
"status": "arquivo disponibilizado pelo usuário; preservar aplicação original; não define novos mínimos ou grid"
}
]
},
"breakpoints": {
"mobileMax": 719,
"tabletMin": 720,
"desktopMin": 1100
},
"space": [
4,
8,
12,
16,
20,
24,
32,
40,
48,
64
],
"radius": {
"control": 10,
"media": 12,
"card": 16,
"overlay": 20,
"pill": 999
},
"typography": {
"small": {
"family": "Inter",
"weight": 400,
"size": 12,
"line": 16,
"tracking": 0,
"role": "Auxiliar não crítico"
},
"label": {
"family": "Inter",
"weight": 600,
"size": 14,
"line": 20,
"tracking": 0,
"role": "Labels, botões, navegação"
},
"meta": {
"family": "Inter",
"weight": 400,
"size": 14,
"line": 20,
"tracking": 0,
"role": "Ajuda e metadados"
},
"body": {
"family": "Inter",
"weight": 400,
"size": 16,
"line": 22,
"tracking": 0,
"role": "Leitura e campos"
},
"card": {
"family": "Plus Jakarta Sans",
"weight": 700,
"size": 20,
"line": 26,
"tracking": -0.02,
"role": "Título de card"
},
"section": {
"family": "Plus Jakarta Sans",
"weight": 700,
"size": 24,
"line": 30,
"tracking": -0.02,
"role": "Seção, painel, modal"
},
"mobileTitle": {
"family": "Plus Jakarta Sans",
"weight": 800,
"size": 28,
"line": 34,
"tracking": -0.025,
"role": "Título operacional mobile"
},
"pageTitle": {
"family": "Plus Jakarta Sans",
"weight": 800,
"size": 32,
"line": 38,
"tracking": -0.03,
"role": "Título operacional amplo"
},
"publicTitle": {
"family": "Plus Jakarta Sans",
"weight": 800,
"size": 40,
"line": 44,
"tracking": -0.035,
"role": "Destaque público amplo"
},
"metric": {
"family": "Inter",
"weight": 700,
"size": 28,
"line": 34,
"tracking": 0,
"role": "Resumo numérico"
},
"mono": {
"family": "Sometype Mono",
"weight": 500,
"size": 12,
"line": 16,
"tracking": 0.04,
"role": "Tag contextual curta"
}
},
"themes": {
"light": {
"canvas": "#f5f7f6",
"surface": "#ffffff",
"surfaceAlt": "#e7f6f2",
"elevated": "#ffffff",
"text": "#17252b",
"muted": "#68777b",
"border": "#dfe7e4",
"borderStrong": "#dfe7e4",
"accent": "#087d72",
"accentStrong": "#05645c",
"success": "#34895b",
"warning": "#b7791f",
"danger": "#b64d4d",
"onPrimary": "#0d252b",
"status": "tokens efetivos do SaaS, consolidados por overrides posteriores; borderStrong reutiliza a borda existente, sem criar escala"
},
"dark": {
"canvas": "#111a23",
"surface": "#1c2934",
"surfaceAlt": "#263641",
"elevated": "#263641",
"text": "#f1f5f8",
"muted": "#b4c2cb",
"border": "#354652",
"borderStrong": "#40515d",
"accent": "#61d9c3",
"accentStrong": "#95eadb",
"success": "#61d9c3",
"warning": "#ffe7a3",
"danger": "#f7c8d8",
"onPrimary": "#082a2d",
"status": "superfícies vigentes no Painel; adaptação futura no Presentes; semânticas adaptadas no manual"
}
},
"button": {
"primary": 48,
"contextual": 44,
"iconTarget": 44,
"paddingInline": 16,
"gap": 8,
"icon": 18,
"font": 14,
"line": 20,
"weight": 600
},
"field": {
"height": 42,
"paddingInline": 16,
"labelGap": 8,
"helpGap": 4,
"textareaMin": 104,
"font": 16,
"line": 22
},
"iconography": {
"viewBox": "0 0 24 24",
"stroke": 1.8,
"sizes": [
16,
18,
20,
24,
32
],
"target": 44,
"color": "currentColor"
},
"panel": {
"current": {
"status": "implementado",
"container": 1440,
"sidebarOpen": 240,
"sidebarClosed": 72,
"topbar": 0,
"gutterDesktop": 24,
"gutterCompact": 16,
"pagePaddingTop": 16,
"pageSize": 10,
"darkTheme": true,
"source": "panel.css; panelStore.js vigente; P075 cita 25 anteriormente, superado pela referência viva de 09/10",
"light": {
"surface": "#ffffff",
"head": "#f4f5fa",
"border": "#dfe3eb",
"row": "#e9eaf1",
"field": "#ffffff"
},
"dark": {
"surface": "#1c2934",
"head": "#263641",
"border": "#40515d",
"row": "#354652",
"field": "#17242e",
"canvas": "#111a23",
"text": "#f1f5f8",
"muted": "#b4c2cb",
"accent": "#61d9c3",
"accentStrong": "#95eadb"
}
},
"target": {
"status": "padrão definido para evolução futura, autorizado no PROMPT 002",
"container": 1440,
"sidebarOpen": 232,
"sidebarClosed": 76,
"topbar": 64,
"gutterDesktop": 24,
"gutterCompact": 16,
"focused": 720,
"access": 450,
"drawerMax": 286,
"drawerVw": 84,
"navTarget": 44,
"source": "HTML de referência: saas + sidebarCanonical; adaptado à Vutti"
},
"modules": [
"Visão geral",
"Usuários",
"Listas",
"Créditos",
"Financeiro",
"Operação",
"Equipe",
"Histórico"
]
},
"presentes": {
"status": "vigente, tema claro",
"container": 1120,
"focused": 720,
"access": 450,
"topbar": 64,
"gutterDesktopTablet": 24,
"gutterMobile": 16,
"cardPaddingDesktopTablet": 20,
"cardPaddingMobile": 16,
"summaryCardMax": 300,
"summaryGroupMax": 932,
"summaryGap": 16,
"loginCardDesktop": 542,
"signupCardDesktop": 548,
"coverRatio": "3 / 2",
"darkTheme": "futuro; não implementado no produto nesta tarefa",
"source": "referência viva consolidada em 09/10/2026",
"accessException": {
"desktopTablet": {
"header": 92,
"input": 54,
"button": 62,
"title": "40/48",
"signupPadding": 24,
"loginPadding": 27
},
"mobile": {
"header": 80,
"input": 48,
"button": 52,
"title": "28/34",
"padding": 20
},
"primaryText": "#ffffff",
"status": "exceção aprovada PROMPT 090; contraste do CTA precisa avaliação contextual, não token global"
}
},
"site": {
"status": "superfícies existentes, com exceções locais",
"institutional": "#0d252b",
"institutionalAlt": "#12343b",
"soft": "#f6fbfb",
"text": "#132327",
"muted": "#66777b",
"border": "#dce8e8",
"fonts": "Plus Jakarta Sans / Inter / Sometype Mono no Presentes web; Montserrat/Nunito Sans nas composições históricas aprovadas",
"containerUniversal": null
},
"blog": {
"status": "sem definição editorial Vutti aprovada localizada",
"container": null,
"articleSize": null,
"coverRatio": null
},
"social": {
"status": "sem acervo de criativos Vutti aprovado localizado",
"formats": null,
"safeAreas": null,
"typeScale": null
},
"documents": {
"status": "sem template institucional Vutti aprovado localizado",
"margins": null,
"typeScale": null,
"slideGrid": null
},
"rules": {
"autosave": "Salvando… durante a operação; Salvo após confirmação do servidor; Falha ao salvar persistente até resolução. Respostas antigas não sobrescrevem edições novas.",
"retention": "Conservar busca, filtros, ordem, página e larguras ao voltar de detalhes.",
"reservation": "Confirmação pós-reserva é página dedicada, não toast; reservar não é comprar.",
"kit": "Kit é uma unidade reservável; componentes em linhas de até 120 caracteres; colagem inválida rejeitada integralmente.",
"recovery": "Lista indisponível: consulta e cópia estática da escolha local mais recente, sem edição nem gravação.",
"theme": "O manual alterna claro/escuro e persiste preferência; a demonstração escura do Presentes documenta aplicação futura.",
"empty": "Ausência de dados não representa zero, sucesso, receita ou atividade.",
"access": "Cadastro 548 px / login 542 px; sem checkbox adicional; aviso legal sob Google. Exceção de campos 54/48 e botões 62/52, título 40/48 ou 28/34. Política vigente 10–128 caracteres Unicode, letra, número ASCII e especial não branco; backend autoridade.",
"publication": "Um evento; sem vencimento pela data ou mensalidade; após encerrar consulta por 12 meses. Nome livre, ocasião bloqueada após vínculo; data e conteúdo editáveis até encerramento. Preço do servidor, nunca fixado no manual."
},
"gaps": [
"Área de proteção e tamanho mínimo normativo dos logos",
"Escala universal de bordas, foco e elevação",
"Paleta semântica completa do futuro tema escuro do Presentes",
"Dimensão final normativa da capa pública",
"Container universal dos sites da marca",
"Sistema editorial de blog",
"Formatos e áreas seguras de redes sociais",
"Templates de documentos e apresentações"
],
"provenance": {
"typography": "referência viva §2",
"spacing": "referência viva §3",
"geometry": "referência viva §4-5",
"light": "styles.css :root PROMPT 021 (linhas 5898+), efeito após overrides",
"dark": "Painel panel.css linha 93; semânticas do manual são adaptação futura",
"access": "referência viva §11 / PROMPT 090",
"panel": "referência viva §11 + frontend + backend panelStore.js",
"site": "assets e widget HTML em Vutti/vutti_presentes; sites históricos mantêm exceções"
}
}| Fonte | Função |
|---|---|
| Design System específico do SaaS · revisão 09/10/2026 | Norma viva e exceções mais recentes |
| design-system-vutti.md | Fundamentos da família; histórico comparado |
| Painel_vutti: panel.css, panel.js, docs e backend de consultas | Estado atual, temas, composição, permissões, paginação |
| Vutti_presentes: styles.css, HTML, componentes e decisões | Tokens efetivos, editor, acesso, reservas e experiência pública |
| Vutti: widget, assets, documentação WordPress e páginas públicas | Identidade institucional e aplicações web |
| HTML fornecido do manual de referência | Estrutura, navegação e lógica de consulta; sem identidade incorporada |
Materiais aprovados de blog, redes e documentos ainda precisam ser incorporados para fechar suas normas específicas. Isso é uma lacuna de referência, não uma funcionalidade inventada.
Redes sociais
Aplicação da marca nos canais sociais. Os diretórios consultados não contêm um acervo aprovado que sustente uma grade universal de criativos.
Uma hierarquia.Sem campanha ou promessa inventada.
Hierarquia deve priorizar mensagem e ação. Preservar contraste, marca e legibilidade no tamanho efetivamente exibido. Safe areas, proporções e tipografia ficam null até consolidação; exemplos acima não autorizam uso como campanha.