/* Folha de estilo estrutural do gerador cap-gocsites.
 * Cor NUNCA é literal aqui: tudo vem das custom properties definidas por
 * geração (:root, injetado no <head> a partir de identidade.paleta do
 * marca.json). Trocar a paleta é editar o marca.json e regerar — não este
 * arquivo, que é copiado verbatim em toda geração.
 */

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}

body {
  margin: 0;
  font-family: var(--fonte);
  background: var(--bg);
  color: var(--ink);
  line-height: 1.55;
}

.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

.skip-link {
  position: absolute; left: -999px; top: 0; z-index: 100;
  background: var(--acento); color: var(--acento-texto);
  padding: .6rem 1rem; border-radius: 0 0 .4rem 0;
}
.skip-link:focus { left: 0; }

a { color: var(--acento); }
a:focus-visible, button:focus-visible, input:focus-visible, [tabindex]:focus-visible {
  outline: 3px solid var(--acento); outline-offset: 2px;
}

/* ---------- topo ---------- */
.topo { border-bottom: 1px solid var(--linha); background: var(--painel); }
.topo-faixa {
  max-width: 72rem; margin: 0 auto; padding: .9rem 1.2rem;
  display: flex; align-items: center; gap: 1rem; flex-wrap: wrap;
}
.marca { font-weight: 700; font-size: 1.15rem; text-decoration: none; color: var(--ink); }
#menu-principal { display: flex; gap: 1.1rem; flex-wrap: wrap; margin-left: auto; }
#menu-principal a { text-decoration: none; color: var(--ink); font-weight: 500; }
#menu-principal a:hover { color: var(--acento); }
.menu-toggle {
  display: none; margin-left: auto; background: none; border: 1px solid var(--linha-forte);
  border-radius: .4rem; font-size: 1.3rem; line-height: 1; padding: .3rem .6rem; color: var(--ink);
  cursor: pointer;
}

@media (max-width: 46rem) {
  .menu-toggle { display: inline-block; order: 2; }
  #menu-principal {
    order: 3; flex-basis: 100%; flex-direction: column; gap: .1rem;
    max-height: 0; overflow: hidden; margin-left: 0;
  }
  #menu-principal.aberto { max-height: 40rem; padding-top: .5rem; }
  #menu-principal a { padding: .5rem 0; border-top: 1px solid var(--linha); }
}

/* ---------- conteúdo ---------- */
main { max-width: 46rem; margin: 0 auto; padding: 2.4rem 1.2rem 4rem; }
.secao-larga main, main.larga { max-width: 72rem; }

.hero { text-align: left; padding: 1rem 0 2rem; }
.eyebrow { color: var(--acento); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; font-size: .85rem; }
h1 { font-size: clamp(1.7rem, 3.6vw, 2.6rem); line-height: 1.15; margin: .3rem 0 .6rem; }
h2 { font-size: 1.35rem; margin-top: 2rem; }
.subtitulo, .resumo { color: var(--muted); font-size: 1.08rem; max-width: 42rem; }

.selo {
  display: inline-block; font-size: .72rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .03em; padding: .15rem .5rem; border-radius: 1rem; margin-left: .5rem;
  border: 1px solid var(--linha-forte); color: var(--muted); vertical-align: middle;
}
.selo-ativo { color: var(--acento); border-color: var(--acento); }
.selo-em-breve { color: var(--muted); }
.selo-pre-cadastro { color: var(--muted); }

.lacuna {
  background: var(--painel); border: 1px dashed var(--linha-forte); border-radius: .5rem;
  padding: 1rem; color: var(--muted); font-style: italic;
}

.btn {
  display: inline-block; padding: .7rem 1.2rem; border-radius: .4rem; font-weight: 700;
  text-decoration: none; border: 2px solid var(--acento); cursor: pointer;
}
.btn.primario { background: var(--acento); color: var(--acento-texto); }
.btn.secundario { background: transparent; color: var(--acento); }
.btn[aria-disabled="true"] { opacity: .55; cursor: not-allowed; border-color: var(--linha-forte); color: var(--muted); }
.ctas { display: flex; gap: .8rem; flex-wrap: wrap; margin-top: 1.2rem; }

/* ---------- listas de cartão (índice, home) ---------- */
.grade-cartoes { list-style: none; margin: 1.6rem 0 0; padding: 0; display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); }
.cartao { border: 1px solid var(--linha-forte); border-radius: .6rem; background: var(--painel); }
.cartao a { display: block; padding: 1.1rem; text-decoration: none; color: var(--ink); }
.cartao.destaque { border-color: var(--acento); border-width: 2px; }
.cartao-resumo { display: block; color: var(--muted); font-size: .92rem; margin-top: .3rem; }

/* ---------- linktree ---------- */
.linktree { max-width: 28rem; margin: 2rem auto; text-align: center; }
.linktree ul { list-style: none; padding: 0; display: grid; gap: .8rem; }
.linktree a, .linktree span[role="link"] {
  display: block; padding: .9rem 1rem; border: 2px solid var(--acento); border-radius: .5rem;
  text-decoration: none; color: var(--ink); font-weight: 600; background: var(--painel);
}
.linktree span[role="link"] { opacity: .55; border-color: var(--linha-forte); cursor: not-allowed; }

/* ---------- slot de CTA reservado ---------- */
/* O comentário HTML que guarda este slot fica no template de home; aqui só o
 * estilo, para quando o slot for ativado. */
.cta-slot-home { margin-top: 2rem; }

/* ---------- rodapé ---------- */
.rodape { border-top: 1px solid var(--linha); margin-top: 3rem; background: var(--painel); }
.rodape-faixa { max-width: 72rem; margin: 0 auto; padding: 1.6rem 1.2rem; color: var(--muted); font-size: .88rem; }
.rodape-faixa p { margin: .25rem 0; }
.rodape-contatos a { color: var(--muted); }

/* ---------- VLibras ---------- */
div[vw] { z-index: 10000; }
