/* BUTTON OVERRIDE - FORCE SIMPLE STYLE */
/* This file has the highest priority - loaded last */

/* Remove all button animations and transforms */
.btn,
.btn:hover,
.btn:focus,
.btn:active,
button.btn,
a.btn {
  transform: none !important;
  box-shadow: none !important;
  transition: opacity 0.2s ease !important;
  position: relative !important;
  overflow: visible !important;
}

/* Remove all pseudo-elements from buttons */
.btn::before,
.btn::after,
.btn:hover::before,
.btn:hover::after {
  content: none !important;
  display: none !important;
}

/* Primary Button - Force white text */
.btn-primary,
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-primary:visited,
button.btn-primary,
a.btn-primary,
input[type="submit"].btn-primary,
input[type="button"].btn-primary {
  background: #667eea !important;
  background-image: none !important;
  background-color: #667eea !important;
  color: white !important;
  border: none !important;
}

.btn-primary:hover,
.btn-primary:focus {
  background: #5568d3 !important;
  background-image: none !important;
  background-color: #5568d3 !important;
  color: white !important;
}

/* Success Button - Force white text */
.btn-success,
.btn-success:hover,
.btn-success:focus,
.btn-success:active,
.btn-success:visited,
button.btn-success,
a.btn-success {
  background: #10b981 !important;
  background-image: none !important;
  background-color: #10b981 !important;
  color: white !important;
  border: none !important;
}

.btn-success:hover,
.btn-success:focus {
  background: #059669 !important;
  background-image: none !important;
  background-color: #059669 !important;
  color: white !important;
}

/* Danger Button - Force white text */
.btn-danger,
.btn-danger:hover,
.btn-danger:focus,
.btn-danger:active,
.btn-danger:visited,
button.btn-danger,
a.btn-danger {
  background: #ef4444 !important;
  background-image: none !important;
  background-color: #ef4444 !important;
  color: white !important;
  border: none !important;
}

.btn-danger:hover,
.btn-danger:focus {
  background: #dc2626 !important;
  background-image: none !important;
  background-color: #dc2626 !important;
  color: white !important;
}

/* Warning Button - Force white text */
.btn-warning,
.btn-warning:hover,
.btn-warning:focus,
.btn-warning:active,
.btn-warning:visited,
button.btn-warning,
a.btn-warning {
  background: #f59e0b !important;
  background-image: none !important;
  background-color: #f59e0b !important;
  color: white !important;
  border: none !important;
}

.btn-warning:hover,
.btn-warning:focus {
  background: #d97706 !important;
  background-image: none !important;
  background-color: #d97706 !important;
  color: white !important;
}

/* Info Button - Force white text */
.btn-info,
.btn-info:hover,
.btn-info:focus,
.btn-info:active,
.btn-info:visited,
button.btn-info,
a.btn-info {
  background: #06b6d4 !important;
  background-image: none !important;
  background-color: #06b6d4 !important;
  color: white !important;
  border: none !important;
}

.btn-info:hover,
.btn-info:focus {
  background: #0891b2 !important;
  background-image: none !important;
  background-color: #0891b2 !important;
  color: white !important;
}

/* Secondary Button - Force white text */
.btn-secondary,
.btn-secondary:hover,
.btn-secondary:focus,
.btn-secondary:active,
.btn-secondary:visited,
button.btn-secondary,
a.btn-secondary {
  background: #64748b !important;
  background-image: none !important;
  background-color: #64748b !important;
  color: white !important;
  border: none !important;
}

.btn-secondary:hover,
.btn-secondary:focus {
  background: #475569 !important;
  background-image: none !important;
  background-color: #475569 !important;
  color: white !important;
}

