/* =====================================================================
   Contato (#contato): formulário que monta a mensagem e abre o WhatsApp
   da Roberta. Mesma ideia do hero: o card fica sobre uma faixa dourada
   inclinada (−8°), a "base sólida", com filetes dos dois lados.
   Desktop: à esquerda título, prévia ao vivo da mensagem e contatos;
   à direita o formulário. Celular: título → formulário → contatos.
   Tudo preso a .ctt (classes ctt__, variáveis --ctt-*). Ler contato/README.md.
   ===================================================================== */

.ctt {
  --ctt-gut: max(20px, 4vw);
  --ctt-card: clamp(460px, 44vw, 540px);           /* largura do formulário no desktop */
  --ctt-line: rgba(212, 171, 94, 0.28);
  --ctt-field: rgba(244, 239, 230, 0.035);
  --ctt-field-line: rgba(244, 239, 230, 0.16);
  --ctt-muted: rgba(244, 239, 230, 0.62);
  --ctt-err: #f0907a;

  /* clip, não hidden: hidden vira caixa de rolagem e a coluna "sticky" da esquerda passa a grudar nela, não na janela */
  position: relative; isolation: isolate; overflow: hidden; overflow: clip;
  /* o topo desconta a navbar fixa: chegando pelo menu, o título não fica atrás dela */
  padding: calc(var(--nav-h, 56px) + clamp(40px, 8vh, 96px)) var(--ctt-gut) clamp(72px, 11vh, 128px);
  background: var(--ink); color: var(--bone); font-family: var(--body);
}
.ctt *, .ctt *::before, .ctt *::after { box-sizing: border-box; }

/* ---------- fundo: brilho dourado baixo + granulação ---------- */
.ctt__bg {
  position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background:
    radial-gradient(60% 55% at 10% 16%, rgba(212, 171, 94, 0.13), transparent 70%),
    radial-gradient(45% 40% at 92% 100%, rgba(212, 171, 94, 0.08), transparent 70%);
}
.ctt__bg::after {
  content: ""; position: absolute; inset: 0; opacity: 0.06; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}

/* ---------- grade: [título + prévia + contatos | formulário] ----------
   Com tela alta o bastante, a coluna da esquerda acompanha a rolagem: a prévia fica à vista
   enquanto a pessoa preenche o fim do formulário. */
.ctt__wrap {
  position: relative; max-width: 1200px; margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, var(--ctt-card));
  column-gap: clamp(40px, 6vw, 96px);
  align-items: start;
}
.ctt__aside { padding-top: clamp(4px, 1.5vh, 20px); }
@media (min-width: 901px) and (min-height: 820px) {
  .ctt__aside { position: sticky; top: calc(var(--nav-h, 56px) + 32px); }
}
.ctt__intro { container-type: inline-size; }     /* o título mede a largura desta coluna (cqi) */

/* ---------- título ---------- */
.ctt__eyebrow {
  margin: 0 0 18px; display: flex; align-items: center; gap: 14px;
  font: 600 12px/1 var(--body); letter-spacing: 0.34em; text-transform: uppercase; color: var(--gold);
}
.ctt__eyebrow::before { content: ""; width: 48px; height: 1px; background: currentColor; opacity: 0.7; }
.ctt__title { margin: 0; font-family: var(--display); font-style: italic; text-transform: uppercase; line-height: 0.9; }
.ctt__title > span { display: block; }
.ctt__title-sm { margin-bottom: 0.22em; font-weight: 800; font-stretch: 125%; font-size: clamp(20px, 2.3vw, 34px); letter-spacing: 0.06em; color: var(--gold-hi); }
/* o mesmo prata do nome no hero */
.ctt__title-lg {
  font-weight: 900; font-stretch: 125%; font-size: clamp(30px, 12.4cqi, 78px);   /* o mínimo cabe em 320px */ letter-spacing: -0.01em;
  /* o texto prata é o fundo recortado pelas letras: a caixa precisa cobrir o til do Ã, a cedilha do Ç
     e a ponta do itálico, senão elas somem; a margem negativa devolve o espaço */
  padding: 0.16em 0.08em 0.12em 0; margin: -0.16em 0 -0.12em;
  color: transparent;
  background: linear-gradient(180deg, var(--silver-hi) 0%, var(--silver-mid) 55%, var(--silver-lo) 100%);
  -webkit-background-clip: text; background-clip: text;
}
.ctt__lead { margin: 22px 0 0; max-width: 34em; font: 400 clamp(15px, 1.25vw, 18px)/1.6 var(--body); color: var(--ctt-muted); }

