/* ============================================================================
   Rastro das Emendas — estilo
   Copia docs/maquetes/escolhidas/ e o ESPEC (vale o ESPEC quando discordam).

   Tokens primeiro, componentes depois, telas por último. Cor só por variável:
   o tema escuro (ESPEC 7.7, ainda não desenhado) entra reescrevendo as MESMAS
   variáveis, sem tocar em componente. Nenhum controle do navegador aparece:
   campo, lista, barra de rolagem, foco e seleção são desenhados aqui.
   ========================================================================= */
@font-face { font-family: "Inter"; src: url("inter-latin.woff2?v=1") format("woff2");
  font-weight: 100 900; font-style: normal; font-display: swap; }
@font-face { font-family: "JetBrains Mono"; src: url("jetbrains-mono-latin.woff2?v=1") format("woff2");
  font-weight: 100 800; font-style: normal; font-display: swap; }

:root {
  --tinta: #09070C;
  --osso: #F5F4F8;
  --cartao: #FFFFFF;
  --linha: #E4E2EA;
  --linha-controle: #8C8696;
  --cinza: #716B78;
  --violeta: #6D28FF;
  --violeta-forte: #5718E0;
  --violeta-fundo: #EEE8FF;
  --barra-prometido: #B7A3FF;
  --barra-entregue: #9A7BFF;
  --barra-pago: #6D28FF;
  --barra-neutra: #8C8696;
  --trilho: #EFEDF3;
  --aviso-fundo: #EEF0F4;
  --alerta-fundo: #FFF4DB;
  --alerta-borda: #B07A00;
  --alerta-texto: #8A5A00;
  --esqueleto: #E9E7EF;
  --sobre-violeta: #FFFFFF;
  /* escala do mapa: do pouco ao muito, sempre violeta (o pago é violeta) */
  --mapa-0: #F2F0F6;     /* nada chegou */
  --mapa-1: #DCD0FF;
  --mapa-2: #B7A3FF;
  --mapa-3: #8F66FF;
  --mapa-4: #6D28FF;
  --mapa-5: #3F0FA8;
  --mapa-borda: #FFFFFF;
  --mapa-sem-dado: #C9C5D1;

  --anel: 0 0 0 3px rgba(109, 40, 255, .35);
  --sombra-cartao: 0 1px 2px rgba(9, 7, 12, .04);
  --sombra-camada: 0 18px 48px -12px rgba(9, 7, 12, .28), 0 2px 6px rgba(9, 7, 12, .08);

  --r-cartao: 16px; --r-campo: 14px; --r-botao: 12px; --r-etiqueta: 8px;
  --margem: 16px;
  --dentro: 16px;
  --entre: 12px;
  --secao: 32px;
  --fonte: "Inter", ui-sans-serif, -apple-system, "Segoe UI", system-ui, sans-serif;
  --mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --suave: cubic-bezier(.32, .72, 0, 1);
}
@media (min-width: 768px) {
  :root { --margem: clamp(16px, 4vw, 48px); --dentro: 24px; --entre: 20px; --secao: 48px; }
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-padding-top: 72px;
  scrollbar-color: var(--linha-controle) var(--osso); scrollbar-width: thin; }
body {
  margin: 0; min-height: 100dvh; display: flex; flex-direction: column;
  background: var(--osso); color: var(--tinta);
  font: 400 16px/1.5 var(--fonte); font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
::selection { background: var(--violeta-fundo); color: var(--tinta); }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--linha-controle); border-radius: 999px; border: 3px solid var(--osso); }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-weight: 600; text-wrap: balance; }
a { color: var(--violeta); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
a:hover { color: var(--violeta-forte); }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; text-align: inherit; }
img { max-width: 100%; }
ul, ol { margin: 0; padding: 0; list-style: none; }
:focus { outline: none; }
:focus-visible { outline: none; box-shadow: var(--anel); border-radius: 6px; }
[hidden] { display: none !important; }
.ico { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.8;
  stroke-linecap: round; stroke-linejoin: round; flex: none; }
.ico .cheio { fill: currentColor; stroke: none; }
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.pular { position: absolute; left: 12px; top: 12px; z-index: 50; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; background: var(--tinta); color: #fff;
  padding: 0; border-radius: var(--r-botao); text-decoration: none; }
.pular:focus { width: auto; height: auto; clip: auto; padding: 12px 16px; }

/* ------------------------------------------------------------- tipografia */
.rotulo { font: 400 12px/1.3 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--cinza); }
.secundario { font-size: 14px; line-height: 1.45; color: var(--cinza); }
.titulo-secao { font-size: 22px; line-height: 1.25; letter-spacing: -.01em; }
@media (min-width: 768px) { .titulo-secao { font-size: 24px; } }
.valor { font-weight: 600; white-space: nowrap; }
.violeta { color: var(--violeta); }

/* --------------------------------------------------------------- moldura */
.pagina { width: 100%; margin: 0 auto; padding: 0 var(--margem); flex: 1 0 auto; }
main { flex: 1 0 auto; display: flex; flex-direction: column; }
main:focus { box-shadow: none; }

