Pular para o conteúdo
Guia de execução · menu Design

Menus, abas e paginação: navegação que não perde o visitante

Menu mal resolvido perde o visitante em silêncio: ele deixa de achar o que procura e sai sem reclamar com ninguém. O Nielsen Norman Group mediu esse custo em 2016: no desktop, o menu escondido atrás do ícone de três linhas foi usado em 27% dos casos, contra 48% da navegação visível, e as tarefas ficaram pelo menos 39% mais lentas. Cada decisão aqui vem com o número e o dono: quando o mega menu vence e o atraso de hover que 60% dos sites esquecem (Baymard, 2023), o papel ARIA certo para cada tipo de menu (W3C), os alvos de toque do WCAG 2.2, o critério de abas do Nielsen Norman Group e a escolha entre paginar, carregar mais e rolagem infinita, com o que o Google exige por baixo. A mesma matéria está em aula de vídeo e podcast logo abaixo.

Guia do menu Design do portal, construído sobre pesquisa de fontes primárias verificada em 18/08/2026 e sobre os capítulos de navegação do curso Frontends com Vibecoding, de Alexandre Caramaschi. Ele compõe o menu com o guia de ícones, ilustrações, animação e geração de imagens e conversa com a aula de landing e formulário.

Ilustração em traço azul-marinho com destaques rosa e dourado de uma pessoa diante de uma grande interface flutuante, na qual um menu em destaque dispara setas e caminhos que levam a várias telas menores ao redor.
O menu é o mapa do site: cada rótulo abre um caminho, e o caminho que ninguém encontra deixa de existir.

A aula, em vídeo e em podcast

O conteúdo deste guia virou uma aula gerada no NotebookLM a partir do dossiê de pesquisa, servida nos arquivos originais, sem recompressão. O vídeo apresenta o panorama em minutos; o podcast aprofunda a conversa para ouvir no deslocamento.

Aula em vídeo: menus, abas e paginação, com os números e as fontes do guia.
Podcast da aula: a conversa aprofundada sobre as mesmas decisões.

Arquivos originais: vídeo em MP4 · podcast em M4A · legenda

O custo de esconder a navegação

Esconder o menu custa uso, descoberta e velocidade, e o custo tem medição. O estudo do Nielsen Norman Group de 2016, com 179 participantes em seis sites, registrou: no desktop, as pessoas usaram o menu escondido em 27% dos casos, contra 48% com a navegação visível e 50% com a navegação combinada, em que parte dos itens fica exposta. No mesmo estudo do Nielsen Norman Group, a descoberta de conteúdo caiu mais de 20% com a navegação escondida e as tarefas no desktop ficaram pelo menos 39% mais lentas. No celular do mesmo teste a lentidão foi de 15%, e essa diferença sustenta a regra prática: o hambúrguer é tolerável no celular e um erro no desktop.

Uso da navegação no desktop conforme a visibilidade do menu Gráfico de barras horizontais com três condições de menu no desktop: navegação escondida atrás de um ícone é usada por 27% das pessoas; navegação visível, por 48%; navegação combinada, visível com complemento escondido, por 50%. Uma anotação registra que, com o menu escondido, as tarefas ficam pelo menos 39% mais lentas. Quem usa a navegação principal no desktop 0% 10% 20% 30% 40% 50% escondida atrás de ícone 27% visível sempre na tela 48% combinada visível + escondida 50% com o menu escondido, tarefas pelo menos 39% mais lentas
No desktop, a navegação escondida atrás de ícone é usada por 27% das pessoas, contra 48% quando visível e 50% na versão combinada; com o menu escondido, as tarefas ficam pelo menos 39% mais lentas. Fonte: Nielsen Norman Group, 2016, 179 participantes.

