/* ==========================================================================
   Fale conosco (formulário de contato)
   - Fundo escuro (--bg-dark), logo depois da seção clara de Pontos de venda.
   - A partir de 900px: duas colunas. À esquerda, título e texto no alto e o
     "Como funciona" encostado embaixo, para as duas colunas terminarem juntas;
     à direita, o formulário num card branco. A partir de 1024px a seção tem
     pelo menos 1 tela de altura, com o conteúdo centralizado.
   - Tablet e celular: uma coluna (texto, formulário e, por último, os passos).
   - Estados dos campos (o js/contact.js troca): .is-invalid (borda, ícone e
     mensagem em vermelho) e .is-valid (sinal de certo). Sem JS, vale a
     validação nativa do navegador.
   ========================================================================== */
.contact {
  --c-ink: var(--color-white);
  --c-text: var(--color-gray);
  --c-line: rgba(217, 217, 217, 0.16);  /* divisórias dos passos */
  --c-radius: clamp(18px, 1.8vw, 28px); /* card */
  --c-field-radius: 12px;               /* campos e botão */
  --c-field-h: 54px;
  --c-field-line: rgba(29, 29, 27, 0.2);
  --c-placeholder: rgba(59, 63, 68, 0.5);
  --c-error: var(--color-red);

  position: relative;
  padding: clamp(80px, 9vw, 144px) var(--gutter);
  background: var(--bg-dark);
  color: var(--c-ink);
}

/* display: grid/flex abaixo não pode vencer o atributo hidden (formulário, confirmação, dica, aviso) */
.contact [hidden] {
  display: none !important;
}

/* texto só para leitores de tela */
.contact__sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* no celular: texto, formulário e passos, nessa ordem */
.contact__inner {
  display: grid;
  grid-template-areas:
    "intro"
    "card"
    "steps";
  row-gap: clamp(32px, 7vw, 48px);
  max-width: 640px;
  margin: 0 auto;
}

.contact__intro {
  grid-area: intro;
}

.contact__card {
  grid-area: card;
}

.contact__steps {
  grid-area: steps;
}

/* --------------------------------------------------------------------------
   Texto
   -------------------------------------------------------------------------- */
.contact__eyebrow {
  margin: 0;
  font-weight: 500;
  font-size: 13px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--c-text);
}

/* traço vermelho, como nas peças da marca (igual ao .stats__eyebrow) */
.contact__eyebrow::before {
  content: "";
  display: inline-block;
  width: 28px;
  height: 3px;
  margin-right: 12px;
  vertical-align: middle;
  background-color: var(--color-red);
}

.contact__title {
  margin: 18px 0 20px;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: clamp(30px, 3.8vw, 60px);
  line-height: 1.08;
  letter-spacing: -0.005em;
  text-wrap: balance;
}

/* "BAIC" é o logo oficial: altura das maiúsculas da Eurostile, apoiado na linha de base
   (igual ao .stores__title-logo) */
.contact__title-logo {
  display: inline-block;
  width: auto;
  height: 0.7em;
  margin: 0 0.04em 0 0.1em;
  vertical-align: baseline;
}

.contact__text {
  max-width: 32em;
  margin: 0;
  font-size: clamp(16px, 1.2vw, 18px);
  line-height: 1.6;
  text-wrap: pretty;
  color: var(--c-text);
}

.contact__text strong {
  font-weight: 700;
  color: var(--c-ink);
}

/* --------------------------------------------------------------------------
   Como funciona
   -------------------------------------------------------------------------- */
.contact__steps-title {
  margin: 0 0 12px;
  font-weight: 500;
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--c-text);
}

.contact__list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.contact__step {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  column-gap: 16px;
  padding: clamp(16px, 1.6vw, 20px) 0;
  border-top: 1px solid var(--c-line);
}

.contact__step:last-child {
  border-bottom: 1px solid var(--c-line);
}

.contact__step-number {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 18px;
  line-height: 1.35;
  color: var(--color-red);
}

.contact__step-title {
  margin: 0;
  font-weight: 500;
  font-size: clamp(16px, 1.2vw, 18px);
  line-height: 1.35;
}

.contact__step-text {
  margin: 4px 0 0;
  font-size: clamp(14px, 1vw, 15px);
  line-height: 1.5;
  color: var(--c-text);
}

/* --------------------------------------------------------------------------
   Card do formulário
   -------------------------------------------------------------------------- */
/* coluna flex: a confirmação fica centralizada na altura que o formulário ocupava */
.contact__card {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(24px, 3vw, 44px);
  border-radius: var(--c-radius);
  background: var(--color-white);
  color: var(--color-black);
  box-shadow: 0 48px 80px -48px rgba(0, 0, 0, 0.6);
}

