/**
 * billing-look.css — overlay tampilan simpel (gaya billing admin) untuk SELURUH halaman.
 *
 * Cara kerja: middleware di app.js menyuntik atribut pada tag <html>
 *   <html data-look="simple" data-look-family="admin|customer|auth|public-pay|public">
 * dan memuat file ini PALING AKHIR sebelum </body>.
 *
 * Aturan main:
 * - Hanya meratakan permukaan (warna, border, radius, bayangan, tipografi).
 * - Tidak mengubah layout: lebar sidebar, collapse, drawer mobile, grid, clamp(), JS.
 * - Tidak mengedit theme.css / design-system.css / button-override.css.
 * - Halaman cetak invoice dikecualikan lewat gate path di middleware.
 *
 * Prefiks scope yang dipakai:
 *   html[data-look]:not([data-look-family="public-pay"]) body   → hampir semua halaman
 *   html[data-look][data-look-family="admin"] body              → admin + teknisi
 *   html[data-look-family="public-pay"]                         → voucher/pembayaran publik (ringan)
 */

/* ═══════════════════════════════════════════════════════════
   1. TOKEN
   ═══════════════════════════════════════════════════════════ */
:root,
html:not([data-theme="dark"]) {
  --bl-bg: #f8fafc;
  --bl-bg2: #ffffff;
  --bl-bg3: #f1f5f9;
  --bl-border: #e2e8f0;
  --bl-text: #0f172a;
  --bl-muted: #64748b;
  --bl-primary: #4f46e5;
  --bl-pdim: rgba(79, 70, 229, 0.12);
  --bl-success: #16a34a;
  --bl-sdim: rgba(22, 163, 74, 0.12);
  --bl-warning: #d97706;
  --bl-wdim: rgba(217, 119, 6, 0.12);
  --bl-danger: #dc2626;
  --bl-ddim: rgba(220, 38, 38, 0.12);
  --bl-info: #0284c7;
  --bl-idim: rgba(2, 132, 199, 0.12);
  --bl-neutral-dim: rgba(100, 116, 139, 0.12);
  --bl-sidebar: 240px;
  --bl-sidebar-collapsed: 70px;
}

html[data-theme="dark"] {
  color-scheme: dark;
  --bl-bg: #0d1117;
  --bl-bg2: #161b22;
  --bl-bg3: #21262d;
  --bl-border: rgba(240, 246, 252, 0.1);
  --bl-text: #e6edf3;
  --bl-muted: #7d8590;
  --bl-primary: #6366f1;
  --bl-pdim: rgba(99, 102, 241, 0.15);
  --bl-success: #3fb950;
  --bl-sdim: rgba(63, 185, 80, 0.15);
  --bl-warning: #d29922;
  --bl-wdim: rgba(210, 153, 34, 0.15);
  --bl-danger: #f85149;
  --bl-ddim: rgba(248, 81, 73, 0.15);
  --bl-info: #58a6ff;
  --bl-idim: rgba(88, 166, 255, 0.15);
  --bl-neutral-dim: rgba(125, 133, 144, 0.15);
  --bl-sidebar: 240px;
  --bl-sidebar-collapsed: 70px;
}

/* ═══════════════════════════════════════════════════════════
   2. BRIDGE TOKEN WARFINET
   Menimpa nilai token milik theme.css / design-system.css di level <body>
   sehingga seluruh aturan lama otomatis memakai palet simpel.
   public-pay dikecualikan karena punya sistem token sendiri (--pv-*).
   ═══════════════════════════════════════════════════════════ */
html[data-look]:not([data-look-family="public-pay"]) body {
  --bg-0: var(--bl-bg);
  --bg-1: var(--bl-bg3);
  --bg-2: var(--bl-bg2);
  --panel: var(--bl-bg2);
  --panel-1: var(--bl-bg2);
  --panel-2: var(--bl-bg2);
  --border: var(--bl-border);
  --text: var(--bl-text);
  --text-muted: var(--bl-muted);
  --muted: var(--bl-muted);
  --primary: var(--bl-primary);
  --primary-color: var(--bl-primary);
  --primary-dark: var(--bl-primary);
  --success: var(--bl-success);
  --danger: var(--bl-danger);
  --warning: var(--bl-warning);
  --info: var(--bl-info);

  /* Gradasi diratakan jadi warna solid. Tetap berbentuk linear-gradient()
     supaya valid dipakai di background maupun background-image. */
  --primary-gradient: linear-gradient(var(--bl-primary), var(--bl-primary));
  --success-gradient: linear-gradient(var(--bl-success), var(--bl-success));
  --danger-gradient: linear-gradient(var(--bl-danger), var(--bl-danger));
  --warning-gradient: linear-gradient(var(--bl-warning), var(--bl-warning));
  --info-gradient: linear-gradient(var(--bl-info), var(--bl-info));

  /* Warna strip kartu statistik (modern-compact.css) */
  --stat-modern-primary: var(--bl-primary);
  --stat-modern-success: var(--bl-success);
  --stat-modern-danger: var(--bl-danger);
  --stat-modern-warning: var(--bl-warning);
  --stat-modern-info: var(--bl-info);

  /* Bridge token Bootstrap: aplikasi memakai data-theme, bukan data-bs-theme.
     Tanpa ini, --bs-body-bg tetap putih sehingga popup kustom (bukan .modal) tidak ikut gelap. */
  --bs-body-bg: var(--bl-bg2);
  --bs-body-color: var(--bl-text);
  --bs-secondary-color: var(--bl-muted);
  --bs-tertiary-bg: var(--bl-bg3);
  --bs-border-color: var(--bl-border);
  --bs-emphasis-color: var(--bl-text);

  background: var(--bl-bg);
  color: var(--bl-text);
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: 14px;
  font-weight: 400;
  -webkit-font-smoothing: subpixel-antialiased;
  -moz-osx-font-smoothing: auto;
}

/* ═══════════════════════════════════════════════════════════
   3. SHELL ADMIN / TEKNISI
   ═══════════════════════════════════════════════════════════ */
html[data-look][data-look-family="admin"] body .main-content {
  background: var(--bl-bg) !important;
  color: var(--bl-text);
}

/* Padding dibungkus media query. TANPA ini, padding desktop mematikan
   padding-top: 68px milik billing-sidebar.ejs dan konten tertutup navbar fixed. */
@media (min-width: 992px) {
  html[data-look][data-look-family="admin"] body .main-content {
    padding: 22px 20px !important;
  }
}

@media (max-width: 991.98px) {
  html[data-look][data-look-family="admin"] body .main-content {
    padding: 15px !important;
    padding-top: 68px !important;
  }
}

@media (max-width: 575.98px) {
  html[data-look][data-look-family="admin"] body .main-content {
    padding: 10px !important;
    padding-top: 60px !important;
  }
}

/* ── Sidebar: panel netral, bukan blok aksen ──
   Memakai nav#sidebar (ID) agar menang atas CSS inline di billing-sidebar.ejs. */
