/* ===================================================================
   COMPONENTES DA PÁGINA
   Depende dos tokens de theme.css. Nenhuma cor literal aqui.
=================================================================== */

/* ---------- hero ----------
   A capa já traz o letreiro "A chapa oficial do Renan" desenhado na arte, então
   não vai texto nenhum por cima: a imagem entra inteira, sem corte, e só as
   pontas são dissolvidas no fundo — em cima para o topo fixo continuar legível,
   embaixo para a página seguir sem costura visível.                          */
.hero { position: relative; background: var(--fundo); }
.hero-capa { display: block; width: 100%; height: auto; }
.hero-veu {
  position: absolute; inset: 0; pointer-events: none;
  background:
    linear-gradient(180deg,
      color-mix(in srgb, var(--fundo) 62%, transparent) 0%,
      transparent 20%),
    linear-gradient(0deg,
      var(--fundo) 0%,
      color-mix(in srgb, var(--fundo) 45%, transparent) 8%,
      transparent 20%);
}
/*
 * No celular a arte fica baixa e o topo fixo caía em cima dos rostos. Aqui a
 * capa desce para começar abaixo do topo, e o escurecimento de cima sai junto:
 * ele existia só para o topo continuar legível sobre a foto.
 */
@media (max-width: 720px) {
  .hero { padding-top: 78px; }
  .hero-veu { background: linear-gradient(0deg, var(--fundo) 0%, transparent 18%); }
}

.hero-cards { display: grid; gap: 14px; }
.cartao-candidato {
  display: flex; align-items: center; gap: 14px;
  background: var(--fundo-2); border: 1px solid var(--linha);
  border-radius: var(--raio); padding: 16px; box-shadow: var(--sombra-sm);
}
/*
 * As duas fotos são quase quadradas, então o corte circular sozinho quase não
 * recorta nada e sobra margem em volta do rosto. O zoom de 112% come essa
 * margem, e o ponto em 28% da altura sobe o enquadramento para o rosto.
 * Se algum rosto ficar torto, é só mexer nesses dois valores.
 */
.cartao-candidato .foto {
  width: 78px; height: 78px; flex: 0 0 78px; border-radius: 50%;
  background: var(--fundo-3) center 28% / 112% no-repeat;
  border: 2px solid var(--acento);
  box-shadow: 0 0 0 4px var(--veu-2);
  display: grid; place-items: center;
  font-family: var(--fonte-cond); font-size: 1.3rem; font-weight: 600;
  color: var(--tinta-fraca);
  overflow: hidden;
}
.cartao-candidato .nome {
  font-family: var(--fonte-cond); font-size: 1.05rem;
  text-transform: uppercase; letter-spacing: .04em;
}
.cartao-candidato .cargo { font-size: .82rem; color: var(--tinta-fraca); }
.cartao-candidato .numero {
  margin-left: auto; flex: 0 0 auto;
  font-family: var(--fonte-titulo); font-size: 1.3rem; line-height: 1;
  color: var(--acento-tinta);
  background: linear-gradient(135deg, var(--acento-claro), var(--acento-escuro));
  padding: 8px 12px; border-radius: var(--raio-sm);
}
/* ---------- kits ---------- */
.grade-kits { display: grid; grid-template-columns: repeat(auto-fit, minmax(238px, 1fr)); gap: 18px; }
.kit {
  position: relative;
  background: var(--fundo-2); border: 1px solid var(--linha-fraca);
  border-radius: var(--raio); padding: 26px 22px;
  display: flex; flex-direction: column; gap: 12px;
  transition: border-color .2s ease, transform .2s ease;
}
.kit h3 { text-transform: uppercase; letter-spacing: .04em; font-size: 1.25rem; }
/* faixa de pontuação: a regra que faz o kit ser recomendado, dita na cara */
.kit-faixa {
  align-self: flex-start;
  font-family: var(--fonte-cond); font-size: .7rem;
  text-transform: uppercase; letter-spacing: .1em;
  color: var(--acento-claro);
  border: 1px solid var(--linha); border-radius: 999px;
  background: var(--veu-1); padding: 3px 11px;
}
.kit-resumo { color: var(--tinta-fraca); font-size: .9rem; }
.kit ul { list-style: none; display: grid; gap: 7px; font-size: .94rem; margin-top: 4px; }
.kit li { display: flex; gap: 10px; align-items: baseline; }
.kit li b {
  font-family: var(--fonte-cond); color: var(--acento-claro);
  min-width: 3.4em; text-align: right; font-size: 1rem;
}

