From 1a1af9c8aaf852f4dc723cafbdf7b9c094f9194b Mon Sep 17 00:00:00 2001
From: Francisco Solla
Date: Mon, 28 Sep 2026 02:32:55 -0300
Subject: [PATCH 1/7] docs(S1): auditoria, matriz de cobertura e artefato hi-fi
da home de campanha
---
.gitignore | 3 +
DESIGN.md | 2 +
docs/campanha/redesign-site-publico.md | 134 +
.../2026-09-28-redesign-site-publico-s1.md | 1 +
.../site-publico-campanha-home-ui-design.html | 2440 +++++++++++++++++
5 files changed, 2580 insertions(+)
create mode 100644 docs/campanha/redesign-site-publico.md
create mode 100644 docs/changelog/2026-09-28-redesign-site-publico-s1.md
create mode 100644 docs/plans/site-publico-campanha-home-ui-design.html
diff --git a/.gitignore b/.gitignore
index 47e19ca6..932b7e05 100644
--- a/.gitignore
+++ b/.gitignore
@@ -167,5 +167,8 @@ next-env.d.ts
# Briefing Geral de Militância (interno; repo público).
/data/briefing-geral-militancia/
/docs/research/briefing-geral-militancia/
+# Redesign do site público — notas internas de programa (repo público).
+/data/site-redesign/
+
# Playwright CLI output (may contain credentials)
.playwright-cli/
diff --git a/DESIGN.md b/DESIGN.md
index 63ad590d..a1d827fb 100644
--- a/DESIGN.md
+++ b/DESIGN.md
@@ -292,6 +292,8 @@ This file is the living owner of Teqo's visual decisions — a working document,
**Public campaign archive actions (C233, 2026-09-26).** On campaign-branded public archive/read surfaces, the primary action is campaign red with white text. Kit yellow is an orientation and keyboard-focus signal — hero edge, restrained eyebrow, current-location underline, and high-contrast focus outline — never the competing CTA fill. This keeps one action dominant, separates public campaign expression from Petition Gold, and makes keyboard location unmistakable over both light and dark media surfaces.
+**Public campaign home as editorial evidence (S1, 2026-09-28).** The campaign home uses a mobilization→evidence rhythm: brand-red opening and final participation frame the page; cream/white reading chapters carry principles, dated work and trajectory. Principles are long-form chapters paired with documentary photography (sticky on desktop, inline on mobile/reduced motion), never an equal-card grid. Developed public-work cases use a source-visible two-era record that separates institutional sphere, date and delivery phase. Yellow remains an orientation/focus/source signal, not a competing CTA; on a red field the primary CTA may be white with dark-red ink, while light fields use the canonical red/white action. This pattern replaces the old repeated-card campaign page because it gives authentic photography room, makes attribution auditable and preserves one dominant action in every color context.
+
How rules change:
- **Decide, then update the owner.** When a better pattern wins — anti-slop review (`design-taste-frontend` / `gpt-taste`), a reference study (`awesome-design-md`), a redesign pass (`redesign-existing-projects`), or implementation judgment — update this file in the **same change** and say why. A pattern that only lives in code or in an agent's head is drift, not design.
diff --git a/docs/campanha/redesign-site-publico.md b/docs/campanha/redesign-site-publico.md
new file mode 100644
index 00000000..2283aef3
--- /dev/null
+++ b/docs/campanha/redesign-site-publico.md
@@ -0,0 +1,134 @@
+# Programa — Redesign das superfícies públicas (2026-09-28)
+
+> **Natureza deste documento:** plano **de programa** (não é plano de issue).
+> Registra o diagnóstico, a matriz de cobertura de rotas, as fatias de entrega,
+> a reconciliação factual e os riscos. **A partir dele** cada fatia gera seu
+> `docs/plans/.md` + Issue quando o design da fatia estiver aprovado.
+>
+> **Status:** auditoria concluída (2026-09-28); design da fatia 1 em aprovação
+> (`docs/plans/site-publico-campanha-home-ui-design.html`).
+> **Vertentes:** campanha (`campaign-site`) e editorial (`editorial`), com a
+> separação obrigatória entre mandato e campanha.
+
+## 1. Objetivo
+
+Reconstruir a experiência pública de `jorgesolla1313.com.br` como uma
+experiência **editorial/documental moderna**: tipografia forte, fotografia
+autêntica, composição variada (nunca grade repetitiva de cards), ritmo de
+leitura e uma interação-assinatura (capítulos de texto com fotos que mudam,
+sticky no desktop e inline no mobile). Preservar a identidade de campanha
+(lockup, vermelho, amarelo como sinal) e os contratos públicos existentes.
+
+Regras estruturantes: PT-BR em todo conteúdo visível; um CTA primário por
+página; conversão por WhatsApp; doação **só** link para `apoiar.me/jorgesolla`;
+sem fonte, não publica; consentimento fail-closed; `hidden`/`isPostVisible`
+intocados; nada de superfície pública nova que viole o período eleitoral.
+
+## 2. Matriz de cobertura
+
+Legenda de ação: **R** = redesenhar; **P** = preservar (só contrato/estilo
+mínimo); **E** = endpoint não visual (preserve-only); **G** = adição gateada.
+
+| # | Rota / feature | Dono atual (código) | Fatia | Ação | Critério de aceite |
+| - | -------------- | ------------------- | ----- | ---- | ------------------ |
+| 1 | `/` | `(frontend)/(home)/page.tsx` + `layout.tsx` | S1 | R | Composição completa aprovada no artefato; seções identidade→princípios→trabalho→trajetória→conteúdo→participação; CTA primário único; vazio/erro/recusa desenhados; assinatura com reduced-motion |
+| 2 | Shell de campanha (header/footer/nav) | `CampaignPageHeader`, `CampaignLogoLink`, `CampaignFooter` | S1 | R | Um só shell para home/conteúdos/jingles/fotos; alvos ≥44px; identificação eleitoral intacta; "Fotos" condicional preservada |
+| 3 | `/conteudos` | `conteudos/(catalog)/page.tsx` | S2 | R | Lista/filtros/estados redesenhados; canonical `/conteudos`; `noindex` com 0 peças; skeletons preservados |
+| 4 | `/conteudos/[slug]` | `conteudos/[slug]/page.tsx` | S2 | R | Detalhe + player + share redesenhados; 404 uniforme; OG `video.other`/`article` |
+| 5 | `/conteudos/[slug]/midia` | `conteudos/[slug]/midia/route.ts` | S2 | E | Range/streaming, `?download=1` `jorge-solla-1313-.`, evento anônimo — intocados |
+| 6 | `/conteudos/[slug]/frame` | `conteudos/[slug]/frame/route.ts` | S2 | E | Geração/espera do still dentro do orçamento — intocada |
+| 7 | `/corte/[id]` | `corte/[id]/page.tsx` + `corte/layout.tsx` | S2 | R | `noindex` sempre; crédito de origem; 404 uniforme; share kit preservado |
+| 8 | `/jingles` | `jingles/page.tsx` | S2 | R | Player/reprodução/download `jorge-solla-1313-.mp3`; vazio honesto; áudio nunca autoplay |
+| 9 | `/midia` (referida no brief) | = itens 5/6 (endpoints de mídia) | S2 | E | Registrada como endpoint; não há página `/midia` no app |
+| 10 | `/artigos` | `artigos/page.tsx` | S3 | R | Landing editorial restilizada; imagem do destaque corrigida; sem chrome de campanha |
+| 11 | `/[type]` | `[type]/page.tsx` (`[type]/layout.tsx`) | S3 | R | Listagem por tipo restilizada; canonical; `generateStaticParams`/`dynamicParams` preservados |
+| 12 | `/[type]/[category]` | `[type]/[category]/page.tsx` | S3 | R | Listagem de categoria restilizada; separação editorial mantida |
+| 13 | `/[type]/[category]/[slug]` | `[type]/[category]/[slug]/page.tsx` | S3 | R | Artigo: JSON-LD `Article`, OG, redirect canônico, ISR `posts` — preservados |
+| 14 | ShareLink `/[type]` (direct/announcement) | `[type]/page.tsx` branch + `components/shareLink/*` | S3 | R | Redirecionamento instantâneo e página de anúncio restilizadas; poll 30s e OG preservados |
+| 15 | `/api/share-link/[slug]/live` | `api/share-link/[slug]/live/route.ts` | S3 | E | `{target}` nunca 5xx, `no-store` — intocado |
+| 16 | `/[type]/evento.ics` | `[type]/evento.ics/route.ts` | S3 | P | Saída `.ics`, nome do arquivo e `Cache-Control` intocados |
+| 17 | `/privacidade` | `privacidade/page.tsx` | S4 | R | Texto legal intacto; restilo editorial; 404 se `!published` |
+| 18 | `/mandato-no-whatsapp` | `mandato-no-whatsapp/page.tsx` | S4 | R | Fluxo/form preservados; Consent `whatsapp-inscricao` fail-closed; ≥16px inputs |
+| 19 | `/abaixo-assinado/[id]` | `abaixo-assinado/[id]/page.tsx` | S4 | R | Assinatura transacional/consent intactos; **bug 500 em id inexistente corrigido (404)**; JSON-LD/pixel preservados |
+| 20 | Newsletter da home | `CampaignNewsletterSection` + `submitCampaignNewsletter` | S1/S4 | R | Consent `campanha-novidades` fail-closed; pixel Lead preservado; estado de recusa desenhado |
+| 21 | `/cards` (estúdio) | `(home)/cards/page.tsx` + `components/cards/*` | S5 | R | 6 modelos reais; `?model=` válido; `#cards` da home; nomes de arquivo e telemetria anônima preservados |
+| 22 | Wizard kit completo (extensão) | `CardsStudio`/`CardComposer` (dono) | S5 | R | Passos nome→foto→dobradinha→kit; nunca gera arte incompleta; foto nunca sai do browser; back/forward na sessão; sem persistência silenciosa |
+| 23 | `/fotos` (C233) | `fotos/page.tsx` + `components/fotos/*` | S6 | G | Só `approved`; kill switch `photoAlbum.published`; canal de remoção; vazio honesto; **abertura exige decisão registrada** |
+| 24 | `/fotos/encontre` (C234) | `fotos/encontre/page.tsx` + `api/fotos/selfie` | S7 | G | `selfieSearchEnabled` fail-closed; Consent por chave; sem score/nome; on-device; **dark até decisão** |
+| 25 | `/api/revalidate` | `api/revalidate/route.ts` | — | P | Allowlist de tags intocada |
+| 26 | `/api/content-events` | `api/content-events/route.ts` | S2 | P | Beacon anônimo: schema, rate-limit, catálogos — intocados |
+| 27 | `/api/social-feed/sync` | `api/social-feed/sync/route.ts` | — | P | Auth admin + same-origin — intocado |
+| 28 | Metadados raiz/robots/OG | `(frontend)/layout.tsx`, `robots.ts`, `lib/seo` | S1 | P | Fallbacks e noindex de staging preservados |
+| 29 | `hidden`/`isPostVisible` | `src/utilities/posts.ts` | S3 | P | Falha fechada; remoção sem deploy — intocados |
+
+Nenhuma rota da lista do programa fica sem dono. `/midia` e `/frame` são
+endpoints de mídia da Central (itens 5/6), não páginas.
+
+## 3. Fatias
+
+| Fatia | Escopo | Depende | Appetite | Design |
+| ----- | ------ | ------- | -------- | ------ |
+| **S0** | Auditoria, matriz, plano, 1º pacote de design | — | — | campanha home+shell |
+| **S1** | Shell de campanha + home (itens 1–2, 20) | S0 | M | `site-publico-campanha-home-ui-design.html` |
+| **S2** | Central de Conteúdos, cortes, mídia embutida, jingles (3–9, 26) | S1 (shell) | M | artefato próprio por superfície |
+| **S3** | Editorial: artigos, listas, artigo, share-links, `.ics` (10–16, 29) | S0 | M | artefato próprio |
+| **S4** | Participação: WhatsApp, abaixo-assinado, privacidade, polish de forms (17–20) | S1 | S/M | artefato próprio |
+| **S5** | Wizard do kit de apoio (21–22) | S1 | M | artefato próprio (estende `/cards`) |
+| **S6** | Álbum público C233 (23) — gateado | S3 (editorial) + decisão | S | artefato C233 aprovado + relatório |
+| **S7** | Selfie C234 (24) — gateado | S6 + C231/C232 + Consent + DPIA | — | artefato C234 aprovado |
+
+O núcleo (S1–S5) não depende de S6/S7; bloqueio de uma adição gateada não para
+o resto. Cada fatia exige: reconciliação factual dos claims que publica,
+seleção de mídia com status de publicação, estados críticos, testes afetados,
+changelog e evidência no PR.
+
+## 4. Reconciliação factual (holds)
+
+Corpus de referência: `docs/research/briefing-geral-militancia/` (legível) e
+`data/briefing-geral-militancia/` (ledgers, untracked). Regra: sem fonte
+(ledger + `sourceUrl` + `sourceDate`), não publica.
+
+| Claim atual na home | Evidência no corpus | Decisão |
+| ------------------- | ------------------- | ------- |
+| "Criou o SAMU 192" | Resgate Médico em Vitória da Conquista é **apontado como origem da ideia**; em 2003, como secretário de Atenção à Saúde, **participou da criação e implantação** | **HOLD** — publicar "participou da criação do SAMU 192" (ou formulação equivalente aprovada pela voz) |
+| "Criou o Brasil Sorridente" | "Assinou as diretrizes da Política Nacional de Saúde Bucal, o Brasil Sorridente" (2003–2005) | **HOLD** — trocar por "assinou as diretrizes do Brasil Sorridente" / "participou do lançamento" |
+| "Mais votado do PT-BA em 2022" | Ledger: em 2022 foi **14º mais votado do estado** (128.968 votos; 78,9% do interior); em 2018, **5º** | **HOLD** — substituir por fato lastreado (ex.: votação de 2022 por território) |
+| "DIAP entre os 40 melhores da Câmara" | Não consta no corpus | **HOLD** — só publicar com fonte verificada |
+| "3.333 proposições" / "1.031 discursos" | Fonte do plano: API Dados Abertos/SitaqWeb (13/08/2026), fora do corpus | **Re-verificar** na data de publicação ou substituir por números do corpus (SESAB, SAMU, enfermagem, Mais Médicos) |
+| "4 de outubro", "1313", identificação eleitoral | Plano + kit | Manter; reconferir na publicação |
+
+A redação final da fatia passa por `solla-comunicacao` antes de entrar no
+artefato; a atribuição exata do corpus é preservada (autoria ≠ coautoria ≠
+relatoria ≠ voto ≠ articulação ≠ gestão).
+
+## 5. Riscos e bloqueios registrados
+
+1. **Timing eleitoral (04/10/2026).** Hoje 28/09/2026. C233/C234 permanecem
+ fechadas por padrão; abrir qualquer superfície pública nova exige decisão
+ registrada (humano + coordenação). O deploy de produção é aprovação humana.
+2. **`/abaixo-assinado/1` responde 500 em produção** (id inexistente deveria
+ 404). Bug público aberto; entra na S4 com teste de regressão (ou hotfix antes).
+3. **`/artigos` com imagem de destaque quebrada** em produção (ícone de erro).
+4. **Home atual:** grade de 6 cards idênticos ("Nossa caminhada") e fotos de
+ cidade genérica no card de Mataripe — alvos do redesign e da curadoria.
+5. **Corpus de fotos públicas:** `public/*.avif` (hero/colagem) e
+ `public/campaign-kit/` são os ativos publicados; `archivePhoto` não tem foto
+ aprovada em produção (álbum vazio). Fotos de terceiros (Agência Brasil,
+ Bnews, A TARDE) seguem exigindo autorização — não publicar sem ela.
+
+## 6. Contratos públicos preservados (qualquer fatia)
+
+URLs/deep links, proxy de mídia same-origin e nomes de download, tag de cache
+`posts`/`archivePhotos`/etc. e allowlist do revalidate, chaves de consent,
+`robots`/noindex, JSON-LD, `.ics` e nome de arquivo, comportamento de formulário,
+telemetria anônima de download, `hidden`/`isPostVisible`, separação
+mandato/editorial/campanha. Mudança nesses contratos só na fatia que
+explicitamente a possui e com aprovação registrada.
+
+## 7. Publicação
+
+Commits podem conter: copy pública aprovada, proveniência mínima (fonte pública
++ data), planos/decisões de design, mídia aprovada para publicação. Fora do
+repo (untracked): ledgers, dumps de pesquisa, Q&A interno, inventários de
+ativos privados, PII e segredos. O design aprovado viaja com o plano; o
+artefato é a fonte de verdade do port.
diff --git a/docs/changelog/2026-09-28-redesign-site-publico-s1.md b/docs/changelog/2026-09-28-redesign-site-publico-s1.md
new file mode 100644
index 00000000..20745900
--- /dev/null
+++ b/docs/changelog/2026-09-28-redesign-site-publico-s1.md
@@ -0,0 +1 @@
+**S1 — Redesign das superfícies públicas: auditoria, matriz de cobertura e artefato hi-fi da home de campanha (2026-09-28):** primeira entrega do programa de redesign do site público (`docs/campanha/redesign-site-publico.md`), **docs-only e sem implementação** — ela abre o gate visual. O plano de programa registra o diagnóstico da auditoria live (1280/390), a **matriz de cobertura** de todas as rotas públicas das duas vertentes (campanha: `/`, shell, `/conteudos`, `/[slug]`, mídia/frame, `/corte/[id]`, `/jingles`; editorial: `/artigos`, `/[type]`, `/[type]/[category]`, `/[type]/[category]/[slug]`, share-links, `.ics`; participação: `/mandato-no-whatsapp`, `/abaixo-assinado/[id]`, `/privacidade`; extensões gateadas C233/C234), as 8 fatias com dependências e aceite, os contratos públicos preservados e os **holds factuais**: "Criou o SAMU 192", "Criou o Brasil Sorridente", "DIAP entre os 40 melhores" e "Mais votado do PT-BA em 2022" conflitam com o briefing (SAMU = participou da criação; Sorridente = assinou as diretrizes; 2022 = 14º do estado, 5º em 2018), e os números 3.333/1.031 exigem rechecagem na publicação — sem fonte, não publica. O artefato hi-fi `docs/plans/site-publico-campanha-home-ui-design.html` (designer `openai/gpt-5.6-sol`) apresenta a home completa em 1280/390 com a direção "vermelho abre, papel explica": hero de mobilização, princípios como capítulos com fotografia sticky (inline no mobile/reduced-motion), o caso **SAMU na Bahia** como ficha de evidência em duas eras (gestão estadual 2007–2010 · entregue; governo federal 2025 · autorizado, com fonte), trajetória datada por esfera, zona de mídia com lazy/posse do usuário e estado fail-closed, participação com um CTA primário e formulário de 3 campos, e os quatro estados críticos (board vazio, descoberta fail-closed, consentimento recusado, fallback de mídia); **três decisões visuais** documentadas no artefato e o porquê registrado em `DESIGN.md` §7. Riscos públicos abertos no plano: `/abaixo-assinado/` responde 500 em produção (deveria 404), imagem de destaque quebrada em `/artigos`, álbum `/fotos` vazio (honesto) e C233/C234 fechadas por padrão no período eleitoral. Copy da home reconciliado em deck de voz (`solla-comunicacao`, untracked) com holds explícitos. PR em rascunho: aguarda aprovação humana do artefato antes de qualquer implementação.
diff --git a/docs/plans/site-publico-campanha-home-ui-design.html b/docs/plans/site-publico-campanha-home-ui-design.html
new file mode 100644
index 00000000..4808384c
--- /dev/null
+++ b/docs/plans/site-publico-campanha-home-ui-design.html
@@ -0,0 +1,2440 @@
+
+
+
+
+
+
+ Design S1 — shell de campanha + home pública
+
+
+
+
+
+
+
+ Pular para o conteúdo
+
+
+
Gate visual · S1 · 28/09/2026
+
Campanha com pulso. Trabalho com registro.
+
+ Shell de campanha e home pública em linguagem editorial/documental. O vermelho mobiliza; o
+ creme dá espaço para ler; fotografia e fonte datada sustentam cada capítulo. As cenas abaixo
+ são o alvo visual do port, não implementação.
+
+
+
+ 01
+
Vermelho abre. Papel explica.
+
+ Hero e chamada final ganham energia de campanha; o miolo em creme e branco muda o
+ registro para documento público. O amarelo orienta foco e fonte, sem virar um segundo
+ CTA.
+
+
+
+ 02
+
Princípios viram capítulos, não cards.
+
+ Texto avança ao lado de uma fotografia sticky no desktop e entra em fluxo no celular.
+ Substitui a grade repetitiva atual por ritmo editorial e mantém tudo legível sem
+ movimento.
+
+
+
+ 03
+
Resultado público vira ficha de evidência.
+
+ O caso SAMU separa 2007–2010 de 2025 em duas lâminas, com papel, fase e fonte. Corrige a
+ mistura de autoria e esfera presente no estado atual.
+
+
+
+
+ Pendências de publicação: o número de WhatsApp exibido nos links é o
+ placeholder do deck e precisa ser substituído pelo número oficial; o CNPJ preserva o valor
+ já publicado, ainda sujeito à conferência do advogado eleitoral; as duas fotografias do caso
+ SAMU estão marcadas como NEEDS ASSET.
+
+
+
+
+
+
Cena 01 · Home completa · 1280 px
+
Shell, narrativa inteira, interação-assinatura, caso SAMU, mídia e participação.
+ Médico sanitarista. Participou da criação e da implantação do SAMU 192 e assinou as
+ diretrizes do Brasil Sorridente. Leva o mandato aos 417 municípios, da saúde à
+ educação.
+
+ SAMU na Bahiade 14 municípios, em 2007, para 233, em 2010
+
+
128.968 votosem 2022; 78,9% no interior
+
+
+
+
+ 1313
+
+
+
+
+
Princípios para o próximo mandato
+
+ O que orienta cada voto, cada recurso e cada disputa.
+
+
+ Seis compromissos lidos como capítulos de uma mesma história. A imagem acompanha o
+ assunto; a prova datada aparece quando existe.
+
+
+
+
+
+
+ Saúde pública
+
Fotografia publicada da agenda de defesa do SUS.
+
+
+
+
+
+ Trabalho digno
+
Jornada justa também é uma pauta de saúde.
+
+
+
+
+
+ Bahia e democracia
+
Território, participação e soberania no mesmo projeto.
+
+
+
+
+
+ 01 / 06
+
Saúde é direito, não mercadoria
+
+ O SUS precisa de financiamento estável, atenção primária forte e remédio
+ produzido no Brasil. Defender a saúde pública é defender a vida.
+
+
+ Na Bahia, como secretário de Saúde, aplicou mais de 14% do orçamento estadual na
+ saúde em 2010, acima do mínimo legal de 12%. Em 2026, o mandato destinou R$ 10
+ milhões autorizados e R$ 9,5 milhões já pagos à atenção primária.
+
+
+
+
+
+
+ 02 / 06
+
Valorizar quem cuida do SUS
+
+ Piso digno, carreira, concurso público e aposentadoria especial para quem segura
+ o sistema todos os dias.
+
+
+ Titular da comissão especial da PEC 11/2022; a Lei 14.434/2022 fixou o piso da
+ enfermagem. Coautor da PEC 14/2021, aprovada pelo Senado em 14/07/2026, por 73
+ votos a 1; falta a promulgação.
+
+
+
+ 03 / 06
+
Descanso não é privilégio. É saúde pública
+
+ Pelo fim da escala 6×1 e pela jornada de até 40 horas semanais, sem redução de
+ salário. Jornada longa adoece quem trabalha e a conta chega ao SUS.
+
+
+
+
+
+
+ 04 / 06
+
O interior não pode ficar para trás
+
+ Universidade pública, instituto federal e escola de qualidade também longe da
+ capital. O lugar onde você nasce não pode decidir até onde você pode estudar.
+
+
+ Em setembro de 2023, realizou audiências públicas em Jacobina e Jequié sobre a
+ implantação de campus da UFBA no interior e levou ao Ministério da Educação a
+ proposta de uma universidade federal na Chapada Diamantina.
+
+
+
+ 05 / 06
+
A Bahia no controle do que é da Bahia
+
+ Recomprar a Refinaria de Mataripe é defender a Bahia e a soberania do Brasil.
+ Preço justo de combustível é política de saúde e de renda.
+
+
+ Em março de 2022, protocolou com a Federação Única dos Petroleiros a PEC que
+ restabelece o monopólio público do refino, da exploração, da distribuição, dos
+ gasodutos e da importação de derivados.
+
+
+
+
+
+
+ 06 / 06
+
Democracia sem meias-palavras
+
+ Instituições fortes, participação popular e combate à desinformação. Eleger o
+ parlamento é coisa séria.
+
+
+ Em 8 de janeiro de 2025, afirmou que o 8 de Janeiro não foi um ato isolado, e
+ sim o ápice de uma escalada autoritária, e que não haverá anistia para
+ golpistas.
+
+
+
+
+
+
+
+
+
Trabalho público · caso documentado
+
+ SAMU na Bahia: de 14 a 233 municípios e a cobertura de 100%
+
+
+
+ Papel. Secretário de Atenção à Saúde do Ministério da Saúde
+ (2003–2005), quando o SAMU 192 foi criado; secretário de Saúde da Bahia (2007 a
+ janeiro de 2014), quando o serviço foi regionalizado. Antes, em Vitória da
+ Conquista (1999–2002), acompanhou o Resgate Médico, apontado como origem da ideia
+ do SAMU.
+
+
+ Fonte. Jornal Grande Bahia, 03/01/2011 A TARDE,
+ 14/03/2025 Briefing Geral de Militância, seção Saúde
+
+
+
+
+ Gestão estadual · entregue
+
+
Regionalização do serviço na Bahia
+
+ Em 2007, o SAMU chegava a 14 municípios baianos. Em 2010, eram 233, cobrindo 74%
+ da população.
+
+ NEEDS ASSET · foto de arquivo do SAMU/SESAB
+
+
+ Governo federal · autorizado
+
+
Cobertura chega a 100% com o novo PAC
+
+ R$ 243,5 milhões autorizados e 789 ambulâncias para 559 cidades do país, sendo
+ 12 destinadas a nove municípios da Bahia. O mandato acompanhou as entregas.
+
+ NEEDS ASSET · ambulâncias entregues na Bahia
+
+
+
+
+
+
+
Trajetória
+
+ Da formação no SUS ao mandato na Câmara.
+
+
+
+
+
+
+
Nasce em Salvador, em 11 de abril.
+ Origem
+
+
+
+
+ Inicia a militância no Congresso de Reconstrução da UNE; preside o Diretório
+ Acadêmico de Medicina e é diretor do DCE da UFBA.
+
+ Militância
+
+
+
+
Forma-se em Medicina pela UFBA e participa da fundação do PT na Bahia.
+ Formação
+
+
+
+
Residência em Medicina Social pela UFBA/Inamps.
+ Formação
+
+
+
+
Torna-se médico do quadro da UFBA e conclui o mestrado em Saúde Coletiva.
+ Formação
+
+
+
+
+ Secretário Municipal de Saúde de Vitória da Conquista; o Resgate Médico é
+ apontado como origem da ideia do SAMU 192.
+
+ Município
+
+
+
+
+ Secretário de Atenção à Saúde: participa da criação e da implantação do SAMU 192
+ e assina as diretrizes do Brasil Sorridente.
+
+ União
+
+
+
+
+ Secretário de Saúde da Bahia nos dois mandatos de Jaques Wagner; conclui o
+ doutorado em Clínica Médica em 2009.
+
+ Estado
+
+
+
+
+ Toma posse como deputado federal pela Bahia; foi eleito em 2014 com 125.159
+ votos.
+
+ Câmara
+
+
+
+
+ Reeleito em 2018 e em 2022; desde março de 2023 é titular da Comissão de Saúde e
+ vice-líder da Federação Brasil da Esperança.
+
+ Câmara
+
+
+
+
+
+
+
Conteúdo da campanha
+
+ Voz, imagem e material para levar a campanha adiante.
+
+
+ Mídia só começa quando a pessoa pede. Coleções vazias não viram links quebrados nem
+ vitrines de mentira.
+
+
+
+
+
+
+
Conheça a trajetória de Jorge Solla
+
Da gestão no SUS ao mandato na Câmara. O vídeo só carrega depois do toque.
+
+
+
+
+
A campanha no ar
+
Rádio Jorge Solla 1313
+
+ A campanha no ar, a qualquer hora. Ouça no caminho, no trabalho, onde estiver.
+
+ Médico sanitarista. Participou da criação e da implantação do SAMU 192 e assinou as
+ diretrizes do Brasil Sorridente. Leva o mandato aos 417 municípios, da saúde à
+ educação.
+
+ SAMU na Bahia14 municípios em 2007; 233 em 2010
+
+
128.968 votos78,9% no interior em 2022
+
+
+
+
+ 1313
+
+
+
+
+
Princípios para o próximo mandato
+
+ O que orienta cada voto, cada recurso e cada disputa.
+
+
+ No celular, a fotografia entra depois do capítulo relacionado. Não há conteúdo preso a
+ gesto ou animação.
+
+
+
+
+ 01 / 06
+
Saúde é direito, não mercadoria
+
+ O SUS precisa de financiamento estável, atenção primária forte e remédio
+ produzido no Brasil. Defender a saúde pública é defender a vida.
+
+
+ Na Bahia, como secretário de Saúde, aplicou mais de 14% do orçamento estadual na
+ saúde em 2010. Em 2026, o mandato destinou R$ 10 milhões autorizados e R$ 9,5
+ milhões já pagos à atenção primária.
+
+
+
+
+
+
+ 02 / 06
+
Valorizar quem cuida do SUS
+
+ Piso digno, carreira, concurso público e aposentadoria especial para quem segura
+ o sistema todos os dias.
+
+
+ Titular da comissão especial da PEC 11/2022; coautor da PEC 14/2021, aprovada
+ pelo Senado em 14/07/2026, por 73 votos a 1; falta a promulgação.
+
+
+
+ 03 / 06
+
Descanso não é privilégio. É saúde pública
+
+ Pelo fim da escala 6×1 e pela jornada de até 40 horas semanais, sem redução de
+ salário. Jornada longa adoece quem trabalha e a conta chega ao SUS.
+
+
+
+
+
+
+ 04 / 06
+
O interior não pode ficar para trás
+
+ Universidade pública, instituto federal e escola de qualidade também longe da
+ capital. O lugar onde você nasce não pode decidir até onde você pode estudar.
+
+
+
+ 05 / 06
+
A Bahia no controle do que é da Bahia
+
+ Recomprar a Refinaria de Mataripe é defender a Bahia e a soberania do Brasil.
+ Preço justo de combustível é política de saúde e de renda.
+
+
+
+
+
+
+ 06 / 06
+
Democracia sem meias-palavras
+
+ Instituições fortes, participação popular e combate à desinformação. Eleger o
+ parlamento é coisa séria.
+
+
+ Em 8 de janeiro de 2025, afirmou que o 8 de Janeiro não foi um ato isolado, e
+ sim o ápice de uma escalada autoritária.
+
+
+
+
+
+
+
+
+
Trabalho público · caso documentado
+
+ SAMU na Bahia: de 14 a 233 municípios e a cobertura de 100%
+
+
+
+ Papel. Participou da criação e implantação no Ministério da
+ Saúde; regionalizou o serviço como secretário de Saúde da Bahia.
+
+
+ Fonte. JGB, 03/01/2011 · A TARDE, 14/03/2025
+
+
+
+
+ Gestão estadual · entregue
+
De 14 a 233 municípios
+
Em 2010, o serviço cobria 74% da população baiana.
+ NEEDS ASSET · arquivo SAMU
+
+
+ Governo federal · autorizado
+
Cobertura chega a 100%
+
+ 12 ambulâncias do novo PAC foram destinadas a nove municípios da Bahia. O
+ mandato acompanhou as entregas.
+
+ NEEDS ASSET · entrega 2025
+
+
+
+
+
+
+
Trajetória
+
+ Da formação no SUS ao mandato.
+
+
+
+
+
+
+
Nasce em Salvador.
+ Origem
+
+
+
+
Forma-se em Medicina pela UFBA e participa da fundação do PT na Bahia.
+ Formação
+
+
+
+
Secretário de Saúde de Vitória da Conquista.
+ Município
+
+
+
+
+ Participa da criação e implantação do SAMU e assina as diretrizes do Brasil
+ Sorridente.
+
+ União
+
+
+
+
Secretário de Saúde da Bahia.
+ Estado
+
+
+
+
+ Deputado federal pela Bahia; titular da Comissão de Saúde desde março de 2023.
+
+ Câmara
+
+
+
+
+
+
+
Conteúdo da campanha
+
+ Voz e material para compartilhar.
+
+
Mídia começa com toque. Coleções vazias desaparecem.
+
+
+
+
+
+
Conheça a trajetória de Jorge Solla
+
Da gestão no SUS ao mandato na Câmara.
+
+
+
+
+
A campanha no ar
+
Rádio Jorge Solla 1313
+
+ A campanha no ar, a qualquer hora. Ouça no caminho, no trabalho, onde estiver.
+
Cena 03 · Interação-assinatura e movimento reduzido
+
O conteúdo não depende de animação; a diferença é só de encenação.
+
+
+
Contrato de movimento
+
Capítulos que avançam. Evidência que permanece.
+
+
+
Movimento completo
+
+ Desktop: a fotografia fica sticky enquanto os seis capítulos passam. A imagem
+ correspondente dissolve e escala de 97% para 100% em 560–620 ms. Revelações de seção
+ usam apenas opacidade e transformação.
+
+
+
Sem scroll hijacking ou parallax.
+
Controles respondem em 180 ms.
+
Qualquer interrupção deixa texto e foto visíveis.
+
+
+
+
prefers-reduced-motion: reduce
+
+ Sticky e dissoluções saem. A fotografia entra no fluxo logo após o capítulo
+ relacionado, como na cena móvel. O scroll volta a ser instantâneo e todos os elementos
+ nascem visíveis.
+
+
+
Mesma ordem e mesma copy.
+
Nenhuma informação apenas no hover.
+
Vídeo continua exigindo ação explícita.
+
+
+
+
+
+
+
+
+
Cena 04 · Estados críticos
+
Vazio, descoberta fail-closed, recusa de consentimento e fallback de mídia.
+
+
+
+ Board vazio
+
A seção não ocupa espaço na home.
+
+ O board de atualizações e o link “Ver todos os conteúdos” não renderizam com zero peças.
+ Na página da coleção, o vazio honesto permanece:
+
+
+ “As primeiras peças estão a caminho. Enquanto isso, faça seu card e mostre que você está
+ com Solla.”
+
+ O shell mantém apenas rotas com acervo publicado. “Fotos” continua condicionado à
+ aprovação e ao kill switch; não existe item desabilitado nem promessa vazia.
+
+ A área reserva a proporção, mostra um fallback textual e mantém título, fonte e ação.
+ Nenhum ícone nativo de imagem quebrada fica exposto.
+
+
+ Imagem indisponível O conteúdo e a fonte continuam
+ abaixo.
+
+
+
+
+
+
+
+
From f28a0d5fd6ab8cb797fe22aa460d31ac6377cf81 Mon Sep 17 00:00:00 2001
From: Francisco Solla
Date: Mon, 28 Sep 2026 02:34:14 -0300
Subject: [PATCH 2/7] style(S1): formata o plano do programa
---
docs/campanha/redesign-site-publico.md | 107 +++++++++++++------------
1 file changed, 54 insertions(+), 53 deletions(-)
diff --git a/docs/campanha/redesign-site-publico.md b/docs/campanha/redesign-site-publico.md
index 2283aef3..1adf43a3 100644
--- a/docs/campanha/redesign-site-publico.md
+++ b/docs/campanha/redesign-site-publico.md
@@ -29,53 +29,53 @@ intocados; nada de superfície pública nova que viole o período eleitoral.
Legenda de ação: **R** = redesenhar; **P** = preservar (só contrato/estilo
mínimo); **E** = endpoint não visual (preserve-only); **G** = adição gateada.
-| # | Rota / feature | Dono atual (código) | Fatia | Ação | Critério de aceite |
-| - | -------------- | ------------------- | ----- | ---- | ------------------ |
-| 1 | `/` | `(frontend)/(home)/page.tsx` + `layout.tsx` | S1 | R | Composição completa aprovada no artefato; seções identidade→princípios→trabalho→trajetória→conteúdo→participação; CTA primário único; vazio/erro/recusa desenhados; assinatura com reduced-motion |
-| 2 | Shell de campanha (header/footer/nav) | `CampaignPageHeader`, `CampaignLogoLink`, `CampaignFooter` | S1 | R | Um só shell para home/conteúdos/jingles/fotos; alvos ≥44px; identificação eleitoral intacta; "Fotos" condicional preservada |
-| 3 | `/conteudos` | `conteudos/(catalog)/page.tsx` | S2 | R | Lista/filtros/estados redesenhados; canonical `/conteudos`; `noindex` com 0 peças; skeletons preservados |
-| 4 | `/conteudos/[slug]` | `conteudos/[slug]/page.tsx` | S2 | R | Detalhe + player + share redesenhados; 404 uniforme; OG `video.other`/`article` |
-| 5 | `/conteudos/[slug]/midia` | `conteudos/[slug]/midia/route.ts` | S2 | E | Range/streaming, `?download=1` `jorge-solla-1313-.`, evento anônimo — intocados |
-| 6 | `/conteudos/[slug]/frame` | `conteudos/[slug]/frame/route.ts` | S2 | E | Geração/espera do still dentro do orçamento — intocada |
-| 7 | `/corte/[id]` | `corte/[id]/page.tsx` + `corte/layout.tsx` | S2 | R | `noindex` sempre; crédito de origem; 404 uniforme; share kit preservado |
-| 8 | `/jingles` | `jingles/page.tsx` | S2 | R | Player/reprodução/download `jorge-solla-1313-.mp3`; vazio honesto; áudio nunca autoplay |
-| 9 | `/midia` (referida no brief) | = itens 5/6 (endpoints de mídia) | S2 | E | Registrada como endpoint; não há página `/midia` no app |
-| 10 | `/artigos` | `artigos/page.tsx` | S3 | R | Landing editorial restilizada; imagem do destaque corrigida; sem chrome de campanha |
-| 11 | `/[type]` | `[type]/page.tsx` (`[type]/layout.tsx`) | S3 | R | Listagem por tipo restilizada; canonical; `generateStaticParams`/`dynamicParams` preservados |
-| 12 | `/[type]/[category]` | `[type]/[category]/page.tsx` | S3 | R | Listagem de categoria restilizada; separação editorial mantida |
-| 13 | `/[type]/[category]/[slug]` | `[type]/[category]/[slug]/page.tsx` | S3 | R | Artigo: JSON-LD `Article`, OG, redirect canônico, ISR `posts` — preservados |
-| 14 | ShareLink `/[type]` (direct/announcement) | `[type]/page.tsx` branch + `components/shareLink/*` | S3 | R | Redirecionamento instantâneo e página de anúncio restilizadas; poll 30s e OG preservados |
-| 15 | `/api/share-link/[slug]/live` | `api/share-link/[slug]/live/route.ts` | S3 | E | `{target}` nunca 5xx, `no-store` — intocado |
-| 16 | `/[type]/evento.ics` | `[type]/evento.ics/route.ts` | S3 | P | Saída `.ics`, nome do arquivo e `Cache-Control` intocados |
-| 17 | `/privacidade` | `privacidade/page.tsx` | S4 | R | Texto legal intacto; restilo editorial; 404 se `!published` |
-| 18 | `/mandato-no-whatsapp` | `mandato-no-whatsapp/page.tsx` | S4 | R | Fluxo/form preservados; Consent `whatsapp-inscricao` fail-closed; ≥16px inputs |
-| 19 | `/abaixo-assinado/[id]` | `abaixo-assinado/[id]/page.tsx` | S4 | R | Assinatura transacional/consent intactos; **bug 500 em id inexistente corrigido (404)**; JSON-LD/pixel preservados |
-| 20 | Newsletter da home | `CampaignNewsletterSection` + `submitCampaignNewsletter` | S1/S4 | R | Consent `campanha-novidades` fail-closed; pixel Lead preservado; estado de recusa desenhado |
-| 21 | `/cards` (estúdio) | `(home)/cards/page.tsx` + `components/cards/*` | S5 | R | 6 modelos reais; `?model=` válido; `#cards` da home; nomes de arquivo e telemetria anônima preservados |
-| 22 | Wizard kit completo (extensão) | `CardsStudio`/`CardComposer` (dono) | S5 | R | Passos nome→foto→dobradinha→kit; nunca gera arte incompleta; foto nunca sai do browser; back/forward na sessão; sem persistência silenciosa |
-| 23 | `/fotos` (C233) | `fotos/page.tsx` + `components/fotos/*` | S6 | G | Só `approved`; kill switch `photoAlbum.published`; canal de remoção; vazio honesto; **abertura exige decisão registrada** |
-| 24 | `/fotos/encontre` (C234) | `fotos/encontre/page.tsx` + `api/fotos/selfie` | S7 | G | `selfieSearchEnabled` fail-closed; Consent por chave; sem score/nome; on-device; **dark até decisão** |
-| 25 | `/api/revalidate` | `api/revalidate/route.ts` | — | P | Allowlist de tags intocada |
-| 26 | `/api/content-events` | `api/content-events/route.ts` | S2 | P | Beacon anônimo: schema, rate-limit, catálogos — intocados |
-| 27 | `/api/social-feed/sync` | `api/social-feed/sync/route.ts` | — | P | Auth admin + same-origin — intocado |
-| 28 | Metadados raiz/robots/OG | `(frontend)/layout.tsx`, `robots.ts`, `lib/seo` | S1 | P | Fallbacks e noindex de staging preservados |
-| 29 | `hidden`/`isPostVisible` | `src/utilities/posts.ts` | S3 | P | Falha fechada; remoção sem deploy — intocados |
+| # | Rota / feature | Dono atual (código) | Fatia | Ação | Critério de aceite |
+| --- | ----------------------------------------- | ---------------------------------------------------------- | ----- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 1 | `/` | `(frontend)/(home)/page.tsx` + `layout.tsx` | S1 | R | Composição completa aprovada no artefato; seções identidade→princípios→trabalho→trajetória→conteúdo→participação; CTA primário único; vazio/erro/recusa desenhados; assinatura com reduced-motion |
+| 2 | Shell de campanha (header/footer/nav) | `CampaignPageHeader`, `CampaignLogoLink`, `CampaignFooter` | S1 | R | Um só shell para home/conteúdos/jingles/fotos; alvos ≥44px; identificação eleitoral intacta; "Fotos" condicional preservada |
+| 3 | `/conteudos` | `conteudos/(catalog)/page.tsx` | S2 | R | Lista/filtros/estados redesenhados; canonical `/conteudos`; `noindex` com 0 peças; skeletons preservados |
+| 4 | `/conteudos/[slug]` | `conteudos/[slug]/page.tsx` | S2 | R | Detalhe + player + share redesenhados; 404 uniforme; OG `video.other`/`article` |
+| 5 | `/conteudos/[slug]/midia` | `conteudos/[slug]/midia/route.ts` | S2 | E | Range/streaming, `?download=1` `jorge-solla-1313-.`, evento anônimo — intocados |
+| 6 | `/conteudos/[slug]/frame` | `conteudos/[slug]/frame/route.ts` | S2 | E | Geração/espera do still dentro do orçamento — intocada |
+| 7 | `/corte/[id]` | `corte/[id]/page.tsx` + `corte/layout.tsx` | S2 | R | `noindex` sempre; crédito de origem; 404 uniforme; share kit preservado |
+| 8 | `/jingles` | `jingles/page.tsx` | S2 | R | Player/reprodução/download `jorge-solla-1313-.mp3`; vazio honesto; áudio nunca autoplay |
+| 9 | `/midia` (referida no brief) | = itens 5/6 (endpoints de mídia) | S2 | E | Registrada como endpoint; não há página `/midia` no app |
+| 10 | `/artigos` | `artigos/page.tsx` | S3 | R | Landing editorial restilizada; imagem do destaque corrigida; sem chrome de campanha |
+| 11 | `/[type]` | `[type]/page.tsx` (`[type]/layout.tsx`) | S3 | R | Listagem por tipo restilizada; canonical; `generateStaticParams`/`dynamicParams` preservados |
+| 12 | `/[type]/[category]` | `[type]/[category]/page.tsx` | S3 | R | Listagem de categoria restilizada; separação editorial mantida |
+| 13 | `/[type]/[category]/[slug]` | `[type]/[category]/[slug]/page.tsx` | S3 | R | Artigo: JSON-LD `Article`, OG, redirect canônico, ISR `posts` — preservados |
+| 14 | ShareLink `/[type]` (direct/announcement) | `[type]/page.tsx` branch + `components/shareLink/*` | S3 | R | Redirecionamento instantâneo e página de anúncio restilizadas; poll 30s e OG preservados |
+| 15 | `/api/share-link/[slug]/live` | `api/share-link/[slug]/live/route.ts` | S3 | E | `{target}` nunca 5xx, `no-store` — intocado |
+| 16 | `/[type]/evento.ics` | `[type]/evento.ics/route.ts` | S3 | P | Saída `.ics`, nome do arquivo e `Cache-Control` intocados |
+| 17 | `/privacidade` | `privacidade/page.tsx` | S4 | R | Texto legal intacto; restilo editorial; 404 se `!published` |
+| 18 | `/mandato-no-whatsapp` | `mandato-no-whatsapp/page.tsx` | S4 | R | Fluxo/form preservados; Consent `whatsapp-inscricao` fail-closed; ≥16px inputs |
+| 19 | `/abaixo-assinado/[id]` | `abaixo-assinado/[id]/page.tsx` | S4 | R | Assinatura transacional/consent intactos; **bug 500 em id inexistente corrigido (404)**; JSON-LD/pixel preservados |
+| 20 | Newsletter da home | `CampaignNewsletterSection` + `submitCampaignNewsletter` | S1/S4 | R | Consent `campanha-novidades` fail-closed; pixel Lead preservado; estado de recusa desenhado |
+| 21 | `/cards` (estúdio) | `(home)/cards/page.tsx` + `components/cards/*` | S5 | R | 6 modelos reais; `?model=` válido; `#cards` da home; nomes de arquivo e telemetria anônima preservados |
+| 22 | Wizard kit completo (extensão) | `CardsStudio`/`CardComposer` (dono) | S5 | R | Passos nome→foto→dobradinha→kit; nunca gera arte incompleta; foto nunca sai do browser; back/forward na sessão; sem persistência silenciosa |
+| 23 | `/fotos` (C233) | `fotos/page.tsx` + `components/fotos/*` | S6 | G | Só `approved`; kill switch `photoAlbum.published`; canal de remoção; vazio honesto; **abertura exige decisão registrada** |
+| 24 | `/fotos/encontre` (C234) | `fotos/encontre/page.tsx` + `api/fotos/selfie` | S7 | G | `selfieSearchEnabled` fail-closed; Consent por chave; sem score/nome; on-device; **dark até decisão** |
+| 25 | `/api/revalidate` | `api/revalidate/route.ts` | — | P | Allowlist de tags intocada |
+| 26 | `/api/content-events` | `api/content-events/route.ts` | S2 | P | Beacon anônimo: schema, rate-limit, catálogos — intocados |
+| 27 | `/api/social-feed/sync` | `api/social-feed/sync/route.ts` | — | P | Auth admin + same-origin — intocado |
+| 28 | Metadados raiz/robots/OG | `(frontend)/layout.tsx`, `robots.ts`, `lib/seo` | S1 | P | Fallbacks e noindex de staging preservados |
+| 29 | `hidden`/`isPostVisible` | `src/utilities/posts.ts` | S3 | P | Falha fechada; remoção sem deploy — intocados |
Nenhuma rota da lista do programa fica sem dono. `/midia` e `/frame` são
endpoints de mídia da Central (itens 5/6), não páginas.
## 3. Fatias
-| Fatia | Escopo | Depende | Appetite | Design |
-| ----- | ------ | ------- | -------- | ------ |
-| **S0** | Auditoria, matriz, plano, 1º pacote de design | — | — | campanha home+shell |
-| **S1** | Shell de campanha + home (itens 1–2, 20) | S0 | M | `site-publico-campanha-home-ui-design.html` |
-| **S2** | Central de Conteúdos, cortes, mídia embutida, jingles (3–9, 26) | S1 (shell) | M | artefato próprio por superfície |
-| **S3** | Editorial: artigos, listas, artigo, share-links, `.ics` (10–16, 29) | S0 | M | artefato próprio |
-| **S4** | Participação: WhatsApp, abaixo-assinado, privacidade, polish de forms (17–20) | S1 | S/M | artefato próprio |
-| **S5** | Wizard do kit de apoio (21–22) | S1 | M | artefato próprio (estende `/cards`) |
-| **S6** | Álbum público C233 (23) — gateado | S3 (editorial) + decisão | S | artefato C233 aprovado + relatório |
-| **S7** | Selfie C234 (24) — gateado | S6 + C231/C232 + Consent + DPIA | — | artefato C234 aprovado |
+| Fatia | Escopo | Depende | Appetite | Design |
+| ------ | ----------------------------------------------------------------------------- | ------------------------------- | -------- | ------------------------------------------- |
+| **S0** | Auditoria, matriz, plano, 1º pacote de design | — | — | campanha home+shell |
+| **S1** | Shell de campanha + home (itens 1–2, 20) | S0 | M | `site-publico-campanha-home-ui-design.html` |
+| **S2** | Central de Conteúdos, cortes, mídia embutida, jingles (3–9, 26) | S1 (shell) | M | artefato próprio por superfície |
+| **S3** | Editorial: artigos, listas, artigo, share-links, `.ics` (10–16, 29) | S0 | M | artefato próprio |
+| **S4** | Participação: WhatsApp, abaixo-assinado, privacidade, polish de forms (17–20) | S1 | S/M | artefato próprio |
+| **S5** | Wizard do kit de apoio (21–22) | S1 | M | artefato próprio (estende `/cards`) |
+| **S6** | Álbum público C233 (23) — gateado | S3 (editorial) + decisão | S | artefato C233 aprovado + relatório |
+| **S7** | Selfie C234 (24) — gateado | S6 + C231/C232 + Consent + DPIA | — | artefato C234 aprovado |
O núcleo (S1–S5) não depende de S6/S7; bloqueio de uma adição gateada não para
o resto. Cada fatia exige: reconciliação factual dos claims que publica,
@@ -88,14 +88,14 @@ Corpus de referência: `docs/research/briefing-geral-militancia/` (legível) e
`data/briefing-geral-militancia/` (ledgers, untracked). Regra: sem fonte
(ledger + `sourceUrl` + `sourceDate`), não publica.
-| Claim atual na home | Evidência no corpus | Decisão |
-| ------------------- | ------------------- | ------- |
-| "Criou o SAMU 192" | Resgate Médico em Vitória da Conquista é **apontado como origem da ideia**; em 2003, como secretário de Atenção à Saúde, **participou da criação e implantação** | **HOLD** — publicar "participou da criação do SAMU 192" (ou formulação equivalente aprovada pela voz) |
-| "Criou o Brasil Sorridente" | "Assinou as diretrizes da Política Nacional de Saúde Bucal, o Brasil Sorridente" (2003–2005) | **HOLD** — trocar por "assinou as diretrizes do Brasil Sorridente" / "participou do lançamento" |
-| "Mais votado do PT-BA em 2022" | Ledger: em 2022 foi **14º mais votado do estado** (128.968 votos; 78,9% do interior); em 2018, **5º** | **HOLD** — substituir por fato lastreado (ex.: votação de 2022 por território) |
-| "DIAP entre os 40 melhores da Câmara" | Não consta no corpus | **HOLD** — só publicar com fonte verificada |
-| "3.333 proposições" / "1.031 discursos" | Fonte do plano: API Dados Abertos/SitaqWeb (13/08/2026), fora do corpus | **Re-verificar** na data de publicação ou substituir por números do corpus (SESAB, SAMU, enfermagem, Mais Médicos) |
-| "4 de outubro", "1313", identificação eleitoral | Plano + kit | Manter; reconferir na publicação |
+| Claim atual na home | Evidência no corpus | Decisão |
+| ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
+| "Criou o SAMU 192" | Resgate Médico em Vitória da Conquista é **apontado como origem da ideia**; em 2003, como secretário de Atenção à Saúde, **participou da criação e implantação** | **HOLD** — publicar "participou da criação do SAMU 192" (ou formulação equivalente aprovada pela voz) |
+| "Criou o Brasil Sorridente" | "Assinou as diretrizes da Política Nacional de Saúde Bucal, o Brasil Sorridente" (2003–2005) | **HOLD** — trocar por "assinou as diretrizes do Brasil Sorridente" / "participou do lançamento" |
+| "Mais votado do PT-BA em 2022" | Ledger: em 2022 foi **14º mais votado do estado** (128.968 votos; 78,9% do interior); em 2018, **5º** | **HOLD** — substituir por fato lastreado (ex.: votação de 2022 por território) |
+| "DIAP entre os 40 melhores da Câmara" | Não consta no corpus | **HOLD** — só publicar com fonte verificada |
+| "3.333 proposições" / "1.031 discursos" | Fonte do plano: API Dados Abertos/SitaqWeb (13/08/2026), fora do corpus | **Re-verificar** na data de publicação ou substituir por números do corpus (SESAB, SAMU, enfermagem, Mais Médicos) |
+| "4 de outubro", "1313", identificação eleitoral | Plano + kit | Manter; reconferir na publicação |
A redação final da fatia passa por `solla-comunicacao` antes de entrar no
artefato; a atribuição exata do corpus é preservada (autoria ≠ coautoria ≠
@@ -128,7 +128,8 @@ explicitamente a possui e com aprovação registrada.
## 7. Publicação
Commits podem conter: copy pública aprovada, proveniência mínima (fonte pública
-+ data), planos/decisões de design, mídia aprovada para publicação. Fora do
-repo (untracked): ledgers, dumps de pesquisa, Q&A interno, inventários de
-ativos privados, PII e segredos. O design aprovado viaja com o plano; o
-artefato é a fonte de verdade do port.
+
+- data), planos/decisões de design, mídia aprovada para publicação. Fora do
+ repo (untracked): ledgers, dumps de pesquisa, Q&A interno, inventários de
+ ativos privados, PII e segredos. O design aprovado viaja com o plano; o
+ artefato é a fonte de verdade do port.
From faa392fe68f2636a49197707f07956505a85bb58 Mon Sep 17 00:00:00 2001
From: Francisco Solla
Date: Mon, 28 Sep 2026 03:17:45 -0300
Subject: [PATCH 3/7] =?UTF-8?q?docs(S1):=20registra=20decis=C3=B5es=20de?=
=?UTF-8?q?=20copy=20e=20itera=20o=20artefato=20da=20home=20(slogan,=20pro?=
=?UTF-8?q?vas,=20board)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/campanha/redesign-site-publico.md | 55 +-
.../2026-09-28-redesign-site-publico-s1.md | 2 +-
.../site-publico-campanha-home-ui-design.html | 778 ++++++++++++++++--
3 files changed, 756 insertions(+), 79 deletions(-)
diff --git a/docs/campanha/redesign-site-publico.md b/docs/campanha/redesign-site-publico.md
index 1adf43a3..5af5039c 100644
--- a/docs/campanha/redesign-site-publico.md
+++ b/docs/campanha/redesign-site-publico.md
@@ -53,8 +53,8 @@ mínimo); **E** = endpoint não visual (preserve-only); **G** = adição gateada
| 20 | Newsletter da home | `CampaignNewsletterSection` + `submitCampaignNewsletter` | S1/S4 | R | Consent `campanha-novidades` fail-closed; pixel Lead preservado; estado de recusa desenhado |
| 21 | `/cards` (estúdio) | `(home)/cards/page.tsx` + `components/cards/*` | S5 | R | 6 modelos reais; `?model=` válido; `#cards` da home; nomes de arquivo e telemetria anônima preservados |
| 22 | Wizard kit completo (extensão) | `CardsStudio`/`CardComposer` (dono) | S5 | R | Passos nome→foto→dobradinha→kit; nunca gera arte incompleta; foto nunca sai do browser; back/forward na sessão; sem persistência silenciosa |
-| 23 | `/fotos` (C233) | `fotos/page.tsx` + `components/fotos/*` | S6 | G | Só `approved`; kill switch `photoAlbum.published`; canal de remoção; vazio honesto; **abertura exige decisão registrada** |
-| 24 | `/fotos/encontre` (C234) | `fotos/encontre/page.tsx` + `api/fotos/selfie` | S7 | G | `selfieSearchEnabled` fail-closed; Consent por chave; sem score/nome; on-device; **dark até decisão** |
+| 23 | `/fotos` (C233) | `fotos/page.tsx` + `components/fotos/*` | S6 | R | Redesenho preserva o contrato C233 (só `approved`; kill switch `photoAlbum.published`; canal de remoção; vazio honesto) — **aberta por decisão de 28/09/2026** |
+| 24 | `/fotos/encontre` (C234) | `fotos/encontre/page.tsx` + `api/fotos/selfie` | S7 | R | Redesenho preserva o contrato C234 (`selfieSearchEnabled` fail-closed; Consent por chave; sem score/nome; on-device) — **aberta por decisão de 28/09/2026** |
| 25 | `/api/revalidate` | `api/revalidate/route.ts` | — | P | Allowlist de tags intocada |
| 26 | `/api/content-events` | `api/content-events/route.ts` | S2 | P | Beacon anônimo: schema, rate-limit, catálogos — intocados |
| 27 | `/api/social-feed/sync` | `api/social-feed/sync/route.ts` | — | P | Auth admin + same-origin — intocado |
@@ -66,16 +66,16 @@ endpoints de mídia da Central (itens 5/6), não páginas.
## 3. Fatias
-| Fatia | Escopo | Depende | Appetite | Design |
-| ------ | ----------------------------------------------------------------------------- | ------------------------------- | -------- | ------------------------------------------- |
-| **S0** | Auditoria, matriz, plano, 1º pacote de design | — | — | campanha home+shell |
-| **S1** | Shell de campanha + home (itens 1–2, 20) | S0 | M | `site-publico-campanha-home-ui-design.html` |
-| **S2** | Central de Conteúdos, cortes, mídia embutida, jingles (3–9, 26) | S1 (shell) | M | artefato próprio por superfície |
-| **S3** | Editorial: artigos, listas, artigo, share-links, `.ics` (10–16, 29) | S0 | M | artefato próprio |
-| **S4** | Participação: WhatsApp, abaixo-assinado, privacidade, polish de forms (17–20) | S1 | S/M | artefato próprio |
-| **S5** | Wizard do kit de apoio (21–22) | S1 | M | artefato próprio (estende `/cards`) |
-| **S6** | Álbum público C233 (23) — gateado | S3 (editorial) + decisão | S | artefato C233 aprovado + relatório |
-| **S7** | Selfie C234 (24) — gateado | S6 + C231/C232 + Consent + DPIA | — | artefato C234 aprovado |
+| Fatia | Escopo | Depende | Appetite | Design |
+| ------ | ----------------------------------------------------------------------------- | ------------------------- | -------- | ------------------------------------------- |
+| **S0** | Auditoria, matriz, plano, 1º pacote de design | — | — | campanha home+shell |
+| **S1** | Shell de campanha + home (itens 1–2, 20) | S0 | M | `site-publico-campanha-home-ui-design.html` |
+| **S2** | Central de Conteúdos, cortes, mídia embutida, jingles (3–9, 26) | S1 (shell) | M | artefato próprio por superfície |
+| **S3** | Editorial: artigos, listas, artigo, share-links, `.ics` (10–16, 29) | S0 | M | artefato próprio |
+| **S4** | Participação: WhatsApp, abaixo-assinado, privacidade, polish de forms (17–20) | S1 | S/M | artefato próprio |
+| **S5** | Wizard do kit de apoio (21–22) | S1 | M | artefato próprio (estende `/cards`) |
+| **S6** | Álbum público C233 (23) — aberto (decisão de 28/09/2026) | S3 (editorial) | S | artefato C233 aprovado (base) |
+| **S7** | Selfie C234 (24) — aberto (decisão de 28/09/2026) | S6 + ops (flag + Consent) | — | artefato C234 aprovado (base) |
O núcleo (S1–S5) não depende de S6/S7; bloqueio de uma adição gateada não para
o resto. Cada fatia exige: reconciliação factual dos claims que publica,
@@ -88,24 +88,27 @@ Corpus de referência: `docs/research/briefing-geral-militancia/` (legível) e
`data/briefing-geral-militancia/` (ledgers, untracked). Regra: sem fonte
(ledger + `sourceUrl` + `sourceDate`), não publica.
-| Claim atual na home | Evidência no corpus | Decisão |
-| ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
-| "Criou o SAMU 192" | Resgate Médico em Vitória da Conquista é **apontado como origem da ideia**; em 2003, como secretário de Atenção à Saúde, **participou da criação e implantação** | **HOLD** — publicar "participou da criação do SAMU 192" (ou formulação equivalente aprovada pela voz) |
-| "Criou o Brasil Sorridente" | "Assinou as diretrizes da Política Nacional de Saúde Bucal, o Brasil Sorridente" (2003–2005) | **HOLD** — trocar por "assinou as diretrizes do Brasil Sorridente" / "participou do lançamento" |
-| "Mais votado do PT-BA em 2022" | Ledger: em 2022 foi **14º mais votado do estado** (128.968 votos; 78,9% do interior); em 2018, **5º** | **HOLD** — substituir por fato lastreado (ex.: votação de 2022 por território) |
-| "DIAP entre os 40 melhores da Câmara" | Não consta no corpus | **HOLD** — só publicar com fonte verificada |
-| "3.333 proposições" / "1.031 discursos" | Fonte do plano: API Dados Abertos/SitaqWeb (13/08/2026), fora do corpus | **Re-verificar** na data de publicação ou substituir por números do corpus (SESAB, SAMU, enfermagem, Mais Médicos) |
-| "4 de outubro", "1313", identificação eleitoral | Plano + kit | Manter; reconferir na publicação |
+| Claim atual na home | Corpus | Decisão (coordenação, 28/09/2026) |
+| ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| "Criou o SAMU 192" | Resgate Médico em Vitória da Conquista (1999–2002) apontado como origem da ideia; criação/implantação no Ministério da Saúde (2003–2005) | **APROVADO** — Solla liderou o piloto municipal e a nacionalização; é justo reivindicar a criação. Peças de contexto podem mostrar a trajetória (Conquista → Ministério) |
+| "Criou o Brasil Sorridente" | "Assinou as diretrizes da Política Nacional de Saúde Bucal" (2003–2005) | **APROVADO** — liderou a implementação; o texto pode dizer que criou |
+| "Mais votado do PT-BA em 2022" | Em 2022: 128.968 votos, 78,9% no interior; 14º no estado, mas o **mais votado entre os federais do PT na Bahia** | **APROVADO** — correto no recorte partidário; manter o escopo "do PT-BA" explícito na frase |
+| "DIAP entre os 40 melhores da Câmara" | Fora do corpus | **CONFIRMADO** pela coordenação — publicar |
+| "3.333 proposições" / "1.031 discursos" | Fonte do plano: API Dados Abertos/SitaqWeb (13/08/2026) | Manter como no ar; **rechecar** contra a API/SitaqWeb antes do go-live da S1 |
+| "4 de outubro", "1313", identificação eleitoral | Plano + kit | Manter; reconferir na publicação |
-A redação final da fatia passa por `solla-comunicacao` antes de entrar no
-artefato; a atribuição exata do corpus é preservada (autoria ≠ coautoria ≠
-relatoria ≠ voto ≠ articulação ≠ gestão).
+Decisão humana registrada em 28/09/2026 na revisão do pacote de aprovação
+(PR #1381). A redação final da fatia continua passando por `solla-comunicacao`;
+a distinção de esfera (município/estado/União) e de fase (autorizado/pago) do
+resto do conteúdo permanece.
## 5. Riscos e bloqueios registrados
-1. **Timing eleitoral (04/10/2026).** Hoje 28/09/2026. C233/C234 permanecem
- fechadas por padrão; abrir qualquer superfície pública nova exige decisão
- registrada (humano + coordenação). O deploy de produção é aprovação humana.
+1. **C233/C234 abertas por decisão de 28/09/2026** — são superfícies
+ implementadas e passam a ser redesenho (S6/S7), não adição gateada. Em
+ produção hoje o álbum mostra o vazio honesto (sem foto `approved`) e a selfie
+ depende do flag operacional + Consent; o redesenho preserva os contratos
+ fail-closed. O deploy de produção é aprovação humana.
2. **`/abaixo-assinado/1` responde 500 em produção** (id inexistente deveria
404). Bug público aberto; entra na S4 com teste de regressão (ou hotfix antes).
3. **`/artigos` com imagem de destaque quebrada** em produção (ícone de erro).
diff --git a/docs/changelog/2026-09-28-redesign-site-publico-s1.md b/docs/changelog/2026-09-28-redesign-site-publico-s1.md
index 20745900..c4ed6b36 100644
--- a/docs/changelog/2026-09-28-redesign-site-publico-s1.md
+++ b/docs/changelog/2026-09-28-redesign-site-publico-s1.md
@@ -1 +1 @@
-**S1 — Redesign das superfícies públicas: auditoria, matriz de cobertura e artefato hi-fi da home de campanha (2026-09-28):** primeira entrega do programa de redesign do site público (`docs/campanha/redesign-site-publico.md`), **docs-only e sem implementação** — ela abre o gate visual. O plano de programa registra o diagnóstico da auditoria live (1280/390), a **matriz de cobertura** de todas as rotas públicas das duas vertentes (campanha: `/`, shell, `/conteudos`, `/[slug]`, mídia/frame, `/corte/[id]`, `/jingles`; editorial: `/artigos`, `/[type]`, `/[type]/[category]`, `/[type]/[category]/[slug]`, share-links, `.ics`; participação: `/mandato-no-whatsapp`, `/abaixo-assinado/[id]`, `/privacidade`; extensões gateadas C233/C234), as 8 fatias com dependências e aceite, os contratos públicos preservados e os **holds factuais**: "Criou o SAMU 192", "Criou o Brasil Sorridente", "DIAP entre os 40 melhores" e "Mais votado do PT-BA em 2022" conflitam com o briefing (SAMU = participou da criação; Sorridente = assinou as diretrizes; 2022 = 14º do estado, 5º em 2018), e os números 3.333/1.031 exigem rechecagem na publicação — sem fonte, não publica. O artefato hi-fi `docs/plans/site-publico-campanha-home-ui-design.html` (designer `openai/gpt-5.6-sol`) apresenta a home completa em 1280/390 com a direção "vermelho abre, papel explica": hero de mobilização, princípios como capítulos com fotografia sticky (inline no mobile/reduced-motion), o caso **SAMU na Bahia** como ficha de evidência em duas eras (gestão estadual 2007–2010 · entregue; governo federal 2025 · autorizado, com fonte), trajetória datada por esfera, zona de mídia com lazy/posse do usuário e estado fail-closed, participação com um CTA primário e formulário de 3 campos, e os quatro estados críticos (board vazio, descoberta fail-closed, consentimento recusado, fallback de mídia); **três decisões visuais** documentadas no artefato e o porquê registrado em `DESIGN.md` §7. Riscos públicos abertos no plano: `/abaixo-assinado/` responde 500 em produção (deveria 404), imagem de destaque quebrada em `/artigos`, álbum `/fotos` vazio (honesto) e C233/C234 fechadas por padrão no período eleitoral. Copy da home reconciliado em deck de voz (`solla-comunicacao`, untracked) com holds explícitos. PR em rascunho: aguarda aprovação humana do artefato antes de qualquer implementação.
+**S1 — Redesign das superfícies públicas: auditoria, matriz de cobertura e artefato hi-fi da home de campanha (2026-09-28):** primeira entrega do programa de redesign do site público (`docs/campanha/redesign-site-publico.md`), **docs-only e sem implementação** — ela abre o gate visual. O plano de programa registra o diagnóstico da auditoria live (1280/390), a **matriz de cobertura** de todas as rotas públicas das duas vertentes (campanha: `/`, shell, `/conteudos`, `/[slug]`, mídia/frame, `/corte/[id]`, `/jingles`; editorial: `/artigos`, `/[type]`, `/[type]/[category]`, `/[type]/[category]/[slug]`, share-links, `.ics`; participação: `/mandato-no-whatsapp`, `/abaixo-assinado/[id]`, `/privacidade`; extensões C233/C234), as 8 fatias com dependências e aceite, os contratos públicos preservados e a **reconciliação factual registrada em 28/09/2026**: por decisão da coordenação, "Criou o SAMU 192" e "Criou o Brasil Sorridente" ficam aprovados (liderou o piloto municipal e a nacionalização; liderou a implementação), "Mais votado do PT-BA em 2022" está correto no recorte partidário (com o escopo explícito), "DIAP entre os 40 melhores" confirmado, e 3.333/1.031 seguem como no ar com rechecagem antes do go-live; C233/C234 são **superfícies abertas e implementadas** (S6/S7 de redesenho, não adição gateada). O artefato hi-fi `docs/plans/site-publico-campanha-home-ui-design.html` (designer `openai/gpt-5.6-sol`) apresenta a home completa em 1280/390 com a direção "vermelho abre, papel explica": hero de mobilização com H1 "Mais Saúde, Mais Futuro", micro-provas aprovadas, prova social numérica, princípios como capítulos com fotografia própria por capítulo (crossfade 1:1 no desktop, inline no mobile/reduced-motion), a seção "por que essa eleição importa", o caso **SAMU na Bahia** como ficha de evidência em duas eras (gestão estadual 2007–2010 · entregue; governo federal 2025 · autorizado, com fonte), trajetória datada por esfera, board de atualizações (posts + YouTube + Instagram com snapshot/lazy), zona de mídia com rádio/vídeo sob ação do usuário e fail-closed, participação com um CTA primário e formulário de 3 campos, e os quatro estados críticos (board vazio, descoberta fail-closed, consentimento recusado, fallback de mídia); **três decisões visuais** documentadas no artefato e o porquê registrado em `DESIGN.md` §7. Riscos públicos abertos no plano: `/abaixo-assinado/` responde 500 em produção (deveria 404) e imagem de destaque quebrada em `/artigos`. Copy da home reconciliado em deck de voz (`solla-comunicacao`, untracked). PR em rascunho: aguarda aprovação humana do artefato antes de qualquer implementação.
diff --git a/docs/plans/site-publico-campanha-home-ui-design.html b/docs/plans/site-publico-campanha-home-ui-design.html
index 4808384c..d6b18d3f 100644
--- a/docs/plans/site-publico-campanha-home-ui-design.html
+++ b/docs/plans/site-publico-campanha-home-ui-design.html
@@ -374,6 +374,40 @@
opacity: 0.97;
}
+ .proof-band {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ padding: 52px 72px 58px;
+ background: white;
+ border-bottom: 1px solid var(--line);
+ }
+ .proof-stat {
+ padding: 0 34px;
+ text-align: center;
+ border-right: 1px solid var(--line);
+ }
+ .proof-stat:last-child {
+ border-right: 0;
+ }
+ .proof-stat strong {
+ display: block;
+ color: var(--pt-red);
+ font: 850 3rem/0.9 var(--font-display);
+ letter-spacing: -0.055em;
+ }
+ .proof-stat span {
+ display: block;
+ margin-top: 10px;
+ font: 650 0.82rem/1.25 var(--font-body);
+ }
+ .proof-recheck {
+ grid-column: 1 / -1;
+ margin: 30px 0 0;
+ color: var(--muted);
+ font-size: 0.63rem;
+ text-align: center;
+ }
+
.section-shell {
padding: 112px 72px 126px;
}
@@ -495,6 +529,66 @@
.inline-photo {
display: none;
}
+ .inline-photo[data-label='Educação e interior'],
+ .inline-photo[data-label='Democracia'] {
+ background: #7a1712;
+ }
+ .inline-photo[data-label='Educação e interior'] img,
+ .inline-photo[data-label='Democracia'] img {
+ object-fit: contain !important;
+ object-position: center bottom;
+ }
+
+ .election-frame {
+ padding: 104px 72px 116px;
+ background: #57150f;
+ color: white;
+ }
+ .election-frame .eyebrow {
+ color: var(--pt-yellow);
+ }
+ .election-frame h2 {
+ max-width: 900px;
+ margin: 0;
+ font: 770 3.55rem/0.98 var(--font-display);
+ letter-spacing: -0.052em;
+ }
+ .election-frame > p {
+ max-width: 760px;
+ margin: 28px 0 0;
+ color: rgb(255 255 255 / 76%);
+ font-size: 0.96rem;
+ line-height: 1.7;
+ }
+ .election-sequence {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 1px;
+ margin-top: 62px;
+ background: rgb(255 255 255 / 16%);
+ border: 1px solid rgb(255 255 255 / 16%);
+ }
+ .election-step {
+ min-height: 250px;
+ padding: 30px;
+ background: #48100d;
+ }
+ .election-step b {
+ color: var(--pt-yellow);
+ font: 760 0.66rem/1 var(--font-display);
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ }
+ .election-step h3 {
+ margin: 72px 0 12px;
+ font: 720 1.35rem/1.08 var(--font-display);
+ }
+ .election-step p {
+ margin: 0;
+ color: rgb(255 255 255 / 66%);
+ font-size: 0.75rem;
+ line-height: 1.6;
+ }
.case-file {
position: relative;
@@ -655,6 +749,112 @@
gap: 24px;
margin-top: 66px;
}
+ .updates-board {
+ display: grid;
+ grid-template-columns: 1.55fr 1fr 1fr;
+ grid-template-rows: repeat(2, 230px);
+ gap: 14px;
+ margin-top: 56px;
+ }
+ .update-card {
+ position: relative;
+ min-width: 0;
+ overflow: hidden;
+ background: #d8d2cf;
+ color: white;
+ }
+ .update-card:nth-child(1) {
+ background: #8e1915;
+ }
+ .update-card:nth-child(2) {
+ background: #184e92;
+ }
+ .update-card:nth-child(3) {
+ background: #64130f;
+ }
+ .update-card:nth-child(4) {
+ background: #3f211c;
+ }
+ .update-card:nth-child(5) {
+ background: #8d2b21;
+ }
+ .update-card.featured {
+ grid-row: 1 / 3;
+ }
+ .update-card img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ filter: saturate(0.82) contrast(1.04);
+ }
+ .update-card::after {
+ content: '';
+ position: absolute;
+ inset: 0;
+ background: linear-gradient(0deg, rgb(25 8 6 / 92%), transparent 68%);
+ }
+ .update-media-note {
+ position: absolute;
+ top: 20px;
+ left: 20px;
+ z-index: 2;
+ max-width: 150px;
+ color: rgb(255 255 255 / 64%);
+ font: 700 0.56rem/1.4 var(--font-display);
+ letter-spacing: 0.06em;
+ text-transform: uppercase;
+ }
+ .update-copy {
+ position: absolute;
+ z-index: 2;
+ right: 20px;
+ bottom: 18px;
+ left: 20px;
+ }
+ .update-source {
+ color: var(--pt-yellow);
+ font: 760 0.58rem/1 var(--font-display);
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+ }
+ .update-copy h3 {
+ margin: 8px 0 0;
+ font: 700 1rem/1.15 var(--font-card);
+ }
+ .featured .update-copy h3 {
+ max-width: 570px;
+ font-size: 1.48rem;
+ }
+ .update-copy p {
+ margin: 8px 0 0;
+ color: rgb(255 255 255 / 68%);
+ font-size: 0.65rem;
+ }
+ .update-link-row {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 24px;
+ margin-top: 22px;
+ }
+ .update-link-row p {
+ margin: 0;
+ color: var(--muted);
+ font-size: 0.68rem;
+ line-height: 1.5;
+ }
+ .update-link-row a {
+ min-height: 44px;
+ display: inline-flex;
+ flex: 0 0 auto;
+ align-items: center;
+ color: var(--pt-red);
+ font-weight: 750;
+ font-size: 0.74rem;
+ }
+ .board-controls {
+ display: none;
+ }
.video-panel {
position: relative;
min-height: 520px;
@@ -997,6 +1197,25 @@
.mobile .hero-image img {
object-position: center top;
}
+ .mobile .proof-band {
+ grid-template-columns: repeat(3, 1fr);
+ padding: 30px 10px 34px;
+ }
+ .mobile .proof-stat {
+ padding: 0 8px;
+ }
+ .mobile .proof-stat strong {
+ font-size: 1.7rem;
+ }
+ .mobile .proof-stat span {
+ margin-top: 7px;
+ font-size: 0.6rem;
+ }
+ .mobile .proof-recheck {
+ margin-top: 22px;
+ padding: 0 16px;
+ font-size: 0.56rem;
+ }
.mobile .hero-number {
right: 16px;
bottom: 12px;
@@ -1062,6 +1281,26 @@
letter-spacing: 0.07em;
text-transform: uppercase;
}
+ .mobile .election-frame {
+ padding: 82px 20px 90px;
+ }
+ .mobile .election-frame h2 {
+ font-size: 2.55rem;
+ }
+ .mobile .election-frame > p {
+ font-size: 0.82rem;
+ }
+ .mobile .election-sequence {
+ grid-template-columns: 1fr;
+ margin-top: 42px;
+ }
+ .mobile .election-step {
+ min-height: 0;
+ padding: 24px;
+ }
+ .mobile .election-step h3 {
+ margin-top: 42px;
+ }
.mobile .case-file .section-shell {
padding-top: 82px;
}
@@ -1117,6 +1356,51 @@
display: block;
margin-top: 42px;
}
+ .mobile .updates-board {
+ display: flex;
+ gap: 12px;
+ margin-right: -20px;
+ overflow-x: auto;
+ scroll-snap-type: x mandatory;
+ }
+ .mobile .update-card,
+ .mobile .update-card.featured {
+ width: 322px;
+ height: 430px;
+ flex: 0 0 322px;
+ scroll-snap-align: start;
+ }
+ .mobile .featured .update-copy h3,
+ .mobile .update-copy h3 {
+ font-size: 1.15rem;
+ }
+ .mobile .update-link-row {
+ align-items: flex-start;
+ flex-direction: column;
+ gap: 8px;
+ }
+ .mobile .board-controls {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-top: 14px;
+ }
+ .mobile .board-controls > span {
+ color: var(--muted);
+ font-size: 0.66rem;
+ }
+ .mobile .board-control-buttons {
+ display: flex;
+ gap: 8px;
+ }
+ .mobile .board-control-buttons button {
+ width: 44px;
+ height: 44px;
+ border: 1px solid var(--line);
+ border-radius: 50%;
+ background: white;
+ color: var(--pt-red-dark);
+ }
.mobile .video-panel {
min-height: 460px;
}
@@ -1259,6 +1543,59 @@
gap: 36px;
margin-top: 32px;
}
+ .signature-storyboard {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 18px;
+ margin-top: 36px;
+ }
+ .signature-frame {
+ display: grid;
+ grid-template-columns: 44% 56%;
+ min-height: 320px;
+ overflow: hidden;
+ background: white;
+ border: 1px solid var(--line);
+ }
+ .signature-frame figure {
+ min-width: 0;
+ margin: 0;
+ background: #7a1712;
+ }
+ .signature-frame img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ }
+ .signature-frame:nth-child(2) img {
+ object-fit: contain;
+ object-position: center bottom;
+ }
+ .signature-copy {
+ padding: 28px;
+ }
+ .signature-copy span {
+ color: var(--pt-red);
+ font: 760 0.62rem/1 var(--font-display);
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+ }
+ .signature-copy h3 {
+ margin: 54px 0 12px;
+ font: 730 1.55rem/1.05 var(--font-display);
+ }
+ .signature-copy p {
+ margin: 0;
+ color: var(--muted);
+ font-size: 0.72rem;
+ line-height: 1.55;
+ }
+ .signature-map {
+ margin: 18px 0 0;
+ color: var(--muted);
+ font-size: 0.68rem;
+ line-height: 1.55;
+ }
.motion-column {
border-top: 1px solid var(--line);
padding-top: 22px;
@@ -1350,6 +1687,9 @@
.motion-board-grid {
grid-template-columns: 1fr;
}
+ .signature-storyboard {
+ grid-template-columns: 1fr;
+ }
.viewport.desktop {
margin-left: 24px;
}
@@ -1399,7 +1739,7 @@
Pendências de publicação: o número de WhatsApp exibido nos links é o
placeholder do deck e precisa ser substituído pelo número oficial; o CNPJ preserva o valor
já publicado, ainda sujeito à conferência do advogado eleitoral; as duas fotografias do caso
- SAMU estão marcadas como NEEDS ASSET.
+ SAMU e as thumbnails dinâmicas do board estão marcadas como NEEDS ASSET.
@@ -1434,11 +1774,11 @@
Jorge Solla · Deputado Federal · 1313
-
Um mandato do tamanho da Bahia
+
Mais Saúde, Mais Futuro
- Médico sanitarista. Participou da criação e da implantação do SAMU 192 e assinou as
- diretrizes do Brasil Sorridente. Leva o mandato aos 417 municípios, da saúde à
- educação.
+ Médico sanitarista. Criou o SAMU 192 e o Brasil Sorridente. Já comandou a saúde em
+ Vitória da Conquista, na Bahia e no Brasil, e leva o mandato aos 417 municípios, da
+ saúde à educação.
- SAMU na Bahiade 14 municípios, em 2007, para 233, em 2010
-
-
128.968 votosem 2022; 78,9% no interior
+
DIAPentre os 40 melhores da Câmara
+
Mais votadodo PT-BA em 2022
@@ -1468,6 +1806,22 @@
+
+
+ 3.333proposições apresentadas
+
+
+ 1.031discursos em Plenário
+
+
+ 3ºmandato de deputado federal
+
+
+ Dados mantidos por decisão da coordenação · rechecar na API da Câmara e no SitaqWeb
+ antes do go-live.
+
+
+
+
+
+ Quem cuida do SUS
+
O cuidado começa por quem mantém o sistema de pé.
+
+
+ Jornada justa também é uma pauta de saúde.
-
+
+
+
+ Educação e interior
+
Oportunidade pública também longe da capital.
+
+
+
- Bahia e democracia
-
Território, participação e soberania no mesmo projeto.
+ Bahia e soberania
+
Território e soberania no mesmo projeto.
+
+
+
+
+
+ Democracia
+
Instituições fortes e participação popular.
@@ -1545,7 +1938,7 @@
/>
-
+ 02 / 06
Valorizar quem cuida do SUS
@@ -1557,8 +1950,17 @@
enfermagem. Coautor da PEC 14/2021, aprovada pelo Senado em 14/07/2026, por 73
votos a 1; falta a promulgação.
+
+
+
-
+ 03 / 06
Descanso não é privilégio. É saúde pública
@@ -1575,7 +1977,7 @@
/>
-
+ 04 / 06
O interior não pode ficar para trás
@@ -1587,8 +1989,17 @@
implantação de campus da UFBA no interior e levou ao Ministério da Educação a
proposta de uma universidade federal na Chapada Diamantina.
+
+
+
-
+ 05 / 06
A Bahia no controle do que é da Bahia
@@ -1610,7 +2021,7 @@
/>
-
+ 06 / 06
Democracia sem meias-palavras
@@ -1622,11 +2033,55 @@
sim o ápice de uma escalada autoritária, e que não haverá anistia para
golpistas.
+
+
+
+
+
Por que essa eleição importa
+
+ Eleger deputado é coisa séria. O Congresso tem nas mãos vidas reais e o SUS.
+
+
+ É no Congresso que se define o orçamento do SUS, o piso da enfermagem, a recompra de
+ Mataripe e o fim da escala 6×1. Reeleger Lula não basta: é preciso eleger uma bancada
+ aliada.
+
+
+
+ Avanço
+
A saúde voltou a receber recursos
+
+ Com Lula, o Mais Médicos foi retomado e o novo PAC voltou a investir na estrutura
+ pública.
+
+
+
+ Obstáculo
+
As decisões passam pelo Congresso
+
+ Orçamento do SUS, piso da enfermagem, jornada de trabalho e soberania precisam de
+ maioria.
+
+
+
+ Escolha
+
É preciso eleger uma bancada aliada
+
O voto para deputado decide quem sustenta os avanços e enfrenta os bloqueios.
+
+
+
+
Trabalho público · caso documentado
@@ -1635,11 +2090,11 @@
- Papel. Secretário de Atenção à Saúde do Ministério da Saúde
- (2003–2005), quando o SAMU 192 foi criado; secretário de Saúde da Bahia (2007 a
- janeiro de 2014), quando o serviço foi regionalizado. Antes, em Vitória da
- Conquista (1999–2002), acompanhou o Resgate Médico, apontado como origem da ideia
- do SAMU.
+ Papel. Criou o piloto do SAMU 192 em Vitória da Conquista
+ (1999–2002), como secretário municipal de Saúde, e nacionalizou o programa
+ (2003–2005), como secretário de Atenção à Saúde do Ministério da Saúde, no governo
+ Lula. Depois, como secretário de Saúde da Bahia (2007 a janeiro de 2014),
+ regionalizou o serviço no estado.
Fonte. Jornal Grande Bahia, 03/01/2011 A TARDE,
@@ -1717,16 +2172,16 @@
- Secretário Municipal de Saúde de Vitória da Conquista; o Resgate Médico é
- apontado como origem da ideia do SAMU 192.
+ Secretário Municipal de Saúde de Vitória da Conquista: criou o piloto do SAMU
+ 192 na cidade, o Resgate Médico.
Município
- Secretário de Atenção à Saúde: participa da criação e da implantação do SAMU 192
- e assina as diretrizes do Brasil Sorridente.
+ Secretário de Atenção à Saúde: nacionalizou o SAMU 192 e criou o Brasil
+ Sorridente, assinando as diretrizes da Política Nacional de Saúde Bucal.
- Voz, imagem e material para levar a campanha adiante.
+ A caminhada, em tempo real
- Mídia só começa quando a pessoa pede. Coleções vazias não viram links quebrados nem
- vitrines de mentira.
+ Bastidores, caravanas e as lutas do mandato: conteúdo atualizado, direto das redes.
+
+
+ NEEDS ASSET · thumbnail dinâmica do snapshot
+
+ Instagram · há 4 horas
+
+ Plenária 1313 da Vitória: é hora de reunir, organizar e seguir na caminhada
+
+
+ Snapshot mais recente preservado; a mídia só é atualizada fora do carregamento
+ da página.
+
+
+
+
+ NEEDS ASSET · thumbnail dinâmica
+
+ Instagram · há 13 horas
+
Ontem foi dia de pegar a estrada e seguir pelo interior da Bahia
+
+
+
+ NEEDS ASSET · thumbnail dinâmica
+
+ YouTube · 25/09/2026
+
Plenária da Vitória 1313
+
0 visualizações
+
+
+
+ NEEDS ASSET · thumbnail dinâmica
+
+ YouTube · 24/09/2026
+
Debate: Política Fiscal e seus impactos na vida dos baianos
+
175 visualizações
+
+
+
+ NEEDS ASSET · capa publicada
+
+ Artigo · Política
+
+ “Bruno Reis foi covarde”, detonou Solla ao rebater o prefeito sobre saúde de
+ Salvador
+
+
17/08/2026
+
+
+
+
+ 1 de 5
+
+
+
+
+
+
+
+ Posts visíveis + snapshots elegíveis de YouTube e Instagram, ordenados por data.
+ Falha de feed mantém o último snapshot; zero itens esconde toda a seção.
+
- Board de atualizações, Jingles e Fotos não aparecem nesta composição
- enquanto estiverem vazios.
+ Jingles e Fotos não aparecem nesta composição enquanto estiverem vazios.
@@ -1949,11 +2465,11 @@
Jorge Solla · Deputado Federal · 1313
-
Um mandato do tamanho da Bahia
+
Mais Saúde, Mais Futuro
- Médico sanitarista. Participou da criação e da implantação do SAMU 192 e assinou as
- diretrizes do Brasil Sorridente. Leva o mandato aos 417 municípios, da saúde à
- educação.
+ Médico sanitarista. Criou o SAMU 192 e o Brasil Sorridente. Já comandou a saúde em
+ Vitória da Conquista, na Bahia e no Brasil, e leva o mandato aos 417 municípios, da
+ saúde à educação.
- SAMU na Bahia14 municípios em 2007; 233 em 2010
-
-
128.968 votos78,9% no interior em 2022
+
DIAPentre os 40 melhores da Câmara
+
Mais votadodo PT-BA em 2022
@@ -1982,6 +2496,19 @@
+
+
+ 3.333proposições apresentadas
+
+
+ 1.031discursos em Plenário
+
+
+ 3ºmandato de deputado federal
+
+
Rechecar antes do go-live.
+
+
+
+
+ 03 / 06
@@ -2055,6 +2591,15 @@
Universidade pública, instituto federal e escola de qualidade também longe da
capital. O lugar onde você nasce não pode decidir até onde você pode estudar.
+
+
+ 05 / 06
@@ -2084,11 +2629,52 @@
Em 8 de janeiro de 2025, afirmou que o 8 de Janeiro não foi um ato isolado, e
sim o ápice de uma escalada autoritária.
+
+
+
+
+
Por que essa eleição importa
+
+ Eleger deputado é coisa séria. O Congresso tem nas mãos vidas reais e o SUS.
+
+
+ É no Congresso que se define o orçamento do SUS, o piso da enfermagem, a recompra de
+ Mataripe e o fim da escala 6×1. Reeleger Lula não basta: é preciso eleger uma bancada
+ aliada.
+
+
+
+ Avanço
+
A saúde voltou a receber recursos
+
+ Com Lula, o Mais Médicos foi retomado e o novo PAC voltou a investir na estrutura
+ pública.
+
+
+
+ Obstáculo
+
As decisões passam pelo Congresso
+
Orçamento, piso da enfermagem, jornada e soberania precisam de maioria.
+
+
+ Escolha
+
É preciso eleger uma bancada aliada
+
O voto para deputado decide quem sustenta os avanços e enfrenta os bloqueios.
+
+
+
+
Trabalho público · caso documentado
@@ -2097,8 +2683,9 @@
- Papel. Participou da criação e implantação no Ministério da
- Saúde; regionalizou o serviço como secretário de Saúde da Bahia.
+ Papel. Criou o piloto do SAMU 192 em Vitória da Conquista e
+ nacionalizou o programa no Ministério da Saúde; depois, regionalizou o serviço
+ como secretário de Saúde da Bahia.
Secretário de Saúde de Vitória da Conquista: criou o piloto do SAMU 192.
Município
- Participa da criação e implantação do SAMU e assina as diretrizes do Brasil
- Sorridente.
+ Nacionalizou o SAMU 192 e criou o Brasil Sorridente, assinando as diretrizes da
+ Política Nacional de Saúde Bucal.
União
@@ -2172,11 +2759,53 @@
-
Conteúdo da campanha
-
- Voz e material para compartilhar.
-
-
Mídia começa com toque. Coleções vazias desaparecem.
+
Acompanhe de perto
+
A caminhada, em tempo real
+
+ Bastidores, caravanas e as lutas do mandato: conteúdo atualizado, direto das redes.
+
+
+
+ NEEDS ASSET · thumbnail dinâmica do snapshot
+
+ Instagram · há 4 horas
+
+ Plenária 1313 da Vitória: é hora de reunir, organizar e seguir na caminhada
+
+
1 de 5 · deslize para ver os próximos
+
+
+
+ NEEDS ASSET · thumbnail dinâmica
+
+ YouTube · 25/09/2026
+
Plenária da Vitória 1313
+
0 visualizações
+
+
+
+ NEEDS ASSET · capa publicada
+
+ Artigo · Política
+
+ “Bruno Reis foi covarde”, detonou Solla ao rebater o prefeito sobre saúde de
+ Salvador
+
+
17/08/2026
+
+
+
+
+ 1 de 5
+
+
+
+
+
+
+
Snapshot/lazy; falha mantém o último conteúdo e zero itens esconde a seção.
Ao centro da viewport, esta fotografia assume a área sticky por crossfade.
+
+
+
+
+
+
+
+ Scroll · capítulo 04 / 06
+
O interior não pode ficar para trás
+
+ Ao chegar ao capítulo 04, a imagem anterior sai e este ativo entra com escala
+ discreta.
+
+
+
+
+
+ Mapeamento 1:1: 01 Saúde · 02 Quem cuida · 03 Trabalho digno · 04
+ Educação e interior · 05 Bahia e soberania · 06 Democracia. No mobile e em movimento
+ reduzido, cada fotografia aparece inline no seu próprio capítulo.
+
Movimento completo
@@ -2345,8 +3019,8 @@
Board vazio
A seção não ocupa espaço na home.
- O board de atualizações e o link “Ver todos os conteúdos” não renderizam com zero peças.
- Na página da coleção, o vazio honesto permanece:
+ O board de atualizações e seus links de descoberta não renderizam com zero itens
+ visíveis. Na página da coleção, o vazio honesto permanece:
+ DEGRADED: a seção de jingles das cenas 01 e 02 é proposta do tier degradado
+ (opencode-go/deepseek-v4.1-flash) e não está certificada — exige sign-off
+ humano no gate/PR. O restante do artefato permanece o design S1 sujeito à certificação do
+ designer frontier.
+
@@ -2328,8 +2544,145 @@
+
+
+ DEGRADED — seção de jingles proposta pelo tier degradado
+ (opencode-go/deepseek-v4.1-flash). Design não certificado: pendente de
+ sign-off humano no gate/PR. O restante do artefato permanece o design S1 sujeito à
+ certificação do designer frontier.
+
+
+
+
A trilha da nossa caminhada
+
Cante, baixe e espalhe
+
+ Ouça a Rádio Jorge Solla 1313 e os jingles oficiais da campanha. Dê o play e
+ baixe o seu preferido para levar com você.
+
+
Um jingle por vez: ao tocar outro, o anterior para.
Nada toca sozinho: o play é sempre iniciado por você.
+
- Jingles e Fotos não aparecem nesta composição enquanto estiverem vazios.
+ Fail-closed: jingles e fotos só aparecem quando houver publicação
+ aprovada. A faixa some sem jingle publicado e “Fotos” entra na descoberta do footer
+ apenas com fotos aprovadas pelo contrato C233.
+ DEGRADED — seção de jingles proposta pelo tier degradado
+ (opencode-go/deepseek-v4.1-flash). Design não certificado: pendente de
+ sign-off humano no gate/PR. O restante do artefato permanece o design S1 sujeito à
+ certificação do designer frontier.
+
+
+
+
A trilha da nossa caminhada
+
Cante, baixe e espalhe
+
+ Ouça a Rádio Jorge Solla 1313 e os jingles oficiais da campanha. Dê o play e
+ baixe o seu preferido para levar com você.
+
+
Um jingle por vez: ao tocar outro, o anterior para.
Nada toca sozinho: o play é sempre iniciado por você.
+
+
+ Fail-closed: jingles e fotos só aparecem com publicação aprovada. Sem
+ jingle publicado a faixa some; “Fotos” só entra na descoberta do footer com fotos
+ aprovadas pelo contrato C233.
+