/* Layout */
.flex { display: flex; }
.flex-column { flex-direction: column; }
.flex-wrap { flex-wrap: wrap; }
.align-center { align-items: center; }
.align-start { align-items: flex-start; }
.justify-between { justify-content: space-between; }
.justify-center { justify-content: center; }
.flex-1 { flex: 1; }

/* Spacing */
.gap-xs { gap: var(--space-xs); }
.gap-sm { gap: var(--space-sm); }
.gap { gap: var(--space-md); }
.gap-lg { gap: var(--space-lg); }
.gap-xl { gap: var(--space-xl); }

.pad-sm { padding: var(--space-sm); }
.pad { padding: var(--space-md); }
.pad-lg { padding: var(--space-lg); }
.pad-xl { padding: var(--space-xl); }

/* Typography */
.txt-xs { font-size: var(--text-xs); }
.txt-sm { font-size: var(--text-sm); }
.txt-lg { font-size: var(--text-lg); }
.txt-xl { font-size: var(--text-xl); }
.txt-2xl { font-size: var(--text-2xl); }
.txt-3xl { font-size: clamp(2rem, 3vw + 1rem, 3rem); }
.txt-bold { font-weight: 600; }
.txt-muted { color: var(--theme-muted); }
.txt-subtle { color: var(--theme-text-subtle); }
.txt-center { text-align: center; }
.txt-mono { font-family: var(--font-mono); }

/* Sizing */
.max-w-prose { max-inline-size: 65ch; }

/* Margin */
.mt-sm { margin-block-start: var(--space-sm); }

/* Accessibility */
.for-screen-reader {
  position: absolute;
  clip-path: inset(50%);
  inline-size: 1px;
  block-size: 1px;
  overflow: hidden;
  white-space: nowrap;
}

/* Branding */
.gradient-brand {
  background-image: linear-gradient(to right, var(--theme-gradient-start), var(--theme-gradient-end));
}

.text-gradient {
  background-image: linear-gradient(to right, var(--theme-gradient-start), var(--theme-gradient-end));
  -webkit-background-clip: text;
  color: transparent;
}