.grade-kits-escolha .kit { cursor: pointer; }
.grade-kits-escolha .kit:hover { border-color: var(--acento); transform: translateY(-3px); }
.grade-kits-escolha .kit.selecionado {
  border-color: var(--acento);
  background: var(--veu-1);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--acento) 35%, transparent);
}
.grade-kits-escolha .kit.selecionado::after {
  content: "✓"; position: absolute; top: 16px; right: 18px;
  width: 26px; height: 26px; border-radius: 50%;
  background: var(--acento); color: var(--acento-tinta);
  display: grid; place-items: center; font-size: .82rem; font-weight: 700;
}
.kit-etiqueta {
  align-self: flex-start;
  font-family: var(--fonte-cond); font-size: .68rem;
  text-transform: uppercase; letter-spacing: .08em;
  color: var(--acento-tinta);
  background: linear-gradient(135deg, var(--acento-claro), var(--acento-escuro));
  padding: 3px 10px; border-radius: 999px;
}

/* ---------- adesivo ---------- */
.adesivo-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }
.adesivo-img img { width: 100%; height: auto; display: block; }
.adesivo-texto p { color: var(--tinta-fraca); margin-top: 16px; }
.lista-check { list-style: none; display: grid; gap: 14px; margin: 26px 0 30px; }
.lista-check li { padding-left: 30px; position: relative; color: var(--tinta-fraca); font-size: .96rem; }
.lista-check li::before {
  content: "✓"; position: absolute; left: 0; top: 0;
  color: var(--acento-claro); font-weight: 700;
}
.lista-check strong { color: var(--tinta); font-family: var(--fonte-cond); letter-spacing: .02em; }
.nota-perfurado {
  color: var(--tinta-fraca); font-size: .88rem; line-height: 1.6;
  max-width: 62ch; margin: 0 0 26px;
  padding-left: 14px; border-left: 2px solid var(--acento);
}
.nota-perfurado.centro { margin-inline: auto; text-align: left; }
@media (max-width: 880px) { .adesivo-inner { grid-template-columns: 1fr; gap: 32px; } }

/* ---------- passos ---------- */
.passos {
  list-style: none; display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px;
}
.passos li {
  background: var(--fundo-2); border: 1px solid var(--linha-fraca);
  border-radius: var(--raio); padding: 28px 24px;
}
.passo-num {
  display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%;
  font-family: var(--fonte-titulo); font-size: 1.2rem;
  color: var(--acento-tinta);
  background: linear-gradient(135deg, var(--acento-claro), var(--acento-escuro));
  margin-bottom: 16px;
}
.passos h3 { text-transform: uppercase; letter-spacing: .04em; margin-bottom: 8px; }
.passos p { color: var(--tinta-fraca); font-size: .93rem; }

/* ---------- formulário ---------- */
.secao-form { background: var(--fundo-2); }
.form-card {
  background: var(--fundo); border: 1px solid var(--linha);
  border-radius: 20px; padding: clamp(22px, 4vw, 40px);
  box-shadow: var(--sombra);
}

.progresso { margin-bottom: 32px; }
.progresso-barra { height: 6px; background: var(--fundo-3); border-radius: 999px; overflow: hidden; }
.progresso-barra span {
  display: block; height: 100%; width: 0; border-radius: 999px;
  background: linear-gradient(90deg, var(--acento-escuro), var(--acento-claro));
  transition: width .3s ease;
}
.progresso-texto {
  margin-top: 10px; font-family: var(--fonte-cond);
  text-transform: uppercase; letter-spacing: .1em;
  font-size: .78rem; color: var(--tinta-fraca);
}
.progresso-texto b { color: var(--acento-claro); }

.etapa { border: 0; min-width: 0; }
.etapa legend {
  font-family: var(--fonte-titulo); font-size: clamp(1.5rem, 3.5vw, 2rem);
  text-transform: uppercase; letter-spacing: .5px; line-height: 1;
  margin-bottom: 24px;
}

.campo { margin-bottom: 18px; }
.campo label {
  display: block; margin-bottom: 7px;
  font-family: var(--fonte-cond); font-size: .92rem;
  text-transform: uppercase; letter-spacing: .06em; color: var(--tinta);
}
.opcional { color: var(--tinta-fraca); text-transform: none; letter-spacing: 0; }

