/* =============================================================================
   Hero — marca (arcos + chaves + Instagram) e meta (João 1:14 + em breve)
   Idêntico ao HTML final aprovado.
   ============================================================================= */
.brand {
  position: relative;
  width: min(var(--mark), 92vw);
  aspect-ratio: 1 / 0.82;
  transform: translateY(-2vh);
}

.arc {
  position: absolute;
  left: 50%;
  width: 74%;
  height: 36%;
  overflow: visible;
  transform: translateX(-50%);
  transition: transform 1500ms var(--ease);
}
.arc--top {
  top: 20%;
}
.arc--bottom {
  bottom: 20%;
}
.brand.open .arc--top {
  transform: translate(-50%, -35%);
}
.brand.open .arc--bottom {
  transform: translate(-50%, 50%);
}
.arc text {
  fill: var(--text);
  font-size: var(--arc);
  font-weight: 300;
  letter-spacing: 0.12em;
}
.arc .strong {
  font-weight: 600;
}

.center {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(0.12rem, 0.55vw, 0.38rem);
  opacity: 0;
  transform: scale(0.97);
  transition: opacity 850ms var(--ease), transform 850ms var(--ease);
}
.brand.center-on .center {
  opacity: 1;
  transform: scale(1);
}
.brace {
  font-size: calc(var(--center) * 1.05);
  font-weight: 300;
  line-height: 1;
}
.ig {
  position: relative;
  display: inline-block;
  min-width: 1ch;
  font-size: var(--center);
  font-weight: 500;
  letter-spacing: -0.018em;
  color: var(--text);
  text-decoration: none;
  white-space: nowrap;
  line-height: 1;
  cursor: pointer;
}
.ig::after {
  content: "";
  position: absolute;
  left: 7%;
  right: 7%;
  bottom: -0.35em;
  height: 1px;
  background: currentColor;
  opacity: 0.42;
  transform: scaleX(0);
  transform-origin: left center;
  transition:
    transform 900ms var(--ease),
    opacity 300ms var(--ease);
  pointer-events: none;
}

.ig.is-link-ready::after {
  transform: scaleX(1);
}

@media (hover: hover) and (pointer: fine) {
  .ig:hover::after {
    opacity: 0.78;
  }
}
.cursor {
  display: inline-block;
  width: 1px;
  height: 0.95em;
  margin-left: 2px;
  vertical-align: -0.08em;
  background: currentColor;
  animation: blink 1s steps(1) infinite;
}
.brand.typed .cursor {
  display: none;
}
@keyframes blink {
  0%,
  48% {
    opacity: 1;
  }
  49%,
  100% {
    opacity: 0;
  }
}

.meta {
  position: absolute;
  left: 50%;
  bottom: max(7vh, 42px);
  display: grid;
  gap: 0.65rem;
  width: min(90vw, 520px);
  transform: translateX(-50%);
  text-align: center;
  color: var(--muted);
}
.meta p {
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 850ms var(--ease), transform 850ms var(--ease);
}
.meta.verse-on .verse,
.meta.soon-on .soon {
  opacity: 1;
  transform: none;
}
.verse {
  font-size: clamp(1.08rem, 0.98rem + 0.35vw, 1.3rem);
  font-weight: 400;
  letter-spacing: 0.04em;
}
.soon {
  font-size: clamp(0.96rem, 0.86rem + 0.25vw, 1.1rem);
  font-weight: 300;
  letter-spacing: 0.06em;
}

@media (max-width: 520px) {
  :root {
    --mark: clamp(330px, 94vw, 390px);
    --center: clamp(1.45rem, 6.6vw, 1.95rem);
    --arc: clamp(13px, 3.8vw, 17px);
  }
  .brand {
    width: min(94vw, var(--mark));
    aspect-ratio: 1 / 0.82;
    transform: translateY(-2vh);
  }
  .arc {
    width: 74%;
    height: 36%;
  }
  .arc--top {
    top: 20%;
  }
  .arc--bottom {
    bottom: 20%;
  }
  .brand.open .arc--top {
    transform: translate(-50%, -35%);
  }
  .brand.open .arc--bottom {
    transform: translate(-50%, 50%);
  }
  .arc text {
    letter-spacing: 0.12em;
  }
  .brace {
    font-size: calc(var(--center) * 1.05);
  }
  .meta {
    bottom: max(5.5vh, 30px);
    gap: 0.48rem;
  }
  .verse {
    font-size: clamp(0.78rem, 3.2vw, 0.92rem);
  }
  .soon {
    font-size: clamp(0.7rem, 2.9vw, 0.84rem);
  }
}

@media (prefers-reduced-motion: reduce) {
  .cursor {
    display: none;
  }
}