A consequência operacional é uma divisão de camadas. Ação de alta frequência mora na superfície, visível; o secundário desce para a gaveta. E antes de qualquer forma vem o rótulo: o Nielsen Norman Group chama de "aroma de informação" a propriedade de um link dizer, antes do clique, o que existe do outro lado. Trocar Saiba mais por Ver planos e preços é a melhoria mais barata de uma navegação, e o teste cabe numa frase: leia cada rótulo isolado do resto da tela e pergunte se dá para saber o que vem depois do clique.

A gaveta que o time entrega esta semana tem quatro requisitos: foco preso dentro do painel, fechamento por Esc, fechamento por clique fora e devolução do foco ao gatilho. O ícone leva a palavra "Menu" escrita ao lado do desenho. E o botão voltar do celular fecha a gaveta em vez de expulsar a pessoa do site: registra uma entrada no histórico ao abrir, escuta o evento de voltar para fechar, e desfaz a entrada quando o painel fecha pelo X ou pelo Esc. O curso Frontends com Vibecoding resolve isso em quinze linhas, e o prompt pronto está no fim da página.

Ilustração de uma mão segurando um celular com o polegar tocando a tela, uma barra inferior de navegação em rosa com três botões dourados ao alcance do polegar e uma gaveta lateral dourada entreaberta atrás do aparelho.
No celular, a ação frequente mora na barra inferior, na zona do polegar; a gaveta guarda o secundário.

Mega menu: o padrão dominante, com o defeito que 60% cometem (Baymard, 2023)

O mega menu aberto por hover é a navegação principal em 88% dos maiores e-commerces dos Estados Unidos, segundo o benchmark do Baymard Institute, e testes do Nielsen Norman Group desde 2009 confirmam que ele supera o dropdown comum, porque mostra tudo de uma vez em vez de pedir memória. O problema mora na implementação: o Baymard mediu em 2023 que 60% dos sites servem o hover sem atraso, e o painel abre e fecha sozinho quando o cursor cruza a barra, fechando na cara de quem move o mouse em diagonal para alcançar uma subcategoria. O instituto documenta o contraste com dois casos: na Dell, categorias vizinhas disparavam no caminho do cursor; na Staples, o atraso segura o painel certo aberto.

O problema da diagonal no mega menu Esquema de uma barra de navegação com três itens e um painel de mega menu aberto sob o item 1. Uma linha tracejada mostra a trajetória diagonal do cursor, do item 1 até uma subcategoria no canto oposto do painel; no caminho, o cursor cruza a área do item 2, o que fecharia o painel. Um selo indica a proteção: atraso de 300 a 500 ms antes de trocar o painel. Trajetória do cursor sobre o mega menu aberto Item 1 Item 2 Item 3 Subcategoria A1 Subcategoria A2 Subcategoria A3 Subcategoria B1 Subcategoria B2 Subcategoria B3 Subcategoria C1 Subcategoria C2 Subcategoria C3 a diagonal cruza o item 2: sem proteção, o painel troca no meio do caminho atraso de 300 a 500 ms
Ao mover o cursor em diagonal do item 1 para uma subcategoria distante, a trajetória cruza o item 2 e o painel troca antes da chegada; um atraso de 300 a 500 ms na troca protege o percurso. Fonte: Baymard Institute, 2023: 60% dos sites servem o hover sem atraso.

A correção custa uma configuração: atraso de 300 a 500 milissegundos antes de abrir e antes de fechar, faixa que, segundo o Baymard em 2023, elimina a maioria dos disparos acidentais. No celular, o mega menu vira acordeão ou gaveta em vez de replicar o grid de colunas. E o tamanho da oportunidade aparece no benchmark 2025 do mesmo instituto, com mais de 16.000 avaliações: 58% dos sites desktop e 67% dos mobile têm navegação de home e categoria classificada de medíocre a ruim. Navegação bem executada é minoria mensurada, e por isso é vantagem competitiva de quem a trata como projeto.

Os quatro sentidos de "menu", e o erro que a IA repete

