/* ==========================================================================
   CONTATO / RODAPÉ
   Faixa escura de largura total, conteúdo alinhado ao mesmo .shell.
   ========================================================================== */

.footer {
  position: relative;
  overflow: clip;
  padding-top: clamp(2.4rem, 1.2rem + 3vw, 4.3rem);
  background: var(--ink-panel);
  color: var(--cream-hi);
}

.footer__grid {
  display: grid;
  /* a chamada precisa de largura para fechar em 3 linhas, como no layout */
  grid-template-columns:
    minmax(0, 1.75fr) minmax(0, .78fr) minmax(0, 1fr) minmax(0, .56fr);
  align-items: center;
  gap: clamp(1.4rem, 2.6vw, 3rem);
  padding-bottom: clamp(2rem, 1rem + 2.4vw, 3.4rem);
}

/* ── chamada ─────────────────────────────────────────────────────────── */
.footer__title {
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 1rem + 1.7vw, 2.3rem);
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: .01em;
  text-transform: uppercase;
}

.footer__lead {
  font-size: var(--fs-micro);
  line-height: 1.6;
  color: color-mix(in srgb, var(--cream-hi) 66%, transparent);
}

.footer__cta .btn { margin-top: clamp(.9rem, 1.5vw, 1.3rem); }

/* ── contatos ────────────────────────────────────────────────────────── */
.footer__contacts {
  display: grid;
  gap: clamp(.7rem, 1.1vw, 1rem);
}

.footer__contact {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: .7rem;
  font-size: var(--fs-micro);
  color: color-mix(in srgb, var(--cream-hi) 76%, transparent);
}

.footer__contact svg {
  width: 1.15rem;
  height: auto;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  opacity: .75;
}

/* pingos sólidos (o "i" do LinkedIn, a lente do Instagram) */
.footer__contact svg .dot { fill: currentColor; stroke: none; }

.footer__contact a {
  border-bottom: 1px solid transparent;
  transition: color var(--dur) var(--ease), border-color var(--dur) var(--ease);
  overflow-wrap: anywhere;
}

.footer__contact a:hover {
  color: var(--accent-soft);
  border-bottom-color: currentColor;
}

/* ── retrato com selo ────────────────────────────────────────────────── */
.footer__badge {
  position: relative;
  display: grid;
  place-items: center;
  justify-self: end;
  width: clamp(120px, 12vw, 168px);
  aspect-ratio: 1;
}

/* menor que o anel do selo (raio 39% do quadro), senão o texto que gira
   passa por cima do retrato */
.footer__photo {
  position: relative;
  z-index: 2;
  width: 64%;
  aspect-ratio: 1;
  overflow: hidden;
  border-radius: 50%;
  background: var(--cream);
}

.footer__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}


/* o selo circular gira em volta do retrato */
.seal--footer {
  position: absolute;
  z-index: 1;
  inset: 0;
  width: 100%;
}

.seal--footer text {
  font-size: 13px;
  letter-spacing: .1em;
  fill: color-mix(in srgb, var(--cream-hi) 82%, transparent);
}

/* ── barra inferior ──────────────────────────────────────────────────── */
.footer__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .7rem 1.5rem;
  padding-block: clamp(.9rem, 1.4vw, 1.3rem);
  border-top: 1px solid color-mix(in srgb, var(--cream-hi) 14%, transparent);
  font-size: var(--fs-micro);
  color: color-mix(in srgb, var(--cream-hi) 52%, transparent);
}

/* ── assinatura ──────────────────────────────────────────────────────── */
.signature {
  display: inline-flex;
  align-items: center;
  gap: .5em;
  padding: .5em 1em;
  border: 1px solid color-mix(in srgb, var(--accent-soft) 40%, transparent);
  border-radius: 999px;
  color: var(--accent-soft);
  letter-spacing: .03em;
  white-space: nowrap;
  transition: border-color var(--dur) var(--ease),
              background-color var(--dur) var(--ease),
              color var(--dur) var(--ease);
}

.signature svg {
  width: 1.05em;
  height: auto;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.signature:hover {
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 16%, transparent);
  color: var(--cream-hi);
}


/* ==========================================================================
   RESPONSIVO
   ========================================================================== */

/* ── laptop: a chamada não cabe numa coluna estreita sem picotar em seis
      linhas, então ela assume a largura toda e o resto desce ─────────── */
@media (max-width: 1180px) {
  .footer__grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr) minmax(0, .55fr);
    align-items: start;
    row-gap: clamp(1.6rem, 2.6vw, 2.6rem);
  }

  .footer__title { grid-column: 1 / -1; max-width: 22ch; }

  .footer__cta      { grid-column: 1; grid-row: 2; }
  .footer__contacts { grid-column: 2; grid-row: 2; }
  .footer__badge    { grid-column: 3; grid-row: 2; }
}

/* ── tablet ──────────────────────────────────────────────────────────── */
@media (max-width: 860px) {
  .footer__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
  }

  .footer__title { grid-column: 1 / -1; }

  .footer__cta      { grid-column: 1; grid-row: 2; }
  .footer__contacts { grid-column: 2; grid-row: 2; }

  .footer__badge {
    grid-column: 1 / -1;
    grid-row: 3;
    justify-self: start;
    margin-top: .5rem;
  }
}

/* ── celular ─────────────────────────────────────────────────────────── */
@media (max-width: 620px) {
  .footer__grid { grid-template-columns: 1fr; }

  .footer__cta,
  .footer__contacts,
  .footer__badge {
    grid-column: 1;
    grid-row: auto;
  }

  .footer__badge { width: 118px; }

  .footer__bottom { flex-direction: column; }
}