/* Teks dan ikon putih pada tombol yang punya bg warna (tambah pelanggan, tambah paket, tambah tagihan, tab aksi) */
/* Spesifisitas .btn.btn-primary agar menang atas style per-halaman */
.btn.btn-primary,
.btn.btn-primary *,
.btn.btn-primary i,
.btn.btn-primary span,
.btn.btn-primary .bi,
.btn.btn-primary .bx,
.btn.btn-primary:hover,
.btn.btn-primary:hover *,
.btn.btn-primary:focus,
.btn.btn-primary:active,
button.btn-primary,
button.btn-primary *,
a.btn-primary,
a.btn-primary *,
.btn-primary,
.btn-primary *,
.btn-primary i,
.btn-primary span,
.btn-primary .bi,
.btn-primary .bx,
.btn-primary:hover *,
.btn-primary:focus *,
.btn-primary:active *,
.btn.btn-success,
.btn.btn-success *,
.btn.btn-success i,
.btn.btn-success span,
.btn.btn-success .bi,
.btn.btn-success .bx,
.btn.btn-success:hover *,
.btn-success,
.btn-success *,
.btn-success i,
.btn-success span,
.btn-success .bi,
.btn-success .bx,
.btn-success:hover *,
.btn-success:focus *,
.btn-success:active *,
.btn.btn-danger,
.btn.btn-danger *,
.btn.btn-danger i,
.btn.btn-danger span,
.btn.btn-danger:hover *,
.btn-danger,
.btn-danger *,
.btn-danger i,
.btn-danger span,
.btn-danger .bi,
.btn-danger .bx,
.btn-danger:hover *,
.btn-danger:focus *,
.btn-danger:active *,
.btn.btn-warning,
.btn.btn-warning *,
.btn.btn-warning i,
.btn.btn-warning span,
.btn.btn-warning:hover *,
.btn-warning,
.btn-warning *,
.btn-warning i,
.btn-warning span,
.btn-warning .bi,
.btn-warning .bx,
.btn-warning:hover *,
.btn-warning:focus *,
.btn-warning:active *,
.btn.btn-info,
.btn.btn-info *,
.btn.btn-info i,
.btn.btn-info span,
.btn.btn-info:hover *,
.btn-info,
.btn-info *,
.btn-info i,
.btn-info span,
.btn-info .bi,
.btn-info .bx,
.btn-info:hover *,
.btn-info:focus *,
.btn-info:active *,
.btn.btn-secondary,
.btn.btn-secondary *,
.btn.btn-secondary i,
.btn.btn-secondary span,
.btn.btn-secondary:hover *,
.btn-secondary,
.btn-secondary *,
.btn-secondary i,
.btn-secondary span,
.btn-secondary .bi,
.btn-secondary .bx,
.btn-secondary:hover *,
.btn-secondary:focus *,
.btn-secondary:active * {
  color: #ffffff !important;
}

/* ===== Custom solid-color buttons (non-Bootstrap) =====
   Banyak halaman pakai class custom seperti .btn-suspend, .btn-restore,
   .btn-action-check, .btn-modern-*, dll. dengan background warna gelap.
   Tema/CSS lain kadang membuat teks dan ikonnya jadi gelap sehingga tidak
   kontras. Paksa teks & ikon putih untuk semua varian custom ini. */
.btn.btn-suspend, .btn.btn-suspend *, .btn.btn-suspend i, .btn.btn-suspend span, .btn.btn-suspend .bi, .btn.btn-suspend .bx,
.btn.btn-suspend:hover, .btn.btn-suspend:hover *, .btn.btn-suspend:focus, .btn.btn-suspend:focus *, .btn.btn-suspend:active, .btn.btn-suspend:active *, .btn.btn-suspend:disabled, .btn.btn-suspend:disabled *,
.btn.btn-restore, .btn.btn-restore *, .btn.btn-restore i, .btn.btn-restore span, .btn.btn-restore .bi, .btn.btn-restore .bx,
.btn.btn-restore:hover, .btn.btn-restore:hover *, .btn.btn-restore:focus, .btn.btn-restore:focus *, .btn.btn-restore:active, .btn.btn-restore:active *, .btn.btn-restore:disabled, .btn.btn-restore:disabled *,
.btn.btn-action-check, .btn.btn-action-check *, .btn.btn-action-check i, .btn.btn-action-check span, .btn.btn-action-check .bi, .btn.btn-action-check .bx,
.btn.btn-action-check:hover, .btn.btn-action-check:hover *, .btn.btn-action-check:focus, .btn.btn-action-check:focus *, .btn.btn-action-check:active, .btn.btn-action-check:active *, .btn.btn-action-check:disabled, .btn.btn-action-check:disabled *,
.btn-suspend, .btn-suspend *, .btn-suspend i, .btn-suspend span, .btn-suspend .bi, .btn-suspend .bx,
.btn-suspend:hover, .btn-suspend:hover *, .btn-suspend:focus, .btn-suspend:focus *, .btn-suspend:active, .btn-suspend:active *, .btn-suspend:disabled, .btn-suspend:disabled *,
.btn-restore, .btn-restore *, .btn-restore i, .btn-restore span, .btn-restore .bi, .btn-restore .bx,
.btn-restore:hover, .btn-restore:hover *, .btn-restore:focus, .btn-restore:focus *, .btn-restore:active, .btn-restore:active *, .btn-restore:disabled, .btn-restore:disabled *,
.btn-action-check, .btn-action-check *, .btn-action-check i, .btn-action-check span, .btn-action-check .bi, .btn-action-check .bx,
.btn-action-check:hover, .btn-action-check:hover *, .btn-action-check:focus, .btn-action-check:focus *, .btn-action-check:active, .btn-action-check:active *, .btn-action-check:disabled, .btn-action-check:disabled *,
.btn-modern-primary, .btn-modern-primary *, .btn-modern-primary i, .btn-modern-primary span, .btn-modern-primary .bi, .btn-modern-primary .bx,
.btn-modern-primary:hover, .btn-modern-primary:hover *, .btn-modern-primary:focus, .btn-modern-primary:focus *, .btn-modern-primary:active, .btn-modern-primary:active *,
.btn-modern-success, .btn-modern-success *, .btn-modern-success i, .btn-modern-success span, .btn-modern-success .bi, .btn-modern-success .bx,
.btn-modern-success:hover, .btn-modern-success:hover *, .btn-modern-success:focus, .btn-modern-success:focus *, .btn-modern-success:active, .btn-modern-success:active *,
.btn-modern-danger, .btn-modern-danger *, .btn-modern-danger i, .btn-modern-danger span, .btn-modern-danger .bi, .btn-modern-danger .bx,
.btn-modern-danger:hover, .btn-modern-danger:hover *, .btn-modern-danger:focus, .btn-modern-danger:focus *, .btn-modern-danger:active, .btn-modern-danger:active * {
  color: #ffffff !important;
}

