/* RiverX Poker V165 — artwork-integrated spade seats with inward half-ripples. */

/* Only the five V164 public table families have spade medallions embedded in
   their artwork. Robert's private table intentionally keeps its prior layout. */
body.rx-v157 #view-table .poker-table.has-spade-seat-art {
  --rx-spade-seat-size: clamp(48px, 6vw, 86px);
  --rx-open-seat-top-x: 50%;
  --rx-open-seat-top-y: 10.3%;
  --rx-open-seat-right-x: 88.3%;
  --rx-open-seat-upper-y: 25.7%;
  --rx-open-seat-lower-y: 65.9%;
  --rx-open-seat-left-x: 11.7%;
  --rx-open-seat-bottom-x: 50%;
  --rx-open-seat-bottom-y: 82.7%;
}

body.rx-v157 #view-table .poker-table.has-spade-seat-art[data-table^="micro-nlh-table-"] {
  --rx-open-seat-top-y: 10.2%;
  --rx-open-seat-right-x: 88.4%;
  --rx-open-seat-upper-y: 24.6%;
  --rx-open-seat-lower-y: 65.4%;
  --rx-open-seat-left-x: 11.7%;
  --rx-open-seat-bottom-y: 82.1%;
}

body.rx-v157 #view-table .poker-table.has-spade-seat-art[data-table^="high-roller-nlh-table-"] {
  --rx-open-seat-top-y: 10.9%;
  --rx-open-seat-right-x: 88.7%;
  --rx-open-seat-upper-y: 22.8%;
  --rx-open-seat-lower-y: 64.6%;
  --rx-open-seat-left-x: 11.4%;
  --rx-open-seat-bottom-y: 80.5%;
}

/* Empty seats sit directly over the six spade medallions. Occupied seat cards
   keep the established inward anchors so player information is never clipped. */
body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat.is-open-seat.seat-0 {
  --seat-left: var(--rx-open-seat-top-x) !important;
  --seat-top: var(--rx-open-seat-top-y) !important;
  --rx-seat-ripple-angle: 0deg;
}

body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat.is-open-seat.seat-1 {
  --seat-left: var(--rx-open-seat-right-x) !important;
  --seat-top: var(--rx-open-seat-upper-y) !important;
  --rx-seat-ripple-angle: 45deg;
}

body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat.is-open-seat.seat-2 {
  --seat-left: var(--rx-open-seat-right-x) !important;
  --seat-top: var(--rx-open-seat-lower-y) !important;
  --rx-seat-ripple-angle: 135deg;
}

body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat.is-open-seat.seat-3 {
  --seat-left: var(--rx-open-seat-left-x) !important;
  --seat-top: var(--rx-open-seat-lower-y) !important;
  --rx-seat-ripple-angle: 225deg;
}

body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat.is-open-seat.seat-4 {
  --seat-left: var(--rx-open-seat-left-x) !important;
  --seat-top: var(--rx-open-seat-upper-y) !important;
  --rx-seat-ripple-angle: 315deg;
}

body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat.is-open-seat.seat-5 {
  --seat-left: var(--rx-open-seat-bottom-x) !important;
  --seat-top: var(--rx-open-seat-bottom-y) !important;
  --rx-seat-ripple-angle: 180deg;
}

body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat.is-open-seat {
  width: var(--rx-spade-seat-size) !important;
  height: var(--rx-spade-seat-size) !important;
  min-width: var(--rx-spade-seat-size) !important;
  min-height: var(--rx-spade-seat-size) !important;
}

body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat-ripple-target {
  width: 100% !important;
  height: 100% !important;
  min-width: 100% !important;
  min-height: 100% !important;
}

/* Keep the uploaded spade visible: the button contributes only a restrained
   transparent hover surface and an accessible click target. */
body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat-ripple-core {
  width: 78% !important;
  height: 78% !important;
  border: 1px solid rgba(208, 160, 255, 0.22) !important;
  background: radial-gradient(circle, transparent 52%, rgba(151, 72, 255, 0.12) 72%, transparent 76%) !important;
  box-shadow: 0 0 14px rgba(154, 77, 255, 0.28) !important;
  pointer-events: none !important;
  animation: rxSpadeSeatGlowV165 2.4s ease-in-out infinite !important;
}

