/* ============================================================
   SPACING UTILITIES — Margin & Padding
   Scale: 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 80, 96, 128
   Usage: .mt-4, .mb-8, .px-16, .py-24, etc.
   ============================================================ */

:root {
  --space-0: 0px;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-16: 64px;
  --space-20: 80px;
  --space-24: 96px;
  --space-32: 128px;
}

/* ============================================================
   MARGIN — All sides
   ============================================================ */

.m-0 {
  margin: 0;
}
.m-1 {
  margin: var(--space-1);
}
.m-2 {
  margin: var(--space-2);
}
.m-3 {
  margin: var(--space-3);
}
.m-4 {
  margin: var(--space-4);
}
.m-5 {
  margin: var(--space-5);
}
.m-6 {
  margin: var(--space-6);
}
.m-8 {
  margin: var(--space-8);
}
.m-10 {
  margin: var(--space-10);
}
.m-12 {
  margin: var(--space-12);
}
.m-16 {
  margin: var(--space-16);
}
.m-20 {
  margin: var(--space-20);
}
.m-24 {
  margin: var(--space-24);
}
.m-32 {
  margin: var(--space-32);
}
.m-auto {
  margin: auto;
}

/* ============================================================
   MARGIN TOP — mt
   ============================================================ */

.mt-0 {
  margin-top: 0;
}
.mt-1 {
  margin-top: var(--space-1);
}
.mt-2 {
  margin-top: var(--space-2);
}
.mt-3 {
  margin-top: var(--space-3);
}
.mt-4 {
  margin-top: var(--space-4);
}
.mt-5 {
  margin-top: var(--space-5);
}
.mt-6 {
  margin-top: var(--space-6);
}
.mt-8 {
  margin-top: var(--space-8);
}
.mt-10 {
  margin-top: var(--space-10);
}
.mt-12 {
  margin-top: var(--space-12);
}
.mt-16 {
  margin-top: var(--space-16);
}
.mt-20 {
  margin-top: var(--space-20);
}
.mt-24 {
  margin-top: var(--space-24);
}
.mt-32 {
  margin-top: var(--space-32);
}
.mt-auto {
  margin-top: auto;
}

/* ============================================================
   MARGIN BOTTOM — mb
   ============================================================ */

.mb-0 {
  margin-bottom: 0;
}
.mb-1 {
  margin-bottom: var(--space-1);
}
.mb-2 {
  margin-bottom: var(--space-2);
}
.mb-3 {
  margin-bottom: var(--space-3);
}
.mb-4 {
  margin-bottom: var(--space-4);
}
.mb-5 {
  margin-bottom: var(--space-5);
}
.mb-6 {
  margin-bottom: var(--space-6);
}
.mb-8 {
  margin-bottom: var(--space-8);
}
.mb-10 {
  margin-bottom: var(--space-10);
}
.mb-12 {
  margin-bottom: var(--space-12);
}
.mb-16 {
  margin-bottom: var(--space-16);
}
.mb-20 {
  margin-bottom: var(--space-20);
}
.mb-24 {
  margin-bottom: var(--space-24);
}
.mb-32 {
  margin-bottom: var(--space-32);
}
.mb-auto {
  margin-bottom: auto;
}

/* ============================================================
   MARGIN LEFT — ml
   ============================================================ */

.ml-0 {
  margin-left: 0;
}
.ml-1 {
  margin-left: var(--space-1);
}
.ml-2 {
  margin-left: var(--space-2);
}
.ml-3 {
  margin-left: var(--space-3);
}
.ml-4 {
  margin-left: var(--space-4);
}
.ml-5 {
  margin-left: var(--space-5);
}
.ml-6 {
  margin-left: var(--space-6);
}
.ml-8 {
  margin-left: var(--space-8);
}
.ml-10 {
  margin-left: var(--space-10);
}
.ml-12 {
  margin-left: var(--space-12);
}
.ml-16 {
  margin-left: var(--space-16);
}
.ml-20 {
  margin-left: var(--space-20);
}
.ml-24 {
  margin-left: var(--space-24);
}
.ml-32 {
  margin-left: var(--space-32);
}
.ml-auto {
  margin-left: auto;
}

