/* ============================================================
   SAFENTRA DESIGN SYSTEM — UTILITIES
   Low-level helper classes mirroring the token scale.
   ============================================================ */

/* Display / flex */
.d-none{display:none!important}
.d-block{display:block}
.d-flex{display:flex}
.d-inline-flex{display:inline-flex}
.d-grid{display:grid}
.flex-col{flex-direction:column}
.flex-wrap{flex-wrap:wrap}
.flex-1{flex:1;min-width:0}
.items-start{align-items:flex-start}
.items-center{align-items:center}
.items-end{align-items:flex-end}
.justify-start{justify-content:flex-start}
.justify-center{justify-content:center}
.justify-between{justify-content:space-between}
.justify-end{justify-content:flex-end}
.self-start{align-self:flex-start}

.gap-0{gap:0}.gap-1{gap:var(--sp-1)}.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}
.gap-4{gap:var(--sp-4)}.gap-5{gap:var(--sp-5)}.gap-6{gap:var(--sp-6)}.gap-8{gap:var(--sp-8)}

/* Spacing */
.m-0{margin:0}
.mt-1{margin-top:var(--sp-1)}.mt-2{margin-top:var(--sp-2)}.mt-3{margin-top:var(--sp-3)}.mt-4{margin-top:var(--sp-4)}.mt-5{margin-top:var(--sp-5)}.mt-6{margin-top:var(--sp-6)}.mt-8{margin-top:var(--sp-8)}
.mb-1{margin-bottom:var(--sp-1)}.mb-2{margin-bottom:var(--sp-2)}.mb-3{margin-bottom:var(--sp-3)}.mb-4{margin-bottom:var(--sp-4)}.mb-5{margin-bottom:var(--sp-5)}.mb-6{margin-bottom:var(--sp-6)}.mb-8{margin-bottom:var(--sp-8)}
.ms-1{margin-left:var(--sp-1)}.ms-2{margin-left:var(--sp-2)}.ms-3{margin-left:var(--sp-3)}.ms-auto{margin-left:auto}
.me-1{margin-right:var(--sp-1)}.me-2{margin-right:var(--sp-2)}.me-3{margin-right:var(--sp-3)}
.my-3{margin-top:var(--sp-3);margin-bottom:var(--sp-3)}.my-4{margin-top:var(--sp-4);margin-bottom:var(--sp-4)}
.p-0{padding:0}
.p-3{padding:var(--sp-3)}.p-4{padding:var(--sp-4)}.p-5{padding:var(--sp-5)}.p-6{padding:var(--sp-6)}
.px-4{padding-left:var(--sp-4);padding-right:var(--sp-4)}.py-3{padding-top:var(--sp-3);padding-bottom:var(--sp-3)}

/* Sizing */
.w-100{width:100%}
.h-100{height:100%}
.mw-0{min-width:0}

/* Typography */
.text-xs{font-size:var(--text-xs)}
.text-sm{font-size:var(--text-sm)}
.text-md{font-size:var(--text-md)}
.text-lg{font-size:var(--text-lg)}
.text-xl{font-size:var(--text-xl)}
.fw-medium{font-weight:var(--fw-medium)}
.fw-semibold{font-weight:var(--fw-semibold)}
.fw-bold{font-weight:var(--fw-bold)}
.text-muted{color:var(--color-text-3)}
.text-2{color:var(--color-text-2)}
.text-primary{color:var(--color-primary)}
.text-success{color:var(--color-success-fg)}
.text-warning{color:var(--color-warning-fg)}
.text-danger{color:var(--color-danger-fg)}
.text-center{text-align:center}
.text-end{text-align:right}
.text-up{ text-transform:uppercase;letter-spacing:.06em;font-size:var(--text-2xs);font-weight:var(--fw-semibold);color:var(--color-text-3)}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tnum{font-variant-numeric:tabular-nums}
.mono{font-family:var(--font-mono)}

/* Surfaces / borders */
.surface{background:var(--color-surface)}
.surface-2{background:var(--color-surface-2)}
.brd{border:1px solid var(--color-border)}
.brd-b{border-bottom:1px solid var(--color-border)}
.brd-t{border-top:1px solid var(--color-border)}
.r-sm{border-radius:var(--r-sm)}.r-md{border-radius:var(--r-md)}.r-lg{border-radius:var(--r-lg)}.r-xl{border-radius:var(--r-xl)}.r-full{border-radius:var(--r-full)}
.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}

/* Misc */
.cur-p{cursor:pointer}
.pos-r{position:relative}
.ov-h{overflow:hidden}
.no-select{user-select:none}
