/* ============================================================
   BMM v2.0.0 — Utilities
   Spacing · Layout-Helpers · Visibility · Text-Helpers
   ============================================================ */

/* Display */
.u-hidden    { display: none !important; }
.u-flex      { display: flex; }
.u-iflex     { display: inline-flex; }
.u-grid      { display: grid; }
.u-block     { display: block; }
.u-iblock    { display: inline-block; }

/* Flex */
.u-row       { flex-direction: row; }
.u-col       { flex-direction: column; }
.u-wrap      { flex-wrap: wrap; }
.u-nowrap    { flex-wrap: nowrap; }
.u-grow      { flex: 1 1 auto; }
.u-shrink-0  { flex-shrink: 0; }
.u-items-start  { align-items: flex-start; }
.u-items-center { align-items: center; }
.u-items-end    { align-items: flex-end; }
.u-justify-start  { justify-content: flex-start; }
.u-justify-center { justify-content: center; }
.u-justify-end    { justify-content: flex-end; }
.u-justify-between{ justify-content: space-between; }

/* Gap */
.u-gap-1 { gap: 0.25rem; }
.u-gap-2 { gap: 0.5rem; }
.u-gap-3 { gap: 0.75rem; }
.u-gap-4 { gap: 1rem; }
.u-gap-6 { gap: 1.5rem; }
.u-gap-8 { gap: 2rem; }

/* Margin / Padding (subset, by step) */
.u-m-0 { margin: 0; }
.u-mt-1 { margin-top: 0.25rem; } .u-mt-2 { margin-top: 0.5rem; } .u-mt-3 { margin-top: 0.75rem; } .u-mt-4 { margin-top: 1rem; } .u-mt-6 { margin-top: 1.5rem; } .u-mt-8 { margin-top: 2rem; }
.u-mb-1 { margin-bottom: 0.25rem; } .u-mb-2 { margin-bottom: 0.5rem; } .u-mb-3 { margin-bottom: 0.75rem; } .u-mb-4 { margin-bottom: 1rem; } .u-mb-6 { margin-bottom: 1.5rem; } .u-mb-8 { margin-bottom: 2rem; }
.u-ml-auto { margin-left: auto; }
.u-mr-auto { margin-right: auto; }

.u-p-0 { padding: 0; }
.u-p-2 { padding: 0.5rem; } .u-p-3 { padding: 0.75rem; } .u-p-4 { padding: 1rem; } .u-p-6 { padding: 1.5rem; }

/* Text */
.u-text-center  { text-align: center; }
.u-text-right   { text-align: right; }
.u-text-left    { text-align: left; }
.u-text-muted   { color: var(--text-muted); }
.u-text-subtle  { color: var(--text-subtle); }
.u-text-accent  { color: var(--accent); }
.u-text-primary { color: var(--primary); }
.u-text-success { color: var(--st-lager); }
.u-text-danger  { color: var(--st-gesperrt); }
.u-text-warning { color: var(--ampel-faellig); }

.u-mono        { font-family: var(--font-mono); }
.u-display     { font-family: var(--font-display); }
.u-truncate    { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.u-text-xs  { font-size: 0.72rem; }
.u-text-sm  { font-size: 0.82rem; }
.u-text-md  { font-size: 0.95rem; }
.u-text-lg  { font-size: 1.1rem; }
.u-text-xl  { font-size: 1.5rem; }

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

/* Visibility per Breakpoint */
@media (min-width: 1024px) {
  .u-desktop-only { display: revert; }
  .u-tablet-only  { display: none !important; }
  .u-mobile-only  { display: none !important; }
  .u-touch-only   { display: none !important; }
}
@media (max-width: 1023px) and (min-width: 641px) {
  .u-desktop-only { display: none !important; }
  .u-tablet-only  { display: revert; }
  .u-mobile-only  { display: none !important; }
  .u-touch-only   { display: revert; }
}
@media (max-width: 640px) {
  .u-desktop-only { display: none !important; }
  .u-tablet-only  { display: none !important; }
  .u-mobile-only  { display: revert; }
  .u-touch-only   { display: revert; }
}

/* Borders / Backgrounds */
.u-border       { border: 1px solid var(--border); }
.u-border-top   { border-top: 1px solid var(--border); }
.u-border-bot   { border-bottom: 1px solid var(--border); }
.u-rounded      { border-radius: var(--radius); }
.u-rounded-sm   { border-radius: var(--radius-sm); }
.u-rounded-lg   { border-radius: var(--radius-lg); }
.u-bg-surface   { background: var(--surface); }
.u-bg-surface-2 { background: var(--surface-2); }
.u-bg-primary-soft { background: var(--primary-soft); }

/* Shadow */
.u-shadow-sm { box-shadow: var(--shadow-sm); }
.u-shadow-md { box-shadow: var(--shadow-md); }
.u-shadow-xl { box-shadow: var(--shadow-xl); }

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