/* ============================================================
   MARGIN RIGHT — mr
   ============================================================ */

.mr-0 {
  margin-right: 0;
}
.mr-1 {
  margin-right: var(--space-1);
}
.mr-2 {
  margin-right: var(--space-2);
}
.mr-3 {
  margin-right: var(--space-3);
}
.mr-4 {
  margin-right: var(--space-4);
}
.mr-5 {
  margin-right: var(--space-5);
}
.mr-6 {
  margin-right: var(--space-6);
}
.mr-8 {
  margin-right: var(--space-8);
}
.mr-10 {
  margin-right: var(--space-10);
}
.mr-12 {
  margin-right: var(--space-12);
}
.mr-16 {
  margin-right: var(--space-16);
}
.mr-20 {
  margin-right: var(--space-20);
}
.mr-24 {
  margin-right: var(--space-24);
}
.mr-32 {
  margin-right: var(--space-32);
}
.mr-auto {
  margin-right: auto;
}

/* ============================================================
   MARGIN X-AXIS (left + right) — mx
   ============================================================ */

.mx-0 {
  margin-left: 0;
  margin-right: 0;
}
.mx-1 {
  margin-left: var(--space-1);
  margin-right: var(--space-1);
}
.mx-2 {
  margin-left: var(--space-2);
  margin-right: var(--space-2);
}
.mx-3 {
  margin-left: var(--space-3);
  margin-right: var(--space-3);
}
.mx-4 {
  margin-left: var(--space-4);
  margin-right: var(--space-4);
}
.mx-5 {
  margin-left: var(--space-5);
  margin-right: var(--space-5);
}
.mx-6 {
  margin-left: var(--space-6);
  margin-right: var(--space-6);
}
.mx-8 {
  margin-left: var(--space-8);
  margin-right: var(--space-8);
}
.mx-10 {
  margin-left: var(--space-10);
  margin-right: var(--space-10);
}
.mx-12 {
  margin-left: var(--space-12);
  margin-right: var(--space-12);
}
.mx-16 {
  margin-left: var(--space-16);
  margin-right: var(--space-16);
}
.mx-20 {
  margin-left: var(--space-20);
  margin-right: var(--space-20);
}
.mx-24 {
  margin-left: var(--space-24);
  margin-right: var(--space-24);
}
.mx-32 {
  margin-left: var(--space-32);
  margin-right: var(--space-32);
}
.mx-auto {
  margin-left: auto;
  margin-right: auto;
}

/* ============================================================
   MARGIN Y-AXIS (top + bottom) — my
   ============================================================ */

.my-0 {
  margin-top: 0;
  margin-bottom: 0;
}
.my-1 {
  margin-top: var(--space-1);
  margin-bottom: var(--space-1);
}
.my-2 {
  margin-top: var(--space-2);
  margin-bottom: var(--space-2);
}
.my-3 {
  margin-top: var(--space-3);
  margin-bottom: var(--space-3);
}
.my-4 {
  margin-top: var(--space-4);
  margin-bottom: var(--space-4);
}
.my-5 {
  margin-top: var(--space-5);
  margin-bottom: var(--space-5);
}
.my-6 {
  margin-top: var(--space-6);
  margin-bottom: var(--space-6);
}
.my-8 {
  margin-top: var(--space-8);
  margin-bottom: var(--space-8);
}
.my-10 {
  margin-top: var(--space-10);
  margin-bottom: var(--space-10);
}
.my-12 {
  margin-top: var(--space-12);
  margin-bottom: var(--space-12);
}
.my-16 {
  margin-top: var(--space-16);
  margin-bottom: var(--space-16);
}
.my-20 {
  margin-top: var(--space-20);
  margin-bottom: var(--space-20);
}
.my-24 {
  margin-top: var(--space-24);
  margin-bottom: var(--space-24);
}
.my-32 {
  margin-top: var(--space-32);
  margin-bottom: var(--space-32);
}
.my-auto {
  margin-top: auto;
  margin-bottom: auto;
}

