/* SIPANDU — override AdminLTE untuk kebutuhan spesifik (mobile bottom nav, dsb) */

.bottom-nav {
  display: none;
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: 60px;
  background: #fff;
  border-top: 1px solid #dee2e6;
  z-index: 1030;
  justify-content: space-around;
  align-items: center;
  box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06);
}
.bottom-nav-item {
  flex: 1;
  text-align: center;
  color: #6c757d;
  font-size: 0.68rem;
  text-decoration: none;
  padding: 6px 0;
}
.bottom-nav-item i {
  display: block;
  font-size: 1.15rem;
  margin-bottom: 2px;
}
.bottom-nav-item.active {
  color: #0d47a1;
  font-weight: 600;
}

/* Breakpoint mobile: sembunyikan header/sidebar AdminLTE, pakai bottom nav (02 analisa.md §6) */
@media (max-width: 767.98px) {
  .main-sidebar {
    display: none !important;
  }
  .content-wrapper,
  .main-footer {
    margin-left: 0 !important;
  }
  .main-header {
    display: none !important;
  }
  .bottom-nav {
    display: flex;
  }
  .content-wrapper {
    padding-bottom: 70px;
  }
  body.sidebar-mini.layout-fixed .content-wrapper {
    margin-top: 0.5rem;
  }
  /* Notifikasi tetap bisa diakses lewat menu bottom nav; sediakan tombol logout mengambang */
  .mobile-topbar {
    display: flex !important;
  }
  /* Label summary-card dashboard tetap 1 baris meski di kartu sempit (col-6) */
  .summary-card .lbl {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: 0.72rem;
  }
}
.mobile-topbar {
  display: none;
  position: sticky;
  top: 0;
  z-index: 1020;
  background: #0d47a1;
  color: #fff;
  padding: 10px 14px;
  align-items: center;
  justify-content: space-between;
  font-weight: 600;
}
.mobile-topbar a {
  color: #fff;
}

/* Kartu ringkasan dashboard */
.summary-card {
  border-radius: 0.5rem;
  color: #fff;
  padding: 1.1rem 1.25rem;
  margin-bottom: 1rem;
}
.summary-card .num {
  font-size: 1.8rem;
  font-weight: 700;
}
.summary-card .lbl {
  opacity: 0.9;
  font-size: 0.85rem;
}

.dynamic-field-group {
  margin-bottom: 1rem;
}

/* Card link cepat (mis. Pengaduan/Pengajuan di dashboard mobile) — murni
   navigasi, bukan kartu statistik seperti .summary-card */
.nav-quick-card {
  display: flex;
  align-items: center;
  gap: 10px;
  background: #fff;
  border-radius: 0.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
  padding: 14px 12px;
  text-decoration: none;
  color: #333;
  font-weight: 600;
  font-size: 0.85rem;
  border-left: 4px solid transparent;
}
.nav-quick-card:hover,
.nav-quick-card:active {
  text-decoration: none;
  color: #333;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.14);
}
.nav-quick-card i {
  font-size: 1.3rem;
  flex-shrink: 0;
}

/* Card header dashboard mobile — "gambar" berupa banner gradasi pastel +
   ikon besar (tidak ada aset foto), info singkat SIPANDU di bawahnya */