/* cabeçalho (a) Início e (b) Ficha — o MESMO nó, que só muda de forma */
.topo { width: 100%; margin: 0 auto; padding: 12px var(--margem) 4px; }
.topo-linha { display: flex; align-items: center; gap: 12px; min-height: 56px; position: relative; }
.marca { display: inline-flex; align-items: center; gap: 12px; color: var(--tinta); text-decoration: none;
  min-height: 48px; border-radius: 8px; }
.marca:hover { color: var(--tinta); }
.marca-simbolo { width: 40px; height: 35px; fill: var(--tinta); flex: none; }
.marca-nome { font-size: 20px; font-weight: 600; letter-spacing: -.02em; white-space: nowrap; }
.topo-como { margin-left: auto; display: none; font-weight: 600; text-decoration: none; padding: 12px 4px; }
.botao-voltar, .botao-lupa {
  display: inline-flex; align-items: center; gap: 8px; height: 48px; padding: 0 16px 0 12px;
  border: 1px solid var(--linha-controle); border-radius: var(--r-botao); background: var(--cartao);
  font-weight: 500; flex: none;
}
.botao-voltar:hover, .botao-lupa:hover { border-color: var(--tinta); }
.botao-lupa { width: 48px; padding: 0; justify-content: center; border-radius: 999px; margin-left: auto; }
body[data-tela="ficha"] .marca { margin: 0 auto; }
body[data-tela="ficha"] .marca-nome { font-size: 17px; }
body[data-tela="ficha"] .marca-simbolo { width: 32px; height: 28px; }
.topo-busca { flex: 1 1 auto; min-width: 0; }
@media (max-width: 767px) {
  body[data-tela="ficha"] .topo-busca { display: none; }
  body[data-tela="ficha"].busca-aberta .topo-busca { display: block; position: absolute; inset: 0;
    background: var(--osso); z-index: 5; }
  body[data-tela="ficha"] .marca-nome { font-size: 16px; }
}
@media (max-width: 380px) { body[data-tela="ficha"] .marca-nome { display: none; } }
@media (min-width: 768px) {
  body[data-tela="ficha"] .botao-lupa { display: none !important; }
  body[data-tela="ficha"] .marca { margin: 0; }
  body[data-tela="ficha"] .marca-nome { font-size: 20px; }
  body[data-tela="ficha"] .topo-busca { max-width: 520px; margin-left: auto; }
}

/* cabeçalho compacto (c): aparece quando o destaque sai da tela */
.compacto { position: fixed; left: 0; right: 0; top: 0; z-index: 20; background: rgba(245, 244, 248, .97);
  border-bottom: 1px solid var(--linha); }
.compacto-linha { margin: 0 auto; padding: 4px var(--margem); display: flex; align-items: center;
  gap: 12px; min-height: 56px; }
.compacto-voltar { display: inline-flex; align-items: center; gap: 8px; min-height: 48px; padding: 0 12px 0 4px;
  border-right: 1px solid var(--linha); border-radius: 0; flex: none; }
