Ideal para Jericoacoara e Canoa Quebrada
5 pessoas · 3 malas grandes · altura livre para estrada de areia
Cada componente é desenhado com todos os estados, e são os estados que comunicam o que está acontecendo. Se só o repouso existir, cada pessoa que implementa adivinha o resto, e a consistência entre formulários se perde na segunda tela.
Um único botão vermelho por peça. Se toda ação da tela for um botão sólido vermelho, nenhuma comunica prioridade, e o orçamento de 20% de área vermelha estoura na primeira composição.
Um botão que não muda durante a requisição convida o segundo clique, e o segundo clique aqui é uma segunda cobrança de caução no cartão. Todo botão que dispara ação assíncrona precisa do estado, e fica não-clicável enquanto ele durar.
O sistema proíbe rotação em qualquer elemento. O carregando é feito de três pontos em fade, cada um com 400ms (o teto de duração do sistema), defasados para formar a onda. Com prefers-reduced-motion, os pontos ficam estáticos.
A marca proíbe texto com alpha, e opacity num nó que contém texto é exatamente isso. O estado usa dois tokens literais: fundo #F2F2F0 e texto #A8AAAE.
É o único componente retangular do sistema, e é isso que o separa de um botão à primeira vista. A variante verde marca confirmação; a preta, um fato operacional neutro; --warn é atenção sem ser erro. --outline e --neutral existem para a vitrine (ver 13 · Roadmap): numa grade de 32 cards, só o preço é vermelho; selo de prova social não compete por esse sinal.
O valor é display itálico 900 em vermelho, com tracking em -0.04em e entrelinha 0.9. Vive sobre mist ou branco. Nunca sobre amarelo: o par cai para 2,94:1 e reprova em contraste.
O componente mais usado do sistema. Números canônicos: 4,7 no Google e 9,4 no Reclame Aqui, acima das três maiores. Sempre em vírgula decimal, formato pt-BR, e sempre inteiros de uma vez. Contador animado remete a dashboard de software, não a reputação de gente.
5 pessoas · 3 malas grandes · altura livre para estrada de areia
5 pessoas · 2 malas grandes · porta-malas fechado
O esqueleto tem o formato do conteúdo final, não um indicador genérico: a pessoa já entende a estrutura da tela antes dos dados chegarem, e lê isso como "quase pronto" em vez de "travado". É estático de propósito: um brilho em loop contínuo violaria o teto de 400ms e a regra de que nada no sistema pulsa.
O CTA aqui é --outline (ver 13 · Roadmap): numa vitrine com múltiplos cards lado a lado, o vermelho cheio fica reservado para o preço; a ação de listagem sai de contorno, e volta a ser cheia só na tela de um carro único.
Um campo não é uma imagem estática: é um componente com estados, e são eles que respondem às perguntas que a pessoa faz enquanto preenche. Meu preenchimento foi aceito? Onde está o erro? Qual campo está em foco agora?
O placeholder some no primeiro caractere digitado. Qualquer coisa que a pessoa precise consultar enquanto preenche (formato de senha, onde fica o CVV) precisa de texto de ajuda persistente, visível com o campo já preenchido.
No momento do erro a atenção já está naquele campo específico. Um banner genérico no topo do formulário obriga a pessoa a subir, ler e voltar procurando qual campo falhou.
O rótulo do campo fica em 12px, o degrau Etiqueta da escala.
Nenhum texto fica abaixo de 12px em tela, e a escala tem cinco degraus, nada entre eles. O degrau Etiqueta existe exatamente para este papel: um rótulo menor violaria a regra geral e inventaria um sexto degrau.
O checkout tem mais de doze campos, e caixas preenchidas em sequência cansam a vista. Campo preenchido só faria sentido se o formulário estivesse sobre foto ou fundo colorido, e ele vive no campo claro do vão.
Uma opção entre várias que não podem coexistir. A forma de pagamento escolhida muda quais campos aparecem depois: boleto não pede número, validade nem CVV.
De zero a todas. A caixa opcional nasce sempre desmarcada e tem peso visual menor que a obrigatória: não são a mesma decisão, e não devem parecer a mesma.
Só para configuração binária que vale na hora, sem passo de salvar. Usar chave para algo que só é aplicado depois de um "salvar" deixa a pessoa em dúvida sobre se ainda precisa confirmar.
O vermelho é o orçamento da ação principal da tela. Um checkout com cinco caixas marcadas em vermelho estouraria o teto de 20% de área e faria o botão de confirmar deixar de ser o elemento de maior contraste, justamente aquele de que a hierarquia depende. Marcado usa preto; o vermelho fica reservado ao único CTA.
Fica sobre branco, dentro do campo claro do vão, com o amarelo em volta. O botão é o único vermelho da composição. Em telas abaixo de 768px os quatro blocos empilham: a busca nunca comprime a ponto de o alvo de toque cair abaixo de 44px.
Dividir um formulário de doze campos em três telas reduz o esforço percebido a cada momento, mesmo que o trabalho total seja idêntico. E o indicador comunica que existe um fim conhecido: a incerteza de "quanto ainda falta" é uma das maiores causas de abandono. Voltar uma etapa nunca apaga o que já foi preenchido.
Validade e CVV lado a lado espelham o layout físico do cartão, que a pessoa provavelmente tem na mão. A bandeira reconhecida aparece dentro do próprio campo, confirmando visualmente que o sistema entendeu o número digitado.
O alerta usa borda de 4px à esquerda e nenhuma sombra. O texto segue o Registro 2: caixa baixa, conversacional, sem exclamação. É onde a promessa de "sem letra miúda" é testada.
Mostrar o valor total imediatamente acima do botão reduz a ansiedade de clicar em pagar sem uma confirmação final do que será cobrado. "Não cobramos" em verde transforma uma ausência de taxa em um benefício visível. É o mesmo fato operacional que a marca já usa na comunicação.
Modal, sheet, popover, menu, disclosure, overlay e skiplink: sem eles, filtro, checkout e conta não se sustentam. Todos sobre --asa-surface-float, o cinza mist: branco sobre branco, separado só por 14% de borda, seria praticamente invisível.
Uso: ver, alterar ou cancelar sem sair da página, e explicar a caução com valor exato antes de pedir o cartão. O overlay escurece tudo por trás: é o único lugar do sistema em que o mist flutuante convive com um véu quase preto.
Padrão mobile: filtro da vitrine, seleção de proteção. É o destino do botão "Filtrar" da tela 3 de 12-app-nativo.html.
A mesma superfície serve ao autocomplete do combobox e ao calendário do datepicker (ver Motor de busca, abaixo).
Regra dura do sistema (11-movimento.html): nada gira. O indicador troca de glifo, nunca anima rotação.
asa-skiplink não tem demonstração visual por desenho: é invisível até ganhar foco de teclado (Tab): o pulo para o conteúdo principal que o header de duas camadas, logo abaixo, torna necessário.
asa-search completo: linha de negócio, campos, chips e consulta de reserva, com combobox, datepicker + timeselect, chip e booking lookup. O mesmo bloco em três lugares do site.
__tabs é a linha de negócio; __row é o grid de campos; __chips cobre idade, CNH estrangeira e cupom sem inventar um quarto campo; __aside é onde o booking lookup mora dentro da busca.
Quatro tipos de lugar, cada um com o seu ícone: aeroporto, cidade, bairro e destino. __empty cobre a busca sem resultado (não modelado aqui): uma linha de texto centralizada no lugar da lista.
A diária de 27h só é vendável se a hora entrar na busca. Por isso o timeselect nunca aparece sozinho, sempre ao lado da data.
Radius 8px, nunca pill: a regra de forma da marca ("nada mais é arredondado") não abre exceção para chip. [aria-pressed] é o estado, nunca uma classe modificadora.
Em /minha-reserva, com o cartão da própria página por baixo.
--plain, dentro de um popover
O mesmo bloco aparece no header, no widget da home e em /minha-reserva: três molduras, um componente.
asa-filters, asa-resultbar, asa-speclist, asa-rating e asa-emptystate, mais o asa-card-vehicle completo, com selo, política de cancelamento, preço de 5 partes e dois CTAs.
.asa-layout-2col empilha abaixo de 1024px. Contagem zero desabilita o input do filtro; a opção não some, porque isso mudaria o layout a cada clique. O segundo card mostra [data-state="soldout"]: véu sobre a mídia, CTA disabled, nunca opacity solta em texto.
Nenhum carro com esses filtros
Tente remover um filtro ou ampliar o intervalo de datas.
Filtros combináveis produzem conjunto vazio. Sempre com uma saída de ação, nunca só "nenhum resultado".
Seis componentes do checkout: resumo fixo, upsell, comparação de proteções, adicional, detalhamento do preço e método de pagamento.
--sticky aparece a partir de 1024px, grudado a --asa-header-h mais um respiro; --bar assume sozinho abaixo disso, fixo no rodapé. O mesmo markup serve os dois; a troca é só CSS.
Uma linha de prova social e o acréscimo por dia. Nasce desmarcado, como toda escolha opcional.
As proteções aparecem em tabela comparativa, lado a lado, nunca como três blocos de texto em sequência.
asa-choice--card
Estado marcado é a borda inteira (2px), não só o quadrado de 20px: numa lista de 4-5 adicionais em sequência, um check pequeno se perde.
Toda diferença entre a diária e o total precisa ser explicada linha a linha. Sem isso, "preço final" vira uma promessa que ninguém consegue verificar.
Pix turquesa é a única cor de terceiro isolada no sistema. Não vaza para nenhum outro componente.
asa-card-booking e asa-tasklist para /minha-reserva; asa-reassurance, asa-consent, asa-stickybar e asa-figure sustentam a confiança em volta dela.
Três fatos operacionais em linha, mais a prova social ao vivo como linha opcional. Nunca contador animado.
Enquanto a foto não existe: asa-photo, com a legenda dizendo qual foto falta.
Com a foto: asa-figure, mesma proporção e legenda.
A foto é de lugar real e de gente, nunca de carro em estúdio. O sistema entrega o slot, o corte de 8° e a legenda; não entrega a fotografia. A foto é conteúdo, não ilustração: onde ela entra, ícone e card saem. Enquanto a foto real não existe, o hachurado de asa-photo marca o lugar e a legenda diz o que falta, como briefing da produção fotográfica. Foto de banco de imagem só como comp de visualização em protótipo, marcada como tal. Nunca em produção, porque não é a Asa.
__prefs é o painel de granularidade: some por padrão, revelado por um asa-disclosure em "Preferências".
Barra fixa com o cupom de primeira locação, em vez de um slide de carrossel que passa.
asa-shelf e os quatro cartões de conteúdo/local que a home e os hubs de página precisam além do card de veículo, mais asa-pagination, asa-prose, asa-accordion e asa-testimonial.
Rolagem nativa por overflow-x, com o próximo card à mostra (1,15 no celular, 2,2 no tablet, 3,25 no desktop): a borda cortada é a pista de que há mais. Setas nas pontas, sim: são botões, desativados no início e no fim por JS e escondidos sem ele (data-js). Bolinha de paginação, não: "nada gira" cobre indicador que pulsa. O deslize respeita o teto de 400ms.
A grade da home: dois tiles grandes e dois pequenos, nunca quatro iguais. O nome vive sobre a foto num chip branco; é o que faz a foto virar conteúdo em vez de ilustração. Quatro cards iguais com legenda embaixo é o padrão a evitar (ver 15 Composição).
Para quem ainda não alugou com a Asa.
Hatch para o casal, Spin de 7 lugares para a família.
O card de oferta tem ficha fixa: como usar, validade e onde vale, nas três linhas de __facts; sem validade confirmada, ele não é publicado. O selo fica sobre a foto (__badge, no canto que o corte não sobe), nunca acima do título. O código do cupom é asa-coupon: campo somente leitura e botão de copiar, que troca para "Código copiado" por 3s. Regras longas vão no __rules, um disclosure. Os valores do exemplo são ilustrativos. Um cartão para cada hub: /ofertas, /lojas e /blog. O artigo herda o mesmo corte de 8° do card de veículo; nenhum tipo de card do sistema usa uma moldura de foto diferente. A categoria vai na linha de dados, abaixo do título (acima ela seria sobretítulo), e o título é o link que cobre o card inteiro.
Um blog maduro passa de 100 páginas. Página atual em preenchimento ink: é posição, não ação.
Na Asa, a diária começa na hora da retirada e vale por 27 horas, não 24: devolver com até três horas de atraso não gera cobrança extra. É regra operacional, e por isso vive como texto corrido em vez de selo.
O balcão fica dentro do saguão do aeroporto. Sem transfer, sem taxa de aeroporto embutida na tarifa exibida.
Veja também as regras de locação e a política de combustível.
h1/h2/h3/p/small soltos não fazem uma página de texto: asa-prose é o bloco que os agrupa com medida e espaçamento fixos.
| Categoria | Exemplos | Quando |
|---|---|---|
| Habilitação | número, categoria e validade da CNH | reserva e balcão |
| Contato | e-mail, celular, endereço | reserva e atendimento |
Para texto longo (política, termos, regras). A tabela dentro de asa-prose tem fio entre linhas e nenhuma caixa; abaixo de 640px cada linha vira um bloco, com o nome da coluna tirado do data-label da célula. asa-toc é o índice de âncoras: gruda ao lado do texto no desktop e marca a seção em leitura com aria-current="true", o mesmo traço vermelho do navbar.
Dúvidas frequentes, com FAQPage na base de SEO. Reaproveita asa-disclosure item a item; o accordion só fecha a borda superior do grupo.
Retirei o carro em 10 minutos, sem sair da fila do aeroporto para achar um totem de outra locadora.
Componente próprio, sem depender de foto para existir. Sem foto da pessoa, não há avatar: o ícone de marca no lugar dela diria que a cliente é a Asa. Na home, os depoimentos vivem ao lado das placas de número, sem card em volta.
asa-upload para o check-in "Asa Express", asa-codeinput para o código de verificação (12-app-nativo.html), e asa-card-plan para o Clube Asa.
Arraste a CNH ou toque para escolher o arquivo
JPG ou PDF, até 10MB
O mesmo tratamento de superfície de asa-field, para não parecer um plugin de terceiro dentro do formulário.
Cada dígito é um asa-input: herda foco, inválido e desabilitado do campo, sem um segundo conjunto de sinais.
Reaproveita asa-card e asa-price (o preço segue vermelho, o mesmo sinal único do sistema) em vez de uma quarta variação de cartão de preço. Sem gamificação: o benefício é desconto e cancelamento, nunca pontos ou selo de nível.
Uma página é uma sequência de faixas de largura total, cada uma com fundo próprio e uma estrutura que não se repete na seguinte. As seis estruturas abaixo são as da home e servem a qualquer página de produto: hero com a busca, faixa-foto com três fatos, editorial, prova, dúvidas e fechamento. Cada faixa é <section class="asa-section asa-bg-…"> com um .asa-container dentro. A regra de sequência está em 15 · Composição.
Todos com ar-condicionado e quilometragem livre. Os valores são por diária de 27 horas, já com taxas.
H2 em Registro 2 com uma palavra em vermelho (<em>), lide de 18/28 (.asa-lead) na medida de 640px e, à direita, o controle da faixa quando existir. Nada acima do título: o sobretítulo não existe no sistema.
O único lugar do Registro 1 e da marca d'água. O trecho que a Asa assina vai numa placa preta (.asa-hero__mark). A busca é o motor de Motor de busca dentro de um cartão branco; o botão fica dentro da primeira dobra em 375×812. Logo abaixo, não vem a trinca de ícones: vem a faixa-foto.
Retirou às 10h, devolve até as 13h do dia seguinte.
Se o voo ou o plano mudar, sem custo.
Do balcão, no desembarque, direto ao pátio.
A emoção vem da foto, o fato vem do texto. Três fatos em Destaque 20/28 e uma linha de corpo denso, numa régua branca que sobe sobre a foto. Sem ícone: três frases não precisam de âncora de leitura. Proporção da foto: 4:3 no celular, 16:9 no tablet, 21:9 no desktop.
O balcão fica no terminal de desembarque e o carro sai do pátio do próprio aeroporto. Com estes quatro itens em mãos, a retirada é rápida.
Atenção à caução: Apple Pay, Google Wallet e cartão virtual não funcionam na maquininha do balcão. Leve o cartão de plástico com chip.
É a faixa "como funciona": lista de definições em duas colunas, sem numeração, porque a ordem dos quatro itens não informa nada. O aviso da caução é um cartão branco com borda e a palavra de alerta em --asa-warn; não é um alerta de sistema. Fundo da faixa: cinza mist, para alternar com o branco anterior.
Chegou de madrugada? Tem alguém no balcão. O atendimento é no terminal de desembarque, sem van e sem transfer.
Aeroporto do Recife (REC)
Portão A5 do terminal de desembarque. O carro sai do pátio interno, a poucos passos do saguão.
Ver carros em RecifeAeroporto de Fortaleza (FOR)
Área de locadoras, no terminal de desembarque. Atendimento direto, todos os dias.
Ver carros em FortalezaO preto aparece uma vez por página, no momento da prova. As praças são asa-card-place: foto grande com o nome num chip preto, texto e link em amarelo. Abaixo da régua, as placas 4,7 e 9,4 em asa-numberplate--bare e dois depoimentos em asa-testimonial--bare, sem card e sem avatar. Os números aparecem inteiros, nunca em contador.
Não achou a resposta? A equipe atende no WhatsApp e no telefone, 24 horas.
Falar no WhatsAppPergunta em Destaque 20/28, resposta em corpo, divisor de 1,5px entre elas, sem card. É o asa-disclosure em <details> nativo: abre e fecha sem JS e o ícone troca de glifo, nunca gira. À esquerda, no desktop, o H2 e o caminho para o atendimento.
Escolha as datas, veja o preço final e reserve. Cancelamento grátis até 24h antes.
Faixa curta (.asa-section--short): H2 em Registro 2, uma frase e dois botões. Sem marca d'água, sem H1, sem repetir a frase do hero. O amarelo abre e fecha a página e não aparece no meio dela.
| Faixa | Fundo | Estrutura | Classes |
|---|---|---|---|
| Cabeçalho | branco | lockup, menu, telefone, botão "Reservar" | asa-navbar |
| Hero | amarelo | H1 em Registro 1, lide, busca em cartão branco, marca d'água | asa-hero + asa-search |
| Faixa-foto | branco | foto larga, régua com três fatos | asa-factstrip |
| Frota | branco | prateleira com setas, o próximo card à mostra | asa-section-head + asa-shelf + asa-card-vehicle |
| Editorial | mist | foto com corte de 8°, H2, lista de definições | asa-editorial + asa-cut |
| Prova | preto | duas praças em foto, placas, depoimentos | asa-proof + asa-card-place + asa-numberplate--bare + asa-testimonial--bare |
| Destinos | branco | grade assimétrica, nome sobre a foto | asa-destgrid + asa-card-destination--overlay |
| Dúvidas | branco, com divisor no topo | H2 à esquerda, lista com divisores | asa-faq + asa-disclosure--faq |
| Fechamento | amarelo | H2, frase, dois botões | asa-section--short + asa-closing |
| Rodapé | preto profundo | lockup branco, endereços das praças, legal | asa-footer |