/* app.css — Data de Pagamento. Só tokens (tema.css), nenhuma cor literal.
   Coluna única de 720px, corpo 17px, a folhinha como assinatura (docs/VISUAL.md). */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  font-size:17px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-underline-offset:3px}
a:hover{color:var(--accent-vivo)}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:4px}
h1,h2,h3{line-height:1.2;margin:0 0 .5em;letter-spacing:-.01em}
h1{font-size:clamp(26px,5vw,34px);font-weight:800}
h2{font-size:clamp(21px,4vw,25px);font-weight:750;margin-top:1.6em}
h3{font-size:18px;font-weight:700}
p{margin:0 0 1em;max-width:62ch}
ul,ol{padding-left:1.25em}
li{margin:.25em 0}
small,.mini{font-size:14.5px;color:var(--text2)}
.pagina{max-width:var(--maxw);margin:0 auto;padding:0 18px 56px}
.pular{position:absolute;left:-999px;top:0;background:var(--surface);padding:8px 12px;z-index:9}
.pular:focus{left:12px}

/* ── topo ─────────────────────────────────────────────────────────────────── */
.topo{border-bottom:1px solid var(--line);background:var(--surface)}
.topo-linha{max-width:var(--maxw);margin:0 auto;padding:12px 18px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.marca{display:inline-flex;align-items:center;gap:10px;color:var(--text);text-decoration:none;font-weight:800;font-size:19px;letter-spacing:-.01em}
.marca svg{width:30px;height:30px;flex:none}
.marca b{color:var(--accent);font-weight:800}
.topo-nav{display:flex;gap:4px 18px;flex-wrap:wrap;font-size:15.5px}
.topo-nav a{color:var(--text2);text-decoration:none;padding:6px 0;border-bottom:2px solid transparent}
.topo-nav a:hover,.topo-nav a[aria-current="page"]{color:var(--text);border-bottom-color:var(--accent)}
.rastro{font-size:14.5px;color:var(--muted);margin:14px 0 4px;display:flex;flex-wrap:wrap;gap:4px 8px}
.rastro a{color:var(--muted)}

/* ── a folhinha (assinatura) ──────────────────────────────────────────────── */
.resposta{display:grid;grid-template-columns:minmax(150px,190px) 1fr;gap:22px;align-items:start;margin:22px 0 10px}
.folhinha{background:var(--surface);border:1px solid var(--line2);border-radius:8px 8px 12px 12px;
  box-shadow:var(--shadow);text-align:center;padding:0 10px 14px;position:relative;overflow:hidden}
.folhinha-furos{height:18px;border-bottom:1px dashed var(--line2);display:flex;justify-content:space-evenly;align-items:center;margin:0 -10px 6px;background:var(--surface2)}
.folhinha-furos i{width:8px;height:8px;border-radius:50%;background:var(--bg);border:1px solid var(--line2);display:block}
.folhinha-mes{font-size:15px;font-weight:700;color:var(--accent);letter-spacing:.02em;text-transform:lowercase}
.folhinha-dia{font-size:clamp(64px,18vw,104px);font-weight:900;line-height:1;letter-spacing:-.04em;
  font-variant-numeric:tabular-nums;color:var(--text);margin:2px 0 4px}
.folhinha-semana{font-size:15px;color:var(--text2);text-transform:lowercase}
.folhinha.prevista .folhinha-dia{color:var(--text2)}
.folhinha.sem-data .folhinha-dia{font-size:44px;color:var(--muted);padding:18px 0}
.resposta-texto{min-width:0}
.resposta-frase{font-size:clamp(19px,3.4vw,23px);font-weight:600;line-height:1.35;margin:0 0 12px;max-width:none}
.resposta-frase .selo{vertical-align:middle;margin-left:4px}
.resposta-fonte{font-size:15px;color:var(--text2);margin:0 0 10px}
.aviso-identidade{font-size:15px;color:var(--text2);background:var(--surface2);border-left:4px solid var(--accent);
  padding:9px 12px;border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin:4px 0 0;max-width:none}
@media (max-width:560px){
  .resposta{grid-template-columns:1fr;gap:14px}
  .folhinha{max-width:210px}
}

/* ── selos de confiança (estado, nunca marca) ─────────────────────────────── */
.selo{display:inline-block;font-size:13px;font-weight:700;line-height:1;padding:5px 8px;border-radius:999px;white-space:nowrap;letter-spacing:.01em}
.selo-confirmada{background:var(--good-soft);color:var(--good)}
.selo-calculada{background:var(--info-soft);color:var(--info)}
.selo-prevista{background:var(--warn-soft);color:var(--warn)}
.selo-alterada{background:var(--bad-soft);color:var(--bad)}
.legenda-selos{font-size:14.5px;color:var(--text2);display:flex;flex-wrap:wrap;gap:8px 16px;margin:10px 0 0}

/* ── ferramenta do final ──────────────────────────────────────────────────── */
.ferramenta{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin:22px 0}
.ferramenta h2{margin-top:0;font-size:19px}
.ferramenta p{margin-bottom:10px}
.finais{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;max-width:360px}
.finais a,.finais button{display:flex;align-items:center;justify-content:center;height:52px;border:1.5px solid var(--line2);border-radius:var(--radius-sm);
  background:var(--surface);color:var(--text);font-size:22px;font-weight:800;text-decoration:none;cursor:pointer;font-variant-numeric:tabular-nums}
.finais a:hover,.finais button:hover{border-color:var(--accent);background:var(--accent-soft)}
.finais a[aria-current="true"]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.meses{grid-template-columns:repeat(4,1fr);max-width:420px}
.meses a{font-size:15px;font-weight:700}
.faixas{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 14px}
.faixas a{padding:8px 12px;border:1.5px solid var(--line2);border-radius:999px;text-decoration:none;color:var(--text);font-size:15px}
.faixas a[aria-current="true"]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}