html[data-look-family="admin"] body nav#sidebar.sidebar,
html[data-look-family="admin"][data-theme="dark"] body nav#sidebar.sidebar {
  background: var(--bl-bg2) !important;
  background-color: var(--bl-bg2) !important;
  background-image: none !important;
  color: var(--bl-text) !important;
  font-family: inherit !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  border-right: 1px solid var(--bl-border) !important;
  box-shadow: none !important;
}

html[data-look-family="admin"] body nav#sidebar.sidebar:not(.collapsed) {
  width: var(--bl-sidebar) !important;
  min-width: var(--bl-sidebar) !important;
  max-width: var(--bl-sidebar) !important;
}

@media (min-width: 992px) {
  html[data-look-family="admin"] body .main-content:not(.sidebar-collapsed),
  html[data-look-family="admin"] body .d-flex.w-100 > .main-content:not(.sidebar-collapsed),
  html[data-look-family="admin"] body nav#sidebar.sidebar:not(.collapsed) ~ .main-content,
  html[data-look-family="admin"] body #sidebar:not(.collapsed) ~ .main-content {
    margin-left: var(--bl-sidebar) !important;
    width: calc(100% - var(--bl-sidebar)) !important;
    max-width: calc(100vw - var(--bl-sidebar)) !important;
  }

  html[data-look-family="admin"] body .main-content.sidebar-collapsed,
  html[data-look-family="admin"] body nav#sidebar.sidebar.collapsed ~ .main-content,
  html[data-look-family="admin"] body #sidebar.collapsed ~ .main-content {
    margin-left: var(--bl-sidebar-collapsed) !important;
    width: calc(100% - var(--bl-sidebar-collapsed)) !important;
    max-width: calc(100vw - var(--bl-sidebar-collapsed)) !important;
  }
}

html[data-look-family="admin"] body nav#sidebar.sidebar .billing-sidebar-toolbar {
  background: transparent !important;
  border-bottom: 1px solid var(--bl-border) !important;
  padding: 8px 16px !important;
  gap: 0 !important;
}

html[data-look-family="admin"] body nav#sidebar.sidebar .billing-sidebar-toolbar-toggle,
html[data-look-family="admin"] body nav#sidebar.sidebar .billing-sidebar-toolbar-theme {
  width: 32px !important;
  height: 32px !important;
}

html[data-look-family="admin"] body nav#sidebar.sidebar:not(.collapsed) > a,
html[data-look-family="admin"] body nav#sidebar.sidebar:not(.collapsed) .sidebar-submenu a {
  color: var(--bl-text) !important;
  background: transparent !important;
  border-left: 3px solid transparent !important;
  border-radius: 0 !important;
  font-family: inherit !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  padding: 9px 16px !important;
  margin: 1px 0 !important;
  gap: 10px;
  box-shadow: none !important;
  text-shadow: none !important;
  transform: none !important;
  -webkit-font-smoothing: subpixel-antialiased;
}

html[data-look-family="admin"] body nav#sidebar.sidebar:not(.collapsed) > a *,
html[data-look-family="admin"] body nav#sidebar.sidebar:not(.collapsed) > a i,
html[data-look-family="admin"] body nav#sidebar.sidebar:not(.collapsed) .sidebar-submenu a *,
html[data-look-family="admin"] body nav#sidebar.sidebar:not(.collapsed) .sidebar-submenu a i {
  color: inherit !important;
  text-shadow: none !important;
}

html[data-look-family="admin"] body nav#sidebar.sidebar:not(.collapsed) > a:hover,
html[data-look-family="admin"] body nav#sidebar.sidebar:not(.collapsed) .sidebar-submenu a:hover {
  color: var(--bl-text) !important;
  background: var(--bl-bg3) !important;
  transform: none !important;
}

html[data-look-family="admin"] body nav#sidebar.sidebar:not(.collapsed) > a.active,
html[data-look-family="admin"] body nav#sidebar.sidebar:not(.collapsed) .sidebar-submenu a.active {
  color: var(--bl-primary) !important;
  background: var(--bl-pdim) !important;
  border-left-color: var(--bl-primary) !important;
}

html[data-look-family="admin"] body nav#sidebar.sidebar a[href="/admin/logout"],
html[data-look-family="admin"] body nav#sidebar.sidebar a[href="/admin/logout"] *,
html[data-look-family="admin"] body nav#sidebar.sidebar a[href="/teknisi/logout"],
html[data-look-family="admin"] body nav#sidebar.sidebar a[href="/teknisi/logout"] * {
  color: var(--bl-danger) !important;
}

html[data-look-family="admin"] body nav#sidebar.sidebar .sidebar-section-header,
html[data-look-family="admin"] body nav#sidebar.sidebar .sidebar-section-header * {
  color: var(--bl-muted) !important;
  font-size: 10px !important;
  font-weight: 600 !important;
  letter-spacing: 1px !important;
  text-transform: uppercase !important;
  background: transparent !important;
  text-shadow: none !important;
  opacity: 1;
}

html[data-look-family="admin"] body nav#sidebar.sidebar .sidebar-section-header {
  padding: 14px 16px 5px !important;
  margin: 0 !important;
  border-radius: 0 !important;
  transform: none !important;
}

html[data-look-family="admin"] body nav#sidebar.sidebar .sidebar-section-header:hover,
html[data-look-family="admin"] body nav#sidebar.sidebar .sidebar-section-header.active {
  background: transparent !important;
  transform: none !important;
}

html[data-look-family="admin"] body nav#sidebar.sidebar .sidebar-submenu,
html[data-look-family="admin"] body nav#sidebar.sidebar .sidebar-submenu.show {
  margin: 0 !important;
  padding: 0 0 4px !important;
  border: none !important;
  background: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
}

html[data-look-family="admin"] body nav#sidebar.sidebar:not(.collapsed) .sidebar-submenu a {
  padding: 8px 16px 8px 34px !important;
  margin: 1px 0 !important;
  border-radius: 0 !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  animation: none !important;
}

html[data-look-family="admin"] body nav#sidebar.sidebar .billing-sidebar-nav-first {
  margin-top: 4px !important;
  padding-top: 9px !important;
}

html[data-look-family="admin"] body nav#sidebar.sidebar a i,
html[data-look-family="admin"] body nav#sidebar.sidebar a .bi {
  margin-right: 10px !important;
  width: 18px !important;
  min-width: 18px !important;
  font-size: 15px !important;
}

/* Hapus garis hias antar item (penyebab UI ramai) */
html[data-look-family="admin"] body nav#sidebar.sidebar > a::after,
html[data-look-family="admin"] body nav#sidebar.sidebar > .sidebar-section-header::after,
html[data-look-family="admin"] body nav#sidebar.sidebar .sidebar-submenu a::after {
  content: none !important;
  display: none !important;
  box-shadow: none !important;
}

html[data-look-family="admin"] body nav#sidebar.sidebar.collapsed > a i,
html[data-look-family="admin"] body nav#sidebar.sidebar.collapsed > a .bi {
  color: var(--bl-text) !important;
}
html[data-look-family="admin"] body nav#sidebar.sidebar.collapsed > a.active i,
html[data-look-family="admin"] body nav#sidebar.sidebar.collapsed > a.active .bi {
  color: var(--bl-primary) !important;
}

