/* ==========================================================================
   TryCasino Admin – Bereich „Betrieb“ (js/admin/pages-ops.js)
   Spiele & Wartung · Bots & Konsole · Protokoll. Nur #adminApp .ap-ops-…
   Tokens/Bausteine aus admin-core.css (--ap-*), keine Inline-Farben.
   ========================================================================== */

/* ---------------------------------------------------------------- Allgemein */
#adminApp .ap-ops-nowrap { white-space: nowrap; }
#adminApp .ap-ops-dot { flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--ap-tone, var(--ap-muted)); }
#adminApp .ap-ops-chips { display: flex; flex-wrap: wrap; gap: 6px; }
#adminApp .ap-ops-chip {
  display: inline-flex;
  align-items: center;
  height: 30px;
  max-width: 100%;
  padding: 0 11px;
  border-radius: 999px;
  border: 1px solid var(--ap-line);
  background: rgba(255, 255, 255, .03);
  color: var(--ap-text-2);
  font-size: 12.5px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: color .15s, border-color .15s, background .15s;
}
#adminApp .ap-ops-chip.is-mono { font-family: var(--ap-mono); font-weight: 500; }
#adminApp .ap-ops-chip:hover { color: var(--ap-info-text); border-color: #365675; background: #19344d; }
#adminApp .ap-ops-btn-row { display: flex; flex-wrap: wrap; gap: 8px; }

/* ---------------------------------------------------------------- Spiele: ganze Webseite */
#adminApp .ap-ops-site.is-maint {
  background:
    linear-gradient(180deg, rgba(255, 77, 94, .08), transparent 60%),
    var(--ap-surface);
}
#adminApp .ap-ops-site-form { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 12px 16px; }
#adminApp .ap-ops-site-form > .ap-field { flex: 1 1 320px; }
#adminApp .ap-ops-site-btns { display: flex; gap: 8px; padding-top: 25px; }
#adminApp .ap-ops-site-note { margin-top: 12px; }

/* ---------------------------------------------------------------- Spiele: Kacheln */
#adminApp .ap-ops-games-sec .ap-section-actions { gap: 8px; }
#adminApp .ap-ops-games {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 252px), 1fr));
  align-items: start;
  gap: var(--ap-gap);
}
#adminApp .ap-ops-games:empty { display: none; }
/* Gruppe „Live-Tische“ unter den Einzelspielen */
#adminApp .ap-ops-games-group { display: flex; flex-direction: column; gap: 3px; margin: 18px 0 10px; }
#adminApp .ap-ops-games-group[hidden] { display: none; }
#adminApp .ap-ops-games-group-title { font-weight: 650; font-size: 14px; color: var(--ap-text); }
#adminApp .ap-ops-games-group-sub { font-size: 12.5px; line-height: 1.45; color: var(--ap-muted); max-width: 78ch; }
#adminApp .ap-ops-game-via { margin: 0; color: var(--ap-text-2); line-height: 1.4; }
#adminApp .ap-ops-game-via[hidden] { display: none; }
#adminApp .ap-ops-games-state:empty { display: none; }
#adminApp .ap-ops-games-state .ap-empty { border: 1px dashed var(--ap-line); border-radius: var(--ap-r-lg); }
#adminApp .ap-ops-game {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 0;
  padding: 18px;
  border-radius: 14px;
  border: 1px solid var(--ap-line-soft);
  background: var(--ap-surface);
  box-shadow: var(--ap-shadow);
  transition: border-color .2s, background .2s;
}
#adminApp .ap-ops-game.is-locked {
  border-color: rgba(255, 77, 94, .42);
  background: linear-gradient(180deg, rgba(255, 77, 94, .09), rgba(255, 77, 94, .02) 70%), var(--ap-surface);
}
#adminApp .ap-ops-game.is-locked::before {
  content: "";
  position: absolute;
  left: -1px;
  top: 14px;
  bottom: 14px;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: var(--ap-danger);
}
#adminApp .ap-ops-game-head { display: flex; align-items: center; gap: 12px; min-width: 0; }
#adminApp .ap-ops-game-head .ap-game-thumb.is-sm { width: 44px; height: 44px; }
#adminApp .ap-ops-game.is-locked .ap-game-thumb { filter: grayscale(.65) brightness(.8); }
#adminApp .ap-ops-game-titles { display: flex; flex-direction: column; gap: 3px; flex: 1 1 auto; min-width: 0; }
#adminApp .ap-ops-game-title { font-weight: 650; font-size: 14px; color: var(--ap-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#adminApp .ap-ops-game-meta { display: flex; align-items: center; gap: 8px; min-width: 0; font-size: 12px; }
#adminApp .ap-ops-game-state { display: inline-flex; align-items: center; gap: 6px; font-weight: 650; color: var(--ap-tone-text, var(--ap-text-2)); white-space: nowrap; }
#adminApp .ap-ops-game-id { min-width: 0; font-family: var(--ap-mono); font-size: 11.5px; color: var(--ap-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#adminApp .ap-ops-game-head .ap-toggle { flex: none; }
#adminApp .ap-ops-game-note { display: flex; gap: 8px; min-width: 0; }
#adminApp .ap-ops-game-note .ap-input { height: 34px; font-size: 13px; border-radius: 9px; }
#adminApp .ap-ops-game-note .ap-btn { flex: none; }

