/* Flex */
.flex          { display: flex; }
.flex-col      { flex-direction: column; }
.flex-wrap     { flex-wrap: wrap; }
.items-center  { align-items: center; }
.items-start   { align-items: flex-start; }
.items-end     { align-items: flex-end; }
.justify-center   { justify-content: center; }
.justify-between  { justify-content: space-between; }
.justify-end      { justify-content: flex-end; }
.flex-1        { flex: 1; }
.gap-xs        { gap: var(--space-xs); }
.gap-sm        { gap: var(--space-sm); }
.gap-md        { gap: var(--space-md); }
.gap-lg        { gap: var(--space-lg); }
.gap-xl        { gap: var(--space-xl); }

/* Grid */
.grid          { display: grid; }
.grid-2        { grid-template-columns: 1fr 1fr; }
.grid-3        { grid-template-columns: 1fr 1fr 1fr; }

/* Spacing */
.m-0  { margin: 0; }
.mt-sm { margin-top: var(--space-sm); }
.mt-md { margin-top: var(--space-md); }
.mt-lg { margin-top: var(--space-lg); }
.mt-xl { margin-top: var(--space-xl); }
.mb-sm { margin-bottom: var(--space-sm); }
.mb-md { margin-bottom: var(--space-md); }
.mb-lg { margin-bottom: var(--space-lg); }
.p-sm  { padding: var(--space-sm); }
.p-md  { padding: var(--space-md); }
.p-lg  { padding: var(--space-lg); }

/* Text */
.text-center   { text-align: center; }
.text-left     { text-align: left; }
.text-right    { text-align: right; }
.text-xs       { font-size: var(--text-xs); }
.text-sm       { font-size: var(--text-sm); }
.text-base     { font-size: var(--text-base); }
.text-lg       { font-size: var(--text-lg); }
.text-xl       { font-size: var(--text-xl); }
.text-2xl      { font-size: var(--text-2xl); }
.font-bold     { font-weight: 700; }
.font-extrabold { font-weight: 800; }
.text-muted    { color: var(--text-muted); }
.text-accent   { color: var(--text-accent); }
.text-success  { color: var(--color-success); }
.text-error    { color: var(--color-error); }
.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Display */
.hidden { display: none !important; }
.block  { display: block; }
.inline { display: inline; }
.relative { position: relative; }
.absolute { position: absolute; }

/* Sizing */
.w-full { width: 100%; }
.h-full { height: 100%; }
.min-h-screen {
  min-height: 100vh;
  min-height: 100dvh;
}

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

/* Border */
.rounded-md  { border-radius: var(--radius-md); }
.rounded-lg  { border-radius: var(--radius-lg); }
.rounded-xl  { border-radius: var(--radius-xl); }
.rounded-full { border-radius: var(--radius-full); }

/* User select */
.select-none { user-select: none; -webkit-user-select: none; }
.select-text { user-select: text; -webkit-user-select: text; }