/* Navbar mobile: slate netral (bukan warna aksen). Tetap gelap agar teks
   putih yang dipaksa !important di sidebar tetap terbaca. */
html[data-look][data-look-family="admin"] body .navbar.navbar-dark.mobile-navbar,
html[data-look][data-look-family="admin"] body .mobile-navbar {
  background: #1f2937 !important;
  background-color: #1f2937 !important;
  background-image: none !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important;
  box-shadow: none !important;
}

html[data-look-family="admin"] body .billing-sidebar-mobile-fab {
  background: var(--bl-primary) !important;
  color: #fff !important;
  box-shadow: none !important;
}

html[data-look-family="admin"] body .theme-toggle-btn {
  color: var(--bl-muted) !important;
  background: transparent !important;
  border: 1px solid var(--bl-border) !important;
  transform: none !important;
  box-shadow: none !important;
}

html[data-look][data-look-family="admin"] body .page-header-wrapper,
html[data-look][data-look-family="admin"] body .dashboard-date-header {
  background: transparent !important;
  box-shadow: none !important;
  border: none !important;
}

/* ═══════════════════════════════════════════════════════════
   4. KARTU
   ═══════════════════════════════════════════════════════════ */
html[data-look]:not([data-look-family="public-pay"]) body .card::after,
html[data-look]:not([data-look-family="public-pay"]) body .main-content .card::after {
  content: none !important;
  display: none !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .card,
html[data-look]:not([data-look-family="public-pay"]) body .main-content .card,
html[data-look]:not([data-look-family="public-pay"]) body .dashboard-card,
html[data-look]:not([data-look-family="public-pay"]) body .dashboard-chart-card,
html[data-look]:not([data-look-family="public-pay"]) body .dashboard-list-card,
html[data-look]:not([data-look-family="public-pay"]) body .customers-table-panel,
html[data-look]:not([data-look-family="public-pay"]) body .list-wrapper,
html[data-look]:not([data-look-family="public-pay"]) body .invoice-list-wrapper,
html[data-look]:not([data-look-family="public-pay"]) body .form-section,
html[data-look]:not([data-look-family="public-pay"]) body .settings-card,
html[data-look]:not([data-look-family="public-pay"]) body .panel,
html[data-look]:not([data-look-family="public-pay"]) body .info-card {
  background: var(--bl-bg2) !important;
  border: 1px solid var(--bl-border) !important;
  border-radius: 12px !important;
  box-shadow: none !important;
  margin-bottom: 18px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .card-header,
html[data-look]:not([data-look-family="public-pay"]) body .card .card-header {
  background: transparent !important;
  background-image: none !important;
  border-bottom: 1px solid var(--bl-border) !important;
  border-radius: 12px 12px 0 0 !important;
  color: var(--bl-text) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  padding: 14px 18px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .card-header * {
  color: var(--bl-text) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .card-body {
  color: var(--bl-text);
  padding: 18px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .card-footer {
  padding: 14px 18px !important;
  border-color: var(--bl-border) !important;
  background: transparent !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .card:hover {
  transform: none !important;
  box-shadow: none !important;
}

/* ═══════════════════════════════════════════════════════════
   5. KARTU STATISTIK — strip tipis di atas
   ═══════════════════════════════════════════════════════════ */
html[data-look]:not([data-look-family="public-pay"]) body .stat-card-modern,
html[data-look]:not([data-look-family="public-pay"]) body .pppoe-stat-card,
html[data-look]:not([data-look-family="public-pay"]) body .admin-stat-card,
html[data-look]:not([data-look-family="public-pay"]) body .billing-stat-card,
html[data-look]:not([data-look-family="public-pay"]) body .stat-card,
html[data-look]:not([data-look-family="public-pay"]) body .stats-card {
  background: var(--bl-bg2) !important;
  border: 1px solid var(--bl-border) !important;
  border-radius: 12px !important;
  box-shadow: none !important;
  position: relative !important;
  overflow: hidden !important;
}

/* dashboard.ejs menyetel bayangan lewat <style> inline dengan spesifisitas (0,5,1) */
html[data-look] body.admin-dashboard-page .main-content.dashboard-premium .admin-stats-grid > .stat-card-modern {
  box-shadow: none !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .stat-card-modern:hover,
html[data-look]:not([data-look-family="public-pay"]) body .pppoe-stat-card:hover,
html[data-look]:not([data-look-family="public-pay"]) body .admin-stat-card:hover,
html[data-look]:not([data-look-family="public-pay"]) body .stat-card:hover {
  transform: none !important;
  box-shadow: none !important;
}

/* Bentuk strip: bar horizontal di sisi atas, bukan bar kiri 4px */
html[data-look] body .stat-card-modern::before,
html[data-look] body .pppoe-stat-card::before,
html[data-look] body .admin-stat-card::before,
html[data-look] body .billing-stat-card::before,
html[data-look] body .stat-card::before {
  content: "" !important;
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: auto !important;
  width: auto !important;
  height: 3px !important;
  background: var(--bl-primary) !important;
  opacity: 1 !important;
  transform: none !important;
  border-radius: 0 !important;
}

/* Kartu polos (mayoritas) disembunyikan oleh modern-compact.css:432 dengan
   spesifisitas (0,6,1). Rantai :not() diulang + prefiks data-look agar menang,
   dan border-left 4px abu diratakan jadi 1px. */
html[data-look] body .stat-card-modern:not(.stat-card-modern-primary):not(.stat-card-modern-success):not(.stat-card-modern-danger):not(.stat-card-modern-warning):not(.stat-card-modern-info)::before {
  display: block !important;
  width: auto !important;
  height: 3px !important;
  background: var(--bl-primary) !important;
}

html[data-look] body .stat-card-modern:not(.stat-card-modern-primary):not(.stat-card-modern-success):not(.stat-card-modern-danger):not(.stat-card-modern-warning):not(.stat-card-modern-info) {
  border-left-width: 1px !important;
  border-left-style: solid !important;
  border-left-color: var(--bl-border) !important;
}

/* Varian berwarna: strip mengikuti warna status */
html[data-look] body .stat-card-modern.stat-card-modern-success::before {
  background: var(--bl-success) !important;
}
html[data-look] body .stat-card-modern.stat-card-modern-danger::before {
  background: var(--bl-danger) !important;
}
html[data-look] body .stat-card-modern.stat-card-modern-warning::before {
  background: var(--bl-warning) !important;
}
html[data-look] body .stat-card-modern.stat-card-modern-info::before {
  background: var(--bl-info) !important;
}

/* ═══════════════════════════════════════════════════════════
   6. TABEL
   ═══════════════════════════════════════════════════════════ */
html[data-look]:not([data-look-family="public-pay"]) body .table,
html[data-look]:not([data-look-family="public-pay"]) body table.dataTable {
  font-size: 13px !important;
  color: var(--bl-text) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .table thead th,
html[data-look]:not([data-look-family="public-pay"]) body table.dataTable thead th {
  background: var(--bl-bg3) !important;
  background-image: none !important;
  color: var(--bl-text) !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.4px !important;
  border-color: var(--bl-border) !important;
  white-space: nowrap;
  padding: 10px 14px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .table td,
html[data-look]:not([data-look-family="public-pay"]) body table.dataTable td {
  border-color: var(--bl-border) !important;
  color: var(--bl-text) !important;
  padding: 11px 14px !important;
  background: var(--bl-bg2) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .table-hover tbody tr:hover td {
  background: var(--bl-bg3) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .table-responsive {
  border: 1px solid var(--bl-border) !important;
  border-radius: 12px !important;
  box-shadow: none !important;
}

/* DataTables: kontrol, info, dan pagination */
html[data-look]:not([data-look-family="public-pay"]) body .dataTables_wrapper,
html[data-look]:not([data-look-family="public-pay"]) body .dataTables_info,
html[data-look]:not([data-look-family="public-pay"]) body .dataTables_filter,
html[data-look]:not([data-look-family="public-pay"]) body .dataTables_length {
  color: var(--bl-muted) !important;
  font-size: 12px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .dataTables_filter input,
html[data-look]:not([data-look-family="public-pay"]) body .dataTables_length select {
  background: var(--bl-bg3) !important;
  border: 1px solid var(--bl-border) !important;
  color: var(--bl-text) !important;
  border-radius: 8px !important;
  box-shadow: none !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .dataTables_paginate .paginate_button {
  background: var(--bl-bg2) !important;
  background-image: none !important;
  border: 1px solid var(--bl-border) !important;
  border-radius: 8px !important;
  color: var(--bl-muted) !important;
  box-shadow: none !important;
  margin: 0 2px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .dataTables_paginate .paginate_button.current,
html[data-look]:not([data-look-family="public-pay"]) body .dataTables_paginate .paginate_button:hover {
  background: var(--bl-primary) !important;
  border-color: var(--bl-primary) !important;
  color: #fff !important;
}

/* ═══════════════════════════════════════════════════════════
   7. PAGINATION BOOTSTRAP
   ═══════════════════════════════════════════════════════════ */
html[data-look]:not([data-look-family="public-pay"]) body .pagination {
  gap: 4px;
  --bs-pagination-focus-box-shadow: none;
}

html[data-look]:not([data-look-family="public-pay"]) body .page-link {
  background: var(--bl-bg2) !important;
  background-image: none !important;
  border: 1px solid var(--bl-border) !important;
  border-radius: 8px !important;
  color: var(--bl-muted) !important;
  font-size: 13px !important;
  box-shadow: none !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .page-link:hover {
  background: var(--bl-bg3) !important;
  color: var(--bl-text) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .page-item.active .page-link {
  background: var(--bl-primary) !important;
  border-color: var(--bl-primary) !important;
  color: #fff !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .page-item.disabled .page-link {
  background: var(--bl-bg3) !important;
  color: var(--bl-muted) !important;
  opacity: 0.6;
}

/* ═══════════════════════════════════════════════════════════
   8. TOMBOL
   ═══════════════════════════════════════════════════════════ */
html[data-look]:not([data-look-family="public-pay"]) body .btn {
  border-radius: 8px !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  box-shadow: none !important;
  transform: none !important;
  text-shadow: none !important;
  padding: 8px 16px !important;
  gap: 6px;
}

html[data-look]:not([data-look-family="public-pay"]) body .btn-sm {
  padding: 5px 10px !important;
  font-size: 12px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .btn-close,
html[data-look]:not([data-look-family="public-pay"]) body .sidebar-toggle-btn,
html[data-look]:not([data-look-family="public-pay"]) body .theme-toggle-btn,
html[data-look]:not([data-look-family="public-pay"]) body .btn-icon {
  padding: 0 !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .btn-primary,
html[data-look]:not([data-look-family="public-pay"]) body .btn-primary:hover,
html[data-look]:not([data-look-family="public-pay"]) body .btn-primary:focus,
html[data-look]:not([data-look-family="public-pay"]) body .btn-primary:active {
  background: var(--bl-primary) !important;
  background-image: none !important;
  background-color: var(--bl-primary) !important;
  border: none !important;
  color: #fff !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .btn-success {
  background: var(--bl-success) !important;
  background-image: none !important;
  border: none !important;
  color: #fff !important;
}
html[data-look]:not([data-look-family="public-pay"]) body .btn-danger {
  background: var(--bl-danger) !important;
  background-image: none !important;
  border: none !important;
  color: #fff !important;
}
html[data-look]:not([data-look-family="public-pay"]) body .btn-warning {
  background: var(--bl-warning) !important;
  background-image: none !important;
  border: none !important;
  color: #fff !important;
}
html[data-look]:not([data-look-family="public-pay"]) body .btn-info {
  background: var(--bl-info) !important;
  background-image: none !important;
  border: none !important;
  color: #fff !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .btn-outline-primary,
html[data-look]:not([data-look-family="public-pay"]) body .btn-outline-secondary,
html[data-look]:not([data-look-family="public-pay"]) body .btn-light {
  background: var(--bl-bg3) !important;
  background-image: none !important;
  color: var(--bl-text) !important;
  border: 1px solid var(--bl-border) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .btn-primary:hover,
html[data-look]:not([data-look-family="public-pay"]) body .btn-success:hover,
html[data-look]:not([data-look-family="public-pay"]) body .btn-danger:hover,
html[data-look]:not([data-look-family="public-pay"]) body .btn-warning:hover,
html[data-look]:not([data-look-family="public-pay"]) body .btn-info:hover {
  opacity: 0.9;
}

/* Radius 8px di atas mematahkan sambungan grup. Ratakan sisi dalamnya. */
html[data-look]:not([data-look-family="public-pay"]) body .btn-group > .btn:not(:first-child),
html[data-look]:not([data-look-family="public-pay"]) body .btn-group > .btn:not(:first-child) + .dropdown-toggle-split {
  border-top-left-radius: 0 !important;
  border-bottom-left-radius: 0 !important;
}
html[data-look]:not([data-look-family="public-pay"]) body .btn-group > .btn:not(:last-child):not(.dropdown-toggle) {
  border-top-right-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
}

/* ═══════════════════════════════════════════════════════════
   9. FORM
   ═══════════════════════════════════════════════════════════ */
html[data-look]:not([data-look-family="public-pay"]) body .form-control,
html[data-look]:not([data-look-family="public-pay"]) body .form-select {
  background: var(--bl-bg3) !important;
  color: var(--bl-text) !important;
  border: 1px solid var(--bl-border) !important;
  border-radius: 8px !important;
  box-shadow: none !important;
  font-size: 13px !important;
  padding: 9px 13px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .form-control:focus,
html[data-look]:not([data-look-family="public-pay"]) body .form-select:focus {
  background: var(--bl-bg2) !important;
  border-color: var(--bl-primary) !important;
  box-shadow: 0 0 0 3px var(--bl-pdim) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .form-control::placeholder {
  color: var(--bl-muted) !important;
  opacity: 0.8;
}

html[data-look]:not([data-look-family="public-pay"]) body .form-label {
  color: var(--bl-text) !important;
  font-size: 11px !important;
  font-weight: 500 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.4px !important;
  margin-bottom: 5px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .form-text,
html[data-look]:not([data-look-family="public-pay"]) body .text-muted {
  color: var(--bl-muted) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .alert {
  padding: 11px 15px !important;
  margin-bottom: 14px !important;
  border-radius: 8px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .billing-toolbar,
html[data-look]:not([data-look-family="public-pay"]) body .page-header-wrapper {
  padding-top: 0 !important;
  padding-bottom: 12px !important;
  margin-bottom: 16px !important;
  gap: 10px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .main-content > .d-flex.pt-3.pb-2.mb-3,
html[data-look]:not([data-look-family="public-pay"]) body .main-content h1.h2,
html[data-look]:not([data-look-family="public-pay"]) body .main-content h1.h2 i {
  font-size: 22px;
}

html[data-look]:not([data-look-family="public-pay"]) body .input-group-text {
  background: var(--bl-bg3) !important;
  background-image: none !important;
  border: 1px solid var(--bl-border) !important;
  color: var(--bl-muted) !important;
  font-size: 13px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .input-group > :not(:first-child) {
  border-top-left-radius: 0 !important;
  border-bottom-left-radius: 0 !important;
}
html[data-look]:not([data-look-family="public-pay"]) body .input-group > :not(:last-child) {
  border-top-right-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .form-check-input:checked {
  background-color: var(--bl-primary) !important;
  border-color: var(--bl-primary) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .form-check-input:focus {
  box-shadow: 0 0 0 3px var(--bl-pdim) !important;
  border-color: var(--bl-primary) !important;
}

/* ── Ornamen dekoratif dimatikan ──
   design-system.css/style.css menempel emoji ⚡ pada setiap label dan 📋 pada tabel. */
html[data-look] body .form-label::before,
html[data-look] body .card .form-label::before,
html[data-look] body .table::before,
html[data-look] body .table thead th::after {
  content: none !important;
  display: none !important;
}

/* Tier teks muted di mode terang.
   theme.css:690 memaksa #212529 dengan spesifisitas (0,15,0) pada `.main-content *`,
   jadi warna tidak bisa dimenangkan tanpa selektor ekstrem. Pakai opacity —
   properti ini tidak ikut perang cascade warna. Hanya untuk elemen berlatar
   transparan agar background tidak ikut memudar. */
html[data-look]:not([data-theme="dark"]) body .main-content .form-text,
html[data-look]:not([data-theme="dark"]) body .main-content .text-muted {
  opacity: 0.85;
}

/* Jangan wariskan opacity muted ke badge status di dalam label/keterangan */
html[data-look] body .main-content .form-label .badge,
html[data-look] body .main-content .form-text .badge,
html[data-look] body .main-content .text-muted .badge,
html[data-look] body .main-content .form-label [class*="-status-badge"],
html[data-look] body .main-content .text-muted [class*="-status-badge"],
html[data-look] body .main-content .form-label .form-check-status {
  opacity: 1 !important;
}

/* ═══════════════════════════════════════════════════════════
   10. BADGE / STATUS
   Pill solid + teks putih penuh. Overlay sebelumnya memakai latar 12%
   sementara CSS lama memaksa color:#fff — tulisan tampak transparan.
   ═══════════════════════════════════════════════════════════ */
html[data-look] body .badge,
html[data-look] body [class*="-status-badge"],
html[data-look] body [class*="-tx-badge"],
html[data-look] body [class*="-action-badge"],
html[data-look] body .form-check-status,
html[data-look] body .status-badge {
  opacity: 1 !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-success,
html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-danger,
html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-warning,
html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-primary,
html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-info,
html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-secondary {
  border-radius: 20px !important;
  font-weight: 600 !important;
  font-size: 11px !important;
  background-image: none !important;
  box-shadow: none !important;
  opacity: 1 !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-success {
  background: #15803d !important;
}
html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-danger {
  background: #b91c1c !important;
}
html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-warning,
html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-warning.text-dark {
  background: #b45309 !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}
html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-primary {
  background: var(--bl-primary) !important;
}
html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-info,
html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-info.text-dark {
  background: #0369a1 !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}
html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-secondary {
  background: #475569 !important;
}
html[data-look]:not([data-look-family="public-pay"]) body .badge.bg-light.text-dark {
  background: var(--bl-bg3) !important;
  color: var(--bl-text) !important;
  -webkit-text-fill-color: var(--bl-text) !important;
}

/* Status di tabel (tagihan, pelanggan, jadwal, keuangan, dashboard).
   Spesifisitas harus mengalahkan billing-panel-card.css (0,5,3). */
html[data-look] body .main-content .table tbody td span.inv-status-badge,
html[data-look] body .main-content .table tbody td span.cust-status-badge,
html[data-look] body .main-content .table tbody td span.jadwal-status-badge,
html[data-look] body .main-content .table tbody td span.fin-tx-badge,
html[data-look] body .main-content .table tbody td span.status-badge,
html[data-look] body #invoicesTable tbody td span.inv-status-badge,
html[data-look] body .invoice-all-page .table tbody td span.inv-status-badge,
html[data-look] body .invoice-list-content table tbody td span.inv-status-badge,
html[data-look] body .customers-table-panel #customersTable tbody td span.cust-status-badge,
html[data-look] body .main-content .dashboard-list-card .table tbody td span.inv-status-badge,
html[data-look] body .financial-report-page .table tbody td span.fin-tx-badge,
html[data-look] body .main-content span.inv-status-badge,
html[data-look] body .main-content span.cust-status-badge,
html[data-look] body .main-content span.jadwal-status-badge,
html[data-look] body .main-content span.fin-tx-badge {
  opacity: 1 !important;
  font-weight: 700 !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}

html[data-look] body .main-content .table tbody td span.inv-status-badge.inv-status-badge--paid,
html[data-look] body .main-content .table tbody td span.cust-status-badge.cust-status-badge--active,
html[data-look] body .main-content .table tbody td span.jadwal-status-badge.jadwal-status-badge--done,
html[data-look] body .main-content .table tbody td span.fin-tx-badge.fin-tx-badge--income,
html[data-look] body .main-content span.inv-status-badge.inv-status-badge--paid,
html[data-look] body span.inv-status-badge.inv-status-badge--paid {
  background: #15803d !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}

html[data-look] body .main-content .table tbody td span.inv-status-badge.inv-status-badge--unpaid,
html[data-look] body .main-content .table tbody td span.cust-status-badge.cust-status-badge--register,
html[data-look] body .main-content .table tbody td span.jadwal-status-badge.jadwal-status-badge--pending,
html[data-look] body .main-content span.inv-status-badge.inv-status-badge--unpaid,
html[data-look] body span.inv-status-badge.inv-status-badge--unpaid {
  background: #b45309 !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}

html[data-look] body .main-content .table tbody td span.inv-status-badge.inv-status-badge--overdue,
html[data-look] body .main-content .table tbody td span.cust-status-badge.cust-status-badge--suspended,
html[data-look] body .main-content .table tbody td span.fin-tx-badge.fin-tx-badge--expense,
html[data-look] body .main-content span.inv-status-badge.inv-status-badge--overdue,
html[data-look] body span.inv-status-badge.inv-status-badge--overdue {
  background: #b91c1c !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}

html[data-look] body .main-content .table tbody td span.inv-status-badge.inv-status-badge--cancelled,
html[data-look] body .main-content .table tbody td span.inv-status-badge.inv-status-badge--other,
html[data-look] body .main-content .table tbody td span.cust-status-badge.cust-status-badge--inactive,
html[data-look] body .main-content span.inv-status-badge.inv-status-badge--cancelled,
html[data-look] body .main-content span.inv-status-badge.inv-status-badge--other,
html[data-look] body span.inv-status-badge.inv-status-badge--cancelled,
html[data-look] body span.inv-status-badge.inv-status-badge--other {
  background: #475569 !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}

html[data-look] body .main-content .table tbody td span.cust-status-badge.cust-status-badge--free {
  background: var(--bl-primary) !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}

/* Toggle Aktif / Tidak Aktif */
html[data-look] body span.form-check-status.status-aktif,
html[data-look] body .main-content span.form-check-status.status-aktif {
  background: #15803d !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  opacity: 1 !important;
}
html[data-look] body span.form-check-status.status-tidak-aktif,
html[data-look] body .main-content span.form-check-status.status-tidak-aktif {
  background: #475569 !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  opacity: 1 !important;
}

/* ═══════════════════════════════════════════════════════════
   11. NAV TABS
   Tab aktif: warna primer + garis bawah 2px (gaya halaman billing/paket).
   button-override.css & billing-panel-card.css memaksa teks putih pada
   button.nav-link.active — selektor di bawah sengaja lebih spesifik.
   ═══════════════════════════════════════════════════════════ */
html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs {
  border-color: var(--bl-border) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs .nav-link,
html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs button.nav-link,
html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs a.nav-link {
  color: var(--bl-muted) !important;
  -webkit-text-fill-color: var(--bl-muted) !important;
  border: none !important;
  border-bottom: 2px solid transparent !important;
  background: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  font-size: 13px !important;
  font-weight: 600 !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs .nav-link:hover,
html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs button.nav-link:hover,
html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs a.nav-link:hover {
  color: var(--bl-primary) !important;
  -webkit-text-fill-color: var(--bl-primary) !important;
  background: var(--bl-pdim) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs .nav-link.active,
html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs button.nav-link.active,
html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs a.nav-link.active,
html[data-look]:not([data-look-family="public-pay"]) body .main-content .nav-tabs .nav-link.active,
html[data-look]:not([data-look-family="public-pay"]) body .main-content .nav-tabs button.nav-link.active,
html[data-look]:not([data-look-family="public-pay"]) body .main-content .nav-tabs a.nav-link.active,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .main-content .nav-tabs button.nav-link.active,
html[data-look][data-theme="dark"]:not([data-look-family="public-pay"]) body .main-content .nav-tabs button.nav-link.active {
  color: var(--bl-primary) !important;
  -webkit-text-fill-color: var(--bl-primary) !important;
  background: var(--bl-pdim) !important;
  background-image: none !important;
  border: none !important;
  border-bottom: 2px solid var(--bl-primary) !important;
  font-weight: 700 !important;
  box-shadow: none !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs .nav-link.active *,
html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs button.nav-link.active *,
html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs a.nav-link.active *,
html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs .nav-link.active i::before,
html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs button.nav-link.active i::before,
html[data-look]:not([data-look-family="public-pay"]) body .nav-tabs a.nav-link.active i::before,
html[data-look]:not([data-look-family="public-pay"]) body .main-content .nav-tabs button.nav-link.active *,
html[data-look]:not([data-look-family="public-pay"]) body .main-content .nav-tabs a.nav-link.active *,
html[data-look]:not([data-look-family="public-pay"]) body .main-content .nav-tabs button.nav-link.active i::before,
html[data-look]:not([data-look-family="public-pay"]) body .main-content .nav-tabs a.nav-link.active i::before,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .main-content .nav-tabs button.nav-link.active *,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .main-content .nav-tabs button.nav-link.active i::before,
html[data-look][data-theme="dark"]:not([data-look-family="public-pay"]) body .main-content .nav-tabs button.nav-link.active *,
html[data-look][data-theme="dark"]:not([data-look-family="public-pay"]) body .main-content .nav-tabs button.nav-link.active i::before {
  color: var(--bl-primary) !important;
  -webkit-text-fill-color: var(--bl-primary) !important;
  text-shadow: none !important;
}

/* Nav pills: tab aktif = chip warna primer */
html[data-look]:not([data-look-family="public-pay"]) body .nav-pills .nav-link {
  color: var(--bl-muted) !important;
  -webkit-text-fill-color: var(--bl-muted) !important;
  background: transparent !important;
  background-image: none !important;
  font-weight: 600 !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .nav-pills .nav-link:hover {
  color: var(--bl-primary) !important;
  -webkit-text-fill-color: var(--bl-primary) !important;
  background: var(--bl-pdim) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .nav-pills .nav-link.active,
html[data-look]:not([data-look-family="public-pay"]) body .nav-pills .nav-link.active *,
html[data-look]:not([data-look-family="public-pay"]) body .nav-pills .nav-link.active i::before {
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  text-shadow: none !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .nav-pills .nav-link.active {
  background: var(--bl-primary) !important;
  background-image: none !important;
  font-weight: 700 !important;
  box-shadow: none !important;
}

/* ═══════════════════════════════════════════════════════════
   12. KOMPONEN LAIN
   ═══════════════════════════════════════════════════════════ */
html[data-look]:not([data-look-family="public-pay"]) body h1,
html[data-look]:not([data-look-family="public-pay"]) body h2,
html[data-look]:not([data-look-family="public-pay"]) body h3,
html[data-look]:not([data-look-family="public-pay"]) body h4,
html[data-look]:not([data-look-family="public-pay"]) body h5,
html[data-look]:not([data-look-family="public-pay"]) body h6 {
  color: var(--bl-text);
  text-shadow: none !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .alert {
  border-radius: 10px !important;
  box-shadow: none !important;
  background-image: none !important;
  font-size: 13px !important;
}

/* Modal */
html[data-look]:not([data-look-family="public-pay"]) body .modal-content {
  background: var(--bl-bg2) !important;
  color: var(--bl-text) !important;
  border: 1px solid var(--bl-border) !important;
  border-radius: 12px !important;
  box-shadow: none !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .modal-header,
html[data-look]:not([data-look-family="public-pay"]) body .modal-footer {
  background: transparent !important;
  background-image: none !important;
  border-color: var(--bl-border) !important;
  color: var(--bl-text) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .modal-header .modal-title,
html[data-look]:not([data-look-family="public-pay"]) body .modal-header .modal-title *,
html[data-look]:not([data-look-family="public-pay"]) body .modal-header .btn-close {
  color: var(--bl-text) !important;
  -webkit-text-fill-color: var(--bl-text) !important;
  text-shadow: none !important;
  font-size: 14px;
  font-weight: 600;
}

html[data-look]:not([data-look-family="public-pay"]) body .modal-header .btn-close {
  filter: none !important;
  opacity: 0.65;
}

html[data-look][data-theme="dark"]:not([data-look-family="public-pay"]) body .modal-header .btn-close {
  filter: invert(1) grayscale(100%) brightness(200%) !important;
}

/* Tema putih: Batal/Tutup (btn-secondary) — bg hampir hitam, teks putih */
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .btn.btn-secondary,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .btn.btn-secondary *,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .modal .btn-secondary,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .modal .btn-secondary *,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .modal-footer .btn-secondary,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .cust-mf .btn-secondary,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .inv-mf .btn-secondary,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body #custModalCloseBtn2,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body #invModalCloseBtn2 {
  background: #1e293b !important;
  background-image: none !important;
  background-color: #1e293b !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  border: none !important;
}

html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .btn.btn-secondary:hover,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .btn.btn-secondary:focus,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .modal .btn-secondary:hover,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .cust-mf .btn-secondary:hover,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body .inv-mf .btn-secondary:hover,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body #custModalCloseBtn2:hover,
html[data-look]:not([data-look-family="public-pay"]):not([data-theme="dark"]) body #invModalCloseBtn2:hover {
  background: #0f172a !important;
  background-color: #0f172a !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .modal-body,
html[data-look]:not([data-look-family="public-pay"]) body .modal-body > p,
html[data-look]:not([data-look-family="public-pay"]) body .modal-body > div,
html[data-look]:not([data-look-family="public-pay"]) body .modal-body .form-label,
html[data-look]:not([data-look-family="public-pay"]) body .modal-body code {
  color: var(--bl-text);
}

html[data-look]:not([data-look-family="public-pay"]) body .modal-body .table,
html[data-look]:not([data-look-family="public-pay"]) body .modal-body .table > :not(caption) > * > * {
  color: var(--bl-text);
  border-color: var(--bl-border);
  background-color: transparent;
}

/* Popup kustom (bukan Bootstrap .modal) — ikut token tema */
html[data-look]:not([data-look-family="public-pay"]) body .cust-mb,
html[data-look]:not([data-look-family="public-pay"]) body .inv-mb,
html[data-look]:not([data-look-family="public-pay"]) body .cust-modal-content {
  background: var(--bl-bg2) !important;
  color: var(--bl-text) !important;
  border-color: var(--bl-border) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .cust-mh,
html[data-look]:not([data-look-family="public-pay"]) body .cust-mf,
html[data-look]:not([data-look-family="public-pay"]) body .inv-mh,
html[data-look]:not([data-look-family="public-pay"]) body .inv-mf {
  border-color: var(--bl-border) !important;
  color: var(--bl-text) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .cust-mt,
html[data-look]:not([data-look-family="public-pay"]) body .inv-mt,
html[data-look]:not([data-look-family="public-pay"]) body .cust-mbody,
html[data-look]:not([data-look-family="public-pay"]) body .inv-mbody,
html[data-look]:not([data-look-family="public-pay"]) body .cust-stat-val {
  color: var(--bl-text) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .cust-mc,
html[data-look]:not([data-look-family="public-pay"]) body .inv-mc,
html[data-look]:not([data-look-family="public-pay"]) body .cust-copy-btn,
html[data-look]:not([data-look-family="public-pay"]) body .inv-copy-btn,
html[data-look]:not([data-look-family="public-pay"]) body .cust-tbl td:first-child,
html[data-look]:not([data-look-family="public-pay"]) body .inv-tbl td:first-child,
html[data-look]:not([data-look-family="public-pay"]) body .cust-stat-sub {
  color: var(--bl-muted) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .cust-mc:hover,
html[data-look]:not([data-look-family="public-pay"]) body .inv-mc:hover,
html[data-look]:not([data-look-family="public-pay"]) body .cust-copy-btn:hover,
html[data-look]:not([data-look-family="public-pay"]) body .inv-copy-btn:hover {
  color: var(--bl-text) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .cust-panel,
html[data-look]:not([data-look-family="public-pay"]) body .inv-panel {
  background: var(--bl-bg3) !important;
  border-color: var(--bl-border) !important;
  color: var(--bl-text) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .cust-sec-title,
html[data-look]:not([data-look-family="public-pay"]) body .inv-sec-title {
  color: var(--bl-primary) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .cust-modal-content .modal-header {
  background: var(--bl-bg3) !important;
  background-image: none !important;
  border-bottom: 1px solid var(--bl-border) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .cust-modal-content .modal-title,
html[data-look]:not([data-look-family="public-pay"]) body .cust-modal-content .modal-title.text-white {
  color: var(--bl-text) !important;
  -webkit-text-fill-color: var(--bl-text) !important;
}

/* Dropdown */
html[data-look]:not([data-look-family="public-pay"]) body .dropdown-menu {
  background: var(--bl-bg2) !important;
  border: 1px solid var(--bl-border) !important;
  border-radius: 10px !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08) !important;
  font-size: 13px !important;
  padding: 4px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .dropdown-item {
  color: var(--bl-text) !important;
  border-radius: 6px !important;
  padding: 7px 12px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .dropdown-item:hover,
html[data-look]:not([data-look-family="public-pay"]) body .dropdown-item:focus {
  background: var(--bl-bg3) !important;
  color: var(--bl-text) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .dropdown-divider {
  border-color: var(--bl-border) !important;
}

/* List group */
html[data-look]:not([data-look-family="public-pay"]) body .list-group {
  border-radius: 10px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .list-group-item {
  background: var(--bl-bg2) !important;
  border-color: var(--bl-border) !important;
  color: var(--bl-text) !important;
  font-size: 13px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .list-group-item.active {
  background: var(--bl-pdim) !important;
  border-color: var(--bl-border) !important;
  color: var(--bl-primary) !important;
}

/* Accordion */
html[data-look]:not([data-look-family="public-pay"]) body .accordion-item {
  background: var(--bl-bg2) !important;
  border: 1px solid var(--bl-border) !important;
  border-radius: 10px !important;
  margin-bottom: 8px;
}

html[data-look]:not([data-look-family="public-pay"]) body .accordion-button {
  background: var(--bl-bg2) !important;
  background-image: none !important;
  color: var(--bl-text) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  box-shadow: none !important;
  border-radius: 10px !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .accordion-button:not(.collapsed) {
  background: var(--bl-bg3) !important;
  color: var(--bl-primary) !important;
}

html[data-look]:not([data-look-family="public-pay"]) body .accordion-body {
  background: var(--bl-bg2) !important;
  color: var(--bl-text) !important;
  font-size: 13px !important;
}

/* Breadcrumb */
html[data-look]:not([data-look-family="public-pay"]) body .breadcrumb {
  background: transparent !important;
  font-size: 12px !important;
  margin-bottom: 12px;
}

html[data-look]:not([data-look-family="public-pay"]) body .breadcrumb-item,
html[data-look]:not([data-look-family="public-pay"]) body .breadcrumb-item a {
  color: var(--bl-muted) !important;
  text-decoration: none;
}

html[data-look]:not([data-look-family="public-pay"]) body .breadcrumb-item.active {
  color: var(--bl-text) !important;
}

/* Progress */
html[data-look]:not([data-look-family="public-pay"]) body .progress {
  background: var(--bl-bg3) !important;
  border-radius: 20px !important;
  box-shadow: none !important;
  height: 6px;
}

html[data-look]:not([data-look-family="public-pay"]) body .progress-bar {
  background: var(--bl-primary) !important;
  background-image: none !important;
  box-shadow: none !important;
}

/* Spinner */
html[data-look]:not([data-look-family="public-pay"]) body .spinner-border,
html[data-look]:not([data-look-family="public-pay"]) body .spinner-grow {
  color: var(--bl-primary) !important;
}

/* Jangan sentuh peta */
html[data-look] body .leaflet-container {
  font-size: inherit;
  background-image: initial;
}

/* ═══════════════════════════════════════════════════════════
   13. KELUARGA: LOGIN / REGISTER
   ═══════════════════════════════════════════════════════════ */
html[data-look-family="auth"] body {
  background: var(--bl-bg) !important;
  background-image: none !important;
}

html[data-look-family="auth"] body .admin-login__card,
html[data-look-family="auth"] body .customer-login__card,
html[data-look-family="auth"] body .login-card,
html[data-look-family="auth"] body .auth-card {
  background: var(--bl-bg2) !important;
  background-image: none !important;
  border: 1px solid var(--bl-border) !important;
  border-radius: 14px !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

html[data-look-family="auth"] body .admin-login__bg,
html[data-look-family="auth"] body .customer-login__bg {
  background: var(--bl-bg) !important;
  background-image: none !important;
  animation: none !important;
}

/* Blob dan titik dekoratif dihapus, bukan diwarnai ulang, agar latar benar-benar rata */
html[data-look-family="auth"] body .admin-login__bg-shape,
html[data-look-family="auth"] body .admin-login__bg-dots,
html[data-look-family="auth"] body .admin-login__card-accent,
html[data-look-family="auth"] body .customer-login__bg-shape,
html[data-look-family="auth"] body .customer-login__bg-dots,
html[data-look-family="auth"] body .customer-login__card-accent {
  display: none !important;
}

html[data-look-family="auth"] body .admin-login__input,
html[data-look-family="auth"] body .customer-login__input {
  background: var(--bl-bg3) !important;
  border: 1px solid var(--bl-border) !important;
  border-radius: 8px !important;
  color: var(--bl-text) !important;
  box-shadow: none !important;
}

html[data-look-family="auth"] body .admin-login__btn,
html[data-look-family="auth"] body .customer-login__btn,
html[data-look-family="auth"] body .btn-login {
  background: var(--bl-primary) !important;
  background-image: none !important;
  border: none !important;
  border-radius: 8px !important;
  color: #fff !important;
  box-shadow: none !important;
}

html[data-look-family="auth"] body .customer-login__btn--outline,
html[data-look-family="auth"] body .customer-login__btn--link {
  background: var(--bl-bg3) !important;
  background-image: none !important;
  color: var(--bl-text) !important;
  border: 1px solid var(--bl-border) !important;
}

/* Kotak logo: ratakan gradasi jadi permukaan netral */
html[data-look-family="auth"] body .admin-login__logo-wrap,
html[data-look-family="auth"] body .customer-login__logo-wrap {
  background: var(--bl-bg3) !important;
  background-image: none !important;
  border: 1px solid var(--bl-border) !important;
  box-shadow: none !important;
}

html[data-look-family="auth"] body .admin-login__label,
html[data-look-family="auth"] body .customer-login__label {
  color: var(--bl-muted) !important;
}

/* ═══════════════════════════════════════════════════════════
   14. KELUARGA: PORTAL PELANGGAN
   Hanya ratakan permukaan. Grid, clamp(), dan layout responsif dibiarkan.
   ═══════════════════════════════════════════════════════════ */
html[data-look-family="customer"] body,
html[data-look-family="customer"] body.customer-billing-portal {
  background: var(--bl-bg) !important;
  background-image: none !important;
}

html[data-look-family="customer"] body .main-container,
html[data-look-family="customer"] body .main-content.customer-dash {
  background: var(--bl-bg) !important;
  background-image: none !important;
}

html[data-look-family="customer"] body .customer-dash .card,
html[data-look-family="customer"] body .main-container .card,
html[data-look-family="customer"] body .portal-card,
html[data-look-family="customer"] body .summary-card {
  background: var(--bl-bg2) !important;
  background-image: none !important;
  border: 1px solid var(--bl-border) !important;
  border-radius: 12px !important;
  box-shadow: none !important;
}

html[data-look-family="customer"] body nav.sidebar {
  background: var(--bl-bg2) !important;
  background-image: none !important;
  border-right: 1px solid var(--bl-border) !important;
  box-shadow: none !important;
  font-weight: 600 !important;
  font-size: 14px !important;
}

/* ═══════════════════════════════════════════════════════════
   15. KELUARGA: VOUCHER & PEMBAYARAN PUBLIK
   Sentuhan paling ringan: cukup atur ulang token --pv-* agar bayangan,
   glow, dan radius mengecil. Tidak ada selektor layout yang disentuh.
   ═══════════════════════════════════════════════════════════ */
/* Tombol beli/bayar: gradasi biru-teal diratakan jadi indigo solid */
html[data-look-family="public-pay"] body .btn-pv-buy {
  background: var(--bl-primary) !important;
  background-image: none !important;
  border-color: var(--bl-primary) !important;
  color: #fff !important;
  box-shadow: none !important;
}

html[data-look-family="public-pay"] {
  --pv-indigo: #4f46e5;
  --pv-indigo-dark: #4338ca;
  --pv-radius-xl: 16px;
  --pv-radius-lg: 12px;
  --pv-radius-md: 10px;
  --pv-shadow: 0 8px 24px rgba(0, 0, 0, 0.22), 0 0 0 1px rgba(255, 255, 255, 0.06);
  --pv-glow: 0 0 0 rgba(0, 0, 0, 0);
}

/* ═══════════════════════════════════════════════════════════
   16. KELUARGA: HALAMAN PUBLIK LAIN
   payment/*, isolir, odpmaps, public-tools, error — sudah tercakup aturan
   umum di atas. Sisanya hanya penyelarasan latar kontainer.
   ═══════════════════════════════════════════════════════════ */
html[data-look-family="public"] body {
  background: var(--bl-bg) !important;
}

html[data-look-family="public"] body > .container,
html[data-look-family="public"] body > .container-fluid {
  color: var(--bl-text);
}

/* ═══════════════════════════════════════════════════════════
   17. CETAK
   ═══════════════════════════════════════════════════════════ */
@media print {
  html[data-look] body nav#sidebar.sidebar,
  html[data-look] body .mobile-navbar,
  html[data-look] body .billing-sidebar-mobile-fab {
    display: none !important;
  }
}
