@layer utilities {
  /* ── Display ── */
  .flex { display: flex; }
  .flex-inline { display: inline-flex; }
  .flex-column { display: flex; flex-direction: column; }
  .flex-wrap { flex-wrap: wrap; }
  .flex-1 { flex: 1; }
  .flex-item-grow { flex-grow: 1; }
  .flex-item-no-shrink { flex-shrink: 0; }
  .grid { display: grid; }
  .hidden { display: none; }
  .display-contents { display: contents; }

  /* ── Justify & Align ── */
  .justify-start { justify-content: flex-start; }
  .justify-center { justify-content: center; }
  .justify-end { justify-content: flex-end; }
  .justify-space-between { justify-content: space-between; }
  .align-center { align-items: center; }
  .align-start { align-items: flex-start; }
  .align-end { align-items: flex-end; }
  .align-self-center { align-self: center; }
  .align-self-end { align-self: flex-end; }
  .flex-item-justify-end { margin-inline-start: auto; }

  /* ── Gap ── */
  .gap {
    --column-gap: var(--inline-space);
    --row-gap: var(--block-space);
    column-gap: var(--column-gap);
    row-gap: var(--row-gap);
  }
  .gap-half {
    --column-gap: var(--inline-space-half);
    --row-gap: var(--block-space-half);
    column-gap: var(--column-gap);
    row-gap: var(--row-gap);
  }
  .gap-none { gap: 0; }

  /* ── Text ── */
  .txt-xx-small { font-size: var(--text-xx-small); }
  .txt-x-small { font-size: var(--text-x-small); }
  .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-x-large { font-size: var(--text-x-large); }

  .txt-align-center { text-align: center; }
  .txt-align-start { text-align: start; }
  .txt-align-end { text-align: end; }

  .txt-ink { color: var(--color-ink); }
  .txt-subtle { color: var(--color-ink-medium); }
  .txt-reversed { color: var(--color-ink-inverted); }
  .txt-negative { color: var(--color-negative); }
  .txt-positive { color: var(--color-positive); }
  .txt-link { color: var(--color-link); }
  .txt-warning { color: var(--color-warning); }

  .txt-nowrap { white-space: nowrap; }
  .txt-uppercase { text-transform: uppercase; }
  .txt-capitalize { text-transform: capitalize; }
  .txt-break { word-break: break-word; overflow-wrap: break-word; }

  .font-weight-normal { font-weight: 400; }
  .font-weight-medium { font-weight: 500; }
  .font-weight-semibold { font-weight: 600; }
  .font-weight-bold { font-weight: 700; }

  /* ── Spacing: Padding (logical properties) ── */
  .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-block { padding-block: var(--block-space); }
  .pad-block-half { padding-block: var(--block-space-half); }
  .pad-inline { padding-inline: var(--inline-space); }
  .pad-inline-half { padding-inline: var(--inline-space-half); }
  .unpad { padding: 0; }

  /* ── Spacing: Margin (logical properties) ── */
  .margin { margin: var(--block-space) var(--inline-space); }
  .margin-block { margin-block: var(--block-space); }
  .margin-block-half { margin-block: var(--block-space-half); }
  .margin-block-start { margin-block-start: var(--block-space); }
  .margin-block-end { margin-block-end: var(--block-space); }
  .margin-inline { margin-inline: var(--inline-space); }
  .margin-inline-start { margin-inline-start: var(--inline-space); }
  .margin-inline-end { margin-inline-end: var(--inline-space); }
  .margin-none { margin: 0; }
  .center { margin-inline: auto; }

  /* ── Width & Sizing ── */
  .full-width { inline-size: 100%; }
  .half-width { inline-size: 50%; }
  .fit-content { inline-size: fit-content; }
  .min-content { inline-size: min-content; }

  /* ── Overflow ── */
  .overflow-clip { overflow: clip; }
  .overflow-ellipsis {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .overflow-line-clamp {
    display: -webkit-box;
    -webkit-line-clamp: var(--lines, 2);
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  /* ── Fill & Background ── */
  .fill { background-color: var(--color-ink-lightest); }
  .fill-canvas { background-color: var(--color-canvas); }
  .fill-selected { background-color: var(--color-selected); }
  .fill-highlight { background-color: var(--color-highlight); }
  .fill-transparent { background-color: transparent; }

  /* ── Border ── */
  .border { border: var(--border); }
  .border-block { border-block: var(--border); }
  .border-bottom { border-block-end: var(--border); }
  .border-top { border-block-start: var(--border); }
  .borderless { border: 0; }
  .border-radius { border-radius: var(--radius, 0.5em); }

  /* ── Position ── */
  .position-relative { position: relative; }
  .position-sticky {
    position: sticky;
    inset-block-start: var(--inset, 0);
    z-index: var(--z, auto);
  }

  /* ── Visibility & Accessibility ── */
  .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 !important; }

  .non-clickable { pointer-events: none; }
  .translucent { opacity: var(--opacity, 0.66); }

  .hide-scrollbar {
    scrollbar-width: none;
    &::-webkit-scrollbar { display: none; }
  }

  /* ── Responsive ── */
  @media (any-hover: none) {
    .show-on-touch { display: revert; }
    .hide-on-touch { display: none; }
  }

  @media (any-hover: hover) {
    .show-on-touch { display: none; }
    .hide-on-touch { display: revert; }
  }
}