.campo input, .campo select {
  width: 100%; padding: 13px 15px;
  font-family: var(--fonte-corpo); font-size: 1rem; color: var(--tinta);
  background: var(--fundo-2);
  border: 1.5px solid var(--linha-fraca); border-radius: var(--raio-sm);
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
.campo select option { background: var(--fundo-2); color: var(--tinta); }
.campo input::placeholder { color: var(--tinta-fraca); opacity: .6; }
.campo input:focus, .campo select:focus {
  outline: none; border-color: var(--acento); background: var(--fundo-3);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--acento) 22%, transparent);
}
.campo.invalido input, .campo.invalido select { border-color: var(--erro); }

.ajuda { font-size: .82rem; color: var(--tinta-fraca); margin-top: 7px; }
.ajuda a { color: var(--acento-claro); border-bottom: 1px solid currentColor; }
.ajuda-topo { margin: -8px 0 24px; }
.erro { color: var(--erro); font-size: .84rem; margin-top: 7px; }
.erro:empty { display: none; }
.erro-geral { margin-top: 16px; font-family: var(--fonte-cond); letter-spacing: .04em; }

.linha { display: grid; grid-template-columns: 1fr 120px; gap: 16px; }
@media (max-width: 540px) { .linha { grid-template-columns: 1fr; } }

.bloco { margin-bottom: 30px; }
.bloco h3 {
  text-transform: uppercase; letter-spacing: .05em;
  font-size: 1rem; margin-bottom: 14px; color: var(--tinta);
}

.opcoes { display: grid; gap: 10px; }
.opcao {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 16px;
  background: var(--fundo-2);
  border: 1.5px solid var(--linha-fraca); border-radius: var(--raio-sm);
  cursor: pointer;
  transition: border-color .18s ease, background .18s ease;
}
.opcao:hover { border-color: var(--acento); }
.opcao input { accent-color: var(--acento); width: 18px; height: 18px; flex: 0 0 auto; }
.opcao:has(input:checked) { border-color: var(--acento); background: var(--veu-2); }
.condicional { margin-top: 16px; }

.recomendacao {
  background: var(--veu-2); border: 1px solid var(--linha);
  border-radius: var(--raio-sm); padding: 16px 20px; margin-bottom: 24px;
  font-size: .95rem; color: var(--tinta-fraca);
}
.recomendacao b { color: var(--acento-claro); font-family: var(--fonte-cond); letter-spacing: .03em; }

/* revisão */
.revisao { display: grid; gap: 12px; margin-bottom: 26px; }
.revisao-item {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 16px;
  padding: 16px 18px;
  background: var(--fundo-2); border: 1px solid var(--linha-fraca); border-radius: var(--raio-sm);
}
.revisao-item dt {
  font-family: var(--fonte-cond); font-size: .74rem;
  text-transform: uppercase; letter-spacing: .1em; color: var(--acento-claro);
}
.revisao-item dd { margin-top: 5px; font-size: .94rem; color: var(--tinta-fraca); }
.revisao-item button {
  flex: 0 0 auto; background: none; border: 0; cursor: pointer;
  font-family: var(--fonte-cond); font-size: .8rem;
  text-transform: uppercase; letter-spacing: .06em;
  color: var(--acento-claro); border-bottom: 1px solid currentColor;
}

.aceite { display: flex; gap: 12px; align-items: flex-start; font-size: .9rem; color: var(--tinta-fraca); }
.aceite input { accent-color: var(--acento); width: 18px; height: 18px; margin-top: 3px; flex: 0 0 auto; }
.aceite a { color: var(--acento-claro); border-bottom: 1px solid currentColor; }

.form-acoes { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 34px; }
.form-acoes .btn { flex: 1 1 150px; }
/* em tela estreita o rótulo longo ("Pedir meu material") não pode vazar o cartão */
@media (max-width: 480px) {
  .form-acoes .btn { padding-inline: 18px; font-size: .88rem; }
}

.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* sucesso */
.sucesso { text-align: center; padding: 10px 0; }
.sucesso-icone {
  width: 66px; height: 66px; margin: 0 auto 22px; border-radius: 50%;
  display: grid; place-items: center; font-size: 2rem;
  color: var(--acento-tinta);
  background: linear-gradient(135deg, var(--ok), color-mix(in srgb, var(--ok) 60%, black));
}
.sucesso p { color: var(--tinta-fraca); margin-top: 14px; }
.sucesso b { color: var(--tinta); }
.sucesso-acoes { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; margin-top: 28px; }

/* ---------- chamada final ---------- */
.secao-cta { text-align: center; }
.secao-cta p { color: var(--tinta-fraca); max-width: 54ch; margin: 18px auto 32px; }
