/* ===================================================================
   utilities.css — 디자인 가이드의 utility 헬퍼 (간격·정렬·표시).
   =================================================================== */

/* Display */
.d-none        { display: none !important; }
.d-block       { display: block !important; }
.d-flex        { display: flex !important; }
.d-grid        { display: grid !important; }
.d-inline-flex { display: inline-flex !important; }

/* Spacing — m{margin} / p{padding} + side */
.m-0  { margin: 0 !important; }
.mt-0 { margin-top: 0 !important; }
.mt-sm { margin-top: var(--spacing-sm) !important; }
.mt-md { margin-top: var(--spacing-md) !important; }
.mt-lg { margin-top: var(--spacing-lg) !important; }
.mb-sm { margin-bottom: var(--spacing-sm) !important; }
.mb-md { margin-bottom: var(--spacing-md) !important; }
.mb-lg { margin-bottom: var(--spacing-lg) !important; }
.p-md { padding: var(--spacing-md) !important; }
.p-lg { padding: var(--spacing-lg) !important; }

/* Flex */
.justify-between { justify-content: space-between; }
.justify-center  { justify-content: center; }
.items-center    { align-items: center; }
.gap-sm { gap: var(--spacing-sm); }
.gap-md { gap: var(--spacing-md); }

/* Text */
.text-truncate {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}
.text-success { color: var(--color-success); }
.text-warning { color: var(--color-warning); }
.text-danger  { color: var(--color-danger); }
.text-primary { color: var(--color-primary); }

.fw-bold   { font-weight: 700; }
.fw-medium { font-weight: 500; }

/* Visibility helpers — i18n / a11y */
.visually-hidden {
    position: absolute !important;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0);
    white-space: nowrap; border: 0;
}