.contact-form {
  display: grid;
  gap: 18px;
}

.contact-form__note {
  margin: 0;
  font-size: 13px;
  color: var(--color-graphite);
}

.contact-field {
  display: grid;
  gap: 8px;
}

.contact-field__label {
  font-weight: 500;
  font-size: 14px;
  line-height: 1.3;
}

/* a caixa do campo: o ícone de certo/erro fica no ::after (input não tem pseudo-elementos) */
.contact-field__control {
  position: relative;
  display: block;
}

.contact-field__input {
  display: block;
  width: 100%;
  height: var(--c-field-h);
  margin: 0;
  padding: 0 48px 0 16px;
  border: 1px solid var(--c-field-line);
  border-radius: var(--c-field-radius);
  background: var(--color-white);
  color: var(--color-black);
  font: inherit;
  font-size: 16px; /* 16px: o iOS não dá zoom ao focar */
  transition: border-color 0.25s, outline-color 0.25s;
  -webkit-appearance: none;
  appearance: none;
}

.contact-field__input::placeholder {
  color: var(--c-placeholder);
  opacity: 1;
}

.contact-field__input:hover {
  border-color: rgba(29, 29, 27, 0.4);
}

/* anel suave em volta da borda (no lugar do contorno vermelho padrão do site) */
.contact-field__input:focus-visible {
  border-color: var(--color-black);
  outline: 3px solid rgba(29, 29, 27, 0.12);
  outline-offset: 0;
}

/* preenchimento automático do navegador: mantém o fundo branco */
.contact-field__input:-webkit-autofill {
  -webkit-box-shadow: 0 0 0 100px var(--color-white) inset;
  -webkit-text-fill-color: var(--color-black);
}

.contact-field.is-invalid .contact-field__input {
  border-color: var(--c-error);
}

.contact-field.is-invalid .contact-field__input:focus-visible {
  outline-color: rgba(200, 16, 46, 0.16);
}

.contact-field__control::after {
  --icon: none;

  content: "";
  position: absolute;
  top: 50%;
  right: 16px;
  width: 20px;
  height: 20px;
  margin-top: -10px;
  background-color: currentColor;
  -webkit-mask: var(--icon) center / contain no-repeat;
  mask: var(--icon) center / contain no-repeat;
  opacity: 0;
  transform: scale(0.6);
  transition: opacity 0.25s, transform 0.35s var(--ease-out);
  pointer-events: none;
}

.contact-field.is-valid .contact-field__control::after {
  --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E");

  color: var(--color-graphite);
  opacity: 1;
  transform: none;
}

.contact-field.is-invalid .contact-field__control::after {
  --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Zm-1.1 5h2.2l-.3 7.2h-1.6ZM12 15.6a1.3 1.3 0 1 1 0 2.6 1.3 1.3 0 0 1 0-2.6Z'/%3E%3C/svg%3E");

  color: var(--c-error);
  opacity: 1;
  transform: none;
}

.contact-field__error {
  margin: 0;
  font-weight: 500;
  font-size: 13px;
  line-height: 1.4;
  color: var(--c-error);
}

.contact-field__error:empty {
  display: none;
}

/* "Você quis dizer nome@gmail.com?" */
.contact-field__hint {
  margin: 0;
  font-size: 13px;
  line-height: 1.4;
  color: var(--color-graphite);
}

.contact-field__suggest {
  padding: 0;
  border: 0;
  background: none;
  color: var(--color-black);
  font: inherit;
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}

/* --------------------------------------------------------------------------
   Envio
   -------------------------------------------------------------------------- */
.contact-form__submit {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  min-height: 58px;
  margin-top: 6px;
  padding: 12px 24px;
  border: 0;
  border-radius: var(--c-field-radius);
  background: var(--color-red);
  color: var(--color-white);
  font-weight: 500;
  font-size: 16px;
  line-height: 1.3;
  letter-spacing: 0.01em;
  cursor: pointer;
  transition: background-color 0.3s, transform 0.2s var(--ease-out);
  -webkit-tap-highlight-color: transparent;
}

.contact-form__submit:active {
  transform: scale(0.98);
}

/* contorno preto: o vermelho padrão do foco some em volta do botão vermelho */
.contact-form__submit:focus-visible {
  outline-color: var(--color-black);
}

.contact-form__submit-icon {
  flex: none;
  transition: transform 0.35s var(--ease-out);
}