/* ---------- prévia ao vivo da mensagem (só desktop) ---------- */
.ctt__preview { margin: clamp(28px, 4.5vh, 48px) 0 0; max-width: 440px; }
.ctt__preview-cap {
  display: flex; align-items: center; gap: 12px; margin-bottom: 14px;
  font: 600 11px/1 var(--body); letter-spacing: 0.24em; text-transform: uppercase; color: var(--ctt-muted);
}
.ctt__preview-cap::after { content: ""; flex: 1; height: 1px; background: var(--ctt-line); }
.ctt__bubble {
  position: relative;
  padding: 16px 18px 28px;
  border: 1px solid rgba(212, 171, 94, 0.22); border-radius: 3px 16px 16px 16px;
  background: rgba(244, 239, 230, 0.045);
  font: 400 14px/1.55 var(--body); color: rgba(244, 239, 230, 0.88);
  overflow-wrap: anywhere;
}
.ctt__bubble::after {                              /* "lida" no canto, como no WhatsApp */
  content: "✓✓"; position: absolute; right: 14px; bottom: 9px;
  font: 700 11px/1 var(--body); letter-spacing: -0.12em; color: var(--gold);
}
.ctt__line { display: block; }
.ctt__line:first-child { margin-bottom: 0.7em; }
.ctt__line b { font-weight: 700; color: var(--gold-hi); }
.ctt__line.is-empty { color: rgba(244, 239, 230, 0.4); font-style: italic; }
.ctt__line--long {                                 /* o texto livre aparece em até 4 linhas */
  white-space: pre-line;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden;
}

/* ---------- contatos diretos ---------- */
.ctt__info {
  list-style: none; margin: clamp(28px, 4.5vh, 48px) 0 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: 14px 30px;
}
.ctt__info li { display: flex; align-items: center; gap: 10px; font: 500 14px/1.2 var(--body); color: var(--bone); }
.ctt__info svg { width: 18px; height: 18px; flex: none; color: var(--gold); }
.ctt__info a {
  display: inline-flex; align-items: center; min-height: 44px; text-decoration: none;
  background: linear-gradient(var(--gold), var(--gold)) 0 calc(50% + 0.85em) / 0 1px no-repeat;
  transition: background-size 0.3s ease, color 0.2s;
}
.ctt__info a:hover { color: var(--gold-hi); background-size: 100% 1px; }

/* ---------- faixa dourada atrás do formulário (a base sólida do hero) ----------
   Vai muito além do card (±100vh) e o overflow da seção corta: ocupa a seção de cima a baixo.
   A inclinação gira em torno do centro, que fica no meio do card. */
.ctt__side { position: relative; }
.ctt__band {
  position: absolute; z-index: 0; pointer-events: none;
  left: 50%; width: 62%; top: -100vh; bottom: -100vh;
  translate: -50% 0; transform: skewX(-8deg);
}
.ctt__band::before { content: ""; position: absolute; inset: 0; background: var(--gold); box-shadow: 0 0 80px rgba(0, 0, 0, 0.55); }
.ctt__band::after { content: ""; position: absolute; inset: 0 -18px; border-inline: 1px solid rgba(212, 171, 94, 0.55); }

/* ---------- card do formulário ---------- */
.ctt__form {
  position: relative; z-index: 1;
  padding: clamp(24px, 2.6vw, 40px);
  border: 1px solid var(--ctt-line); border-radius: 4px;
  background: linear-gradient(180deg, rgba(22, 19, 14, 0.97), rgba(11, 10, 8, 0.98));
  box-shadow: 0 40px 90px rgba(0, 0, 0, 0.6);
}
.ctt__form::before {                               /* fio de luz no topo do card */
  content: ""; position: absolute; left: 24px; right: 24px; top: -1px; height: 2px;
  background: linear-gradient(90deg, transparent, var(--gold-hi), transparent);
}

.ctt__group { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2.2fr); gap: 18px 14px; }
.ctt__group + .ctt__group { margin-top: clamp(28px, 3.6vh, 38px); }
.ctt__step, .ctt__field--full, .ctt__chips { grid-column: 1 / -1; }
.ctt__step {
  margin: 0; display: flex; align-items: center; gap: 12px;
  font: 600 12px/1 var(--body); letter-spacing: 0.24em; text-transform: uppercase; color: var(--bone);
}
.ctt__step b { font: italic 800 22px/1 var(--display); font-stretch: 125%; letter-spacing: 0; color: var(--gold); }
.ctt__step::after { content: ""; flex: 1; height: 1px; background: var(--ctt-line); }