/* ===== Generic safety-net =====
   Untuk tombol non-outline / non-light yang punya background warna kuat tapi
   tidak terdaftar di atas: paksa teks putih juga. Outline & light/secondary
   muted dikecualikan agar tidak rusak. */
.btn[class*="btn-gradient"],
.btn[class*="btn-gradient"] *,
.btn[class*="-solid"],
.btn[class*="-solid"] *,
.btn-action,
.btn-action * {
  color: #ffffff !important;
}

/* Tombol outline (edit, dll) tidak di-override - tetap pakai warna dari theme/Bootstrap */

/* Dark theme: remove neon/glow button effects */
[data-theme="dark"] .btn,
[data-theme="dark"] .btn:hover,
[data-theme="dark"] .btn:focus,
[data-theme="dark"] .btn:active,
[data-theme="dark"] button.btn,
[data-theme="dark"] a.btn {
  box-shadow: none !important;
  text-shadow: none !important;
  animation: none !important;
  background-image: none !important;
  transform: none !important;
}

/**
 * Card containers: tanpa efek menonjol (angkat/scale) saat hover.
 * Tema terang & gelap — muat paling akhir setelah theme/pppoe-stat-cards.
 */

/* Hanya transisi halus, tanpa transform pada card */
.card,
.main-content .card,
.main-container .card,
.stat-card,
.stats-card,
.pppoe-stat-card,
.billing-stat-card,
.admin-stat-card,
.stat-card-modern,
.dashboard-card,
.summary-card,
.customer-growth-card,
.monthly-stats-card,
.card-stats,
.payment-card,
.growth-mini-card,
.bandwidth-card,
.traffic-chart-card,
.main-content .card:not(.billing-stat-card),
.main-container .card:not(.billing-stat-card) {
  transition: border-color 0.2s ease, background-color 0.2s ease, opacity 0.2s ease !important;
}

/* ——— Tema terang: tidak angkat / scale ——— */
.card:hover,
.main-content .card:hover,
.main-container .card:hover,
.main-content .card:not(.billing-stat-card):hover,
.main-container .card:not(.billing-stat-card):hover,
.stat-card:hover,
.stats-card:hover,
.pppoe-stat-card:hover,
.main-content .pppoe-stat-card:hover,
html body main.main-content .pppoe-stat-card:hover,
html body .main-content .pppoe-stat-card:hover,
html body .pppoe-stat-card:hover,
.billing-stat-card:hover,
.admin-stat-card:hover,
.stat-card-modern:hover,
.dashboard-card:hover,
.summary-card:hover,
.customer-growth-card:hover,
.monthly-stats-card:hover,
.growth-mini-card:hover,
.card-stats:hover,
.payment-card:hover,
.main-content .stat-card:hover,
.main-container .stat-card:hover,
.card.shadow-sm:hover,
.card.border-0:hover,
.card.h-100:hover,
.card.h-100.shadow-sm.border-0:hover,
.bandwidth-card:hover,
.traffic-chart-card:hover {
  transform: none !important;
  scale: 1 !important;
}

/* Bayangan tetap datar (tidak membesar saat hover) */
.card:hover,
.main-content .card:hover,
.main-container .card:hover,
.main-content .card:not(.billing-stat-card):hover,
.main-container .card:not(.billing-stat-card):hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06) !important;
}

.pppoe-stat-card:hover,
.main-content .pppoe-stat-card:hover,
html body .pppoe-stat-card:hover {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08) !important;
}

.billing-stat-card:hover {
  box-shadow: var(--billing-shadow-card, 0 2px 8px rgba(0, 0, 0, 0.06)) !important;
}

.stat-card-modern:hover,
.dashboard-card:hover {
  box-shadow: var(--shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.08)) !important;
}

/* Garis dekoratif atas card tidak muncul saat hover */
.card:hover::before,
.main-content .card:hover::before {
  opacity: 0 !important;
}

.billing-stat-card:hover::before {
  opacity: 0 !important;
}

.billing-stat-card:hover .card-body {
  transform: none !important;
}

