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 + + + + + + + + + +
+

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.

+
+
+ + +
+
+
+

Jorge Solla · Deputado Federal · 1313

+

Um mandato do tamanho da Bahia

+

+ 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
+
+
+
+ Jorge Solla sorrindo, de blazer azul e camisa do PT +
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. +

+
+ +
+
+ 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. +

+
+ Jorge Solla em agenda pública de defesa do SUS +
+
+
+ 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. +

+
+ Jorge Solla em plenário defendendo direitos de quem trabalha +
+
+
+ 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. +

+
+ Paisagem da Bahia durante mobilização popular +
+
+
+ 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. +

+
+ +
    +
  1. + +

    Nasce em Salvador, em 11 de abril.

    + Origem +
  2. +
  3. + +

    + 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 +
  4. +
  5. + +

    Forma-se em Medicina pela UFBA e participa da fundação do PT na Bahia.

    + Formação +
  6. +
  7. + +

    Residência em Medicina Social pela UFBA/Inamps.

    + Formação +
  8. +
  9. + +

    Torna-se médico do quadro da UFBA e conclui o mestrado em Saúde Coletiva.

    + Formação +
  10. +
  11. + +

    + 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 +
  12. +
  13. + +

    + 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 +
  14. +
  15. + +

    + Secretário de Saúde da Bahia nos dois mandatos de Jaques Wagner; conclui o + doutorado em Clínica Médica em 2009. +

    + Estado +
  16. +
  17. + +

    + Toma posse como deputado federal pela Bahia; foi eleito em 2014 com 125.159 + votos. +

    + Câmara +
  18. +
  19. + +

    + 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 +
  20. +
+
+
+ +
+

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. +

+
+
+ Jorge Solla em retrato usado como poster do vídeo da trajetória +
+ +

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. +

+ + Ouvir agora +
+
+

Para compartilhar

+

Conteúdos da campanha

+

+ As primeiras peças estão a caminho. Enquanto isso, faça seu card e mostre que + você está com Solla. +

+ Fazer meu card +
+
+
+

+ Board de atualizações, Jingles e Fotos não aparecem nesta composição + enquanto estiverem vazios. +

+
+ +
+
+

Apoie e acompanhe

+

Receba as novidades da campanha

+

Deixe seu nome, WhatsApp e cidade para acompanhar a caminhada de perto.

+ Falar com a campanha no WhatsApp +
+
+
+ +
+
+ +
+
+ Digite para buscar o seu município. +
+ + +

+ Ao enviar, você autoriza a campanha a guardar estes dados para falar com você pelo + WhatsApp e enviar novidades, conforme a Política de Privacidade. +

+
+
+
+ +
+ + +
+
+
+ +
+
+

Cena 02 · Fluxo móvel · 390 px

+

+ Hero real, capítulos inline, evidência, trajetória, mídia e captação com alvos de 44 px. +

+
+
+ +
+
+
+

Jorge Solla · Deputado Federal · 1313

+

Um mandato do tamanho da Bahia

+

+ 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
+
+
+
+ Jorge Solla sorrindo, de blazer azul e camisa do PT +
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. +

+
+ Jorge Solla em agenda pública de defesa do SUS +
+
+
+ 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. +

+
+ Jorge Solla em plenário defendendo direitos de quem trabalha +
+
+
+ 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. +

+
+ Paisagem da Bahia durante mobilização popular +
+
+
+ 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. +

+
+ +
    +
  1. + +

    Nasce em Salvador.

    + Origem +
  2. +
  3. + +

    Forma-se em Medicina pela UFBA e participa da fundação do PT na Bahia.

    + Formação +
  4. +
  5. + +

    Secretário de Saúde de Vitória da Conquista.

    + Município +
  6. +
  7. + +

    + Participa da criação e implantação do SAMU e assina as diretrizes do Brasil + Sorridente. +

    + União +
  8. +
  9. + +

    Secretário de Saúde da Bahia.

    + Estado +
  10. +
  11. + +

    + Deputado federal pela Bahia; titular da Comissão de Saúde desde março de 2023. +

    + Câmara +
  12. +
+
+
+ +
+

Conteúdo da campanha

+

+ Voz e material para compartilhar. +

+

Mídia começa com toque. Coleções vazias desaparecem.

+
+
+ Jorge Solla em retrato usado como poster do vídeo da trajetória +
+ +

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. +

+ Ouvir agora +
+
+

Para compartilhar

+

Conteúdos da campanha

+

+ As primeiras peças estão a caminho. Enquanto isso, faça seu card e mostre que + você está com Solla. +

+ Fazer meu card +
+
+
+
+ +
+
+

Apoie e acompanhe

+

Receba as novidades da campanha

+

Deixe seu nome, WhatsApp e cidade para acompanhar a caminhada de perto.

+ Falar no WhatsApp +
+
+
+ +
+
+ +
+
+ Digite para buscar o seu município. +
+ +
+
+
+
+ + +
+
+
+ +
+
+

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: +

+ + Fazer meu card +
+
+ Descoberta fail-closed +

Sem jingles, peças ou fotos, os links somem.

+

+ 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. +

+ +
+
+ Consentimento recusado +

Sem consentimento, nenhum dado é guardado.

+
+

+ Sem o seu consentimento, não guardamos seus dados. Você pode falar com a campanha pelo + WhatsApp quando quiser. +

+ Falar no WhatsApp +
+
+
+ Fallback de mídia +

A narrativa não quebra junto com a imagem.

+

+ 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. +

+ +
+
+
+ + + + 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.

+
+ Jorge Solla em retrato da campanha +
-
+
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.

+
+ Jerônimo Rodrigues em ativo publicado da campanha +
-
+
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.