/* ---------------------------------------------------------------- Bewertungen */
#adminApp .ap-ops-rate .ap-section-body { display: flex; flex-direction: column; gap: 14px; }
#adminApp .ap-ops-rate-filter { width: auto; min-width: 190px; max-width: 260px; height: 36px; }
#adminApp .ap-ops-rate-sum {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 184px), 1fr));
  gap: 10px;
}
#adminApp .ap-ops-rate-sum > .ap-skel,
#adminApp .ap-ops-rate-sum > p { grid-column: 1 / -1; }
#adminApp .ap-ops-rate-chip {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 5px;
  min-width: 0;
  padding: 11px 13px;
  border-radius: 12px;
  border: 1px solid var(--ap-line-soft);
  background: rgba(255, 255, 255, .025);
  color: var(--ap-text);
  text-align: left;
  transition: border-color .15s, background .15s;
}
#adminApp .ap-ops-rate-chip:hover { border-color: var(--ap-line); background: rgba(255, 255, 255, .045); }
#adminApp .ap-ops-rate-chip.is-on { border-color: #365b86; background: #1b304c; box-shadow: none; }
#adminApp .ap-ops-rate-chip-title { max-width: 100%; font-size: 13px; font-weight: 650; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#adminApp .ap-ops-rate-chip-row { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--ap-gold-hi); }
#adminApp .ap-ops-rate-chip-meta { font-size: 12px; color: var(--ap-muted); }
#adminApp .ap-ops-stars { position: relative; display: inline-block; font-size: 14px; line-height: 1; letter-spacing: 1px; color: rgba(255, 255, 255, .13); white-space: nowrap; }
#adminApp .ap-ops-stars::before { content: "★★★★★"; }
#adminApp .ap-ops-stars-fill { position: absolute; left: 0; top: 0; bottom: 0; overflow: hidden; color: var(--ap-gold); white-space: nowrap; }
#adminApp .ap-ops-stars-fill::before { content: "★★★★★"; }
#adminApp .ap-ops-stars-text { color: var(--ap-gold); letter-spacing: 1px; white-space: nowrap; }
#adminApp .ap-ops-rate-unrated { margin-top: -4px; }
#adminApp .ap-ops-rate-err:not([hidden]) { padding: 4px 16px 12px; }
#adminApp .ap-ops-comment { display: block; max-width: 52ch; color: var(--ap-text-2); white-space: normal; overflow-wrap: anywhere; }
#adminApp .ap-ops-pager { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 16px 12px; border-top: 1px solid var(--ap-line-soft); }

/* ---------------------------------------------------------------- Bot-Flotte */
#adminApp .ap-ops-fleet-sum { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
#adminApp .ap-ops-fleet-money { white-space: nowrap; font-variant-numeric: tabular-nums; }
#adminApp .ap-ops-row-actions { display: inline-flex; justify-content: flex-end; gap: 4px; }
#adminApp .ap-ops-fleet-table .ap-who-name .ap-badge { height: 19px; padding: 0 7px; font-size: 11px; }
#adminApp .ap-ops-drawer-sub { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; }
#adminApp .ap-ops-bot-status { gap: 16px; }
#adminApp .ap-ops-login { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: 10px 0 6px; }
#adminApp .ap-ops-owner-now { margin-bottom: 12px; font-size: 14px; }
#adminApp .ap-ops-owner-form { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 10px; }
#adminApp .ap-ops-owner-form > .ap-field { flex: 1 1 auto; }
#adminApp .ap-ops-owner-form > .ap-btn { flex: none; margin-top: 25px; }
#adminApp .ap-ops-owner-foot { display: flex; justify-content: flex-end; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--ap-line-soft); }
#adminApp .ap-ops-owner-foot:has(> [hidden]:only-child) { display: none; }