/* ——— Tema gelap ——— */
[data-theme="dark"] .card:hover,
[data-bs-theme="dark"] .card:hover,
html[data-theme="dark"] body .card:hover,
html[data-bs-theme="dark"] body .card:hover,
[data-theme="dark"] .main-content .card:hover,
[data-theme="dark"] .main-container .card:hover,
[data-theme="dark"] .card.shadow-sm:hover,
[data-theme="dark"] .card.border-0:hover,
[data-theme="dark"] .card.h-100:hover,
[data-theme="dark"] .card.h-100.shadow-sm.border-0:hover,
[data-theme="dark"] .main-content .card:hover::before,
[data-theme="dark"] .card:hover::before,
html[data-theme="dark"] body main.main-content .pppoe-stat-card:hover,
html[data-theme="dark"] body .pppoe-stat-card:hover,
html[data-bs-theme="dark"] body .pppoe-stat-card:hover,
[data-theme="dark"] .pppoe-stat-card:hover,
[data-theme="dark"] .main-content .pppoe-stat-card:hover,
[data-theme="dark"] .stat-card:hover,
[data-theme="dark"] .stat-card-modern:hover,
[data-theme="dark"] .dashboard-card:hover,
[data-theme="dark"] .billing-stat-card:hover,
[data-theme="dark"] .admin-stat-card:hover {
  transform: none !important;
  scale: 1 !important;
}

[data-theme="dark"] .main-content .card:hover,
[data-theme="dark"] .card:hover {
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3) !important;
}

[data-theme="dark"] .main-content .card:hover::before,
[data-theme="dark"] .card:hover::before {
  left: -100% !important;
  opacity: 0 !important;
}

html[data-theme="dark"] body .pppoe-stat-card:hover,
html[data-bs-theme="dark"] body .pppoe-stat-card:hover {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35) !important;
}

/* =============================================================================
   SOLID BG BUTTONS — teks & ikon putih (tema terang & gelap)
   Menang atas aturan global theme.css yang memaksa warna teks pada * di dalam
   .main-content / .card. Outline & light tidak disentuh.
   ============================================================================= */

html body .btn.btn-primary:not(.btn-outline-primary):not(.btn-light),
html body .btn.btn-success:not(.btn-outline-success):not(.btn-light),
html body .btn.btn-danger:not(.btn-outline-danger):not(.btn-light),
html body .btn.btn-warning:not(.btn-outline-warning):not(.btn-light),
html body .btn.btn-info:not(.btn-outline-info):not(.btn-light),
html body .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light),
html body .btn.btn-dark:not(.btn-outline-dark):not(.btn-light),
html body .btn.bg-primary,
html body .btn.bg-success,
html body .btn.bg-danger,
html body .btn.bg-warning,
html body .btn.bg-info,
html body .btn.bg-secondary,
html body .btn.bg-dark,
html body .btn[class*="btn-gradient"],
html body .btn[class*="-solid"],
html body .btn-action,
html body .btn-suspend,
html body .btn-restore,
html body .btn-action-check,
html body .btn-modern-primary,
html body .btn-modern-success,
html body .btn-modern-danger,
html body .dataTables_paginate .paginate_button.current,
html body .card-header.bg-primary .btn:not(.btn-outline-primary):not(.btn-light),
html body .card-header.bg-success .btn:not(.btn-outline-success):not(.btn-light),
html body .card-header.bg-danger .btn:not(.btn-outline-danger):not(.btn-light),
html body .card-header.bg-warning .btn:not(.btn-outline-warning):not(.btn-light),
html body .card-header.bg-info .btn:not(.btn-outline-info):not(.btn-light),
html body .card-header.bg-secondary .btn:not(.btn-outline-secondary):not(.btn-light),
html body .card-header.bg-dark .btn:not(.btn-outline-dark):not(.btn-light),
html body .modal-header.bg-primary .btn:not(.btn-outline-primary):not(.btn-light),
html body .modal-header.bg-info .btn:not(.btn-outline-info):not(.btn-light),
html body .modal-header.bg-success .btn:not(.btn-outline-success):not(.btn-light),
html body .modal-header.bg-danger .btn:not(.btn-outline-danger):not(.btn-light),
html[data-theme="light"] body .main-content .btn.btn-primary:not(.btn-outline-primary):not(.btn-light),
html[data-theme="light"] body .main-content .btn.btn-success:not(.btn-outline-success):not(.btn-light),
html[data-theme="light"] body .main-content .btn.btn-danger:not(.btn-outline-danger):not(.btn-light),
html[data-theme="light"] body .main-content .btn.btn-warning:not(.btn-outline-warning):not(.btn-light),
html[data-theme="light"] body .main-content .btn.btn-info:not(.btn-outline-info):not(.btn-light),
html[data-theme="light"] body .main-content .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light),
html[data-theme="light"] body .main-content .btn.btn-dark:not(.btn-outline-dark):not(.btn-light),
html[data-theme="dark"] body .main-content .btn.btn-primary:not(.btn-outline-primary):not(.btn-light),
html[data-theme="dark"] body .main-content .btn.btn-success:not(.btn-outline-success):not(.btn-light),
html[data-theme="dark"] body .main-content .btn.btn-danger:not(.btn-outline-danger):not(.btn-light),
html[data-theme="dark"] body .main-content .btn.btn-warning:not(.btn-outline-warning):not(.btn-light),
html[data-theme="dark"] body .main-content .btn.btn-info:not(.btn-outline-info):not(.btn-light),
html[data-theme="dark"] body .main-content .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light),
html[data-theme="dark"] body .main-content .btn.btn-dark:not(.btn-outline-dark):not(.btn-light) {
  color: #ffffff !important;
}

