/* Neon Poker v0.9.41 targeted UI and administration fixes */

/* In-game replacement for browser dialogs. */
.neon-dialog-overlay {
  position: fixed;
  inset: 0;
  z-index: 12000;
  display: grid;
  place-items: center;
  padding: 20px;
}
.neon-dialog-overlay.hidden { display: none !important; }
.neon-dialog-backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  background: rgba(5, 8, 18, .74);
  backdrop-filter: blur(7px);
  -webkit-backdrop-filter: blur(7px);
}
.neon-dialog-panel {
  position: relative;
  z-index: 1;
  width: min(500px, 100%);
  padding: 27px;
  border-radius: 24px;
}
.neon-dialog-panel h2 { margin: .3rem 0 .75rem; }
.neon-dialog-panel p { margin: 0 0 18px; white-space: pre-line; }
.neon-dialog-input-wrap { display: grid; gap: 7px; margin: 16px 0; }
.neon-dialog-input-wrap input { width: 100%; }
.neon-dialog-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 10px; margin-top: 20px; }

/* Password visibility controls stay inside the input and never move on hover. */
.password-input-wrap {
  position: relative !important;
  display: block !important;
  width: 100% !important;
}
.password-input-wrap > input { width: 100% !important; padding-inline-end: 54px !important; }
.password-visibility-toggle,
.password-visibility-toggle:hover,
.password-visibility-toggle:focus,
.password-visibility-toggle:focus-visible,
.password-visibility-toggle:active {
  position: absolute !important;
  inset-inline-end: 5px !important;
  top: 50% !important;
  bottom: auto !important;
  left: auto !important;
  width: 42px !important;
  min-width: 42px !important;
  max-width: 42px !important;
  height: 42px !important;
  min-height: 42px !important;
  max-height: 42px !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: translateY(-50%) !important;
  translate: none !important;
  scale: 1 !important;
  animation: none !important;
  transition: color .15s ease, background-color .15s ease, border-color .15s ease !important;
  box-shadow: none !important;
}
.password-visibility-toggle svg,
.password-visibility-toggle:hover svg,
.password-visibility-toggle:focus svg,
.password-visibility-toggle:active svg {
  width: 21px !important;
  height: 21px !important;
  transform: none !important;
  scale: 1 !important;
  animation: none !important;
}

/* Manual bot creation and bot roster controls. */
.bot-create-form {
  display: grid;
  grid-template-columns: minmax(180px, 1.5fr) minmax(150px, 1fr) auto;
  align-items: end;
  gap: 12px;
  margin: 16px 0 20px;
  padding: 16px;
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 17px;
  background: rgba(0,0,0,.16);
}
.bot-create-form label { display: grid; gap: 7px; min-width: 0; }
.bot-create-form label > span { font-weight: 800; }
.bot-create-form input,
.bot-create-form select { width: 100%; min-width: 0; }
.bot-roster-card footer,
.bot-roster-actions { display: flex !important; flex-wrap: wrap !important; gap: 8px !important; }

/* Registered players are cards instead of one extra-wide table. */
#adminPlayersAccordion .admin-table-wrap {
  width: 100% !important;
  overflow: visible !important;
  border: 0 !important;
  background: transparent !important;
}
#adminPlayersAccordion .admin-table {
  display: block !important;
  width: 100% !important;
  min-width: 0 !important;
  table-layout: fixed !important;
}
#adminPlayersAccordion .admin-table thead { display: none !important; }
#adminPlayersAccordion .admin-table tbody {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) !important;
  gap: 16px !important;
  width: 100% !important;
}
#adminPlayersAccordion .admin-table tr {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 12px !important;
  width: 100% !important;
  padding: 16px !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  border-radius: 18px !important;
  background: rgba(4, 13, 20, .72) !important;
  box-sizing: border-box !important;
}
#adminPlayersAccordion .admin-table td {
  display: grid !important;
  align-content: start !important;
  gap: 7px !important;
  min-width: 0 !important;
  width: auto !important;
  padding: 12px !important;
  border: 1px solid rgba(255,255,255,.08) !important;
  border-radius: 13px !important;
  background: rgba(255,255,255,.035) !important;
  overflow-wrap: anywhere !important;
}
#adminPlayersAccordion .admin-table td::before {
  display: block;
  color: rgba(255,255,255,.58);
  font-size: .66rem;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}