+
+ Lula em ativo publicado da campanha +
+
+

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.

    União
  • @@ -1763,14 +2218,76 @@ class="media-zone section-shell" aria-labelledby="desktop-media-title" > -

    Conteúdo da campanha

    +

    Acompanhe de perto

    - 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 +
    + 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 +
    + + +
    +
    +

    - 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.

    +
    +
    +
    + Jorge Solla em retrato da campanha +
    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.

    +
    + Jerônimo Rodrigues em ativo publicado da campanha +
    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.

    +
    + Lula em ativo publicado da campanha +
    +
    +

    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.

    Fonte.
    JGB, 03/01/2011 · A TARDE, 14/03/2025 @@ -2144,14 +2731,14 @@

  • -

    Secretário de Saúde de Vitória da Conquista.

    +

    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 +
    + 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 +
    + + +
    +
    +

    Contrato de movimento

    Capítulos que avançam. Evidência que permanece.

    +
    +
    +
    + Fotografia exibida no capítulo 2 +
    +
    + Scroll · capítulo 02 / 06 +

    Valorizar quem cuida do SUS

    +

    Ao centro da viewport, esta fotografia assume a área sticky por crossfade.

    +
    +
    +
    +
    + Fotografia diferente exibida no capítulo 4 +
    +
    + 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 — 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.

    +
    + Ver todos os jingles +
    +
    +
    +
    + Capa oficial do jingle Forró +
    +
    + Forró +

    Jorge Solla 1313

    +

    feat. Felipe Forrozeiro

    +

    + Pronto para tocarEm reprodução +

    + ↓ Baixar MP3 +
    +
    +
    +
    + Capa oficial do jingle Axé +
    +
    + Axé +

    Jorge Solla 1313

    +

    feat. Nagib Barroso

    +

    + Pronto para tocarEm reprodução +

    + ↓ Baixar MP3 +
    +
    +
    +
    + Capa oficial do jingle Pagodão +
    +
    + Pagodão +

    Jorge Solla 1313

    +

    feat. É O MT

    +

    + Pronto para tocarEm reprodução +

    + ↓ Baixar MP3 +
    +
    +
    +

    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.

    @@ -2406,6 +2759,7 @@ @@ -2843,6 +3197,146 @@ +
    +

    + 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.

    +
    + Ver todos os jingles +
    +
    +
    +
    + Capa oficial do jingle Forró +
    +
    + Forró +

    Jorge Solla 1313

    +

    feat. Felipe Forrozeiro

    +

    + Pronto para tocarEm reprodução +

    + ↓ Baixar MP3 +
    +
    +
    +
    + Capa oficial do jingle Axé +
    +
    + Axé +

    Jorge Solla 1313

    +

    feat. Nagib Barroso

    +

    + Pronto para tocarEm reprodução +

    + ↓ Baixar MP3 +
    +
    +
    +
    + Capa oficial do jingle Pagodão +
    +
    + Pagodão +

    Jorge Solla 1313

    +

    feat. É O MT

    +

    + Pronto para tocarEm reprodução +

    + ↓ Baixar MP3 +
    +
    +
    +

    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. +

    @@ -2904,6 +3398,7 @@

    Navegue

    @@ -3109,6 +3604,32 @@ document.querySelectorAll('form').forEach((form) => { form.addEventListener('submit', (event) => event.preventDefault()) }) + + // Interação mínima de apresentação dos jingles: play/pausa visual e um por vez. + document.querySelectorAll('.jingle-list').forEach((list) => { + const items = list.querySelectorAll('.jingle-item') + items.forEach((item) => { + const control = item.querySelector('.jingle-play') + if (!control) return + control.addEventListener('click', () => { + const wasPlaying = item.dataset.state === 'playing' + const rhythmOf = (node) => + node.querySelector('.jingle-rhythm')?.textContent?.trim() || 'jingle' + items.forEach((other) => { + const otherControl = other.querySelector('.jingle-play') + other.dataset.state = 'stopped' + if (!otherControl) return + otherControl.setAttribute('aria-pressed', 'false') + otherControl.setAttribute('aria-label', `Tocar jingle ${rhythmOf(other)}`) + }) + if (!wasPlaying) { + item.dataset.state = 'playing' + control.setAttribute('aria-pressed', 'true') + control.setAttribute('aria-label', `Pausar jingle ${rhythmOf(item)}`) + } + }) + }) + }) From f0c735c077c2d142cbb3721b46d606be22c51155 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Mon, 28 Sep 2026 08:47:28 -0300 Subject: [PATCH 5/7] docs(S5): wizard do kit de apoiador (artefato) + certifica a faixa de jingles do S1 --- .../2026-09-28-redesign-site-publico-s1.md | 2 +- docs/plans/kit-apoiador-wizard-ui-design.html | 1480 +++++++++++++++++ .../site-publico-campanha-home-ui-design.html | 58 +- 3 files changed, 1483 insertions(+), 57 deletions(-) create mode 100644 docs/plans/kit-apoiador-wizard-ui-design.html 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 c4ed6b36..1c9711bf 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 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. +**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. A faixa de jingles da home nasceu no tier degradado numa primeira passada (a cota do frontier esgotou no meio do lote) e foi **certificada pelo `openai/gpt-5.6-sol`** na passada seguinte, com as marcações `DEGRADED` removidas. O mesmo lote entregou o artefato da fatia S5 — `docs/plans/kit-apoiador-wizard-ui-design.html` — com o wizard do kit de apoio (passos nome → foto de perfil → dobradinha → kit completo, mais a descoberta de selfie C234 só quando disponível), sobre o estúdio `/cards` existente sem duplicar o renderer: peças inválidas nunca entram no download, foto nunca sai do aparelho, `?model=`/`#cards` preservados, com kit vazio/parcial/cheio, erros recuperáveis (arquivo, cutout, nome longo, busca sem resultado), foco/teclado/reduced-motion e a ação de baixar o kit com o transporte em lote deixado como decisão de implementação. 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/kit-apoiador-wizard-ui-design.html b/docs/plans/kit-apoiador-wizard-ui-design.html new file mode 100644 index 00000000..037294e1 --- /dev/null +++ b/docs/plans/kit-apoiador-wizard-ui-design.html @@ -0,0 +1,1480 @@ + + + + + + + Design S5 — Wizard do kit de apoiador + + + + + + + +
    Design tier: openai/gpt-5.6-sol · frontier · gate humano obrigatório
    +
    +

    S5 · novo caminho sobre o estúdio existente

    +

    Um kit inteiro.
    Uma sessão só.

    +

    + O wizard reúne nome, foto e dobradinha sem criar outro renderer. Cada peça continua + obedecendo às regras do modelo original; o kit só leva o que está válido. +

    +
    +
    + 01 +

    É uma entrada a mais

    +

    + A galeria de 6 modelos, ?model=<id> e #cards continuam + intactos. O wizard não substitui o compositor compartilhado. +

    +
    +
    + 02 +

    Privado por padrão

    +

    + Nome, foto, recorte e escolha ficam na sessão e no aparelho. Voltar preserva o trabalho; + recarregar e outra sessão ficam fora do escopo. +

    +
    +
    + 03 +

    Só baixa o que está pronto

    +

    + Nome longo, foto inválida e dobradinha incompleta nunca viram arte cortada ou peça + vazia. +

    +
    +
    +

    + † Pendente de revisão de voz: o símbolo marca microcopy nova do wizard. + Literais existentes do estúdio e do deck aparecem sem marca. +

    +
    + +
    +
    +

    Cena 01 · Fluxo completo desktop · 1280 px

    +

    Quatro passos visíveis, um CTA primário por passo e as 6 peças válidas no fim.

    +
    +
    +
    + Jorge SollaVoltar aos modelos +
    +
    +
    +

    Faça parte

    +

    Monte seu kit de apoio†

    +

    + Escolha um modelo, coloque seu nome ou sua foto e baixe seu card. Compartilhe com sua + gente e fortaleça nossa caminhada. +

    +
    + +
    + +
    +
    +
    +
    + Prévia do card com nomeMARIA
    DO CARMO
    Prévia em tempo real +
    +
    +
    + Passo 1 de 4 · obrigatório para peças com nome +

    Como você é chamado?

    +

    + O nome aparece em caixa alta, encolhe quando necessário e pode ocupar 2 linhas. + Nunca é cortado em silêncio. +

    +
    + +

    + Use seu primeiro nome ou o nome pelo qual as pessoas conhecem você. +

    +
    +

    + Seu nome e sua foto são processados apenas no seu aparelho e não são enviados para + nós. +

    +
    + Sair do passo a passo† +
    +
    +
    + +
    +
    +
    + Prévia do card Time de vocêRecorte no aparelho +
    +
    +
    + Passo 2 de 4 · opcional +

    Escolha sua foto de perfil†

    +

    Para um recorte melhor, escolha uma foto nítida, de frente e com fundo simples.

    +
    +
    + Sua foto de busto +

    O recorte e o enquadramento acontecem no seu aparelho.

    +
    + +
    +
    +
    + Zoom +
    +
    +
    + Harmonizar cores +

    + Ajusta o brilho e as cores da sua foto para combinar com as fotos do card. +

    +
    +
    +

    Sua foto fica neste aparelho e não é enviada para nós.

    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + Prévia da dobradinha com deputado estadual53 opções reais +
    +
    +
    + Passo 3 de 4 · opcional +

    Escolha sua dobradinha†

    +

    + O estadual escolhido entra apenas nas peças que usam dobradinha. A colinha recebe + nome e 5 dígitos; o card usa a arte oficial correspondente. +

    +
    + +
    53 estaduais · use ↑ ↓ e Enter para escolher
    +
    + +
    +
    +

    + A escolha é processada neste aparelho. Nenhum nome, foto ou cadastro é solicitado. +

    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + Prévia da colinha personalizadaKit pronto +
    +
    +
    + Passo 4 de 4 · somente peças válidas +

    Seu kit está pronto para compartilhar†

    +

    + Revise as peças. Você pode baixar uma por vez ou iniciar a ação do kit completo. +

    +
    +
    + Card com nomeCard com seu nomePronto +
    +
    + Moldura quadradaMoldura quadradaPronta +
    +
    + Moldura verticalMoldura verticalPronta +
    +
    + Time de vocêTime de vocêPronto +
    +
    + Time do estadualTime do estadualPronto +
    +
    + Minha colinhaMinha colinhaPronta +
    +
    +
    +
    + 6 de 6 peças prontas† +

    Arquivos individuais mantêm card-jorge-solla-<id>.png.

    +
    + +
    +

    + A forma de empacotar o kit é decisão de implementação. Este gate fixa a ação, a + hierarquia e a seleção somente de peças válidas. Os eventos + abertura|download continuam com telemetria anônima. +

    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Cena 02 · Fluxo completo mobile · 390 px

    +

    Drawer em fluxo, trabalho preservado ao voltar e CTA único no rodapé de cada passo.

    +
    +
    +
    + Jorge SollaModelos +
    +
    +
    +
    + 1 de 4 · Nome +

    Como você é chamado?

    +
    +
    +
    + Prévia do card com nomeMARIA
    DO CARMO
    +
    +
    + +
    +

    + Seu nome e sua foto são processados apenas no seu aparelho e não são enviados para + nós. +

    +
    + +
    +
    +
    +
    +
    + 2 de 4 · Foto opcional +

    Escolha sua foto†

    +
    +
    +
    + Prévia do Time de você +
    +
    +
    + Sua foto de busto +

    Foto nítida, de frente e com fundo simples.

    +
    + +
    +

    Sua foto fica neste aparelho e não é enviada para nós.

    +
    + +
    + +
    +
    +
    +
    + 3 de 4 · Dobradinha opcional +

    Escolha seu estadual†

    +
    +
    +
    + +
    53 estaduais · use ↑ ↓ e Enter
    +
    + +
    +
    +

    + A escolha é processada neste aparelho. Nenhum nome, foto ou cadastro é solicitado. +

    +
    + +
    +
    +
    +
    +
    + 4 de 4 · Kit +

    6 peças prontas†

    +
    +
    +
    +
    + NomePronto +
    +
    + PerfilPronto +
    +
    + TimePronto +
    +
    + ColinhaPronta +
    +
    + +

    Somente peças válidas entram na ação do kit.

    +
    +
    +
    +
    +
    + +
    +
    +

    Cena 03 · Erros recuperáveis

    +

    Arquivo inválido, recorte indisponível, nome longo e busca sem resultado.

    +
    +
    +
    + Arquivo inválido +

    Não foi possível usar esta foto

    +

    O trabalho anterior continua na sessão; o erro fica junto da escolha de arquivo.

    +
    + Escolha outra imagem e tente novamente. +

    Sua foto fica neste aparelho e não é enviada para nós.

    +
    + +
    +
    + Recorte indisponível +

    Seu navegador está bloqueando o recorte de fundo.

    +

    + O recorte roda no seu aparelho e precisa de recursos que alguns navegadores com proteção + avançada desligam. +

    +
    + Você pode tentar de novo +

    Ative os recursos para este site ou abra a página em outro navegador.

    +
    + +
    +
    + Nome muito longo +

    Encurte o nome

    +

    + O sistema tentou caixa alta, redução e 2 linhas. Como ainda não coube com leitura + segura, nenhuma arte é gerada. +

    +
    + Não foi possível encaixar esse nome no card. +

    Use um nome mais curto, como você é chamado.

    +
    + +
    +
    + Busca · zero resultado +

    Nenhum estadual encontrado.

    +

    + A busca ignora acentos e maiúsculas. Teclado continua no campo; Escape fecha e devolve o + foco ao gatilho. +

    +
    + Buscar estadual
    “nome inexistente”

    Nenhum estadual + encontrado. +
    + +
    +
    +
    + +
    +
    +

    Cena 04 · Kit vazio, parcial e cheio

    +

    O download nunca inclui arte incompleta.

    +
    +
    +
    + 0 +

    Kit vazio

    +

    Nome ausente ou inválido. A ação principal permanece bloqueada.

    +
      +
    • Card com nome aguarda nome
    • +
    • Peças com foto aguardam foto
    • +
    • Dobradinhas aguardam estadual
    • +
    + +
    +
    + 4 +

    Kit parcial

    +

    Nome e foto válidos; dobradinha foi pulada. Só 4 peças entram.

    +
      +
    • Card com nome pronto
    • +
    • 2 molduras prontas
    • +
    • Time de você pronto
    • +
    • Time do estadual não incluído
    • +
    • Minha colinha não incluída
    • +
    + +
    +
    + 6 +

    Kit completo

    +

    Nome, foto e estadual válidos. Todas as peças estão disponíveis.

    +
      +
    • Card com nome pronto
    • +
    • 2 molduras prontas
    • +
    • Time de você pronto
    • +
    • Time do estadual pronto
    • +
    • Minha colinha pronta
    • +
    + +
    +
    +
    + +
    +
    +

    Cena 05 · Selfie opcional, foco e movimento reduzido

    +

    Consentimentos separados, teclado completo e nenhuma dependência de animação.

    +
    +
    +
    +

    Encontrar fotos é outra ação†

    +

    + Esta descoberta só aparece quando C234 estiver disponível. A foto enviada para criar o + card não autoriza busca por selfie nem é reaproveitada silenciosamente. +

    +
    + Quer encontrar suas fotos da campanha?† +

    Comece uma busca separada, com explicação e consentimento próprios.

    + Conhecer a busca por selfie† +
    +

    Se C234 estiver indisponível, este bloco inteiro não renderiza.

    +
    +
    +

    Teclado, foco e movimento reduzido

    +
      +
    • Enter seleciona estadual; ↑ ↓ navegam; Escape fecha e devolve foco.
    • +
    • Arraste da foto tem botões de direção e controle de zoom equivalentes.
    • +
    • Ao voltar, foco retorna ao controle que abriu o passo.
    • +
    • Erros são anunciados inline e o foco retorna ao campo que precisa de correção.
    • +
    • + prefers-reduced-motion: sem rolagem suave, entradas ou transições; a + ordem e o conteúdo não mudam. +
    • +
    +
    +

    Foco visível

    + +
    +
    +
    +
    + +
    +

    + NEEDS ASSET: a foto do visitante nas prévias é conteúdo da sessão, não + ativo de campanha. Todo o restante usa apenas os masters e exemplos oficiais existentes em + public/cards/. +

    +

    + Decisão pendente: mecanismo de “baixar o kit” — o artefato fixa a ação e o + conjunto válido, não escolhe ZIP, múltiplos downloads ou outro transporte. +

    +

    + Voz: toda string marcada com † passa por solla-comunicacao na + implementação. Literais de privacidade e erros existentes permanecem intactos. +

    +
    + + diff --git a/docs/plans/site-publico-campanha-home-ui-design.html b/docs/plans/site-publico-campanha-home-ui-design.html index 5635e6d5..ff876b3c 100644 --- a/docs/plans/site-publico-campanha-home-ui-design.html +++ b/docs/plans/site-publico-campanha-home-ui-design.html @@ -1080,29 +1080,6 @@ font-weight: 750; text-underline-offset: 4px; } - .degraded-section { - outline: 2px dashed rgb(162 28 28 / 45%); - outline-offset: -8px; - } - .degraded-banner { - margin: 0 0 30px; - padding: 12px 14px; - background: #fffbe0; - border: 1px dashed var(--pt-red); - color: var(--pt-red-dark); - font-size: 0.67rem; - line-height: 1.6; - } - .degraded-banner strong { - color: var(--pt-red); - font-family: var(--font-display); - letter-spacing: 0.08em; - } - .degraded-banner code { - padding: 1px 4px; - background: rgb(162 28 28 / 8%); - font-size: 0.64rem; - } .jingle-play svg { width: 18px; height: 18px; @@ -1623,11 +1600,6 @@ grid-template-columns: 124px 1fr; scroll-snap-align: start; } - .mobile .degraded-banner { - margin: 0 20px 22px 0; - padding: 10px 12px; - font-size: 0.63rem; - } .mobile .jingles-note { padding-right: 20px; } @@ -1951,12 +1923,6 @@ já publicado, ainda sujeito à conferência do advogado eleitoral; as duas fotografias do caso SAMU e as thumbnails dinâmicas do board estão marcadas como NEEDS ASSET.

    -

    - 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. -

    @@ -2544,17 +2510,7 @@ -
    -

    - 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

    @@ -3197,17 +3153,7 @@
    -
    -

    - 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

    From f01e1a146ac9009f556d2111ae298a9d12d8b419 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Mon, 28 Sep 2026 09:20:18 -0300 Subject: [PATCH 6/7] =?UTF-8?q?docs(S5):=20construtor=20fluido=20do=20kit?= =?UTF-8?q?=20na=20home=20(substitui=20o=20wizard=20em=20p=C3=A1gina)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DESIGN.md | 2 + docs/campanha/redesign-site-publico.md | 82 +- .../2026-09-28-redesign-site-publico-s1.md | 2 +- docs/plans/kit-apoiador-home-ui-design.html | 1133 +++++++++++++ docs/plans/kit-apoiador-wizard-ui-design.html | 1480 ----------------- .../site-publico-campanha-home-ui-design.html | 537 +++++- 6 files changed, 1711 insertions(+), 1525 deletions(-) create mode 100644 docs/plans/kit-apoiador-home-ui-design.html delete mode 100644 docs/plans/kit-apoiador-wizard-ui-design.html diff --git a/DESIGN.md b/DESIGN.md index a1d827fb..087f520d 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -294,6 +294,8 @@ This file is the living owner of Teqo's visual decisions — a working document, **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. +**Embedded support-kit builder (S5, 2026-09-28).** Personalization on the public campaign home is one continuous, progressively disclosed section inside `#cards`, not a numbered wizard or a separate funnel. Name begins the live preview; optional photo and dobradinha appear as inline invitations; a kit tray accumulates only valid pieces and never covers content or focus. Desktop pairs a sticky live preview with the scrolling controls; mobile keeps previews and the tray inline. The full `/cards` studio remains the owner of the six models and deep links. This keeps the action inside the home’s editorial rhythm, reduces modal/context switching, and makes optional inputs feel additive instead of required. + 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 index 5af5039c..b3664fac 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 | 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 | -| 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 | Construtor fluido do kit na home (extensão) | `CardsStudio`/`CardComposer` (dono) | S5 | R | Uma superfície contínua e progressiva na seção `#cards` da home (sem wizard/passos): prévia viva, foto e dobradinha como convites inline, bandeja só com peças válidas, downloads individual/kit; foto nunca sai do browser; `?model=` e `/cards` preservados; sem persistência silenciosa | +| 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 | +| 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) — 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) | +| 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** | Construtor fluido do kit de apoio na home (21–22) | S1 | M | artefato próprio (seção `#cards`; estúdio `/cards` segue dono dos modelos) | +| **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, 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 1c9711bf..bde08dfd 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 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. A faixa de jingles da home nasceu no tier degradado numa primeira passada (a cota do frontier esgotou no meio do lote) e foi **certificada pelo `openai/gpt-5.6-sol`** na passada seguinte, com as marcações `DEGRADED` removidas. O mesmo lote entregou o artefato da fatia S5 — `docs/plans/kit-apoiador-wizard-ui-design.html` — com o wizard do kit de apoio (passos nome → foto de perfil → dobradinha → kit completo, mais a descoberta de selfie C234 só quando disponível), sobre o estúdio `/cards` existente sem duplicar o renderer: peças inválidas nunca entram no download, foto nunca sai do aparelho, `?model=`/`#cards` preservados, com kit vazio/parcial/cheio, erros recuperáveis (arquivo, cutout, nome longo, busca sem resultado), foco/teclado/reduced-motion e a ação de baixar o kit com o transporte em lote deixado como decisão de implementação. 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. +**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. A faixa de jingles da home nasceu no tier degradado numa primeira passada (a cota do frontier esgotou no meio do lote) e foi **certificada pelo `openai/gpt-5.6-sol`** na passada seguinte, com as marcações `DEGRADED` removidas. O mesmo lote entregou o artefato da fatia S5 — `docs/plans/kit-apoiador-home-ui-design.html` — com o **construtor fluido do kit de apoio dentro da home** (seção `#cards`, no ritmo editorial): uma superfície contínua e progressiva, sem wizard/passos, em que o nome inicia a prévia viva, foto e dobradinha aparecem como convites inline opcionais e a bandeja acumula só as peças válidas (downloads individual e do kit), com os 6 modelos do estúdio preservados em `/cards` e `?model=`/âncora `#cards` mantidos; a Seção `#cards` do artefato da home foi atualizada para essa composição. O artefato anterior de wizard em página separada foi **removido antes de qualquer aprovação** (superseded, sem twin). Estados cobertos: nome vazio/inválido, foto adicionada/reenquadrada, dobradinha, erros recuperáveis (arquivo, cutout, busca vazia), bandeja vazia/parcial/completa, foco/teclado/`prefers-reduced-motion` e o convite de selfie C234 como ação separada; o transporte do "Baixar kit" fica como decisão de implementação. 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/kit-apoiador-home-ui-design.html b/docs/plans/kit-apoiador-home-ui-design.html new file mode 100644 index 00000000..b8850e66 --- /dev/null +++ b/docs/plans/kit-apoiador-home-ui-design.html @@ -0,0 +1,1133 @@ + + + + + + + Design S5 — Construtor fluido do kit na home + + + + + + + +
    Design tier: openai/gpt-5.6-sol · frontier · gate humano obrigatório
    +
    +

    S5 · seção #cards da home

    +

    Começa com um nome.
    Vira um kit.

    +

    + Construtor contínuo dentro da home: prévia viva, convites opcionais e bandeja incremental. + Sem passos numerados, página paralela ou modal obrigatório. +

    +
    +
    + 01 +

    Fica no fluxo da home

    +

    + A seção nasce entre conteúdo e participação. A pessoa não troca de contexto para + começar. +

    +
    +
    + 02 +

    Opcional parece opcional

    +

    + Foto e dobradinha surgem como convites inline, não como campos pendentes de um + formulário longo. +

    +
    +
    + 03 +

    Validade é visível

    +

    + A bandeja cresce só com peças prontas; arte incompleta nunca é mascarada por um CTA. +

    +
    +
    +

    + † Pendente de revisão de voz: microcopy nova da seção. Literais do deck, + privacidade e erros existentes aparecem sem marca. +

    +
    + +
    +
    +

    Cena 01 · Seção completa desktop · 1280 px

    +

    No contexto da home; prévia sticky à esquerda, controles contínuos à direita.

    +
    +
    +
    ↑ Faixa anterior: jingles e conteúdo da campanha
    +
    +
    +

    Faça parte

    +

    Mostre que você está com Solla

    +

    + Escolha um modelo, coloque seu nome ou sua foto e baixe seu card. Compartilhe com sua + gente e fortaleça nossa caminhada. +

    +
    +
    + +
    +
    +

    Comece pelo seu nome†

    +

    + O texto usa caixa alta, redução e até 2 linhas. Se não couber com leitura segura, + nenhuma peça é criada. +

    + +

    + Seu nome e sua foto são processados apenas no seu aparelho e não são enviados para + nós. +

    +
    +
    +

    Quer sua foto?†

    +
    +
    + Foto adicionada†Arraste para reenquadrar ou use direção e zoom. +
    + +
    +

    Sua foto fica neste aparelho e não é enviada para nós.

    +
    +
    +

    Quer sua dobradinha?†

    +

    Escolha entre 53 estaduais. A arte de time e a colinha mudam juntas.

    +
    Julio Pinheiro 13999 · Trocar
    +

    + A escolha é processada neste aparelho. Nenhum nome, foto ou cadastro é solicitado. +

    +
    +
    +

    Sua bandeja†

    +

    Só peças válidas aparecem aqui.

    +
    +
    + Card com seu nomePronto +
    +
    + Moldura quadradaPronta +
    +
    + Moldura verticalPronta +
    +
    + Time de vocêPronto +
    +
    + Time do estadualPronto +
    +
    + Minha colinhaPronta +
    +
    + + Ver todos os modelos e o estúdio completo +
    +
    +
    +
    +
    ↓ Próxima seção: participação e WhatsApp
    +
    +
    + +
    +
    +

    Cena 02 · Seção mobile · 390 px

    +

    Prévia e bandeja inline; nada fixo cobre conteúdo ou foco.

    +
    +
    +
    ↑ Jingles
    +
    +
    +

    Faça parte

    +

    Mostre que você está com Solla

    +

    + Escolha um modelo, coloque seu nome ou sua foto e baixe seu card. Compartilhe com sua + gente e fortaleça nossa caminhada. +

    +
    +
    + +
    +
    +

    Comece pelo seu nome†

    + +

    + Seu nome e sua foto são processados apenas no seu aparelho e não são enviados para + nós. +

    +
    +
    +

    Quer sua foto?†

    +
    +
    + Foto opcional†Recorte e ajuste no aparelho. +
    + +
    +

    Sua foto fica neste aparelho e não é enviada para nós.

    +
    +
    +

    Quer sua dobradinha?†

    +
    +
    53 estaduaisBusca por nome e teclado.
    + +
    +
    +
    +

    Sua bandeja†

    +
    +
    + NomePronto +
    +
    + 2 perfisProntos +
    +
    + TimePronto +
    +
    + ColinhaPronta +
    +
    + + Ver todos os modelos e o estúdio completo +
    +
    +
    +
    +
    ↓ Participação
    +
    +
    + +
    +
    +

    Cena 03 · Estados de interação e erros

    +

    Divulgação progressiva com recuperação local.

    +
    +
    +
    + Nome vazio +

    A bandeja começa vazia

    +

    + O campo está disponível; nenhuma peça é tratada como pronta e “Baixar kit” permanece + bloqueado. +

    +
    + Seu nome +

    Comece digitando como você é chamado.†

    +
    + +
    +
    + Digitando · inválido +

    Encurte o nome

    +

    A prévia tenta caixa alta, redução e 2 linhas antes de falhar.

    +
    + Não foi possível encaixar esse nome no card. +

    Use um nome mais curto, como você é chamado.

    +
    + +
    +
    + Foto adicionada +

    Prévia viva e reenquadrável

    +

    + Recorte local, zoom, direção e harmonização têm controles equivalentes para toque e + teclado. +

    +
    + Prévia do Time de você com foto +
    +
    +
    + Dobradinha escolhida +

    Julio Pinheiro · 13999

    +

    + As prévias “Time do estadual” e “Minha colinha” atualizam juntas. Trocar mantém nome e + foto da sessão. +

    +
    + Prévia da dobradinha +
    +
    +
    + Arquivo inválido +

    Não foi possível usar esta foto

    +
    + Escolha outra imagem e tente novamente. +

    Sua foto fica neste aparelho e não é enviada para nós.

    +
    + +
    +
    + Recorte indisponível +

    Seu navegador está bloqueando o recorte de fundo.

    +

    + Ative os recursos necessários para este site, tente outro navegador ou siga sem foto. +

    + +
    +
    + Busca sem resultado +

    Nenhum estadual encontrado.

    +
    + Buscar estadual +

    “nome inexistente”

    +

    Nenhum estadual encontrado.

    +
    + +
    +
    +
    + +
    +
    +

    Cena 04 · Bandeja vazia → parcial → completa

    +

    Somente peças válidas; individual e kit convivem sem prometer transporte.

    +
    +
    +
    + 0 +

    Bandeja vazia

    +

    Nome ausente ou inválido.

    +
      +
    • Nome aguarda
    • +
    • Foto opcional
    • +
    • Dobradinha opcional
    • +
    + +
    +
    + 4 +

    Bandeja parcial

    +

    Nome e foto válidos; dobradinha pulada.

    +
      +
    • Card com nome pronto
    • +
    • 2 molduras prontas
    • +
    • Time de você pronto
    • +
    • Estadual e colinha não incluídos
    • +
    + +
    +
    + 6 +

    Bandeja completa

    +

    Nome, foto e estadual válidos.

    +
      +
    • Card com nome pronto
    • +
    • 2 molduras prontas
    • +
    • Time de você pronto
    • +
    • Time do estadual pronto
    • +
    • Minha colinha pronta
    • +
    + +
    +
    +
    + +
    +
    +

    Cena 05 · Foco, teclado, movimento reduzido e selfie

    +

    Alternativas equivalentes e consentimentos separados.

    +
    +
    +
    +

    Encontrar fotos é outra ação†

    +

    + O convite só aparece quando C234 estiver disponível. A foto usada no card não autoriza + busca por selfie nem é reaproveitada silenciosamente. +

    +
    + Quer encontrar suas fotos da campanha?† +

    Comece uma ação separada, com explicação e consentimento próprios.

    + Conhecer a busca por selfie† +
    +
    +
    +

    Teclado, foco e movimento reduzido

    +
      +
    • Nome inválido mantém foco no campo e anuncia o erro inline.
    • +
    • ↑ ↓ e Enter operam o seletor; Escape fecha e devolve o foco.
    • +
    • Arraste da foto tem botões de direção e zoom equivalentes.
    • +
    • + prefers-reduced-motion: sem transições; prévias e bandeja permanecem + inline. +
    • +
    +
    + Foco visível

    +
    +
    +
    +
    + +
    +

    + NEEDS ASSET: foto do visitante é conteúdo da sessão, não ativo versionado. + Masters e exemplos oficiais vêm de public/cards/. +

    +

    + Decisão pendente: o transporte de “Baixar kit”. O design fixa ação e + seleção válida; não escolhe ZIP. +

    +

    + Contratos preservados: #cards, `/cards`, + ?model=<id>, card-jorge-solla-<id>.png e telemetria + anônima abertura|download. +

    +
    + + diff --git a/docs/plans/kit-apoiador-wizard-ui-design.html b/docs/plans/kit-apoiador-wizard-ui-design.html deleted file mode 100644 index 037294e1..00000000 --- a/docs/plans/kit-apoiador-wizard-ui-design.html +++ /dev/null @@ -1,1480 +0,0 @@ - - - - - - - Design S5 — Wizard do kit de apoiador - - - - - - - -
    Design tier: openai/gpt-5.6-sol · frontier · gate humano obrigatório
    -
    -

    S5 · novo caminho sobre o estúdio existente

    -

    Um kit inteiro.
    Uma sessão só.

    -

    - O wizard reúne nome, foto e dobradinha sem criar outro renderer. Cada peça continua - obedecendo às regras do modelo original; o kit só leva o que está válido. -

    -
    -
    - 01 -

    É uma entrada a mais

    -

    - A galeria de 6 modelos, ?model=<id> e #cards continuam - intactos. O wizard não substitui o compositor compartilhado. -

    -
    -
    - 02 -

    Privado por padrão

    -

    - Nome, foto, recorte e escolha ficam na sessão e no aparelho. Voltar preserva o trabalho; - recarregar e outra sessão ficam fora do escopo. -

    -
    -
    - 03 -

    Só baixa o que está pronto

    -

    - Nome longo, foto inválida e dobradinha incompleta nunca viram arte cortada ou peça - vazia. -

    -
    -
    -

    - † Pendente de revisão de voz: o símbolo marca microcopy nova do wizard. - Literais existentes do estúdio e do deck aparecem sem marca. -

    -
    - -
    -
    -

    Cena 01 · Fluxo completo desktop · 1280 px

    -

    Quatro passos visíveis, um CTA primário por passo e as 6 peças válidas no fim.

    -
    -
    -
    - Jorge SollaVoltar aos modelos -
    -
    -
    -

    Faça parte

    -

    Monte seu kit de apoio†

    -

    - Escolha um modelo, coloque seu nome ou sua foto e baixe seu card. Compartilhe com sua - gente e fortaleça nossa caminhada. -

    -
    - -
    - -
    -
    -
    -
    - Prévia do card com nomeMARIA
    DO CARMO
    Prévia em tempo real -
    -
    -
    - Passo 1 de 4 · obrigatório para peças com nome -

    Como você é chamado?

    -

    - O nome aparece em caixa alta, encolhe quando necessário e pode ocupar 2 linhas. - Nunca é cortado em silêncio. -

    -
    - -

    - Use seu primeiro nome ou o nome pelo qual as pessoas conhecem você. -

    -
    -

    - Seu nome e sua foto são processados apenas no seu aparelho e não são enviados para - nós. -

    -
    - Sair do passo a passo† -
    -
    -
    - -
    -
    -
    - Prévia do card Time de vocêRecorte no aparelho -
    -
    -
    - Passo 2 de 4 · opcional -

    Escolha sua foto de perfil†

    -

    Para um recorte melhor, escolha uma foto nítida, de frente e com fundo simples.

    -
    -
    - Sua foto de busto -

    O recorte e o enquadramento acontecem no seu aparelho.

    -
    - -
    -
    -
    - Zoom -
    -
    -
    - Harmonizar cores -

    - Ajusta o brilho e as cores da sua foto para combinar com as fotos do card. -

    -
    -
    -

    Sua foto fica neste aparelho e não é enviada para nós.

    -
    - -
    - -
    -
    -
    -
    - -
    -
    -
    - Prévia da dobradinha com deputado estadual53 opções reais -
    -
    -
    - Passo 3 de 4 · opcional -

    Escolha sua dobradinha†

    -

    - O estadual escolhido entra apenas nas peças que usam dobradinha. A colinha recebe - nome e 5 dígitos; o card usa a arte oficial correspondente. -

    -
    - -
    53 estaduais · use ↑ ↓ e Enter para escolher
    -
    - -
    -
    -

    - A escolha é processada neste aparelho. Nenhum nome, foto ou cadastro é solicitado. -

    -
    - -
    - -
    -
    -
    -
    - -
    -
    -
    - Prévia da colinha personalizadaKit pronto -
    -
    -
    - Passo 4 de 4 · somente peças válidas -

    Seu kit está pronto para compartilhar†

    -

    - Revise as peças. Você pode baixar uma por vez ou iniciar a ação do kit completo. -

    -
    -
    - Card com nomeCard com seu nomePronto -
    -
    - Moldura quadradaMoldura quadradaPronta -
    -
    - Moldura verticalMoldura verticalPronta -
    -
    - Time de vocêTime de vocêPronto -
    -
    - Time do estadualTime do estadualPronto -
    -
    - Minha colinhaMinha colinhaPronta -
    -
    -
    -
    - 6 de 6 peças prontas† -

    Arquivos individuais mantêm card-jorge-solla-<id>.png.

    -
    - -
    -

    - A forma de empacotar o kit é decisão de implementação. Este gate fixa a ação, a - hierarquia e a seleção somente de peças válidas. Os eventos - abertura|download continuam com telemetria anônima. -

    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Cena 02 · Fluxo completo mobile · 390 px

    -

    Drawer em fluxo, trabalho preservado ao voltar e CTA único no rodapé de cada passo.

    -
    -
    -
    - Jorge SollaModelos -
    -
    -
    -
    - 1 de 4 · Nome -

    Como você é chamado?

    -
    -
    -
    - Prévia do card com nomeMARIA
    DO CARMO
    -
    -
    - -
    -

    - Seu nome e sua foto são processados apenas no seu aparelho e não são enviados para - nós. -

    -
    - -
    -
    -
    -
    -
    - 2 de 4 · Foto opcional -

    Escolha sua foto†

    -
    -
    -
    - Prévia do Time de você -
    -
    -
    - Sua foto de busto -

    Foto nítida, de frente e com fundo simples.

    -
    - -
    -

    Sua foto fica neste aparelho e não é enviada para nós.

    -
    - -
    - -
    -
    -
    -
    - 3 de 4 · Dobradinha opcional -

    Escolha seu estadual†

    -
    -
    -
    - -
    53 estaduais · use ↑ ↓ e Enter
    -
    - -
    -
    -

    - A escolha é processada neste aparelho. Nenhum nome, foto ou cadastro é solicitado. -

    -
    - -
    -
    -
    -
    -
    - 4 de 4 · Kit -

    6 peças prontas†

    -
    -
    -
    -
    - NomePronto -
    -
    - PerfilPronto -
    -
    - TimePronto -
    -
    - ColinhaPronta -
    -
    - -

    Somente peças válidas entram na ação do kit.

    -
    -
    -
    -
    -
    - -
    -
    -

    Cena 03 · Erros recuperáveis

    -

    Arquivo inválido, recorte indisponível, nome longo e busca sem resultado.

    -
    -
    -
    - Arquivo inválido -

    Não foi possível usar esta foto

    -

    O trabalho anterior continua na sessão; o erro fica junto da escolha de arquivo.

    -
    - Escolha outra imagem e tente novamente. -

    Sua foto fica neste aparelho e não é enviada para nós.

    -
    - -
    -
    - Recorte indisponível -

    Seu navegador está bloqueando o recorte de fundo.

    -

    - O recorte roda no seu aparelho e precisa de recursos que alguns navegadores com proteção - avançada desligam. -

    -
    - Você pode tentar de novo -

    Ative os recursos para este site ou abra a página em outro navegador.

    -
    - -
    -
    - Nome muito longo -

    Encurte o nome

    -

    - O sistema tentou caixa alta, redução e 2 linhas. Como ainda não coube com leitura - segura, nenhuma arte é gerada. -

    -
    - Não foi possível encaixar esse nome no card. -

    Use um nome mais curto, como você é chamado.

    -
    - -
    -
    - Busca · zero resultado -

    Nenhum estadual encontrado.

    -

    - A busca ignora acentos e maiúsculas. Teclado continua no campo; Escape fecha e devolve o - foco ao gatilho. -

    -
    - Buscar estadual
    “nome inexistente”

    Nenhum estadual - encontrado. -
    - -
    -
    -
    - -
    -
    -

    Cena 04 · Kit vazio, parcial e cheio

    -

    O download nunca inclui arte incompleta.

    -
    -
    -
    - 0 -

    Kit vazio

    -

    Nome ausente ou inválido. A ação principal permanece bloqueada.

    -
      -
    • Card com nome aguarda nome
    • -
    • Peças com foto aguardam foto
    • -
    • Dobradinhas aguardam estadual
    • -
    - -
    -
    - 4 -

    Kit parcial

    -

    Nome e foto válidos; dobradinha foi pulada. Só 4 peças entram.

    -
      -
    • Card com nome pronto
    • -
    • 2 molduras prontas
    • -
    • Time de você pronto
    • -
    • Time do estadual não incluído
    • -
    • Minha colinha não incluída
    • -
    - -
    -
    - 6 -

    Kit completo

    -

    Nome, foto e estadual válidos. Todas as peças estão disponíveis.

    -
      -
    • Card com nome pronto
    • -
    • 2 molduras prontas
    • -
    • Time de você pronto
    • -
    • Time do estadual pronto
    • -
    • Minha colinha pronta
    • -
    - -
    -
    -
    - -
    -
    -

    Cena 05 · Selfie opcional, foco e movimento reduzido

    -

    Consentimentos separados, teclado completo e nenhuma dependência de animação.

    -
    -
    -
    -

    Encontrar fotos é outra ação†

    -

    - Esta descoberta só aparece quando C234 estiver disponível. A foto enviada para criar o - card não autoriza busca por selfie nem é reaproveitada silenciosamente. -

    -
    - Quer encontrar suas fotos da campanha?† -

    Comece uma busca separada, com explicação e consentimento próprios.

    - Conhecer a busca por selfie† -
    -

    Se C234 estiver indisponível, este bloco inteiro não renderiza.

    -
    -
    -

    Teclado, foco e movimento reduzido

    -
      -
    • Enter seleciona estadual; ↑ ↓ navegam; Escape fecha e devolve foco.
    • -
    • Arraste da foto tem botões de direção e controle de zoom equivalentes.
    • -
    • Ao voltar, foco retorna ao controle que abriu o passo.
    • -
    • Erros são anunciados inline e o foco retorna ao campo que precisa de correção.
    • -
    • - prefers-reduced-motion: sem rolagem suave, entradas ou transições; a - ordem e o conteúdo não mudam. -
    • -
    -
    -

    Foco visível

    - -
    -
    -
    -
    - -
    -

    - NEEDS ASSET: a foto do visitante nas prévias é conteúdo da sessão, não - ativo de campanha. Todo o restante usa apenas os masters e exemplos oficiais existentes em - public/cards/. -

    -

    - Decisão pendente: mecanismo de “baixar o kit” — o artefato fixa a ação e o - conjunto válido, não escolhe ZIP, múltiplos downloads ou outro transporte. -

    -

    - Voz: toda string marcada com † passa por solla-comunicacao na - implementação. Literais de privacidade e erros existentes permanecem intactos. -

    -
    - - diff --git a/docs/plans/site-publico-campanha-home-ui-design.html b/docs/plans/site-publico-campanha-home-ui-design.html index ff876b3c..ebef4cb9 100644 --- a/docs/plans/site-publico-campanha-home-ui-design.html +++ b/docs/plans/site-publico-campanha-home-ui-design.html @@ -23,6 +23,7 @@ --ink: #221713; --muted: #705f58; --line: rgb(71 19 14 / 18%); + --field: rgb(71 19 14 / 26%); --blue: #184e92; --red-bright: #e4102f; --green: #009647; @@ -1116,6 +1117,264 @@ line-height: 1.5; } + .home-kit-builder { + padding: 112px 72px 126px; + background: var(--campaign-cream); + border-top: 1px solid var(--line); + } + .voice-mark { + color: #9b6500; + font-size: 0.7em; + vertical-align: super; + } + .home-kit-builder > header { + max-width: 780px; + } + .home-kit-builder > header h2 { + margin: 0; + font: 760 3.45rem/0.98 var(--font-display); + letter-spacing: -0.052em; + } + .home-kit-builder > header > p:last-child { + max-width: 650px; + margin: 22px 0 0; + color: var(--muted); + font-size: 0.9rem; + line-height: 1.65; + } + .home-builder-layout { + display: grid; + grid-template-columns: 42% 58%; + gap: 1px; + margin-top: 62px; + background: var(--line); + border: 1px solid var(--line); + } + .home-builder-preview { + position: relative; + padding: 38px; + background: var(--pt-red-dark); + color: white; + } + .home-builder-preview-inner { + position: sticky; + top: 24px; + } + .home-card-live { + position: relative; + width: 232px; + aspect-ratio: 3 / 4; + margin: 0 auto; + overflow: hidden; + border-radius: 10px; + box-shadow: 0 22px 52px rgb(0 0 0 / 30%); + } + .home-card-live img { + width: 100%; + height: 100%; + object-fit: cover; + } + .home-card-name { + position: absolute; + top: 30%; + left: 20%; + max-width: 65%; + color: #ffec01; + font: 850 1.05rem/0.95 var(--font-display); + text-transform: uppercase; + } + .home-live-label { + margin: 22px 0 0; + color: rgb(255 255 255 / 65%); + font-size: 0.66rem; + text-align: center; + } + .home-kit-mini { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 8px; + margin-top: 24px; + } + .home-kit-mini div { + min-height: 66px; + padding: 9px; + background: rgb(255 255 255 / 9%); + border: 1px solid rgb(255 255 255 / 14%); + color: rgb(255 255 255 / 62%); + font-size: 0.58rem; + line-height: 1.35; + } + .home-kit-mini div.ready { + color: white; + border-color: rgb(255 230 7 / 60%); + } + .home-builder-controls { + padding: 36px 42px 42px; + background: white; + } + .home-control-block { + padding: 28px 0; + border-top: 1px solid var(--line); + } + .home-control-block:first-child { + padding-top: 0; + border-top: 0; + } + .home-control-block h3 { + margin: 0; + font: 730 1.35rem/1.08 var(--font-display); + } + .home-control-block > p { + margin: 8px 0 0; + color: var(--muted); + font-size: 0.72rem; + line-height: 1.55; + } + .home-control-block label { + display: block; + margin-top: 18px; + font-size: 0.72rem; + font-weight: 750; + } + .home-control-block input { + width: 100%; + min-height: 48px; + margin-top: 8px; + padding: 0 13px; + border: 1px solid var(--field); + border-radius: 8px; + background: white; + color: var(--ink); + font-size: 1rem; + } + .home-inline-invite { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + margin-top: 16px; + padding: 16px; + background: var(--campaign-surface); + border: 1px dashed var(--field); + } + .home-inline-invite strong { + display: block; + font-size: 0.76rem; + } + .home-inline-invite span { + display: block; + margin-top: 4px; + color: var(--muted); + font-size: 0.65rem; + } + .home-inline-invite button, + .home-builder-download, + .home-piece-download { + min-height: 44px; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: 8px; + font-weight: 760; + } + .home-inline-invite button { + flex: 0 0 auto; + padding: 0 14px; + border: 1px solid var(--line); + background: white; + color: var(--pt-red); + font-size: 0.7rem; + } + .home-picker-selected { + display: flex; + min-height: 48px; + align-items: center; + margin-top: 14px; + padding: 0 13px; + border: 1px solid var(--field); + border-radius: 8px; + background: white; + font-size: 0.72rem; + font-weight: 700; + } + .home-picker-selected span { + margin-left: auto; + color: var(--muted); + font-size: 0.64rem; + } + .home-privacy { + margin: 13px 0 0; + color: var(--muted); + font-size: 0.64rem; + line-height: 1.5; + } + .home-tray { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + margin-top: 18px; + } + .home-tray article { + min-height: 108px; + padding: 12px; + background: var(--cream); + border: 1px solid var(--line); + } + .home-tray strong { + display: block; + font-size: 0.66rem; + line-height: 1.25; + } + .home-tray span { + display: block; + margin-top: 7px; + color: var(--green); + font-size: 0.6rem; + font-weight: 700; + } + .home-piece-download { + margin-top: 7px; + border: 0; + background: transparent; + color: var(--pt-red); + font-size: 0.62rem; + } + .home-tray-footer { + display: flex; + align-items: center; + justify-content: space-between; + gap: 14px; + margin-top: 14px; + padding: 15px; + background: var(--pt-red-dark); + color: white; + } + .home-tray-footer strong { + font: 740 0.86rem/1.2 var(--font-display); + } + .home-tray-footer p { + margin: 4px 0 0; + color: rgb(255 255 255 / 62%); + font-size: 0.59rem; + } + .home-builder-download { + padding: 0 16px; + border: 0; + background: white; + color: var(--pt-red-dark); + font-size: 0.7rem; + } + .home-studio-link { + min-height: 44px; + display: inline-flex; + align-items: center; + margin-top: 22px; + color: var(--pt-red); + font-size: 0.72rem; + font-weight: 750; + text-underline-offset: 4px; + } + .participation { display: grid; grid-template-columns: 42% 58%; @@ -1603,6 +1862,45 @@ .mobile .jingles-note { padding-right: 20px; } + .mobile .home-kit-builder { + padding: 82px 20px 90px; + } + .mobile .home-kit-builder > header h2 { + font-size: 2.5rem; + } + .mobile .home-builder-layout { + display: block; + margin-top: 42px; + } + .mobile .home-builder-preview { + padding: 28px 18px; + } + .mobile .home-builder-preview-inner { + position: static; + } + .mobile .home-card-live { + width: 176px; + } + .mobile .home-builder-controls { + padding: 28px 18px 32px; + } + .mobile .home-inline-invite { + align-items: flex-start; + flex-direction: column; + } + .mobile .home-inline-invite button { + width: 100%; + } + .mobile .home-tray { + grid-template-columns: 1fr 1fr; + } + .mobile .home-tray-footer { + align-items: stretch; + flex-direction: column; + } + .mobile .home-builder-download { + width: 100%; + } .mobile .participation { display: block; } @@ -2506,7 +2804,7 @@ As primeiras peças estão a caminho. Enquanto isso, faça seu card e mostre que você está com Solla.

    - Fazer meu card + Fazer meu card
    @@ -2642,6 +2940,128 @@

    +
    +
    +

    Faça parte

    +

    Mostre que você está com Solla

    +

    + Escolha um modelo, coloque seu nome ou sua foto e baixe seu card. Compartilhe com + sua gente e fortaleça nossa caminhada. +

    +
    +
    + +
    +
    +

    Comece pelo seu nome†

    +

    + O texto se ajusta em caixa alta e até 2 linhas. Se não couber com leitura + segura, nenhuma peça incompleta é criada. +

    + + +

    + Seu nome e sua foto são processados apenas no seu aparelho e não são enviados + para nós. +

    +
    +
    +

    Quer sua foto?†

    +

    + Opcional. O recorte, o enquadramento e a harmonização acontecem no aparelho. +

    +
    +
    + Foto adicionada†Arraste para reenquadrar ou use os controles de direção e zoom. +
    + +
    +

    Sua foto fica neste aparelho e não é enviada para nós.

    +
    +
    +

    Quer sua dobradinha?†

    +

    + Opcional. Escolha entre 53 estaduais; a arte de time e a colinha usam a opção + selecionada. +

    +
    Julio Pinheiro 13999 · Trocar
    +

    + A escolha é processada neste aparelho. Nenhum nome, foto ou cadastro é + solicitado. +

    +
    +
    +

    Sua bandeja†

    +

    Só peças válidas aparecem aqui. Baixe uma por vez ou use a ação do kit.

    +
    +
    + Card com seu nomePronto +
    +
    + Moldura quadradaPronta +
    +
    + Moldura verticalPronta +
    +
    + Time de vocêPronto +
    +
    + Time do estadualPronto +
    +
    + Minha colinhaPronta +
    +
    + + Ver todos os modelos e o estúdio completo +
    +
    +
    +
    +
    - Fazer meu card + Fazer meu card @@ -3285,6 +3705,117 @@

    +
    +
    +

    Faça parte

    +

    Mostre que você está com Solla

    +

    + Escolha um modelo, coloque seu nome ou sua foto e baixe seu card. Compartilhe com + sua gente e fortaleça nossa caminhada. +

    +
    +
    + +
    +
    +

    Comece pelo seu nome†

    +

    O card muda enquanto você digita.

    + +

    + Seu nome e sua foto são processados apenas no seu aparelho e não são enviados + para nós. +

    +
    +
    +

    Quer sua foto?†

    +
    +
    + Foto opcional†Recorte e ajuste no aparelho. +
    + +
    +

    Sua foto fica neste aparelho e não é enviada para nós.

    +
    +
    +

    Quer sua dobradinha?†

    +
    +
    + 53 estaduaisBusca por nome e navegação por teclado. +
    + +
    +

    + A escolha é processada neste aparelho. Nenhum nome, foto ou cadastro é + solicitado. +

    +
    +
    +

    Sua bandeja†

    +

    Só peças válidas aparecem aqui.

    +
    +
    + Card com nomePronto +
    +
    + 2 perfisProntos +
    +
    + TimePronto +
    +
    + ColinhaPronta +
    +
    + + Ver todos os modelos e o estúdio completo +
    +
    +
    +
    +

    Apoie e acompanhe

    @@ -3467,7 +3998,7 @@ “As primeiras peças estão a caminho. Enquanto isso, faça seu card e mostre que você está com Solla.”
    - Fazer meu card + Fazer meu card
    Descoberta fail-closed From cb1d5860838f801100b4c23c4c6b24e24c717fdb Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Mon, 28 Sep 2026 11:03:29 -0300 Subject: [PATCH 7/7] =?UTF-8?q?docs(S1):=20passada=20agressiva=20na=20home?= =?UTF-8?q?=20(conte=C3=BAdo=20=C2=A710=20+=20intera=C3=A7=C3=A3o/moviment?= =?UTF-8?q?o)=20=E2=80=94=20DEGRADED?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2026-09-28-redesign-site-publico-s1.md | 2 +- .../site-publico-campanha-home-ui-design.html | 2198 ++++++++++++++++- 2 files changed, 2093 insertions(+), 107 deletions(-) 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 bde08dfd..c609dc90 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 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. A faixa de jingles da home nasceu no tier degradado numa primeira passada (a cota do frontier esgotou no meio do lote) e foi **certificada pelo `openai/gpt-5.6-sol`** na passada seguinte, com as marcações `DEGRADED` removidas. O mesmo lote entregou o artefato da fatia S5 — `docs/plans/kit-apoiador-home-ui-design.html` — com o **construtor fluido do kit de apoio dentro da home** (seção `#cards`, no ritmo editorial): uma superfície contínua e progressiva, sem wizard/passos, em que o nome inicia a prévia viva, foto e dobradinha aparecem como convites inline opcionais e a bandeja acumula só as peças válidas (downloads individual e do kit), com os 6 modelos do estúdio preservados em `/cards` e `?model=`/âncora `#cards` mantidos; a Seção `#cards` do artefato da home foi atualizada para essa composição. O artefato anterior de wizard em página separada foi **removido antes de qualquer aprovação** (superseded, sem twin). Estados cobertos: nome vazio/inválido, foto adicionada/reenquadrada, dobradinha, erros recuperáveis (arquivo, cutout, busca vazia), bandeja vazia/parcial/completa, foco/teclado/`prefers-reduced-motion` e o convite de selfie C234 como ação separada; o transporte do "Baixar kit" fica como decisão de implementação. 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. +**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. A faixa de jingles da home nasceu no tier degradado numa primeira passada (a cota do frontier esgotou no meio do lote) e foi **certificada pelo `openai/gpt-5.6-sol`** na passada seguinte, com as marcações `DEGRADED` removidas. O mesmo lote entregou o artefato da fatia S5 — `docs/plans/kit-apoiador-home-ui-design.html` — com o **construtor fluido do kit de apoio dentro da home** (seção `#cards`, no ritmo editorial): uma superfície contínua e progressiva, sem wizard/passos, em que o nome inicia a prévia viva, foto e dobradinha aparecem como convites inline opcionais e a bandeja acumula só as peças válidas (downloads individual e do kit), com os 6 modelos do estúdio preservados em `/cards` e `?model=`/âncora `#cards` mantidos; a Seção `#cards` do artefato da home foi atualizada para essa composição. O artefato anterior de wizard em página separada foi **removido antes de qualquer aprovação** (superseded, sem twin). Estados cobertos: nome vazio/inválido, foto adicionada/reenquadrada, dobradinha, erros recuperáveis (arquivo, cutout, busca vazia), bandeja vazia/parcial/completa, foco/teclado/`prefers-reduced-motion` e o convite de selfie C234 como ação separada; o transporte do "Baixar kit" fica como decisão de implementação. Na revisão do humano, a home foi considerada fraca em conteúdo e interação; o deck ganhou o §10 — documentário expandido (5 casos: piso da enfermagem, Mais Médicos, Hemobrás, interiorização e emendas; 10 números com ano/fase/fonte; 3 citações literais com ocasião e data; território do §10.4; 14 marcos do §10.5) — e o artefato S1 recebeu uma passada **agressiva** com motor de movimento: hero cinematográfico (zoom-pan e reveal por máscara), capítulos documentais em scroll-scrub, contadores animados, mapa esquemático da Bahia com lista textual equivalente e legenda de fase, timeline que avança no scroll, pull-quotes, rail horizontal de mídia e micro-interações — tudo com fallback em `prefers-reduced-motion`, sem scroll hijacking/autoplay/cursor custom. **A cota do `openai/gpt-5.6-sol` esgotou durante o lote e essa passada saiu como `DEGRADED` (`opencode-go/deepseek-v4.1-flash`), marcada no artefato e no PR; exige sign-off humano e certificação do frontier antes do port** (o mapa é silhueta esquemática a trocar por topologia real). 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 ebef4cb9..25c87042 100644 --- a/docs/plans/site-publico-campanha-home-ui-design.html +++ b/docs/plans/site-publico-campanha-home-ui-design.html @@ -1927,6 +1927,66 @@ margin: 0 -20px; padding: 20px; } + .mobile .docu-case { + display: block; + padding: 40px 0; + } + .mobile .docu-photo { + position: static; + } + .mobile .docu-photo-frame { + height: 250px; + } + .mobile .docu-body h3 { + margin-top: 14px; + font-size: 1.7rem; + } + .mobile .docu-lead { + font-size: 0.82rem; + } + .mobile .docu-evidence { + grid-template-columns: 1fr; + } + .mobile .counter-band { + padding: 78px 20px 88px; + } + .mobile .counter-band h2 { + font-size: 2.4rem; + } + .mobile .counter-grid { + grid-template-columns: 1fr 1fr; + margin-top: 42px; + } + .mobile .counter { + min-height: 0; + padding: 22px 18px; + } + .mobile .counter:nth-child(5) { + grid-column: 1 / -1; + } + .mobile .counter-value { + font-size: 2rem; + } + .mobile .quote-grid { + grid-template-columns: 1fr; + margin-top: 40px; + } + .mobile .map-layout { + display: block; + margin-top: 40px; + } + .mobile .map-frame { + padding: 14px; + } + .mobile .map-list { + margin-top: 28px; + } + .mobile .timeline-list { + padding-left: 22px; + } + .mobile .scroll-cue { + font-size: 0.5rem; + } .state-board { width: min(1180px, calc(100% - 48px)); @@ -2161,10 +2221,606 @@ object-fit: cover; } } + /* ===== DEGRADED (tier degradado — não certifica) ===== */ + .degraded-banner { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 14px; + margin-bottom: 26px; + padding: 14px 18px; + border: 1px solid var(--pt-yellow); + background: rgb(255 230 7 / 12%); + color: #fff8f2; + } + .degraded-badge { + flex: 0 0 auto; + display: inline-flex; + align-items: center; + gap: 8px; + padding: 7px 11px; + background: var(--pt-yellow); + color: #231506; + font: 800 0.66rem/1 var(--font-display); + letter-spacing: 0.12em; + text-transform: uppercase; + } + .degraded-banner p { + margin: 0; + max-width: 880px; + font-size: 0.76rem; + line-height: 1.55; + } + .degraded-banner strong { + color: var(--pt-yellow); + } + + /* ===== Hero cinematográfico (zoom-pan + reveal por máscara) ===== */ + .hero-image { + overflow: hidden; + } + .hero-image img { + transform-origin: 52% 30%; + } + .motion-ready .hero-image img { + animation: hero-zoom-pan 16s cubic-bezier(0.3, 0.7, 0.2, 1) both; + } + @keyframes hero-zoom-pan { + from { + transform: scale(1.14) translate3d(1.6%, 1.4%, 0); + } + to { + transform: scale(1.05) translate3d(0, 0, 0); + } + } + .motion-ready .hero-copy > * { + animation: hero-mask-reveal 880ms cubic-bezier(0.22, 0.8, 0.2, 1) both; + } + .motion-ready .hero-copy > :nth-child(1) { + animation-delay: 60ms; + } + .motion-ready .hero-copy > :nth-child(2) { + animation-delay: 150ms; + } + .motion-ready .hero-copy > :nth-child(3) { + animation-delay: 240ms; + } + .motion-ready .hero-copy > :nth-child(4) { + animation-delay: 330ms; + } + .motion-ready .hero-copy > :nth-child(5) { + animation-delay: 420ms; + } + @keyframes hero-mask-reveal { + from { + clip-path: inset(0 0 100% 0); + transform: translateY(14px); + } + to { + clip-path: inset(0 0 0 0); + transform: translateY(0); + } + } + .scroll-cue { + position: absolute; + z-index: 4; + left: 50%; + bottom: 18px; + display: flex; + flex-direction: column; + align-items: center; + gap: 9px; + transform: translateX(-50%); + color: rgb(255 255 255 / 80%); + font: 700 0.56rem/1 var(--font-display); + letter-spacing: 0.16em; + text-transform: uppercase; + } + .scroll-cue i { + display: block; + width: 2px; + height: 32px; + background: linear-gradient(var(--pt-yellow), transparent); + } + .motion-ready .scroll-cue i { + animation: cue-bob 2.4s ease-in-out infinite; + } + @keyframes cue-bob { + 0%, + 100% { + opacity: 0.35; + transform: translateY(-4px); + } + 50% { + opacity: 1; + transform: translateY(4px); + } + } + + /* ===== Documentário — casos com foto sticky + ficha de evidência ===== */ + .documentary { + background: white; + } + .docu-case { + display: grid; + grid-template-columns: 42% 58%; + gap: 56px; + padding: 66px 0; + border-top: 1px solid var(--line); + } + .docu-case:first-of-type { + border-top: 0; + padding-top: 56px; + } + .docu-photo { + position: sticky; + top: 18px; + align-self: start; + margin: 0; + } + .docu-photo-frame { + position: relative; + height: 500px; + overflow: hidden; + background: var(--pt-red-dark); + } + .docu-photo-frame img { + width: 100%; + height: 100%; + object-fit: cover; + } + .docu-asset { + display: grid; + place-content: center; + gap: 8px; + padding: 24px; + border: 1px dashed rgb(255 255 255 / 38%); + background: repeating-linear-gradient( + -45deg, + #57150f, + #57150f 10px, + #4a110c 10px, + #4a110c 20px + ); + color: rgb(255 255 255 / 72%); + text-align: center; + } + .docu-asset strong { + display: block; + color: var(--pt-yellow); + font: 800 0.66rem/1 var(--font-display); + letter-spacing: 0.12em; + text-transform: uppercase; + } + .docu-asset small { + display: block; + max-width: 240px; + margin-top: 8px; + font-size: 0.64rem; + line-height: 1.45; + } + .docu-photo figcaption { + margin-top: 12px; + color: var(--muted); + font-size: 0.63rem; + line-height: 1.5; + } + .docu-index { + color: var(--pt-red); + font: 780 0.68rem/1 var(--font-display); + letter-spacing: 0.12em; + text-transform: uppercase; + } + .docu-body h3 { + max-width: 560px; + margin: 16px 0 0; + font: 760 2rem/1.03 var(--font-display); + letter-spacing: -0.042em; + } + .docu-lead { + max-width: 600px; + margin: 18px 0 0; + color: #584944; + font-size: 0.92rem; + line-height: 1.72; + } + .docu-evidence { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1px; + margin: 30px 0 0; + background: var(--line); + border: 1px solid var(--line); + } + .evidence-cell { + padding: 18px; + background: var(--campaign-cream); + } + .evidence-cell.wide { + grid-column: 1 / -1; + } + .evidence-cell dt { + color: var(--pt-red); + font: 780 0.58rem/1 var(--font-display); + letter-spacing: 0.11em; + text-transform: uppercase; + } + .evidence-cell dd { + margin: 10px 0 0; + color: #4c3d38; + font-size: 0.75rem; + line-height: 1.55; + } + + /* ===== Contadores animados ===== */ + .counter-band { + padding: 104px 72px 112px; + background: var(--pt-red-dark); + color: white; + } + .counter-band .eyebrow { + color: var(--pt-yellow); + } + .counter-band h2 { + max-width: 900px; + margin: 0; + font: 770 3.45rem/0.98 var(--font-display); + letter-spacing: -0.052em; + } + .counter-band > p { + max-width: 740px; + margin: 26px 0 0; + color: rgb(255 255 255 / 74%); + font-size: 0.94rem; + line-height: 1.7; + } + .counter-grid { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 1px; + margin-top: 64px; + background: rgb(255 255 255 / 16%); + border: 1px solid rgb(255 255 255 / 16%); + } + .counter { + display: flex; + flex-direction: column; + min-height: 300px; + padding: 30px 26px; + background: #42100c; + } + .counter-value { + color: var(--pt-yellow); + font: 850 clamp(1.9rem, 3vw, 2.75rem)/0.95 var(--font-display); + letter-spacing: -0.055em; + } + .counter-value .counter-arrow { + color: rgb(255 255 255 / 65%); + font-size: 0.72em; + } + .counter-label { + margin: 18px 0 0; + color: white; + font: 650 0.82rem/1.35 var(--font-body); + } + .counter-meta { + margin: auto 0 0; + padding-top: 24px; + color: rgb(255 255 255 / 62%); + font-size: 0.64rem; + line-height: 1.55; + } + .counter-meta strong { + color: var(--pt-yellow); + } + .counter-note { + grid-column: 1 / -1; + margin: 0; + padding: 18px 26px; + background: #42100c; + color: rgb(255 255 255 / 58%); + font-size: 0.66rem; + line-height: 1.55; + } + + /* ===== Pull-quotes ===== */ + .quotes-band { + background: var(--campaign-cream); + border-top: 1px solid var(--line); + } + .quote-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1px; + margin-top: 58px; + background: var(--line); + border: 1px solid var(--line); + } + .quote-card { + display: flex; + flex-direction: column; + padding: 34px 30px; + background: white; + } + .quote-card blockquote { + margin: 0; + color: var(--pt-red-dark); + font: 700 1.28rem/1.28 var(--font-display); + letter-spacing: -0.02em; + } + .quote-card blockquote::before { + content: '“'; + margin-right: 3px; + color: var(--pt-red); + font-size: 2.3rem; + line-height: 0; + vertical-align: -0.32em; + } + .quote-occasion { + margin: 24px 0 0; + color: #584944; + font-size: 0.73rem; + line-height: 1.6; + } + .quote-meta { + margin: auto 0 0; + padding-top: 22px; + color: var(--muted); + font-size: 0.62rem; + line-height: 1.5; + } + + /* ===== Mapa do território ===== */ + .territory { + background: var(--campaign-surface); + } + .map-layout { + display: grid; + grid-template-columns: 1.05fr 0.95fr; + gap: 60px; + margin-top: 60px; + align-items: start; + } + .map-frame { + position: relative; + padding: 22px; + background: white; + border: 1px solid var(--line); + } + .map-frame svg { + display: block; + width: 100%; + height: auto; + } + .map-state { + fill: #f0e0dd; + stroke: var(--pt-red); + stroke-width: 1.6; + } + .map-halo { + fill: none; + stroke: rgb(162 28 28 / 22%); + stroke-width: 10; + } + .map-pin { + transform-box: fill-box; + transform-origin: center; + } + .map-pin circle { + fill: var(--green); + stroke: white; + stroke-width: 1.5; + } + .map-pin.esfera-uniao circle { + fill: var(--blue); + } + .map-pin.esfera-camara circle { + fill: var(--pt-red); + } + .map-pin.esfera-historico circle { + fill: #8a6d3b; + } + .map-pin text { + fill: var(--ink); + font: 700 9px var(--font-body); + } + .map-pin.on text { + fill: var(--pt-red-dark); + } + .motion-ready .map-pin { + opacity: 0; + transform: scale(0.6); + transition: + opacity 380ms ease, + transform 460ms cubic-bezier(0.2, 0.8, 0.2, 1); + } + .motion-ready .map-pin.on { + opacity: 1; + transform: scale(1); + } + .map-legend { + display: flex; + flex-wrap: wrap; + gap: 10px 20px; + margin-top: 18px; + } + .map-legend span { + display: inline-flex; + align-items: center; + gap: 8px; + color: var(--muted); + font-size: 0.64rem; + } + .map-legend i { + width: 11px; + height: 11px; + display: inline-block; + border-radius: 50%; + } + .map-legend .lg-estado i { + background: var(--green); + } + .map-legend .lg-uniao i { + background: var(--blue); + } + .map-legend .lg-camara i { + background: var(--pt-red); + } + .map-legend .lg-historico i { + background: #8a6d3b; + } + .map-list { + margin: 0; + padding: 0; + list-style: none; + } + .map-item { + padding: 17px 0; + border-top: 1px solid var(--line); + } + .map-item:first-child { + border-top: 0; + } + .map-item strong { + display: block; + font: 740 0.92rem/1.2 var(--font-display); + } + .map-item .map-sphere { + display: inline-flex; + margin-top: 8px; + padding: 5px 8px; + border: 1px solid var(--line); + color: var(--muted); + font: 700 0.58rem/1 var(--font-card); + letter-spacing: 0.08em; + text-transform: uppercase; + } + .map-item p { + margin: 9px 0 0; + color: #584944; + font-size: 0.74rem; + line-height: 1.55; + } + .map-item .map-src { + display: block; + margin-top: 7px; + color: var(--muted); + font-size: 0.6rem; + } + .map-note { + margin: 20px 0 0; + color: var(--muted); + font-size: 0.64rem; + line-height: 1.55; + } + + /* ===== Timeline com avanço no scroll ===== */ + .timeline-wrap { + position: relative; + } + .timeline-rail { + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 2px; + background: var(--line); + } + .timeline-rail-fill { + position: absolute; + left: 0; + top: 0; + width: 2px; + height: 0; + background: var(--pt-red); + } + .timeline-list { + position: relative; + padding-left: 30px; + } + + /* ===== Cena · motor de movimento ===== */ + .motor-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 16px; + margin-top: 34px; + } + .motor-frame { + padding: 26px; + background: white; + border: 1px solid var(--line); + } + .motor-frame > b { + color: var(--pt-red); + font: 800 0.62rem/1 var(--font-display); + letter-spacing: 0.12em; + text-transform: uppercase; + } + .motor-frame h3 { + margin: 14px 0 10px; + font: 740 1.35rem/1.05 var(--font-display); + } + .motor-frame > p { + margin: 0; + color: var(--muted); + font-size: 0.75rem; + line-height: 1.6; + } + .motor-modes { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1px; + margin: 20px 0 0; + background: var(--line); + border: 1px solid var(--line); + } + .motor-mode { + padding: 14px; + background: var(--campaign-cream); + } + .motor-mode dt { + color: var(--pt-red); + font: 780 0.56rem/1 var(--font-display); + letter-spacing: 0.1em; + text-transform: uppercase; + } + .motor-mode dd { + margin: 8px 0 0; + color: #584944; + font-size: 0.66rem; + line-height: 1.5; + } + .motor-guardrails { + margin-top: 26px; + padding: 18px 20px; + background: #211715; + color: rgb(255 248 242 / 72%); + font-size: 0.72rem; + line-height: 1.6; + } + .motor-guardrails strong { + color: var(--pt-yellow); + } + + @media (prefers-reduced-motion: reduce) { + .timeline-rail { + display: none; + } + .timeline-list { + padding-left: 0; + } + .motion-ready .map-pin { + opacity: 1; + transform: none; + } + } + @media (max-width: 900px) { .decision-grid, .state-board, - .motion-board-grid { + .motion-board-grid, + .motor-grid { grid-template-columns: 1fr; } .signature-storyboard { @@ -2180,12 +2836,28 @@
    -

    Gate visual · S1 · 28/09/2026

    +
    + DEGRADED · rascunho +

    + Design tier: DEGRADED (opencode-go/deepseek-v4.1-flash). Esta passada + estende o artefato existente com o hero cinematográfico, os capítulos documentais do §10, + contadores, mapa, citações e a timeline ampliada. + Isto é um draft do tier degradado: não está certificado e não declara o design + aprovado. + Exige sign-off humano no gate/PR e revisão do frontier + openai/gpt-5.6-sol antes de qualquer port para src/. +

    +
    +

    Gate visual · S1 · 28/09/2026 · draft DEGRADED

    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. + são o alvo visual do port, não implementação. Esta versão amplia a narrativa com um hero + cinematográfico, quatro casos documentados, contadores, mapa do território, citações e a + trajetória de 14 marcos.

    @@ -2220,6 +2892,13 @@ 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 e as thumbnails dinâmicas do board estão marcadas como NEEDS ASSET. + Novos NEEDS ASSET: as quatro fotografias dos casos do §10.1 (piso da + enfermagem, Mais Médicos, Hemobrás e interiorização) ainda não existem — cada moldura traz o + aviso, sem banco de imagens genérico. O mapa da Bahia é uma silhueta esquemática, + não cartografia; antes do port ele deve ser trocado por um GeoJSON/topologia real. Todo + número segue com ano, fase e fonte; empenho não é pagamento. + Alerta de tier: draft DEGRADED — não certificado; pendente de sign-off + humano e do frontier openai/gpt-5.6-sol.

    @@ -2283,6 +2962,7 @@ alt="Jorge Solla sorrindo, de blazer azul e camisa do PT" />
    1313
    +
    @@ -2606,6 +3286,436 @@
    +
    +

    Trabalho público · casos documentados

    +

    + Quatro frentes que levaram saúde a quem mora longe da capital. +

    +

    + Cada caso segue a mesma ficha do SAMU: papel, ação, data, status e fonte. A esfera + (Município, Estado, União, Câmara) fica explícita para não somar o que é de governos + diferentes. O que não tiver fonte não entra. +

    + +
    +
    + +
    + Foto pendente de autorização/arquivo. Não usar banco de imagens genérico. +
    +
    +
    + Caso C · Câmara +

    Piso da enfermagem: da comissão especial ao custeio da União

    +

    + Solla foi titular da comissão especial da PEC 11/2022, que virou a EC 124. A Lei + 14.434/2022 fixou o piso: R$ 4.750 para enfermeiros, R$ 3.325 para técnicos e R$ + 2.375 para auxiliares e parteiras. A Lei 14.581/2023 abriu R$ 7,3 bilhões para o + custeio, e o STF liberou o pagamento em 15 de maio de 2023. +

    +
    +
    +
    Papel
    +
    + Titular da comissão especial da PEC 11/2022 e integrante do GT do PL 2564/20. + Não foi relator: a relatora foi a deputada Carmen Zanotto. +
    +
    +
    +
    Ação
    +
    + A PEC 11/2022 virou a EC 124/2022; a EC 127/2022 obrigou a União a + complementar o pagamento; a Lei 14.581/2023 abriu R$ 7,3 bilhões para o + custeio de 867 mil profissionais. +
    +
    +
    +
    Data
    +
    + Leis de 2022 e 2023; STF, 15/05/2023; audiência requerida por Solla em + 12/05/2026. +
    +
    +
    +
    Status
    +
    + Em vigor. Implementação desigual: o Dieese apontou 53,5% dos enfermeiros + abaixo do piso. A fiscalização dos repasses entrou no plano da CFFC. +
    +
    +
    +
    Fonte
    +
    + Ficha da PEC 11/2022 (Câmara); Lei 14.434/2022; EC 127/2022; Lei 14.581/2023; + STF, 15/05/2023; Câmara, 12/05/2026. +
    +
    +
    +
    +
    + +
    +
    + +
    + Foto pendente de autorização/arquivo. Não usar banco de imagens genérico. +
    +
    +
    + Caso D · Câmara e União +

    Mais Médicos: médico no interior e especialista em formação

    +

    + Solla foi relator-revisor da comissão mista da MP 1.165/2023. O Mais Médicos foi + retomado e ganhou a formação de especialistas, na Lei 14.621/2023: quem fica 48 + meses em área de difícil fixação recebe de 10% a 20% a mais nas bolsas, e egressos + do Fies chegam a 80%. Na primeira fase do programa, em 2013, 317 municípios + baianos pediram 1.382 médicos: a maior adesão do país. +

    +
    +
    +
    Papel
    +
    Relator-revisor da comissão mista da MP 1.165/2023.
    +
    +
    +
    Ação
    +
    + A MP virou a Lei 14.621/2023: retomou o Mais Médicos e criou a Estratégia + Nacional de Formação de Especialistas, com Revalida quadrimestral e prioridade + para DSEIs, quilombos e comunidades ribeirinhas. +
    +
    +
    +
    Data
    +
    + Lei de 14/07/2023; diretrizes em execução na rede federal. Contexto: julho de + 2013, primeira fase do programa. +
    +
    +
    +
    Status
    +
    + Lei em vigor; execução em andamento na rede federal. Adesão histórica da Bahia + registrada. +
    +
    +
    +
    Fonte
    +
    + Lei 14.621/2023 (Planalto); briefing §Saúde; saude.research (Correio 24 Horas, + 27/07/2013). +
    +
    +
    +
    +
    + +
    +
    + +
    + Foto pendente de autorização/arquivo. Não usar banco de imagens genérico. +
    +
    +
    + Caso E · Câmara (em análise no Senado) +

    Hemobrás: o remédio que nasce do sangue doado

    +

    + Ajudou a criar a Hemobrás no Ministério da Saúde e é autor do PL 424/2015, que + permite ao SUS comprar hemoderivados direto da estatal, sem licitação, quando ela + é a única produtora. A Câmara aprovou o projeto em 17 de junho de 2026; agora ele + está no Senado. +

    +
    +
    +
    Papel
    +
    + Autor do PL 424/2015; ajudou a criar a Hemobrás no Ministério da Saúde + (2003–2005). +
    +
    +
    +
    Ação
    +
    + O PL 424/2015 considera a licitação não exigível quando a Hemobrás é a única + produtora de hemoderivados: compra pública direta, com controle e + fiscalização. +
    +
    +
    +
    Data
    +
    + Câmara, 17/06/2026; fábrica de Goiana ativou o fracionamento do plasma em + 13/08/2025; visita técnica requerida pelo mandato em 2023. +
    +
    +
    +
    Status
    +
    + Projeto aprovado na Câmara, ainda não é lei: aguarda o Senado. Economia + estimada em até R$ 1 bilhão por ano; capacidade de 500 mil litros/ano. +
    +
    +
    +
    Fonte
    +
    + Câmara, 17/06/2026; Movimento Econômico, 14/08/2025; REQ 90/2023 (Câmara). +
    +
    +
    +
    +
    + +
    +
    + +
    + Foto pendente de autorização/arquivo. Não usar banco de imagens genérico. +
    +
    +
    + Caso F · Estado +

    O interior deixou de viajar para se tratar

    +

    + Na Secretaria de Saúde da Bahia, Solla entregou cinco hospitais de grande porte, + entre eles Irecê, Juazeiro e Santo Antônio de Jesus, e mais de 1.200 leitos. As + UTIs passaram de 427 para 789 vagas, a neurocirurgia chegou a Barreiras, Conquista + e Feira de Santana, e o SAMU saiu de 14 para 233 municípios, chegando a 74% da + população. A Saúde da Família chegou a 2.690 equipes, em 99% dos municípios. +

    +
    +
    +
    Papel
    +
    + Gestão: secretário de Estado da Saúde da Bahia de 2007 a janeiro de 2014. +
    +
    +
    +
    Ação
    +
    + Cinco hospitais de grande porte, +1.200 leitos, UTIs de 427→789, neurocirurgia + interiorizada, SAMU 14→233 (74% da população) e 293 unidades de Saúde da + Família construídas. +
    +
    +
    +
    Data
    +
    + Entregas do período 2007–2014, conforme balanços apresentados ao Conselho + Estadual de Saúde (fev/2010 e jan/2011). +
    +
    +
    +
    Status
    +
    + Entregue. Nota H-11: o balanço de jan/2011 fala em 36 unidades reformadas ou + ampliadas, critério diferente do de fev/2010 (43) — usar um conjunto por vez. +
    +
    +
    +
    Fonte
    +
    JGB, 26/02/2010; JGB, 03/01/2011; briefing §Interior.
    +
    +
    +
    +
    +
    + +
    +

    Resultado em número

    +

    + O que o mandato entregou, com ano, fase e fonte. +

    +

    + Cada contador leva ano e fase. Nada aqui soma exercícios diferentes, e empenho nunca + vira pagamento. Os números animam ao entrar na tela; sem movimento, aparecem no valor + final. +

    +
    +
    + R$ 3,1 bi +

    a mais na saúde da Bahia

    +

    + 2007–2010 · entregue
    Fonte: JGB, 03/01/2011 +

    +
    +
    + 14 + + 233 +

    municípios com SAMU na Bahia

    +

    + 2007–2010 · entregue
    Fonte: JGB, 03/01/2011 +

    +
    +
    + 427 + + 789 +

    leitos de UTI na rede estadual

    +

    + 2007–2010 · entregue
    Fonte: JGB, 03/01/2011 +

    +
    +
    + R$ 7,3 bi +

    para o custeio do piso da enfermagem

    +

    + 2023 · lei (867 mil profissionais)
    Fonte: Lei 14.581/2023; + STF, 15/05/2023 +

    +
    +
    + R$ 9,5 mi +

    pagos em emendas na atenção primária

    +

    + 2026 · pago
    Fonte: Câmara, emendas 2026 (25/09/2026) +

    +
    +

    + Fase sempre explícita: entregue, pago, autorizado ou lei. Emenda não substitui o + custeio local; empenho não é pagamento. Números conferidos contra os balanços + oficiais e a fonte de cada linha. +

    +
    +
    + +
    +

    Em suas palavras

    +

    + Citações com ocasião, data e fonte. +

    +

    + Frase inteira, sem corte que mude o sentido. Cada citação vem com o contexto em que + foi dita e a fonte que a registrou. +

    +
    +
    +
    O SUS é a maior conquista do povo brasileiro.
    +

    + Agenda da saúde em Salvador, na assinatura de convênio das Obras Sociais Irmã + Dulce. +

    +

    + Data: 02/09/2025
    Fonte: Política 10, + 02/09/2025 +

    +
    +
    +
    + O 8 de janeiro não foi um ato isolado, foi o ápice de uma escalada autoritária. + Não haverá anistia para golpistas. +
    +

    Dois anos dos atos golpistas de 8 de janeiro.

    +

    + Data: 08/01/2025
    Fonte: A TARDE, 08/01/2025 +

    +
    +
    +
    + Conseguimos ter uma gestão estratégica, participativa do SUS, com o fortalecimento + do controle social. +
    +

    + Balanço da SESAB na 160ª Reunião Ordinária do Conselho Estadual de Saúde. +

    +

    + Data: 25/02/2010
    Fonte: JGB, 26/02/2010 +

    +
    +
    +
    +
    -
      -
    1. - -

      Nasce em Salvador, em 11 de abril.

      - Origem -
    2. -
    3. - -

      - 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 -
    4. -
    5. - -

      Forma-se em Medicina pela UFBA e participa da fundação do PT na Bahia.

      - Formação -
    6. -
    7. - -

      Residência em Medicina Social pela UFBA/Inamps.

      - Formação -
    8. -
    9. - -

      Torna-se médico do quadro da UFBA e conclui o mestrado em Saúde Coletiva.

      - Formação -
    10. -
    11. - -

      - 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 -
    12. -
    13. - -

      - 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. -

      - União -
    14. -
    15. - -

      - Secretário de Saúde da Bahia nos dois mandatos de Jaques Wagner; conclui o - doutorado em Clínica Médica em 2009. -

      - Estado -
    16. -
    17. - -

      - Toma posse como deputado federal pela Bahia; foi eleito em 2014 com 125.159 - votos. -

      - Câmara -
    18. -
    19. - -

      - 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 -
    20. -
    +
    + +
      +
    1. + +

      Nasce em Salvador, em 11 de abril.

      + Origem +
    2. +
    3. + +

      + Inicia a militância no Congresso de Reconstrução da UNE; preside o Diretório + Acadêmico de Medicina e dirige o DCE da UFBA. +

      + Militância +
    4. +
    5. + +

      + Forma-se em Medicina pela UFBA e participa da fundação do PT na Bahia (1980). +

      + Formação e militância +
    6. +
    7. + +

      Residência em Medicina Social pela UFBA/Inamps.

      + Formação +
    8. +
    9. + +

      + Médico do quadro da UFBA (1987); mestrado em Saúde Coletiva (1993); + pesquisador do Instituto de Saúde Coletiva. +

      + Formação +
    10. +
    11. + +

      + Sanitarista da SESAB (distrito de Itapagipe e coordenação do PACS/PSF); + consultor do Ministério da Saúde (1995–1999); professor na Escola Bahiana de + Medicina (1998). +

      + Estado e União +
    12. +
    13. + +

      + Secretário Municipal de Saúde de Vitória da Conquista; criou o piloto do SAMU + 192 (Resgate Médico). +

      + Município +
    14. +
    15. + +

      + Secretário de Atenção à Saúde do Ministério da Saúde: nacionalizou o SAMU 192 + e criou o Brasil Sorridente (diretrizes assinadas). +

      + União +
    16. +
    17. + +

      + Doutorado em Clínica Médica (UFRJ), com tese sobre a implantação do SUS em + Vitória da Conquista, publicada em livro (2010). +

      + Formação +
    18. +
    19. + +

      + Secretário de Saúde da Bahia, nos dois mandatos de Jaques Wagner; recebe a + Comenda Dois de Julho em novembro de 2013. +

      + Estado +
    20. +
    21. + +

      + Eleito deputado federal em 2014 (125.159 votos); reeleito em 2018 (135.657, 5º + do estado) e em 2022 (128.968); toma posse nas 55ª, 56ª e 57ª legislaturas. +

      + Câmara +
    22. +
    23. + +

      + Autor do PL 424/2015 (Hemobrás), do PL 371/2015 (rótulos de agrotóxicos) e do + PL 2077/2019, que virou a Lei 14.196/2021 (Fiocruz e Butantan); apresenta o PL + 6836/2017 (saúde bucal); em 2019, entra com a ação popular que suspende o + corte de 30% na UFBA. +

      + Câmara +
    24. +
    25. + +

      + Coautor do PL 5384/2020 (cotas permanentes, Lei 14.723/2023); 3º signatário da + PEC 14/2021; titular da comissão especial da PEC 11/2022 (piso da enfermagem); + vota "Não" à privatização da Eletrobras e dos Correios. +

      + Câmara +
    26. +
    27. + +

      + Titular da Comissão de Saúde (desde março de 2023), vice-líder da Federação + Brasil da Esperança e suplente na CFFC; relator-revisor da MP 1.165/2023 (Lei + 14.621/2023); relator do PL 2113/2022 (piso dos ACS e ACE); autor do PL + 424/2015, aprovado pela Câmara em 17/06/2026 e em análise no Senado. +

      + Câmara +
    28. +
    +
    +
    +

    Território e interior

    +

    + Um mandato do tamanho da Bahia. +

    +

    + Os 417 municípios no mapa do mandato. Cada pino é um fato datado, com a esfera no + rótulo; o recorte de 2022 é leitura histórica, sem projeção e sem cenário eleitoral — + presença não vira voto. A lista ao lado repete todo o conteúdo do mapa em texto. +

    +
    +
    + + + + + + Bahia + + + + Itaberaba + + + + Seabra + + + + Barreiras + + + + Irecê + + + + Juazeiro + + + + Feira de Santana + + + + Santo Antônio de Jesus + + + + Vitória da Conquista + + + + Amargosa + + + + Salvador + + + + Teixeira de Freitas + + +
    + Estado (gestão SESAB) + União (novo PAC) + Câmara (emenda) + Leitura histórica (2022) +
    +

    + Fase: entregue (2007–2010) · autorizado/em andamento (2025) · + leitura histórica sem projeção (2022). Silhueta esquemática, não cartográfica — + trocar por topologia real antes do port. +

    +
    +
      +
    • + Estado da Bahia — SAMU + Estado 2007–2010 · União 2025 +

      + SAMU: 14 municípios em 2007, 233 em 2010 (74% da população) e 100% do estado em + março de 2025. +

      + Fonte: JGB, 03/01/2011; A TARDE, 14/03/2025. +
    • +
    • + Itaberaba e Seabra — ambulâncias do novo PAC + União · autorizado +

      + Ambulâncias do novo PAC entregues em março de 2025, fechando a cobertura do SAMU + na Bahia. R$ 243,5 milhões autorizados e 789 ambulâncias para 559 cidades do + país, 12 destinadas a nove municípios baianos. +

      + Fonte: A TARDE, 14/03/2025. +
    • +
    • + Barreiras, Vitória da Conquista e Feira de Santana — neurocirurgia + Estado · entregue +

      Neurocirurgia interiorizada: deixou de ficar só em Salvador e Itabuna.

      + Fonte: JGB, 03/01/2011. +
    • +
    • + Irecê, Juazeiro e Santo Antônio de Jesus — hospitais regionais + Estado · entregue +

      Hospitais regionais entregues na gestão estadual.

      + Fonte: JGB, 26/02/2010. +
    • +
    • + Interior da Bahia — votação de 2022 + Leitura histórica · sem projeção +

      + 78,9% dos votos de 2022 vieram do interior: 101.704 de 128.968. Amargosa foi o + maior colégio do interior, com 7.602 votos (39,9% dos válidos), e Solla foi o + mais votado para deputado federal em seis municípios da região. +

      + Fonte: TSE, 02/10/2022. +
    • +
    • + Salvador — votação de 2022 + Leitura histórica · sem projeção +

      + 27.264 votos em 2022 (21,1% do total). Bases: São Caetano (890), Pernambués + (719), Cosme de Farias (647) e Paripe (597). +

      + Fonte: TSE / Radar Congresso em Foco, 02/10/2022. +
    • +
    • + Teixeira de Freitas — emenda + Câmara · pago +

      R$ 300 mil pagos em atenção básica (2016).

      + Fonte: Câmara, emendas 2016. +
    • +
    +
    +

    + As emendas de custeio do Fundo Nacional de Saúde (2024–2026) têm destino oficial "No + Estado da Bahia", sem município executor; por isso não aparecem pinadas por cidade. +

    +
    +
    1313
    +
    @@ -3441,50 +4757,485 @@
    +
    +

    Trabalho público · casos documentados

    +

    + Quatro frentes que levaram saúde ao interior. +

    +

    + Mesma ficha do SAMU: papel, ação, data, status e fonte. No celular a foto entra no + fluxo, antes da ficha, e nada depende de gesto. +

    + +
    +
    + +
    Foto pendente. Não usar banco genérico.
    +
    +
    + Caso C · Câmara +

    Piso da enfermagem: da comissão ao custeio

    +

    + Titular da comissão especial da PEC 11/2022, que virou a EC 124. A Lei 14.434/2022 + fixou o piso: R$ 4.750 para enfermeiros, R$ 3.325 para técnicos e R$ 2.375 para + auxiliares e parteiras. A Lei 14.581/2023 abriu R$ 7,3 bilhões para o custeio. +

    +
    +
    +
    Papel
    +
    + Titular da comissão especial; não foi relator (relatora: Carmen Zanotto). +
    +
    +
    +
    Status
    +
    + Em vigor. Dieese apontou 53,5% dos enfermeiros abaixo do piso; fiscalização no + plano da CFFC. +
    +
    +
    +
    Fonte
    +
    PEC 11/2022 (Câmara); Leis 14.434/2022 e 14.581/2023; STF, 15/05/2023.
    +
    +
    +
    +
    + +
    +
    + +
    Foto pendente. Não usar banco genérico.
    +
    +
    + Caso D · Câmara e União +

    Mais Médicos: médico no interior

    +

    + Relator-revisor da comissão mista da MP 1.165/2023, que virou a Lei 14.621/2023: + retomou o Mais Médicos e criou a formação de especialistas. Em 2013, 317 + municípios baianos pediram 1.382 médicos, a maior adesão do país. +

    +
    +
    +
    Status
    +
    Lei de 14/07/2023 em vigor; execução na rede federal.
    +
    +
    +
    Fonte
    +
    Lei 14.621/2023; briefing §Saúde; Correio 24 Horas, 27/07/2013.
    +
    +
    +
    +
    + +
    +
    + +
    Foto pendente. Não usar banco genérico.
    +
    +
    + Caso E · Câmara +

    Hemobrás: o remédio do sangue doado

    +

    + Autor do PL 424/2015, que permite ao SUS comprar hemoderivados direto da estatal, + sem licitação, quando ela é a única produtora. A Câmara aprovou em 17/06/2026; + agora está no Senado. +

    +
    +
    +
    Status
    +
    Aprovado na Câmara, não é lei: aguarda o Senado.
    +
    +
    +
    Fonte
    +
    Câmara, 17/06/2026; Movimento Econômico, 14/08/2025.
    +
    +
    +
    +
    + +
    +
    + +
    Foto pendente. Não usar banco genérico.
    +
    +
    + Caso F · Estado +

    O interior deixou de viajar para se tratar

    +

    + Cinco hospitais de grande porte, +1.200 leitos, UTIs de 427→789, neurocirurgia + interiorizada, SAMU 14→233 (74% da população) e 2.690 equipes de Saúde da Família, + em 99% dos municípios. +

    +
    +
    +
    Status
    +
    Entregue (2007–2014). Nota H-11: usar um balanço de reformas por vez.
    +
    +
    +
    Fonte
    +
    JGB, 26/02/2010; JGB, 03/01/2011; briefing §Interior.
    +
    +
    +
    +
    +
    + +
    +

    Resultado em número

    +

    Com ano, fase e fonte.

    +

    Cada contador anima ao entrar na tela; sem movimento, mostra o valor final.

    +
    +
    + R$ 3,1 bi +

    a mais na saúde da Bahia

    +

    2007–2010 · entregue · JGB, 03/01/2011

    +
    +
    + 14 + + 233 +

    municípios com SAMU

    +

    2007–2010 · entregue · JGB, 03/01/2011

    +
    +
    + 427 + + 789 +

    leitos de UTI

    +

    2007–2010 · entregue · JGB, 03/01/2011

    +
    +
    + R$ 7,3 bi +

    custeio do piso da enfermagem

    +

    2023 · lei · Lei 14.581/2023

    +
    +
    + R$ 9,5 mi +

    pagos em emendas na atenção primária

    +

    2026 · pago · Câmara, 25/09/2026

    +
    +

    + Empenho não é pagamento; emenda não substitui o custeio local. +

    +
    +
    + +
    +

    Em suas palavras

    +

    Com ocasião, data e fonte.

    +
    +
    +
    O SUS é a maior conquista do povo brasileiro.
    +

    + Agenda da saúde em Salvador; convênio das Obras Sociais Irmã Dulce. +

    +

    02/09/2025 · Política 10

    +
    +
    +
    + O 8 de janeiro não foi um ato isolado, foi o ápice de uma escalada autoritária. + Não haverá anistia para golpistas. +
    +

    Dois anos dos atos golpistas de 8 de janeiro.

    +

    08/01/2025 · A TARDE

    +
    +
    +
    + Conseguimos ter uma gestão estratégica, participativa do SUS, com o fortalecimento + do controle social. +
    +

    Balanço da SESAB na 160ª Reunião do Conselho Estadual.

    +

    25/02/2010 · JGB, 26/02/2010

    +
    +
    +
    +

    Trajetória

    Da formação no SUS ao mandato.

    - -
      -
    1. - -

      Nasce em Salvador.

      - Origem + +
      + +
        +
      1. + +

        Nasce em Salvador, em 11 de abril.

        + Origem +
      2. +
      3. + +

        Militância na UNE; Diretório Acadêmico de Medicina e DCE da UFBA.

        + Militância +
      4. +
      5. + +

        Forma-se em Medicina pela UFBA e participa da fundação do PT na Bahia.

        + Formação +
      6. +
      7. + +

        Residência em Medicina Social pela UFBA/Inamps.

        + Formação +
      8. +
      9. + +

        Médico da UFBA; mestrado em Saúde Coletiva; pesquisador do ISC.

        + Formação +
      10. +
      11. + +

        Sanitarista da SESAB; consultor do Ministério da Saúde; docente.

        + Estado e União +
      12. +
      13. + +

        Secretário de Saúde de Vitória da Conquista: criou o piloto do SAMU 192.

        + Município +
      14. +
      15. + +

        + Nacionalizou o SAMU 192 e criou o Brasil Sorridente, assinando as diretrizes + da Política Nacional de Saúde Bucal. +

        + União +
      16. +
      17. + +

        Doutorado em Clínica Médica (UFRJ), tese publicada em livro (2010).

        + Formação +
      18. +
      19. + +

        Secretário de Saúde da Bahia; Comenda Dois de Julho em 2013.

        + Estado +
      20. +
      21. + +

        + Deputado federal em 2014, 2018 e 2022; posses nas 55ª, 56ª e 57ª legislaturas. +

        + Câmara +
      22. +
      23. + +

        Autor do PL 424/2015 (Hemobrás) e do PL 6836/2017 (saúde bucal).

        + Câmara +
      24. +
      25. + +

        + Coautor das cotas permanentes; titular da comissão especial da PEC 11/2022 + (piso da enfermagem). +

        + Câmara +
      26. +
      27. + +

        + Titular da Comissão de Saúde; relator-revisor da MP 1.165/2023; autor do PL + 424/2015, aprovado na Câmara em 17/06/2026. +

        + Câmara +
      28. +
      +
      +
    +
    + +
    +

    Território e interior

    +

    Um mandato do tamanho da Bahia.

    +

    + Cada pino é um fato datado, com esfera no rótulo. A lista abaixo repete o mapa em + texto; o recorte de 2022 é leitura histórica, sem projeção. +

    +
    +
    + + + + + + Bahia + + + + Itaberaba + + + + Seabra + + + + Barreiras + + + + Irecê + + + + Juazeiro + + + + Feira de Santana + + + + Santo Antônio de Jesus + + + + Vitória da Conquista + + + + Amargosa + + + + Salvador + + + + Teixeira de Freitas + + +
    + Estado + União + Câmara + 2022 (histórico) +
    +

    + Fase: entregue (2007–2010) · autorizado (2025) · leitura + histórica (2022). Silhueta esquemática, não cartográfica. +

    +
    +
      +
    • + Bahia — SAMU + Estado · União +

      SAMU: 14 municípios em 2007, 233 em 2010 (74%) e 100% em março de 2025.

      + JGB, 03/01/2011; A TARDE, 14/03/2025.
    • -
    • - -

      Forma-se em Medicina pela UFBA e participa da fundação do PT na Bahia.

      - Formação +
    • + Itaberaba e Seabra — novo PAC + União · autorizado +

      Ambulâncias entregues em 2025 fecharam a cobertura do SAMU na Bahia.

      + A TARDE, 14/03/2025.
    • -
    • - -

      Secretário de Saúde de Vitória da Conquista: criou o piloto do SAMU 192.

      - Município +
    • + Barreiras, Conquista e Feira — neurocirurgia + Estado · entregue +

      Neurocirurgia interiorizada, além de Salvador e Itabuna.

      + JGB, 03/01/2011.
    • -
    • - -

      - Nacionalizou o SAMU 192 e criou o Brasil Sorridente, assinando as diretrizes da - Política Nacional de Saúde Bucal. -

      - União +
    • + Irecê, Juazeiro e Santo Antônio de Jesus — hospitais + Estado · entregue +

      Hospitais regionais entregues na gestão estadual.

      + JGB, 26/02/2010.
    • -
    • - -

      Secretário de Saúde da Bahia.

      - Estado +
    • + Interior e Salvador — votação de 2022 + Leitura histórica · sem projeção +

      78,9% dos votos vieram do interior (101.704 de 128.968).

      + TSE, 02/10/2022.
    • -
    • - -

      - Deputado federal pela Bahia; titular da Comissão de Saúde desde março de 2023. -

      - Câmara +
    • + Teixeira de Freitas — emenda + Câmara · pago +

      R$ 300 mil pagos em atenção básica (2016).

      + Câmara, emendas 2016.
    • - +
    @@ -4044,6 +5795,150 @@
    +
    +
    +

    Cena 05 · Motor de movimento

    +

    + Storyboard do que se move, em três regimes: normal, mobile e + prefers-reduced-motion. O conteúdo nunca depende do movimento. +

    +
    +
    +

    Contrato de movimento · DEGRADED

    +

    Cinco motores, um conteúdo.

    + +
    +
    + Motor 01 · Hero +

    Zoom-pan sutil + reveal por máscara + indicador de scroll

    +

    + O retrato abre com escala de 1,14 → 1,05 em 16 s (zoom-pan lento, sem parallax). A + copy entra por máscara, linha a linha, em 60–420 ms. O indicador de scroll pulsa no + rodapé da imagem. +

    +
    +
    +
    Normal
    +
    Zoom-pan uma vez, ao carregar. Máscara escalonada na copy. Cue pulsando.
    +
    +
    +
    Mobile
    +
    Mesmo zoom-pan, alvo de toque de 44 px no CTA; cue abaixo da imagem.
    +
    +
    +
    Reduzido
    +
    Sem zoom-pan, sem máscara, sem pulso. Retrato estático e copy visível.
    +
    +
    +
    + +
    + Motor 02 · Scrub dos capítulos +

    Foto sticky que troca por crossfade

    +

    + No desktop, a fotografia fica sticky enquanto os seis capítulos passam; a imagem muda + por crossfade e escala 97% → 100%. Nenhuma seção é travada: a rolagem é do usuário. +

    +
    +
    +
    Normal
    +
    Crossfade 560 ms; capítulo ativo detectado pela viewport central.
    +
    +
    +
    Mobile
    +
    Sem sticky: cada foto entra no fluxo depois do capítulo relacionado.
    +
    +
    +
    Reduzido
    +
    Dissolução desligada; foto inline por capítulo, ordem e copy idênticas.
    +
    +
    +
    + +
    + Motor 03 · Contadores +

    Números que sobem ao entrar na tela

    +

    + Cada contador anima do valor inicial ao final em ~1,3 s, com easing de saída. Os + números de esfera/ano/fase e a fonte ficam estáticos desde o primeiro quadro. +

    +
    +
    +
    Normal
    +
    Contagem uma vez, ao entrar; valores em pt-BR com separador de milhar.
    +
    +
    +
    Mobile
    +
    Mesma contagem em grade 2 colunas; rótulo e fonte sempre visíveis.
    +
    +
    +
    Reduzido
    +
    Sem contagem: o valor final aparece direto, sem piscar nem saltar.
    +
    +
    +
    + +
    + Motor 04 · Mapa +

    Pinos que aparecem em sequência + lista equivalente

    +

    + Os pinos surgem em escala 0,6 → 1 quando o mapa entra na tela, com atraso escalonado. + A lista textual ao lado carrega o mesmo conteúdo, item por item, com fonte e esfera. +

    +
    +
    +
    Normal
    +
    + Stagger de ~70 ms por pino; legenda de esfera e nota de fase sempre visíveis. +
    +
    +
    +
    Mobile
    +
    Mapa menor acima da lista; pinos aparecem sem depender de hover.
    +
    +
    +
    Reduzido
    +
    + Todos os pinos nascem visíveis, sem escala; lista textual é o caminho principal. +
    +
    +
    +
    + +
    + Motor 05 · Timeline +

    Trilha que avança conforme o scroll

    +

    + Uma trilha de 2 px preenche na cor da marca conforme os 14 marcos entram na tela. É + leitura de progresso, não controle: nada trava, nada é sequestrado. +

    +
    +
    +
    Normal
    +
    Preenchimento contínuo ligado ao scroll; itens marcam sua esfera.
    +
    +
    +
    Mobile
    +
    Trilha mais estreita; lista condensa os marcos sem perder esfera.
    +
    +
    +
    Reduzido
    +
    Trilha escondida; os 14 marcos aparecem completos e visíveis.
    +
    +
    +
    +
    + +

    + Guardrails: sem scroll hijacking, sem autoplay, sem cursor customizado. + Toda animação é de apresentação, com prefers-reduced-motion respeitado em + cada motor. Onde há movimento, o estado final é o mesmo conteúdo estático — nada existe só + durante a animação. DEGRADED: storyboard pendente de sign-off humano e do + frontier openai/gpt-5.6-sol. +

    +
    +
    +