/* ============================================================
   PADDING — All sides
   ============================================================ */

.p-0 {
  padding: 0;
}
.p-1 {
  padding: var(--space-1);
}
.p-2 {
  padding: var(--space-2);
}
.p-3 {
  padding: var(--space-3);
}
.p-4 {
  padding: var(--space-4);
}
.p-5 {
  padding: var(--space-5);
}
.p-6 {
  padding: var(--space-6);
}
.p-8 {
  padding: var(--space-8);
}
.p-10 {
  padding: var(--space-10);
}
.p-12 {
  padding: var(--space-12);
}
.p-16 {
  padding: var(--space-16);
}
.p-20 {
  padding: var(--space-20);
}
.p-24 {
  padding: var(--space-24);
}
.p-32 {
  padding: var(--space-32);
}

/* ============================================================
   PADDING TOP — pt
   ============================================================ */

.pt-0 {
  padding-top: 0;
}
.pt-1 {
  padding-top: var(--space-1);
}
.pt-2 {
  padding-top: var(--space-2);
}
.pt-3 {
  padding-top: var(--space-3);
}
.pt-4 {
  padding-top: var(--space-4);
}
.pt-5 {
  padding-top: var(--space-5);
}
.pt-6 {
  padding-top: var(--space-6);
}
.pt-8 {
  padding-top: var(--space-8);
}
.pt-10 {
  padding-top: var(--space-10);
}
.pt-12 {
  padding-top: var(--space-12);
}
.pt-16 {
  padding-top: var(--space-16);
}
.pt-20 {
  padding-top: var(--space-20);
}
.pt-24 {
  padding-top: var(--space-24);
}
.pt-32 {
  padding-top: var(--space-32);
}

/* ============================================================
   PADDING BOTTOM — pb
   ============================================================ */

.pb-0 {
  padding-bottom: 0;
}
.pb-1 {
  padding-bottom: var(--space-1);
}
.pb-2 {
  padding-bottom: var(--space-2);
}
.pb-3 {
  padding-bottom: var(--space-3);
}
.pb-4 {
  padding-bottom: var(--space-4);
}
.pb-5 {
  padding-bottom: var(--space-5);
}
.pb-6 {
  padding-bottom: var(--space-6);
}
.pb-8 {
  padding-bottom: var(--space-8);
}
.pb-10 {
  padding-bottom: var(--space-10);
}
.pb-12 {
  padding-bottom: var(--space-12);
}
.pb-16 {
  padding-bottom: var(--space-16);
}
.pb-20 {
  padding-bottom: var(--space-20);
}
.pb-24 {
  padding-bottom: var(--space-24);
}
.pb-32 {
  padding-bottom: var(--space-32);
}

/* ============================================================
   PADDING LEFT — pl
   ============================================================ */

.pl-0 {
  padding-left: 0;
}
.pl-1 {
  padding-left: var(--space-1);
}
.pl-2 {
  padding-left: var(--space-2);
}
.pl-3 {
  padding-left: var(--space-3);
}
.pl-4 {
  padding-left: var(--space-4);
}
.pl-5 {
  padding-left: var(--space-5);
}
.pl-6 {
  padding-left: var(--space-6);
}
.pl-8 {
  padding-left: var(--space-8);
}
.pl-10 {
  padding-left: var(--space-10);
}
.pl-12 {
  padding-left: var(--space-12);
}
.pl-16 {
  padding-left: var(--space-16);
}
.pl-20 {
  padding-left: var(--space-20);
}
.pl-24 {
  padding-left: var(--space-24);
}
.pl-32 {
  padding-left: var(--space-32);
}

/* ============================================================
   PADDING RIGHT — pr
   ============================================================ */

