/* ═══════════════════════════════════════════════════════
   NEO UTILITIES — Lightweight utility classes
   استفاده: برای فاصله‌ها، alignment و نمایش سریع بدون
   نوشتن CSS جدید در کامپوننت‌ها.
   ═══════════════════════════════════════════════════════ */

/* ── Display ── */
.u-block { display: block !important; }
.u-inline-block { display: inline-block !important; }
.u-inline { display: inline !important; }
.u-flex { display: flex !important; }
.u-inline-flex { display: inline-flex !important; }
.u-grid { display: grid !important; }
.u-hidden { display: none !important; }

/* ── Flex direction & alignment ── */
.u-flex-row { flex-direction: row !important; }
.u-flex-col { flex-direction: column !important; }
.u-flex-wrap { flex-wrap: wrap !important; }
.u-flex-nowrap { flex-wrap: nowrap !important; }
.u-items-start { align-items: flex-start !important; }
.u-items-center { align-items: center !important; }
.u-items-end { align-items: flex-end !important; }
.u-items-stretch { align-items: stretch !important; }
.u-justify-start { justify-content: flex-start !important; }
.u-justify-center { justify-content: center !important; }
.u-justify-end { justify-content: flex-end !important; }
.u-justify-between { justify-content: space-between !important; }
.u-justify-around { justify-content: space-around !important; }
.u-self-start { align-self: flex-start !important; }
.u-self-center { align-self: center !important; }
.u-self-end { align-self: flex-end !important; }
.u-flex-1 { flex: 1 1 0% !important; }
.u-flex-auto { flex: 1 1 auto !important; }
.u-flex-none { flex: none !important; }

/* ── Gap (requires flex/grid) ── */
.u-gap-1 { gap: var(--neo-space-1) !important; }
.u-gap-2 { gap: var(--neo-space-2) !important; }
.u-gap-3 { gap: var(--neo-space-3) !important; }
.u-gap-4 { gap: var(--neo-space-4) !important; }
.u-gap-5 { gap: var(--neo-space-5) !important; }
.u-gap-6 { gap: var(--neo-space-6) !important; }
.u-gap-8 { gap: var(--neo-space-8) !important; }

/* ── Margin (logical for RTL safety) ── */
.u-m-0 { margin: 0 !important; }
.u-m-1 { margin: var(--neo-space-1) !important; }
.u-m-2 { margin: var(--neo-space-2) !important; }
.u-m-3 { margin: var(--neo-space-3) !important; }
.u-m-4 { margin: var(--neo-space-4) !important; }
.u-m-auto { margin: auto !important; }

.u-mt-0 { margin-top: 0 !important; }
.u-mt-1 { margin-top: var(--neo-space-1) !important; }
.u-mt-2 { margin-top: var(--neo-space-2) !important; }
.u-mt-3 { margin-top: var(--neo-space-3) !important; }
.u-mt-4 { margin-top: var(--neo-space-4) !important; }
.u-mt-5 { margin-top: var(--neo-space-5) !important; }
.u-mt-6 { margin-top: var(--neo-space-6) !important; }
.u-mt-8 { margin-top: var(--neo-space-8) !important; }

.u-mb-0 { margin-bottom: 0 !important; }
.u-mb-1 { margin-bottom: var(--neo-space-1) !important; }
.u-mb-2 { margin-bottom: var(--neo-space-2) !important; }
.u-mb-3 { margin-bottom: var(--neo-space-3) !important; }
.u-mb-4 { margin-bottom: var(--neo-space-4) !important; }
.u-mb-5 { margin-bottom: var(--neo-space-5) !important; }
.u-mb-6 { margin-bottom: var(--neo-space-6) !important; }
.u-mb-8 { margin-bottom: var(--neo-space-8) !important; }

.u-ms-0 { margin-inline-start: 0 !important; }
.u-ms-1 { margin-inline-start: var(--neo-space-1) !important; }
.u-ms-2 { margin-inline-start: var(--neo-space-2) !important; }
.u-ms-3 { margin-inline-start: var(--neo-space-3) !important; }
.u-ms-4 { margin-inline-start: var(--neo-space-4) !important; }
.u-ms-auto { margin-inline-start: auto !important; }

.u-me-0 { margin-inline-end: 0 !important; }
.u-me-1 { margin-inline-end: var(--neo-space-1) !important; }
.u-me-2 { margin-inline-end: var(--neo-space-2) !important; }
.u-me-3 { margin-inline-end: var(--neo-space-3) !important; }
.u-me-4 { margin-inline-end: var(--neo-space-4) !important; }
.u-me-auto { margin-inline-end: auto !important; }

/* ── Padding ── */
.u-p-0 { padding: 0 !important; }
.u-p-1 { padding: var(--neo-space-1) !important; }
.u-p-2 { padding: var(--neo-space-2) !important; }
.u-p-3 { padding: var(--neo-space-3) !important; }
.u-p-4 { padding: var(--neo-space-4) !important; }
.u-p-5 { padding: var(--neo-space-5) !important; }
.u-p-6 { padding: var(--neo-space-6) !important; }
.u-p-8 { padding: var(--neo-space-8) !important; }

