/* =========================================================
   Página de entrevista
   Mobile-first: praticamente todo acesso vem de QR code no celular.
   Sem fontes externas de propósito — na rua, no 4G, cada
   requisição a mais é meio segundo de tela em branco.
   ========================================================= */

:root {
  --ink:          #0E1729;
  --ink-claro:    #1B2942;
  --accent:       #FF5F2E;
  --accent-forte: #E04517;
  --accent-fraco: #FFF1EC;

  --surface:      #FFFFFF;
  --texto:        #17202F;
  --texto-suave:  #5C6879;
  --borda:        #E2E7EE;
  --campo:        #F4F6F9;
  --erro:         #C0341C;
  --erro-fraco:   #FEF2EF;

  --raio:         14px;
  --raio-cartao:  26px;

  --fonte: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
           "Helvetica Neue", Arial, sans-serif;

  --rapido: 140ms;
  --suave: cubic-bezier(0.16, 1, 0.3, 1);
}

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  font-family: var(--fonte);
  color: var(--texto);
  background-color: var(--ink);
  /* Brilho quente no topo + granulado sutil: tira o ar de "fundo chapado". */
  background-image:
    radial-gradient(120% 70% at 50% -10%, rgba(255, 95, 46, 0.30) 0%, rgba(255, 95, 46, 0) 62%),
    radial-gradient(90% 60% at 15% 105%, rgba(64, 122, 255, 0.18) 0%, rgba(64, 122, 255, 0) 70%);
  background-attachment: fixed;
}

/* ---------- Palco ---------- */

.palco {
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding:
    calc(24px + env(safe-area-inset-top)) 18px
    calc(24px + env(safe-area-inset-bottom));
}

.cartao {
  width: 100%;
  max-width: 468px;
  background: var(--surface);
  border-radius: var(--raio-cartao);
  padding: clamp(28px, 7vw, 40px) clamp(22px, 6vw, 34px) clamp(24px, 6vw, 32px);
  box-shadow:
    0 1px 2px rgba(14, 23, 41, 0.10),
    0 18px 40px -12px rgba(14, 23, 41, 0.38),
    0 40px 80px -30px rgba(14, 23, 41, 0.45);
}

.etapa--oculta { display: none; }

/* ---------- Cabeçalho ---------- */

.titulo {
  margin: 0 0 10px;
  font-size: clamp(1.95rem, 8.5vw, 2.45rem);
  line-height: 1.06;
  letter-spacing: -0.022em;
  font-weight: 700;
  color: var(--ink);
}

/* O <em> vira cor, não itálico — dá ênfase sem quebrar o ritmo da linha. */
.titulo em {
  font-style: normal;
  color: var(--accent);
}

.subtitulo {
  margin: 0 0 26px;
  font-size: 0.97rem;
  line-height: 1.5;
  color: var(--texto-suave);
}

/* ---------- Campos ---------- */

.campo { margin-bottom: 17px; }

.campo label {
  display: block;
  margin-bottom: 7px;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--texto);
}

.obrigatorio { color: var(--accent); }

.opcional {
  margin-left: 4px;
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--texto-suave);
}

.campo input {
  width: 100%;
  height: 53px;
  padding: 0 15px;
  border: 2px solid transparent;
  border-radius: var(--raio);
  background: var(--campo);
  color: var(--texto);
  /* 16px é o mínimo que impede o iOS de dar zoom ao focar o campo. */
  font-size: 16px;
  font-family: inherit;
  transition:
    border-color var(--rapido) ease,
    background-color var(--rapido) ease,
    box-shadow var(--rapido) ease;
}