O erro mais caro em acessibilidade de navegação é usar o papel ARIA de menu em navegação de site. O exemplo oficial de navegação do W3C, no guia de práticas WAI-ARIA, declara que a própria implementação dispensa esse papel: navegação típica de site fica sem as interações de teclado que as tecnologias assistivas esperam de um widget com o papel de menu, então o padrão certo é o de área que abre e fecha (disclosure), com <nav> e links. O papel de menu fica reservado ao menu de ação, com comandos como editar, duplicar e excluir, que imita os menus do sistema operacional e responde ao teclado completo: setas circulando entre os itens, Home e End, uma letra pulando para o item, Enter acionando e Esc fechando com o foco de volta no gatilho.

1. Navegação de site

Lista de links para outras páginas: <nav>, lista e link do próprio HTML. O papel de menu traria navegação por setas que ninguém espera em link de site.

2. Área que abre e fecha

Um botão mostra e esconde um trecho: submenu, navegação de celular, FAQ. O botão declara se está aberto e a que área se refere. É o padrão que resolve a maioria dos mega menus.

3. Menu de ação

Comandos sobre a própria tela. Aqui entra o papel de menu, com o teclado completo descrito acima. Improvisar com div e onClick exclui em silêncio quem navega sem mouse.

4. Barra de menu de aplicativo

Faixa permanente tipo Arquivo/Editar. É rara na web e quase sempre escolhida por engano.

Qual dos quatro padrões de menu usar Fluxograma de decisão em três perguntas. Se o clique leva a outra página, é navegação de site: nav com links, sem role de menu. Se não, e o controle mostra e esconde um bloco, é uma área que abre e fecha, o padrão disclosure. Se não, e o controle executa um comando na tela, é menu de ação: role de menu e teclado completo. Se nada disso, é a barra de menu de aplicativo, rara na web. Três perguntas separam os quatro padrões O clique leva a outra página? sim Navegação de site nav + links, sem role de menu não Mostra e esconde um bloco? sim Área que abre e fecha padrão disclosure não Executa comando na tela? sim Menu de ação role de menu e teclado completo não Barra de menu de aplicativo rara na web
Três perguntas separam os quatro padrões de menu: link que navega usa nav e links sem role de menu; bloco que abre e fecha usa disclosure; comando na tela usa menu de ação com role de menu e teclado completo; a barra de menu de aplicativo é rara na web. Fonte: padrões do guia W3C WAI-ARIA APG.

Esse é também o erro mais frequente em código gerado por inteligência artificial: o modelo lê a palavra "menu" e aplica o papel de aplicativo. A correção entra no próprio pedido ao agente, numa frase: a navegação primária usa <nav> e links, sem papel de menu. Nas primitivas, o shadcn/ui separa os dois propósitos em componentes distintos, NavigationMenu para links e DropdownMenu para ações, e desde julho de 2026 abre projetos novos sobre o Base UI, mantido pela equipe do MUI e estável desde 11 de dezembro de 2025. Do lado nativo, o atributo popover entrega abertura, fechamento, Esc e clique fora sem JavaScript, com uma ressalva: ele define papel nenhum, então o menu de ação continua precisando do papel declarado ou de uma primitiva por baixo.

Alvos de toque: cada número com o dono certo

Números de alvo de toque circulam misturados, e a mistura reprova auditoria. A tabela separa o que é norma exigível do que é recomendação de plataforma, com a fonte de cada linha.

RéguaValorQuem exige, e a que título
Piso de conformidade24 por 24 pixels de CSSWCAG 2.2, critério 2.5.8, nível AA, com exceções para alvos espaçados e links em linha de texto (W3C, 2023)
Conforto de norma44 por 44 pixels de CSSWCAG 2.2, critério 2.5.5, nível AAA (W3C, 2023)
Recomendação Android48 por 48 dpGoogle, documentação de acessibilidade do Android
Padrão Apple44 por 44 pontos, mínimo de 28 por 28Apple Human Interface Guidelines, tabela de tamanhos de controle do iOS
Barra inferior de aplicativoTrês a cinco destinos de igual importânciaMaterial Design 3 (Google); a Apple pede "o número apropriado", sem fixar quantidade
Folga entre alvosPelo menos 8 pixels entre vizinhosCurso Frontends com Vibecoding: três alvos de 24 colados passam no piso e continuam errados