.pr-0 {
  padding-right: 0;
}
.pr-1 {
  padding-right: var(--space-1);
}
.pr-2 {
  padding-right: var(--space-2);
}
.pr-3 {
  padding-right: var(--space-3);
}
.pr-4 {
  padding-right: var(--space-4);
}
.pr-5 {
  padding-right: var(--space-5);
}
.pr-6 {
  padding-right: var(--space-6);
}
.pr-8 {
  padding-right: var(--space-8);
}
.pr-10 {
  padding-right: var(--space-10);
}
.pr-12 {
  padding-right: var(--space-12);
}
.pr-16 {
  padding-right: var(--space-16);
}
.pr-20 {
  padding-right: var(--space-20);
}
.pr-24 {
  padding-right: var(--space-24);
}
.pr-32 {
  padding-right: var(--space-32);
}

/* ============================================================
   PADDING X-AXIS (left + right) — px
   ============================================================ */

.px-0 {
  padding-left: 0;
  padding-right: 0;
}
.px-1 {
  padding-left: var(--space-1);
  padding-right: var(--space-1);
}
.px-2 {
  padding-left: var(--space-2);
  padding-right: var(--space-2);
}
.px-3 {
  padding-left: var(--space-3);
  padding-right: var(--space-3);
}
.px-4 {
  padding-left: var(--space-4);
  padding-right: var(--space-4);
}
.px-5 {
  padding-left: var(--space-5);
  padding-right: var(--space-5);
}
.px-6 {
  padding-left: var(--space-6);
  padding-right: var(--space-6);
}
.px-8 {
  padding-left: var(--space-8);
  padding-right: var(--space-8);
}
.px-10 {
  padding-left: var(--space-10);
  padding-right: var(--space-10);
}
.px-12 {
  padding-left: var(--space-12);
  padding-right: var(--space-12);
}
.px-16 {
  padding-left: var(--space-16);
  padding-right: var(--space-16);
}
.px-20 {
  padding-left: var(--space-20);
  padding-right: var(--space-20);
}
.px-24 {
  padding-left: var(--space-24);
  padding-right: var(--space-24);
}
.px-32 {
  padding-left: var(--space-32);
  padding-right: var(--space-32);
}

/* ============================================================
   PADDING Y-AXIS (top + bottom) — py
   ============================================================ */

.py-0 {
  padding-top: 0;
  padding-bottom: 0;
}
.py-1 {
  padding-top: var(--space-1);
  padding-bottom: var(--space-1);
}
.py-2 {
  padding-top: var(--space-2);
  padding-bottom: var(--space-2);
}
.py-3 {
  padding-top: var(--space-3);
  padding-bottom: var(--space-3);
}
.py-4 {
  padding-top: var(--space-4);
  padding-bottom: var(--space-4);
}
.py-5 {
  padding-top: var(--space-5);
  padding-bottom: var(--space-5);
}
.py-6 {
  padding-top: var(--space-6);
  padding-bottom: var(--space-6);
}
.py-8 {
  padding-top: var(--space-8);
  padding-bottom: var(--space-8);
}
.py-10 {
  padding-top: var(--space-10);
  padding-bottom: var(--space-10);
}
.py-12 {
  padding-top: var(--space-12);
  padding-bottom: var(--space-12);
}
.py-16 {
  padding-top: var(--space-16);
  padding-bottom: var(--space-16);
}
.py-20 {
  padding-top: var(--space-20);
  padding-bottom: var(--space-20);
}
.py-24 {
  padding-top: var(--space-24);
  padding-bottom: var(--space-24);
}
.py-32 {
  padding-top: var(--space-32);
  padding-bottom: var(--space-32);
}

/* ============================================================
   GAP — for flexbox / grid containers
   ============================================================ */

.gap-0 {
  gap: 0;
}
.gap-1 {
  gap: var(--space-1);
}
.gap-2 {
  gap: var(--space-2);
}
.gap-3 {
  gap: var(--space-3);
}
.gap-4 {
  gap: var(--space-4);
}
.gap-5 {
  gap: var(--space-5);
}
.gap-6 {
  gap: var(--space-6);
}
.gap-8 {
  gap: var(--space-8);
}
.gap-10 {
  gap: var(--space-10);
}
.gap-12 {
  gap: var(--space-12);
}
.gap-16 {
  gap: var(--space-16);
}
.gap-20 {
  gap: var(--space-20);
}
.gap-24 {
  gap: var(--space-24);
}
.gap-32 {
  gap: var(--space-32);
}

