@layer utilities {
  /* Display */
  .flex { display: flex; }
  .flex-col { flex-direction: column; }
  .flex-wrap { flex-wrap: wrap; }
  .flex-1 { flex: 1; }
  .items-center { align-items: center; }
  .items-start { align-items: flex-start; }
  .justify-between { justify-content: space-between; }
  .justify-center { justify-content: center; }
  .gap-half { gap: var(--inline-space-half); }
  .gap { gap: var(--inline-space); }
  .gap-double { gap: var(--inline-space-double); }

  /* Spacing */
  .pad { padding: var(--block-space) var(--inline-space); }
  .pad-half { padding: var(--block-space-half) var(--inline-space-half); }
  .pad-double { padding: var(--block-space-double) var(--inline-space-double); }
  .pad-inline { padding-inline: var(--inline-space); }
  .pad-block { padding-block: var(--block-space); }
  .margin-block { margin-block: var(--block-space); }
  .margin-block-half { margin-block: var(--block-space-half); }

  /* Typography */
  .txt-xs { font-size: var(--text-xs); }
  .txt-small { font-size: var(--text-small); }
  .txt-normal { font-size: var(--text-normal); }
  .txt-medium { font-size: var(--text-medium); }
  .txt-large { font-size: var(--text-large); }
  .txt-muted { color: var(--color-ink-muted); }
  .txt-secondary { color: var(--color-ink-secondary); }
  .txt-center { text-align: center; }
  .txt-bold { font-weight: 600; }
  .txt-mono { font-family: var(--font-mono); }
  .txt-serif { font-family: var(--font-serif); }
  .txt-truncate {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  /* Sizing */
  .w-full { inline-size: 100%; }
  .max-w-sm { max-inline-size: 24rem; }
  .max-w-md { max-inline-size: 32rem; }
  .max-w-lg { max-inline-size: 48rem; }

  /* Visibility */
  .visually-hidden {
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    height: 1px;
    overflow: hidden;
    position: absolute;
    white-space: nowrap;
    width: 1px;
  }

  .hidden { display: none; }

  /* Show only on mobile / desktop */
  @media (min-width: 800px) {
    .mobile-only { display: none; }
  }

  @media (max-width: 799px) {
    .desktop-only { display: none; }
  }

  /* Borders */
  .border-bottom { border-block-end: var(--border); }
  .border-top { border-block-start: var(--border); }

  /* Misc */
  .no-scrollbar {
    scrollbar-width: none;
  }
  .no-scrollbar::-webkit-scrollbar {
    display: none;
  }
}
