Novos componentes de Stories implementados — StoriesCircles, StoriesModal, StoriesOnlyButton e StoriesWithModal para exibição interativa de banners
Autoplay adicionado ao HomeBannerCarousel com remoção do skeleton loading
Controle de visibilidade por linha (visibility control) adicionado ao sistema de home rows com classes responsivas
Correções de estabilidade no StoriesModal: safeClose para fechamento seguro com overlay invisível, reset de progresso e timing corretos, ajuste de padding e role de acessibilidade
Widgets configuráveis: HomeBannerCarousel, TournamentsSection e demais widgets agora aceitam title, icon e i18nKey como props para maior flexibilidade
Criados HTMLs de fallback para terms (Termos e Condições), privacy (Política de Privacidade) e responsible-gaming (Jogo Responsável) — conteúdo baseado no legado Vue/Nuxt
Adicionados placeholders faltantes nos HTMLs de fallback: [CNPJ], [ENDERECO], [EMAIL_INFO], [EMAIL_DPO] além dos já existentes [EMPRESA], [SITE], [EMAIL_SUPORTE]
Criada função replaceLegalPlaceholders() em app/utils/legal.ts que substitui os placeholders pelos valores reais da brand antes de renderizar
Links do footer para páginas institucionais corrigidos — substituídos links hardcoded /page/ por routeHref dinâmico
Corrigida cor do texto nos campos de login com autofill — estilos webkit-autofill sobrescritos para preservar as cores do tema escuro
Espaçamento do modal de registro reduzido para telas pequenas (iPhone SE e similares) — padding, font-size e altura dos inputs adaptados com breakpoint sm:
Layout de banner nos modais de autenticação refatorado com novo componente AuthBannerLayout para maior consistência de código
Corrigidos erros de lint do Biome (role attributes) em Modal.tsx, DevApiExplorer.tsx e InstallAppFloatingWidget.tsx
Implementado controle de acesso para visitantes — quando publicTournaments: false ou publicMissions: false, botões da sidebar abrem modal de login e seções não aparecem na home para usuários deslogados
Rotas VIP protegidas (/vip/*) agora redirecionam para home quando o usuário não está autenticado — layout vip.tsx com guard de autenticação
Brand betpontobet: publicTournaments e publicMissions definidos como false
MissionsSection e TournamentsSection aprimorados com tratamento de estados de erro e conteúdo vazio