/*
 * Design System - Utility Classes
 *
 * Helper classes for spacing, display, alignment, etc.
 */

/* ============================================
   Display utilities
   ============================================ */

.hidden {
  display: none !important;
}

.d-none { display: none; }
.d-block { display: block; }
.d-inline { display: inline; }
.d-inline-block { display: inline-block; }
.d-flex { display: flex; }
.d-grid { display: grid; }

/* ============================================
   Spacing utilities - Margin
   ============================================ */

.m-0 { margin: 0; }
.mt-0 { margin-top: 0; }
.mr-0 { margin-right: 0; }
.mb-0 { margin-bottom: 0; }
.ml-0 { margin-left: 0; }

.m-sm { margin: var(--space-sm); }
.mt-sm { margin-top: var(--space-sm); }
.mr-sm { margin-right: var(--space-sm); }
.mb-sm { margin-bottom: var(--space-sm); }
.ml-sm { margin-left: var(--space-sm); }

.m-base { margin: var(--space-base); }
.mt-base { margin-top: var(--space-base); }
.mr-base { margin-right: var(--space-base); }
.mb-base { margin-bottom: var(--space-base); }
.ml-base { margin-left: var(--space-base); }

.m-lg { margin: var(--space-lg); }
.mt-lg { margin-top: var(--space-lg); }
.mr-lg { margin-right: var(--space-lg); }
.mb-lg { margin-bottom: var(--space-lg); }
.ml-lg { margin-left: var(--space-lg); }

/* ============================================
   Spacing utilities - Padding
   ============================================ */

.p-0 { padding: 0; }
.pt-0 { padding-top: 0; }
.pr-0 { padding-right: 0; }
.pb-0 { padding-bottom: 0; }
.pl-0 { padding-left: 0; }

.p-sm { padding: var(--space-sm); }
.pt-sm { padding-top: var(--space-sm); }
.pr-sm { padding-right: var(--space-sm); }
.pb-sm { padding-bottom: var(--space-sm); }
.pl-sm { padding-left: var(--space-sm); }

.p-base { padding: var(--space-base); }
.pt-base { padding-top: var(--space-base); }
.pr-base { padding-right: var(--space-base); }
.pb-base { padding-bottom: var(--space-base); }
.pl-base { padding-left: var(--space-base); }

.p-lg { padding: var(--space-lg); }
.pt-lg { padding-top: var(--space-lg); }
.pr-lg { padding-right: var(--space-lg); }
.pb-lg { padding-bottom: var(--space-lg); }
.pl-lg { padding-left: var(--space-lg); }

/* ============================================
   Flexbox utilities
   ============================================ */

.flex-row { flex-direction: row; }
.flex-column { flex-direction: column; }
.flex-wrap { flex-wrap: wrap; }

.justify-start { justify-content: flex-start; }
.justify-center { justify-content: center; }
.justify-end { justify-content: flex-end; }
.justify-between { justify-content: space-between; }

.align-start { align-items: flex-start; }
.align-center { align-items: center; }
.align-end { align-items: flex-end; }

.gap-xs { gap: var(--space-xs); }
.gap-sm { gap: var(--space-sm); }
.gap-md { gap: var(--space-md); }
.gap-base { gap: var(--space-base); }
.gap-lg { gap: var(--space-lg); }

/* ============================================
   Text alignment
   ============================================ */

.text-left { text-align: left; }
.text-center { text-align: center; }
.text-right { text-align: right; }

/* ============================================
   Borders
   ============================================ */

.border { border: 1px solid var(--parchment); }
.border-top { border-top: 1px solid var(--parchment); }
.border-right { border-right: 1px solid var(--parchment); }
.border-bottom { border-bottom: 1px solid var(--parchment); }
.border-left { border-left: 1px solid var(--parchment); }
.border-none { border: none; }

/* ============================================
   Width utilities
   ============================================ */

.w-full { width: 100%; }
.w-auto { width: auto; }

/* ============================================
   Height utilities
   ============================================ */

.h-full { height: 100%; }
.h-auto { height: auto; }