/* ---------------------------------------------------------------- Dealer-Konsole */
#adminApp .ap-ops-console .ap-card-body { display: flex; flex-direction: column; gap: 12px; }
#adminApp .ap-ops-con-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; }
#adminApp .ap-ops-dealer-who { min-width: 0; }
#adminApp .ap-ops-term {
  height: 340px;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid var(--ap-line);
  background: #0a1321;
  box-shadow: none;
  font-family: var(--ap-mono);
  font-size: 12.5px;
  line-height: 1.7;
  scrollbar-width: thin;
}
#adminApp .ap-ops-term:focus-visible { outline: 2px solid var(--ap-focus); outline-offset: 2px; }
#adminApp .ap-ops-term .ap-skel { padding: 4px 0; }
#adminApp .ap-ops-log { display: grid; grid-template-columns: auto 64px minmax(0, 1fr); gap: 10px; padding: 1px 0; min-width: 0; }
#adminApp .ap-ops-log-time { color: #91a4bf; font-variant-numeric: tabular-nums; }
#adminApp .ap-ops-log-lvl { font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; padding-top: 1px; color: var(--ap-muted); }
#adminApp .ap-ops-log-msg { min-width: 0; color: #d7deec; white-space: pre-wrap; overflow-wrap: anywhere; }
#adminApp .ap-ops-log.is-info .ap-ops-log-lvl { color: var(--ap-info-text); }
#adminApp .ap-ops-log.is-ok .ap-ops-log-lvl { color: var(--ap-good-text); }
#adminApp .ap-ops-log.is-warn .ap-ops-log-lvl { color: var(--ap-warn-text); }
#adminApp .ap-ops-log.is-error .ap-ops-log-lvl,
#adminApp .ap-ops-log.is-error .ap-ops-log-msg { color: var(--ap-danger-text); }
#adminApp .ap-ops-log.is-casino .ap-ops-log-lvl { color: var(--ap-gold-hi); }
#adminApp .ap-ops-log.is-whisper .ap-ops-log-lvl,
#adminApp .ap-ops-log.is-whisper .ap-ops-log-msg { color: var(--ap-community-text); }
#adminApp .ap-ops-log.is-chat .ap-ops-log-lvl { color: var(--ap-text-2); }
#adminApp .ap-ops-log.is-packet .ap-ops-log-msg { color: #99abc5; }
#adminApp .ap-ops-term-empty { padding: 28px 8px; text-align: center; color: var(--ap-muted); font-family: var(--ap-font); font-size: 13.5px; }
#adminApp .ap-ops-term-empty.is-error { color: var(--ap-danger-text); }
#adminApp .ap-ops-cmd {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  padding: 5px 5px 5px 12px;
  border-radius: 12px;
  border: 1px solid var(--ap-line);
  background: var(--ap-sunk);
  transition: border-color .15s, box-shadow .15s;
}
#adminApp .ap-ops-cmd:focus-within { border-color: var(--ap-focus); box-shadow: 0 0 0 3px rgba(114, 199, 242, .16); }
#adminApp .ap-ops-prompt { flex: none; color: var(--ap-info); font-family: var(--ap-mono); font-weight: 700; }
#adminApp .ap-ops-cmd .ap-ops-cmd-input { flex: 1 1 auto; height: 36px; padding: 0 4px; border: 0; background: transparent; box-shadow: none; font-family: var(--ap-mono); font-size: 13.5px; }
#adminApp .ap-ops-cmd .ap-ops-cmd-input:focus { box-shadow: none; }
/* admin-core.css setzt Felder unter #adminOverlay mit !important (gegen Altschichten) – hier gezielt zurück. */
#adminOverlay #adminApp .ap-ops-cmd .ap-ops-cmd-input { height: 36px !important; padding: 0 4px !important; border: 0 !important; background: transparent !important; box-shadow: none !important; font-size: 13.5px !important; }
#adminOverlay #adminApp .ap-ops-cmd .ap-ops-cmd-input:focus { box-shadow: none !important; }
#adminOverlay #adminApp .ap-ops-game-note .ap-input { height: 34px !important; font-size: 13px !important; border-radius: 9px !important; }
#adminApp .ap-ops-cmd .ap-ops-send { flex: none; height: 36px; }
#adminApp .ap-ops-cmd-hint { margin-top: -4px; }