html body .btn.btn-primary:not(.btn-outline-primary):not(.btn-light) *,
html body .btn.btn-success:not(.btn-outline-success):not(.btn-light) *,
html body .btn.btn-danger:not(.btn-outline-danger):not(.btn-light) *,
html body .btn.btn-warning:not(.btn-outline-warning):not(.btn-light) *,
html body .btn.btn-info:not(.btn-outline-info):not(.btn-light) *,
html body .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light) *,
html body .btn.btn-dark:not(.btn-outline-dark):not(.btn-light) *,
html body .btn.bg-primary *,
html body .btn.bg-success *,
html body .btn.bg-danger *,
html body .btn.bg-warning *,
html body .btn.bg-info *,
html body .btn.bg-secondary *,
html body .btn.bg-dark *,
html body .btn[class*="btn-gradient"] *,
html body .btn[class*="-solid"] *,
html body .btn-action *,
html body .btn-suspend *,
html body .btn-restore *,
html body .btn-action-check *,
html body .btn-modern-primary *,
html body .btn-modern-success *,
html body .btn-modern-danger *,
html body .dataTables_paginate .paginate_button.current *,
html body .card-header.bg-primary .btn:not(.btn-outline-primary):not(.btn-light) *,
html body .card-header.bg-success .btn:not(.btn-outline-success):not(.btn-light) *,
html body .card-header.bg-danger .btn:not(.btn-outline-danger):not(.btn-light) *,
html body .card-header.bg-warning .btn:not(.btn-outline-warning):not(.btn-light) *,
html body .card-header.bg-info .btn:not(.btn-outline-info):not(.btn-light) *,
html body .card-header.bg-secondary .btn:not(.btn-outline-secondary):not(.btn-light) *,
html body .card-header.bg-dark .btn:not(.btn-outline-dark):not(.btn-light) *,
html body .modal-header.bg-primary .btn:not(.btn-outline-primary):not(.btn-light) *,
html body .modal-header.bg-info .btn:not(.btn-outline-info):not(.btn-light) *,
html body .modal-header.bg-success .btn:not(.btn-outline-success):not(.btn-light) *,
html body .modal-header.bg-danger .btn:not(.btn-outline-danger):not(.btn-light) *,
html[data-theme="light"] body .main-content .btn.btn-primary:not(.btn-outline-primary):not(.btn-light) *,
html[data-theme="light"] body .main-content .btn.btn-success:not(.btn-outline-success):not(.btn-light) *,
html[data-theme="light"] body .main-content .btn.btn-danger:not(.btn-outline-danger):not(.btn-light) *,
html[data-theme="light"] body .main-content .btn.btn-warning:not(.btn-outline-warning):not(.btn-light) *,
html[data-theme="light"] body .main-content .btn.btn-info:not(.btn-outline-info):not(.btn-light) *,
html[data-theme="light"] body .main-content .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light) *,
html[data-theme="light"] body .main-content .btn.btn-dark:not(.btn-outline-dark):not(.btn-light) *,
html[data-theme="dark"] body .main-content .btn.btn-primary:not(.btn-outline-primary):not(.btn-light) *,
html[data-theme="dark"] body .main-content .btn.btn-success:not(.btn-outline-success):not(.btn-light) *,
html[data-theme="dark"] body .main-content .btn.btn-danger:not(.btn-outline-danger):not(.btn-light) *,
html[data-theme="dark"] body .main-content .btn.btn-warning:not(.btn-outline-warning):not(.btn-light) *,
html[data-theme="dark"] body .main-content .btn.btn-info:not(.btn-outline-info):not(.btn-light) *,
html[data-theme="dark"] body .main-content .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light) *,
html[data-theme="dark"] body .main-content .btn.btn-dark:not(.btn-outline-dark):not(.btn-light) * {
  color: #ffffff !important;
}

html body .btn.btn-primary.text-dark,
html body .btn.btn-success.text-dark,
html body .btn.btn-danger.text-dark,
html body .btn.btn-warning.text-dark,
html body .btn.btn-info.text-dark,
html body .btn.btn-secondary.text-dark,
html body .btn.btn-dark.text-dark,
html body .btn.btn-primary.text-dark *,
html body .btn.btn-success.text-dark *,
html body .btn.btn-danger.text-dark *,
html body .btn.btn-warning.text-dark *,
html body .btn.btn-info.text-dark *,
html body .btn.btn-secondary.text-dark *,
html body .btn.btn-dark.text-dark * {
  color: #ffffff !important;
}