Fontes verificadas nos textos normativos e nas documentações oficiais em 18/08/2026. A formulação "a Apple exige 44 como mínimo" caiu na verificação: 44 é o padrão recomendado dela, e o mínimo listado é 28.

Tamanhos mínimos de alvo de toque, em escala Quatro quadrados desenhados em proporção real comparam os tamanhos mínimos de alvo de toque: 24 px do WCAG 2.2 nível AA, 28 px do mínimo Apple, 44 px do WCAG nível AAA e do padrão Apple, e 48 dp do Google Android. Entre os dois primeiros quadrados, uma cota indica a folga de 8 px exigida entre alvos pequenos. Alvos de toque lado a lado, na mesma escala 24 px WCAG 2.2 AA folga de 8 px 28 px mínimo Apple 44 px WCAG AAA e padrão Apple 48 dp Google Android tracejado: piso legal, traço cheio: confortável
Em escala, o piso legal de 24 px do WCAG 2.2 AA é quase metade da área dos alvos confortáveis: 28 px no mínimo Apple, 44 px no WCAG AAA e padrão Apple, 48 dp no Google Android, com folga de 8 px entre alvos pequenos. Fonte: normas e documentações oficiais, verificadas em 18/08/2026.

Abas: visões paralelas, com o critério de decisão

Abas alternam visões paralelas do mesmo recurso e ficam fora da navegação de topo do site. O Nielsen Norman Group, em revisão de 2024 do artigo clássico sobre abas, dá o critério que decide: quando a pessoa precisa comparar informação entre painéis, a troca repetida de aba cobra memória de curto prazo e aumenta o custo de interação, e uma página única vence. Quanto menos abas, melhor; o conteúdo das abas não padrão é suplementar, nunca crítico; e quando o conteúdo não forma grupos nítidos, aba é o controle errado.

O teclado vem do guia de práticas do W3C: as setas circulam entre as abas, e a ativação automática ao focar só é recomendada quando o painel aparece sem latência perceptível, o que na prática exige conteúdo pré-carregado. Painel que carrega da rede pede ativação manual, com Enter ou Espaço. A aba selecionada se marca para o leitor de tela, com o indicador visual somando mais de um sinal além da cor. Dois usos dos estudos de caso do curso: na documentação da Stripe, as abas de linguagem do painel de código são um grupo de abas de verdade, com troca pelas setas; na Booking e na LATAM, a caixa de busca da home pede a intenção primeiro em abas de produto, e cada aba herda os dados de viagem já digitados.

Aba é estado, e o lugar dela é a URL. A documentação oficial do Next.js lista os três ganhos: o endereço fica favoritável e compartilhável, o servidor monta a página já no estado certo, e a analítica enxerga filtro e busca sem código extra no cliente. A ferramenta de referência em React é o nuqs, um useState que mora na query string, na versão 2.9.6 de 17/08/2026. Filtro em useState comum some no recarregamento, quebra o botão Voltar e faz o link chegar vazio na mão de quem o recebe.

Paginar, carregar mais ou rolagem infinita: a decisão com dono

Para lista de produtos, o teste de usabilidade do Baymard Institute concluiu que o botão de carregar mais, combinado com carregamento preguiçoso, é a implementação superior, e a atualização de pesquisa de 2024 do instituto, com mais de 5.550 horas de teste, manteve a preferência. As faixas de quantidade medidas em 2020: o desktop carrega de 100 a 150 itens para produto visual e de 50 a 100 para produto de especificação; o celular, de 15 a 30; e 52% dos sites erram essa quantidade.

