/*
 * AH Digital — Utility Classes
 *
 * Small reusable helpers only. Utilities must not replace semantic components.
 */

/* Display */
.ah-hidden { display: none !important; }
.ah-block { display: block; }
.ah-inline-block { display: inline-block; }
.ah-flex { display: flex; }
.ah-inline-flex { display: inline-flex; }
.ah-grid-util { display: grid; }

/* Direction / wrapping */
.ah-flex-column { flex-direction: column; }
.ah-flex-wrap { flex-wrap: wrap; }
.ah-nowrap { flex-wrap: nowrap; }

/* Alignment */
.ah-items-start { align-items: flex-start; }
.ah-items-center { align-items: center; }
.ah-items-end { align-items: flex-end; }

.ah-justify-start { justify-content: flex-start; }
.ah-justify-center { justify-content: center; }
.ah-justify-end { justify-content: flex-end; }
.ah-justify-between { justify-content: space-between; }

/* Gaps */
.ah-gap-1 { gap: var(--ah-space-1); }
.ah-gap-2 { gap: var(--ah-space-2); }
.ah-gap-3 { gap: var(--ah-space-3); }
.ah-gap-4 { gap: var(--ah-space-4); }
.ah-gap-5 { gap: var(--ah-space-5); }
.ah-gap-6 { gap: var(--ah-space-6); }
.ah-gap-7 { gap: var(--ah-space-7); }
.ah-gap-8 { gap: var(--ah-space-8); }

/* Width */
.ah-w-full { width: 100%; }
.ah-max-w-reading { max-width: var(--ah-content-reading); }
.ah-max-w-narrow { max-width: var(--ah-container-narrow); }
.ah-max-w-standard { max-width: var(--ah-container-standard); }
.ah-max-w-wide { max-width: var(--ah-container-wide); }

/* Margin */
.ah-mx-auto { margin-inline: auto; }
.ah-mt-0 { margin-block-start: 0; }
.ah-mt-2 { margin-block-start: var(--ah-space-2); }
.ah-mt-3 { margin-block-start: var(--ah-space-3); }
.ah-mt-4 { margin-block-start: var(--ah-space-4); }
.ah-mt-5 { margin-block-start: var(--ah-space-5); }
.ah-mt-6 { margin-block-start: var(--ah-space-6); }
.ah-mt-7 { margin-block-start: var(--ah-space-7); }
.ah-mt-8 { margin-block-start: var(--ah-space-8); }

.ah-mb-0 { margin-block-end: 0; }
.ah-mb-2 { margin-block-end: var(--ah-space-2); }
.ah-mb-3 { margin-block-end: var(--ah-space-3); }
.ah-mb-4 { margin-block-end: var(--ah-space-4); }
.ah-mb-5 { margin-block-end: var(--ah-space-5); }
.ah-mb-6 { margin-block-end: var(--ah-space-6); }
.ah-mb-7 { margin-block-end: var(--ah-space-7); }
.ah-mb-8 { margin-block-end: var(--ah-space-8); }

/* Padding */
.ah-p-0 { padding: 0; }
.ah-p-3 { padding: var(--ah-space-3); }
.ah-p-4 { padding: var(--ah-space-4); }
.ah-p-5 { padding: var(--ah-space-5); }
.ah-p-6 { padding: var(--ah-space-6); }

.ah-px-0 { padding-inline: 0; }
.ah-px-3 { padding-inline: var(--ah-space-3); }
.ah-px-4 { padding-inline: var(--ah-space-4); }
.ah-px-5 { padding-inline: var(--ah-space-5); }
.ah-px-6 { padding-inline: var(--ah-space-6); }

.ah-py-0 { padding-block: 0; }
.ah-py-3 { padding-block: var(--ah-space-3); }
.ah-py-4 { padding-block: var(--ah-space-4); }
.ah-py-5 { padding-block: var(--ah-space-5); }
.ah-py-6 { padding-block: var(--ah-space-6); }

/* Text */
.ah-text-left { text-align: left; }
.ah-text-center { text-align: center; }
.ah-text-right { text-align: right; }

.ah-text-primary { color: var(--ah-color-text); }
.ah-text-secondary { color: var(--ah-color-text-secondary); }
.ah-text-muted { color: var(--ah-color-text-muted); }
.ah-text-brand { color: var(--ah-color-brand); }
.ah-text-signal { color: var(--ah-color-signal); }
.ah-text-intelligence { color: var(--ah-color-intelligence); }

.ah-font-mono { font-family: var(--ah-font-mono); }
.ah-font-sans { font-family: var(--ah-font-sans); }

.ah-font-regular { font-weight: 400; }
.ah-font-medium { font-weight: 500; }
.ah-font-semibold { font-weight: 650; }
.ah-font-bold { font-weight: 700; }

.ah-uppercase {
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/* Surfaces */
.ah-bg-page { background: var(--ah-color-bg); }
.ah-bg-surface { background: var(--ah-color-surface); }
.ah-bg-soft { background: var(--ah-color-surface-soft); }

/* Borders */
.ah-border { border: 1px solid var(--ah-color-border); }
.ah-border-top { border-block-start: 1px solid var(--ah-color-border); }
.ah-border-bottom { border-block-end: 1px solid var(--ah-color-border); }

.ah-rounded-xs { border-radius: var(--ah-radius-xs); }
.ah-rounded-sm { border-radius: var(--ah-radius-sm); }
.ah-rounded-md { border-radius: var(--ah-radius-md); }
.ah-rounded-lg { border-radius: var(--ah-radius-lg); }
.ah-rounded-xl { border-radius: var(--ah-radius-xl); }
.ah-rounded-pill { border-radius: var(--ah-radius-pill); }

/* Shadows */
.ah-shadow-sm { box-shadow: var(--ah-shadow-sm); }
.ah-shadow-md { box-shadow: var(--ah-shadow-md); }
.ah-shadow-feature { box-shadow: var(--ah-shadow-feature); }

/* Positioning */
.ah-relative { position: relative; }
.ah-absolute { position: absolute; }
.ah-sticky-util { position: sticky; }

/* Overflow */
.ah-overflow-hidden { overflow: hidden; }
.ah-overflow-clip { overflow: clip; }
.ah-overflow-auto { overflow: auto; }

/* Interaction */
.ah-no-pointer { pointer-events: none; }
.ah-no-select { user-select: none; }

/* Accessibility */
.ah-focus-ring:focus-visible {
  outline: 2px solid var(--ah-color-brand);
  outline-offset: 3px;
  box-shadow: var(--ah-focus-ring);
}

/* Visually hidden but accessible */
.ah-visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(1px, 1px, 1px, 1px) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
}

/* Responsive visibility helpers */
@media (max-width: 767px) {
  .ah-hide-mobile { display: none !important; }
}

@media (min-width: 768px) {
  .ah-show-mobile-only { display: none !important; }
}

@media (max-width: 1023px) {
  .ah-hide-tablet-down { display: none !important; }
}

@media (min-width: 1024px) {
  .ah-hide-desktop { display: none !important; }
}
