Novo widget sidebar-buttons substitui o VipHighlightButton hardcoded por um sistema config-driven com catálogo typed (closed enum) de 8 intents: casino, sports, tournaments, missions, referral, rewards, mini-games, promotions. Cada intent tem rota canônica + i18n key + ícone default (Lucide) em app/widgets/sidebar-buttons/intents.ts — brand customiza só o visual (label, icon, image, color, gradient, sublabel, badge), nunca a rota. Para CTAs one-off fora do catálogo, brand usa customItems (label + href diretos); para UI dedicada, há o special sponsor-cta.
3 variants visuais disponíveis: colored (pilha vertical full-width com gradient diagonal — mostra bônus dinâmico do referral), gradient (pills compactas com gradient horizontal accent → muted, single-line, look 7k legado) e grid (3-col tile grid com decoration watermark, look Vera). variant: null desliga o widget na brand.
Hierarquia de override de cor em 3 tiers: gradient: [from, to] (tupla, override completo) > color: "#hex" (só accent) > theme tokens brand-aware (bg-sidebar-button-bg). Sem override per-item, cada brand vê o widget pintado automaticamente nas suas próprias cores via tokens do tema.
Wiring no SidebarNarrow.tsx lê sidebarButtonsConfig e delega pro <SidebarButtons />. O VipHighlightButton foi removido — não há callers remanescentes.
Reorg do app/config/ em 14 subpastas semânticas (theme/, layout/, widgets/, sections/, catalog/, routes/, analytics/, features/, scripts/, legal/, seo/, payments/, gamification/, sports/). Imports passam a usar caminho completo sem o sufixo .config: ~/config/theme/colors, ~/config/layout/composition, ~/config/widgets/sidebar-buttons, ~/config/routes/paths. Mesmo reorg replicado nos 13 brand overrides — mantém o lookup do brandOverridesPlugin em sincronia file-replacement.
Brand resolver compartilhado (vite-plugins/brand-resolver.mjs) consolida três blocos existsSync(overrides/...) duplicados (Vite plugin, app/router/routes.ts em vite-node, tailwind.config.js em PostCSS) em uma única source of truth: toBrandOverrideKey, findBrandOverride, resolveBrandFile.
Asset dedup: fortune-fruits.mp4 e fortune-snake.mp4 movidos para public/assets/thumbs/ no base; cópias idênticas removidas de 6 brand overrides (validado por md5).
Bump @cactus-agents/i18n para 0.71.0 com as keys do namespace layout:sidebar-buttons.* nos 4 locales (pt-br, pt, es, en).
Redesign completo da TopbarNotification (PR #333): novo layout com botão de fechar (X) à esquerda, ícone em chip arredondado com tokens dedicados (topbar.icon-bg / topbar.icon-text), pilha de título + subtítulo no centro e CTA pill à direita, com altura de 72 px alinhada às barras modernas de instalação de app. Os ícones emoji foram substituídos por componentes do lucide-react (Smartphone, Bell, Gift, Send, Trophy, ShieldAlert) e o tipo TopbarDefinition.icon virou LucideIcon. Os modos default e restricted foram unificados num TopbarShell compartilhado, e a topbar deixou de ser sticky — agora rola junto com a página enquanto o header permanece fixo no topo do viewport. Tooltip de instalação iOS foi reancorado para o rodapé do viewport com safe-area-inset-bottom para que a seta inferior alinhe com a barra de endereços do Safari.
Centralização do conteúdo no desktop (PR #334): o TopbarNotification recebeu um container interno max-w-[460px] mx-auto envolvendo close/ícone/texto/CTA. O fundo continua preenchendo edge-to-edge, mas em viewports largos o X e o CTA não escorregam mais para os cantos deixando um espaço vazio gigante no meio. Em mobile (< 460px) o comportamento é idêntico ao anterior — o container preenche naturalmente toda a largura.
Refresh de tokens de tema da topbar em todos os overrides (PR #347): sincronizou o override 7k-bet-br (que estava sem icon-bg e icon-text), padronizou a paleta com fundo mais suave (lifted bg-primary), chip do ícone tingido com primary e CTA combinando com o botão primário da brand. Ajustes manuais aplicados nas variantes 7k, state77, vera-bet-br, betpontobet-bet-br e cassino-bet-br. Altura interna da linha do TopbarNotification reduzida de 68 px para 62 px para compactar o footprint vertical.