/* ===============================
   utilities.css → Reusable Grid System (Fixed with 0.5rem spacing)
   =============================== */

/* Row system */
.row {
  display: flex;
  flex-wrap: wrap;
  margin: 0;
  gap: 0.5rem; /* default jarak antar kolom */
}

/* Flex-based columns */
[class^="col-"],
[class*=" col-"] {
  flex: 0 0 auto;
  box-sizing: border-box;
  /* padding: 0; */
}

/* Helper untuk hitung basis otomatis */
:root {
  --col-gap: 0.5rem;
}

.col-auto {
  flex: 1 1 auto;
  max-width: 100%;
  min-width: 0;
}

/* 12-grid base (mobile-first) */
.col-1 {
  flex-basis: calc(8.3333% - var(--col-gap));
  max-width: calc(8.3333% - var(--col-gap));
}
.col-2 {
  flex-basis: calc(16.6667% - var(--col-gap));
  max-width: calc(16.6667% - var(--col-gap));
}
.col-3 {
  flex-basis: calc(25% - var(--col-gap));
  max-width: calc(25% - var(--col-gap));
}
.col-4 {
  flex-basis: calc(33.3333% - var(--col-gap));
  max-width: calc(33.3333% - var(--col-gap));
}
.col-5 {
  flex-basis: calc(41.6667% - var(--col-gap));
  max-width: calc(41.6667% - var(--col-gap));
}
.col-6 {
  flex-basis: calc(50% - var(--col-gap));
  max-width: calc(50% - var(--col-gap));
}
.col-7 {
  flex-basis: calc(58.3333% - var(--col-gap));
  max-width: calc(58.3333% - var(--col-gap));
}
.col-8 {
  flex-basis: calc(66.6667% - var(--col-gap));
  max-width: calc(66.6667% - var(--col-gap));
}
.col-9 {
  flex-basis: calc(75% - var(--col-gap));
  max-width: calc(75% - var(--col-gap));
}
.col-10 {
  flex-basis: calc(83.3333% - var(--col-gap));
  max-width: calc(83.3333% - var(--col-gap));
}
.col-11 {
  flex-basis: calc(91.6667% - var(--col-gap));
  max-width: calc(91.6667% - var(--col-gap));
}
.col-12 {
  flex-basis: calc(100% - var(--col-gap));
  max-width: calc(100% - var(--col-gap));
}