html body .btn.btn-primary:not(.btn-outline-primary):not(.btn-light):hover,
html body .btn.btn-primary:not(.btn-outline-primary):not(.btn-light):focus,
html body .btn.btn-primary:not(.btn-outline-primary):not(.btn-light):active,
html body .btn.btn-success:not(.btn-outline-success):not(.btn-light):hover,
html body .btn.btn-success:not(.btn-outline-success):not(.btn-light):focus,
html body .btn.btn-success:not(.btn-outline-success):not(.btn-light):active,
html body .btn.btn-danger:not(.btn-outline-danger):not(.btn-light):hover,
html body .btn.btn-danger:not(.btn-outline-danger):not(.btn-light):focus,
html body .btn.btn-danger:not(.btn-outline-danger):not(.btn-light):active,
html body .btn.btn-warning:not(.btn-outline-warning):not(.btn-light):hover,
html body .btn.btn-warning:not(.btn-outline-warning):not(.btn-light):focus,
html body .btn.btn-warning:not(.btn-outline-warning):not(.btn-light):active,
html body .btn.btn-info:not(.btn-outline-info):not(.btn-light):hover,
html body .btn.btn-info:not(.btn-outline-info):not(.btn-light):focus,
html body .btn.btn-info:not(.btn-outline-info):not(.btn-light):active,
html body .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light):hover,
html body .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light):focus,
html body .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light):active,
html body .btn.btn-dark:not(.btn-outline-dark):not(.btn-light):hover,
html body .btn.btn-dark:not(.btn-outline-dark):not(.btn-light):focus,
html body .btn.btn-dark:not(.btn-outline-dark):not(.btn-light):active,
html body .btn.btn-primary:not(.btn-outline-primary):not(.btn-light):hover *,
html body .btn.btn-success:not(.btn-outline-success):not(.btn-light):hover *,
html body .btn.btn-danger:not(.btn-outline-danger):not(.btn-light):hover *,
html body .btn.btn-warning:not(.btn-outline-warning):not(.btn-light):hover *,
html body .btn.btn-info:not(.btn-outline-info):not(.btn-light):hover *,
html body .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light):hover *,
html body .btn.btn-dark:not(.btn-outline-dark):not(.btn-light):hover * {
  color: #ffffff !important;
}

/* =============================================================================
   SOLID COLORED CONTROLS — teks & ikon PUTIH (dimuat paling akhir)
   Menang atas span:not(.btn *) dan .main-content * di theme.css.
   Mencakup: tombol solid, badge toggle form-check-status, tab nav aktif.
   ============================================================================= */