O Nielsen Norman Group, em artigo de 2022, delimita o território da rolagem infinita: fluxo de itens homogêneos consumido sem tarefa específica, como um feed social. Fora desse território, a rolagem infinita clássica cobra três vezes: o rodapé fica inalcançável, o SEO sofre e a acessibilidade quebra.

Como paginar uma lista longa Fluxograma de decisão em três perguntas. Se a lista é um feed homogêneo, sem tarefa específica, a resposta é rolagem infinita com o Feed Pattern. Se não, e é uma lista de produtos, a resposta é o botão carregar mais com lazy-load, recomendação do Baymard. Se não, e é um grid de dados ou uma consulta com volta ao ponto, a resposta é paginação numerada. A lista longa decide o padrão de carregamento Feed homogêneo, sem tarefa específica? sim Rolagem infinita com Feed Pattern não Lista de produtos? sim Carregar mais + lazy-load recomendação do Baymard não Grid de dados ou consulta com volta ao ponto? sim Paginação numerada endereço estável, volta garantida
A natureza da lista decide o padrão: feed homogêneo pede rolagem infinita com Feed Pattern; lista de produtos pede carregar mais com lazy-load; grid de dados ou consulta com volta ao ponto pede paginação numerada. Fontes: Baymard 2016/2024 e Nielsen Norman Group 2022.
PadrãoOnde venceO preço, com a fonte
Paginação numeradaConsulta com destino, comparação e volta ao ponto; grids de dadosUm clique a mais por página; o AG Grid a recomenda como a melhor saída de acessibilidade para volume grande (documentação oficial)
Carregar mais + lazy-loadLista de produtos em e-commerceImplementação superior no teste do Baymard (2016, mantida na atualização de 2024); exige URLs paginadas por baixo para o Google
Rolagem infinitaFeed homogêneo sem tarefa específica (Nielsen Norman Group, 2022)Rodapé inalcançável, SEO e acessibilidade; em resultados de busca, o Baymard a desaconselha desde 2016

A falha que mais irrita tem número e mecanismo. Em 2020 o Baymard mediu que 13% dos grandes e-commerces devolvem o visitante ao topo da lista quando ele volta da página de produto, e o visitante desiste de refazer a rolagem. O controle disso é a History API do navegador, com scrollRestoration, e a condição real: em lista carregada dinamicamente, restaurar a posição só funciona se o aplicativo repovoar os itens antes de restaurar. Os prompts de lista longa no fim da página cobrem o caso.

Ilustração de uma esteira de cartões de produto que se estende em perspectiva até o horizonte, com um grande botão circular rosa de carregar mais no meio do caminho e marcos numerados de página ao longo das bordas.
A lista longa precisa de marcos: o botão de carregar mais na superfície e as páginas numeradas por baixo, para o visitante, o Google e o leitor de tela.

O que o Google exige por baixo

A documentação vigente do Google Search Central aposentou o rel=next/prev ("o Google não usa mais essas tags") e explica o risco da rolagem infinita para descoberta: os rastreadores do Google clicam botão nenhum e em geral disparam função nenhuma de JavaScript. De uma coleção indexável, ela pede três coisas:

A saída é manter URLs paginadas por baixo da experiência de rolagem. Em 2026 isso vale dobrado, porque agentes de IA também leem sites: a Cloudflare mediu em junho de 2025 a plataforma Claude fazendo cerca de 71.000 requisições de página para cada visita referida, e conteúdo que só existe atrás de um clique fica fora dessa leitura.

Acessibilidade e a régua legal

O padrão oficial do W3C para rolagem infinita acessível é o Feed Pattern do guia de práticas: Page Down e Page Up movem o foco entre os artigos, e Ctrl+End e Ctrl+Home saltam para depois e antes do feed, que é como o usuário de leitor de tela escapa da lista. Nada disso vem de graça: exige gestão de foco e atributos de posição.

