@media (hover: hover) {
  .hotspot:hover,
  .wallet-link:hover,
  .guide-btn:hover {
    transform: translateY(-1px) scale(1.018);
    filter: saturate(1.08) brightness(1.04);
  }
}

.hotspot,
.wallet-link,
.guide-btn {
  touch-action: manipulation;
  transition:
    transform 180ms cubic-bezier(.2, .75, .25, 1),
    filter 180ms ease,
    box-shadow 180ms ease,
    background 180ms ease,
    border-color 180ms ease;
  will-change: transform;
}

.hotspot.is-pressing,
.wallet-link.is-pressing,
.guide-btn.is-pressing {
  transform: scale(.965);
  filter: brightness(.92) saturate(1.18);
}

[data-activity-balance],
[data-pot],
[data-message],
[data-toast] {
  transition:
    color 220ms ease,
    text-shadow 220ms ease,
    transform 220ms cubic-bezier(.2, .75, .25, 1);
}

[data-activity-balance].is-updating,
[data-pot].is-updating {
  color: #39f58c !important;
  text-shadow: 0 0 18px rgba(57, 245, 140, .64);
  transform: translateY(-1px) scale(1.08);
}

[data-message].is-updating,
[data-toast].is-updating {
  color: #fff3ba !important;
  text-shadow: 0 0 20px rgba(255, 214, 109, .44);
}

.live-play-overlay {
  position: absolute;
  z-index: 9;
  display: grid;
  justify-items: center;
  gap: clamp(5px, .55vw, 10px);
  pointer-events: none;
  color: #ffe9a8;
  text-align: center;
  filter: drop-shadow(0 12px 20px rgba(0, 0, 0, .46));
}

.live-pill,
.live-status {
  border: 1px solid rgba(255, 226, 154, .38);
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(42, 13, 9, .86), rgba(5, 1, 4, .82));
  box-shadow:
    0 0 18px rgba(255, 214, 109, .18),
    inset 0 1px 0 rgba(255, 255, 255, .1);
  padding: clamp(4px, .45vw, 8px) clamp(10px, 1vw, 18px);
  font-size: clamp(10px, .85vw, 15px);
  font-weight: 1000;
  white-space: nowrap;
  backdrop-filter: blur(10px);
}

.live-pill b {
  color: #38f58a;
  font-size: 1.18em;
}

.live-status {
  max-width: min(100%, 420px);
  border-color: rgba(243, 49, 212, .34);
  color: rgba(255, 246, 208, .92);
  background: rgba(0, 0, 0, .58);
  font-size: clamp(9px, .76vw, 13px);
}

.live-cards {
  display: flex;
  justify-content: center;
  gap: clamp(3px, .45vw, 8px);
}

.play-card {
  display: grid;
  place-items: center;
  width: clamp(26px, 4.1vw, 70px);
  aspect-ratio: .68;
  border: 1px solid rgba(255, 255, 255, .82);
  border-radius: clamp(5px, .55vw, 10px);
  color: #14100c;
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .98), rgba(224, 215, 199, .96));
  box-shadow:
    0 10px 24px rgba(0, 0, 0, .34),
    inset 0 1px 0 rgba(255, 255, 255, .92);
  font-size: clamp(14px, 1.8vw, 31px);
  font-weight: 1000;
  line-height: 1;
  transform-origin: 50% 110%;
  animation: live-card-pop 260ms cubic-bezier(.2, .8, .2, 1) both;
}

.play-card.is-red {
  color: #b3232e;
}

.play-card.is-back {
  color: transparent;
  background:
    radial-gradient(circle at 50% 50%, rgba(255, 214, 109, .18), transparent 42%),
    repeating-linear-gradient(45deg, #2a0634 0 8px, #52105e 8px 16px);
}

.texas-live {
  left: 31.5%;
  top: 40%;
  width: 36%;
}

.niuniu-live {
  left: 31%;
  top: 41%;
  width: 38%;
}

.zjh-live {
  left: 33%;
  top: 40%;
  width: 34%;
}

@keyframes live-card-pop {
  from {
    opacity: 0;
    transform: translateY(-10px) scale(.82) rotate(-2deg);
    filter: blur(2px);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1) rotate(0deg);
    filter: blur(0);
  }
}

.game-fx-layer {
  position: absolute;
  inset: 0;
  z-index: 18;
  overflow: hidden;
  pointer-events: none;
}

.game-fx-chip,
.game-fx-card {
  position: absolute;
  left: var(--fx-x, 50%);
  top: var(--fx-y, 68%);
  display: grid;
  place-items: center;
  will-change: transform, opacity, filter;
  pointer-events: none;
}

.game-fx-chip {
  width: clamp(14px, 2.2vw, 34px);
  aspect-ratio: 1;
  border: 2px solid rgba(255, 236, 170, .92);
  border-radius: 999px;
  background:
    radial-gradient(circle at 50% 50%, #6b124f 0 30%, transparent 31%),
    repeating-conic-gradient(from 0deg, #f7d36c 0 16deg, #7c164f 17deg 30deg);
  box-shadow: 0 0 18px rgba(255, 214, 109, .42);
  animation: chip-fly 720ms cubic-bezier(.17, .76, .27, 1) forwards;
}

.game-fx-card {
  width: clamp(20px, 3vw, 46px);
  aspect-ratio: .7;
  border: 1px solid rgba(255, 255, 255, .82);
  border-radius: 5px;
  color: #16110c;
  background: linear-gradient(135deg, #fffaf0, #d7ccb8);
  box-shadow: 0 10px 26px rgba(0, 0, 0, .28);
  font-size: clamp(12px, 1.25vw, 20px);
  font-weight: 1000;
  animation: card-deal 680ms cubic-bezier(.16, .74, .21, 1) forwards;
}

@keyframes chip-fly {
  0% {
    opacity: 0;
    transform: translate3d(0, 0, 0) scale(.72) rotate(0deg);
  }
  18% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translate3d(var(--fx-dx, 0), var(--fx-dy, -140px), 0) scale(.92) rotate(540deg);
  }
}

@keyframes card-deal {
  0% {
    opacity: 0;
    filter: blur(3px);
    transform: translate3d(-70px, -80px, 0) rotate(-14deg) scale(.74);
  }
  35% {
    opacity: 1;
    filter: blur(0);
  }
  100% {
    opacity: 0;
    transform: translate3d(var(--fx-dx, 120px), var(--fx-dy, 120px), 0) rotate(8deg) scale(1);
  }
}

@media (prefers-reduced-motion: reduce) {
  .hotspot,
  .wallet-link,
  .guide-btn,
  [data-activity-balance],
  [data-pot],
  [data-message],
  [data-toast] {
    transition: none !important;
  }

  .game-fx-chip,
  .game-fx-card {
    display: none !important;
  }

  .play-card {
    animation: none !important;
  }
}
