/* v0.9.85 · stable technical controls during live polling
   Live game snapshots may update every 0.85–1.3 seconds. Interactive controls
   therefore use static hover/active states and never restart keyframes or
   geometry-changing transitions when a DOM node is refreshed. */

/* Future buttons automatically inherit a stable, non-jumping interaction. */
button,
[role="button"],
.home-game-btn,
.table-lobby-card,
.poker-player-row,
.poker-empty-seat-control,
.multi-seat-empty,
.empty-player-seat,
.shop-item-card,
.shop-item,
.cash-pack,
.avatar-option,
.asset-item,
.shop-target-option,
.shop-tab,
.roulette-cell,
.roulette-inside-hotspot,
.slot-bet-button,
.chip,
.leaderboard-row,
.developer-game-accordion > summary,
.table-level-open {
  animation: none !important;
  transition-property: background-color, border-color, color, filter, opacity !important;
  transition-duration: .12s !important;
  transition-timing-function: ease-out !important;
}

button:hover::before,
button:hover::after,
[role="button"]:hover::before,
[role="button"]:hover::after,
.home-game-btn:hover::before,
.home-game-btn:hover::after {
  animation: none !important;
  transition: none !important;
}

/* Buttons must never alter their geometry while hovered, focused or pressed. */
button:not(.password-visibility-toggle):hover:not(:disabled),
button:not(.password-visibility-toggle):focus-visible:not(:disabled),
button:not(.password-visibility-toggle):active:not(:disabled),
.home-game-btn:hover:not(:disabled),
.home-game-btn:focus-visible:not(:disabled),
.home-game-btn:active:not(:disabled),
.table-lobby-card:hover:not(:disabled),
.table-lobby-card:active:not(:disabled),
.poker-player-row:hover,
.poker-empty-seat-control:hover:not(:disabled),
.multi-seat-empty:hover:not(:disabled),
.empty-player-seat:hover:not(:disabled),
.shop-item-card:hover,
.shop-item:hover,
.cash-pack:hover,
.avatar-option:hover,
.asset-item:hover,
.shop-target-option:hover:not(:disabled),
.shop-tab:hover:not(:disabled),
.roulette-cell:hover,
.roulette-cell:active,
.roulette-inside-hotspot:hover,
.slot-bet-button:hover:not(:disabled),
.slot-bet-button:active:not(:disabled),
.leaderboard-row:hover,
.leaderboard-row:focus-visible,
.developer-game-accordion > summary:hover,
.developer-game-accordion > summary:focus-visible,
.table-level-open:hover:not(:disabled),
.table-level-open:active:not(:disabled) {
  animation: none !important;
  transform: none !important;
}

/* The eye button is absolutely centred and must retain that base transform. */
.password-visibility-toggle,
.password-visibility-toggle:hover,
.password-visibility-toggle:focus-visible,
.password-visibility-toggle:active {
  animation: none !important;
  transform: translateY(-50%) !important;
  transition: background-color .12s ease-out !important;
}

/* Preserve chip selection without a hover jump. */
.chip:hover:not(.selected),
.chip:active:not(.selected) {
  animation: none !important;
  transform: none !important;
}
.chip.selected,
.chip.selected:hover,
.chip.selected:active,
.roulette-chips .chip.selected,
.roulette-chips .chip.selected:hover,
.roulette-chips .chip.selected:active {
  animation: none !important;
  transform: translateY(-7px) !important;
}

