/* Small, composable utility classes. Layout primitives only; components own their own CSS. */

.u-flex        { display: flex; }
.u-flex-col    { display: flex; flex-direction: column; }
.u-items-center{ align-items: center; }
.u-justify-between { justify-content: space-between; }
.u-justify-center   { justify-content: center; }
.u-wrap        { flex-wrap: wrap; }

.u-gap-1 { gap: var(--s-1); }
.u-gap-2 { gap: var(--s-2); }
.u-gap-3 { gap: var(--s-3); }
.u-gap-4 { gap: var(--s-4); }
.u-gap-6 { gap: var(--s-6); }

.u-p-2 { padding: var(--s-2); }
.u-p-3 { padding: var(--s-3); }
.u-p-4 { padding: var(--s-4); }
.u-p-6 { padding: var(--s-6); }

.u-mt-2 { margin-top: var(--s-2); }
.u-mt-4 { margin-top: var(--s-4); }
.u-mt-6 { margin-top: var(--s-6); }
.u-mb-2 { margin-bottom: var(--s-2); }
.u-mb-4 { margin-bottom: var(--s-4); }

.u-w-full  { width: 100%; }
.u-h-full  { height: 100%; }

.u-text-muted { color: var(--text-muted); }
.u-text-faint { color: var(--text-faint); }
.u-text-xs { font-size: var(--fs-xs); }
.u-text-sm { font-size: var(--fs-sm); }
.u-text-lg { font-size: var(--fs-lg); }
.u-text-xl { font-size: var(--fs-xl); }
.u-text-2xl { font-size: var(--fs-2xl); }
.u-font-medium { font-weight: 500; }
.u-font-semibold { font-weight: 600; }

.u-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.u-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.u-hidden { display: none; }

@media (max-width: 900px) {
  .u-hide-mobile { display: none; }
}

@media (min-width: 901px) {
  .u-hide-desktop { display: none; }
}