Virtualização cobra em acessibilidade

A documentação do próprio AG Grid admite que as linhas saem de ordem no DOM para leitores de tela e recomenda paginação como a melhor saída em volume grande.

O custo de memória caiu

O TanStack Table v9, estável desde 4 de agosto de 2026, reduziu em até 86% o heap retido no cenário de um milhão de linhas, segundo o benchmark do fornecedor.

A alternativa nativa

content-visibility: auto pula a renderização mantendo o conteúdo no Ctrl+F e na ordem de tabulação, ao contrário da virtualização por JavaScript, que remove o nó (MDN).

A régua legal fecha a conta. O European Accessibility Act se aplica desde 28 de junho de 2025 e alcança nominalmente o comércio eletrônico; o artigo 63 da Lei 13.146/2015 obriga acessibilidade nos sites de empresas com sede ou representação no Brasil; e em julho de 2026 a Justiça Federal deu à União 180 dias para apresentar o plano de acessibilidade dos sites federais, sob multa diária de R$ 10 mil.

O que a plataforma web já entrega, com data

Recurso de navegação nativo se adota pelo status Baseline conferido no dia, com o estado final funcionando sem o recurso. O retrato de 18/08/2026, pelo webstatus.dev:

Linha do tempo dos recursos de navegação, 2024 a 2026 Linha do tempo de 2024 a 2026 com cinco marcos. Em 03/09/2024, details name chega ao Firefox 130 e entra no Baseline. Em 27/01/2025, popover chega ao Safari iOS 18.3 e entra no Baseline. Em 01/04/2025, o carrossel CSS chega só ao Chrome 135 e fica fora do Baseline. Em 14/10/2025, View Transitions de mesmo documento chega ao Firefox 144 e entra no Baseline. Em 13/01/2026, anchor positioning chega ao Firefox 147 e ainda está fora do Baseline. O que já é Baseline e o que ainda não é 2024 2025 2026 03/09/2024 details name (Firefox 130) Baseline 27/01/2025 popover (Safari iOS 18.3) Baseline 01/04/2025 carrossel CSS só no Chrome 135 fora do Baseline 14/10/2025 View Transitions mesmo documento (Firefox 144) Baseline 13/01/2026 anchor positioning (Firefox 147) fora do Baseline
Entre 2024 e 2026, details name (03/09/2024, Firefox 130), popover (27/01/2025, Safari iOS 18.3) e View Transitions de mesmo documento (14/10/2025, Firefox 144) entraram no Baseline; o carrossel CSS (01/04/2025, só no Chrome 135) e o anchor positioning (13/01/2026, Firefox 147) seguem fora. Fonte: webstatus.dev e release notes oficiais, retrato de 18/08/2026.
RecursoStatus em 18/08/2026O que muda no menu
Atributo popoverBaseline desde 27/01/2025, fechado pelo Safari do iOS 18.3Painel flutuante com abertura, fechamento, Esc e clique fora sem JavaScript
<details name> (acordeão exclusivo)Baseline desde 03/09/2024, fechado pelo Firefox 130Grupo de seções em que só uma fica aberta, sem script
View Transitions no mesmo documentoBaseline desde 14/10/2025, fechado pelo Firefox 144Transição de tela contínua em navegação de aplicação
View Transitions entre documentosFora do Baseline, sem FirefoxSó como melhoria progressiva
Posicionamento por âncora do CSSChegou ao Firefox 147 em 13/01/2026; o conjunto segue como limitado no webstatus.devPopover ancorado ao gatilho sem biblioteca, ainda atrás de verificação de suporte
Carrossel CSS (::scroll-button, ::scroll-marker)Só Chrome e Edge, desde a versão 135 de 01/04/2025Botões e marcadores nativos de carrossel; produção exige retaguarda