/* Keep Webfix shadows static instead of moving the complete element. */
.primary-btn:hover:not(:disabled),
.primary-btn:active:not(:disabled),
.shop-toggle:hover:not(:disabled),
.shop-toggle:active:not(:disabled) {
  transform: none !important;
  box-shadow: 5px 5px 0 var(--wf-ink, #121212) !important;
}
.secondary-btn:hover:not(:disabled),
.secondary-btn:active:not(:disabled),
.icon-btn:hover:not(:disabled),
.icon-btn:active:not(:disabled),
.logout-btn:hover:not(:disabled),
.logout-btn:active:not(:disabled),
.social-toggle:hover:not(:disabled),
.social-toggle:active:not(:disabled),
.text-btn:hover:not(:disabled),
.text-btn:active:not(:disabled),
.mini-btn:hover:not(:disabled),
.mini-btn:active:not(:disabled),
.poker-preaction:hover:not(:disabled),
.poker-preaction:active:not(:disabled) {
  transform: none !important;
  box-shadow: 4px 4px 0 var(--wf-ink, #121212) !important;
}
.action-btn:hover:not(:disabled),
.action-btn:active:not(:disabled),
.danger-outline:hover:not(:disabled),
.danger-outline:active:not(:disabled) {
  transform: none !important;
  box-shadow: 5px 5px 0 var(--wf-ink, #121212) !important;
}
.home-game-btn:hover:not(:disabled),
.home-game-btn:active:not(:disabled) {
  transform: none !important;
  box-shadow: 7px 7px 0 var(--wf-ink, #121212) !important;
}
.developer-app button:hover:not(:disabled),
.developer-app button:active:not(:disabled),
.admin-modal-panel button:hover:not(:disabled),
.admin-modal-panel button:active:not(:disabled),
.developer-observer-panel button:hover:not(:disabled),
.developer-observer-panel button:active:not(:disabled) {
  animation: none !important;
  transform: none !important;
}

/* Poker seats are positioned with translate(-50%, -50%); keep that geometry. */
#pokerApp .poker-seat,
#pokerApp .poker-seat:hover,
#pokerApp .poker-seat:focus-within,
#pokerApp .poker-seat.is-active,
#pokerApp .poker-seat.is-active:hover,
#pokerApp .poker-seat.poker-hand-winner,
#pokerApp .poker-seat.poker-hand-winner:hover {
  animation: none !important;
  transform: translate(-50%, -50%) !important;
  transition: none !important;
}
#pokerApp .poker-seat-panel,
#pokerApp .poker-seat:hover .poker-seat-panel,
#pokerApp .poker-seat:focus-within .poker-seat-panel,
#pokerApp .poker-avatar,
#pokerApp .poker-seat:hover .poker-avatar,
#pokerApp .poker-empty-seat,
#pokerApp .poker-empty-seat-control {
  animation: none !important;
  transition: none !important;
}
#pokerApp .poker-seat-panel,
#pokerApp .poker-seat:hover .poker-seat-panel,
#pokerApp .poker-seat:focus-within .poker-seat-panel {
  transform: translateX(-50%) !important;
}
#pokerApp .poker-seat.is-active .poker-seat-panel {
  filter: brightness(1.07) !important;
  box-shadow: 0 0 0 4px rgba(246, 200, 95, .17), 6px 6px 0 var(--wf-ink, #121212) !important;
}
#pokerApp .poker-seat.poker-hand-winner .poker-seat-panel {
  animation: none !important;
  filter: brightness(1.1) !important;
  box-shadow: 0 0 0 4px rgba(255, 213, 87, .2), 0 0 28px rgba(255, 200, 52, .35), 6px 6px 0 var(--wf-ink, #121212) !important;
}

/* Blackjack seats and turn markers use static highlights instead of pulses. */
body.multiplayer-live .multi-seat,
body.multiplayer-live .multi-seat:hover,
body.multiplayer-live .multi-seat.active,
body.multiplayer-live .multi-seat.active:hover {
  animation: none !important;
  transform: translateY(var(--seat-y, 0px)) !important;
  transition: none !important;
}
body.multiplayer-live .multi-seat.active {
  border-color: rgba(246, 200, 95, .78) !important;
  box-shadow: 0 0 0 4px rgba(246, 200, 95, .13), 0 0 25px rgba(246, 200, 95, .25) !important;
}
body.multiplayer-live .seat-profile,
body.multiplayer-live .table-avatar,
body.multiplayer-live .table-avatar.active,
body.multiplayer-live .multi-seat-empty,
body.multiplayer-live .empty-player-seat,
body.multiplayer-live .multi-player-row,
body.multiplayer-live .multi-turn-status.my-turn,
body.multiplayer-live .multi-seat.multi-hand-winner .seat-profile,
body.multiplayer-live .multi-seat.multi-hand-loser .seat-profile {
  animation: none !important;
  transition: none !important;
}
body.multiplayer-live .table-avatar.active {
  transform: none !important;
  filter: brightness(1.08) !important;
  box-shadow: 0 0 0 5px rgba(246, 200, 95, .17), 4px 4px 0 var(--wf-ink, #121212) !important;
}
body.multiplayer-live .multi-turn-status.my-turn {
  box-shadow: 0 0 0 4px rgba(246, 200, 95, .13) !important;
}

/* Other frequently refreshed technical rows remain spatially fixed. */
.developer-log-entry,
.developer-player-row,
.developer-table-row,
.observer-player-row,
.support-ticket-row,
.friend-row,
.roulette-multiplayer-player,
.roulette-multiplayer-player-row {
  transition: none !important;
}

@media (max-width: 800px) {
  #pokerApp .poker-seat,
  #pokerApp .poker-seat:hover,
  #pokerApp .poker-seat:focus-within,
  #pokerApp .poker-seat.is-active,
  #pokerApp .poker-seat.is-active:hover,
  #pokerApp .poker-seat.poker-hand-winner,
  #pokerApp .poker-seat.poker-hand-winner:hover {
    transform: translate(-50%, calc(-50% - 24px)) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  button,
  [role="button"],
  .poker-seat,
  .multi-seat,
  .roulette-cell,
  .chip {
    animation: none !important;
    transition: none !important;
  }
}