/* ── tabela do mês ────────────────────────────────────────────────────────── */
.tabela-wrap{overflow-x:auto;margin:6px 0 4px}
table.datas{width:100%;border-collapse:collapse;font-size:16.5px}
table.datas th{text-align:left;font-size:14px;color:var(--muted);font-weight:700;padding:6px 8px;border-bottom:2px solid var(--line2)}
table.datas td{padding:12px 8px;border-bottom:1px solid var(--line);vertical-align:middle;height:52px}
table.datas td.n{font-weight:900;font-size:22px;font-variant-numeric:tabular-nums;width:74px;color:var(--accent)}
/* rótulo textual (mês, parcela) na primeira coluna: mesma função, sem o peso do dígito */
table.datas td.n.rotulo{font-size:15.5px;font-weight:700;width:auto;min-width:96px;color:var(--text2)}
table.datas td.d{font-weight:600;white-space:nowrap}
table.datas td.d small{display:block;font-weight:400;color:var(--muted)}
table.datas tr.hoje td{background:var(--accent-soft)}
table.datas tr.passou td.d{color:var(--muted)}
table.datas td.dom{color:var(--domingo)}
.nota{font-size:14.5px;color:var(--text2);margin:8px 0 0}

/* ── listas de meses e famílias (índice de folhinha) ──────────────────────── */
.indice{list-style:none;padding:0;margin:0}
.indice li{margin:0;border-bottom:1px solid var(--line)}
.indice a{display:flex;justify-content:space-between;align-items:baseline;gap:6px 14px;padding:13px 4px;text-decoration:none;color:var(--text);font-weight:600;flex-wrap:wrap}
.indice a:hover{background:var(--accent-soft)}
.indice a span{color:var(--muted);font-weight:400;font-size:15px;white-space:nowrap}
/* Abaixo de 560px o rótulo da esquerda quebra em 2 ou 3 linhas e a coluna da direita passa a
   disputar a mesma faixa (as duas se atropelam). Empilhar: a pergunta em cima, o dado embaixo. */