/* Breakpoints dengan perhitungan yang sama */
@media (min-width: 576px) {
  .col-sm-1 {
    flex-basis: calc(8.3333% - var(--col-gap));
    max-width: calc(8.3333% - var(--col-gap));
  }
  .col-sm-2 {
    flex-basis: calc(16.6667% - var(--col-gap));
    max-width: calc(16.6667% - var(--col-gap));
  }
  .col-sm-3 {
    flex-basis: calc(25% - var(--col-gap));
    max-width: calc(25% - var(--col-gap));
  }
  .col-sm-4 {
    flex-basis: calc(33.3333% - var(--col-gap));
    max-width: calc(33.3333% - var(--col-gap));
  }
  .col-sm-5 {
    flex-basis: calc(41.6667% - var(--col-gap));
    max-width: calc(41.6667% - var(--col-gap));
  }
  .col-sm-6 {
    flex-basis: calc(50% - var(--col-gap));
    max-width: calc(50% - var(--col-gap));
  }
  .col-sm-7 {
    flex-basis: calc(58.3333% - var(--col-gap));
    max-width: calc(58.3333% - var(--col-gap));
  }
  .col-sm-8 {
    flex-basis: calc(66.6667% - var(--col-gap));
    max-width: calc(66.6667% - var(--col-gap));
  }
  .col-sm-9 {
    flex-basis: calc(75% - var(--col-gap));
    max-width: calc(75% - var(--col-gap));
  }
  .col-sm-10 {
    flex-basis: calc(83.3333% - var(--col-gap));
    max-width: calc(83.3333% - var(--col-gap));
  }
  .col-sm-11 {
    flex-basis: calc(91.6667% - var(--col-gap));
    max-width: calc(91.6667% - var(--col-gap));
  }
  .col-sm-12 {
    flex-basis: calc(100% - var(--col-gap));
    max-width: calc(100% - var(--col-gap));
  }
}
@media (min-width: 768px) {
  .col-md-1 {
    flex-basis: calc(8.3333% - var(--col-gap));
    max-width: calc(8.3333% - var(--col-gap));
  }
  .col-md-2 {
    flex-basis: calc(16.6667% - var(--col-gap));
    max-width: calc(16.6667% - var(--col-gap));
  }
  .col-md-3 {
    flex-basis: calc(25% - var(--col-gap));
    max-width: calc(25% - var(--col-gap));
  }
  .col-md-4 {
    flex-basis: calc(33.3333% - var(--col-gap));
    max-width: calc(33.3333% - var(--col-gap));
  }
  .col-md-5 {
    flex-basis: calc(41.6667% - var(--col-gap));
    max-width: calc(41.6667% - var(--col-gap));
  }
  .col-md-6 {
    flex-basis: calc(50% - var(--col-gap));
    max-width: calc(50% - var(--col-gap));
  }
  .col-md-7 {
    flex-basis: calc(58.3333% - var(--col-gap));
    max-width: calc(58.3333% - var(--col-gap));
  }
  .col-md-8 {
    flex-basis: calc(66.6667% - var(--col-gap));
    max-width: calc(66.6667% - var(--col-gap));
  }
  .col-md-9 {
    flex-basis: calc(75% - var(--col-gap));
    max-width: calc(75% - var(--col-gap));
  }
  .col-md-10 {
    flex-basis: calc(83.3333% - var(--col-gap));
    max-width: calc(83.3333% - var(--col-gap));
  }
  .col-md-11 {
    flex-basis: calc(91.6667% - var(--col-gap));
    max-width: calc(91.6667% - var(--col-gap));
  }
  .col-md-12 {
    flex-basis: calc(100% - var(--col-gap));
    max-width: calc(100% - var(--col-gap));
  }
}
@media (min-width: 992px) {
  .col-lg-1 {
    flex-basis: calc(8.3333% - var(--col-gap));
    max-width: calc(8.3333% - var(--col-gap));
  }
  .col-lg-2 {
    flex-basis: calc(16.6667% - var(--col-gap));
    max-width: calc(16.6667% - var(--col-gap));
  }
  .col-lg-3 {
    flex-basis: calc(25% - var(--col-gap));
    max-width: calc(25% - var(--col-gap));
  }
  .col-lg-4 {
    flex-basis: calc(33.3333% - var(--col-gap));
    max-width: calc(33.3333% - var(--col-gap));
  }
  .col-lg-5 {
    flex-basis: calc(41.6667% - var(--col-gap));
    max-width: calc(41.6667% - var(--col-gap));
  }
  .col-lg-6 {
    flex-basis: calc(50% - var(--col-gap));
    max-width: calc(50% - var(--col-gap));
  }
  .col-lg-7 {
    flex-basis: calc(58.3333% - var(--col-gap));
    max-width: calc(58.3333% - var(--col-gap));
  }
  .col-lg-8 {
    flex-basis: calc(66.6667% - var(--col-gap));
    max-width: calc(66.6667% - var(--col-gap));
  }
  .col-lg-9 {
    flex-basis: calc(75% - var(--col-gap));
    max-width: calc(75% - var(--col-gap));
  }
  .col-lg-10 {
    flex-basis: calc(83.3333% - var(--col-gap));
    max-width: calc(83.3333% - var(--col-gap));
  }
  .col-lg-11 {
    flex-basis: calc(91.6667% - var(--col-gap));
    max-width: calc(91.6667% - var(--col-gap));
  }
  .col-lg-12 {
    flex-basis: calc(100% - var(--col-gap));
    max-width: calc(100% - var(--col-gap));
  }
}

/* ===============================
   GAP Utilities (Work with Flexbox)
   =============================== */
.g-0 {
  gap: 0 !important;
}
.g-1 {
  gap: 0.25rem !important;
}
.g-2 {
  gap: 0.5rem !important;
}
.g-3 {
  gap: 1rem !important;
}
.g-4 {
  gap: 1.5rem !important;
}
.g-5 {
  gap: 3rem !important;
}

/* Flex helpers & text align (biarkan sama seperti sebelumnya) */
.d-flex {
  display: flex !important;
}
.d-none {
  display: none !important;
}
.align-items-center {
  align-items: center !important;
}
.justify-content-between {
  justify-content: space-between !important;
}
.justify-content-center {
  justify-content: center !important;
}
.justify-content-around {
  justify-content: space-around !important;
}
.justify-content-end {
  justify-content: flex-end !important;
}
.text-start {
  text-align: left !important;
}
.text-center {
  text-align: center !important;
}
.text-end {
  text-align: right !important;
}

/* ========== BORDER & RADIUS ========== */
.border {
  border: 1px solid var(--form-border) !important;
}
.border-top {
  border-top: 1px solid var(--form-border) !important;
}
.border-bottom {
  border-bottom: 1px solid var(--form-border) !important;
}
.border-start {
  border-left: 1px solid var(--form-border) !important;
}
.border-end {
  border-right: 1px solid var(--form-border) !important;
}
.rounded {
  border-radius: 0.25rem !important;
}
.rounded-circle {
  border-radius: 50% !important;
}

/* ========== SHADOWS ========== */
.shadow {
  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
}
.shadow-sm {
  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
}
.shadow-lg {
  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
}