.gap-x-0 {
  column-gap: 0;
}
.gap-x-2 {
  column-gap: var(--space-2);
}
.gap-x-4 {
  column-gap: var(--space-4);
}
.gap-x-6 {
  column-gap: var(--space-6);
}
.gap-x-8 {
  column-gap: var(--space-8);
}
.gap-x-12 {
  column-gap: var(--space-12);
}
.gap-x-16 {
  column-gap: var(--space-16);
}

.gap-y-0 {
  row-gap: 0;
}
.gap-y-2 {
  row-gap: var(--space-2);
}
.gap-y-4 {
  row-gap: var(--space-4);
}
.gap-y-6 {
  row-gap: var(--space-6);
}
.gap-y-8 {
  row-gap: var(--space-8);
}
.gap-y-12 {
  row-gap: var(--space-12);
}
.gap-y-16 {
  row-gap: var(--space-16);
}

/* ============================================================
   RESPONSIVE OVERRIDES
   Breakpoints: sm 480px | md 768px | lg 1024px | xl 1280px
   Usage: class="mt-8 md:mt-12 lg:mt-16"
   ============================================================ */

@media (min-width: 480px) {
  .sm\:mt-0 {
    margin-top: 0;
  }
  .sm\:mb-0 {
    margin-bottom: 0;
  }
  .sm\:mt-4 {
    margin-top: var(--space-4);
  }
  .sm\:mb-4 {
    margin-bottom: var(--space-4);
  }
  .sm\:mt-8 {
    margin-top: var(--space-8);
  }
  .sm\:mb-8 {
    margin-bottom: var(--space-8);
  }
  .sm\:mt-12 {
    margin-top: var(--space-12);
  }
  .sm\:mb-12 {
    margin-bottom: var(--space-12);
  }
  .sm\:mt-16 {
    margin-top: var(--space-16);
  }
  .sm\:mb-16 {
    margin-bottom: var(--space-16);
  }
  .sm\:pt-0 {
    padding-top: 0;
  }
  .sm\:pb-0 {
    padding-bottom: 0;
  }
  .sm\:pt-4 {
    padding-top: var(--space-4);
  }
  .sm\:pb-4 {
    padding-bottom: var(--space-4);
  }
  .sm\:pt-8 {
    padding-top: var(--space-8);
  }
  .sm\:pb-8 {
    padding-bottom: var(--space-8);
  }
  .sm\:pt-12 {
    padding-top: var(--space-12);
  }
  .sm\:pb-12 {
    padding-bottom: var(--space-12);
  }
  .sm\:px-4 {
    padding-left: var(--space-4);
    padding-right: var(--space-4);
  }
  .sm\:px-8 {
    padding-left: var(--space-8);
    padding-right: var(--space-8);
  }
  .sm\:py-4 {
    padding-top: var(--space-4);
    padding-bottom: var(--space-4);
  }
  .sm\:py-8 {
    padding-top: var(--space-8);
    padding-bottom: var(--space-8);
  }
}

