.stat-card .card-body { padding: 1rem 1.25rem; }
.trx-card { border-left: 4px solid var(--bs-secondary-border-subtle); }
.trx-card.trx-lunas { border-left-color: var(--bs-success); }
.trx-card.trx-segera { border-left-color: var(--bs-warning); }
.trx-card.trx-terlambat { border-left-color: var(--bs-danger); }
.table td, .table th { white-space: nowrap; }
.table td:nth-child(2) { white-space: normal; }

/* SpinWheelify */
.wheel-wrap { position: relative; max-width: 460px; }
.wheel-wrap canvas { display: block; margin: 0 auto; filter: drop-shadow(0 6px 14px rgba(0,0,0,.15)); }
.wheel-pointer {
  position: absolute; top: -4px; left: 50%; transform: translateX(-50%); z-index: 2;
  width: 0; height: 0; border-left: 16px solid transparent; border-right: 16px solid transparent;
  border-top: 30px solid #212529; filter: drop-shadow(0 2px 2px rgba(0,0,0,.3));
}
.peserta-list { max-height: 320px; overflow-y: auto; }

/* Upgrade & pembayaran */
.qris-img { width: 300px; max-width: 100%; display: block; image-rendering: pixelated; }
/* Bingkai putih tetap terang walau browser memakai dark mode */
.qris-frame { background: #fff !important; color-scheme: light; padding: 12px; border-radius: 16px;
  width: fit-content; max-width: 100%; box-shadow: 0 0 0 1px rgba(0,0,0,.08), 0 6px 18px rgba(0,0,0,.12); }
.qris-frame img { filter: none !important; }
.plan-card { transition: transform .15s; }
.plan-card:hover { transform: translateY(-2px); }
.steps .step-num { width: 28px; height: 28px; line-height: 28px; margin: 0 auto 4px; border-radius: 50%;
  background: var(--bs-primary); color: #fff; font-weight: 600; }
.proof-thumb { height: 220px; object-fit: cover; object-position: top; }
.qris-thumb { width: 140px; height: 140px; object-fit: contain; }

/* Logo & PWA */
.brand-logo { border-radius: 50%; background: #fff; }
.login-logo { width: 100%; max-width: 280px; border-radius: 12px; }
.pwa-banner { position: fixed; left: 50%; bottom: 16px; z-index: 1080; width: min(440px, calc(100% - 24px));
  transform: translate(-50%, 150%); transition: transform .35s ease; border-radius: 16px; }
.pwa-banner.show { transform: translate(-50%, 0); }
@media (display-mode: standalone) { #pwa-install-nav, .pwa-banner { display: none !important; } }

/* Grup */
.grup-card { transition: transform .15s, box-shadow .15s; }
.grup-card:hover { transform: translateY(-2px); box-shadow: 0 .5rem 1rem rgba(0,0,0,.12) !important; }
.anggota-list { max-height: 520px; overflow-y: auto; }
.setoran-thumb { width: 64px; height: 64px; object-fit: cover; object-position: top; }