.ctt__field { display: grid; gap: 8px; min-width: 0; align-content: start; }
.ctt__label, .ctt__chips legend {
  font: 600 11px/1.3 var(--body); letter-spacing: 0.16em; text-transform: uppercase; color: var(--ctt-muted);
}
.ctt__label i, .ctt__chips legend i { font-style: normal; color: var(--gold); }
.ctt__label small, .ctt__chips legend small {
  font-size: 11px; font-weight: 500; letter-spacing: 0.04em; text-transform: none; color: rgba(244, 239, 230, 0.42);
}

.ctt__input {
  width: 100%; min-height: 48px; margin: 0; padding: 12px 14px;
  border: 1px solid var(--ctt-field-line); border-radius: 3px;
  background: var(--ctt-field); color: var(--bone);
  font: 400 16px/1.4 var(--body);                  /* 16px: o iPhone não dá zoom ao tocar */
  transition: border-color 0.2s, background-color 0.2s, box-shadow 0.2s;
}
.ctt__input::placeholder { color: rgba(244, 239, 230, 0.32); }
.ctt__input:hover { border-color: rgba(212, 171, 94, 0.45); }
.ctt__input:focus { outline: none; border-color: var(--gold); background-color: rgba(244, 239, 230, 0.06); box-shadow: 0 0 0 3px rgba(212, 171, 94, 0.18); }
.ctt__input[aria-invalid="true"] { border-color: var(--ctt-err); }
.ctt__input:-webkit-autofill { -webkit-text-fill-color: var(--bone); caret-color: var(--bone); box-shadow: 0 0 0 1000px #1a160f inset; }
textarea.ctt__input { min-height: 112px; resize: vertical; }

/* ---------- opções em "chips" (rádio e caixa de seleção nativos, escondidos só visualmente) ---------- */
.ctt__chips { min-width: 0; margin: 0; padding: 0; border: 0; }
.ctt__chips legend { float: left; width: 100%; margin: 0 0 10px; padding: 0; }
.ctt__chip-row { clear: both; display: flex; flex-wrap: wrap; gap: 10px 12px; padding-left: 3px; }
.ctt__chip { position: relative; display: inline-flex; cursor: pointer; }
.ctt__chip input { position: absolute; left: 50%; top: 50%; width: 1px; height: 1px; margin: 0; opacity: 0; pointer-events: none; }
.ctt__chip span {
  position: relative; isolation: isolate;
  display: inline-flex; align-items: center; min-height: 42px; padding: 0 18px;
  font: 600 14px/1.1 var(--body); color: rgba(244, 239, 230, 0.82);
  user-select: none; transition: color 0.2s;
}
.ctt__chip span::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  border: 1px solid rgba(212, 171, 94, 0.38); background: rgba(244, 239, 230, 0.03);
  transform: skewX(-8deg);
  transition: background 0.2s, border-color 0.2s, box-shadow 0.2s;
}
.ctt__chip:hover span { color: var(--bone); }
.ctt__chip:hover span::before { border-color: var(--gold-hi); }
.ctt__chip input:checked + span { color: var(--ink); }
.ctt__chip input:checked + span::before {
  border-color: var(--gold-hi);
  background: linear-gradient(180deg, var(--gold-hi), var(--gold));
  box-shadow: 0 8px 22px rgba(212, 171, 94, 0.2);
}
.ctt__chip input:focus-visible + span::before { outline: 2px solid var(--bone); outline-offset: 3px; }
.ctt__chips[aria-invalid="true"] .ctt__chip span::before { border-color: var(--ctt-err); }

.ctt__err { margin: 0; font: 500 13px/1.35 var(--body); color: var(--ctt-err); }
.ctt__chips .ctt__err { margin-top: 10px; }

