/* Utility classes - loaded last; selectors doubled so they win ties
   against component rules like `.kv .v`. */
/* Layout utilities: replace ad-hoc inline styles; consume the token scale. */
.row.row { display: flex; align-items: center; gap: var(--s2); }
.row-tight.row-tight { display: flex; align-items: center; gap: var(--s1); }
.row-loose.row-loose { display: flex; align-items: center; gap: var(--s3); }
.row-split.row-split { display: flex; align-items: center; gap: var(--s2); justify-content: space-between; }
.wrap.wrap { flex-wrap: wrap; }
.stack.stack { display: flex; flex-direction: column; gap: var(--s2); }
.stack-tight.stack-tight { display: flex; flex-direction: column; gap: var(--s1); }
.stack-loose.stack-loose { display: flex; flex-direction: column; gap: var(--s3); }
.grow.grow { flex: 1; min-width: 0; }
.mt-1.mt-1 { margin-top: var(--s1); } .mt-2 { margin-top: var(--s2); }
.mt-3.mt-3 { margin-top: var(--s3); } .mt-4 { margin-top: var(--s4); }
.mb-1.mb-1 { margin-bottom: var(--s1); } .mb-2 { margin-bottom: var(--s2); }
.text-xs.text-xs { font-size: var(--fs-xs); }
.text-sm.text-sm { font-size: var(--fs-sm); }
.bold.bold { font-weight: 700; }
.pre-wrap.pre-wrap { white-space: pre-wrap; }

.ml-2.ml-2 { margin-left: var(--s2); }
.text-left.text-left { text-align: left; }
.no-shrink.no-shrink { flex-shrink: 0; }
