/* ============================================================================
   forms.css — PENYERAGAMAN TATA LETAK FORM (dimuat sitewide)
   ============================================================================
   Pembagian tugas yang tegas:
   - TAMPILAN field (warna, border, radius, ukuran, state fokus/error/disabled)
     seluruhnya diatur assets/css/theme.css §8. TIDAK diulang di sini.
   - Berkas ini hanya mengurus RUANG & URUTAN: jarak antar field, sub-judul
     langkah, urutan tombol footer modal, dan pola input nominal.

   Aturan: tanpa nilai hex, semua lewat token design-system.css.
   ========================================================================== */

/* ---- 1. Jarak antar field seragam ----------------------------------------
   Sebagian view memakai mb-1, sebagian mb-2/mb-3. Disamakan agar tidak ada
   form yang terasa lebih rapat/renggang dari form lain. Grid form horizontal
   (.row.g-2/.g-3) sengaja tidak disentuh — gutter Bootstrap sudah baku. */
.modal-body > .mb-1,
.modal-body > .mb-2,
.modal-body > .mb-3,
form > .mb-1,
form > .mb-2,
form > .mb-3 { margin-bottom: var(--sp-4) !important; }

.modal-body > *:last-child,
form > *:last-child { margin-bottom: 0 !important; }

.card-body form .form-label { margin-top: 2px; }

/* ---- 2. Tanda wajib diisi ------------------------------------------------- */
.form-label .text-danger { margin-left: 2px; font-weight: var(--fw-bold); }

/* ---- 3. Nominal / angka --------------------------------------------------
   Dipasang otomatis lewat data-type="money"/"number" (pola yang sudah dipakai
   banyak form JS) maupun class .money-input. */
.form-control[data-type="money"],
.form-control[data-type="number"],
.money-input {
  text-align: right;
  font-family: var(--font-numeric);
  font-variant-numeric: tabular-nums;
}

/* ---- 4. Ikon pada teks bantuan ------------------------------------------- */
.form-text .fa-circle-info,
.form-text > i:first-child { color: var(--info); margin-right: 4px; }

/* ---- 5. Judul langkah di dalam form panjang ------------------------------
   Untuk heading "1. …", "2. …" pada kartu multi-langkah (Import Excel,
   Transaksi multi-baris, dst). */
.card-body > h3[style*="font-size:15px"],
.card-body > h6.mb-2 {
  font-family: var(--font-heading);
  font-size: var(--fs-section);
  font-weight: var(--fw-semibold);
  color: var(--text-strong);
  letter-spacing: -.005em;
}

/* ---- 6. Footer modal: urutan tombol dibakukan ----------------------------
   Batal/sekunder SELALU kiri, aksi utama SELALU kanan — apa pun urutan
   tombol ditulis di markup masing-masing view. */
.modal-footer { display: flex; justify-content: flex-end; }
.modal-footer .btn-outline-secondary,
.modal-footer .btn-secondary,
.modal-footer [data-bs-dismiss="modal"] { order: 1; margin-right: auto; }
.modal-footer .btn-brand,
.modal-footer .btn-primary,
.modal-footer .btn-success,
.modal-footer .btn-danger { order: 2; }

/* ---- 7. Baris aksi form di dalam kartu (non-modal) ----------------------- */
.form-actions {
  display: flex; align-items: center; justify-content: flex-end;
  gap: var(--sp-3);
  padding-top: var(--sp-4);
  margin-top: var(--sp-4);
  border-top: 1px solid var(--border-subtle);
}
@media (max-width: 575.98px) {
  .form-actions { flex-direction: column-reverse; align-items: stretch; }
  .form-actions .btn { width: 100%; }
  .modal-footer .btn { flex: 1 1 auto; }
}

/* ---- 8. Fieldset ber-legend ---------------------------------------------- */
fieldset { border: 0; padding: 0; margin: 0 0 var(--sp-5); }
legend {
  font-family: var(--font-heading);
  font-size: var(--fs-micro);
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-caps);
  color: var(--text-muted);
  margin-bottom: var(--sp-3);
  float: none; width: auto;
}