#adminPlayersAccordion .admin-table td:nth-child(1)::before { content: "Player"; }
#adminPlayersAccordion .admin-table td:nth-child(2)::before { content: "Status"; }
#adminPlayersAccordion .admin-table td:nth-child(3)::before { content: "Chips"; }
#adminPlayersAccordion .admin-table td:nth-child(4)::before { content: "Chip controls"; }
#adminPlayersAccordion .admin-table td:nth-child(5)::before { content: "Gold"; }
#adminPlayersAccordion .admin-table td:nth-child(6)::before { content: "Gold controls"; }
#adminPlayersAccordion .admin-table td:nth-child(7)::before { content: "Account"; }
#adminPlayersAccordion .admin-table td:nth-child(8)::before { content: "Password"; }
#adminPlayersAccordion .admin-table td:nth-child(9)::before { content: "Activity"; }
#adminPlayersAccordion .admin-table .admin-empty { grid-column: 1 / -1 !important; }
#adminPlayersAccordion .admin-table .admin-empty::before { display: none !important; }
#adminPlayersAccordion .admin-chip-tools,
#adminPlayersAccordion .admin-gold-tools,
#adminPlayersAccordion .admin-password-tools,
#adminPlayersAccordion .admin-account-tools { min-width: 0 !important; flex-wrap: wrap !important; }
#adminPlayersAccordion .admin-chip-tools input,
#adminPlayersAccordion .admin-gold-tools input,
#adminPlayersAccordion .admin-password-tools input { min-width: 0 !important; max-width: 100% !important; }

/* Full five-character room codes, without a decorative # prefix. */
.table-code-join-form::before { content: none !important; display: none !important; }
.table-code-join-form input,
#joinTableCodeInput,
#joinPokerCodeInput,
#rouletteRoomJoinCode,
#joinAnyTableCodeInput {
  width: 100% !important;
  min-width: 7.5ch !important;
  padding-inline: 13px !important;
  font-family: inherit !important;
  font-style: normal !important;
  font-weight: 700 !important;
  letter-spacing: .10em !important;
  text-indent: 0 !important;
  overflow: visible !important;
}

/* Opening Social keeps the page behind it completely unchanged. */
#socialOverlay .social-backdrop {
  background: transparent !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  filter: none !important;
  opacity: 1 !important;
}
body:has(#socialOverlay:not(.hidden)) #app,
body:has(#socialOverlay:not(.hidden)) .app-shell,
body:has(#socialOverlay:not(.hidden)) main,
body:has(#socialOverlay:not(.hidden)) .game-screen {
  filter: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  opacity: 1 !important;
  transform: none !important;
}

/* Poker seats and profiles keep exactly the same geometry in every state. */
#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%, -50%) !important;
  animation: none !important;
  transition: opacity .18s ease, filter .18s ease !important;
}
#pokerApp .poker-seat-panel,
#pokerApp .poker-seat:hover .poker-seat-panel,
#pokerApp .poker-seat:focus-within .poker-seat-panel,
#pokerApp .poker-seat.is-active .poker-seat-panel,
#pokerApp .poker-seat.poker-hand-winner .poker-seat-panel {
  transform: translateX(-50%) !important;
  animation: none !important;
  transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease !important;
}
#pokerApp .poker-avatar,
#pokerApp .poker-seat:hover .poker-avatar,
#pokerApp .poker-seat.is-active .poker-avatar,
#pokerApp .poker-seat.poker-hand-winner .poker-avatar {
  width: 40px !important;
  min-width: 40px !important;
  max-width: 40px !important;
  height: 40px !important;
  min-height: 40px !important;
  max-height: 40px !important;
  color: var(--wf-ink, #111) !important;
  background: var(--wf-sky, #75caff) !important;
  transform: none !important;
  scale: 1 !important;
  animation: none !important;
  transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease !important;
}
#pokerApp .poker-seat-copy small,
#pokerApp .poker-stack small { color: #111 !important; }
#pokerApp .poker-table-status { top: 61.5% !important; }

@media (max-width: 1000px) {
  #adminPlayersAccordion .admin-table tr { grid-template-columns: repeat(2, minmax(0, 1fr)) !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;
  }
  #pokerApp .poker-avatar,
  #pokerApp .poker-seat:hover .poker-avatar,
  #pokerApp .poker-seat.is-active .poker-avatar {
    width: 28px !important;
    min-width: 28px !important;
    max-width: 28px !important;
    height: 28px !important;
    min-height: 28px !important;
    max-height: 28px !important;
  }
}
@media (max-width: 650px) {
  .bot-create-form { grid-template-columns: 1fr; align-items: stretch; }
  #adminPlayersAccordion .admin-table tr { grid-template-columns: 1fr !important; padding: 12px !important; }
  #adminPlayersAccordion .admin-table td { padding: 10px !important; }
  .neon-dialog-panel { padding: 22px 17px; }
}
