/* =========================================================
   utilities.css — helpers rares et utiles
   ========================================================= */

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

.text-balance { text-wrap: balance; }
.no-wrap { white-space: nowrap; }

.mt-8  { margin-top: var(--meal-space-8); }
.mt-12 { margin-top: var(--meal-space-12); }
.mt-16 { margin-top: var(--meal-space-16); }
.mt-24 { margin-top: var(--meal-space-24); }
.mt-32 { margin-top: var(--meal-space-32); }
.mt-40 { margin-top: var(--meal-space-40); }

.text-center { text-align: center; }
.text-secondary { color: var(--meal-text-secondary); }
.text-tertiary { color: var(--meal-text-tertiary); }
.text-13 { font-size: 13px; }
.text-15 { font-size: 15px; }

.measure-640 { max-width: 640px; }
.center-flex { display: flex; justify-content: center; }
.mt-80 { margin-top: 80px; }
.mb-16 { margin-bottom: var(--meal-space-16); }
.mb-20 { margin-bottom: var(--meal-space-20); }

.statement-strong {
  font-size: 18px;
  font-weight: 600;
  color: var(--meal-text-primary);
  letter-spacing: -0.01em;
}

.contact-card-title {
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -0.01em;
  margin: 8px 0 var(--meal-space-12);
}

/* Lien graphite avec sous-soulignement subtil — alternative discrète
   aux liens bleu iOS pour les contextes éditoriaux (notes, footnotes). */
.link-ink {
  color: var(--meal-ink);
  text-decoration: underline;
  text-decoration-color: rgba(29, 29, 31, 0.3);
  text-underline-offset: 3px;
  transition: text-decoration-color var(--meal-dur-short) var(--meal-ease);
}
.link-ink:hover {
  color: var(--meal-ink);
  text-decoration-color: var(--meal-ink);
}

/* Reveal on scroll : neutralisé. Contenu toujours visible.
   Si on veut réactiver une animation, le faire via une classe explicite
   pour éviter de masquer du contenu en cas d'échec JS. */
.reveal { opacity: 1; transform: none; }
