/* 牌影漂浮 — suits background (scoped) */
.bg-suits {
  background:
    radial-gradient(70% 55% at 78% 8%, rgba(18, 86, 229, .16), transparent 70%),
    radial-gradient(60% 45% at 50% 108%, rgba(0, 191, 232, .07), transparent 70%),
    linear-gradient(170deg, #09172F 0%, #0C2149 62%, #0A1A38 100%);
}
.bg-suits .su-glow {
  position: absolute; border-radius: 50%; pointer-events: none;
  will-change: transform;
}
.bg-suits .su-g1 {
  width: 62vmax; height: 62vmax; right: -18vmax; top: -24vmax;
  background: radial-gradient(closest-side, rgba(18, 86, 229, .30), rgba(18, 86, 229, .10) 55%, transparent);
  animation: su-drift-a 28s ease-in-out infinite alternate;
}
.bg-suits .su-g2 {
  width: 48vmax; height: 48vmax; left: -20vmax; bottom: -22vmax;
  background: radial-gradient(closest-side, rgba(0, 191, 232, .16), rgba(0, 191, 232, .05) 55%, transparent);
  animation: su-drift-b 34s ease-in-out infinite alternate;
}
.bg-suits .su-g3 {
  width: 40vmax; height: 40vmax; right: 6vmax; bottom: -26vmax;
  background: radial-gradient(closest-side, rgba(18, 86, 229, .18), transparent);
  animation: su-drift-c 40s ease-in-out infinite alternate;
}
@keyframes su-drift-a { from { transform: translate3d(0, 0, 0) scale(1); } to { transform: translate3d(-6vmax, 4vmax, 0) scale(1.08); } }
@keyframes su-drift-b { from { transform: translate3d(0, 0, 0) scale(1); } to { transform: translate3d(5vmax, -5vmax, 0) scale(1.12); } }
@keyframes su-drift-c { from { transform: translate3d(0, 0, 0) scale(1.05); } to { transform: translate3d(-8vmax, -3vmax, 0) scale(.95); } }
.bg-suits .su-canvas {
  position: absolute; inset: 0; width: 100%; height: 100%; display: block;
  pointer-events: none;
}
.bg-suits.su-still .su-glow { animation: none; }
@media (prefers-reduced-motion: reduce) {
  .bg-suits .su-glow { animation: none; }
}
@media (max-width: 600px) {
  .bg-suits .su-g3 { display: none; }
}