Status lidos na API oficial do webstatus.dev e nas release notes de Mozilla e Google em 18/08/2026. Baseline é retrato datado: confira no dia em que for escrever o código.

O resumo em uma peça

O infográfico condensa os números da aula para colar no mural do time ou mandar no grupo: o uso do menu visível contra o escondido, o atraso do mega menu, o papel certo de cada menu, os alvos de toque e a decisão de lista longa. Gerado no NotebookLM a partir do dossiê de pesquisa desta página.

Infográfico em português intitulado Precisão na navegação, UX baseada em dados: uso do menu visível em 48% contra 27% do escondido e tarefas 39% mais lentas (Nielsen Norman Group, 2016); atraso de 300 a 500 ms no mega menu (Baymard, 2023); role de menu exclusivo para ações, com nav e links para navegação (W3C); carregar mais com lazy loading superando paginação e rolagem infinita em e-commerce (Baymard, 2024); e o comparativo de alvos de toque de 24, 44 e 48.
O resumo da aula em uma peça, com cada número acompanhado da fonte. Baixe o arquivo em alta.

Prompts prontos

Menu suspenso operável por teclado (do curso)

Torne este menu suspenso totalmente operável por teclado:
- Enter/Espaço no gatilho abre; Esc fecha e devolve o foco ao botão gatilho.
- O botão expõe aria-expanded e aria-haspopup.
- A navegação primária do site usa <nav> e links, SEM role="menu";
  role="menu" só no menu de ações.
- Respeite prefers-reduced-motion na animação de abertura.
- Foco visível em todos os itens (:focus-visible, anel de 2px).
Mostre o TSX.

Gaveta que fecha no botão voltar do aparelho (do curso)

Implemente uma gaveta de filtros para celular com o botão voltar do
aparelho significando "fechar o painel", em três movimentos:
1. Ao abrir, registre uma parada no histórico
   (window.history.pushState({ gaveta: true }, "")).
2. Escute o evento popstate e use-o apenas para fechar a gaveta,
   nunca para navegar.
3. Se a gaveta fechar pelo X ou pelo Esc, desfaça a parada
   (window.history.back() se o estado atual for da gaveta);
   sem esta limpeza sobra um "voltar" morto no histórico.
Complete com: foco preso no painel, Esc fecha, clique fora fecha,
foco devolvido ao gatilho, e a lista interna com
overflow-y: auto e overscroll-behavior: contain.

Lista longa que o Google e o leitor de tela enxergam

Implemente a lista de itens com botão "Carregar mais" e lazy-load,
com estas garantias:
- URLs paginadas reais por baixo (History API): cada lote avança
  ?pagina=N, com link <a href> para a próxima página presente no HTML
  e canonical próprio por página (nunca tudo para a página 1).
- Ao voltar da página de detalhe, o visitante retorna à MESMA posição:
  repovoe os itens carregados antes de restaurar o scroll
  (history.scrollRestoration).
- Acessibilidade: siga o Feed Pattern do W3C APG (Page Down/Page Up
  entre itens; Ctrl+End/Ctrl+Home saltam o feed); o rodapé permanece
  alcançável; o foco nunca fica preso na lista.
- Estado de filtro e página na URL com nuqs, nunca em useState solto.
Critério de aceite: com JavaScript desligado, a página 2 existe e tem
conteúdo; com leitor de tela, dá para sair da lista.

Por onde começar

Assista à aula, abra a navegação da peça que o time mantém hoje e aplique três decisões nesta ordem: meça o atraso de hover do menu (a faixa do Baymard é 300 a 500 milissegundos); confira se a navegação primária usa <nav> com links e se o item ativo soma mais de um sinal além da cor; e navegue a lista mais longa do site até o rodapé só com o teclado. O que falhar vira o backlog da semana, com os prompts desta página. O menu Design continua no guia de ícones, ilustrações, animação e geração de imagens, e o restante do portal em landing e formulário e no glossário.