.compacto-nome { font-weight: 600; min-width: 0; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.compacto-valor { margin-left: auto; color: var(--violeta); font-weight: 600; white-space: nowrap; }

/* ----------------------------------------------------------------- cartão */
.cartao { background: var(--cartao); border: 1px solid var(--linha); border-radius: var(--r-cartao);
  padding: var(--dentro); box-shadow: var(--sombra-cartao); min-width: 0; }
.cartao > .rotulo:first-child { display: block; margin-bottom: 12px; }
.cartao h2 + .secundario, .cartao h3 + .secundario { margin-top: 4px; }
.bloco-titulo { margin: 8px 0 12px; }

/* grade fluida: uma coluna no telefone, duas no tablet, e o ultrawide GANHA coluna */
.grade { display: grid; gap: var(--entre); grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
  align-items: start; grid-auto-flow: row dense; }
.grade > .largo { grid-column: 1 / -1; }
@media (min-width: 1200px) { .grade > .duplo { grid-column: span 2; } }

/* ------------------------------------------------------------- botões */
.botao { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 52px;
  padding: 0 20px; border-radius: var(--r-botao); font-weight: 600; text-decoration: none; text-align: center; }
.botao-principal { background: var(--violeta); color: var(--sobre-violeta); }
.botao-principal:hover { background: var(--violeta-forte); color: var(--sobre-violeta); }
.botao-secundario { background: var(--cartao); color: var(--tinta); border: 1px solid var(--linha-controle); }
.botao-secundario:hover { border-color: var(--tinta); color: var(--tinta); }
.botao-largo { width: 100%; }
.botao[aria-busy="true"] { opacity: .75; }
.link-botao { color: var(--violeta); text-decoration: underline; text-underline-offset: 3px; font-weight: 500;
  min-height: 44px; display: inline-flex; align-items: center; }
.link-seta { display: inline-flex; align-items: center; gap: 4px; font-weight: 600; text-decoration: none; min-height: 44px; }
.link-seta .ico { width: 18px; height: 18px; }

/* --------------------------------------------------------------- busca */
.busca { position: relative; }
.busca-caixa { display: flex; align-items: center; gap: 12px; height: 56px; padding: 0 8px 0 16px;
  background: var(--cartao); border: 1px solid var(--linha-controle); border-radius: var(--r-campo); }
.busca-caixa:focus-within { border-color: var(--violeta); box-shadow: var(--anel); }
.busca-caixa .ico { color: var(--tinta); }
.busca-campo { flex: 1 1 auto; min-width: 0; height: 100%; border: 0; background: transparent; color: var(--tinta);
  font: 400 17px/1 var(--fonte); appearance: none; -webkit-appearance: none; padding: 0; }
.busca-campo::placeholder { color: var(--cinza); opacity: 1; }
.busca-campo::-webkit-search-cancel-button, .busca-campo::-webkit-search-decoration { -webkit-appearance: none; display: none; }
.busca-campo:-webkit-autofill { -webkit-box-shadow: 0 0 0 40px var(--cartao) inset; -webkit-text-fill-color: var(--tinta); }
.busca-campo:focus-visible { box-shadow: none; }
.busca-limpar { width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center;
  border-radius: 999px; color: var(--cinza); flex: none; }
.busca-limpar:hover { color: var(--tinta); background: var(--trilho); }
.busca-botao { margin-top: 12px; }
.busca-grande .busca-caixa { height: 56px; }
@media (min-width: 768px) {
  .busca-grande .busca-caixa { height: 64px; padding-right: 6px; }
  .busca-grande .busca-botao { margin: 0; min-height: 52px; height: 52px; padding: 0 28px; }
  .busca-grande .busca-fora { display: none; }
}
@media (max-width: 767px) { .busca-grande .busca-dentro { display: none; } }
.busca-compacta .busca-caixa { height: 48px; }
.busca-compacta .busca-campo { font-size: 16px; }
.busca-fechar { display: none; }
@media (max-width: 767px) {
  .busca-compacta .busca-fechar { display: inline-flex; }
}

/* lista de sugestões (nossa, não datalist) */
.sugestoes { position: absolute; left: 0; right: 0; top: calc(100% + 6px); z-index: 30; background: var(--cartao);
  border: 1px solid var(--linha-controle); border-radius: var(--r-campo); box-shadow: var(--sombra-camada);
  padding: 8px; max-height: min(70dvh, 520px); overflow-y: auto; overscroll-behavior: contain; }
.sugestoes .rotulo { display: block; padding: 10px 12px 6px; }
.sugestao { display: flex; align-items: center; gap: 12px; min-height: 48px; padding: 8px 12px; border-radius: 10px;
  cursor: pointer; color: var(--tinta); }
.sugestao[aria-selected="true"], .sugestao:hover { background: var(--violeta-fundo); }
.sugestao-nome { font-weight: 600; overflow-wrap: anywhere; }
.sugestao-sub { font-size: 14px; color: var(--cinza); }
.sugestao-valor { margin-left: auto; font-size: 14px; color: var(--violeta); font-weight: 600; white-space: nowrap; }
.sugestao-todos { justify-content: center; color: var(--violeta); font-weight: 600; }
.sugestoes-vazio, .sugestoes-erro { padding: 12px; font-size: 14px; color: var(--cinza); }
.sugestoes-erro { color: var(--tinta); display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }

/* ------------------------------------------------------------- pílulas */
.pilulas { display: flex; flex-wrap: wrap; gap: 8px; padding: 2px; }
.pilulas .pilula-extra:not([aria-pressed="true"]) { display: none; }
.pilula { flex: none; max-width: 100%; white-space: normal; min-height: 44px; padding: 0 20px; border-radius: 999px; border: 1px solid var(--linha-controle);
  background: var(--cartao); font-weight: 500; position: relative; }
.pilula::after { content: ""; position: absolute; inset: -2px 0; }
.pilula[aria-pressed="true"] { background: var(--tinta); border-color: var(--tinta); color: #fff; }
.pilula:hover:not([aria-pressed="true"]) { border-color: var(--tinta); }
.pilula-mais .ico { width: 18px; height: 18px; margin-left: 4px; vertical-align: -4px; }


/* ----------------------------------------------- barras (etapas e listas) */
.etapas { display: grid; gap: 16px; margin-top: 16px; }
.etapa-linha { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; margin-bottom: 8px; }
.etapa-nome { font-weight: 500; }
.etapa-valor { font-weight: 600; white-space: nowrap; color: var(--cinza); }
.etapa-pago .etapa-nome, .etapa-pago .etapa-valor { color: var(--violeta); font-weight: 600; }
.trilho { display: block; height: 10px; border-radius: 999px; background: var(--trilho); overflow: hidden; }
.trilho > i { display: block; height: 100%; border-radius: 999px; background: var(--barra-pago);
  transform-origin: left; transition: width .18s var(--suave); }
.trilho.prometido > i { background: var(--barra-prometido); }
.trilho.entregue > i { background: var(--barra-entregue); }
.trilho.neutro > i { background: var(--barra-neutra); }
.trilho.fino { height: 8px; }

.lista-barras > li + li { border-top: 1px solid var(--linha); }
.item-barra { display: block; padding: 12px 0; color: var(--tinta); text-decoration: none; }
a.item-barra:hover .item-nome { color: var(--violeta); text-decoration: underline; }
.item-topo { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 8px; }
.item-nome { font-weight: 600; overflow-wrap: anywhere; line-height: 1.3; }
.item-sub { display: block; font-size: 14px; color: var(--cinza); font-weight: 400; line-height: 1.4; }
.item-valor { font-weight: 600; white-space: nowrap; text-align: right; }
.item-valor.violeta { color: var(--violeta); }
.item-sem-autor .item-nome { font-style: italic; color: var(--cinza); font-weight: 500; }
.item-sem-autor .item-valor { color: var(--cinza); }
.item-com-icone { display: grid; grid-template-columns: 40px 1fr; gap: 12px; align-items: center; }
.item-icone { width: 40px; height: 40px; border-radius: 10px; display: inline-flex; align-items: center;
  justify-content: center; color: var(--tinta); }
.lista-linhas > li + li { border-top: 1px solid var(--linha); }
.linha-simples { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 12px 0;
  color: var(--tinta); text-decoration: none; min-height: 48px; }
a.linha-simples:hover .item-nome { color: var(--violeta); text-decoration: underline; }
.mais-lista { margin-top: 12px; }

/* ----------------------------------------------------- faixas e etiquetas */
.faixa { display: flex; gap: 12px; align-items: flex-start; background: var(--aviso-fundo); border-radius: 12px;
  padding: 14px 16px; font-size: 14px; line-height: 1.5; color: var(--tinta); margin-top: 16px; }
.faixa .ico { width: 24px; height: 24px; margin-top: -1px; }
.alerta { background: var(--alerta-fundo); border: 1px solid var(--alerta-borda); border-radius: var(--r-cartao);
  padding: var(--dentro); display: grid; grid-template-columns: 32px 1fr; gap: 12px 14px; min-width: 0; }
.alerta > .ico { width: 32px; height: 32px; color: var(--alerta-borda); }
.alerta h2 { font-size: 18px; line-height: 1.3; }
.alerta ul { display: grid; gap: 10px; margin-top: 12px; }
.alerta li { line-height: 1.45; }
.alerta li b { font-weight: 600; }
.alerta li span { color: var(--tinta); }
.alerta .secundario { color: #5E5864; margin-top: 12px; }
.alerta .nao-prova { font-size: 15px; margin-top: 12px; color: var(--tinta); }
.nota-doacao h2 { font-size: 18px; line-height: 1.3; }
.etiqueta { display: inline-flex; align-items: center; min-height: 24px; padding: 2px 8px; border-radius: var(--r-etiqueta);
  font-size: 13px; font-weight: 600; line-height: 1.3; white-space: nowrap; }
.etiqueta-alerta { background: var(--alerta-fundo); color: var(--alerta-texto); }
.etiqueta-cinza { background: var(--aviso-fundo); color: #5E5864; }
.selo { display: block; width: fit-content; max-width: 100%; font: 400 12px/1.6 var(--mono); letter-spacing: .1em;
  text-transform: uppercase; color: var(--cinza); border: 1px solid var(--linha); border-radius: 8px;
  padding: 6px 12px; background: var(--cartao); overflow-wrap: anywhere; }
.selo-faixa { margin: 12px 0; }

/* --------------------------------------------------------- destaque */
.destaque .valor-grande { font-size: 40px; line-height: 1.12; font-weight: 600; letter-spacing: -.01em;
  color: var(--violeta); overflow-wrap: anywhere; }
.destaque .valor-de { font-size: 20px; line-height: 1.3; color: var(--cinza); margin-top: 6px; font-weight: 500; }
.destaque .valor-de b { font-weight: 600; color: #4E4855; }
.destaque .frase { font-size: 16px; color: var(--cinza); margin-top: 10px; }
@media (min-width: 768px) {
  .destaque .valor-grande { font-size: 52px; }
  .destaque .valor-de { font-size: 22px; }
}

/* ----------------------------------------------------------- identidade */
.cabeca { display: grid; gap: 16px; padding: 8px 0 16px; }
.identidade { display: grid; grid-template-columns: auto 1fr; gap: 16px; align-items: center; min-width: 0; }
.foto { width: 72px; height: 72px; border-radius: 999px; object-fit: cover; background: var(--esqueleto);
  border: 1px solid var(--linha); flex: none; }
.foto-vazia { display: inline-flex; align-items: center; justify-content: center; color: #A7A2AE; }
.foto-vazia .ico { width: 40px; height: 40px; }
.nome-ficha { font-size: 28px; line-height: 1.2; letter-spacing: -.01em; overflow-wrap: anywhere; }
.quem-e { color: var(--cinza); font-size: 16px; margin-top: 4px; }
@media (min-width: 768px) {
  .nome-ficha { font-size: 40px; }
  .quem-e { font-size: 18px; }
  .foto { width: 96px; height: 96px; }
}
@media (min-width: 1200px) {
  .cabeca { grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
  .cabeca .pilulas { justify-content: flex-end; }
}

/* ----------------------------------------------------------- gráfico */
.grafico { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 8px; align-items: end;
  height: 210px; padding-top: 8px; border-bottom: 1px solid var(--linha); }
.coluna { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; min-width: 0; }
.coluna-valor { font-size: 13px; font-weight: 600; white-space: nowrap; margin-bottom: 4px; letter-spacing: -.01em; }
.coluna-barra { width: min(100%, 64px); background: var(--barra-pago); border-radius: 6px 6px 0 0; min-height: 2px; }
.coluna.andamento .coluna-barra { background: var(--violeta-fundo); border: 1px dashed var(--barra-prometido); border-bottom: 0; }
.anos { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 8px; margin-top: 6px; }
.ano { text-align: center; font-size: 14px; color: var(--cinza); line-height: 1.2; }
.ano small { display: block; font-size: 12px; }
@media (max-width: 420px) { .coluna-valor { font-size: 12px; } .grafico, .anos { gap: 4px; } }

/* ------------------------------------------------------------- mapa */
.mapa-cartao { display: grid; gap: 16px; }
.mapa-cabeca { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; }
.mapa-corpo { display: grid; gap: 16px; }
@media (min-width: 1000px) { .mapa-corpo { grid-template-columns: minmax(0, 1.6fr) minmax(240px, 1fr); align-items: start; } }
.mapa-moldura { position: relative; }
.mapa { width: 100%; height: auto; display: block; touch-action: manipulation; border-radius: 12px; }
.mapa:focus-visible { box-shadow: var(--anel); }
.mapa path { stroke: var(--mapa-borda); stroke-width: .7; vector-effect: non-scaling-stroke; cursor: pointer;
  transition: fill .18s; }
.mapa path.f0 { fill: var(--mapa-0); } .mapa path.f1 { fill: var(--mapa-1); } .mapa path.f2 { fill: var(--mapa-2); }
.mapa path.f3 { fill: var(--mapa-3); } .mapa path.f4 { fill: var(--mapa-4); } .mapa path.f5 { fill: var(--mapa-5); }
.mapa path.sd { fill: url(#hachura); }
.mapa path.atual { stroke: var(--tinta); stroke-width: 2.5; }
.mapa path.ativo { stroke: var(--tinta); stroke-width: 2; }
.mapa-pino { pointer-events: none; }
.mapa-dica { position: absolute; z-index: 4; pointer-events: none; background: var(--tinta); color: #fff; border-radius: 10px;
  padding: 8px 12px; font-size: 14px; line-height: 1.35; max-width: 240px; transform: translate(-50%, calc(-100% - 12px)); }
.mapa-dica b { font-weight: 600; display: block; }
.mapa-info { min-height: 72px; display: grid; gap: 4px; padding: 12px 14px; border-radius: 12px; background: var(--osso); }
.mapa-info .item-nome { font-size: 16px; }
.mapa-info-acao { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; margin-top: 4px; }
.legenda { display: grid; gap: 6px; font-size: 14px; }
.legenda li { display: flex; align-items: center; gap: 10px; }
.legenda .cor { width: 22px; height: 14px; border-radius: 4px; flex: none; border: 1px solid rgba(9, 7, 12, .12); }
.legenda .c0 { background: var(--mapa-0); } .legenda .c1 { background: var(--mapa-1); } .legenda .c2 { background: var(--mapa-2); }
.legenda .c3 { background: var(--mapa-3); } .legenda .c4 { background: var(--mapa-4); } .legenda .c5 { background: var(--mapa-5); }
.legenda .csd { background: repeating-linear-gradient(45deg, var(--mapa-sem-dado) 0 3px, #fff 3px 6px); }
.legenda .catual { background: #fff; border: 2.5px solid var(--tinta); }
.escolher-uf { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 14px; border-radius: 999px;
  border: 1px solid var(--linha-controle); background: var(--cartao); font-weight: 500; }
.escolher-uf .ico { width: 18px; height: 18px; }

/* --------------------------------------------------------- linha do tempo */
.tempo { position: relative; display: grid; gap: 24px; }
.tempo > li { display: grid; grid-template-columns: 40px 1fr; gap: 16px; position: relative; }
.tempo > li:not(:last-child)::before { content: ""; position: absolute; left: 19px; top: 40px; bottom: -24px; width: 2px;
  background: var(--linha); }
.passo { width: 40px; height: 40px; border-radius: 999px; border: 1px solid var(--linha); background: var(--cartao);
  display: inline-flex; align-items: center; justify-content: center; font-weight: 600; position: relative; z-index: 1; }
.passo.pago { background: var(--violeta); color: #fff; border-color: var(--violeta); }
.passo-topo { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; min-height: 40px; flex-wrap: wrap; }
.passo-topo h3 { font-size: 18px; line-height: 1.3; padding-top: 8px; }
.passo-topo .valor { font-size: 18px; }
.pago-texto h3, .pago-texto .valor { color: var(--violeta); }
.passo-corpo { color: var(--cinza); font-size: 15px; margin-top: 2px; overflow-wrap: anywhere; }
.meses { font: 400 13px/1.7 var(--mono); color: #5E5864; margin-top: 6px; display: grid;
  grid-template-columns: auto auto; justify-content: start; column-gap: 16px; }
.autor-mini { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; margin-top: 4px; }
.autor-mini .foto { width: 44px; height: 44px; }
.autor-mini .foto-vazia .ico { width: 24px; height: 24px; }

/* ---------------------------------------------------------- cartão de pessoa */
.pessoa { display: grid; gap: 0; color: var(--tinta); text-decoration: none; padding: 0; overflow: hidden; }
.pessoa:hover { border-color: var(--violeta); color: var(--tinta); }
.pessoa-topo { display: grid; grid-template-columns: auto 1fr; gap: 16px; align-items: center; padding: var(--dentro); }
.pessoa-nome { font-size: 18px; font-weight: 600; line-height: 1.25; overflow-wrap: anywhere; }
.pessoa-numeros { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--linha); }
.pessoa-numeros > div { padding: 12px var(--dentro); }
.pessoa-numeros > div + div { border-left: 1px solid var(--linha); }
.pessoa-numeros b { display: block; font-size: 18px; font-weight: 600; margin-top: 4px; }
.pessoa-ver { display: flex; justify-content: space-between; align-items: center; padding: 12px var(--dentro);
  border-top: 1px solid var(--linha); font-weight: 600; min-height: 48px; }
.pessoa-aviso { font-size: 14px; color: var(--cinza); margin-top: 4px; }

/* --------------------------------------------------------------- estados */
.esqueleto { background: var(--esqueleto); border-radius: 12px; animation: pulso 1.4s ease-in-out infinite; }
@keyframes pulso { 50% { opacity: .55; } }
@media (prefers-reduced-motion: reduce) { .esqueleto { animation: none; } .trilho > i, .mapa path { transition: none; } }
.carregando-frase { color: var(--cinza); font-size: 14px; margin-top: 16px; }
.estado { display: grid; justify-items: center; text-align: center; gap: 12px; padding: 32px 16px; }
.estado .ico-grande { width: 72px; height: 72px; stroke-width: 1.4; color: #4E4855; }
.estado h2 { font-size: 22px; line-height: 1.25; max-width: 28ch; }
.estado p { color: var(--cinza); max-width: 44ch; }
.estado .botao { margin-top: 8px; min-width: min(100%, 280px); }
.bloco-erro { display: grid; gap: 8px; }
.bloco-erro .botao { width: fit-content; }
.atualizando { opacity: .55; transition: opacity .18s; }

/* ---------------------------------------------------- camadas (nossas) */
.veu { position: fixed; inset: 0; z-index: 60; background: rgba(9, 7, 12, .38); display: flex; align-items: flex-end;
  justify-content: center; }
@media (min-width: 768px) { .veu { align-items: center; padding: 24px; } }
.painel { background: var(--cartao); width: 100%; max-width: 560px; max-height: 88dvh; overflow-y: auto;
  border-radius: 20px 20px 0 0; padding: 20px var(--dentro) calc(20px + env(safe-area-inset-bottom)); box-shadow: var(--sombra-camada);
  overscroll-behavior: contain; }
@media (min-width: 768px) { .painel { border-radius: 20px; padding: 28px; } }
.painel-topo { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; }
.painel-topo h2 { font-size: 22px; }
.fechar { width: 48px; height: 48px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--linha-controle); flex: none; }
.fechar:hover { border-color: var(--tinta); }
.explica { display: grid; gap: 16px; }
.explica li { display: grid; grid-template-columns: 40px 1fr; gap: 12px; align-items: start; }
.explica p { color: var(--cinza); font-size: 15px; }
.opcoes { display: grid; gap: 2px; margin-top: 8px; }
.opcao { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 48px; padding: 8px 12px;
  border-radius: 10px; cursor: pointer; }
.opcao[aria-selected="true"] { font-weight: 600; }
.opcao[aria-selected="true"]::after { content: ""; width: 10px; height: 10px; border-radius: 99px; background: var(--violeta); }
.opcao.ativa, .opcao:hover { background: var(--violeta-fundo); }
.filtro-opcoes { margin-top: 4px; }
.filtro-opcoes .busca-caixa { height: 48px; }

/* -------------------------------------------------------------- rodapé */
.rodape { width: 100%; margin: var(--secao) auto 0; padding: 0 var(--margem) 24px; }
.rodape-linha { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; border-top: 1px solid var(--linha);
  padding-top: 16px; }
.rodape-arkanto { display: inline-flex; border-radius: 8px; }
.rodape-arkanto img { height: 48px; width: auto; display: block; }
.rodape-sep { width: 1px; height: 32px; background: var(--linha); }
.rodape-autor { display: inline-flex; align-items: center; gap: 10px; color: var(--cinza); text-decoration: none; font-size: 14px;
  min-height: 44px; }
.rodape-autor b { color: var(--tinta); font-weight: 600; }
.rodape-autor:hover b { text-decoration: underline; }

/* ---------------------------------------------------- prerender (piso) */
.pre { padding: 24px var(--margem); max-width: 860px; }
.pre h1 { font-size: 28px; line-height: 1.15; margin-bottom: 12px; }
.pre p { margin-top: 8px; color: var(--cinza); }
.pre-selo { font: 400 12px/1.5 var(--mono); text-transform: uppercase; letter-spacing: .1em; }

/* ============================================================== TELAS === */
/* Início */
.inicio { display: grid; gap: var(--entre); padding-top: 8px; }
.inicio-titulo { font-size: 34px; line-height: 1.14; letter-spacing: -.01em; padding-bottom: 2px; }
.inicio-frase { font-size: 18px; color: var(--cinza); margin-top: 12px; max-width: 60ch; }
.inicio-busca { margin-top: 20px; }
.atalhos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr)); gap: 12px; margin-top: 12px; }
.atalho { display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 12px 16px; background: var(--cartao);
  border: 1px solid var(--linha-controle); border-radius: 14px; color: var(--tinta); text-decoration: none; font-weight: 600;
  line-height: 1.25; }
.atalho:hover { border-color: var(--tinta); color: var(--tinta); }
.atalho .ico { color: var(--tinta); }
.atalho .seta { margin-left: auto; width: 20px; height: 20px; }
.trocar-estado { font-size: 14px; }
.exemplo h2 { font-size: 24px; line-height: 1.15; margin: 6px 0 8px; letter-spacing: -.01em; }
.exemplo-pe { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 4px 16px;
  border-top: 1px solid var(--linha); margin-top: 4px; padding-top: 8px; }
.como-ler { display: grid; gap: 12px; }
.como-ler ol { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.como-ler li { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: start; }
.como-ler .bola { width: 28px; height: 28px; border-radius: 999px; background: var(--esqueleto); display: inline-flex;
  align-items: center; justify-content: center; font-size: 14px; font-weight: 600; color: #4E4855; }
.como-ler .pago .bola { background: var(--violeta); color: #fff; }
.como-ler b { display: block; font-weight: 600; line-height: 1.25; }
.como-ler .pago b { color: var(--violeta); }
.como-ler small { display: block; font-size: 14px; color: var(--cinza); line-height: 1.35; }
@media (max-width: 420px) { .como-ler ol { grid-template-columns: 1fr; } }
@media (min-width: 768px) {
  .inicio-titulo { font-size: clamp(40px, 4.4vw, 56px); }
  .inicio-topo { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); gap: var(--entre); align-items: stretch; }
  .inicio-chamada { padding: 40px 32px; }
  .exemplo h2 { font-size: 28px; }
}
@media (min-width: 1200px) {
  .inicio-topo { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
}
@media (min-width: 2000px) {
  .inicio-topo { grid-template-columns: minmax(0, 6fr) minmax(0, 4fr) minmax(0, 4fr); }
  .inicio-topo .como-ler { align-self: stretch; }
}

/* fichas */
.ficha { display: grid; gap: var(--entre); }
.secao-titulo { font-size: 22px; line-height: 1.25; margin: 12px 0 0; }
@media (min-width: 768px) {
  .so-telefone { display: none !important; }
  .ficha .alerta-bloco { order: 3; }
}
@media (max-width: 767px) { .so-grande { display: none !important; } }
.ficha-cidade-rotulo { margin-bottom: 4px; display: block; }

/* emenda */
.emenda-cabeca { padding: 8px 0 16px; }
.emenda-titulo { font-size: 28px; line-height: 1.2; letter-spacing: -.01em; margin-top: 8px; overflow-wrap: anywhere; }
.emenda-resumo .valor-grande { font-size: 36px; }
.falta { display: flex; align-items: center; gap: 10px; margin-top: 12px; color: var(--cinza); }
.falta i { width: 18px; height: 18px; border-radius: 99px; background: var(--violeta-fundo); border: 1px solid var(--barra-prometido); }
.numero-emenda { font: 400 12px/1.6 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--cinza); margin-top: 12px; }
.emenda-grade { display: grid; gap: var(--entre); }
.emenda-lado { display: grid; gap: var(--entre); align-content: start; }
@media (min-width: 768px) { .emenda-titulo { font-size: 36px; } .emenda-resumo .valor-grande { font-size: 48px; } }
@media (min-width: 1100px) {
  .emenda-grade { grid-template-columns: minmax(0, 8fr) minmax(320px, 4fr); align-items: start; }
  .emenda-lado { position: sticky; top: 72px; }
}

/* busca */
.resultado-titulo { font-size: 26px; line-height: 1.2; letter-spacing: -.01em; }
@media (min-width: 768px) { .resultado-titulo { font-size: 36px; } }
.resultados { display: grid; gap: var(--entre); grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); }

@media (min-width: 768px) { .topo-como:not([hidden]) { display: inline-flex; } }
@media (max-width: 767px) {
  .inicio-chamada { background: none; border: 0; box-shadow: none; padding: 0 0 8px; }
  .busca-campo { font-size: 16px; }
  .rodape-sep { display: none; }
}
/* gráfico por ano: 8 anos quando o cartão tem largura, 5 quando não tem */
.cartao-grafico { container-type: inline-size; }
.nota-5 { display: none; }
@container (max-width: 520px) {
  .coluna-extra, .ano-extra, .nota-8 { display: none; }
  .nota-5 { display: block; }
}
/* ordem da maquete no computador: destaque | para onde foi | doações */
@media (min-width: 768px) {
  #b-destaque { order: 1; } #b-onde { order: 2; } #b-doacao { order: 3; } #b-mapa { order: 4; }
  #b-area { order: 5; } #b-recebeu { order: 6; } #b-ano { order: 7; } #b-tipo { order: 8; }
  #b-mandou, #b-ranking { order: 2; } #b-nasceram { order: 5; } #b-pix { order: 6; } #b-compara { order: 7; }
  #b-estaduais { order: 9; } #b-emendas, #b-selo { order: 20; }
  .inicio-topo .como-ler { grid-column: 1 / -1; }
  .inicio-chamada { display: flex; flex-direction: column; justify-content: center; }
}
@media (min-width: 2000px) { .inicio-topo .como-ler { grid-column: auto; } }

/* telefone e tablet: título, resumo, caminho, depois o aviso e o botão (maquete 04-telefone) */
@media (max-width: 1099px) {
  .emenda-grade { display: flex; flex-direction: column; }
  .emenda-grade > section, .emenda-grade > .emenda-lado { display: contents; }
  .emenda-cabeca { order: 0; } .emenda-resumo { order: 1; } #t-caminho, .tempo { order: 2; }
  .emenda-lado > :not(.emenda-resumo) { order: 3; }
}
@media (max-width: 1099px) { .cartao-conferir { background: none; border: 0; box-shadow: none; padding: 0; } }
.cabeca > *, .cabeca .identidade > div { min-width: 0; }
@media (max-width: 767px) {
  body[data-tela="ficha"] .topo-linha { gap: 8px; }
  body[data-tela="ficha"] .botao-voltar { padding: 0 12px 0 10px; gap: 6px; }
  body[data-tela="ficha"] .marca { gap: 8px; min-width: 0; }
  body[data-tela="ficha"] .marca-simbolo { width: 26px; height: 23px; }
}

/* conteúdo extremo (nome de 73 letras, R$ 1.234.567.890,99): o texto quebra,
   o valor fica inteiro, e nada empurra a largura da página */
body { overflow-wrap: anywhere; }
.marca-nome, .topo-como { white-space: normal; min-width: 0; }
.item-topo > :first-child, .linha-simples > :first-child, .etapa-linha > :first-child,
.passo-topo > :first-child, .mapa-cabeca > :first-child, .exemplo-pe > *, .atalho > span { min-width: 0; }
.item-valor, .etapa-valor, .valor, .coluna-valor, .sugestao-valor, .compacto-valor { overflow-wrap: normal; }
.busca-aviso:empty { display: none; }
.busca-aviso { margin-top: 8px; font-size: 14px; color: var(--tinta); }
.atalhos .trocar-estado { order: 3; grid-column: 1 / -1; justify-self: start; }

/* conteúdo extremo: o valor desce para a linha de baixo em vez de espremer o nome */
.item-topo, .linha-simples, .etapa-linha, .passo-topo { flex-wrap: wrap; }
.item-topo > :first-child, .linha-simples > :first-child, .etapa-linha > :first-child { flex: 1 1 14ch; }
.item-valor, .etapa-valor { margin-left: auto; }
@media (min-width: 1200px) { .cabeca { grid-template-columns: minmax(0, 1fr) fit-content(55%); } }
.topo-busca { max-width: none; }
@media (min-width: 768px) { body[data-tela="ficha"] .topo-busca { flex: 0 1 clamp(300px, 36vw, 640px); max-width: 640px; } }
.passo, .como-ler .bola { height: auto; min-height: 40px; min-width: 40px; width: auto; padding: 0 6px; }
.como-ler .bola { min-height: 28px; min-width: 28px; padding: 0 4px; }
.destaque .valor-grande { padding-bottom: 4px; }
.nome-ficha, .emenda-titulo, .inicio-titulo, .destaque .valor-grande { letter-spacing: 0; }
/* o caminho do dinheiro ganha coluna na tela muito larga (o número diz a ordem) */
@media (min-width: 1800px) {
  .tempo { grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); column-gap: 32px; }
  .tempo > li:not(:last-child)::before { display: none; }
}
.meu-estado { display: flex; align-items: center; gap: 12px; margin-top: 16px; font-weight: 500; }
/* valor e botão "Voltar" nunca empurram a largura: com a linha própria (flex-wrap) o valor
   quase nunca quebra; se o texto for extremo, quebra entre palavras, nunca no meio do número */
.item-valor, .etapa-valor { white-space: normal; }
.botao-voltar { flex: 0 1 auto; min-width: 0; max-width: 45%; }
.botao-voltar span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.marca { min-width: 0; flex-shrink: 1; }
.tempo > li { grid-template-columns: 40px minmax(0, 1fr); }
.passo-topo .valor { white-space: normal; margin-left: auto; }
.passo-topo .valor { overflow-wrap: anywhere; min-width: 0; }
/* o mapa chega depois do resto: a caixa já nasce com a altura dele (sem salto de layout) */
#mapa-desenho:empty, #mapa-desenho[aria-busy="true"] { min-height: min(72vw, 520px); }
#lista-emendas[aria-busy="true"]:not([data-cheio]) { min-height: 420px; }
#mapa-lado:empty { min-height: 320px; }
/* o rodapé nasce abaixo da dobra: a troca do resumo do servidor pela tela não o empurra (CLS) */
main { min-height: calc(100dvh - 72px); }
.ano small { overflow-wrap: normal; }