@media (min-width: 768px) {
  .md\:mt-0 {
    margin-top: 0;
  }
  .md\:mb-0 {
    margin-bottom: 0;
  }
  .md\:mt-4 {
    margin-top: var(--space-4);
  }
  .md\:mb-4 {
    margin-bottom: var(--space-4);
  }
  .md\:mt-8 {
    margin-top: var(--space-8);
  }
  .md\:mb-8 {
    margin-bottom: var(--space-8);
  }
  .md\:mt-12 {
    margin-top: var(--space-12);
  }
  .md\:mb-12 {
    margin-bottom: var(--space-12);
  }
  .md\:mt-16 {
    margin-top: var(--space-16);
  }
  .md\:mb-16 {
    margin-bottom: var(--space-16);
  }
  .md\:mt-24 {
    margin-top: var(--space-24);
  }
  .md\:mb-24 {
    margin-bottom: var(--space-24);
  }
  .md\:pt-0 {
    padding-top: 0;
  }
  .md\:pb-0 {
    padding-bottom: 0;
  }
  .md\:pt-4 {
    padding-top: var(--space-4);
  }
  .md\:pb-4 {
    padding-bottom: var(--space-4);
  }
  .md\:pt-8 {
    padding-top: var(--space-8);
  }
  .md\:pb-8 {
    padding-bottom: var(--space-8);
  }
  .md\:pt-12 {
    padding-top: var(--space-12);
  }
  .md\:pb-12 {
    padding-bottom: var(--space-12);
  }
  .md\:pt-16 {
    padding-top: var(--space-16);
  }
  .md\:pb-16 {
    padding-bottom: var(--space-16);
  }
  .md\:px-4 {
    padding-left: var(--space-4);
    padding-right: var(--space-4);
  }
  .md\:px-8 {
    padding-left: var(--space-8);
    padding-right: var(--space-8);
  }
  .md\:px-12 {
    padding-left: var(--space-12);
    padding-right: var(--space-12);
  }
  .md\:px-16 {
    padding-left: var(--space-16);
    padding-right: var(--space-16);
  }
  .md\:py-4 {
    padding-top: var(--space-4);
    padding-bottom: var(--space-4);
  }
  .md\:py-8 {
    padding-top: var(--space-8);
    padding-bottom: var(--space-8);
  }
  .md\:py-12 {
    padding-top: var(--space-12);
    padding-bottom: var(--space-12);
  }
  .md\:py-16 {
    padding-top: var(--space-16);
    padding-bottom: var(--space-16);
  }
}

@media (min-width: 1024px) {
  .lg\:mt-0 {
    margin-top: 0;
  }
  .lg\:mb-0 {
    margin-bottom: 0;
  }
  .lg\:mt-8 {
    margin-top: var(--space-8);
  }
  .lg\:mb-8 {
    margin-bottom: var(--space-8);
  }
  .lg\:mt-12 {
    margin-top: var(--space-12);
  }
  .lg\:mb-12 {
    margin-bottom: var(--space-12);
  }
  .lg\:mt-16 {
    margin-top: var(--space-16);
  }
  .lg\:mb-16 {
    margin-bottom: var(--space-16);
  }
  .lg\:mt-24 {
    margin-top: var(--space-24);
  }
  .lg\:mb-24 {
    margin-bottom: var(--space-24);
  }
  .lg\:mt-32 {
    margin-top: var(--space-32);
  }
  .lg\:mb-32 {
    margin-bottom: var(--space-32);
  }
  .lg\:pt-0 {
    padding-top: 0;
  }
  .lg\:pb-0 {
    padding-bottom: 0;
  }
  .lg\:pt-8 {
    padding-top: var(--space-8);
  }
  .lg\:pb-8 {
    padding-bottom: var(--space-8);
  }
  .lg\:pt-12 {
    padding-top: var(--space-12);
  }
  .lg\:pb-12 {
    padding-bottom: var(--space-12);
  }
  .lg\:pt-16 {
    padding-top: var(--space-16);
  }
  .lg\:pb-16 {
    padding-bottom: var(--space-16);
  }
  .lg\:pt-24 {
    padding-top: var(--space-24);
  }
  .lg\:pb-24 {
    padding-bottom: var(--space-24);
  }
  .lg\:px-8 {
    padding-left: var(--space-8);
    padding-right: var(--space-8);
  }
  .lg\:px-12 {
    padding-left: var(--space-12);
    padding-right: var(--space-12);
  }
  .lg\:px-16 {
    padding-left: var(--space-16);
    padding-right: var(--space-16);
  }
  .lg\:px-24 {
    padding-left: var(--space-24);
    padding-right: var(--space-24);
  }
  .lg\:py-8 {
    padding-top: var(--space-8);
    padding-bottom: var(--space-8);
  }
  .lg\:py-12 {
    padding-top: var(--space-12);
    padding-bottom: var(--space-12);
  }
  .lg\:py-16 {
    padding-top: var(--space-16);
    padding-bottom: var(--space-16);
  }
  .lg\:py-24 {
    padding-top: var(--space-24);
    padding-bottom: var(--space-24);
  }
}