@media (max-width:560px){
  .indice a{flex-direction:column;gap:2px}
  .indice a span{white-space:normal}
}
.indice a b{color:var(--accent);font-weight:800}
/* Nada de `align-items:center` aqui: quando o índice empilha no celular (coluna), centralizar
   no eixo cruzado joga o rótulo e o selo para o meio da linha, fora do alinhamento do resto. */
.hoje-lista .n{font-size:15px;color:var(--text2);font-weight:400}

/* ── CTA (um por tela) ────────────────────────────────────────────────────── */
.cta-bloco{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin:26px 0;display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center;justify-content:space-between}
.cta-bloco p{margin:0;max-width:44ch}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border-radius:var(--radius-sm);border:1.5px solid var(--accent);
  background:var(--accent);color:var(--accent-ink);font-weight:700;font-size:16.5px;text-decoration:none;cursor:pointer;font-family:inherit}
.btn:hover{background:var(--accent-vivo);border-color:var(--accent-vivo);color:var(--accent-ink)}
.btn.claro{background:var(--surface);color:var(--accent)}
.btn.claro:hover{background:var(--accent-soft)}
.acoes{display:flex;flex-wrap:wrap;gap:10px}

/* ── FAQ, metodologia, rodapé ─────────────────────────────────────────────── */
.faq details{border-bottom:1px solid var(--line);padding:6px 0}
.faq summary{cursor:pointer;font-weight:700;padding:8px 0;list-style:none;display:flex;justify-content:space-between;gap:12px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--accent);font-weight:900;flex:none}
.faq details[open] summary::after{content:"–"}
.faq p{margin:4px 0 10px}
.metodo{background:var(--surface2);border-radius:var(--radius);padding:14px 18px;margin:28px 0 0;font-size:15px;color:var(--text2)}
.metodo p{margin:0 0 8px;max-width:none}
.metodo p:last-child{margin:0}
.rodape{border-top:1px solid var(--line);margin-top:40px;padding:22px 0 0;font-size:14.5px;color:var(--muted)}
.rodape p{max-width:none}
.rodape nav{display:flex;flex-wrap:wrap;gap:6px 18px;margin-bottom:10px}
.rodape a{color:var(--text2)}

/* ── modal de alerta ──────────────────────────────────────────────────────── */
.modal{position:fixed;inset:0;background:rgba(21,34,28,.55);display:flex;align-items:flex-end;justify-content:center;padding:0;z-index:20}
.modal[hidden]{display:none}
.modal-caixa{background:var(--surface);color:var(--text);width:100%;max-width:520px;border-radius:14px 14px 0 0;padding:20px 18px 26px;box-shadow:var(--shadow);max-height:92vh;overflow:auto}
@media (min-width:600px){.modal{align-items:center;padding:20px}.modal-caixa{border-radius:14px}}
.modal-caixa h2{margin:0 0 6px;font-size:21px}
.campo{display:block;margin:12px 0}
.campo span{display:block;font-weight:600;font-size:15px;margin-bottom:4px}
.campo input[type=text],.campo input[type=tel],.campo input[type=email],.campo select{width:100%;min-height:48px;border:1.5px solid var(--line2);border-radius:var(--radius-sm);padding:0 12px;font-size:17px;font-family:inherit;background:var(--surface);color:var(--text)}
.campo input:focus,.campo select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}
.radios{display:flex;gap:10px}
.radios label{flex:1;display:flex;align-items:center;gap:8px;min-height:48px;padding:0 12px;border:1.5px solid var(--line2);border-radius:var(--radius-sm);cursor:pointer}
.radios input{accent-color:var(--accent);width:20px;height:20px}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:15px;margin:14px 0}
.consent input{accent-color:var(--accent);width:22px;height:22px;flex:none;margin-top:2px}
.modal-acoes{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}
.erro{color:var(--bad);font-size:15px;margin:6px 0 0}
.ok{color:var(--good);font-weight:600}

/* ── página de erro / vazio ───────────────────────────────────────────────── */
.vazio{background:var(--surface2);border-radius:var(--radius);padding:18px;margin:16px 0}
@media (prefers-reduced-motion:no-preference){.btn,.finais a,.indice a{transition:background-color .15s,border-color .15s}}