/* ---------- botão de enviar (paralelogramo dourado, como os da marca) ---------- */
.ctt__send {
  position: relative; isolation: isolate;
  width: 100%; min-height: 58px; margin-top: clamp(28px, 3.6vh, 36px);
  display: flex; align-items: center; justify-content: center; gap: 14px;
  border: 0; background: none; cursor: pointer;
  color: var(--ink); font: 800 14px/1 var(--display); font-stretch: 112%; letter-spacing: 0.16em; text-transform: uppercase;
}
.ctt__send::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(180deg, var(--gold-hi), var(--gold) 60%, #c39a4a);
  transform: skewX(-8deg);
  box-shadow: 0 18px 40px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.45);
  transition: filter 0.25s, box-shadow 0.25s;
}
.ctt__send svg { width: 20px; height: 20px; flex: none; transition: transform 0.25s; }
.ctt__send:hover::before { filter: brightness(1.08); box-shadow: 0 22px 46px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.5); }
.ctt__send:hover svg { transform: translateX(4px); }
.ctt__send:focus-visible { outline: none; }
.ctt__send:focus-visible::before { outline: 2px solid var(--bone); outline-offset: 4px; }

.ctt__privacy { margin: 16px 0 0; text-align: center; font: 400 12px/1.5 var(--body); color: rgba(244, 239, 230, 0.45); }
.ctt__status {
  margin: 16px 0 0; padding: 14px 16px;
  border: 1px solid rgba(212, 171, 94, 0.4); border-radius: 3px; background: rgba(212, 171, 94, 0.08);
  font: 500 14px/1.5 var(--body); color: var(--bone);
}
.ctt__status:empty { display: none; }
.ctt__status a { color: var(--gold-hi); font-weight: 700; }

/* ---------- entrada (o JS só liga .ctt--anim com movimento liberado; .is-in quando a seção aparece) ---------- */
.ctt--anim .ctt__in { opacity: 0; translate: 0 28px; }
.ctt--anim .ctt__title > span { opacity: 0; translate: -56px 0; }
.ctt--anim .ctt__band::before, .ctt--anim .ctt__band::after { transform: scaleY(0); transform-origin: 50% 100%; }
.ctt.is-in .ctt__in, .ctt.is-in .ctt__title > span {
  opacity: 1; translate: 0 0;
  transition: opacity 0.7s ease, translate 0.9s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.ctt.is-in .ctt__band::before, .ctt.is-in .ctt__band::after { transform: scaleY(1); transition: transform 1.3s cubic-bezier(0.7, 0, 0.2, 1); }
.ctt.is-in .ctt__eyebrow { transition-delay: 0.05s; }
.ctt.is-in .ctt__title-sm { transition-delay: 0.15s; }
.ctt.is-in .ctt__title-lg { transition-delay: 0.25s; }
.ctt.is-in .ctt__lead { transition-delay: 0.35s; }
.ctt.is-in .ctt__form { transition-delay: 0.45s; }
.ctt.is-in .ctt__preview { transition-delay: 0.55s; }
.ctt.is-in .ctt__info { transition-delay: 0.65s; }

/* ==========================================================================
   Celular e tablet em pé: título → formulário → contatos; sem a prévia
   ========================================================================== */
@media (max-width: 900px) {
  .ctt { padding-top: calc(var(--nav-h, 56px) + 40px); padding-bottom: 72px; }
  .ctt__wrap { grid-template-columns: minmax(0, 1fr); }
  .ctt__aside { display: contents; }               /* título → formulário → contatos */
  .ctt__intro { order: 1; text-align: center; }
  .ctt__eyebrow { justify-content: center; }
  .ctt__eyebrow::after { content: ""; width: 48px; height: 1px; background: currentColor; opacity: 0.7; }
  .ctt__lead { margin-inline: auto; max-width: 30em; }
  .ctt__side { order: 2; }
  .ctt__info { order: 3; }
  .ctt__preview { display: none; }
  .ctt__side { width: 100%; max-width: 560px; justify-self: center; margin-top: 64px; }
  .ctt__band { top: -36px; bottom: -44px; width: 58%; }
  .ctt__info { justify-self: center; justify-content: center; margin-top: 64px; }
}
@media (max-width: 420px) {
  .ctt__form { padding: 22px 18px 24px; }
  .ctt__chip span { padding: 0 15px; font-size: 13.5px; }
  .ctt__chip-row { gap: 10px; }
  .ctt__info { flex-direction: column; align-items: center; gap: 4px; }
}
@media (max-width: 359px) {                        /* celulares de 320px: a idade ("Ex.: 32") não corta */
  .ctt__group { grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: 18px 10px; }
  .ctt__input { padding-inline: 12px; }
}

/* Fica no fim de propósito: com a mesma especificidade, a última regra vence. */
@media (prefers-reduced-motion: reduce) {
  .ctt__input, .ctt__chip span, .ctt__chip span::before, .ctt__send::before, .ctt__send svg, .ctt__info a { transition: none; }
  .ctt__send:hover svg { transform: none; }
}