@media (hover: hover) {
  .contact-form__submit:hover {
    background: var(--color-black);
  }

  .contact-form__submit:hover .contact-form__submit-icon {
    transform: translateX(4px);
  }
}

.contact-form__legal {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.5;
  text-align: center;
  color: var(--color-graphite);
}

/* --------------------------------------------------------------------------
   Confirmação
   -------------------------------------------------------------------------- */
.contact-success {
  display: grid;
  justify-items: center;
  padding: clamp(16px, 3vw, 40px) 0;
  text-align: center;
}

/* círculo e "certo" se desenham (pathLength="1" no HTML) */
.contact-success__icon {
  fill: none;
  stroke: var(--color-red);
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.contact-success__icon circle,
.contact-success__icon path {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  animation: contact-draw 0.7s var(--ease-out) forwards;
}

/* começa no alto do círculo */
.contact-success__icon circle {
  transform: rotate(-90deg);
  transform-origin: center;
  transform-box: fill-box;
}

.contact-success__icon path {
  animation-delay: 0.35s;
}

@keyframes contact-draw {
  to {
    stroke-dashoffset: 0;
  }
}

.contact-success__title {
  margin: 20px 0 0;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: clamp(22px, 2.2vw, 32px);
  line-height: 1.15;
  text-wrap: balance;
}

/* recebe o foco pelo JS (para leitores de tela), sem contorno */
.contact-success__title:focus {
  outline: none;
}

.contact-success__text {
  max-width: 26em;
  margin: 12px 0 0;
  line-height: 1.6;
  color: var(--color-graphite);
}

/* abre a conversa com a mensagem pronta: mesmo visual do botão de enviar */
.contact-success__whatsapp {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 52px;
  margin-top: 24px;
  padding: 12px 28px;
  border-radius: var(--c-field-radius);
  background: var(--color-red);
  color: var(--color-white);
  font-weight: 500;
  font-size: 16px;
  line-height: 1.3;
  text-decoration: none;
  transition: background-color 0.3s, transform 0.2s var(--ease-out);
  -webkit-tap-highlight-color: transparent;
}

.contact-success__whatsapp svg {
  flex: none;
}

.contact-success__whatsapp:active {
  transform: scale(0.98);
}

.contact-success__whatsapp:focus-visible {
  outline-color: var(--color-black);
}

@media (hover: hover) {
  .contact-success__whatsapp:hover {
    background: var(--color-black);
  }
}

.contact-success__again {
  margin-top: 16px;
  padding: 4px 0;
  border: 0;
  background: none;
  color: var(--color-black);
  font-weight: 500;
  font-size: 15px;
  text-decoration: underline;
  text-underline-offset: 4px;
  cursor: pointer;
}

/* --------------------------------------------------------------------------
   Duas colunas (a partir de 900px): texto no alto e passos embaixo, à esquerda;
   o card ocupa a altura toda à direita
   -------------------------------------------------------------------------- */
@media (min-width: 900px) {
  .contact__inner {
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
    grid-template-rows: auto 1fr;
    grid-template-areas:
      "intro card"
      "steps card";
    column-gap: clamp(48px, 7vw, 128px);
    row-gap: 40px;
    max-width: 1240px;
  }

  .contact__steps {
    align-self: end;
  }
}

/* desktop: pelo menos 1 tela, com o conteúdo no meio */
@media (min-width: 1024px) {
  .contact {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 100vh;
    min-height: 100svh;
  }

  .contact__inner {
    width: 100%;
  }
}

/* notebook (menos de 900px de altura): respiro menor, para o card caber em 1 tela; em cima, o
   bastante para o card começar abaixo do botão de CTA fixo (--cta-clear) */
@media (min-width: 1024px) and (max-height: 899px) {
  .contact {
    padding-top: max(clamp(40px, 7svh, 64px), var(--cta-clear));
    padding-bottom: clamp(32px, 5svh, 64px);
  }
}

/* celular: o card vai até 8px da borda da tela, para sobrar largura nos campos */
@media (max-width: 600px) {
  .contact {
    padding: 64px var(--gutter);
  }

  .contact__title {
    font-size: clamp(28px, 8.4vw, 34px);
  }

  .contact__card {
    margin: 0 calc(8px - var(--gutter));
    padding: 24px 20px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .contact-field__input,
  .contact-field__control::after,
  .contact-form__submit,
  .contact-form__submit-icon,
  .contact-success__whatsapp {
    transition: none;
  }

  .contact-success__icon circle,
  .contact-success__icon path {
    animation: none;
    stroke-dashoffset: 0;
  }
}