.u-px-1 { padding-inline: var(--neo-space-1) !important; }
.u-px-2 { padding-inline: var(--neo-space-2) !important; }
.u-px-3 { padding-inline: var(--neo-space-3) !important; }
.u-px-4 { padding-inline: var(--neo-space-4) !important; }
.u-py-1 { padding-top: var(--neo-space-1) !important; padding-bottom: var(--neo-space-1) !important; }
.u-py-2 { padding-top: var(--neo-space-2) !important; padding-bottom: var(--neo-space-2) !important; }
.u-py-3 { padding-top: var(--neo-space-3) !important; padding-bottom: var(--neo-space-3) !important; }
.u-py-4 { padding-top: var(--neo-space-4) !important; padding-bottom: var(--neo-space-4) !important; }

/* ── Typography ── */
.u-text-xs { font-size: var(--neo-font-xs) !important; }
.u-text-sm { font-size: var(--neo-font-sm) !important; }
.u-text-base { font-size: var(--neo-font-base) !important; }
.u-text-md { font-size: var(--neo-font-md) !important; }
.u-text-lg { font-size: var(--neo-font-lg) !important; }
.u-text-xl { font-size: var(--neo-font-xl) !important; }
.u-text-2xl { font-size: var(--neo-font-2xl) !important; }
.u-text-3xl { font-size: var(--neo-font-3xl) !important; }

.u-font-regular { font-weight: var(--neo-weight-regular, 400) !important; }
.u-font-medium { font-weight: var(--neo-weight-medium, 500) !important; }
.u-font-semibold { font-weight: var(--neo-weight-semibold, 600) !important; }
.u-font-bold { font-weight: var(--neo-weight-bold, 700) !important; }

.u-text-start { text-align: start !important; }
.u-text-center { text-align: center !important; }
.u-text-end { text-align: end !important; }
.u-text-justify { text-align: justify !important; }
.u-text-nowrap { white-space: nowrap !important; }
.u-text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.u-text-primary { color: var(--neo-text-primary) !important; }
.u-text-secondary { color: var(--neo-text-secondary) !important; }
.u-text-muted { color: var(--neo-text-muted) !important; }
.u-text-brand { color: var(--neo-primary) !important; }
.u-text-success { color: var(--neo-success) !important; }
.u-text-warning { color: var(--neo-warning) !important; }
.u-text-danger { color: var(--neo-danger) !important; }
.u-text-info { color: var(--neo-info) !important; }

/* ── Backgrounds ── */
.u-bg-page { background: var(--neo-bg-page) !important; }
.u-bg-card { background: var(--neo-bg-card) !important; }
.u-bg-subtle { background: var(--neo-bg-subtle) !important; }

/* ── Borders ── */
.u-border { border: 1px solid var(--neo-border) !important; }
.u-border-t { border-top: 1px solid var(--neo-border) !important; }
.u-border-b { border-bottom: 1px solid var(--neo-border) !important; }
.u-border-0 { border: 0 !important; }

.u-rounded-xs { border-radius: var(--neo-radius-xs) !important; }
.u-rounded-sm { border-radius: var(--neo-radius-sm) !important; }
.u-rounded-md { border-radius: var(--neo-radius-md) !important; }
.u-rounded-lg { border-radius: var(--neo-radius-lg) !important; }
.u-rounded-xl { border-radius: var(--neo-radius-xl) !important; }
.u-rounded-full { border-radius: var(--neo-radius-full) !important; }

/* ── Shadow ── */
.u-shadow-none { box-shadow: none !important; }
.u-shadow-xs { box-shadow: var(--neo-shadow-xs) !important; }
.u-shadow-sm { box-shadow: var(--neo-shadow-sm) !important; }
.u-shadow-md { box-shadow: var(--neo-shadow-md) !important; }
.u-shadow-lg { box-shadow: var(--neo-shadow-lg) !important; }

/* ── Width / Height ── */
.u-w-full { width: 100% !important; }
.u-w-auto { width: auto !important; }
.u-h-full { height: 100% !important; }
.u-h-auto { height: auto !important; }
.u-min-h-0 { min-height: 0 !important; }

/* ── Cursor ── */
.u-cursor-pointer { cursor: pointer !important; }
.u-cursor-not-allowed { cursor: not-allowed !important; }
.u-cursor-default { cursor: default !important; }

/* ── Overflow ── */
.u-overflow-hidden { overflow: hidden !important; }
.u-overflow-auto { overflow: auto !important; }
.u-overflow-y-auto { overflow-y: auto !important; }
.u-overflow-x-auto { overflow-x: auto !important; }

/* ── Position ── */
.u-relative { position: relative !important; }
.u-absolute { position: absolute !important; }
.u-sticky { position: sticky !important; }

/* ── Responsive visibility ── */
@media (max-width: 767.98px) {
    .u-hidden-sm { display: none !important; }
}

@media (min-width: 768px) {
    .u-hidden-md-up { display: none !important; }
}

@media (max-width: 991.98px) {
    .u-hidden-md { display: none !important; }
}

@media (min-width: 992px) {
    .u-hidden-lg-up { display: none !important; }
}