.campo input::placeholder { color: #9AA5B4; }

.campo input:hover:not(:focus) { background: #EDF1F6; }

.campo input:focus {
  outline: none;
  background: var(--surface);
  border-color: var(--accent);
  box-shadow: 0 0 0 4px rgba(255, 95, 46, 0.16);
}

.campo input[aria-invalid="true"] {
  border-color: var(--erro);
  background: var(--erro-fraco);
}

.campo input[aria-invalid="true"]:focus {
  box-shadow: 0 0 0 4px rgba(192, 52, 28, 0.14);
}

/* ---------- Mensagens de erro ---------- */

.erro {
  margin: 0;
  max-height: 0;
  overflow: hidden;
  font-size: 0.83rem;
  line-height: 1.4;
  color: var(--erro);
  transition: max-height var(--rapido) ease, padding-top var(--rapido) ease;
}

.erro.visivel {
  max-height: 3.2em;
  padding-top: 6px;
}

.erro-geral {
  margin-bottom: 0;
  padding: 0 12px;
  border-radius: 10px;
  background: var(--erro-fraco);
}

.erro-geral.visivel {
  max-height: 5em;
  padding: 11px 12px;
  margin-bottom: 16px;
}

/* ---------- Botão ---------- */

.botao {
  position: relative;
  width: 100%;
  height: 55px;
  margin-top: 9px;
  border: 0;
  border-radius: var(--raio);
  background: var(--accent);
  color: #fff;
  font-family: inherit;
  font-size: 1.02rem;
  font-weight: 650;
  letter-spacing: 0.005em;
  cursor: pointer;
  box-shadow: 0 6px 16px -6px rgba(255, 95, 46, 0.75);
  transition:
    transform var(--rapido) var(--suave),
    background-color var(--rapido) ease,
    box-shadow var(--rapido) ease;
}

.botao:hover { background: var(--accent-forte); transform: translateY(-1px); }
.botao:active { transform: translateY(0); box-shadow: 0 3px 9px -5px rgba(255, 95, 46, 0.8); }

.botao:focus-visible {
  outline: 3px solid var(--ink);
  outline-offset: 3px;
}

.botao:disabled {
  cursor: default;
  transform: none;
  background: #C9CFD8;
  box-shadow: none;
}

.botao--fantasma {
  margin-top: 22px;
  background: transparent;
  color: var(--texto);
  border: 2px solid var(--borda);
  box-shadow: none;
  font-weight: 600;
}

.botao--fantasma:hover {
  background: var(--campo);
  border-color: #CFD7E1;
  transform: none;
}

/* ---------- Estado de envio ---------- */

.girador {
  display: none;
  position: absolute;
  top: 50%;
  left: 50%;
  width: 21px;
  height: 21px;
  margin: -10.5px 0 0 -10.5px;
  border: 2.5px solid rgba(255, 255, 255, 0.35);
  border-top-color: #fff;
  border-radius: 50%;
  animation: girar 620ms linear infinite;
}

.botao.esta-enviando .botao-texto { visibility: hidden; }
.botao.esta-enviando .girador { display: block; }

@keyframes girar { to { transform: rotate(360deg); } }

/* ---------- Aviso legal ---------- */

.aviso {
  margin: 18px 0 0;
  font-size: 0.76rem;
  line-height: 1.5;
  color: var(--texto-suave);
}

/* ---------- Tela de sucesso ---------- */

.selo {
  width: 62px;
  height: 62px;
  margin-bottom: 22px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--accent-fraco);
  color: var(--accent);
  animation: surgir 420ms var(--suave) both;
}

.selo svg { width: 30px; height: 30px; }

@keyframes surgir {
  from { opacity: 0; transform: scale(0.7); }
  to   { opacity: 1; transform: scale(1); }
}

/* ---------- Armadilha anti-robô ---------- */

.ninho {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}

/* ---------- Preferências do usuário ---------- */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .girador { animation: girar 900ms linear infinite !important; }
}

/* Telas bem pequenas (iPhone SE e afins) */
@media (max-height: 680px) {
  .palco { align-items: flex-start; }
  .subtitulo { margin-bottom: 20px; }
}
