/* =========================================================================
   theme.css — BLACK theme
   -------------------------------------------------------------------------
   File ini di-generate dari split theme-engine/css/theme.css (root, shared +
   default) menjadi per-tema. Dimuat SELALU bareng theme.css root & 2 file
   tema lain (lihat index.html) — jangan dimuat sendirian, karena token
   :root/default & keyframes/@property tinggal di root.
   ========================================================================= */

/* =========================================================================
   3) BLACK — hitam pekat + aksen emas
   -------------------------------------------------------------------------
   Token di bawah mengikuti color palette resmi tema Black.
   ========================================================================= */
body[data-theme="black"] {
  /* ---- BACKGROUND & EFFECT ---- */
  --th-bg:          #000000;
  --th-surface:     #131313;                  /* Background Card */
  --th-surface-2:   #1b1b1b;                  /* varian card sedikit lebih terang */
  /* Background Card + transparansi; pakai bareng backdrop-filter: blur(...).
     SATU-SATUNYA knob transparansi kartu di tema ini — balance card, profile
     info card, kartu global, kotak list credit/bonus, kartu profit & strategy
     semuanya menunjuk ke sini. Makin kecil alpha = makin tembus. */
  --th-surface-glass: rgba(19, 19, 19, 0.62);

  /* ---- TEXT ---- */
  --th-text:           #FDFDFE;               /* Text Utama */
  --th-text-white:     #FFFFFF;               /* Text Putih Netral */
  --th-text-secondary: #B2B0AE;               /* Text Sekunder */
  --th-text-muted:     #9B9591;               /* Text Muted */
  --th-text-hint:      #646361;               /* Text Disabled */

  /* ---- GOLD & ACCENT ---- */
  --th-accent:         #FFC85B;               /* Accent Gold */
  --th-accent-2:       #F5CD6B;               /* Text Gold */
  --th-gold-highlight: #FBEA9D;               /* titik highlight paling terang */
  --th-border-gold-1:  #FEF9A2;
  --th-border-gold-2:  #DBB14E;
  /* Border Gold 1 -> 2 sebagai gradasi (dipakai untuk garis/border) */
  --th-border-gold-grad: linear-gradient(135deg, #FEF9A2, #DBB14E);
  /* Gradasi untuk fill tombol: sengaja TIDAK memakai Border Gold 1 (#FEF9A2)
     karena tombol memakai teks putih — ujung yang terlalu terang bikin teks
     tidak terbaca. */
  --th-accent-grad:    linear-gradient(135deg, #ffb72a, #ab7a09);

  /* Border Gold Glow #F1CA76 "digabung dengan transparansi" */
  --th-border:         rgba(241, 202, 118, 0.4);
  --th-border-solid:   #F1CA76;
  --th-shadow:         0 0 10px rgba(241, 202, 118, 0.2);

  /* ---- HEADER ---- */
  --th-header-bg:       #000000;
  --th-header-solid-bg: #000000;
  --th-header-gold:     #FAE391;              /* Header Gold / Glow */
  --th-header-white:    #FFFFFF;              /* Header White */
  --th-header-bg-img:   url("../../assets/bg-black.jpg");
  --th-bg-api-ip:       url("../../assets/orbit-black/bg-pg-api-1.png");
  --th-bg-api-btn:      url("../../assets/orbit-black/bg-pg-api-3.png");
  --th-bg-api-status:   url("../../assets/orbit-black/bg-pg-api-2.png");
  --th-btn-start-img: url("../../assets/orbit-black/start.png");
  --th-btn-stop-img:  url("../../assets/orbit-black/stop.png");
  --th-btn-pause-img: url("../../assets/orbit-black/pause.png");

  --th-logo: none;

  /* ---- ICON FILTER ----
     Palette menyebut gradasi #F1E9C1 -> #FBD66D. CSS `filter` hanya bisa
     menghasilkan SATU warna rata (bukan gradasi), jadi token utama dipatok ke
     ujung emasnya (#FBD66D) dan ujung terangnya (#F1E9C1) disediakan terpisah
     untuk dipakai bila perlu. Untuk gradasi sungguhan, pakai teknik
     mask + var(--th-icon-gold-grad) seperti pada icon area/TNC di file ini.

     Angka filter di bawah DIHITUNG (bukan dikira-kira) dengan menyimulasikan
     pipeline filter CSS; hasil render: #FAD66C dan #F2EAC1 — selisih maksimum
     1/255 per channel dari warna target. */
  --th-icon-filter:       brightness(0) saturate(100%) invert(23%) sepia(100%)
                          saturate(97%) hue-rotate(7deg) brightness(221%) contrast(287%);
  --th-icon-filter-light: brightness(0) saturate(100%) invert(30%) sepia(7%)
                          saturate(632%) hue-rotate(13deg) brightness(251%) contrast(156%);
  --th-icon-gold-grad:    linear-gradient(135deg, #F1E9C1, #FBD66D);

  /* Glow tombol primer. Versi lama satu lapis emas pucat + inset PUTIH, dan
     putih itu yang mencuci warnanya jadi halo keabu-abuan. Sekarang: inti
     amber pekat yang rapat ke tepi tombol + halo lebar yang lebih hangat, dan
     inset-nya ikut emas (bukan putih) supaya warnanya tidak luntur. */
  --th-btn-primary-shadow: 0 0 8px rgba(255, 183, 42, 0.85),
                           0 0 22px rgba(255, 160, 20, 0.55),
                           inset 0 0 6px rgba(254, 249, 162, 0.45);
}
/* =========================================================================
   5) PENERAPAN TOKEN KE KOMPONEN
   -------------------------------------------------------------------------
   PENTING soal kontras: app ini mencampur card terang & gelap dengan warna
   teks yang sebagian hardcoded. Memaksa SEMUA .card jadi gelap membuat teks
   gelap jadi tak terbaca. Karena itu modelnya per-skema:

     - elite & galaxy = SKEMA TERANG  -> jangan paksa card gelap. Cukup ubah
       background halaman + aksen + icon. Card & teks biarkan seperti default
       (sudah kontras). Hasil: tampilan terang dengan brand ungu/emas.
     - black           = SKEMA GELAP  -> card digelapkan + teks dibuat terang.

   default tidak pernah tersentuh.
   ========================================================================= */
/* Background halaman — semua tema (tint ringan untuk terang, gelap untuk black) */
body[data-theme="black"] {
  background-color: var(--th-bg) !important;
}
/* Elite, Galaxy, Black: video background — matikan image agar tidak overlap */
body[data-theme="black"] .top-offset:not(#capture),
body[data-theme="black"] .gradient-purple {
  background-image: none !important;
  background-color: transparent !important;
}
body[data-theme="black"] .elite-video-bg,
body[data-theme="black"] #elite-bg-video {
  display: block !important;
}
/* Coin detail video background — covers the WHOLE panel (behind header too),
   non-default themes only. Default keeps display:none (rule above). */
body[data-theme="black"] #coin-details .theme-light {
  position: relative;
  z-index: 0; /* stacking context so the z-index:-1 video sits above the panel bg */
}
/* Coin detail cards -> 30% opacity so the video shows through (non-default themes) */
body[data-theme="black"] #coin-setting .bg-theme {
  background-color: rgba(19, 19, 19, 0.30) !important; /* Card/Table BG @30% */
}
/* ---- BLACK: skema gelap ----
   Kontras teks & card ditangani oleh mode gelap bawaan template:
   applyTheme() menambah class `theme-dark` saat type=black, jadi semua aturan
   `.theme-dark ...` di style.css aktif (teks terang, card gelap, dll.).
   Di sini cukup tint warna agar pas navy + cyan, tanpa override teks yang
   berisiko menimpa teks berwarna (mis. hijau/merah). */
body[data-theme="black"].theme-dark {
  background-color: var(--th-bg) !important;
}
body[data-theme="black"] .bg-theme {
  background-color: var(--th-surface) !important;
}
body[data-theme="black"] .card {
  border-color: var(--th-border) !important;
  box-shadow: var(--th-shadow) !important;
}
/* --- Aksen: menimpa sistem 'highlight' bawaan template (SEMUA tema) --- */
body[data-theme="black"]  .color-highlight {
  color: var(--th-accent) !important;
}
body[data-theme="black"]  .bg-highlight {
  background-color: var(--th-accent) !important;
}
body[data-theme="black"]  .border-highlight {
  border-color: var(--th-accent) !important;
}
body[data-theme="black"]  .gradient-highlight {
  background-image: var(--th-accent-grad) !important;
}
/* Footer-bar nav aktif (mengikuti pola styles/highlights/*.css) */
body[data-theme="black"]  .footer-bar-1 .active-nav i,
body[data-theme="black"]  .footer-bar-1 .active-nav span {
  background: var(--th-accent-grad) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
}
/* =========================================================================
   6) ICON & LOGO — bikin icon ikut tema
   -------------------------------------------------------------------------
   Dua kategori icon di app ini:
   (a) Icon gambar mono PNG  -> quick-action di Home (<span class="icon"><img>>),
       logo brand, dsb.  Direcolor pakai filter var(--th-icon-filter).
   (b) Font-icon (bootstrap-icons .bi-*, fontawesome .fa-*) -> nav, header,
       chevron, dll.  Diwarnai via color/fill var(--th-accent).
   default tidak pernah tersentuh (selector pakai [data-theme="non-default"]).
   ========================================================================= */
/* ---- (a) Icon gambar mono: quick-action Home + .theme-icon + logo brand ---- */
body[data-theme="black"]  .icon > img,
body[data-theme="black"]  .icon-highlight img,
body[data-theme="black"]  .theme-icon {
  filter: var(--th-icon-filter);
}
/* Orbit themed icons sudah berwarna — batalkan filter agar tidak di-tint ulang.
   .orbit-icon ditambahkan via Vue :class binding saat themeIcon() aktif.
   Juga batalkan filter untuk gambar yang di-load dari folder theme-engine. */
body[data-theme="black"]  .orbit-icon,
body[data-theme="black"]  img[src*="theme-engine/assets/orbit-"] {
  filter: none !important;
}
/* Icon yang ditukar lewat `content: url(...)` tetap memakai src aslinya di
   atribut, jadi tidak kena selector orbit- di atas. Tanpa pengecualian ini
   `.icon > img` men-tint ulang aset tema yang sudah berwarna — Moon Logic di
   Sekumpulan Pengaturan jadi siluet emas polos tanpa detail. */
body[data-theme="black"]  img[src*="moon-logic-icon"],
body[data-theme="black"]  img[src*="moon-logic.png"] {
  filter: none !important;
}
/* CSS explicit asset assignment for menu quick action icons in Black theme */
body[data-theme="black"] #quick-action-api,
body[data-theme="black"] .quick-action-api {
  content: url("../../assets/orbit-black/api-configuration.png") !important;
  filter: none !important;
}
body[data-theme="black"] #quick-action-credit {
  content: url("../../assets/orbit-black/credit.png") !important;
  filter: none !important;
}
body[data-theme="black"] #quick-action-profit {
  content: url("../../assets/orbit-black/profit.png") !important;
  filter: none !important;
}
body[data-theme="black"] #quick-action-faq {
  content: url("../../assets/orbit-black/faq.png") !important;
  filter: none !important;
}
body[data-theme="black"] #quick-action-saving {
  content: url("../../assets/orbit-black/saving.png") !important;
  filter: none !important;
}
body[data-theme="black"] #quick-action-bonus {
  content: url("../../assets/orbit-black/cashback.png") !important;
  filter: none !important;
}
body[data-theme="black"] #quick-action-strategy {
  content: url("../../assets/orbit-black/moonbot-rocket.png") !important;
  filter: none !important;
}
body[data-theme="black"] #quick-action-fee,
body[data-theme="black"] #quick-action-fee2 {
  content: url("../../assets/orbit-black/bnb-fee.png") !important;
  filter: none !important;
}
/* Border for sort-content */
body[data-theme="black"] .sort-trade-header {
  border-top: 1px solid #1b1b1b !important;
  border-bottom: 1px solid #1b1b1b !important;

}
/* Sorting bar (Trade): transparan saat di atas, gelap saat list di-scroll */
body[data-theme="black"] #sorting-bar {
  background: transparent !important;
  transition: background-color 0.25s ease;
}
body[data-theme="black"] #sorting-bar.header-scrolled {
  background: rgba(19, 19, 19, 0.9) !important;
}
/* List koin (Trade) jadi scroll container sendiri — halaman tidak ikut scroll.
   Offset bar pakai MARGIN (bukan padding) supaya baris terpotong di batas
   container dan tidak terlihat menembus di belakang bar yang transparan. */
body[data-theme="black"] #trade-page .bg-binance-tick {
  /* 135px bar atas + 100px footer bar (fixed). Container berhenti TEPAT di
     atas footer, bukan di dasar viewport — dulu sisanya ditutup
     padding-bottom:100px sehingga masih ada 100px kosong yang bisa di-scroll
     setelah item terakhir. padding-bottom dibiarkan 0 tanpa !important supaya
     BatchSetting() masih bisa set 175px lewat inline style. */
  height: calc(100vh - 235px);
  margin-top: 135px;
  padding-top: 0 !important;
  padding-bottom: 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  box-sizing: border-box;
}
/* Wrapper dikunci setinggi viewport: .footer-clear (padding-bottom 100px) +
   min-height:100vh bikin halaman masih ikut ter-scroll ~100px. Satu-satunya
   yang boleh scroll adalah .bg-binance-tick. */
body[data-theme="black"] #trade-page .page-content {
  min-height: 0 !important;
  height: 100vh !important;
  padding-bottom: 0 !important;
  overflow: hidden !important;
}
body[data-theme="black"] #trade-page {
  overflow: hidden !important;
}
/* Teks status "Inactive" pada kartu koin (dot merah #d5465b) -> text secondary.
   Status "Active" (dot hijau) dibiarkan. Match hex DAN serialisasi rgb() Vue. */
body[data-theme="black"] .coin-status:has(> .coin-status-dot[style*="#d5465b"]) .font-11,
body[data-theme="black"] .coin-status:has(> .coin-status-dot[style*="213, 70, 91"]) .font-11 {
  color: var(--th-text-muted) !important;
}
/* Swap aset logo bertema bila sudah tersedia (default --th-logo:none = aman,
   <img> asli dibiarkan). Taruh aset di theme-engine/assets/icons/<tema>/logo.webp
   lalu set --th-logo di token tema, dan matikan filter di atas untuk .brand-logo. */
/* ---- (b) Font-icon (bi-*, fa-*): nav, header, menu/list ---- */
/* Nav bawah (Home, Trade, dll.): non-aktif = muted, aktif = aksen. */
body[data-theme="black"]  #footer-bar a i,
body[data-theme="black"]  #footer-bar a span {
  color: rgba(255, 255, 255, 0.75) !important;
}
body[data-theme="black"]  #footer-bar .active-nav i,
body[data-theme="black"]  #footer-bar .active-nav span {
  background: var(--th-accent-grad) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
}
/* Nav bawah: icon Home & Trade -> aset tema (orbit-black/home.png & trade.png),
   menggantikan glyph bootstrap-icons yang digambar di ::before */
body[data-theme="black"]  #footer-bar .bi-house-fill::before,
body[data-theme="black"]  #footer-bar .bi-graph-up::before {
  content: "" !important;
  display: inline-block;
  width: 20px;
  height: 20px;
  background: url("../../assets/orbit-black/home.png") center / contain no-repeat;
  vertical-align: middle;
}
body[data-theme="black"]  #footer-bar .bi-graph-up::before {
  background-image: url("../../assets/orbit-black/trade.png");
}
/* Non-aktif diredupkan supaya state aktif/non-aktif tetap terbaca */
body[data-theme="black"]  #footer-bar a:not(.active-nav) .bi-house-fill::before,
body[data-theme="black"]  #footer-bar a:not(.active-nav) .bi-graph-up::before {
  filter: grayscale(1) brightness(1.3);
  opacity: 0.75;
}
/* Floating Certificates Black — markup bawaan pakai warna terang + badge
   .text-bg-danger; disamakan dengan pola tema Elite tapi memakai token emas. */
body[data-theme="black"] .floating-certificates {
  background-color: var(--th-surface) !important;
  border: 1px solid var(--th-border) !important;
  /* drop shadow + inner glow emas, pola sama dengan kartu tema black */
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.6),
              var(--th-shadow),
              inset 0 0 12px 2px rgba(0, 0, 0, 0.35),
              inset 0 0 10px rgba(241, 202, 118, 0.25) !important;
}
body[data-theme="black"] .floating-certificates .my-floating-certificates {
  color: var(--th-text) !important;
}
body[data-theme="black"] .floating-certificates .badge.text-bg-danger {
  background: var(--th-border-gold-grad) !important;
  color: #131313 !important;
}
/* Tombol close (X) dibiarkan: background putihnya ditulis inline dengan
   !important di markup, jadi tak bisa ditimpa dari CSS — kalau ikon-nya saja
   yang diterangkan, hasilnya abu-abu di atas putih (tidak terbaca). */
/* Panah collapse daftar sertifikat (#legal-modal) — inline color:black +
   text-stroke hitam tak terbaca di modal gelap; samakan dengan icon gradient */
body[data-theme="black"]  #legal-modal .toggle-arrow {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  -webkit-text-stroke: 0 !important;
  display: inline-block;
}
/* Icon header (gear/help/refresh/bell) ikut warna teks tema biar terbaca. */
body[data-theme="black"]  .header i {
  color: var(--th-text) !important;
}
/* Icon menu/list/settings & icon ber-aksen eksplisit -> warna aksen tema.
   :not(...) menjaga icon STATUS (hijau/merah/kuning) tetap apa adanya. */
body[data-theme="black"]  .menu i,
body[data-theme="black"]  .list-group i,
body[data-theme="black"]  .theme-icon i,
body[data-theme="black"]  .color-highlight i {
  color: var(--th-accent) !important;
}
/* Pengaman: jangan ubah icon status berwarna (sukses/gagal/peringatan). */
body[data-theme="black"]  .text-success,
body[data-theme="black"]  .text-danger,
body[data-theme="black"]  .text-warning,
body[data-theme="black"]  .color-green,
body[data-theme="black"]  .color-red,
body[data-theme="black"]  .color-yellow {
  filter: none !important;
}
/* Navigation menu themes support */
body[data-theme="black"] .nav-container {
  background-color: var(--th-surface-2) !important;
  border-left: 1px solid rgba(254, 249, 162, 0.85) !important;
  box-shadow: -2px 0 12px rgba(254, 249, 162, 0.25),
              inset 1px 0 10px -4px rgba(254, 249, 162, 0.35) !important;
}
body[data-theme="black"] .nav a {
  color: var(--th-text) !important;
}
/* border-offset (background di bawah header) -> ikut tema, bukan putih hardcoded */
body[data-theme="black"] .border-offset {
  background-color: transparent !important;
}
/* "Isi Ulang Sekarang" — default hijau gelap (#006400, inline); di tema gelap
   dibuat lebih terang agar terbaca. */
body[data-theme="black"] .recharge-now-link {
  color: #D4B26F !important;
  font-weight: 700 !important;
  /* Outline gelap agar terbaca di atas background galaksi keemasan */
  text-shadow:
    -1px -1px 0 #000,
    1px -1px 0 #000,
    -1px 1px 0 #000,
    1px 1px 0 #000,
    0 0 4px rgba(0, 0, 0, 0.8) !important;
}
/* Dropdown exchange selector (.select_wrap) — sesuaikan dengan background & border tema */
body[data-theme="black"] .select_wrap .default_option {
  background-color: var(--th-surface) !important;
  border: 0.5px solid var(--th-border) !important;
  color: var(--th-text) !important;
}
body[data-theme="black"] .select_wrap .default_option p {
  color: var(--th-text) !important;
}
body[data-theme="black"] .select_wrap .default_option::before {
  border-color: transparent transparent var(--th-text) var(--th-text) !important;
}
body[data-theme="black"] .select_wrap .select_ul {
  background-color: var(--th-surface) !important;
  border: 0.5px solid var(--th-border) !important;
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.6) !important;
  overflow: hidden !important;
}
body[data-theme="black"] .select_wrap .select_ul li {
  background-color: transparent !important;
  color: var(--th-text) !important;
}
body[data-theme="black"] .select_wrap .select_ul li p {
  color: var(--th-text) !important;
}
body[data-theme="black"] .select_wrap .select_ul li:hover {
  background-color: var(--th-surface-2) !important;
}

/* =========================================================================
   7) BALANCE CARD — kartu USDT + Coin Asset + Trading Volume
   ========================================================================= */
/* Background card — isi kartu SEMI-TRANSPARAN supaya latar/video emas di
   belakangnya ikut kelihatan, dengan border emas beranimasi berputar.

   CATATAN TEKNIK: cara lama (dua layer background-image + `background-clip:
   padding-box, border-box`) TIDAK bisa dipakai di sini. Layer conic-gradient
   tetap dilukis di seluruh border-box — termasuk di bawah area isi — jadi
   trik itu hanya menghasilkan "border" selama layer isinya OPAQUE. Begitu
   alphanya diturunkan, yang muncul justru semburat conic-nya, bukan latar
   halaman. Karena itu border sekarang digambar di ::before pakai mask
   (ring dilubangi tengahnya), dan background kartu jadi warna datar ber-alpha.
   Sudut gradient digerakkan variabel --glow-angle (@property + @keyframes
   spin-border-pulse ada di theme.css root, dipakai bersama semua tema).
   Urutan stop dibuat simetris (terang -> mid -> gelap -> mid -> terang) supaya
   putarannya menyambung tanpa "jump" saat kembali ke 0deg. */
body[data-theme="black"]  .balance-card,
body[data-theme="black"]  .profile-info-card {
  position: relative !important;
  background-color: var(--th-surface-glass) !important;
  background-image: none !important;
  border: 0 !important;
  border-radius: 16px !important;
  box-shadow: none !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  filter: drop-shadow(0 0 12px rgba(241, 202, 118, 0.35));
}
/* Kartu info profil: isian GELAP SOLID, bukan glass.
   Bedanya dengan balance card — kartu ini isinya baris teks rapat (label +
   nilai + divider), dan `--th-surface-glass` (alpha 0.62) membuat apa pun yang
   lewat di belakangnya ikut terbaca. Di HP latarnya kebetulan gelap sehingga
   terlihat hitam, tapi di desktop lapisan video/latar yang terang menembus dan
   kartunya berubah jadi abu-abu pudar. Karena itu di sini dipatok opaque dan
   backdrop-blur-nya dimatikan (tidak ada gunanya di atas isian solid).
   Tanpa inset shadow: permukaannya rata, cukup cincin emas ::before + glow
   luar. Perlakuan mobile (cincin dibekukan, drop-shadow -> box-shadow, lihat
   blok @media max-width: 768px di akhir berkas) sekarang dipakai di SEMUA
   lebar supaya tampilannya seragam. */
body[data-theme="black"] .profile-info-card {
  background-color: var(--th-surface) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  filter: none !important;
  box-shadow: 0 0 12px rgba(241, 202, 118, 0.35) !important;
}
body[data-theme="black"]  .balance-card::before,
body[data-theme="black"]  .profile-info-card::before {
  content: "" !important;
  position: absolute !important;
  inset: 0 !important;
  border-radius: 16px !important;
  padding: 1px !important;               /* = tebal border emas */
  background: conic-gradient(
      from var(--glow-angle, 0deg),
      #FEF9A2 0%,
      #DBB14E 25%,
      rgba(19, 19, 19, 0.1) 50%,
      #DBB14E 75%,
      #FEF9A2 100%
    ) !important;
  /* Lubangi bagian tengah: sisakan cincin selebar `padding` saja. */
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0) !important;
  mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0) !important;
  -webkit-mask-composite: xor !important;
  mask-composite: exclude !important;
  pointer-events: none !important;
  z-index: 1 !important;
  animation: spin-border-pulse 4s linear infinite !important;
}
/* Cincin emas kartu profil dibekukan di semua lebar — lihat catatan di blok
   `.profile-info-card` di atas. Harus DI SINI (sesudah blok ::before asli):
   spesifisitasnya sama, jadi yang menang adalah yang belakangan. */
body[data-theme="black"] .profile-info-card::before {
  animation: none !important;
  --glow-angle: 45deg;
}
/* Style for the dedicated shadow/glow element inside the balance card */
body[data-theme="black"] .balance-card-glow {
  position: absolute !important;
  top: 1px !important;
  left: 1px !important;
  right: 1px !important;
  bottom: 1px !important;
  border-radius: 15px !important;
  box-shadow: inset 0 0 15px 2px rgba(0, 0, 0, 0.3),
              inset 0 0 12px rgba(241, 202, 118, 0.25) !important;
  pointer-events: none !important;
  display: block !important;
  background: transparent !important;
  z-index: 2 !important;
}
/* .wallet-balance base style (style.css) punya background putih translucent
   (rgba(255,255,255,.34)) buat tema default terang — bikin kotak abu-abu di
   atas kartu hitam. */
body[data-theme="black"]  .balance-card .wallet-balance {
  background-color: transparent !important;
}
/* Teks nilai utama (h4) — Text Putih Netral */
body[data-theme="black"]  .balance-card h4 {
  color: var(--th-text-white) !important;
  font-size: 20px !important;
  font-weight: 700 !important;
}
/* Label (h6 USDT, Aset Koin) — Text Sekunder */
body[data-theme="black"]  .balance-card h6 {
  color: #D4B26F !important;
  opacity: 1 !important;
  font-weight: 500 !important;
}
/* Icon info/question bulat -> emas (lingkaran emas, huruf i / ? tembus) */
body[data-theme="black"] .bi-info-circle-fill,
body[data-theme="black"] .bi-question-circle-fill {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: #ffffff !important;
  border-radius: 50% !important;
  width: 14px !important;
  height: 14px !important;
  padding: 0 !important;
  margin-left: 5px !important;
  vertical-align: middle !important;
  /* `vertical-align` cuma berlaku untuk kotak inline. Sebagian ikon ini
     tinggal di dalam wadah `d-flex` (mis. #credit-saldo), dan di situ ikonnya
     jadi FLEX ITEM — `vertical-align` diabaikan total, lalu `align-items:
     stretch` bawaan bertemu `height: 14px` yang dipatok di atas sehingga
     ikonnya menempel ke tepi ATAS. Itu sebabnya sebagian ikon hint terlihat
     condong ke atas sementara sebagian lain (yang wadahnya bukan flex, atau
     yang sudah memakai kelas `align-self-center`) terlihat normal.
     `align-self` menutup celah itu dan tidak berefek apa-apa saat ikonnya
     memang bukan flex item. */
  align-self: center !important;
}
body[data-theme="black"] .bi-info-circle-fill::before,
body[data-theme="black"] .bi-question-circle-fill::before {
  display: block !important;
  background: linear-gradient(180deg, #FAD66C 0%, #B3861B 20%, #5E430B 55%, #1F1401 100%) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  font-size: 14px !important;
  line-height: 1 !important;
}
/* KECUALI icon (?) di header halaman (asset/profit/saving/bonus/balancing):
   di situ dia berdampingan dengan icon refresh, jadi ikut perlakuan warna yang
   sama (gradient putih -> emas) supaya sebaris dan tidak jadi bulatan putih. */
body[data-theme="black"] .page-title .bi-question-circle-fill,
body[data-theme="black"] .page-title .bi-info-circle-fill {
  display: inline-block !important;
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  border-radius: 0 !important;
  width: auto !important;
  height: auto !important;
  margin-left: 0 !important;
}
body[data-theme="black"] .page-title .bi-question-circle-fill::before,
body[data-theme="black"] .page-title .bi-info-circle-fill::before {
  display: inline !important;
  background: none !important;
  -webkit-text-fill-color: inherit !important;
  font-size: inherit !important;
  line-height: inherit !important;
}
/* Di baris ikon header (`.page-title .flex.flex-row`), (?) berdampingan dengan
   ROI / gear / download / refresh yang semuanya sudah dinormalkan jadi kotak
   glyph setinggi font-size (styles/style.css, blok "BARIS IKON DI KANAN
   HEADER"). `display: inline-block` di rule atas membuat (?) kembali memakai
   kotak inline + `vertical-align: middle` sehingga duduk ~1.5px lebih rendah
   dari tetangganya. Khusus di baris itu dia ikut jadi block; gradasi
   `background-clip: text`-nya tidak terpengaruh. */
body[data-theme="black"] .page-title .flex.flex-row .bi-question-circle-fill,
body[data-theme="black"] .page-title .flex.flex-row .bi-info-circle-fill {
  display: block !important;
  line-height: 1 !important;
}
/* Icon copy (clipboard) — inline style="color: black" (mis. tombol copy
   alamat withdrawal) jadi ilang di atas surface gelap. */
body[data-theme="black"]  .bi-clipboard {
  color: var(--th-text) !important;
}
/* Input ".key" (WD address, IP list, dll) — background hitam solid, khusus
   tema elite (sama kayak treatment yang dipakai sebelumnya). Border cuma
   ditaruh di INPUT-nya, div wrapper ".key" di-reset polos biar gak dobel
   kotak (kalau wrapper-nya juga .key). */
body[data-theme="black"]  input.key,
body[data-theme="black"]  .key input,
body[data-theme="black"]  .key input:focus,
body[data-theme="black"]  input.key:focus,
body[data-theme="black"]  #copy_wd_address,
body[data-theme="black"]  #otp-address {
  background-color: #000000 !important;
  background: #000000 !important;
  border: 0.5px solid var(--th-border) !important;
  border-color: var(--th-border) !important;
  color: var(--th-text) !important;
}
body[data-theme="black"]  div.key,
body[data-theme="black"]  .form-custom:has(#otp-address) {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}
/* Teks Trading Volume row — Text Muted */
body[data-theme="black"]  .balance-card .font-12,
body[data-theme="black"]  .balance-card .font-13,
body[data-theme="black"]  .balance-card .color-theme {
  color: #D4B26F !important;
}
body[data-theme="black"] .bi-chevron-right,
body[data-theme="black"] .bi-chevron-double-right {
  background: linear-gradient(180deg, #FFF0AA 0%, #D1A13B 50%, #8A6421 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block !important;
  opacity: 1 !important;
}
/* Style for the refresh button to color it cyan/teal and position it cleanly */
body[data-theme="black"] .balance-card .refreshBtn-home {
  width: 16px !important;
  height: 16px !important;
  margin-left: 6px !important;
  vertical-align: middle !important;
  display: inline-block !important;
}
/* HR pemisah horizontal — base style.css bikin hr ini pakai background-image
   gradient HITAM (hr.horizontal.dark.full) + class .opacity-10, jadi kalau
   cuma di-set border-color hasilnya tetap tak terlihat di atas kartu hitam.
   Digambar ulang sebagai garis emas. */
body[data-theme="black"]  .balance-card hr {
  height: 1px !important;
  border: 0 !important;
  opacity: 1 !important;
  background-color: transparent !important;
  background-image: linear-gradient(
    90deg,
    rgba(212, 178, 111, 0.08),
    rgba(212, 178, 111, 0.55) 15%,
    rgba(212, 178, 111, 0.55) 85%,
    rgba(212, 178, 111, 0.08)
  ) !important;
}
/* Pemisah vertikal USDT | Aset Koin — markup-nya TIDAK punya class .v-divider,
   cuma <div class="ms-4 me-3" style="background-color:#1f1f1f; opacity:.14">
   polos sebagai sibling .wallet-balance. Target lewat posisi. */
body[data-theme="black"]  .balance-card .content > div:not(.wallet-balance) {
  background-color: rgba(255, 255, 255, 0.3) !important;
  opacity: 1 !important;
  width: 1px !important;
}
/* =========================================================================
   8) PROFILE INFO CARD — Telepon, Tingkat Bintang, Alamat Penarikan, Voucher Plan
   ========================================================================= */
/* Latar & border kartu ini TIDAK diatur di sini lagi — dia ikut blok
   `.balance-card` di bagian 7 supaya isian semi-transparan + cincin emas
   berputarnya identik. Rule lama (`--th-surface` opaque + border solid)
   dihapus karena akan membatalkan transparansinya. */
/* Label kiri (h5.font-13): abu-abu --th-text-muted */
/* Label kiri (Telepon, Tingkat Bintang, Alamat Penarikan, Voucher Plan, ...)
   dulu dipasang `--th-text-muted` sehingga terbaca abu-abu redup, padahal
   label itu justru penunjuk barisnya. Disamakan dengan tema acuan: label
   terang, dan yang justru diredupkan adalah baris "Berakhir pada" di bawah. */
body[data-theme="black"]  .profile-info-card h5 {
  color: var(--th-text) !important;
}
/* Nilai kanan (h4): teks terang (kecuali teks status hijau) */
body[data-theme="black"]  .profile-info-card h4:not(.color-soft-green):not(.color-green):not(.text-success) {
  color: var(--th-text) !important;
  opacity: 1 !important;
}
body[data-theme="black"]  .profile-info-card h4 span {
  opacity: 1 !important;
}
/* Baris "Berakhir pada: Lifetime" adalah keterangan tambahan, bukan nilai
   utama — di markup-nya memang sudah `opacity-50`, tapi aturan h4 di atas
   memaksa `opacity: 1` sehingga jadi seterang nomor telepon di atasnya.
   Barisnya dikenali lewat `#expiration_time`; `:has()` dipakai karena
   keterangan ini berbagi kelas persis dengan baris nomor telepon
   (`h4.pt-1.font-12.font-600.opacity-50`) sehingga tidak bisa dibedakan
   dengan pemilih biasa. */
body[data-theme="black"] .profile-info-card h4:has(#expiration_time),
body[data-theme="black"] .profile-info-card h4:has(#expiration_time) span {
  color: var(--th-text-secondary) !important;
  opacity: 1 !important;
}
/* Divider pemisah antar baris */
body[data-theme="black"]  .profile-info-card .divider {
  background-color: var(--th-border) !important;
  opacity: 1 !important;
}
/* "Verified" text dan teks nilai kanan lainnya (color-black) */
body[data-theme="black"]  .profile-info-card .color-black {
  color: var(--th-text) !important;
}
/* Fix inline color: black for dark themes in Profit Page */
body[data-theme="black"] .profit-top-card [style*="color: black"],
body[data-theme="black"] .profit-list-card [style*="color: black"] {
  color: var(--th-text) !important;
}
/* Fix backgrounds for black & galaxy themes.
   Permukaan kartu memakai `--th-surface-glass` (bukan `--th-surface` yang
   opaque) supaya latar/video di belakangnya ikut tembus, seragam dengan
   balance card & kartu global. */
body[data-theme="black"] .profit-top-card,
body[data-theme="black"] .profit-list-card {
  background-color: var(--th-surface-glass) !important;
  border: 0.5px solid var(--th-border) !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
}
body[data-theme="black"] .profit-list-card {
  margin: 0 !important;
}
/* Baris di DALAM kartu list dibuat bening total — kalau ikut diberi glass,
   transparansinya bertumpuk dua kali dengan kartu pembungkusnya. */
body[data-theme="black"] .profit-list-card .bg-theme {
  background-color: transparent !important;
}
body[data-theme="black"] .profit-summary-row {
  background-color: var(--th-surface-glass) !important;
  border: 0.5px solid var(--th-border) !important;
}
/* =========================================================================
   6) TRADE PAGE HEADER STYLES (Elite, Galaxy, Black)
   ========================================================================= */
/* Strip search + sort di halaman Trade duduk langsung di atas video latar, dan
   bagian video yang lewat di belakangnya bisa terang (lengkung galaksi
   keemasan) sehingga teks & tombolnya nyaru. Yang diberi isian gelap hanya
   kontrolnya sendiri (kotak search + tombol sort), bukan panel selebar strip,
   supaya video latar tetap terlihat penuh di sekitarnya. */
body[data-theme="black"] .top-sort {
  position: relative !important;
  z-index: 1 !important;
  background: transparent !important;
}
/* Tanpa selubung/panel di belakang strip: kontrasnya diambil dari isian gelap
   pada kontrol-nya sendiri (kotak search & tombol sort di bawah), supaya video
   latar tetap terlihat penuh di sekitarnya. */
body[data-theme="black"] .top-sort .searchBar-container:not(.sort-content-tabel) {
  background: transparent !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
/* Search Bar Container */
body[data-theme="black"] .searchBar-content {
  background-color: rgba(0, 0, 0, 0.55) !important;
  border: 0.5px solid var(--th-border) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  box-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.7) !important;
  border-radius: 0.5rem !important;
}
/* Search Bar Input & Icons */
body[data-theme="black"] .searchBar-content .searchBar,
body[data-theme="black"] #filter_coin {
  background-color: transparent !important;
  color: var(--th-text) !important;
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
  -webkit-appearance: none !important;
}
/* Reset / Cancel Button inside Search Bar */
body[data-theme="black"] .searchBar-content .cancelBtn,
body[data-theme="black"] .searchBar-content .cancelSearch {
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
  padding: 0 10px !important;
  margin: 0 !important;
  height: 100% !important;
  display: flex !important;
  align-items: center !important;
  color: var(--th-border-solid, #F1CA76) !important;
  font-weight: 600 !important;
  font-size: 14px !important;
  -webkit-appearance: none !important;
}
body[data-theme="black"] .searchBar-content .cancelSearch:hover {
  color: var(--th-border-gold-1, #FEF9A2) !important;
}
body[data-theme="black"] .searchBar-content .searchBar::placeholder {
  color: var(--th-text-hint, var(--th-text-muted)) !important;
}
body[data-theme="black"] .searchBar-content i {
  color: var(--th-text) !important;
  background-color: transparent !important;
}
/* Search / sort bar (halaman Trade) — agak transparan + blur supaya background
   tembus, bukan panel #131313 rata. `.bg-theme` ikut disebut karena rule
   .bg-theme memasang var(--th-surface) yang opak. */
body[data-theme="black"] .searchBar-container,
body[data-theme="black"] .searchBar-container.bg-theme {
  background-color: var(--th-surface-glass) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  backdrop-filter: blur(8px) !important;
  /* Bawaannya `px-0`, jadi label kolom nempel ke tepi panel. Diberi napas
     sedikit; 6px dipilih supaya tetap sejajar dengan baris list di bawahnya
     yang pakai `ps-1` (4px). */
  padding-left: 6px !important;
  padding-right: 6px !important;
}
/* Label kolom (Tanggal / Keuntungan (USDT) / dst) memakai `opacity-40` bawaan
   — di atas panel gelap tema black itu nyaris tak terbaca. */
body[data-theme="black"] .searchBar-container p.color-theme {
  opacity: 0.7 !important;
}

/* Sort Buttons Overrides — tombol TIDAK aktif.
   Catatan: inline style tombol aktif diserialisasi Vue jadi
   `rgb(146, 75, 225)`, BUKAN `#924be1`, jadi :not([style*="924be1"]) saja
   tidak mengecualikannya (tombol aktif jadi ikut transparan / hilang
   highlight-nya). Kedua bentuk penulisan harus dicocokkan. */
body[data-theme="black"] .sort-content button:not([style*="924be1"]):not([style*="rgb(146, 75, 225)"]),
body[data-theme="black"] .sort-content > div[style*="0.04"] {
  /* Isian hitam semi-transparan, bukan transparan penuh: bagian video yang
     terang di belakang strip ini membuat label tombol nyaru kalau tanpa isian. */
  background-color: rgba(0, 0, 0, 0.55) !important;
  color: var(--th-text) !important;
  border: 1px solid var(--th-border) !important;
}
/* Sort Buttons Icons */
body[data-theme="black"] .sort-content button:not([style*="924be1"]):not([style*="rgb(146, 75, 225)"]) i,
body[data-theme="black"] .sort-content > div i {
  color: var(--th-text-muted) !important;
}
/* Tombol sort AKTIF -> emas (inline-nya ungu #924be1 / rgb(146, 75, 225)) */
body[data-theme="black"] .sort-content button[style*="924be1"],
body[data-theme="black"] .sort-content button[style*="rgb(146, 75, 225)"] {
  background: var(--th-accent-grad) !important;
  color: #131313 !important;
  border: 1px solid var(--th-accent) !important;
  box-shadow: var(--th-btn-primary-shadow) !important;
}
body[data-theme="black"] .sort-content button[style*="924be1"] i,
body[data-theme="black"] .sort-content button[style*="rgb(146, 75, 225)"] i {
  color: #131313 !important;
}
/* Binance Text Override */
body[data-theme="black"] .sort-content > div p {
  color: var(--th-text) !important;
}
/* Fix Offcanvas / Drawer backgrounds for dark themes */
body[data-theme="black"] .offcanvas {
  background-color: var(--th-bg) !important;
}
body[data-theme="black"] #trade-footer-bar {
  position: relative !important;
  background: linear-gradient(180deg, #0d0b08, #1a140a, #0d0b08) !important;
  border: none !important;
  box-shadow: none !important;
}
body[data-theme="black"] #trade-footer-bar::before,
body[data-theme="black"] #trade-footer-bar::after {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  height: 1px !important;
  background: linear-gradient(90deg, 
    #4A3A0A 0%, #7A5C10 8%, #B8860B 14%,
    #FEF9A2 20%, #FBEA9D 26%, #DBB14E 34%,
    #B8860B 48%, #7A5C10 65%, #3D2E08 100%) !important;
  z-index: 2 !important;
}
body[data-theme="black"] #trade-footer-bar::before {
  top: 0 !important;
}
body[data-theme="black"] #trade-footer-bar::after {
  bottom: 0 !important;
}
body[data-theme="black"] #trade-footer-bar,
body[data-theme="black"] #trade-footer-bar i,
body[data-theme="black"] #trade-footer-bar div,
body[data-theme="black"] #trade-footer-bar span {
  color: var(--th-border-solid, #F1CA76) !important;
}
body[data-theme="black"] .searchBar-container.bg-theme.sort-content-tabel,
body[data-theme="black"] .sort-content-tabel {
  height: 30px !important;
  padding: 3px 0px 6px 0px !important;
  border: 0.5px solid var(--th-border-solid, #F1CA76) !important;
  border-bottom: 0.5px solid rgba(241, 202, 118, 0.4) !important;
  border-top-left-radius: 8px !important;
  border-top-right-radius: 8px !important;
  max-width: 400px !important;
  margin: 0 auto !important;
  box-shadow: 
    0 -3px 10px rgba(241, 202, 118, 0.4),
    -3px 0 10px rgba(241, 202, 118, 0.3),
    3px 0 10px rgba(241, 202, 118, 0.3),
    0 4px 8px rgba(241, 202, 118, 0.3),
    inset 0 10px 10px -10px var(--th-border-solid, #F1CA76),
    inset 0 -10px 10px -10px var(--th-border-solid, #F1CA76) !important;
  background-color: #000000 !important;
}
body[data-theme="black"] .sort-content-tabel p,
body[data-theme="black"] .sort-content-tabel .color-theme {
  color: #FFF4C2 !important;
  opacity: 0.9 !important;
}
body[data-theme="black"] #trade-page #binanceTicker {
  margin-top: 0 !important;
}
body[data-theme="black"] #trade-page .bg-binance-tick .ticker-card {
  border-left: 0.5px solid var(--th-border-solid, #F1CA76) !important;
  border-right: 0.5px solid var(--th-border-solid, #F1CA76) !important;
  border-bottom: 0.5px solid rgba(241, 202, 118, 0.25) !important;
  border-radius: 0 !important;
  margin-bottom: 0 !important;
  max-width: 400px !important;
  margin: 0 auto !important;
  background-color: #000000 !important;
  box-shadow: -3px 0 10px rgba(241, 202, 118, 0.3), 3px 0 10px rgba(241, 202, 118, 0.3) !important;
}
body[data-theme="black"] #trade-page .bg-binance-tick #binanceTicker > div > *:last-child .ticker-card,
body[data-theme="black"] #trade-page .bg-binance-tick .ticker-card:last-child,
body[data-theme="black"] #trade-page .bg-binance-tick .ticker-card:last-of-type {
  border-bottom: 0.5px solid var(--th-border-solid, #F1CA76) !important;
  border-bottom-left-radius: 8px !important;
  border-bottom-right-radius: 8px !important;
  box-shadow: -3px 0 10px rgba(241, 202, 118, 0.3), 3px 0 10px rgba(241, 202, 118, 0.3), 0 3px 10px rgba(241, 202, 118, 0.4) !important;
}
/* =========================================================
   ELITE THEME: FIX STICKY HEADERS OVERLAPPING CARDS
   ========================================================= */
body[data-theme="black"] .top-header.sticky {
    background: transparent !important;
    background-image: none !important;
    z-index: 99 !important;
    transition: background-color 0.3s ease, background-image 0.3s ease;
}
body[data-theme="black"] .top-header.sticky.header-scrolled {
    background-image: var(--th-header-bg-img) !important;
    background-color: #111111 !important;
    background-size: cover !important;
    background-position: center !important;
}
/* Coin detail header when scrolled: no image, just 80% opacity dark (video shows subtly) */
body[data-theme="black"] #coin-details-header.header-scrolled {
    background-image: none !important;
    background-color: rgba(0, 0, 0, 0.80) !important; /* @80% */
    background-size: auto !important;
}
/* Coin detail header icons -> gradient like the menu (non-default themes) */
/* Back chevron (font icon) */
body[data-theme="black"] #coin-details-header .bi-chevron-left {
    background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    display: inline-block;
}
/* 2. Header Right Action Icons (Refresh, Info, Question, Download, Gear, CSV) */
body[data-theme="black"] .page-title .bi-question-circle-fill,
body[data-theme="black"] .page-title .bi-info-circle-fill,
body[data-theme="black"] .page-title .bi-arrow-repeat,
body[data-theme="black"] .page-title .refreshBtn i,
body[data-theme="black"] .page-title .bi-download,
body[data-theme="black"] .page-title .bi-gear,
body[data-theme="black"] .page-title .bi-gear-fill,
body[data-theme="black"] .page-title .bi-pie-chart-fill,
body[data-theme="black"] #vue-download-csv-asset-credit i,
body[data-theme="black"] #vue-download-csv-asset-credit .bi,
body[data-theme="black"] #vue-download-csv-trasaction i,
body[data-theme="black"] #vue-download-csv-trasaction .bi,
body[data-theme="black"] #button-credit-downloads i,
body[data-theme="black"] #button-credit-downloads .bi,
body[data-theme="black"] button-new-tab-url-icon i,
body[data-theme="black"] button-download i,
body[data-theme="black"] .refreshBtn i,
body[data-theme="black"] a.refresh i,
body[data-theme="black"] .refreshBtn:not(.refreshBtn-home) i {
    background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
    display: inline-block;
    opacity: 1 !important;
}

/* Action icons (PNG): fill the icon shape with the gradient via mask on the <a> wrapper */
body[data-theme="black"] #coin-details-header .justify-end a:has(> img),
body[data-theme="black"] .page-title .justify-end a:has(> img) {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 20px;
    height: 20px;
    background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%);
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
}
body[data-theme="black"] #coin-details-header .justify-end a:has(> img) > img,
body[data-theme="black"] .page-title .justify-end a:has(> img) > img {
    visibility: hidden;
}
body[data-theme="black"] #coin-details-header a:has(> img[src*="graph-icon"]),
body[data-theme="black"] .page-title a:has(> img[src*="graph-icon"]) {
    -webkit-mask-image: url("../../../images/pictures/graph-icon.png");
    mask-image: url("../../../images/pictures/graph-icon.png");
}
body[data-theme="black"] #coin-details-header a:has(> img[src*="profit-summary-icon"]),
body[data-theme="black"] .page-title a:has(> img[src*="profit-summary-icon"]) {
    -webkit-mask-image: url("../../../images/pictures/profit-summary-icon.png");
    mask-image: url("../../../images/pictures/profit-summary-icon.png");
}
body[data-theme="black"] #coin-details-header a:has(> img[src*="transaction-icon"]),
body[data-theme="black"] .page-title a:has(> img[src*="transaction-icon"]) {
    -webkit-mask-image: url("../../../images/pictures/transaction-icon.png");
    mask-image: url("../../../images/pictures/transaction-icon.png");
}
/* Border/glow-nya dulu putih (rgba(255,255,255,.2) + glow putih), jadi kartu
   ini terbaca abu polos di antara kartu lain yang bergaris emas. Disamakan
   dengan treatment kartu standar tema black. */
body[data-theme="black"] #user-asset > .content:first-child,
body[data-theme="black"] #user-profit > .content:first-child {
    background-color: rgba(10, 10, 10, 0.5) !important;
    border: 1px solid var(--th-border-solid, #F1CA76) !important;
    box-shadow: 0 0 12px rgba(241, 202, 118, 0.35) !important;
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
}
body[data-theme="black"] #user-asset > .content:first-child h6,
body[data-theme="black"] #user-asset > .content:first-child i:not(.color-purple),
body[data-theme="black"] #user-asset > .content:first-child [style*="color: black"],
body[data-theme="black"] #user-asset > .content:first-child [style*="color:black"],
body[data-theme="black"] #user-profit > .content h6,
body[data-theme="black"] #user-profit > .content i:not(.color-purple),
body[data-theme="black"] #user-profit > .content [style*="color: black"],
body[data-theme="black"] #user-profit > .content [style*="color:black"] {
    color: #FDFDFE !important;
}
/* Pembungkus luar (.content) untuk withdrawal tidak memiliki border/background agar tidak timbul garis saat collapsed atau double border */
body[data-theme="black"] .content:has(> #div-withdrawal-bonus),
body[data-theme="black"] .content:has(> #div-withdrawal-asset) {
    background: transparent !important;
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
}
body[data-theme="black"] .content:has(> .display-withdrawal-off) {
    display: none !important;
    border: none !important;
    box-shadow: none !important;
    background: transparent !important;
}
/* Card form withdrawal itu sendiri saat terbuka (#div-withdrawal-asset & #div-withdrawal-bonus) */
body[data-theme="black"] #div-withdrawal-asset,
body[data-theme="black"] #div-withdrawal-bonus {
    background-color: rgba(19, 19, 19, 0.85) !important;
    border: 1px solid rgba(241, 202, 118, 0.35) !important;
    box-shadow: inset 0 0 10px rgba(241, 202, 118, 0.3) !important;
    padding: 15px !important;
}
body[data-theme="black"]  #div-withdrawal-asset .input-group,
body[data-theme="black"]  #div-withdrawal-bonus .input-group {
    background-color: var(--th-surface-2) !important;
    border: 1px solid var(--th-border) !important;
    border-radius: 8px !important;
    box-shadow: none !important;
    margin-bottom: 12px !important;
    overflow: hidden;
}
body[data-theme="black"]  #div-withdrawal-asset .input-group-text,
body[data-theme="black"]  #div-withdrawal-bonus .input-group-text {
    background-color: transparent !important;
    border: none !important;
    color: var(--th-text) !important;
}
body[data-theme="black"]  #div-withdrawal-asset .input-group-prepend .input-group-text,
body[data-theme="black"]  #div-withdrawal-bonus .input-group-prepend .input-group-text {
    border-right: 1px solid var(--th-border) !important;
    border-radius: 0 !important;
}
body[data-theme="black"]  #div-withdrawal-asset .input-group-append .input-group-text:not(.btn-uni),
body[data-theme="black"]  #div-withdrawal-bonus .input-group-append .input-group-text:not(.btn-uni) {
    border-left: 1px solid var(--th-border) !important;
    border-radius: 0 !important;
}
body[data-theme="black"]  #div-withdrawal-asset .form-control,
body[data-theme="black"]  #div-withdrawal-bonus .form-control {
    background-color: transparent !important;
    border: none !important;
    color: var(--th-text) !important;
    box-shadow: none !important;
}
body[data-theme="black"]  #div-withdrawal-asset .form-control::placeholder,
body[data-theme="black"]  #div-withdrawal-bonus .form-control::placeholder {
    color: var(--th-text-muted) !important;
}
/* Tombol "Send Code" — border-nya sebelumnya hardcode putih, sekarang ikut
   warna aksen tema (bukan sekadar putih polos). */
body[data-theme="black"]  #div-withdrawal-asset .btn-uni#basic-addon2,
body[data-theme="black"]  #div-withdrawal-bonus .btn-uni#basic-addon2 {
    background: var(--th-accent-grad) !important;
    border: 1px solid var(--th-accent) !important;
    box-shadow: var(--th-btn-primary-shadow) !important;
    color: #ffffff !important;
    border-radius: 6px !important;
    margin: 3px !important;
    padding: 4px 8px !important;
    height: auto !important;
    font-weight: 500 !important;
}
body[data-theme="black"]  #div-withdrawal-asset h5,
body[data-theme="black"]  #div-withdrawal-bonus h5,
body[data-theme="black"]  #div-withdrawal-bonus p.color-gray {
    color: var(--th-text) !important;
}
body[data-theme="black"] .color-purple,
body[data-theme="black"] h5.color-purple,
body[data-theme="black"] p.color-purple,
body[data-theme="black"] span.color-purple,
body[data-theme="black"] #div-withdrawal-asset p.color-purple,
body[data-theme="black"] #div-withdrawal-bonus p.color-purple {
    color: var(--th-accent-2, #F5CD6B) !important;
}
/* =========================================================
   BLACK THEME SPECIFIC OVERRIDES FOR API CONNECT PAGES
   ========================================================= */
/* General text colors & icons */
body[data-theme="black"] #api-connect-page h3.color-theme,
body[data-theme="black"] #api-connect-okx-page h3.color-theme,
body[data-theme="black"] #api-connect-tokocrypto-page h3.color-theme {
    color: white !important;
}
body[data-theme="black"] #api-connect-page .bi-question-circle-fill,
body[data-theme="black"] #api-connect-okx-page .bi-question-circle-fill,
body[data-theme="black"] #api-connect-tokocrypto-page .bi-question-circle-fill {
    color: var(--th-accent, #FFC85B) !important;
}
/* Status text overrides */
body[data-theme="black"] #api-connect-page h3.color-white,
body[data-theme="black"] #api-connect-okx-page h3.color-white,
body[data-theme="black"] #api-connect-tokocrypto-page h3.color-white {
    color: white !important;
}
/* Guidelines body text */
body[data-theme="black"] #api-connect-page i[style*="font-style: normal"],
body[data-theme="black"] #api-connect-okx-page i[style*="font-style: normal"],
body[data-theme="black"] #api-connect-tokocrypto-page i[style*="font-style: normal"] {
    color: var(--th-text-muted, #9B9591) !important;
}
/* Inputs wrapper — Pitch black background with subtle rim inner shadow */
body[data-theme="black"] #api-connect-page .content,
body[data-theme="black"] #api-connect-okx-page .content,
body[data-theme="black"] #api-connect-tokocrypto-page .content {
    background-color: #0b0b0b !important;
    border: 1px solid rgba(241, 202, 118, 0.35) !important;
    box-shadow: inset 0 0 6px rgba(241, 202, 118, 0.25) !important;
    padding-bottom: 16px !important;
}
body[data-theme="black"] #api-connect-page [class*="input-screate-key"],
body[data-theme="black"] #api-connect-okx-page [class*="input-screate-key"],
body[data-theme="black"] #api-connect-tokocrypto-page [class*="input-screate-key"],
body[data-theme="black"] #api-connect-page [class*="input-secret-key"],
body[data-theme="black"] #api-connect-okx-page [class*="input-secret-key"],
body[data-theme="black"] #api-connect-tokocrypto-page [class*="input-secret-key"] {
    margin-bottom: 8px !important;
    padding-bottom: 4px !important;
}
body[data-theme="black"] #api-connect-page .content::before,
body[data-theme="black"] #api-connect-okx-page .content::before,
body[data-theme="black"] #api-connect-tokocrypto-page .content::before {
    display: none !important;
    box-shadow: none !important;
}
/* .content yg cuma bungkus teks "Don't have account? Register now" gak perlu
   glow/card look — kena rule di atas juga soalnya sama-sama ".content" di
   halaman yang sama. Di-reset polos khusus buat yang isinya cuma .key teks. */
body[data-theme="black"] #api-connect-page .content:has(> .key > .color-theme),
body[data-theme="black"] #api-connect-okx-page .content:has(> .key > .color-theme),
body[data-theme="black"] #api-connect-tokocrypto-page .content:has(> .key > .color-theme) {
    background: transparent !important;
    box-shadow: none !important;
    border: none !important;
}
/* The actual text inputs */
body[data-theme="black"] #api-connect-page input.key,
body[data-theme="black"] #api-connect-okx-page input.key,
body[data-theme="black"] #api-connect-tokocrypto-page input.key {
    background: #000000 !important;
    border: 1px solid var(--th-border) !important;
    color: var(--th-text) !important;
    border-radius: 8px !important;
    padding: 0 10px !important;
    box-shadow: none !important;
}
/* Input Placeholder */
body[data-theme="black"] #api-connect-page input.key::placeholder,
body[data-theme="black"] #api-connect-okx-page input.key::placeholder,
body[data-theme="black"] #api-connect-tokocrypto-page input.key::placeholder {
    color: var(--th-text-hint, rgba(255, 255, 255, 0.3)) !important;
}
/* Paste/Copy buttons */
body[data-theme="black"] #api-connect-page .btn-copy,
body[data-theme="black"] #api-connect-okx-page .btn-copy,
body[data-theme="black"] #api-connect-tokocrypto-page .btn-copy {
    background: var(--th-accent-grad, linear-gradient(135deg, #ffb72a, #ab7a09)) !important;
    border: 1px solid var(--th-accent, #ffb72a) !important;
    color: white !important;
    border-radius: 6px !important;
    box-shadow: var(--th-btn-primary-shadow) !important;
}
/* Connect / Disconnect Buttons */
body[data-theme="black"] #api-connect-page .bottomButton .btn,
body[data-theme="black"] #api-connect-okx-page .bottomButton .btn,
body[data-theme="black"] #api-connect-tokocrypto-page .bottomButton .btn {
    background-image: var(--th-bg-api-btn, none) !important;
    background-size: cover !important;
    background-position: center !important;
    border: 1px solid rgba(241, 202, 118, 0.6) !important;
    color: white !important;
    box-shadow: 0 0 12px rgba(241, 202, 118, 0.3) !important;
}
/* Back button */
body[data-theme="black"] #api-connect-page .bottomButton-back .btn,
body[data-theme="black"] #api-connect-okx-page .bottomButton-back .btn,
body[data-theme="black"] #api-connect-tokocrypto-page .bottomButton-back .btn {
    background-color: transparent !important;
    border: none !important;
    color: var(--th-accent, #FFC85B) !important;
}
/* Box for Spotlution IPs / Status Box
   Border opaque + background-clip padding-box supaya bg image tidak
   menutupi border translucent (border terlihat "kepotong") */
body[data-theme="black"] #api-connect-page .gradient-purple-2,
body[data-theme="black"] #api-connect-okx-page .gradient-purple-2,
body[data-theme="black"] #api-connect-tokocrypto-page .gradient-purple-2 {
    border: 1px solid rgba(241, 202, 118, 0.5) !important;
    box-shadow: 0 0 7px rgba(241, 202, 118, 0.4) !important;
    background-clip: padding-box !important;
}
body[data-theme="black"] #api-connect-form-binance .gradient-purple-2,
body[data-theme="black"] #api-connect-form-okx .gradient-purple-2,
body[data-theme="black"] #api-connect-form-tokocrypto .gradient-purple-2 {
    background-image: var(--th-bg-api-ip, none) !important;
    background-size: cover !important;
    background-position: center !important;
}
body[data-theme="black"] #api-connect-page > .gradient-purple-2,
body[data-theme="black"] #api-connect-okx-page > .gradient-purple-2,
body[data-theme="black"] #api-connect-tokocrypto-page > .gradient-purple-2 {
    background-image: var(--th-bg-api-status, none) !important;
    background-size: cover !important;
    background-position: center !important;
    background-clip: padding-box !important;
}
body[data-theme="black"] #api-connect-page .color-theme,
body[data-theme="black"] #api-connect-okx-page .color-theme,
body[data-theme="black"] #api-connect-tokocrypto-page .color-theme {
    color: var(--th-text-muted, #9B9591) !important;
}
body[data-theme="black"] #api-connect-page .color-theme a,
body[data-theme="black"] #api-connect-okx-page .color-theme a,
body[data-theme="black"] #api-connect-tokocrypto-page .color-theme a {
    color: var(--th-accent, #FFC85B) !important;
}
/* Menu drawer icons -> putih (bukan ungu) di semua tema gelap */
body[data-theme="black"] .nav-container .nav li a i {
    color: #ffffff !important;
}
body[data-theme="black"] .dropdown-menu {
    background-color: #131313 !important;
    border: 1px solid rgba(241, 202, 118, 0.4) !important;
    box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
}
body[data-theme="black"] .dropdown-menu .dropdown-item {
    color: white !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.15) !important;
}
body[data-theme="black"] .dropdown-menu .dropdown-item:last-child {
    border-bottom: none !important;
}
body[data-theme="black"] .dropdown-menu .dropdown-item:hover,
body[data-theme="black"] .dropdown-menu .dropdown-item:focus,
body[data-theme="black"] .dropdown-menu .dropdown-item.active {
    background-color: var(--th-accent, #FFC85B) !important;
    color: white !important;
}
/* =========================================================
   ELITE THEME: KEUNTUNGAN HARIAN (INFO-PROFIT) CARDS
   ========================================================= */
/* Rincian profit: bentuk item sama seperti default (flat, siku, shadow
   lembut, tanpa margin antar item) — hanya warnanya mengikuti tema */
/* Kartu item dirender lewat `v-for`, jadi ada BANYAK kartu bertumpuk dengan
   `margin: 0`. Waktu tiap kartu memasang border penuh 1px, tepi bawah kartu
   atas dan tepi atas kartu di bawahnya saling menempel — terbaca sebagai
   garis dobel 2px di antara item. Background gelap per kartu juga menutup
   video latar drawer, padahal header drawer ini sengaja dibuat transparan
   supaya videonya terlihat.

   Jadi: background & box-shadow dilepas, dan border penuh diganti SATU garis
   bawah saja. Antar item tetap ada pemisah, tapi cuma 1px — tidak dobel.
   (`.divider` di dalam kartu memisahkan baris tanggal dari baris detail,
   bukan memisahkan antar item, jadi tidak bisa dipakai untuk peran ini.) */
body[data-theme="black"] #vue-info-profit .card.card-style {
    background-color: transparent !important;
    border-radius: 0 !important;
    border: none !important;
    box-shadow: none !important;
    margin: 0 !important;
}
/* Pemisah antar item diambil dari `.divider` DI DALAM kartu, bukan dari border
   kartu — jadi tidak ada garis dobel waktu kartu bertumpuk. Bawaannya
   `rgba(0, 0, 0, 0.07)` (style.css:3348): hitam di atas latar hitam alias tidak
   kelihatan sama sekali, itu yang bikin drawer ini terbaca "belum bertema". */
body[data-theme="black"] #vue-info-profit .divider {
    background-color: rgba(241, 202, 118, 0.25) !important;
    opacity: 0.6 !important;
}
/* Teks kartu Rincian: nilai pakai `.color-theme`/inline color, tapi label dan
   angka profit negatif tidak punya kelas apa pun sehingga jatuh ke
   `.theme-dark p` (#898989) — kelabu redup di atas video. Disamakan dengan
   riwayat transaksi: isi terang, label abu-abu sekunder. */
body[data-theme="black"] #vue-info-profit p {
    color: #e2e8f0 !important;
}
body[data-theme="black"] #vue-info-profit .font-11:not(.color-theme) {
    color: #94a3b8 !important;
}
body[data-theme="black"] #vue-info-profit .color-black,
body[data-theme="black"] #vue-info-profit [style*="color: black"],
body[data-theme="black"] #vue-info-profit [style*="color:black"] {
    color: #ffffff !important;
}
/* Nama koin (BTC, ETH, ...) di kartu Rincian masih ungu tema elite.
   PENTING: ungu di sini ditulis `rgb(146, 76, 227)` (info-profit.html:73),
   BEDA satu-dua digit dari `rgb(146, 75, 225)` / #924be1 yang dipakai di
   halaman lain — itu sebabnya semua aturan penimpa ungu yang sudah ada tidak
   pernah mengenainya dan warnanya tetap ungu di tema black. Bentuk hex-nya
   ikut disebut kalau-kalau markup-nya ditulis ulang. */
body[data-theme="black"] #vue-info-profit [style*="color: rgb(146, 76, 227)"],
body[data-theme="black"] #vue-info-profit [style*="color:rgb(146, 76, 227)"],
body[data-theme="black"] #vue-info-profit [style*="color: rgb(146,76,227)"],
body[data-theme="black"] #vue-info-profit [style*="color:rgb(146,76,227)"],
body[data-theme="black"] #vue-info-profit [style*="color: #924ce3"],
body[data-theme="black"] #vue-info-profit [style*="color:#924ce3"] {
    color: var(--th-accent-2, #F5CD6B) !important;
}
body[data-theme="black"] #vue-info-profit [style*="color: #36b693"],
body[data-theme="black"] #vue-info-profit [style*="color: rgb(54, 182, 147)"],
body[data-theme="black"] #vue-info-profit [style*="color:rgb(54, 182, 147)"] {
    color: var(--th-status-positive, #4ED58B) !important;
}
/* Collapse section di dalam kartu formula (TA, Trailing Profit, dll.):
   tanpa border/box sendiri — cukup ikut kartu induknya (seperti di strategy) */
body[data-theme="black"] #body-formula [id^="collapse-list"].bg-theme,
body[data-theme="black"] #body-batch-formula [id^="collapse-list"].bg-theme,
body[data-theme="black"] #collapse-moon-logic-formula.bg-theme,
body[data-theme="black"] #collapse-moon-logic-batch-formula.bg-theme {
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
}
/* Coin detail cards: 85% transparent + gold border + gold inner shadow */
body[data-theme="black"] #coin-setting .content.bg-theme {
    background-color: rgba(19, 19, 19, 0.85) !important;
    border: 1px solid rgba(241, 202, 118, 0.35) !important;
    box-shadow: inset 0 0 10px rgba(241, 202, 118, 0.3) !important;
}

/* Coin Detail Text Colors */
body[data-theme="black"] #coin-setting [style*="color:black"],
body[data-theme="black"] #coin-setting [style*="color: black"],
body[data-theme="black"] #coin-setting .color-black,
body[data-theme="black"] #coin-setting .color-gray-dark {
    color: #e0e0e0 !important;
}
body[data-theme="black"] #coin-setting .color-theme {
    color: var(--th-accent-2, #F5CD6B) !important;
}
body[data-theme="black"] #coin-setting h5,
body[data-theme="black"] #coin-setting h6,
body[data-theme="black"] #coin-setting span:not(.badge),
body[data-theme="black"] #coin-setting p,
body[data-theme="black"] #coin-setting label {
    color: white !important;
}
/* Apply Metallic Gold Gradient to all icons (including inline colored icons like #924be1, #36b693, #d84558)

   `.bi-question-circle-fill` & `.bi-info-circle-fill` DIKECUALIKAN. Glyph ikon
   "-fill" itu piringan penuh dengan huruf (?/i) sebagai LUBANG. Aturan di bawah
   menimpa `background` elemen dengan gradasi lalu `background-clip: text` —
   artinya piringan putih yang biasanya berdiri di BELAKANG glyph (lihat rule
   `.bi-question-circle-fill` di ~baris 520) hilang, dan lubangnya meneruskan
   latar halaman yang gelap. Efeknya tanda tanyanya terbaca hitam, beda dengan
   (?) di tempat lain yang lubangnya putih. Dengan dikecualikan, keduanya
   kembali memakai perlakuan standar tema. */
body[data-theme="black"] #coin-setting i:not(.bi-question-circle-fill):not(.bi-info-circle-fill),
body[data-theme="black"] #coin-setting .settings-item i,
body[data-theme="black"] #coin-setting .settings-grid i,
body[data-theme="black"] #coin-setting .settings-grid2 i,
body[data-theme="black"] #coin-setting [style*="color: #924be1"],
body[data-theme="black"] #coin-setting [style*="color:#924be1"],
body[data-theme="black"] #coin-setting [style*="color: #36b693"],
body[data-theme="black"] #coin-setting [style*="color:#36b693"],
body[data-theme="black"] #coin-setting [style*="color: #d84558"],
body[data-theme="black"] #coin-setting [style*="color:#d84558"],
body[data-theme="black"] #coin-setting .fa-balance-scale,
body[data-theme="black"] #coin-setting .fa-tools,
body[data-theme="black"] #coin-setting .fa-traffic-light,
body[data-theme="black"] #coin-setting .fa-box {
    background: linear-gradient(180deg, #FFFFFF 0%, #FEF9A2 38%, #FFC85B 72%, #DBB14E 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: var(--th-accent-2, #F5CD6B) !important;
    display: inline-block !important;
    filter: drop-shadow(0 0 4px rgba(255, 200, 91, 0.4)) !important;
}

/* Metallic Gold Gradient for Settings Item text labels ("Avg: ON", "Moon Logic", "Formula", "Non-Stop", "Partial") */
body[data-theme="black"] #coin-setting .settings-item h6,
body[data-theme="black"] #coin-setting .settings-grid h6,
body[data-theme="black"] #coin-setting .settings-grid2 h6 {
    background: linear-gradient(180deg, #FFFFFF 0%, #FEF9A2 38%, #FFC85B 72%, #DBB14E 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: var(--th-accent-2, #F5CD6B) !important;
    display: inline-block !important;
    font-weight: 600 !important;
}

/* FORCE BUY & FORCE SELL buttons in Black theme with Gold Inner Shadow */
body[data-theme="black"] #btn-force-buy {
    background: linear-gradient(135deg, rgba(27, 138, 90, 0.85), rgba(13, 82, 52, 0.85)) !important;
    border: 1px solid rgba(254, 249, 162, 0.5) !important;
    box-shadow: inset 0 0 10px rgba(254, 249, 162, 0.5), 0 0 12px rgba(54, 182, 147, 0.3) !important;
}
body[data-theme="black"] #btn-force-sell {
    background: linear-gradient(135deg, rgba(168, 46, 62, 0.85), rgba(99, 23, 34, 0.85)) !important;
    border: 1px solid rgba(254, 249, 162, 0.5) !important;
    box-shadow: inset 0 0 10px rgba(254, 249, 162, 0.5), 0 0 12px rgba(216, 69, 88, 0.3) !important;
}


body[data-theme="black"] #body-formula .form-control,
body[data-theme="black"] #body-batch-formula .form-control,
body[data-theme="black"] #coin-setting .form-control,
body[data-theme="black"] #vue-transaction-history .form-control,
body[data-theme="black"] #user-summary .form-control,
body[data-theme="black"] #user-profit-summary .form-control,
body[data-theme="black"] #user-roi-setting .form-control,
body[data-theme="black"] #vue-trading-history-body .form-control,
body[data-theme="black"] #body-balancing-configuration .form-control {
    background-color: transparent !important;
    border: 0.5px solid rgba(241, 202, 118, 0.3) !important;
    color: white !important;
}
body[data-theme="black"] #user-roi-setting .input-group {
    background-color: var(--th-surface-2, #1b1b1b) !important;
    border: 1px solid rgba(241, 202, 118, 0.6) !important;
    border-radius: 8px !important;
    box-shadow: 0 0 10px rgba(241, 202, 118, 0.25) !important;
    overflow: hidden;
}
body[data-theme="black"] #user-roi-setting .input-group:focus-within {
    border-color: #f1ca76 !important;
    box-shadow: 0 0 10px rgba(241, 202, 118, 0.4) !important;
}
body[data-theme="black"] #user-roi-setting .input-group .input-group-text {
    background-color: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    color: white !important;
    border-right: 1px solid rgba(241, 202, 118, 0.3) !important;
}
body[data-theme="black"] #user-roi-setting .input-group .form-control,
body[data-theme="black"] #user-roi-setting #roi-setting-capital,
body[data-theme="black"] #user-roi-setting #roi-setting-year {
    background-color: #000000 !important;
    background: #000000 !important;
    border: none !important;
    box-shadow: none !important;
    color: white !important;
}
body[data-theme="black"] #user-roi-setting .input-group .form-control::placeholder,
body[data-theme="black"] #user-roi-setting #roi-setting-capital::placeholder {
    color: var(--th-text-muted, rgba(255, 255, 255, 0.4)) !important;
}
/* Fix checkboxes/radios visibility in Elite Mode */
body[data-theme="black"] .form-check-input {
    border-color: #cccccc !important;
    background-color: transparent !important;
    border-radius: 50% !important;
}
body[data-theme="black"] .form-check-input:checked {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e"), linear-gradient(135deg, #FFC85B 0%, #DBB14E 100%) !important;
    background-size: 80% 80%, 100% 100% !important;
    background-position: center, center !important;
    background-repeat: no-repeat !important;
    border-color: #FFC85B !important;
}
/* =========================================================
   DYNAMIC THEME: SWEETALERT & MODALS
   ========================================================= */
body[data-theme="black"] .swal2-popup,
body[data-theme="black"] .modal-content,
body[data-theme="black"] .offcanvas,
body[data-theme="black"] .dialog-ovelay .dialog,
body[data-theme="black"] .dialog-ovelay-2 .dialog,
body[data-theme="black"] .popUp .card.card-style {
    background-color: var(--th-surface) !important;
    color: var(--th-text) !important;
    border: 1px solid var(--th-border) !important;
    box-shadow: 0 0 20px var(--th-shadow),
                inset 0 0 20px 5px rgba(0, 0, 0, 0.65),
                inset 0 0 15px var(--th-border) !important; /* Add glowing shadow to the modal */
}
/* `.center.popUp` di halaman profil (OTP, Insert Address, Show Address,
   Change Password) DULU dikira panel inline lalu diberi isian semi-transparan.
   Nyatanya dia modal: markup-nya selalu berpasangan dengan `.bg-overlay`
   penuh layar, jadi isi halaman terbaca menembus panelnya. Isiannya kembali
   opaque; lihat blok "MODAL — PERMUKAAN WAJIB OPAK" di akhir berkas yang
   menutup jalur lain (rule kartu global) untuk kasus yang sama. */
body[data-theme="black"] .center.popUp .card.card-style {
    background-color: #080808 !important;
    box-shadow: 0 0 12px rgba(241, 202, 118, 0.35) !important;
}
/* Semua drawer offcanvas + footer-nya digelapkan — padanan elit:1216. */
body[data-theme="black"] .offcanvas,
body[data-theme="black"] .offcanvas-footer {
    background-color: #000000 !important;
}
/* Lapisan penutup panel/drawer — padanan elit:1491 ("Extra glow").
   Dua hal yang diperbaiki blok ini:

   1. box-shadow di blok atas TIDAK PERNAH aktif. `--th-shadow` isinya value
      shadow lengkap (`0 0 10px rgba(241,202,118,.2)`), jadi menulis
      `0 0 20px var(--th-shadow)` menghasilkan `0 0 20px 0 0 10px rgba(...)` —
      kelebihan panjang, invalid at computed-value time, dan SELURUH deklarasi
      box-shadow dibuang. Panelnya jadi rata tanpa glow, tepinya terbaca hitam.
      Elit lolos dari bug yang sama (elit:1479) karena ditimpa lapisan ini;
      black belum punya lapisannya, makanya tampak beda.

   2. Panel dibuat 90% opak seperti elit, supaya latar tembus sedikit dan
      panelnya tidak terasa seperti kotak mati.

   Palette-nya tetap black: emas, bukan ungu. */
body[data-theme="black"] .swal2-popup,
body[data-theme="black"] .modal-content,
body[data-theme="black"] .offcanvas,
body[data-theme="black"] .dialog-ovelay .dialog,
body[data-theme="black"] .dialog-ovelay-2 .dialog,
body[data-theme="black"] .popUp .card.card-style {
    background-color: #080808 !important;
    border: 1px solid rgba(241, 202, 118, 0.35) !important;
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.9),
                inset 0 0 6px rgba(241, 202, 118, 0.25) !important;
}
/* Custom styling for SweetAlert custom dialog elements (Coin Group Volatility alerts, etc.) */
/* `#swal-confirm-btn-set-recomendation` (dialog Set Rekomendasi) ikut disebut:
   markup-nya kembar dengan #swal-confirm-btn — ungu inline #9b5de5 yang sama —
   tapi id-nya beda satu kata, jadi selama ini tidak pernah kena aturan tema
   mana pun dan tetap ungu polos. */
body[data-theme="black"] #swal-confirm-btn,
body[data-theme="black"] #swal-confirm-btn-set-recomendation {
    background: var(--th-accent-grad, #FFC85B) !important;
    color: white !important;
    border: none !important;
    box-shadow: var(--th-btn-primary-shadow) !important;
}
/* Glow-nya sempat tidak kelihatan sama sekali walaupun box-shadow di atas
   sudah benar: SweetAlert2 v11 memasang `overflow: auto` pada
   `.swal2-html-container`, dan halo yang jatuh DI LUAR kotak tombol dipotong
   oleh clipping itu. Tombolnya menempel ke tepi container (flex row + gap),
   jadi yang terpotong justru sisi yang paling kelihatan.
   Clipping dimatikan hanya pada container yang memang berisi tombol ini —
   container swal lain tetap bisa men-scroll konten panjang seperti biasa. */
body[data-theme="black"] .swal2-html-container:has(#swal-confirm-btn),
body[data-theme="black"] .swal2-html-container:has(#swal-confirm-btn-set-recomendation) {
    overflow: visible !important;
}
body[data-theme="black"] #swal-cancel-btn {
    background: transparent !important;
    color: var(--th-text) !important;
    border: 1px solid var(--th-border) !important;
}
body[data-theme="black"] .swal2-popup .text-xl-coin-group {
    color: var(--th-text) !important;
}
body[data-theme="black"] .swal2-popup .bg-red-box-coin-group {
    background-color: rgba(220, 38, 38, 0.15) !important;
    border: 1px solid rgba(220, 38, 38, 0.3) !important;
    border-radius: 8px;
    padding: 10px;
    margin: 10px 0;
}
body[data-theme="black"] .swal2-popup .bg-red-box-coin-group p,
body[data-theme="black"] .swal2-popup .bg-red-box-coin-group ul,
body[data-theme="black"] .swal2-popup .bg-red-box-coin-group li {
    color: #fca5a5 !important;
}
body[data-theme="black"] .swal2-popup div[style*="background-color: #eef2ff"],
body[data-theme="black"] .swal2-popup div[style*="background-color:#eef2ff"] {
    background-color: rgba(241, 202, 118, 0.15) !important;
    color: var(--th-text) !important;
}
body[data-theme="black"] .swal2-popup div[style*="background-color: #eef2ff"] strong,
body[data-theme="black"] .swal2-popup div[style*="background-color:#eef2ff"] strong {
    color: var(--th-accent) !important;
}
/* Global Cards Glossy Glow Override.
   .balance-card dikecualikan (sama seperti rule global di bagian GLOBAL CARD
   BACKGROUND): dia punya isian semi-transparan + border conic sendiri, dan
   selector ini lebih spesifik sehingga kalau ikut match, background-image
   opaque `--th-surface` di sini akan menimpa isian transparannya. */
body[data-theme="black"] .card.card-style:not(.balance-card):not(.profile-info-card),
body[data-theme="black"] .accordion-header.card.card-style:not(.balance-card):not(.profile-info-card) {
    position: relative !important;
    background-color: var(--th-surface-glass) !important;
    background-image: none !important;
    /* Border NYATA, bukan pseudo-element. Sempat dicoba cincin ::after
       ber-mask, dan itu sumber DOUBLE BORDER di mana-mana: banyak rule
       per-halaman (asset, bonus, profit, strategy, riwayat transaksi) sudah
       menggambar `border: 1px solid` sendiri, dan cincin pseudo-element tidak
       bisa ditimpa oleh deklarasi `border` — hasilnya dua garis emas. Dengan
       border biasa, rule per-halaman cukup menimpanya seperti properti lain.
       Ini juga pola yang sudah dipakai di bagian STRATEGY di bawah. */
    border: 1px solid var(--th-border-solid, #F1CA76) !important;
    border-radius: 16px !important;
    box-shadow: 0 0 12px rgba(241, 202, 118, 0.35) !important;
}
/* CATATAN: rule ini SENGAJA tanpa `backdrop-filter`. Selectornya mengenai
   puluhan kartu per halaman, dan backdrop-filter termasuk properti termahal —
   tiap elemen jadi layer compositor sendiri dan latarnya di-blur ulang tiap
   frame, apalagi di atas video yang berjalan. Blur hanya dipasang di kartu
   yang benar-benar duduk di atas video (balance card & profile info card).
   Alpha 0.62 sendiri sudah cukup meredam latar tanpa blur. */
/* Prevent transparent wrappers from getting borders and shadows */
body[data-theme="black"] .pt-2 > .card.card-style,
body[data-theme="black"] .card.card-style.bg-transparent,
body[data-theme="black"] .card.card-style[style*="background-color: transparent"],
body[data-theme="black"] .card.card-style[style*="background: transparent"],
body[data-theme="black"] #quick-action-card {
    border: none !important;
    box-shadow: none !important;
    background-color: transparent !important;
    background-image: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}
body[data-theme="black"] #quick-action-card::before {
    content: none !important;
    display: none !important;
}
/* Label quick action menimpa bagian terang video (cincin emas) — beri shadow
   gelap supaya tetap terbaca, dan buang opacity-80 yang ikut menurunkan kontras. */
body[data-theme="black"] #quick-action-card h6 {
    opacity: 1 !important;
    text-shadow:
        0 1px 2px rgba(0, 0, 0, 0.95),
        0 0 6px rgba(0, 0, 0, 0.85),
        0 0 12px rgba(0, 0, 0, 0.6) !important;
}
body[data-theme="black"] .swal2-title,
body[data-theme="black"] .swal2-html-container,
body[data-theme="black"] .swal2-content,
body[data-theme="black"] .modal-title,
body[data-theme="black"] .modal-body,
body[data-theme="black"] .modal-header h2,
body[data-theme="black"] .swal2-popup .color-black,
body[data-theme="black"] .swal2-popup [style*="color: black"],
body[data-theme="black"] .swal2-popup [style*="color:black"] {
    color: white !important;
}
body[data-theme="black"] .modal-content h1,
body[data-theme="black"] .modal-content h2,
body[data-theme="black"] .modal-content h3,
body[data-theme="black"] .modal-content h4,
body[data-theme="black"] .modal-content h5,
body[data-theme="black"] .modal-content h6,
body[data-theme="black"] .offcanvas-title,
body[data-theme="black"] .offcanvas-body,
body[data-theme="black"] .dialog-ovelay .dialog header h2,
body[data-theme="black"] .dialog-ovelay .dialog header h3,
body[data-theme="black"] .dialog-ovelay .dialog .dialog-msg p,
body[data-theme="black"] .dialog-ovelay-2 .dialog header h2,
body[data-theme="black"] .dialog-ovelay-2 .dialog header h3,
body[data-theme="black"] .dialog-ovelay-2 .dialog .dialog-msg p,
body[data-theme="black"] .popUp .card.card-style div,
body[data-theme="black"] .popUp .card.card-style p,
body[data-theme="black"] .popUp .card.card-style span,
body[data-theme="black"] .popUp .card.card-style a,
body[data-theme="black"] .popUp .card.card-style .color-black {
    color: var(--th-text) !important;
}
body[data-theme="black"] .dialog-ovelay .dialog header,
body[data-theme="black"] .dialog-ovelay-2 .dialog header {
    background-color: transparent !important;
    border-bottom: 1px solid var(--th-border) !important;
}
body[data-theme="black"] .modal-header,
body[data-theme="black"] .modal-footer {
    border: none !important;
}
body[data-theme="black"] .swal2-popup select,
body[data-theme="black"] .swal2-popup input,
body[data-theme="black"] .modal-content select,
body[data-theme="black"] .modal-content input,
body[data-theme="black"] .offcanvas select,
body[data-theme="black"] .offcanvas input,
body[data-theme="black"] .popUp .card.card-style select,
body[data-theme="black"] .popUp .card.card-style input {
    background-color: var(--th-surface-2) !important;
    color: var(--th-text) !important;
    border: 1px solid var(--th-border) !important;
}
/* Password create/change modal (SweetAlert): #swal2-input-password /
   #swal2-input-confirm-password — dipasangin sama tombol eye .SwalBtn2, jadi
   di-target langsung by ID biar pasti menang dari style bawaan .swal2-input. */
body[data-theme="black"] .swal2-popup .swal2-input,
body[data-theme="black"] #swal2-input-recovery {
    background-color: transparent !important;
    background: transparent !important;
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
    border: 1px solid var(--th-border, rgba(245, 205, 107, 0.45)) !important;
    box-shadow: var(--th-shadow, 0 0 10px rgba(245, 205, 107, 0.25)) !important;
    border-radius: 8px !important;
}
body[data-theme="black"] .swal2-popup .swal2-input::placeholder,
body[data-theme="black"] #swal2-input-recovery::placeholder {
    color: rgba(255, 255, 255, 0.5) !important;
    -webkit-text-fill-color: rgba(255, 255, 255, 0.5) !important;
}
body[data-theme="black"] #swal2-input-recovery:focus {
    border-color: rgba(241, 202, 118, 0.9) !important;
    box-shadow: 0 0 12px rgba(241, 202, 118, 0.45) !important;
    outline: none !important;
}
body[data-theme="black"] #swal2-input-password,
body[data-theme="black"] #swal2-input-confirm-password {
    background-color: var(--th-surface-2) !important;
    color: var(--th-text) !important;
    border: 1px solid var(--th-border) !important;
    border-right: none !important;
}
body[data-theme="black"] #swal2-input-password::placeholder,
body[data-theme="black"] #swal2-input-confirm-password::placeholder {
    color: var(--th-text-muted) !important;
}
/* Margin config popup (SweetAlert): #swal-drop-rate / #swal-buy-amount /
   #swal-take-profit — HTML-nya nulis atribut class dua kali
   (class="col-3 rounded-2 border border-dark-subtle" ... class="swal2-input"),
   browser cuma pakai yang PERTAMA jadi class swal2-input-nya gak pernah
   nempel — target langsung by ID biar pasti kena. */
body[data-theme="black"] #swal-drop-rate,
body[data-theme="black"] #swal-buy-amount,
body[data-theme="black"] #swal-take-profit {
    background-color: var(--th-surface-2) !important;
    color: var(--th-text) !important;
    border: 1px solid var(--th-border) !important;
}

/* =========================================================================
   SELECT2 COMPONENTS (tema gelap)
   ========================================================================= */
/* The selection box itself */
body[data-theme="black"] .select2-container--default .select2-selection--single {
  background-color: var(--th-surface) !important;
  border: 1px solid rgba(219, 177, 78, 0.35) !important;
  border-radius: 5px !important;
  height: 48px !important;
  display: flex !important;
  align-items: center !important;
  color: var(--th-text) !important;
}
body[data-theme="black"] .select2-container--default .select2-selection--single .select2-selection__rendered {
  color: var(--th-text) !important;
  line-height: 48px !important;
}
body[data-theme="black"] .select2-container--default .select2-selection--single .select2-selection__rendered span,
body[data-theme="black"] .select2-results__option span {
  color: var(--th-text) !important;
}
/* Arrow inside selection box */
body[data-theme="black"] .select2-container--default .select2-selection--single .select2-selection__arrow {
  height: 46px !important;
}
body[data-theme="black"] .select2-container--default .select2-selection--single .select2-selection__arrow b {
  border-color: var(--th-text) transparent transparent transparent !important;
}
body[data-theme="black"] .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
  border-color: transparent transparent var(--th-text) transparent !important;
}
body[data-theme="black"] .select2-container--default.select2-container--open .select2-selection--single,
body[data-theme="black"] .select2-container--default.select2-container--open.select2-container--below .select2-selection--single,
body[data-theme="black"] .select2-container--default.select2-container--open.select2-container--above .select2-selection--single {
  border: 1px solid rgba(219, 177, 78, 0.35) !important;
  border-top: 1px solid rgba(219, 177, 78, 0.35) !important;
  border-bottom: 1px solid rgba(219, 177, 78, 0.35) !important;
  border-left: 1px solid rgba(219, 177, 78, 0.35) !important;
  border-right: 1px solid rgba(219, 177, 78, 0.35) !important;
  border-radius: 8px !important;
  border-top-left-radius: 8px !important;
  border-top-right-radius: 8px !important;
  border-bottom-left-radius: 8px !important;
  border-bottom-right-radius: 8px !important;
}
/* Dropdown list panel */
body[data-theme="black"] .select2-dropdown,
body[data-theme="black"] .select2-dropdown.select2-dropdown--below,
body[data-theme="black"] .select2-dropdown.select2-dropdown--above,
body[data-theme="black"] .select2-container--open .select2-dropdown,
body[data-theme="black"] .select2-container--open .select2-dropdown--below,
body[data-theme="black"] .select2-container--open .select2-dropdown--above {
  background-color: var(--th-surface) !important;
  border: 1px solid rgba(219, 177, 78, 0.35) !important;
  border-top: 1px solid rgba(219, 177, 78, 0.35) !important;
  border-bottom: 1px solid rgba(219, 177, 78, 0.35) !important;
  border-left: 1px solid rgba(219, 177, 78, 0.35) !important;
  border-right: 1px solid rgba(219, 177, 78, 0.35) !important;
  color: var(--th-text) !important;
  border-radius: 8px !important;
  border-top-left-radius: 8px !important;
  border-top-right-radius: 8px !important;
  border-bottom-left-radius: 8px !important;
  border-bottom-right-radius: 8px !important;
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.6) !important;
  z-index: 9999999 !important;
  margin-top: 6px !important;
  overflow: hidden !important;
}
body[data-theme="black"] .select2-dropdown.select2-dropdown--above,
body[data-theme="black"] .select2-container--open .select2-dropdown--above {
  margin-top: -6px !important;
}
/* Option list container */
body[data-theme="black"] .select2-container--default .select2-results__options {
  background-color: var(--th-surface) !important;
  padding: 0 !important;
}
/* Individual option items */
body[data-theme="black"] .select2-container--default .select2-results__option {
  background-color: transparent !important;
  color: var(--th-text) !important;
  padding: 10px 15px !important;
  border-bottom: 1px solid rgba(219, 177, 78, 0.12) !important;
}
body[data-theme="black"] .select2-container--default .select2-results__option:last-child {
  border-bottom: none !important;
}
/* Highlighted (hovered) option & selected option */
body[data-theme="black"] .select2-container--default .select2-results__option--highlighted[aria-selected],
body[data-theme="black"] .select2-container--default .select2-results__option[aria-selected="true"] {
  background-color: var(--th-surface-2) !important;
  color: var(--th-text) !important;
}
/* Search input inside Select2 dropdown */
body[data-theme="black"] .select2-container--default .select2-search--dropdown .select2-search__field {
  background-color: var(--th-surface-2) !important;
  border: 1px solid rgba(219, 177, 78, 0.25) !important;
  color: var(--th-text) !important;
  border-radius: 4px !important;
}

body[data-theme="black"] .form-custom {
    border-color: var(--th-border) !important;
}
body[data-theme="black"] .swal2-popup .swal2-confirm,
body[data-theme="black"] .dialog-ovelay .dialog .button-danger,
body[data-theme="black"] .dialog-ovelay-2 .dialog .button-danger,
body[data-theme="black"] .buy-modal-content button[onclick*="Confirm"] {
    background: var(--th-accent-grad, var(--th-accent)) !important;
    color: #fff !important;
    /* Garis + glow disamakan dengan blok tombol primer (black:4514) supaya
       tombol Kirim di Withdrawal tampil identik dengan "Credit Withdrawal".

       Sebelumnya di sini `box-shadow: 0 0 15px var(--th-shadow)` — dan itu
       TIDAK PERNAH menghasilkan apa pun: `--th-shadow` isinya bukan warna,
       melainkan nilai box-shadow utuh (`0 0 10px rgba(241,202,118,0.2)`), jadi
       hasil substitusinya `0 0 15px 0 0 10px rgba(...)` alias deklarasi tidak
       valid dan dibuang browser. Itu sebabnya tombolnya emas tapi tanpa glow.

       Selector ini (0,3,2) menang atas blok tombol primer, jadi memperbaiki
       `[onclick*="ConfirmWithdrawal"]` saja tidak pernah kelihatan. */
    border: 1px solid #ffb72a !important;
    box-shadow: var(--th-btn-primary-shadow) !important;
}
body[data-theme="black"] .swal2-popup .swal2-cancel,
body[data-theme="black"] .dialog-ovelay .dialog .button-default,
body[data-theme="black"] .dialog-ovelay-2 .dialog .button-default,
body[data-theme="black"] .popUp .card.card-style .border-dark-dark,
body[data-theme="black"] .buy-modal-content button[onclick*="Close"] {
    background: var(--th-surface-2) !important;
    color: var(--th-text) !important;
    border: 1px solid var(--th-border) !important;
}
/* SweetAlert Validation Message */
body[data-theme="black"] .swal2-validation-message,
body[data-theme="black"] .swal2-popup .swal2-validation-message {
    background: rgba(245, 205, 107, 0.12) !important;
    border: 1px solid rgba(245, 205, 107, 0.45) !important;
    color: var(--th-accent-2, #F5CD6B) !important;
    -webkit-text-fill-color: var(--th-accent-2, #F5CD6B) !important;
    border-radius: 8px !important;
    padding: 10px 14px !important;
    margin: 14px auto 8px auto !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    box-shadow: 0 0 14px rgba(245, 205, 107, 0.25) !important;
}
body[data-theme="black"] .swal2-validation-message::before,
body[data-theme="black"] .swal2-popup .swal2-validation-message::before {
    background-color: #ff5252 !important;
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
    font-weight: 700 !important;
}
/* Link "Bagaimana cara menemukan ID Transaksi saya?" di Recovery Swal -> Gold Black */
body[data-theme="black"] #recharge-recovery-swal a,
body[data-theme="black"] #recharge-recovery-swal a[onclick*="CallGitbook"],
body[data-theme="black"] #recharge-recovery-swal [style*="924be1"],
body[data-theme="black"] .swal2-popup a[onclick*="CallGitbook"],
body[data-theme="black"] .recovery-gitbook-link {
    color: var(--th-accent-2, #F5CD6B) !important;
    -webkit-text-fill-color: var(--th-accent-2, #F5CD6B) !important;
    text-decoration: underline !important;
}
/* Custom Modals (Jenis Entri, Penyeimbangan, Parsial) — padanan blok
   .buy-modal-content di tema elite, warnanya pakai palet black.
   Base-nya `background-color: #fff`, jadi tanpa ini modal-nya putih polos. */
body[data-theme="black"] .buy-modal-content {
    background-color: var(--th-surface) !important;
    border: 1px solid var(--th-border) !important;
    box-shadow: var(--th-shadow) !important;
    border-radius: 12px !important;
}
body[data-theme="black"] .buy-modal-content .color-theme,
body[data-theme="black"] .buy-modal-content .color-theme b {
    color: var(--th-text) !important;
}
/* Divider di atas tombol (inline abu-abu) diselaraskan ke garis emas tipis */
body[data-theme="black"] .buy-modal-content [style*="border-top"] {
    border-top-color: var(--th-border) !important;
}
/* Opsi list di dalam modal */
body[data-theme="black"] .list-group-item.list-cycle,
body[data-theme="black"] .list-group-item.list-partial,
body[data-theme="black"] .list-group-item.list-active {
    background-color: transparent !important;
    color: var(--th-text) !important;
    border-color: rgba(241, 202, 118, 0.2) !important;
}
body[data-theme="black"] .list-group-item.list-cycle.active,
body[data-theme="black"] .list-group-item.list-partial.active,
body[data-theme="black"] .list-group-item.list-active.active {
    background-color: rgba(241, 202, 118, 0.18) !important;
    color: var(--th-accent-2) !important;
    border-color: var(--th-border) !important;
}
body[data-theme="black"] .badge-shine-wrapper.shine-active::after {
    content: "";
    position: absolute;
    top: 0;
    left: -100%;
    width: 30%;
    height: 100%;
    background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.7) 50%, rgba(255,255,255,0) 100%);
    transform: skewX(-20deg);
    animation: shine-sweep 5s cubic-bezier(0.4, 0, 0.2, 1) infinite;
    pointer-events: none; /* Prevent blocking clicks */
}

/* Starburst animation untuk Username H3 di Black theme */
body[data-theme="black"] .page-title .logged-in h3 {
  position: relative !important;
  display: inline-block !important;
  z-index: 3 !important;
}

/* black-starburst-glow (dikomentar):
body[data-theme="black"] .black-starburst-glow {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 140px;
  height: 140px;
  margin-top: -70px;
  margin-left: -70px;
  background: radial-gradient(circle, rgba(255, 215, 0, 0.35) 0%, rgba(218, 165, 32, 0.12) 50%, transparent 70%);
  border-radius: 50%;
  pointer-events: none;
  z-index: 1;
  animation: blackGlowPulse 3s ease-in-out infinite;
}
@keyframes blackGlowPulse {
  0%, 100% { transform: scale(0.85); opacity: 0.4; }
  50% { transform: scale(1.25); opacity: 0.85; }
}
*/
body[data-theme="black"] .black-starburst-glow {
  display: none !important;
}

/* Posisi tiap bintang dikunci di sekitar username lewat --tx/--ty (dihitung di
   initBlackStarburst dari ukuran h3-nya). Bintangnya TIDAK berpindah — yang
   beranimasi cuma kedipannya, jadi transform dasarnya ikut dipasang di sini
   supaya posisinya tetap benar sebelum animasi mulai. */
body[data-theme="black"] .page-title .logged-in h3 .starburst-star {
  position: absolute;
  top: 50%;
  left: 50%;
  pointer-events: none;
  z-index: 2;
  opacity: 0;
  transform: translate(var(--tx), var(--ty)) scale(var(--sc)) rotate(var(--rot));
}

body[data-theme="black"] .offcanvas .starburst-star,
body[data-theme="black"] #menu-main .starburst-star {
  display: none !important;
}

body[data-theme="black"] .star-gold svg path { fill: #ffc56a; }
body[data-theme="black"] .star-gold-light svg path { fill: #f3dd8c; }
body[data-theme="black"] .star-gold-dark svg path { fill: #ffc56a; }
body[data-theme="black"] .star-white svg path { fill: #f3dd8c; }
body[data-theme="black"] .star-white-dim svg path { fill: #ffc56a; }

body[data-theme="black"] .star-gold {
  filter: drop-shadow(0 0 4px #ffc56a) drop-shadow(0 0 10px rgba(255,197,106,0.7));
}
body[data-theme="black"] .star-gold-light {
  filter: drop-shadow(0 0 4px #f3dd8c) drop-shadow(0 0 10px rgba(243,221,140,0.7));
}
body[data-theme="black"] .star-gold-dark {
  filter: drop-shadow(0 0 4px #ffc56a) drop-shadow(0 0 10px rgba(255,197,106,0.7));
}
body[data-theme="black"] .star-white {
  filter: drop-shadow(0 0 4px #f3dd8c) drop-shadow(0 0 10px rgba(243,221,140,0.8));
}
body[data-theme="black"] .star-white-dim {
  filter: drop-shadow(0 0 3px #ffc56a) drop-shadow(0 0 8px rgba(255,197,106,0.6));
}

/* Kelap-kelip di tempat: skala & opacity naik-turun, plus sedikit puntiran
   supaya kelihatan berkilau. Posisi (--tx/--ty) tetap sama di semua keyframe.
   NONAKTIF - animasi lama (bintang menyembur keluar dari tengah username):
   @keyframes starBurstAnim {
     0%   { transform: translate(0, 0) scale(0) rotate(0deg); opacity: 0; }
     15%  { opacity: 1; }
     100% { transform: translate(var(--tx), var(--ty)) scale(var(--sc)) rotate(var(--rot)); opacity: 0; }
   } */
@keyframes starTwinkleAnim {
  0%, 100% {
    transform: translate(var(--tx), var(--ty)) scale(calc(var(--sc) * 0.35)) rotate(var(--rot));
    opacity: 0.06;
  }
  50% {
    transform: translate(var(--tx), var(--ty)) scale(var(--sc)) rotate(calc(var(--rot) + 18deg));
    opacity: 1;
  }
}

body[data-theme="black"] .starburst-star.twinkle {
  animation: starTwinkleAnim var(--dur) ease-in-out var(--delay) infinite;
}

/* Hormati preferensi sistem: kalau user minta animasi dikurangi, bintangnya
   tidak usah berkedip sama sekali. */
@media (prefers-reduced-motion: reduce) {
  body[data-theme="black"] .starburst-star.twinkle {
    animation: none !important;
    opacity: 0.5;
  }
}

/* Badge tema di header: statis (tidak berdenyut), sama seperti galaxy & elit */
body[data-theme="black"] #header-theme-badge {
  position: relative;
  z-index: 3;
}
/* --- BLACK THEME --- */
body[data-theme="black"] .btn-primary {
    background: linear-gradient(135deg, rgba(80, 80, 80, 0.8) 0%, rgba(120, 120, 120, 0.8) 100%) !important;
    border: 1px solid rgba(200, 200, 200, 0.6) !important;
    box-shadow: 0 0 10px rgba(255, 255, 255, 0.2) !important;
}
body[data-theme="black"] .btn-fail {
    background: linear-gradient(135deg, rgba(120, 30, 30, 0.8) 0%, rgba(180, 50, 50, 0.8) 100%) !important;
    border: 1px solid rgba(180, 50, 50, 0.6) !important;
    box-shadow: 0 0 10px rgba(180, 50, 50, 0.2) !important;
}
/* =========================================
   CAROUSEL BATCH THEME FIXES 
   ========================================= */
body[data-theme="black"] #carousel-batch .carousel-item {
  background-color: transparent !important;
}
/* =========================================
   TRADE PAGE THEME FIXES 
   ========================================= */
body[data-theme="black"] #trade-top-divider {
  display: none !important;
}
body[data-theme="black"] #vue-tab-asset_credit_info {
  background-image: var(--th-header-bg-img) !important;
  background-color: #111111 !important;
  background-size: cover !important;
  background-position: center !important;
}
/* For specific dark themes, show the themed buttons and hide the default ones. */
body[data-theme="black"] .btn-start-theme,
body[data-theme="black"] .btn-stop-theme {
  display: inline-block !important; /* inline-block matches button */
  width: 100%;
}
body[data-theme="black"] .btn-start-default,
body[data-theme="black"] .btn-stop-default {
  display: none !important;
}
/* Active/inactive state override (toggled from JS on the strategy page).
   Higher specificity than the theme "show" rule above so it wins. */
body[data-theme="black"] .btn-start-theme.btn-trade-hidden,
body[data-theme="black"] .btn-stop-theme.btn-trade-hidden {
  display: none !important;
}
body[data-theme="black"] .reset-formula-avg,
body[data-theme="black"] .batch-reset-formula-avg,
body[data-theme="black"] button[onclick*="InsertNewAddress"],
body[data-theme="black"] #regis-phone {
  background-image: var(--th-btn-stop-img, linear-gradient(135deg, #d84558, #a5303f)) !important;
  border: 1px solid rgba(255, 110, 130, 0.75) !important;
  box-shadow: 0 0 16px rgba(216, 69, 88, 0.65),
              inset 0 3px 5px rgba(255, 255, 255, 0.4),
              inset 0 -3px 5px rgba(0, 0, 0, 0.25),
              inset 0 0 8px rgba(255, 150, 165, 0.25) !important;
}
body[data-theme="black"] .change-all-btn,
body[data-theme="black"] .batch-change-all-btn {
  background-image: var(--th-btn-pause-img, linear-gradient(135deg, #f7b733, #d98e04)) !important;
  border: 1px solid rgba(255, 190, 90, 0.75) !important;
  box-shadow: 0 0 16px rgba(247, 160, 30, 0.65),
              inset 0 3px 5px rgba(255, 255, 255, 0.4),
              inset 0 -3px 5px rgba(0, 0, 0, 0.25),
              inset 0 0 8px rgba(255, 210, 130, 0.25) !important;
}
/* Toast (alert.html): di mode tema jangan warna polos, pakai gaya tombol
   start/pause/stop yang mengkilat; default (non-tema) tetap warna aslinya */
body[data-theme="black"] .alert-warning,
body[data-theme="black"] .alert-success,
body[data-theme="black"] .alert-error {
  background-color: transparent !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: cover !important;
}
/* Warning: pause.png mengkilat */
body[data-theme="black"] .alert-warning {
  background-image: var(--th-btn-pause-img, linear-gradient(135deg, #f7b733, #d98e04)) !important;
  border: 1px solid rgba(255, 190, 90, 0.75) !important;
  box-shadow: 0 0 16px rgba(247, 160, 30, 0.65),
              inset 0 3px 5px rgba(255, 255, 255, 0.4),
              inset 0 -3px 5px rgba(0, 0, 0, 0.25),
              inset 0 0 8px rgba(255, 210, 130, 0.25) !important;
  color: #ffffff !important;
  -webkit-text-stroke: 0.3px rgba(0, 0, 0, 0.3);
  paint-order: stroke fill;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}
body[data-theme="black"] .alert-warning span,
body[data-theme="black"] .alert-warning i {
  color: #ffffff !important;
  -webkit-text-stroke: 0.3px rgba(0, 0, 0, 0.3);
  paint-order: stroke fill;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}
/* Berhasil: start.png mengkilat */
body[data-theme="black"] .alert-success {
  background-image: var(--th-btn-start-img, linear-gradient(135deg, #24c48d, #1a9e6f)) !important;
  border: 1px solid rgba(78, 230, 175, 0.75) !important;
  box-shadow: 0 0 16px rgba(36, 196, 141, 0.65),
              inset 0 3px 5px rgba(255, 255, 255, 0.4),
              inset 0 -3px 5px rgba(0, 0, 0, 0.25),
              inset 0 0 8px rgba(120, 255, 205, 0.25) !important;
}
/* Error/gagal: stop.png mengkilat */
body[data-theme="black"] .alert-error {
  background-image: var(--th-btn-stop-img, linear-gradient(135deg, #d84558, #a5303f)) !important;
  border: 1px solid rgba(255, 110, 130, 0.75) !important;
  box-shadow: 0 0 16px rgba(216, 69, 88, 0.65),
              inset 0 3px 5px rgba(255, 255, 255, 0.4),
              inset 0 -3px 5px rgba(0, 0, 0, 0.25),
              inset 0 0 8px rgba(255, 150, 165, 0.25) !important;
}
/* Moon Logic icon — themed swap (default untouched).
   Global: semua img moon-logic-icon diganti versi tema, ukuran ikut konteks masing-masing. */
body[data-theme="black"]  img[src*="moon-logic-icon"] {
  content: url("../../assets/orbit-black/moonlogic.png?v=2");
  object-fit: contain;
}
body[data-theme="black"]  img[src*="star-coin"] {
  content: url("../../assets/orbit-black/star-coin.png");
}
/* Ukuran khusus di settings coin detail */
body[data-theme="black"]  .settings-item img[src*="moon-logic-icon"] {
  width: 40px !important;
  height: 40px !important;
}
/* Coin detail setting icons — themed swap (elite only; default untouched).
   avg (balance-scale) reflects ON/OFF via inline color: #36b693=on, #d84558=off.
   The browser serializes the inline style to rgb(), so match the rgb form too. */
body[data-theme="black"] .settings-item i.fa-balance-scale[style*="36b693"],
body[data-theme="black"] .settings-item i.fa-balance-scale[style*="54, 182, 147"],
body[data-theme="black"] .settings-item i.fa-balance-scale[style*="d84558"],
body[data-theme="black"] .settings-item i.fa-balance-scale[style*="216, 69, 88"],
body[data-theme="black"] .settings-item i.fa-tools,
body[data-theme="black"] .settings-item i.fa-traffic-light,
body[data-theme="black"] .settings-item i.fa-box {
  display: inline-block;
  width: 48px;
  height: 48px;
  object-fit: contain;
  vertical-align: middle;
}
/* Black */
body[data-theme="black"] .settings-item i.fa-balance-scale[style*="36b693"],
body[data-theme="black"] .settings-item i.fa-balance-scale[style*="54, 182, 147"] {
  content: url("../../assets/orbit-black/coin-detail/avg-on.png");
}
body[data-theme="black"] .settings-item i.fa-balance-scale[style*="d84558"],
body[data-theme="black"] .settings-item i.fa-balance-scale[style*="216, 69, 88"] {
  content: url("../../assets/orbit-black/coin-detail/avg-off.png");
}
body[data-theme="black"] .settings-item i.fa-tools {
  content: url("../../assets/orbit-black/coin-detail/formula.png");
}
body[data-theme="black"] .settings-item i.fa-traffic-light {
  content: url("../../assets/orbit-black/coin-detail/nonstop.png");
}
body[data-theme="black"] .settings-item i.fa-box {
  content: url("../../assets/orbit-black/coin-detail/partial.png");
}
/* Icon "Setting" (formula.html, batch_formula.html) — cuma img src, gak ada
   id/class, jadi di-swap lewat content: url() per tema. */
body[data-theme="black"] img[src*="setting.png"] {
  content: url("../../assets/orbit-black/setting.png");
}
/* Icon + label grid Settings dibaca di atas video nebula yang ramai, jadi
   kontrasnya tipis. Pakai tumpukan shadow yang sama dengan judul MOONBOT di
   leaderboard: satu bayangan jatuh tegas, satu halo gelap lebar untuk
   memisahkan dari background, satu rim putih tipis untuk menajamkan tepi.
   Icon pakai drop-shadow supaya bayangannya mengikuti bentuk PNG, bukan kotak
   elemennya. Offset 0 0 bikin bayangan terpusat di balik icon (tidak jatuh ke
   bawah), jadi terbaca sebagai halo gelap melingkar, bukan drop shadow.
   Prefix `#coin-setting` diperlukan: rule gradient icon di black:1255 memakai
   selector ber-ID plus `filter: drop-shadow(...emas...) !important`, jadi
   tanpa ID di sini shadow gelapnya kalah dan icon `<i>` tetap tanpa shadow. */
body[data-theme="black"] #coin-setting .settings-item > a > i,
body[data-theme="black"] #coin-setting .settings-item > a > img,
body[data-theme="black"] .settings-item > a > i,
body[data-theme="black"] .settings-item > a > img {
  filter: drop-shadow(0 0 6px rgba(0, 0, 0, 1))
          drop-shadow(0 0 16px rgba(0, 0, 0, 0.9))
          drop-shadow(0 0 2px rgba(255, 255, 255, 0.3)) !important;
}
/* Label memakai gradient emas yang di-clip ke teks (-webkit-text-fill-color:
   transparent), jadi text-shadow justru menembus glyph dan bikin kotor —
   dipakai drop-shadow yang bekerja pada hasil render, bukan pada glyph. */
body[data-theme="black"] .settings-item .btn-xs h6,
body[data-theme="black"] .settings-item .btn-xs .color-theme {
  filter: drop-shadow(0 3px 5px rgba(0, 0, 0, 1))
          drop-shadow(0 0 12px rgba(0, 0, 0, 0.9)) !important;
}
/* Gradient label dicerahkan: emas gelap #DBB14E di ujung bawah bikin separuh
   huruf redup di atas background nebula. Titik akhirnya dinaikkan ke emas
   terang dan porsi putihnya diperlebar. */
body[data-theme="black"] #coin-setting .settings-item h6,
body[data-theme="black"] #coin-setting .settings-grid h6,
body[data-theme="black"] #coin-setting .settings-grid2 h6 {
  background: linear-gradient(180deg, #FFFFFF 0%, #FFFDE3 42%, #FFDD93 76%, #F5CD6B 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
}
/* =========================================================================
   PROFIT SUMMARY — card atas selebar card list; tabel menyatu dengan card
   (desain mengikuti tabel credit info); kolom profit hijau tema
   ========================================================================= */
/* Card "Profit Summary List": samakan dengan card "All Time Profit" di atas
   (inset 15px kiri-kanan, radius penuh) */
body[data-theme="black"]  #user-profit-summary .card.card-style {
    margin: 0 !important;
    border-radius: 0px !important;
    border: none !important;
    box-shadow: none !important;
}
/* Tabel di dalam card list: full selebar card, tanpa border/box sendiri */
body[data-theme="black"]  #user-profit-summary .card .content {
    background-color: transparent !important;
    border: none !important;
    border-radius: 0px !important;
    box-shadow: none !important;
    margin: 0 !important;
}
/* Nilai profit positif (inline #36b693) -> hijau tema; match hex & rgb */
body[data-theme="black"] #user-profit-summary h5[style*="#36b693"],
body[data-theme="black"] #user-profit-summary h5[style*="54, 182, 147"] {
    color: var(--th-green, #4EBA5D) !important;
}
/* =========================================================================
   DATEPICKER (bootstrap-datepicker) — dipakai di modal Select Date
   (asset / bonus / profit / profit-summary / roi). Default: hover #eee,
   active biru #006dcc -> ganti ke ungu/aksen tema.
   ========================================================================= */
/* Judul "Select Date" (inline color abu #545454) & teks switch/arrow */
body[data-theme="black"] .modal .datepicker .datepicker-switch,
body[data-theme="black"] .modal .datepicker .prev,
body[data-theme="black"] .modal .datepicker .next,
body[data-theme="black"] .modal .datepicker .dow,
body[data-theme="black"] .modal .datepicker table tr td,
body[data-theme="black"] .modal .datepicker table tr td span {
    color: var(--th-text, #FDFDFE) !important;
}
body[data-theme="black"] .modal-header h2[style*="color: rgb(84, 84, 84)"],
body[data-theme="black"] .modal-header h2[style*="color:#545454"] {
    color: var(--th-text, #FDFDFE) !important;
}
/* Tanggal bulan lain / disabled -> muted */
body[data-theme="black"] .modal .datepicker table tr td.old,
body[data-theme="black"] .modal .datepicker table tr td.new,
body[data-theme="black"] .modal .datepicker table tr td span.old,
body[data-theme="black"] .modal .datepicker table tr td span.new,
body[data-theme="black"] .modal .datepicker table tr td.disabled,
body[data-theme="black"] .modal .datepicker table tr td span.disabled {
    color: var(--th-text-hint, #646361) !important;
}
/* Hover / focused (default #eee) -> ungu tema jelas terlihat */
body[data-theme="black"] .modal .datepicker table tr td.day:hover,
body[data-theme="black"] .modal .datepicker table tr td.day.focused,
body[data-theme="black"] .modal .datepicker table tr td span:hover,
body[data-theme="black"] .modal .datepicker table tr td span.focused,
body[data-theme="black"] .modal .datepicker .datepicker-switch:hover,
body[data-theme="black"] .modal .datepicker .prev:hover,
body[data-theme="black"] .modal .datepicker .next:hover,
body[data-theme="black"] .modal .datepicker tfoot tr th:hover {
    background: rgba(241, 202, 118, 0.55) !important;
    background-image: none !important;
    color: #ffffff !important;
    border-radius: 6px !important;
}
body[data-theme="black"] .modal .datepicker table tr td.day:hover,
body[data-theme="black"] .modal .datepicker table tr td.day.focused,
body[data-theme="black"] .modal .datepicker table tr td span:hover,
body[data-theme="black"] .modal .datepicker table tr td span.focused,
body[data-theme="black"] .modal .datepicker .datepicker-switch:hover,
body[data-theme="black"] .modal .datepicker .prev:hover,
body[data-theme="black"] .modal .datepicker .next:hover {
    background: rgba(241, 202, 118, 0.45) !important;
}
/* Cell terpilih (active) -> aksen gradient tema penuh */
body[data-theme="black"] .modal .datepicker table tr td.active,
body[data-theme="black"] .modal .datepicker table tr td.active:hover,
body[data-theme="black"] .modal .datepicker table tr td.active.active,
body[data-theme="black"] .modal .datepicker table tr td span.active,
body[data-theme="black"] .modal .datepicker table tr td span.active:hover {
    background: var(--th-accent-grad, #FFC85B) !important;
    background-image: var(--th-accent-grad, none) !important;
    color: #ffffff !important;
    border: none !important;
    border-radius: 6px !important;
    box-shadow: var(--th-btn-primary-shadow, 0 0 10px var(--th-shadow)) !important;
    text-shadow: none !important;
}
/* Toggle Month/Year: aktif -> aksen tema (default #ad85f3) */
body[data-theme="black"] .asset-filter-date .col-form-label.active,
body[data-theme="black"] .profit-filter-date .col-form-label.active,
body[data-theme="black"] .profit-summary-filter-date .col-form-label.active,
body[data-theme="black"] .history-credit-filter-date .col-form-label.active {
    background: var(--th-accent-grad, #FFC85B) !important;
    border: 1px solid var(--th-border-solid, #DBB14E) !important;
    color: #ffffff !important;
    box-shadow: var(--th-btn-primary-shadow, 0 0 10px var(--th-shadow)) !important;
}
/* Toggle non-aktif -> border/teks tema */
body[data-theme="black"] .asset-filter-date .col-form-label,
body[data-theme="black"] .profit-filter-date .col-form-label,
body[data-theme="black"] .profit-summary-filter-date .col-form-label,
body[data-theme="black"] .history-credit-filter-date .col-form-label {
    color: var(--th-text-muted, #9B9591) !important;
    border: 1px solid var(--th-border, rgba(241, 202, 118, 0.35)) !important;
}
/* =========================================
   LEADERBOARD (rank-pop-up) — BLACK THEME
   Assets: ../assets/orbit-black/leaderboard/
   (only when the theme is active; default is untouched)
   ========================================= */
/* Palette (black leaderboard):
   Base BG #000000 · Modal BG #131313 · Card/Table BG #1B1B1B
   Border Gold #F1CA76 · Glow Gold #FFC85B · Text Gold #F5CD6B
   Text Primary #FDFDFE · Text Secondary #9B9591 */
/* Whole card uses the space background image (fallback = Base BG) */
body[data-theme="black"] .ranking-top-up {
  background: url("../../assets/orbit-black/leaderboard/bg-pg-leaderboard.png") center top / cover no-repeat,
              #000000 !important;
  overflow: hidden;
}
body[data-theme="black"] .ranking-top-up-wrapper {
  position: relative;
  border: none !important;
  box-shadow: 0 0 20px rgba(241, 202, 118, 0.6), 
              0 0 40px rgba(251, 214, 109, 0.3), 
              inset 0 0 15px rgba(241, 202, 118, 0.4),
              inset 0 0 30px rgba(251, 214, 109, 0.2) !important;
  border-radius: 12px;
  display: block;
}
body[data-theme="black"] .ranking-top-up-wrapper::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  border-radius: 12px;
  padding: 2.5px; /* Thicker border for more glow */
  background: linear-gradient(185deg, #FEF9A2 15%, #DBB14E 40%, #FDFDFE 60%, #DBB14E 100%);
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  pointer-events: none;
  z-index: 10;
}
/* Header: transparent so the space bg shows through, + podium clipart + glow divider */
body[data-theme="black"] .ranking-top-up-header-container {
  background: transparent !important;
  border-bottom: 1px solid rgba(241, 202, 118, 0.35) !important;
  box-shadow: 0 3px 16px -6px rgba(241, 202, 118, 0.45) !important;
}
body[data-theme="black"] .ranking-top-up-header-container::before {
  content: "";
  position: absolute;
  left: 22px;
  top: 16px;
  width: 132px;
  height: 132px;
  background: url("../../assets/orbit-black/leaderboard/leaderboard-clipart-1.png") center / contain no-repeat;
  z-index: 2;
  pointer-events: none;
}
/* Leaderboard Pill Tabs — Black Theme (GoldBlackHoleCoreTheme) */
body[data-theme="black"] .ranking-top-tab-navigation {
  background: rgba(24, 18, 12, 0.85) !important;
  border: 1px solid rgba(241, 202, 118, 0.35) !important;
  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.6), 0 2px 8px rgba(0, 0, 0, 0.4) !important;
}
body[data-theme="black"] .ranking-top-tab {
  color: #FBFAF8 !important;
  -webkit-text-fill-color: #FBFAF8 !important;
  font-family: "PlusJakartaSans", sans-serif !important;
  font-weight: 700 !important;
}
body[data-theme="black"] .ranking-top-tab:hover {
  color: #FBFAF8 !important;
  -webkit-text-fill-color: #FBFAF8 !important;
}
body[data-theme="black"] .ranking-top-tab.active {
  background: linear-gradient(135deg, #E6C483 0%, #B08A4C 100%) !important;
  color: #FFFFFF !important;
  -webkit-text-fill-color: #FFFFFF !important;
  font-family: "PlusJakartaSans-Bold", sans-serif !important;
  font-weight: 800 !important;
  box-shadow: 0 1px 6px rgba(230, 196, 131, 0.35) !important;
}
/* Hide clipart medal when AUM tab is active */
body[data-theme="black"] .ranking-top-up-wrapper.tab-aum-active .ranking-top-up-header-container::before {
  display: none !important;
}
/* Header in Black Theme when AUM tab is active */
body[data-theme="black"] .ranking-top-up-wrapper.tab-aum-active .ranking-top-up-header-container {
  background: transparent !important;
  background-image: none !important;
  border-bottom: 1px solid rgba(241, 202, 118, 0.35) !important;
}
/* AUM Hall of Fame in Black Theme (GoldBlackHoleCoreTheme) */
body[data-theme="black"] .ranking-aum-subtitle {
  color: #FFFBF0 !important;
}
body[data-theme="black"] .ranking-aum-title {
  color: #F6DEAE !important;
}
body[data-theme="black"] .ranking-aum-divider {
  background: #E3B566 !important;
  box-shadow: 0 0 10px rgba(227, 181, 102, 0.7) !important;
}
body[data-theme="black"] .aum-body-container {
  background-color: transparent !important;
}
body[data-theme="black"] .aum-tier-card {
  background: rgba(16, 14, 10, 0.8) !important;
  border: 1px solid rgba(241, 202, 118, 0.45) !important;
  box-shadow: 0 0 6px rgba(241, 202, 118, 0.25) !important;
}
body[data-theme="black"] .aum-tier-badge {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.09) 0%, rgba(255, 255, 255, 0.02) 100%) !important;
  border-right: 1px solid rgba(241, 202, 118, 0.25) !important;
}
/* Tier accents for Black (ORBIT_AUM_TIER_ACCENTS) */
body[data-theme="black"] .aum-tier-card.tier-black .aum-tier-badge {
  border-left-color: #FCD570 !important;
}
body[data-theme="black"] .aum-tier-card.tier-galaxy .aum-tier-badge {
  border-left-color: #E6EAF0 !important;
}
body[data-theme="black"] .aum-tier-card.tier-elite .aum-tier-badge {
  border-left-color: #B84AFB !important;
}
body[data-theme="black"] .aum-tier-card.tier-prime .aum-tier-badge {
  border-left-color: #29F05F !important;
}
body[data-theme="black"] .aum-tier-card.tier-one .aum-tier-badge {
  border-left-color: #02CFFA !important;
}
/* Top-left inner glow on tier badge, tinted by tier accent */
body[data-theme="black"] .aum-tier-card.tier-black {
  --aum-accent-rgb: 252, 213, 112;
}
body[data-theme="black"] .aum-tier-card.tier-galaxy {
  --aum-accent-rgb: 230, 234, 240;
}
body[data-theme="black"] .aum-tier-card.tier-elite {
  --aum-accent-rgb: 184, 74, 251;
}
body[data-theme="black"] .aum-tier-card.tier-prime {
  --aum-accent-rgb: 41, 240, 95;
}
body[data-theme="black"] .aum-tier-card.tier-one {
  --aum-accent-rgb: 2, 207, 250;
}
body[data-theme="black"] .aum-tier-badge {
  background:
    radial-gradient(circle at 0% 0%, rgba(var(--aum-accent-rgb, 255, 255, 255), 0.12) 0%, rgba(var(--aum-accent-rgb, 255, 255, 255), 0) 55%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.09) 0%, rgba(255, 255, 255, 0.02) 100%) !important;
  box-shadow: inset 4px 4px 10px -8px rgba(var(--aum-accent-rgb, 255, 255, 255), 0.35) !important;
}
body[data-theme="black"] .aum-tier-label {
  color: #E9CE99 !important;
  -webkit-text-fill-color: #E9CE99 !important;
}
body[data-theme="black"] .aum-tier-name {
  color: #E9CE99 !important;
  -webkit-text-fill-color: #E9CE99 !important;
}
body[data-theme="black"] .aum-rank-row:not(:last-child) {
  border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important;
}
/* Divider colors (|) */
body[data-theme="black"] .aum-rank-sep.rank-sep-1 {
  color: #FCE7B2 !important;
}
body[data-theme="black"] .aum-rank-sep.rank-sep-2 {
  color: #BABABA !important;
}
body[data-theme="black"] .aum-rank-sep.rank-sep-3 {
  color: #FCE6B4 !important;
}
/* Name colors */
body[data-theme="black"] .aum-rank-username.rank-1-text {
  color: #F6DA6A !important;
  font-weight: 800;
}
body[data-theme="black"] .aum-rank-username.rank-2-text {
  color: #CECED0 !important;
  font-weight: 700;
}
body[data-theme="black"] .aum-rank-username.rank-3-text {
  color: #F0B04A !important;
  font-weight: 700;
}
/* AUM wallpaper when AUM tab is active */
body[data-theme="black"] .ranking-top-up.tab-aum-active,
body[data-theme="black"] .ranking-top-up:has(.tab-aum-active) {
  background: url("../../assets/orbit-black/aum-wp.png") center top / cover no-repeat,
              #100d06 !important;
}
/* Footer divider, text, and link */
body[data-theme="black"] .aum-footer-notes {
  border-top: 1px solid rgba(241, 202, 118, 0.2) !important;
}
body[data-theme="black"] .aum-footer-notes p,
body[data-theme="black"] .aum-footer-note-text {
  color: #979795 !important;
  opacity: 1 !important;
}
body[data-theme="black"] .aum-footer-notes a,
body[data-theme="black"] .aum-footer-link {
  color: #DAC189 !important;
}
/* Monthly Leaderboard name colors in Black theme */
body[data-theme="black"] .table-rank-pop-up .text-shine-gold,
body[data-theme="black"] .table-rank-pop-up span[style*="fdc846"],
body[data-theme="black"] .table-rank-pop-up span[style*="253, 200, 70"] {
  color: #F6DA6A !important;
  -webkit-text-fill-color: #F6DA6A !important;
}
body[data-theme="black"] .table-rank-pop-up .text-shine-silver,
body[data-theme="black"] .table-rank-pop-up span[style*="737279"],
body[data-theme="black"] .table-rank-pop-up span[style*="115, 114, 121"] {
  color: #CECED0 !important;
  -webkit-text-fill-color: #CECED0 !important;
}
body[data-theme="black"] .table-rank-pop-up .text-shine-bronze,
body[data-theme="black"] .table-rank-pop-up span[style*="bd890b"],
body[data-theme="black"] .table-rank-pop-up span[style*="189, 137, 11"] {
  color: #F0B04A !important;
  -webkit-text-fill-color: #F0B04A !important;
}
/* Header title. "MOON" (teks milik <p> sendiri) disamakan dengan "TOP 20":
   emas solid, bukan gradient — gradient bikin "MOON" terlihat beda berat/warna
   dari span di sebelahnya. */
body[data-theme="black"] .ranking-top-up-header-title {
  color: #FFFFFF !important;
  -webkit-text-fill-color: #FFFFFF;
  text-shadow: none !important;
  filter: drop-shadow(0 4px 6px rgba(0,0,0,1)) drop-shadow(0 0 15px rgba(0,0,0,0.9)) drop-shadow(0 0 2px rgba(255,255,255,0.3)) !important;
  /* style.css memberi 600 pada family `PlusJakartaSans`, dan family itu hanya
     punya SATU file (PlusJakartaSans-Medium.woff) — jadi 600/700 di situ cuma
     bold sintetis yang tipis. Dipindah ke family `PlusJakartaSans-Bold` yang
     memuat file Bold asli, lalu 800 untuk tebal ekstra. */
  font-family: "PlusJakartaSans-Bold", sans-serif !important;
  font-weight: 800 !important;
  position: relative;
  z-index: 1;
}

/* Aura gelap/lembut khusus di belakang MOONBOT agar lebih menonjol (tanpa kotak kaku) */
body[data-theme="black"] .ranking-top-up-header-title::before {
  content: "";
  position: absolute;
  top: -50%;
  bottom: -5%;
  left: -5%;
  width: 70%; /* Hanya menutupi sekitar tulisan MOONBOT */
  /* Untuk mengatur seberapa gelap, ubah angka 0.4 di bawah ini (0.0 = transparan, 1.0 = hitam pekat) */
  background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 70%);
  z-index: -1;
  pointer-events: none;
  -webkit-background-clip: border-box !important;
  background-clip: border-box !important;
}
body[data-theme="black"] .ranking-top-up-header-title span {
  font-family: "PlusJakartaSans-Bold", sans-serif !important;
  font-weight: 800 !important;
}
/* Subtitle "MONTHLY LEADERBOARD" -> putih bersih, tanpa tint emas */
body[data-theme="black"] .ranking-top-up-header-subtitle {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff;
  text-shadow: 0 2px 4px rgba(0,0,0,1) !important;
}
/* "BOT" -> Putih solid */
body[data-theme="black"] .ranking-top-up-header-title span[style*="#fff"],
body[data-theme="black"] .ranking-top-up-header-title span[style*="255, 255, 255"] {
  -webkit-text-fill-color: #FFFFFF !important;
  color: #FFFFFF !important;
}
/* "TOP 20" -> Gold Accent (tetap solid emas) */
body[data-theme="black"] .ranking-top-up-header-title span[style*="fdc846"],
body[data-theme="black"] .ranking-top-up-header-title span[style*="253, 200, 70"] {
  -webkit-text-fill-color: #FFC85B !important;
  color: #FFC85B !important;
}
/* Body panel (inline background-color:white) -> transparent so the bg shows */
body[data-theme="black"] .ranking-top-up div[style*="background-color: white"] {
  background-color: transparent !important;
}
/* Table -> Card/Table BG @10% + shiny gold border, rounded 5px, margin-top 10px */
body[data-theme="black"] .table-rank-pop-up {
  background-color: rgba(19, 19, 19, 0.75) !important;
  border: 1px solid rgba(241, 202, 118, 0.55) !important;
  border-radius: 5px !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  overflow: hidden !important;
  margin-top: 10px !important;
  box-shadow: 0 0 14px rgba(241, 202, 118, 0.30),
              inset 0 0 12px rgba(241, 202, 118, 0.10);
}
body[data-theme="black"] .th-rank-pop-up {
  color: #fdfdfe !important;
  border-bottom: 1px solid rgba(241, 202, 118, 0.35) !important;
}
body[data-theme="black"] .td-rank-pop-up {
  color: #fdfdfe !important;
}
/* Subtle row separators */
body[data-theme="black"] .table-rank-pop-up tbody tr td {
  border-bottom: 1px solid rgba(241, 202, 118, 0.2) !important;
}
body[data-theme="black"] .table-rank-pop-up tbody tr:last-child td {
  border-bottom: none !important;
}
/* "Trailing Profit :" label -> Text Primary */
body[data-theme="black"] .ranking-top-up td.ps-1 {
  color: #fdfdfe !important;
}
/* Footnotes + empty-state -> Text Secondary */
body[data-theme="black"] .ranking-top-up li,
body[data-theme="black"] .ranking-top-up tbody p,
body[data-theme="black"] .ranking-top-up .bi-ban {
  color: #9b9591 !important;
}
/* Link "Pro/P+" di footnote itu satu-satunya sisa ungu tema default di panel
   ini: markup-nya inline `color: #924be1` (rank-pop-up.html), DAN index.html
   menyetel ulang warnanya lewat jQuery saat profil dimuat. jQuery menyerialkan
   nilainya jadi `rgb(146, 75, 225)`, bukan `#924be1`, jadi kedua bentuk harus
   disebut — pola yang sama dipakai tombol sort di ~baris 842. `!important`
   wajib karena yang dilawan adalah inline style.

   Varian abu (#6c757d) yang dipasang untuk akun investor sengaja TIDAK ikut
   diemaskan: itu penanda bahwa tombol upgrade-nya tidak berlaku. */
body[data-theme="black"] #button-upgrade-rank[style*="924be1"],
body[data-theme="black"] #button-upgrade-rank[style*="146, 75, 225"] {
  color: var(--th-accent-2, #F5CD6B) !important;
}
/* Close button visible on dark and styled for black */
body[data-theme="black"] .button-close-banner {
  border: 2px solid transparent !important;
  background:
    linear-gradient(#000000, #000000) padding-box,
    linear-gradient(180deg, #f5cd6b 0%, #fdfdfe 50%, #f5cd6b 100%) border-box !important;
  box-shadow: 0 0 14px rgba(241, 202, 118, 0.7),
              inset 0 0 8px rgba(241, 202, 118, 0.3);
  right: 25px !important;
  top: 25px !important;
  width: 34px !important;
  height: 34px !important;
  display: flex !important;
  align-items: center;
  justify-content: center;
  border-radius: 50% !important;
}
body[data-theme="black"] .button-close-banner .btn-close {
  filter: none !important;
  opacity: 1 !important;
  background-image: none !important;
  background-color: #fdfdfe !important;
  -webkit-mask: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center / 14px 14px no-repeat;
  mask: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center / 14px 14px no-repeat;
  width: 14px;
  height: 14px;
  border: none;
  padding: 0;
  margin: 0;
  float: none !important;
}
/* Rank medals 1/2/3 (emoji spans in the rank cell) -> themed images */
body[data-theme="black"] .td-rank-pop-up.d-flex span[style*="fdc846"],
body[data-theme="black"] .td-rank-pop-up.d-flex span[style*="253, 200, 70"] {
  content: url("../../assets/orbit-black/leaderboard/rank-1.png");
}
body[data-theme="black"] .td-rank-pop-up.d-flex span[style*="737279"],
body[data-theme="black"] .td-rank-pop-up.d-flex span[style*="115, 114, 121"] {
  content: url("../../assets/orbit-black/leaderboard/rank-2.png");
}
body[data-theme="black"] .td-rank-pop-up.d-flex span[style*="bd890b"],
body[data-theme="black"] .td-rank-pop-up.d-flex span[style*="189, 137, 11"] {
  content: url("../../assets/orbit-black/leaderboard/rank-3.png");
}
body[data-theme="black"] .td-rank-pop-up.d-flex span[style*="fdc846"],
body[data-theme="black"] .td-rank-pop-up.d-flex span[style*="253, 200, 70"],
body[data-theme="black"] .td-rank-pop-up.d-flex span[style*="737279"],
body[data-theme="black"] .td-rank-pop-up.d-flex span[style*="115, 114, 121"],
body[data-theme="black"] .td-rank-pop-up.d-flex span[style*="bd890b"],
body[data-theme="black"] .td-rank-pop-up.d-flex span[style*="189, 137, 11"] {
  width: auto !important;
  height: 26px !important;
  vertical-align: middle;
}
/* Trailing shields -> themed shields */
body[data-theme="black"] .ranking-top-up img[src*="security-shield.png"] {
  content: url("../../assets/orbit-black/leaderboard/trail-off.png");
}
body[data-theme="black"] .ranking-top-up img[src*="security-shield-red"] {
  content: url("../../assets/orbit-black/leaderboard/trail-on.png");
}
body[data-theme="black"] .ranking-top-up img[src*="security-shield"] {
  width: auto !important;
  height: 22px !important;
}
/* =========================================
   ROI LOADER DYNAMIC THEME
   ========================================= */
body[data-theme="black"] #roiLoader {
  background: rgba(0, 0, 0, 0.9) !important;
}
body[data-theme="black"] #roiLoader .spinner-border-custom {
  color: var(--th-accent) !important;
}
body[data-theme="black"] #roiLoader .color-purple {
  color: var(--th-text) !important;
}
body[data-theme="black"] .roi-powered-by {
  background-color: var(--th-surface-deep, var(--th-surface, var(--th-bg))) !important;
}
/* =========================================
   ROI BACKGROUND & LOGO DYNAMIC THEME
   ========================================= */
/* Lapisan gelap di atas aset background supaya kartu & teks ROI lebih menonjol
   (aset bg-pg-roi.png cukup terang di bagian nebula emasnya). Ditumpuk sebagai
   background-image kedua, bukan overlay elemen, supaya ikut ter-render saat
   kartu di-snapshot html2canvas. */
body[data-theme="black"] #capture {
  background-image: linear-gradient(rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0.45)),
                    url("../../assets/orbit-black/bg-pg-roi.png") !important;
  background-size: cover, cover !important;
  background-position: center, center !important;
  background-repeat: no-repeat, no-repeat !important;
}
/* Memakai varian -128: aslinya 2048x2048 / 3.9 MB padahal dirender 60x60
   (elite pakai 128x128 / 22 KB). Selain boros di halaman, snapshot share harus
   mengubahnya jadi data URI ~5 MB dan itu membuat export menggantung.
   File 2048px-nya sengaja TIDAK dihapus, kalau-kalau dipakai di tempat lain. */
body[data-theme="black"] .roi-card-logo {
  content: url("../../assets/orbit-black/moonbot-roi-icon-128.png");
  filter: drop-shadow(0 0 8px rgba(241, 202, 118, 0.65)) drop-shadow(0 0 16px rgba(251, 234, 157, 0.35)) !important;
}
body[data-theme="black"] #capture h1 {
  color: #FDFDFE !important;
  text-shadow: 0 0 10px #F5CD6B, 0 0 4px #DBB14E !important;
}
/* =========================================
   ROI CARDS — elegant gold glow style (transparent)
   ========================================= */
body[data-theme="black"] #capture .card-roi-bg {
  background: transparent !important;
  border-radius: 14px !important;
  padding: 0 !important; /* No padding needed for border wrapper if we use actual border */
  border: 1px solid rgba(219, 177, 78, 0.7) !important;
  /* Glow luar dikecilkan — dua lapis sebelumnya (12px/0.6 + 24px/0.4) menumpuk
     dengan cahaya di aset background sehingga tepi kartu terlihat berpendar
     tebal. Isian dalamnya (inset) dibiarkan supaya kartu tetap hangat. */
  box-shadow: 0 0 6px rgba(241, 202, 118, 0.28),
              0 0 14px rgba(219, 177, 78, 0.16),
              inset 0 0 30px rgba(241, 202, 118, 0.3),
              inset 0 0 60px rgba(219, 177, 78, 0.2) !important;
}
body[data-theme="black"] #capture .card-content {
  background: rgba(0, 0, 0, 0.45) !important; /* more transparent */
  border-radius: 12px !important;
  box-shadow: inset 0 0 40px rgba(241, 202, 118, 0.1) !important;
  padding: 1rem !important; /* compensate for removing padding from wrapper if needed, wait, card-content already has padding? */
}
/* Text Styles */
body[data-theme="black"] #capture .roi-title-text,
body[data-theme="black"] #capture .main-roi-title,
body[data-theme="black"] #capture .roi-value-text,
body[data-theme="black"] #capture .roi-total-title,
body[data-theme="black"] #capture .roi-asset-title {
  background-image: linear-gradient(to top, #DCA93E 0%, #FFFFFF 100%) !important;
  background-clip: text !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
  text-shadow: none !important; /* Hilangkan shadow bawaan ungu dll */
}
body[data-theme="black"] #capture .roi-summary-text {
  color: #A0A0A0 !important;
}
body[data-theme="black"] #capture .roi-value-text {
  /* Mempertahankan glow pada angka utama tanpa merusak teks transparan */
  filter: drop-shadow(0 0 6px rgba(245, 205, 107, 0.4));
}
body[data-theme="black"] #capture .main-roi-title {
  /* Shadow gelap terpusat (pola yang sama dengan judul MOONBOT di leaderboard
     dan icon grid Settings): memisahkan judul dari cahaya emas di background,
     bukan menambah glow emas di atas teks yang sudah emas. */
  filter: drop-shadow(0 0 6px rgba(0, 0, 0, 1))
          drop-shadow(0 0 16px rgba(0, 0, 0, 0.9))
          drop-shadow(0 0 2px rgba(255, 255, 255, 0.25));
}
body[data-theme="black"] #capture .roi-notes {
  font-size: 11px !important;
  /* Dot bawaan (list-style: disc inline) dimatikan: ::marker tidak menerima
     text-shadow, jadi glow-nya dibuat lewat ::before di tiap <li>. */
  list-style: none !important;
}
/* Gradient dipasang PER <li>, bukan di <ul>. Kalau di <ul>, satu gradient
   dibentang sepanjang seluruh daftar sehingga baris pertama putih dan baris
   terakhir hampir emas penuh. Per-<li> tiap baris dapat gradientnya sendiri:
   putih di atas -> emas di bawah. */
body[data-theme="black"] #capture .roi-notes li {
  position: relative;
  background-image: linear-gradient(to top, #DCA93E 0%, #FFFFFF 100%) !important;
  background-clip: text !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
  /* background-clip:text melukis SATU gradient sepanjang kotak <li>, bukan per
     baris. Pada item yang teksnya wrap, baris pertama jatuh di ujung putih dan
     baris kedua di ujung emas. Gradient-nya dibuat setinggi satu baris lalu
     di-ulang vertikal supaya setiap baris dapat gradient penuh sendiri.
     line-height dipatok agar tinggi band-nya (em) selalu pas dengan baris. */
  line-height: 1.6 !important;
  background-size: 100% 1.6em !important;
  background-repeat: repeat-y !important;
}
/* Dot emas dengan glow. Warna & fill DITULIS ULANG di sini karena ::before
   mewarisi `color: transparent` + `-webkit-text-fill-color: transparent` dari
   <li> yang di-clip gradient — tanpa itu dot-nya hilang. */
body[data-theme="black"] #capture .roi-notes li::before {
  content: "•";
  position: absolute;
  left: -0.9rem; /* <ul> punya padding-left: 1.25rem dari inline style */
  top: 0;
  color: #F5CD6B;
  -webkit-text-fill-color: #F5CD6B;
  font-size: 14px;
  line-height: inherit;
  text-shadow: 0 0 5px rgba(241, 202, 118, 0.95),
               0 0 11px rgba(219, 177, 78, 0.7),
               0 0 20px rgba(219, 177, 78, 0.4);
}

/* Satu BARIS = satu kotak emas; selnya dipisah garis, bukan berkotak sendiri.
   `overflow: hidden` supaya garis pemisah sel terpotong rapi di sudut membulat. */
body[data-theme="black"] #capture .card-content [style*="margin-bottom: 0.5rem"] {
  background: rgba(0, 0, 0, 0.5) !important;
  border: 1px solid rgba(241, 202, 118, 0.5) !important;
  border-radius: 8px !important;
  overflow: hidden !important;
  box-shadow: 0 0 6px rgba(241, 202, 118, 0.25) !important;
}
/* Baris kedua ikut dirender walau tanpa sel (data tahun < 7), dan tanpa ini
   dia tampil sebagai kotak emas kosong di bawah baris berisi. */
body[data-theme="black"] #capture .card-content [style*="margin-bottom: 0.5rem"]:not(:has(> div)) {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}
/* Sel bulan/tahun: tanpa kotak sendiri, hanya garis pemisah di kiri */
body[data-theme="black"] #capture .card-content [style*="linear-gradient(0deg, #c8e3fa"],
body[data-theme="black"] #capture .card-content [style*="linear-gradient(0deg, rgb(200, 227, 250)"] {
  background: transparent !important;
  border: none !important;
  border-left: 1px solid rgba(241, 202, 118, 0.35) !important;
  border-radius: 0 !important;
  padding: 4px 0 !important;
  box-shadow: none !important;
}
body[data-theme="black"] #capture .card-content [style*="linear-gradient(0deg, #c8e3fa"]:first-child,
body[data-theme="black"] #capture .card-content [style*="linear-gradient(0deg, rgb(200, 227, 250)"]:first-child {
  border-left: none !important;
}
/* Kotak isi dibuat bening total. Sebelumnya dia punya permukaan gelap sendiri
   (rgba(18,18,18,.6)) di dalam kotak bergaris emas, jadi tepinya terbaca
   sebagai garis kedua di dalam sel. Sekarang satu sel = satu garis. */
body[data-theme="black"] #capture .card-content [style*="background: #2b0099"],
body[data-theme="black"] #capture .card-content [style*="background: rgb(43, 0, 153)"] {
  background: transparent !important;
  border: none !important;
  border-radius: 4px !important;
}
/* Nilai persen: gradient putih -> emas, sama seperti judul & angka ROI di
   kartu atas. Dipasang di div nilainya sendiri (inline `height: 30px`), bukan
   di kotak pembungkusnya — background-clip: text di pembungkus akan memakan
   background kotaknya. */
body[data-theme="black"] #capture .card-content [style*="height: 30px"] {
  background-image: linear-gradient(to top, #DCA93E 0%, #FFFFFF 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
  font-weight: 600 !important;
}
/* Label tahun/bulan -> emas lebih tua supaya beda tingkat dari nilainya,
   dengan garis pemisah tipis ke nilai di bawahnya */
body[data-theme="black"] #capture .card-content [style*="background: #270186"],
body[data-theme="black"] #capture .card-content [style*="background: rgb(39, 1, 134)"] {
  background: transparent !important;
  color: #DBB14E !important;
  border-radius: 0 !important;
  border-bottom: 1px solid rgba(241, 202, 118, 0.35) !important;
  padding-bottom: 3px !important;
  margin: 0 6px 4px 6px !important;
}
/* Badge tahun "ALL" — emas tenang tanpa glow. Sebelumnya krem terang (#FBEA9D)
   plus glow luar 8px, jadi pill-nya menyala jauh lebih kuat dari elemen lain
   di kartu yang sama. */
body[data-theme="black"] #capture .card-content [style*="border: 2px solid rgb(156, 99, 216)"] {
  border-width: 1px !important; /* inline-nya 2px — terlalu tebal untuk pill sekecil ini */
  border-color: rgba(219, 177, 78, 0.85) !important;
  color: #E8C979 !important;
  box-shadow: none !important;
}
/* Icon kalender di sebelah badge: SVG-nya fill="currentColor", jadi ikut warna
   teks yang diwarisi (nyaris putih). Disamakan dengan warna badge.
   Satu-satunya <svg> di halaman ini — pie chart-nya <canvas>, jadi aman. */
body[data-theme="black"] #capture .card-content svg {
  color: #E8C979 !important;
  fill: currentColor !important;
  filter: none !important;
}
/* =========================================
   HEADER MOONBOT LOGO DYNAMIC THEME
   ========================================= */
/* =========================================
   MOON LOGIC DROPDOWNS DYNAMIC THEME
   ========================================= */
body[data-theme="black"] .custom-ta .myselect.form-custom {
  border-color: var(--th-accent) !important;
  background-color: transparent !important;
  margin-top: -2px !important;
}
body[data-theme="black"] .custom-ta .myselect.form-custom select {
  color: var(--th-text) !important;
  border: none !important;
  background-color: transparent !important;
  padding-top: 2px !important;
  padding-bottom: 0px !important;
  /* Cegah nilai panjang (mis. "Fibonacci Retracement") wrap/melebihi box */
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
/* Chevron .form-select versi terang untuk tema gelap
   (SVG bootstrap asli stroke #343a40 terlalu gelap) */
body[data-theme="black"] select.form-select {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23cfc9dd' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e") !important;
  background-repeat: no-repeat !important;
  background-position: right 0.75rem center !important;
  background-size: 16px 12px !important;
}
/* Teks tombol select ikut alignment kelasnya (option-nya sudah diatur style.min.css) */
body[data-theme="black"] select.form-select-center {
  text-align: center !important;
}
body[data-theme="black"] select.form-select-right {
  text-align: right !important;
}
/* Popup native <select> ikut gelap (color-scheme mempengaruhi render OS/browser;
   warna option dihormati Chrome/Firefox desktop, diabaikan iOS) */
body[data-theme="black"] select {
  color-scheme: dark;
}
body[data-theme="black"] select option,
body[data-theme="black"] .custom-ta .form-select option {
  background-color: #131313 !important;
  color: #FDFDFE !important;
}
/* Chromium 135+: popup select bisa distyle penuh (background, border, glow).
   Browser lain mengabaikan blok ini dan memakai fallback color-scheme di atas.
   Mencakup .form-select (form biasa) dan .swal2-select (popup SweetAlert,
   mis. Choose Language). */
body[data-theme="black"] select.form-select,
body[data-theme="black"] select.swal2-select {
  appearance: base-select;
}
body[data-theme="black"] select.form-select::picker(select),
body[data-theme="black"] select.swal2-select::picker(select) {
  appearance: base-select;
  background-color: #131313;
  color: #FDFDFE;
  border: 1px solid rgba(241, 202, 118, 0.4);
  border-radius: 10px;
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2);
  padding: 8px 0;
}
/* Panah bawaan base-select tidak perlu: chevron sudah digambar .form-select */
body[data-theme="black"] select.form-select::picker-icon {
  display: none;
}
body[data-theme="black"] select.form-select option,
body[data-theme="black"] select.swal2-select option {
  padding: 6px 12px;
}
body[data-theme="black"] select.form-select option:hover,
body[data-theme="black"] select.form-select option:focus,
body[data-theme="black"] select.swal2-select option:hover,
body[data-theme="black"] select.swal2-select option:focus {
  background-color: rgba(241, 202, 118, 0.25) !important;
}
/* =========================================
   GLOWING COMPONENTS (FOOTER & CARDS)
   ========================================= */
body[data-theme="black"] #moon-logic-card-theme,
body[data-theme="black"] #strategy-mode-card-theme,
body[data-theme="black"] #ta-card-theme,
body[data-theme="black"] #batch-ta-card-theme,
body[data-theme="black"] #grouping-container,
body[data-theme="black"] #money-management-card-theme {
  background-color: var(--th-surface-glass) !important;
  background-image: none !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  border: 1px solid var(--th-border-solid, #F1CA76) !important;
  border-radius: 16px !important;
  box-shadow: 0 0 12px rgba(241, 202, 118, 0.35), inset 0 0 6px rgba(241, 202, 118, 0.25) !important;
}
body[data-theme="black"] #money-management-card-theme .form-check[style*="border"] {
  border: 1px solid rgba(241, 202, 118, 0.4) !important;
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
}
body[data-theme="black"] #money-management-card-theme div[style*="color: rgb(0, 0, 0)"],
body[data-theme="black"] #money-management-card-theme div[style*="color: #000"] {
  color: #ffffff !important;
}
body[data-theme="black"] #moon-logic-card-theme p,
body[data-theme="black"] #moon-logic-card-theme span {
  color: #ffffff !important;
}
body[data-theme="black"] .switch-green .ios-input:checked ~ .custom-control-label::before {
  background-color: var(--th-accent) !important;
}
body[data-theme="black"] #footer-bar.footer-bar-1 {
  position: fixed !important;
  left: 7px !important;
  right: 7px !important;
  bottom: 15px !important;
  background-color: transparent !important;
  background-image:
    linear-gradient(var(--th-surface), var(--th-surface)),
    linear-gradient(135deg, #FEF9A2, #DBB14E) !important;
  background-origin: border-box !important;
  background-clip: padding-box, border-box !important;
  border: 1px solid transparent !important;
  border-radius: 25px !important;
  box-shadow: 0 0 12px rgba(241, 202, 118, 0.35),
              inset 0 0 6px rgba(241, 202, 118, 0.25) !important;
  filter: none !important;
  height: 50px !important;
  display: flex !important;
  align-items: center !important;
}
body[data-theme="black"] #footer-bar.footer-bar-1 .footer-divider {
  background-color: #D4B26F !important;
  opacity: 1 !important;
  width: 1px !important;
  margin: 8px 0 !important;
}
/* =========================================
   THEME HEADERS (Moon Logic dll)
   ========================================= */
body[data-theme="black"] .top-header.sticky.theme-header {
  background: url("../../assets/orbit-black/bg-pg-api-2.png") center/cover no-repeat !important;
  background-color: transparent !important;
}
/* =========================================
   MENU ICONS GRADIENT
   ========================================= */
body[data-theme="black"] #home-dropdown-list i {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* =========================================================================
   ASSET / CREDIT PAGE THEMING (Elite, Galaxy, Black)
   ========================================================================= */
/* 1. Stacking context for video background */
body[data-theme="black"] #asset-page .theme-light {
  position: relative;
  z-index: 0;
}
/* `position: absolute` bikin video ikut ter-scroll bareng isi panel: tingginya
   cuma satu layar, jadi begitu list digulir ke bawah video habis dan panel yang
   transparan membiarkan halaman di belakangnya tembus. Dipatok `fixed` +
   `100vh` seperti #profit-summary supaya tetap menutup layar saat digulir. */
body[data-theme="black"] #asset-page #elite-bg-video {
  position: fixed;
  top: 0; left: 0;
  width: 100%; max-width: 450px;
  height: 100vh;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
}
body[data-theme="black"] #asset-page moonbot-bg {
  display: none !important;
}
/* Dasar panel hitam pekat (bukan transparan) sebagai jaring pengaman: kalau
   video gagal dimuat/diputar, halaman di belakang tetap tidak tembus. Video
   ber-z-index negatif tetap tergambar DI ATAS background pemilik stacking
   context-nya, jadi dasar ini tidak menutupi video. */
body[data-theme="black"] #asset-page {
  background: #000 !important;
  background-color: #000 !important;
}
/* 2. Header transparency on scroll (matches coin-details-header) */
body[data-theme="black"] #asset-header.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}
/* 3. Transparent cards for Elite theme */
/* Hanya kartu ringkasan paling atas (`> .content:first-child`, lihat rule di
   atas) yang dibingkai emas. Kontainer daftar Kredit/Penarikan di bawahnya
   sengaja tanpa border supaya tidak jadi kotak berlapis-lapis. */
body[data-theme="black"] #user-asset > .content {
  background-color: rgba(19, 19, 19, 0.80) !important;
  border: none !important;
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
  backdrop-filter: blur(2px);
}
/* 4. Tab group card container */
/* Pembungkus daftar Kredit/Penarikan dibuat BENING. Kelas `card card-style
   bg-white` membawa permukaan putih bawaan; tema black tadinya cuma
   menggelapkannya, hasilnya panel gelap tambahan di dalam halaman yang
   latarnya sudah video. Sekarang tidak menggambar permukaan sama sekali —
   daftar-nya langsung duduk di atas latar halaman. */
body[data-theme="black"] #asset-page .pt-2 > .card.card-style.bg-white,
body[data-theme="black"] #asset-page .pt-2 > .card.card-style,
body[data-theme="black"] #asset-page .card.card-style.bg-white {
  min-height: calc(100vh - 240px) !important;
  background-color: rgba(19, 19, 19, 0.85) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  border: 1px solid var(--th-border) !important;
  border-radius: 12px 12px 0 0 !important;
  border-bottom-left-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
  border-bottom: none !important;
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
  margin: 0 !important;
  padding-bottom: 90px !important;
}
body[data-theme="black"] #user-asset .card.card-style.bg-white {
  background-color: transparent !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
/* 4b. Hide dividers that look like ugly borders */
body[data-theme="black"] #asset-page .divider {
  display: none !important;
}
/* 5. Override inline white backgrounds in history lists */
body[data-theme="black"] #asset-page [style*="background: rgb(255, 255, 255)"]:not(.month-summary-separator),
body[data-theme="black"] #asset-page [style*="background: white"]:not(.month-summary-separator),
body[data-theme="black"] #asset-page [style*="background:#fff"]:not(.month-summary-separator),
body[data-theme="black"] #asset-page [style*="background: #fff"]:not(.month-summary-separator),
body[data-theme="black"] #asset-page [style*="background-color: rgb(255, 255, 255)"]:not(.month-summary-separator),
body[data-theme="black"] #asset-page [style*="background-color: white"]:not(.month-summary-separator),
body[data-theme="black"] #asset-page [style*="background-color:#fff"]:not(.month-summary-separator),
body[data-theme="black"] #asset-page [style*="background-color: #fff"]:not(.month-summary-separator) {
  background: rgba(19, 19, 19, 0.85) !important;
  background-color: rgba(19, 19, 19, 0.85) !important;
  border: 1px solid rgba(241, 202, 118, 0.35) !important;
  box-shadow: inset 0 0 10px rgba(241, 202, 118, 0.3) !important;
}
/* 6. History List text colors for Black */
body[data-theme="black"] #asset-page .color-black,
body[data-theme="black"] #asset-page a[style*="color: black"],
body[data-theme="black"] #asset-page h5[style*="color: rgb(134, 135, 138)"],
body[data-theme="black"] #asset-page p[style*="color: rgb(134, 135, 138)"],
body[data-theme="black"] #asset-page .font-500[style*="color: black"],
body[data-theme="black"] #asset-page label.color-black,
body[data-theme="black"] #asset-page a.color-black {
  color: #FDFDFE !important;
}
/* 7. Input fields in withdrawal.
   Dulu di sini isian putih 10% (`rgba(255,255,255,0.1)`), padahal pembungkus
   `.input-group`-nya sudah `--th-surface-2` dan addon "Address"/"USDT"-nya
   transparan — jadi satu baris terdiri dari tiga abu-abu berbeda dan terlihat
   belang. Sekarang input ikut transparan seperti input di halaman setting
   (black:1389), sehingga permukaan abu-abunya cuma SATU: milik .input-group.
   `#div-withdrawal-bonus` (withdraw cashback) ikut disebut — dulu tidak, jadi
   Asset dan Cashback tampil beda padahal komponennya kembar. */
body[data-theme="black"] #div-withdrawal-asset input.form-control,
body[data-theme="black"] #div-withdrawal-bonus input.form-control {
  background-color: transparent !important;
  background: transparent !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: none !important;
}
/* 8. Fix icon gradients in header */
body[data-theme="black"] #asset-header .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* 9. Filter dropdown: dark bg + thin purple border + subtle glow */
body[data-theme="black"] #asset-page ul.dropdown-menu[aria-labelledby="asset-filter-name"] {
  background-color: #131313 !important;
  border: 1px solid rgba(241, 202, 118, 0.4) !important;
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
}
body[data-theme="black"] #asset-page ul.dropdown-menu[aria-labelledby="asset-filter-name"] .dropdown-item {
  color: #FDFDFE !important;
}
body[data-theme="black"] #asset-page ul.dropdown-menu[aria-labelledby="asset-filter-name"] .dropdown-item:hover,
body[data-theme="black"] #asset-page ul.dropdown-menu[aria-labelledby="asset-filter-name"] .dropdown-item.active {
  background-color: rgba(241, 202, 118, 0.25) !important;
}
/* 10. Tab pill "Kredit" / "Penarikan".
   Bawaan template: track rgba(0,0,0,.07) (hilang di atas card gelap) dan tab
   aktif ungu #924be1. Di tema black track dibuat terang tipis + tab aktif emas. */
body[data-theme="black"] #asset-page #tab-group-credit > .tab-controls,
body[data-theme="black"] #bonus-page #tab-group-bonus > .tab-controls,
body[data-theme="black"] .tab-controls {
  margin-top: 5px !important;
  background-color: rgba(255, 255, 255, 0.06) !important;
  border: 1px solid var(--th-border) !important;
  border-radius: 8px !important;
  padding: 2px !important;
  display: flex !important;
}
body[data-theme="black"] #asset-page #tab-group-credit > .tab-controls a,
body[data-theme="black"] #bonus-page #tab-group-bonus > .tab-controls a,
body[data-theme="black"] .tab-controls a {
  flex: 1;
  margin: 0 !important;
  border-radius: 6px !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  color: var(--th-text-secondary) !important;
  transition: all 0.25s ease;
}
body[data-theme="black"] #asset-page #tab-group-credit > .tab-controls a.active,
body[data-theme="black"] #asset-page #tab-group-credit > .tab-controls a[aria-expanded="true"],
body[data-theme="black"] #bonus-page #tab-group-bonus > .tab-controls a.active,
body[data-theme="black"] #bonus-page #tab-group-bonus > .tab-controls a[aria-expanded="true"],
body[data-theme="black"] .tab-controls a.active,
body[data-theme="black"] .tab-controls a[aria-expanded="true"] {
  background: var(--th-accent-grad) !important;
  border-color: var(--th-accent) !important;
  /* Dulu `var(--th-shadow)` — valid, tapi alpha-nya cuma 0.2 jadi praktis
     tidak terlihat. Disamakan dengan tombol primer lain. */
  box-shadow: var(--th-btn-primary-shadow) !important;
  color: #ffffff !important;
  font-weight: 600;
}
/* 11. Filter box (dropdown jenis kredit + trigger datepicker).
   Default-nya polos tanpa background; di atas card gelap perlu chip terang
   tipis, dan icon fa-* nya masih mewarisi warna gelap. */
body[data-theme="black"] #asset-page .filter-box,
body[data-theme="black"] #bonus-page .filter-box,
body[data-theme="black"] .filter-box {
  background-color: rgba(255, 255, 255, 0.08) !important;
  border: 1px solid var(--th-border) !important;
  border-radius: 8px !important;
  padding: 0 8px !important;
}
body[data-theme="black"] #asset-page .filter-box i,
body[data-theme="black"] #asset-page .filter-box label,
body[data-theme="black"] #asset-page .filter-box .col-form-label,
body[data-theme="black"] #bonus-page .filter-box i,
body[data-theme="black"] #bonus-page .filter-box label,
body[data-theme="black"] #bonus-page .filter-box .col-form-label,
body[data-theme="black"] .filter-box i,
body[data-theme="black"] .filter-box label,
body[data-theme="black"] .filter-box .col-form-label,
body[data-theme="black"] .filter-box .color-black {
  color: var(--th-text) !important;
}
/* Wrapper baris "Summary List" dibuat POLOS, bukan surface.
   Kalau dia punya background sendiri, hasilnya dua nada bertumpuk dengan kotak
   isi list di bawahnya — masalah yang sama seperti di tema elit.

   Dua ID dipakai di selektor karena wrapper ini juga kena
   `#user-bonus [style*="background-color: white"]` (black:2396, specificity
   1 ID + 2 atribut). Satu ID saja kalah dan aturan ini tidak akan berlaku. */
body[data-theme="black"] #bonus-page #tab-bonus > div,
body[data-theme="black"] #bonus-page #tab-withdraw-bonus > .pt-1 > div {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
}
body[data-theme="black"] #tab-bonus > div a.font-500 {
  color: var(--th-text, #FDFDFE) !important;
}
/* 12. Baris riwayat kredit & penarikan.
   Rule 5 di atas menggelapkan SEMUA inline white bg di dalam #asset-page,
   termasuk tiap baris list -> jadinya card di dalam card. Baris dan wrapper
   list dikembalikan transparan supaya cuma card pembungkusnya yang bersurface. */
body[data-theme="black"] #asset-page #tab-credit > .pt-1 > div,
body[data-theme="black"] #asset-page #tab-withdraw > .pt-1 > div,
body[data-theme="black"] #asset-page #tab-credit .d-flex[aria-expanded]:not(.month-summary-separator),
body[data-theme="black"] #asset-page #tab-withdraw #tab-group-profit > div:not(.month-summary-separator) {
  background: transparent !important;
  background-color: transparent !important;
}
/* Rule 5 tidak cuma memasang background — dia juga memasang `border` KELILING
   dan `box-shadow` inset. Blok di atas hanya membatalkan background-nya, jadi
   bingkai + glow-nya tetap tertinggal. Dulu tidak kentara karena kartu di
   belakangnya solid; setelah kartu jadi tembus, tiap baris terbaca sebagai
   kotak berbingkai sendiri-sendiri di dalam kotak list.

   Wrapper: bingkai dilepas total.
   Baris: hanya menyisakan GARIS BAWAH sebagai pemisah antar baris, bukan
   kotak penuh. */
body[data-theme="black"] #asset-page #tab-credit > .pt-1 > div,
body[data-theme="black"] #asset-page #tab-withdraw > .pt-1 > div {
  border: none !important;
  box-shadow: none !important;
}
body[data-theme="black"] #asset-page #tab-credit .d-flex[aria-expanded]:not(.month-summary-separator),
body[data-theme="black"] #asset-page #tab-withdraw #tab-group-profit > div:not(.month-summary-separator) {
  border: none !important;
  border-bottom: 1px solid rgba(241, 202, 118, 0.22) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
/* 13. Header kolom tab Penarikan: .searchBar-container global dikasih surface
   glass, di dalam card ini jadi kotak gelap ganda -> dibikin nempel ke card. */
body[data-theme="black"] #asset-page #tab-withdraw .searchBar-container,
body[data-theme="black"] #asset-page #tab-withdraw .searchBar-container.bg-theme {
  background-color: transparent !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
/* 14. Chevron "lihat detail" di tiap baris (inline rgb(124, 126, 133)) */
body[data-theme="black"] #asset-page .bi-chevron-right,
body[data-theme="black"] #asset-page a[style*="color: rgb(124, 126, 133)"] {
  color: var(--th-accent-2) !important;
}
/* =========================================================================
   PROFIT (#profit-page) & STRATEGY (#strategy-page) — video bg + theme
   (mirror coin detail / asset; non-default themes only)
   ========================================================================= */
/* Video background: child of the offcanvas -> covers the panel viewport */
body[data-theme="black"] #profit-page #elite-bg-video,
body[data-theme="black"] #strategy-page #elite-bg-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
}
/* Hide moonbot-bg backdrop */
body[data-theme="black"] #profit-page moonbot-bg,
body[data-theme="black"] #strategy-page moonbot-bg {
  display: none !important;
}
/* Header when scrolled: no image, 80% dark */
body[data-theme="black"] #tab-user-profit.header-scrolled,
body[data-theme="black"] #strategy-header.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}
/* Header icons -> gradient like the menu */
body[data-theme="black"] #tab-user-profit .bi,
body[data-theme="black"] #strategy-header .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* Cards -> Card/Table BG @80% */
body[data-theme="black"] #profit-page .card.card-style,
body[data-theme="black"] #strategy-page .card.card-style {
  background-color: var(--th-surface-glass) !important;
  background-image: none !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  border: 1px solid var(--th-border-solid, #F1CA76) !important;
  border-radius: 16px !important;
  box-shadow: 0 0 12px rgba(241, 202, 118, 0.35), inset 0 0 6px rgba(241, 202, 118, 0.25) !important;
}
/* Profit list card: diperpanjang langsung sampai bawah layar tanpa border melengkung di bawah */
body[data-theme="black"] #profit-page .pt-1.mt-2 > .card.card-style,
body[data-theme="black"] #profit-page #user-profit .pt-1.mt-2 > .card.card-style,
body[data-theme="black"] #profit-page .card.card-style {
  min-height: calc(100vh - 240px) !important;
  border-radius: 12px 12px 0 0 !important;
  border-bottom-left-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
  border-bottom: none !important;
  margin: 0 !important;
  padding-bottom: 90px !important;
}
body[data-theme="black"] #profit-page .pt-1.mt-2 > .card.card-style::before,
body[data-theme="black"] #profit-page #user-profit .pt-1.mt-2 > .card.card-style::before,
body[data-theme="black"] #profit-page .card.card-style::before {
  border-radius: 11px 11px 0 0 !important;
  border-bottom-left-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
  border-bottom: none !important;
}
/* Kartu ber-ID di halaman strategi: ikut standar GLOBAL CARD BACKGROUND
   (selector 2-ID di sini menang atas rule global berbasis class) */
body[data-theme="black"] #strategy-page #strategy-mode-card-theme,
body[data-theme="black"] #strategy-page #grouping-container,
body[data-theme="black"] #strategy-page #money-management-card-theme {
  background-color: var(--th-surface-glass) !important;
  background-image: none !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  border: 1px solid var(--th-border-solid, #F1CA76) !important;
  border-radius: 16px !important;
  box-shadow: 0 0 12px rgba(241, 202, 118, 0.35), inset 0 0 6px rgba(241, 202, 118, 0.25) !important;
}
/* =========================================================
   BLACK THEME: STRATEGY & FEE SETTINGS MODULES
   ========================================================= */
body[data-theme="black"] #strategy-content > .content,
body[data-theme="black"] #fee-setting-buy-bnb-content > .content,
body[data-theme="black"] #fee-setting-information-content > .content,
body[data-theme="black"] #fee-setting-information-detail-content > .content {
    background-color: transparent !important;
}

body[data-theme="black"] #strategy-content .card.card-style,
body[data-theme="black"] #fee-setting-buy-bnb-content .card.card-style,
body[data-theme="black"] #fee-setting-information-content .card.card-style,
body[data-theme="black"] #fee-setting-information-detail-content .card.card-style {
    background-color: var(--th-surface-glass) !important;
    background-image: none !important;
    backdrop-filter: blur(8px) !important;
    -webkit-backdrop-filter: blur(8px) !important;
    border: 1px solid var(--th-border-solid, #F1CA76) !important;
    border-radius: 16px !important;
    box-shadow: 0 0 12px rgba(241, 202, 118, 0.35), inset 0 0 6px rgba(241, 202, 118, 0.25) !important;
}

/* Override inline black text */
body[data-theme="black"] #strategy-content [style*="color:black"],
body[data-theme="black"] #strategy-content [style*="color: black"],
body[data-theme="black"] #fee-setting-buy-bnb-content [style*="color:black"],
body[data-theme="black"] #fee-setting-buy-bnb-content [style*="color: black"],
body[data-theme="black"] #fee-setting-information-content [style*="color:black"],
body[data-theme="black"] #fee-setting-information-content [style*="color: black"],
body[data-theme="black"] #fee-setting-information-detail-content [style*="color:black"],
body[data-theme="black"] #fee-setting-information-detail-content [style*="color: black"] {
    color: white !important;
}

/* General text elements inside these cards */
body[data-theme="black"] #strategy-content .card.card-style h5,
body[data-theme="black"] #fee-setting-buy-bnb-content .card.card-style h5,
body[data-theme="black"] #fee-setting-information-content .card.card-style h5,
body[data-theme="black"] #fee-setting-information-detail-content .card.card-style h5,
body[data-theme="black"] #strategy-content .card.card-style span,
body[data-theme="black"] #fee-setting-buy-bnb-content .card.card-style span,
body[data-theme="black"] #fee-setting-information-content .card.card-style span,
body[data-theme="black"] #fee-setting-information-detail-content .card.card-style span {
    color: white !important;
}

/* Fix white forms/inputs inside these modules */
body[data-theme="black"] #strategy-content .form-control,
body[data-theme="black"] #fee-setting-buy-bnb-content .form-control,
body[data-theme="black"] #fee-setting-information-content .form-control,
body[data-theme="black"] #fee-setting-information-detail-content .form-control {
    background-color: transparent !important;
    border: 1px solid rgba(241, 202, 118, 0.25) !important;
    color: white !important;
}

/* Fix placeholder colors for these inputs */
body[data-theme="black"] #strategy-content .form-control::placeholder,
body[data-theme="black"] #fee-setting-buy-bnb-content .form-control::placeholder,
body[data-theme="black"] #fee-setting-information-content .form-control::placeholder,
body[data-theme="black"] #fee-setting-information-detail-content .form-control::placeholder {
    color: var(--th-text-hint, rgba(255, 255, 255, 0.5)) !important;
}

/* TA card on strategy page: thin purple border, subtle glow (match #coin-setting) */
body[data-theme="black"] #strategy-page #strategy-ta-card-theme {
  border: 1px solid rgba(241, 202, 118, 0.4) !important;
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
}
/* Inline white backgrounds -> Card/Table BG @80% */
body[data-theme="black"] #profit-page [style*="background-color: rgb(255, 255, 255)"],
body[data-theme="black"] #profit-page [style*="background-color: white"],
body[data-theme="black"] #profit-page [style*="background-color: #fff"],
body[data-theme="black"] #strategy-page [style*="background-color: rgb(255, 255, 255)"],
body[data-theme="black"] #strategy-page [style*="background-color: white"],
body[data-theme="black"] #strategy-page [style*="background-color: #fff"] {
  background-color: rgba(19, 19, 19, 0.8) !important;
}
/* =========================================================================
   ROI SETTING + MOON LOGIC + FEE (CASHBACK/BNB) — video bg + theme
   ========================================================================= */
/* Video background (child of the offcanvas) */
body[data-theme="black"] #roi-setting #elite-bg-video,
body[data-theme="black"] #formula-moon-logic #elite-bg-video,
body[data-theme="black"] #fee-setting-information-page #elite-bg-video,
body[data-theme="black"] #fee-setting-buy-bnb-page #elite-bg-video,
body[data-theme="black"] #info-profit #elite-bg-video,
body[data-theme="black"] #asset-credit-info-page #elite-bg-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
}
/* Header drawer Rincian (info-profit & credit info): transparan di awal
   (video terlihat penuh), semi-gelap hanya saat di-scroll — seperti drawer
   lain. Selector ber-ID supaya menang atas state .header-scrolled global
   yang memasang tekstur pekat. */
body[data-theme="black"]  #vue-tab-info-profit,
body[data-theme="black"]  #vue-tab-asset_credit_info {
  background: transparent !important;
  background-image: none !important;
}
body[data-theme="black"]  #vue-tab-info-profit.header-scrolled,
body[data-theme="black"]  #vue-tab-asset_credit_info.header-scrolled {
  background: rgba(0, 0, 0, 0.85) !important;
}
/* Konten list credit info: div polos (bukan card) -> beri backdrop gelap
   yang sama dengan card drawer lain supaya tidak menumpang video mentah */
body[data-theme="black"]  #vue-asset_credit_info,
body[data-theme="black"]  #vue-asset_credit_info > div,
body[data-theme="black"]  #vue-asset_credit_info .content {
  min-height: calc(100vh - 60px) !important;
}
body[data-theme="black"]  #vue-asset_credit_info .content {
  background-color: rgba(19, 19, 19, 0.9) !important;
}
/* Moon Logic header has .theme-header (bg image) -> force transparent at top */
body[data-theme="black"] #header-formula-moon-logic {
  background: transparent !important;
  background-image: none !important;
}
/* Header when scrolled -> 80% dark, no image */
body[data-theme="black"] #tab-roi-setting.header-scrolled,
body[data-theme="black"] #header-formula-moon-logic.header-scrolled,
body[data-theme="black"] #fee-setting-information-header.header-scrolled,
body[data-theme="black"] #fee-setting-buy-bnb-header.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}
body[data-theme="black"] #tab-profit-roi,
body[data-theme="black"] #tab-profit-roi.header-scrolled {
  background: transparent !important;
  background-image: none !important;
  background-color: transparent !important;
  box-shadow: none !important;
}
/* Header icons -> gradient like the menu */
body[data-theme="black"] #tab-roi-setting .bi,
body[data-theme="black"] #tab-profit-roi .bi,
/* `.bi-info-circle-fill` / `.bi-question-circle-fill` dikecualikan: keduanya
   punya perlakuan sendiri (bulatan emas dengan huruf tembus, black:513), dan
   selector ber-ID di sini akan mengalahkannya sehingga icon (i) di ROI Setting
   tampil beda dari icon (i) di halaman lain. */
body[data-theme="black"] #user-roi-setting .bi:not(.bi-info-circle-fill):not(.bi-question-circle-fill),
body[data-theme="black"] #vue-tab-info-profit .bi,
body[data-theme="black"] #vue-tab-asset_credit_info .bi,
body[data-theme="black"] #header-formula-moon-logic .bi,
body[data-theme="black"] #fee-setting-information-header .bi,
body[data-theme="black"] #fee-setting-buy-bnb-header .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* Cards + inline white backgrounds -> Card/Table BG @80% */
body[data-theme="black"] #roi-setting .card.card-style,
body[data-theme="black"] #formula-moon-logic .card.card-style,
body[data-theme="black"] #fee-setting-information-page .card.card-style,
body[data-theme="black"] #fee-setting-buy-bnb-page .card.card-style {
  background-color: rgba(19, 19, 19, 0.8) !important;
  border-color: rgba(241, 202, 118, 0.3) !important;
}
body[data-theme="black"] #collapse-list-5 {
  background-color: transparent !important;
}
/* =========================================================================
   SAVING (#saving-page) — video bg + theme
   ========================================================================= */
/* Video background: FIXED to the panel viewport so it never scrolls with content */
body[data-theme="black"] #saving-page #elite-bg-video {
  position: fixed;
  top: 0; left: 0;
  width: 100%; max-width: 450px; /* selebar panel */
  height: 100vh;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
}
/* Cegah scroll nyambung ke halaman di belakang panel */
body[data-theme="black"] #saving-page {
  overscroll-behavior: contain;
}
body[data-theme="black"] #saving-page moonbot-bg {
  display: none !important;
}
/* Header when scrolled -> 80% dark, no image */
body[data-theme="black"] #staking-header.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}
/* Header icons -> gradient like the menu */
body[data-theme="black"] #staking-header .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* Cards + inline white backgrounds -> Card/Table BG @80% */
/* Tanpa border emas: garisnya menumpuk dengan bingkai `.content` di dalamnya
   dan dengan rule global `.card.card-style` (black:1514), jadi kartu Saving
   terbaca sebagai kotak-dalam-kotak. Kedalaman diambil dari shadow gelap
   lembut seperti tema default. */
body[data-theme="black"] #saving-page .card.card-style {
  background-color: rgba(19, 19, 19, 0.8) !important;
  border: none !important;
  box-shadow: rgb(0 0 0 / 40%) 0px 0px 15px -5px !important;
}
/* =========================================================================
   SAVING HISTORY / KEUNTUNGAN HARIAN (#saving-history) — video bg + cards
   ========================================================================= */
body[data-theme="black"] #saving-history #elite-bg-video {
  position: fixed;
  top: 0; left: 0;
  width: 100%; max-width: 450px;
  height: 100vh;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
}
/* Header: transparan di atas (rule global .top-header.sticky sudah menangani),
   solid 80% saat scroll */
body[data-theme="black"] #vue-tab-saving-history.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}
body[data-theme="black"] #vue-tab-saving-history .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* Cards seperti target: ada margin, rounded, jarak antar card, bg @80%.
   Border emas dilepas (sejalan dengan kartu Rincian & riwayat transaksi) —
   pemisah antar item sudah cukup dari jarak `margin: 12px 15px`. */
body[data-theme="black"] #vue-saving-history .card.card-style {
  background-color: rgba(19, 19, 19, 0.8) !important;
  margin: 12px 15px !important;
  border-radius: 12px !important;
  border: 1px solid rgba(241, 202, 118, 0.35) !important;
  box-shadow: rgb(0 0 0 / 40%) 0px 0px 15px -5px !important;
}
/* Divider dalam card -> ungu halus */
body[data-theme="black"] #vue-saving-history .divider {
  background-color: rgba(241, 202, 118, 0.25) !important;
}
/* Nama koin (USDT) masih ungu tema elite. Inline-nya ditulis TANPA spasi —
   `rgb(146,76,227)` (saving-history.html:45) — tapi begitu Vue me-render ulang
   kartunya, atribut style-nya diserialisasi browser jadi bentuk BERSPASI.
   Kedua bentuk (plus hex-nya) wajib disebut supaya kena di dua-duanya. */
body[data-theme="black"] #vue-saving-history [style*="color: rgb(146, 76, 227)"],
body[data-theme="black"] #vue-saving-history [style*="color:rgb(146, 76, 227)"],
body[data-theme="black"] #vue-saving-history [style*="color: rgb(146,76,227)"],
body[data-theme="black"] #vue-saving-history [style*="color:rgb(146,76,227)"],
body[data-theme="black"] #vue-saving-history [style*="color: #924ce3"],
body[data-theme="black"] #vue-saving-history [style*="color:#924ce3"] {
  color: var(--th-accent-2, #F5CD6B) !important;
}
/* `.color-black` bawaannya `#000 !important` (style.css:1129) — nomor
   settlement jadi hitam pekat di atas kartu hitam. Panel ini SIBLING dari
   `#saving-page` (index.html:1012), jadi blok `#saving-page .color-black`
   tidak menjangkaunya dan harus ditulis sendiri. */
body[data-theme="black"] #vue-saving-history .color-black,
body[data-theme="black"] #vue-saving-history .color-theme {
  color: #ffffff !important;
}
body[data-theme="black"] #vue-saving-history p {
  color: #e2e8f0 !important;
}
body[data-theme="black"] #vue-saving-history .font-11:not(.color-black):not(.color-theme) {
  color: #94a3b8 !important;
}
body[data-theme="black"] #vue-saving-history [style*="color: #36b693"],
body[data-theme="black"] #vue-saving-history [style*="color: rgb(54, 182, 147)"],
body[data-theme="black"] #vue-saving-history [style*="color:rgb(54, 182, 147)"] {
  color: var(--th-status-positive, #4ED58B) !important;
}
/* =========================================================================
   BONUS (#bonus-page) + FEE DETAIL (#fee-setting-information-detail-page)
   ========================================================================= */
body[data-theme="black"] #bonus-page #elite-bg-video,
body[data-theme="black"] #fee-setting-information-detail-page #elite-bg-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
}
body[data-theme="black"] #bonus-page moonbot-bg {
  display: none !important;
}
/* Header scrolled -> 80% dark */
body[data-theme="black"] #user-bonus-header.header-scrolled,
body[data-theme="black"] #fee-setting-information-detail-header.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}
/* Header icons gradient */
body[data-theme="black"] #user-bonus-header .bi,
body[data-theme="black"] #fee-setting-information-detail-header .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* Cards + white backgrounds -> @85%, border gold, gold inner shadow */
body[data-theme="black"] #bonus-page .card.card-style,
body[data-theme="black"] #bonus-page .content:not(:has(> #div-withdrawal-bonus)),
body[data-theme="black"] #user-bonus .content:not(:has(> #div-withdrawal-bonus)),
body[data-theme="black"] #user-bonus .bg-white,
body[data-theme="black"] #user-bonus [style*="background-color: white"],
body[data-theme="black"] #user-bonus [style*="background-color: rgba(255, 255, 255"],
body[data-theme="black"] #user-bonus [style*="background-color: rgb(255, 255, 255)"],
body[data-theme="black"] #user-bonus [style*="background-color: #fff"],
body[data-theme="black"] #profit-page .card.card-style,
body[data-theme="black"] #profit-page .content,
body[data-theme="black"] #profit-page [style*="background-color: white"],
body[data-theme="black"] #profit-page [style*="background-color: rgba(255, 255, 255"],
body[data-theme="black"] #profit-page [style*="background-color: rgb(255, 255, 255)"],
body[data-theme="black"] #user-profit .content,
body[data-theme="black"] #fee-setting-information-detail-page .card.card-style {
  background-color: rgba(19, 19, 19, 0.85) !important;
  border: 1px solid rgba(241, 202, 118, 0.35) !important;
  box-shadow: inset 0 0 10px rgba(241, 202, 118, 0.3) !important;
}

/* Wrapper .content khusus withdrawal: TANPA border, background, atau shadow agar tidak ada double border / garis liar saat collapsed */
body[data-theme="black"] #bonus-page .content:has(> #div-withdrawal-bonus),
body[data-theme="black"] #user-bonus .content:has(> #div-withdrawal-bonus),
body[data-theme="black"] #asset-page .content:has(> #div-withdrawal-asset),
body[data-theme="black"] #user-asset .content:has(> #div-withdrawal-asset),
body[data-theme="black"] .content:has(> #div-withdrawal-bonus),
body[data-theme="black"] .content:has(> #div-withdrawal-asset) {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  border-color: transparent !important;
  box-shadow: none !important;
  padding: 0 !important;
}

body[data-theme="black"] .content:has(> .display-withdrawal-off) {
  display: none !important;
}

body[data-theme="black"] #bonus-page h6,
body[data-theme="black"] #bonus-page i:not(.color-purple):not(.bi-chevron-right):not(.bi-info-circle-fill):not(.bi-arrow-down-circle-fill),
body[data-theme="black"] #bonus-page a:not(.btn-uni),
body[data-theme="black"] #bonus-page [style*="color: black"],
body[data-theme="black"] #bonus-page [style*="color:black"],
body[data-theme="black"] #user-bonus h6,
body[data-theme="black"] #user-bonus i:not(.color-purple):not(.bi-chevron-right):not(.bi-info-circle-fill):not(.bi-arrow-down-circle-fill),
body[data-theme="black"] #user-bonus a:not(.btn-uni),
body[data-theme="black"] #user-bonus [style*="color: black"],
body[data-theme="black"] #user-bonus [style*="color:black"],
body[data-theme="black"] #profit-page h6,
body[data-theme="black"] #profit-page i:not(.color-purple),
body[data-theme="black"] #profit-page a:not(.btn-uni),
body[data-theme="black"] #profit-page [style*="color: black"],
body[data-theme="black"] #profit-page [style*="color:black"],
body[data-theme="black"] #user-profit h6,
body[data-theme="black"] #user-profit i:not(.color-purple),
body[data-theme="black"] #user-profit [style*="color: black"],
body[data-theme="black"] #user-profit [style*="color:black"] {
  color: #FDFDFE !important;
}

body[data-theme="black"] #bonus-page .divider,
body[data-theme="black"] #user-bonus .divider,
body[data-theme="black"] #profit-page .divider,
body[data-theme="black"] #user-profit .divider,
body[data-theme="black"] #bonus-page [style*="background-color: black"],
body[data-theme="black"] #user-bonus [style*="background-color: black"],
body[data-theme="black"] #bonus-page [style*="background-color: #000"],
body[data-theme="black"] #user-bonus [style*="background-color: #000"] {
  background-color: rgba(255, 255, 255, 0.2) !important;
}
/* =========================================================================
   SUMMARY (#summary-page) — video bg + theme (mirror bonus)
   ========================================================================= */
body[data-theme="black"] #summary-page #elite-bg-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
}
/* Header saat scroll -> 80% gelap tanpa image */
body[data-theme="black"] #tab-summary.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}
/* Icon header -> gradient ala menu */
body[data-theme="black"] #tab-summary .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* Kartu + background putih inline -> gelap @80% */
body[data-theme="black"] #user-summary .content,
body[data-theme="black"] #user-summary [style*="background-color: rgb(255, 255, 255)"],
body[data-theme="black"] #user-summary [style*="background-color: rgba(255, 255, 255, 1)"] {
  background-color: rgba(19, 19, 19, 0.8) !important;
  border: 1px solid rgba(241, 202, 118, 0.3) !important;
}
/* Divider gelap -> terang */
body[data-theme="black"] #user-summary .divider[style*="background-color: black"],
body[data-theme="black"] #user-summary [style*="background-color: black"] {
  background-color: rgba(241, 202, 118, 0.4) !important;
}
/* Teks gelap -> terang */
body[data-theme="black"] #user-summary [style*="color: black"],
body[data-theme="black"] #user-summary .color-black {
  color: #FDFDFE !important;
}
/* =========================================================================
   TOP COIN SETTING (#top-coin-setting-page) — video bg + theme (mirror bonus)
   ========================================================================= */
body[data-theme="black"] #top-coin-setting-page #elite-bg-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
}
/* Header saat scroll -> 80% gelap tanpa image */
body[data-theme="black"] #vue-tab-coin-setting.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}
/* Icon header -> gradient ala menu */
body[data-theme="black"] #vue-tab-coin-setting .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* Strip putih (header tabel, baris koin, removed coin) -> gelap @80% */
body[data-theme="black"] #top-coin-setting-page .bg-white {
  background-color: rgba(19, 19, 19, 0.8) !important;
  border-color: rgba(241, 202, 118, 0.3) !important;
}
/* Kartu list transparan agar tidak dobel dengan baris gelap */
body[data-theme="black"] #vue-coin-setting .card.card-style {
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
}
/* Teks gelap -> terang */
body[data-theme="black"] #top-coin-setting-page .color-theme,
body[data-theme="black"] #top-coin-setting-page .color-black {
  color: #FDFDFE !important;
}
/* =========================================================================
   MENU DRAWER (#navigation) — video background
   ========================================================================= */
/* .nav-container video background dibuat absolute setinggi drawer agar tidak menyebabkan overflow scroll */
body[data-theme="black"] #navigation #elite-bg-video {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  z-index: -1;
  pointer-events: none;
  border: 0;
}
body[data-theme="black"] #navigation moonbot-bg {
  display: none !important;
}
body[data-theme="black"] #menu-info {
  background: transparent !important;
  border: none !important;
  border-bottom: none !important;
  box-shadow: none !important;
}
body[data-theme="black"] #home-dropdown-list {
  position: relative !important;
  border-top: none !important;
  /* Overlay hitam semi-transparan, TANPA blur — detail nebula di video tetap
     tajam, cuma diredupkan. Alpha dinaikkan 0.22 -> 0.5 karena tanpa blur
     nilai serendah itu tidak cukup memisahkan teks dari latar. */
  background-color: rgba(0, 0, 0, 0.5) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  box-shadow: inset 0 12px 18px -12px rgba(254, 249, 162, 0.25) !important;
}
body[data-theme="black"] #home-dropdown-list::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: linear-gradient(90deg, rgba(254, 249, 162, 0.95) 0%, rgba(241, 202, 118, 0.5) 60%, rgba(219, 177, 78, 0.05) 100%);
  box-shadow: 0 0 8px #FEF9A2, 0 0 14px rgba(241, 202, 118, 0.6) !important;
  pointer-events: none;
  z-index: 2;
}
/* Nama user: emas rata -> gradasi metalik "mengkilat" (putih di puncak, turun
   ke emas), memakai teknik background-clip: text yang sudah dipakai untuk icon
   header di file ini. `-webkit-text-fill-color: transparent` yang bikin isi
   huruf memakai gradient, bukan `color`; `color` tetap ditulis sebagai fallback
   untuk mesin yang tidak mendukung background-clip pada teks.
   drop-shadow dipasang lewat `filter` (bukan text-shadow) supaya glow-nya
   mengikuti bentuk huruf dan tidak tercoret oleh fill transparan. */
body[data-theme="black"] #menu-username {
  background: linear-gradient(180deg,
              #FFFFFF 0%,
              #FEF9A2 38%,
              #FFC85B 72%,
              #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: var(--th-accent-2, #F5CD6B) !important;
  display: inline-block;
  filter: drop-shadow(0 0 6px rgba(255, 200, 91, 0.45));
  font-weight: 700 !important;
  letter-spacing: 0.5px !important;
}
/* =========================================================================
   PROFIT SUMMARY (#profit-summary) & TRANSACTION (#transaction)
   — video bg + tema seperti coin detail (non-default saja)
   ========================================================================= */
body[data-theme="black"] #profit-summary #elite-bg-video,
body[data-theme="black"] #transaction #elite-bg-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
}
/* Header saat scroll -> 80% gelap tanpa image */
body[data-theme="black"] #tab-user-profit-summary.header-scrolled,
body[data-theme="black"] #transaction .top-header.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}
/* Icon header -> gradient ala menu */
body[data-theme="black"] #tab-user-profit-summary .bi,
body[data-theme="black"] #transaction .top-header .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* Kartu -> 80% transparan seperti coin detail (menimpa rule solid #0f0a21 lama) */
body[data-theme="black"] #user-profit-summary .content,
body[data-theme="black"] #user-profit-summary .card {
  background-color: rgba(19, 19, 19, 0.88) !important;
  border: 1px solid rgba(241, 202, 118, 0.4) !important;
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
  border-radius: 0px !important;
}
/* Kartu detail transaksi dirender `v-for` dengan inline `margin: 0`, jadi border
   emas penuh di tiap kartu menempel satu sama lain dan terbaca sebagai deretan
   kotak bergaris dobel. Bordernya dilepas: kedalaman cukup dari shadow lembut
   (sama seperti tema default), dan `.divider` di dalam kartu tetap memisahkan
   baris. Rule global `.card.card-style` (black:1514) juga memasang border +
   glow emas — selector ber-ID di sini (0,2,1 vs 0,5,1 + ID) yang menimpanya,
   dan `.card.card-style` ikut disebut supaya menang atas rule radius 16px. */
body[data-theme="black"] #vue-transaction-history .content.bg-theme,
body[data-theme="black"] #vue-transaction-history .card,
body[data-theme="black"] #vue-transaction-history .card.card-style {
  background-color: rgba(19, 19, 19, 0.88) !important;
  border: none !important;
  box-shadow: rgb(0 0 0 / 40%) 0px 0px 15px -5px !important;
  border-radius: 0px !important;
}
/* Fix teks color-black & p/span di riwayat transaksi mode Black agar tidak gelap */
body[data-theme="black"] #transaction .color-black,
body[data-theme="black"] #transaction a[style*="color: black"],
body[data-theme="black"] #transaction [style*="color:black"],
body[data-theme="black"] #transaction [style*="color: black"],
body[data-theme="black"] #vue-transaction-history .color-black,
body[data-theme="black"] #vue-transaction-history a[style*="color: black"],
body[data-theme="black"] #vue-transaction-history [style*="color:black"],
body[data-theme="black"] #vue-transaction-history [style*="color: black"],
body[data-theme="black"] #vue-transaction-history p.color-black,
body[data-theme="black"] #vue-transaction-history div.color-black {
  color: #ffffff !important;
}
body[data-theme="black"] #vue-transaction-history p {
  color: #e2e8f0 !important;
}
body[data-theme="black"] #vue-transaction-history .font-11:not(.color-black) {
  color: #94a3b8 !important;
}
body[data-theme="black"] #vue-transaction-history .divider {
  background-color: rgba(241, 202, 118, 0.25) !important;
  opacity: 0.6 !important;
}

/* Fix Profit Summary (#profit-summary & #user-profit-summary) mode Black */
body[data-theme="black"] #profit-summary #elite-bg-video {
  position: fixed;
  top: 0; left: 0;
  width: 100%; max-width: 450px;
  height: 100vh;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
  display: block !important;
}
body[data-theme="black"] #profit-summary .top-offset {
  background: transparent !important;
  background-image: none !important;
}
body[data-theme="black"] #profit-summary #tab-user-profit-summary {
  background: transparent !important;
}
body[data-theme="black"] #profit-summary #tab-user-profit-summary.header-scrolled {
  background-image: none !important;
  background-color: rgba(19, 19, 19, 0.90) !important;
}
body[data-theme="black"] #profit-summary #tab-user-profit-summary .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
body[data-theme="black"] #profit-summary .card.card-style,
body[data-theme="black"] #profit-summary .content.my-0,
body[data-theme="black"] #user-profit-summary .card.card-style,
body[data-theme="black"] #user-profit-summary .content.my-0,
body[data-theme="black"] #profit-summary [style*="background-color: rgb(255, 255, 255)"],
body[data-theme="black"] #profit-summary [style*="background-color: white"],
body[data-theme="black"] #profit-summary [style*="background-color: rgba(255, 255, 255, 1)"],
body[data-theme="black"] #profit-summary [style*="background-color: #fff"],
body[data-theme="black"] #user-profit-summary [style*="background-color: rgb(255, 255, 255)"],
body[data-theme="black"] #user-profit-summary [style*="background-color: white"],
body[data-theme="black"] #user-profit-summary [style*="background-color: rgba(255, 255, 255, 1)"],
body[data-theme="black"] #user-profit-summary [style*="background-color: #fff"] {
  background-color: rgba(19, 19, 19, 0.88) !important;
  border: 1px solid rgba(241, 202, 118, 0.4) !important;
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
}
body[data-theme="black"] #profit-summary .searchBar-container.bg-theme {
  background-color: transparent !important;
}
body[data-theme="black"] #profit-summary .color-black,
body[data-theme="black"] #profit-summary [style*="color: black"],
body[data-theme="black"] #profit-summary [style*="color: #212121"],
body[data-theme="black"] #profit-summary h6[style*="color: black"],
body[data-theme="black"] #profit-summary i[style*="color: black"],
body[data-theme="black"] #profit-summary a[style*="color: black"],
body[data-theme="black"] #user-profit-summary .color-black,
body[data-theme="black"] #user-profit-summary [style*="color: black"],
body[data-theme="black"] #user-profit-summary [style*="color: #212121"],
body[data-theme="black"] #user-profit-summary h6,
body[data-theme="black"] #user-profit-summary i,
body[data-theme="black"] #user-profit-summary a,
body[data-theme="black"] #user-profit-summary label {
  color: #ffffff !important;
}
body[data-theme="black"] #profit-summary .color-purple {
  color: #f5cd6b !important;
}
body[data-theme="black"] #profit-summary .divider {
  background-color: rgba(241, 202, 118, 0.25) !important;
  opacity: 0.6 !important;
}
body[data-theme="black"] #profit-summary p.color-theme {
  color: #e2e8f0 !important;
}
body[data-theme="black"] #profit-summary .filter-box {
  background-color: rgba(255, 255, 255, 0.1) !important;
  border-radius: 8px;
  padding: 2px 8px;
}
/* =========================================================================
   NOTIFICATION MAINTENANCE (#notification-mt) — tema non-default
   ========================================================================= */
body[data-theme="black"] #notification-mt .floating-maintenance {
  background-color: rgba(19, 19, 19, 0.97) !important; /* Modal BG */
  border: 1px solid rgba(241, 202, 118, 0.55) !important; /* Glow Purple */
  box-shadow: 0 0 18px rgba(241, 202, 118, 0.45),
              0 15px 25px rgba(0, 0, 0, 0.35) !important;
  color: #FDFDFE !important; /* Text Primary */
}
/* Make any inner text bright (to override backend inline grey styles) */
body[data-theme="black"] #notification-mt .floating-maintenance p,
body[data-theme="black"] #notification-mt .floating-maintenance div,
body[data-theme="black"] #notification-mt .floating-maintenance span,
body[data-theme="black"] #notification-mt .floating-maintenance h1,
body[data-theme="black"] #notification-mt .floating-maintenance h2,
body[data-theme="black"] #notification-mt .floating-maintenance h3,
body[data-theme="black"] #notification-mt .floating-maintenance h4,
body[data-theme="black"] #notification-mt .floating-maintenance h5,
body[data-theme="black"] #notification-mt .floating-maintenance h6,
body[data-theme="black"] #notification-mt .floating-maintenance b,
body[data-theme="black"] #notification-mt .floating-maintenance i,
body[data-theme="black"] #notification-mt .floating-maintenance [style*="color"] {
  color: #ffffff !important;
}
body[data-theme="black"] #notification-mt .floating-maintenance a,
body[data-theme="black"] #notification-mt .floating-maintenance a[style] {
  color: #ffd86b !important; /* Gold Accent (link @MoonbotCareBot) */
}
body[data-theme="black"] #notification-mt .btn-close {
  filter: brightness(0) invert(1) !important;
  opacity: 1 !important;
}
/* =========================================================================
   ANNOUNCEMENT MODALS (.announcement-download-modal) — tema non-default
   ========================================================================= */
body[data-theme="black"] .announcement-download-modal {
  background-color: #131313 !important; /* Modal BG */
  border: 1px solid rgba(241, 202, 118, 0.5) !important;
  box-shadow: 0 0 18px rgba(241, 202, 118, 0.4) !important;
  border-radius: 16px !important;
  overflow: hidden !important;
}
/* Judul & Checklist -> Putih Terang */
body[data-theme="black"] .announcement-download-modal .announcement-download-title,
body[data-theme="black"] .announcement-download-modal h2,
body[data-theme="black"] .announcement-download-modal [style*="color: black"],
body[data-theme="black"] .announcement-download-modal [style*="color:black"] {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}
body[data-theme="black"] .announcement-download-modal .announcement-download-message,
body[data-theme="black"] .announcement-download-modal .announcement-download-message li,
body[data-theme="black"] .announcement-download-modal ul {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  opacity: 1 !important;
}
/* Tombol Primary (btn-download) */
body[data-theme="black"] .announcement-download-modal .btn-download {
  background: transparent !important;
  border: 1px solid rgba(241, 202, 118, 0.8) !important;
  color: var(--th-accent-2, #F5CD6B) !important;
  font-weight: 700 !important;
  box-shadow: 0 0 12px rgba(241, 202, 118, 0.4) !important;
  border-radius: 8px !important;
}
body[data-theme="black"] .announcement-download-modal .btn-download,
body[data-theme="black"] .announcement-download-modal .btn-download *,
body[data-theme="black"] .announcement-download-modal .btn-download span {
  color: var(--th-accent-2, #F5CD6B) !important;
  -webkit-text-fill-color: var(--th-accent-2, #F5CD6B) !important;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8) !important;
}
/* Footer Modal Download App */
body[data-theme="black"] .footer-container-download-app {
  background-color: #131313 !important;
  border-top: 1px solid rgba(241, 202, 118, 0.2) !important;
}
body[data-theme="black"] .footer-link-download-app {
  color: #F5CD6B !important;
}
/* =========================================================================
   POPUP WRAPPERS (#chose-exchanger, #announcement-download-app, #notification-change-top-coin, #feedback-from-user) — BLACK
   ========================================================================= */
body[data-theme="black"] .popUp .card-style-banner,
body[data-theme="black"] .popUp .card.card-style-banner,
body[data-theme="black"] #chose-exchanger .card,
body[data-theme="black"] #chose-exchanger .card-style-banner,
body[data-theme="black"] #chose-exchanger .content,
body[data-theme="black"] #chose-exchanger .popup-container,
body[data-theme="black"] #announcement-download-app .card,
body[data-theme="black"] #announcement-download-app .card-style-banner,
body[data-theme="black"] #announcement-download-app .content,
body[data-theme="black"] #announcement-download-app .popup-container,
body[data-theme="black"] #notification-change-top-coin .card,
body[data-theme="black"] #notification-change-top-coin .card-style-banner,
body[data-theme="black"] #notification-change-top-coin .content,
body[data-theme="black"] #notification-change-top-coin .popup-container,
body[data-theme="black"] #feedback-from-user .card,
body[data-theme="black"] #feedback-from-user .card-style-banner,
body[data-theme="black"] #feedback-from-user .content,
body[data-theme="black"] #feedback-from-user .popup-container {
  background: transparent !important;
  background-color: transparent !important;
  box-shadow: none !important;
  border: none !important;
  border-radius: 0 !important;
  margin: 0 !important;
}
body[data-theme="black"] #chose-exchanger .popUp,
body[data-theme="black"] #announcement-download-app .popUp,
body[data-theme="black"] #notification-change-top-coin .popUp,
body[data-theme="black"] #feedback-from-user .popUp {
  overflow: visible !important;
  padding: 15px !important;
}
body[data-theme="black"] .feedback-form-user-modal {
  background-color: #131313 !important;
  border: 1px solid rgba(241, 202, 118, 0.5) !important;
  box-shadow: 0 0 20px rgba(241, 202, 118, 0.45), 0 16px 36px rgba(0, 0, 0, 0.7) !important;
  border-radius: 16px !important;
  overflow: hidden !important;
}
/* Judul Quick Survey */
body[data-theme="black"] #vue-feedback-form-user h2,
body[data-theme="black"] #vue-feedback-form-user [style*="color: #9b82c4"],
body[data-theme="black"] #vue-feedback-form-user [style*="color:#9b82c4"],
body[data-theme="black"] #vue-feedback-form-user [style*="rgb(155, 130, 196)"],
body[data-theme="black"] #vue-feedback-form-user [style*="rgb(155,130,196)"] {
  color: var(--th-accent-2, #F5CD6B) !important;
  font-size: 18px !important;
  font-weight: 700 !important;
}
/* Pertanyaan */
body[data-theme="black"] .feedback-form-user-modal p,
body[data-theme="black"] .feedback-form-user-modal p[style*="color"],
body[data-theme="black"] .feedback-form-user-modal .color-black {
  color: #D6D6DB !important;
  -webkit-text-fill-color: #D6D6DB !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
}
/* Tombol Tidak (Secondary) */
body[data-theme="black"] .feedback-form-user-modal button[onclick="answerFeedback(0)"],
body[data-theme="black"] .feedback-form-user-modal .btn-feedback-no {
  background: rgba(255, 255, 255, 0.06) !important;
  border: 1px solid rgba(241, 202, 118, 0.3) !important;
  color: #FDFDFE !important;
  -webkit-text-fill-color: #FDFDFE !important;
  border-radius: 8px !important;
  height: 38px !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  box-shadow: none !important;
  transition: all 0.2s ease !important;
}
body[data-theme="black"] .feedback-form-user-modal button[onclick="answerFeedback(0)"]:hover,
body[data-theme="black"] .feedback-form-user-modal .btn-feedback-no:hover {
  background: rgba(241, 202, 118, 0.15) !important;
  border-color: rgba(241, 202, 118, 0.5) !important;
}
/* Tombol Ya (Primary) */
body[data-theme="black"] .feedback-form-user-modal button[onclick="answerFeedback(1)"],
body[data-theme="black"] .feedback-form-user-modal .btn-feedback-yes {
  background: var(--th-accent-grad, linear-gradient(135deg, #ffb72a, #ab7a09)) !important;
  border: 1px solid #ffb72a !important;
  color: #000000 !important;
  -webkit-text-fill-color: #000000 !important;
  box-shadow: 0 0 14px rgba(241, 202, 118, 0.4) !important;
  border-radius: 8px !important;
  height: 38px !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  transition: all 0.2s ease !important;
}
body[data-theme="black"] .feedback-form-user-modal button[onclick="answerFeedback(1)"]:hover,
body[data-theme="black"] .feedback-form-user-modal .btn-feedback-yes:hover {
  filter: brightness(1.1) !important;
  box-shadow: 0 0 20px rgba(241, 202, 118, 0.6) !important;
}
/* =========================================================================
   CHOSE EXCHANGER (#chose-exchanger) — tema non-default
   ========================================================================= */
/* List exchanger */
body[data-theme="black"] #chose-exchanger .dropdown {
  background: #131313 !important; /* Card/Table BG */
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.4) !important;
}
body[data-theme="black"] #chose-exchanger .dropdown-item {
  border-bottom: 1px solid rgba(241, 202, 118, 0.25) !important;
}
body[data-theme="black"] #chose-exchanger .dropdown-item:hover {
  background: rgba(241, 202, 118, 0.18) !important;
}
/* Nama exchanger -> terang (span berwarna brand, mis. Tokocrypto, tetap) */
body[data-theme="black"] #chose-exchanger .dropdown-item .name {
  color: #FDFDFE;
}
/* =========================================================================
   NOTIF CHANGE TOP COIN — tombol "Pergi ke Pengaturan Moonbot"
   Saat tema aktif: gaya button-primary (gradient accent + glow); default tetap.
   ========================================================================= */
body[data-theme="black"] #notification-change-top-coin .announcement-download-modal,
body[data-theme="black"] #notification-change-top-coin .announcement-download-modal div,
body[data-theme="black"] #notification-change-top-coin .announcement-download-modal [style*="color"] {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}
body[data-theme="black"] #notification-change-top-coin a.btn.btn-download,
body[data-theme="black"] #notification-change-top-coin a.btn.btn-download *,
body[data-theme="black"] #notification-change-top-coin a.btn.btn-download span {
  background: var(--th-accent-grad, #FFC85B) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  border: none !important;
  box-shadow: var(--th-btn-primary-shadow, none) !important;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5) !important;
}
/* =========================================================================
   FORMULA (#formula), BATCH FORMULA (#batch-formula),
   BATCH MOON LOGIC (#batch-moon-logic) — video bg + tema seperti coin detail
   ========================================================================= */
body[data-theme="black"] #formula #elite-bg-video,
body[data-theme="black"] #batch-formula #elite-bg-video,
body[data-theme="black"] #batch-moon-logic #elite-bg-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
}
/* Header batch moon logic punya .theme-header (bg image) -> transparan di atas */
body[data-theme="black"] #header-batch-formula-moon-logic {
  background: transparent !important;
  background-image: none !important;
}
/* Header saat scroll -> 80% gelap tanpa image */
body[data-theme="black"] #header-formula.header-scrolled,
body[data-theme="black"] #header-batch-formula.header-scrolled,
body[data-theme="black"] #header-batch-formula-moon-logic.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}
/* Icon header -> gradient ala menu */
body[data-theme="black"] #header-formula .bi,
body[data-theme="black"] #header-batch-formula .bi,
body[data-theme="black"] #header-batch-formula-moon-logic .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* Kartu -> 80% transparan (menimpa rule solid #0f0a21 lama untuk formula) */
body[data-theme="black"] #formula .card.card-style,
body[data-theme="black"] #formula .content.bg-theme,
body[data-theme="black"] #batch-formula .card.card-style,
body[data-theme="black"] #batch-formula .content.bg-theme,
body[data-theme="black"] #batch-moon-logic .card.card-style,
body[data-theme="black"] #batch-moon-logic .content.bg-theme {
  background-color: rgba(19, 19, 19, 0.80) !important;
  border: 1px solid rgba(241, 202, 118, 0.4) !important;
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
}
/* Teks gelap -> terang. Padanan elit:3214 yang belum ada di black: label
   seperti "Konfigurasi Penyeimbangan", "Trailing Profit", dan chevron
   `.bi.color-black` semuanya memakai kelas ini. */
body[data-theme="black"] #formula .color-black,
body[data-theme="black"] #batch-formula .color-black,
body[data-theme="black"] #batch-moon-logic .color-black,
body[data-theme="black"] #formula-moon-logic .color-black {
  color: var(--th-text) !important;
}
/* Isi accordion Trailing Profit: label baris (`.margin-config .col`, tanpa
   kelas warna sama sekali sehingga mewarisi teks gelap `.theme-light`),
   catatan `.color-theme`, dan satuan `%` di input-group. */
body[data-theme="black"] #formula .margin-config .col,
body[data-theme="black"] #batch-formula .margin-config .col,
body[data-theme="black"] #formula .color-theme,
body[data-theme="black"] #batch-formula .color-theme,
body[data-theme="black"] #batch-moon-logic .color-theme,
body[data-theme="black"] #formula-moon-logic .color-theme,
body[data-theme="black"] #formula .input-group-text,
body[data-theme="black"] #batch-formula .input-group-text {
  color: var(--th-text) !important;
}
/* Teks catatan yang di default ungu -> aksen emas */
body[data-theme="black"] #formula .color-purple,
body[data-theme="black"] #batch-formula .color-purple {
  color: var(--th-accent-2, #F5CD6B) !important;
}
/* =========================================================================
   TRADE PAGE — nama koin di list (inline color: black) -> terang
   ========================================================================= */
body[data-theme="black"] #trade-page h1[style*="color: black"] {
  color: #FDFDFE !important; /* Text Primary */
}
body[data-theme="black"] #trade-page h1 .color-gray-dark {
  color: #9B9591 !important; /* Text Secondary (/USDT) */
}
/* =========================================================================
   TRADING VOLUME HISTORY (#trading-volume-history) — video bg + tema
   ========================================================================= */
body[data-theme="black"] #trading-volume-history #elite-bg-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
}
/* Header saat scroll -> 80% gelap tanpa image */
body[data-theme="black"] #trading-volume-history .top-header.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}
/* Icon header -> gradient ala menu */
body[data-theme="black"] #trading-volume-history .top-header .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* Kartu -> rounded + berjarak + 80% gelap + border ungu (gaya target) */
body[data-theme="black"] #vue-trading-history-body .card.card-style {
  background-color: rgba(19, 19, 19, 0.8) !important;
  margin: 12px 15px !important;
  border-radius: 12px !important;
  /* Sebelumnya border 0.25 + glow 0.15 — nyaris tak terlihat di atas video
     nebula, jadi kartunya terbaca sebagai kotak hitam polos. */
  border: 1px solid var(--th-border-solid, #F1CA76) !important;
  box-shadow: 0 0 12px rgba(241, 202, 118, 0.35) !important;
}
/* Override black texts in Coin List (Ticker) */
body[data-theme="black"] .ticker-content .color-black,
body[data-theme="black"] .ticker-content [style*="color: black"],
body[data-theme="black"] .ticker-content [style*="color:black"] {
    color: white !important;
}
body[data-theme="black"] .ticker-content .color-gray,
body[data-theme="black"] .ticker-content .color-gray-dark {
    color: rgba(255, 255, 255, 0.6) !important;
}
/* Label status AVG: ON/OFF di kartu coin — teks putih dengan outline gelap
   supaya tetap terbaca di bagian background yang terang (cincin planet, dll.) */
body[data-theme="black"] .ticker-content .d-flex.ms-auto > .font-11 {
    color: #fff !important;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.9), 0 0 6px rgba(0, 0, 0, 0.75) !important;
}
/* Teks kartu: tanggal pakai `.color-black` dan label pakai `.color-theme`
   (keduanya gelap dari style.css), jadi tenggelam di kartu gelap. Padanan
   blok elit:1420. */
body[data-theme="black"] #vue-trading-history-body h5,
body[data-theme="black"] #vue-trading-history-body h6,
body[data-theme="black"] #vue-trading-history-body span,
body[data-theme="black"] #vue-trading-history-body p,
body[data-theme="black"] #vue-trading-history-body .color-black,
body[data-theme="black"] #vue-trading-history-body .color-theme,
body[data-theme="black"] #vue-trading-history-body [style*="color: black"],
body[data-theme="black"] #vue-trading-history-body [style*="color:black"] {
  color: var(--th-text) !important;
}
/* Nilai volume (.color-purple) tetap jadi aksen, tapi emas */
body[data-theme="black"] #vue-trading-history-body .color-purple {
  color: var(--th-accent-2, #F5CD6B) !important;
}
/* Divider dalam kartu -> abu tipis */
body[data-theme="black"] #vue-trading-history-body .divider {
  display: block !important;
  height: 1px !important;
  background-color: rgba(150, 146, 157, 0.25) !important;
  opacity: 1 !important;
}
/* =========================================================================
   BATCH SETTINGS (Sekumpulan Pengaturan, #carousel-batch di trade)
   ========================================================================= */
body[data-theme="black"] #multiple-settings-header .color-theme,
body[data-theme="black"] #multiple-settings-header label,
body[data-theme="black"] #multiple-settings-header a {
  color: #FDFDFE !important;
}
body[data-theme="black"] #multiple-settings-header .bi-question-circle-fill {
  color: #DBB14E !important;
}
body[data-theme="black"] #carousel-batch button {
  background: transparent !important;
}
body[data-theme="black"] #carousel-batch .icon,
body[data-theme="black"] .icon.rounded-s {
  background: rgba(19, 19, 19, 0.88) !important;
  border: 1px solid rgba(241, 202, 118, 0.4) !important;
  box-shadow: 0 0 10px rgba(241, 202, 118, 0.2) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 45px !important;
  height: 45px !important;
  line-height: normal !important;
  transform: none !important;
}
body[data-theme="black"] #carousel-batch .icon i,
body[data-theme="black"] .icon.rounded-s > i {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  line-height: 1 !important;
  vertical-align: 0 !important;
  margin: 0 !important;
}
body[data-theme="black"] #carousel-batch .icon i::before,
body[data-theme="black"] .icon.rounded-s > i::before {
  vertical-align: 0 !important;
  line-height: 1 !important;
}
body[data-theme="black"] #carousel-batch .icon img,
body[data-theme="black"] .icon.rounded-s > img {
  display: block !important;
  margin: auto !important;
}
body[data-theme="black"] #carousel-batch button i.font-11,
body[data-theme="black"] #carousel-batch button i:not(.bi),
body[data-theme="black"] #carousel-batch button span,
body[data-theme="black"] #carousel-batch button div,
body[data-theme="black"] #carousel-batch .btn-investor-mode {
  color: #ffffff !important;
}
body[data-theme="black"] #carousel-batch .divider {
  background-color: rgba(241, 202, 118, 0.25) !important;
  opacity: 0.5 !important;
}
/* Indicator bar: ikut elite — tanpa bar/gradient, hanya titik-titik.
   Bar emas sebelumnya bikin blok olive lebar di atas carousel. */
body[data-theme="black"] #carousel-batch .carousel-indicators {
  background: none !important;
  background-color: transparent !important;
  box-shadow: none !important;
  border: none !important;
}
/* Titik indikator pakai warna tema black (emas).
   `#carousel-batch button { background: transparent }` di atas memakai shorthand
   `background`, yang ikut me-reset background-clip bootstrap (padding-box) ke
   border-box. Titik bootstrap itu kotak 6x6 dengan border atas/bawah transparan
   10px, jadi begitu clip-nya border-box background mengisi kotak 6x26 dan
   titiknya jadi elips tinggi. Kembalikan padding-box supaya bulat lagi. 
   */
  /* Selector dipatok ke [data-bs-slide-to] karena tombol prev/next ikut berada
   di dalam .carousel-indicators dan sama-sama punya [data-bs-target] — kalau
   tidak, keduanya ikut dapat background emas dan jadi blob di kiri-kanan. */
body[data-theme="black"] #carousel-batch .carousel-indicators button[data-bs-slide-to] {
  background-clip: padding-box !important;
  background-color: #F1CA76 !important;
  box-shadow: none !important;
}
body[data-theme="black"] #carousel-batch .carousel-indicators button[data-bs-slide-to].active {
  background-clip: padding-box !important;
  background-color: #DBB14E !important;
  box-shadow: none !important;
}
/* Tombol prev/next: tanpa lingkaran/blob, hanya chevron emas seperti icon lain.
   Bentuk bulat 6x6-nya datang dari rule bootstrap [data-bs-target] yang juga
   kena tombol ini, jadi border transparan & radius-nya dinolkan. */
body[data-theme="black"] #carousel-batch .carousel-control-prev,
body[data-theme="black"] #carousel-batch .carousel-control-next {
  background: none !important;
  background-color: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  height: auto !important;
  opacity: 1 !important;
}
/* Chevron bootstrap itu SVG putih di background-image — dijadikan emas dengan
   filter recolor tema yang sama dipakai icon mono lain. */
body[data-theme="black"] #carousel-batch .carousel-control-prev-icon,
body[data-theme="black"] #carousel-batch .carousel-control-next-icon {
  filter: var(--th-icon-filter) !important;
  width: 16px !important;
  height: 16px !important;
  background-size: 100% 100% !important;
}
/* =========================================================================
   KONFIGURASI PENYEIMBANGAN — single (#margin-configuration) &
   batch (#batch-margin-configuration) — video bg + tema seperti coin detail
   ========================================================================= */
body[data-theme="black"] #margin-configuration #elite-bg-video,
body[data-theme="black"] #batch-margin-configuration #elite-bg-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
}
/* Header saat scroll -> 80% gelap tanpa image */
body[data-theme="black"] #header-balancing-configuration.header-scrolled,
body[data-theme="black"] #header-batch-balancing-configuration.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}
/* Icon header -> gradient ala menu */
body[data-theme="black"] #header-balancing-configuration .bi,
body[data-theme="black"] #header-batch-balancing-configuration .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* Body tabel (inline background: white) -> 80% gelap */
body[data-theme="black"] #body-balancing-configuration .content,
body[data-theme="black"] #body-batch-balancing-configuration .content {
  background: rgba(19, 19, 19, 0.80) !important;
}
body[data-theme="black"] #body-balancing-configuration input,
body[data-theme="black"] #body-batch-balancing-configuration input {
  background: rgba(255, 255, 255, 0.08) !important;
  color: #FDFDFE !important;
  border: 1px solid rgba(255, 255, 255, 0.3) !important;
  box-shadow: 0 0 4px rgba(255, 255, 255, 0.1) !important;
  border-radius: 4px;
}
body[data-theme="black"] #body-balancing-configuration input:disabled,
body[data-theme="black"] #body-batch-balancing-configuration input:disabled {
  background: rgba(255, 255, 255, 0.04) !important;
  color: #9B9591 !important; /* Text Secondary */
}
/* Divider antar baris -> emas halus */
body[data-theme="black"] #body-balancing-configuration .divider,
body[data-theme="black"] #body-batch-balancing-configuration .divider {
  background-color: rgba(241, 202, 118, 0.25) !important;
}
/* Pemisah VERTIKAL antar kolom (Drop Rate | MBA | Take Profit). Digambar
   sebagai inline `border-left` di dalam GetMarginContent() — single memakai
   ungu `rgba(146, 75, 225, 0.2)` (margin_configuration.html:292/302) dan batch
   memakai putih `rgba(255, 255, 255, 0.2)` (batch_margin_configuration.html).
   Keduanya disamakan ke emas di sini supaya sejalan dengan divider horizontal
   di atas; selektornya kelas + atribut, bukan warnanya, agar tidak pecah kalau
   nilai inline-nya diganti. */
body[data-theme="black"] #body-balancing-configuration .margin-config[style*="border-left"],
body[data-theme="black"] #body-batch-balancing-configuration .margin-config[style*="border-left"] {
  border-left-color: rgba(241, 202, 118, 0.25) !important;
}
/* ========================================================
   SAVING PAGE 
   ======================================================== */
body[data-theme="black"] #elite-bg-video-saving {
  display: block !important;
}
body[data-theme="black"] #saving-page .theme-light {
  position: relative;
  z-index: 0;
}
/* Translucent Cards — tanpa border emas (lihat catatan di blok
   `#saving-page .card.card-style`). */
body[data-theme="black"] #saving-page .content,
body[data-theme="black"] #user-saving .content {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

body[data-theme="black"] #saving-page .card.card-style,
body[data-theme="black"] #user-saving .card.card-style,
body[data-theme="black"] #saving-information,
body[data-theme="black"] #saving-setup,
body[data-theme="black"] #saving-membership .card.card-style {
  background-color: var(--th-surface-glass, rgba(20, 20, 20, 0.65)) !important;
  border: 1px solid var(--th-border, rgba(255, 200, 91, 0.25)) !important;
  box-shadow: 0 0 15px rgba(255, 200, 91, 0.15) !important;
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
  border-radius: 12px !important;
}

body[data-theme="black"] #saving-page .card.card-style > .content,
body[data-theme="black"] #user-saving .card.card-style > .content {
  border: none !important;
  box-shadow: none !important;
  background-color: transparent !important;
  backdrop-filter: none !important;
}

/* Teks di halaman Saving ditulis dengan warna gelap inline (#212121) dan
   .color-black — di atas kartu gelap jadi nyaris tak terbaca. Padanan blok
   elit:1152. */
body[data-theme="black"] #saving-page [style*="color: #212121"],
body[data-theme="black"] #user-saving [style*="color: #212121"],
body[data-theme="black"] #saving-page [style*="color:#212121"],
body[data-theme="black"] #user-saving [style*="color:#212121"],
body[data-theme="black"] #saving-page [style*="color: rgb(33, 33, 33)"],
body[data-theme="black"] #user-saving [style*="color: rgb(33, 33, 33)"],
body[data-theme="black"] #saving-page [style*="color: black"],
body[data-theme="black"] #user-saving [style*="color: black"],
body[data-theme="black"] #saving-page [style*="color:black"],
body[data-theme="black"] #user-saving [style*="color:black"],
body[data-theme="black"] #saving-page .color-black,
body[data-theme="black"] #user-saving .color-black,
body[data-theme="black"] #saving-page .content.card p,
body[data-theme="black"] #user-saving .content.card p,
body[data-theme="black"] #saving-page .content.card h5,
body[data-theme="black"] #user-saving .content.card h5,
body[data-theme="black"] #saving-page .content.card i.font-22,
body[data-theme="black"] #user-saving .content.card i.font-22,
body[data-theme="black"] #user-saving i.font-22 {
  color: var(--th-text) !important;
}

/* `.color-theme` bawaannya `#0f1117` lewat `.theme-light .color-theme`
   (style.css:145) — hitam di atas kartu hitam. Judul seperti "Histori
   Transaksi Tabungan" memakai kelas ini. */
body[data-theme="black"] #saving-page .color-theme,
body[data-theme="black"] #user-saving .color-theme {
  color: var(--th-text) !important;
}

/* Secondary labels & info list */
body[data-theme="black"] #saving-information li,
body[data-theme="black"] #saving-information div,
body[data-theme="black"] #saving-page .content.card h5.opacity-50,
body[data-theme="black"] #user-saving .content.card h5.opacity-50 {
  opacity: 0.85 !important;
  color: var(--th-text-secondary) !important;
}

body[data-theme="black"] #user-saving label.color-theme,
body[data-theme="black"] #saving-page label.color-theme,
body[data-theme="black"] #saving-page .form-custom label {
  display: none !important;
}

/* Gitbook link */
body[data-theme="black"] #saving-information a,
body[data-theme="black"] #user-saving a[onclick*="CallGitbook"] {
  color: var(--th-accent, #FFC85B) !important;
  font-weight: 600 !important;
  text-decoration: underline !important;
}

body[data-theme="black"] #saving-page .content.card .divider,
body[data-theme="black"] #user-saving .divider,
body[data-theme="black"] #user-saving hr.divider {
  background-color: rgba(241, 202, 118, 0.25) !important;
}

/* Tombol "Keuntungan Harian" */
body[data-theme="black"] #saving-page .icon-button,
body[data-theme="black"] #user-saving .icon-button {
  background: var(--th-accent-grad, linear-gradient(135deg, #FFC85B, #DBB14E)) !important;
  color: #ffffff !important;
  border: 1px solid var(--th-accent, #FFC85B) !important;
  border-radius: 20px !important;
  padding: 6px 14px !important;
  font-weight: 600 !important;
  display: inline-flex;
  align-items: center;
  box-shadow: var(--th-btn-primary-shadow) !important;
}
body[data-theme="black"] #saving-page .icon-button i,
body[data-theme="black"] #user-saving .icon-button i {
  color: #ffffff !important;
}

/* Override .bg-theme if any */
body[data-theme="black"] #saving-page .bg-theme,
body[data-theme="black"] #user-saving .bg-theme {
  background: transparent !important;
  background-color: transparent !important;
}

/* Fix Header Scrolling Background */
body[data-theme="black"] #staking-header.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}

/* Force Green and Force Red Buttons */
body[data-theme="black"] #saving-page .btn-investor-mode,
body[data-theme="black"] #user-saving .btn-investor-mode {
  background-color: transparent !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 100% 100% !important;
  border: none !important;
}

/* Form inputs (Jumlah USDT) — borderless, wrapper .form-custom menyediakan satu-satunya border */
body[data-theme="black"] #saving-page #saving-max-usdt,
body[data-theme="black"] #user-saving #saving-max-usdt,
body[data-theme="black"] #saving-setup #saving-max-usdt,
body[data-theme="black"] #saving-max-usdt {
  background-color: transparent !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
  color: #FFFFFF !important;
  padding-left: 36px !important;
}

body[data-theme="black"] #saving-page #saving-max-usdt:focus,
body[data-theme="black"] #user-saving #saving-max-usdt:focus,
body[data-theme="black"] #saving-setup #saving-max-usdt:focus,
body[data-theme="black"] #saving-max-usdt:focus {
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
}

body[data-theme="black"] #saving-page .color-green-dark,
body[data-theme="black"] #user-saving .color-green-dark,
body[data-theme="black"] #saving-page #start-saving,
body[data-theme="black"] #user-saving #start-saving,
body[data-theme="black"] #saving-page #set-amount-to-start-saving,
body[data-theme="black"] #user-saving #set-amount-to-start-saving {
  background-color: transparent !important;
  background-image: var(--th-btn-start-img, url("../../assets/orbit-black/start.png")) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 100% 100% !important;
  color: #ffffff !important;
  border: 1px solid rgba(254, 249, 162, 0.5) !important;
  box-shadow: 0 0 12px rgba(36, 196, 141, 0.4),
              inset 0 0 10px rgba(254, 249, 162, 0.5) !important;
  border-radius: 20px !important;
  height: 38px !important;
  font-weight: 700 !important;
}

body[data-theme="black"] #saving-page .color-red-dark,
body[data-theme="black"] #user-saving .color-red-dark,
body[data-theme="black"] #saving-page #stop-saving,
body[data-theme="black"] #user-saving #stop-saving,
body[data-theme="black"] #saving-page #cancel-edit-amount,
body[data-theme="black"] #user-saving #cancel-edit-amount {
  background-color: transparent !important;
  background-image: var(--th-btn-stop-img, url("../../assets/orbit-black/stop.png")) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 100% 100% !important;
  color: #ffffff !important;
  border: 1px solid rgba(254, 249, 162, 0.5) !important;
  box-shadow: 0 0 12px rgba(216, 69, 88, 0.4),
              inset 0 0 10px rgba(254, 249, 162, 0.5) !important;
  border-radius: 20px !important;
  height: 38px !important;
  font-weight: 700 !important;
}

body[data-theme="black"] #saving-page .bg-purple,
body[data-theme="black"] #user-saving .bg-purple,
body[data-theme="black"] #saving-page #saving-setting,
body[data-theme="black"] #user-saving #saving-setting {
  background-color: transparent !important;
  background-image: var(--th-btn-pause-img, url("../../assets/orbit-black/pause.png")) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 100% 100% !important;
  color: #ffffff !important;
  border: 1px solid rgba(254, 249, 162, 0.5) !important;
  box-shadow: 0 0 12px rgba(247, 160, 30, 0.4),
              inset 0 0 10px rgba(254, 249, 162, 0.5) !important;
  border-radius: 20px !important;
  height: 38px !important;
  font-weight: 700 !important;
}

body[data-theme="black"] #saving-page .saving-list .saving-item1,
body[data-theme="black"] #user-saving .saving-list .saving-item1,
body[data-theme="black"] #saving-page .saving-list .saving-item2,
body[data-theme="black"] #user-saving .saving-list .saving-item2 {
  color: #94a3b8 !important;
}

body[data-theme="black"] #saving-page [style*="border-bottom"],
body[data-theme="black"] #user-saving [style*="border-bottom"] {
  border-bottom-color: rgba(241, 202, 118, 0.25) !important;
}

body[data-theme="black"] #saving-page .divider,
body[data-theme="black"] #user-saving .divider,
body[data-theme="black"] #user-saving hr.divider {
  display: block !important;
  height: 1px !important;
  border: none !important;
  background-color: rgba(150, 146, 157, 0.25) !important;
  opacity: 1 !important;
}
/* Icon Gradients */
body[data-theme="black"] #staking-header .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
}
/* `.border-offset` cuma strip pengisi di bawah header (asset.html:17), bukan
   panel — di tema lain dia tak terlihat karena isiannya dibuat transparan.
   Di black dia sempat tampil sebagai kotak emas kosong setinggi 160px: inline
   style-nya `background-color: #fff`, jadi ikut kena aturan "override inline
   white backgrounds" (~baris 2873) yang memberi border + inset shadow emas.
   Isian transparannya menang karena selector ini lebih spesifik, tapi border
   & shadow-nya tidak pernah dibatalkan — makanya yang tersisa hanya garisnya.
   Ketiganya dinolkan di sini. */
body[data-theme="black"] #asset-page .border-offset[style],
body[data-theme="black"] #saving-page .border-offset[style],
body[data-theme="black"] .border-offset[style] {
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
}
/* =========================================================================
   PROFIT SUMMARY (#profit-summary) — video bg + theme
   ========================================================================= */
/* Video background */
body[data-theme="black"] #profit-summary #elite-bg-video {
  position: fixed;
  top: 0; left: 0;
  width: 100%; max-width: 450px;
  height: 100vh;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
  border: 0;
  display: block !important;
}
/* Stacking context for .theme-light */
body[data-theme="black"] #profit-summary .theme-light {
  position: relative;
  z-index: 0;
}
body[data-theme="black"] #profit-summary {
  overscroll-behavior: contain;
}
/* Header when scrolled -> 80% dark, no image */
body[data-theme="black"] #profit-summary #tab-user-profit-summary.header-scrolled {
  background-image: none !important;
  background-color: rgba(0, 0, 0, 0.80) !important;
  background-size: auto !important;
}
/* Header icons -> gradient like the menu */
body[data-theme="black"] #profit-summary #tab-user-profit-summary .bi {
  background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  display: inline-block;
}
/* Top offset gradient -> transparent */
body[data-theme="black"] #profit-summary .top-offset {
  background: transparent !important;
  background-image: none !important;
}
body[data-theme="black"] #profit-summary #tab-user-profit-summary {
  background: transparent !important;
}
/* Cards + inline white backgrounds -> Card/Table BG @80% with shiny border */
body[data-theme="black"] #profit-summary .card.card-style,
body[data-theme="black"] #profit-summary .content.my-0,
body[data-theme="black"] #profit-summary [style*="background-color: rgb(255, 255, 255)"],
body[data-theme="black"] #profit-summary [style*="background-color: white"],
body[data-theme="black"] #profit-summary [style*="background-color: rgba(255, 255, 255, 1)"],
body[data-theme="black"] #profit-summary [style*="background-color: #fff"] {
  background-color: rgba(19, 19, 19, 0.8) !important;
  border: 1px solid rgba(241, 202, 118, 0.4) !important;
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
  backdrop-filter: blur(2px);
}
body[data-theme="black"] #profit-summary .color-purple {
  color: #FDFDFE !important; 
}
/* Dividers -> transparent or subtle */
/* Hide bg-theme background for table header so it flows with the card */
body[data-theme="black"] #profit-summary .bg-theme {
  background-color: transparent !important;
}
/* Filter box */
body[data-theme="black"] #profit-summary .filter-box {
  background-color: rgba(255,255,255, 0.1) !important;
  border-radius: 8px;
  padding: 2px 8px;
}
/* Moon Logic Icon in Batch Settings */
body[data-theme="black"] button[onclick="BatchMoonLogic()"] .icon img {
  width: 35px !important;
  height: 35px !important;
  margin-top: 0 !important;
}
/* Black Theme Form Controls */
body[data-theme="black"] .form-custom,
body[data-theme="black"] .form-select,
body[data-theme="black"] .form-control,
body[data-theme="black"] input.form-control {
    border: 1px solid var(--th-border) !important;
    background-color: #000000 !important;
    background: #000000 !important;
    box-shadow: var(--th-shadow) !important;
    color: var(--th-text) !important;
    border-radius: 8px !important;
}
/* Global inputs inside .form-custom (make borderless, transparan biar
   background hitam si wrapper .form-custom yang kelihatan — sebelumnya cuma
   #otp-address yang ke-cover manual, input .form-custom lain (mis.
   #saving-max-usdt) jadi putih polos karena gak ada rule background-nya). */
body[data-theme="black"] .form-custom input,
body[data-theme="black"] .form-custom select,
body[data-theme="black"] .form-custom textarea {
    border: none !important;
    background-color: transparent !important;
    box-shadow: none !important;
    color: white !important;
}
body[data-theme="black"]  .form-custom input#otp-address,
body[data-theme="black"]  input#otp-address {
    background-color: #000000 !important;
    background: #000000 !important;
    border: 1px solid var(--th-border) !important;
    border-color: var(--th-border) !important;
    color: var(--th-text) !important;
    border-radius: 10px !important;
}
/* Phone Input Dialog (intl-tel-input) Layout Fixes */
body[data-theme="black"] #pop-up-phone-input .form-custom {
    border: 1px solid rgba(241, 202, 118, 0.6) !important;
    background-color: transparent !important;
    box-shadow: 0 0 10px rgba(241, 202, 118, 0.2) !important;
    border-radius: 8px !important;
}
body[data-theme="black"] #otp-phone-number {
    border: none !important;
    background-color: transparent !important;
    box-shadow: none !important;
    color: white !important;
    width: 100% !important;
}
body[data-theme="black"] #pop-up-phone-input .iti {
    width: 100% !important;
}
body[data-theme="black"] select option {
    background-color: var(--th-surface, #131313) !important;
    color: white !important;
}
body[data-theme="black"] #otp-address::placeholder {
    color: rgba(255, 255, 255, 0.5) !important;
}
body[data-theme="black"] .form-custom.form-icon i {
    color: var(--th-text-muted) !important;
}
/* =========================================================================
   KONVENSI TOMBOL GLOBAL (tema non-default):
   - Tombol UNGU (<a>/<button>) -> gaya button-primary (accent gradient + glow)
   - Tombol HIJAU -> banner start.png (gaya button-start)
   ========================================================================= */
/* --- UNGU -> button-primary --- */
body[data-theme="black"] a[style*="background-color: #924be1"],
body[data-theme="black"] button[style*="background-color: #924be1"],
body[data-theme="black"] a[style*="background-color: rgb(146, 75, 225)"],
body[data-theme="black"] button[style*="background-color: rgb(146, 75, 225)"],
body[data-theme="black"] a[style*="background-color: #924ce2"],
body[data-theme="black"] button[style*="background-color: #924ce2"],
body[data-theme="black"] a[style*="background-color: rgb(146, 76, 226)"],
body[data-theme="black"] button[style*="background-color: rgb(146, 76, 226)"],
body[data-theme="black"] button.bg-purple:not(#saving-setting),
body[data-theme="black"] a.bg-purple,
body[data-theme="black"] button.submit-otp,
body[data-theme="black"] button[onclick="BatchSave()"],
body[data-theme="black"] button[onclick="ValidatePhone()"],
body[data-theme="black"] .btn-uni[style*="background-color: rgb(92, 51, 181)"],
body[data-theme="black"] .btn-uni[style*="background-color: rgba(92, 51, 181"],
/* `ConfirmWithdrawal` (tanpa akhiran) sengaja: substring ini mengenai tombol
   Kirim di Withdrawal Asset SEKALIGUS `ConfirmWithdrawalBonus()` di Withdraw
   Cashback. Sebelumnya cuma varian Bonus yang terdaftar, jadi tombol Kirim di
   Asset satu-satunya yang lolos — tetap hijau inline `#36b693` tanpa glow. */
body[data-theme="black"] [onclick*="ConfirmWithdrawal"],
body[data-theme="black"] [onclick*="CallWithdrawalBonus"],
body[data-theme="black"] .offcanvas-footer .btn-full,
body[data-theme="black"] .swal2-confirm,
body[data-theme="black"] button[onclick="Save()"],
body[data-theme="black"] .strategy-update {
  background: var(--th-accent-grad, linear-gradient(135deg, #ffb72a, #ab7a09)) !important;
  color: #ffffff !important;
  border: 1px solid #ffb72a !important;
  box-shadow: var(--th-btn-primary-shadow, 0 0 10px rgba(255, 183, 42, 0.3)) !important;
}
/* Change Password — gaya tema (sebelumnya inline di change_password.html;
   dipindah ke sini agar mode default tetap seperti desain asli yang hijau) */
body[data-theme="black"] #vue-change-password .form-control {
  border-radius: 5px !important;
  backdrop-filter: blur(5px);
  background-color: rgba(0, 0, 0, 0.1) !important;
}
/* Ikon kiri (kunci/asterisk) digambar di bawah input yang ber-backdrop-blur;
   angkat ke atas input supaya tidak ikut terblur */
body[data-theme="black"] #vue-change-password .form-custom.form-icon > i {
  z-index: 1;
}
body[data-theme="black"] #vue-change-password .input-group-append {
  border-radius: 0 5px 5px 0 !important;
  background: var(--th-accent-grad, #FFC85B) !important;
  border: none !important;
  box-shadow: var(--th-btn-primary-shadow, none) !important;
}
body[data-theme="black"] #vue-change-password .input-group-append i {
  color: white !important;
}
body[data-theme="black"] #vue-change-password a[onclick="DoChangePassword()"] {
  background: var(--th-accent-grad, #FFC85B) !important;
  border: none !important;
  box-shadow: var(--th-btn-primary-shadow, none) !important;
}
/* Tombol toggle lihat/sembunyi password (eye) di modal SweetAlert (set/ubah
   password investor, dll.) — di mode tema pakai gradient tombol tema */
body[data-theme="black"] .SwalBtn2.investor-button {
  background: var(--th-accent-grad, #FFC85B) !important;
  border: none !important;
  box-shadow: var(--th-btn-primary-shadow, none) !important;
}
body[data-theme="black"] .SwalBtn2.investor-button i {
  color: white !important;
}
/* Tombol sekunder "Kebali/Cancel" (div.submit-otp putih inline) — di mode
   tema jangan putih, ikuti gaya tombol cancel bertema; default tetap putih */
body[data-theme="black"] div.submit-otp[style*="background-color: white"] {
  /* TANPA background. `--th-surface-2` sebelumnya membuatnya jadi blok abu
     solid — di atas kartu gelap itu terbaca seperti tombol utama kedua,
     padahal ini tombol sekunder. Tombol utama (button.submit-otp, black:3598)
     yang memegang gradient emas; yang ini cukup teks emas tanpa isian. */
  background: transparent !important;
  background-color: transparent !important;
  color: var(--th-accent-2, #F5CD6B) !important;
  border: none !important;
  box-shadow: none !important;
}
/* Recharge Page Overrides */
body[data-theme="black"] #recharge-now-page .color-black,
body[data-theme="black"] #recharge-now-page [style*="color: black"] {
    color: white !important;
}
/* Sisa warna ungu tema default -> emas. Link "Pulihkan sekarang" (#924be1)
   dan garis pemisah tebal (rgb(146, 75, 225)). */
body[data-theme="black"] #recharge-now-page [style*="color: #924be1"],
body[data-theme="black"] #recharge-now-page [style*="color:#924be1"],
body[data-theme="black"] #recharge-now-page [style*="color: rgb(146, 75, 225)"] {
    color: var(--th-accent-2, #F5CD6B) !important;
}
body[data-theme="black"] #recharge-now-page [style*="background: #924be1"],
body[data-theme="black"] #recharge-now-page [style*="background:#924be1"],
body[data-theme="black"] #recharge-now-page [style*="background: rgb(146, 75, 225)"] {
    background: var(--th-border-solid, #F1CA76) !important;
}
/* Kotak info abu (border + icon #7c7e85) diselaraskan ke emas tema */
body[data-theme="black"] #recharge-now-page [style*="border: 1px solid rgb(124, 126, 133)"] {
    border-color: var(--th-border) !important;
}
body[data-theme="black"] #recharge-now-page [style*="color: rgb(124, 126, 133)"] {
    color: var(--th-accent-2, #F5CD6B) !important;
}
/* =========================================================================
   POPUP SweetAlert "Wallet Credit Fee" (#recharge-swal / .content-recharge)
   Padanan elit:1370. Isinya ditulis dengan warna terang-mode inline
   (#333 untuk paragraf, #d9534f untuk judul, #314db4 untuk link).
   ========================================================================= */
body[data-theme="black"] .content-recharge [style*="color: #333"],
body[data-theme="black"] .content-recharge [style*="color:#333"] {
    color: var(--th-text) !important;
}
body[data-theme="black"] .content-recharge [style*="color: #d9534f"] {
    color: #FF8A80 !important; /* merah peringatan versi terang untuk latar gelap */
}
body[data-theme="black"] .content-recharge {
    background-color: var(--th-surface-2) !important;
    border: 1px solid var(--th-border) !important;
    box-shadow: var(--th-shadow) !important;
    border-radius: 8px;
    padding: 10px;
}
body[data-theme="black"] .content-recharge a,
body[data-theme="black"] .content-recharge a[style*="color: #314db4"] {
    color: var(--th-accent-2, #F5CD6B) !important;
}
body[data-theme="black"] .warning-box {
    background-color: rgba(255, 152, 0, 0.1) !important;
    border: 1px solid #ff9800 !important;
    border-radius: 8px;
    box-shadow: 0 0 15px rgba(255, 152, 0, 0.2) !important;
}
body[data-theme="black"] #bep20_wallet {
    background-color: transparent !important;
    border: none !important;
    border-bottom: 1px solid rgba(241, 202, 118, 0.6) !important;
    color: white !important;
}
body[data-theme="black"] #show-address-tutor-usdt {
    background-color: transparent !important;
    border: none !important;
    border-radius: 6px !important;
}
/* Profile Phone Verification Overrides */
body[data-theme="black"] #bar-regis-phone .color-black {
    color: white !important;
}
/* intl-tel-input (Phone number country dropdown) Overrides */
body[data-theme="black"] .iti__country-list {
    background-color: var(--th-surface, #131313) !important;
    border: 1px solid rgba(241, 202, 118, 0.5) !important;
    color: white !important;
}
body[data-theme="black"] .iti__country-name,
body[data-theme="black"] .iti__dial-code {
    color: white !important;
}
body[data-theme="black"] .iti__country.iti__highlight,
body[data-theme="black"] .iti__country:hover {
    background-color: rgba(241, 202, 118, 0.2) !important;
}
body[data-theme="black"] .iti__divider {
    border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;
}
/* --- HIJAU -> start.png (gaya button-start) + gold inner shadow --- */
body[data-theme="black"] a[onclick="checkBnbFeeEnable()"],
body[data-theme="black"] a[href="#fee-setting-buy-bnb-page"],
/* Tombol Kirim di Withdrawal Asset & Cashback DIKECUALIKAN: inline-nya sama
   hijau `#36b693`, tapi keduanya tombol primer (harus emas seperti "Credit
   Withdrawal"), bukan tombol start. Tanpa :not() aturan ini yang menang atas
   blok tombol primer di black:4514 — dua-duanya (0,2,x) tapi selector ini
   membawa elemen `button` DAN letaknya lebih bawah, jadi dobel menang. */
body[data-theme="black"] button[style*="background-color: #36b693"]:not([onclick*="ConfirmWithdrawal"]),
body[data-theme="black"] button[style*="background-color: rgb(54, 182, 147)"]:not([onclick*="ConfirmWithdrawal"]),
body[data-theme="black"] button.color-green-dark,
body[data-theme="black"] a.btn.color-green-dark,
body[data-theme="black"] .btn-start-theme,
body[data-theme="black"] .btn-trade-start,
body[data-theme="black"] #strategy-start-theme,
body[data-theme="black"] #set-amount-to-start-saving {
  background-color: transparent !important;
  background-image: var(--th-btn-start-img, linear-gradient(135deg, #24c48d, #1a9e6f)) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: cover !important;
  color: #ffffff !important;
  border: 1px solid rgba(254, 249, 162, 0.5) !important;
  box-shadow: 0 0 12px rgba(36, 196, 141, 0.4),
              inset 0 0 10px rgba(254, 249, 162, 0.5) !important;
}

body[data-theme="black"] .modal button[id*="show-all"],
body[data-theme="black"] #profit-show-all,
body[data-theme="black"] #asset-show-all,
body[data-theme="black"] #roi-show-all,
body[data-theme="black"] #bonus-show-all {
  background-color: transparent !important;
  background-image: var(--th-btn-start-img, url("../../assets/orbit-black/start.png")) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 100% 100% !important;
  color: #ffffff !important;
  border: 1px solid rgba(254, 249, 162, 0.5) !important;
  box-shadow: 0 0 12px rgba(36, 196, 141, 0.4),
              inset 0 0 10px rgba(254, 249, 162, 0.5) !important;
}

/* Reset wrapper div if it contains button-pause */
body[data-theme="black"] .btn-stop-theme:has(.btn-trade-pause),
body[data-theme="black"] .btn-stop-theme:has(button-pause) {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

/* --- MERAH -> stop.png (gaya button-stop) + gold inner shadow --- */
body[data-theme="black"] button[style*="background-color: #f63c3c"],
body[data-theme="black"] button[style*="background-color: rgb(246, 60, 60)"],
body[data-theme="black"] button.color-red-dark,
body[data-theme="black"] a.btn.color-red-dark,
body[data-theme="black"] .btn-stop-theme,
/* `#strategy-stop-theme` DIKELUARKAN dari grup merah ini: elemennya
   memakai komponen <button-pause> (Pause / berhenti sementara), jadi warnanya
   harus kuning pause.png — hijau = Start, kuning = Pause, merah = Stop.
   Selector ber-ID di sini (1,1,1) mengalahkan `.btn-trade-pause` (0,2,1) dari
   grup kuning di bawah, sehingga tombol Pause di halaman Strategy selama ini
   tampil merah dan berbeda dari tombol Pause di coin_details.
   Nama id-nya sengaja dibiarkan (dipakai toggle .btn-trade-hidden di
   strategy.html). */
body[data-theme="black"] .btn-trade-stop {
  background-color: transparent !important;
  background-image: var(--th-btn-stop-img, linear-gradient(135deg, #d84558, #a5303f)) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: cover !important;
  color: #ffffff !important;
  border: 1px solid rgba(254, 249, 162, 0.5) !important;
  box-shadow: 0 0 12px rgba(216, 69, 88, 0.4),
              inset 0 0 10px rgba(254, 249, 162, 0.5) !important;
}

/* --- KUNING -> pause.png (gaya button-pause) + gold inner shadow --- */
body[data-theme="black"] .btn-pause-theme,
body[data-theme="black"] .btn-trade-pause,
body[data-theme="black"] button-pause,
body[data-theme="black"] #strategy-pause-theme,
body[data-theme="black"] button.color-yellow-dark,
body[data-theme="black"] a.btn.color-yellow-dark {
  background-color: transparent !important;
  background-image: var(--th-btn-pause-img, url("../../assets/orbit-black/pause.png")) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: cover !important;
  color: #ffffff !important;
  border: 1px solid rgba(254, 249, 162, 0.5) !important;
  box-shadow: 0 0 12px rgba(247, 160, 30, 0.4),
              inset 0 0 10px rgba(254, 249, 162, 0.5) !important;
  -webkit-text-stroke: 0.3px rgba(0, 0, 0, 0.3);
  paint-order: stroke fill;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}
/* =========================================================================
   FORM GLOBAL (tema non-default): semua <input>, <select>, <textarea>
   satu gaya — bg gelap + border ungu 1px. Checkbox/radio/range/button
   dikecualikan. Class .theme-input tersedia untuk pemakaian eksplisit.
   ========================================================================= */
body[data-theme="black"] input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="button"]):not([type="submit"]),
body[data-theme="black"] select,
body[data-theme="black"] textarea,
body[data-theme="black"] .theme-input {
  border: 1px solid rgba(241, 202, 118, 0.6) !important;
  background-color: #1b1b1b !important;
  color: #FDFDFE !important;
}
/* Placeholder terbaca di gelap */
body[data-theme="black"] input::placeholder,
body[data-theme="black"] textarea::placeholder {
  color: #9B9591 !important; /* Text Secondary */
}
/* Fokus: border lebih terang + glow tipis */
body[data-theme="black"] input:focus,
body[data-theme="black"] select:focus,
body[data-theme="black"] textarea:focus {
  border-color: rgba(241, 202, 118, 0.9) !important;
  box-shadow: 0 0 8px rgba(241, 202, 118, 0.35) !important;
  outline: none !important;
}
/* Addon input-group (mis. "Alamat", "BEP20") ikut satu gaya */
body[data-theme="black"] .input-group-text {
  background: var(--th-accent-grad, #FFC85B) !important;
  border: 1px solid rgba(241, 202, 118, 0.6) !important;
  color: #ffffff !important;
}
/* Badge Buy/Force Buy (hijau) & Sell/Force Sell (merah) di riwayat
   transaksi -> banner force tema; match hex & serialisasi rgb() Vue */
body[data-theme="black"] #vue-transaction-history span[style*="#33c48d"],
body[data-theme="black"] #vue-transaction-history span[style*="51, 196, 141"] {
    background: var(--th-btn-force-buy-img, url("../../assets/orbit-black/force-green.png")) no-repeat center / 100% 100% !important;
    color: #ffffff !important;
}
body[data-theme="black"] #vue-transaction-history span[style*="#d5465b"],
body[data-theme="black"] #vue-transaction-history span[style*="213, 70, 91"] {
    background: var(--th-btn-force-sell-img, url("../../assets/orbit-black/force-red.png")) no-repeat center / 100% 100% !important;
    color: #ffffff !important;
}
/* Angka profit positif di riwayat transaksi (inline #36b693) -> hijau tema */
body[data-theme="black"] #vue-transaction-history p[style*="#36b693"],
body[data-theme="black"] #vue-transaction-history p[style*="54, 182, 147"] {
    color: var(--th-green, #4EBA5D) !important;
}
/* =========================================================================
   SELECT DALAM WRAPPER (.myselect/.myselectasset .form-custom):
   border digambar oleh wrapper -> samakan ke gaya form standar.
   Select di dalamnya tetap tanpa border & transparan.
   ========================================================================= */
body[data-theme="black"] .myselect.form-custom,
body[data-theme="black"] .myselectasset.form-custom,
body[data-theme="black"] .custom-ta .myselect.form-custom {
  border: 1px solid rgba(241, 202, 118, 0.6) !important;
  background-color: transparent !important;
}
body[data-theme="black"] .myselect.form-custom select,
body[data-theme="black"] .myselectasset.form-custom select,
body[data-theme="black"] .custom-ta .myselect.form-custom select {
  border: none !important;
  background-color: transparent !important;
  box-shadow: none !important;
  color: #FDFDFE !important;
}
/* Stacking Contexts for Home Page & Trade Page (Themed) */
body[data-theme="black"] #user-info-profile,
body[data-theme="black"] #trade-page {
    position: relative !important;
    z-index: 1 !important;
}
body[data-theme="black"] #trade-page .bg-binance-tick {
    background-color: transparent !important;
}
/* =========================================================================
   Home & Trade Background Video (Black Theme)

   Dua susunan berbeda:

   MOBILE (< 768px): satu video latar full layar, `bg-mobile.mp4` (rasio 9:16),
   diregangkan penuh ke lebar & tinggi viewport (`object-fit: fill`) supaya
   tidak ada bagian yang terpotong maupun celah di tepi. Tidak ada video
   sekunder — HP cuma memutar satu video.

   DESKTOP (>= 768px): satu video gabungan `bg-dekstop.mp4` (1280x1110) —
   `background-dekstop.mp4` + `bg-3.mp4` (mulai 390px) beserta fade-nya sudah
   di-bake di dalam video, jadi bg-3 terpisah tidak diputar. Sama seperti
   tema elite.

   Sumber videonya ditukar di theme-engine.js (`main` / `mainDesktop`) memakai
   breakpoint 768px yang sama, jadi kalau salah satu diubah, ubah keduanya.
   ========================================================================= */

/* Wrapper diberi warna latar sendiri sebagai pengaman saat video belum ter-load
   (atau gagal diputar) supaya tidak ada kilatan putih di balik konten. */
body[data-theme="black"] #user-info-profile moonbot-bg,
body[data-theme="black"] #trade-page moonbot-bg {
    position: fixed !important;
    top: 0px !important;
    left: 0px !important;
    width: 100vw !important;
    height: 100vh !important;
    max-height: none !important;
    overflow: hidden !important;
    display: block !important;
    z-index: 0 !important;
    background-color: var(--th-bg) !important;
}

/* Fade bawah tidak dipakai sama sekali. Di mobile videonya sudah menutup satu
   layar penuh; di desktop peralihan ke bg-3 diserahkan ke cross-fade mask
   (lihat catatan panjang di blok @media desktop di bawah). */
body[data-theme="black"] #user-info-profile moonbot-bg::after,
body[data-theme="black"] #trade-page moonbot-bg::after {
    display: none !important;
    z-index: 1;
    pointer-events: none;
}

body[data-theme="black"] #user-info-profile moonbot-bg video,
body[data-theme="black"] #trade-page moonbot-bg video {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: fill !important;
    -webkit-mask-image: none !important;
    mask-image: none !important;
}

/* Lapisan sekunder (bg-3.mp4) hanya dipakai di desktop. `display: none` di sini
   cuma menghentikan render — pemutarnya dilepas dari sisi JS
   (SECONDARY_VIDEO_THEMES di theme-engine.js) supaya decoder-nya ikut mati di
   mobile. */
body[data-theme="black"] .moonbot-bg-secondary-wrapper {
    display: none !important;
}

/* --- DESKTOP: bg-dekstop.mp4 (planet + bg-3 dalam satu video) ------------ */
@media (min-width: 768px) {
    body[data-theme="black"] #user-info-profile .top-offset {
        height: 550px !important;
    }

    body[data-theme="black"] #user-info-profile moonbot-bg,
    body[data-theme="black"] #trade-page moonbot-bg {
        position: absolute !important;
        width: 100% !important;
        /* Setinggi rasio video di lebar viewport, tapi tidak lebih tinggi
           dari halaman — elemen absolute ikut menentukan area scroll, jadi
           jangan sampai memaksa halaman pendek bisa di-scroll kosong. */
        height: min(calc(100vw * 1110 / 1280), 100%) !important;
        max-height: none !important;
        background-color: transparent !important;
    }

    body[data-theme="black"] #user-info-profile moonbot-bg video,
    body[data-theme="black"] #trade-page moonbot-bg video {
        /* Halaman pendek: potong dari bawah, bukan zoom */
        object-fit: cover !important;
        object-position: center top !important;
        /* Fade bawah sudah ada di dalam video */
        -webkit-mask-image: none !important;
        mask-image: none !important;
    }
}

body[data-theme="black"] .moonbot-bg-secondary-wrapper video {
    /* Tinggi dikunci ke viewport (bukan tinggi halaman) supaya crop/zoom
       object-fit: cover identik di semua halaman (home & trade) */
    width: 100% !important;
    height: 100vh !important;
    object-fit: cover !important;
    object-position: center top !important;
    display: block !important;
    /* bg-3.mp4 fade masuk dari atas, fade keluar di bawah */
    -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 160px, #000 calc(100% - 160px), transparent 100%);
    mask-image: linear-gradient(to bottom, transparent 0, #000 160px, #000 calc(100% - 160px), transparent 100%);
}
/* =========================================================================
   GLOBAL CARD BACKGROUND (tema gelap)
   Semua card TANPA background image/video memakai background seragam ini.
   Card dengan bg image inline, bg url, atau berisi video/overlay dikecualikan.
   Rule per-halaman dengan selector ber-ID tetap menang bila ada.
   ========================================================================= */
body[data-theme="black"] .card.card-style:not([style*="background-image"]):not([style*="background: url"]):not([style*="background:url"]):not(:has(> video)):not(:has(> .card-overlay)):not(.balance-card):not(.profile-info-card):not(.pt-2 > *):not(.bg-transparent):not([style*="background-color: transparent"]):not([style*="background: transparent"]) {
    background-color: var(--th-surface-glass) !important;
    background-image: none !important;
    /* Border nyata — lihat catatan double-border di rule kartu global atas. */
    border: 1px solid var(--th-border-solid, #F1CA76) !important;
    border-radius: 16px !important;
    box-shadow: 0 0 12px rgba(241, 202, 118, 0.35) !important;
}

/* Pseudo-element to render inset gold shadow on all themed cards & popup containers */
body[data-theme="black"] .card.card-style:not([style*="background-image"]):not([style*="background: url"]):not([style*="background:url"]):not(:has(> video)):not(:has(> .card-overlay)):not(.balance-card):not(.profile-info-card):not(.pt-2 > *):not(.bg-transparent):not([style*="background-color: transparent"]):not([style*="background: transparent"])::before,
body[data-theme="black"] #moon-logic-card-theme::before,
body[data-theme="black"] #strategy-mode-card-theme::before,
body[data-theme="black"] #ta-card-theme::before,
body[data-theme="black"] #batch-ta-card-theme::before,
body[data-theme="black"] #grouping-container::before,
body[data-theme="black"] #money-management-card-theme::before,
body[data-theme="black"] #footer-bar.footer-bar-1::before,
body[data-theme="black"] #profit-page .card.card-style::before,
body[data-theme="black"] #strategy-page .card.card-style::before,
body[data-theme="black"] #strategy-page #strategy-mode-card-theme::before,
body[data-theme="black"] #strategy-page #grouping-container::before,
body[data-theme="black"] #strategy-page #money-management-card-theme::before,
body[data-theme="black"] #strategy-content .card.card-style::before,
body[data-theme="black"] #fee-setting-buy-bnb-content .card.card-style::before,
body[data-theme="black"] #fee-setting-information-content .card.card-style::before,
body[data-theme="black"] #fee-setting-information-detail-content .card.card-style::before,
body[data-theme="black"] #vue-chose-area .popup-container::before,
body[data-theme="black"] #vue-tnc-pop-up .popup-container::before {
  content: "" !important;
  position: absolute !important;
  inset: 0 !important;
  border-radius: 15px !important;
  pointer-events: none !important;
  box-shadow: inset 0 0 6px rgba(241, 202, 118, 0.25) !important;
  z-index: 0 !important;
}

body[data-theme="black"] .card.card-style:not([style*="background-image"]):not([style*="background: url"]):not([style*="background:url"]):not(:has(> video)):not(:has(> .card-overlay)):not(.balance-card):not(.profile-info-card):not(.pt-2 > *):not(.bg-transparent):not([style*="background-color: transparent"]):not([style*="background: transparent"]),
body[data-theme="black"] #moon-logic-card-theme,
body[data-theme="black"] #strategy-mode-card-theme,
body[data-theme="black"] #ta-card-theme,
body[data-theme="black"] #batch-ta-card-theme,
body[data-theme="black"] #grouping-container,
body[data-theme="black"] #money-management-card-theme,
/* #footer-bar.footer-bar-1 sengaja TIDAK ikut di sini: dia harus tetap
   position: fixed (lihat rule di atas) agar footer menu sticky seperti tema
   lain. position: fixed sudah jadi containing block untuk ::before. */
body[data-theme="black"] #profit-page .card.card-style,
body[data-theme="black"] #strategy-page .card.card-style,
body[data-theme="black"] #strategy-page #strategy-mode-card-theme,
body[data-theme="black"] #strategy-page #grouping-container,
body[data-theme="black"] #strategy-page #money-management-card-theme,
body[data-theme="black"] #strategy-content .card.card-style,
body[data-theme="black"] #fee-setting-buy-bnb-content .card.card-style,
body[data-theme="black"] #fee-setting-information-content .card.card-style,
body[data-theme="black"] #fee-setting-information-detail-content .card.card-style,
body[data-theme="black"] #vue-chose-area .popup-container,
body[data-theme="black"] #vue-tnc-pop-up .popup-container {
  position: relative !important;
}
body[data-theme="black"] #vue-coin-group-quisioner .header-container {
    background-image: var(--th-bg-api-ip) !important;
    background-size: cover !important;
    background-position: center !important;
}
/* Badan kuisioner. Base-nya `background-color: white`
   (coin-group-quisioner.html:30) dan di sini dulu dipaksa TRANSPARAN — padahal
   tidak ada satu pun lapisan di belakangnya yang berwarna: pembungkusnya
   `.content.announcment-content` tidak punya aturan background di tema mana
   pun, dan `.popUp` di markup ini bukan `.card.card-style` sehingga aturan
   pop-up biasa tidak mengenainya. Hasilnya halaman di belakang pop-up tembus
   dan teks pertanyaan bertumpuk dengan isi halaman.
   Diberi permukaan kartu tema yang OPAK; header di atasnya sudah punya
   background image sendiri, jadi keduanya menyatu jadi satu panel. */
body[data-theme="black"] #vue-coin-group-quisioner .popup-container-coin-group {
    background-color: var(--th-surface, #131313) !important;
    background-image: none !important;
    color: var(--th-text) !important;
}
/* Reset dark/black inline colors for text inside the quiz */
body[data-theme="black"] #vue-coin-group-quisioner .quiz-description,
body[data-theme="black"] #vue-coin-group-quisioner .quiz-description span,
body[data-theme="black"] #vue-coin-group-quisioner .quiz-description li,
body[data-theme="black"] #vue-coin-group-quisioner .quiz-scroll-container,
body[data-theme="black"] #vue-coin-group-quisioner .quiz-scroll-container-step,
body[data-theme="black"] #vue-coin-group-quisioner .quiz-scroll-inner,
body[data-theme="black"] #vue-coin-group-quisioner .quiz-question-list,
body[data-theme="black"] #vue-coin-group-quisioner .quiz-question-list li,
body[data-theme="black"] #vue-coin-group-quisioner .quiz-question-list strong,
body[data-theme="black"] #vue-coin-group-quisioner .quiz-scroll-inner ol,
body[data-theme="black"] #vue-coin-group-quisioner .quiz-scroll-inner li,
body[data-theme="black"] #vue-coin-group-quisioner .quiz-scroll-inner strong,
body[data-theme="black"] #vue-coin-group-quisioner .quiz-scroll-inner label {
    color: var(--th-text, #FDFDFE) !important;
}
/* Scroll containers background override */
body[data-theme="black"] #vue-coin-group-quisioner .quiz-scroll-inner {
    background: rgba(255, 255, 255, 0.05) !important;
    border: 1px solid rgba(241, 202, 118, 0.2) !important;
}
/* Scroll bar styles for dark mode compatibility */
body[data-theme="black"] #vue-coin-group-quisioner .quiz-scroll-inner::-webkit-scrollbar {
    width: 6px;
}
body[data-theme="black"] #vue-coin-group-quisioner .quiz-scroll-inner::-webkit-scrollbar-thumb {
    background-color: rgba(241, 202, 118, 0.4);
    border-radius: 3px;
}
/* Exit button style */
body[data-theme="black"] #vue-coin-group-quisioner .exit-btn {
    background-color: rgba(255, 255, 255, 0.1) !important;
    color: var(--th-text, #FDFDFE) !important;
    border: 1px solid var(--th-border) !important;
}
body[data-theme="black"] #vue-coin-group-quisioner .exit-btn:hover {
    background-color: rgba(255, 255, 255, 0.2) !important;
}
/* Main action buttons (Let's get started / Next / Submit / Finish).
   Berbasis class (bukan [style*=...]) supaya tidak bergantung pada cara Vue
   menserialisasi inline style (hex vs rgb). */
body[data-theme="black"] #vue-coin-group-quisioner .responsive-button,
body[data-theme="black"] #vue-coin-group-quisioner .responsive-button-step,
body[data-theme="black"] #vue-coin-group-quisioner button.responsive-button-back-next,
body[data-theme="black"] #vue-coin-group-quisioner .responsive-step3-container button {
    background: var(--th-accent-grad, #FFC85B) !important;
    color: white !important;
    border: none !important;
    /* `0 0 10px var(--th-shadow)` invalid — --th-shadow itu value box-shadow
       utuh, bukan warna (lihat catatan di black:1481). */
    box-shadow: var(--th-btn-primary-shadow) !important;
}
/* Back button in quiz (secondary; inline background-color: white statis) —
   attribute selector di sini lebih spesifik dari rule dasar di atas */
body[data-theme="black"] #vue-coin-group-quisioner button.responsive-button-back-next[style*="background-color: white"],
body[data-theme="black"] #vue-coin-group-quisioner button.responsive-button-back-next[style*="background-color:white"] {
    background: transparent !important;
    color: var(--th-text, #ffffff) !important;
    border: 1px solid var(--th-border, rgba(255, 255, 255, 0.2)) !important;
}
body[data-theme="black"] #vue-coin-group-quisioner .responsive-button:disabled,
body[data-theme="black"] #vue-coin-group-quisioner .responsive-button-step:disabled,
body[data-theme="black"] #vue-coin-group-quisioner button.responsive-button-back-next:disabled {
    background: rgba(255, 255, 255, 0.15) !important;
    color: rgba(255, 255, 255, 0.35) !important;
    cursor: not-allowed !important;
    box-shadow: none !important;
}
/* Layar hasil (Score + badan teks) — teks inline gelap #1a1a1a -> terang.
   Judul fail (merah #e53935) dan span aksen ungu dibiarkan apa adanya. */
body[data-theme="black"] #vue-coin-group-quisioner .responsive-score-title,
body[data-theme="black"] #vue-coin-group-quisioner .responsive-score-value,
body[data-theme="black"] #vue-coin-group-quisioner .responsive-result-title:not([style*="#e53935"]),
body[data-theme="black"] #vue-coin-group-quisioner .responsive-result-description {
    color: var(--th-text, #FDFDFE) !important;
}
/* Progress bar wrapper background */
body[data-theme="black"] #vue-coin-group-quisioner div[style*="background-color: #f3f3f3"],
body[data-theme="black"] #vue-coin-group-quisioner div[style*="background-color:#f3f3f3"] {
    background-color: rgba(255, 255, 255, 0.1) !important;
}
/* Isian progress bar: hijau neon `#28fb5f` — track-nya sudah bertema tapi
   isiannya belum, jadi satu-satunya warna neon di panel emas ini.
   Nilainya dipasang lewat `:style` binding (coin-group-quisioner.html:591),
   jadi Vue menulisnya ke DOM dalam bentuk rgb() hasil serialisasi browser —
   bentuk hex-nya ikut disebut kalau-kalau markup-nya ditulis ulang. */
body[data-theme="black"] #vue-coin-group-quisioner div[style*="#28fb5f"],
body[data-theme="black"] #vue-coin-group-quisioner div[style*="rgb(40, 251, 95)"],
body[data-theme="black"] #vue-coin-group-quisioner div[style*="rgb(40,251,95)"] {
    background-color: transparent !important;
    background-image: var(--th-accent-grad, linear-gradient(135deg, #ffb72a, #ab7a09)) !important;
}
/* Teks aksen di badan hasil ("Coin Group di luar Top 5"): ungu `#9b42f5` —
   varian ungu tersendiri lagi, beda dari #924be1/#924ce2/#924ce3 yang sudah
   punya penimpa, jadi tidak pernah tersentuh. Judul gagal `#e53935` sengaja
   TIDAK ikut: merah di situ memang penanda peringatan.

   `:not([style*="background-color"])` WAJIB: substring "color: #9b42f5" juga
   ada di dalam "background-color: #9b42f5", jadi tanpa penyaring ini tombol
   Next/Submit (inline `background-color: #9b42f5; color: white`) ikut kena —
   dan karena blok ini ditulis SETELAH blok tombol primer di atas, teksnya
   berubah jadi emas di atas tombol emas alias nyaris tak terbaca. Teks aksen
   yang memang dituju tidak pernah punya background inline. */
body[data-theme="black"] #vue-coin-group-quisioner [style*="color: #9b42f5"]:not([style*="background-color"]),
body[data-theme="black"] #vue-coin-group-quisioner [style*="color:#9b42f5"]:not([style*="background-color"]),
body[data-theme="black"] #vue-coin-group-quisioner [style*="rgb(155, 66, 245)"]:not([style*="background-color"]),
body[data-theme="black"] #vue-coin-group-quisioner [style*="rgb(155,66,245)"]:not([style*="background-color"]) {
    color: var(--th-accent-2, #F5CD6B) !important;
}
/* Remove default margin of .content inside all themed popups so they fill the popup boundaries fully */
body[data-theme="black"] .popUp .content {
    margin: 0px !important;
}
/* Regular card popups (e.g. change password) get padding back so inner spacing matches the default theme.
   Banner-style popups (.card-style-banner: rank/leaderboard, banner, tnc, area) stay full-bleed. */
body[data-theme="black"] .popUp .card.card-style > .content {
    padding: 15px 15px 10px 15px !important;
}
/* Popup alamat penarikan: beri ruang kiri-kanan.
   (Tanpa text-align: center — itu menggeser ikon .form-icon ke tengah input;
   judul/subtitle sudah center dari class text-center masing-masing.) */
body[data-theme="black"] .popUp #vue-insert-address,
body[data-theme="black"] .popUp #vue-show-address,
body[data-theme="black"] .popUp #vue-insert-phone,
body[data-theme="black"] .popUp #vue-otp-verification {
    padding-left: 18px !important;
    padding-right: 18px !important;
    padding-bottom: 10px !important;
}
/* =========================================================================
   AREA & TNC POP-UP — container putih inline -> surface gelap bertema
   ========================================================================= */
body[data-theme="black"] #vue-chose-area .popup-container,
body[data-theme="black"] #vue-tnc-pop-up .popup-container {
    background-color: transparent !important;
    border: 1px solid transparent !important;
    border-radius: 16px !important;
    background-image:
      linear-gradient(var(--th-surface), var(--th-surface)),
      linear-gradient(135deg, #FEF9A2, #DBB14E) !important;
    background-origin: border-box !important;
    background-clip: padding-box, border-box !important;
    box-shadow: 0 0 12px rgba(241, 202, 118, 0.35), inset 0 0 6px rgba(241, 202, 118, 0.25) !important;
}
/* Icon globe (area) & kertas legal (TNC): img mono -> gradient seperti icon
   lain. Bitmap asli diganti pixel transparan, bentuk icon dipakai sebagai
   mask, lalu diisi gradient. */
body[data-theme="black"] #vue-chose-area .popup-container img[src*="country-64"],
body[data-theme="black"] #vue-tnc-pop-up .popup-container img[src*="legal-paper-64"] {
    content: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
    width: 50px !important;
    height: 50px !important;
    background: linear-gradient(180deg, #ffffff 0%, #DBB14E 100%) !important;
    filter: none !important;
    border-radius: 0 !important;
}
body[data-theme="black"] #vue-chose-area .popup-container img[src*="country-64"] {
    -webkit-mask: url("../../../images/pictures/country-64.png") center / contain no-repeat;
    mask: url("../../../images/pictures/country-64.png") center / contain no-repeat;
}
body[data-theme="black"] #vue-tnc-pop-up .popup-container img[src*="legal-paper-64"] {
    -webkit-mask: url("../../../images/pictures/legal-paper-64.png") center / contain no-repeat;
    mask: url("../../../images/pictures/legal-paper-64.png") center / contain no-repeat;
}
/* Teks pertanyaan/subtitle (inline color: #000) */
body[data-theme="black"] #vue-chose-area .popup-container p,
body[data-theme="black"] #vue-tnc-pop-up .popup-container > div > p {
    color: var(--th-text, #FDFDFE) !important;
}
body[data-theme="black"] #vue-tnc-pop-up .popup-container p[style*="font-size: 12px"] {
    color: var(--th-text-muted, #9B9591) !important;
}
/* Box scroll isi TNC (inline background putih, color hitam) -> panel gelap;
   match hex, keyword, DAN serialisasi rgb() Vue. Konten HTML dari backend
   dipaksa terang */
body[data-theme="black"] #vue-tnc-pop-up .popup-container div[style*="background: #fff"],
body[data-theme="black"] #vue-tnc-pop-up .popup-container div[style*="background: white"],
body[data-theme="black"] #vue-tnc-pop-up .popup-container div[style*="background: rgb(255, 255, 255)"] {
    background: rgba(255, 255, 255, 0.05) !important;
    border: 1px solid rgba(241, 202, 118, 0.2) !important;
    color: var(--th-text, #FDFDFE) !important;
}
body[data-theme="black"] #vue-tnc-pop-up #tnc-html,
body[data-theme="black"] #vue-tnc-pop-up #tnc-html * {
    color: var(--th-text, #FDFDFE) !important;
    background-color: transparent !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
}
body[data-theme="black"] #vue-tnc-pop-up #tnc-html a {
    color: var(--th-accent-2, #F5CD6B) !important;
}
/* Judul section TNC (inline #8a4dff) tetap warna aksen, termasuk turunannya */
body[data-theme="black"] #vue-tnc-pop-up #tnc-html [style*="8a4dff"],
body[data-theme="black"] #vue-tnc-pop-up #tnc-html [style*="8a4dff"] *,
body[data-theme="black"] #vue-tnc-pop-up #tnc-html [style*="138, 77, 255"],
body[data-theme="black"] #vue-tnc-pop-up #tnc-html [style*="138, 77, 255"] * {
    color: var(--th-accent-2, #F5CD6B) !important;
}
/* Tombol utama (Ya/Setuju, ungu hardcode) -> accent gradient tema */
body[data-theme="black"] #vue-chose-area button[onclick="areYouCitizen(true)"],
body[data-theme="black"] #vue-tnc-pop-up button[onclick="agreeTnc()"] {
    background: var(--th-accent-grad, #FFC85B) !important;
    color: #ffffff !important;
    border: none !important;
    box-shadow: var(--th-btn-primary-shadow, none) !important;
}
/* Tombol "No": warna teal seperti default, tapi bergaya button primer tema
   (gradient halus + glow) */
body[data-theme="black"] #vue-chose-area button[onclick="areYouCitizen(false)"] {
    background: linear-gradient(135deg, #2ed3d3, #1ba9a9) !important;
    color: #ffffff !important;
    border: none !important;
    box-shadow: 0 0 15px rgba(35, 197, 197, 0.7), inset 0 0 5px rgba(255, 255, 255, 0.3) !important;
}
/* Scrollbar isi TNC di mode gelap */
body[data-theme="black"] #vue-tnc-pop-up .scroll-visible::-webkit-scrollbar-thumb {
    background-color: rgba(241, 202, 118, 0.4) !important;
}
/* Icon menu Moon Logic -> aset tema (orbit-black/moonlogic.png),
   sedikit lebih besar dari icon default (35px) */
body[data-theme="black"]  img[src*="moon-logic.png"] {
    content: url("../../assets/orbit-black/moonlogic.png?v=2");
    width: 42px !important;
    height: 42px !important;
}
/* Countdown Timer Modal inside SweetAlert2 (Themed Overrides) */
body[data-theme="black"] .swal2-popup #countdown-timer {
    color: var(--th-accent, #FFC85B) !important;
}
body[data-theme="black"] .swal2-popup div[style*="color: #374151"],
body[data-theme="black"] .swal2-popup div[style*="color:#374151"] {
    color: var(--th-text, #FDFDFE) !important;
}
body[data-theme="black"] .swal2-popup div[style*="background-color: #f9fafb"],
body[data-theme="black"] .swal2-popup div[style*="background-color:#f9fafb"] {
    background-color: rgba(255, 255, 255, 0.05) !important;
    border: 1px solid rgba(241, 202, 118, 0.2) !important;
}
body[data-theme="black"] .swal2-popup div[style*="color: #6b7280"],
body[data-theme="black"] .swal2-popup div[style*="color:#6b7280"] {
    color: var(--th-text-muted, #898989) !important;
}
/* Upgrade Coupon Modal (.modal-create-note) Theming */
body[data-theme="black"] .swal2-popup.modal-create-note {
    background-image: none !important;
    background-color: var(--th-surface) !important;
    color: var(--th-text) !important;
    border: 1px solid var(--th-border) !important;
    /* Lapisan pertama dulu `0 0 20px var(--th-shadow)` — invalid, dan satu
       lapisan invalid membuang SELURUH box-shadow, termasuk dua inset di
       bawahnya. Modal kupon jadi rata tanpa glow. Warnanya ditulis langsung.
       (Bug yang sama dijelaskan lengkap di black:1481.) */
    box-shadow: 0 0 20px rgba(241, 202, 118, 0.35),
                inset 0 0 20px 5px rgba(0, 0, 0, 0.65),
                inset 0 0 15px var(--th-border) !important;
}
/* Coupon Voucher punch-holes matching themed backgrounds */
body[data-theme="black"] .swal2-popup.modal-create-note .voucher-border-left:before,
body[data-theme="black"] .swal2-popup.modal-create-note .voucher-border-right:before {
    background: var(--th-surface, #1b1b1b) !important;
    border-color: var(--th-border) !important;
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.5) !important;
}
/* Input & Paste/Tempel Button inside the coupon modal — seragam dengan pola
   input-group bertema (withdrawal/ROI): box border aksen + glow, radius 8,
   tombol pakai accent gradient */
body[data-theme="black"] .swal2-popup.modal-create-note #swal2-input-coupon {
    background-color: var(--th-surface-2, rgba(255, 255, 255, 0.05)) !important;
    color: var(--th-text, #ffffff) !important;
    border: 1px solid rgba(241, 202, 118, 0.6) !important;
    border-right: none !important;
    border-radius: 8px 0 0 8px !important;
    box-shadow: 0 0 10px rgba(241, 202, 118, 0.2) !important;
    height: 2.625em;
}
body[data-theme="black"] .swal2-popup.modal-create-note #swal2-input-coupon {
    border-color: rgba(241, 202, 118, 0.6) !important;
    box-shadow: 0 0 10px rgba(241, 202, 118, 0.25) !important;
}
body[data-theme="black"] .swal2-popup.modal-create-note #swal2-input-coupon::placeholder {
    color: var(--th-text-hint, rgba(255, 255, 255, 0.5)) !important;
}
body[data-theme="black"] .swal2-popup.modal-create-note .pasteCoupon {
    background: var(--th-accent-grad, var(--th-accent)) !important;
    color: #fff !important;
    border: none !important;
    border-radius: 0 8px 8px 0 !important;
    box-shadow: var(--th-btn-primary-shadow, 0 0 10px var(--th-shadow)) !important;
    height: 2.625em;
}
/* Main UI Upgrade Button Theming.
   Dulu dua blok: blok pertama emas, blok kedua menimpanya jadi pil putih 15%
   tanpa glow — jadi tombolnya tampil abu-abu netral, satu-satunya tombol aksi
   di tema ini yang tidak emas. Sekarang satu blok saja: isian gradasi emas +
   glow tombol primer, sepadan dengan elite (ungu) & galaxy (emas). */
body[data-theme="black"] .upgrade-button {
    background: var(--th-accent-grad) !important;
    color: #fff !important;
    border: 1px solid var(--th-border-gold-2, #DBB14E) !important;
    box-shadow: var(--th-btn-primary-shadow) !important;
}
/* Custom SweetAlert Verification Buttons */
body[data-theme="black"] .swal2-popup .btn-start-bg {
  background: var(--th-btn-start-img, url("../../assets/orbit-black/start.png")) no-repeat center center !important;
  background-size: 100% 100% !important;
  color: white !important;
  border: none !important;
}
body[data-theme="black"] .swal2-popup .btn-stop-bg {
  background: var(--th-btn-stop-img, url("../../assets/orbit-black/stop.png")) no-repeat center center !important;
  background-size: 100% 100% !important;
  color: white !important;
  border: none !important;
}
/* Profile Email Confirmation Button */
body[data-theme="black"] #send-email-confirmation-profile.gradient-green {
  background-color: transparent !important;
  background-image: var(--th-btn-start-img, url("../../assets/orbit-black/start.png")) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 100% 100% !important;
  color: #ffffff !important;
  border: none !important;
  box-shadow: none !important;
}
body[data-theme="black"] #send-email-confirmation-profile.bg-yellow-dark {
  background-color: transparent !important;
  background-image: var(--th-btn-pause-img, url("../../assets/orbit-black/pause.png")) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 100% 100% !important;
  color: #ffffff !important;
  border: none !important;
  box-shadow: none !important;
}
/* Remove borders and shadows around the profit summary table content and cards */
body[data-theme="black"]  #user-profit-summary .card.card-style,
body[data-theme="black"]  #user-profit-summary .content,
body[data-theme="black"]  #user-profit-summary .card {
    border: none !important;
    box-shadow: none !important;
    background-color: transparent !important;
}
/* Style text headers to use secondary text color and opacity inside profit summary */
body[data-theme="black"]  #user-profit-summary .searchBar-container p {
    color: var(--th-text-muted) !important;
    opacity: 0.8 !important;
}

/* =========================================================================
   MENU SPARKLE CENTER BURST (BLACK THEME NAVIGATION MENU)
   ========================================================================= */
body[data-theme="black"] .menu-sparkle-layer {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
  pointer-events: none !important;
  z-index: 10 !important;
  overflow: hidden !important;
}

body[data-theme="black"] .mstar {
  position: absolute !important;
  pointer-events: none !important;
}
body[data-theme="black"] .mstar svg { display: block !important; }

body[data-theme="black"] .ms-gold svg path { fill: #ffc56a !important; }
body[data-theme="black"] .ms-gold-light svg path { fill: #f3dd8c !important; }
body[data-theme="black"] .ms-white svg path { fill: #ffc56a !important; }
body[data-theme="black"] .ms-white-dim svg path { fill: #f3dd8c !important; }

body[data-theme="black"] .ms-gold       { filter: drop-shadow(0 0 2px #ffc56a) drop-shadow(0 0 5px rgba(255,197,106,0.6)) !important; }
body[data-theme="black"] .ms-gold-light { filter: drop-shadow(0 0 2px #f3dd8c) drop-shadow(0 0 5px rgba(243,221,140,0.6)) !important; }
body[data-theme="black"] .ms-white      { filter: drop-shadow(0 0 2px #ffc56a) drop-shadow(0 0 5px rgba(255,197,106,0.7)) !important; }
body[data-theme="black"] .ms-white-dim  { filter: drop-shadow(0 0 1px #f3dd8c) drop-shadow(0 0 4px rgba(243,221,140,0.5)) !important; }

@keyframes toCenterFade {
  0%   { transform: translate(0,0) scale(0.3) rotate(0deg); opacity: 0; }
  10%  { opacity: 1; transform: translate(var(--tx), var(--ty)) scale(1) rotate(var(--r1)); }
  70%  { opacity: 0.8; transform: translate(var(--tx2), var(--ty2)) scale(0.7) rotate(var(--r2)); }
  100% { transform: translate(var(--tx3), var(--ty3)) scale(0.1) rotate(var(--r3)); opacity: 0; }
}

body[data-theme="black"] .center-anim {
  animation: toCenterFade var(--dur) linear var(--delay) forwards !important;
}
/* =========================================================================
   PARITAS KARTU LIST DENGAN TEMA ELIT — Kredit / Cashback / Profit
   -------------------------------------------------------------------------
   Elit membentuk halaman list bertingkat tiga: kartu luar yang di-inset dari
   tepi panel, pembungkus polos, lalu kotak isi list ber-radius + border aksen
   + glow + padding. Black baru punya lapisan warnanya saja — tanpa margin,
   radius, border-width, dan padding — jadi tampil rata tepi tanpa kotak.

   Blok ini menyamakan STRUKTURnya; palette tetap black (emas, bukan ungu).
   Padanan di elit: elit:934, elit:938, elit:1024, elit:1031.
   ========================================================================= */

/* 1. Kartu luar di-inset dari tepi panel — padanan elit:934.
      Di-scope per halaman (bukan global seperti elit) supaya tidak menggeser
      layout halaman lain yang juga memakai `.pt-2 > .card.card-style`.

      PROFIT SENGAJA TIDAK DIIKUTKAN. elit:934 hanya menyasar `.pt-2`,
      sedangkan profit.html memakai `.pt-1`, jadi di elit kartu profit tetap
      rata tepi (margin 0 dari inline HTML). */
body[data-theme="black"] #bonus-page .pt-2 > .card.card-style {
  margin: 0 !important;
}
/* Kartu LUAR halaman Cashback (`.card.card-style.bg-white` di bonus.html:273)
   dibuat polos — padanan black:2189 untuk asset, yang di bonus belum ada.
   Tanpa ini dia kena `#user-bonus .bg-white` (black:2722) yang memasang border
   emas + inset glow; digabung dengan kotak isi list di dalamnya, hasilnya
   BINGKAI DI DALAM BINGKAI.
   Selectornya harus lebih kuat dari `#user-bonus .bg-white` (1 ID + 2 class):
   1 ID + 4 class di sini sudah cukup karena jumlah ID-nya sama. */
body[data-theme="black"] #bonus-page .pt-2 > .card.card-style.bg-white {
  background-color: rgba(19, 19, 19, 0.80) !important;
  border: none !important;
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
  backdrop-filter: blur(2px);
}

/* 2. Pembungkus di dalam kartu luar dibuat polos — padanan elit:938.
      Tanpa ini `#bonus-page .content` (black:2359) ikut mengenainya sehingga
      surface-nya bertumpuk dua kali dengan kartu luar. */
body[data-theme="black"] #asset-page .pt-2 > .card.card-style > .content,
body[data-theme="black"] #bonus-page .pt-2 > .card.card-style > .content,
body[data-theme="black"] #bonus-page #user-bonus .pt-2 > .card.card-style > .content {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
}
body[data-theme="black"] #profit-page .pt-1.mt-2 > .card.card-style > .content,
body[data-theme="black"] #profit-page .card.card-style > .content {
  margin: 0 8px 8px 8px !important;
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
}
body[data-theme="black"] #profit-page .pt-1.mt-2 > .card.card-style > .d-flex,
body[data-theme="black"] #profit-page .card.card-style > .d-flex {
  padding-left: 8px !important;
  padding-right: 8px !important;
}
body[data-theme="black"] #profit-page .pt-1.mt-2 > .card.card-style > .d-flex > a.font-500,
body[data-theme="black"] #profit-page .card.card-style > .d-flex > a.font-500 {
  margin-left: 0 !important;
  margin-right: 0 !important;
}
body[data-theme="black"] #profit-page .pt-1.mt-2 > .card.card-style > .d-flex > .filter-box,
body[data-theme="black"] #profit-page .card.card-style > .d-flex > .filter-box {
  margin-right: 0 !important;
}
body[data-theme="black"] #user-profit .card.card-style > .content,
/* PROFIT SUMMARY sama: black:2949 memberi border ke `#user-profit-summary
   .card` DAN `#user-profit-summary .content`, sedangkan di
   profit_summary.html `.content` memang bersarang di dalam `.card.card-style`
   (baris 93 -> 139). */
body[data-theme="black"] #user-profit-summary .card.card-style > .content {
  margin: 0 !important;
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

/* 3. Kotak isi list Credit & Profit mengalir langsung di kartu luar */
body[data-theme="black"] #tab-group-credit .content:not(.tab-controls) {
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
body[data-theme="black"] #tab-group-bonus .content:not(.tab-controls) {
  /* Glass, bukan `--th-surface` opaque — seragam dengan kartu global. */
  background-color: var(--th-surface-glass) !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  border: 1px solid var(--th-border) !important;
  border-radius: 12px !important;
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
  padding: 8px !important;
}
/* Bonus diberi jarak dari baris "Summary List" di atasnya — padanan elit:1037. */
body[data-theme="black"] #tab-group-bonus .content:not(.tab-controls) {
  margin-top: 12px !important;
}

/* 4. Header kolom & baris list dibuat transparan supaya kotak di poin 3
      jadi satu-satunya permukaan — padanan elit:1043 & elit:1053.
      `.searchBar-container` global (black:634) memasang surface-glass + blur,
      yang di dalam kotak ini tampil sebagai pita gelap kedua. */
body[data-theme="black"] #tab-bonus .searchBar-container,
body[data-theme="black"] #tab-bonus .searchBar-container.bg-theme,
body[data-theme="black"] #tab-withdraw-bonus .searchBar-container,
body[data-theme="black"] #tab-withdraw-bonus .searchBar-container.bg-theme,
body[data-theme="black"] #profit-page #tab-group-profit .searchBar-container,
body[data-theme="black"] #profit-page #tab-group-profit .searchBar-container.bg-theme {
  background-color: transparent !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
/* Baris list Cashback & Profit: bening, dengan GARIS BAWAH sebagai pemisah —
   pola yang sama dengan list Credit di halaman Asset, supaya ketiga modul list
   ini terbaca seragam dan tidak ada kotak berbingkai di dalam kotak. */
body[data-theme="black"] #tab-bonus .d-flex[aria-expanded]:not(.month-summary-separator),
body[data-theme="black"] #tab-withdraw-bonus .d-flex.py-1.my-1,
body[data-theme="black"] #profit-page #tab-group-profit .d-flex[aria-expanded]:not(.month-summary-separator) {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  border-bottom: 1px solid rgba(241, 202, 118, 0.22) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

/* =========================================================================
   MONTHLY SUMMARY SEPARATOR (Profit, Asset, Bonus) — BLACK THEME
   Container pemisah bulan dengan bentuk rounded capsule rapi seperti di Elite/Purple,
   beraksen gradasi emas
   ========================================================================= */
body[data-theme="black"] .month-summary-separator,
body[data-theme="black"] .profit-summary-row,
body[data-theme="black"] [style*="background-color: rgba(0, 0, 0, 0.04)"],
body[data-theme="black"] [style*="background-color:rgba(0,0,0,0.04)"],
body[data-theme="black"] #profit-page .month-summary-separator,
body[data-theme="black"] #asset-page .month-summary-separator,
body[data-theme="black"] #asset-page .d-flex.month-summary-separator,
body[data-theme="black"] #asset-page #tab-credit .month-summary-separator,
body[data-theme="black"] #asset-page #tab-credit .d-flex.month-summary-separator,
body[data-theme="black"] #tab-credit .month-summary-separator,
body[data-theme="black"] #user-asset .month-summary-separator,
body[data-theme="black"] #tab-group-credit .month-summary-separator,
body[data-theme="black"] #bonus-page .month-summary-separator,
body[data-theme="black"] #user-bonus .month-summary-separator {
  background-color: rgba(241, 202, 118, 0.08) !important;
  background: linear-gradient(90deg, rgba(241, 202, 118, 0.18) 0%, rgba(26, 22, 14, 0.92) 55%, rgba(19, 19, 19, 0.95) 100%) !important;
  border: 1px solid rgba(241, 202, 118, 0.35) !important;
  border-left: 4px solid var(--th-accent, #FFC85B) !important;
  border-radius: 8px !important;
  padding-left: 8px !important;
  padding-right: 8px !important;
  margin-top: 10px !important;
  margin-bottom: 10px !important;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.6), inset 0 0 12px rgba(241, 202, 118, 0.06) !important;
}

body[data-theme="black"] .month-summary-separator h5.color-theme,
body[data-theme="black"] .profit-summary-row h5.color-theme,
body[data-theme="black"] [style*="background-color: rgba(0, 0, 0, 0.04)"] h5.color-theme,
body[data-theme="black"] [style*="background-color:rgba(0,0,0,0.04)"] h5.color-theme,
body[data-theme="black"] #profit-page .month-summary-separator h5.color-theme,
body[data-theme="black"] #asset-page .month-summary-separator h5.color-theme,
body[data-theme="black"] #asset-page #tab-credit .month-summary-separator h5.color-theme,
body[data-theme="black"] #tab-credit .month-summary-separator h5.color-theme,
body[data-theme="black"] #user-asset .month-summary-separator h5.color-theme,
body[data-theme="black"] #bonus-page .month-summary-separator h5.color-theme {
  color: var(--th-gold-highlight, #FEF9A2) !important;
  -webkit-text-fill-color: var(--th-gold-highlight, #FEF9A2) !important;
  font-weight: 700 !important;
  font-size: 13px !important;
  text-shadow: 0 0 8px rgba(254, 249, 162, 0.35);
}

body[data-theme="black"] .month-summary-separator h5:not(.color-theme),
body[data-theme="black"] #asset-page #tab-credit .month-summary-separator h5:not(.color-theme),
body[data-theme="black"] #tab-credit .month-summary-separator h5:not(.color-theme) {
  color: #00C076 !important;
  font-weight: 700 !important;
}

/* =========================================================================
   MENU DRAWER — overlay daftar menu memanjang sampai dasar drawer
   -------------------------------------------------------------------------
   Overlay gelap (`rgba(0,0,0,.65)` + blur) dipasang di `#home-dropdown-list`,
   dan tinggi <ul> itu = tinggi isinya. Akibatnya di bawah item terakhir
   ("Log Out") overlay berhenti dan video latar tampil terang tanpa peredup.

   `min-height: 100%` tidak dipakai karena <ul> punya sibling `#menu-info` di
   atasnya — 100% dari tinggi drawer akan melebihi ruang sisa dan memunculkan
   scroll. Yang dipakai: drawer dijadikan flex column, lalu <ul> mengisi sisa
   ruang. Video dan blok versi (v0.xx) posisinya absolute, jadi keluar dari
   flow flex dan tidak terpengaruh.

   Overlay sengaja TIDAK dipindah ke `.nav-container` supaya area header tetap
   tanpa peredup — video black hole di atas garis emas harus tetap terang.
   ========================================================================= */
body[data-theme="black"] .nav-container {
  display: flex !important;
  flex-direction: column !important;
}
/* `flex: 0 0 auto` supaya header tidak ikut memendek saat ruang sempit. */
body[data-theme="black"] .nav-container > #menu-info {
  flex: 0 0 auto !important;
}
/* `flex-shrink: 0` supaya <ul> tidak pernah memendek di bawah tinggi isinya
   (kalau daftar menu lebih panjang dari layar, drawer yang men-scroll). */
body[data-theme="black"] #home-dropdown-list {
  flex: 1 0 auto !important;
}

/* =========================================================================
   STRATEGY (#strategy-page) — sisa ungu, border samar, inner shadow kartu
   -------------------------------------------------------------------------
   Tiga celah yang membuat halaman ini belum ikut tema black sepenuhnya.
   ========================================================================= */

/* 1. TEKS UNGU INLINE.
      strategy.html menaruh `style="color: #924be1"` di 13 <span> + 1 <div>
      (mis. "(PRO only)"). Di black yang tercover baru versi #coin-setting
      (black:1135), jadi di halaman ini semuanya masih ungu.

      `:not([style*="background-color"])` WAJIB ada: string "color: #924be1"
      juga tersubstring di "border-color: #924be1" milik tombol #742bf4, dan
      tombol itu butuh teks putih di atas gradasi emas — bukan teks emas. */
body[data-theme="black"] #strategy-page [style*="color: #924be1"]:not([style*="background-color"]),
body[data-theme="black"] #strategy-page [style*="color:#924be1"]:not([style*="background-color"]),
body[data-theme="black"] #strategy-page [style*="color: rgb(146, 75, 225)"]:not([style*="background-color"]) {
  color: var(--th-accent-2, #F5CD6B) !important;
}

/* 2. TOMBOL UNGU #742bf4 (strategy.html:654, 1145, 1643).
      Rule tombol global black:3364 hanya mencocokkan #924be1 dan serialisasi
      rgb(146, 75, 225)-nya, jadi varian #742bf4 lolos dan tetap ungu.
      Bentuk rgb() ikut disebut karena browser bisa menserialisasi hex-nya. */
body[data-theme="black"] a[style*="background-color: #742bf4"],
body[data-theme="black"] button[style*="background-color: #742bf4"],
body[data-theme="black"] a[style*="background-color: rgb(116, 43, 244)"],
body[data-theme="black"] button[style*="background-color: rgb(116, 43, 244)"] {
  background: var(--th-accent-grad, linear-gradient(135deg, #FFC85B, #DBB14E)) !important;
  color: #ffffff !important;
  border: 1px solid var(--th-accent, #FFC85B) !important;
  box-shadow: var(--th-btn-primary-shadow, none) !important;
}

/* 3. BORDER INPUT TERLALU SAMAR.
      black:2389 memasang `rgba(241, 202, 118, 0.25)` untuk .form-control di
      halaman strategi — hampir tak terlihat di atas kartu gelap. Elit memakai
      0.4 untuk posisi yang sama. Dinaikkan ke var(--th-border) (= 0.4) supaya
      sejajar dengan border kartu.

      `.form-select` ikut disebut karena di Bootstrap 5 dia kelas TERSENDIRI,
      bukan turunan .form-control — jadi tidak pernah kena rule di black:2389. */
body[data-theme="black"] #strategy-content .form-control,
body[data-theme="black"] #strategy-content .form-select {
  border: 1px solid var(--th-border) !important;
}

/* 4. KARTU TANPA INNER GLOW.
      #strategy-ta-card-theme (strategy.html:1230) dapat border + glow luar di
      black:2407, tapi TIDAK ikut daftar ::before inner-shadow (black:3679)
      maupun daftar `position: relative` (black:3708). Akibatnya ini satu-satunya
      kartu di halaman strategi yang tanpa inner glow.

      `position: relative` wajib: tanpa itu `inset: 0` pada ::before menempel ke
      ancestor ber-posisi terdekat, bukan ke kartunya. */
body[data-theme="black"] #strategy-ta-card-theme {
  position: relative !important;
}
body[data-theme="black"] #strategy-ta-card-theme::before {
  content: "" !important;
  position: absolute !important;
  inset: 0 !important;
  border-radius: 15px !important;
  pointer-events: none !important;
  box-shadow: inset 0 0 6px rgba(241, 202, 118, 0.25) !important;
  z-index: 0 !important;
}

/* 5. BORDER HIGHLIGHT TUTORIAL.
      strategy.html:2503 menyuntik `border: 4px solid #9333EA` lewat JS saat
      tutorial aktif — ungu, dan tidak tercover di black mana pun. */
body[data-theme="black"] #strategy-page [style*="#9333EA"],
body[data-theme="black"] #strategy-page [style*="#9333ea"],
body[data-theme="black"] #strategy-page [style*="147, 51, 234"] {
  border-color: var(--th-accent, #FFC85B) !important;
}

/* =========================================================================
   STRATEGY — sisa ungu yang datang dari CLASS/ID di styles/style.css
   -------------------------------------------------------------------------
   Perbaikan sebelumnya hanya menyasar warna INLINE di strategy.html. Ungu yang
   masih terlihat ternyata berasal dari style.css dan belum pernah di-override
   tema black mana pun — jadi tidak akan hilang lewat selektor [style*=...].
   ========================================================================= */

/* Pil "Option" — style.css:8705 `.btn-option { border: 1px solid #924be1 }`.
   Border-nya dari class, bukan inline, itu sebabnya masih ungu meski warna
   teksnya (inline) sudah jadi emas. */
body[data-theme="black"] .btn-option {
  border: 1px solid var(--th-border-solid, #F1CA76) !important;
  color: var(--th-accent-2, #F5CD6B) !important;
}

/* Baris mode "Ultimate" — style.css:8374 `#ultimate-strategy { border: 2px
   solid #a76ee7 }`. Ketebalan 2px dipertahankan supaya baris terpilih tetap
   menonjol seperti desain aslinya, hanya warnanya yang jadi emas. */
body[data-theme="black"] #ultimate-strategy {
  border: 2px solid var(--th-accent, #FFC85B) !important;
  box-shadow: 0 0 10px rgba(255, 200, 91, 0.35) !important;
}

/* Sisa sumber ungu di style.css yang belum tercover black. Belum terpakai di
   strategy.html, tapi dipasang sekalian karena satu kelas masalah:
     .icon-button                     style.css:8640  color: #924be1
     .list-group .active              style.css:3024  bg + border-color
     .button-danger                   style.css:5922  bg + border
     .ribbon-purple span              style.css:9110  gradient
     .sticky-footer .btn-open         style.css:9711  background-color
     .ranking-top-up-header-container style.css:9169  background */
body[data-theme="black"] .icon-button {
  color: var(--th-accent-2, #F5CD6B) !important;
}
body[data-theme="black"] .list-group .active {
  background-color: rgba(241, 202, 118, 0.25) !important;
  border-color: var(--th-border-solid, #F1CA76) !important;
}
body[data-theme="black"] .button-danger,
body[data-theme="black"] .sticky-footer .btn-open {
  background: var(--th-accent-grad, linear-gradient(135deg, #FFC85B, #DBB14E)) !important;
  border: 1px solid var(--th-accent, #FFC85B) !important;
  color: #ffffff !important;
  box-shadow: var(--th-btn-primary-shadow) !important;
}
body[data-theme="black"] .ribbon-purple span {
  background: linear-gradient(#FFC85B 0%, #DBB14E 100%) !important;
}

/* Inner glow kartu strategi dipertegas: 6px @ 0.25 hampir tak terbaca di atas
   permukaan #131313. Dinaikkan ke 10px @ 0.35 + satu garis dalam tipis supaya
   batas dalam kartu benar-benar terlihat. */
body[data-theme="black"] #strategy-page .card.card-style::before,
body[data-theme="black"] #strategy-content .card.card-style::before,
body[data-theme="black"] #strategy-mode-card-theme::before,
body[data-theme="black"] #grouping-container::before,
body[data-theme="black"] #money-management-card-theme::before,
body[data-theme="black"] #strategy-ta-card-theme::before {
  box-shadow: inset 0 0 10px rgba(241, 202, 118, 0.35),
              inset 0 0 0 1px rgba(241, 202, 118, 0.12) !important;
}

/* =========================================================================
   STRATEGY — border kartu: ganti trik gradient-border jadi border solid
   -------------------------------------------------------------------------
   Kartu strategi di black memakai trik gradient-border:
       border: 1px solid transparent
       background-image: linear-gradient(surface,surface), linear-gradient(gold)
       background-origin: border-box
       background-clip: padding-box, border-box
   Border emasnya sebenarnya adalah LAYER BACKGROUND KEDUA yang mengintip lewat
   border transparan. Konsekuensinya rapuh: cukup satu aturan lain menyetel
   `background`, `background-color`, atau `background-image` dan border itu
   lenyap tanpa pesan error. Untuk #grouping-container saja ada 22 aturan di
   file ini yang mengenainya.

   Elit tidak memakai trik ini — cukup `border: 1px solid <warna>` biasa, dan
   itu tidak bisa dipatahkan oleh aturan background. Pola itu yang diikuti di
   sini, dengan warna emas tema black.

   Dua ID pada selektor supaya menang atas black:1995 / black:2326 / black:2407
   yang memasang trik gradient tadi.
   ========================================================================= */
body[data-theme="black"] #strategy-page #grouping-container,
body[data-theme="black"] #strategy-page #strategy-mode-card-theme,
body[data-theme="black"] #strategy-page #money-management-card-theme,
body[data-theme="black"] #strategy-page #strategy-ta-card-theme,
body[data-theme="black"] #strategy-page #moon-logic-card-theme,
body[data-theme="black"] #strategy-content .card.card-style {
  background-color: var(--th-surface-glass) !important;
  background-image: none !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  border: 1px solid var(--th-border-solid, #F1CA76) !important;
  border-radius: 16px !important;
  box-shadow: 0 0 10px rgba(241, 202, 118, 0.3),
              inset 0 0 10px rgba(241, 202, 118, 0.28) !important;
}

/* Divider antar baris. Inline-nya `background-color: rgb(0, 0, 0); opacity: .08`
   — hitam di atas permukaan #131313, jadi benar-benar tidak terlihat. Halaman
   lain sudah punya penanganan ini (black:2441) tapi #strategy-page tidak ikut,
   dan bentuk `rgb(0, 0, 0)` juga tidak tercocokkan selektor di sana yang cuma
   mencari "black" / "#000".
   `opacity: 1 !important` dibutuhkan untuk mengalahkan opacity inline. */
body[data-theme="black"] #strategy-page .divider,
body[data-theme="black"] #strategy-content .divider {
  background-color: rgba(241, 202, 118, 0.18) !important;
  opacity: 1 !important;
}

/* =========================================================================
   MENU DRAWER — METEOR / GLITTER di header (#menu-info)
   -------------------------------------------------------------------------
   JUMLAH METEOR DIATUR DARI JS, bukan dari CSS:

       window.BLACK_MENU_METEOR_COUNT = 20;   // ubah sesuka hati

   Elemennya di-inject oleh initBlackMenuMeteors() di theme-engine.js.
   Versi sebelumnya memakai pseudo-element, dan itu mentok: satu elemen hanya
   punya ::before dan ::after — maksimal 2 meteor per elemen, tidak mungkin
   sampai 20. Karena itu sekarang pakai elemen sungguhan.

   Satu aturan CSS ini melayani berapa pun jumlahnya, karena tiap meteor
   membawa parameternya sendiri sebagai inline custom property:
       --m-x1 / --m-y1   posisi awal        --m-x2 / --m-y2   posisi akhir
       --m-len           panjang ekor       --m-thick         ketebalan
       --m-rot           kemiringan         --m-dur           durasi
       --m-delay         jeda (NEGATIF = langsung mulai di tengah lintasan)
       --m-op            opacity puncak

   Yang dianimasikan tetap HANYA `transform` — dijalankan compositor, tidak
   menyentuh layout. Dan animasinya dijeda selama drawer tertutup, jadi 20
   elemen ini nol biaya sampai drawer benar-benar dibuka.
   ========================================================================= */
body[data-theme="black"] .menu-meteor {
  position: absolute;
  top: 0;
  left: 0;
  width: var(--m-len, 60px);
  height: var(--m-thick, 2px);
  border-radius: 999px;
  z-index: 0;
  pointer-events: none;
  opacity: 0;
  /* Kepala terang di ujung KIRI, ekor meredup ke kanan */
  background: linear-gradient(
    to right,
    #FFFFFF 0%,
    #FEF9A2 14%,
    rgba(255, 200, 91, 0.5) 45%,
    rgba(255, 200, 91, 0) 100%
  );
  box-shadow: 0 0 6px rgba(254, 249, 162, 0.4);
  transform: translate3d(var(--m-x1, 0px), var(--m-y1, 0px), 0)
             rotate(var(--m-rot, -30deg));
  animation: black-menu-meteor var(--m-dur, 4s) linear var(--m-delay, 0s) infinite;
  /* Default JEDA. Baru jalan saat drawer terbuka (rule di bawah). */
  animation-play-state: paused;
}
body[data-theme="black"].nav-open .menu-meteor {
  animation-play-state: running;
}
@keyframes black-menu-meteor {
  0% {
    transform: translate3d(var(--m-x1), var(--m-y1), 0) rotate(var(--m-rot));
    opacity: 0;
  }
  10% {
    opacity: var(--m-op, 1);
  }
  70% {
    opacity: var(--m-op, 1);
  }
  100% {
    transform: translate3d(var(--m-x2), var(--m-y2), 0) rotate(var(--m-rot));
    opacity: 0;
  }
}
/* Teks header diangkat di atas meteor */
body[data-theme="black"] #menu-info .nav > header {
  position: relative;
  z-index: 1;
}
/* Hormati preferensi sistem: kalau user minta animasi dikurangi, meteornya
   tidak usah muncul sama sekali. */
@media (prefers-reduced-motion: reduce) {
  body[data-theme="black"] .menu-meteor,
  body[data-theme="black"] .menu-twinkle-star {
    display: none !important;
  }
}

/* Bintang kecil kelap-kelip di header drawer (tema black) */
body[data-theme="black"] .menu-twinkle-star {
  position: absolute;
  pointer-events: none;
  z-index: 1;
}

@keyframes menuStarTwinkle {
  0%, 100% {
    opacity: 0.1;
    transform: scale(0.4) rotate(0deg);
    filter: drop-shadow(0 0 1px currentColor);
  }
  50% {
    opacity: 0.95;
    transform: scale(1.0) rotate(15deg);
    filter: drop-shadow(0 0 2px currentColor) drop-shadow(0 0 4px currentColor);
  }
}

/* Badge "New" ([data-after-text]) dirender sebagai ::after absolut dengan
   offset negatif, jadi dia berada DI LUAR kotak elemennya. `overflow: hidden`
   pada .accordion-header di bawah memotongnya — hanya terjadi di black karena
   tema lain tidak meng-clip kartu ini. Kartu yang membawa badge dibuat
   overflow visible, dan layer dekoratif di dalamnya yang di-clip sendiri
   supaya sudut membulatnya tetap rapi. */
body[data-theme="black"] [data-after-text]:not([data-after-text=""]),
body[data-theme="black"] [data-before-text]:not([data-before-text=""]) {
  overflow: visible !important;
}
body[data-theme="black"] [data-after-text]:not([data-after-text=""]) > .black-btn-menu-video,
body[data-theme="black"] [data-after-text]:not([data-after-text=""]) > .black-card-sparkle-layer,
body[data-theme="black"] [data-after-text]:not([data-after-text=""]) > .black-card-glitter {
  border-radius: 16px !important;
  overflow: hidden !important;
}
/* Card Menu Button Background for Black theme */
body[data-theme="black"] .accordion-header {
  position: relative !important;
  overflow: hidden !important;
  background-color: #131313 !important;
  background-image: none !important;
  border: 1px solid rgba(241, 202, 118, 0.4) !important;
  border-radius: 16px !important;
  box-shadow: 0 0 12px rgba(241, 202, 118, 0.35) !important;
}

/* Latar Belakang Gambar Tombol Menu (bg-button-menu.jpg).
   `z-index: 0` menaruhnya di atas background kartu tapi di bawah
   `.accordion-header > a` (z-index 1) yang membawa teks. Layer sparkle juga
   di z-index 0 dan datang SESUDAH <img> dalam urutan DOM, jadi bintangnya
   melayang di atas gambar ini — persis yang diinginkan. */
body[data-theme="black"] .accordion-header .black-btn-menu-video {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  object-position: center !important;
  z-index: 0 !important;
  pointer-events: none !important;
  border-radius: 15px !important;
  display: block !important;
}

body[data-theme="black"] .accordion-header > a,
body[data-theme="black"] .accordion-header .content {
  position: relative !important;
  z-index: 1 !important;
  background: transparent !important;
}

/* Efek glitter kilap menyapu (pita terang miring dari kiri ke kanan) DI-TAKEOUT.
   Yang dipakai sekarang cuma sparkle bintang di bawah.

   Elemen `<span class="black-card-glitter">` TIDAK boleh dihapus dari markup:
   initBlackCardSparkles() di theme-engine.js memakainya sebagai anchor untuk
   menemukan kartu menu (`.accordion-header .black-card-glitter`) dan menyisipkan
   layer sparkle tepat sesudahnya. Jadi elemennya dibiarkan ada tapi tidak
   digambar — `display: none` tidak mengganggu `parentElement`/`nextSibling`
   yang dipakai JS-nya. */
body[data-theme="black"] .black-card-glitter {
  display: none !important;
}

/* =========================================================================
   KARTU MENU HOME — SPARKLE MASUK DARI SISI KIRI
   -------------------------------------------------------------------------
   Versi "satu sisi" dari sparkle drawer menu (playBlackMenuSparkleEffect() di
   menu.html), yang menembakkan bintang dari KEEMPAT tepi menuju titik tengah.
   Di kartu ini bintang hanya lahir di tepi KIRI lalu melayang ke kanan sambil
   meredup, jadi kilaunya terbaca datang dari satu arah.

   Beda kedua: sparkle drawer sekali jalan tiap drawer dibuka lalu dibersihkan;
   yang ini `infinite` karena kartunya menetap di layar home. Tiap bintang
   membawa parameter acaknya sendiri sebagai custom property inline (--tx/--ty/
   --rot/--dur/--delay/--op) yang di-inject initBlackCardSparkles() di
   theme-engine.js — satu aturan di bawah melayani berapa pun jumlahnya.

   Kelas .mstar / .ms-gold* sengaja dipakai ulang dari sparkle drawer supaya
   bentuk dan warna bintangnya identik.
   ========================================================================= */
body[data-theme="black"] .black-card-sparkle-layer {
  position: absolute !important;
  inset: 0 !important;
  border-radius: 15px !important;
  overflow: hidden !important;
  pointer-events: none !important;
  /* Di atas latar kartu, tapi DI BAWAH `.accordion-header > a` (z-index 1)
     yang membawa teks dan ikon — bintang tidak boleh menutupi label. */
  z-index: 0 !important;
}
/* JANGAN pasang `opacity: ... !important` di sini: dalam urutan cascade,
   deklarasi `!important` author menang atas nilai yang datang dari animasi,
   jadi opacity di @keyframes akan diabaikan dan bintangnya tidak pernah
   terlihat. Nilai awal cukup diurus keyframe 0%.
   `will-change` juga sengaja tidak dipakai — 12 bintang x 5 kartu = 60 elemen,
   dan memaksa tiap elemen jadi layer compositor sendiri justru lebih mahal
   daripada manfaatnya. Animasi transform/opacity sudah di compositor. */
body[data-theme="black"] .black-card-sparkle-layer .mstar {
  animation: black-card-sparkle-left var(--dur, 3s) linear var(--delay, 0s)
    infinite !important;
}
/* PENTING soal urutan scale: keyframe tengah HARUS ikut menyebut `transform`.
   Kalau 15%/70% cuma menaruh `opacity`, transform diinterpolasi lurus dari 0%
   ke 100% sehingga bintangnya baru mencapai ukuran penuh persis saat opacity
   sudah kembali ke 0 — yang terlihat nyaris tidak ada apa-apa. Skala memuncak
   di awal lalu mengecil, sama seperti `toCenterFade` milik sparkle drawer. */
@keyframes black-card-sparkle-left {
  0% {
    transform: translate(0, 0) scale(0.2) rotate(0deg);
    opacity: 0;
  }
  15% {
    transform: translate(calc(var(--tx, 60px) * 0.15), calc(var(--ty, 0px) * 0.15))
      scale(1) rotate(calc(var(--rot, 90deg) * 0.15));
    opacity: var(--op, 0.9);
  }
  70% {
    transform: translate(calc(var(--tx, 60px) * 0.7), calc(var(--ty, 0px) * 0.7))
      scale(0.85) rotate(calc(var(--rot, 90deg) * 0.7));
    opacity: calc(var(--op, 0.9) * 0.6);
  }
  100% {
    transform: translate(var(--tx, 60px), var(--ty, 0px)) scale(0.3)
      rotate(var(--rot, 90deg));
    opacity: 0;
  }
}
/* `.ms-gold`/`.ms-gold-light` global memasang DUA drop-shadow sekaligus. Di
   sparkle drawer itu tidak masalah (sekali jalan lalu dibersihkan), tapi di
   sini bintangnya berputar tanpa henti dan tiap drop-shadow memaksa render
   offscreen per frame. Dipangkas jadi satu bayangan tipis. */
body[data-theme="black"] .black-card-sparkle-layer .ms-gold,
body[data-theme="black"] .black-card-sparkle-layer .ms-gold-light {
  filter: drop-shadow(0 0 3px rgba(255, 197, 106, 0.55)) !important;
}
/* Hormati preferensi sistem: kalau user minta animasi dikurangi, sparkle-nya
   tidak usah muncul sama sekali (pola sama dengan meteor drawer). */
@media (prefers-reduced-motion: reduce) {
  body[data-theme="black"] .black-card-sparkle-layer {
    display: none !important;
  }
}

/* Banner download app harus DIANGKAT di atas video latar.
   `#user-info-profile moonbot-bg` (black:4622) dipasang `position: fixed`
   dengan `z-index: 0`. Dalam urutan menggambar CSS, elemen ber-posisi —
   termasuk yang z-index-nya 0 — selalu dilukis DI ATAS kotak blok biasa yang
   tidak ber-posisi. Pembungkus banner tidak punya position/z-index sama
   sekali, jadi ia tertimbun video meski gambarnya termuat sempurna
   (diagnostik: naturalWidth 960, display block, opacity 1, tapi tak terlihat).
   Tema default tidak kena karena di sana moonbot-bg tidak fixed. */
body[data-theme="black"] #app-banner-ios,
body[data-theme="black"] #app-banner-android {
  position: relative !important;
  z-index: 1 !important;
}
/* Fix untuk App Banner iOS agar jelas/terlihat pop di tema hitam */
body[data-theme="black"] #app-banner-ios {
  opacity: 1 !important;
  filter: drop-shadow(0 0 10px rgba(241, 202, 118, 0.4)) brightness(1.05) !important;
  border: 1px solid rgba(219, 177, 78, 0.5) !important;
  border-radius: 10px !important; /* menyesuaikan dengan inline style HTML */
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
}
/* Versi Android disamakan tampilannya dengan iOS */
body[data-theme="black"] #app-banner-android {
  opacity: 1 !important;
  filter: drop-shadow(0 0 10px rgba(241, 202, 118, 0.4)) brightness(1.05) !important;
  border: 1px solid rgba(219, 177, 78, 0.5) !important;
  border-radius: 10px !important;
  box-shadow: 0 0 15px rgba(241, 202, 118, 0.2) !important;
}

/* =========================================================================
   PERFORMA MOBILE (khusus tema black)
   -------------------------------------------------------------------------
   Tema ini jauh lebih berat dari tema lain: 42 `backdrop-filter`, 35
   `drop-shadow`, dan puluhan elemen bintang beranimasi (30 twinkle + 20
   meteor di drawer, 12 sparkle per kartu menu). Sebagai pembanding, elite
   cuma punya 11 backdrop-filter dan 2 drop-shadow.

   Dua hal yang paling membebani GPU ponsel dipangkas di sini, TANPA menghapus
   satu pun elemen dekoratif — jadi tampilannya tetap sama, cuma cara
   menggambarnya yang lebih murah:

     1. `backdrop-filter: blur()`. Tiap elemen ber-blur memaksa compositor
        menyalin + mem-blur area di belakangnya SETIAP frame saat scroll.
        Dengan puluhan elemen sekaligus inilah penyebab utama lag-nya.

     2. Animasi yang menggerakkan `filter`. `opacity`/`transform` bisa
        dijalankan compositor tanpa repaint, tapi `filter` yang berubah tiap
        frame memaksa render ulang offscreen untuk tiap bintang. Keyframes-nya
        didefinisikan ulang di bawah tanpa bagian filter (nama sama = definisi
        terakhir yang menang), bayangannya dijadikan statis.

   Batas 768px dipilih supaya tablet besar & desktop tetap dapat versi penuh.
   ========================================================================= */
@media (max-width: 768px) {
  body[data-theme="black"],
  body[data-theme="black"] *,
  body[data-theme="black"] *::before,
  body[data-theme="black"] *::after {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }

  /* Bintang drawer: bayangan dibekukan, gerakannya tetap */
  @keyframes menuStarTwinkle {
    0%, 100% {
      opacity: 0.1;
      transform: scale(0.4) rotate(0deg);
    }
    50% {
      opacity: 0.95;
      transform: scale(1) rotate(15deg);
    }
  }
  body[data-theme="black"] .menu-twinkle-star {
    filter: drop-shadow(0 0 2px currentColor);
  }

  /* Sparkle kartu menu: ~12 bintang x jumlah kartu, semuanya berputar terus.
     Bayangannya dilepas sama sekali di mobile — di ukuran 4-9px nyaris tidak
     terlihat, tapi tiap satu memaksa render offscreen per frame. */
  body[data-theme="black"] .black-card-sparkle-layer .ms-gold,
  body[data-theme="black"] .black-card-sparkle-layer .ms-gold-light {
    filter: none !important;
  }
}

/* ---- Lanjutan pemangkasan mobile (tahap 2) ------------------------------
   Setelah blur & animasi filter dibereskan, dua sisa biaya terbesarnya:

     a. Border emas berputar di kartu saldo. `spin-border-pulse` menggerakkan
        custom property --glow-angle, jadi conic-gradient-nya digambar ULANG
        tiap frame — plus lapisan mask (mask-composite) di atasnya. Ini bukan
        animasi compositor; dia repaint terus selama kartu terlihat, bahkan
        saat halaman diam. Di mobile sudutnya dibekukan: gradient emasnya tetap
        ada, hanya tidak berputar.

     b. `filter: drop-shadow()` di kartu saldo. Filter pada elemen sebesar itu
        memaksa render offscreen setiap kali kartunya repaint (mis. saat
        scroll). `box-shadow` memberi hasil visual setara dengan biaya jauh
        lebih murah karena digambar langsung oleh compositor.
   ------------------------------------------------------------------------ */
@media (max-width: 768px) {
  body[data-theme="black"] .balance-card::before,
  body[data-theme="black"] .profile-info-card::before {
    animation: none !important;
    --glow-angle: 45deg;
  }

  body[data-theme="black"] .balance-card,
  body[data-theme="black"] .profile-info-card {
    filter: none !important;
    box-shadow: 0 0 12px rgba(241, 202, 118, 0.35) !important;
  }
}

/* ---- Layar sempit: nilai saldo -----------------------------------------
   Base sudah dikecilkan di styles/style.css (@media max-width: 400px), tapi
   black menimpa `.balance-card h4` jadi 20px !important (black:502), jadi
   pengecilannya harus diulang di sini dengan spesifisitas yang menang. */
@media (max-width: 400px) {
  body[data-theme="black"] .balance-card .wallet-balance h4 {
    font-size: 15px !important;
  }
}


/* ---- Kotak filter tanggal / nama di halaman Asset -----------------------
   `<label class="col">` di dalamnya membawa `flex: 1 0 0%` dari Bootstrap,
   jadi kotaknya memanjang mengisi sisa ruang. Ditambah `#get-all-asset-text`
   yang `visibility: hidden` — tersembunyi tapi TETAP memakan lebar.
   Keduanya dinolkan supaya kotaknya selebar teksnya saja. */
body[data-theme="black"] #asset-page .filter-box > .d-flex,
body[data-theme="black"] #user-asset .filter-box > .d-flex {
  flex: 0 0 auto !important;
}
body[data-theme="black"] #asset-page .filter-box label.col,
body[data-theme="black"] #user-asset .filter-box label.col {
  flex: 0 0 auto !important;
  width: auto !important;
}
body[data-theme="black"] #asset-page .filter-box .col-form-label,
body[data-theme="black"] #user-asset .filter-box .col-form-label {
  white-space: nowrap !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
/* `#get-all-asset-text` bukan cuma menambah LEBAR. Dia div biasa tanpa
   `.col-form-label`, jadi tingginya mengikuti line-height normal dan menjadi
   item tertinggi di baris flex itu — kotak tanggal ikut meninggi, sementara
   kotak filter nama (yang tidak punya elemen ini) tetap pendek. Karena
   `visibility: hidden` tetap memakan ruang, dimatikan dengan display.
   Selectornya tidak diikat ke ancestor supaya tidak meleset kalau markup-nya
   dipakai di luar #asset-page. */
body[data-theme="black"] #get-all-asset-text {
  display: none !important;
}
/* Samakan tinggi kedua kotak filter: `.filter-box` sudah punya
   `line-height: 32px`, tapi `.col-form-label` bawaan Bootstrap menambah
   padding atas-bawah sendiri sehingga tingginya bergantung isi. Dikunci rata. */
body[data-theme="black"] .filter-box {
  display: flex !important;
  align-items: center !important;
  min-height: 34px !important;
}
body[data-theme="black"] .filter-box > div {
  display: flex !important;
  align-items: center !important;
}
body[data-theme="black"] .filter-box .col-form-label {
  line-height: 1 !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* ---- Panel putih di belakang daftar Kredit / Penarikan ------------------
   Pembungkusnya ber-inline `background-color: white`. Di tema black itu sudah
   ditimpa jadi gelap, tapi hasilnya jadi permukaan KEDUA di dalam kartu yang
   sudah punya permukaan sendiri. Dibuat bening supaya cuma ada satu latar. */
body[data-theme="black"] #tab-credit [style*="background-color: white"]:not(.month-summary-separator),
body[data-theme="black"] #tab-withdraw [style*="background-color: white"]:not(.month-summary-separator),
body[data-theme="black"] #tab-credit > .pt-1 > div:not(.month-summary-separator),
body[data-theme="black"] #tab-withdraw > .pt-1 > div:not(.month-summary-separator) {
  background-color: transparent !important;
  background: transparent !important;
  box-shadow: none !important;
  border: none !important;
}

/* ---- Kartu "Total Cashback" (#flush-one) --------------------------------
   Dua permukaan bertumpuk di satu kartu:
     - `#flush-one` membawa kelas `.accordion-header`, yang di black:5292
       diberi latar #131313 + border emas + glow;
     - `.content` di dalamnya ber-inline `background-color: #fff`, lalu
       black:3273 menggelapkannya jadi permukaan kedua, lengkap dengan border
       dan inner glow sendiri.

   Yang dimatikan adalah permukaan LUAR. `#flush-one` memakai
   `.accordion-header` cuma sebagai anchor Bootstrap (dirujuk
   `aria-labelledby` + `data-bs-parent` oleh #total-bonus-info), bukan sebagai
   kartu — kartunya memang si `.content` di dalamnya.

   Catatan spesifisitas: mematikan yang DALAM lewat `.accordion-header >
   .content` tidak akan menang, karena rule pengecatnya di black:3273 memakai
   `#bonus-page .content:not(:has(> #div-withdrawal-bonus))` — ada ID di
   selector utama DAN di dalam :has(), jadi bobotnya (2,1,1). Mematikan yang
   luar jauh lebih murah: cukup `#flush-one.accordion-header` (1,2,1) untuk
   mengalahkan `.accordion-header` (0,2,1). */
body[data-theme="black"] #flush-one.accordion-header {
  background-color: transparent !important;
  background-image: none !important;
  border: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}

/* =========================================================================
   OTP — HIGHLIGHT FOKUS, TOMBOL BELI/BATAL, & LINK BANTUAN
   ========================================================================= */
/* Kotak OTP saat diketik masih berborder ungu. Aturan fokus umum tema ini
   (`body[data-theme="black"] input:focus`) kalah spesifik dari aturan bawaan
   di styles/style.css:8775 —

       #otp .form-control:focus { border: 2px solid #924ce2 !important; }

   — yang memakai selector ber-ID. Karena dua-duanya `!important`, yang menang
   ditentukan spesifisitas, dan `#otp` (1 ID) mengalahkan selector tema yang
   tanpa ID. Jadi penimpanya harus ikut membawa `#otp`.

   Catatan: ungu di sini `#924ce2` — varian KE-EMPAT di proyek ini setelah
   `#924be1`, `rgb(146, 76, 226)`, dan `rgb(146, 76, 227)`. Semuanya ungu yang
   nyaris sama tapi beda digit, dan tiap varian butuh penimpanya sendiri. */
body[data-theme="black"] #otp .form-control:focus,
body[data-theme="black"] #otp input.otp-digit:focus {
  border: 2px solid var(--th-border-gold-2, #DBB14E) !important;
  box-shadow: 0 0 8px rgba(241, 202, 118, 0.35) !important;
  outline: none !important;
}

/* Tombol Beli / Batal di drawer Fee Setting. Tema elite sudah punya
   pasangannya (elit/theme.css:3812), tema black belum sama sekali — jadi
   warna inline hijau `rgb(36, 196, 141)` dan merah `rgb(216, 69, 88)` lolos
   apa adanya. Disamakan dengan tombol aksi black yang lain (start.png /
   stop.png + garis emas + inner glow emas). */
body[data-theme="black"] #btn-buy-bnb-confirm {
  background-color: transparent !important;
  background-image: var(--th-btn-start-img, linear-gradient(135deg, #24c48d, #1a9e6f)) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: cover !important;
  color: #ffffff !important;
  border: 1px solid rgba(254, 249, 162, 0.5) !important;
  box-shadow: 0 0 12px rgba(36, 196, 141, 0.4),
              inset 0 0 10px rgba(254, 249, 162, 0.5) !important;
}
body[data-theme="black"] #btn-buy-bnb-cancel {
  background-color: transparent !important;
  background-image: var(--th-btn-stop-img, linear-gradient(135deg, #d84558, #a5303f)) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: cover !important;
  color: #ffffff !important;
  border: 1px solid rgba(254, 249, 162, 0.5) !important;
  box-shadow: 0 0 12px rgba(216, 69, 88, 0.4),
              inset 0 0 10px rgba(254, 249, 162, 0.5) !important;
}

/* "Contact CCR" di bawah form OTP ikut diputihkan oleh aturan pop-up umum
   (`.popUp .card.card-style a` -> --th-text), padahal itu tautan, bukan teks
   biasa — jadi tidak lagi terbaca sebagai sesuatu yang bisa diklik.
   Dikembalikan ke biru tautan aplikasi (.color-blue-light / #5d9cec). */
body[data-theme="black"] #otp-contact a,
body[data-theme="black"] #vue-otp-verification #otp-contact a {
  color: #5d9cec !important;
}

/* =========================================================================
   SAVING PAGE ACTION BUTTONS (Start, Stop, Edit, Cancel)
   Guard block di bawah untuk memastikan tidak ada aturan umum/offcanvas/utility
   (seperti .btn-investor-mode, button.bg-purple, button.color-red-dark)
   yang menimpa border glow, border-radius, maupun image button tema.
   ========================================================================= */
body[data-theme="black"] #saving-page #start-saving,
body[data-theme="black"] #user-saving #start-saving,
body[data-theme="black"] #saving-setup #start-saving,
body[data-theme="black"] #saving-page #set-amount-to-start-saving,
body[data-theme="black"] #user-saving #set-amount-to-start-saving,
body[data-theme="black"] #footer-bar-savings #set-amount-to-start-saving,
body[data-theme="black"] #saving-stopped #set-amount-to-start-saving {
  background-color: transparent !important;
  background-image: var(--th-btn-start-img, url("../../assets/orbit-black/start.png")) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 100% 100% !important;
  color: #ffffff !important;
  border: 1px solid rgba(254, 249, 162, 0.5) !important;
  box-shadow: 0 0 12px rgba(36, 196, 141, 0.4),
              inset 0 0 10px rgba(254, 249, 162, 0.5) !important;
  border-radius: 20px !important;
  height: 38px !important;
  font-weight: 700 !important;
}

body[data-theme="black"] #saving-page #stop-saving,
body[data-theme="black"] #user-saving #stop-saving,
body[data-theme="black"] #footer-bar-savings #stop-saving,
body[data-theme="black"] #saving-started #stop-saving,
body[data-theme="black"] #saving-page #cancel-edit-amount,
body[data-theme="black"] #user-saving #cancel-edit-amount,
body[data-theme="black"] #saving-setup #cancel-edit-amount {
  background-color: transparent !important;
  background-image: var(--th-btn-stop-img, url("../../assets/orbit-black/stop.png")) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 100% 100% !important;
  color: #ffffff !important;
  border: 1px solid rgba(254, 249, 162, 0.5) !important;
  box-shadow: 0 0 12px rgba(216, 69, 88, 0.4),
              inset 0 0 10px rgba(254, 249, 162, 0.5) !important;
  border-radius: 20px !important;
  height: 38px !important;
  font-weight: 700 !important;
}

body[data-theme="black"] #saving-page #saving-setting,
body[data-theme="black"] #user-saving #saving-setting,
body[data-theme="black"] #footer-bar-savings #saving-setting,
body[data-theme="black"] #saving-started #saving-setting {
  background-color: transparent !important;
  background-image: var(--th-btn-pause-img, url("../../assets/orbit-black/pause.png")) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 100% 100% !important;
  color: #ffffff !important;
  border: 1px solid rgba(254, 249, 162, 0.5) !important;
  box-shadow: 0 0 12px rgba(247, 160, 30, 0.4),
              inset 0 0 10px rgba(254, 249, 162, 0.5) !important;
  border-radius: 20px !important;
  height: 38px !important;
  font-weight: 700 !important;
}

/* Judul "Survei Cepat" di pop-up feedback. Inline-nya ungu #9b82c4
   (feedback-from-user.html:21) — varian ungu tersendiri lagi, tidak sama
   dengan #924be1/#924ce2/#924ce3, jadi tidak tersentuh aturan penimpa ungu
   mana pun yang sudah ada. */
/* Bentuk rgb() WAJIB ikut disebut: elemen ini dirender ulang oleh Vue, dan
   begitu itu terjadi browser menserialisasi atribut style-nya jadi
   `color: rgb(155, 130, 196)` — hex aslinya hilang dari atribut, jadi
   selector yang cuma menyasar #9b82c4 tidak pernah kena. */
body[data-theme="black"] #vue-feedback-form-user [style*="color: #9b82c4"],
body[data-theme="black"] #vue-feedback-form-user [style*="color:#9b82c4"],
body[data-theme="black"] #vue-feedback-form-user [style*="rgb(155, 130, 196)"],
body[data-theme="black"] #vue-feedback-form-user [style*="rgb(155,130,196)"] {
  color: var(--th-accent-2, #F5CD6B) !important;
}

/* Judul "Kewarganegaraan" + dua garis pengapitnya di area pop-up.
   Ungu #904ae9 (area-pop-up.html:59,66,79) — varian ungu tersendiri lagi.
   Bentuk rgb() ikut disebut karena Vue merender ulang elemen ini dan browser
   menserialisasi atribut style-nya jadi `rgb(144, 74, 233)`.

   Teks dan garis dipisah jadi dua aturan dengan sengaja: substring
   "color: rgb(144, 74, 233)" JUGA terkandung di dalam
   "background-color: rgb(144, 74, 233)", jadi satu selector gabungan akan
   ikut mengenai garisnya dan salah properti. */
body[data-theme="black"] #vue-chose-area h2[style*="color: #904ae9"],
body[data-theme="black"] #vue-chose-area h2[style*="color:#904ae9"],
body[data-theme="black"] #vue-chose-area h2[style*="color: rgb(144, 74, 233)"],
body[data-theme="black"] #vue-chose-area h2[style*="color:rgb(144,74,233)"] {
  color: var(--th-accent-2, #F5CD6B) !important;
}
body[data-theme="black"] #vue-chose-area div[style*="background-color: #904ae9"],
body[data-theme="black"] #vue-chose-area div[style*="background-color:#904ae9"],
body[data-theme="black"] #vue-chose-area div[style*="background-color: rgb(144, 74, 233)"],
body[data-theme="black"] #vue-chose-area div[style*="background-color:rgb(144,74,233)"] {
  background-color: var(--th-border-gold-2, #DBB14E) !important;
}

/* --- TNC POP-UP: judul "Syarat dan Ketentuan" + garis pengapitnya ---------
   Ungu #8a4dff (tnc-pop-up.html:85,90,100). Teks dan garis dipisah karena
   substring "color: ..." juga terkandung dalam "background-color: ...". */
body[data-theme="black"] #vue-tnc-pop-up h2[style*="color: #8a4dff"],
body[data-theme="black"] #vue-tnc-pop-up h2[style*="color:#8a4dff"],
body[data-theme="black"] #vue-tnc-pop-up h2[style*="color: rgb(138, 77, 255)"],
body[data-theme="black"] #vue-tnc-pop-up h2[style*="color:rgb(138,77,255)"] {
  color: var(--th-accent-2, #F5CD6B) !important;
}
body[data-theme="black"] #vue-tnc-pop-up div[style*="background-color: #8a4dff"],
body[data-theme="black"] #vue-tnc-pop-up div[style*="background-color:#8a4dff"],
body[data-theme="black"] #vue-tnc-pop-up div[style*="background-color: rgb(138, 77, 255)"],
body[data-theme="black"] #vue-tnc-pop-up div[style*="background-color:rgb(138,77,255)"] {
  background-color: var(--th-border-gold-2, #DBB14E) !important;
}

/* --- Tombol utama di kedua pop-up ----------------------------------------
   Area pop-up tombol "Ya" memakai #8a6dff (area-pop-up.html:111) dan TNC
   memakai #6c47ff (tnc-pop-up.html:147) — dua ungu yang berbeda lagi, dan
   keduanya lolos dari aturan tombol ungu global di atas yang cuma menyebut
   #924be1/#924ce2. Disamakan ke perlakuan tombol utama tema black. */
body[data-theme="black"] #vue-chose-area button[style*="background-color: #8a6dff"],
body[data-theme="black"] #vue-chose-area button[style*="background-color:#8a6dff"],
body[data-theme="black"] #vue-chose-area button[style*="background-color: rgb(138, 109, 255)"],
body[data-theme="black"] #vue-chose-area button[style*="background-color:rgb(138,109,255)"],
body[data-theme="black"] #vue-tnc-pop-up button[style*="background-color: #6c47ff"],
body[data-theme="black"] #vue-tnc-pop-up button[style*="background-color:#6c47ff"],
body[data-theme="black"] #vue-tnc-pop-up button[style*="background-color: rgb(108, 71, 255)"],
body[data-theme="black"] #vue-tnc-pop-up button[style*="background-color:rgb(108,71,255)"] {
  background: var(--th-accent-grad, linear-gradient(135deg, #ffb72a, #ab7a09)) !important;
  color: #ffffff !important;
  border: 1px solid #ffb72a !important;
  box-shadow: var(--th-btn-primary-shadow, 0 0 10px rgba(255, 183, 42, 0.3)) !important;
}

/* =========================================================================
   INPUT-GROUP — SUDUT YANG MENEMPEL KE ADDON HARUS SIKU
   ========================================================================= */
/* Bootstrap sudah punya reset sudut untuk elemen bersebelahan di dalam
   `.input-group`, tapi aturan itu TIDAK pakai `!important` — sementara tema ini
   memasang `border-radius: ... !important` pada `.form-control`. Akibatnya
   input tetap membulat di sisi yang menempel ke addon dan muncul celah bulan
   sabit antara addon dan input (mis. #recommendation-total-invest yang
   didahului <span class="input-group-text">).

   Dua bentuk markup dipakai di app ini dan dua-duanya perlu disebut:
     - Bootstrap 5: addon jadi ANAK LANGSUNG .input-group
     - Bootstrap 4: addon dibungkus .input-group-prepend / .input-group-append
       (pembungkusnya yang jadi anak langsung, radius-nya ada di span di dalam)

   Pengecualian mengikuti daftar Bootstrap: dropdown menu & elemen feedback
   validasi memang tidak ikut menempel. */
body[data-theme="black"] .input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.invalid-tooltip):not(.valid-feedback):not(.invalid-feedback),
body[data-theme="black"] .input-group-append > .input-group-text,
body[data-theme="black"] .input-group-append > .btn {
  border-top-left-radius: 0 !important;
  border-bottom-left-radius: 0 !important;
}
body[data-theme="black"] .input-group > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.valid-tooltip):not(.invalid-tooltip):not(.valid-feedback):not(.invalid-feedback),
body[data-theme="black"] .input-group-prepend > .input-group-text,
body[data-theme="black"] .input-group-prepend > .btn {
  border-top-right-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
}

/* =========================================================================
   MODAL — PERMUKAAN WAJIB OPAK
   -------------------------------------------------------------------------
   Semua pop-up melayang (`.popUp`, selalu berpasangan dengan `.bg-overlay`
   penuh layar; plus swal2 / .modal-content / .dialog-ovelay) TIDAK BOLEH
   tembus pandang: isi halaman di belakangnya ikut terbaca menembus panel.

   Drawer/offcanvas SENGAJA tidak ikut aturan ini — di sana permukaan glass
   memang dipakai supaya video latar tetap terlihat.

   Rantai `:not(...)` pada selector kartu disalin PERSIS dari blok
   "GLOBAL CARD BACKGROUND" di atas; itu satu-satunya cara menang dari rule
   tersebut (spesifisitasnya tinggi karena rantai :not). Kalau rantai di sana
   diubah, ubah juga di sini. Pengecualian yang sama tetap berlaku: kartu
   dengan background image/video atau yang sengaja dibuat transparan lewat
   inline style tidak disentuh.
   ========================================================================= */
body[data-theme="black"] .popUp .card.card-style:not([style*="background-image"]):not([style*="background: url"]):not([style*="background:url"]):not(:has(> video)):not(:has(> .card-overlay)):not(.balance-card):not(.profile-info-card):not(.pt-2 > *):not(.bg-transparent):not([style*="background-color: transparent"]):not([style*="background: transparent"]) {
    background-color: #080808 !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}




/* =========================================================================
   WITHDRAW HISTORY (#asset-page #tab-withdraw) — layout disamakan dengan galaxy
   (galaxy:2872-2907): baris bening tanpa bingkai / garis bawah emas, divider
   disembunyikan, teks putih terang dengan line-height lega, header kolom
   terang. Selektor 3 ID supaya menang atas blok 12 (black:3269).
   Warna tetap mengikuti token black.
   ========================================================================= */
body[data-theme="black"] #asset-page #tab-withdraw > .pt-1 > div {
  background: transparent !important;
  box-shadow: none !important;
  border: none !important;
}
body[data-theme="black"] #asset-page #tab-withdraw #tab-group-profit > .d-flex.py-1.my-1:not(.month-summary-separator) {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
body[data-theme="black"] #asset-page #tab-withdraw .divider {
  display: none !important;
}
body[data-theme="black"] #asset-page #tab-withdraw a.font-500 {
  color: var(--th-text) !important;
  -webkit-text-fill-color: var(--th-text) !important;
}
body[data-theme="black"] #asset-page #tab-withdraw .d-flex.py-1.my-1 p.font-12,
body[data-theme="black"] #asset-page #tab-withdraw .d-flex.py-1.my-1 h5.color-theme {
  color: var(--th-text) !important;
  -webkit-text-fill-color: var(--th-text) !important;
  opacity: 1 !important;
  line-height: 1.45 !important;
  margin-bottom: 0 !important;
}
body[data-theme="black"] #asset-page #tab-withdraw .searchBar-container p {
  color: var(--th-text) !important;
  -webkit-text-fill-color: var(--th-text) !important;
  opacity: 0.9 !important;
}

/* CREDIT LIST (#asset-page #tab-credit) — sama dengan galaxy & Withdraw History
   di atas: wrapper, isi list, dan tiap baris tanpa background / bingkai / garis
   bawah. Separator bulan (.month-summary-separator) tidak ikut. */
body[data-theme="black"] #asset-page #tab-credit > .pt-1 > div,
body[data-theme="black"] #asset-page #tab-credit #tab-group-profit,
body[data-theme="black"] #asset-page #tab-credit #tab-group-profit > .d-flex:not(.month-summary-separator) {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
body[data-theme="black"] #asset-page #tab-credit .divider {
  display: none !important;
}

/* ASSET PAGE — panel list dipanjangkan sampai dasar layar.
   `.border-offset` (absolute, top:95%, tinggi 160px) menjorok keluar dari
   `.top-offset` dan menambah area scroll kosong di bawah kartu -> tampak pita
   video + hitam di bawah list. Strip itu disembunyikan, lalu rantai
   .top-offset > #user-asset > .pt-2 > .card dibuat flex supaya kartu mengisi
   sisa tinggi layar. Video dipatok fixed agar tetap menutup layar saat digulir. */
body[data-theme="black"] #asset-page .border-offset {
  display: none !important;
}
body[data-theme="black"] #asset-page #elite-bg-video {
  position: fixed !important;
  top: 0; left: 0;
  width: 100%; max-width: 450px;
  height: 100vh;
}
body[data-theme="black"] #asset-page > .top-offset {
  min-height: 100% !important;
  display: flex !important;
  flex-direction: column !important;
}
body[data-theme="black"] #asset-page #user-asset,
body[data-theme="black"] #asset-page #user-asset > .pt-2 {
  flex: 1 0 auto !important;
  display: flex !important;
  flex-direction: column !important;
}
body[data-theme="black"] #asset-page #user-asset > .pt-2 > .card.card-style {
  flex: 1 0 auto !important;
  margin-bottom: 0 !important;
}

/* =========================================================================
   TABLE HEADER SEPARATOR (semua tabel di drawer/offcanvas)
   Header kolom `.searchBar-container` yang diikuti `.divider.mt-0.mb-1`
   (Withdraw History, Cashback, Profit, Credit, Orbit Jackpot, dst) diberi
   garis bawah warna tema — pola yang sama dengan Withdraw History di black.
   `.divider` hitam bawaannya disembunyikan supaya garisnya tidak dobel.
   ========================================================================= */
body[data-theme="black"] .offcanvas .searchBar-container:has(+ .divider.mt-0.mb-1) {
  border-bottom: 1px solid rgba(241, 202, 118, 0.22) !important;
  border-radius: 0 !important;
  margin-bottom: 4px !important;
}
body[data-theme="black"] .offcanvas .searchBar-container + .divider.mt-0.mb-1 {
  display: none !important;
}

/* PROFIT LIST (#profit-page) — baris tanpa garis pemisah, sama dengan list
   Credit di Asset & Profit di elite. Membatalkan border-bottom per baris dan
   menyembunyikan .divider.my-0 yang dirender setelah tiap baris (profit.html
   komponen profit_list). Garis header kolom & kapsul summary bulan tidak ikut. */
body[data-theme="black"] #profit-page #tab-group-profit .d-flex[aria-expanded]:not(.month-summary-separator) {
  border-bottom: none !important;
}
body[data-theme="black"] #profit-page #tab-group-profit .divider.my-0 {
  display: none !important;
}

/* =========================================================================
   CASHBACK — KARTU SUMMARY (Total Cashback & Tersedia/Diklaim)
   Disamakan dengan kartu utama Profit/Credit (black:1059): semi transparan + blur,
   bukan transparan penuh. Dipilih lewat class `.bonus-summary-card` (bonus.html),
   BUKAN lewat [style*=...]: Vue 2 menulis ulang inline style statis, sehingga
   `rgba(255, 255, 255, 1)` di HTML berubah jadi `rgb(255, 255, 255)` di DOM.
   Selector ini (2 ID + 3 atribut/kelas) lebih spesifik dari aturan `#bonus-page
   [style*=...]` / `#bonus-page .content:not(:has(...))` yang menimpanya.
   ========================================================================= */
body[data-theme="black"] #bonus-page #user-bonus .content.bonus-summary-card {
  background-color: rgba(10, 10, 10, 0.5) !important;
  border: 1px solid var(--th-border-solid, #F1CA76) !important;
  box-shadow: 0 0 12px rgba(241, 202, 118, 0.35) !important;
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px);
}

/* ---- Efek header bergiliran: bintang username ---------------------------
   Lihat HEADER_FX_STEPS di theme-engine.js. Bintang hanya tampil & berkedip
   saat <body data-header-fx="stars">; di luar giliran memudar lalu di-pause.
   Tanpa atribut (mis. sebelum penjadwal jalan / reduced motion) tetap tampil.
   ------------------------------------------------------------------------ */
body[data-theme="black"] .page-title .logged-in h3 .starburst-layer {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 2;
  transition: opacity 0.6s ease;
}
body[data-theme="black"][data-header-fx]:not([data-header-fx="stars"]) .page-title .logged-in h3 .starburst-layer {
  opacity: 0;
}
body[data-theme="black"][data-header-fx]:not([data-header-fx="stars"]) .starburst-star.twinkle {
  animation-play-state: paused;
}

/* ---- Efek header drawer: PLAY -> REST -----------------------------------
   Lihat MENU_FX_* di theme-engine.js. `.fx-rest` dipasang tepat di batas
   putaran animasi (opacity ~0), jadi elemen langsung disembunyikan tanpa
   terlihat terpotong, dan animasinya benar-benar berhenti selama jeda.
   ------------------------------------------------------------------------ */
body[data-theme="black"] .menu-meteor.fx-rest,
body[data-theme="black"] .menu-twinkle-star.fx-rest {
  animation: none !important;
  opacity: 0 !important;
}
body[data-theme="black"] #profit-page .card.card-style,
body[data-theme="black"] #tab-group-bonus .content:not(.tab-controls) {
  background-color: rgba(19, 19, 19, 0.85) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