.sipandu-header-card {
  overflow: hidden;
  border: none;
}
.sipandu-header-card-img {
  height: 110px;
  background: linear-gradient(135deg, #90CAF9, #CE93D8);
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(255, 255, 255, 0.95);
}
.sipandu-header-card-img i {
  font-size: 2.6rem;
}

/* --- Dark mode: sesuaikan komponen custom (AdminLTE cuma cover elemen bawaannya) --- */
body.dark-mode .mobile-topbar {
  background: #1e1e2d;
}
body.dark-mode .bottom-nav {
  background: #1e1e2d;
  border-top-color: #33333f;
}
body.dark-mode .bottom-nav-item {
  color: #adb5bd;
}
body.dark-mode .bottom-nav-item.active {
  color: #90CAF9;
}
body.dark-mode .nav-quick-card,
body.dark-mode .sipandu-header-card .card-body {
  background: #2c2c3c;
  color: #e0e0e0;
}
body.dark-mode .nav-quick-card:hover,
body.dark-mode .nav-quick-card:active {
  color: #e0e0e0;
}
body.dark-mode .sipandu-header-card .text-muted {
  color: #adb5bd !important;
}

/* Filter status berbentuk tombol (mobile) */
.filter-btn-group .btn {
  flex: 1;
}

/* Floating label — dipakai di SEMUA form input di seluruh aplikasi (login,
   pendaftaran, pengaduan, pengajuan, master data, dll). Bootstrap 4.6 (yang
   dipakai proyek ini) belum punya .form-floating bawaan seperti Bootstrap 5,
   jadi diporting manual di sini supaya berlaku global lewat satu file ini.
   Triknya murni CSS: :not(:placeholder-shown) mendeteksi input yang sudah
   terisi (makanya tiap <input>/<textarea> WAJIB tetap punya atribut
   placeholder walau teksnya disembunyikan), lalu label diposisikan menumpuk
   di atas input dan "naik & mengecil" saat input fokus/berisi. <select> beda
   sendiri (tak punya :placeholder-shown) — labelnya selalu dalam posisi kecil
   di atas karena select selalu menampilkan sebuah nilai. */
.form-floating {
  position: relative;
}
.form-floating > .form-control,
.form-floating > select.form-control {
  height: calc(3.5rem + 2px);
  padding: 1rem 0.75rem;
}
.form-floating > textarea.form-control {
  height: auto;
  min-height: calc(3.5rem + 2px);
}
.form-floating > label {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  padding: 1rem 0.75rem;
  margin-bottom: 0;
  pointer-events: none;
  border: 1px solid transparent;
  transform-origin: 0 0;
  transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;
  color: #6c757d;
}
.form-floating > .form-control::placeholder {
  color: transparent;
}
.form-floating > .form-control:focus,
.form-floating > .form-control:not(:placeholder-shown) {
  padding-top: 1.625rem;
  padding-bottom: 0.625rem;
}
.form-floating > .form-control:focus ~ label,
.form-floating > .form-control:not(:placeholder-shown) ~ label,
.form-floating > select.form-control ~ label {
  opacity: 0.65;
  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}
/* Select punya panah dropdown bawaan browser di kanan — beri ruang supaya
   tidak tabrakan dengan padding label saat sudah "naik" ke atas. */
.form-floating > select.form-control {
  padding-top: 1.625rem;
  padding-bottom: 0.625rem;
}
/* input date/time/datetime-local/month/week TIDAK mendukung atribut
   placeholder sama sekali (diabaikan browser) — jadi :placeholder-shown
   tidak pernah cocok utknya. Makanya label-nya selalu dipaksa "naik" dari
   awal (sama seperti select), bukan menumpuk di atas nilai bawaan browser. */
.form-floating > input[type='date'],
.form-floating > input[type='time'],
.form-floating > input[type='datetime-local'],
.form-floating > input[type='month'],
.form-floating > input[type='week'] {
  padding-top: 1.625rem;
  padding-bottom: 0.625rem;
}
.form-floating > input[type='date'] ~ label,
.form-floating > input[type='time'] ~ label,
.form-floating > input[type='datetime-local'] ~ label,
.form-floating > input[type='month'] ~ label,
.form-floating > input[type='week'] ~ label {
  opacity: 0.65;
  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}
body.dark-mode .form-floating > label {
  color: #adb5bd;
}

/* Overlay loading full-screen — lihat Layout.showLoading()/applyBranding()
   di layout.js. Pakai gambar loading dari Pengaturan Desa kalau sudah
   dikonfigurasi (varian light/dark), fallback ke spinner Bootstrap biasa. */
#sipandu-loading-overlay {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f4f6f9;
}
#sipandu-loading-overlay img {
  max-width: 160px;
  max-height: 160px;
}
#sipandu-loading-overlay .spinner-border {
  width: 3rem;
  height: 3rem;
  color: #0d47a1;
}
body.dark-mode #sipandu-loading-overlay {
  background: #454d55;
}