/* ---------------------------------------------------------------- Protokoll */
#adminApp .ap-ops-jr-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; padding: 10px 16px 8px; }
#adminApp .ap-ops-jr-bar .ap-search { flex: 1 1 220px; }
#adminApp .ap-ops-jr-meta { margin-left: auto; white-space: nowrap; font-variant-numeric: tabular-nums; }
#adminApp .ap-ops-who-btn {
  display: inline-flex;
  max-width: 100%;
  min-width: 0;
  padding: 2px 6px 2px 2px;
  margin: -2px -6px -2px -2px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: inherit;
  text-align: left;
}
#adminApp .ap-ops-who-btn:hover { background: rgba(255, 255, 255, .05); }
#adminApp .ap-ops-who-btn:hover .ap-who-name { color: var(--ap-gold-hi); }
#adminApp .ap-ops-detail { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ap-text-2); font-size: 12.5px; }
/* Details nehmen den Restplatz und kürzen – so passt die Tabelle ohne Querscrollen. */
#adminApp .ap-ops-journal-table .ap-ops-col-detail { width: 32%; max-width: 0; }
#adminApp .ap-ops-journal-table .ap-ops-col-who { min-width: 204px; }
#adminApp .ap-ops-when { white-space: nowrap; font-variant-numeric: tabular-nums; color: var(--ap-text-2); }
#adminApp .ap-ops-journal .ap-table-wrap { border-top: 1px solid var(--ap-line-soft); }
@container (max-width: 860px) {
  #adminApp .ap-ops-journal-table .ap-ops-col-who { min-width: 150px; }
  #adminApp .ap-ops-journal-table .ap-ops-detail { display: -webkit-box; white-space: normal; overflow-wrap: anywhere; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.35; }
}

/* ---------------------------------------------------------------- Handy (≤ 700 px) */
@media (max-width: 700px) {
  #adminApp .ap-ops-site-btns { padding-top: 0; width: 100%; }
  #adminApp .ap-ops-site-btns .ap-btn { flex: 1 1 auto; }
  #adminApp .ap-ops-games-sec .ap-section-actions { width: 100%; }
  #adminApp .ap-ops-rate-filter { flex: 1 1 100%; max-width: none; }
  #adminApp .ap-ops-pager { padding: 12px; flex-wrap: wrap; }
  #adminApp .ap-ops-owner-form { flex-direction: column; align-items: stretch; }
  #adminApp .ap-ops-owner-form > .ap-btn { margin-top: 0; }
  #adminApp .ap-ops-term { height: 300px; padding: 8px 10px; font-size: 12px; }
  #adminApp .ap-ops-log { grid-template-columns: auto minmax(0, 1fr); gap: 0 8px; padding: 3px 0; }
  #adminApp .ap-ops-log-msg { grid-column: 1 / -1; }
  #adminApp .ap-ops-cmd .ap-ops-send .ap-btn-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  #adminApp .ap-ops-cmd .ap-ops-send { width: 40px; padding: 0; }
  #adminApp .ap-ops-jr-bar { padding: 10px 12px 8px; }
  #adminApp .ap-ops-jr-meta { margin-left: 0; }
  #adminApp .ap-ops-journal-table .ap-ops-col-detail { width: 100%; max-width: none; }
  #adminApp .ap-ops-journal-table .ap-ops-col-who { min-width: 0; }
  #adminApp .ap-ops-detail { max-width: 62vw; white-space: normal; text-align: right; overflow-wrap: anywhere; }
  #adminApp .ap-ops-comment { max-width: 62vw; text-align: right; }
  #adminApp .ap-table-cards .ap-ops-row-actions { width: 100%; justify-content: flex-end; }
}

@media (prefers-reduced-motion: reduce) {
  #adminApp .ap-ops-game,
  #adminApp .ap-ops-chip,
  #adminApp .ap-ops-rate-chip,
  #adminApp .ap-ops-cmd { transition: none; }
}