html body .main-content button.btn.btn-primary:not(.btn-outline-primary):not(.btn-light),
html body .main-content button.btn.btn-success:not(.btn-outline-success):not(.btn-light),
html body .main-content button.btn.btn-danger:not(.btn-outline-danger):not(.btn-light),
html body .main-content button.btn.btn-warning:not(.btn-outline-warning):not(.btn-light),
html body .main-content button.btn.btn-info:not(.btn-outline-info):not(.btn-light),
html body .main-content button.btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light),
html body .main-content button.btn.btn-dark:not(.btn-outline-dark):not(.btn-light),
html body .main-content a.btn.btn-primary:not(.btn-outline-primary):not(.btn-light),
html body .main-content a.btn.btn-success:not(.btn-outline-success):not(.btn-light),
html body .main-content a.btn.btn-danger:not(.btn-outline-danger):not(.btn-light),
html body .main-content a.btn.btn-warning:not(.btn-outline-warning):not(.btn-light),
html body .main-content a.btn.btn-info:not(.btn-outline-info):not(.btn-light),
html body .main-content a.btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light),
html body .main-content a.btn.btn-dark:not(.btn-outline-dark):not(.btn-light),
html body .main-content .settings-tab-actions .btn,
html body .main-content .settings-tab-actions .btn *,
html body .main-content button.btn.btn-primary:not(.btn-outline-primary):not(.btn-light) *,
html body .main-content button.btn.btn-success:not(.btn-outline-success):not(.btn-light) *,
html body .main-content button.btn.btn-danger:not(.btn-outline-danger):not(.btn-light) *,
html body .main-content button.btn.btn-warning:not(.btn-outline-warning):not(.btn-light) *,
html body .main-content button.btn.btn-info:not(.btn-outline-info):not(.btn-light) *,
html body .main-content button.btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light) *,
html body .main-content button.btn.btn-dark:not(.btn-outline-dark):not(.btn-light) *,
html body .main-content a.btn.btn-primary:not(.btn-outline-primary):not(.btn-light) *,
html body .main-content a.btn.btn-success:not(.btn-outline-success):not(.btn-light) *,
html body .main-content a.btn.btn-danger:not(.btn-outline-danger):not(.btn-light) *,
html body .main-content a.btn.btn-warning:not(.btn-outline-warning):not(.btn-light) *,
html body .main-content a.btn.btn-info:not(.btn-outline-info):not(.btn-light) *,
html body .main-content a.btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light) *,
html body .main-content a.btn.btn-dark:not(.btn-outline-dark):not(.btn-light) *,
html body .main-content button.btn.btn-primary:not(.btn-outline-primary):not(.btn-light) i::before,
html body .main-content button.btn.btn-success:not(.btn-outline-success):not(.btn-light) i::before,
html body .main-content button.btn.btn-danger:not(.btn-outline-danger):not(.btn-light) i::before,
html body .main-content button.btn.btn-warning:not(.btn-outline-warning):not(.btn-light) i::before,
html body .main-content button.btn.btn-info:not(.btn-outline-info):not(.btn-light) i::before,
html body .main-content button.btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light) i::before,
html body .main-content button.btn.btn-dark:not(.btn-outline-dark):not(.btn-light) i::before,
html body span.form-check-status,
html body span.form-check-status.status-aktif,
html body span.form-check-status.status-tidak-aktif,
html body .main-content .nav-tabs button.nav-link.active,
html body .main-content .nav-tabs button.nav-link.active *,
html body .main-content .nav-tabs button.nav-link.active i::before,
:root:not([data-theme="dark"]) html body .main-content button.btn.btn-primary:not(.btn-outline-primary):not(.btn-light),
:root:not([data-theme="dark"]) html body span.form-check-status.status-aktif,
:root:not([data-theme="dark"]) html body span.form-check-status.status-tidak-aktif,
:root:not([data-theme="dark"]) html body .main-content .nav-tabs button.nav-link.active,
[data-theme="dark"] html body .main-content button.btn.btn-primary:not(.btn-outline-primary):not(.btn-light),
[data-theme="dark"] html body span.form-check-status.status-aktif,
[data-theme="dark"] html body span.form-check-status.status-tidak-aktif,
[data-theme="dark"] html body .main-content .nav-tabs button.nav-link.active {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

/* =============================================================================
   PORTAL PELANGGAN (/customer) — tombol solid teks & ikon PUTIH
   Menang atas theme.css [class*="dashboard"] * dan .main-content * (tema terang).
   Pola sama perbaikan admin: html body + -webkit-text-fill-color.
   ============================================================================= */
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-primary:not(.btn-outline-primary):not(.btn-light),
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-success:not(.btn-outline-success):not(.btn-light),
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-danger:not(.btn-outline-danger):not(.btn-light),
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-warning:not(.btn-outline-warning):not(.btn-light),
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-info:not(.btn-outline-info):not(.btn-light),
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light),
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-action,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-ssid,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-password,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-restart,
html body.customer-dashboard-page .main-content.customer-dash .cd-unpaid-pay-btn,
html body.customer-dashboard-page .modal .btn.btn-primary:not(.btn-outline-primary):not(.btn-light),
html body.customer-dashboard-page .modal .btn.btn-success:not(.btn-outline-success):not(.btn-light),
html body.customer-dashboard-page .modal .btn.btn-danger:not(.btn-outline-danger):not(.btn-light),
html body.customer-dashboard-page .modal .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light),
html body.customer-dashboard-page .modal .btn.btn-warning:not(.btn-outline-warning):not(.btn-light),
html body.customer-dashboard-page .modal .btn.btn-info:not(.btn-outline-info):not(.btn-light),
:root:not([data-theme="dark"]) html body.customer-dashboard-page [class*="dashboard"] .btn.btn-primary:not(.btn-outline-primary):not(.btn-light),
:root:not([data-theme="dark"]) html body.customer-dashboard-page [class*="dashboard"] .btn.btn-success:not(.btn-outline-success):not(.btn-light),
:root:not([data-theme="dark"]) html body.customer-dashboard-page [class*="dashboard"] .btn.btn-danger:not(.btn-outline-danger):not(.btn-light),
:root:not([data-theme="dark"]) html body.customer-dashboard-page [class*="dashboard"] .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light),
:root:not([data-theme="dark"]) html body.customer-dashboard-page [class*="dashboard"] .btn.btn-action,
:root:not([data-theme="dark"]) html body.customer-dashboard-page [class*="dashboard"] .btn.btn-ssid,
:root:not([data-theme="dark"]) html body.customer-dashboard-page [class*="dashboard"] .btn.btn-password,
:root:not([data-theme="dark"]) html body.customer-dashboard-page [class*="dashboard"] .btn.btn-restart,
:root:not([data-theme="dark"]) html body.customer-dashboard-page [class*="dashboard"] .cd-unpaid-pay-btn,
[data-theme="dark"] html body.customer-dashboard-page .main-content.customer-dash .btn.btn-primary:not(.btn-outline-primary):not(.btn-light),
[data-theme="dark"] html body.customer-dashboard-page .main-content.customer-dash .btn.btn-success:not(.btn-outline-success):not(.btn-light),
[data-theme="dark"] html body.customer-dashboard-page .main-content.customer-dash .btn.btn-danger:not(.btn-outline-danger):not(.btn-light),
[data-theme="dark"] html body.customer-dashboard-page .main-content.customer-dash .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light),
[data-theme="dark"] html body.customer-dashboard-page .main-content.customer-dash .btn.btn-action,
[data-theme="dark"] html body.customer-dashboard-page .main-content.customer-dash .btn.btn-ssid,
[data-theme="dark"] html body.customer-dashboard-page .main-content.customer-dash .btn.btn-password,
[data-theme="dark"] html body.customer-dashboard-page .main-content.customer-dash .btn.btn-restart,
[data-theme="dark"] html body.customer-dashboard-page .main-content.customer-dash .cd-unpaid-pay-btn {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

html body.customer-dashboard-page .main-content.customer-dash .btn.btn-primary:not(.btn-outline-primary):not(.btn-light) *,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-success:not(.btn-outline-success):not(.btn-light) *,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-danger:not(.btn-outline-danger):not(.btn-light) *,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-warning:not(.btn-outline-warning):not(.btn-light) *,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-info:not(.btn-outline-info):not(.btn-light) *,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light) *,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-action *,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-ssid *,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-password *,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-restart *,
html body.customer-dashboard-page .main-content.customer-dash .cd-unpaid-pay-btn *,
html body.customer-dashboard-page .modal .btn.btn-primary:not(.btn-outline-primary):not(.btn-light) *,
html body.customer-dashboard-page .modal .btn.btn-success:not(.btn-outline-success):not(.btn-light) *,
html body.customer-dashboard-page .modal .btn.btn-danger:not(.btn-outline-danger):not(.btn-light) *,
html body.customer-dashboard-page .modal .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light) *,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-action i::before,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-ssid i::before,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-password i::before,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-restart i::before,
html body.customer-dashboard-page .main-content.customer-dash .cd-unpaid-pay-btn i::before,
:root:not([data-theme="dark"]) html body.customer-dashboard-page [class*="dashboard"] .btn.btn-action *,
:root:not([data-theme="dark"]) html body.customer-dashboard-page [class*="dashboard"] .cd-unpaid-pay-btn *,
[data-theme="dark"] html body.customer-dashboard-page .main-content.customer-dash .btn.btn-action *,
[data-theme="dark"] html body.customer-dashboard-page .main-content.customer-dash .cd-unpaid-pay-btn * {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

html body.customer-dashboard-page .main-content.customer-dash .btn.btn-primary:not(.btn-outline-primary):not(.btn-light):hover,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-primary:not(.btn-outline-primary):not(.btn-light):focus,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-primary:not(.btn-outline-primary):not(.btn-light):active,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-success:not(.btn-outline-success):not(.btn-light):hover,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-success:not(.btn-outline-success):not(.btn-light):focus,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-success:not(.btn-outline-success):not(.btn-light):active,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-danger:not(.btn-outline-danger):not(.btn-light):hover,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-danger:not(.btn-outline-danger):not(.btn-light):focus,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-danger:not(.btn-outline-danger):not(.btn-light):active,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light):hover,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light):focus,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-secondary:not(.btn-outline-secondary):not(.btn-light):active,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-action:hover,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-action:focus,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-action:active,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-ssid:hover,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-password:hover,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-restart:hover,
html body.customer-dashboard-page .main-content.customer-dash .cd-unpaid-pay-btn:hover,
html body.customer-dashboard-page .main-content.customer-dash .cd-unpaid-pay-btn:focus,
html body.customer-dashboard-page .main-content.customer-dash .btn.btn-action:hover *,
html body.customer-dashboard-page .main-content.customer-dash .cd-unpaid-pay-btn:hover * {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

/* ===== TOAST TEXT WHITE - GLOBAL OVERRIDE ===== */
/* Semua teks toast tetap putih (override theme light contrast + inline warning) */
.toast,
.toast.bg-success,
.toast.bg-danger,
.toast.bg-warning,
.toast.bg-info,
.toast.bg-primary,
.toast-container .toast {
  color: #ffffff !important;
}

.toast .toast-body,
.toast .toast-body *,
.toast-container .toast .toast-body,
.toast-container .toast .toast-body *,
.toast.bg-success .toast-body,
.toast.bg-success .toast-body *,
.toast.bg-danger .toast-body,
.toast.bg-danger .toast-body *,
.toast.bg-warning .toast-body,
.toast.bg-warning .toast-body *,
.toast.bg-info .toast-body,
.toast.bg-info .toast-body *,
.toast.bg-primary .toast-body,
.toast.bg-primary .toast-body * {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

.toast .text-dark,
.toast .text-muted,
.toast .text-warning,
.toast .text-body,
.toast .text-secondary,
.toast .small,
.toast small,
.toast strong,
.toast span,
.toast p,
.toast i,
.toast .bi,
.toast .bx {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

:root:not([data-theme="dark"]) .toast.text-white,
:root:not([data-theme="dark"]) .toast.text-white *,
:root:not([data-theme="dark"]) .toast .text-white,
:root:not([data-theme="dark"]) .toast .text-white *,
:root:not([data-theme="dark"]) .toast strong,
:root:not([data-theme="dark"]) .toast small,
:root:not([data-theme="dark"]) .toast .fw-bold,
:root:not([data-theme="dark"]) .toast span,
:root:not([data-theme="dark"]) .toast p,
:root:not([data-theme="dark"]) .toast .text-muted,
:root:not([data-theme="dark"]) .toast .text-warning {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

.toast .btn-close {
  filter: invert(1) grayscale(100%) brightness(200%);
}
