/* ============================================================
   01Academy · Utilities
   Vivid+Co Design System — Prismatic Light Through Obsidian
   ============================================================ */

.text-center { text-align: center; }
.text-left { text-align: left; }
.nowrap { white-space: nowrap; }
.tabular { font-variant-numeric: tabular-nums; }

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

.mb-0 { margin-bottom: 0; }
.mb-3 { margin-bottom: var(--sp-3); }
.mb-4 { margin-bottom: var(--sp-4); }
.mb-5 { margin-bottom: var(--sp-5); }

.muted { color: var(--color-fog-blue); }
.mute-2 { color: var(--color-fog-blue); opacity: 0.7; }
.band-dark .muted { color: var(--color-fog-blue); }

/* Accessible hidden element */
.sr-only {
  position: absolute;
  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;
}

.is-hidden { display: none !important; }

/* ------------------------------------------------------------
   Scroll Reveal — Optical Focus Pulling
   Driven by signature cubic-bezier(0.52, 0.01, 0, 1)
   ------------------------------------------------------------ */
[data-reveal] {
  opacity: 1;
  transform: none;
}

.js [data-reveal] {
  opacity: 1;
  transform: none;
}

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

