/* ============================================================
   utilities.css — utilitários de baixa especificidade
   ============================================================ */

.visually-hidden {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.text-center {
  text-align: center;
}
.text-muted {
  color: var(--color-text-muted);
}
.text-balance {
  text-wrap: balance;
}

.measure {
  max-width: 60ch;
}
.measure-narrow {
  max-width: 46ch;
}

.mt-0 {
  margin-top: 0;
}
.mt-4 {
  margin-top: var(--space-4);
}
.mt-5 {
  margin-top: var(--space-5);
}
.mt-6 {
  margin-top: var(--space-6);
}
.mt-7 {
  margin-top: var(--space-7);
}
.mt-8 {
  margin-top: var(--space-8);
}

.flow > * + * {
  margin-top: var(--space-5);
}

.eyebrow {
  display: inline-block;
  font-size: var(--fs-small);
  font-weight: var(--fw-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-brand);
}

.tag {
  display: inline-block;
  padding: 0.25rem 0.6rem;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-pill);
  font-size: var(--fs-caption);
  font-weight: var(--fw-semibold);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

.to-validate {
  padding: 0 0.35em;
  border-radius: 3px;
  background: repeating-linear-gradient(
    45deg,
    #fff3cd,
    #fff3cd 6px,
    #ffe9a8 6px,
    #ffe9a8 12px
  );
  color: #6b4e00;
  font-size: 0.9em;
  font-weight: var(--fw-semibold);
}

/* Reveal on scroll — estado inicial só quando JS ativa */
.js .reveal {
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity var(--dur-reveal) var(--ease-out),
    transform var(--dur-reveal) var(--ease-out);
  will-change: opacity, transform;
}

.js .reveal.is-visible {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .js .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