body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat-ripple-plus,
body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat-ripple-label {
  display: none !important;
}

/* A clipped circular ring produces a true 180-degree wave. Each seat rotates
   that half-ring toward the center of the felt. */
body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat-ripple-wave {
  inset: 7% !important;
  border: 2px solid rgba(201, 132, 255, 0.96) !important;
  border-radius: 50% !important;
  clip-path: inset(50% -75% -75% -75%) !important;
  filter: drop-shadow(0 0 7px rgba(174, 83, 255, 0.92)) !important;
  box-shadow: inset 0 0 8px rgba(176, 84, 255, 0.34) !important;
  transform: rotate(var(--rx-seat-ripple-angle)) scale(0.72);
  transform-origin: center !important;
  animation: rxSpadeHalfRippleV165 2.4s cubic-bezier(0.18, 0.66, 0.28, 1) infinite !important;
}

body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat-ripple-wave-two {
  animation-delay: 1.2s !important;
}

body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat-ripple-target:hover .seat-ripple-wave,
body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat-ripple-target:focus-visible .seat-ripple-wave,
body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat-ripple-target:active .seat-ripple-wave,
body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat.is-seat-joining .seat-ripple-wave {
  border-color: rgba(232, 202, 255, 1) !important;
  border-width: 2.5px !important;
  filter: drop-shadow(0 0 11px rgba(203, 131, 255, 1)) drop-shadow(0 0 19px rgba(142, 52, 255, 0.72)) !important;
  animation-duration: 1.86s !important;
}

body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat-ripple-target:hover .seat-ripple-core,
body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat-ripple-target:focus-visible .seat-ripple-core,
body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat-ripple-target:active .seat-ripple-core {
  border-color: rgba(228, 193, 255, 0.58) !important;
  background: radial-gradient(circle, rgba(186, 119, 255, 0.04) 45%, rgba(168, 86, 255, 0.2) 70%, transparent 77%) !important;
  box-shadow: 0 0 22px rgba(185, 103, 255, 0.68) !important;
}

/* Defensive occupied-state guard: even if stale ripple markup survives a
   network render boundary, no animation remains after the seat is claimed. */
body.rx-v157 #view-table .poker-table .seat:not(.is-open-seat) .seat-ripple-wave,
body.rx-v157 #view-table .poker-table .seat:not(.is-open-seat) .seat-ripple-core {
  display: none !important;
  animation: none !important;
}

@keyframes rxSpadeHalfRippleV165 {
  0% {
    opacity: 0;
    transform: rotate(var(--rx-seat-ripple-angle)) scale(0.72);
  }
  10% { opacity: 0.94; }
  64% { opacity: 0.28; }
  100% {
    opacity: 0;
    transform: rotate(var(--rx-seat-ripple-angle)) scale(1.94);
  }
}

@keyframes rxSpadeSeatGlowV165 {
  0%, 100% { opacity: 0.62; }
  50% { opacity: 1; }
}

@media (max-width: 820px) {
  body.rx-v157 #view-table .poker-table.has-spade-seat-art {
    --rx-spade-seat-size: clamp(40px, 8vw, 54px);
  }

  body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat-ripple-wave {
    border-width: 1.5px !important;
  }
}

/* The open-seat cue remains continuous but becomes gentler when reduced motion
   is requested. Occupied seats remain completely still through the guard above. */
@media (prefers-reduced-motion: reduce) {
  body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat.is-open-seat .seat-ripple-wave {
    animation: rxSpadeHalfRippleV165 4s ease-out infinite !important;
  }

  body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat.is-open-seat .seat-ripple-wave-two {
    animation-delay: 2s !important;
  }

  body.rx-v157 #view-table .poker-table.has-spade-seat-art .seat.is-open-seat .seat-ripple-core {
    animation: none !important;
  }
}
